X

ハッシュ関数と改ざんの検出

ハッシュ関数の特徴

ハッシュ関数はいくつかの特徴を持った関数です。以下に特徴を挙げます。

ハッシュ関数とメッセージダイジェスト

ハッシュ関数は、入力に対して出力を行う何らかの関数です。(ほかにも特徴がありますが、後述します)
ハッシュ関数によって出力された値は「メッセージダイジェスト」とか、単に「ダイジェスト」と呼びます。

ハッシュ関数は一方向性関数

ハッシュ関数は、現代暗号技術で使われるAESやRSAと違って、変換したハッシュ値をもとに戻すことができません。

ハッシュ関数の出力は入力によって決まり、重複がない

ハッシュ関数に対して、Aを入力して「ダイジェストA」に変換される場合、
何度Aを入力しても必ず、「ダイジェストA」になります。

Bを入力すると「ダイジェストB」になります。
Bを入力して「ダイジェストA」になることはありません。
つまり、変換の結果が重複することがありません。

ハッシュ関数と改ざんの検出

ハッシュ関数の特徴を使うと、メッセージ送信に改ざんがあるかどうか検出できます。

改ざんがない場合

送信者は、
①送信したい平文
②平文をハッシュ化したダイジェスト
を用意します。これを送信しましょう。

受信者の手元には
③受信した平文
④受信したダイジェスト
があります。

受信者は
⑤受信した平文をハッシュ化したダイジェスト
を作ります。

④と⑤を比較して同じならば、①送信された平文と③受信した平文が同じであることが分かります。
改ざんはありません。

改ざんがある場合

送信者は、
①送信したい平文
②平文をハッシュ化したダイジェスト
を用意します。これを送信しましょう。

平文が通信の途中で改ざんされてしまいました。

受信者の手元には
③受信した改ざん平文
④受信したダイジェスト
があります。

受信者は
⑤受信した改ざん平文をハッシュ化したダイジェスト
を作ります。

④と⑤は、①送信された平文と③改ざんされた平文から作られたダイジェストなので、同じになりません。
これで改ざんを見つけることができます。

スズキシゲキ: