ITパスポート 2016年 秋期 問55
問題文
PKIにおいて、ディジタル署名をした電子メールに関する記述として、適切なものだけを全て挙げたものはどれか。
a 送信者が本人であるかを受信者が確認できる。
b 電子メールが途中で盗み見られることを防止できる。
c 電子メールの内容が改ざんされていないことを受信者が確認できる。
選択肢
ア:a, b
イ:a, c(正解)
ウ:b, c
エ:a, b, c
🔒 解説は解答すると表示されます
ディジタル署名と電子メールに関する記述【ITパスポート 解説】
正解の理由
本問では、選択肢 a(送信者確認)と c(改ざん検知)が正しいため、選択肢 イ が正解です。
理由の要点をやさしく説明します。
- PKI(Public Key Infrastructure:公開鍵基盤)は、公的なしくみで「公開鍵(public key)」と「秘密鍵(private key)」という一対の鍵を使います。公開鍵暗号(public‑key/asymmetric cryptography:対になる鍵で暗号処理を行う方式)を基にしています。
- ディジタル署名(digital signature:電子的に署名を行う仕組み)は、まずメール本文の要約(ハッシュ:hash function)を作り、そのハッシュ値を送信者の秘密鍵で暗号化して署名を作ります。受信者は送信者の公開鍵でその署名を復号(=検証)し、受信した本文から自分でハッシュを作って比べます。
- したがって、受信者が「その署名は送信者の秘密鍵で作られたものだ」と確かめられるため、送信者が本人である(a)は確認できます。ただし「本人である」ことが完全に保証されるには、その公開鍵が本当にその人のものであると証明する仕組み(認証局:CA)が必要です。
- 同様に、ハッシュ値が一致すれば内容が改ざんされていない(c)ことが確認できます。
- 一方、ディジタル署名は本文を暗号化して隠す処理ではないため、途中で盗み見られること(機密性)は防げません。これが b が誤りである理由です。
解法ステップ
受験時に素早く正解にたどり着く手順:
- 各文を「認証(誰が送ったか)」「機密性(内容が見られない)」「完全性(改ざんされてない)」のどれに当たるか分類する。
- ディジタル署名の役割を思い出す:認証・完全性・否認防止(non‑repudiation)が主。機密性は含まれない。
- 「機密性があるか(b)」を問う文があればそれは誤りと判断。
- a と c が正しい組み合わせを選ぶ → イ。
覚え方:署名 = 誰が(authenticity)・変わってないか(integrity)を証明。見えないようにする(confidentiality)は別の仕組み(暗号化)を使う。
選択肢別の誤答解説
-
ア: a, b
b(電子メールの盗み見を防ぐ)が誤りです。署名は内容を隠しません。したがってアは不正解。 -
イ: a, c
a(送信者の確認)と c(改ざん検知)はディジタル署名の役割に合致します。よって イ が正解です。 -
ウ: b, c
b が誤りなのでウは不正解。c のみ正しいが組合せは誤りです。 -
エ: a, b, c
b が含まれているため誤りです。署名だけで機密性は保証されません。
(補足)a の「送信者が本人であるかを受信者が確認できる」について:実務的には公開鍵が本当に本人のものかを証明する認証局(CA: Certificate Authority)が重要です。また、秘密鍵が盗まれていれば偽装される可能性があります。
よくある誤解
-
ディジタル署名=メッセージの暗号化だと思い込む
- 実際は署名は「署名データ(通常はハッシュを秘密鍵で変換したもの)」を付ける処理。本文自体は暗号化されない限り第三者に見えます。機密性が必要なら暗号化(encryption)を併用します。
-
署名があれば送信者の身元が絶対に保証される
- 署名は「秘密鍵を持つ者が作った」ことを示すだけです。公開鍵と人の結びつきを保証する仕組み(認証局や証明書)が重要で、鍵管理(秘密鍵の流出防止)も必須です。
-
署名だけで通信の安全が全部解決する
- 署名は認証と完全性に強いが、機密性・転送路の安全(盗聴、中間者攻撃対策)などは別の技術(暗号化、TLSなど)で補う必要があります。
補足コラム
・S/MIME(Secure/Multipurpose Internet Mail Extensions)は電子メールでディジタル署名と暗号化を提供する規格です。署名で「改ざん・送信者確認」を行い、暗号化で「盗み見防止(機密性)」を実現します。
・PGP(Pretty Good Privacy)やOpenPGPも同様に署名+暗号化を扱います。
・ディジタル署名の技術的流れ(簡略)
・PGP(Pretty Good Privacy)やOpenPGPも同様に署名+暗号化を扱います。
・ディジタル署名の技術的流れ(簡略)
- メール本文 → ハッシュ関数(hash function:任意長を短い固定長に変える関数)でハッシュ値を作る。
- ハッシュ値を送信者の秘密鍵(private key)で暗号化して署名を作る。
- 受信者は送信者の公開鍵(public key)で署名を復号し、本文から計算したハッシュと比べる。
この手順で改ざん検知と署名者の確認が可能になります。
簡単な擬似コード(イメージ):
# イメージ:実際はライブラリを使う
hash = hash_function(message)
signature = private_key.sign(hash) # 秘密鍵で署名作成
# 受信側
verified_hash = public_key.verify(signature)
if verified_hash == hash:
print("改ざんなし・送信者確認")
else:
print("改ざんまたは不正な署名")
FAQ
Q1. ディジタル署名でメールの内容は暗号化されますか?
A1. いいえ。署名は内容を隠しません。内容を隠したければ暗号化(encryption)を行います。署名と暗号化は別の役割です。
A1. いいえ。署名は内容を隠しません。内容を隠したければ暗号化(encryption)を行います。署名と暗号化は別の役割です。
Q2. 署名があれば送信者の身元は絶対にわかりますか?
A2. 基本的には「その秘密鍵を持つ者が署名した」と確認できますが、公開鍵が本当にその人のものであることを保証する認証(証明書)や秘密鍵の安全管理が前提です。
A2. 基本的には「その秘密鍵を持つ者が署名した」と確認できますが、公開鍵が本当にその人のものであることを保証する認証(証明書)や秘密鍵の安全管理が前提です。
Q3. 署名と暗号化はどちらを先に行えばよいですか?
A3. 実務では「署名してから暗号化(sign‑then‑encrypt)」することが多いです。これにより受信者は復号してから署名確認できます。ただしプロトコル設計によって扱いが異なる場合があります。
A3. 実務では「署名してから暗号化(sign‑then‑encrypt)」することが多いです。これにより受信者は復号してから署名確認できます。ただしプロトコル設計によって扱いが異なる場合があります。
Q4. 電子メールの盗み見(盗聴)を防ぎたい場合は何を使うべきですか?
A4. メッセージの暗号化(S/MIME、PGP、あるいは送受信経路でTLS)を使います。署名はそれに追加して使います。
A4. メッセージの暗号化(S/MIME、PGP、あるいは送受信経路でTLS)を使います。署名はそれに追加して使います。
関連キーワード: PKI、ディジタル署名、公開鍵暗号、非対称鍵、ハッシュ関数、認証局、機密性、完全性、認証、S/MIME、PGP、否認防止

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

