検索
連載

ハッシュ関数とは

ハッシュ関数とは、任意長のビット列から規則性のない固定長のビット列を生成する関数、手順のことをいう。

Share
Tweet
LINE
Hatena

 ハッシュ関数とは、任意長のビット列から規則性のない固定長のビット列を生成する関数、手順のことをいう。一般に、ハッシュ関数への入力データは「メッセージ」、ハッシュ関数からの出力データは「ハッシュ値」「メッセージダイジェスト」「フィンガープリント」などと呼ばれる。ハッシュ関数は一方向関数であるため、出力データから入力データを推定することは極めて難しい。

 理想的なハッシュ関数は、「ハッシュ値から元のメッセージを推定することが非常に困難」「メッセージからハッシュ値を高速に計算可能」「あるメッセージから生成されたハッシュ値が与えられたとき、そのハッシュ値を持つ別のメッセージを見つけることが非常に困難(弱衝突耐性)」「同じハッシュ値が得られる、異なる2つのメッセージを見つけることが非常に困難(強衝突耐性)」という性質を備えている必要がある。

 ある特定のハッシュ関数を使用した場合、同じメッセージからは常に同じハッシュ値が生成されるが、メッセージが1ビットでも変化すると、ハッシュ値は全く異なる値になる。そのためハッシュ関数は、ディスク内のファイルや通信回線を流れるパケットの破損検出、改ざん検出など、メッセージの正真性(完全性)の検査で利用されている。例えば、通信回線を通じてデータを送受信する際に、送信側と受信側でデータのハッシュ値を求めて両者を比較すれば、データの改ざんを検出できる。

 また、パスワードをディスク上に保管する際に、平文のままではなくパスワードのハッシュ値を格納し、入力値のハッシュ値と比較することで認証を行う方法がよく用いられている。これは、悪意のある第三者にパスワードのハッシュ値が漏えいしてもパスワードを逆算されないためである。

関連用語

MD5

■更新履歴

【2004/1/1】初版公開。

【2017/12/18】最新情報に合わせて内容を書き直しました(セキュリティ・キャンプ実施協議会 著)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る