Security of ZKP projects: same but different
https://scrapbox.io/files/6266739c5ffaaa001d86fc1c.png
How to break zkSNARKs security?
パッと思いつくのはスマコンのバグ、ロジックの欠陥などを介して破壊する方法だが、大別すると以下のようになる
健全性を破る,例えば悪用する
制約システムが特定の制約を効果的に適用していない
一つの命題をzkpするにあたり、副題を置くことになりがち
証明鍵の生成や保護が安全でない。
Trusted setupのことか
例えば、以下のような悪用により、ゼロ知識性を破壊する。
公開変数として扱われるプライベートデータ
プロトコルレベルの "メタデータ攻撃"
完全性の破壊、例えば以下を悪用したもの
エッジケースにおけるR1CS合成の不正な動作(例:プライベート変数の数について)
ガジェットi/o値間のタイプミスマッチによるガジェット合成の失敗
以下のようなバグを原因とする(オフチェーン)ソフトウェアの破壊。
サイドチャネル(タイミング、オラクルなど)経由を含むデータの漏えい
安全でない状態でのあらゆる形態(コード実行、DoS)
サプライチェーンを侵害する。
Trusted Setupのコードと実行
ビルドとリリースプロセスの完全性
ソフトウェアの依存関係
各レイヤーにおける脅威と脆弱性のチェックリスト
https://scrapbox.io/files/62667525df1bb9002148089d.pnghttps://scrapbox.io/files/6266752f8ff67800234ef001.png
https://scrapbox.io/files/6266753e321c2e001d34f5b5.png
スライドでは、バグがあったプロジェクトが紹介されている。この間のfiat-shamier変換以外にも諸々出てるから面白い
結論:もっとテストや議論が必要だよねというお話