用于电子投票的同态加密?

信息安全 加密 密码学 同态加密
2021-08-19 11:27:23

我正在阅读关于同态加密的维基百科,其中一部分让我有点困惑:

“各种密码系统的同态特性可用于创建安全投票系统,......”

您将如何使用同态加密来保护投票过程?当然,您将无法截获结果,但是如果有人将自己的密文“注入”到选票密文中怎么办?

难道不能通过篡改加密数据来伪造选举吗?

2个回答

同态加密是电子投票协议的两种主要结构之一,但加密部分并不是整个协议。

同态加密擅长的是计数在这样的系统中,每个选民都会加密他的投票(0 或 1)。由于投票是加密的,因此可以很容易地进行管理:将投票与选民关联起来没有问题。因此,可以在公共公告板上累积选票,每个人都可以检查自己的投票是否被考虑在内,或者没有人投了两次票。当得到所有选票时,应用同态得到和的加密票数,然后解密总和;解密私钥分配给几个部分受信任的权威机构,他们只为这个单一的解密进行协作。只要至少有一个权威是诚实的,个人投票就无法解密,并且投票匿名性得以维持(我们无法知道谁投了什么)。

此类系统中的棘手部分是如何确保加密投票确实是 0 或 1 的加密,而不是其他东西的加密。依赖同态加密的电子投票的实用协议,使用非交互式零知识证明,这是相当技术性的,但归结为以下几点:对于一些非对称加密算法和在投票者本人的配合下,证明一个加密值确实是对 0 或 1 的加密,而不是对其他任何东西的加密。当然,如果没有选民本人的合作,这是无法做到的,否则这将是加密系统的严重弱点。

电子投票协议的另一个主要结构是混合网络:投票通过一系列随机打乱它们的实体(这有电子投票以外的应用,例如Tor)。使用嵌套加密,因此无法从外部跟踪改组。在最后一个混合器的输出中,投票被解密,但不能与投票者相关联,只要至少有一个混合器是诚实的。由于投票被解密,它们被简单地验证为语法正确(0 或 1,仅此而已)。另一方面,让选民相信他们的投票没有丢失,或者没有人投了两次票,变得更加困难——解决方案再次涉及一些 ZK 证明。

国际密码学研究协会在必须投票选举其董事时使用Helios Voting,它依赖于同态加密(使用ElGamal算法和 Chaum-Pedersen ZK 证明)。

你是对的,电子投票的问题是验证,而不是加密。可以在加密之前动态更改值。重要的是能够在事后检查选票。

Scantegrity已经解决了这一切,他们使用一次性键盘为每个候选人分配一个代码,该代码对每张选票都是唯一的。

样本选票

代码和选票号码是公开发布的。只需检查一小部分选票即可获得选举结果的非常高的统计可靠性。如果有差异,可以再次手工点算实物选票。

在线投票版邮寄与上述类型类似的实物选票在网站上,用户输入对应选票和候选人的代码。由于每个选票/候选人的投票选择都是独一无二的,因此恶意软件不能简单地更改投票,因为它不知道与首选候选人相对应的代码。

与 Scantegrity 一样,选票和候选人编号(但不是他们对应的候选人姓名)是公开发布的。邮件返回充当进一步验证和(在技术问题的情况下)补救步骤。