ハッシュ関数は,基本情報技術者試験をはじめとする情報処理技術者試験で頻出となる重要分野です。データの改ざんをどのように検出しているのかを正しく理解できていますか?
ハッシュ関数=データから一定長の値を生成し,改ざん検出などに利用するしくみ
このページでは,ハッシュ関数の基本的なしくみや特徴に加え,原像計算困難性や衝突発見困難性といった安全性の要点,メッセージダイジェストの意味,改ざん検出やパスワード保管などの用途について,試験対策として体系的に整理し,シンプルにまとめています。ハッシュ関数が電子署名や認証技術などにどのように関係しているのかも含めて理解できるように構成しています。
ハッシュ関数とは(特徴と性質)
ハッシュ関数は一方向性の関数で,ハッシュ化したデータを元に戻すことはできません。ハッシュ化により求めたハッシュ値の長さは,データの長さに関係なく同じ長さになります。ハッシュ関数は,改ざん検出などに使用されます。
受信者は,受け取った平文からハッシュ値を求め,送られてきたハッシュ値と比較します。平文が改ざんされていた場合,平文から求めたハッシュ値と送られてきたハッシュ値は一致しません。他の平文から同じハッシュ値を求めることは困難ですし,また,同じハッシュ値から別の平文を求めることも困難です。このような性質により,改ざんを検出することができます。
※ 改ざんを防ぐことはできないが検出はできる
原像計算困難性と衝突発見困難性とは(安全性の要点)
原像計算困難性とは
原像計算困難性とは,変換後のハッシュ値から元のデータを求めることが困難であることをいいます。
衝突発見困難性とは
ごく稀に,別々の平文から求めたハッシュ値が同じ値になることがあります。その場合,改ざんの有無が判断できません。よって,ハッシュ関数には,別々の平文から求めたハッシュ値が同じ値になりにくいという性質が求められます。これを衝突発見困難性といい,ハッシュ関数の強度を示す指標になります。
メッセージダイジェストとは(ハッシュ値の意味)
メッセージダイジェストとは,メールなどのメッセージをハッシュ化したものです。ですから,メッセージダイジェスト=ハッシュ値ということになります。
ハッシュ関数の主な用途
改ざん検出
上記のとおりです。
パスワードの安全な保管
パスワードは,ハッシュ化したもの(ハッシュ値)を保管します。盗聴されても元のパスワードに復元することが困難になるため,不正利用のリスクを低減できます。
チャレンジレスポンス方式
チャレンジレスポンス方式という認証方式では,パスワードそのものを送信せずに認証を行うために利用されます。
ハッシュ関数の主な種類(特徴と比較)
| 出力されるハッシュ値 | ||
|---|---|---|
| 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以上は政府推奨 |
まとめ
今回は,ハッシュ関数について,しくみや特徴,用途を中心にシンプルにまとめてみました。ハッシュ関数は,一方向性や一定長出力といった性質をもち,改ざん検出やパスワード保護などに利用される重要な技術です。
また,原像計算困難性や衝突発見困難性といった安全性の要点を理解し,どのような場面で利用されるのかを把握しておくことが重要です。試験では,ハッシュ関数の性質や用途を組み合わせて問われることが多いため,体系的に整理して覚えておきましょう。
理解が進んだら,基本情報技術者試験の過去問題等にもチャレンジしてみてください。


