オープンソース参考実装(MIT)・プロトタイプ

Internet Voting System

マイナンバーカードで本人確認しつつ、匿名性を担保する——
電子投票の設計・実装パターンを、暗号要素ごとにモジュール分離して可視化した参考実装です。
「本人確認は厳格に、でも誰に投票したかは誰にも分からない」という電子投票の核心的な難しさを、 動くコードで確かめられるようにした、研究者・自治体・開発者向けのオープンソースです。

まず最初に

⚠️ 本番投票には絶対に使用しないでください

  • これは設計検証のためのプロトタイプです。現段階の暗号要素は、本番実装の境界を意識した標準ライブラリのみのデモ用アダプタで動いています。
  • 商用電子投票プラットフォームの多くは中身がブラックボックスです。本ツールは 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: PythonTypeScript / デプロイ: docker composeHelm。 設計書・OpenAPI・周辺インフラIaCを同梱。