暗号技術の基礎と応用
ECDSAのデジタル署名では、署名ごとに秘密の乱数 k を使う。k の扱いについての説明として、正しいものはどれか。
- Ak は署名に含めて公開するので、同じ値を何度使っても安全性に影響しない
- B異なるメッセージの署名に同じ k を使うと、2つの署名から秘密鍵を計算されてしまう
- Ck が予測できる値でも、秘密鍵そのものが漏れない限り、署名を偽造されるおそれはない
答えと解説を見る
正解:B. 異なるメッセージの署名に同じ k を使うと、2つの署名から秘密鍵を計算されてしまう
ECDSAの署名 (r, s) は、k、メッセージのハッシュ値、秘密鍵から計算されます。同じ k で2つのメッセージに署名すると、2つの s の式から k を消去でき、k と秘密鍵が求まります。k の一部のビットが偏っていたり予測できたりするだけでも、多数の署名から秘密鍵が求められることが知られています。そのため、質のよい乱数を使うか、RFC 6979のように、秘密鍵とメッセージから k を決定的に作る方法が使われます。
- A. k そのものは公開されません。同じ k を使うと署名の r が同じになり、秘密鍵を求める手掛かりになります。
- B. 正しい。同じ k の再利用は、秘密鍵の漏えいに直結します。
- C. k が分かれば、署名の式から秘密鍵を計算できます。秘密鍵が分かれば、署名を偽造できます。