今週のSecurity Check [一般編] (第162回)

 電子文書にデジタル署名を施して,「だれが」その文書を作成したのかを証明することは一般的になりつつある。だが,電子文書の証拠としての信頼性や,各種法令(e-文書法,個人情報保護法,日本版SOX法など)への対応を考えると,「だれが」だけでなく,その電子文書が「いつ」作成されたのかを証明することが不可欠となる。

 今回は,そのための技術である「タイムスタンプ」について解説する。タイムスタンプを利用すれば,電子文書に時刻情報を付加して,証拠としての信頼性を確実なものにできる。

タイムスタンプとは

 タイムスタンプとは,正確な時刻の情報を伴った「スタンプ」を電子文書に付与することにより,その時刻にその電子文書が存在していたことを証明する技術のこと。スタンプを付与することや,付与されるスタンプをタイムスタンプと呼ぶこともある。本稿では,スタンプ自体もタイムスタンプと呼ぶことにする。

 タイムスタンプ(スタンプ)は,信頼のおける第三者機関によって生成される。この第三者機関は「TSA(タイムスタンプ局,Time-Stamping Authority)」と呼ばれる。

 タイムスタンプが付与される手順は以下の通り。

(1)電子文書のハッシュ値を算出

 まず,利用者側で,タイムスタンプを付与したい電子文書のハッシュ値を計算する。ハッシュ値とは,一方向ハッシュ関数(ハッシュ・アルゴリズム)と呼ばれる計算式を使って,対象とする任意長のデータ(電子文書など)から算出される固定長のデータのこと。

 一方向ハッシュ関数の特徴は,(a)ハッシュ値から元の値を導き出すことができないこと(一方向性)と,(b)複数の異なるデータから同じハッシュ値が算出される可能性が十分少ないこと(衝突困難性)。代表的な一方向ハッシュ関数としては,MD5やSHA-1などが挙げられる。MD5で計算されるハッシュ値の長さは16バイト,SHA-1のハッシュ値は20バイトである。

(2)TSAにハッシュ値を送信し,タイムスタンプ生成を要求

 次に,利用者は算出したハッシュ値をTSAに送信し,タイムスタンプの生成を要求する。通常,ハッシュ値はインターネット経由で送信する。

(3)TSAがタイムスタンプ・トークンを生成

 タイムスタンプの生成要求を受け取ったTSAは,ハッシュ値と現在の時刻の情報を結合し,「タイムスタンプ・トークン」を作成する。「トークンを生成する」ことを,「タイムスタンプを実行する」と呼ぶ場合もある。

(4)タイムスタンプ・トークンを秘密鍵で署名

 次に,TSAは作成したタイムスタンプ・トークンに,TSAの秘密鍵を使用してデジタル署名を施す。これにより,タイムスタンプの作成者を証明できるようにする。

(5)タイムスタンプ・トークンを返信

 そしてTSAは,署名済みのタイムスタンプ・トークンを利用者に返信する。このタイムスタンプ・トークンによって,タイムスタンプを作成した時刻に,該当する電子文書が確かに存在したことを証明することができる。

 ほとんどの場合,以上の手続きは,タイムスタンプ機能を実現するソフトウエアによって自動的に処理されるため,利用者が意識することはない。

タイムスタンプの検証

 次に,タイムスタンプを検証する流れを見てみよう。

(1)電子文書のハッシュ値を算出

 タイムスタンプを付与した際に用いた一方向ハッシュ関数を使って,検証対象の電子文書のハッシュ値を計算する。

(2)タイムスタンプ・トークンからハッシュ値を取り出す

 次に,保管しておいたタイムスタンプ・トークンから,タイムスタンプを作成した時点でのハッシュ値を取り出す。具体的には,TSAの公開鍵でトークンを復号し,トークン中の時刻情報を取り除く。

(3)ハッシュ値を比較

 計算したハッシュ値と,タイムスタンプ・トークンから取り出したハッシュ値を比較する。これらのハッシュ値が一致していれば,タイムスタンプを作成した時刻にその電子文書が存在していたことが証明できる。加えて,その時刻から現在までの間,文書が変更(改ざん)されていないことも証明できる。

 以上のように,タイムスタンプの手順はシンプルである。これらの手順については,RFC3161の「Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)」に規定されている。

 タイムスタンプは,電子文書が特定の時刻に存在していたことや,改ざんされていないことなどを証明するには有効な手段である。しかし,タイムスタンプの検証から分かることは改ざんされたかどうかだけであり,改ざんを未然に防いだり,データを復旧したりすることは当然できない。これらを実現するには別の手段が必要である。タイムスタンプを利用する際には,この点に注意したい。


井上 秀 (INOUE Hiizu)inoueアットマークmxg.nes.nec.co.jp
NECソフト株式会社 プラットフォームシステム事業部
Linux システム G


 IT Pro Securityが提供する「今週のSecurity Check [一般編]」は,セキュリティ全般の話題(技術,製品,トレンド,ノウハウ)を取り上げる週刊コラムです。システム・インテグレーションやソフト開発を手がける「NECソフト株式会社」の,セキュリティに精通したスタッフの方を執筆陣に迎え,分かりやすく解説していただきます。