Anthropicは、社内のClaude研究モデルが、NSA(米国家安全保障局)がNISTの著名な5つの楕円曲線のシードをどのように生成したかを、30分足らずで突き止めたと発表しました。暗号の由来をめぐる長年の謎が解けたことになります。
提供された10月16日付の報告によると、答えは秘密のパスフレーズではありませんでした。Unixタイムスタンプで初期化した、標準的なC言語の擬似乱数生成器だったのです。
今回の発見が対象とするのは公開されている曲線パラメータであり、秘密鍵や署名の秘密情報ではありません。Anthropicはこれを暗号の解読ではなく、歴史的な経緯の再構築だと説明しています。新たな攻撃手法はなく、運用中のシステムを変更する理由もないとしています。
NISTは2000年、ECDSAと推奨楕円曲線をデジタル署名標準FIPS 186-2に取り入れました。曲線の生成手順では、公開されたシードとSHA-1を使って曲線パラメータを導出します。そのため、導出過程は検証できる一方で、シードの出所は説明されていませんでした。
この出所の不明さから、NSAが曲線の選定に影響を与えた可能性があるのではないかという憶測が広がっていました。
2023年には、暗号研究者のFilippo Valsorda氏が主導する懸賞が行われ、5つの素数体曲線のシードが対象となりました。これらのシードは、NSAの数学者Jerry Solinas氏にまつわる、ユーモラスな英語のフレーズのハッシュではないかという説に基づいたものです。
Anthropicによると、Claudeはそうした説とは異なる結論に至りました。P-192、P-224、P-256、P-384、P-521の各曲線は、48ビットの内部状態を持つ旧式の線形合同法生成器lrand48に由来していたのです。
Claudeはフレーズを推測するのではなく、1990年代のC言語ライブラリに典型的なソフトウェアのパターンを調べました。公開されているシードをスキャンして隣り合う出力断片の関係を探り、生成器と出力スライスの組み合わせ34通りを検証しました。
4つのバイナリ曲線のシードには、特徴的なパターンが見られました。5つの32ビットワードのいずれも、最上位ビットがゼロだったのです。これはlrand48の31ビット出力と一致します。Claudeは、隠れた17ビットの内部状態を総当たりで列挙し、続く出力を照合して、内部状態の候補を復元しました。
素数体曲線のシードは、生成器を1回呼び出すごとに得られる情報が少なくなります。そこでClaudeは、Lenstra–Lenstra–Lovász格子基底簡約アルゴリズムを使い、切り詰められた出力から状態を復元しました。NISTの5つのシードと、ANSI X9.62の例示用シード5つは、いずれも共通の構成に一致しました。lrand48() >> 23から得たバイトを集めるという方式です。
生成器を逆方向に実行すると、1997年5月から1998年4月までのタイムスタンプに対応する初期化状態が判明しました。P-256の場合、公開されているシードは、1997年8月16日に初期化した系列の1,842番目の候補として現れました。
ClaudeはFreeLIP算術パッケージの生成器を用いて、P-192とANSIの例示用曲線5つについて、ベースポイントの生成も再現しました。ただし、ほかのいくつかのベースポイントとB-163のシードについては、依然として説明がついていません。
研究者らは、適切な曲線を生み出していたとみられるにもかかわらず、スキップされた候補があることも確認しました。元の選定基準は未解明のままです。
Anthropicは、再現可能なタイムスタンプベースの構成が示されたことで、意図的な操作があったのではという懸念は和らぐと主張しています。ただし、過去のあらゆる判断が裏付けられたわけではありません。
同社は、懸賞金36,864ドルをInternet Security Research Groupに慈善目的で寄付するとしています。実質的な成果は、公開パラメータの透明性が高まったことです。暗号の秘密情報が復元されたわけでも、ECDSA自体の弱点が示されたわけでもありません。
16,000以上のSOCチームがANY.RUNを活用し、脅威調査を効率化して手作業の負担を減らしています。自社チームでの利用を検討する
翻訳元: https://cyberpress.org/anthropics-claude-ai-solves-25-year-old-nsa/