米国立標準技術研究所(NIST)が2000年に標準化したECDSA関連の楕円曲線をめぐり、米国家安全保障局(NSA)が提供した「種」の由来が約25年にわたり不明のままでした。AnthropicのAI「Claude」が、その生成方法の手掛かりを30分未満で見つけたと伝えられています。暗号を破った話ではなく、設定値の来歴が明らかになった事例です。
暗号を破ったのではなく、来歴を解いた
AIが暗号の謎を解いた、と聞くと、鍵を割ったような派手な場面を想像しがちです。しかし今回の中身は少し違います。解かれたのは、暗号の安全性そのものではなく、「この数字はどこから来たのか」という来歴の問題でした。
ニュースとしての面白さは、むしろここにあります。計算力で力任せに突破したのではなく、データに残った小さな偏りを手掛かりに、仮説を絞り込んでいった。そんなAIの使い方が、約25年越しの宿題に答えを出した形です。
謎の種が招いた疑念
ECDSAは、楕円曲線を使ったデジタル署名の仕組みとして広く使われている標準です。この標準で使う曲線のパラメーターを作る際の出発点になる値が「種」で、NSAはこれを提供していました。ところが、その値がどのように作られたのかについての説明はありませんでした。
料理にたとえるなら、レシピのない秘伝のタレのようなものです。味は確かでも、何が入っているか分からなければ、何か仕込まれているのではと考える人が出てきます。由来の見えない設定値は、意図的なバックドア(裏口)が隠されているのではないかという疑念を生み、懸賞金がかかったり、有志による調査が行われたりしてきました。
NSAの元職員で故人のジェリー・ソリナス氏は、種はユーモラスな文句をハッシュ化(一定の規則で別の値に変換)したものではないかと示唆していましたが、これは違っていました。
31ビットの偏りが手掛かりに
Claudeが注目したのは、一部の種で上位ビットが系統的にゼロになっているというパターンです。種の生成には、C言語の簡易的な乱数生成器「lrand48」が使われていました。初期値には、1997年5月から1998年4月の間のUnix時刻(1970年1月1日からの経過秒数)が使われていたといいます。
決め手になったのは、lrand48の出力が31ビットにとどまるという性質です。32桁分の入れ物に31桁分しか値が入らなければ、最上位の桁がゼロに偏ります。この偏りを不自然な模様ではなく、特定の乱数生成器の指紋として読み解いたわけです。
30分未満という速さも目を引きます。ただ、これは作業にかかった時間の目安であり、前提となる長年の調査や議論の蓄積を差し引いて語るべきではないでしょう。人間が何年も見落としていた手掛かりに、先入観なしで目を向けられたことが、AIの強みだったと私は見ています。
由来の解明は安全性の証明ではない
Anthropicは、この説明によって意図的なバックドアの可能性は低くなると述べたと伝えられています。ただし、「低くなる」ことと「存在しないと証明された」ことは別物です。種の生成方法を特定できたのは重要な前進ですが、それだけで曲線全体の安全性が保証されたわけではありません。
暗号の信頼は、強度の高さだけでなく、設定値の由来を第三者が検証できるかどうかにも支えられています。今回の件は、「説明できない数字」が長年にわたって疑念の種になり続けることを、あらためて示しました。
なお、この謎にかけられていた懸賞金3万6864ドルは、Anthropicが非営利団体のInternet Security Research Group(ISRG)へ寄付するとされています。


コメント