如果软件在测试后被更改了怎么办?
投票软件通过了每一项测试。然后有人走进一个选举办公室,把整个系统复制到硬盘上,然后离开了。在这之后,"认证"意味着什么?
2021年1月7日上午,一支计算机取证团队走进了格鲁吉亚咖啡县选举办公室的大门——县官员用他们持有的每一把钥匙为他们打开了门。他们不是调查人员。他们不是审计员。他们花了几个小时复制了所有内容:选举管理系统服务器、选票标记设备、高速扫描仪、格鲁吉亚的州级Dominion投票系统软件。整个系统。他们用硬盘把它带走了。
他们复制的系统曾经过测试。它曾经过认证。它曾经运行过真实的选举。
这些都没有阻止接下来发生的事。
"认证"实际上认证的是什么
在任何投票系统接触真实选票之前,它要经过认证过程。测试实验室检查硬件和软件。它检查机器是否按照文档所说的方式工作。它发布一份报告。选举管辖区接受该系统。
这听起来很彻底。而且在某个时间点上,它确实是。
但认证是一张照片,不是监控摄像头。 它捕捉的是实验室检查系统时的状态。该系统在实验室和你的投票站之间、以及选举之间发生了什么——这是完全不同的问题,而认证过程本身基本上没有回答这个问题。
关键的漏洞是这样的:没有人以公众能够独立检查的方式,定期证明选举日运行的软件与通过测试的软件相同。
这个漏洞有一个名字。我们称之为选前软件替换问题。这不是理论上的。
咖啡县:当钥匙落入不适当的人手中时
咖啡县事件记录在联邦Curling诉Raffensperger案的证词中,后来在富尔顿县的起诉书中也有记载,这是为什么保密对于选举软件来说是脆弱安全策略的最清晰的现实世界范例。
该系统的完整性部分基于这样的假设:只有授权人员才能访问它。当一名县官员让取证团队进入时,这个假设就破裂了。与该漏洞有关的几个人后来认罪。格鲁吉亚州务卿办公室将其描述为违反州法律的未授权访问。
但这样的问题持续存在:你对一个软件已被复制并现在位于你无法控制的地方的选举系统该做什么?
在当前认证模式下,诚实的答案是:没有太多办法。你可以更改密码。你可以给系统打补丁。你可以声称(正如官员所做的那样)该漏洞没有影响随后选举的完整性。但你无法向任何不已经倾向于信任你的人证明这一点——因为该系统从一开始就没有设计成独立可验证的。
正如Curling案所记录的,法庭前的专家证词包括网络攻击可以可行地替换或删除选票并破坏系统的发现。法院发现基于二维码的计票系统"不提供可验证和可审计的选票记录,因为它依赖二维码进行投票统计,而该代码本身无法被选民读取和验证。"纸质打印不是选民可验证的记录,如果打印件用条形码编码实际选票而人类无法读取该条形码。
咖啡县中,不透明的安全性失败了,因为不透明总是最终失败。有人总会掌握钥匙。
更深层的问题:认证和选举日之间会发生什么?
咖啡县是一个平凡问题的戏剧化版本。
选举系统在其整个运作生命周期中接收补丁、配置更改和软件更新。供应商推送修复。县应用更新。记忆卡在选举之间被重新编程。这是正常、合理的软件维护——而它几乎完全在公众视野之外进行。
加州2007年的自上而下审查,由加州大学计算机科学家对认证投票系统的源代码进行了检查,发现了严重的漏洞——包括恶意软件可能在机器之间传播的风险。同年进行的俄亥俄州EVEREST审查,研究了来自三家主要供应商的认证系统,得出结论认为所有这些系统都"存在关键安全漏洞",并指出审计日志通常可被它们本应监控的人伪造或删除。这些是经过认证的系统,在积极使用中,由被授予源代码的独立专家检查过。
加州和俄亥俄州的教训与咖啡县的教训相同:"它通过了认证"是问题的开始,而不是结束。
美国政府问责办公室在2005年基本上提出了这一点——在二十多年前发布的报告中——发现联邦改进投票系统安全的努力正在进行中,但关键活动仍未完成,包括建立安全软件库和共享关于漏洞的信息。其中一些差距自那以后已经缩小。结构性问题没有。
普林斯顿实验,以及为什么它仍然重要
2006年,普林斯顿研究员Ariel Feldman、J. Alex Halderman和Edward Felten获得了一台真实的Diebold AccuVote-TS——在美国各地使用的那种机器——并花了大约一分钟与它进行物理接触。他们构建的东西是一个投票盗窃病毒,可以通过记忆卡自我安装、改变计票同时保持所有内部记录一致,并在正常选举日操作期间从一台机器传播到另一台机器。
该机器已获认证。该软件已通过测试。
普林斯顿论文现已接近二十年历史,投票系统已发生改变。但结构性教训没有:如果你无法独立验证选举日运行的软件是你检查过的软件,那么检查就不能确立很多东西。
经过认证后更新、经过认证后打补丁或经过认证后复制的系统不一定是实验室测试过的系统。在大多数当前认证框架下,没有例行的、独立的、公众的检查机制。
可重现构建:改变问题的技术修复
有一个软件工程概念直接解决了这个问题。它叫做可重现构建。
这是用通俗语言说明这个想法。当软件被编译时——当人类可读的源代码被转换为在机器上实际运行的二进制文件时——这个过程通常会根据时间戳、编译器设置和其他变量每次产生略微不同的输出。这意味着即使你发布了源代码,独立方自己编译它也会获得一个与部署机器上运行的二进制文件不完全匹配的二进制文件。你无法逐字节验证运行代码与发布代码匹配。
可重现构建改变了这一点。当构建是可重现的时,任何人获取发布的源代码并按照文档化的构建过程操作都会获得完全相同的二进制文件,字节对字节。 然后你可以比较部署机器上二进制文件的加密哈希与独立编译二进制文件的哈希。如果它们匹配,你知道什么代码在运行。如果它们不匹配,什么东西改变了——而且你可以查明什么。
这不是科幻小说。Debian Linux项目自2013年以来一直在追求可重现构建。Tor浏览器实现了它们。比特币核心实现了它们。这些是真实、已部署的系统,独立方可以确认二进制文件与发布的源代码匹配。
对于投票软件,可重现构建意味着这样:在任何更新或配置更改之后,管辖区发布二进制哈希。任何人——记者、研究人员、竞选活动、选民倡导团体——都可以独立编译源代码并检查哈希是否匹配。如果不匹配,那是一个公开的、可证伪的事实。
这就是用"自己检查"取代"相信我们"的含义。不是官员检查自己系统的审计。不是认证快照。从源代码到运行机器的连续、独立、公众可验证的链。阅读更多关于此差距及真正解决方案的信息。
为什么开源是必要但不充分的
洛杉矶县的VSAP系统,2018年认证为加州首个认证的开源选票统计系统,是一个真正的积极发展。公众拥有投票软件和开源代码意味着计票过程可以由独立专家检查,而不是作为供应商商业机密隐藏。
但开源仅解决问题的第一部分:任何人都能看到源代码吗? 它本身并不回答第二部分:机器上的代码与储存库中的代码相同吗?
瑞士在2019年发现了这个边界。瑞士邮政发布了其互联网投票系统的完整源代码供公众审视——这是透明度的显著体现。独立研究人员Sarah Jamie Lewis、Olivier Pereira和Vanessa Teague阅读了它。他们发现的是一个密码陷门:知道秘密值的权限方可以生成一个通过数学验证的洗牌证明,同时实际上改变了选票。该漏洞在认证的黑盒中是不可见的。当源代码被发布并且独立密码学家查看时,它变得可发现。
发布使检测成为可能。但检测发生是因为有人仔细查看了密码证明本身——并发现证明可能说谎。
教训:开源是先决条件,不是保证。可重现构建增加了第二层——证明你阅读的代码是运行的代码。而独立密码审计增加了第三层——证明即使代码运行正确,其设计也不允许隐藏操纵。
这三者都是必要的。大多数选举系统都没有其中任何一个。
你现在无法验证的东西,以及什么会使其可检查
这里是现状,用清晰的方式说明。
当选举结束并且官员宣布结果时,你可以验证一些事情:你可以检查手工计票的纸质选票总计是否与机器总计匹配(如格鲁吉亚2020年州级手工计票所证明的,在大约百分之零点一的范围内)。你可以检查纸质选票的监管链日志。你可以观察计票。
你无法验证的是——在大多数管辖区,通过目前可用的任何公众机制——计票该选票的软件是否是测试实验室检查过的软件,或者它是否在认证和选举日之间的任何时点被修改过。
你信任的是一条你看不到的链。
解决方案并不神秘。它需要:
- 可重现构建,所以每台机器上的二进制文件可以独立地与发布的源代码进行验证。
- 已发布的哈希值,签署并加时间戳,每次软件或配置更新时——在该软件将接触的任何选举之前。
- 独立编译审计,由供应商和选举权力机构之外的方自己编译代码并验证哈希匹配。
- 选民能够阅读的纸质选票,所以无论软件做什么或不做什么,都存在一个独立的人工制品——由选民标记、人类可读、可手工计数——可以解决问题。
当前三个失败时,最后一点最重要。2020年格鲁吉亚手工计票确认了机器结果在大约百分之零点一的范围内,正是因为存在由选民标记和可读但不需要软件的纸质选票。Curling法庭对格鲁吉亚二维码系统的关切正是纸质打印件用人类无法不用机器读取的形式对计票选票进行编码——这意味着对这些选票的"手工计票"实际上是重新扫描,再次信任相同的软件链。
如果纸质无法被读取,它不充分。如果软件无法被验证,它也不充分。唯一能抵御软件替换的系统是一个其中选民标记、人类可读的记录既是计数的输入又是对计数软件的独立检查的系统。
没有州务卿的保证改变这一点。没有"审计确认了结果"的新闻稿解决这个问题。问题是系统外的任何人是否可以独立验证运行了什么。现在,在大多数地方,答案是否定的。
可分享的真理
认证告诉你软件通过了一次测试。它不告诉你选举日运行的软件是被测试的软件。该差距不是阴谋——它是一个具有已知解决方案的工程问题。为可验证性而构建的管辖区不需要你信任它们。这就是要点。
深入探索软件替换差距 | 查看全球常见的完整性差距 | 两分钟版本
资源
- Lawfare — Coffee County, Georgia发生了什么?
- 亚特兰大日报宪法报 — 咖啡县是2021年选举漏洞的所在地
- Curling诉Raffensperger案,第1:17-cv-2989-AT号,意见和裁定(北地乔州2020年10月11日)
- Feldman、Halderman和Felten — Diebold AccuVote-TS投票机安全分析(USENIX/EVT)
- 加州州务卿,自上而下审查(2007)— 决定和报告
- Diebold投票系统源代码审查(加州大学,2007)
- Sequoia投票系统源代码审查(加州大学,2007)
- Hart InterCivic投票系统源代码审查(加州大学,2007)
- EVEREST:最终报告(2007年12月7日),俄亥俄州州务卿
- GAO-05-956,《选举:改进电子投票系统安全性和可靠性的联邦努力正在进行中,但关键活动需要完成》(2005年9月21日)
- Lewis、Pereira、Teague — Ceci n'est pas une preuve(Scytl-SwissPost互联网投票系统中的陷门承诺),2019
- 加州州务卿新闻稿(2018年8月21日):认证洛杉矶县VSAP计票系统
- 格鲁吉亚公共广播 — 风险限制审计确认拜登赢得格鲁吉亚