まず電子署名と長期署名は何が違うかを考えてみましょう。電子署名は公開鍵方式暗号による電子証明書(公開鍵)と私有(秘密)鍵を利用したPKIと言う枠組みの中で、「誰が」「何に」を保証する技術として古くから使われて来ました。しかしここで2つ足りない要素があります。
1) 「何時(いつ)」が保証されない。
2) 電子証明書に有効期限があり保証期間が有限。
これを補う目的で考えられた仕様が長期署名と言うことになります。1)に対してはPKIベースのタイムスタンプ技術を使うことで「何時」を保証し、2)に対しても同様にタイムスタンプ技術と検証に必要な情報を保管することで電子証明書の有効期限を超えて保証することが出来ます。1)のタイムスタンプを署名(シグネチャ)タイムスタンプと、2)のタイムスタンプを保管(アーカイブ)タイムスタンプと、呼びます。保管タイムスタンプは重ねて適用が可能な為に有効期間を延長して行くことも可能になります。
それではXML電子署名を応用した長期署名フォーマットであるXAdESを例に構造を見てみましょう。長期署名では上図のように階層構造で説明されます。
一番内側がいわゆる電子署名と言われている部分です。ES/ES-BES/ES-EPESと呼びます。
次にESに対して署名タイムスタンプを付与したものをES-Tと呼びます。ES-TはXAdES/CAdESのJISプロファイルとして規定されています。
ES-Tに使われている署名証明書と署名タイムスタンプの証明書についてその有効性を確認する為には証明書の認証パスを構築する証明書群と、証明書が失効していないことを確認する為のCRL/OCSPと言った失効情報群が必要となります。
これらの検証情報群をリファレンス(参照)情報として付与するのがES-Cであり、情報そのものを埋め込んでしまうのがES-X Longと呼ばれる形式です。
そして以上の情報に対してハッシュ値を計算して保管タイムスタンプを付与したものをES-Aと呼びます。ES-Aは繰り返し付与が可能です。ES-AもXAdES/CAdESのJISプロファイルとして規定されています。
そもそもなぜ電子証明書に有効期限があるのか?と言う疑問はあるでしょう。これにはコンピュータそのものや暗号研究の進歩によって永遠に有効なアルゴリズムが無いことが理由としてあげられます。現在使われているRSA暗号やSHA-1ハッシュアルゴリズムもハードやソフトの進歩によって年単位で見た場合には有効な期間を設定せざるを得ない現実があります。ES-A(保管タイムスタンプ)では付与する時点で最強の新しい暗号アルゴリズムを使うことで有効期間を延ばして行くことを可能にします。
それでは次にどのような長期署名フォーマットがあるかを見てみましょう。現在JISに規定されているのは、XML署名をベースとしたXAdESと、CMS署名をベースとしたCAdESの2種類となります。この2種類はベースフォーマットがテキスト形式のXMLか、バイナリ形式のASN.1/BER(DER)かの違いと言った方が早いかもしれません。内容的にはほぼ同等と言えます。XAdES/CAdESは実際には署名対象となるデータや文書の違いによって使い分けられているケースが多いと言えます。
実は来年以降ですが第3の長期署名フォーマットも出てきそうです。これは少しXAdES/CAdESとは違った特長を持ちそうです。まだ現時点では仕様が検討されている段階ですので、いずれ公開できる時期になりましたら解説したいと思います。
今回は入門と言うことで以上簡単にまとめてみました。更にご興味のある方は日本で長期署名に関して主導して検討をしているECOMのサイトをご覧ください。また弊社のLe-XAdESのページの最後の方でも各種情報へのリンクもまとめてありますので参考になれば幸いです。この記事のスライドもダウンロードできるようにしておきました。何か質問や疑問がありましたらコメント頂くかメールを頂ければお答えして行きたいと考えています。
次回は検証に必要となる検証情報について概要を説明して、出来れば実際に使おうとした場合に問題となりそうな点を説明して行ければと考えています。