转载:https://blog.csdn.net/Black_BearB/article/details/80382145
论文地址:https://eprint.iacr.org/2017/1239
Shunli Ma, Yi Deng, Debiao He, Jiang Zhang, Xiang Xie. An Efficient NIZK Scheme for Privacy-Preserving Transactions over Account-Model Blockchain. Cryptology ePrint Archive, Report 2017/1239, 2017. https://eprint.iacr.org/2017/1239
该论文为矩阵元联合中科院、武汉大学密码学专家合作发表的在账户体系下引入保护余额与转账资产的分布式智能合约系统。论文中用到了同态加密和零知识证明来保护用户隐私,其中方案与之前的隐私保护方案相比在性能上有较大的提升,能较好地运用在供应链金融等场景中。
一、Introduction
论文提出了:
1、一种智能合约下保护用户余额和交易金额的方案,该方案在随机预言模型下是可证明安全的。
2、一种高效零知识证明方案NIZK(non-interactive zero knowledge),该方案以产生的proof size更大为代价来提高生成proof的时间效率。
比较:zk-SNARK (Zerocash) & NIZK (DSC)
同态加密 HE(homomorphic encryption):允许用户直接以密文形式来更新账户余额。
零知识证明 ZK(zero knowledge):证明交易的正确性。保障equivalence 和 enough ,发送方减少 V 的情况下接收方应该接收 V,证明发送方有多于 V 的账户余额来发送给接收方。
相关区块链隐私保护工作:Monero(门罗币)、RingCT(环签名)、Zerocoin、Zerocash
二、Preliminaries
1、双线性映射
2、同态加密
可以保证在密文状态下进行余额的更新操作。E(1)+E(2)=E(3)
这是一种 ElGamal 方案的变型,但是不懂为什么引入h,可能是为了更好的安全性吧,而且余额都为数值型的,相比之下明文空间是比较小的,所以可以解出明文m。
3、基于的困难问题
也是离散对数问题的变型使用。
4、Boneh-Boyen签名方案
5、Σ-Protocol
6、零知识证明 NIZK
本文中使用的是一种非交互式的零知识证明,且使用了由可信第三方产生 CRS(common reference string) 的模型, 而没用使用到证明密钥 PK 和验证密钥 VK。
CRS 可以只产生一次而用来生成多个 proof
7、A 发送 t 个币给 B 的交易形式:
验证程序直接以智能合约形式部署在区块链上,可以自动验证并进行资产转移操作。
三、DSC (Decentralized smart contract)Scheme
1、Setup
输入安全参数 n ,生成系统公共参数 PP,其中用到了Boneh-Boyen 签名方案,且PP中已经包含零知识证明中的 CRS
2、PartyInitial
各参与方的初始化:使用上述同态加密方案对自己的余额进行加密,在账户模型中只存储余额的密文。
此处考虑的明文空间大小为[0,20^30)
,对于拥有私钥的人来说可以很容易的解密出明文,即账户余额值。
3、Transfer
A 发送 t 个币给 B:
x 表示传输语句,其中包含 A、B 的公钥,A 的账户余额由同态加密生成的密文,以及对 t 分别用 A、B 的公钥用同态加密生成的密文。
w 表示 witness ,其中包含 A 的私钥,生成密文时使用的随机数,A 的账户余额及传输金额
π 为生成的 proof
(x , PP , π)上传到区块链上由验证程序验证其有效性。
4、Redeem
验证程序部署在区块链上,收到相应输入后验证其有效性:若无效则忽视;若有效,则公开此次交易(交易金额是加密过的),并对发送方和接收方的账户余额进行更新。
5、安全性