论文部分内容阅读
比特币是第一个被广泛应用的去中心密码货币方案,人们把比特币的分布式点对点网络形象的称为区块链。比特币的去中心特性是通过区块链技术实现的,区块链技术也被应用到电子交易、投票系统、农业溯源等场景中。比特币使用假名(即公钥,或钱包地址)实现交易用户身份匿名性,这种方式并不安全,通过统计分析可以找出用户和假名之间的联系。为了实现用户身份匿名,一些密码货币方案如Zerocoin、Zerocash、RingCT等被陆续提出,这些方案基于传统密码方案构造,不能抗量子计算攻击。本文提出了一种基于格密码零知识证明的去中心密码货币方案,用来解决比特币交易中支付者身份匿名问题。该方案的设计思想是,支付者将比特币转换成代币,通过零知识证明协议将包含此代币的集合U支付,由区块链上的矿工验证该代币的合法性以及是否被双花。具体来讲,支付者首先随机生成无面值无归属的代币d,采用数字签名算法将比特币(即区块链上的交易)与代币结合,赋予其面值与归属,区块链上的矿工使用支付者的公钥验证签名,进而验证代币的合法性;随后支付者任意选择包含自己代币的集合U,通过基于格密码的Merkel树累加器算法计算集合根节点u,然后计算与d对应的佐证值w,通过非交互式的关于知识的零知识证明协议ZKAoK,一方面证明陈述d ∈ U成立(即知识)的同时不泄露具体的d(即零知识),另一方面保证d没有在之前的交易中出现过(即防止双花);最后,区块链上的矿工验证零知识证明是否正确。在上述方案中,为实现抗量子计算攻击的目标,本文采用基于Merkel树形式累加器的格密码零知识证明协议来构造方案。本文设计了基于格密码的Pedersen承诺协议,使用该承诺协议生成的承诺d(即代币)作为该零知识证明协议的输入,零知识证明协议生成的证明验证成功即可保证d的防伪性和防双花性,并且不透露d的归属性(即保证付款人匿名)。同时采用Fiat-Shamir转换函数,替换掉该零知识证明协议中验证者生成Challenge的过程,从而达到非交互性。在设计方案后,完成了方案的安全性证明。为了验证系统可行性和性能,在开源区块链FISCOBCOS上搭建和实现系统,并对系统进行了性能测试和分析。本文提出的方案各阶段总的运算耗时为1秒左右,在合理范围内,可用于实际场景中。