1703866845
区块链技术驱动金融:数字货币与智能合约技术 6.1 匿名的基础知识
1703866846
1703866847
匿名的定义
1703866848
1703866849
在讨论比特币是否具备匿名性之前,我们需要对匿名做一个定义。我们需要准确地理解到底什么是匿名,以及它与其他一些相似术语的关系,比如隐私。
1703866850
1703866851
1703866852
匿名和化名(pseudonymity)
1703866853
1703866854
在其他你可能更熟悉的情形下,说明匿名和单纯的化名的区别可能更容易。其中一个很好的例子就是在线论坛,在一个类似于红迪(Reddit,美社交新闻网站)的论坛中,你会选择一个自己常用的化名在一段时间内和系统进行交互。你也可以创建多个化名,甚至每一条评论都用一个新的名字,但那样会很麻烦,绝大多数人都不会这样做。所以在红迪这样的论坛里,用户通常都会使用化名,但又不是完全匿名。相反,在4Chan(综合型讨论区)这种在线论坛里,用户通常用匿名来发帖,并且不带有任何标识性属性。
1703866855
1703866856
从字面上理解,匿名的意思是“没有名字”。当我们尝试用这个定义来说明比特币的匿名特征时,会有两种不同的诠释:在交易的时候不使用真实的姓名,或者在交易的时候完全不使用任何名字。比特币是否具备匿名性,这两种释义会带来两种完全不同的结论。比特币的地址是公钥哈希值(hashes of publickeys),在与比特币系统交互过程中,使用者不需要使用真实的姓名,但是需要使用公钥哈希值来作为交易标识。因此,按照第一种对匿名的释义,比特币是具有匿名性的,因为使用者不需要使用真实的姓名。然而,如果根据第二种释义,比特币并不具备匿名性,因为交易中必须使用的地址是一种虚假标识。在计算机科学语言中,这种不用真实姓名而使用一种特定标识的折中做法被称为化名。
1703866857
1703866858
你可以根据你的需要,随意创建出任意多个比特币地址,考虑到这一点,你可能会思考比特币的地址是否真的是虚假标识,因为你可以创建无穷多的化名,正如我们将会看到的,这并不能让比特币具备匿名性。
1703866859
1703866860
在计算机科学中,匿名指的是具有无关联性(unlinkability)的化名,无关联性是一种针对特定攻击者的能力而定义的属性,从直观的意思看,无关联性意味着如果一个用户和系统重复进行交互,从特定攻击者的角度考虑,不同的交互行为之间应该无法互相关联。
1703866861
1703866862
比特币是具备化名性的,但如果你的目的是要求绝对隐私,那么这种匿名性还不够。区块链技术是一种公开的账本系统,任何人都可以查询包含了给定地址的所有比特币交易。如果有人可以用你的比特币地址链接到你的真实身份,那么所有你的比特币交易记录——不管是过去的、现在的,还是未来的——都能关联到你的真实身份。
1703866863
1703866864
更加糟糕的是,把比特币地址和真实身份链接起来并不困难。如果你跟某一种比特币业务有关联 ——不管是一个在线电子钱包服务,还是其他接受比特币的商家或交易所,通常你都需要提供你的真实身份以完成相关交易。比如,交易中通常都需要你提供信用卡信息,或者商家需要你提供真实地址以便送货上门。
1703866865
1703866866
或者你去咖啡馆喝杯咖啡,然后用比特币来支付。由于你已经出现在店铺里,咖啡师对你的身份特征已经有了非常多的了解,即使他们没问你的真实姓名。你的物理标识就这样和你的某个比特币交易联系到了一起,从而可以由这个地址追踪到你所有的其他比特币交易。这显然不具备匿名性。
1703866867
1703866868
旁路攻击(side channels)
1703866869
1703866870
即使没有发生直接的关联,因为侧面渠道或者一些间接的信息泄露,你的匿名身份也可能会被暴露(deanonymized)。举个例子,某个人看过一个匿名的比特币交易记录,并且注意到了这个比特币交易的活跃时间,那么他就可以将这个时间信息与其他公开可获得的信息关联到一起。可能他会注意到在同一个时间某一个推特用户也出于活跃状态,那么就可以建立一个匿名的比特币资料和一个真实世界的用户(至少是一个推特账号)之间的关联。很显然,这样的匿名性并不能保障隐私或者绝对匿名。要想做到绝对匿名,我们需要更强的无关联性属性。
1703866871
1703866872
无关联性
1703866873
1703866874
为了更扎实地理解比特币范畴中的无关联性特征,我们可以列举一些在比特币交易中无关联性所需要的关键属性:
1703866875
1703866876
1.同一个用户的不同地址应该不易关联。
1703866877
1703866878
2.同一个用户的不同交易应该不易关联。
1703866879
1703866880
3.一个交易的交易双方应该不易关联。
1703866881
1703866882
上述第一条和第二条很容易理解,但第三条比较微妙。如果你把一笔“支付”诠释成一个比特币交易,那么第三条属性很明显就是一个伪命题。每一笔交易都有输入和输出,这些输入和输出都不可避免地会记录在区块链网络中,并且公开地关联在一起。然而,我们所指的支付并不仅仅是一笔比特币交易,而是指任何一种从发送者到接收者的传输比特币的行为,这种行为可能会涉及一系列的间接迂回交易。我们需要确保,通过查询区块链上的信息将发送者和最终的接收者关联在一起,是不可行的。
1703866883
1703866884
匿名集
1703866885
1703866886
即使我们对支付做出更加宽泛的定义,第三条属性看起来也比较难以实现。比如说,你支付一定数量的比特币来购买某个商品,并且通过迂回曲折的形式发送了这些比特币,其他人通过查看区块链上的信息,还是可以推断出某个比特币地址上减少了一定数量的比特币,而另外一个地址上增加了差不多相同数量的比特币(可能会扣除相应的交易费用)。此外,尽管传输是通过迂回曲折的路径,初始发送方发送比特币和最终接收方接受比特币基本上发生在同一个时间段,因为商家不太愿意接受延迟付款。
1703866887
1703866888
基于这样的困难,我们通常并不试图在系统中,对所有可能的交易或者地址都实现完全的无关联性,而是去实现更有限度的无关联性。想象一个特定的攻击者的情况,你的交易匿名集(anonymity set)是指该攻击者无法把你的交易从其中分辨出来的交易集合。即使该攻击者知道你完成了一个交易,但是他也仅仅知道这个交易是某一个合集中的一个,但并不能确定是哪一个。我们只需要努力去最大化这个匿名合集就可以了——在这个合集中,我们可以隐藏我们的地址或交易。
1703866889
1703866890
统计匿名集是很微妙的,由于这样的匿名集是针对某一个或者一组攻击者而定义的,所以你首先需要具体定义你的对手模型是怎样的。你必须要仔细思考对手已知和未知的内容,以及我们需要隐藏的内容——也就是说,如果要达到匿名性目标,交易中的那些信息是不能被对手知道的。没有成熟的公式告诉你该怎么做,需要根据每一个具体情况仔细分析相对应的协议和系统。
1703866891
1703866892
污点分析(taint analysis)
1703866893
1703866894
在比特币社区中,人们通常根据直觉推断匿名性,而非严格的定义。污点分析就是一种非常流行的方式:这是一种推算两个地址相关性的方法。如果地址S发送出的比特币总是地址R接收,那么不管是直接抵达,还是经过了多少中间地址,S和R则被定义为具有高分污点。污点分析的计算公式,适用于多个输入和(或)输出的交易,并且确定如何分配污点的规则。
[
上一页 ]
[ :1.703866845e+09 ]
[
下一页 ]