暗号プロトコル
この部は、投票の検証可能性を支える暗号プリミティブを説明します。
公開データに対する投票の秘匿性(hiding)と束縛性(binding)は、コミットメントスキームで扱います。 追記専用の掲示板は、RFC 6962 に基づく CT スタイルの Merkle ツリーで扱います。 zkVM 入力のうち対象となる公開フィールドの束縛は、正準エンコーディングと入力コミットメントで扱います。
本書で「コミットメント」は、投票コミットメント(個々の投票の束縛)と 入力コミットメント(zkVM 公開入力のうち正準エンコーディング対象フィールドの束縛)の 2 種を指します。 両者は対象とドメイン分離タグが異なるため、それぞれ独立した章で説明します。
プロトコル章の構成
- コミットメントスキーム:投票コミットメントの構成と安全性
- CT Merkle ツリー:CT スタイルの追記専用掲示板
- 入力コミットメント:zkVM 公開入力の対象フィールドに対するコミットメントの正準エンコーディング
- STH ダイジェスト:スプリットビュー緩和のためのツリーヘッドダイジェスト
- ビットマップ Merkle:投票カウント証明のためのビットマップツリー
想定読者と前提
- 想定読者:暗号プリミティブの仕様を実装または監査する技術者
- 前提:SHA-256 ハッシュ計算と Merkle ツリーの基本概念を把握していること
扱わない範囲
- SHA-256 や Pedersen コミットメントなど暗号プリミティブの数学的安全性証明
- RFC 6962 / CT エコシステムの運用詳細(証明書ログ、Monitor 役割など)
- 暗号ライブラリ実装の詳細(定数時間実装、サイドチャネル対策)