基于哈希函数和公钥加密的电子投票系统
2017-03-13南京航空航天大学计算机科学与技术学院刘林武
南京航空航天大学计算机科学与技术学院 刘林武 张 弛
基于哈希函数和公钥加密的电子投票系统
南京航空航天大学计算机科学与技术学院 刘林武 张 弛
电子投票系统因其方便性、匿名性、安全性,正在得到越来越广泛的应用。本文提出一种基于网络的电子投票系统,使用哈希函数确保选票的完整性,借鉴公钥加密体制,使用投票人密钥对来认证选票的有效性,利用计票服务器密钥对来加密保护选票内容。该系统保证了保护了选举人的隐私,确保了投票的可信度和安全性。
电子投票;哈希函数;公钥加密
1 引言
自从民主制度诞生以来,出现了各种形式的投票形式。随着互联网的迅速发展和民主政治的快速推进,电子投票系统正在得到广泛应用。早在2005年,基于互联网的电子投票就已经在爱沙尼亚举行。在荷兰,电子投票机已经使用了将近20年,大部分荷兰人使用DRE(Direct recording equipment)进行投票。到2006年,荷兰90%的选票是通过电子投票系统投出的[1]。电子投票系统方便了投票人,有得于提高投票率和快速得到投票结果。(Taha Kh. Ahmed, 2011)。电子投票系统将会得到越来越广泛的应用,极大地提高投票的效率、降低投票成本。因此,本文提出了一种安全高效的基于网络的电子投票系统。
2 传统投票机制
在电子投票系统发明以前,普遍采取的是传统的纸质投票。文献[2]中给出传统的投票流程,其具体过程如下:
图1 传统投票过程
(1)认证。通过出示选民证来认证选民身份。这一步通常由选举官公开进行确认。认证通过后,选举官给选民一张空白选票。
(2)投票。投票在受保护的投票棚里进行,防止其它人窥视选民。选民使用笔在选票上勾选候选人,然后将选票折叠后塞入投票箱。箱中的选票都是混杂无序的。
(3)计票。在投票截止日期之后,选举官收集分布在不同地点的所有的票箱,然后将它们集中到计票中心。在监票人的监督下,选举官统计所有选票然后公布计票结果。
传统的投票机制需要很长的准备时间,耗费大量的选票用纸,需要动用大量的人力到各个投票点,需要很多警力维持投票秩序。投票和计票过程中大量的人工参与,很容易引发贿选和失误。因此,有必要使用更加快捷安全的电子投票系统。
3 基于网络的电子投票系统
基于网络的电子投票系统,投票人使用网络进行投票。投票人不受地理位置限制,不用亲自前往投票站投票,可以在家里,在办公室,学校,甚至在国外进行投票,这极大地方便了很多行动不便的人士和因其它愿意不能前往投票站投票的人士,而且不受时间限制,有助于提高投票率,基于网络的电子投票系统可以防止选票内容被篡改、泄露,可快速得出计票成果。基于网络的电子投票系统应该满足以下要求:
(1)普适性:所有选民都有权力和能力去使用该投票系统。
(2)真实性:只有符合资格的人员才可以参加选举,不能让不具备选民资格的人冒充他人投票。
(3)匿名性:不能将选民和他所投的选票产生关系,也即无法得知选民的投票内容。投票者的隐私必须在选举期间和选举后很长一段时间内都得到保密。
(4)唯一性:一个选民在一次选举中只能投票一次,不能反复多次投票。
(5)精确性:所有选票都能精确地被记录,不会被删除、篡改。
(6)易用性:电子投票系统应该简单易用,对选民没有另外的技术要求,包括盲人,残疾人,老年人,行动不便的人,都能轻易地使用到该系统。
(7)自由性:选民有权按照自己的意愿投票,不被他人或政府或其它机构强迫。
(8)可审计性:该系统应该能确保的选票都被正确地统计,而且能被负责的选举官员的审核。
(9)低成本性:该系统不能过于昂贵,不能在购买、使用和维护时耗费巨大的财力和人力。
(10)健壮性:系统应该安全,难以被黑客攻击或不法官员作弊,确保选举结果的正确可信。
4 基于哈希函数和公钥加密的电子投票系统
4.1 单向哈希函数
单向哈希函数,也称做“消息摘要”,把任意长度的输入,通过哈希算法,转换成固定长度的输出,也即“散列值”。不同的输入经过哈希后可能会得到相同的输出,但不可能从散列值来唯一确定输入值,这相当于对要发送的消息添加了“电子指纹”。一般地,在非安全信道上传输信息时,为了检测在传输过程中信息是否被篡改,可以用哈希函数来确认信息的完整性[3]。
4.2 公钥加密机制解释
公钥加密思想由WhitField和Martin Hellman以单向函数为基础,于1976年提出。
它使用成对使用的一组加密密钥E和解密密钥D。用加密密钥D加密后所得的信息,只能由解密密钥E才能解密。可以选择公开E或D。
(1)公开E。比如,网上银行会向所有用户公开E,自己持有D。用户使用E加密自己的帐户信息,这个信息只能由使用D解开,其它人由于没有D,因此无法对帐户进行解密,这样保证了帐户信息的安全。
(2)公开D。比如,软件商A使用自己的私有E对软件加密后(相当于数字签名和数字证书)发布,用户如果能用公开的D对其解密,说明该软件的确是由A发布的,而且没有被篡改过。
4.3 电子投票系统
为了对选票内容进行保密,防止选票在通信传输、存储过程中被拦截,需要行加密处理。密钥管理中心生成两种密钥对:
计票服务器密钥对:
公钥:cpbk(Counting server public key)
私钥:cprk (Counting server private key)。
投票人密钥对:
公钥:vpbk(voter public key)
私钥:vprk (voter private key)
投票开始前,要确保投票人终端和各服务器之间建立了可靠的SSL连接。工作流程如下:
图2 电子投票系统结构图
(1)投票人登录电子投票系统,资格认证服务器对投票人进行认证。
(2)认证通过后资格认证服务器向投票人发送候选人列表。
(3)投票人进行投票,投票内容经哈希处理、计票服务器公钥cpbk加密、投票人私匙vprk加密(相当于数字签名),然后发送到资格认证服务器。
(4)资格认证服务器接收加密后的选票并转发给选票存储服务器。
(5)选票存储服务器接收已加密处理的选票。如果能用投票人公匙vpbk解密,说明这是该投票人的合法投票。否则为无效投票。
(6)向资格认证服务器发送回执并由它转发到投票人
(7)选票存储服务器将选票安全可靠地存储,待选举结束时将所有选票转发到计票服务器。
(8)计票服务器使用自己的私钥cprk对选票进行解密,然后进行票数统计,最后公布计票结果。
在步骤3中:使用哈希函数,是为了防止选票内容被篡改;使用计票服务器公钥加密,是为了防止选票被窥视泄露;使用投票人私钥加密,是为了进行对选票进行认证,证明其确实为该投票人所投。
5 结束语
本文通过分析传统投票过程,指出了其不足,给出了电子投票系统应满足的优点并设计了一种电子投票系统。该系统利用哈希函数确保选票在传输、存储过程中不被篡改。使用公钥加密体制,完成对选票加密,可以对选票合法性进行认证,防止重复投票和冒充他人投票,同时保证了选票的保密性。将来,考虑开发基于移动APP的电子投票系统。
[1]Pujol-Ahull,Jordi,Jard,et al.TTP smartcard-based elgamal cryptosystem using threshold scheme for electronic elections[C]// Foundations and Practice of Security-,Canada-France Mitacs Workshop,Fps 2011,Paris,France,May 12-13,2011,Revised Selected Papers.DBLP,2011:14-22.
[2]Ahmed T K,Aborizka M.Secure Biometric E-Voting Scheme[M]//Intelligent Computing and Information Science.Springer Berlin Heidelberg,2011:380-388.
[3]Ragab A H M,Ismail N A,Allah O S F.An efficient message digest algorithm(MD)for data security[C]//IEEE Region 10 International Conference on Electrical and Electronic Technology.IEEE Xplore,2001:191-197 vol.1.
刘林武(1986—),江西吉安人,南京航空航天大学硕士研究生。