正答2
解説
正解は2です。
公開鍵暗号とハッシュ関数を使ったディジタル署名の手順を問う問題です。
送信者は、メッセージからハッシュ関数でハッシュ値を求め、それを自分の秘密鍵で暗号化して署名とします。
受信者は、署名を送信者の公開鍵で復号し、自分でメッセージから求めたハッシュ値と比べます。
【選択肢別解説】
1:× ハッシュ関数は一方向の関数なので、ハッシュ値から元のメッセージを得ることはできません。
メッセージは署名とは別に送られ、受信者はそれを基に照合します。
2:○ 受信者は、受け取ったメッセージから同じハッシュ関数でハッシュ値を求めます。
これを、署名を送信者の公開鍵で復号して得たハッシュ値と比べます。
一致すれば、送信者本人が署名したことと、メッセージが改ざんされていないことが確認できます。
3:× 送信者は、ハッシュ値を自分の公開鍵ではなく、自分の秘密鍵で暗号化します。
公開鍵は誰でも入手できるので、公開鍵で作った署名では本人であることを証明できません。
4:× 署名に使うのは、メッセージから求めたハッシュ値です。
秘密鍵のハッシュ値を作っても、メッセージの改ざんを検出することはできません。
【ポイント】
ディジタル署名は「送信者の秘密鍵で署名し、送信者の公開鍵で検証する」と覚えます。
暗号化による秘匿とは逆で、秘匿の場合は受信者の公開鍵で暗号化し、受信者の秘密鍵で復号します。