← すべてのギャップ
💻 確認できないソフトウェア

コードが本物のコードであることを証明する方法がない

投票ソフトウェアが公開されていても、それだけでは十分ではありません。自分でそれを再ビルドして、マシンが実行する正確なプログラムを取得できることも必要です。それがなければ、公開されたコードがマシンに実際にインストールされている秘密バージョンと一致しないかもしれません。

解説動画は近日公開予定

このギャップを 60 秒で、わかりやすく説明する動画です。

実際に何が起きたか

これはよく確立されたソフトウェアサプライチェーン原則です。業界横断的な Reproducible Builds プロジェクトが存在するのは、ソースコードを読むだけでは十分ではないからです。独立してそれをリビルドして、同じプログラムを得ることを確認する必要があります。そうしなければ、「ここにソースがあります」と「ここに実行されているものがあります」は2つの異なる検証不可能な事柄です。

今日の状況

ほとんどの管轄区域では、投票ソフトウェアのソースを公開することさえ要求していません(「確認が許可されていないソフトウェア」を参照)。したがって、誰もが実行中のマシンと一致させられる再現可能なビルドが必要なことはさらにまれです。上の数字は現在の法律を反映しています。

メニューを読むことは食べることではない

ソースコードを公開することは、レストランのレシピを投稿するようなものです。良いことですが、キッチンが実際にそのレシピで料理したことは証明できません。レシピに従ったかもしれませんし、従わなかったかもしれません。レシピだけではわかりません。

再現可能なビルドがそのギャップを埋めます。誰もが公開されたソースコードを取得してそれ自体をコンパイルし、マシンにインストールされている完全に同じプログラム(ビット単位で)が得られるかどうかを確認できます。これは広いソフトウェア業界がレビュー後に改ざんされたコードをキャッチする方法です。

なぜ重要か

再現可能なビルドがなければ、「ここにオープンソースがあります」と「ここにマシンで実行されているものがあります」は2つの別の主張であり、そのうちの1つだけを確認できます。公開されたきれいなバージョンが秘密の改ざんされたバージョンと並んで存在しても、外部の当事者はその違いを証明することができません。

TrustVotingがどのように解決するか

TrustVotingは再現可能なビルドにコミットしています。公開されたソースをリビルドして同じバイナリを取得し、整合性層(チェックサム+認証付きブート)がマシンが正確にそのバイナリを実行していることを証明します。公開コード→誰もが再現できるビルド→それを実行していることを証明するマシン。

TrustVoting がこれをどう解決するか

TrustVotingは再現可能なビルドにコミットしています。誰もが公開されたソースを取得してそれを再ビルドし、マシンが実行する正確なバイナリを生成することを確認できます。その後、整合性層(チェックサム+認証付きブート)がマシンがそのバイナリを実行していることを証明します。