シリーズ化するつもりはありませんが、
2種類の鍵の後にやりたいテーマなので、
書いてしまいます。
私は3年前のセキュリティ初受験の時、
ハッシュ関数理解できていませんでした。
使い方の部分、この本の2002年度版を参考にしてます。
使い方は、色々あります。
デジタル署名の場合
- 送信者は、平文(暗号化されていない元の文書)から、ハッシュ関数を使ってハッシュ値を求めます。
- 送信者の秘密鍵でハッシュ値(メッセージダイジェストと言います)を暗号化します。これがデジタル署名になります。
- 平文と、デジタル署名を一緒に受信者に送信します。
- 受信者は、送信者の公開鍵でメセージダイジェストを復号します。
- 複号できたことにより、送信者が本人であることがわかります。
- 受信者は平文からハッシュ関数を使って、メッセージダイジェストを作成します。
- 2つのメッセージダイジェストを比較して、同じであれば送信文が、改ざんされていないことになります。同じでない場合は、改ざんされています。
このように本人認証と、改ざんの有無が確認できます。
上の例でもわかるように、ハッシュ関数は、
暗号化を行うものではありません。
改ざんがあった場合検知できます。
たとえ1文字であろうが、
A4で何10枚分の量がある文章であろうが、
同じ長さのビット長のメッセージダイジェストが作成されます。
メッセージダイジェストから元の文書は復元できません。
実際にやってみましょうか。
フリーソフトで今日検索したら、
使いやすいのありました。
実習希望の方は、
http://www.vector.co.jp/soft/dl/win95/util/se287771.html
からどうぞ。
以下の文書をテキストフアイルに入力して保存し、
テキストごとドラッグ&ドロップしてみました。
退屈な日々
退屈な僕
退屈な僕の人生
死んだ目をして
青い顔をして
僕はただ空を見つめる
別にいつもと変わらない日が続く
だけどそれが僕にとって一番くだらないこと
いつも今日と違う明日を僕は生きていたいのに
昨日と同じ今日がどこまでも続いていく
すると以下の結果が出ます。
次に先頭の、「退屈」のみを「対屈」に置き換えます。
実際の文書は「 」はつけてません。
すると以下の結果になります。
全く違ったハッシュ値になっていますね。
文書の盗聴を防ぐつもりが無くて、
文章の改ざんの検出がメインであれば、ハッシュ関数は変換も早いですし、
秘密鍵暗号方式の事前の鍵交換や、
公開かぎ暗号方式の公開鍵の証明、
と言う面倒な作業が不要になりますね。
でも実際問題として、流れているメールの
盗聴率
改ざん率
ってそれぞれ何%ぐらいなのでしょうね?