ゼロ知識証明
ゼロ知識証明(ZKP)は、Anonのプライバシーを支える暗号技術です。ある内容を知っていること、またはある主張が正しいことを、その内容自体を明かさずに証明できます。
直感的な説明
ある施設に入るために18歳を超えていると証明したいものの、正確な生年月日や氏名が載った身分証を見せたくない場面を想像してください。ゼロ知識証明は、ほかの情報を明かさずに「18歳超を確認済み」と示す魔法の印のようなものです。
Anonで証明する内容は、*「私はRailgunプール内に少なくともXトークン分のノートを所有し、この受取人への有効な送金を作成しています」*というものです。プライベート送金では、証明がプライベートノートを明かさずに支出ルールを検証します。シールドとアンシールドでは、公開アドレスと金額が引き続き明らかになります。
zk-SNARKs
Anonは、簡潔で非対話的なゼロ知識の知識論証であるzk-SNARKsを使用します。主な特性は次のとおりです。
- ゼロ知識: 検証者は主張が正しいこと以外の情報を得ません
- 簡潔: 証明は数百バイト程度と小さく、迅速に検証できます
- 非対話的: 証明と検証は非同期で行われ、繰り返しのやり取りは不要です
Railgunの回路は、BN254楕円曲線上のGroth16証明システムを用いて構築されています。
証明はローカルで生成されます
重要なプライバシー特性は、証明の生成が完全に自分のデバイス上で行われることです。プライベートな証明の入力はローカルで処理されます。生成したトランザクションとサービスに必要なデータは、選択した送信方法で送られます。ローカルで証明しても、すべてのリクエストや公開トランザクションの項目が非公開になるわけではありません。
つまり、次のことが言えます。
- 証明サービスにプライベートな支出入力を渡す必要がありません
- ネットワークの可用性とネットワーク層のプライバシーは別の問題です
- ウォレットソフトウェアとデバイスへの信頼は引き続き必要です。証明はRailgun回路を使ってローカルで生成されます
パフォーマンス
zk-SNARK証明の生成には多くの計算が必要です。最近のコンピューターでは、Anonは通常、トランザクションの複雑さに応じて5〜20秒で証明を生成します。この計算はトランザクションごとに一度必要で、オンチェーンでの検証は高速かつ低コストです。