比特币匿名与隐私概述

2020-03-24 14,588

本次分享的论文是来自于 2015 年 S&P 的一篇综述,文章题目为Research perspectives and challenges for bitcoin and cryptocurrencies。

一、比特币概述

比特币最重要的三个组件是:交易和脚本、共识协议、通信网络。比特币白皮书中的很多内容其实都过时了,而且缺乏技术细节。

交易和脚本。比特币世界中的状态是用交易(transaction)来表示的。交易可以将比特币从一个用户转移到另外一个用户。在比特币中没有用户、账户的概念。

交易格式。交易由一系列输入和输出数组组成,整个交易会用SHA 256算法进行哈希,最终的哈希值会作为全局唯一的交易ID。

每个输出含有一个整数值,表示一定量的比特币。该值的精度表示货币可以分割的最小单位,最小的单位是聪satoshi。10^8聪表示一个比特币。

每个输出还有一个短的代码段叫做scriptPubKey。

交易脚本。scriptPubKey制定了ECDSA公钥的哈希值和签名验证方法。比特币交易的大多数使用的是pay-to-pub-key-hash,P2KH。该脚本语言是一种非图灵完备的栈语言,只有不到200个opcode命令,这些opcode包括对加密操作的支持,比如哈希数据和签名验证。

交易输入是之前交易的哈希值和之前交易输出的index。对P2KH交易来说,scriptSig是一个完整的公钥和签名。

限制。除了满足以上条件外,交易的输出值必须要小于等于交易的输入值。

交易和所有权。交易的格式也表明了许多特征,比如没有定义谁拥有比特币。只要拥有私钥就表明拥有所有权。

共识和挖矿。如果交易在用户之间进行,那么这样的基于交易的货币系统就是不安全的。而签名可以限制只有有效的接收者才可以验证。比特币中使用了一种简单的方法来预防双花攻击:所有的交易必须发布在全局、永久的交易账本中,而且是一个接一个的。验证交易需要验证交易的脚本来确保成功发布了。在比特币中log是以交易block的形式存在的,每个block中都含有前一个区块的哈希值,因此叫做区块链。

P2P通信网络。比特币中使用的是分布式的、ad hoc P2P广播网络来发布新的交易和提交新的区块链。网络的性能和稳定性对共识机制有很重要的影响。首先,区块链发现和其接收者之间的延迟会增加临时fork的可能性。原始设计中由于担心经常性的fork,将区块创建的时间设置为10分钟了。其次,可以控制网络其他部分的矿工也可能会广播自己的区块,增加所在区块获胜的可能性。

通信协议。新block和挂起的交易都会通过洪泛的方式广播到整个网络。节点会发送INV消息给含有新区块哈希值的peer。Peer可以请求整个区块链的内容来影响。默认情况下,节点只会转发一次新的数据,以防无限循环传播,只有中继交易和区块是有效的,而且不广播发送过的pending交易。

二、比特币匿名与隐私

比特币提供了非关联性:用户可以创建伪随机的地址,在最初版本的说明中说的是提供了强隐私性,但是由于区块链账本公开的本质,可以根据地址之间的币的流动来确认他们是由相同的个人所控制的。

A 去匿名性质

非关联性高度依赖于idioms of use的实现细节。比如,对每个交易生成一个支付地址的商人可以确保接收到的付款不会自动关联。但是相对而言,客人可能需要聚合他所有的多个地址,但是不同的用户很少会将不同的输入聚合为一个交易。

链接是进行地址聚类,也就是交易图分析。新的关联技术也可能会对隐私和匿名带来新的挑战。比如多签名地址对隐私会带来不好的影响,因为如果地址中的key发生了变化也可以与发送地址匹配。

为了实现去匿名,攻击者必须将地址簇与真实世界的身份进行关联。[80]就成功地识别了属于在线钱包、商户和其他服务提供商的地址。

网络去匿名。P2P网络中的节点在广播交易时会泄露IP地址。因此,使用匿名网络对于隐私来说是非常主要的。比特币的P2P层是否会发展为Tor或者开发一个专门的匿名网络是非常主要的。最后,当前的SPV实现提供了一点点匿名,因为提取交易信息是非常难的。

B 改善匿名的提案

P2P。在P2P混淆协议中,比特币持有者会创建一系列交易,每个参与者都是匿名的。不同的用户可能会重复这一过程来使得匿名集增长。

分布式混合网络。在Mixcoin中,用户会发送标准大小的交易到第三方mix,并接收相同数量的币。这提供了一定外部实体的匿名和部分内部匿名,混合是可以关联用户的输入和输出的。

代币。ZeroCoin就是一种加入unlinkability的代币,使用了类似比特币的基础和匿名shadow货币。ZeroCash是更加匿名的代币提案。交易使用了一种特殊的零知识证明——SNARK,并不现实接收者或交易数量的任何信息。CryptoNote是一种加密混淆协议,使用ring签名,是许多隐私代币的基础。用户可以通过提供一个一次性ring签名来发送代币。

        

    更多参见:http://www.ieee-security.org/TC/SP2015/papers-archived/6949a104.pdf

本文作者:ang010ela

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/126326.html

Tags:
评论  (0)
快来写下你的想法吧!

ang010ela

文章数:56 积分: 711

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号