25年にわたって議論されてきたNIST楕円曲線の「バックドアシード」について、10月16日、Anthropicが答えを示した。P-192からP-521までの各曲線のシードは、誰かがパスワードのハッシュを隠したものではなく、90年代のCライブラリにあったlrand48乱数生成器が出力したものだった。初期値は当時のUnixタイムスタンプだ。P-256のシードは、1997年8月16日午前9時52分34秒(北京時間)に起動した生成器の、1842番目の候補に対応する。社内のClaudeモデルが30分足らずで見つけ出し、原作者が公開したスクリプトでも一字一句違わず再現できる。賞金の36,864ドルは、チームがLet's Encryptの背後にある非営利団体に寄付した。
陰謀論への最後の答えは「誰かが時計を見ただけ」だった。いかにもエンジニアらしい話だと思う。
エンジニアリングの観点から、いくつか。
1. ビットコインとイーサリアムが使っているのはsecp256k1で、パラメータはa=0、b=7。そもそもシードというものがなく、今回の件はあなたの暗号資産とは無関係だ。P-256はパスキーやスマートフォンのセキュリティチップで使われている。パスキーで署名するスマートウォレットにとっては、ひとまず安心材料になったと言える。
2. まだ説明されていない部分も触れておこう。もう1つのシードと、4つの曲線の基点の由来は説明されていない。当時の手順では、一見条件を満たしている候補がいくつか飛ばされてもいた。意図的に弱体化されたという証拠は、現時点ではない。
3. 一般の投資家が本当に覚えておくべきなのは、むしろ逆の話だ。公開パラメータの乱数源にタイムスタンプを使うのは問題ない。どうせ公開情報なのだから、後から説明できればいい。秘密鍵の乱数源にタイムスタンプを使うのは大惨事だ。2023年のMilk Sad事件では、あるオープンソースのコマンドラインウォレットツールがシステム時刻を乱数生成器に渡してニーモニックを生成していた。攻撃者は該当する数年間の時刻を片っ端から試し、報告によると約90万ドルが盗まれた。
私自身はこうしている。ニーモニックはハードウェアウォレットか信頼できるウォレットにローカルで生成させ、ウェブ上の「ニーモニック生成器」は使わない。「意味のある」単語の組み合わせを自分で考えることもしない。数年前にマイナーなツールや古いバージョンで作ったウォレットがあるなら、そのバージョンに乱数の脆弱性に関する告知がないか確認する。あれば新しいウォレットを作り、資産を移す。
陰謀論への最後の答えは「誰かが時計を見ただけ」だった。いかにもエンジニアらしい話だと思う。
エンジニアリングの観点から、いくつか。
1. ビットコインとイーサリアムが使っているのはsecp256k1で、パラメータはa=0、b=7。そもそもシードというものがなく、今回の件はあなたの暗号資産とは無関係だ。P-256はパスキーやスマートフォンのセキュリティチップで使われている。パスキーで署名するスマートウォレットにとっては、ひとまず安心材料になったと言える。
2. まだ説明されていない部分も触れておこう。もう1つのシードと、4つの曲線の基点の由来は説明されていない。当時の手順では、一見条件を満たしている候補がいくつか飛ばされてもいた。意図的に弱体化されたという証拠は、現時点ではない。
3. 一般の投資家が本当に覚えておくべきなのは、むしろ逆の話だ。公開パラメータの乱数源にタイムスタンプを使うのは問題ない。どうせ公開情報なのだから、後から説明できればいい。秘密鍵の乱数源にタイムスタンプを使うのは大惨事だ。2023年のMilk Sad事件では、あるオープンソースのコマンドラインウォレットツールがシステム時刻を乱数生成器に渡してニーモニックを生成していた。攻撃者は該当する数年間の時刻を片っ端から試し、報告によると約90万ドルが盗まれた。
私自身はこうしている。ニーモニックはハードウェアウォレットか信頼できるウォレットにローカルで生成させ、ウェブ上の「ニーモニック生成器」は使わない。「意味のある」単語の組み合わせを自分で考えることもしない。数年前にマイナーなツールや古いバージョンで作ったウォレットがあるなら、そのバージョンに乱数の脆弱性に関する告知がないか確認する。あれば新しいウォレットを作り、資産を移す。