まず最初に
⚠️ 本番投票には絶対に使用しないでください
- これは設計検証のためのプロトタイプです。現段階の暗号要素は、本番実装の境界を意識した標準ライブラリのみのデモ用アダプタで動いています。
- 商用電子投票プラットフォームの多くは中身がブラックボックスです。本ツールは OSSとして各暗号要素を独立に確認できることを目的としており、議論・査読の土台になることを目指しています。
暗号モジュールの分離
「本人確認できるのに、誰に投票したかは誰にも分からない」を成立させる要素を、差し替え可能な境界で切り出しています。
本番実装の境界を意識したモジュール構成
各モジュールは独立して検証・置換できます。本番化の際は、この境界のままデモ用アダプタを実運用級の暗号実装に差し替える設計です。
JPKI(マイナンバーカード本人確認)
ブラインド署名(投票資格と票の分離)
ZKP(ゼロ知識証明)
ミックスネット(経路の匿名化)
閾値復号(単独開票の防止)
同梱物
投票APIサーバー
Python 3.10+・標準ライブラリのみで起動(pip install不要)。メモリ/SQLiteストレージ切替。
Webクライアント
ブラウザで動く簡易投票クライアント。受領証検証パネル・監査ログ整合性チェックパネル付き。
監査者向けSDK
Python SDK(stdlibのみ)とTypeScript/ESM SDK。観察者・監査者が独立に検証できる。
設計書・API定義
システム設計書(DESIGN.md/Excel版)とOpenAPI定義、WAF/CDN等のIaCサンプル、Helm chart。
想定ユースケース
| 用途 | 形態 |
|---|---|
| 設計参考・学術研究・自治体PoC評価 | 無料(MIT) |
| 議員・自治体向けデモ実演、設計レビュー受託 | 応相談 |
| 本番実装に向けた暗号モジュール置換・監査 | 個別見積もり |
技術構成
API: Python 3.10+(標準ライブラリのみ・Docker対応) / クライアント: ブラウザ(バニラJS) /
SDK: Python・TypeScript / デプロイ: docker compose・Helm。
設計書・OpenAPI・周辺インフラIaCを同梱。