Midnight Foundation の CTO、セバスチャン・ギユモ (Sebastien Guillemot) 氏は、シールドされた資産を守る暗号技術を解説する連載の第 2 回を 11 月 5 日付で Midnight の公式ブログに公開し、Midnight は 11 月 14 日未明 (日本時間) に X でこれを紹介しました。ノート・コミットメント、ゼロ知識証明、ナリファイア、ビューイングキーの 4 つの部品で、残高や持ち主を外から見えなくしたまま、二重払いを防ぎ、受け取りを確かめられるようにする仕組みです。
9 月の第 1 回は、透明な台帳がフィッシング (なりすまし詐欺) の標的探しに使われる問題を扱いました。第 2 回は、その守りがどんな部品でできているかの説明です。暗号の専門家でなくても追えるように、4 つの部品を順に噛み砕きます。
透明な台帳は、攻撃者の名簿になる
記事は冒頭で「プライバシーは小さな関心事と見られがちだが、ブロックチェーンでは、あるいはどんなネットワークでも、プライバシーはセキュリティそのものだ」と書きます。残高や送金の履歴が誰にでも見える台帳では、大口の持ち主を探し出す「ホエールウォッチング」や、その人に合わせたフィッシングがやりやすくなるためです。
第 1 回では、定期的な取引所からの出金のような習慣まで見えると、攻撃者がそのタイミングに合わせて偽のメールを送れることを示していました。SIPO は 「Midnight CTO、シールド資産がフィッシングを阻む仕組みを説明」 で第 1 回を取り上げています。
ハッシュだけでは足りない理由と、ノート・コミットメント
データを一方向に変換するハッシュは、元に戻せないので隠すのに向いているように見えます。ところが、残高のように取りうる値の幅が狭いと、攻撃者は 1 から 1,000 までのハッシュを先に全部計算しておき、台帳の値と照らし合わせるだけで中身を当てられます。記事はこれを総当たり (ブルートフォース) の弱点として説明します。
Midnight は、ハッシュにかける前に大きな乱数の秘密値を足します。さらに、利用者の合計残高ではなく、個々の値を表す「ノート」という単位を使い、ノートの値、トークンの種類、持ち主の鍵、秘密値をまとめてハッシュにかけます。この結果がノート・コミットメントです。秘密値があるので、同じ 500 トークンでも無数のコミットメントになり、外からはどれもでたらめな文字列に見えます。記事はこれを、残高と持ち主を公開せずに結び付ける「デジタルの封印」と呼んでいます。
使うときは証明だけを出し、二重払いはナリファイアで止める
ノートを使うときは、秘密値と自分の支払い用の鍵を使って、ゼロ知識証明を作ります。この証明は、台帳に正しいコミットメントを持っていることをネットワークに示しますが、それがどのコミットメントで、残高がいくらで、誰のものかは明かしません。
隠したままだと、同じノートを二度使う不正をどう防ぐのかが問題になります。そこで使うのがナリファイアです。コミットメントごとに対応するナリファイアがあり、ノートを使うとそのナリファイアが「使用済み」の一覧としてチェーンに記録されます。ネットワークは、同じナリファイアが過去に出ていないかだけを確かめます。同じコミットメントからは必ず同じナリファイアが出ますが、ナリファイアから元のコミットメントをたどることはできません。
記事は透明なチェーンとの違いも挙げます。透明なチェーンでは、支払いが過去のどの残高や未使用の出力を使ったかを公に指し示すので、シールドされた台帳で同じことをすると、過去の入金といまの出金が結び付いてしまいます。ナリファイアは、その結び付きを切るための部品です。
ビューイングキーは「見る権利」だけを渡す
最後の部品がビューイングキーです。受け取った支払いを見る権利と、資産を使う権利を分けるもので、ビューイングキーは届いたノート・コミットメントを復号できますが、出ていった支払いや合計の残高は見せず、取引に署名して資産を動かすこともできません。
記事はここで、利用者向けの注意を 2 つ挙げています。1 つは、信頼できる DApp にだけ接続すること。DApp はウォレットに残高の情報を求められるので、悪意のある DApp は情報を漏らしうるためです。もう 1 つは、ビューイングキーをパスワードのように扱うこと。外部の監査やスキャンのサービスに渡すと、その相手は受け取りの支払いをずっと見られるようになり、標的にされるおそれがあります。
なお、Midnight の公式ページは、NIGHT トークンそのものを「公開され透明な (シールドされない)」トークンと説明しています。今回の 4 つの部品は、Midnight の上でシールドして扱う資産やデータを守るための仕組みの話です。
手元で確かめられる一点
記事は結びで、これらの守りを「実際には目に見えないが、効果は計り知れない」と表現しています。読者が自分で確かめられる次の一点は、Midnight 対応のウォレットで DApp に接続するときに、どの情報の開示を求められているかを表示で読むことです。連載の次の回は Midnight の公式ブログに掲載されるので、そこで部品の説明がどの方向へ進むかを見ていきます。
ことば
- ノート・コミットメント — 値、トークンの種類、持ち主の鍵、乱数の秘密値をまとめてハッシュにかけたもの。中身を明かさずに、残高と持ち主を台帳に結び付けます。
- ナリファイア — ノートを使ったときに公開される印。元のノートを明かさないまま、同じノートが二度使われていないかをネットワークが確かめられます。
- ビューイングキー — 受け取った支払いだけを見られる鍵。資産は動かせませんが、渡した相手には受け取りの履歴が見え続けるので、扱いはパスワードと同じ慎重さが要ります。
一次ソース / 関連リンク
- Midnight 公式 X の投稿 (連載第 2 回の紹介)
https://x.com/MidnightNtwrk/status/2121305595395338568
Midnight 公式ブログ「How shielded assets and privacy elevate on-chain security」(第 2 回)(midnight.network)
Midnight 公式ブログ「How shielded assets thwart phishing attacks」(第 1 回)(midnight.network)
Midnight 公式「NIGHT」(midnight.network)
