データの作成者の認証(否認防止)とデータの改ざん検知を行う仕組み。公開鍵を使ってさくっと実現できる。手順は次の通り。
- 送信者が、送信データのハッシュ値を計算
- 送信者が、ハッシュ値を自身の秘密鍵で暗号化して、送信データに追加。
- 送信者がデータを送付する。
- 受信者は、受け取ったデータから暗号化されたハッシュと本文を取り出す。
- 受信者が、本文のハッシュを計算
- 受信者が、暗号化されたハッシュを送信者の公開鍵で復号
- 5で計算したハッシュ値と復号したハッシュ値が同一であれば、OK
- 本文が改ざんされた場合
- →本文のハッシュと暗号化されたハッシュの値が異なるので、検知できる。
- 本文のハッシュと暗号化されたハッシュの値がまとめて改ざんされた場合
- →暗号化されたハッシュの作成には、送信者の秘密鍵が必要なので、本文にあわせた「暗号化されたハッシュ」を生成することは不可能。
- 別のユーザーが送信者になりすましてデータを送付した場合
- →秘密鍵を持つのは正しい承認者のみ。送信者の公開鍵で正しく複合できる「暗号化されたハッシュ値」は正しい送信者しか作れない。ので、検知できる。
- 受信者が持っていた送信者の公開鍵が偽物だった場合