zkFMI
English

安全性と信頼境界

公開検証可能性と頑健性は別の軸である。このスタックは公開検証可能である。勝った見積が最小値だったことも、決済で価値が保存されたことも、誰でも確かめられる。一方、配備中のエンジンは説明責任の段階の第 1 段にある。逸脱は検出され、プロトコルは止まる。この両方を言うのが、このページの目的である。

更新: 2026-09-12。非 PQC の note は現在 Triptych 系の所属証明と加法準同型 commitment を使う。資産 ID 秘匿の native 経路を実行し、新規ネットワークのハッシュ・符号ベースの PQC 証明研究も進めている。実用 PQC note と全市場経路の完成は別の未解決課題である。以下の過去の測定は元の方式と環境に属する。 note の実行証跡 · PQC の現在地

出典: zkpi/ACCOUNTABILITY.md, qomm/BINDING.md, oclob/docs/THREAT_MODEL.md, defmi/ZKPI_WIRE.md, defmi/REVIEW.md

攻撃者

  • 注文を読み、それを見て自分の注文を前後に並べる運営者や順序付けノード。
  • share(秘密分散の分け前)を盗む、誤った計算をする、結果が不利なときだけ止まる MPC ノード。
  • 同じ予約を二度使う、結果を見てから決済を拒む、または過去の通信を再送する参加者。
  • DeKYX の資格を別の市場や別の期間へ持ち込む保有者。
  • DeFMI に古い root(状態の要約値)、別の市場の資産、改変した指図を送る提出者。
  • 公開板、約定、通信量、タイミングを見ている外部の観測者。
  • 離散対数を破れるだけ長く commitment(値を固定して隠した値)を持ち続ける者。

委員会のパラメータ

MPC ノード
7 台、malicious Shamir、honest majority(正直な多数派)
プライバシー閾値
T = 2。3 台が結託すれば復元できる
復元
share 3 個
liveness(止まらずに進むこと。配備中のエンジン)
7 台全部の応答が必要。「3 台で復元できる」と「3 台で続行できる」は別の命題である
指図の署名
ristretto255 上の 3-of-7 FROST
OCLOB の到着順
5-of-7。二重投票者は最大 2 台。どの二つの 5 台集合も、正直なノードを少なくとも 1 台共有する
検証者
受入試験では AvalancheGo プロセス 5 台。提出された全証明を各自が独立に検証する

説明責任の段階

7 台のうち 1 台が逸脱したとする。外の世界は最終的に何を知り得るか。

得られるもの必要なもの
1. abort(中断)付き安全性出力は正しい。さもなければ出力がないdishonest majority(不正な多数派)でもよい
2. 責任者を特定できる abort…加えて、正直な参加者は誰の責任かを知るdishonest majority でもよい
3. 公開で責任者を特定できる abort…加えて、transcript(通信の記録)を読む誰もがそれを知る掲示板(bulletin board)
4. 公開の説明責任…加えて、審判者が transcript だけから判定を下せる掲示板
5. 頑健性abort が起きない。正直な参加者は何があっても出力を得るhonest majority

各仕組みがどの段にあるかを、分けて書く。リポジトリはかつて、これらをすべて「attribution(責任の帰属)」と呼んでいた。

  • 配られた share: 第 4 段、ただし境界の部分だけ。 メイカーは配る share ごとに署名する。だから、後で別の share を主張するノードがいれば、そうしたことを誰でも示せる。範囲は 1 メッセージであり、プロトコル全体ではない。
  • ノードがエンジンに入れる値: 通信路の上では第 0 段。いまは回路の中で検査できる。 参加者ごとの入力検査は、配られた値と違う値を入れたノードの名を挙げる。追加のラウンドは 1 つ。以前の版では、検査の係数をノードが先に読める commitment から導いていた。証明を書く途中で、ノードが検査に引っかからない誤差を選べることが分かった。いまはチャレンジを入力段階の後に引く。判定は修復ではない。
  • MPC 本体: 第 1 段。 MP-SPDZ の malicious 安全性が保証するのは、逸脱が少なくとも検出されることである。検出であって、責任の特定でも、止まらないことでもない。
  • 頑健な復元: 第 5 段。9 ノードで実装し、実行した。 n ≥ 4t+1 では share が Reed–Solomon 符号をなし、次数 2t の積を直接訂正できる。だから Berlekamp–Welch 復号器が、分割処理、チェックポイント、参加者の除外の代わりになる。2 台の機械、2 つの独立したビルドで計測した。嘘つきが 1 台でも 2 台でも、止まらずに正しい答えを出し、犯人の名を挙げた。費用は乗算 1 回・参加者 1 人あたり体の元 18.2 個で、配備中のエンジンは 64.2 個を使う。頑健でないもの: 前処理、二重シェア分散、出力の開示、入力段階。重要なのは入力段階であり、それには参加する機関があと 2 つ要る。
  • quote proof(見積が正しく計算されたことの証明)は別の軸にある。 これが失敗すれば、答えが誤っていたことは分かる。どのノードが誤らせたかは分からず、答えも手元に残らない。

論証の全体は説明責任のページにある。エンジン内の Reed–Solomon 復号器、9 ノードでの第 5 段、dishonest majority に耐える費用、そして不正をする側としてのテイカー。

検証者が検証するもの、しないもの

本体(製品版)のトランザクションには、提出された証拠が丸ごと載っている。各 Avalanche 検証者は独立に次を検査し、通れば状態遷移を原子的に適用する。3-of-7 の Ed25519 承認、型付きの zkPI、完全な quote proof、共同で組み立てた 2 本の範囲証明、テイカーの価格限度、資産の連結、DvP の関係式、チェーンとレールのドメイン、期限、連番、直前の状態 root、nullifier(二重使用を防ぐ使用済み印)。

検証者は、非公開の MP-SPDZ の transcript を再実行しない。ノードの内部で share から証明へ渡す部分も証明しない。ここが、委員会への信頼と liveness の、残っている境界である。これを取り除くには、非公開計算全体の証明と、別途のコンセンサス性能計測が要る。wire 仕様にこう書いてあるのは、「検証者は提出されたものをすべて検証する」を「検証者はすべてを検証する」と読み違える読者が出ないようにするためである。

匿名性は他人の通信量で決まる

2 つの計測が、別の側から同じことを言っている。周囲に他の決済がない note ring(おとりを含めた候補集合)では、ring の大きさがどうであれ、使われた note(受取人を隠した残高の単位)を確実に名指しできる。使われるのは最新の note であり、それより新しいおとりは存在し得ないからである。adaptor signature による PvP も、進行中の swap が 1 件だけなら、相手の脚を確実に名指しできる。どちらの構成も、自分を他人の通信の中に隠すものであり、通信がなければ何もしない。違うのは交換比率である。つまり、一定量の疑いを買うのにどれだけの通信量が要るかが違う。新しさを揃えたおとり規則は、決済 16 件分の通信量で名目の 1/R に達する。市場ごとの handle(市場ごとに別の識別名)は、進行中の swap が k 件で 1/k に達する。なお PvP の観測者にはタイミング情報を与えていない。prepare の到着を見ている現実の観測者は、これより有利である。

何度も開かれる commitment

メイカーの値付け規則の commitment は、一度開いて終わりではない。規則が生きている間ずっと置かれ、見積のたびに開かれる。しかも仕組みはオークションである。Rivinius らは、計算量的な束縛は commitment の寿命とともに弱まると指摘する。いつか離散対数を破った者は、他の当事者の入力を検出されずにずらせる。「オークションでは、これは他者の入札を下げるのに使い得る」。これはまさにこのスタックの形である。だからこれは、ここに限って耐量子 commitment を求める、文献上もっとも強い論拠である。量子計算機は要らず、時間さえあればよい。

計測した代替案は二つある。VOLE-in-the-Head commitment はランダムオラクルだけに依拠するが、一度しか開けない(最初の開示後は Δ が公開になる)。RFQ では係数が、まだ届いていない依頼に依存するので、開示を先にまとめて済ませることもできない。格子(BDLOP)commitment は何度でも開けるが、1 回あたり数キロバイトかかる。未解決の問いは、先行研究のページに書いたとおり、F_p 上でランダムオラクルだけに依拠し、何度も開ける commitment である。

この問いのうち、署名と鍵交換の半分は移行が進んでいる。8 リポジトリすべてで、ハイブリッドの Ed25519 + ML-DSA-65 と X25519 + ML-KEM-768 を採用した。1 台のホストで受入済みで、2026-09-07 に 8 リポジトリすべての main に統合した。状況、サイズ、古典のまま残すものは耐量子化のページにある。

意図的に信頼境界へ入れないもの

TEE(信頼実行環境)を入れない。CPU 製造者の attestation 鍵、エンクレーブの実装、マイクロアーキテクチャのサイドチャネルを、信頼境界に加えない。OCLOB の脅威モデルは、Tesseract 型の設計に対してこれを明示している。スタック全体で同じ立場をとる。

防御しないもの

  • 3 台以上の MPC ノードが結託して秘密を復元すること。
  • 侵害された参加者の端末。
  • 公開の価格帯別の板からの推測。参加者が 1 人しかいない価格帯では、その参加者の数量が差分から漏れる。
  • 公表された約定からの推測。大口注文の存在は推測され得る。
  • ネットワーク層のメタデータ。IP アドレス、接続時刻、再送間隔、パケット数。匿名化ネットワークは含めていない。固定周期と中継ホップが隠すのは、あるスロットが本物だったかどうかである。誰が接続しているかは隠さない。
  • 相場操縦、見せ玉、市場外での価格操作。暗号はこれらを裁定しない。
  • 全ノードの停止や分断のもとでの liveness の保証。設計は fail closed(異常時は止まる側に倒す)である。平文への切り替えはなく、依頼は暗号化した永続キューで待つ。
  • 送金者が知る送金内容と、時刻・候補群・市場・予約の周辺情報から生じる関連付け。
  • メモリ上のレート制限器。再起動で初期化され、インスタンス間で合算されない。レビュー文書では、これを唯一の防御と呼んだ文の隣に、そう記録してある。