理想情况下,在线投票系统应该具备哪些属性?
安全的
- 每个选民只能投票一次
- 投票机构不能添加或删除选票而不被抓住
隐私/匿名
其他人(包括州政府)无法找到您投票的内容。
你不应该能够向其他人证明你是如何投票的,以防止买票或在胁迫下投票
特洛伊木马不应该能够改变投票
该过程应该由非专家理解/验证
我们能实现什么?
5) 非专家验证
对于在线系统来说是非常没有希望的。所需的加密货币太复杂了。但我不认为这是一个必不可少的属性。
4) 木马
我想不出在木马存在的情况下保持系统安全的方法。可以简单地尝试不拥有它们。例如,通过使用 live-cd。想不出在木马存在的情况下保持系统安全的方法。
在理想的世界中,我们至少可以实现一个提供 1)安全性和 2)匿名性的系统,不确定 3)。但是实现一个实现 1) 和 2) 的系统在实践中已经很烦人了。
如何构建这样一个系统的草图
您需要能够使用 TOR 或类似工具与投票服务器进行匿名通信。
然后,您需要将投票权与实际投票权分开。盲签名原则上允许这样做。但它们需要两个步骤:
- 将您的非匿名投票授权变成投票
- 将投票发送到投票收集服务器。
您需要小心避免允许将这两个步骤关联起来的侧信道攻击,例如通过时序或 IP。
最后,所有收到的选票列表都会被公布,允许每个选民验证他的选票是否被计算在内,并且所有选民的名单也会公布,因此非选民可以验证没有人以他们的名义投票,并且有票数不比选民多。大量选民和非选民需要对此进行验证,以确保系统安全。
此方案不提供 3),我不确定是否可以添加此属性。
如果您想避免所有对匿名的旁道攻击,即使在实践中构建这个系统似乎也很有挑战性。例如,需要在第 1 步和第 2 步之间设置足够的延迟,并且您可能需要一个慢速转发匿名器来避免流量分析。
结论
在我看来,实现一个在线投票系统甚至接近传统的纸质系统所提供的功能实际上是不可能的。所以我建议在重要的选举中使用好的旧纸,但也可以使用在线投票不太重要的选票。