简要总结

  • 巴西的电子投票机确实运行着一个名为 Uenux 的定制 Linux 发行版。
  • Uenux 由巴西选举机构 TSE 在 2008 年引入,此前 TSE 决定统一其投票机使用的操作系统。它是专门为投票硬件开发的,而不是把标准桌面 Linux 发行版改造后拿来用。
  • 在选民使用投票机期间,投票机不连接互联网。投票时不使用 Wi-Fi、蓝牙、蜂窝网络,也没有普通网络接口。
  • 在 2026 年总统选举中(于 2026 年 10 月 4 日举行),TSE 为超过 158 百万登记选民使用了 563,910 台投票机。

巴西的选举运行在 Linux 上

巴西使用电子投票机已有数十年。所有这些机器都运行一个基于 Linux 的操作系统,名为 Uenux,由巴西选举机构最高选举法院(TSE)开发。

图片来源:https://x.com/brunoborges

Uenux 不是普通的桌面 Linux 发行版。它包含投票机所需的内核、引导加载程序、驱动、库和应用程序。它负责启动、校验自身的数字签名、接受数字键盘输入、存储选票,并在投票结束时打印纸质报告。

它没有桌面环境,没有包管理器,也没有在用的网络协议栈。

投票机如何转向 Linux

它并非一直使用 Linux。1996 年的第一代机器是一台改装过的 IBM PC 386 兼容机,运行某家供应商提供的类 DOS 系统 VirtuOS。从 2002 年起,它运行 Windows CE,据称微软免费提供了相关许可。

2008 年,TSE 迁移到名为 Uenux 的 Linux 系统,公开目标是降低成本并完全掌控开发周期。

投票机完全隔离

投票机不是一台联网的 PC,等着别人发现某个开放服务。投票期间,机器不使用互联网、Wi-Fi 或蜂窝网络与外界通信。选民终端和投票站工作人员的终端在本地通信。

机器由两部分组成:工作人员终端,用于录入选民登记信息;投票亭内的选民终端。两者之间用一根线缆连接。

它没有互联网、Wi-Fi 或蓝牙连接,也没有相应的硬件。2026 年 8 月,TSE 在电视直播中拆解了一台机器以证明这一点。物理端口也用巴西铸币局制作的安全封条封住,这有助于显示是否有人试图打开机器。

这就消除了大多数系统中最大的风险:远程攻击者。你无法 SSH 登录一台没有网络接口的机器。

选举日:层层检查

投票前,TSE 在公开仪式上对软件进行签名和封存。每个构建版本都会得到一个哈希值,即一种指纹,程序的任何部分发生变化,它都会改变。

选举日当天,机器在启动时校验自身签名,如果某些内容被改动,按设计应当拒绝运行。随后它打印一份 Zerésima,即一张显示所有候选人票数均为零的纸质文件。

投票过程中,每个选择都存储在数字选票记录(RDV)中。它不会把选票与选民身份关联起来,选票顺序也被刻意打乱,使顺序无法被重建。RDV 还支持重新计票和审计。

机器全天保持离线。投票站关闭时,它会:

  1. 打印 Boletim de Urna(BU),即该投票站的纸质计票单,共五份。其中一份张贴在投票站。
  2. 将结果写入一张经过签名、加密的存储卡,由人送到选举办公室,在那里接入 TSE 的专用网络。

张贴出来的纸质计票单是关键检查点。如果 TSE 公布的某个投票站总数与学校门口张贴的 BU 不一致,任何有手机的人都能发现差异,各党派也可以独立汇总 BU 并核对全国总数。这可以防止 BU 打印之后的篡改,例如在传输或计票过程中发生的篡改。但如下文所述,它本身并不能证明机器计票正确。

还有另外两项检查值得区分:

  • 真实性测试:通过检查介质、签名和加密哈希,验证机器上的软件与已签名封存的软件一致。
  • 完整性测试:抽签选出机器,在摄像机和外部审计员在场的情况下,把事先填好的纸质选票输入机器,再将机器的计票结果与纸质选票比对。2024 年还加入了生物识别版本,由志愿选民解锁测试机器。

两者互为补充。前者问的是“这是正确的软件吗?”后者问的是“该软件在测试中计票正确吗?”

安全研究人员发现了什么

TSE 举办公共安全测试,邀请外部专家攻击系统。这些发现值得一读,因为它们展示了真正被攻破的地方:

  • 2009: 一名研究人员用电池供电的无线电在超过 20 米外接收键盘的电磁辐射,从而得知某人把票投给了谁。这是一次隐私泄露。
  • 2012: 巴西利亚大学的 Diego Aranha 领导的一个团队发现,所有机器共用一把加密密钥,且该密钥未受保护地存储。他们还发现选票打乱使用了一个与机器时钟相关的可预测种子,使他们能够重建某个投票站的选票顺序。这又是一次隐私泄露。
  • 2017: 研究人员在机器内运行自己的代码并修改了选票。但这需要机器封存之前接触软件加载介质,还需要逆向工程并重新签名。这使其成为内部人员或供应链路径,而不是外部人员在家里或选举日能做到的事。
  • 2018: 有人通过一名前员工的账户进入了 TSE 自己的网络,该账户从未被注销,密码很弱,也没有双因素认证。此人在网络中停留了数月,并复制了 JEDI 的源代码,JEDI 是向投票机安装软件的系统。专家报告称该访问是只读的,没有选票被改动。
  • 2021: 发现的问题包括一块 3D 打印的假面板,以及一个用于窃听视障选民音频的蓝牙设备。联邦警察专家还突破了传输网络上的屏障,但未能改动选票或配置。

这些失败大多是人为和流程性的(重复使用的密钥、未注销的账户),而不是密码学本身被攻破。而且没有外部人员在真实选举中改动过已封存机器的选票。

TSE 表示已修复这些测试发现的问题,并报告未发现任何舞弊案件。

最强烈的批评

最大的批评不是关于远程入侵或阴谋论,而是关于谁能够独立验证选票。

Diego Aranha 等研究人员认为,巴西的系统没有产生独立于投票软件而存在的选票记录。

举一个简单的例子。你投票给 Alice,但软件秘密地把你的票记为 Bob。机器随后可以打印一份显示 Bob 的 Boletim de Urna(BU)。纸质文件会与软件的结果一致,但这并不能证明机器正确记录了你选择的人。换句话说,机器在检查它自己。

这就是安全研究人员所说的软件独立性:你应当拥有某种不完全依赖软件诚实的选票证据。

这是对系统设计的批评,而不是指控巴西选举被操纵。Aranha 本人曾表示没有选举舞弊的证据。其论点只是:如果拥有足够权限的人设法破坏了软件,系统能用来证明软件没有改动选票的手段有限。

TSE 的回应是,系统有多层测试。其中最重要的一层是完整性测试,即让选定的投票机接收已知选票,并将其结果与纸质记录比对。用于测试的机器通过抽签选出,测试在选举日进行。

这是有用的证据,但它仍然只是一次测试。测试可以表明机器在这些条件下行为正确;它无法证明没有任何软件能在测试之外表现不同。

所以分歧并不真正在于投票机是否有安全控制。它们显然有。更难的问题是,这些控制是否提供了足够的独立证据,证明软件统计的正是选民实际选择的结果。

那么改变一场选举有多难?

要小心那种常见的安慰说法:攻击者必须一台一台地攻破数万台机器。对于物理篡改来说这是对的,但唯一成功的攻击路径并不是这样运作的。

软件构建或加载过程中的一处失陷——测试中唯一奏效的路径——位于所有机器的上游,因此一个单点故障就可能影响到许多机器。

真正让大规模攻击变得困难的,是围绕它的一切组合:

  • 对构建或加载过程的内部访问,会受到各党派、检察官、联邦警察和大学的检查。
  • 要躲过真实性测试、完整性测试和签名校验。
  • 要经受住纸质记录:数千份张贴出来的 BU,任何党派或公民都可以拍照并与公布的总数比对。
  • 还要让开发者、审计员、检查代码的敌对党派以及收集 BU 的人保持沉默。

这并不能使其变得不可能。没有系统是 100% 安全的。但它使攻击代价极高,也让攻击看起来不像黑客行为,更像敌对各方之间的合谋。BU 检查是普通人自己就能做的部分,而它只有在人们真正收集并比对 BU 时才有效。

结论

Linux 为机器提供了坚实、精简的基础。但薄弱之处在于系统如何配置、封存、审计和管理。

操作系统无法阻止一个组织在数十万台机器上重复使用同一把密钥,或忘记停用一个旧账户。这些是人的问题,也更难修补。

资源: