随着计算机和通信技术的发展, 电子投票日益成为当今时代主要的投票方式, 已经逐步取代过去的唱票表决、纸质投票, 它以其自身高效、方便的特性而为人们所普遍接受. 一般来说, 安全的电子投票必须满足以下八个特性: 合法性、匿名性、公正性、完备性、可验证性、正当性、唯一性和无争议性. 当今的电子投票大多数都是建立在密码学基础上的, 大致可以分为以下几种类型: 以Lee[1]和Chaum[2]等设计出的方案为代表的混合网模型、以FOO[3]方案和Radwin[4]的方案为代表的盲签名模型以及同态加密模型.
基于同态加密的方案又根据其选用算法的不同而出现了以下几种方案: 基于ELGamal[5,6]和Paillier[7,8]的部分同态加密方案、基于DGHV[9]的全同态加密电子投票方案. 其中ELGamal方案和Paillier方案都可以实现多候选人投票, 但是都只能获得最终的获胜者, 不能得到具体每个人的得票数, 而且由于两种算法都是单同态加密, 计算电路深度浅, 不能大规模应用, 实用性不强; DGHV方案支持多候选人, 其安全性是基于近似GCD问题, 但仍未解决无法公开验证等问题, 而且该方案效率较低.
本文基于数字签名算法和全同态加密算法提出一种电子投票方案, 数字签名算法用于保证方案各阶段的公开可验证性, 全同态加密算法用于实现对加密选票的计算, 以此来实现在选票内容保密的情况下计算选票的目的, 实现了电子投票方案的全匿名性以及公开可验证性.
1 预备知识 1.1 数字签名算法数字签名主要是利用公钥密码学构造的密码体制, 通常包括两个部分: 签名部分和认证部分. 通常使用一对密钥中的私钥进行签名, 公钥进行验签. 本文基于ECDSA(Elliptic Curve Digital Signature Algorithm, 椭圆曲线数字签名算法)来实现方案的公开可验证性. ECDSA是基于ECC(椭圆曲线加密算法)和DSA(数字签名算法)实现的一种数字签名算法(图1), 其安全性是基于椭圆曲线离散对数问题的不可实现性[10].
1.2 全同态加密算法
全同态加密是一种可以对加密数据进行任意计算的加密技术, 具体来说, 就是在无需解密密钥的情况下, 对密文进行某种操作之后进行解密, 解密结果等于对明文做相同操作的结果. 全同态加密算法的原理图如图2所示.
2009年Gentry构造出了第一个全同态加密方案[11], 随即掀起了全同态研究的热潮, 大量的跟进工作随即出现, 其中具有代表性的全同态加密方案有: 基于整数上的DGHV方案[12]、基于RLWE的BGV方案[13]以及基于近似特征向量的GSW方案[14].
本文基于GSW方案构造计票方案. GSW方案的同态加法和同态乘法是基于矩阵上的加法和乘法. 由于原始的GSW方案只能对单比特进行加密, 不能很好的适用于大规模投票, 为了对选票进行打包处理, 在GSW方案的基础上采用SIMD (Single-Instruction-MultiPle-Data)打包技术[15], 通过该技术能够对选票进行打包, 从而实现多比特数据加密. 相较于传统的密文打包技术, 该打包技术可以只对投票人的选票整体进行一次加密, 保留一份私钥, 这在候选人数量较多的情况下, 能够极大地减少加密时间及节省密钥存储空间.
下面对相关知识进行介绍.
1.2.1 LWE问题现代密码学的基石是可证明安全, 即密码学体制本身的安全性可以规约到某个困难性假设上, 若该困难性假设是安全的, 则原密码体制安全; 反之则原密码学体制不安全. 自2005年, Oded Regev基于格构造出了LWE (Learning With Error)困难性问题[16]以来, 对于LWE问题的研究一直是密码学界的一个热点. LWE问题分为Decision-LWE和Search-LWE两个版本.
DLWE问题定义: 安全参数
RAO-GSW全同态加密算法[15]由五个算法组成, 分别为: Setup、KeyGen、Encrypt、Decrypt和Evaluate.
1) Setup(
2) KeyGen(
${{S}}: = \left[ {{{{I}}_r}|| - {{{S}}'}} \right] \in {\bf{Z}}_q^{r \times (n + r)}$ | (1) |
其中,
${{B}}: = \left( {\frac{{{{{s}}'}{{A}} + {{E}}}}{{{A}}}} \right) \in {\bf{Z}}_q^{(n + r) \times m}$ | (2) |
使
${{{P}}_{(i, j)}}: = {{B}}{{{R}}_{(i, j)}} + \left( {\frac{{{{{M}}_{(i, j)}}{{S}}}}{0}} \right){{G}} \in {\bf{Z}}_q^{(n + r) \times N}$ | (3) |
输出密钥对: 公钥
3)
${{C}}: = \left( {{{BR}} + \sum\nolimits_{i, j \in [r];M[i, j] = 1} {{{{P}}_{(i, j)}}} } \right) \in {\bf{Z}}_q^{(n + r) \times N}$ | (4) |
4)
${{SC}} = {{E}} + {{MSG}}(od q)$ | (5) |
则, 根据上式输出明文矩阵
${{M}} = {\left( {{{\left\lceil {\left\langle {{{{s}}_i}, {{{c}}_{j\ell - 1}}} \right\rangle } \right\rceil }_2}} \right)_{i, j \in [r]}} \in {\left\{ {0, 1} \right\}^{r \times r}}$ | (6) |
5) Evaluate算法包括两种: 同态加法和同态乘法.
① Add: 设输入两个密文
${{{C}}_{\rm{add}}}: = {{{C}}_1} + {{{C}}_2} \in {\bf{Z}}_q^{(n + r) \times N}$ | (7) |
② Mult: 设输入两个密文
${{{C}}_{\rm{mult}}}: = {{{C}}_1}{{{G}}^{ - 1}}({{{C}}_2}) \in {\bf{Z}}_q^{(n + r) \times N}$ | (8) |
6)方案安全性
循环安全:
该方案的安全性直接依赖于
电子投票方案中的计票操作是在正整数
${{\bf{Z}}^ + }\mathop {\longleftrightarrow}\limits^{{\text{编解码}}}{\left\{ {0, 1} \right\}^{r \times r}}\mathop {\longleftrightarrow}\limits^{{\text{RAO-GSW方案}}}{\bf{Z}}_q^{(n + r) \times N}$ |
直观上看, 直接将
例如对于两个十进制数
文献[17]中设计了一种半加器, 可以解决单比特加法计票. 但是对于本文打包的多比特选票, 该方法并不适用. 如果直接借用半加器或全加器, 由于进位次数是不可知的, 一旦发生进位就会溢出, 则会导致解码的失败, 不能有效处理该问题. 基于此, 本文借助半加器和全加器的思想设计了一种密文加法器, 以解决进位溢出导致的解码失败问题.
2.2 同态计票器原理与设计由于全同态加密算法可以对加密数据做任意功能的运算, 运算的结果解密后相当于对明文做同样运算的结果. 因此, 以下以对明文做的运算为例说明该算法, 该算法同样适用于密文计算. 首先以最简单的两个比特的加法为例:
设
类似地, 对于
$s = \mathop \oplus \limits_{i = 1}^n {a_i} $ |
${c^{(j)}} = {s^{(j - 1)}} \otimes {a_j}, $ |
${s^{(j)}} = \mathop \oplus \limits_{i = 1}^n {a_i}, j = 2, 3, \cdots, n$ |
最终可得如下结果:
$sum = {a_1} + {a_2} + \cdot \cdot \cdot + {a_n} = 2\left( {\sum\nolimits_{j = 2}^n {{c^{(j)}}} } \right) + s$ | (9) |
为了效率的提升, 使用打包技术, 具体来说, 即将第
${{{M}}_i} = \left( {\begin{array}{*{20}{c}} {m_1^{(i)}}&{\begin{array}{*{20}{c}} {}&{\begin{array}{*{20}{c}} {}&{} \end{array}} \end{array}} \\ {\begin{array}{*{20}{c}} {} \\ {} \\ {} \end{array}}&{\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {m_2^{(i)}} \\ {} \\ {} \end{array}}&{\begin{array}{*{20}{c}} {} \\ \ddots \\ {} \end{array}} \end{array}}&{\begin{array}{*{20}{c}} {} \\ {} \\ {m_u^{(i)}} \end{array}} \end{array}} \end{array}} \right)$ |
其中, 下标
$sum = {M_1} + {M_2} + \cdot \cdot \cdot + {M_v}\\ = 2(\sum\nolimits_{j = 2}^v {{{{C}}^{(j)}}} ) + {{S}} $ | (10) |
其中:
${{S}} = \mathop \oplus \limits_{i = 1}^v {M_i}$ |
${{{C}}^{(j)}} = {{{S}}^{(j - 1)}} \otimes {{{M}}_{(j)}}, j = 2, 3, \cdots, v$ |
${{{S}}^{(j)}} = \mathop \oplus \limits_{i = 1}^j {{{M}}_i}$ |
其中,
在满足电子选举公平性、唯一性、匿名性等八个基本特性的基础上, 本方案根据上述数字签名算法进行身份验证; 采用上述同态加密算法, 对选票进行打包, 同时对加密的选票进行计算, 最后通过解密得到最终投票结果. 方案实体交互图如图4.
3.2 系统初始化
方案中的实体: 注册中心、投票中心、计票中心使用ECDSA签名算法生成签名所需的密钥对, 这些实体用自己生成的公钥请求认证中心(CA)生成证书, 认证中心(CA)根据业务准则对这些实体的身份进行认证, 确认收到的公钥确实为这些实体本身所有, 认证中心用自己的私钥对实体的公钥施加数字签名并生成证书, 认证中心公布这些实体的数字证书, 数字证书中包含这些实体的身份信息以及自己的公钥.
其中签名所需密钥对的生成过程为: 设ECDSA数字签名算法的域参数为
签名算法
① 选择一个随机数
② 计算
③ 计算
④ 计算
⑤ 计算
⑥ 对消息
验证算法
① 检验
② 计算
③ 计算
④ 计算
⑤ 计算
⑥ 如果
各个实体的密钥对如下:
注册中心:
投票中心:
计票中心:
由于投票人的身份信息不需要对外公布, 故投票人采用ECDSA算法生成自己的密钥对, 由自己保留, 不需要到认证中心进行认证. 投票人的密钥对为:
此外, 认证中心需要根据描述的同态加密算法中的密钥生成算法以及候选人的数量来生成投票密钥对, 投票密钥对如下: 公钥
投票人需要使用自己的身份材料在注册中心进行注册, 注册中心会根据投票人递交的身份信息验证该投票人是否具有投票权以及是否为首次投票, 一旦验证通过, 则投票中心向该投票人发放与身份信息无关的唯一身份标识
$I{D_{{V_i}}}||{B_{{V_i}}}||SI{G_R}(I{D_{{V_i}}}||{B_{{V_i}}})$ |
投票人对收到的签名进行验证, 若验证通过, 确实为来自注册中心的合法签名, 则投票人保存
假设投票人需要对
$\left( {\begin{array}{*{20}{c}} {{m_1}}&{}&{}&{\begin{array}{*{20}{c}} {}&{} \end{array}} \\ {}& \ddots &{}&{\begin{array}{*{20}{c}} {}&{} \end{array}} \\ {}&{}&{{m_i}}&{\begin{array}{*{20}{c}} {}&{} \end{array}} \\ {\begin{array}{*{20}{c}} {} \\ {} \end{array}}&{\begin{array}{*{20}{c}} {} \\ {} \end{array}}&{\begin{array}{*{20}{c}} {} \\ {} \end{array}}&{\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} \ddots &{} \end{array}} \\ {\begin{array}{*{20}{c}} {}&{{m_r}} \end{array}} \end{array}} \end{array}} \right) \in {\left\{ {0, 1} \right\}^{r \times r}}$ |
通过以下方式实现对选票的加密:
${{C}} = {{BR}} + \sum\limits_{i, j = [r];M[i, j] = 1} {{{{P}}_{(i.j)}}} $ |
投票人用自己的公钥对身份标识
$I{D_{{V_i}}}||{B_{{V_i}}}||p{k_o}||{C_i}||SI{G_O}(I{D_{{V_i}}}||{B_{{V_i}}})$ |
投票中心收到上述信息后, 首先根据投票人发送的签名信息和公钥验证投票人的签名是否合法, 若合法, 则使用注册中心的公钥验证
$S||C^{(i)}||SI{G_V}(I{D_{{V_i}}}||{B_{{V_i}}}||{C_i})$ |
待投票截止后, 计票中心从公示中心获得所有选票, 并根据投票中心的公钥验证
计票中心使用投票私钥对投票结果
(1)合法性. 在注册阶段每位投票人都会使用自己的身份材料去注册中心进行注册, 注册中心会对投票人的身份信息进行审核, 只有通过审核的投票人才能参与投票.
(2)匿名性. 首先在投票人通过注册中心的审核后, 注册中心会给投票人发放一个和自己身份信息无关的身份标识, 这样很好的隐藏了投票人的真实身份信息; 其次, 在投票阶段, 投票人利用同态加密方案中的公钥对选票进行加密, 因此, 除了投票人本身, 其他任何人都不能通过加密的选票获得选票的真实内容, 也不能将选票和投票人的身份对应起来.
(3)唯一性. 首先在注册阶段, 通过注册中心认证的合法投票人会获得唯一投票标识, 因此, 每位投票人只拥有一次投票机会.
(4)公正性. 在本方案中, 投票私钥由计票中心持有, 计票中心在计算选票之后, 使用该私钥进行解密, 得到最终结果. 由于同态加密算法是对于密文进行计算, 因此该计算可交给任何一个可信第三方, 因此保证了方案的公正性.
(5)完备性. 在投票阶段, 投票中心首先会根据注册中心的信息对投票人的身份进行认证, 保证投票人身份合法, 其次会根据投票人的投票编号来检查选票的唯一性, 而且通过使用数字签名技术可以对选票内容的完整性进行验证, 只有全部通过上述认证的选票才会被投票中心正确的统计, 如若有一项没有通过验证, 则会被丢弃, 最终的计票结果只会统计合法选票.
(6)可验证性. 在投票阶段, 投票中心将收集到的选票公布在了公示中心, 每位投票人都可以根据公告栏上的信息和自己持有的信息进行比对, 以确认自己的选票是否有被正确统计.
(7)正当性. 方案的每个阶段都会进行身份认证来防止恶意的投票者破坏投票.
(8)无争议性. 由于本方案是基于ECDSA和全同态加密, 因此方案的安全性是可证明的, 方案中的各方的公钥都是公开的, 任何投票人或第三方都可验证方案过程的正确性.
5 结束语本文基于ECDSA数字签名算法和基于LWE的同态加密方案提出了一种多候选人电子投票方案. 在该方案中, 利用安全性较高, 密钥长度短的签名算法进行身份认证, 从而提高了认证效率. 而且还使用SIMD技术对选票进行打包, 节省了计算成本; 设计了一种同态计票器解决计票中存在的编解码问题; 在计票阶段直接对密文进行计算, 确保了选票的完全保密, 本方案是一个匿名的可公开验证的安全可行的电子投票方案.
[1] |
Lee B, Boyd C, Dawson E, et al. Providing receipt-freeness in mixnet-based voting protocols. In: Lim JI, Lee DH, eds. Information Security and Cryptology–ICISC 2003. Berlin, Heidelberg: Springer, 2004. 245–258.
|
[2] |
Chaum D, Ryan PYA, Schneider S. A practical voter-verifiable election scheme. In: De Capitani Di Vimercati S, Syverson P, Gollmann D, eds. Computer Security–ESORICS 2005. Berlin, Heidelberg: Springer, 2005. 118–139.
|
[3] |
Fujioka A, Okamoto T, Ohta K. A practical secret voting scheme for large scale elections. Proceedings of the Workshop on the Theory and Application of Cryptographic Techniques: Advances in Cryptology. Queensland, Australia. 1992. 244–251.
|
[4] |
Radwin MJ. An untraceable, universally verifiable voting scheme. Seminar in Cryptology. 1995. http://www.radwin.org/michael/project/voting.pdf.
|
[5] |
Kim K, Kim J, Lee B, et al. Experimental design of worldwide internet voting system using PKI. SSGRR, 2001.
|
[6] |
杨婷婷, 林昌露, 张胜元. 安全的多候选人电子投票方案的改进. 福建师大学报(自然科学版), 2015, 31(3): 32-38. |
[7] |
Anggriane SM, Nasution SM, Azmi F. Advanced e-voting system using Paillier homomorphic encryption algorithm. 2016 International Conference on Informatics and Computing. Mataram, Indonesia. 2017. 338–342.
|
[8] |
黄仕杰, 洪璇. 基于同态实现多候选人的电子投票方案. 计算机应用与软件, 2017, 34(3): 284-288. DOI:10.3969/j.issn.1000-386x.2017.03.051 |
[9] |
朱正阳, 刘镪, 唐春明, 等. 基于LWE同态加密的电子投票方案. 信息网络安全, 2013(5): 8-11. DOI:10.3969/j.issn.1671-1122.2013.05.003 |
[10] |
Johnson D, Menezes A, Vanstone S. The elliptic curve digital signature algorithm (ECDSA). International Journal of Information Security, 2001, 1(1): 36-63. DOI:10.1007/s102070100002 |
[11] |
Gentry C. Fully homomorphic encryption using ideal lattices. Proceedings of the Forty-first Annual ACM Symposium on Theory of Computing. Bethesda, MD, USA. 2009. 169–178.
|
[12] |
Van Dijk M, Gentry C, Halevi S, et al. Fully homomorphic encryption over the integers. Gilbert H. Advances in Cryptology–EUROCRYPT 2010. Berlin, Heidelberg: Springer, 2010. 24–43.
|
[13] |
Brakerski Z, Gentry C, Vaikuntanathan V. (Leveled) fully homomorphic encryption without bootstrapping. Proceedings of the 3rd Innovations in Theoretical Computer Science Conference. Cambridge, MA, USA. 2012. 309–325.
|
[14] |
Gentry C, Sahai A, Waters B. Homomorphic encryption from learning with errors: Conceptually-simpler, asymptotically-faster, attribute-based. Canetti R, Garay JA. Advances in Cryptology (CRYPTO 2013). Berlin, Heidelberg: Springer, 2013. 75–92.
|
[15] |
Hiromasa R, Abe M, Okamoto T. Packing messages and optimizing bootstrapping in GSW-FHE. In: Katz J, ed. Public Key Cryptography (PKC 2015). Berlin, Heidelberg: Springer, 2015. 699–715.
|
[16] |
Regev O. On lattices, learning with errors, random linear codes, and cryptography. Proceedings of the Thirty-seventh Annual ACM Symposium on Theory of Computing. Baltimore, MD, USA. 2005. 84–93.
|
[17] |
王永恒, 徐晨, 陈经纬, 等. 基于HElib的安全电子投票方案. 计算机应用研究, 2017, 34(7): 2167-2171. DOI:10.3969/j.issn.1001-3695.2017.07.055 |