この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ウ

解説

RSA 方式のディジタル署名における鍵の使い分けを問う問題です。ディジタル署名の仕組みは次のとおりです。送信者はメッセージからハッシュ関数でメッセージダイジェストを生成し、それを送信者の秘密鍵で暗号化(署名)してメッセージに添付します。受信者は、受け取った署名を送信者の公開鍵で復号してメッセージダイジェストを取り出し、自分でメッセージから計算したダイジェストと比較します。一致すれば、署名が送信者の秘密鍵で作られたこと(送信者の真正性)と、メッセージが改ざんされていないこと(完全性)が確認できます。つまり署名の検証鍵は「送信者の公開鍵」であり、受信者がディジタル署名からメッセージダイジェストを算出する際に使用します。ウが正解です。覚え方の核心は「署名は秘密鍵で作り、公開鍵で検証する」「暗号化は受信者の公開鍵で行い、受信者の秘密鍵で復号する」という2つの使い分けです。署名と暗号化で使う鍵の持ち主と種類が逆になる点が、この分野の最重要ポイントです。

なぜ他の選択肢は違うのか

選択肢 ア
受信者の公開鍵は、ディジタル署名の検証には使われません。受信者の公開鍵が活躍するのは「メッセージの暗号化」の場面で、送信者が受信者の公開鍵で暗号化し、受信者だけが自分の秘密鍵で復号できるようにする使い方です。また「送信者が署名を作成する際に使用する」鍵は送信者自身の秘密鍵であり、記述は鍵の持ち主と用途の両方を取り違えています。
選択肢 イ
受信者の秘密鍵は、受信者宛てに暗号化されたメッセージを復号するための鍵であり、ディジタル署名の検証には使われません。署名は送信者の秘密鍵で作成されているため、それを復号(検証)できるのは対になる「送信者の公開鍵」だけです。署名の検証に受信者側の鍵ペアは一切登場しない、と整理しておくと混乱を防げます。
選択肢 エ
送信者の秘密鍵が「送信者がメッセージダイジェストからディジタル署名を作成する際に使用する」という記述自体は署名作成の正しい説明です。しかし問題が問うているのは「検証鍵と使用方法」であり、署名を検証するのは受信者であって、使う鍵は送信者の公開鍵です。作成鍵(秘密鍵)と検証鍵(公開鍵)の役割の違いを問う、引っかけ要素の強い選択肢です。

解くときのポイント

「署名=送信者の秘密鍵で作成・送信者の公開鍵で検証」「暗号化=受信者の公開鍵で暗号化・受信者の秘密鍵で復号」。誰の・どちらの鍵か、の2点を必ずセットで確認する。