#dusk $DUSK @Dusk 2026年1月7号、Duskメインネットがローンチ。6年かけて規制下の金融のためのプライバシーに特化したLayer 1を作り、PLONKのゼロ知識証明を裏付けにしている。自分は当時推し通知を見て、パッと確認してスッと流した。
でも本当に落ち着かなかったのは4月末だった。その日DuskのDiscordで適当に見ていたら、誰かがOtterSecのレポートへのリンクを投げてきた。開けてみたら、背中が冷えた。
レポートによると、dusk-plonkの検証器に大穴がある—検証器が最終検証方程式で、証明者が渡してきた4つの選択子多項式の評価値をそのまま使っているのに、これらの評価値についてKZG展開による検証を一切していない。何がヤバいかというと、証明者はこの4つの値を、方程式を通せる任意の数に設定でき、検証器はそれを何も疑わず受け入れてしまう。すると攻撃者は、ゼロ知識証明をでっち上げることで、取引回路内のすべての制約をすり抜け、直接DUSKを鋳造できる。攻撃当時、Duskのプライバシーレイヤーによって守られていたのは、およそ6000万ドル規模だった。
半信半疑だったので、PLONKの論文を自分で調べ、GitHub上でDuskのソースコードも掘り返した。要するにこうだ:PLONKは回路を一つ一つのゲートに分解する。各ゲートには左入力、右入力、出力がある。各ゲートには1本ずつ制約が課され、PLONKは選択子値(たとえばq_M=1なら乗算ゲート、q_L=1なら加法項)を使って、あらゆるゲートタイプを1つの式に統一する。検証方程式は、その選択子が検証者の秘密鍵に含まれる信頼できるコミットメントと一致していることを確認しなければならない。ところがdusk-plonkはそもそもこのチェックをしていない。つまり門番が身分証を見ないのと同じで、「誰だ」と言えば、そのまま通ってしまう。
以前は、ゼロ知識証明は学術界で何度も叩き込まれているものだから、数学的に問題がないならエンジニアリングでも安全だと勝手に思っていた。けれど今回で腑に落ちたのは、全プライバシーチェーンが結局ブラックボックスで、外から論理の穴なんて探せないということだ。数学的な証明が解決しているのは「証明できるかどうか」「証明が正しく検証されているかどうか」であって、その間にある“抜け道”まで塞いでいるわけではない。しかもその隙間が、馬が走れるほど大きい。
さらにPorter Adamsによる以前の監査レポートも読み直したが、そこでは低危険度の問題が2つしか挙げられていない。こうした「1行のチェックを書かない」系の脆弱性は、そもそもカバーされていなかったようだ。
Duskの対応は意外と遅くはなく、2月14日に修正を提出している。NPEX上で数億ユーロという実資産が回っていて、方向性は自分は否定しない。ただ今後だれかがプライバシーチェーンについてまた俺に話を持ちかけるなら、最初の一言は絶対にこう聞く:あなたたちの検証コード、ちゃんと検証してるのか?
でも本当に落ち着かなかったのは4月末だった。その日DuskのDiscordで適当に見ていたら、誰かがOtterSecのレポートへのリンクを投げてきた。開けてみたら、背中が冷えた。
レポートによると、dusk-plonkの検証器に大穴がある—検証器が最終検証方程式で、証明者が渡してきた4つの選択子多項式の評価値をそのまま使っているのに、これらの評価値についてKZG展開による検証を一切していない。何がヤバいかというと、証明者はこの4つの値を、方程式を通せる任意の数に設定でき、検証器はそれを何も疑わず受け入れてしまう。すると攻撃者は、ゼロ知識証明をでっち上げることで、取引回路内のすべての制約をすり抜け、直接DUSKを鋳造できる。攻撃当時、Duskのプライバシーレイヤーによって守られていたのは、およそ6000万ドル規模だった。
半信半疑だったので、PLONKの論文を自分で調べ、GitHub上でDuskのソースコードも掘り返した。要するにこうだ:PLONKは回路を一つ一つのゲートに分解する。各ゲートには左入力、右入力、出力がある。各ゲートには1本ずつ制約が課され、PLONKは選択子値(たとえばq_M=1なら乗算ゲート、q_L=1なら加法項)を使って、あらゆるゲートタイプを1つの式に統一する。検証方程式は、その選択子が検証者の秘密鍵に含まれる信頼できるコミットメントと一致していることを確認しなければならない。ところがdusk-plonkはそもそもこのチェックをしていない。つまり門番が身分証を見ないのと同じで、「誰だ」と言えば、そのまま通ってしまう。
以前は、ゼロ知識証明は学術界で何度も叩き込まれているものだから、数学的に問題がないならエンジニアリングでも安全だと勝手に思っていた。けれど今回で腑に落ちたのは、全プライバシーチェーンが結局ブラックボックスで、外から論理の穴なんて探せないということだ。数学的な証明が解決しているのは「証明できるかどうか」「証明が正しく検証されているかどうか」であって、その間にある“抜け道”まで塞いでいるわけではない。しかもその隙間が、馬が走れるほど大きい。
さらにPorter Adamsによる以前の監査レポートも読み直したが、そこでは低危険度の問題が2つしか挙げられていない。こうした「1行のチェックを書かない」系の脆弱性は、そもそもカバーされていなかったようだ。
Duskの対応は意外と遅くはなく、2月14日に修正を提出している。NPEX上で数億ユーロという実資産が回っていて、方向性は自分は否定しない。ただ今後だれかがプライバシーチェーンについてまた俺に話を持ちかけるなら、最初の一言は絶対にこう聞く:あなたたちの検証コード、ちゃんと検証してるのか?
