ハッシュ関数を使うと、送信メッセージの改ざんを検出できます。つまり、メッセージの完全性を維持することができます。
これに、公開鍵暗号の技術を組み合わせることで、送信者を特定する「ディジタル署名」を実現することができます。
ディジタル署名の仕組みを図で見てみましょう。
送信メッセージの準備
改ざんの検出のために、送信する平文をハッシュ化してメッセージダイジェストを作成します。
暗号化ダイジェストの作成
平文をハッシュ化したメッセージダイジェストを、公開鍵暗号の技術を使って、送信者の秘密鍵で暗号化します。暗号化したものを「暗号化ダイジェスト」とします。これを正しく復号できるのは送信者の公開鍵だけです。
送信者の秘密鍵を持っているのは、送信者だけなので、この暗号化ダイジェストを作れるのは送信者だけです。
暗号化されたダイジェスト=ディジタル署名
です。
平文とディジタル署名を送信する
送信しましょう。
(本当は平文とディジタル署名も公開鍵暗号を使って、受信者の公開鍵で暗号化しますが、ややこしくなるので今回の図は省略しました。)
ディジタル署名を検証する
受信した平文をハッシュ化して、①メッセージダイジェストを作ります。
送信者から公開鍵を取り寄せて、受信した暗号化ダイジェストを復号します。②復号したメッセージダイジェストが手に入ります。
①と②を比較します。
同じならば、メッセージが改ざんされておらず、
正しく複合できたので、送信者は本物だということが言えます。