CN113496406A - 一种基于区块链的强匿名电子投票协议 - Google Patents
一种基于区块链的强匿名电子投票协议 Download PDFInfo
- Publication number
- CN113496406A CN113496406A CN202010194384.0A CN202010194384A CN113496406A CN 113496406 A CN113496406 A CN 113496406A CN 202010194384 A CN202010194384 A CN 202010194384A CN 113496406 A CN113496406 A CN 113496406A
- Authority
- CN
- China
- Prior art keywords
- voting
- script
- voter
- transaction
- candidate
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
- G06Q20/38215—Use of certificates or encrypted proofs of transaction rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于信息安全领域,具体涉及一种基于区块链的强匿名电子投票协议。该协议实现了n个投票者在m个候选者中匿名选出一个获胜者的目的,通过兼容比特币区块链确保数据的可信性,借助混币策略为投票过程提供强匿名性,确保投票者的隐私安全,增强投票的公平性。链上交易方案可确保投票者数量不受比特币脚本限制,并且投票失败可赎回比特币。本协议包括监管者、混淆商、投票者、候选者、区块链五类实体,分为预投票和投票两个阶段:其中预投票阶段分为身份注册、身份混淆、选票生成三个步骤;投票阶段包括构造投票交易、收集选票、投票成功、投票失败。
Description
技术领域
本发明属于信息安全领域,具体涉及一种基于区块链的强匿名电子投票协议。
背景技术
区块链具有去中心化、不可篡改、匿名性等特点,无中心化TTP,使得数据不会被某一方主导,数据存入区块链后无法修改,增加了数据的可信性,匿名性则可保护用户隐私,天然符合电子投票系统的需求。区块链技术诞生以来,学术界和工业界对其本身的优化及其在各个领域的应用进行了深入的研究,投票也是区块链技术的探索应用领域之一。比特币(BitCoin)的概念最初由中本聪在2009年提出,根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。比特币作为新型的去中心化的数字货币在投票、设计公平交换协议等领域也有着广泛的应用。当前基于比特币的投票方案中,对投票者的身份隐私保护不足,影响了投票的公平性。混淆问题源自程序混淆,目的在于通过一定的技术手段,在保持原程序的功能不变的同时使得程序变的“不可识别”,是密码学研究的热点之一。
关于区块链在投票领域上的应用,Zhao等人较早提出使用比特币设计投票协议,他们的方案在于使得n个投票人各拥有1个比特币,为两个候选人之一进行投票,此协议只能进行2选1投票。另外在该方案中存在丧失匿名性的问题,投票的公平性无法保证。Jason等人提出一种Prepaid Bitcoin cards(PBCs),PBC包含预支付了比特币的地址及对应私钥,但其方案分发实物浪费人力物力。Bartolucci等人设计了一种基于份额的区块链投票协议,即所谓SHARVOT协议,但无法满足多候选人和多选票人的需求。Takabatake等人使用Zerocoin辅助比特币来为选票提供匿名性,但当投票规模较大时效率较低。
发明内容
为解决现有技术的上述问题,本发明提供一种基于区块链的强匿名电子投票协议,实现了n个投票者在m个候选者中匿名选出一个获胜者的目的,解决了匿名性的问题。通过兼容比特币区块链确保数据的可信性,借助混币策略为投票过程提供强匿名性,确保投票者的隐私安全,增强投票的公平性。链上交易方案可确保投票者数量不受比特币脚本限制,并且投票失败可赎回比特币。
本发明提供的协议具体如下:
该协议包括监管者、混淆商、投票者、候选者、区块链五类实体。
所述监管者为所述协议引入的可信第三方(trusted third party,简称TTP),实体对应为政府、银行等可信权威机构。监管者审核申请注册的投票者、候选者及混淆商,负责公开协议执行过程中的部分信息并向混淆商颁发群证书。监管者的引入牺牲了一定的去中心化属性,但极大提升了协议执行效率,增加了协议安全性,是值得的。
所述候选者为被投票者,向监管者申请注册并成功才可被投票,获得票数最多的候选者胜出。
所述投票者向监管者申请注册并成功后可获得投票权,混淆身份后构造选票,将其投给期望的候选者。
所述混淆商向监管者申请群证书后才会被投票者认可,对合法投票者的比特币地址进行混淆,将比特币转移到匿名比特币地址。
所述区块链为数据存储和协议执行的基础设施,以匿名且不可篡改的方式记录投票情况。
所述监管者审核后共有m个候选者Cj={C1,C2,...,Cm},n个投票者Ui={U1,U2,...,Un},候选者取得至少k个选票才可胜出;所述协议分为预投票和投票两个阶段:
S1、预投票阶段
所述预投票阶段,分为身份注册、身份混淆、选票生成三个步骤。
其所述步骤具体为:
S1.1身份注册
所述身份注册指的是候选者、投票者和混淆商向监管者提交信息注册,审核后构造投票者列表、公布候选者列表并向混淆商颁发群证书。具体为:
确定投票者和候选者的个数进行注册;设定有n个投票者Ui={U1,U2,...,Un}和m个候选者Cj={C1,C2,...,Cm}。其中,每个投票者Ui须有一个包含足够比特币的地址(bitcoin address,简称BAi),其对应公私钥对为(pui,pri)。投票者向监管者提交BAi及对应公钥和个人信息(包括身份签名)进行身份注册,监管者审核身份信息并验证签名与比特币地址对应后,为合格的投票者分发投票者编号(voter number,简称VN),并将其加入到投票者列表(voters list,简称VL),VL的每条记录由投票者的编号VNi和比特币地址BAi组成。
每个候选者构造Cj一对公私钥对PUj=PRj*G,保留私钥PRj,向监管者提交公钥PUj及身份信息进行注册,监管者审核后,构造候选者列表(candidates list,简称CL)并公布,CL包括候选者的身份说明及其对应公钥。
每个混淆商向监管者提交身份信息注册,审核通过后向其颁发群证书。
S1.2身份混淆
所述身份混淆指的是审核通过的投票者通过混淆商执行混币协议得到匿名比特币地址,监管者公布匿名投票者列表。具体为:
集合VL中的所有合法投票者Ui执行混币协议获得用于存储投票的匿名的比特币地址(anonymous bitcoin address,简称ABA);在混淆协议完成后,监管者发布匿名地址列表(anonymous voters list,简称AVL),AVL={ABAi}i∈{1,...,n};
S1.3选票生成
所述选票生成指的是匿名投票者使用匿名比特币地址执行联合Shamir随机秘密共享获取秘密份额,并使用秘密份额构造选票。具体为:
S2、投票阶段
所述投票阶段分为构造投票交易、收集选票、投票成功、投票失败四个步骤。所述投票阶段主要任务是投票者构造投票交易,将选票公布于区块链上,候选者解密选票获取秘密份额。如果有候选者收集足够的秘密份额则投票成功,获胜的候选者构造获胜交易,如果投票失败则由投票者构造退款交易。其所述步骤具体为:
S2.1构造投票交易
所述构造投票交易指的是匿名投票者列表中的每个投票者构造投票交易,将预投票阶段生成的选票公开到区块链上,设置交易输出的解锁条件为胜出的投票者或超时由自己解锁。其中,在比特币协议中主要采用P2SH脚本和CLTV操作符,以实现匿名电子投票。特币中每个交易可包含多个输入脚本和多个输出脚本,这些用于创建交易的脚本使用基于堆栈的脚本语言编写。每个输入脚本与来源交易的输出脚本关联,直至创块(Coinbase)交易。在P2PKH(payto public key hash)形式中输出脚本仅存储公钥的哈希值,输入脚本则额外存储公钥用于验证是否和哈希值匹配。P2SH(pay to script hash)形式的脚本则用赎回脚本(redeem script)存储单个或多重签名的公钥,而输入脚本需给出所有私钥和序列化的赎回脚本。P2SH简化了比特币交易脚本中多重签名的使用方式,M-N组合的P2SH脚本被假设为公钥个数为N,至少需提供其中的M个公钥对应的签名可以解锁未花费交易输出(unspenttransaction output,简称UTXO)。具体为:
当所有投票者都构造完自己的选票之后,每个投票者Ui构造投票交易VoteTxi附带选票;交易输出为x个比特币,交易的输入地址为混淆阶段生成的匿名比特币地址ABAi,选票vi被记录于P2SH脚本。
投票交易的输出脚本基于“或”条件,条件一或条件二可解锁交易输出。
第一个解锁条件是一个P2SH形式的输出脚本。
创建M-N组合P2SH形式的UTXO时,用户首先需生成赎回脚本,存储所有公钥;在比特币协议中,堆栈语言PUSHDATA操作限制数据最大为520字节,赎回脚本受此限制最多仅能放置15个公钥;脚本形式为:
Script M<PubKey1>…<PubKeyN>N OP_CHECKMULTISIG
然后使用HASH160算法生成此脚本的20字节长哈希值,创建输出脚本:
OP_HASH160<Hash of Redeem Script>OP_EQUAL
在P2SH脚本中还可以存储数据,只需将赎回脚本中闲置的公钥位替换为数据。例如有数据Data1,Data2,则赎回脚本形式为:
Script M<PubKey1>…<PubKeyN><Data1><Data2>N OP_CHECKMULTISIG
投票交易输出脚本第一个解锁条件对应的Redeem脚本RS中包含秘密共享的公钥P并存储选票vi,使用对应的秘密共享私钥签名可解锁,例如1-1组合,脚本形式为:
Script 1<P><vi>1 OP_CHECKMULTISIG
输出脚本存储通过HASH160算法计算RS的20字节长哈希值,形式为:
OP_HASH160<Hash(RS)>OP_EQUAL
第二个解锁条件以P2PKH脚本附带时间锁的形式添加。
检查锁定时间验证(check lock time verify,简称CLTV)是一种比特币脚本操作符;它可以对交易的某个输出进行时间锁定,而不是锁定整个交易,交易输出中使用CLTV操作符后能够限制该输出只能在指定时间之后被解锁。
S2.2收集选票
所述收集选票指的是每个候选者根据匿名投票者列表查询比特币区块链中的投票交易,依次尝试解密包含的选票,收集解密成功的选票中存储的秘密份额。
该环节候选者收集自己的选票,获取秘密共享份额;具体为:
S2.3投票成功
所述投票成功指的是候选者若能在规定时间之前收集足够的秘密份额来重构私钥,则构造获胜交易解锁所有投票交易,在本次投票中胜出。具体为:
如果某一候选者Cj成功获取k个或更多的私钥份额si,候选者可为每个投票交易都构造一个获胜交易WinTxj,也可将多个投票交易的输出作为一个获胜交易的输入,使用秘密(简称S)签署每个输入,解锁投票交易输出脚本的第一个条件,即可获得n个投票交易VoteTxi中所有的UTXO;公众可通过查询记录在区块链中的获胜交易来验证该候选者取得足够秘密份额,候选者成功重构秘密共享的私钥,在投票中胜出。
获胜交易输入脚本解锁投票交易中P2SH形式UTXO,需提供S的签名并包含序列化的赎回脚本:
OP_0<Sigs><Serialized Redeem Script>
S2.4投票失败
所述投票失败指的是若候选者超时之前未能收集足够的秘密份额,则投票者构造退款交易解锁自己构造的投票交易,赎回比特币。如果没有候选者得到足够的有效选票以重构秘密共享的私钥,将导致本次投票失败。具体为:
当时间超过T之后,投票交易第二个解锁条件的CLTV操作符才会失效,防止投票者在确定投票失败前转走比特币。此后每个投票者Ui都构造一个退款交易RefundTxi,将n*x个比特币返还到原匿名地址ABAi中。此交易输入为投票交易输出脚本的第二个条件,由投票者Ui使用私钥签署。
进一步的,所述S1.2的混币协议主要由监管者、混淆商和用户三类角色组成。监管者为可信第三方,负责验证、签发群证书和审计。混淆商须经监管方认证,向用户提供混币服务,收取一定的混淆费。用户以匿名信道与混淆商通信,通过混淆商将一定数量的比特币从非匿名地址转移到全新的匿名地址。
进一步的,所述S1.3中每个投票者Ui执行联合Shamir随机秘密共享,任选秘密值a0 (i)构造k-1阶多项式任取n个数xi(i∈[1,n])代入多项式并将结果fi(j)发送给其余n-1个投票者。每个投票者将收到的n个数据求和获得私钥份额为了构造正确的P2SH脚本使投票信息可以被广播,需要计算得到此私钥所对应的公钥;每个投票者Ui计算公钥份额pi=si*G,并将其发给其它合法的投票者。Ui收到其余n-1个公钥份额pi之后,构造完整公钥
进一步的,所述S2.4中本投票协议利用比特币的时间锁脚本设计了一个安全回滚机制,即使在投票失败的情况下,选民提交的比特币仍可被赎回。此时所有投票者取回比特币,重新进行投票。
本发明的有益效果是:
1、该协议使用区块链确保数据的可信性,借助混币策略为投票过程提供强匿名性,确保投票者的隐私安全,增强投票的公平性。链上交易方案可确保投票者数量不受比特币脚本限制,并且投票失败可赎回比特币。
2、该协议在投票之前,投票者需证明自己拥有足够的比特币用于投票,监管者会审核投票者和候选者的身份信息合法性。投票阶段只有AVL中的合法投票者才能够执行联合Shamir随机秘密共享获得私钥份额si来构造选票,交易阶段只有AVL中的地址构造的交易才被认为合法。未通过审核的投票者不会出现在AVL中,无法参与秘密共享获取份额,所以无法构造合法选票,投票者无法通过生成多个比特币地址来发动女巫攻击。同时也会因为比特币地址未通过监管者审核而不在公开列表,识破外部敌手若想伪装成系统角色来试图参与投票。
3、该协议通过混淆阶段混淆之后投票者Ui使用ABAi执行秘密共享及参与比特币交易都是匿名的,混币协议中采用多混淆商的凭证兑换方式避免了单一混淆商泄露用户信息的可能。由于使用匿名比特币地址,所以投票者无法将选票与投票者真实身份关联。这些设计使投票人无法得知当前选情或影响投票者决策,保证了投票的公平性。
4、该协议公众可以查询监管者公开的候选者列表和匿名投票者列表来验证投票者和候选者的合法性。协议在混淆阶段切断了匿名比特币地址和真实身份的关联,投票者无法事先向第三方证明拥有投票权。
5、该协议在投票阶段投票者需执行联合Shamir随机秘密共享才能获取份额,选票中的份额由所有投票者发送的随机参数共同生成,无法事先向第三方证明构造了特定选票。这些措施使投票者无法事先向第三方提供投票的证明,保证了协议的无收据性。
附图说明
图1为本发明的结构示意图;
图2为本发明的整体框架图;
图3为本发明应用混币协议的形式图;
图4为本发明投票阶段的流程图。
具体实施方式
实施例:
附图仅用于示例性说明,不能理解为对本专利的限制,对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。下面结合附图和实施例对本发明的技术方案做进一步说明。
如图1所示,本发明候选者、投票者和混淆商向监管者提交信息注册,审核后构造投票者列表、公布候选者列表并向混淆商颁发群证书。本协议假设监管者审核后共有m个候选者Cj={C1,C2,...,Cm},n个投票者Ui={U1,U2,...,Un},候选者取得至少k个选票才可胜出。匿名投票者使用匿名比特币地址执行联合Shamir随机秘密共享获取秘密份额,并使用秘密份额构造选票。匿名投票者列表中的每个投票者构造投票交易,将预投票阶段生成的选票公开到区块链上,设置交易输出的解锁条件为胜出的投票者或超时由自己解锁。每个候选者根据匿名投票者列表查询比特币区块链中的投票交易,依次尝试解密包含的选票,收集解密成功的选票中存储的秘密份额。候选者若能在规定时间之前收集足够的秘密份额来重构私钥,则构造获胜交易解锁所有投票交易,在本次投票中胜出。若候选者超时之前未能收集足够的秘密份额,则投票者构造退款交易解锁自己构造的投票交易,赎回比特币。
如图2所示,本协议整体分为预投票和投票两个阶段。预投票阶段在链下进行,投票者和候选者注册身份,投票者通过混币协议获得包含比特币的匿名地址,用其执行联合Shamir随机秘密共享获取份额并生成选票。投票阶段通过比特币交易在链上进行,所有投票者构造投票交易广播到区块链,候选者收集选票获取秘密份额,若收集到足够份额则构造获胜交易,否则由投票者构造退款交易。
S1、预投票阶段
S1.1身份注册:
确定投票者和候选者的个数进行注册;设定有n个投票者Ui={U1,U2,...,Un}和m个候选者Cj={C1,C2,...,Cm}。其中,每个投票者Ui须有一个包含足够比特币的地址(bitcoin address,简称BAi),其对应公私钥对为(pui,pri)。投票者向监管者提交BAi及对应公钥和个人信息(包括身份签名)进行身份注册,管理员审核身份信息并验证签名与比特币地址对应后,为合格的投票者分发投票者编号(voter number,简称VN),并将其加入到投票者列表(voters list,简称VL),VL的每条记录由投票者的编号VNi和比特币地址BAi组成。
每个候选者构造Cj一对公私钥对PUj=PRj*G,保留私钥PRj,向监管者提交公钥PUj及身份信息进行注册,监管者审核后,构造候选者列表(candidates list,简称CL)并公布,CL包括候选者的身份说明及其对应公钥。
每个混淆商向监管者提交身份信息注册,审核通过后向其颁发群证书。
S1.2身份混淆:
集合VL中的所有合法投票者Ui执行混币协议获得用于存储投票的匿名的比特币地址(anonymous bitcoin address,简称ABA)。在混淆协议完成后,监管者发布匿名地址列表(anonymous voters list,简称AVL),AVL={ABAi}i∈{1,...,n}。
如图3所示,混币协议主要由监管者、混淆商和用户三类角色组成。监管者为可信第三方,负责验证、签发群证书和审计。混淆商须经监管方认证,向用户提供混币服务,收取一定的混淆费。用户以匿名信道与混淆商通信,通过混淆商将一定数量的比特币从非匿名地址转移到全新的匿名地址。
首先所有混淆商向监管方注册,监管方审核通过后向每个混淆商提供群证书。用户向混淆商A提供包含全新生成的匿名比特币地址的凭证并使用存有一定数量比特币的非匿名比特币地址向混淆商支付转账金额和混淆费,混淆商A验证后对凭证进行群签名后发送给用户。然后用户向任一混淆商N提供群签名和凭证,混淆商验证群签名和凭证后向凭证中的匿名比特币地址支付比特币。这样用户就得到一个含有一定数量比特币的匿名比特币地址(这个地址的用途是什么,是在哪个步骤中体现的预投票阶段:当所有投票者都构造完自己的选票之后,每个投票者Ui构造投票交易VoteTxi附带选票。交易输出为x个比特币,交易的输入地址为混淆阶段生成的匿名比特币地址ABAi,选票vi被记录于P2SH脚本)。
S1.3选票生成:
每个投票者Ui执行联合Shamir随机秘密共享,任选秘密值a0 (i)构造k-1阶多项式任取n个数xi(i∈[1,n])代入多项式并将结果fi(j)发送给其余n-1个投票者。每个投票者将收到的n个数据求和获得私钥份额构造正确的P2SH脚本使投票信息可以被广播,计算得到此私钥所对应的公钥。每个投票者Ui计算公钥份额pi=si*G,并将其发给其它合法的投票者。Ui收到其余n-1个公钥份额pi之后,构造完整公钥
S2投票阶段
S2.1构造投票交易:
如图4所示,当所有投票者都构造完自己的选票之后,每个投票者Ui构造投票交易VoteTxi附带选票。交易输出为x个比特币,交易的输入地址为混淆阶段生成的匿名比特币地址ABAi,选票vi被记录于P2SH脚本。
投票交易的输出脚本基于“或”条件,条件一或条件二可解锁交易输出。
第一个解锁条件是一个P2SH形式的输出脚本。
创建M-N组合P2SH形式的UTXO时,用户首先需生成赎回脚本,存储所有公钥。在比特币协议中,堆栈语言PUSHDATA操作限制数据最大为520字节,赎回脚本受此限制最多仅能放置15个公钥。
脚本形式为:
Script M<PubKey1>…<PubKeyN>N OP_CHECKMULTISIG
然后使用HASH160算法生成此脚本的20字节长哈希值,创建输出脚本:
OP_HASH160<Hash of Redeem Script>OP_EQUAL
在P2SH脚本中还可以存储数据,只需将赎回脚本中闲置的公钥位替换为数据。例如有数据Data1,Data2,则赎回脚本形式为:
Script M<PubKey1>…<PubKeyN><Data1><Data2>N
OP_CHECKMULTISIG
投票交易输出脚本第一个解锁条件对应的Redeem脚本RS中包含秘密共享的公钥P并存储选票vi,使用对应的秘密共享私钥签名可解锁,例如1-1组合,脚本形式为:
Script 1<P><vi>1OP_CHECKMULTISIG
输出脚本存储通过HASH160算法计算RS的20字节长哈希值,形式为:
OP_HASH160<Hash(RS)>OP_EQUAL
第二个解锁条件以P2PKH脚本附带时间锁的形式添加。
检查锁定时间验证(check lock time verify,简称CLTV)是一种比特币脚本操作符。它可以对交易的某个输出进行时间锁定,而不是锁定整个交易,交易输出中使用CLTV操作符后能够限制该输出只能在指定时间之后被解锁。
设Alice向Bob转账,使用P2PKH形式的输出脚本:
DUP HASH160<Hash of Bob's Public Key>EQUALVERIFY
CHECKSIG
使用CLTV锁定一段时间,设为2个月,则时间设置为当前区块高度+8640(块)或当前Unix纪元时间+5184000(秒)。超时后P2PKH交易将能被Bob使用自己的私钥签名解锁:
<now+2months>CHECKLOCKTIMEVERIFY DROP DUP
HASH160<Hash of Bob's Public Key>EQUALVERIFY CHECKSIG
投票交易输出脚本第二个解锁条件的P2PKH脚本包含投票者公钥pu,使用CLTV操作符锁定一段时间,投票者可在超时后使用自己的私钥签名解锁,锁定一天时形式为:
<now+1day>CHECKLOCKTIMEVERIFY DROP DUP
HASH160<pu>EQUALVERIFY CHECKSIG
S2.2收集选票:
该环节候选者收集自己的选票,获取秘密共享份额。
候选者Cj在区块链上根据AVL中所有地址的交易记录查找VoteTxi,查看P2SH脚本中的公开的投票vi,依次尝试用自己的私钥PRj解密vi,成功解密即可获得选票中的私钥份额si以及候选者编号IDCj。
S2.3投票成功:
如果某一候选者Cj成功获取k个或更多的私钥份额si,那么便可通过拉格朗日插值公式重构秘密共享的私钥候选者可为每个投票交易都构造一个获胜交易WinTxj,也可将多个投票交易的输出作为一个获胜交易的输入,使用S签署每个输入,解锁投票交易输出脚本的第一个条件,即可获得n个投票交易VoteTxi中所有的UTXO。公众可通过查询记录在区块链中的获胜交易来验证该候选者取得足够秘密份额,候选者成功重构秘密共享的私钥,在投票中胜出。
获胜交易输入脚本解锁投票交易中P2SH形式UTXO,需提供S的签名并包含序列化的赎回脚本:
OP_0<Sigs><Serialized Redeem Script>
S2.4投票失败:
如果没有候选者得到足够的有效选票以重构秘密共享的私钥,将导致本次投票失败。
当时间超过T之后,投票交易第二个解锁条件的CLTV操作符才会失效,防止投票者在确定投票失败前转走比特币。此后每个投票者Ui都构造一个退款交易RefundTxi,将n*x个比特币返还到原匿名地址ABAi中。此交易输入为投票交易输出脚本的第二个条件,由投票者Ui使用私钥签署。
根据上述技术方案,结合具体投票人数和候选人数等做进一步说明:
S1、预投票阶段
S1.1身份注册:
设有3个候选者,6个投票者,其中Ui代表投票者地址,x代表x个比特币用于投票,σ(U1)代表投票者地址U1对应的数字签名。
每个投票者Ui均生成自己的地址addressi和公钥私钥对(pui,pri),每个地址都有1个比特币,其中1比特币是用于投票的比特币,设有6个投票者U1、U2、U3、U4、U5、U6。
投票者提交自己的比特币地址和对应的公钥及身份信息向监管者注册,候选者也提交自己的比特币地址和对应的公钥及身份信息向监管者注册。混淆商向监管者提交身份信息注册,然后监管者颁发群证书,混淆商获得认证。候选者公布候选者列表CL。
S1.2身份混淆:
投票者通过混淆商进行身份混淆获得匿名地址。集合VL中的所有合法投票者Ui执行混币协议获得用于存储投票的匿名的比特币地址ABA。在混淆协议完成后,监管者发布匿名地址列表AVL,AVL={ABA1,ABA2,ABA3,ABA4,ABA5,ABA6}
S1.3选票生成:
假设所有人都不弃票,每个投票者Ui执行联合Shamir随机秘密共享,任选秘密值a0 (i)构造k-1阶多项式任取6个数xi(i∈[1,6])代入多项式并将结果fi(j)发送给其余5个投票者。每个投票者将收到的6个数据求和获得私钥份额每个投票者Ui计算公钥份额pi=si*G,并将其发给其它合法的投票者。Ui收到其余5个公钥份额pi之后,构造完整公钥每个投票者用自己的公钥加密秘密份额si和支持的候选者的编号来构造选票,投票者U1给候选者C1投票,选票为投票者U2给候选者C1投票,选票为投票者U3给候选者C1投票,选票为投票者U4给候选者C2投票,选票为投票者U5给候选者C2投票,选票为投票者U6给候选者C3投票,选票为
S2投票阶段
S2.1构造投票交易:
当所有投票者都构造完自己的选票之后,每个投票者Ui构造投票交易VoteTxi附带选票。交易输出为1个比特币,交易的输入地址为混淆阶段生成的匿名比特币地址ABAi,选票vi被记录于P2SH脚本。
解锁交易输出,创建M-N组合P2SH形式的UTXO,用户首先需生成赎回脚本,存储所有公钥。
脚本形式为:
Script M<PubKey1>…<PubKeyN>N OP_CHECKMULTISIG
创建输出脚本:
OP_HASH160<Hash of Redeem Script>OP_EQUAL
Redeem脚本RS中包含秘密共享的公钥P并存储选票vi,使用对应的秘密共享私钥签名可解锁,即1-1组合,脚本形式为:
Script 1<P><vi>1OP_CHECKMULTISIG
输出脚本存储形式为:
OP_HASH160<Hash(RS)>OP_EQUAL
S2.2收集选票:
S2.3投票成功:
假设所有投票者都投票成功。最终候选者C1获得3票,候选者C2获得2票,候选者C3获得1票。候选者C1收集到3个不同的私钥份额si后,发起获胜交易,将6个比特币转移到自己的address1上去。
S2.4投票失败:
假设投票者U6投票失败,当时间超过T之后,投票交易第二个解锁条件的CLTV操作符失效,每个投票者Ui都构造一个退款交易RefundTxi,将6*1个比特币返还到原匿名地址ABAi中。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改,等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (5)
1.一种基于区块链的强匿名电子投票协议,其特征在于:所述协议包括监管者、混淆商、投票者、候选者、区块链五类实体,所述监管者审核后共有m个候选者Cj={C1,C2,...,Cm},n个投票者Ui={U1,U2,...,Un},候选者取得至少k个选票才可胜出;所述协议步骤如下:
S1、预投票阶段:
S1.1身份注册:
S1.1确定投票者和候选者的个数进行注册;设定有n个投票者Ui={U1,U2,...,Un}和m个候选者Cj={C1,C2,...,Cm}。其中,每个投票者Ui须有一个包含足够比特币的地址(bitcoinaddress,简称BAi),其对应公私钥对为(pui,pri)。投票者向监管者提交BAi及对应公钥和个人信息(包括身份签名)进行身份注册,管理员审核身份信息并验证签名与比特币地址对应后,为合格的投票者分发投票者编号(voter number,简称VN),并将其加入到投票者列表(voters list,简称VL),VL的每条记录由投票者的编号VNi和比特币地址BAi组成;
每个候选者构造Cj一对公私钥对PUj=PRj*G,保留私钥PRj,向监管者提交公钥PUj及身份信息进行注册,监管者审核后,构造候选者列表(candidates list,简称CL)并公布,CL包括候选者的身份说明及其对应公钥;
每个混淆商向监管者提交身份信息注册,审核通过后向其颁发群证书;
S1.2身份混淆:
集合VL中的所有合法投票者Ui执行混币协议获得用于存储投票的匿名的比特币地址(anonymous bitcoin address,简称ABA);在混淆协议完成后,监管者发布匿名地址列表(anonymous voters list,简称AVL),AVL={ABAi}i∈{1,...,n};
S1.3选票生成:
S2、投票阶段:
S2.1构造投票交易:
当所有投票者都构造完自己的选票之后,每个投票者Ui构造投票交易VoteTxi附带选票;交易输出为x个比特币,交易的输入地址为混淆阶段生成的匿名比特币地址ABAi,选票vi被记录于P2SH脚本;
投票交易的输出脚本基于“或”条件,条件一或条件二可解锁交易输出;
第一个解锁条件是一个P2SH形式的输出脚本;
创建M-N组合P2SH形式的UTXO时,用户首先需生成赎回脚本,存储所有公钥;在比特币协议中,堆栈语言PUSHDATA操作限制数据最大为520字节,赎回脚本受此限制最多仅能放置15个公钥;
然后使用HASH160算法生成此脚本的20字节长哈希值,创建输出脚本;在P2SH脚本中还可以存储数据,只需将赎回脚本中闲置的公钥位替换为数据;投票交易输出脚本第一个解锁条件对应的Redeem脚本RS中包含秘密共享的公钥P并存储选票vi,使用对应的秘密共享私钥签名可解锁,输出脚本存储通过HASH160算法计算RS的20字节长哈希值;
第二个解锁条件以P2PKH脚本附带时间锁的形式添加;
检查锁定时间验证(check lock time verify,简称CLTV)是一种比特币脚本操作符;它可以对交易的某个输出进行时间锁定,而不是锁定整个交易,交易输出中使用CLTV操作符后能够限制该输出只能在指定时间之后被解锁;
S2.2收集选票:
该环节候选者收集自己的选票,获取秘密共享份额;
S2.3投票成功:
如果某一候选者Cj成功获取k个或更多的私钥份额si,候选者可为每个投票交易都构造一个获胜交易WinTxj,也可将多个投票交易的输出作为一个获胜交易的输入,使用S签署每个输入,解锁投票交易输出脚本的第一个条件,即可获得n个投票交易VoteTxi中所有的UTXO;公众可通过查询记录在区块链中的获胜交易来验证该候选者取得足够秘密份额,候选者成功重构秘密共享的私钥,在投票中胜出;
获胜交易输入脚本解锁投票交易中P2SH形式UTXO,需提供S的签名并包含序列化的赎回脚本;
S2.4投票失败:
如果没有候选者得到足够的有效选票以重构秘密共享的私钥,将导致本次投票失败;
当时间超过T之后,投票交易第二个解锁条件的CLTV操作符才会失效,防止投票者在确定投票失败前转走比特币。此后每个投票者Ui都构造一个退款交易RefundTxi,将n*x个比特币返还到原匿名地址ABAi中。此交易输入为投票交易输出脚本的第二个条件,由投票者Ui使用私钥签署。
2.根据权利要求1所述的一种基于区块链的强匿名电子投票协议,其特征在于:S1.2中使用了混币协议的形式,混币协议主要由监管者、混淆商和用户三类角色组成;监管者为可信第三方,负责验证、签发群证书和审计;混淆商须经监管方认证,向用户提供混币服务,收取一定的混淆费;用户以匿名信道与混淆商通信,通过混淆商将一定数量的比特币从非匿名地址转移到全新的匿名地址。
5.根据权利要求1所述的一种基于区块链的强匿名电子投票协议,其特征在于:所述S2.4中本投票协议利用比特币的时间锁脚本设计了一个安全回滚机制,即使在投票失败的情况下,选民提交的比特币仍可被赎回;此时所有投票者取回比特币,重新进行投票。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010194384.0A CN113496406A (zh) | 2020-03-19 | 2020-03-19 | 一种基于区块链的强匿名电子投票协议 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010194384.0A CN113496406A (zh) | 2020-03-19 | 2020-03-19 | 一种基于区块链的强匿名电子投票协议 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113496406A true CN113496406A (zh) | 2021-10-12 |
Family
ID=77993335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010194384.0A Pending CN113496406A (zh) | 2020-03-19 | 2020-03-19 | 一种基于区块链的强匿名电子投票协议 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113496406A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210049690A1 (en) * | 2018-03-02 | 2021-02-18 | nChain Holdings Limited | Computer implemented voting process and system |
-
2020
- 2020-03-19 CN CN202010194384.0A patent/CN113496406A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210049690A1 (en) * | 2018-03-02 | 2021-02-18 | nChain Holdings Limited | Computer implemented voting process and system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lin et al. | DCAP: A secure and efficient decentralized conditional anonymous payment system based on blockchain | |
KR102669763B1 (ko) | 블록체인 네트워크를 통해 엔티티에 의해 제공되는 데이터의 통신, 저장 및 처리를 위한 시스템 및 방법 | |
Lee et al. | Electronic voting service using block-chain | |
CN109934988B (zh) | 一种基于区块链的电子投票方法 | |
KR102120882B1 (ko) | 블록체인 기반 컨테스트 네트워크 시스템 및 컨테스트 방법 | |
CN113129518B (zh) | 电动车辆充电系统及其资源管理方法 | |
CN108109257A (zh) | 一种基于区块链的匿名电子投票方法 | |
Vo-Cao-Thuy et al. | Votereum: An ethereum-based e-voting system | |
CN111709749A (zh) | 一种具有条件隐私保护的可追踪区块链交易系统 | |
Peters et al. | Blockchain applications for legal metrology | |
CN113037462B (zh) | 一种基于区块链和安全多方计算的公平电子投票协议方法 | |
CN114333137B (zh) | 基于部分盲签名与区块链的匿名和抗胁迫电子投票系统 | |
KR20060127194A (ko) | 공정한 블라인드 서명을 이용한 전자 투표 방법 및 시스템 | |
Kumar et al. | Secure electronic voting system using blockchain technology | |
CN110060403A (zh) | 基于区块链的一人多票电子投票方法及系统 | |
Pathak et al. | Blockchain based e-voting system | |
CN110298152A (zh) | 一种保护用户隐私和系统安全的线上身份管理方法 | |
CN113381991A (zh) | 基于区块链的电子投票系统及方法 | |
Salman et al. | A Review on E-Voting Based on Blockchain Models | |
US20220239502A1 (en) | System to Securely Issue and Count Electronic Ballots | |
JP7543549B2 (ja) | 分散型台帳上の、匿名性取消を伴う、セキュアな、トレース可能な、および、プライバシー保護の、デジタル通貨送金のための方法 | |
CN114117523A (zh) | 一种基于区块链技术的充电桩智能电表计量方法及系统 | |
KR102457915B1 (ko) | 블록체인의 스마트 컨트랙트를 이용한 전자 투표 시스템 및 방법 | |
Lu et al. | Self-tallying e-voting with public traceability based on blockchain | |
CN117749369A (zh) | 一种基于区块链和ipfs的安全遥感图像数据共享系统及方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211012 |