戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2018年 春期 午前(科目A)38


問題文

AさんがBさんの公開鍵で暗号化した電子メールを、BさんとCさんに送信した結果のうち、適切なものはどれか。ここで、Aさん、Bさん、Cさんのそれぞれの公開鍵は3人全員がもち、それぞれの秘密鍵は本人だけがもっているものとする。

選択肢

暗号化された電子メールを、Bさんだけが、Aさんの公開鍵で復号できる。
暗号化された電子メールを、Bさんだけが、自身の秘密鍵で復号できる。(正解)
暗号化された電子メールを、Bさんも、Cさんも、Bさんの公開鍵で復号できる。
暗号化された電子メールを、Bさんも、Cさんも、自身の秘密鍵で復号できる。

🔒 解説は解答すると表示されます

公開鍵暗号と復号権限【午前解説】

正解の理由

選択肢が正しいのは、送信者Aが受信者Bの公開鍵で暗号化した場合、その暗号文を復号できるのは対応する秘密鍵(Bさんのみが所持)だからです。公開鍵は暗号化や署名の検証に使われ、対応する秘密鍵でのみ復号や署名の生成が行えます。したがって、Bさんだけが自身の秘密鍵で復号でき、Cさんや第三者は復号できません。
(補足)署名の扱いに関して誤解が多い点を明確にします。署名は送信者の秘密鍵で作成し、受信者は送信者の公開鍵でその署名を検証します。署名の作成を公開鍵で行うことはできません。

解法ステップ

  1. 問題文で「どの公開鍵で暗号化したか」を確認する(ここではBさんの公開鍵)。
  2. 公開鍵暗号の基本原則を適用する:公開鍵で暗号化したデータは、対応する秘密鍵で復号する。
  3. 誰がその秘密鍵を持っているかを確認する(設問では各自の秘密鍵は本人だけが持つと明記)。
  4. 上記より、Bさんだけが復号可能と判定する。該当する選択肢は

選択肢別の誤答解説

  • ア: 「Bさんだけが、Aさんの公開鍵で復号できる。」
    間違い。まず、復号は秘密鍵で行うため「公開鍵で復号する」は誤りです。さらに、暗号化に使われたのはBさんの公開鍵なので、Aさんの公開鍵は無関係です。
  • イ: 「Bさんだけが、自身の秘密鍵で復号できる。」
    正しい。暗号化に使われた公開鍵に対応する秘密鍵をBさんが所持しているため、Bさんのみが復号可能です。
  • ウ: 「Bさんも、Cさんも、Bさんの公開鍵で復号できる。」
    間違い。公開鍵で復号はできません。復号は秘密鍵で行います。Bさんの公開鍵は暗号化や検証に使われますが、復号には役立ちません。さらに、CさんはBさんの秘密鍵を持っていないため復号不可です。
  • エ: 「Bさんも、Cさんも、自身の秘密鍵で復号できる。」
    間違い。暗号文はBさんの公開鍵で作られているため、対応する秘密鍵(Bさんの秘密鍵)でしか復号できません。Cさんの秘密鍵は別の鍵であり、対応関係がないため復号できません。

よくある誤解

  • 公開鍵で復号できると誤解する
    公開鍵は「暗号化」や「署名の検証」に使い、復号や署名生成は秘密鍵で行います。機能を逆に覚えないよう注意してください。
  • 暗号化=認証と混同する
    受信者の公開鍵で暗号化すると「機密性(誰が読めるか)」は担保されますが、送信者の真正性(送信者が本当にAか)は保証されません。真正性が必要なら送信者が秘密鍵で署名する必要があります(署名は秘密鍵で作成し公開鍵で検証)。
  • 送信先が複数なら同じ暗号文を共有すればよいと考える
    受信者ごとに復号に使う秘密鍵が異なるため、複数受信者に配布する場合は別の方式(共通の対称鍵を用意し、それを各受信者の公開鍵で個別に暗号化して配る等)を用います。

補足コラム

複数人に同じ暗号文を安全に届ける方法(実務的な手順例)
  • ハイブリッド暗号方式を使う(実用的かつ効率的)
    1. まずメッセージを対称鍵(例:ランダムなAES鍵)で暗号化する。
    2. その対称鍵を受信者ごとの公開鍵で暗号化(鍵を個別に暗号化)して添付する。
      これにより、メッセージ本体は一つで済み、各受信者は自分の秘密鍵で対称鍵を復号してからメッセージを復号します。
  • 署名と暗号化の順序
    一般に「署名→暗号化」(先に送信者が署名を作成し、その署名付きメッセージを受信者の公開鍵で暗号化)を行うと、受信者は復号してから署名検証で送信者の真正性を確認できます。逆に「暗号化→署名」は設計上の問題(署名が公開された際に機密性が失われる可能性)を招くことがあります。
簡単な概念コード(イメージ)
# 概念的な流れ(ライブラリによりAPIは異なります)
ciphertext = recipient_public_key.encrypt(plaintext)   # AがBの公開鍵で暗号化
plaintext = recipient_private_key.decrypt(ciphertext)  # Bが自身の秘密鍵で復号

FAQ

Q: 公開鍵で暗号化したら誰でも公開鍵で復号できますか?
A: いいえ。公開鍵では復号できません。対応する秘密鍵のみが復号可能です。
Q: AがBの公開鍵で暗号化したメールをA自身は復号できますか?
A: 直接はできません。Aが復号したければ、Bが復号して再送するか、Aが初めから自分用にも暗号化されたコピー(または共通の対称鍵の暗号化コピー)を保持している必要があります。
Q: 送信者の真正性も保証したい場合はどうすればよいですか?
A: 送信者は自分の秘密鍵でメッセージに署名し、受信者は送信者の公開鍵で署名を検証します。機密性と真正性を同時に達成するには「署名→暗号化」の順が一般的です。

関連キーワード: 公開鍵暗号、秘密鍵、復号、暗号化、署名、ハイブリッド暗号、対称鍵暗号、RSA、鍵配布、機密性
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について