第三者検証ガイド
公開 snapshot に関する注意
bundle.zipの展開とjournal.json完全性チェック(Step 3, 6)はダウンロード済み ZIP のみで実行できます。verifier-serviceビルド・imageId-mapping.json参照・公開アーティファクト整合・inputCommitment再計算(Step 2, 4, 7, 8)は、検証対象リリースと対応する公開 repository snapshot が必要です。
この章は、検証ページでダウンロードした bundle.zip を使って、第三者がローカルで行える配布対象アーカイブ単体の最小監査手順をまとめたものです。/verify 画面の最終判定の完全再現ではなく、下表の不変条件を確認することがゴールです。
bundle.zip 単体では揃わないもの(上の callout は手順実行に必要な前提、ここは検証材料そのものとして ZIP に入らないものです):
/api/verifyが返す claimed tally とverificationChecks/verificationSteps- 投票者端末に残る投票意図・乱数・投票レシート
- 掲示板の包含証明 / 整合性証明
- 自票 inclusion 用のビットマップ証明
- 有効化されている場合の第三者 STH ソース照合
これは PoC の設計意図です(配布対象アーカイブ の構成も参照)。
この部に含まれる章
- ZIP ローカル検証(Ubuntu) —
bundle.zipを取得した第三者が Ubuntu 上で実行できる最小監査手順
想定読者と前提
- 想定読者: 配布された
bundle.zipを独立にローカル監査したい第三者 - 前提: Ubuntu 系 Linux と
jq/unzipなどの基本 CLI、対応する公開リポジトリ snapshot へのアクセス。詳細は はじめに を参照
本章で扱わないもの
/verifyUI が表示する最終判定の完全再現(包含証明・整合性証明・第三者 STH 照合などはサーバー側でのみ評価される)- 投票者端末のローカル証跡(投票意図・乱数・投票レシート)を使った Cast-as-Intended 検証
- AWS インフラのデプロイ・運用手順
- 上で扱わない検証材料の一覧は冒頭の「
bundle.zip単体では揃わないもの」も参照
関連する章
この章は bundle.zip のローカル監査に絞ります。範囲外の作業は次のページを参照してください。
- チェック一覧 — チェック ID と判定ロジック
- API エンドポイント一覧 — 手動検証に使う API 契約
- 検出メカニズム — 改ざんシナリオごとの失敗パターン
- 非同期プローバー — 非同期 finalize の処理と障害調査導線
- バンドル構造 — 配布対象アーカイブの公開可能・非公開アーティファクト
- 用語集 — 「検証」と「監査」の使い分けほか
最低限確認する不変条件
| 項目 | 合格条件 |
|---|---|
| STARK レシート | verifier-service verify が status: "success" |
| 投票の除外有無 | excludedSlots == 0 かつ missingSlots == 0 かつ invalidPresentedSlots == 0 |
| 期待投票数整合 | totalExpected == treeSize |
| 集計合計整合 | journal.json の verifiedTally の合計が validVotes と一致 |
| 公開入力の基本整合性 | public-input.json が現行 contract に沿い、入力数・root・重複検査が成立 |
| 公開監査アーティファクト | election-manifest.json と close-statement.json の自己整合・相互整合が成立 |
| 入力整合性 | inputCommitment の再計算値が journal.json と一致 |