比特币匿名性

比特币交易是基于公钥和私钥的加密技术进行的。每个比特币用户都有一个独一无二的比特币地址,用于接收和发送比特币。这些地址不需要与用户的身份信息绑定,因此可以保护用户的隐私。当进行交易时,只有拥有私钥的用户才能对交易进行签名,确保交易的真实性和安全性。

欧易
欧易(OKX)

全球三大交易所之一,注册领50U数币盲盒,币圈常用的交易平台!

币安
币安(Binance)

币安交易所是世界领先的数字货币交易平台,注册领100U。



比特币匿名性

比特币交易不要求使用真名,只需要使用公钥地址,所以具有一定的匿名性。但不是完全的匿名(anonymity),而是类似网名、笔名的一种化名(pseudonymity),而不是真的匿名。

比特币匿名性

和纸币相比,比特币的匿名性没有纸币高,因为纸币是完全不记录使用者名字的。但是对于大额的交易中,使用纸币不便于运输。

和现在的银行相比,银行办理账户时需要去银行提交身份信息,而比特币建立账户不需要任何审批。这点比特币比银行匿名性高。

但是,在银行办理可以用化名办理存折的时代,银行的匿名性是要比比特币更高的。因为比特币的所有转账交易都是在区块链里公开的,所有人都可以看到。而银行的转账交易只有银行内部人员、司法等特殊人员才可以查询到。

可能会破坏比特币匿名性的地方

比特币交易中的账户关联

虽然一个人可以有n多个账户,但是这些账户在某些情况下是可以被关联起来的。

例如在一个交易中,有3个输入、2个输出:这3个输入很可能是同一个人的,因为他同时有这3个账户的私钥做签名,可能因为一个账户中的金额不够,所以把3个账户的金额加一起才够。在这2个输出中,可能一个输出是商家的,另一个输出也是购买者本人的。前面输入的金额一般不会正好等于货款,输入的金额多于货款时,购买者用自己的另一个账户做输出,用于“找零钱”操作。这种操作一般都是比特币钱包生成的,比特币钱包在找零时会自动生成一个新的账户,也是为了隐私保护。

假设一个交易中:账户A转出4 BTC,账户B转出5 BTC,账户C收到6 BTC,账户D收到3 BTC。那么就可以分析出,账户A、账户B、账户D是同一个人的。

比特币和现实世界中的关联

当用比特币在现实中购买货物时,需要提供收货人信息。或者有些实体店接受比特币支付,这时用于支付的账户也会和现实中的这个人建立联系。也会造成隐私破坏。

当在比特币交易所使用法币和比特币进行兑换时,在交易所开户需要提供个人信息。

如果是进行的“场外交易”(不经过交易所,直接和有比特币的人联系),使用法币和比特币进行兑换,交易对手也会得到购买者的一部分信息。

大笔金额的比特币交易

对于很大笔的比特币的转入、转出交易,很可能引起相关司法部门的调查洗钱嫌疑。这时比特币的隐私也可能被破坏。

比特币网络的匿名性

网络层面的匿名性

比特币是运行在应用层的,底层是P2P的网络层。如果在网络层不能保证匿名性,其他节点发现很多交易都来自某个节点,根据这个节点数据包的IP等信息就可以很容易找到物理世界中的这个人。

网络层面的匿名性在学术界已经有了很好的解决方案,比较普遍的就是利用多路径转发的方法,例如使用TOR(洋葱路由)。消息不是sender直接发给receiver,而是中间经过很多“跳”进行转发,中间的每个转发的节点只知道它的上一个节点是谁,但是并不知道该消息最早是谁发出的。

应用层的匿名性

将不同人的比特币混在一起,使其他人分辨不出谁是谁,无法通过交易关联。这种方式称为coin mixing。

有一些专门做coin mixing的网站,收取一定的服务费,将自己的币交给这个网站,这个网站将很多人的币进行混合重组,最后再转回来。但是转回来时候的币已经不再是输入时候的币了。

coin mixing实际实施起来比较复杂,如果coin mixing设计的不好,可能根据当时存入的数额推断出哪些币是当初存进去的。

更重要的,在区块链世界里,没有信誉度非常高的coin mixing服务。很多coin mixing服务本身也是匿名的,如果coin mixing服务商把自己投入的币卷款跑路了,自己实际上一点办法也没有。

有时我们不一定要刻意去做coin mixing,有一些应用本身带有coin mixing的性质,例如在线钱包。

在线钱包需要很多人把币存进去,最后自己需要取出来的时候,取出的可能就不是当时自己存入的币了。但是在线钱包并不保证要履行coin mixing的功能。

另外,一般来说,加密货币的交易所也天然的具有coin mixing性质。但是有个前提,这个交易所不会泄露这些提币、存币的记录。

零知识证明

零知识证明,是指一方(证明者)向另一方(验证者)证明一个陈述是正确的,而无需透露除该陈述是正确的之外的任何信息。

例如,在比特币交易中,需要证明自己拥有该公钥对应的私钥,但是又不能将自己的私钥公布出去。证明者可以使用该私钥制作一个签名,验证者可以通过证明者的公钥验证这个签名的合法性。

同态隐藏

零知识证明的数学基础是同态隐藏。

同态隐藏的三个性质:

  • 如果x,y不同,那么它们的加密函数值E(x)和E(y)也不相同(即不会出现碰撞)。

  • 反过来,如果两个加密函数值E(x)=E(y),那么加密前的两个输入值x=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(同态隐藏性质2)

  • Bob通过收到的E(x)和E(y)计算出E(x+y)的值(同态隐藏的性质3)。

  • Bob同时计算E(7)的值,如果E(x+y)=E(7),那么验证通过,否则验证失败(同态隐藏性质1)。

在实际操作中,虽然以上方式没有将x、y透漏给Bob,但是Bob可能通过蛮力方式遍历x、y的数值,和E(x)、E(y)验证,从而获取到x、y的具体值。所以如果想要安全,Alice在将E(x)、E(y)送给Bob前,需要对输入做一些随机化的处理,同时要保证处理过后的x+y=7。

盲签

盲签方法:

  • 用户A生成一个流水号SerialNum,银行在不知道SerialNum的情况下返回签名Token,减少A的存款

  • 用户A把SerialNum和Token交给B完成交易

  • 用户B拿着SerialNum和Token给银行验证,银行验证通过,增加B的存款

  • 银行无法把A和B联系起来

  • 中心化

零币和零钞

零币和零钞在协议层就融合了匿名化处理,其匿名属性来自密码学保证。

零币(zerocoin)系统中存在基础币和零币,通过基础币和零币的来回转换,消除旧地址和新地址的关联性,其原理类似于混币服务。

零钞(zerocash)系统使用zk-SHARKs协议,不依赖一种基础币,区块链中只记录交易的存在性和矿工用来验证系统正产运行所需要关键属性的证明。区块链上既不显示交易地址也不显示交易金额,所有交易通过零知识验证的方式进行。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...