情報処理試験今日の一言(ハッシュ関数)


シリーズ化するつもりはありませんが、
2種類の鍵の後にやりたいテーマなので、
書いてしまいます。
私は3年前のセキュリティ初受験の時、
ハッシュ関数理解できていませんでした。
情報処理教科書 情報セキュリティアドミニストレータ 2005年度版
使い方の部分、この本の2002年度版を参考にしてます。


使い方は、色々あります。
デジタル署名の場合

  1. 送信者は、平文(暗号化されていない元の文書)から、ハッシュ関数を使ってハッシュ値を求めます。
  2. 送信者の秘密鍵ハッシュ値(メッセージダイジェストと言います)を暗号化します。これがデジタル署名になります。
  3. 平文と、デジタル署名を一緒に受信者に送信します。
  4. 受信者は、送信者の公開鍵でメセージダイジェストを復号します。
  5. 複号できたことにより、送信者が本人であることがわかります。
  6. 受信者は平文からハッシュ関数を使って、メッセージダイジェストを作成します。
  7. 2つのメッセージダイジェストを比較して、同じであれば送信文が、改ざんされていないことになります。同じでない場合は、改ざんされています。

このように本人認証と、改ざんの有無が確認できます。


上の例でもわかるように、ハッシュ関数は、
暗号化を行うものではありません。
改ざんがあった場合検知できます。
たとえ1文字であろうが、
A4で何10枚分の量がある文章であろうが、
同じ長さのビット長のメッセージダイジェストが作成されます。
メッセージダイジェストから元の文書は復元できません。


実際にやってみましょうか。
フリーソフトで今日検索したら、
使いやすいのありました。
実習希望の方は、
http://www.vector.co.jp/soft/dl/win95/util/se287771.html
からどうぞ。
以下の文書をテキストフアイルに入力して保存し、
テキストごとドラッグ&ドロップしてみました。

退屈な日々
退屈な僕
退屈な僕の人生
死んだ目をして
青い顔をして
僕はただ空を見つめる


別にいつもと変わらない日が続く
だけどそれが僕にとって一番くだらないこと
いつも今日と違う明日を僕は生きていたいのに
昨日と同じ今日がどこまでも続いていく


すると以下の結果が出ます。


次に先頭の、「退屈」のみを「対屈」に置き換えます。
実際の文書は「 」はつけてません。
すると以下の結果になります。


全く違ったハッシュ値になっていますね。
文書の盗聴を防ぐつもりが無くて、
文章の改ざんの検出がメインであれば、ハッシュ関数は変換も早いですし、
秘密鍵暗号方式の事前の鍵交換や、
公開かぎ暗号方式の公開鍵の証明、
と言う面倒な作業が不要になりますね。


でも実際問題として、流れているメールの
盗聴率
改ざん率
ってそれぞれ何%ぐらいなのでしょうね?