安全互联网轮询

信息安全 匿名 身份 电子投票
2021-09-03 15:26:54

在美国,有很多关于创建一个可以在互联网上运行的安全投票系统的讨论。我还听说通过 Internet 进行投票是不可能的。该系统需要足够安全,政治家可以根据选民的决定做出政策决定,并(合理地)确定结果没有被购买、黑客攻击或填充垃圾邮件。

所以我对安全专家的问题是:这可能吗?目前可用的最佳安全设置是什么?(代码、语言、服务器,你认为重要的一切。)

4个回答

在投票站投票肯定有好处,因为你可以强制选民被隔离。这使得互联网投票变得困难,但并非不可能。一般来说,我们需要五个属性中的一些:

  1. 选票保密- 每个选民的选择都是保密的。
  2. 完整性- 每个选民的选择都未经修改地包含在最终计票中。
  3. 不可信的平台——选民的选票应该是可靠且准确地从他们的个人计算机传输的。
  4. 强制抵抗- 选民应该能够投出他们选择的选票,即使他们在无人监督的环境中投票(对手可能站在他们的肩膀上)。
  5. DOS 预防- 系统应防止小规模和大规模 (D) DOS 攻击。

对于现场投票,我们需要 (1) 和 (2)。对于互联网投票,我们需要 (1) 和 (2) 加上 (3)、(4) 和 (5)。

选票保密

大多数当前的投票系统只能实现 (1) 选票保密。对于投票站投票,一旦您离开,您就没有 (2) 诚信,如果您使用计算机 (DRE) 投票,即使您观察一整天,您也没有 (2)。他们甚至可能会搞砸 (1):例如,如果选民到达并在登记时加盖时间戳,然后在投票时加盖时间戳,您可以将选票与选民相关联。

选票保密和完整性

端到端可验证 (E2E) 系统允许您实现 (1) 和 (2)。E2E 系统已用于政府选举中的面对面投票:马里兰州市政选举中的不诚实。对于互联网投票,仅实现 (1) 和 (2)(不是 3、4、5)的 E2E 系统包括已用于学生选举的Helios 。

这些系统通过在问题上抛出一堆密码学来工作。选民本质上是对他们的投票进行加密(在 Helios 中使用计算机时是明确的,或者如果使用纸质选票则通过一些人类可计算的操作,例如在 Scantegrity 中揭示隐藏的代码)。可以使用不完全锁定消息的加密函数:例如,您可以获取一些加密消息并在加密下将它们加在一起,然后仅解密总和(请参阅同态加密),或者您可以获取一个列表加密选票并在加密下将它们打乱,这样您就无法确定哪个选票对应于哪个选民(请参阅混合网络)。使用零知识证明可以证明计数的每一步都是正确完成的.

由于选票是加密的,它们可以在不破坏选票保密性的情况下公开发布,选民可以检查他们的选票是否未经修改地包含在最终计票中。

选票保密 & 诚信 & 失信平台

解决这三个问题的系统尚未在选举中使用,但即将举行的两次选举将使用它们:马里兰州的Remotegrity(现场投票的 Scantegrity 旁边)和挪威的系统。

这些系统使用两个技巧:假设任何一个都值得信赖的双通道,以及称为代码投票的技术。通过一个渠道(例如,邮件),选民会收到一份候选人名单,他们的姓名旁边有一个序列号和唯一代码(3 个字母数字字符)。通过另一个渠道(例如,通过他们的计算机上网),他们通过提交他们想要的候选人的序列号和代码来投票。假设计算机被入侵,它可以看到代码但不知道 (a) 哪个候选人被投票和 (b) 它想要将投票切换到的候选人(或任何候选人)的有效代码是什么事情)。它可以猜测,这可能会导致无效代码,或者它可能只是不让选民提交任何东西:两者具有相同的效果。

收到的每张选票都会公开发布。由于只有持卡人知道哪个代码属于哪个候选人,所以没有其他人知道任何人是如何投票的。选民可以检查名单以确保他们的投票成功(然后他们可以使用一些额外的步骤来锁定他们的选票)。

与其假设代码是通过邮件(恶意计算机无法读取)传递的,不如假设它们可以通过计算机传递,但以 CAPTCHA 或计算机无法读取的形式。一种方法是SpeakUp

在任何情况下,如果有人向攻击者出示他们的卡片,或者攻击者与选民亲临现场,他们可能会被胁迫。这将导致...

选票保密 & 完整性 & 抗胁迫

有两种方法可以解决强制抗性问题。一种是让选民想投多少票就投多少票,这样他们就可以覆盖以前的选票。可以使用密码学来隐藏标签,这些标签可以将来自同一选民的投票链接在一起,以便只保留一个。这种方法的问题在于,攻击者只需要等到投票期结束(投票结束前 5 分钟)来胁迫选民。

第二种方法是有真票和假票。被胁迫或出售选票的选民可以使用/出售假选票,攻击者无法区分他们。棘手的一点是要确保只计算真实选票,并丢弃假选票,而不会透露选民提交的是真选票还是假选票。像上面一样,我们可以通过在问题上投入大量加密来解决这个问题。

像这样的系统只是研究级的。没有一个被使用,甚至没有计划被使用。

一种方法称为选择在选择中,选民使用紧急密码系统。为了投票,他们提交密码。如果他们使用他们的真实密码,加密确保投票。如果他们使用一大组紧急密码中的一个,加密确保投票被丢弃。可以验证对所有选票的集合(不是针对每个单独的选票,因为这会破坏目的)正确地完成了铸造/丢弃。

因此,如果有人胁迫他们或提议购买他们的选票,选民可以当场编出一个恐慌密码(在你的脑海中很容易做到)。稍后(或者他们可能已经)他们可以用他们的真实密码投票。没有人可以将两者联系在一起。

旁白:(D)DOS

这被认为是一个不能完全解决的问题。受感染的计算机总是可以拒绝选民投票:不可信平台属性允许您检测到这一点,而不是阻止它。DOS 攻击也可能发生在网络级别,导致接收投票的服务器瘫痪。完整性属性可以检测是否有任何选票被删除或修改,但不能阻止这种情况。

唯一的解决方案是对任何 Web 服务使用标准方法。

选票保密 & 诚信 & 不可信平台 & 抗胁迫

如果我们抛开 (D)DOS 问题,这是我们可以实现的最佳系统。据我所知,设计这样一个系统是一个悬而未决的问题。将不可信平台问题的解决方案与强制抗性问题组合起来并非易事。

披露

Scantegrity、Remotegrity 和 Selections 都是我研究过的系统。

有两个(四个技术上,见下面的链接)需要解决的基本问题:

  1. 您如何防止虚假投票(强制、购买、多票等)?
  2. 您如何保护个人的选民隐私权?

要解决问题一,您需要保护投票站(网站)、网站连接、浏览网站的计算机以及进行实际投票的人。保护网站并非不可能;确保连接并非不可能;保护计算机几乎是不可能的;并通过审计和身份验证来确保投票人的安全。即 John Smith(具有身份验证凭据 xyz)在总统选举中为 Peter Doe 投票了一次。这增加了另一个问题,即您使用什么进行身份验证?这有点像网上银行的保护方式。如果出现问题,会有审计线索,银行在审查审计后纠正问题。

然而,这完全,完全,绝对使问题二无法解决。为了保护这个人的隐私,你不能知道他们投了什么,但是为了保护选举的完整性,你需要知道这个人投了什么。

Bruce Schneier 写了很多关于这个问题的文章:http ://www.schneier.com/blog/archives/2004/11/the_problem_wit.html

从家里或办公室的电脑上为高风险的选举进行互联网投票与“未解决问题”的规模相去甚远。对于海外和/或武装部队中的选民来说,这一点尤为重要,他们没有快速、可靠的方式来返回经过选民验证的纸质选票(想想潜艇:)。它被提名为DESSEC的X 奖:设计安全系统工程竞赛

Ron Rivest,“RSA”中的“R”,在 2010 年 UOCAVA 远程投票系统研讨会上就该问题发表了几个令人信服的演讲之一。您可以在此处的“议程和演示文稿”页面上查看演示文稿 http://www.nist.gov/itl/csd/ct/uocava_workshop_aug2010.cfm

这个问题比安全电子商务问题要困难得多,因为投票必须是匿名的,必须保护选民免受胁迫并防止出售选票,而且系统必须高度透明。它还涉及:

  1. 在资金充足的攻击者的震网等攻击中保护服务器安全的难度
  2. 在充满病毒和缺乏经验的用户的世界中保护客户的难度
  3. 在特别关键的一天和小时内必须启动的服务器上的 DDNS 攻击的便利性。

在回顾哥伦比亚特区最近一次互联网投票公开测试的崩溃和烧毁时,《华盛顿邮报》是正确的

在 USACM 网络投票和 UOCAVA 问题简报中查看更多信息 - http://usacm.acm.org/usacm/PDF/IB_Internet_Voting_UOCAVA.pdf

另一方面,端到端独立可验证的选举正在取得一些惊人的进展。在 E2E 选举中,巧妙的密码学和零知识方法被用来让选民真正向自己证明(但仅向自己证明)他们的选票在最终计票中被正确计算。此外,任何人都可以分析公众但匿名的所有投票的“公告板”,以查看总数是否正确添加。例如,在 2009 年的塔科马公园选举中,使用卑鄙系统的面对面选举已经证明了这一点。目前正在努力通过 2011 年 Takoma Park 选举考虑的相关“Remotegrity”项目来满足上述对远程选民的许多但不是全部要求。

E2E投票的另一个例子是免费的在线开源非专利Helios投票系统,它适用于低风险的选举(例如非营利组织的董事会,甚至是朋友之间的简单投票),其中对手不太可能发动大规模 DDOS 攻击或使用各种零日攻击来窃取选票、阻止人们投票或以其他方式扰乱选举。另请参阅 Helios 的作者 Ben Adida 的评论,在完全或部分同态加密在哪些方面有益于云?

E2E 方案在让人们发现问题方面非常成功,但从问题中恢复仍然是一个挑战。从选民的角度来看,这些计划是否会过于复杂,以及选民对他们的信任程度如何,这些问题也尚未解决。

我知道这个问题是关于美国的,但我认为德国宪法法院关于投票计算机的法院判决很重要:

德国法院关于投票计算机的判决

在德国,最高法院就投票计算机的问题裁定黑匣子投票是非法的:

Der Grundsatz der Öffentlichkeit der Wahl, der sich aus den verfassungsrechtlichen Grundentscheidungen für Demokratie, Republik und Rechtsstaat ergibt, gebietet, dass alle wesentlichen Schritte der Wahl öffentlich

大致翻译:

选举原则基于民主、共和和宪政国家的宪法决定,要求选举过程的所有重要步骤都可以由公众核实,除非宪法的其他部分要求例外。

http://www.bundesverfassungsgericht.de/pressemitteilungen/bvg09-019.html

在经典的纸质选举中,他或她可以在一个位置观看完整的投票过程:

  • 投票前投票箱为空
  • 每个人只得到一张选票(他们在名单上打勾)
  • 没有其他人加入他们的投票站
  • 点票过程可见证(电脑点票电子选票无法根据判决核实)。

还有一些问题是一个人无法轻松检查的(其他投票地点、选民名单等)。假设大多数党员都对他们自己的政党获得大量选票感兴趣,那么欺诈就变得非常困难。

是的,特殊的投票安排,例如邮寄投票和协助拆散人员的支持人员违反了这些规则。但这是被接受的,因为只有相对较少的人需要这些安排,而且他们有非常正当的理由。

互联网

那么这对基于互联网的投票意味着什么呢?

对于大规模投票,我们再次需要一种让普通人检查上述项目的方法。

无法验证电子投票的问题也同样适用。如果我投票给甲方,我所能检查的是至少有一票给甲方。所有其他给甲方的票可能都被计入乙方。

通常建议使用以下方法:每个选民都有一个随机 id。这些 ID 和选票的列表将在选举后公布。如何验证没有额外的投票?想买票的人可以在名单公布前索要id,以验证卖家投票是否正确。

另一个问题是投票的身份验证和匿名性。使用下一代身份证和两个不同的权限(一个检查投票许可和一个计算选票),可以将其存档。但是普通人无法验证这样做是否正确。

邮件投票的简单问题也适用:无法验证人们在投票时是否无人看管。因此,他们可能会被迫以特定方式(通过武力或金钱)投票。