NIST楕円曲線の種、drand48由来と判明 懸賞金獲得
NIST楕円曲線の種がdrand48とUNIXタイムスタンプから生成されていたと判明。3年前に提示された懸賞金が獲得され、賞金はISRGへ寄付された。
NISTが標準化した楕円曲線の「種」がどのように生成されたのかという長年の問いに決着がついた。Lobsters の words.filippo.io by FiloSottile の報道によれば、Anthropic所属のJohn Wood氏、Henry de Valence氏、Ava Howell氏、Zack Voase氏、Lucy Sweet氏、Amir Omidi氏、Paul Crowley氏、Iain McGinniss氏、Nicholas Carlini氏、Steve Weis氏が解を導き出した。2026年10月15日01時07分51秒(UTC)に、3年前に告知された懸賞金の全額が獲得された。
懸賞を提示したのは、filippo.ioを運営するFilippo Valsorda氏である。同氏のブログで結果が公表された。核心は次の一文に集約される。
種は刺激的な文章のハッシュではなく、時刻を初期値としたdrand48の出力だった。
NIST楕円曲線の種が解明される
問題となっていたのは、NISTが2000年にFIPS 186-2で公開した楕円曲線の種である。対象はP-192、P-224、P-256、P-384、P-521の5種類だ。これらはANSI X9.62に従い、任意の種をSHA-1でハッシュ化し、その出力からパラメータを導出する方式で生成されたと説明されていた。しかし、その任意の種がどう選ばれたのかは公表されていなかった。
長らく語られていたのは、2023年初頭に死去したJerry Solinas氏が1997年に英語の文章をハッシュ化して生成し、その文章を後に忘れたという説だった。Steve Weis氏の記事や元の懸賞告知でもこの経緯が紹介されている。だが記憶は誰に対しても誤りを生じさせる。実際の種は、POSIX標準のdrand48乱数生成器で生成されていた。
drand48による種生成の仕組み
アルゴリズムは単純である。まず、当時のUNIXタイムスタンプをsrand48()に渡す。その後、drand48で1バイトずつ生成する。得られた20バイトの並びをANSI X9.62に従って種として試し、生成される曲線が妥当でなければ棄却する。一部のタイムスタンプは、最初の種を採用した後も試行を続けることで複数の曲線の生成に使われている。
時刻に依存する乱数であるため、各曲線の種は生成時点のタイムスタンプから再現できる。1997年から1998年という時期も、この方式と整合する。
Go言語による再実装と検証の実際
Valsorda氏はこのアルゴリズムをGo言語で再実装し、主張を検証した。再現計算により、公開された種がdrand48の出力と一致することが確認されている。詳細はAnthropicの解説記事にまとめられている。
再実装による検証は、単なる推測ではなく再現可能な事実として結論を支える。暗号パラメータの来歴を巡る議論では、この再現性が決定的な意味を持つ。
未解明のまま残された第二の基準
ただし、すべてが解明されたわけではない。ANSI X9.62の基準に加えて、文書化されていない選別条件が2つ存在する。1つは比較的明確で、生成された曲線の位数nのビット長が、基礎体pのビット長を上回る場合に種を棄却するという条件である。より厳しいn < pという条件ではない点が重要だ。これはprime239v2がp < n < 2^239を満たすためである。
この条件により、公開された曲線のおよそ2倍の有効な種が残る。この最後の部分については複数の説明が検討されたが、適合するものは見つからなかった。同じ乱数生成器が種の検証にも使われ、乱数出力を消費して一部の候補を飛ばした可能性があるが、その「隙間」は規則的ではない。あるいは、いずれかのアルゴリズムの不具合により半分の確率で誤った結果が返されていた可能性もある。かつて膨大な計算を要した処理も、現在は市販のソフトウェアで数分で実行できる。
懸賞金の獲得とISRGへの寄付
解を導き出したチームは、懸賞金をISRGに寄付することを選んだ。ISRGはLet’s Encryptを運営する非営利団体である。寄付により賞金は3倍に膨らみ、3万6864ドル(36 Ki$)となった。
懸賞金にはAmir Omidi氏、Chris Palmer氏、Colm MacCárthaigh氏、David Adrian氏、David Anderson氏、Jeff Hodges氏、Matt Green氏、Matthew McPherrin氏、Paul Kehrer氏、Ryan Sleevi氏、Soatok氏が拠出している。暗号コミュニティから幅広い支援が集まった形だ。
暗号プリミティブへの信頼と影響
今回の解明は、暗号技術史上の1ページを埋めるものだと評価できる。NIST楕円曲線はTLSや電子署名など幅広い用途で使われており、その生成過程が検証可能になったことは、基盤技術への信頼を補強する。種が恣意的な文章ではなく、時刻に基づく乱数から生成されていたという事実は、いわゆるバックドア疑惑への直接的な反証にはならない。それでも、パラメータ導出の透明性を高める材料となる。
一方で、文書化されていない選別基準が1つ残る点は、完全な説明がついたとは言い切れないことを示す。当時の実装の詳細が失われている以上、この種の検証は今後も推測に頼らざるを得ない部分を残すと見る。
オープンな仕様と実装の来歴を重視する流れは暗号に限らない。半導体分野でも、Tenstorrent、RISC-Vコア「Ascalon XG」のGCCパッチ公開のように、実装の詳細を公開する動きが進んでいる。説明できない定数を残さない姿勢は、分野を問わず標準化の信頼性を左右する。
編集部の見解
短期的には、暗号ライブラリの監査や標準化文書の見直しにおいて、生成過程の記録を求める動きが強まると見る。説明不能な定数が残る標準は、たとえ実害がなくても継続的な検証コストを生むためだ。長期間使われ続ける標準ほど、その影響は大きい。
長期的には、暗号プリミティブの来歴をどう記録し公開するかが、標準化プロセスの設計課題として浮上する。生成に用いた乱数や時刻まで辿れる形で保存する仕組みが求められる可能性がある。標準化機関の文書管理の在り方にも波及する。
編集部からの問いとして、過去に標準化された定数のうち、根拠が文書化されていないものは他にどれだけ残っているのかを読者と考えたい。検証可能な来歴の確保は、暗号に限らず広く適用すべき原則ではないだろうか。開発者が依存する定数の出自を知る権利は、今後さらに重視されるはずだ。
参考
- 「The NIST Elliptic Curves Seeds Bounty Has Been Claimed」, by words.filippo.io by FiloSottile — Lobsters, 2026-10-16T20:18:36.000Z (ARR)
- 元記事URL: https://words.filippo.io/seeds-solved/
よくある質問
- NIST楕円曲線とは何か
- NISTが2000年にFIPS 186-2で標準化した楕円曲線暗号用のパラメータ群である。P-192、P-224、P-256、P-384、P-521の5種類があり、TLSや電子署名など幅広い用途で使われている。パラメータの導出元となる種の生成方法が長年不明だった。
- drand48とは何か
- POSIX標準で定義された乱数生成器である。srand48()に初期値を与え、drand48で逐次乱数を得る。今回の解明では、当時のUNIXタイムスタンプを初期値として20バイトの種を生成していたことが判明した。
- この解明でバックドアの懸念は解消したのか
- 完全に解消したとは言えない。種の生成方法が時刻に基づく乱数だったことは確認されたが、文書化されていない選別基準が1つ残る。ただし生成過程が再現可能になったことは、信頼性を高める材料となる。
コメント