你不被允许检查的软件
计算选票的机器遵循秘密指令。如果公司以外的任何人都不被允许阅读这些指令,就没人能确定选票是否被公平地计算了。
实际发生了什么
在 2006–2007 年具有里程碑意义的研究中,普林斯顿研究人员获得了一台广泛使用的 Diebold AccuVote-TS 机器,并证明只要有人短暂接触,就可以安装盗窃选票的代码,该代码可以改写机器自己的所有记录以隐藏盗窃——正是公开源代码审查存在的目的所在能捕捉的缺陷。
当前状况
那种特定的无纸化触屏机器现在已基本退役——2024 年美国大选中约 98% 的选票是在纸上投出的。但这个差距本身并未消除:运营美国今日约 90% 投票的三家供应商(Dominion、ES&S、Hart)都是私营公司,他们将源代码保密,不向公众开放审查。上面的 86% 数字是根据今天的选举法测量的,而不是 2006 年的。
想象一个没人能看的裁判
投票机就像比赛中的裁判。它决定谁赢了。现在想象这个裁判把规则书锁在抽屉里,不让任何人看。你只能相信规则书是公平的。
这就是今天大多数投票机的工作方式。软件——那套汇总选票的指令——是封闭的。只有制造这台机器的公司能看到它。选民、选举官员和独立专家通常看不到。
为什么这很重要
如果隐藏在那份秘密软件中的错误(或故意修改)没人能找到,那就只有公司知道。研究人员已经反复证明,当他们确实有机会检查真实机器时,他们发现了严重缺陷——恶意代码甚至可以改写机器自己的日志来掩盖踪迹。
关键不在于每台机器都被操纵了。问题更简单:如果你无法检查它,你就无法证明它是对的。 在可能有证明的地方,不应该要求信任。
TrustVoting 如何解决这个问题
TrustVoting 建立在一个简单的承诺之上:计算你选票的代码应该是开放的——完全发布,具有可复现构建,这样任何人都可以重建它并获得完全相同的程序(不仅仅是读取它然后祈祷)。
在此基础上,一个密码学完整性层——校验和和证明启动——让每台机器都能证明它运行的正是那个已发布、已审查的版本,之后没有任何替换。
这就是那条用证明取代信任的链条:任何人都能检查的开放代码 → 任何人都能复现的构建 → 能证明自己运行的是它的机器。 仅有开源代码是不够的(源代码必须与运行中的机器匹配),仅有校验和也不够(你会相信看不到的代码)——你需要两者,这就是设计。
TrustVoting 如何消除它
TrustVoting 旨在发布其完整源代码和可复现构建,这样任何人——不仅仅是供应商——都可以阅读并独立重建它。在此基础上,一个密码学完整性层(校验和 + 证明启动)证明每台机器在选举日运行的正是那个已发布、已审查的版本。开源是承诺;可验证的完整性是证明机器兑现这一承诺的方式。
来源
- Feldman, Halderman & Felten, “Security Analysis of the Diebold AccuVote-TS Voting Machine” — USENIX/ACCURATE EVT ’07
- Same paper — full text (PDF, USENIX)
- MIT Technology Review, “How open source voting machines could boost trust in US elections” (2024) — today's top 3 vendors (~90% of the market) keep their code closed