电子投票的加密协议



民主不是一票,而是一票。
汤姆·斯托帕德

对于密码学研究人员而言,电子投票主要不与投票机相连,也不与在线投票相连-它只是数学研究的领域 。 电子投票研究涉及协议,关键数学组件,安全且可验证的投票系统的创建 ,或与独立的审核员和投票者可以安全地验证投票计数正确性有关的系统。 这些系统不是简单的理论作品,而是已经用于真实选举的真实技术:在马里兰州的塔科马公园,选民们信任基于无形墨水选票的Scantegrity II系统,密码学家们本身使用了Helios在线投票系统选举领导。

电子投票是一个极其复杂的主题,因此在本文中,我将局限于一些关键概念:安全语音验证的含义是什么,如何在不单独解决每个问题的情况下进行点票,以及阻止选民作弊的原因。 我不会全面介绍整个电子投票协议及其所有细微差别,但是希望那些人可以独立寻找有关此主题的工作, 其中有 很多

安全确认


对安全的投票系统有何期待?

首先,也是最明显的一点:您需要检查选票的计数是否正确,也就是说,每个人都可以确认最终选票是根据选民完成的选票数完成的。 除总数外,支票不应给出任何其他信息。 特别是,审阅者不能猜测谁投票。 这相当于经典的手动纸票计数。

其次,任何选民都必须确保自己的选票已被盘点并正确计数。 必须在不公开投票的情况下做到这一点,并且在更一般的情况下,选民不应能够证明自己投票的人。 这样做是为了消除胁迫,并使选民能够自由选择候选人,而不必担心其选择的后果。

最后,应该保护投票系统免遭欺诈:投票人不能多次投票,也不能更改或复制选票。 此外,只有注册选民才能投票。

总结一下:我们需要进行公众审查,选民的信心,对强制的抵制和选举的完整性。 Chaum,Neff等人在2000年代初发表的一项基础研究中提出了这些原则。

基本原则


大多数经典的电子投票协议的工作方式如下:
  1. 投票者会收到公告形式的令牌,令牌会根据自己的选择进行更改。 不同的选民会收到不同的选票。
  2. 选民对选票进行加密(使用一种特殊的加密方式,使电子投票的魔术发挥作用,然后发送该选票,以便投票组织者收到加密的选票。
  3. 组织者将其加密的新闻通讯发布在公告板上,即“带记忆的公共广播频道”,以密码学家的术语命名-简而言之,是在诸如Pastebin之类的东西上。
  4. 组织者结合加密的选票来计算缓存的结果。 然后,他们对其进行解码(但不自行投票!)并发布结果。
  5. 收到结果并加密语音后,任何人都可以检查其正确性。


安全计数:同态加密


在第4步,组织者将密码组合成一个新的密码,对各个票的总和进行加密。 为此,电子投票方案使用Enc()加密方案,您可以在其中计算Enc(v1 + v2),手头只有Enc(v1)和Enc(v2),而无需知道加密密钥。 这种加密方案称为同态加密。

例如,如果大大简化,美国选民将在11月8日执行以下操作:
  1. 他们从组织者那里收到克林顿通讯和特朗普通讯(为简单起见,我们将只考虑两名候选人)。
  2. 他们使用组织者发行的公钥作为密钥,在一张选票上写下Enc(1),在另一张选票上写下Enc(0)。


然后,加密的选票将与选民ID一起发布在公告板上。 我知道每个投票的人都知道,但是无法确切了解谁,因为每个Enc(0)和Enc(1)都是唯一的,并且我们使用了强大的随机加密技术。 如果加密是确定性的,则可能迫使选民通过再次计算Enc(0)并将其与面板上的值进行比较来显示自己的声音。

最后,组织者将对克林顿的所有选票合并起来,得到恩克的结果(克林顿的票数),然后对特朗普的选票进行同样的处理,然后得到恩克(对特朗普的票数)。 然后,他们使用解密密钥并对这两个值解密,从而宣布获胜者。

如何找到同态加密方案? 很简单-RSA和ElGamal之类的电路在基本形式上是同态的,因为它们满足方程

Enc(v1)×Enc(v2)= Enc(v1×v2)

但这并不是我们真正需要的-这是一个乘法同态,但是我们需要一个加法同态。 有一些技巧可以将RSA和ElGamal方案转变为加法同态方案,但我将展示一个鲜为人知的方案,该方案立即可加法同构方案: Paye密码系统将消息v1加密为

Enc(v1)= g v1 r1 n mod n 2

其中n = pq和g是固定的,并且r1是从[] 1开始的随机整数; n 2 [。 因此,我们有:

Enc(v1)×Enc(v2)=(g v1 r1 n )×(g v2 r2 n )mod n 2 = g v1 + v2 (r1r2) n mod n 2 = Enc(v1 + v2)

也就是说,Peye方案可用于计算加密的票数。

预防欺诈: 零披露证据


为了作弊,选民可能希望在选票中写Enc(10000)而不是Enc(1),以向候选人添加选票。 万一有恶意,可以编写Enc(very_large_number),这样会导致整个系统溢出和整个系统故障。 如何在不解密的情况下保证语音有效性(0或1)?

解决方案是非交互式零知识 (NIZK)。 NINR证明是一个非常复杂且功能非常强大的加密对象:在我们的案例中,它将允许投票者证明其加密内容包含0或1,但不显示加密消息本身。 在一般情况下,使用NINR证明可以使证明者通过仅向他发送数据集而没有任何其他类型的交互作用,从而使证明者确信声明的真实性。

Schnorr方案也许是最简单的零披露系统:假设您知道离散对数问题的解决方案( DSA和椭圆曲线加密背后的艰巨任务),并且想证明自己知道它的解决方案而不公开解决方案本身。 也就是说,您知道x使得g x = y mod p,而检查者只知道g,y和p。 为了说服审阅者,您可以玩以下游戏:
  1. 选择一个随机数r并将值g r发送到测试仪 (义务)。
  2. 您会从测试仪(致电)获得一个随机数s。
  3. 发送给验证者s = r + cx。
  4. 审阅者计算g s = g r + cx,并验证它等于g r ×y c = g r ×(g xc


在此交互式协议中,证明方不公开x的值,因为它仅发送随机数。 但是,只有知道x的证明者才能发送s,并通过最后的测试。

为了将这种交互式协议转变为非交互式协议(可以与一个数据集一起发送),需要构建NINR证明。 我们自己玩这个游戏,并假装自己是一名测试员,以便真正的测试员确保在不知道经过证明的陈述的情况下,我们无法提出NINR证明。

结论



本文讨论的主要思想:
  • 安全的电子投票系统的主要问题是公众的可听性。 这是通过在可公开访问的论坛中发布加密的新闻通讯来实现的。 选民还应该描述进行确认的机制。
  • 通过授权每个投票人一个唯一的ID并授予选民访问权限,以允许他们验证其选票1)和2)未被更改,可以确认投票的正确性。
  • 由于对强制的抵制,投票人不能因投票“错误”的候选人而受到惩罚,尤其是通过不可预测的概率加密来实现。
  • 投票的私密性是通过以下事实来保证的:未解密加密的投票,并且仅解密使用同态加密创建的结果。
  • 如果我们强迫选民使用NINR公开投票结果的加密证据,那么骗局就不会起作用。


这里描述的概念和技术可能看起来很复杂,但实际上这只是冰山一角。 您不能仅按照说明来创建安全工作的电子投票系统。 例如,我省略了一些细节,例如选民在实践中检查选票的方式,使用NINR服务器的原因等等。 最重要的是,任何安全的电子投票协议都是一件非常复杂的事情,并且充满细微差别,并且由于人为因素和组织因素,实际的实现会增加额外的复杂性。

要了解有关与电子投票主题相关的密码学的更多信息,可以研究以下优质材料:

Source: https://habr.com/ru/post/zh-CN436560/


All Articles