世界を動かす技術を、日本語で。

エストニアのオンライン投票システムのソースコード

2026年10月17日原文(github.com)

概要

  • Estonianオンライン投票システム のソースコードを公開
  • アクティブな開発 は本リポジトリで行われていない
  • 選挙で使用される実際のコード が常に提供
  • 法的要件 に厳密に準拠した開発体制
  • 詳細は www.valimised.ee を参照

Estonianオンライン投票システム公開リポジトリの目的

  • Estonianオンライン投票システム のソースコードを 一般公開 することが主目的
  • 本リポジトリは 積極的な開発作業 の場ではない
  • 選挙で実際に使用されるコード を常に最新の状態で提供
  • 法的拘束力のある選挙 に利用されるため、 関連法規 の厳守が必須
  • Estonian I-voting system および I-vote verification application の開発は State Electoral Office of Estonia が監督
  • 詳細情報や追加資料は www.valimised.ee で確認可能

Hackerたちの意見

ほぼ1年も更新がないのは面白いね。安定したソフトウェアってことかな?

└

説明はREADMEにあるよ: 「このリポジトリの意図は、エストニアのオンライン投票システムのソースコードを公開レビューのために提供することです。」 「このリポジトリはアクティブな開発には使われていませんが、最新の状態に保たれます。ここにあるコードは選挙で使用されるコードです。」

└

READMEより このリポジトリはアクティブな開発には使われていませんが、最新の状態に保たれます。ここにあるコードは選挙で使用されるコードです。法的に拘束力のある選挙に使用される投票システムは、法律に厳密に従わなければならないため、エストニアのI投票システムとI投票検証アプリケーションの実際の開発はエストニアの国家選挙局によって監督されています。詳細についてはwww.valimised.eeを参照してください。

ソフトウェアだけ、あるいはソフトウェアとハードウェアの組み合わせじゃ、選挙を安全にするのは無理だよ。信頼の信頼問題とか、ファームウェアの検証が必要だとか考えてみて。機械が正しく動くかどうかは保証できないけど、動いたかどうかは確認できる。投票所が閉まった後すぐに機械の動作を確認する必要があって、手動で統計的なランダムサンプリング法を考え出して、ランダムに選ばれた記名式の紙の投票用紙をデジタルの投票記録と照合するんだ。それからデジタルリスク制限監査を行って、CVRが機械の報告した結果と合っているか確認する。投票所が閉まった後すぐにこれをやるほど、不正が発覚する可能性が高くなる。つまり、ランダムに選ばれた投票所の手動部分監査をすぐに行うってこと。まだ、郵送投票や不在投票のセキュリティ、早期投票用の投票箱のセキュリティ(夜間に結果が公開されるから手動部分監査ができないかもしれないし、受け入れるかもしれない)、有権者登録など、解決すべき技術的な問題が山ほど残ってるけどね。

└

これらはすべて暗号技術で解決できるよ。あなたのIDカードには秘密鍵が含まれていて、その鍵を使って取引に署名するんだ。実行している機械が侵害されていても、これらの詳細は後で確認できるから問題ない。例A: あなたが候補者Aに投票したけど、ソフトウェアが候補者Bに変更されて、ソフトウェアはあなたが候補者Aに投票したと表示する。後で独立したデバイスで確認して、取引が変更されたことを知り、投票を取り消したり変更したりできる。例B: あなたの投票がカウントされたかどうかはどうやって知るの?すべての投票のハッシュと署名を公開して、最終集計を再計算し、すべての投票と比較する。最終集計にあなたの投票が含まれていなければ、ハッシュが異なっていて、すべての取引が公開されているからデータセットの中であなたの投票を目に見える形で確認できる。プライバシーを守るために、各ラウンドには番号があり、秘密鍵 + 番号 -> 新しい鍵になるから、各投票の指紋はユニークになるんだ。

└

信頼の信頼問題やファームウェアの検証の必要性を考えてみて。 投票機やソフトウェアの話をする時に、それはあまりにも抽象的で哲学的な問題だと思う。もっと一般的で具体的なリスクがたくさんあるからね。APTクラスの侵害やスパイ活動など、国が重要ならなおさらだし、あなたのコメント自体にもいろんな問題があるよ。

└

これらはすべて問題だけど、実際の問題は選挙の目的が科学的または数学的に検証可能な正しい結果を得ることではないってことだ。目的は合意を得ることなんだよ。つまり、普通の人があなたに騙されたと思っているなら、どれだけ正確かは全く関係ない。コンピュータを混ぜると、いつもこれが悪化する。で、これは巧妙な解決策や暗号技術で解決できる問題ではない(それは確かに興味深いけどね)。問題は、人々は一般的に電気を見えないから、コンピュータのスケールで何かを見ても、たとえそれができても全く意味がないってこと。だから、紙の投票システムはその愚かな非効率性の中で素晴らしいんだ。なぜなら、物体の永続性を理解した大人なら誰でも自分で確認できる形で信頼を広げるから。対立する当事者を招待して監視させて、シンプルで非効率的だけど合意できるプロセスの前で彼らが渋々敗北を認めるようにする。だから、暗号技術ファンでプログラマー、ハードウェア好きの僕は、高リスクの選挙には電子投票が向いていないと思うんだ。

└

でもブラジル政府は、彼らの電子選挙システムはハッキング不可能だって言ってる…そうだね。監査できるのは選ばれた少数の団体だけで、しかもすごく制御された環境で行われるから、結局は「見えないことによる安全」に頼ってる。ソースコードは市民には公開されてないし。もし間違ってたら、誰かソースコードのリポジトリを教えてくれたら嬉しいな。

└

問題は不正な選挙じゃなくて、誰が「選ばれて」も同じことが続くってことだよ。直接問題に投票できるシステムが見てみたいな。戦争のためのお金?イランとの戦争?イスラエルを支持する?とかね。

└

なんで全ての投票用紙をオンラインで公開しないのか、ずっと不思議に思ってた。投票時に各有権者に渡される匿名のキーでアクセスできるようにすれば、誰でも自分の投票用紙を確認できるじゃん。自分の意図通りに集計されてるか確認できるし。これってちょっと甘い考えかもしれないけど、何か見落としてるのかな?

└

その通り。何も完全には信じられないよね。それは紙の投票にも当てはまるし。そこで不正をするための明確な手口があるし、投票の集計にもコンピュータが関わってるからね。じゃあ、なんでそれを信じる理由があるの?e-投票の目的は絶対的に安全になることじゃなくて、全体の選挙を不安定にしない程度に安全であることなんだ。それは大きな違いだよ。あと、クマのメカニズムもあるし。森の中では、クマより速く走る必要はなくて、一緒にいる人より速く走ればいいんだ。例えば、IDカードや電子署名に問題があったとするよ。攻撃者は数年待って、投票を攻撃して、電子投票が無効になるリスクを冒すこともできるし、今すぐにでも社会全体に大混乱を引き起こすこともできる。電子署名はここでは非常に普及していて、何でもできるからね。大統領として文書にサインしたり、みんなの名義でローンを組んだり、みんなを離婚させたり(結婚させたり)、全員のお金を奪ったりとか。なんで待つ必要があるの?

この話題が出るたびに、実際に存在していて、リアルな選挙で使われたシステムについて何も知らない人がたくさんいるよ。例えば、ElectionGuardは2020年からアメリカのいくつかの実際の選挙で使われているんだ。[1]: https://electionguard.vote/

Hacker Newsで議論の続きを見る