Anthropicによると、同社の社内向けClaude研究モデルが、米国家安全保障局(NSA)がNIST楕円曲線5種のシード値をどのように生成したかを、30分足らずで再構築しました。約25年にわたり謎とされてきた暗号学上の問題に、一つの答えが示されたことになります。
CyberSecurity Tools
10月16日付の同社レポートは、これらのシード値が秘密のパスフレーズではなく、Unixタイムスタンプで初期化した標準的なC言語の疑似乱数生成器によって作られたと結論づけています。
「暗号鍵」という表現が使われていますが、今回の発見が扱うのは公開される曲線パラメータです。秘密鍵や署名用の秘密情報ではありません。Anthropicはこの取り組みを歴史的な再構築と位置づけています。暗号の破られた事例や新たな攻撃手法は報告しておらず、運用中のシステムを変更すべき理由もないとしています。
Claude AIが25年来のNSA暗号の謎を解明
NISTは2000年、デジタル署名標準FIPS 186-2でECDSAと推奨楕円曲線を採用しました。公開されたシード値によって曲線パラメータの導出を検証できましたが、その由来が説明されていなかったため、NSAが曲線の選定に意図的に関与したのではないかと疑う研究者もいました。
暗号研究者のFilippo Valsorda氏が主催した懸賞は、これらのシード値の由来を解明する取り組みを促しました。従来は、NSAの数学者Jerry Solinas氏にちなむ冗談めいたフレーズが由来だとする説がありました。
Claudeはこれとは異なり、1990年代のC言語ライブラリに典型的なプログラミングパターンに着目しました。そして、48ビットの内部状態を持つ線形合同法の生成器lrand48を特定しました。
モデルは、生成器と出力スライスの組み合わせ34通りについて、公開済みのシード値を走査しました。その結果、バイナリ曲線の4つのシード値に、最上位ビットがいずれも0である32ビットワードが5つ含まれていました。これはlrand48の31ビット出力と一致します。
非公開の17ビットの内部状態を総当たりで列挙し、後続の出力と照合すると、生成器の状態の候補が復元できました。一方、素数曲線のシード値では、生成器の1回の呼び出しから得られるビット数が少なくなります。
Claudeは、Lenstra–Lenstra–Lovászの格子基底簡約アルゴリズムを使い、こうした切り詰められた出力から内部状態を再構築しました。NISTのシード値5つとANSI X9.62の例示用シード値5つは、lrand48() >> 23からバイトを集める構成と一致しました。
生成器を逆算すると、初期化値は1997年5月から1998年4月までのUnixタイムスタンプに対応していることが分かりました。復元した構成により、P-192、P-224、P-256、P-384、P-521を再現できています。P-256の標準化されたシード値は、1997年8月16日に初期化した系列の1,842番目の候補として現れました。
Claudeはさらに、Arjen Lenstra氏の算術パッケージFreeLIPの生成器を使い、P-192とANSIの例示曲線5つについて、ベースポイントの生成過程も再構築しました。これらのベースポイントは曲線のシード値とは別物で、暗号処理の固定点として機能します。

ただし、再構築は完全ではありません。AnthropicはB-163のシード値や、いくつかのベースポイントについては説明できませんでした。また、適切な曲線を生成したとみられる候補がスキップされていた例も見つかっており、元の選定基準は未解明のままです。
Anthropicは、再現可能なタイムスタンプベースの構成が示されたことで、意図的な操作への懸念は和らぐと主張しています。ただし、当時のすべての判断が裏づけられたわけではありません。別の生成を試行した例がなかったことの証明にもなりません。
賞金36,864ドルは、Internet Security Research Group(ISRG)に寄付される予定です。防御側にとっての成果は、公開されている暗号パラメータの透明性が高まったことです。秘密情報が復元されたわけでも、ECDSAの弱点が実証されたわけでもありません。
CyberSecurity Tools
16,000以上のSOCチームがANY.RUNを活用し、脅威調査の効率化と手作業の削減を実現しています。 チームで試してみる
翻訳元: https://gbhackers.com/anthropics-claude-ai-nsa-provided-cryptographic-keys/