情報処理技術者試験の問題

情報処理推進機構情報処理技術者試験の過去問を見ていたら, ディジタル署名を生成するときに,発信者がメッセージのハッシュ値を暗号化するのに使うものはどれかというような文章が散見される. 大体の試験で1問しか出ていないのだが, こういうところから誤解が広まっていくのだなと思った. 初心者向けの説明としては分かりやすいけどさー. ElGamal署名やDSSの場合どうするんだろうね? RSA系でもFiat-Shamir変換から作るものとかも.
そういえば, 2ch*1でも見た覚えがあった問題を発見. これはひどい.

問47 公開鍵暗号方式を用いて文書のディジタル署名を行う場合,鍵の関係に関する記述のうち,適切なものはどれか。

  1. ア 暗号化鍵は公開しないが,復号鍵は公開する。
  2. イ 暗号化鍵は公開するが,復号鍵は公開しない。
  3. ウ 暗号化鍵,復号鍵とも公開しない。
  4. エ 暗号化鍵,復号鍵とも公開する。

正解はア. 問題作成者は「(公開鍵暗号方式を使って)署名鍵で署名を行うこと」を「メッセージのハッシュ値を(公開鍵暗号の)秘密鍵で暗号化」と考えている. また「(公開鍵暗号方式を使って)検証鍵で検証を行うこと」を「(公開鍵暗号の)公開鍵で復号して値を取り出し,メッセージのハッシュ値と比較」と考えている*2. 署名するときには暗号化を行っているのだから, 問題作成者の中では, 署名鍵を(署名の)暗号化鍵と呼ぶ. 署名鍵を秘密にして, 検証鍵を公開するのだから, 正解はア. 前半の公開鍵暗号方式を用いてってのはある意味ミスリードなんだな.
今度IPAの人に出会ったら, この話をしてみよう(わらい

*1:http://science6.2ch.net/test/read.cgi/math/1170938965/55

*2:RSAが念頭にあるな