10月17日、madrobot.blogが「Claude cracked a 25-year NSA cryptography mystery in under half an hour, Anthropic says」と題した記事を公開した。NSAが2000年に標準化した楕円曲線のシード値は「説明のない乱数」として25年間、暗号コミュニティにバックドア疑惑をくすぶらせてきた。専門家と公開懸賞金をもってしても解けなかったその謎に、AnthropicのAIモデルClaudeが30分以内に実証的な答えを出した。
25年間の暗号学的謎とは何か
ECDSA(楕円曲線デジタル署名アルゴリズム)は、TLSやJWT、コード署名など現代のウェブセキュリティの根幹を支える署名方式だ。NISTが2000年に標準化したFIPS 186-2では、P-192、P-224、P-256、P-384、P-521という複数の楕円曲線が定義されており、特にP-256はウェブの暗号化通信において圧倒的なシェアを持つ。
これらの曲線はそれぞれ、20バイトの「シード」値をハッシュ化して生成されている。たとえばP-256のシードはC49D3608 86E70493 6A6678E1 139D26B7 819F7E90だが、NSAはこのシードをどう決めたかについて一切説明しなかった。
「説明のない乱数 = 意図的なバックドアではないか」という疑惑は、暗号コミュニティで長年くすぶり続けた。特に2013年のSnowden文書でNSAが別の暗号標準(Dual_EC_DRBG)にバックドアを仕込んでいたことが発覚して以降、この疑惑は現実味を帯びて語られてきた。
曲線の設計者であるNSAの数学者Jerry Solinasは2015年にこう語っている:
メッセージは「ボブとジェリーに昇給を」とか「ボブとジェリー最高」みたいな感じだったと思う。実際にコードを書いたのはボブ・ライターで、彼も詳細を覚えていない。
Solinasは2023年に死去。真相を知る可能性が最も高かった人物が亡くなったことで、謎の解明はさらに困難になったと見られていた。
懸賞金の設定とAnthropicの調査
謎の解明を促そうと、暗号研究者のFilippo Valsordaはシード解読に**$12,288の懸賞金を設定し、慈善団体への寄付を条件に$36,864**まで引き上げた。Valsordaが設定したこの懸賞は「シードがどのように生成されたかを実証する者」に与えられるものだ。
Anthropicのスタッフも別途この謎を追っており、Jerry Solinasが述べていた「ジョーク文句(funny message)」の手がかりを調査したが、成果は得られなかった。懸賞の設定者であるValsordaとAnthropicは独立して調査を進めており、最終的にAnthropicのモデルが発見した結果がValsordaの懸賞条件を満たす形となった。
Claudeが30分で出した答え
Anthropicの社員が、内部の研究用モデルに対してシードの生成方法を調べるよう依頼した。今回のポイントは、「ジョーク文句」というパスフレーズのヒントを一切与えなかったことだ。Claudeは文句を探すアプローチを取らず、別の切り口から問題に当たった。
Claudeは「1990年代のCライブラリに含まれていた弱い乱数生成器の出力なのではないか」と推論した。調査した10個のシードのうち4つで、上位ビットがすべてゼロになるパターンを検出した。Anthropicによれば、このパターンが偶然起きる確率は約1/5,810であり、標準的なC言語の乱数生成器lrand48の特徴と一致する。
ここでlrand48の「弱さ」が鍵になる。lrand48は48ビットの線形合同法(LCG)に基づく乱数生成器であり、内部状態がわずか48ビットしかない。内部状態が小さいということは、出力のサンプルがいくつか得られれば、逆算によって初期状態(シード)を復元できることを意味する。具体的には、格子暗号の標準的な手法であるLattice reductionを用いると、連続する出力値から連立方程式を構成し、内部状態を効率的に特定できる。Claudeはこの手法でlrand48の内部状態を復元し、タイムスタンプまで逆算した。
結果として、P-256のシードは1997年8月16日 01:52:34 UTC にUnixクロックで初期化されたlrand48が生成した、1,842番目の候補であることが判明した。「1,842番目」という数字は、乱数生成器を初期化後に出力を順に生成していった中で、NISTが採用した値と一致したのがその番号だったことを意味する。
Claudeが当時出力した推論ログをAnthropicは公開しており、そこにはこう書かれている:
「これは驚くべきことだ:25年来の謎が解けた。いや待て。懐疑的になってみよう。」
P-192と5つの関連ANSI X9.62曲線の基点(base point)の出所も、今回初めて説明されたとAnthropicは述べている。
ECDSAへの影響と残る疑問
Anthropicは、今回の発見はECDSAの「破り」ではないと強調する。むしろ逆で、誰でも再現できるクロックシードを使っていたことは、意図的なバックドアの余地が小さいことを示す、と主張する。ユーザーが設定を変更する必要はないとしている。
ただし、この主張はAnthropicによる自己検証にとどまっており、独立した第三者による確認はまだ行われていない。「バックドア疑惑に決着」と言い切るにはこの点が依然として壁となる。シードを再生成するコードは公開済みであり、外部研究者による検証は誰でも実施できる状態にある。第三者機関による再現確認が揃って初めて、コミュニティとして疑惑に終止符を打てると言えるだろう。
また、いくつかの未解決事項も残る。P-256について、同じ実行から生成された876番目の候補も有効な曲線を作れたはずだがスキップされており、その理由は不明だという。バイナリ曲線B-163のシード、P-224・P-256・P-384・P-521の基点の出所についても説明がついていない。
懸賞金**$36,864**は、Let's Encryptを運営する非営利団体Internet Security Research Groupへ寄付される予定だ。
なぜこれが重要か
専門家と公開懸賞金をもってしても数年解けなかった問題を、AIが30分で、しかも再現可能な形で解いた事実は、AIの問題解決能力を示す具体的な事例として記録されることになる。加えて、暗号コミュニティを長年悩ませてきたバックドア疑惑に対して、実証的な反論が提示された意義も大きい。独立検証という残るハードルはあるものの、四半世紀越しの謎に対してこれほど具体的な仮説が提示されたのは初めてのことだ。
詳細はClaude cracked a 25-year NSA cryptography mystery in under half an hour, Anthropic saysを参照していただきたい。