比特币的匿名性
Bitcoin and Anonymity
匿名性问题:
一,即便一笔tx生成多个inputs和outputs地址,这些地址可能被人为地关联起来,一旦其中某个地址的身份被暴露,与其关联的地址都会暴露。
二,地址账户与现实世界的真实身份关联。
a)数字货币与法定货币现金之间的交易流通,线下交易等。
b)利用数字货币支付。
提高匿名性:
application layer:coin mixing,将币混合在一起,分不清币的来源。
network layer:从节点IP查到身份信息,用多路径转发的方法来解决。
零知识证明(zero-knowledge proof):
一方(证明者)向另一方(验证者)证明一个陈述是正确的,而无需透露该陈述是正确的以外的任何信息。
同态隐藏:
一,如果x,y不同,那么它们的加密函数值E(x)和E(y)也不相同。
二,给定E(x)的值,很难反推出x的值。
三,给定E(x)和E(y)的值,可以计算出关于x,y的加密函数值。
同态加法:E(x),E(y)==>E(x+y)
同态乘法:E(x),E(y)==>E(xy)
扩展到多项式
例:Alice想要向Bob证明她知道一组数x和y使得x+y=7,同时不让Bob知道x和y的具体值。
解:Alice把E(x)和E(y)的数值发送给Bob(通过附加随机值的方式,防止Bob通过暴力计算出x,y的初值,性质2)
Bob通过收到E(x),E(y)计算出E(x+y)的值(性质3)
Bob同时计算出E(7)的值,如果E(x+y)=E(7),则验证通过,否则验证失败(性质1)
零币与零钞
一,零币与零钞在协议层就融合了匿名化处理,其匿名性来自密码学保证。
二,零币(zerocoin)系统中存在基础币和零币,通过基础币和零币的来回转换,消除旧地址和新地址的关联性,其原理类似于混币服务。
三,零钞(zerocash)系统使用zk-SNARKs协议,不依赖一种基础币,区块链中只记录交易的存在性和矿工用来验证系统正常运行所需要的关键属性的证明,区块链上既不显示交易地址,也不显示交易金额,所有交易用过零知识验证的方式进行。