ハッシュチェイン

提供: testwiki
2022年12月26日 (月) 14:49時点におけるimported>Bcxfubotによる版 (外部リンクの修正 http:// -> https:// (google) (Botによる編集))
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

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

定義

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

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

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

応用

テンプレート:Main

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

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

関連項目

参考文献

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