Bartolucci, Silvia , P. Bernat , and D. Joseph . "SHARVOT: Secret SHARe-Based VOTing on the Blockchain." 2018 IEEE/ACM 1st International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB) IEEE Computer Society, 2018.
最近,人们越来越关注使用在线技术来设计用于安全电子投票的协议。主要挑战包括投票隐私和匿名,在整个计票过程中投票不可撤销和透明度。区块链作为加密货币协议的基础的引入,提供了对这些分布式分类账的不变性和透明性的利用。
在本文中,我们讨论区块链技术的可能用途,以实现安全和公平的投票系统。特别是,我们在区块链上引入了一个基于秘密共享的投票系统,即所谓的SHARVOT协议。我们的解决方案使用Shamir的秘密共享来实现链上共享,即在事务脚本中,提交投票并赢得候选人的决定。该协议还使用了一种改组技术Circle Shuffle来将选民从他们提交的内容中去除。
考虑n选民U1,......,Un,希望在几个候选人之间表达他们的偏好。为简单起见,我们假设在两个候选者A和B之间做出选择。SharvOT协议包含一个利用比特币区块链的投票解决方案;该协议基于Shamir的秘密共享方案和改组技术Circle Spuffle。
私人密钥份额被分配给在n-1个输出交易中进行收费的投票者,然后永久记录投票。每个输入对应于选民支付的费用。获胜候选人必须同时获得多数票和超过指定门槛的票数才能收取费用。
SHARVOT协议设计有故障保护,如果没有候选人收集足够的关键份额以在选民签署的交易中花费UTXO,则选民所承诺的任何比特币都是可以恢复的。基于经销商的密钥份额分配方案被预期用于SHARVOT协议的大部分实施,因为让经销商承担对合格选民列表的权限控制的角色。
密钥生成。公共/私人密钥对由发牌人分配给两个候选者A和B中的每一个,PA=KA×G和PB=KB×G。候选者还拥有公钥/私钥对,分别为MA=SA×G和MB=SB×G,并发布他们的公钥。经销商还发布公钥PA和PB,同时保持KA和KB私有。对于每个秘密,经销商计算密钥份额,KA,i,i=1,...,n和KB,i,i=1,...,n,并分配一对密钥份额(KA,i,KB.i)每个选民Ui。因此,只有当选民为特定候选人提交足够数量的票t+1时,才能确定KA和KB值。
投票提交。每个选民Ui都会为他们选择的候选人加密他们的选票。例如,假设Ui将他们的投票给候选人B,因此组成vi=EncB(KB,i||IdB)。洗牌的清单发送给经销商。
P2SH地址。经销商在从当时选民那里收到所选择的关键份额后,生成P2SH地址。多重签名输出中允许的最大公钥数为15(参见公式1)。因此,多签名脚本中的13个字段可用于存储参与者的投票,而剩余的两个字段可用于存储候选人(MA或MB)提供的公钥以及经销商分配给后者的公钥(PA或PB)。
因此,P2SH脚本基于if-else语句,其中每个语句都是一个多重签名脚本,包含多达13票和候选人的上述键。如果在一段时间ΔT之后没有候选人获得足够数量的投票,则添加以scriptPubKey(S=K×G)的形式的最终陈述。
图1-1在SHARVOT协议中创建的交易:投票承诺交易投票和支付选民费用,每个候选人拥有的交易,以及退款交易,如果没有候选人获胜,退还费用给选民
投票承诺交易。然后,经销商创建投票承诺交易(VCT),其包括一个输出,其中n×x比特币被发送到P2SH地址。如图1-1所示,该交易被发送给添加其输入(x比特币)并对VCT签名的选民。签署VCT的最后一位参与者将其发送给经销商,经销商将其提交以包含在区块链中。请注意,在签署VCT时,选民可以完全匿名地核实公共记录中包含的投票的正确性。
退款交易。在VCT实际在网络上广播之前,经销商创建退款交易(RT),其将输出花费在VCT中并将x比特币重新分配给每个选民。交易商使用解锁第三选项的私钥k签署交易(尽管后者包括阻止UTXO在ΔT之前花费的锁定时间)。经销商将签名的RT发送给选民。然后,只有这时才提交VCT以包含在区块链中。
理想情况下,秘密k应该由交易商和选民控制,以便在任何情况下交易商都不能窃取投票费用。例如,可以在脚本中添加1-of-n多重签名,以便需要经销商的签名和至少一个选民的签名来花费投票承诺交易的UTXO。
选举结果。在一个候选者成功解密P2SH脚本中包括的混洗列表中的t+1个或更多个密钥份额的情况下,候选者可以重建解锁VCT中的n×x比特币所需的秘密密钥。如果没有候选人获得足够的关键份额,选民可以广播转发并收回费用。
在本文中,我们提出了使用区块链技术来宣布和建立选举并确定获胜候选人的解决方案。特别是,我们专注于如何在交易脚本中广播投票并正确计算它们,同时(i)保护选民的隐私和匿名(不需要知情证明),(ii)只允许符合条件的用户投出他们的偏好,(iii)防止旨在使选票无效的攻击。
curton 2019-11-30 22:51