前言
最近接到项目要做区块链投票系统,集中调研了下相关的知识,做这里做下简要的记录。区块链电子投票系统拆开看是两个问题:
- 什么是电子投票系统?
- 区块链能给电子投票系统带来什么?
什么是电子投票系统?
先来看第一个问题,什么是电子投票系统?根据维基百科-电子投票的定义:
电子投票,是一种投票设备,使用者直接按钮,就可以投票给自己所支持的候选人。
电子投票技术可以包括穿孔卡,光学扫描投票系统和专用投票亭(包括独立的直接记录电子投票系统或DRE)。它还可以涉及通过电话,私人计算机网络或互联网传送选票和投票。
以上可以看出,从投票地点的限制可以将电子投票分为两种:
- 在指定地点(比如投票站)通过指定设备进行投票
- 在任意地点通过互联网传送选票和投票
传统投票流程
可能有同学会问,为什么投票地点的限制要单独拿出来讲,这个很重要吗?先来看传统投票的过程。
传统投票都是在票站进行,主要分以下几个步骤
- 选民来到票站,首先进行身份验证并登记
- 领取选票,进入一个不受监控的隔间,打开信封,填写选票,并装回信封
- 将封好的选票投入一个透明的票箱
- 投票结束后,将票箱中选票进行充分混合,开始计票
传统投票的安全性
通常认为,投票过程有四个重要的安全要求,只有这些要求都被满足时,才能保证投票的安全:合法性、抗审查、秘密性、抗胁迫。可以总结为以下主要特征:
- 秘密性(Confidentiality):除投票者自身外,其他人都不能知道他选票的内容。
- 合法性(Eligibility):只有合法的投票者才能进行投票。
- 唯一性(Uniqueness):每个合法的投票者只能投一票。
- 公平性(Fairness):投票完成之前,任何人不能获知投票的结果,包括中间结果。
- 无收据性(Receipt-Freeness):投票者不能向第三方证明自己选票的内容。
- 匿名性(Anonymity):除投票者自身外,任何人都不能将某张选票与某个投票者
- 可验证性(Verifiability):可以验证投票结果的正确性。
联系起来。
对照上一节传统的投票流程:
- 票站入口处的身份验证和验票时的有效性验证,保证了选票的合法性、唯一性
- 选票的纸质存档保障了可验证性
- 领取选票、填写、封口都在独立的、无监控不可拍照的隔间中进行,保障了匿名性
- 开票前的票箱会被有意混淆,打乱其中选票顺序,保障了不能根据身份验证的顺序推导出投票的内容
- 投票后无收据,无拍照,保障了抗胁迫性(无法向他人证明自己的投票内容)
电子投票的安全性
前面提到电子投票分两种,在指定地点(票站)投票和通过互联网投票。
- 在指定地点投票与传统投票的区别只是取消了纸质投票,票站依然保留,选民只要在一个投票机上填写选票即可。但因为无纸质存档,安全性会变得更有挑战。美国和俄罗斯前几年都发生过大选投票系统被攻击的案例。同时如何向广大并无技术背景的选民证明系统的可靠性也是一大难题。
- 互联网投票会让事情变得更加复杂。脱离了票站这个安全的物理环境,通过无收据性来保障无贿选和抗胁迫变得没有意义,选民可以通过设备录屏等方式变相取得投票的收据,胁迫投票也就变得可以实现。
所以为什么投票地点的限制要单独拿出来讲,因为这个真的有点无解。
电子投票做了些啥?
虽然有个目前无解的bug,但还是看下目前电子投票系统都做出来了些啥。需要了解以下知识:
- 公钥密码
- 同态加密(支持加法同态的 Paillier 算法)
- 门限同态加密
- 相同指数证明
- 盲签名
- 混合网络
- 零知识证明
- 单向散列函数
- 数字证书
同时在传统投票系统的基础上,还对电子投票系统提出了新的要求:
- 广义可验证性(Universal Verifiability):任何人都可以验证投票结果的正确性,
包括非参与者。
概念不逐个展开写了,后面有空再补,大家感兴趣可以查一下。电子投票雏形源于Chaum于1981年提出的公钥密码体制,通过密码技术和计算机网络完成投票。1985年Cohen等提出了同态加密技术方案,构造电子投票,主要解决了匿名性和广义可验证性问题。同态加密技术成了构造电子投票的主要工具之一。Fujioka在1992年提出了著名的FOO92方案,引入了盲签名技术,解决电子投票的匿名性问题。无收据性概念是1995年Benaloh等人提出,用来解决买卖选票或者强迫投票等对投票活动有较大威胁的问题。Cramer使用门限同态加密、相同指数证明等技术试图构造一个同时满足广义可验证性和无收据性的方案,但是这个方案最终被证明并不满足无收据性。Lee在 Cramer 的方案基础上引入一个可信第三方作为验证者,使得改进后的方案满足无收据性,但是这个方案中的无收据性完全依赖于对可信第三方的高度信任。为了降低对可信第三方的信任依赖,研究者们设计了一些新的改进方案,利用多个实体共同参与相互监督的办法来分割权力。
总结一下就是大家想了许许多多密码学相关的算法来解决电子投票系统中需要的匿名性、广义可验证性、无收据性等问题。但是最终绕不过一个可信的第三方,为了解决这个问题,大家甚至想到了将第三方拆成了第三方们,提高了作弊的门槛。
区块链能给电子投票带来什么?
我理解区块链有三个主要技术:
- p2p(peer to peer)
- 链式结构
- 共识算法
对应三个主要特点
- 去中心化
- 数据不可篡改
- 数据公开可查
前面提到了电子投票系统的广义可验证性,可信的第三方,大家想到了啥?解决这个问题,妥妥的是区块链的强项呀!好,那接下来我们看区块链能给电子投票带来什么。
区块链天然适合用来做电子投票的公告板,所有数据上链为其带来广义可验证性以及不可篡改性。如果配合同态加密以及零知识证明算法等密码学技术,可以实现匿名的投票系统。下图展示了一种基于区块链匿名投票的详细流程,主要用到了RSA盲签名、Paillier算法,图中所有上传,指的是上传数据到区块链(摘自《基于区块链的匿名投票系统研究》,详细算法可参考原文3.3节,作者陈萍,2020)
我们的选择
看过以上的区块链投票方案后,结合国内的监管要求以及实际情况,我们决定不做完整意义上的区块链投票应用。从以下两个方面说明:
-
强监管
国家在大力发展区块链的同时,要求区块链应用可管可控(区块链技术可提高数据可信性和安全性),无论是腾讯的至信链,还是阿里的蚂蚁链,都不存在严格意义上的公链,都无法让用户通过个人钱包直接对链发起操作,都要通过企业或者开发者作为第三方中转进行上链操作,所以是伪去中心化,但是因为腾讯或阿里作为区块链技术提供方,分隔了第三方对链的直接操作,且用阿里或腾讯的信用作为背书,保障了可管可控模式下的不可篡改。 -
无必要
我们的投票应用主要用于小区业主进行表决,事项没必要做到无回执和完全匿名,可验证和可追溯是更重要的。无回执反而让用户觉得很奇怪,为什么我投了却看不到结果,教育成本会比较高。而且脱离了无保护的物理空间,无回执性变得没什么意义,录屏投票就可以变成新的取得回执手段。 -
追溯门槛高
向一个完全没有计算机和密码学基础的人解释如何在区块链上追溯和验证投票的正确性,基本上不可能。反而不如一个蚂蚁链发的可信存证证书来的实在,用户只要知道我的信息存证了,有证书、可验证。系统能做到能向监管机构证明,支持审计就可以了。
所以结合国内的区块链监管环境,我们选择用蚂蚁的可信存证链服务,虽然不是严格意义上的区块链投票,但是信息国内司法认可,用户对证书感知强烈,信息链上加密、不可篡改。
下图是我们的投票存证流程示例:
通过以上流程,做到了决议内容、投票人员、投票内容、投票结果全部上链存证。上链文件内容可通过文件原文和存证Hash到支付宝平台做验证,示例如下:
验证示例
文章来源:https://www.toymoban.com/news/detail-782119.html
文章来源地址https://www.toymoban.com/news/detail-782119.html
遗留问题
- 国内在以太坊链上建应用合法吗?
到了这里,关于区块链投票系统概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!