デジタル署名の標準規格ECDSAで広く使われる楕円曲線は、NISTが2000年にFIPS 186-2で採用した。この規格では、素数体・二元体それぞれの標準曲線について、ハッシュ化すると曲線の係数bになる「シード値」が示されているが、NSAはその生成方法を説明せずにシード値だけを提供したため、出自は長年の謎とされてきた。研究者Neal KoblitzとAlfred Menezesは2015年にこの論争を総括しており、有志による調査や謎を解明した者への報奨金も設けられていた。有力とされていた説明は、NISTの数学者だった故Jerry Solinas氏が2015年に語った「ユーモラスな一節をハッシュ化した」という本人の記憶だったが、これは誤りだったことが今回判明した。Solinas氏は2023年に死去しており、同僚らもこれ以上の経緯を説明できなかったという。
Anthropicによると、2026年10月、社員の一人が同社の内部研究用モデルに、パスフレーズの手がかりを与えずにシード値の生成過程を解明させたところ、30分足らずでP-192・P-224・P-256・P-384・P-521の各シード値が、Cライブラリの擬似乱数生成器「lrand48」をUNIXタイムスタンプで初期化した出力そのものであることを突き止めた。各シード値は生成器が出力する20バイトの候補のうち、規格で採用されたn番目の候補にすぎず、例えばP-256は1842回目の反復が使われていたという。Claudeはさらに、P-192と5つのANSI X9.62例示曲線を含む6つの曲線について、基点(G)の生成方法も特定し、Arjen Lenstra氏の長整数ライブラリ「FreeLIP」(初期のNTLライブラリも同じ生成器を採用)の乱数生成器に由来することを示した。
手法としては、まずシード値が1990年代の弱い擬似乱数生成器の出力である可能性を仮説として設定し、各シード値に対しビット単位でずらした窓を当てはめ、連続する生成器の出力と一致するかを34通りの組み合わせで走査した。4つのシード値では20個の各ワードの最上位ビットが一致してゼロになっており、偶然である確率は約1/5810だが、これは48ビットの内部状態のうち上位31ビットのみを返すlrand48の特徴と一致した。フルビット幅の出力については隠れた17ビットを総当たり(2の17乗通り)して検証し、ビット幅が切り詰められた素数曲線の出力についてはLLL格子基底縮小アルゴリズムを使って内部状態を復元、共通して「lrand48() >> 23」という生成パターンが確認された。復元した内部状態から`srand48`の初期化時刻を逆算すると、素数曲線のシード値は1997年5月から1998年4月の間の日付に対応し、Claudeは生成されたシード値と基点を再現するPythonコードも公開して検証した。
Anthropicは、今回の結果は「暗号学的な破綻や新たな攻撃、脆弱性ではない」と強調している。シード値が単純で再現可能な過程から生成されたと分かったことで、意図的なバックドアが仕込まれている可能性は一段と低くなったとしつつ、P-224・P-256・P-384・P-521の基点や二元体曲線の基点の生成方法、二元体曲線の一つ「B-163」のシード値については未解明のまま残っているとしている。研究チームはJohn Wood氏、Henry de Valence氏、Nicholas Carlini氏ら10名で、謎解明に対する36,864ドルの報奨金はInternet Security Research Groupに寄付される。Anthropicは故Jerry Solinas氏の功績に謝意を示すとともに、報奨金の企画者であるFilippo Valsorda氏にも謝辞を述べている。



