
その5:ペーパーレス用語集(タイムスタンプ)
タイムスタンプ(Timestamp)とは、文字通り「時刻を記録するスタンプ(ハンコ)」で、郵便物に押されるものを指しますが、ペーパーレスの世界では、「ある時刻に、対象となる電子文書が確かに存在していたこと」と「その時刻以降に、その電子文書が改ざんされていないこと」を証明する技術のことをいいます。
タイムスタンプの信頼性
タイムスタンプは発行する主体である時刻認証局(TSA:Time Stamping Authority) が信頼できる第三者機関であるかどうかで、その信頼性が決まります。これは郵便で書類を郵送する際に封筒に押される「消印」と同じような役割です。
時刻の信頼性は、その正確性を担保するために、信頼できる時刻源である協定世界時(UTC)と同期しています。
日本では、一般財団法人日本データ通信協会が認定する認定事業者(TSA)が提供するタイムスタンプサービスが、信頼できるサービスとして認定されています。
タイムスタンプのしくみ
タイムスタンプのしくみは、一通りかくと、以下のようになります。
1)作成した電子文書(例:領収書や請求書)のハッシュ値を求める
2)作成したハッシュ値に対するタイムスタンプ・トークンの生成・発行
3)発行されたタイムスタンプ・トークンを電子文書と共に保管する。
一応、図で書いてみるとこんな感じです。
で、書いてみたところで、まず「ハッシュ値」「タイムスタンプ・トークン」と出てきて、頭の中が「???」となったかと思います。
で、「ハッシュ値」と「タイムスタンプトークン」を説明すると、
「ハッシュ値」=「ハッシュ関数」の戻り値
「タイムスタンプ・トークン」= 生成されたハッシュ値に信頼できる時刻情報をまとめたもの。つまり、その時間に当該ハッシュ値が確かに存在したことを証明するもの。
となるんですが、「ハッシュ関数の戻り値」なんて言われても。。。という僕のような高校数学に思いっきり挫折し、微分積分とか指数対数関数とか聞くと蕁麻疹が出る気がしてしまう人は、少なくないはずです(苦笑)
そこで、「ハッシュ値」をざっくりわかりやすく説明するには「関数」の概念をおさらいしましょう。
「関数」とは、「何かを入力すると、特定のルールに基づき計算し、何かを出力するプログラム」のことを言います。そしてハッシュ関数とは「任意のデータを入力すると、特定のルールに基づき、一見規則性がわからないように見える戻り値(ハッシュ値)を出力するプログラム」のことをいいます。
つまり、任意の電子文書を入力すると、特定のルールに基づき計算を行い(ハッシュ関数)、なんらかの値(=ハッシュ値)を出す ということです。
このハッシュ値の特徴というのが
① 元のデータが一緒であれば、同じハッシュ値が返ってきる
② 元のデータが変われば、ハッシュ値も変わってしまう
というのがあります。
この特性を使って、電子文書が改竄されていないかの検証を行うのです。
検証の方法は以下の通りです。
1)電子文書のハッシュ値を生成し、
2)タイムスタンプトークンを復号し、
3)中に格納されているハッシュ値と、1)で生成したハッシュ値を突合する。
3)結果、ハッシュ値が同一であれば、電子文書は改ざんされていない。
また、ハッシュ値が違っていた場合、電子文書は改ざんされている。
ということになります。
おわりに
以上、タイムスタンプとは何で、何に役に立つか、何となくはわかっていただけたかと思います。このような「書類データがいつ作成または承認され、それ以降内容が変わっていない」ことが証明できる技術は、ペーパーレス化社会にとって、とても重要です。タイムスタンプを書類データに付すことで、当該書類が「いつ作成されて、それ以降内容が変わっていない」ことが確認でき、電子取引での信頼性・信用度が上がります。
ただ、タイムスタンプだけでは「いつ」「どの書類が」はわかるのですが、もう一つ重要な要素である「誰が?」が証明できません。これを証明するものとして電子証明書を用いた「電子署名」があります。それはまた別のコラムにて。