基本情報技術者 2015年 秋期 午前(科目A) 問38
問題文
Xさんは、Yさんにインターネットを使って電子メールを送ろうとしている。電子メールの内容を秘密にする必要があるので、公開鍵暗号方式を使って暗号化して送信したい。そのときに使用する鍵はどれか。
選択肢
ア:Xさんの公開鍵
イ:Xさんの秘密鍵
ウ:Yさんの公開鍵(正解)
エ:Yさんの秘密鍵
##: 公開鍵暗号で電子メールを暗号化する際に使う鍵はどれか【午前2 解説】
要点まとめ
- 結論→送信者Xが受信者Yにメールの内容を第三者に読まれないように送る場合、受信者Yの公開鍵で暗号化します。
- 根拠→公開鍵暗号は「公開鍵で暗号化し対応する秘密鍵で復号する」性質を持ち、復号可能なのは受信者の秘密鍵だけだからです。
- 差がつくポイント→署名(送信者の秘密鍵で作成)と暗号化(受信者の公開鍵で実施)を混同せず、用途に応じた鍵を使う理解が合格差を生みます。
正解の理由
正解: ウ
受信者Yの公開鍵で暗号化すれば、その暗号文は対応するYの秘密鍵のみで復号可能になります。これにより、第三者が通信を傍受しても内容を復号できず機密性が保たれます。送信者自身の鍵(公開鍵・秘密鍵)を使って暗号化しても、受信者は復号できないため目的を満たしません。
受信者Yの公開鍵で暗号化すれば、その暗号文は対応するYの秘密鍵のみで復号可能になります。これにより、第三者が通信を傍受しても内容を復号できず機密性が保たれます。送信者自身の鍵(公開鍵・秘密鍵)を使って暗号化しても、受信者は復号できないため目的を満たしません。
よくある誤解
- 「送信者の秘密鍵で暗号化すれば安全」と考える誤解:これは署名に相当し、機密性ではなく送信者の認証(改ざん検知)を目的とします。
- 「公開鍵は秘密にすべき」と思う誤解:公開鍵は公開して問題ありませんが、正当な公開鍵であることを証明する仕組み(証明書等)が重要です。
- 「どちらの鍵でも復号できる」との誤認:対になった鍵ペアで一方で暗号化したものは、原則としてもう一方のみで復号できます(暗号化と署名で使う向きが異なることに注意)。
解法ステップ
- 問題の目的を確認:メールの「内容を秘密にする」→機密性を確保したい。
- 公開鍵暗号の基本ルールを思い出す:「公開鍵で暗号化 → 対応する秘密鍵で復号」。
- 読者(復号できるのは誰か)を考える:復号できるのは受信者Yだけでなければならない。
- したがって暗号化に使うのは受信者Yの公開鍵(選択肢ウ)で確定。
選択肢別の誤答解説
- ア: Xさんの公開鍵
- 誤り。公開鍵で暗号化しても、対応する秘密鍵(この場合Xの秘密鍵)でしか復号できず、受信者Yは復号できません。目的の機密性を満たさない。
- イ: Xさんの秘密鍵
- 誤り。秘密鍵で暗号化する操作は実務では署名に相当し、受信者はその秘密鍵に対応する公開鍵で検証できるが、内容の秘密保持にはならない。第三者も公開鍵で検証可能であり機密性が保てない。
- ウ: Yさんの公開鍵
- 正答。受信者Yの公開鍵で暗号化すれば、対応するYの秘密鍵のみが復号できるため、機密性が確保される。
- エ: Yさんの秘密鍵
- 誤り。秘密鍵は公開すべきでなく、また送信者がYの秘密鍵を使える状況は前提として不適切。秘密鍵で暗号化しても誰が復号できるかは鍵の対応によるが、通常は逆の意味になるため誤答。
補足コラム
- 実運用では「公開鍵暗号だけで大量データを暗号化する」のは非効率です。一般にメール本文は共通鍵(対称鍵)で暗号化し、その共通鍵を受信者の公開鍵で暗号化して送る「ハイブリッド暗号」が使われます(PGP、S/MIME等)。
- 鍵の正当性を確認するために証明書(CA)やWeb of Trustが使われます。公開鍵をただ受け取るだけだと中間者攻撃で偽の鍵を送りつけられる危険があります。
- 署名と暗号化は併用可能です:署名で送信者の身元確認・改ざん検知、公開鍵暗号で機密性をそれぞれ担保します。
小さな実例(Python、PyCryptodome):
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 受信者Yの公開鍵を読み込んで暗号化
pub_key = RSA.import_key(open("y_pub.pem").read())
cipher = PKCS1_OAEP.new(pub_key)
ciphertext = cipher.encrypt(b"メール本文")
FAQ
Q1: 公開鍵は誰でも入手してよいですか?
A1: はい、公開鍵自体は公開して問題ありません。ただし、その公開鍵が正しくYのものであることを確認する仕組み(証明書など)が必要です。
A1: はい、公開鍵自体は公開して問題ありません。ただし、その公開鍵が正しくYのものであることを確認する仕組み(証明書など)が必要です。
Q2: 送信者の秘密鍵で暗号化すれば安全ではないのですか?
A2: 送信者の秘密鍵で処理すると署名になり、「誰が送ったか」を示せますが、内容を秘匿する目的(機密性)は満たしません。送信者公開の鍵で誰でも復号できてしまいます。
A2: 送信者の秘密鍵で処理すると署名になり、「誰が送ったか」を示せますが、内容を秘匿する目的(機密性)は満たしません。送信者公開の鍵で誰でも復号できてしまいます。
Q3: メール暗号化と署名はどちらを先に適用すべきですか?
A3: 一般には「署名→暗号化」の順で処理します。まず署名して送信者性と整合性を確保し、その署名付きデータを受信者の公開鍵で暗号化して機密性を保ちます。
A3: 一般には「署名→暗号化」の順で処理します。まず署名して送信者性と整合性を確保し、その署名付きデータを受信者の公開鍵で暗号化して機密性を保ちます。
関連キーワード: 公開鍵暗号、秘密鍵、公開鍵、暗号化、復号、電子メール、ハイブリッド暗号、RSA、PGP、S/MIME、鍵管理、証明書、署名、機密性、認証

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

