ハッシュ関数とは

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

» 2017年12月18日 05時00分 公開

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

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

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

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

関連用語

MD5

■更新履歴

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

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


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。