このページでは,基本情報技術者試験をはじめとする情報処理技術者試験で必須となる,ハッシュ関数についてシンプルにまとめています。ハッシュ関数のしくみや特徴,原像計算困難性,衝突発見困難性,メッセージダイジェスト,パスワード保管や改ざん検出などの用途について,試験で頻出となるポイントを体系的に整理しています。ハッシュ関数は,電子署名やディジタル証明書,ブロックチェーンなど,多くのセキュリティ技術の基盤として利用されている重要な技術です。
ハッシュ関数とは(特徴と性質)
ハッシュ関数は一方向性の関数で,ハッシュ化したデータを元に戻すことはできません。ハッシュ化により求めたハッシュ値の長さは,データの長さに関係なく同じ長さになります。ハッシュ関数は,改ざん検出などに使用されます。
受信者は,受け取った平文からハッシュ値を求め,送られてきたハッシュ値と比較します。平文が改ざんされていた場合,平文から求めたハッシュ値と送られてきたハッシュ値は一致しません。他の平文から同じハッシュ値を求めることは困難ですし,また,同じハッシュ値から別の平文を求めることも困難です。このような性質により,改ざんを検出することができます。
※ 改ざんを防ぐことはできません。
原像計算困難性と衝突発見困難性とは(安全性の要点)
原像計算困難性とは
原像計算困難性とは,変換後のハッシュ値から元のデータを求めることが困難であることをいいます。
衝突発見困難性とは
ごく稀に,別々の平文から求めたハッシュ値が同じ値になることがあります。その場合,改ざんの有無が判断できません。よって,ハッシュ関数には,別々の平文から求めたハッシュ値が同じ値になりにくいという性質が求められます。これを衝突発見困難性といい,ハッシュ関数の強度を示す指標になります。
メッセージダイジェストとは(ハッシュ値の意味)
メッセージダイジェストとは,メールなどのメッセージをハッシュ化したものです。ですから,メッセージダイジェスト=ハッシュ値ということになります。
ハッシュ関数の主な用途
改ざん検出
上記のとおりです。
パスワードの安全な保管
パスワードは,ハッシュ化したもの(ハッシュ値)を保管します。盗聴されても元のパスワードに復元することが困難になるため,不正利用のリスクを低減できます。
チャレンジレスポンス方式とは
チャレンジレスポンス方式という認証方式で使用されることもあります。
※ チャレンジレスポンス方式については,「認証 -情報処理シンプルまとめ」を参照してください。
ハッシュ関数の主な種類(特徴と比較)
| 出力されるハッシュ値 | ||
|---|---|---|
| MD5(Message Digest Algorithm 5) | 128ビット | 弱点が見つかっている。 |
| SHA-1(Secure Hash Algorithm 1) | 160ビット | 脆弱性があり、攻撃手法も見つかっているため、推奨されていない。 |
| SHA-2(Secure Hash Algorithm 2) | 224,256,384,512ビット | SHA-1の後継。SHA-256以上は政府推奨 |
まとめ
今回は,ハッシュ関数について,しくみや特徴,用途を中心にシンプルにまとめてみました。ハッシュ関数は,改ざん検出やパスワード保護などに利用される重要な技術です。試験では,一方向性や衝突発見困難性などの性質を理解しておくことが重要です。
理解が進んだら,過去問題等にもチャレンジしてみてください。



