オープンソース投票は必要です — しかしそれだけでは不十分です。その他に必要なことは以下の通りです。
ロサンゼルス郡は10年をかけて世界で最も透明性の高い投票システムを構築しました — オープンソース、公有、独立監査可能です。スイスも同じことをしました。研究者たちはそれでも隠された裏口を発見しました。両方のケースで何を見落としたのかを説明します。
2018年8月21日、カリフォルニア州の公務員がマイクの前に立ち、その州の歴史で一度も言われたことのない何かを言おうとしていました:ロサンゼルス郡の投票集計システムが認証を受けたばかり — そして初めて、投票を集計するソフトウェアは公共のものになったのです。
ベンダーではなく。営業秘密法で保護された民間企業ではなく。公共のものです。
このシステムはVSAP — すべての人のための投票ソリューション(Voting Solutions for All People)と呼ばれています。 構築に何年もの歳月と数千万ドルを要しました。アメリカ合衆国最大の投票管轄区を支援するために一から設計され、老朽化した独占的マシンに取って代わります。そのソースコード — あなたの投票をどのように集計するかをコンピュータに指示する実際の命令 — は誰でも読むために公開されました。
これは、本当に、マイルストーンです。そしてそれでもまだ不十分です。
そのギャップ — オープンコードと検証済み集計の間のギャップ — がこの投稿の主題です。
秘密のソースコードが常に間違った答えだった理由
VSAPが重要な理由を理解するには、それが何に取って代わったかを理解する必要があります。
何十年も、アメリカの投票を集計するソフトウェアは営業秘密でした。ベンダーは彼らのコードが所有権のある知的財産だと主張しました。選挙官は、マシンが正しく機能したという彼らの言葉を信じるしかありませんでした。他の手段 — 2006年にプリンストンチームがDiebold AccuVote-TSを手に入れて数週間それで過ごしたように — でマシンを入手した研究者たちは、1分未満で投票を盗むコードをインストールすることができることを発見しました。そのコードはマシンからマシンへと広がり、すべての内部ログを一貫性を保つように改ざんします。マシンは改ざんされた集計結果を完全な信頼を持って報告するでしょう。
コードは秘密でした。改ざんは見えませんでした。
2021年のジョージア州コーヒー郡は同じ剣の別の側面を示しました:コードを秘密にしておくことは、それを安全に保つことはできません。法医学チームは選挙事務所に入室し、ドミニオン投票システムの全体 — 選挙管理システム、投票パッド、投票マーキング装置、スキャナー、すべて — のコピーを持って出てきました。秘密として保護戦略はその部屋で最も協力的なインサイダーの強さだけを持っています。
オープンソースコードはこれらの両方の失敗モードを破壊します。誰もが読むことができるコードに投票盗難ウイルスを隠すことはできません。秘密がないので、秘密を盗む必要はありません。
しかし、ソースを公開した瞬間、質問が変わります。 質問はもはや「コードは何と言っているか?」ではありません。質問は「選挙夜に実際に実行されているコードは、GitHubにあるのと同じコードですか?」になります。
そして、その質問は答えるのが非常に難しいことが判明しました。
スイスの教訓:オープンコード、隠された欠陥
2019年、スイス・ポスト(Swiss Post)とそのスペインのベンダーであるScytlは、透明性の黄金基準に見えるようなことをしました。彼らは拘束力のある連邦投票での計画された使用に先立ってスイスのインターネット投票システムの完全なソースコードを公開しました。独立した研究者はあらゆる行を読むことができました。
研究者のSarah Jamie Lewis、Olivier Pereira、およびVanessa Teagueがそれを試してみました。彼らが暗号化の内部で発見したのは、タイプミスではありませんでした。それは不注意なバグではありませんでした。それはトラップドア — mixnetのシャッフル証明に埋め込まれた数学的構造でした。それは、特定の秘密の値を持つ人が、すべてのチェックに合格する検証トランスクリプトを生成することを許可しました。一方で、その下の投票を改ざんしました。
システムは「普遍的な検証可能性」を提供すると主張しました。有効に見える証拠はシャッフルが正しかったことを確認するでしょう。しかし、トラップドア値を知っていれば、その証拠を、正しくないシャッフルのために合格させることができました。
彼らのレポートをCeci n'est pas une preuve — 「これは証拠ではありません」と名付けました。スイス・ポストとScytlは調査結果を認めました。スイス当局はシステムを中止しました。10年の仕事、完全な公開コード公開 — そして欠陥はまだありました。外部の暗号研究者が数学を掘り下げるまで目に見えませんでした。
プレスリリースに現れない教訓がここにあります:オープンソースコードは、独立した検査を可能にするため必要です。検査が実際に起こり、それを探すのに適格な人々によって、その後修正が検証可能に適用される必要があるため、それで十分ではありません。
コードを公開することは物語の終わりではなく、始まりです。
再現可能性の問題:コードから実行中のマシンまで
これを具体的にしましょう。あなたがロサンゼルス郡の市議員だと想像してください。あなたはVSAPソースコードを読むことができます。あなたはそれをきれいに見つけます。あなたはコードが正しいことに満足しています。
選挙夜がやってきます。どこか倉庫で、マシンが目を覚まし、投票の集計を開始します。
マシンがあなたが読んだコードを実行していることをどのように知っていますか?
「ソースコード」から「実行中のソフトウェア」へのギャップは、ビルドプロセスと呼ばれます。ソースコードは人間が読める。コンパイラがそのテキストから生成する機械語命令 — コンピュータは実行しています。コンパイルプロセスは自動的ではなく、明白ではなく、目で検証できません。それには選択が含まれます:どのコンパイラバージョン、どのフラグ、どの依存関係、どの順序で。
2人が異なるコンパイラを使用して同じソースコードをコンパイルした場合、彼らは異なるバイナリを生成することが多いです。 そしてバイナリが異なる場合、違いが無害であるかどうかを見ることで判断することはできません(異なる最適化設定)または悪意のある(追加命令)。
これは理論的な懸念ではありません。それはケン・トンプソンの1984年のチューリング賞講演「信頼を信頼することについての思考」で致命的な正確さで説明されました。トンプソンは、コンパイラに裏口を挿入することができることを示しました。そのコンパイラは、それがコンパイルするあらゆるプログラムに悪意のあるコードを見えずに追加しました — コンパイラの将来のバージョンを含む — ソースコードに誰も読むことができるトレースを残さずに。
過去10年間のフリーソフトウェアの世界で開発された解決策は、再現可能なビルドと呼ばれています。アイデア:ビルドプロセスが決定的である場合 — 同じ入力、毎回同じ出力 — その場合、独立した当事者は同じソースをコンパイルして、バイナリフィンガープリントを、実際にマシンにインストールされているものと比較することができます。フィンガープリントが一致する場合、マシンはコードが言うものを実行しています。
一致しない場合、コードとマシンの間で何かが変わった。それは哲学的な懸念ではありません。それはセキュリティ上の障害です。
私たちはこれについてもっと詳しく再現可能なビルドに関する投稿でカバーしました。 短いバージョン:それなしで、「オープンソース」は「レシピを読むことができます」という意味です。それは「オーブンから出てきたものはレシピが説明するものです」という意味ではありません。
VSAPのオープンソースアーキテクチャは真の前進です。しかし、文書化された、再現可能なビルドプロセスのないオープンソースは、ソースコードの監査が閉じることができないギャップを残します。
証明:マシンがマシンであることの証明
再現可能なビルドはバイナリがソースに一致するかどうかを示します。**証明(Attestation)**は、特定の時点で特定のマシンを特定の検証済みバイナリに結合するステップです。
署名のチェーンだと考えてください。管轄区はバイナリを認証します。バイナリは暗号的に署名されています。マシンが選挙日に起動すると、それは独自のソフトウェア状態を測定し、署名された報告書 — 「測定」を生成します — これは認証された値に対してチェックすることができます。何かが変更されている場合、測定は一致しません。これは異国的ではありません;それは既にモダンスマートフォンがそのブートプロセスを保護する方法です。
現在の選挙制度の実践では、同等のものはハッシュです — デジタルフィンガープリント — 配置前に認証されたバージョンに対してチェックされることになっています。しかし「チェックされることになっています」はその文に大きな重みをかけています。チェックはしばしば手動で、頻繁でなく、または那覚が自分自身にギャップを持つ可能性がある保管チェーンを信頼します。
コーヒー郡で何が起こったかを考えてください:システム全体のソフトウェアは、オフィスへの正当な物理的アクセスを持つ人々によってコピーされ、配布されました。システムは選挙前のチェックに合格しました。事後的なハッシュ比較は、オフィスに留まったマシンでバイナリが変更されたかどうかを示すでしょう。それは、去った国のコピーで何が行われたかをあなたに示すでしょう。
証明は単独でインサイダー脅威の問題を解決しません。しかし、それは、すべてのマシン起動時に、それが実行しているものを証明するよう要求でき — その答えは、1票が投じられる前に公開レジストリに対してチェックすることができます。
保管チェーン:コードが置き換えることができない物理層
選挙夜の午前2時に完全に監査可能なオープンソースシステムがどのように見えるかはここにあります:メモリカードはタビュレータから出て、複数の当事者からのオブザーバーによって署名された密閉バッグに入り、台帳に記録され、同じパーティーからではない2人によって転送され、中央施設に到着し、その封印はデータが読まれる前にチェックされます。
そして、そのチェーンが破れたときにそれがどのように見えるかはここにあります:2016年のオーストリア憲法裁判所は大統領決選投票を無効にしました — 詐欺が見つかったからではなく、複数の地区で、郵便投票が認可されていない人々によって法的に要求された窓の外で開かれて数えられたため、必要な証人なしで。約77,000票が証明された手続き違反の影響を受けました。これは30,000票の勝利マージンを超えました。裁判所は詐欺を見つかりませんでした。それでも選挙を無効化しました。詐欺を検出不可能にする手順が従わていなかったためです — そして、検出されない操作は、検出されない操作と区別がつきません。
同じロジックが、完璧なオープンソースコードと再現可能なビルドを持つ投票マシンに適用されます。結果を含むメモリカードが、集約に到達する前に単一の人によって証人なしで処理される場合、保管チェーンは破られます。コードの正しさは関係ありません。カードがマシンが生成した出力を保持しているか証明することはできません。
物理的な保管チェーンは、技術が置き換わる遺産手順ではありません。それはソフトウェアの世界を物理世界に接続するアンカーです。 それなしで、計算の完璧な暗号化証拠は、誰もが再度チェックできる物理投票用紙から自由に浮かんでいます。
監査:ループを閉じるチェック
ドイツ連邦憲法裁判所は、あらゆる裁判所がする限り同じ画像を述べました:選挙の本質的なステップは「市民によって確実に、そして専門知識なしに」「検査可能でなければなりません。」裁判所はこれを2009年に述べました。2005年連邦選挙でNedap投票コンピュータの使用を無効にしました。マシンは電子メモリにのみ投票を保存しました。独立して検証可能なレコードはありません。非専門家が実行できるチェックはありません。裁判所は、マシンが誤動作したことがあるかどうかに関わらず、これは違憲だと判断しました。
オープンソースコードは、技術的に精通した市民にとってこの要件を部分的に満たします。暗号的に検証可能な監査は、それをすべての人に満たします。
ジョージア州の2020年の全州手数え監査 — 約500万の大統領投票、159の郡によって6日未満で検査される — 約10分の1パーセント内でマシン集計を確認しました。それは意味のある結果です。有権者が手で記した投票用紙、有権者が原則として見守ることができる人によって数えられた、マシン合計に対してチェックされた:それは通常の市民が暗号学の学位なしでたどることができるチェーンです。
しかし、そのチェーンにも制限があります。コロラド州は2017年に最初の州全体のリスク制限監査を実施し、報告されたアウトカムが正しかったという統計的確信を提供します。リスク制限監査は固定パーセンテージチェックより厳密です:クローズレースでより多くの投票用紙をサンプリングし、一方的なブロアウトではより少ない、定義された確率を提供する間違ったアウトカムが捕捉されたであろうこと。コロラド州はそのリスク限度を継続的に締めています。それは移動の方向です。
両方からの教訓:監査は、監査する何か信頼できるものがある場合にのみ機能します。 有権者が記した投票用紙、有権者は検査することができた:信頼できます。 有権者が読むことができないQRコード — 連邦裁判所がCurling対Raffensperger で見つけた「検証可能で監査可能な投票用紙の記録を提供しないため」なぜなら、コード自体は投票を集計し、有権者はそれを検証することはできません — は監査跡ではありません。それはマシンがそれ自体を信頼しています。
オープンソース+再現可能なビルド+証明+保管チェーンはこれに収束します:耐久性、人間が読める投票用紙を有権者が個人的に検証した記録。独立した当事者は誰でも再度数え、その道は有権者の手から最終的な集計まで複数の党による対立する関心を持つたびに文書化されます。
チェックリスト:誰も完全に完了した人はいません
ここにオープンソースが与えるものと与えないものの実際のリストがあります:
オープンソースが与えるもの:
- 資格のある専門家がコードを読んでバグまたは裏口を見つける能力
- 述べられたカウントのロジックを、それが何をすべきか対してを比較する能力
- セキュリティ研究をブロックする営業秘密の議論の削除
- 再現可能なビルドとコミュニティ監査の基盤
オープンソースが与えないもの:
- 実行中のバイナリがソースに一致する証拠(再現可能なビルドが必要)
- 特定のマシンが認証されたバイナリを実行していることの証拠(証明が必要)
- 結果が機械と集約の間で改ざんされなかったという証拠(保管チェーンが必要)
- 計数が投票用紙ボックスの紙の投票を反映しているという証拠(有権者が検証した紙の記録に対する監査が必要)
スイスはそのソースを発行し、それでもトラップドアを隠しました — 公開が無用だったからではなく、継続的な、専門家の、敵対的なレビューなしに公開することでトラップがあまりにも長い間スプルングのままだったからです。ロサンゼルス郡はそのソースを公開し、信用に値します。次の10年の質問は、VSAPを使用するすべての郡が独立して、各マシンのバイナリがソースが言うものに一致すること、そしてすべてのメモリカードが機械から集約への破られていないチェーンを移動したことをチェックすることができるかどうかです。
透明性は単一の瞬間ではありません。それはソースコードリポジトリから午前2時のテーブルの密閉バッグまで実行される処理です。
これを実際にチェック可能にするもの
任意の独立した当事者 — 単なる公式ではなく、ベンダーではなく — コードから認証済み結果への全体的なチェーンを検証できるシステムを構築したい場合、それはこのようなものになるでしょう:
1: バージョン化された、不変のリポジトリでソースコードを公開し、すべてのリリースに対して暗号ハッシュ。
2: 誰でも再現できるドキュメント化された、スクリプト化されたビルドプロセス。認証されたハッシュに一致するハッシュを生成するバイナリ。
3: 選挙前証明:すべてのマシンは、投票用紙を処理する前に、独自のソフトウェア状態の署名された測定を生成します。その測定は認証されたハッシュに対してチェックされ、公開ログに記録されます。
4: 有権者が検証した紙の記録 — 有権者が個人的に検査した投票用紙。有権者が読むことができないバーコードではなく、人間が読める選択肢を反映しています。
5: ルーチンのリスク制限監査は、紙の投票用紙をマシン集計に対してサンプリングし、レースの余裕でサイズ、複数の当事者からのオブザーバーによって実施され、結果は前置きレベルで公開されます。
6: 機械が読める、前置きレベルの結果は、認証の瞬間に公開されました — 事後ではなく、情報自由要求が必要な形式ではなく、誰でもダウンロードでき、前置きテープに対して調整できる.csvまたは.xmlファイル内。
これらのステップのどれも異国的ではありません。すべては現在の実践のどこかに存在します。どの管轄区も、独立した検証によってすべてのステップを端から端まで実装してはいません。
それはギャップです。「オープンソース対閉鎖ソース」ではありません。ギャップはコード公開と、それをチェックしたい誰でもによってソースからマシンへ投票用紙から集計へと — 全体的なチェーンを独立して検証可能にすることの間にあります。
そのチェーンが完全で公開されるまで、「オープンソース」は必要な改善です。それは完成した答えではありません。
このギャップが世界中の管轄区にどのように現れるかを見てください →
オープンソースが必要だが不十分な理由の2分バージョンを読んでください →
再現可能なビルドと証明の特定のギャップを探索してください →
ソース
- カリフォルニア州国務長官 — VSAP集計バージョン1.0認証(2018年8月21日)
- LA郡登録官-記録官/郡書記 — VSAP公式プログラムレポート
- Lewis、Pereira、Teague — Ceci n'est pas une preuve(Scytl-SwissPostインターネット投票システムのトラップドアコミットメント)、2019
- Feldman、Halderman&Felten — Diebold AccuVote-TS投票マシンのセキュリティ分析(USENIX/EVT)
- Lawfare — コーヒー郡、ジョージア州で何が起こったのか?
- Verfassungsgerichtshof、決定W I 6/2016-125、2016年7月1日(英語翻訳)
- Bundesverfassungsgericht、2009年3月3日の判決、2 BvC 3/07および2 BvC 4/07(英語翻訳)
- Curling対Raffensperger、No. 1:17-cv-2989-AT、意見と順序(N.D.ジョージア州2020年10月11日)
- コロラド州国務長官 — 新しい種類の選挙監査:コロラド州が最初にそれを完成させた
- ジョージア州公開放送 — リスク制限監査がバイデンがジョージアで勝ったことを確認