Page 361 - 《软件学报》2021年第7期
P. 361
姚前 等:区块链系统中身份管理技术研究综述 2279
币,则终止交易.其中,序列号 Nullifier 的生成方式如下:
Nullifier:=SHA 256compress(1110|a sk |).
零币用户在使用 pour 交易进行支付时,假设持有密钥对 a old ,a sk old 的交易发送方使用拥有的零币 c old :
pk
old ,v old , old ,rcm old a 分别向地址为 new 1 , pk enc 1 a 和 a new 2 , pk enc 2 的交易接收方支付货币 c 1 new : a new 1 ,v new 1 ,
new
new
pk
pk
pk
pk
new 1 ,c 1 new : rcm new 1 和 c new : a new 2 ,v new 2 , new 2 ,rcm new 2 , 则交易发送方在构建 pour 交易时使用接收方支付密钥
pk
2
old
a new * 和新生成的秘密值 new* 构建新币的承诺 cm 1 new 和 cm 2 new , 公开已支付货币的序列号 Nullifier old 并确保 =
pk
new1 + new2 .交易发送方将构建后的 pour 交易向全网广播.为了实现对上述非明文交易内容的验证,零币采用了
零知识证明技术 zk-SNARK [8087] 生成交易对应的证明信息 π POUR :发送方持有的货币 c old 所对应的承诺 cm old 为
old
根散列值为 rt 的 Merkle 树中的叶子节点;发送方持有花费密钥 a old ; 能够正确地构建出所有的货币 c 、 c 1 new 、
sk
old
old
c new 及其承诺 cm 、 cm new 、 cm new ;给出了 c old 所对应的真实的 Nullifier .其中,Zk-SNARKs 零知识证明的过
2 1 2
程主要有以下 3 个步骤.
(1) KeyGen(1 ,C)(pk,k).输入一个安全参数和 F 域-算数电路 C,生成零知识证明中的证明密钥 pk 和验
证密钥k;
(2) Prove(pk,x,a).输入一个证明密钥 pk 和信息 x(证明者和验证者均能够获得)以及证明者自己所拥有
的某些秘密信息 a(只有证明者知道),输出一个非交互式证明,来表示证明者确实拥有某些知识;
(3) Verify(k,x,)b.输入一个验证密钥k、一个 x、一个证明,如果验证者验证通过,即他相信证明者确实
拥有某种知识,则验证输出为 b=1.
由此可见,零币的支付过程将发送方的支付货币混淆在 Merkle 树的全部成员(已生成货币)中,交易结构中
并不包含交易发送方的身份信息,只需发送者证明他拥有输入货币承诺对应的花费密钥 a sk 即可,由此声明自己
对该货币的权属并实现支付行为的确认.当矿工验证交易时,会对该证据 POUR 进行验证,如若通过验证,则交易
有效.整个验证过程是零知识的,矿工只能判断出发起者是不是货币的拥有者,而不会得到有关 a Pk 、a sk 、cm old
的任何信息.在 Zcash 中,除了发送者自身外,矿工及第三方(包括交易的接收者)都无法得知发送者的身份.这一
方案既实现了交易发送方的身份隐藏,又实现了支付货币的全局混币,极大地提高了交易隐私保护的力度.
在零币的交易结构中同样不存在接收方的任何地址信息,而是通过对交易内容的加密来指定交易接收方.
Zerocash 方案中使用 key-private encryption scheme [88] 的公钥加密模式 [88] ,通过使用接收者的公钥对交易中的敏
感信息(,,rcm)进行加密,然后将密文包含在隐蔽交易中并广播到区块链.接收方需要监听区块链上的交易,尝
试用自己的私钥解密隐蔽交易中包含的加密信息,如果解密成功,则代表该隐蔽交易的接收方是自己,存储解密
后的敏感信息并在未来支付时使用.零币中的 Sprout 版本则通过 Curve 25519 密钥协商协议 [89] 在发送方与接收
方之间产生一个共同的会话密钥,而后通过一次性认证对称加密方案(authenticated one-time symmetric
encryption)对敏感交易信息进行加密.接收者监听链上的交易,尝试利用自己的私钥 sk enc 计算会话密钥并解密
隐蔽交易中包含的加密信息,如果解密成功,则代表自己是该交易的接收方,并接受这笔交易.
此外,基于企业以太坊 Quorum 平台 ZCash 开发团队开发了 ZSL [90] 强隐私保护的密码货币交易模型.在 ZSL
交易模型中,仍使用零币中的全局混币方案,通过货币承诺列表和 Zk-SNARKs 来实现货币的支付与正确性验
证,由此构成的隐蔽交易由 Quorum 主链平台上的 z-contract 合约来实现,交易流程隐藏了交易方身份和交易金
额.基于 Quorum 构建隐私交易系统时,可通过 z-contract 来发行代币资产,以保护交易隐私.交易双方的代币资产
在进行交易时,通过私有合约(private contract)来定义特定交易流程,私有合约由 Quorum 中的 Constellation 系统
来完成,用以确保交易内容的保密性.不同于零币方案交易信息加密传输,ZSL 中的货币 np 是由私有合约直接传
送给接收方的,私有合约的保密性确保了交易隐私.ZSL 方案如图 18 所示.
综上所述,零币在使用匿名身份认证的同时在交易过程中又提供了基于全局混币的交易身份隐藏技术.它
通过零知识证明和(自主)全局混币技术实现了交易发送方的身份隐藏;通过交易内容的加密接收实现了交易接
收方的身份隐藏.在设定系统总用户数为 N 的情况下,观察者有效识别发送方和接收方身份的概率为 1/N,具有