摘要:比特币中匿名是一个复杂的问题。在系统中,用户是根据公钥来唯一识别的。想要找出匿名用户真实身份的攻击者必须要能够共建公钥于用户之间的1对多映射,将系统以外的信息与用户进行关联。为了预防攻击,比特币只在用户自己的节点上存储了用户和公钥的映射,并且允许每个用户生成多个公钥。
比特币依靠数字签名来证明所有权,通过交易历史公开来预防双花攻击。交易历史通过P2P网络共享,通过POW共识机制来达成一致。但是从技术角度来看,比特币设计时并没有将隐私作为优先项。那么是否可以关联同一用户的不同比特币交易?或使用外部信息来进行识别?
区块链交易网络
在分析之前,研究人员猜测用户网络是由表示比特币流的树组成的,其中一次性公钥并不与其他公钥相关联。但研究人员分析发现用户网络具有特定的结构。
用户网络可以被用来推测比特币用户的信息。研究人员用全局网络特征来识别异常值,比如度的分布。使用本地网络特征来直接或间接地分析用户操作的环境。用户网络的动态本质也可以进行流或时态分析。
比特币系统中没有用户目录。但可以尝试用线下信息构建与比特币用户相关的部分用户目录。如果可以进行足够的关联,并与前面的网络结构融合在一起可能会对匿名性进行带来严重威胁。
许多企业和服务开始接收比特币、交易等都要求用户提供相关信息,比如邮箱、地址、***、用户账户、IP地址等。如果任意信息公开,都可能被相关人员发现。
安全研究人员Dan Kaminsky对比特币系统进行了分析,调查了TCP/IP层的身份泄露。研究人员建立到网络的公共节点的同时,就可以将IP地址和比特币公钥进行映射,原理假设是第一个告知交易的节点就是交易的源。使用该方法就可能对公钥和Ip地址进行映射,除非用户使用了TOR这样的匿名代理。
对特定的用户,可以直接从用户网络中找出一些信息。可以使用单个公钥来计算余额。然后可以将余额添加到属于该公钥的余额。从比特币历史中获取网络结构的优势是使用网络可视化和分析工具以分析比特币流。
给定公钥,可以用网络结构和环境来更好地理解比特币的流动。
除了可视化外,还可以随着时间的变化通过网络分析价值的流动。
许多交易都有两个输出,一个是接收者的,一个是给发送者的找零。因此,可以对交易支付和找零进行区分。
在一段时间内,同一公钥如果使用多次,那么该公钥可能就属于同一个用户。然后可以推断出用户和公钥的映射关系。
还有更加复杂的攻击,攻击者可以主动加入网络,比如使用标记的比特币。
比特币带来了很多的好处,但灵活性是有代价的:就是比特币交易的整个完整历史是可公开的。
完整论文参见:https://arxiv.org/pdf/1107.4524.pdf
本文作者:ang010ela
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/152110.html