基本情報技術者 2009年 春期 午前(科目A) 問40
問題文
ある商店が、顧客からネットワークを通じて注文(メッセージ)を受信するとき、公開鍵暗号方式を利用して、注文の内容が第三者に分からないようにしたい。商店、顧客のそれぞれが利用する、商店の公開鍵、秘密鍵の適切な組合せはどれか。

選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
公開鍵暗号の鍵配置【午前解説】
正解の理由
顧客が商店に注文内容を送り、第三者に内容を読まれないこと(機密性)を最優先にするなら、顧客は「受信者(商店)の公開鍵」でメッセージを暗号化します。暗号化されたメッセージは対応する秘密鍵を持つ商店だけが復号できます。したがって「商店が利用する:秘密鍵、顧客が利用する:公開鍵」である選択肢(ウ)が正解です。
解法ステップ
- 問題の目的を確認:第三者に内容が分からないようにする=「機密性」を確保。
- 公開鍵暗号の原理を思い出す:受信者の公開鍵で暗号化→受信者の秘密鍵で復号。
- 役割を対応させる:受信者=商店なので商店が秘密鍵、顧客がその公開鍵を使う。
- 選択肢から「商店:秘密鍵、顧客:公開鍵」を選ぶ(ウ)。
選択肢別の誤答解説
- ア(商店:公開鍵、顧客:公開鍵)
両者が公開鍵を使っても、誰の秘密鍵で復号するのか不明確です。公開鍵で暗号化しただけでは受信者しか復号できないという条件を満たしません。 - イ(商店:公開鍵、顧客:秘密鍵)
顧客が秘密鍵で処理するとそれは署名に相当し、機密性は保てません。署名は真正性・否認防止に使いますが、第三者からの秘匿には無効です。 - ウ(商店:秘密鍵、顧客:公開鍵) ← 正解
顧客が商店の公開鍵で暗号化し、商店だけが自己の秘密鍵で復号できるため機密性が確保されます。 - エ(商店:秘密鍵、顧客:秘密鍵)
両者の秘密鍵を用いるという前提自体が現実的でなく、秘密鍵は共有されるべきではありません。また秘密鍵で暗号化すると署名の性質になり、機密性は保てません。
よくある誤解
- 「公開鍵で暗号化=誰でも復号できる」:公開鍵で暗号化すると復号は対応する秘密鍵でしかできません。公開鍵は暗号化に使い、復号は秘密鍵が行います。
- 「送信者の秘密鍵で暗号化すれば安全」:送信者の秘密鍵で処理するのは署名であり、内容を隠す(機密性を確保する)目的には使えません。誰でも送信者の公開鍵で復号できてしまいます。
- 「公開鍵をそのまま配ればOK」:公開鍵の改竄や中間者攻撃を防ぐため、公開鍵の真正性確認(証明書や指紋確認)が必要です。
補足コラム
実運用では公開鍵暗号だけで大きなメッセージを直接暗号化することは少なく、次のような方式が一般的です。
- ハイブリッド暗号:メッセージは高速な共通鍵暗号(例:AES)で暗号化し、その共通鍵のみを受信者の公開鍵で暗号化して送る。性能と安全性を両立します。
- 鍵の真正性:公開鍵が改竄されると中間者攻撃(MITM)で盗聴されるため、証明書(PKI)やフィンガープリント確認で公開鍵の信頼性を確保します。
- 署名と暗号化の併用:機密性と真正性の両方が必要な場合は「署名した上で暗号化(一般には先に署名→暗号化)」する運用が推奨されます。こうすると、復号後に署名検証して送信者の真正性も確認できます。
FAQ
Q1: 公開鍵と秘密鍵、どちらを公開すべきですか?
A1: 公開鍵を公開し、対応する秘密鍵は厳重に保護します。公開鍵は誰でも利用して暗号化や検証ができますが、秘密鍵は復号や署名に使います。
A1: 公開鍵を公開し、対応する秘密鍵は厳重に保護します。公開鍵は誰でも利用して暗号化や検証ができますが、秘密鍵は復号や署名に使います。
Q2: 送信者の秘密鍵で暗号化すれば安全では?
A2: 送信者の秘密鍵で処理すると、誰でも送信者の公開鍵で復号できるため機密性は確保されません。これは署名に相当し、機密性の目的には不適切です。
A2: 送信者の秘密鍵で処理すると、誰でも送信者の公開鍵で復号できるため機密性は確保されません。これは署名に相当し、機密性の目的には不適切です。
Q3: 署名と暗号化の順序はどちらが良いですか?
A3: 一般に「先に署名→その結果を暗号化」が推奨されます。こうすると復号後に署名検証でき、真正性・完全性・機密性が両立します。
A3: 一般に「先に署名→その結果を暗号化」が推奨されます。こうすると復号後に署名検証でき、真正性・完全性・機密性が両立します。
関連キーワード: 公開鍵暗号、秘密鍵、機密性、暗号化と復号、ハイブリッド暗号、PKI、証明書、OAEP、署名と暗号化、RSA、AES

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

