Anthropic(アンスロピック)、NIST P-256など楕円曲線のseedの出どころをClaude(クロード)が30分未満で解明と発表ハッシュではなくlrand48とUnix時刻
Anthropicは2026年10月16日、NIST P-192・P-224・P-256・P-384・P-521のseedは文章のハッシュではなく、Cライブラリのlrand48をUnix時刻で初期化した出力だったとClaudeが突き止めたと発表した。同社は、暗号の破れや曲線の弱点ではなく、むしろバックドアの可能性はずっと低くなったと説明している。

Anthropic(アンスロピック)は2026年10月16日(米国時間)、長年の謎だったNISTの楕円曲線標準のseed(シード、曲線の係数を決める入力値)の出どころを、研究用の社内モデルのClaude(クロード)が30分未満で突き止めたと公式サイトで発表した。同社の説明では、P-192・P-224・P-256・P-384・P-521のseedは文章をハッシュしたものではなく、Cライブラリの乱数生成器 lrand48 をUnix時刻で初期化した出力だった。ページの公開時刻は日本時間10月17日午前2時台にあたる。
3行まとめ
- Anthropicは、NIST P-192・P-224・P-256・P-384・P-521のseedが
lrand48をUnix時刻(1997年5月〜1998年4月)で初期化した出力だったとClaudeが30分未満で解明したと発表- 同社は「暗号の破れや新しい攻撃ではない。バックドアはより考えにくくなった」と説明し、読者がやることはないと明記
- 2進体曲線B-163のseedと、P-224・P-256・P-384・P-521の基点の選ばれ方は未解明。懸賞金36,864ドルは ISRG に寄付される
本記事の内容は、日本時間10月17日3時台に公式ページで確認したものです。
何がわかったのか
背景から整理する。ECDSAはNISTが2000年にFIPS 186-2で採用した署名方式で、標準の楕円曲線が複数載っている。素体と2進体の曲線には「seed」が付いていて、そのハッシュ値から曲線の係数bが決まる。Anthropicによると、seedはNSAから説明なしで提供されたもので、たとえばP-256のseedは C49D3608 86E70493 6A6678E1 139D26B7 819F7E90 だった。
これまで有力だった説明は、NSAの Jerry Solinas(ジェリー・ソリナス)氏が冗談めいた文句をハッシュして作った、というものだ。Anthropicの発表は、Solinas氏が2015年に書いたとされる次の文を引いている。
"I believe there was a counter rather than multiple hashing, but I don't know details. The message was along the lines of 'Give Bob and Jerry a raise' or 'Bob and Jerry rule' or something like that." (カウンターを使い、何度もハッシュしたわけではなかったと思うが、詳細はわからない。文面は「Give Bob and Jerry a raise」か「Bob and Jerry rule」のようなものだった)
Solinas氏は2023年に亡くなっており、当時の同僚からも返答は得られなかった、とAnthropicは書いている。
Anthropicの説明では、この「文章のハッシュ」という手がかりは間違いだった。2026年10月、社員の1人が、手がかりを教えずに社内の研究用モデルへ「seedがどう作られたか突き止められるか」と尋ねたところ、Claudeは30分未満でP-192・P-224・P-256・P-384・P-521のseedの由来を見つけたという。seedはどのハッシュの出力でもなく、lrand48 が出した値だった。
仕組みは次のとおりだと同社は説明している。Unix時刻 t で乱数生成器を初期化し、1回につき20バイトを引いて候補seedとする。最初の20バイトが候補1、次の20バイトが候補2、というふうに進め、曲線として使える候補が出るまで繰り返す。P-256は1842回目の候補が標準のseedになった。
公式ページが載せる、素体の曲線の初期化時刻と回数は次のとおり(ページのコードの値。時刻はコード内でUTCとして扱われている)。
| 曲線 | 初期化時刻 | 候補の番号 |
|---|---|---|
| P-192 | 1997-05-18 14:45:34 | 139 |
| P-521 | 1997-08-08 01:12:04 | 1136 |
| P-256 | 1997-08-16 01:52:34 | 1842 |
| P-384 | 1997-08-30 14:50:08 | 2688 |
| P-224 | 1998-04-03 12:52:07 | 7026 |
ほかに、ANSI X9.62の例の曲線 prime192v2・prime192v3・prime239v1〜v3 も同じ方式だったと書かれている。
どうやって見つけたのか
Anthropicの記述によると、Claudeは「ソフトウェアはどう動いていたはずか」を推測する方向に切り替えた。1990年代のCライブラリに付いていた乱数生成器は弱く、出力から種類を見分けられるはず、という考えだ。
- Claudeは各seedを1ビットずつずらしながら、隣り合う塊が1990年代風の生成器の連続した出力かを調べるスキャナを書いた。調べた組み合わせは34通り
- 一部のseedで上位ビットがすべて0になる偏りに気づいた。5つの32ビット語に分けると、10個のseedのうち4個で20語すべての最上位ビットが0で、偶然ならその確率は1/5810と同社は書いている。
lrand48が48ビット状態の上位31ビットだけを返す性質の痕跡だった - 素体の曲線は出力の一部のビットしか残っておらず、状態の復元は格子問題(LLL基底簡約)として解いた。5つのNIST素体曲線と、ANSI X9.62の5つのseedは、いずれも
lrand48() >> 23の形だった - この生成器は後ろ向きにも同じように進められる。状態を戻していくと
srand48で初期化した形(下位16ビットが0x330E)に達し、10個の素体seedすべてでその値は1997年5月〜1998年4月のUnix時刻に当たった
2進体の4つ(B-233・B-283・B-409・B-571)は、初期化値が1984年2月に読めた。ただし時刻を2倍にすると1998年4月17日、P-224の実行の2週間後になるため、「プログラムが時計を半分にしていたのかもしれない」とAnthropicは書いている。ページのコードにも「その読みが正しければ」の注記が付いている。
あわせて同社は、基点(すべての公開鍵の元になる固定点G)の一部の由来も見つけたと発表した。1997年5月の6曲線(P-192とANSI X9.62の例5本)の基点は、Arjen Lenstra氏のFreeLIPという多倍長整数パッケージの乱数生成器から作られていたという。同社が載せたコードの出力例では、6曲線のxが公開値と一致したと表示されている。
暗号は危なくなったのか
Anthropicの見解は次のとおり。
This is not a cryptographic break, new attack, or weakness in the ECDSA curves. In fact, this makes us more confident the curves were chosen without any backdoors or intentional weaknesses. (これは暗号の破れでも、新しい攻撃でも、ECDSA曲線の弱点でもない。むしろ、曲線がバックドアや意図的な弱点なしに選ばれたという確信が強まった)
理由として同社は、seedが「時計で初期化した一般的な擬似乱数生成器」で作られていて、誰でも再現できる点を挙げる。発表の冒頭では「これは楽しい最終章であり、何かをする必要も、やり方を変える必要もない。大半の研究者は元からこの曲線を信頼していた」とも書いている。同社の説明どおりなら、利用者側の対応は求められていない。
懸賞金の経緯も整理しておく。取得できた Filippo Valsorda(フィリッポ・ヴァルソルダ)氏の2023年10月5日付の告知ページには、NISTの5つの素体曲線のseedの元になった入力(ハッシュ前の文)を突き止めた人に8,192ドルから引き上げた12,288ドルを払い、慈善団体への寄付を選ぶと3倍の36,864ドルにする、と書かれている。Anthropicは今回「seedを見つけた賞金36,864ドルは Internet Security Research Group に寄付する」と書いた。ただし、この賞金が支払われたかどうかを主催側が確認した記載は、今回取得したページには見当たらなかった。
前の説明と何が違うのか
Stephen A. Weis氏の2023年9月のページ(2024年8月に追記あり)は、Solinas氏が提供者だったこと、文章のハッシュで作ったという伝聞、文面や手順を覚えていないというSolinas氏のメールを集めていた。そのうえで「どう作られたかはわからないし、文書か当時の関係者が見つからない限りわからないだろう」と書いている。
今回のAnthropicの発表はその前提を変える。ハッシュではなく乱数生成器の出力だというのが同社の主張で、公式ページの再現コードがその根拠として付いている。ただし、Solinas氏の言う「ハッシュした」との食い違いについて、発表は「手がかりは間違いだった」と述べるにとどまり、記憶違いなのか別の工程の話なのかには踏み込んでいない。
筆者が確認できたこと
日本時間10月17日3時48分に3つのページを取得して読んだ。P-256のseed C49D3608…819F7E90 は、Anthropic、Valsorda氏、Weis氏の3ページで同じ文字列だった。Anthropicのページには再現用のPythonコードが2本付いているが、本記事のために実行はしていない。したがって、「seedが再現できた」という点はAnthropicの出力表とコメントを読んだ範囲の話で、筆者が自分で再現して確かめたものではない。
また、取得した公式ページの記載は英語だった(日本語版の有無は確認していない)。
未解明のことと、読むときの注意
Anthropic自身が「未解明」と書いている点が複数ある。
- B-163のseed: 2進体の5つ目のseedはClaudeが試した方法のどれにも合わず、説明がついていない
- 4つの基点: P-224・P-256・P-384・P-521の基点は、見つかった手順に合わない。NISTの2進体曲線も同様
- 飛ばされた候補: P-256では、公表seedは候補1842番だが、同じ実行の876番も素数位数の曲線を作れた。P-224の実行は3本、ANSI X9.62の例の2回の実行は計7本を飛ばしている。基準や、意図しない結果だったのかはわからないという。同社は、飛ばした数が少ないので弱い曲線を選んだとは考えにくい、としている
- タイムスタンプを探した可能性: 同社は、特定の性質を狙ってタイムスタンプを探索した可能性を「理屈の上では排除できない」としつつ、それなら無害な生成の証拠として時刻を開示するはずだと書く。「実行が何回あったかは数字からはわからない」とも書いている
また、この記事の事実は、Anthropic自身の発表とそのコードが中心だ。今回取得したページには、NIST・NSAや第三者の研究者による検証の記載はなかった。ページにClaudeの「内部の思考」として載っている記録も、同社が掲載したもので、筆者が独自に確かめたものではない。研究者名は、同社がこの研究を行ったメンバーとしてJohn Wood、Henry de Valence、Ava Howell、Zack Voase、Lucy Sweet、Amir Omidi、Paul Crowley、Iain McGinniss、Nicholas Carlini、Steve Weisの10人を挙げている。
公式ページの関連コンテンツ欄には、Claudeに量子回路を設計させた研究も並んでいる。関連記事は Anthropic、Claudeに8種の量子回路を設計させ公開済みの最良設計を上回ったと発表 にまとめた。
参照したページと確認時刻
- Claude reveals ECDSA curve origins(Anthropic公式、2026年10月16日)
- Announcing the $12k NIST Elliptic Curves Seeds Bounty(Filippo Valsorda、2023年10月5日)
- How were the NIST ECDSA curve parameters generated?(Stephen A. Weis、2023年9月・2024年8月追記)
確認時刻は日本時間2026年10月17日3時48分台です。本記事は続報があり次第更新します。
Claudeの最近の変更
- 10月8日提供開始:Docs・Slides・Designがベータ終了、全プランに
- 10月8日廃止・終了:単体版のClaude Designは12月14日まで
- 10月8日新機能:DashboardsとMotionがベータで登場
この記事でよく聞かれること
- NIST P-256などの楕円曲線のseedは、結局どうやって作られていたのですか
- Anthropicの発表によると、P-192・P-224・P-256・P-384・P-521のseedはハッシュの出力ではなく、Cライブラリの乱数生成器lrand48をUnix時刻(srand48に渡す値)で初期化し、20バイトずつ候補を引いたものでした。P-256は1842回目の候補が標準のseedになったと説明されています。
- 今回の発見でECDSAやP-256は危険になりましたか
- Anthropicは「暗号の破れでも新しい攻撃でも、曲線の弱点でもない」と書いています。むしろ、seedが時計で初期化した一般的な乱数生成器で作られていたため、意図的な弱点やバックドアはより考えにくくなったと同社は説明しています。同社は読者がやるべきことは何もないとも書いています。
- Claudeが解明できなかったことは何ですか
- Anthropicの発表では、NISTの2進体曲線のうちB-163のseedは未解明です。また、P-224・P-256・P-384・P-521の基点(ベースポイント)の選ばれ方も説明できていません。曲線を作れたはずの候補の一部が飛ばされた理由も不明と書かれています。
出典・参照資料
大きいニュースはYouTubeでも解説しています。Xでは新着記事をお知らせしています。
コメント
まだコメントはありません。最初のコメントを書いてみませんか?
AIについて聞きたいことはありますか?
質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。
質問箱を見る →