基本情報技術者試験など情報処理技術者試験を受験する方にとっては必須の,ハッシュ関数ついてシンプルにまとめています。実際の試験で問われる内容ですので,理解できるまで,じっくり読んでみましょう。
ハッシュ関数
ハッシュ関数は一方向性の関数で,ハッシュ化(暗号化)したデータを元に戻すことはできません。ハッシュ化により求めたハッシュ値の長さは,データの長さに関係なく同じ長さになります。ハッシュ関数は,改ざん検出などに使用されます。
受信者は,受け取った平文からハッシュ値を求め,送られてきたハッシュ値と比較します。平文が改ざんされていた場合,平文から求めたハッシュ値と送られてきたハッシュ値は一致しません。他の平文から同じハッシュ値を求めることは困難ですし,また,同じハッシュ値から別の平文を求めることも困難です。このような性質により,改ざんを検出することができます。
※ 改ざんを防ぐことはできません。
原像計算困難性と衝突発見困難性
原像計算困難性
原像計算困難性とは,変換後のハッシュ値から元のデータを求めることが困難であることをいいます。
衝突発見困難性
ごく稀に,別々の平文から求めたハッシュ値が同じ値になることがあります。その場合,改ざんの有無が判断できません。よって,ハッシュ関数には,別々の平文から求めたハッシュ値が同じ値になりにくいという性質が求められます。これを衝突発見困難性といい,ハッシュ関数の強度を示す指標になります。
メッセージダイジェスト
メッセージダイジェストとは,メールなどのメッセージをハッシュ化したものです。ですから,メッセージダイジェスト=ハッシュ値ということになります。
ハッシュ関数の用途
改ざん検出
上記のとおりです。
パスワードの保管
パスワードは,ハッシュ化したもの(ハッシュ値)を保管します。盗聴されても元のパスワードには戻せないので,盗聴を防止できます。
チャレンジレスポンス方式
チャレンジレスポンス方式という認証方式で使用されることもあります。
※ チャレンジレスポンス方式については,「認証 -情報処理シンプルまとめ」を参照してください。
ハッシュ関数の種類
出力されるハッシュ値 | ||
---|---|---|
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以上は政府推奨 |
まとめ
今回は,ハッシュ関数について,シンプルにまとめてみました。ハッシュ関数については,しくみと特徴をしっかり理解しておきましょう。