CN114629660A - 一种基于区块链的匿名可信投票方法、装置及相关设备 - Google Patents

一种基于区块链的匿名可信投票方法、装置及相关设备 Download PDF

Info

Publication number
CN114629660A
CN114629660A CN202210422851.XA CN202210422851A CN114629660A CN 114629660 A CN114629660 A CN 114629660A CN 202210422851 A CN202210422851 A CN 202210422851A CN 114629660 A CN114629660 A CN 114629660A
Authority
CN
China
Prior art keywords
tuple
voting
signature
commitment value
tuples
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210422851.XA
Other languages
English (en)
Other versions
CN114629660B (zh
Inventor
肖勇
欧家祥
罗奕
胡厚鹏
钱斌
何沛林
周密
邓玥丹
王吉
董天强
李富盛
李鹏程
张帆
肖艳红
林晓明
龙高翼
唐建林
何坤林
刘朝英
李航峰
陈泽瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CSG Electric Power Research Institute
Guizhou Power Grid Co Ltd
Original Assignee
CSG Electric Power Research Institute
Guizhou Power Grid Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CSG Electric Power Research Institute, Guizhou Power Grid Co Ltd filed Critical CSG Electric Power Research Institute
Priority to CN202210422851.XA priority Critical patent/CN114629660B/zh
Publication of CN114629660A publication Critical patent/CN114629660A/zh
Priority to PCT/CN2022/116770 priority patent/WO2023201962A1/zh
Application granted granted Critical
Publication of CN114629660B publication Critical patent/CN114629660B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C13/00Voting apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/42Anonymization, e.g. involving pseudonyms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • H04L2209/463Electronic voting

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种基于区块链的匿名可信投票方法、装置及相关设备,该方法包括:对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure DDA0003608642210000011
结合其他各投票人的信息对承诺值
Figure DDA0003608642210000012
进行盲化处理,得到承诺值元组
Figure DDA0003608642210000013
Figure DDA0003608642210000014
通过ESDSA算法对承诺值元组
Figure DDA0003608642210000015
进行签名,得到签名元组
Figure DDA0003608642210000016
基于承诺值元组
Figure DDA0003608642210000017
签名元组
Figure DDA0003608642210000018
以及其他各投票人的签名元组
Figure DDA0003608642210000019
构建投票元组
Figure DDA00036086422100000110
并将投票元组
Figure DDA00036086422100000111
以及承诺值元组
Figure DDA00036086422100000112
上链,所述投票元组
Figure DDA00036086422100000113
用作投票阶段的投票内容;其中,签名元组
Figure DDA00036086422100000114
为其他各投票人对签名元组
Figure DDA00036086422100000115
进行验证,且在验证通过后生成的;承诺值元组
Figure DDA00036086422100000116
用于对所述投票元组进行解密。本申请通过上述处理过程,实现了投票内容隐藏、投票匿名及可验证。

Description

一种基于区块链的匿名可信投票方法、装置及相关设备
技术领域
本申请涉及区块链技术领域,更具体地说,是涉及一种基于区块链的匿名可信投票方法、装置及相关设备。
背景技术
智能电网系统的快速发展催生了一种名为“能源互联网”(IoE)的现代电力系统,引起了许多国家的极大兴趣。作为能源问题的互联网式解决方案,IoE有许多关键技术和挑战需要解决。其中,投票是IoE中最常见的活动之一。例如,我们可以通过电子投票选择一个合适的能源经纪人。虽然有很多电子投票方案,但IoE中的方案有更严格的要求。
除了电子投票方案的一些常见要求,如正确性、合格性和抗胁迫性等,在IoE中部署投票服务时,还需要满足去中心化、匿名性、可验证性和效率等要求。首先,由于IoE的开放和分布式性质,在没有任何类型的可信第三方(TTP)的情况下处理投票是很重要的;其次,提供足够的投票人匿名性也是至关重要的,因为在IoE的点对点市场中,候选人可能有更多不受监控的方式来损害投票人;然后,必须提供可验证性,因为非法行为应该在IoE中进行审计和惩罚;最后,IoE中的基本服务应该是高效的,并且与系统兼容。
虽然过去的研究(如Helios及Backes等人提出的电子投票方案:[BenAdida.Helios:Web-based open-audit voting.In USENIX security symposium,volume17,2018]和[Michael Backes,Martin Gagné,and Malte Skoruppa.Using mobile devicecommunication to strengthen e-voting protocols.In Proceedings of the 12th ACMworkshop on Workshop on privacy in the electronic society,pages237–242,2013])为匿名电子投票提出了一系列有效的协议,但是他们中的大多数方案需要管理员或当局实施的web服务器提供一个一致的视图,由此涉及到一个可信任的第三方。然而,对于可信的第三方,协议将受到单点故障的影响,不能用于新型互联网不可信的环境。
另一个问题是提供可验证性和匿名性,这似乎是两个相互矛盾的设计目标。一些投票方案(如Yang等人提出的基于区块链的匿名投票方案:[Xuechao Yang,Xun Yi,SuryaNepal,Andrei Kelarev,and Fengling Han.Blockchain voting:Publicly verifiableonline voting protocol without trusted tallying authorities.Future GenerationComputer Systems,112:859-874,2020])已经通过区块链技术建解决了这个问题,然而,效率问题是他们技术最大一个缺陷。
发明内容
有鉴于此,本申请提供了一种基于区块链的匿名可信投票方法、装置及相关设备,以实现去中心化的匿名投票。
为实现上述目的,本申请第一方面提供了一种基于区块链的匿名可信投票方法,包括:
对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure BDA0003608642190000021
结合其他各投票人的信息对承诺值
Figure BDA0003608642190000022
进行盲化处理,得到承诺值元组
Figure BDA0003608642190000023
Figure BDA0003608642190000024
通过ESDSA算法对承诺值元组
Figure BDA00036086421900000220
进行签名,得到签名元组
Figure BDA0003608642190000025
基于承诺值元组
Figure BDA0003608642190000026
签名元组
Figure BDA0003608642190000027
以及其他各投票人的签名元组
Figure BDA0003608642190000028
构建投票元组
Figure BDA0003608642190000029
并将投票元组
Figure BDA00036086421900000210
以及承诺值元组
Figure BDA00036086421900000221
上链,所述投票元组
Figure BDA00036086421900000211
用作投票阶段的投票内容;
其中,签名元组
Figure BDA00036086421900000212
为其他各投票人对签名元组
Figure BDA00036086421900000213
进行验证,且在验证通过后生成的;承诺值元组
Figure BDA00036086421900000214
用于对所述投票元组进行解密。
优选地,所述对原始投票内容进行散列运算,得到承诺值
Figure BDA00036086421900000215
的过程,包括:
对原始投票内容m和字符串o进行哈希运算,得到承诺值
Figure BDA00036086421900000216
其中,o为随机生成的字符串。
优选地,所述结合其他各投票人的信息对承诺值
Figure BDA00036086421900000217
进行盲化处理,得到承诺值元组
Figure BDA00036086421900000218
Figure BDA00036086421900000219
的过程,包括:
对于其他每一投票人的公钥信息pkj
Figure BDA0003608642190000031
进行椭圆曲线ECC的点乘操作,得到盲化因子tj
基于盲化因子tj将承诺值
Figure BDA0003608642190000032
哈希到新的承诺值xj及cj
汇聚各承诺值xj得到承诺值元组
Figure BDA00036086421900000333
以及采用私钥ski对各承诺值cj进行签名,得到承诺值元组
Figure BDA0003608642190000033
优选地,所述通过ESDSA算法对承诺值元组
Figure BDA0003608642190000034
进行签名,得到签名元组
Figure BDA0003608642190000035
的过程,包括:
对元组
Figure BDA0003608642190000036
进行哈希运算,得到签名元组
Figure BDA0003608642190000037
其中,IDi和addri为目标投票人的身份标识及地址信息,
Figure BDA0003608642190000038
为承诺值元组
Figure BDA0003608642190000039
中对应于投票人nv的承诺值。
优选地,所述散列输出还包括承诺值
Figure BDA00036086421900000310
所述方法还包括:
从区块链获取签名元组
Figure BDA00036086421900000311
和承诺值元组
Figure BDA00036086421900000334
并基于签名元组
Figure BDA00036086421900000312
计算得到其他各投票人的签名元组
Figure BDA00036086421900000313
基于承诺值
Figure BDA00036086421900000314
和承诺值元组
Figure BDA00036086421900000335
采用预设的算法VerifyS对
Figure BDA00036086421900000315
的有效性进行验证,得到验证通过的各签名元素
Figure BDA00036086421900000316
其中,
Figure BDA00036086421900000317
是签名元组
Figure BDA00036086421900000318
中对应于投票人nv的签名元素;
获取对应于验证通过的每一签名元素
Figure BDA00036086421900000319
的承诺字符串
Figure BDA00036086421900000320
并基于验证通过的各签名元素
Figure BDA00036086421900000321
构建新的签名元组
Figure BDA00036086421900000322
基于各承诺字符串
Figure BDA00036086421900000323
构建新的承诺元组
Figure BDA00036086421900000324
采用随机地址将投票元组
Figure BDA00036086421900000325
上链,投票元组
Figure BDA00036086421900000326
用作打开投票阶段的投票内容。
优选地,所述基于区块链的匿名可信投票方法还包括:
从区块链获取投票元组
Figure BDA00036086421900000327
并采用预设的算法V对签名元组
Figure BDA00036086421900000328
进行验证;
若签名元组
Figure BDA00036086421900000329
中超过预设比例的签名元素
Figure BDA00036086421900000330
验证通过,则通过预设的算法从承诺元组
Figure BDA00036086421900000331
Figure BDA00036086421900000332
中验证原始投票内容。
优选地,所述通过预设的算法从承诺元组
Figure BDA0003608642190000041
Figure BDA0003608642190000042
中验证原始投票内容的过程,包括:
对承诺元组
Figure BDA0003608642190000043
进行字符串序列化运输,得到字符串序列化后的承诺元组
Figure BDA0003608642190000044
对输入的原始投票内容m和字符串序列化后的承诺元组
Figure BDA0003608642190000045
进行哈希运算,得到哈希值
Figure BDA0003608642190000046
判断
Figure BDA0003608642190000047
Figure BDA0003608642190000048
是否相等,若是,则原始投票内容m验证通过。
本申请第二方面提供了一种基于区块链的匿名可信投票装置,包括:
承诺单元,用于对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure BDA0003608642190000049
盲化单元,用于结合其他各投票人的信息对承诺值
Figure BDA00036086421900000410
进行盲化处理,得到承诺值元组
Figure BDA00036086421900000411
Figure BDA00036086421900000412
签名单元,用于通过ESDSA算法对承诺值元组
Figure BDA00036086421900000413
进行签名,得到签名元组
Figure BDA00036086421900000414
投票单元,用于基于承诺值元组
Figure BDA00036086421900000415
签名元组
Figure BDA00036086421900000416
以及其他各投票人的签名元组
Figure BDA00036086421900000417
构建投票元组
Figure BDA00036086421900000418
并将投票元组
Figure BDA00036086421900000419
以及承诺值元组
Figure BDA00036086421900000420
上链,所述投票元组
Figure BDA00036086421900000421
用作投票阶段的投票内容;
其中,签名元组
Figure BDA00036086421900000422
为其他各投票人对签名元组
Figure BDA00036086421900000423
进行验证,且在验证通过后生成的;承诺值元组
Figure BDA00036086421900000424
用于对所述投票元组进行解密。
本申请第三方面提供了一种基于区块链的匿名可信投票设备,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现上述的基于区块链的匿名可信投票方法的各个步骤。
本申请第四方面提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述的基于区块链的匿名可信投票方法的各个步骤。
经由上述的技术方案可知,本申请首先对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure BDA0003608642190000051
所述散列运算使得原始投票内容能够得到较好的隐藏。然后,结合其他各投票人的信息对承诺值
Figure BDA0003608642190000052
进行盲化处理,得到承诺值元组
Figure BDA0003608642190000053
Figure BDA0003608642190000054
经过盲化处理,使得投票人身份能够得到较好的隐藏。接着,通过ESDSA算法对承诺值元组
Figure BDA00036086421900000515
进行签名,得到签名元组
Figure BDA0003608642190000055
通过投票人自身对其承诺值元组进行签名,使得投票内容得到目标投票人本人的认证,并防止他人伪造投票内容。最后,基于承诺值元组
Figure BDA0003608642190000056
签名元组
Figure BDA0003608642190000057
以及其他各投票人的签名元组
Figure BDA0003608642190000058
构建投票元组
Figure BDA0003608642190000059
并将投票元组
Figure BDA00036086421900000510
以及承诺值元组
Figure BDA00036086421900000516
上链,所述投票元组
Figure BDA00036086421900000511
用作投票阶段的投票内容。其中,签名元组
Figure BDA00036086421900000512
为其他各投票人对签名元组
Figure BDA00036086421900000513
进行验证,且在验证通过后生成的。通过其他各投票人的验证签名,使得目标投票人本人无法篡改投票内容。承诺值元组
Figure BDA00036086421900000514
用于对所述投票元组进行解密,便于后续打开投票内容并进行计票。本申请通过上述处理过程,实现了投票内容隐藏、投票匿名及可验证。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例公开的基于区块链的匿名可信投票方法的整体设计示意图;
图2为本申请实施例公开的基于区块链的匿名可信投票方法的流示意图;
图3为本申请实施例公开的基于区块链的匿名可信投票装置的示意图;
图4为本申请实施例公开的基于区块链的匿名可信投票装置的另一示意图;
图5为本申请实施例公开的基于区块链的匿名可信投票装置的再一示意图;
图6为本申请实施例公开的基于区块链的匿名可信投票设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解,首先介绍本申请的基于区块链的匿名可信投票方法的整体设计思路。请参阅图1,本技术方案的主要思想是当用户想对一个选票进行投票时,用户先对投票消息进行承诺(实现可信)、盲化(实现匿名)和签名(实现可验证)三个密码学操作,得到一个对原始投票内容的匿名可信投票结果;再用一个盲签名算法对匿名可信投票结果进行盲签名(可验证),最后得到对一个选票信息的投票信息(三元组)。然后用户将在区块链中上传其对选票的投票信息,其中,盲签名的结果直接上传到区块链中,而进行了承诺、盲化后的选票消息将由用户利用一个打开投票阶段打开其承诺,进行处理后上传到区块链中,最后在区块链中将记录下投票人对选票的投票内容(四元组)。最后,用户可以在区块链中验证投票是否有效,如果有效,则进行计票操作,对投票结果进行统计。
下面详细介绍本申请实施例提供的基于区块链的匿名可信投票方法。可以理解的是,能源互联网系统(IoE)中的任何人都可以通过本提案发起投票。所有想要参加投票的投票人都应该提供他们的公钥和身份证明。因此,在进入投票之前必须经过一个初始化阶段,在这个初始化阶段,投票人的所有公共信息通过预设的智能合约广播到区块链中。假设有nv个不同的投票人
Figure BDA0003608642190000067
Figure BDA0003608642190000068
每个投票人vi通过椭圆曲线ECC密钥生成两个密钥对
Figure BDA0003608642190000062
Figure BDA0003608642190000063
Figure BDA0003608642190000064
为投票人vi在以太坊网络中的公开地址,
Figure BDA0003608642190000065
表示投票人的身份。那么每个投票人vi的公共信息是一个元组
Figure BDA0003608642190000066
每个投票人都可以从区块链得到这个信息来验证它的有效性。在完成了上述的初始化工作后,请参阅图2,本申请实施例提供的基于区块链的匿名可信投票方法可以包括如下步骤:
步骤S101,对原始投票内容进行散列运算,得到散列输出。
其中,散列运算可以把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的散列输出,在本步骤中,该散列输出包括承诺值
Figure BDA0003608642190000071
这种转换是一种压缩映射,也就是,散列输出的空间通常远小于输入的空间,不同的输入可能会散列成相同的散列输出,所以不可能从散列输出来确定唯一的输入值。通过散列运算,将原始投票内容m散列到一个承诺值
Figure BDA0003608642190000072
使得投票内容可以得到很好的隐藏,在投票解开前,其他投票人都无法获知具体的投票内容。
步骤S102,结合其他各投票人的信息对承诺值
Figure BDA0003608642190000073
进行盲化处理,得到承诺值元组
Figure BDA0003608642190000074
Figure BDA0003608642190000075
其中,该盲化处理可以通过预设的盲承诺算法来完成,通过盲化处理,可以将其他各投票人的信息嵌入到承诺值
Figure BDA0003608642190000076
中,从而隐藏目标投票人的身份信息,达到匿名投票的目的。
步骤S103,通过ESDSA算法对承诺值元组
Figure BDA00036086421900000730
进行签名,得到签名元组
Figure BDA0003608642190000077
通过ESDSA算法结合目标投票人的私钥,对承诺值元组
Figure BDA0003608642190000078
进行签名,使得投票内容得到目标投票人本人的认证,并防止他人伪造投票内容。
步骤S104,基于承诺值元组
Figure BDA0003608642190000079
签名元组
Figure BDA00036086421900000710
以及其他各投票人的签名元组
Figure BDA00036086421900000711
构建投票元组
Figure BDA00036086421900000712
并将投票元组
Figure BDA00036086421900000713
以及承诺值元组
Figure BDA00036086421900000714
上链。
其中,签名元组
Figure BDA00036086421900000715
为其他各投票人对签名元组
Figure BDA00036086421900000716
进行验证,且在验证通过后生成的;承诺值元组
Figure BDA00036086421900000731
用于对所述投票元组进行解密,该投票元组
Figure BDA00036086421900000717
用作投票阶段的投票内容。
本申请实施例首先对原始投票内容进行散列运算,得到散列输出,该散列输出包括承诺值
Figure BDA00036086421900000718
该散列运算使得原始投票内容能够得到较好的隐藏。然后,结合其他各投票人的信息对承诺值
Figure BDA00036086421900000719
进行盲化处理,得到承诺值元组
Figure BDA00036086421900000720
Figure BDA00036086421900000721
经过盲化处理,使得投票人身份能够得到较好的隐藏。接着,通过ESDSA算法对承诺值元组
Figure BDA00036086421900000722
进行签名,得到签名元组
Figure BDA00036086421900000723
通过投票人自身对其承诺值元组进行签名,使得投票内容得到目标投票人本人的认证,并防止他人伪造投票内容。最后,基于承诺值元组
Figure BDA00036086421900000724
签名元组
Figure BDA00036086421900000725
以及其他各投票人的签名元组
Figure BDA00036086421900000726
构建投票元组
Figure BDA00036086421900000727
并将投票元组
Figure BDA00036086421900000728
以及承诺值元组
Figure BDA00036086421900000729
上链,该投票元组
Figure BDA0003608642190000081
用作投票阶段的投票内容。其中,签名元组
Figure BDA0003608642190000082
为其他各投票人对签名元组
Figure BDA0003608642190000083
进行验证,且在验证通过后生成的。通过其他各投票人的验证签名,使得目标投票人本人无法篡改投票内容。承诺值元组
Figure BDA0003608642190000084
用于对所述投票元组进行解密,便于后续打开投票内容并进行计票。本申请通过上述处理过程,实现了投票内容隐藏、投票匿名及可验证。
在本申请的一些实施例中,上述步骤S101对原始投票内容进行散列运算,得到承诺值
Figure BDA0003608642190000085
的过程,可以包括:
对原始投票内容m和字符串o进行哈希运算,得到承诺值
Figure BDA0003608642190000086
其中,o为随机生成的字符串。
示例性地,可以通过算法C实现上述散列运算,即
Figure BDA0003608642190000087
其中,算法C的具体内容如下:
Figure BDA0003608642190000088
具体地,算法C首先生成一个32字节的随机字符串作为承诺中的开放字符串o,然后承诺字符串c是原始选票m和o运行SHA256抗碰撞哈希算法后的哈希值,其中算法C中的serialize()表示对o进行字符串序列化。
在本申请的一些实施例中,上述步骤S102结合其他各投票人的信息对承诺值
Figure BDA0003608642190000089
进行盲化处理,得到承诺值元组
Figure BDA00036086421900000810
Figure BDA00036086421900000811
的过程,可以包括:
S1,对于其他每一投票人的公钥信息pkj
Figure BDA00036086421900000812
进行椭圆曲线ECC的点乘操作,得到盲化因子tj
S2,基于盲化因子tj将承诺值
Figure BDA00036086421900000813
哈希到新的承诺值xj及cj
S3,汇聚各承诺值xj得到承诺值元组
Figure BDA00036086421900000814
以及采用私钥ski对各承诺值cj进行签名,得到承诺值元组
Figure BDA00036086421900000815
示例性地,可以通过算法BlindX进行上述盲化处理,即通过
Figure BDA0003608642190000091
Figure BDA0003608642190000092
为除其以外的不同投票人
Figure BDA0003608642190000099
生成盲化后的承诺值元组
Figure BDA0003608642190000094
Figure BDA0003608642190000095
(注意,在本说明书中,小写字母上标为~的情况表示其为一个字符串向量,字符串个数为nv个,小写字母上标为^的情况表示其为一个字符串)。其中,算法BlindX的具体内容如下:
Figure BDA0003608642190000096
具体地,算法BlindX首先随机生成两个32字节的随机字符串γ和δ,用于对输入的公钥信息进行椭圆曲线ECC的点乘操作(第四行)。随后,取椭圆曲线的点的X轴的坐标数据作为盲化的一个因子(第五行),其中,getXpointFromPubkey函数是椭圆曲线ECC中的取某个点X轴坐标值的函数。接着,对原始承诺
Figure BDA0003608642190000097
进行盲化得到一个新的承诺值(第六、七行)。此外,还需对盲化后的承诺进行签名,以用于后续真实性验证。具体地,调用一个ECDSA算法的签名算法Sign,并用投票人vi的私钥ski来进行签名。最后,算法返回
Figure BDA0003608642190000098
作为盲化结果。
算法BlindX中,需调用一个区块链智能合约算法setAnmVote,其作用是把投票人的地址信息、盲化后的字符串承诺信息以及签名信息通过智能合约交易上链。首先,需要一个数据结构来记录与投票人绑定的信息,示例性地,可以采用表1中的构造作为区块链中存储的记录的数据结构(voters)。其中,如表1所示,address、PK、PKs、ID为基本公共信息,其他三个映射数据对应投票人对选票的投票元组
Figure BDA0003608642190000101
其数据类型是一个映射向量,其特点是采用区块链的地址数据类型来表示向量的索引。
表1投票人的区块链数据结构
数据类型 数据描述
address voter
string PK
string PKs
string ID
mapping(address string) si
mapping(address string) ci
mapping(address string) dsigs
算法setAnmVote是一个上链操作,它没有输出,示例性地,其具体内容如下:
Figure BDA0003608642190000102
其中,iV和iS在以太坊区块链中分别代表投票人地址和潜在签名者地址。iSi、iCi是在BlindX算法中生成的数据。而投票人voters是表1中数据结构对应的数组。第一行msg.sender是指区块链中调用该智能合约算法的交易发送者地址,该要求确保只有投票人自己可以设置数据(当它调用智能合约时才有效)。最后,算法一旦成功运行,该算法将把iSi、iCi上链,数据将在区块链中被记录下来,没有人可以重置它,包括投票人自己。
在本申请的一些实施例中,上述步骤S103通过ESDSA算法对承诺值元组
Figure BDA0003608642190000111
进行签名,得到签名元组
Figure BDA0003608642190000112
的过程,可以包括:
对元组
Figure BDA0003608642190000113
进行哈希运算,得到签名元组
Figure BDA0003608642190000114
其中,IDi和addri为目标投票人的身份标识及地址信息,
Figure BDA0003608642190000115
为承诺值元组
Figure BDA0003608642190000116
中对应于投票人nv的承诺值。
具体地,首先计算元组
Figure BDA0003608642190000117
对于不同投票人
Figure BDA0003608642190000118
的哈希值
Figure BDA0003608642190000119
其中,
Figure BDA00036086421900001110
vi为目标投票人本人。然后通过ESDSA算法中的签名算法
Figure BDA00036086421900001111
对其他不同投票人进行签名,得到签名元组
Figure BDA00036086421900001112
随后,
Figure BDA00036086421900001113
的信息通过智能合约记录到区块链中,使用的是一个智能合约算法setAnmVote。另外需要注意的是,
Figure BDA00036086421900001122
在这个阶段被投票人vi本人秘密保存。
在本申请的一些实施例中,上述步骤S104中,其他各投票人的签名元组
Figure BDA00036086421900001114
可以通过预设的算法BlindS计算得到。
具体地,首先,每一个其他投票人通过ECDSA验证算法验证签名的有效性,为了验证该签名,需要使用一个智能合约算法getAnmVote把区块链中的签名查询出来。验证如果有效,则每一个其他的投票人通过盲签名算法BlindS在盲签名协议中生成盲签名
Figure BDA00036086421900001115
即通过
Figure BDA00036086421900001116
并使用一个智能合约算法signAnmVote将
Figure BDA00036086421900001117
上传到区块链。最后,令
Figure BDA00036086421900001118
Figure BDA00036086421900001119
为对于不同的投票人
Figure BDA00036086421900001120
的盲签名元组。
示例性地,算法BlindS的具体内容如下:
Figure BDA00036086421900001121
Figure BDA0003608642190000121
具体地,首先,签名者将使用智能合约算法getAnmVote来查询为他投票人生成的承诺数据
Figure BDA0003608642190000122
其中,任何人都可以根据区块链的公共账户地址查询承诺数据。然后,算法利用密码学的SHA256哈希算法和ECDSA的验证算法来对承诺数据中的签名进行有效性确认(这两步生成一个验证结果S),如果有效(S==True),则根据输入的私钥参数,作为签名者的投票人通过
Figure BDA0003608642190000123
Figure BDA0003608642190000124
生成对查询到的承诺
Figure BDA0003608642190000125
的一个盲签名
Figure BDA0003608642190000126
随后,该盲签名也需要上链,调用的是一个上链操作智能合约算法signAnmVote。类似地,第2行中的要求确保只有签名者自己可以设置相应的数据。一旦签名被记录下来,没有人可以重置它,包括签名者自己。最后,算法BlindS返回生成的盲签名
Figure BDA0003608642190000128
进一步地,上述算法BlindS中,调用了两个区块链智能合约算法getAnmVote和signAnmVote,其中getAnmVote算法是一个查询操作算法。示例性地,算法getAnmVote的具体内容如下:
Figure BDA0003608642190000127
具体地,它有两个输入参数iV和iS,在以太坊区块链中分别代表投票人地址和潜在签名者地址,输出为一个地址V,以及当前区块链区块中记录的投票人的签名isi和承诺ici。算法开始后,直接返回当前地址为iV的voters数据结构中的voter、si的iV位置和ci的iV位置字段。
算法signAnmVote是一个上链操作,它也没有输出,其作用是将算法BlindS生成的盲签名上链。示例性地,算法signAnmVote的具体内容如下:
Figure BDA0003608642190000131
算法signAnmVote有两个输入参数iV和idsig,在区块链中分别代表投票人地址和对应地址实现的一个盲签名。第一行msg.sender是指区块链中调用该智能合约算法的交易发送者地址(该盲签名的签名者地址),该要求确保只有签名者自己才可以上链数据。
以上完成了投票阶段的工作流程。在这一阶段的最后,
Figure BDA0003608642190000132
则为目标投票人vi对选票
Figure BDA0003608642190000133
的投票元组。
接着描述打开投票阶段。在本申请的一些实施例中,上述步骤S101中提及的散列输出还包括承诺值
Figure BDA0003608642190000134
该基于区块链的匿名可信投票方法还可以包括:
步骤S105,从区块链获取签名元组
Figure BDA0003608642190000135
和承诺值元组
Figure BDA00036086421900001326
并基于签名元组
Figure BDA0003608642190000136
计算得到其他各投票人的签名元组
Figure BDA0003608642190000137
步骤S106,基于承诺值
Figure BDA0003608642190000138
和承诺值元组
Figure BDA00036086421900001328
采用预设的算法VerifyS对签名元素
Figure BDA0003608642190000139
的有效性进行验证,得到验证通过的各签名元素
Figure BDA00036086421900001310
具体地,给定
Figure BDA00036086421900001311
目标投票人vi可以通过一算法
Figure BDA00036086421900001312
验证
Figure BDA00036086421900001313
的有效性,其中,
Figure BDA00036086421900001314
也是保存在区块链中的一个承诺值,
Figure BDA00036086421900001315
是签名元组
Figure BDA00036086421900001327
中对应于投票人nv对承诺值
Figure BDA00036086421900001316
的签名元素,目标投票人vi可以通过计算
Figure BDA00036086421900001317
得到
Figure BDA00036086421900001318
γ是一个随机密钥。
步骤S107,获取对应于验证通过的每一签名元素
Figure BDA00036086421900001319
的承诺字符串
Figure BDA00036086421900001320
并基于验证通过的各签名元素
Figure BDA00036086421900001321
构建新的签名元组
Figure BDA00036086421900001322
基于各承诺字符串
Figure BDA00036086421900001323
构建新的承诺元组
Figure BDA00036086421900001324
步骤S108,采用随机地址将投票元组
Figure BDA00036086421900001325
上链。
其中,投票元组
Figure BDA0003608642190000141
可以用作打开投票阶段的投票内容。可以理解的是,目标投票人vi可以在区块链中选择一个随机地址来发送这个交易,以便任何人都不能找出谁发送了这个交易。
示例性地,算法VerifyS的具体内容如下:
Figure BDA0003608642190000142
首先,计算生成一个ECC椭圆曲线的点B。随后,算法取椭圆曲线的点的X轴的坐标数据。接着,算法对原始承诺
Figure BDA0003608642190000143
与B点的X轴坐标进行SHA256哈希得到一个哈希值。如果承诺有效,则该值应该与输入值
Figure BDA0003608642190000144
相同。最后,算法根据该判断输出True或False。
接下来介绍验证/计票阶段。在本申请的一些实施例中,该基于区块链的匿名可信投票方法还可以包括:
步骤S109,从区块链获取投票元组
Figure BDA0003608642190000145
并采用预设的算法V对签名元组
Figure BDA0003608642190000146
进行验证。
步骤S110,若签名元组
Figure BDA00036086421900001414
中超过预设比例的签名元素
Figure BDA0003608642190000147
验证通过,则通过预设的算法从承诺元组
Figure BDA0003608642190000148
Figure BDA0003608642190000149
中验证原始投票内容。
在本申请的一些实施例中,上述步骤S110通过预设的算法从承诺元组
Figure BDA00036086421900001410
Figure BDA00036086421900001411
中验证原始投票内容的过程,可以包括:
S1,对承诺元组
Figure BDA00036086421900001412
进行字符串序列化运输,得到字符串序列化后的承诺元组
Figure BDA00036086421900001413
S2,对输入的原始投票内容m和字符串序列化后的承诺元组
Figure BDA0003608642190000151
进行哈希运算,得到哈希值
Figure BDA0003608642190000152
S3,判断
Figure BDA0003608642190000153
Figure BDA0003608642190000154
是否相等,若是,则原始投票内容m验证通过。
示例性地,在验证/计票阶段,算法V的内容如下:
Figure BDA0003608642190000155
首先对输入的原始投票内容m和o进行SHA256哈希算法得到哈希值
Figure BDA0003608642190000156
其中算法V中的serialize()表示对o进行字符串序列化。然后判断
Figure BDA0003608642190000157
与输入的c是否相等,如果是,则说明投票验证通过,输出True,否则输出False。
下面对本申请实施例提供的基于区块链的匿名可信投票装置进行描述,下文描述的基于区块链的匿名可信投票装置与上文描述的基于区块链的匿名可信投票方法可相互对应参照。
请参见图3,本申请实施例提供的基于区块链的匿名可信投票装置,可以包括:
承诺单元21,用于对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure BDA0003608642190000158
盲化单元22,用于结合其他各投票人的信息对承诺值
Figure BDA0003608642190000159
进行盲化处理,得到承诺值元组
Figure BDA00036086421900001510
Figure BDA00036086421900001511
签名单元23,用于通过ESDSA算法对承诺值元组
Figure BDA00036086421900001512
进行签名,得到签名元组
Figure BDA00036086421900001513
投票单元24,用于基于承诺值元组
Figure BDA00036086421900001514
签名元组
Figure BDA00036086421900001515
以及其他各投票人的签名元组
Figure BDA00036086421900001516
构建投票元组
Figure BDA00036086421900001517
并将投票元组
Figure BDA00036086421900001518
以及承诺值元组
Figure BDA00036086421900001519
上链,所述投票元组
Figure BDA00036086421900001520
用作投票阶段的投票内容;
其中,签名元组
Figure BDA00036086421900001521
为其他各投票人对签名元组
Figure BDA00036086421900001522
进行验证,且在验证通过后生成的;承诺值元组
Figure BDA00036086421900001627
用于对所述投票元组进行解密。
在本申请的一些实施例中,承诺单元21对原始投票内容进行散列运算,得到承诺值
Figure BDA0003608642190000161
的过程,可以包括:
对原始投票内容m和字符串o进行哈希运算,得到承诺值
Figure BDA0003608642190000162
其中,o为随机生成的字符串。
在本申请的一些实施例中,盲化单元22结合其他各投票人的信息对承诺值
Figure BDA0003608642190000163
进行盲化处理,得到承诺值元组
Figure BDA0003608642190000164
Figure BDA0003608642190000165
的过程,可以包括:
对于其他每一投票人的公钥信息pkj
Figure BDA0003608642190000166
进行椭圆曲线ECC的点乘操作,得到盲化因子tj
基于盲化因子tj将承诺值
Figure BDA0003608642190000167
哈希到新的承诺值xj及cj
汇聚各承诺值xj得到承诺值元组
Figure BDA00036086421900001628
以及采用私钥ski对各承诺值cj进行签名,得到承诺值元组
Figure BDA0003608642190000168
在本申请的一些实施例中,签名单元23通过ESDSA算法对承诺值元组
Figure BDA0003608642190000169
进行签名,得到签名元组
Figure BDA00036086421900001610
的过程,可以包括:
对元组
Figure BDA00036086421900001611
进行哈希运算,得到签名元组
Figure BDA00036086421900001612
其中,IDi和addri为目标投票人的身份标识及地址信息,
Figure BDA00036086421900001613
为承诺值元组
Figure BDA00036086421900001614
中对应于投票人nv的承诺值。
在本申请的一些实施例中,承诺单元21提及的散列输出还包括承诺值
Figure BDA00036086421900001615
请参阅图4,该基于区块链的匿名可信投票装置还可以包括打开投票单元30,用于:
从区块链获取签名元组
Figure BDA00036086421900001616
和承诺值元组
Figure BDA00036086421900001629
并基于签名元组
Figure BDA00036086421900001617
计算得到其他各投票人的签名元组
Figure BDA00036086421900001618
基于承诺值
Figure BDA00036086421900001619
和承诺值元组
Figure BDA00036086421900001620
采用预设的算法Verifys对
Figure BDA00036086421900001621
的有效性进行验证,得到验证通过的各签名元素
Figure BDA00036086421900001622
其中,
Figure BDA00036086421900001623
是签名元组
Figure BDA00036086421900001624
中对应于投票人nv的签名元素;
获取对应于验证通过的每一签名元素
Figure BDA00036086421900001625
的承诺字符串
Figure BDA00036086421900001626
并基于验证通过的各签名元素
Figure BDA0003608642190000171
构建新的签名元组
Figure BDA0003608642190000172
基于各承诺字符串
Figure BDA0003608642190000173
构建新的承诺元组
Figure BDA0003608642190000174
采用随机地址将投票元组
Figure BDA0003608642190000175
上链,投票元组
Figure BDA0003608642190000176
用作打开投票阶段的投票内容。
在本申请的一些实施例中,请参阅图5,该基于区块链的匿名可信投票装置还可以包括验证计票单元40,用于:
从区块链获取投票元组
Figure BDA0003608642190000177
并采用预设的算法V对签名元组
Figure BDA0003608642190000178
进行验证;
若签名元组
Figure BDA0003608642190000179
中超过预设比例的签名元素
Figure BDA00036086421900001710
验证通过,则通过预设的算法从承诺元组
Figure BDA00036086421900001711
Figure BDA00036086421900001712
中验证原始投票内容。
在本申请的一些实施例中,验证计票单元40通过预设的算法从承诺元组
Figure BDA00036086421900001713
Figure BDA00036086421900001714
中验证原始投票内容的过程,可以包括:
对承诺元组
Figure BDA00036086421900001715
进行字符串序列化运输,得到字符串序列化后的承诺元组
Figure BDA00036086421900001716
对输入的原始投票内容m和字符串序列化后的承诺元组
Figure BDA00036086421900001717
进行哈希运算,得到哈希值
Figure BDA00036086421900001718
判断
Figure BDA00036086421900001719
Figure BDA00036086421900001720
是否相等,若是,则原始投票内容m验证通过。
本申请实施例提供的基于区块链的匿名可信投票装置可应用于基于区块链的匿名可信投票设备,如计算机等。可选的,图6示出了基于区块链的匿名可信投票设备的硬件结构框图,参照图6,基于区块链的匿名可信投票设备的硬件结构可以包括:至少一个处理器31,至少一个通信接口32,至少一个存储器33和至少一个通信总线34。
在本申请实施例中,处理器31、通信接口32、存储器33、通信总线34的数量为至少一个,且处理器31、通信接口32、存储器33通过通信总线34完成相互间的通信;
处理器31可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路等;
存储器32可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory)等,例如至少一个磁盘存储器;
其中,存储器33存储有程序,处理器31可调用存储器33存储的程序,所述程序用于:
对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure BDA0003608642190000181
结合其他各投票人的信息对承诺值
Figure BDA0003608642190000182
进行盲化处理,得到承诺值元组
Figure BDA0003608642190000183
Figure BDA0003608642190000184
通过ESDSA算法对承诺值元组
Figure BDA0003608642190000185
进行签名,得到签名元组
Figure BDA0003608642190000186
基于承诺值元组
Figure BDA0003608642190000187
签名元组
Figure BDA0003608642190000188
以及其他各投票人的签名元组
Figure BDA0003608642190000189
构建投票元组
Figure BDA00036086421900001810
并将投票元组
Figure BDA00036086421900001811
以及承诺值元组
Figure BDA00036086421900001831
上链,所述投票元组
Figure BDA00036086421900001812
用作投票阶段的投票内容;
其中,签名元组
Figure BDA00036086421900001813
为其他各投票人对签名元组
Figure BDA00036086421900001814
进行验证,且在验证通过后生成的;承诺值元组
Figure BDA00036086421900001815
用于对所述投票元组进行解密。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:
对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure BDA00036086421900001816
结合其他各投票人的信息对承诺值
Figure BDA00036086421900001817
进行盲化处理,得到承诺值元组
Figure BDA00036086421900001818
Figure BDA00036086421900001819
通过ESDSA算法对承诺值元组
Figure BDA00036086421900001820
进行签名,得到签名元组
Figure BDA00036086421900001821
基于承诺值元组
Figure BDA00036086421900001822
签名元组
Figure BDA00036086421900001823
以及其他各投票人的签名元组
Figure BDA00036086421900001824
构建投票元组
Figure BDA00036086421900001825
并将投票元组
Figure BDA00036086421900001826
以及承诺值元组
Figure BDA00036086421900001832
上链,所述投票元组
Figure BDA00036086421900001827
用作投票阶段的投票内容;
其中,签名元组
Figure BDA00036086421900001828
为其他各投票人对签名元组
Figure BDA00036086421900001829
进行验证,且在验证通过后生成的;承诺值元组
Figure BDA00036086421900001830
用于对所述投票元组进行解密。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
综上所述:
本申请首先对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure BDA0003608642190000191
所述散列运算使得原始投票内容能够得到较好的隐藏。然后,结合其他各投票人的信息对承诺值
Figure BDA0003608642190000192
进行盲化处理,得到承诺值元组
Figure BDA0003608642190000193
Figure BDA0003608642190000194
经过盲化处理,使得投票人身份能够得到较好的隐藏。接着,通过ESDSA算法对承诺值元组
Figure BDA0003608642190000195
进行签名,得到签名元组
Figure BDA0003608642190000196
通过投票人自身对其承诺值元组进行签名,使得投票内容得到目标投票人本人的认证,并防止他人伪造投票内容。最后,基于承诺值元组
Figure BDA0003608642190000197
签名元组
Figure BDA0003608642190000198
以及其他各投票人的签名元组
Figure BDA0003608642190000199
构建投票元组
Figure BDA00036086421900001910
并将投票元组
Figure BDA00036086421900001911
以及承诺值元组
Figure BDA00036086421900001912
上链,所述投票元组
Figure BDA00036086421900001913
用作投票阶段的投票内容。其中,签名元组
Figure BDA00036086421900001914
为其他各投票人对签名元组
Figure BDA00036086421900001915
进行验证,且在验证通过后生成的。通过其他各投票人的验证签名,使得目标投票人本人无法篡改投票内容。承诺值元组
Figure BDA00036086421900001916
用于对所述投票元组进行解密,便于后续打开投票内容并进行计票。本申请通过上述处理过程,实现了投票内容隐藏、投票匿名及可验证。
进一步地,与传统的去中心化匿名投票方案相对,本申请具有去中心化、可追溯性和防篡改性等区块链特有的特性,此外,与其他基于区块链的分布式时间戳方案相比,本提案具有更高的效率。本申请高效实现了七个安全设计目标,即:公平性(确保任何人在提交自己的选票之前,不能获得他人的投票结果,意味着投票人的选择不会受到那些提前投票的人的影响)、去中心化(任何一种可信的第三方,比如选举管理员或独立观察员,都不应该出现在投票协议中)、合法性(在投票人开始投票之前,应检查他/她的权利;此外,合法性要求每个投票人只能投一次票)、匿名性(要求保护投票人的隐私,不能让任何人在最后的投票结果中知道选票的主人是谁)、兼容性(要求投票方案应该尽可能简单,以便集成到能源互联网的信息化系统中)、可验证性(保证了投票的所有阶段都可以被投票人审计。此外,每张选票的有效性应该能够被任何人验证)、抵制胁迫性(为了避免有人试图强迫投票人按照他们的指示投票,一个投票方案应该是抵制胁迫的)。特别地,本申请是基于区块链实现的匿名可信投票方案,对比目前大量的采用PoW共识算法等平台实现的匿名可信投票方案,具有更快的交易处理。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种基于区块链的匿名可信投票方法,其特征在于,包括:
对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure FDA0003608642180000011
结合其他各投票人的信息对承诺值
Figure FDA0003608642180000012
进行盲化处理,得到承诺值元组
Figure FDA0003608642180000013
Figure FDA0003608642180000014
通过ESDSA算法对承诺值元组
Figure FDA0003608642180000015
进行签名,得到签名元组
Figure FDA0003608642180000016
基于承诺值元组
Figure FDA0003608642180000017
签名元组
Figure FDA0003608642180000018
以及其他各投票人的签名元组
Figure FDA0003608642180000019
构建投票元组
Figure FDA00036086421800000110
并将投票元组
Figure FDA00036086421800000111
以及承诺值元组
Figure FDA00036086421800000112
上链,所述投票元组
Figure FDA00036086421800000113
用作投票阶段的投票内容;
其中,签名元组
Figure FDA00036086421800000114
为其他各投票人对签名元组
Figure FDA00036086421800000115
进行验证,且在验证通过后生成的;承诺值元组
Figure FDA00036086421800000116
用于对所述投票元组进行解密。
2.根据权利要求1所述的方法,其特征在于,所述对原始投票内容进行散列运算,得到承诺值
Figure FDA00036086421800000117
的过程,包括:
对原始投票内容m和字符串o进行哈希运算,得到承诺值
Figure FDA00036086421800000118
其中,o为随机生成的字符串。
3.根据权利要求1所述的方法,其特征在于,所述结合其他各投票人的信息对承诺值
Figure FDA00036086421800000119
进行盲化处理,得到承诺值元组
Figure FDA00036086421800000120
Figure FDA00036086421800000121
的过程,包括:
对于其他每一投票人的公钥信息
Figure FDA00036086421800000122
Figure FDA00036086421800000123
进行椭圆曲线ECC的点乘操作,得到盲化因子tj
基于盲化因子tj将承诺值
Figure FDA00036086421800000124
哈希到新的承诺值xj及cj
汇聚各承诺值xj得到承诺值元组
Figure FDA00036086421800000132
以及采用私钥ski对各承诺值cj进行签名,得到承诺值元组
Figure FDA00036086421800000125
4.根据权利要求1所述的方法,其特征在于,所述通过ESDSA算法对承诺值元组
Figure FDA00036086421800000126
进行签名,得到签名元组
Figure FDA00036086421800000127
的过程,包括:
对元组
Figure FDA00036086421800000128
进行哈希运算,得到签名元组
Figure FDA00036086421800000129
其中,IDi和addri为目标投票人的身份标识及地址信息,
Figure FDA00036086421800000130
为承诺值元组
Figure FDA00036086421800000131
中对应于投票人nv的承诺值。
5.根据权利要求1所述的方法,其特征在于,所述散列输出还包括承诺值
Figure FDA0003608642180000021
所述方法还包括:
从区块链获取签名元组
Figure FDA0003608642180000022
和承诺值元组
Figure FDA0003608642180000023
并基于签名元组
Figure FDA0003608642180000024
计算得到其他各投票人的签名元组
Figure FDA0003608642180000025
基于承诺值
Figure FDA0003608642180000026
和承诺值元组
Figure FDA0003608642180000027
采用预设的算法VerifyS对
Figure FDA0003608642180000028
的有效性进行验证,得到验证通过的各签名元素
Figure FDA0003608642180000029
其中,
Figure FDA00036086421800000210
是签名元组
Figure FDA00036086421800000211
中对应于投票人nv的签名元素;
获取对应于验证通过的每一签名元素
Figure FDA00036086421800000212
的承诺字符串
Figure FDA00036086421800000213
并基于验证通过的各签名元素
Figure FDA00036086421800000214
构建新的签名元组
Figure FDA00036086421800000215
基于各承诺字符串
Figure FDA00036086421800000216
构建新的承诺元组
Figure FDA00036086421800000217
采用随机地址将投票元组
Figure FDA00036086421800000218
上链,投票元组
Figure FDA00036086421800000219
用作打开投票阶段的投票内容。
6.根据权利要求5所述的方法,其特征在于,还包括:
从区块链获取投票元组
Figure FDA00036086421800000220
并采用预设的算法V对签名元组
Figure FDA00036086421800000221
进行验证;
若签名元组
Figure FDA00036086421800000222
中超过预设比例的签名元素
Figure FDA00036086421800000223
验证通过,则通过预设的算法从承诺元组
Figure FDA00036086421800000224
Figure FDA00036086421800000225
中验证原始投票内容。
7.根据权利要求5所述的方法,其特征在于,所述通过预设的算法从承诺元组
Figure FDA00036086421800000226
Figure FDA00036086421800000227
中验证原始投票内容的过程,包括:
对承诺元组
Figure FDA00036086421800000228
进行字符串序列化运输,得到字符串序列化后的承诺元组
Figure FDA00036086421800000229
对输入的原始投票内容m和字符串序列化后的承诺元组
Figure FDA00036086421800000230
进行哈希运算,得到哈希值
Figure FDA00036086421800000231
判断
Figure FDA00036086421800000232
Figure FDA00036086421800000233
是否相等,若是,则原始投票内容m验证通过。
8.一种基于区块链的匿名可信投票装置,其特征在于,包括:
承诺单元,用于对原始投票内容进行散列运算,得到散列输出,所述散列输出包括承诺值
Figure FDA0003608642180000031
盲化单元,用于结合其他各投票人的信息对承诺值
Figure FDA0003608642180000032
进行盲化处理,得到承诺值元组
Figure FDA0003608642180000033
Figure FDA0003608642180000034
签名单元,用于通过ESDSA算法对承诺值元组
Figure FDA0003608642180000035
进行签名,得到签名元组
Figure FDA0003608642180000036
投票单元,用于基于承诺值元组
Figure FDA0003608642180000037
签名元组
Figure FDA0003608642180000038
以及其他各投票人的签名元组
Figure FDA0003608642180000039
构建投票元组
Figure FDA00036086421800000310
并将投票元组
Figure FDA00036086421800000311
以及承诺值元组
Figure FDA00036086421800000312
上链,所述投票元组
Figure FDA00036086421800000313
用作投票阶段的投票内容;
其中,签名元组
Figure FDA00036086421800000314
为其他各投票人对签名元组
Figure FDA00036086421800000315
进行验证,且在验证通过后生成的;承诺值元组
Figure FDA00036086421800000316
用于对所述投票元组进行解密。
9.一种基于区块链的匿名可信投票设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现如权利要求1~7中任一项所述的基于区块链的匿名可信投票方法的各个步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1~7中任一项所述的基于区块链的匿名可信投票方法的各个步骤。
CN202210422851.XA 2022-04-21 2022-04-21 一种基于区块链的匿名可信投票方法、装置及相关设备 Active CN114629660B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210422851.XA CN114629660B (zh) 2022-04-21 2022-04-21 一种基于区块链的匿名可信投票方法、装置及相关设备
PCT/CN2022/116770 WO2023201962A1 (zh) 2022-04-21 2022-09-02 一种基于区块链的匿名可信投票方法、装置及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210422851.XA CN114629660B (zh) 2022-04-21 2022-04-21 一种基于区块链的匿名可信投票方法、装置及相关设备

Publications (2)

Publication Number Publication Date
CN114629660A true CN114629660A (zh) 2022-06-14
CN114629660B CN114629660B (zh) 2024-03-08

Family

ID=81905331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210422851.XA Active CN114629660B (zh) 2022-04-21 2022-04-21 一种基于区块链的匿名可信投票方法、装置及相关设备

Country Status (2)

Country Link
CN (1) CN114629660B (zh)
WO (1) WO2023201962A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116436979A (zh) * 2023-06-15 2023-07-14 湖南湘江树图信息科技创新中心有限公司 联盟区块链调用外部服务的方法及系统
WO2023201962A1 (zh) * 2022-04-21 2023-10-26 南方电网科学研究院有限责任公司 一种基于区块链的匿名可信投票方法、装置及相关设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107833135A (zh) * 2017-10-30 2018-03-23 中山大学 一种基于区块链的公平电子投票协议
CN108109257A (zh) * 2018-01-05 2018-06-01 杭州电子科技大学 一种基于区块链的匿名电子投票方法
CN109903450A (zh) * 2019-03-28 2019-06-18 深圳职业技术学院 电子投票方法以及系统
CN110232764A (zh) * 2019-05-16 2019-09-13 暨南大学 基于区块链的匿名电子投票方法及系统
FR3091108A1 (fr) * 2018-12-24 2020-06-26 Orange Procédé et système de vote électronique
WO2021218335A1 (zh) * 2020-04-27 2021-11-04 深圳壹账通智能科技有限公司 基于区块链的电子投票方法、装置及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104392534B (zh) * 2014-11-21 2017-04-12 西南交通大学 一种基于手指静脉特征识别的电子投票方法和装置
CN108833082A (zh) * 2018-06-25 2018-11-16 东北大学秦皇岛分校 一种基于区块链去中心化的隐私保护投票系统
CN114629660B (zh) * 2022-04-21 2024-03-08 南方电网科学研究院有限责任公司 一种基于区块链的匿名可信投票方法、装置及相关设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107833135A (zh) * 2017-10-30 2018-03-23 中山大学 一种基于区块链的公平电子投票协议
CN108109257A (zh) * 2018-01-05 2018-06-01 杭州电子科技大学 一种基于区块链的匿名电子投票方法
FR3091108A1 (fr) * 2018-12-24 2020-06-26 Orange Procédé et système de vote électronique
CN109903450A (zh) * 2019-03-28 2019-06-18 深圳职业技术学院 电子投票方法以及系统
CN110232764A (zh) * 2019-05-16 2019-09-13 暨南大学 基于区块链的匿名电子投票方法及系统
WO2021218335A1 (zh) * 2020-04-27 2021-11-04 深圳壹账通智能科技有限公司 基于区块链的电子投票方法、装置及存储介质

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
JULIO CESAR PEREZ CARCIA: "blockchain-based system for e-voting using blind signature protocol", 2021 IEEE GLOBAL COMMUNICATIONS CONFERENCE, 2 February 2022 (2022-02-02) *
JUN HUANG,DEBIAO HE: "the application of the blockchain technology in voting systems:A review", ACM COMPUTING SURVEYS, 17 April 2021 (2021-04-17) *
UZMA JAFAR,MOHD JUZAIDDIN AB AZIZ: "blockchain for electronic voting system—review and open research challenges", BLOCKCHAIN FOR TRUSTWORTHY INTERNET OF THINGS, 15 August 2021 (2021-08-15) *
XUECHAO YANG, XUN YI: "Publicly verifiable online voting protocol without trusted tallying authorities", FUTURE GENERATION COMPUTER SYSTEMS, vol. 112, 30 November 2020 (2020-11-30) *
于天娇;曹春杰;王隆娟;许蕾;: "基于联盟链的匿名电子投票方案", 网络空间安全, no. 12, 25 December 2019 (2019-12-25) *
李靖;景旭;杨会君;: "基于实用拜占庭容错算法的区块链电子计票方案", 计算机应用, no. 04 *
陈晓峰, 王育民: "基于匿名通讯信道的安全电子投票方案", 电子学报, no. 03, 25 March 2003 (2003-03-25) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023201962A1 (zh) * 2022-04-21 2023-10-26 南方电网科学研究院有限责任公司 一种基于区块链的匿名可信投票方法、装置及相关设备
CN116436979A (zh) * 2023-06-15 2023-07-14 湖南湘江树图信息科技创新中心有限公司 联盟区块链调用外部服务的方法及系统
CN116436979B (zh) * 2023-06-15 2023-08-11 湖南湘江树图信息科技创新中心有限公司 联盟区块链调用外部服务的方法及系统

Also Published As

Publication number Publication date
WO2023201962A1 (zh) 2023-10-26
CN114629660B (zh) 2024-03-08

Similar Documents

Publication Publication Date Title
AU2017395785B2 (en) Voting system and method
CN109523683B (zh) 一种基于区块链技术的不记名电子投票方法
RU2652443C1 (ru) Система и способ определения количества голосов избирателей, собираемых с помощью электронного голосования
CN104392534B (zh) 一种基于手指静脉特征识别的电子投票方法和装置
WO2023201962A1 (zh) 一种基于区块链的匿名可信投票方法、装置及相关设备
CN110912705B (zh) 一种基于区块链的分布式电子投票方法及系统
CN113129518B (zh) 电动车辆充电系统及其资源管理方法
Brunner et al. SPROOF: A Platform for Issuing and Verifying Documents in a Public Blockchain.
CN111817855B (zh) 基于以太坊区块链的电子投票方法及系统
Nguyen Thi et al. Enhanced security in internet voting protocol using blind signatures and dynamic ballots
Miao et al. Blockchain assisted multi-copy provable data possession with faults localization in multi-cloud storage
US20220239502A1 (en) System to Securely Issue and Count Electronic Ballots
CN114005217A (zh) 一种基于区块链的电子投票系统及方法
CN108234504A (zh) 一种云存储中基于身份的代理数据完整性检测方法
CN110781526A (zh) 数字奖章创建方法、装置、电子设备及介质
EP3474241A1 (en) Electronic balloting
CN112422294B (zh) 基于环签名的匿名投票方法及装置、电子设备、存储介质
Helbach et al. Code voting with linkable group signatures
Lu et al. Self-tallying e-voting with public traceability based on blockchain
Pu et al. An electronic voting scheme using secure multi-party computation based on secret sharing
Lijuan et al. Electronic Voting Scheme Based on Blockchain and SM2 Cryptographic Algorithm Zero-Knowledge Proof
CN113326527A (zh) 一种基于区块链的可信数字签名系统及方法
Sri et al. E-voting system using blockchain
Kumar et al. Blockchain Based Public Cloud Security for E-Voting System on IoT Environment
CN107612696A (zh) 一种量子可否认协议中两种协议单向归约的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant