一般来说,匿名通常跟隐私保护联系在一起。在比特币是基于交易的区块链,系统中没有用户的概念,不要求用户使用真名,可以用公钥产生地址,所以比特币具有一定的匿名性。
但比特币中的交易记录在区块链上,区块链是公开的。虽然使用者可以生成任意多的地址来隐藏自己,但由于所有的交易信息的都是公开的,仍可以通过分析链上的交易信息来锁定用户。从这点上来讲,比特币又不是完全匿名的。
什么情况下会破坏匿名性
分析交易地址
正常情况下,比特币交易都是通过钱包进行的。使用钱包交易时,输出地址中通常会有一个用于接收找零的地址。市面上常用的比特币钱包就那么几款,有心研究的话,发现各个钱包生成找零地址的规律并不是不能发现的。一旦找出规律来,结合区块链将很容易定位用户的身份。
与真实世界发生交易
通过比特币与真实世界发生交易时,比如从比特币交易所变现,使用比特币购买咖啡等,这些情况下用户的真实身份是很容易确定的。
如何提供匿名性
比特币系统是运行于应用层的,底层是个P2P网络层,要提高匿名性可以从这两方面入手:
- 网络层:多路径转发
- 应用层:将不同人的币混合在一起,即将所有用户的身份混合在一起,让人无法区分
区块链的公开、不可篡改的特性,对于隐私保护来说是灾难性的。
零知识证明
零知识证明是指一方(证明方)向另一方(验证方)证明一个陈述是正确的,而无需透露除“该陈述是正确的”之外的任何信息。
同态隐藏
零知识证明的数学基础是同态隐藏,同态隐藏包含以下性质:
- 如果$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)$
- 扩展到多项式
零知识证明的应用:零币和零钞。
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin92
Github: mengbin92
cnblogs: 恋水无意