前言
大家对于投票一定都不会陌生,相信大家都经历过学生时期五花八门的选举,而选举的重要环节就是投票,那时候的投票还是纸质投票。这种传统的纸质投票存在其自身的弊端,然后人工点票、唱票,在进行大规模选举的时候,不可避免地会消耗大量的人力和物力去实现,同时其自身也有些不可避免的缺点,如结果容易被篡改、选举过程不透明等。
随着时代的发展和科技的进步,投票的工具和形式逐渐由最初古希腊使用的“陶片”演化到纸质投票,到现在出现了电子投票。电子投票的出现致力于克服过去唱票表决耗时耗力的缺点,大幅提高了投票过程的效率和投票结果的准确性。电子投票是对密码学领域内各种知识的一种综合应用,它涉及到公钥加密体制、数字签名和数字证书、混合网络,盲签名、同态加密、秘密共享、零知识证明、与安全多方计算等多个方面的密码学知识。根据投票过程中所运用到的核心密码技术,可大致分为以下三种:基于混合网络的电子投票方案,基于盲签名的电子投票方案,基于同态加密的电子投票方案。
电子投票方案概述
从逻辑上来说,一个完整的电子投票系统包括投票者、注册机构、选票发放机构、计票机构和监票机构。其中,投票者是参与投票的主体,首先向注册机构申请合法证书;注册机构是电子投票系统的注册和审批机构, 验证投票者ID后为拥有合法ID的投票者发放合法证书;选票发放机构负责将空白选票发放给有投票资格的投票者;投票者拿到空白选票后将选票加密然后连同自己的ID和合法证书一起发送给计票机构;计票机构核查选票的合法性,并执行计票职能;最后监票机构对票的结果进行监督。其中,注册机构、选票发放构、计票机构、监票机构需要是完全可信任的,具体的电子投票方案因实际场景可能会略微有所变动,可能将一个机构的职能拓展为多个,也可能将多个机构的职能合并成为一个。
流程大致如下:
电子投票安全要求和模型
Bruce Schneier第一次对电子投票方案协议的安全要求进行了客观的定义,概括如下:
1.完全性:所有的有效投票都应被正确计算在投票结果内。
2.稳固性:不诚实投票者不能对选票进行破坏。
3.秘密性:任何选票都应该是保密的,任何人都无法将一张选票和某一投票者联系起来。
4.唯一性:只有有资格的人能提交一张合法的选票,不能重复投票。
5.合法性:在投票的中间过程,任何人的行为都无法影响投票的结果。
6.公正性:投票的中间结果不能泄漏。
7.可验证性:任何人无法伪造投票结果。
随着投票协议的不断发展,协议安全的要求也越来越丰富多样,以下是今年来被提出的新的安全要求。
1.无收据性:选民无法向其他人证明他的票投给了谁,任何其他人也无法迫使选民以某种方式投票或弃权。
2.无争议性:投票协议的定义明确且完全公开,任何人都可以验证协议的参与方是否正确执行了投票协议。
3.自计票性:任何第三方可以进行计票,不需要可信第三方或选民的参与。
4.强壮性:即使系统部分损坏,投票也能成功进行。
MENGB,WANG DJ.Secure remote network working protocol一文中对电子投票的类型做了总结:
按照形式分类:
1.yes/no:投票者填写选票的时候只有yes(同意)或no(拒绝)选项。
2.1-out-L:投票者从L个候选人中选择一个。
3.K-out-L:投票者从 L个候选人中选择K个,其中K人没有次序之分。
4.K-out-of-L order voting:投票者从L个候选人中选择K个人,并且K个人是有次序之分的。
5.1-L-K voting :投票者先从L集合中选择一个,再从对应的集合中选择K个。
6.write-in voting:在投票时,可以选择不在候选者名单中的人。
按照票的权重进行分类:
equal-voting:每个投票者投出的票的权重一样。
weighted-voting:每个投票者投出的票的权重不一样。
不同的电子投票方案
基于mixnet混合网络
1981年由Chaum首先提出了基于mix-net的电子投票方案,mix net可以保证用户在访问资源或者服务时不泄露其身份信息。它由多个 Mix 服务器串联组成,每个服务器都有自己的公私钥对,用户先将自己的投票信息按顺序用串联的mix-net服务器的公钥加密然后发送给第一级mix-net服务器,进行解密,每个服务器将上一级服务器的输出内容作为输入并在随机置换其顺序后,输出给下一级服务器。这样得到的最终输出就无法和原始输入一 一对应,从而达到匿名的效果。虽然mix-net所需要的的通信成本较小,但是需要零知识证明,因此针对大规模的投票活动,其开销较大,目前仍停留在理论阶段,难以投入实际应用。
基于盲签名
1982年Chuam首先提出了盲签名的概念,它本质上还是一种数字签名的方式,与传统的数字签名不同的是在消息内容被签名之前,与传统对于签名者来说消息内容是不可见的。举个比较形象的例子就是:先将隐蔽的文件放进信封里,任何人不能读它,对文件签名就是通过在信封里放一张复写纸,签名者在信封上签名时,他的签名便透过复写纸签到文件上。
盲签名应该具有以下性质:
1.签名者对其所签署的消息是不可见的,即签名者不知道他所签署消息的具体内容。
2.签名消息不可追踪,即当签名消息被公布后,签名者无法知道这是他哪次的签署的。
基于盲签名的电子投票方案大致如下:
1.每个选民将选票加密后盲化,对其签字后送交选举中心获取盲签名,据此获得投票的资格;
2.选民对该选票进行去盲化处理,将加密选票和选举中心的签名一同通过匿名信道发送 给计票中心。
3.选民将密钥发送给计票中心,并可检验自己的选票是否被正确计入结果,防止计票中心舞弊。
1992,日本学者 Fujilka等提出了著名的FOO电子投票方案。该方案基于RSA盲签名,保证了选票的合法性和秘密性、投票者的匿名性及投票的公平性,同时其算法易于实现、网络通信量较小,适合于进行大规模投票活动,但其本身也有一些缺陷,例如该方案不允许投票者弃票。
基于同态加密
1978年,Revist等首先提出了同态加密的概念。同态加密是基于数学难题的计算复杂性理论的密码学技术。对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。由于这个良好的性质,人们可以委托第三方对数据进行处理而不泄露信息。具有同态性质的加密函数是指两个明文a、b满足Dec(En(a)⊙En(b))=a⊕b的加密函数,其中En是加密运算,Dec是解密运算,⊙、⊕分别对应明文和密文域上的运算。当⊕代表加法时,称该加密为加同态加密:当⊕代表乘法时,称该加密为乘同态加密。
常见Paillier是加法同态,ElGamal是乘法同态,并都可基于它们构造相应的电子投票系统。假设有n个选民参与投票,选票形式为 vi∈{0,1},0 表示反对,1表示同意,计票方无须分别解密选票,而只要对所有加密选票的☉运算结果进行解密,就能获知投票结果这类方案实现容易,计票高效,但由于需要用到零知识证明,计算成本仍然较高。
主流电子投票方案的比较
电子投票与区块链
2008年11月1日,一个自称中本聪的人在一个不起眼的密码学讨论组上贴出了一篇研讨论文, 报告阐述了他对电子货币的新构想一比特币就此问世。狭义来讲, 区块链是一种按照时间顺序将数据区块以链条的方式组合成特定数据结构, 并以密码学方式保证的不可篡改和不可伪造的去中心化共享总账,能够安全存储简单的、有先后关系的、能在系统内验证的数据。广义的区块链技术则是利用加密链式区块结构来验证与存储数据、 利用分布式节点共识算法来生成和更新数据、利用自动化脚本代码来编程和操作数据的一 种全新的去中心化基础架构与分布式计算范式。
区块链具有去中心化、时序数据、集体维护、可编程和安全可信等特点。
首先是去中心化: 区块链数据的验证、记账、存储、维护和传输等过程均是基于分布式系统结构, 采用纯数学方法而不是中心机构来建立分布式节点间的信任关系, 从而形成去中心化的可信任的分布式系统。
其次是时序数据: 区块链采用带有时间戳的链式区块结构存储数据, 从而为数据增加了时间维度, 具有极强的可验证性和可追溯性。
第三是集体维护: 区块链系统采用特定的经济激励机制来保证分布式系统中所有节点均可参与数据区块的验证过程 (如比特币的 “挖矿” 过程), 并通过共识算法来选择特定的节点将新区块添加到区块链。
第四是可编程: 区块链技术可提供灵活的脚本代码系统, 支持用户创建高级的智能合约、货币或其他去中心化应用。例如, 以太坊平台即提供了图灵完备的脚本语言以供用户来构建任何可以精确定义的智能合约或交易类型。
最后是安全可信: 区块链技术采用非对称密码学原理对数据进行加密, 同时借助分布式系统各节点的工作量证明等共识算法形成的强大算力来抵御外部攻击、保证区块链数据不可篡改和不可伪造, 因而具有较高的安全性。
对于投票而言,应该公开和透明投票流程,让所有人都可以了解投票过程以及查看投票记录。虽然无纸化投票流程虽然没有了地域限制,节约了人力和物力等其他资源给很多人带来了便利,可是也给很多普通投票人查看历史记录带来技术障碍,同样现有的电子投票或者网络投票也都存在着不够透明的问题。
一直以来,解决信任危机是区块链的最大“特点”之一。而在最需要信任的投票场景中,刷票、后台篡改数据、黑客攻击等频频发生。正是区块链的去中心化和不可篡改的特点,可以使投票透明性问题和公平可验证性问题得到很好的改善。就目前而言,区块链投票系统在世界各地的使用率在逐渐增加。在区块链电子投票中,投票者可以不需要公开自己的身份,即进行匿名投票。区块链投票可以解决纸质投票和传统电子投票的存在的问题,而且更加公开,透明,公平,公正和高效。
密码学电子投票与传统投票对比
下面是基于区块链电子投票,密码学电子投票和传统投票的对比:
基于密码学电子投票方案中都需要建立在一个安全可信的第三方(TTP)计票机构来统计选票,这样对选民的隐私是个巨大的威胁。通常,保护选民隐私的电子投票协议依赖于可靠的权威机构以可验证的方式解密和计票。而对于具有自我计票的电子投票方案国外也有不少研究机构、学者进行深入研究,但大体上都没有相对成熟的方案。
阅读了一些相关的论文,发现《基于区块链的安全电子投票系统研究与设计》这篇论文(地址:https://cdmd.cnki.com.cn/article/cdmd-10336-1018253181.htm)值得我们学习和研究。论文介绍了一种的分布式EIGamal加密体制和两种零知识证明的多候选人投票方案,此方案使用的两种零知识证明协议,包括离散对数知识证明协议、合法性知识证明协议,对投票者的隐私保密性做到最大化的保护,使用智能合约能具备自我计票功能,有效取代TTP,并且在区块链技术的支持下能使投票结果公开可验证、防篡改等特性。