← 所有文章

如果投票计数软件由公众而非供应商拥有,会怎样?

洛杉矶县建立了加州第一个获得认证的公开所有权、开源投票计数系统——但它仍然没有解决最难的问题。以下是它证明了什么,以及没有证明什么。

2018年8月21日,加州州务卿办公室刚刚认证了一个在该州历史上从未存在过的东西:一个没有任何私人公司拥有的投票统计系统。

将为洛杉矶县约570万登记选民计算选票的软件——美国最大的选举司法管辖区——属于公众。其源代码不是锁在供应商服务器房间里的商业秘密。原则上,任何合格的工程师都可以读取、检查它,并告诉你它的作用。

这是一个真正重要的时刻。它也是一个更困难对话的开始。

使VSAP成为必要的问题

要理解为什么投票软件的公开所有权很重要,你需要理解私人所有权带来了什么。

2006年,普林斯顿大学研究人员Ariel Feldman、J. Alex Halderman和Edward Felten获得了一台Diebold AccuVote-TS——美国部署最广泛的触屏投票机之一——并与之相处了大约一分钟。那就足够了。他们证明,一个有短暂物理接触的攻击者可以安装恶意代码,在篡改所有内部日志和计数器看起来正常的同时窃取选票。他们甚至构建了一个可以自动在机器间传播的版本。运行该机器的软件是专有的。没有人可以在Diebold之外检查它。当研究人员最后获得一台时,结果并不令人放心。

专有模式产生了一个结构性问题:你不能独立验证你看不到的东西。 供应商关于其代码安全的声称不是安全的证据。依赖于供应商自身文档的政府认证不是独立审计。一个官员说"我们测试过了"不等同于公众能够测试它。

2005年,美国政府问责办公室审查了电子投票系统的安全性和可靠性,发现关键活动仍未完成——包括建立适当的认证程序和经认证软件的存储库。这是在国会通过《帮助美国投票法》并为一个整个机构拨款来监督这些系统多年之后。验证投票机是否按声称那样运作的机制仍在组建中。

"我们使用经认证的系统"是一项声称。它不是一项检查。

洛杉矶县实际建立的东西

全民投票解决方案计划——VSAP——源于对这种动态的挫折感。洛杉矶县老化的Sequoia AVC Edge触屏投票机即将报废,替代系统市场由少数私人供应商主导,其软件受专有保护。该县决定自己建立。

由加州州务卿在2018年8月21日认证的结果是VSAP Tally版本1.0——加州第一个使用开源技术的经认证选举系统,以及根据该州自己的表述,"在加州投票系统标准下认证的第一个公开拥有的、开源选举统计系统"。

该县还建立了一个开源工作组,旨在让其他司法管辖区建立在公开拥有的代码库基础上。愿景是一个公地:属于民主过程本身而非任何公司资产负债表的投票软件。

这在加州之前所有系统的架构上有所不同。它消除了专有系统不可避免造成的一层不透明。这很重要。

但值得精确说明它实际上改变了什么——以及它没有改变什么。

开源消除了一个问题。它不能消除这个问题。

以下是开源投票软件真正完成的事情:它意味着计算你投票的软件可以被任何有能力的人读取、分析和批评。安全研究人员、学术界、竞争对手供应商、外国政府、好奇的公民——他们都可以原则上检查代码并告诉你是否有什么不对。

这不是小事。这正是瑞士在2019年发现其邮件电子投票系统存在毁灭性缺陷的方式。当瑞士邮政在计划在具有约束力的投票中使用前发布Scytl构建的互联网投票系统的源代码时,独立研究人员Sarah Jamie Lewis、Olivier Pereira和Vanessa Teague分析了它,发现了一个密码学后门:洗牌证明中的一个缺陷,会让当局生成一个看起来数学有效的记录,同时默默改变了选票。该系统声称是普遍可验证的。实际上不是。瑞士邮政撤回了系统。该缺陷被发现是因为源代码是公开的。

闭源系统不能以这种方式被抓住。后门保持隐藏,直到有内部接触权的人选择——或被支付——来揭露它。

但开源是一个起始条件,而非终点。

考虑一个开源投票系统仍然必须满足的条件才能值得信赖:

首先,选举日运行的代码必须实际上是被发布的代码。 开源软件是可检查的。在特定夜晚的特定机器上运行的编译二进制是一个不同的制品。如果你不能验证已发布的源代码和运行程序是相同的——通过针对已发布代码检查的加密哈希、在部署前密封并在部署后验证——那么发布源代码是一个透明度姿态,而非保证。

其次,物理链式保管仍然管辖软件计数的东西。 在到达扫描仪之前被交换、丢失或复制的选票不关心投票统计软件有多开放。当奥地利宪法法院在2016年宣布一次总统选举无效时,不是因为软件有问题——而是因为大约77,000张邮件选票在法律允许之前被处理,由未经授权的人员,没有所需的见证人。约30,000张选票分隔了候选人。软件本可以是完美的,结果仍然不可验证,因为物理链式被破坏了。没有任何数量的开源代码能修复一个在错误的房间、错误的时间被错误的人打开的密封袋。

第三,审计输出仍然需要一份软件无法伪造的物理记录。 一个只产生数字数字的开源统计系统——没有选民验证的纸质记录,没有可独立检查的制品——仍然让你相信机器的输出。德国联邦宪法法院在其标志性2009年裁决中概括了这一点:只有当"投票和结果确定的基本步骤可以被公民可靠且无需任何专题知识地检查"时,选举才合法。读取源代码需要专业知识。计算纸质选票不需要。

审计仍然必须发生——它仍然包含错误

开源使系统在选举前可检查。审计使输出在选举后可检查。

两者都很重要。单独任何一个都不够。

乔治亚州2020年对大约500万张选票的全面手工计数确认了机器统计的结果精确到约十分之一个百分点——强有力地展示了选民标记纸张加上严肃审计程序可以实现什么。科罗拉多州在2017年成为第一个完成全州范围风险限制审计的州,建立了固定百分比抽样检查无法匹配的统计严谨性。

但审计有很少被诚实讨论的限制。

在2020年密歇根州Antrim县,一个旨在验证更正后的机器结果的手工计数与机器总数相差约12票,共约15,700票。不是因为欺诈。不是因为软件。因为手工计数是由人类在凌晨2点在荧光灯下完成的,读取有时不明确的标记,应用因表而异的判断。手工计数是黄金标准——黄金标准仍然在一个小县中相差12票。

在比那更少票数决定的比赛中,"手工计数确认了它"是一种放心。它不是证明。

在新罕布什尔州Windham,一个州下令的取证审计将一个重大误计追溯到通过选票投票目标的折叠——一个折叠机在选票上压出折痕穿过椭圆目标,光学扫描仪将其读为标记投票。没有恶意软件。没有欺诈。租赁折叠机和选票扫描仪的光学系统之间的机械相互作用,产生了数百个错误。只有因为纸张存在且手工计数可以恢复选民意图才被抓住。

教训不是"纸张失败"。教训是每种方法——机器、手工计数或光学扫描仪——都包含不可约的错误,唯一诚实的系统是一个那些错误可以被独立抓住和测量的系统,而不仅仅是官员们的放心。

"公开拥有"仍然不能告诉你什么

这是VSAP的架构师仅通过让代码公开无法完全回答的问题:谁检查它,多频繁,以及具有什么独立性?

发布源代码是必要的。除非有人实际读取它——对抗性地,目标是找到什么有问题而不是确认什么看起来正确——否则它是不充分的。巴西最高选举法院在官方年度安全测试中邀请公众攻击其投票机,具有合格的外部测试人员提交批准的测试计划,发现用于在每次选举前改进系统。这是制度化的对抗性审查——不是认证,是一项持续的挑战。这是一个"信任我们"被"尝试破坏它"替代的模式。

华盛顿特区在2010年以困难的方式发现了类似的东西:当哥伦比亚特区在部署前向公众开放互联网选票返回试点进行测试时,一个密歇根大学团队在大约48小时内获得了对服务器的接近完全控制,改变了所有已投的选票,并在数天内未被检测到。漏洞被抓住是因为测试是开放和真实的。该系统从未用于实时投票。公开对抗性测试——而非私人认证——是保护D.C.选民的东西。

VSAP的开源工作组和公共代码存储库朝这个方向迈进。但代码存储库不等同于一个制度化的对抗性测试计划,具有公开发现、强制补救和独立确认。

值得追问的问题:VSAP Tally的运行版本是否已被与该县或任何供应商没有财务关系的各方独立且对抗性地测试过?每个测试计划及其发现是否已向公众公开? 不是代码——在最后一次选举中运行的特定二进制、每张内存卡的链式保管日志、在民调开放前发布的哈希值。

这些不是修辞问题。它们是分离"开源"和"可独立验证"的清单。

从2000年到今天的连贯线

《帮助美国投票法》在2002年作为对2000年选举的联邦回应而通过,其中最高法院发现相同的穿孔卡选票被不同县的不同清点人员评估不同——戳孔选票在这里计数,在那里拒绝——没有统一的、预先发布的阅读选民意图的标准。问题不是欺诈。它是歧义烘烤在系统中,由应用不一致的人类判断解决,产生了一个取决于谁在哪个房间计数的结果。

HAVA为新设备提供资金并创建了选举协助委员会。它将投票系统要求推向联邦基准。它没有做什么——以及GAO在三年后记录的——是构建完整的独立验证机制。标准和认证只与执行它们的机构一样强大,该机构仍在组建中。

VSAP是一种不同的方法。它说:与其要求你相信供应商,我们要求你读代码。这是进步。它不是目的地。

目的地是一个任何公民都可以检查其正确性的系统——不是通过成为软件工程师,而是因为从选票到结果的证据链是防篡改的、机器可读的、并在计数完成时立即在选区级别发布。

开源统计软件是那面墙中的一块砖。选民验证纸质记录是另一块。常规、独立、对抗性审计——而非内部抽样检查——是第三块。证明已发布代码是运行代码的加密承诺是第四块。实时、选区级别、机器可读的结果,任何人都可以下载并独立核对,是第五块。

洛杉矶县建立了真正重要的东西。它也建立了仍然可以被密封房间、破坏的链式保管或没有人检查的编译二进制相对于已发布源代码所掩盖的东西。

VSAP的论证与一直以来可用的论证相同:透明度击败秘密。开放击败闭源。可检查击败相信我。 它不是完整的。而"完整"是唯一允许公众——不是供应商、不是州务卿、不是法官——确认计数是正确的标准。


仍然无法独立验证的东西:特定的编译二进制文件是否在任何选举夜在VSAP机器上运行都密码学验证对照已发布的开源代码,以及这些验证记录是否以机器可读形式公开可用。使其可检查的东西:强制选前哈希发布要求、公开对抗性测试具有公开发现,以及在每个选区的计数完成时立即发布的选区级别机器可读结果——这样任何人都可以核对它们。

查看秘密源代码差距如何在全世界展开 →

阅读可验证性问题的两分钟版本 →

探索我们的完整案例数据库 →

资源