基本情報技術者 2017年 秋期 午前(科目A) 問40
問題文
ディジタル署名における署名鍵の使い方と、ディジタル署名を行う目的のうち、適切なものはどれか。
選択肢
ア:受信者が署名鍵を使って暗号文を元のメッセージに戻すことができるようにする。
イ:送信者が固定文字列を付加したメッセージを署名鍵を使って暗号化することによって、受信者がメッセージの改ざん部位を特定できるようにする。
ウ:送信者が署名鍵を使って署名を作成し、その署名をメッセージに付加することによって、受信者が送信者を確認できるようにする。(正解)
エ:送信者が署名鍵を使ってメッセージを暗号化することによって、メッセージの内容を関係者以外に分からないようにする。
ディジタル署名における署名鍵の使い方と目的【午前2 解説】
要点まとめ
- 結論→送信者は自身の署名鍵(秘密鍵)でメッセージのハッシュに署名し、受信者は公開鍵で検証して送信者の真正性と改ざん検出を行う。
- 根拠→署名は暗号化(機密性)とは目的が異なり、秘密鍵で署名し公開鍵で検証する公開鍵暗号とハッシュ関数の組合せで成立するためである。
- 差がつくポイント→署名が提供するのは完全性・真正性・非否認性であり、機密性を期待する選択肢は誤りになる点に注意する。
正解の理由
正解は ウ です。ディジタル署名では送信者が自身の署名鍵(秘密鍵)を用いてメッセージ(正確にはメッセージのハッシュ)に署名を作成し、これをメッセージに付加して送ります。受信者は送信者の公開鍵で署名を検証することで、そのメッセージが送信者によって作成されたものである(真正性)および送信後に改ざんされていない(完全性)ことを確認できます。これにより送信者は後から否認できなくなる(非否認性)という効果もあります。
よくある誤解
- 署名鍵=暗号化鍵と混同する誤解:署名は認証と完全性が目的であり、機密性のためにメッセージ全体を秘密鍵で暗号化するわけではありません。
- 署名で改ざん箇所が分かると考える誤解:署名検証は改ざんがあったかどうかは判定できますが、具体的な改ざん位置を自動で示すわけではありません。
- 送信者が署名鍵で暗号化すれば安全だとする誤解:秘密鍵で「暗号化」されたデータは誰でも公開鍵で復号可能であり、機密性は保てません。
解法ステップ
- 「署名鍵」が誰の鍵か(送信者の秘密鍵)を確認する。
- 各選択肢が示す動作の目的(認証・完全性・機密性・改ざん位置特定など)を整理する。
- 署名の主目的は認証と完全性(および非否認)であることを踏まえ、機密性に関する記述を排除する。
- 選択肢を消去法で絞り、残ったものが妥当か技術的に説明できるか検証する。
選択肢別の誤答解説
- ア: 受信者が署名鍵を使って暗号文を元のメッセージに戻すことができるようにする。
誤り。署名鍵は秘密鍵であり、暗号文の復号(機密性のための復号)に使うものではないし、通常受信者が秘密鍵を用いることはない。復号は送信者が暗号化に受信者の公開鍵を使った場合に受信者の秘密鍵で行うが、それは署名の説明ではない。 - イ: 送信者が固定文字列を付加したメッセージを署名鍵を使って暗号化することによって、受信者がメッセージの改ざん部位を特定できるようにする。
誤り。署名はハッシュを秘密鍵で署名するのが一般的で、固定文字列付加で改ざん箇所を特定する仕組みではない。署名は改ざんの有無を検出するが、改ざん箇所そのものを示すわけではない。 - ウ: 送信者が署名鍵を使って署名を作成し、その署名をメッセージに付加することによって、受信者が送信者を確認できるようにする。
正解。前述の通り、秘密鍵で署名し公開鍵で検証することで送信者確認(真正性)と改ざん検出(完全性)が実現される。 - エ: 送信者が署名鍵を使ってメッセージを暗号化することによって、メッセージの内容を関係者以外に分からないようにする。
誤り。秘密鍵で暗号化した場合は公開鍵を持つ者であれば誰でも復号可能であり、機密性は保証されない。機密性を得るには受信者の公開鍵で暗号化する。
補足コラム
- 実際の署名手順は「メッセージ → ハッシュ関数 → ダイジェスト → 署名鍵で署名(例えばRSAで暗号化)→ 署名付与」の流れです。受信者はダイジェストを再計算し公開鍵で復号した署名のダイジェストと比較します。
- 主な署名方式にはRSA署名、DSA/ECDSAなどがあり、ECDSAは楕円曲線暗号を利用して短い鍵長で高い安全性を提供します。
- 署名と類似する認証手段にMAC(共通鍵認証)があり、MACは送信者と受信者が共有する鍵を用いるため非否認性の点でディジタル署名と異なります。
FAQ
Q1: 署名を付ければメッセージの内容は秘密になるのですか?
A1: いいえ。署名は内容の機密性を保証しません。機密にするには受信者の公開鍵で暗号化します。署名は認証と完全性が目的です。
A1: いいえ。署名は内容の機密性を保証しません。機密にするには受信者の公開鍵で暗号化します。署名は認証と完全性が目的です。
Q2: 署名は誰でも検証できますか?
A2: はい。公開鍵があれば誰でも署名を検証できます。これが第三者検証や非否認性の基盤になります。
A2: はい。公開鍵があれば誰でも署名を検証できます。これが第三者検証や非否認性の基盤になります。
Q3: ハッシュ関数は必須ですか?
A3: 実用上ほぼ必須です。長いメッセージそのものを署名鍵で処理するのは非効率であり、ハッシュを署名することで効率と安全性を確保します。
A3: 実用上ほぼ必須です。長いメッセージそのものを署名鍵で処理するのは非効率であり、ハッシュを署名することで効率と安全性を確保します。
Q4: 署名で改ざん箇所が分かりますか?
A4: いいえ。改ざんがあったかどうかは分かりますが、改ざんされた位置までは署名検証だけで特定できません。
A4: いいえ。改ざんがあったかどうかは分かりますが、改ざんされた位置までは署名検証だけで特定できません。
関連キーワード: ディジタル署名、署名鍵、公開鍵暗号、ハッシュ関数、非否認、完全性、真正性

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

