本文へスキップ
ecdsa.com

弱い鍵

欠陥のある鍵生成器、不十分なエントロピー、構造上の欠陥、複数のデバイスでの使い回しのいずれかが原因で、公称の鍵長から想定されるより容易に破られる鍵です。
別表記weak keysROCADebian weak keysshared primes

実際のインシデントの大半は、エントロピーの不足によるものです。Debian の OpenSSL パッケージ(CVE-2008-0166、2006〜2008年)は、乱数生成器(RNG)のシードにほぼプロセス ID しか使っていなかったため、鍵の種類と鍵長ごとに約 32,768 個の鍵しか存在しませんでした。これらの鍵のブロックリストは、現在も一部の SSH ツールに同梱されています。起動直後に鍵を生成するデバイスでは、素数の重複や共有が起きていました。2012年、Heninger らは数百万のモジュラスにわたって GCD を計算し、TLS ホストの約 0.5% の RSA 鍵を素因数分解しました。

構造上の欠陥もあります。ROCA(CVE-2017-15361)では、Infineon のライブラリが生成した RSA 鍵が特殊な素数構造のために素因数分解可能になり、スマートカード、TPM、エストニアの ID カードに影響が及びました。2022年には、ある商用ライブラリが互いに非常に近い素数を生成していることが判明し、フェルマー法でモジュラスを瞬時に素因数分解できました(CVE-2022-26320)。楕円曲線の場合、弱い鍵は鍵そのものではなく、偏った nonce や質の悪い乱数から生じます。

検証者や CA が実行できるチェックには、フィンガープリントのブロックリスト(Debian)、ROCA のフィンガープリントテスト、既知のモジュラスに対するバッチ GCD、近い素数に対するフェルマー法による素因数分解、65537 以上の公開指数、最小鍵長の確認があります。弱い鍵チェッカーは、これらのテストをローカルで実行します。

規格と参考文献

すべての用語