1.引言
比特币最近成为一种越来越流行的加密货币,这是由于用户使用电子化的交易,并且使用比特币比使用传统的电子支付具备更多的匿名性。从设计上,比特币将所有的交易保存在公共账单上。每一个交易的发起者和接收者都只通过加密公钥来确定身份。这导致了一个常见的误解:比特币天生是提供匿名性功能的。事实上,尽管比特币的虚匿名性(presumed anonymity)提供了一些新的商业方式,最近的一些案例也引起了人们对用户隐私性的关注。我们在本文探究比特币系统匿名性的水平。我们使用的方法是二重的:(i)我们通过将比特币公钥与真人(不管是限定的还是统计意义上的)联系起来,为比特币交易图形做注解。(ii)在我们的图形分析框架内运行注解图形,以发现和总结已知和未知用户的行为。
2.贡献
我们提出了一个比特币交易图形注释系统,这个系统分两部分。第一,我们开发了一个从公共论坛抓取比特币地址的系统。第二,我们引入一个通过不完整的交易信息,把用户同交易联系起来的机制。比如,假设我们听到鲍勃对爱丽丝说:“昨天中午我给你发了价值100美元的比特币“;尽管我们不知道交易的具体时间(因为‘中午’可能是11:50,也可能是12:10),也不知道交易的具体数额(汇率常常发生显著的波动),我们还是能够得到候选的交易并关联匹配的可能性。
我们还提出了一个图形分析框架,可以用来追踪和聚类用户的行为。例如,在2013年10月25日,在并没有FBI或者丝绸之路的公钥地址等预备知识的前提下,我们的框架提示说,FBI没收丝绸之路的资产是一个”有趣的“行为。此外,通过注释系统的鉴定,我们的系统发现了丝绸之路与现实用户之间的密切联系。
3.背景
最近,有几项研究【3,2,4】提出了比特币交易中潜在的隐私性局限。【3】借助外部信息资源,并使用文本发现和流分析技术整合这些信息,来调查一个被指控的窃贼。【4】另一方面,分析交易图形的统计特征,来回答关于典型的用户行为的问题,诸如花费习惯,收入习惯,同一用户的不同账户之间的流动习惯等等。为了实现在比特币图形中更加严格的隐私性,【2】的作者建议在比特币增加一个扩展,让比特币协议支持完全匿名的货币交易。
4.威胁模型
4.1攻击者目标:绑定交易的“真实”姓名
这里所说的“真名”可能是某人的真实姓名,也可能是一个在线公共论坛(或者任何其他公共数据资源)的用户名。目标是将大量互不关联的加密ID与一个真实的用户联系起来。
4.2 攻击者能力
首先,一个攻击者进入并获取所有的公共信息,包括论坛,捐赠站点,公共社交网络等等,攻击者可以在这里抓取有意或无意泄露出的比特币地址。也就是说,攻击者可能从网站上直接获取“实名”与公钥的匹配。
第二,攻击者也可能从已知用户处“偷听”不精确的交易信息。比如,一个攻击者可能偷听到“爱丽丝,我是鲍勃,昨天中午我给你发了100美元的比特币。”也就是说,攻击者可能听到“实名”与一些粗糙的交易信息的匹配。
图一,左边,注释交易图形。右边,丝绸之路的所有者DPR在bitcointalk.org论坛上无意泄露了他的公钥。
图二:攻击模型
5.实现
在这一部分,我们将描述上面说的几个步骤,包括通过可获得的公共交易信息,展示比特币用户的行为信息。就像之前的部分描述的,我们既使用统计的方法研究,也是用限定性的方法调查。
5.1预处理
上述两种研究的前提是,原始交易必须从整个区块链上提取出来。到2013年12月13日,大约有275000个区块已经在比特币区块链上被铸造出来。每一个区块都包含数百个交易。我们在接下来的部分描述区块链解析。
5.1.1 区块链解析
标准比特币客户端bitcoin-0.8.5会自动以P2P的形式下载整个区块链,我们发现从3下载bt种子2会显著的减少同步时间。同步完成后剩余的区块更新是比特币客户端自动进行的。之前的研究【2,4】使用了一个被分叉掉的版本bitcointools,新的比特币客户端使用LevelDB索引整个区块连,使得bitcointools不再可用。我们使用的是Armory,来解析区块链,书写萃取用来构建交易图形的相关信息的打包级别。【译者注:懒得写注释,愿意深入了解的自家谷歌。】
5.1.2 网页抓取
很多比特币用户,尤其是早期接受者,很愿意将比特币应用推进到更加主流的公共应用中。他们这么做的一个方式就是试图鼓励交易。一个常见的做法就是将比特币地址像签名一样粘在邮件或者论坛帖子的末尾。尤其在论坛帖子中,用户写了一个新的挖矿软件的帖子,或者教新手如何使用比特币的指导贴,然后他们将比特币地址填在签名区。希望从那些觉得他们的帖子很有价值的论坛读者那里获得打赏。这种行为对区块链的匿名性构成了天然的攻击渠道。我们可以容易的将用户信息同区块链上的交易联系起来。
我们使用了一个叫Scrapy的python包来获取和分析论坛页面(图3)。我们写了个爬虫来爬bitcointalk.org论坛的帖子签名,然后我们获取字符串,然后确认它是合法的比特币公钥(比特币地址包含内在的校验)。
图3:一个典型包含比特币地址的签名行