応用情報技術者 2010年 春期 午前2 問40
問題文
ディジタル署名を生成するときに、発信者がメッセージのハッシュ値をディジタル署名に変換するのに使う鍵はどれか。
選択肢
ア:受信者の公開鍵
イ:受信者の秘密鍵
ウ:発信者の公開鍵
エ:発信者の秘密鍵(正解)
🔒 解説は解答すると表示されます
署名生成用秘密鍵【午前2解説】
正解の理由
ディジタル署名は発信者がメッセージの正当性(真正性・完全性・非否認)を保証するために生成します。署名生成ではまずメッセージに対してハッシュ関数を適用して要約値 を得て、それを発信者自身が保持する秘密鍵で署名操作します。したがって署名を作る鍵は発信者の秘密鍵、すなわちエが正解です。受信者の公開鍵や秘密鍵は、署名検証や暗号化の用途で混同されがちですが、署名の検証には発信者の公開鍵を使い、受信者の公開鍵は発信者から受信者への暗号化(機密性確保)に用います。受信者の公開鍵は署名検証に用いません。
解法ステップ
- 「署名を生成する側(発信者)」が使う鍵か、検証する側(受信者や第三者)が使う鍵かを切り分ける。
- 署名生成=秘密情報でしか作れない操作、検証=公開情報で確認できる操作、を思い出す。
- 選択肢を当てはめる:発信者の秘密鍵が署名生成に一致するため選ぶ。
選択肢別の誤答解説
- ア: 受信者の公開鍵
受信者の公開鍵は、発信者が受信者に機密メッセージを送る際にそのメッセージを暗号化するために使います。署名の生成や検証に用いるものではありません(署名検証に使うのは発信者の公開鍵です)。よって誤り。 - イ: 受信者の秘密鍵
受信者の秘密鍵は受信者自身が暗号文を復号するために使う鍵であり、発信者が署名を作るために用いるものではありません。誤りです。 - ウ: 発信者の公開鍵
発信者の公開鍵は署名の検証に用います。公開鍵で署名の正当性(発信者が確かに署名したか)を確認するため、署名の生成に使うことはできません。誤りです。 - エ: 発信者の秘密鍵
発信者が自分の秘密鍵でハッシュ値に対して署名操作を行うことで、署名を生成します。したがって署名生成に使う鍵は発信者の秘密鍵であり、正解はエです。
よくある誤解
- 「公開鍵で署名を作る」:公開鍵は検証用であり、署名の作成には使えません。公開鍵で"作る"ことは原理的にできません(RSAの内部演算が似ているため混同されやすいですが、役割が逆です)。
- 「受信者の公開鍵で署名検証する」:受信者の公開鍵は検証に無関係です。検証は発信者の公開鍵で行います。
- 「署名=メッセージ全体を暗号化している」:効率や安全性のために通常はハッシュ値 を署名対象にします。署名はメッセージそのものを暗号化するものではありません。
補足コラム
- 一般的な署名の流れを式で表すと次のようになります。まず をハッシュ関数、 を発信者Aの秘密鍵、 をAの公開鍵とすると、
- 署名生成:
- 署名検証: が成功すれば真正性が確認される。
- アルゴリズムの例:RSAでは「秘密鍵でハッシュを変換する」操作が署名に使われることがあり、DSA/ECDSAでは乱数を使った異なる数学的手順で署名値( のペア)を生成しますが、いずれも署名は秘密鍵に依存します。
- 実務では「署名してから暗号化(Sign-then-Encrypt)」することが多く、これにより署名の非公開性やメッセージの機密性を両立できます。
FAQ
Q: RSAでは「秘密鍵で暗号化」しているのですか?
A: 表現としては「秘密鍵でハッシュを変換する」ことで署名を作るため、見た目は暗号化に似ますが、目的は認証と非否認であり、処理や使い方が異なります。
A: 表現としては「秘密鍵でハッシュを変換する」ことで署名を作るため、見た目は暗号化に似ますが、目的は認証と非否認であり、処理や使い方が異なります。
Q: 発信者の公開鍵が漏れたらどうなる?
A: 公開鍵は公開前提の情報なので漏洩とは考えませんが、公開鍵が偽造された場合は信頼できる公開鍵配布(証明書やCAなど)で対策します。
A: 公開鍵は公開前提の情報なので漏洩とは考えませんが、公開鍵が偽造された場合は信頼できる公開鍵配布(証明書やCAなど)で対策します。
Q: 署名だけで機密性も保証されますか?
A: いいえ。署名は認証と整合性、非否認を提供しますが、機密性(第三者に読まれないこと)は暗号化(受信者の公開鍵など)で確保します。
A: いいえ。署名は認証と整合性、非否認を提供しますが、機密性(第三者に読まれないこと)は暗号化(受信者の公開鍵など)で確保します。
関連キーワード: 公開鍵暗号、秘密鍵、ディジタル署名、ハッシュ関数、RSA、ECDSA、非否認

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

