比特币既非完全匿名,也非完全透明。比特币隐私难题在于一个灰色地带:用户金融活动的暴露,最终取决于调查人员的能力与用户所选工具的复杂性。对于互联网上的任何活动来说,没有完美的隐私解决方案;并且在很多情况下,没有一招通吃的解决方案,这意味着注重隐私的选择往往伴随着成本与易用性的平衡。此外,隐私从来都不是静态的,而是不断发展的,以呼应那些搭建保护隐私与破坏隐私工具的群体间的斗争。
1. 前言
正如我们在加密消息、虚拟私密网络与自由知识计划如Tor项目、维基百科、Signal的演化中所见到的,如果正确的价值被建构其中,技术可以成为一项实现自由的工具。但正如我们从Facebook等中心化平台身上所见到的,技术也会成为一项监控工具甚至社会机器。
除非我们现在鲜明表态 ,帮助平台与协议将用户隐私与去中心化的理念植入脑中,否则大规模的监控与社会信用体系将是我们不可避免的未来。
2. 要点
· 比特币仅仅是半匿名的;该协议并不知晓你的真实姓名,但通过种种方法,仍可通过交易信息关联到你本人。
· 区块链分析公司致力于将比特币活动去匿名化并将相关数据出售给企业与执法机构。
· 洞悉比特币这套系统如何运作,掌握Tor、代币控制器(coin control)、合币器等工具的使用,并避免地址的重复使用,对于保护你的身份信息与交易信息免于暴露至关重要。
3. 为什么要关注加密货币?
从协议层面观察加密货币时,显而易见的是,它比传统的数字支付方式更为隐私导向。在这些协议的基本层面,尽管用户的密钥与真实世界之间通常没有映射,但它使我们以前所未有的程度的自由来在全球范围内存储与转移财富。
加密货币促成隐私的程度绝非微小或二元的——根据用户对核心与辅助技术、使用模式以及攻击者能力与复杂度的个别选择的不同,它会有很大的变化。
我们可以观察到,加密货币(尤其是比特币)的接受率,在那些居民经济自由受限的国家中正在增长,例如委内瑞拉。尽管加密货币在构建抗审查交易网络,与不受各种形式政府破坏的货币政策方面优势显著,但只要威权政体可以去匿名化用户信息并随意起诉相关用户,这些优势的效用就不大。这个问题需要引起我们的重视。
4. 比特币隐私引介
比特币既非完全匿名,也非完全透明。比特币隐私难题在于一个灰色地带:用户金融活动的暴露,最终取决于调查人员的能力与用户所选工具的复杂性。对于互联网上的任何活动来说,没有完美的隐私解决方案;并且在很多情况下,没有一招通吃的解决方案,这意味着注重隐私的选择往往伴随着成本与易用性的平衡。此外,隐私从来都不是静态的,而是不断发展的,以呼应那些搭建保护隐私与破坏隐私工具的群体间的斗争。
比特币协议随时间进化,这会引致其在隐私特性方面戏剧性的变化。核心协议的变化不局限于隐私与透明性间的简单选择,通常还伴随着安全性、可扩展性与透明性以及软件的向后兼容性方面的变化。从历史上来看,相较透明性,比特币社区更倾向于选择隐私这一特性,但同主打隐私功能的加密货币相比,前者又更为保守。
因此,考虑利用比特币逃脱威权政府或企业的监控的人们需要理解,当他们在使用比特币时会在其上留下什么类型的痕迹,以及比特币的隐私属性是否足够满足其他们的需求。然而,实现这种程度的理解需要一些努力。
5. 追踪交易
当你在比特币网络上交易时,你会留下两种痕迹。它们可被分类为“链上信息”与“链下信息”。链上信息并不直接将你的身份信息与交易信息关联,但其揭示了可以将你的交易信息与他人相关联的信息。将你的身份信息信息与交易信息关联的则是第二类即链下信息。
6. 链下信息
当你在比特币网络上交易时,你有时会向/从认识你的人处发送/接收比特币。后者则会拥有将你的身份信息与交易信息相关联的链外信息。
当你将上述事实同你的交易信息可同他人相关联的事实组合后,结果便是一些别有动机的实体有时可以明晰你如何使用自己的比特币,你拥有多少比特币以及你在同谁交易这些信息。
甚至在你不与认识你的人交易的情况下,仍然有无数种方法可将你同一笔交易信息相关联,因为比特币交易通常是以非加密的打包形式在网络上进行的,源IP地址可以通过数种方式被追溯到。通过诸如Bitcoin Core这样的全节点交易时,需要一些三角测量(triangulation)或者目标流量的测探,以便估测源IP地址,而其他“轻”钱包诸如移动钱包(Mycelium、区块链钱包、Coinbase钱包)通常会通过公司运营、可以直接看到你IP地址及完整交易历史的服务器进行。
经由IP地址,地理位置IP地址数据库通常可以粗略估计出你的物理位置。你可以使用这一链接(https://www.maxmind.com/en/locate-my-ip-address)自行测试,输入你在Google地图等界面中的坐标。更重要的是,你的IP地址暴露了你的互联网服务提供商(ISP),后者知晓该IP所有者的真实世界的身份信息,并且ISP通常有法律义务将此信息存储数个月。
即使你是使用公共WiFi来进行交易,你仍有可能意外地将真实身份同所访问网站以及设备连接的后台服务相连。当你启动笔记本电脑后,你的Dropbox应用乐于将其同公司服务器相连,这会使得你的IP地址同Dropbox账号在该公司的服务器日志中相关联。即使你不访问任何个人网站帐户,存储在你笔记本电脑上的Cookie信息可以通过您与之前浏览历史记录的Cookie信息关联,向你浏览的网站显示您的身份。许多网站允许第三方跟踪这样的用户以进行分析——仅谷歌估计会跟踪整个网络的80%网站中的用户。
即使你清除cookie信息,网站运营者也可以通过不同网站追踪你,只要你的浏览器印记是独特的,就可将你的IP地址同身份信息相关联。即使你没有运行任何服务且避免一起浏览一些内容,你的设备的MAC地址仍会暴露给网络提供商,运用多种复杂的方式,其可能会同你的真实身份相关联。所以,即使你的IP地址不会被通过ISP记录追溯到你,你仍可能在使用私人设备时留下其他痕迹。最糟糕的隐私类别当然是使用进行KYC的第三方服务作为你的比特币钱包,因为这些服务将记录你所有的交易信息与真实世界的身份。
你也可能因使用基于网页的工具搜索比特币地址与交易信息而被同后者相关联,因为除了你,没人会无缘无故地在网上搜索相关信息。
当你搜索交易信息或进行交易时,目前隐藏你的源设备与IP地址的最知名方法是借助Tor隐匿服务。包括Bitcoin Core在内的许多钱包将其作为可配选项,而有些钱包则将其内置化。Tor浏览器对于你基于网页的比特币相关活动来说近似一个有用的工具,因为它不仅能够隐藏你的IP地址,在你每次退出时清楚cookie信息,阻止第三方cookie,不受大多数浏览器指纹识别技术的影响。
7. 链上信息
我们可以使用区块浏览器,来逐步理解比特币区块链所揭示信息类型。为了实践一下,我们将使用开源区块浏览器blockstream.info。
截至写作本文时的最新区块(2019年3月8日,区块编号#563899)包含2122笔交易信息。我们来看看随意选出的交易信息揭示了什么。
交易信息包括输入值与输出值,并由交易ID标识(由上图的顶部可见)。如果你的比特币钱包发起了一笔交易,每笔交易都将同一个类似的标识符相关联。
从一个高维度来看,其所揭示的信息如下:
· 该笔交易被挖掘的大致时间(从区块头算起)
· 比特币被发向的地址以及数量(例如,“交易输出值”)
· 交易资金来源(例如,输入值)
让我们在此处逐个看看上述交易的每个部分(https://blockstream.info/tx/e70c2ed31c05fbf2865a15a696a7ca0cb8f3afef92c34f4e41051dc2356827c8)。
8. 时间
交易并没有打上时间戳,但区块有时间戳。区块时间戳并不必然正确,但是考虑到绝大多数矿工都如实报告时间,所有区块的时间戳数个小时的范围内应该是正确的。对于那些由诚实矿工挖取的区块,它们会是正确的。这并不意味着块时间戳必须精确到事务广播时间的几个小时范围内,因为有时打包交易进区块需要更长的时间。一些区块浏览器通过显示其在网络上首次看到一笔交易的时间,以更准确地查看交易的广播时间。
上述交易打包进区块的时间可以通过查看区块头获取(在我们的案例区块#563899中,其时间戳为2019-02-20 14:45 UTC)
9. 比特币被转向的地址以及数额
这笔交易中接收地址为:
1: 32Z63LVtUERdEEwz275JHt3o4cewPfE8YC 0.26119849 BTC
2: 31w3iWUN5EMJMW2YRCc5m4RFqm3zN61xK2 0.2214705 BTC
一个地址不仅仅是表面上看起来那么简单,它并不总仅仅是某个用户的密钥的指示器。地址事实上是某人下次想要转移比特币的花费规则(spending rules)的描述符号。
例如, 如果你向地址37k7toV1Nv4DfmQbmZ8KuZDQCYK9x5KpzP发送一笔比特币,改地址的配置是这样的:你并非将比特币花费给特定私钥的所有者,而是将代币释放给任何拥有相同SHA-1哈希并能够提供两组不同字符串的人的花费规则(这意味SHA-1函数失效了,这发生于2017年——因此不要向那个地址发送任何比特币)。值得注意的是,由于当我们向其发送比特币时,如今许多被使用的地址格式被哈希化了,我们通常直到某人从该地址转出比特币后,我们才知道花费规则是怎样的,因为他们为了达成目的,需要披露被哈希化的内容。
在我们交易例子中,区块链显示比特币已经被从两个地址中花费了,故这些地址的花费规则是已知的了。在交易f491dfe9867c36e85950116a90a6128060d6070866ad0f(https://blockstream.info/tx/f491dfe9867c36e85950116a90a6128060d6070866ad0f3598d70d146750162f)中,3598d70d146750162f32Z63LVtUERdEEwz275JHt3o4cewPfE8YC(https://blockstream.info/address/32Z63LVtUERdEEwz275JHt3o4cewPfE8YC)显示为一个2/2多签名地址。我们将在下个部分查看信息到底是怎样揭示上述内容的。
类似地, 31w3iWUN5EMJMW2YRCc5m4RFqm3zN61xK2(https://blockstream.info/address/31w3iWUN5EMJMW2YRCc5m4RFqm3zN61xK2)是一个经常被使用的2/3多签名地址,写作本文时,该地址存有约2700枚比特币(价值1060万美元)。 更高级的区块链工具(如oxt.me)甚至可以随着时间的推移绘制钱包余额,并以近似的准确度显示它看到的活动最多的时段。
18:00-22:00UTC是该地址活动最少的时间段,一个合理的假设是这段对应控制该地址的人的当地时间的01:00-05:00或者02:00-06:00。考虑到改地址的活跃时间段、交易量以及多签/名设置情况,可以猜出该地址属于位于GMT+7/8的时区。
如果你有一个很好的隐私卫生习惯,请永远不要重复使用比特币地址,这样以来便可帮助你切断交易关联。这对于所有P2SH地址(所有以”3“开头以及以”bc“开头的62个字符的地址)的用户来说也是个好办法,因为当你披露该地址的花费规则时,你已经向一个新的、哈希化、花费规则未知的地址发送了比特币。
HD钱包可以产生多个地址但只需要一个备份种子以触达资金。这些钱包在你每次接收一笔新的转账时,会自动产生一个新的地址。
现在让我们再看看交易情况,以检视我们还可从已发送的代币中解读出什么。
比特币交易结果通常被导向两个地址,其中一个是真正的支付情况而另一个被称为”变化输出值“(”change output“)则返回发送方。这类似于你为一个3美元的物品支付了5美元,这创建了两笔支付:其中一笔是流向商品的3美元,而另一笔2美元的零钱则流回支付方。
识别变化输出值需要采用试探法。可以用来从其他支付中辨别变化输出值的试探法例子是:round number的使用(交易时以特币数量或者法币价值的数量),交易中输出值的顺序等等。在我们选定的交易中,很容易发现变化输出值,是因为其返回同花费比特币相同的地址,正如我们将在下午中看到的。
大体而言,不同比特币钱包的表现各不相同,并在区块链上留下了不同的痕迹——类似于在浏览网页时,浏览器如何显示自己的信息。因此,有时可能可以识别某些交易,因为其来自特定的比特币钱包应用。
如果你的调查者知道你在使用哪个钱包应用,这将帮助其将你的身份同交易信息相关联,削弱你的隐私。每一条信息都能帮助他了解你是谁,你在做什么。
10. 交易资金来源
在比特币的交易中,“资金来源”永远来自其他未花费的交易,更精确的说,就是未花费的交易输出(UTXO)。在区块浏览器中,你看到的是解码的生区块链数据和派生数据的组合。一个区块浏览器可能会这样显示交易:
这里的资金来源显示为一个地址。然而Blockstream浏览器的“资金来源”可以显示为交易。
之所以Blockstream不将交易资金来源显示为地址,是因为地址严格意义上并不是交易输入的一部分,并且它并不总能推断出交易的起始地址。此外,因为不鼓励地址重建,它能打破大众在传统支付系统中的心理,并不再通过显示这笔交易发送者的地址,让用户错以为资金能够退回给接收者。
首先,先从技术上进行分析,如果你运行一个全节点(或者使用一个授信的互联网),你就可以去比特币区块链本地副本中查看交易解码的原始数据。如下图:
这种资金来源被描述为Vin-阵列。他没有提到特别提到一个地址,但是它会指向前一个交易的输出。
593e2d5c65b3505d897a13033741037d6c59e683b3345314a58253a8f1572758是vout: 0,也就是交易的第一次输出(vout: 1意味这个交易的第二次输出,以此类推)。这个未花费的交易输出(UTXO)就是资金来源。
到此可以澄清,“资金来源”既不是地址也不是一个交易,而是此前特定交易的特定支出。如果清晰地了解这一点,将会帮助你在使用比特币时保护你的隐私,我们会在之后的章节一一说明。
我们可以从解码的原始数据进一步解码交易的内容,例如从txinwitness中了解更多有关资金来源的信息。Txinwitness中的最后一行16进制的字串符显示了2-of-3的多重字符脚本,这是我们可以推断出这可能使用一个交易所的钱包。
.txinwitness中的其他两个16进制的字符串,只是满足2-of-3多重条件的签名。
现在我们对于资金来源进行了定义,我们可以看到在在这个例子中,有0.48298999BTC的输出,即使已付款的金额只有1000美元的一部分。这有一个不良的后果:想象一个场景,一个朋友给你支付了10美元,但是交易会显示出他拥有一百万美元并具有立即发送全额的权限,这对于隐私保护来讲并不是特别好的。如果你担忧发送比特币交易时会透露你的财富,你应该关注一下在你的交易中哪些输入被使用。
11. 拼接信息
由于交易总是需要提供资金来源,交易都被联系在一起,产生所谓的交易图。如果你向你的朋友发送比特币,你的朋友会看到你在交易中的资金输入,但同时你也可以看到你的朋友何时发送这些代币以及这些代币会被发到那些地址。
一些比特币地址是众所周知的,比如Bitfinex的冷钱包或者查获的丝绸之路的代币。一个地址会因为这是一个实体而被人们熟知,比如:一个公司或者一个慈善组织,因为它们会在宣传网站上公开收款或者捐赠地址或者无意中通过论坛帖子和执法记录透露了地址。区块链分析公司将会定期搜索网络以收集此类信息。
其他地址也会通过群集分析这项技术通过关联显现出来。
12. 群集分析
让我们回到之前列举的那笔交易 e70c2ed31c05fbf2865a15a696a7ca0cb8f3afef92c34f4e41051dc2356827c8。现在我们可以立即看到这笔交易的资金来源,我们的交易(红点)都已被用于资助第三笔交易(蓝点)。
尤其是,第二笔交易的转出和第一笔我们交易的转出都包括在了这笔交易的融资中,它们之前分别被发送到了以下两个地址中:3Qt1YaJwQwtHMb4mjJ41DZVawWXih9LGMq
32Z63LVtUERdEEwz275JHt3o4cewPfE8YC
在界面,这似乎是两个单独的地址,每个地址只有一个看似无关的转入和转出交易。但是因为他们的私钥都可以在蓝点交易上签名,这些地址现在都属于小的集群(包括交易转入的其他407个地址),我们可以假设他们属于同一个用户。这种启发法在过去拥有了许多不同的叫法,最新的名为共同输入所有权启发式(common-input-ownership-heuristic.)。
区块链分析公司将会使用这种启发法去创造巨大的群集。区块链浏览器WalletExplorer已经将这两个地址固定在162787个地址的群集中。分析公司会将集群按照标签分类(IP地址、用户账户、组织以及真实姓名)它们能够使各个地址固定在一个集群内,由此绘制出比特币交易的生态。接下来,他们就会将这些数据集的访问权出售给执法机构以及其他公司。
许多区块链分析公司都会直接通过他们用户得到交易的相关信息,比如加密货币交易所。但是两个头部分析公司Chainalysis和Elliptic,已经声明他们不会追溯它们获取的任何个体的交易信息,但仅限于交易所或其他商业实体。
它只需要对集群中的一个地址进行去匿名化,就可以对整个集群进行去匿名化。
13. 反群集分析
目前我们可以看到,用户身份可以由多种方式与比特币的地址和交易进行关联,比特币的交易也可以通过多种方式相互联系。如果将这些泄漏的信息组合到一起,将会揭示我们所有的财务隐私。
有些比特币用户有意地尝试破解这些分析公司使用的方法,他们使用工具和技术来使分析变得更加困难。一些技术可以通过扭曲行为降低分析的有效性,而其他技术则尝试避免被分析。比特币钱包可以通过将这些技术自动化或者在用户页面上提供这些技术来帮助用户。
以下是其中的一些举措:
· 创建交易时,把转出的顺序随机化,以降低更改转出检测的精准度。
· 避免HD的钱包地址重复使用。
· PayNym是一个公开可共享的ID,它可以允许你在不同的无关联的地址中接收付款,并且这笔付款这有发起者和你自己知道。PayNym允许每一笔交易都派生一个新的地址,而不需要每次真正地去建立一个新的地址,如果你想要上线接收比特币的捐款,这是非常有帮助的。
· 代币选择/代币控制。钱包可以设计为在可能的情况下通过更加仔细地挑选交易中的收入来优先选择群集分析较少的地址,或者允许用户手动选择交易转入,以避免泄漏某些代币的所有权。
提高隐私保护的更加前卫的技术是CoinJoin。CoinJoin是一种在广播交易之前将不同用户的一些资金输入都添加到联合交易的方案。
在我们的例子中,我们可以看到交易资金转入如何参照之前交易的特定转出,而不是整个交易:
但是每笔交易的资金输入和输出不会以任何方式相互影响;只要输入的比特币数量足以支付输出的数量,交易就是有效的。
这里的资金转出被切分为了许多等额的小块,所以无法确定任何投入的资金和支付的费用,其结果就是在一次支付中会有很多的资金来源地和发送地,使人难以辨别。技术上并不需要隐藏交易的资金来源和目的地,但是因为已经被混合打乱,因此很难去证明哪个地址发起了交易,哪个用户的比特币又流向了哪一个地址。
这一类交易的另一个有趣之处是他们可以使启发式共同输入所有权的概念更加复杂。这些资金转入都被标记为属于同一拥有者,但是在这个交易中并不会这样。这些图片显示了使用混币技术产生的独立支付的错误集群。
因为这些交易都有看起来很奇怪的等量的资金输出,这些交易就更容易被分辨,并且可以更轻易地从群集分析工具中删除。当用户希望向外界混淆支付的资金来源和支付发送的目的地时,等额的混币交易就可以理解为混淆器。
最近的一项名为PayJoin或Pay-to-EndPoint(P2EP)的项目也使用了相同的原理来创建与平常交易无法区分的交易。这种新兴的交易类型混合了来自付款人和收款人的资金输入,并且在实际支付某些东西时,将支付金额从发送者的输出资金直接转移到接收者的输出中,由此来支付接收者相应的金额。
一个混和交易的模板:发送者给接收者支付0.5BTC,并在过程中将资金输入打乱
这个交易并没有过多的混淆,但是它会错误地触发常见输入所有权启发式。更重要的是,它在触发的时候,不会给分析公司留下这个资金输入不适合聚集的线索(分析公司需要这个线索来避免误报)。如果混合交易被普遍应用,那么虚假的共同输入所有权将会十分巨大,以致于启发式本身也不可靠,这对于区块链分析公司将是巨大的打击。
14. 闪电网络
闪电网络是在比特币协议之上开发的beta技术,以促进低成本的即时支付。目前闪电网络钱包用户可以使用闪电网络。闪电交易在很多方面都与基础层交易不同,从保护隐私的角度,它们是更加有利的。
闪电交易并不是存储在一个公共的账单上:
· 闪电网络交易使用洋葱路由,但是不会向网络的其他部分播报最终的收款人。
· 闪电网络交易并不会将资金输出打乱并且不会聚集在一起。
闪电网络是一个需要流动性的通道系统;目前接受闪电网络支付的商家和用户是比特币用户的一小部分,并非所有支付(特别是巨额支付)都可以通过闪电网络进行传播,过一段时间后应该会有所改善。这也意味着虽然闪电网络可以为其通道中的交易提供更好的隐私保护,但这些通道仍然需要由定期比特币交易提供资金,而这些交易又会遭受到本文中所述隐私问题的影响。
另一个问题是与基层比特币支付不同的是,闪电网络支付的收款人需要运行闪电网络节点。你的节点会使用TCP / IP与其他节点通信。每当你的节点在网络上与他人互动时(发送,接收或路由其他付款)时,某人将知道你的节点以及公钥和IP地址的存在。从公钥中,很容易找出你和其他节点之间打开的通道以及在打开每个通道时提交了多少比特币。对于私人通道,IP地址仅向你开放的通道显示,但对于公共通道,它会向整个网络显示,甚至可能有人探测通道的当前余额来判断你是否会是下一个攻击目标。
当你运营一个闪电网络节点时,你应该假设你的通道余额已经已知并且会它们会连接到你的IP地址。因此在Tor上运营闪电网络节点是保护隐私的一个很好的选择。
闪电网络目前正处于快速发展阶段,许多财产将在不远的未来发生巨变。
15. 协议的创新
这里有一些提高隐私保护的技术,它们是由底层比特币协议发展而成的:
Schnorr签名:
一种签名方案,除其它的改进外,还会使多重签名地址和单一签名地址无法区分。
Scriptless脚本:
一种在不披露实际支付规则情况下使用脚本的方法。
Taproot:
一种无法区分各类支出规则的交易的技术。
16. 总结
这篇文章旨在介绍比特币隐私保护的工作原理。由于具有匿名以及透明的特性,比特币区块链使隐私权最终取决于用户以及监视的公司使用的工具。如果那些进行监视的公司对区块链进行分析,没有进行隐私保护的用户便很有可能泄露一些财务信息,这是十分危险的。
评论
查看更多