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

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


問題文

ディジタル署名における署名鍵の用い方と、ディジタル署名を行う目的のうち、適切なものはどれか。

選択肢

受信者が署名鍵を使って、暗号文を元のメッセージに戻すことができるようにする。
送信者が固定文字列を付加したメッセージを署名鍵を使って暗号化することによって、受信者がメッセージの改ざん部位を特定できるようにする。
送信者が署名鍵を使って署名を作成し、それをメッセージに付加することによって、受信者が送信者を確認できるようにする。(正解)
送信者が署名鍵を使ってメッセージを暗号化することによって、メッセージの内容を関係者以外に分からないようにする。

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

ディジタル署名の目的と署名鍵【午前解説】

正解の理由

選択肢ウは、ディジタル署名の基本的な仕組みと目的を正しく表しています。具体的には送信者が秘密(署名)鍵でメッセージのハッシュに対して署名を作成し、それをメッセージに付加します。受信者は送信者の公開鍵で署名を検証することで、送信者の本人性(認証)とメッセージの改ざんがないこと(完全性)を確認できます。さらに署名により送信者は後から「自分は送っていない」と否定しにくくなるため、非否認性も得られます。したがってウが適切です。

解法ステップ

  1. 問題文のキーワード「署名鍵」「送信者」「受信者」を把握する。
  2. 署名の目的(認証・完全性・非否認)と暗号化の目的(機密性)を区別する。
  3. 各選択肢が署名の目的・鍵の使い方と合致するかを検証し、矛盾するものを除外する。
  4. 最も整合する選択肢(ウ)を選ぶ。

選択肢別の誤答解説

  • ア: 受信者が署名鍵を使って、暗号文を元のメッセージに戻すことができるようにする。
    → 誤り。署名鍵(通常は送信者の秘密鍵)は署名作成用であり、暗号文の復号は受信者の秘密鍵(受信者が暗号化を受けている場合)で行います。署名鍵で「復号」するという表現自体が混同です。
  • イ: 送信者が固定文字列を付加したメッセージを署名鍵を使って暗号化することによって、受信者がメッセージの改ざん部位を特定できるようにする。
    → 誤り。署名はハッシュ値を署名鍵で処理しますが、「固定文字列を付加して改ざん箇所を特定する」という説明は不正確です。署名は改ざんの有無を検出しますが、具体的な箇所特定は署名そのものの直接的機能ではありません。
  • ウ: 送信者が署名鍵を使って署名を作成し、それをメッセージに付加することによって、受信者が送信者を確認できるようにする。
    → 正解。送信者の秘密鍵で署名を作成し、受信者は対応する公開鍵で検証して送信者の認証とメッセージの完全性を確認できます。
  • エ: 送信者が署名鍵を使ってメッセージを暗号化することによって、メッセージの内容を関係者以外に分からないようにする。
    → 誤り。署名鍵は署名に用いる秘密鍵であり、メッセージの機密化(暗号化)には受信者の公開鍵を用いるのが通常です。送信者の秘密鍵で暗号化しても誰でも公開鍵で復号できるため機密性は保てません。

よくある誤解

  • 署名=暗号化と混同して、署名がメッセージの機密性(秘匿)を保証すると考える誤り。署名は公開可能であり、機密化には受信者の公開鍵を使った暗号化が必要です。
  • 署名鍵を「復号」に使うというイメージ。署名鍵(秘密鍵)は署名作成に用いるもので、受信者がメッセージを復号するための鍵ではありません。
  • 署名で改ざん箇所を特定できると誤解すること。署名は改ざんの有無を検出しますが、改ざん箇所を逐一指し示すものではありません。

補足コラム

  • 署名の一般的手順:メッセージ m からハッシュ を作成し、送信者の秘密鍵 を生成、メッセージと署名 を送る。受信者は送信者の公開鍵 を行い検証します。
  • 代表的アルゴリズム:RSA(署名モード)、DSA、ECDSA など。ハッシュ関数は SHA-256 などが使われます。
  • 実務上の注意:署名鍵(秘密鍵)は厳重に保護し、鍵漏洩があると非否認性や認証性が失われます。署名と暗号化を組み合わせる場合は「署名→暗号化(Sign-then-Encrypt)」など設計上の順序にも注意が必要です。
  • 簡易擬似コード(概念説明):
# 概念的な流れ(実用コードではライブラリを使ってください)
h = hash(message)
signature = sign_with_private_key(h, sender_private_key)
# 送信側: send(message, signature)
# 受信側:
h_recv = hash(message)
valid = verify_with_public_key(h_recv, signature, sender_public_key)

FAQ

Q1: 署名があればメッセージの内容は安全ですか?
A1: いいえ。署名は内容の機密性を保証しません。内容の秘匿は暗号化(受信者の公開鍵など)で実現します。
Q2: 署名と MAC(メッセージ認証コード)は同じですか?
A2: 違います。MAC は対称鍵を使って認証と完全性を提供し、署名は公開鍵暗号を使って送信者認証と非否認を提供します。用途や鍵管理が異なります。
Q3: 署名が検証できれば改ざん箇所がわかりますか?
A3: 基本的には改ざんがあったことは検出できますが、どの部分が改ざんされたかを特定するには追加の手法(差分検査やログなど)が必要です。

関連キーワード: ディジタル署名、公開鍵暗号、秘密鍵、公開鍵、ハッシュ関数、非否認、完全性、認証、RSA、ECDSA、DSA、署名検証
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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