ハッシュ関数 -情報処理シンプルまとめ

ハッシュ関数に関するブログのアイキャッチ画像 セキュリティ

 基本情報技術者試験など情報処理技術者試験を受験する方にとっては必須の,ハッシュ関数ついてシンプルにまとめています。実際の試験で問われる内容ですので,理解できるまで,じっくり読んでみましょう。

ハッシュ関数

 ハッシュ関数は一方向性の関数で,ハッシュ化(暗号化)したデータを元に戻すことはできません。ハッシュ化により求めたハッシュ値の長さは,データの長さに関係なく同じ長さになります。ハッシュ関数は,改ざん検出などに使用されます。

 受信者は,受け取った平文からハッシュ値を求め,送られてきたハッシュ値と比較します。平文が改ざんされていた場合,平文から求めたハッシュ値と送られてきたハッシュ値は一致しません。他の平文から同じハッシュ値を求めることは困難ですし,また,同じハッシュ値から別の平文を求めることも困難です。このような性質により,改ざんを検出することができます。

※ 改ざんを防ぐことはできません。

原像計算困難性と衝突発見困難性

原像計算困難性

 原像計算困難性とは,変換後のハッシュ値から元のデータを求めることが困難であることをいいます。

衝突発見困難性

 ごく稀に,別々の平文から求めたハッシュ値が同じ値になることがあります。その場合,改ざんの有無が判断できません。よって,ハッシュ関数には,別々の平文から求めたハッシュ値が同じ値になりにくいという性質が求められます。これを衝突発見困難性といい,ハッシュ関数の強度を示す指標になります。

メッセージダイジェスト

 メッセージダイジェストとは,メールなどのメッセージをハッシュ化したものです。ですから,メッセージダイジェスト=ハッシュ値ということになります。

ハッシュ関数の用途

改ざん検出

 上記のとおりです。

パスワードの保管

 パスワードは,ハッシュ化したもの(ハッシュ値)を保管します。盗聴されても元のパスワードには戻せないので,盗聴を防止できます。

チャレンジレスポンス方式

 チャレンジレスポンス方式という認証方式で使用されることもあります。

※ チャレンジレスポンス方式については,「認証 -情報処理シンプルまとめ」を参照してください。

認証 -情報処理シンプルまとめ
基本情報技術者試験など情報処理技術者試験を受験する方にとっては必須の,認証についてシンプルにまとめています。はじめに,認証者と被認証者,第三者認証についての説明を,次に,認証の種類とディジタル署名について説明します。そして,本人認証については,パスワード認証(パスワードの保管,ソルト),ワンタイムパスワード(リプレイ攻撃対策,チャレンジレスポンス認証,時刻同期方式による認証(トークンによる認証),ハッシュ関数を用いた認証(S/Key)),所有物による認証(USBメモリ,ICカード(接触型,非接触型),スマートフォンなど),生体(バイオメトリクス)認証(指紋認証,静脈認証,虹彩認証,顔認証,DNA認証,筆跡,声紋,キーストローク,本人拒否率,他人受入率など),リスクベース認証,CAPTCHAを,メッセージ認証については,MAC,HMACの説明をします。さらに,公開鍵基盤(PKI)(認証局(CA),登録局(RA),発行局(IA),リポジトリ,CRL,OCSP)や時刻認証(タイムスタンプ,TSA)についても説明します。たくさんありますが,どれも大切な内容ですので,理解できるまで繰り返し,じっくり読んでみてください。

ハッシュ関数の種類

出力されるハッシュ値
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以上は政府推奨

まとめ

 今回は,ハッシュ関数について,シンプルにまとめてみました。ハッシュ関数については,しくみと特徴をしっかり理解しておきましょう。