← 所有文章

"认证"意味着它通过了一次测试。这不代表它今天是安全的。

一次安全审查通过了该系统。之后,外部研究人员发现了漏洞——当时已经有28万人在投票。"认证"这个词并没有阻止这种情况发生。

时间是2015年3月的第三周,新南威尔士州选举正在进行中。数十万选民已经通过一个名为iVote的系统在线投票。选举当局已完成安全检查。该系统已被审查。没有人发出警报。

然后两名研究人员——密歇根大学的J. Alex Halderman和澳大利亚的Vanessa Teague——将浏览器指向这个正在运行的、实时的系统。

他们不是选举官员。他们没有内部访问权限。他们在外部工作,查看任何具有网络能力的对手可能接触到的内容。

他们发现的不是埋藏在某个模糊协议中的理论漏洞。这是一条有效的攻击路径。iVote系统通过容易受到已知TLS漏洞影响的连接从外部分析服务器加载代码——这类攻击被称为FREAK和Logjam。位于网络上的攻击者本可以利用该通道操纵投票并破坏选票隐私。而且专门为让选民确认其投票是否正确记录而构建的电话验证服务?它本身容易被操纵,这意味着这个检查什么都没有检查。

选前安全审查没有发现这些问题中的任何一个。

当研究人员报告他们的发现时,大约28万张选票已经投出。


"认证"这个词在这里承担了巨大的工作——但并未配得起

以下是"认证"在选举技术背景下的真正含义。

这意味着在一个明确的时间点——部署前,在受控的实验室环境中——对一个系统进行了针对书面规范的测试,通过了这些测试,并获得了一份说明这一点的文件。

该文件不会自行更新。当依赖项变化时,它不会重新运行测试。它不知道第三方分析脚本在审计后被添加到网络堆栈中。它不知道生产环境中的TLS库版本与审查员检查的版本是否不同。它不知道盖章后发生的任何事情。

认证是一个快照。而系统继续在一个不断变化的世界中运行。

这不是新南威尔士州特有的缺陷。这在每个通过检查一次系统然后信任结果的认证制度中都是结构性的。快照已冻结。威胁环境并非如此。

Halderman和Teague发现的不是仓促或无能的选前审查的结果。这是对一个随后继续存在和变化的系统进行审查的结果。代码加载所来自的外部分析服务器——该依赖项是攻击面的一部分,而攻击面并不是静态的。

教训不是"进行更好的选前审计"。教训是一次性的检查无法替代持续的、独立的、外部可验证性。 iVote的特别之处在于验证机制——电话确认——本身遭到了破坏。系统自己的正确性证明本可被作弊。

一个你无法检查的锁不是锁。它只是一个道具。


一个联邦法院就一张你可以拿在手中的纸质选票做出了同样的发现

五年后,在完全不同的背景下,亚特兰大的美国联邦法院阅读了关于一个确实会产生物理制品的系统的专家证词。乔治亚州的Dominion投票标记设备打印出一张纸质选票。你可以拿在手中。你可以交给投票工作人员。理论上,你可以检查它。

除了有一个问题。

投票标记设备打印两样东西:显示你选择的人类可读文本,以及一个二维码。扫描仪在计票时读取的是二维码。而二维码是不可读的。你无法看着它并确认它写的与文本相同。

在2020年10月的Curling诉Raffensperger案中,美国乔治亚州北区地方法院审查了专家证词,包括来自Halderman博士——同一个查看过iVote的研究人员——关于网络攻击可能做什么的证词。法院发现该系统"不提供可验证和可审计的选票记录,因为它依赖二维码来进行投票计数,而该代码本身无法被选民读取和验证"。

法院还直接引用了国家科学院2018年的结论:目前不存在任何技术机制可以确保投票计数应用程序产生准确的结果,仅靠测试无法确保系统未被破坏

再读一遍这句话。仅靠测试无法确保系统未被破坏。

这不是边缘研究声明。这是一个联邦法院引用国家科学院的观点,在已发布的法律意见中。测试——本质上就是认证——无法保证实际运行系统的完整性。

面对即将到来的真实选举,乔治亚州法院拒绝了下令立即改用手工标记纸质选票的要求。它权衡了混乱与风险,选择了连续性。这是一个可以辩护的务实决定。但它没有解决根本问题:选民可以检查的制品不是被计数的制品。

认证已通过该系统。该系统的可验证性差距仍然存在。


两个案件背后的模式:快照与实时问题

新南威尔士州的iVote和Curling案表面上看起来不同。一个涉及在网络服务器上运行的互联网投票系统。另一个涉及在投票站产生的纸质选票。

但它们存在相同的结构性失败。

在这两种情况下,被认证的东西和实际运行的东西在可证明意义上并不相同——而且没有机制可供公众或选民个人实时弥合这一差距。

在iVote的情况下,差距在于被审查的系统和被部署的系统之间,后者对外部服务器有实时依赖,该服务器没有被任何审查员评估。旨在发现问题的验证功能本身遭到了破坏。

在乔治亚州的情况下,差距在于选民看到的(人类可读文本)和机器实际计数的(选民无法解码的条形码)之间。应该能够进行审计的纸质选票编码了审计者——选民——无法读取的信息。对这些纸质选票的手工重新计票审计的是条形码的输出,而不是选民的意图。正如法院所指出的,如果条形码编码的内容与文本不同,对纸张的手工计票证实的是操纵,而不是选民的选择。

认证通过了这两个系统。

这两个差距都无法通过查看认证文件来检测。


什么能真正弥合这一差距?

认证并非毫无用处。一个从未被任何人测试过的系统比被测试过一次的系统更糟。问题在于把它当作充分的——作为结论而不是验证过程的开始。

什么会使它充分?

三件技术上可行且目前罕见的东西。

首先:对实际运行的代码的认证,而不仅仅是审查过的内容。 一个系统能够向外部观察者以密码学方式证明执行投票的代码今天与被测试过的代码相同——不是后来的版本,不是修补过的依赖项,不是被交换的模块——这弥合了快照差距。这不是科幻小说。它是软件工程中已解决的问题。它只是在大多数选举技术认证制度中不是必需的。

其次:不依赖于供应商或当局的独立外部可验证性。 iVote的教训是系统自己的验证机制可以被攻击。系统本身进行的检查不是独立验证。可验证性意味着局外人——研究人员、政党、拿着笔记本电脑的公民——可以根据他们没有从被检查系统那里获得的防篡改记录来确认系统的行为。德国联邦宪法法院在2009年理解了这一点,当时它认定选民必须能够验证选举的基本步骤"不需要任何专业知识"。标准不是"专家可以审查它"。它是"普通人可以检查它"。

第三:被计数的制品必须是选民可以检查的制品。 没有选民能读的二维码不符合这个条件。选民手工标记的纸质选票,由扫描仪进行光学读取,更接近——因为查看同一纸张的人类可以评估机器评估的相同标记。荷兰2007年推荐回归纸质选票的委员会称这一原则为controleerbaarheid——可检查性——并将其视为不可商量的:"选举过程中没有秘密,问题必须是可回答的,答案必须是可检查和可验证的"。这不是对二维码选票的描述。


审计仍然可能留下问题开放

你可能已经在形成的异议:选后审计呢?手工重新计票呢?

它们有帮助。风险限制审计对纸质选票进行抽样与机器总数对比,正如科罗拉多州在2017年率先进行的那样,提供真实的统计证据表明机器计数反映了纸质记录。乔治亚州在2020年11月对近500万张总统选票的全面手工计票将机器结果确认到千分比一以内。

但对二维码选票标记设备输出的审计审计的是二维码的解释,而不是选民的意图——除非审计员分别验证人类可读文本和条形码匹配。这一步不是标准做法。

而审计发生在事实之后。在iVote的情况下,在发现漏洞前选举已经在进行。对互联网投票系统的选后审计无法恢复在传输中被默默改变的投票,因为没有要审计的投出内容的独立副本。互联网投票的整个架构使"纸张作为基础事实"的模式不可用。

对于手工计票本身,也存在不可消除的问题。密歇根州的Antrim县在2020年12月对大约15,700张总统选票进行了全面手工计票——而手工计票与机器计数的差异仍然约为十几张投票。在一场由数百张投票决出的选举中,"黄金标准"计数和机器计数之间十几个无法解释的差异不会解决问题;它们会延长问题。审计证实了该方法是不完美的。当审计方法本身具有不可消除的误差时,"审计证实了"是一种保证,而不是证明。

答案不是放弃审计。答案是建立这样的系统:基础事实受到密码学保护、公开可见且可独立检查——这样"审计证实了"就意味着某种可证伪的东西。


你仍然无法验证的东西——以及什么会使其可验证

以下是运行认证投票系统的大多数管辖区目前不透明的东西。

你无法验证选举日运行的代码是被认证过的代码。大多数已部署系统不存在公开认证机制。

作为选民,你无法验证二维码选票是否正确编码了你的选择。投票站内不提供独立解码工具。

你无法验证互联网投票系统的实时依赖与审查过的系统匹配。iVote的分析服务器依赖不在审计范围内。

你无法验证选前安全审查是否涵盖了选举日存在的攻击面,因为该面积会变化。

什么会使这些东西可验证——独立地,不需要信任供应商或认证机构?

已发布的、版本化的软件构建带有密码学哈希值,由独立方在部署时检查。选民可验证的纸质记录,其中选民标记的是扫描仪读取的和任何审计员可以评估的。实时的、机器可读的选区级结果发布,任何人都可以下载和交叉检查。以及对抗性公开测试——不是一次性的选前审查,而是一个持续的、向外部研究人员寻找问题的开放邀请,就像巴西最高选举法院用其公共安全测试计划制度化的那样。

"认证"是关于过去的陈述。选举需要的是关于现在的陈述——任何公众成员都可以独立确认的,不需要相信任何人。

新南威尔士州的研究人员在没有特殊访问权限、在实时选举期间从外部发现了iVote漏洞。这既是警告也是模式。警告:封闭的、一次性的审查会留下差距。模式:可以访问运行系统的外部研究人员可以发现内部人士遗漏的东西。

灾难与惊险逃脱的区别在于系统的架构是否允许局外人检查——在投票前、投票进行中以及计票后。

认证说系统已被检查。

可验证性说它可以被检查。

这些不是一回事,没有任何选举当局的保证,无论多么诚恳,都能弥合它们之间的差距。

查看这个验证差距在全世界有多普遍 →

阅读两分钟版本 →

浏览完整案例数据库 →


来源