The “anonymity” of Bitcoin

比特币的匿名性,一个让人完全无从下手的题目。怎么办,查资料呗!没想到一搜全都是我的学长们写的。为了进行一个区分,不和他们撞车,同时也说明我的原创性,我打开了翻译软件,打算用英文来作为标题。image-20220529210515572

那为什么我的标题上却多了两个引号呢,这就有意思了,因为我本来想换一个高级一点的词比如pseudonym来换掉这个anonymity,但是作为一个严谨的计算机学生,我搜索了下是否有这样的用法,没想到搜到了一面这一段话。

Aidan Arasasingham and Gerard DiPippo, of the Washington-based Center for Strategic and International Studies, note that bitcoin is not truly anonymous, but rather pseudonymous, where coins can be held in wallets opened under alternative or false names.

简单点说,比特币不是anonymous匿名的,身份隐匿的,而只是pseudonymous使用假名的,即在比特币交易中,用户能做到的只是戴上了一个面具,而不是随着交易的结束,像梦一样消失的无影无踪。因为每一笔交易记录都是公开的,可以对其进行追溯的

而这也是比特币最初设计的目的所在,并非是要做非法交易,地下黑市的交易货币,而是要成为一个统一而方便的线上支付体系,减少或降低各国政府发行货币背后带来的政府信用危机问题。

那么接下来我们就来讲一讲为什么比特币不是anonymous,而是pseudonymous的,首先我们从为什么大家对比特币的第一反应是anonymous的来开始将,之后我们将再说说为什么anonymous需要打上引号。

1.1.为什么比特币是anonymous的

1.1.1钱包与个人没有关联

在比特币的交易中,比特币会被放在一个钱包里,这个钱包却不需要绑定你的现实信息,且每位用户可以拥有很多对账户,并用不同的账户做不同的事情。每一个账户以一串hash地址来进行唯一标识,但对任何人包括交易的双方说这串地址只是一堆没有意义的乱码,因为谁也不可以通过这串hash值来反向推出你是谁。

显而易见我们戴上这一面具后,只要不乱说话,告诉别人我们是谁。其他人就永远无法知晓我们是谁,而这也就是为什么进行违法交易的人更倾向于使用比特币来结算。

1.1.2没有中间商

这个不是没有中间商赚差价的意思。这是说比特币的支付并不是基于信用,而是通过密码学进行支付,交易的双方如果达成一致,便可以直接进行交易,由此便摆脱了交易平台的限制。

1.2 为什么Bitcoin不是anonymous的

比特币依靠数字签名来证明所有权,通过交易历史公开来预防双花攻击。交易历史通过P2P网络共享,通过POW共识机制来达成一致。比特币的这一性质,尤其是公开的交易历史就决定了匿名性就一定会受到威胁。因而比特币不会是anonymous,而是pseudonymous。

1.2.1 用户画像

这个很好理解,假如小明每过一段时间就会网购一些水果,那么淘宝就会推断出来,他应该挺喜欢吃水果的,而且他可能不那么容易在身边买到合适的水果。即使之后他不买水果了,淘宝依然会每天给他推送很多与水果有关的广告。

而每个比特币钱包是完全公开的,任何人都可以查到与这个钱包关联的所有交易,交易的双方也可以通过对方给出的钱包地址来查询对方曾经的交易记录,当其他人意识到你在这个时候通过比特币进行消费,如果他们去查区块链种有哪些交易是在这个时间进行,就有可能推算出哪个账户是你的。

1.2.1用户网络

比特币的交易记录都是公开的,因此我们可以利用公开的交易信息形成一个网络,使每个顶点代表一个公钥,每个源与目标之间的边代表单次事务。事实上,用户为了保持匿名性,会在每笔交易时生成一个新的公私密钥对,以防止交易被链接到一个共同的所有者。

但对于多输入交易,某些链接仍然是不可避免的,这必然会暴露出他们的输入是由同一个所有者拥有的。我们将利用多输入事务的这一特性来收缩顶点子集,使每个顶点对应一个用户,来形成一个用户网络。网络收缩的基本原理将在1.2.4进行简单的描述。

上图便是一个用户网络,它代表了一段时间内用户之间的比特币数量。每个顶点就代表一个用户,源和目标之间的每个有向边代表单个事务的输入-输出对,其中输入的公钥属于源对应的用户,输出的公钥属于目标对应的用户。每条有向边还包括一个比特币值和时间戳。

1.2.2 与网外信息的关联

任何使得BTC和实体世界中关联的操作都有可能泄露用户真实身份,因此当我们尝试将网外信息与比特币用户(以及他们已知的)关联的部分用户进行关联。如果我们能建立充分的关联,并将它们与上面的网络结构结合起来,一个潜在的严重的匿名威胁出现了。

许多接受比特币的机构和服务,如在线商店、交易所,混币服务,都有权限获取用户的身份信息,例如电子邮件地址、送货地址、信用卡和银行账户信息,IP地址等。如果这些信息中的任何一个被公开,或者是被执法机构获取的,那么涉及关联交易的用户的身份也可能在风险。

1.2.3 网络层信息

某安全研究员丹·卡明斯基(Dan Kaminsky)对比特币进行了分析系统,调查在TCP/IP层出现的身份泄露。他发现通过同时打开对网络中所有公共对等点的连接,就可以进行IP地址与比特币公钥的映射。他的假设是“通知您交易的第一个节点就是它的源”,使用这种方法是可能的。

但应对网络层的匿名性泄露已经有了比较好的办法,就是使用匿名代理,或者多路径转发除非用户使用匿名代理,或者使用多路径转发。

多路径转发跟洋葱路由(TOR)是一样的原理。即消息不是由发出者直接发送给接收者,而是要经过很多次转发。中间的每一个节点,只知道它的上一个节点是谁,但并不知道最早发出消息的人是谁。这就能够把最初发起人的身份隐藏起来。

1.2.4 对各个地址进行关联,以形成画像

如前所说,在比特币交易中推荐每次收款都用一个新的地址,这样的话可以有不同的地址,谁也不知道哪些是属于你的,看起来好像匿名性很强。但其实这些地址可以进行关联。

在比特币的交易中,允许拥有多个输入以及多个输出,比如在下图的交易中,拥有两个输入账户地址以及两个输出账户地址。接下来我们将对此进行简单的分析

image-20220531221233196

首先排除两个输出地址同属于商家的情况,在这种情况下,任何一个输入账户对Addr3的交易都会导致找零。因此两个输入地址应该是对同一个地址Addr4进行输入的。因此Addr3为找零账户,这就可以将Addr3与Addr1、Addr2联系起来,我们可以粗略地认为这三个账户地址同属一个用户。

1.2.5 利用“上下文”推断用户信息

我们可以通过观察与用户直接或间接交互的用户,来推断比特币用户的信息

通过给定一定数量公钥或感兴趣的用户,我们可以使用用户网络和上下文来更好地理解比特币在他们之间的流动。例如,我们可以检查一组顶点之间的所有最短路径。例如,下图就显示了使用网外信息识别的代表用户的顶点和代表用户网络中MyBitcoin服务的顶点之间的所有最短路径。在这个可视化中,可以识别出60%以上的用户,并推断出他们之间的许多直接和间接关系。

image-20220531214353462

确定的所有用户的可视化,以及代表这些用户的顶点和代表用户网络中MyBitcoin服务的顶点之间的所有最短路径。

接下来我们将分析一个特定的案例

案例

这是一个名为Alli vain的用户在比特币论坛上报告的25,000比特币被盗事件。受害者报告称,他的大部分比特币于2011年6月13日16:52:23 UTC时间被发送到pkred。盗窃发生前不久,有人骇入了受害者的Slush暂记帐(即待分配的费用帐户),并将支出地址改为pkblue,比特币理应属于pkgreen。被盗时,被盗的比特币市值约为50万美元。通过这个案例研究我们可以说明即使作为一个努力保持匿名的小偷,他的匿名性仍存在风险。

案例研究

我们将网络网络收缩一个限制在围绕小偷的自我中心网络中:我们保留了每一个长度不超过2的顶点,忽略方向性,以及由这些顶点诱导的所有边。为避免混乱,还删除了所有的循环,多个边和不包含在一些双连通组件中的边。边根据来源着色,点的大小与边的条数成正相关。

image-20220530001831289

一个不完全用户网络中小偷的自我中心可视化。对于这个可视化,顶点根据文本着色,边缘根据其来源的颜色着色,每个顶点的大小与它在自我中心网络中的边之间成比例。

在该图中,红色顶点表示拥有公钥pkred的小偷,绿色顶点表示拥有公钥pkgreen的受害者。盗窃案用一条绿色的边表示,把受害者和小偷连在一起。

案例分析

我们来观察这个由小偷,受害者以及其他三个顶点组成的子网络。有趣的是,受害者和小偷是通过其他路径连接的(忽略方向),而不是绿色的边代表偷窃。

image-20220530001950645

可以观察到在25000个比特币被盗之前,还有1个比特币被盗。这是受害者后来在比特币论坛上报告的。其次,使用上文提到的网外信息,我们已经识别了一些顶点的身份:紫色顶点代表主要的Slush池帐户橙色顶点代表计算机黑客组织LulzSec。

我们观察到小偷在盗窃后不久向LulzSec发送了0.31337比特币,但我们无法凭此将他与该组织联系起来。Slush账户在70天内共向受害者发送了441.83个比特币。它还在两天内向黄色顶点发送了总共0.2个BTC。在失窃前一天,黄色顶点还向LulzSec发送了0.120607 BTC。

黄色顶点代表一个至少拥有五个公钥的用户。和受害人一样,他也是" Slush "的一员,和小偷一样,他也曾给LulzSec捐过一次款。被盗前一天的这笔捐赠,是他最后一次使用这些公开密钥的活动。