ハッシュチェイン

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

ハッシュチェインとは、あるデータに対して暗号学的ハッシュ関数を繰り返し適用したものである。コンピュータセキュリティにおいて、ハッシュチェインは一つのパスワードから大量のワンタイムパスワードを作り出すのに使われる。また、否認防止のために、データの追加部分に対してハッシュ関数を次々に適用することで、データの存在を時系列に沿って記録するのにも使われる。

定義[編集]

ハッシュチェインは、文字列に対して暗号学的ハッシュ関数h(x)を繰り返し適用することで作成される。例えば、

h(h(h(h(x))))

は長さ4のハッシュチェインを与える。これはh^{4}(x)のように書かれることもある。

応用[編集]

レスリー・ランポートは、安全でない環境におけるパスワードの保護にハッシュチェインを利用することを提案している。[1]認証を行うサーバは平文のパスワードの代わりにハッシュチェインを保管しておくことで、通信経路上でパスワードが盗まれることやサーバからパスワードが盗まれることを防ぐ。例えば、ユーザから与えられたh^{1000}(password)がサーバに保存されていたとする。認証を行う際には、ユーザはサーバにh^{999}(password)を送信する。サーバはh(h^{999}(password))=h^{1000}(password)を計算し、これが保存されているハッシュチェインと一致することを確かめる。その後、サーバは次回の認証で使うためにh^{999}(password)を保存しておく。

サーバへ送信されたh^{999}(password)が盗聴されていたとしても、同じハッシュチェインをサーバへ再送して認証を行うことはできない。なぜなら、サーバはその時点ではh^{998}(password)を期待しているためである。また、暗号学的ハッシュ関数一方向性により、盗聴者がハッシュ関数を逆転させてハッシュチェイン中の一つ前のハッシュ得ることは不可能である。この例では、ユーザはハッシュチェインを使い尽くすまでに1000回認証を行うことができる。ハッシュ値は毎回異なるので、攻撃者が複製をすることも不可能である。

関連項目[編集]

参考文献[編集]

  1. ^ L. Lamport, “Password Authentication with Insecure Communication”, Communications of the ACM 24.11 (November 1981), pp 770-772. [1] [2]