ハッシュチェイン

ハッシュチェインとは、あるデータに対して暗号学的ハッシュ関数を繰り返し適用したものである。コンピュータセキュリティにおいて、ハッシュチェインは一つの鍵とパスワードから大量のワンタイムパスワードを作り出すのに使われる。また、否認防止のために、データの追加部分に対してハッシュ関数を次々に適用することで、データの存在を時系列に沿って記録するのにも使われる。
定義.
ハッシュチェインは、文字列に対して暗号学的ハッシュ関数formula_1を繰り返し適用すること（写像の合成）で作成される。例えば、
は長さ4のハッシュチェインを与える。これはformula_3やformula_4のように書かれることもある。
応用.
レスリー・ランポートは、安全でない環境におけるパスワードの保護にハッシュチェインを利用することを提案している。認証を行うサーバは平文のパスワードの代わりにハッシュチェインを保管しておくことで、通信経路上でパスワードが盗まれることやサーバからパスワードが盗まれることを防ぐ。例えば、ユーザから与えられたformula_5がサーバに保存されていたとする。認証を行う際には、ユーザはサーバにformula_6を送信する。サーバはformula_7を計算し、これが保存されているハッシュチェインと一致することを確かめる。その後、サーバは次回の認証で使うためにformula_6を保存しておく。
サーバへ送信されたformula_6が盗聴されていたとしても、同じハッシュチェインをサーバへ再送して認証を行うことはできない。なぜなら、サーバはその時点ではformula_10を期待しているためである。また、暗号学的ハッシュ関数の一方向性により、盗聴者がハッシュ関数を逆転させてハッシュチェイン中の一つ前のハッシュ得ることは不可能である。この例では、ユーザはハッシュチェインを使い尽くすまでに1000回認証を行うことができる。ハッシュ値は毎回異なるので、攻撃者が複製をすることも不可能である。