作者:Kalle Rosenbaum & Linnéa Rosenbaum

本章讨论了如何保护你的私密金融信息。本章解释了 “隐私性” 在比特币的语境下意味着什么、为什么它很重要,以及 “比特币是准匿名的(pseudonymous)” 是什么意思。本章也分析了隐私数据泄露的方式,既包括链内泄露,也包括链外泄露。然后,本章还讨论了为什么比特币应该是可以互换的(也即任何两个比特币都可以相互交换),以及可互换性和隐私性如何紧密相关。最后,本章还介绍了一些你可以采取的提高自己和他人隐私性的措施。
比特币可以说是一种准匿名的(使用化名)的系统(详见本章 3.3 节的进一步讨论),也就是用户可以使用多个假名(以公钥的形式)。乍看起来,这是一种非常好的办法,可以保护用户不被识别出来,但在事实上,人们极为容易在无意间泄露自己的隐私金融信息。
3.1 隐私性意味着什么?
“隐私性” 在不同语境下有多种意思。在比特币语境下,它一般来说意味着用户并不非得向他人揭晓自己的金融信息,揭晓仅仅出于自愿。
但不管你是否有所察觉,隐私信息的泄露有很多种可能性。数据既可能从公开的区块链泄露,也可能从别的渠道泄露,比如恶意人可以拦截你的互联网连接。
3.2 为什么隐私性是重要的?
隐私性对比特币的重要性,似乎是显而易见的,但想必有一些方面,是你无法立即想到的。在 Bitcoin Talk 论坛上,Gregory Maxwell 历数了他认为隐私性重要的理由,包括自由市场、安全性和个人尊严:
金融隐私性是自由市场高效运作的一个必要条件:如果你做生意的时候,你的供应商和客户可以(不顾你的意愿)看到你所有的交易,那么你实质上无法自由设定价格。孤立地说,如果你的账户没有隐私性,那么你的私人运作就会失去信息杠杆:如果你给房东支付是没有足够的隐私性,你的房东就会看到你刚刚涨了工资,然后顺势涨你的房租。
金融隐私性也是个人安全的必要条件:如果窃贼可以看到你所有的指出、收入和储蓄,他们就能使用这些信息来瞄准和打劫你。没有隐私性,恶意人就有更多的手段来盗窃你的身份、从你家门口劫走你的值钱物件,或者假装与你交易的且也 …… 他们甚至可以准确地告诉你要从你身上骗走多少钱。
金融隐私性也是个人尊严的必要条件:没有人喜欢被咖啡店里的猥琐员工和吵闹的邻居点评收入和消费习惯。没有人希望被想孩子想疯了的父母质问为什么要买安全套(或者性玩具)。你的雇主也没必要知道你捐钱给哪个教堂。如果我们没有隐私性,那就只有在一个完全启蒙、没有偏见的世界里,没有人对其他人有不正当的权力,我们才能保留自己的尊严、自由地进行合法的交易。
—— Gregory Maxwell,Bitcoin Talk forum (2013)
Maxwell 也讨论了可互换性的问题,我们会在本章的后续章节讨论;并且我们还会解释,隐私性和法律的强制执行是不矛盾的。
3.3 假名
我们前面已经提到,在比特币中,人们使用假名,而这些假名就是公钥。在媒体上,你常常会听到 “比特币是匿名的(anonymous)”,这是不准确的。匿名性和假名性是有区别的。
Andrew Poelstra 在一个 Bitcoin Stack Exchange 帖子中解释了匿名性在交易中的形态:
完全的匿名性意味着,在你支出货币的时候,关于这笔钱从哪里来、到哪里去,完全不会有任何线索。理论上,使用 “零知识证据(zero-knowledge proofs)” 这样的密码学技术,这是能够做到的。
—— Andrew Poelstra 论匿名性,Bitcoin Stack Exchange (2016)
区别在于,在一种以假名使用的货币中,你可以追踪假名之间的支付,而在匿名使用的货币中做不到追踪支付。因为比特币的支付是可以追踪的(以假名为身份),所以它不是一个匿名系统。
我们也说过了,在比特币中使用的加密是公钥,但实际上,被使用的加密是从公钥中派生出来的地址。为什么用使用地址作为假名,而不是使用别的东西(比如 “watchme1984” 这样的描述性用名)呢?Bitcoin Stack Exchange 网站上的用户 “Tim S.” 解释得很好:
为了让比特币的理念得以实现,你必须让钱币只能被给定的一把私钥花费。这就意味着,无论你让什么来拥有钱币,它都必须(在一定程度上)与一个公钥绑定。
使用任意的假名(例如自定义的用户名)意味着,你必须再将这个假名与一个公钥关联起来,才能使用 公钥/私钥 密码学。这将剥夺用户离网安全创建 地址/假名 的能力(比如说,在别人可以将钱币发送给 “tdumidu” 这个用户名之前,你必须先在区块链内宣告 “tdumidu” 这个用户名是由某个公钥 “a1c…” 持有的,还得包含一笔手续费,从而其他人有理由接受它),还会降低匿名性(因为这会鼓励大家复用假名),而且还会毫无必要地让区块链的体积膨胀。这还会带来一种虚假的安全感,让人们以为自己在给自己认识的人支付(如果我在 Linus 之前抢注了 “Linux Torvalds” 这个用户名,那它就是我的,人们以为自己在给 Linux 操作系统的创始人捐赠,实际上却把钱给了我)。
—— Tim S. 论假名,Bitcoin Stack Exchange (2014)
通过使用地址(或者说公钥),我们实现了重要的的目标,比如,消除提前注册假名的需要、减少重复使用相同假名的激励、避免区块链膨胀,并且,也让假冒他人变得更加困难。
3.4 区块链隐私性
“区块链隐私性” 指的是你在区块链上发起交易时会泄露的信息。所有交易都会揭晓一些信息,你发送的交易、你收到的交易,都会。
中本聪(Satoshi Nakamoto)在《比特币白皮书》的第七章讨论了区块链内的隐私性:
作为一道额外的防火墙,用户应该为每一笔交易使用一对新的密钥,以防止它们被关联到同一个主人。多输入的交易依然会暴露一些联系,必然会揭晓这些输入都属于同一个主人。风险在于,如果某个公钥与其主人的关系暴露了,则这些关联可能会让属于同一个主人的其他交易暴露。
—— 中本聪,《比特币:一种点对点的电子现金系统》(2008)
比特币白皮书总结了区块链隐私性的主要问题,即 “地址复用” 和 “地址聚类”。第一种问题,顾名思义(重复使用同一个地址);第二种问题,则指的是以一定程度的确定性,猜测一组地址属于同一个用户的能力。

- 图 3. 区块链上的标准隐私泄露情形 -
Chris Belcher 以详尽的细节解释了比特币区块链内可能发生的不同类型的隐私泄露。笔者推荐你至少要阅读 “对隐私性的区块链攻击(Blockchain attacks on privacy)” 标题下的前面几个小节。
总结一下,比特币区块链内的隐私性并不是完美的。用户需要付出大量的工作来实现隐私地交易。绝大部分用户都没有准备好为隐私性而走这么远。隐私性与易用性之间似乎也存在显然的矛盾。
另一个重要方面在于,你采取的保护你自己的隐私性的措施,也会影响其他用户。如果你对自己的隐私性粗枝大叶,其他人的隐私性可能也会因此削弱。Gregory Maxwell 在我们前面已经链接的同一个 Bitcoin Talk 帖子中解释得非常清楚,并且附带了一个例子:
在现实中也是一样的 …… 一个善良的白帽子黑客在互联网在线聊天室(IRC)中玩 “脑钱包(brainwallet)” 破解游戏,并且找出了一个存放了大约 250 个 BTC 的私钥。我们只凭这个地址就能识别出主人的身份,因为 TA 得到了一个重复使用地址的比特币服务的支付,而这个白帽子黑客能够说服这个服务交出用户的联系方式。他真的在手机上找到了这个用户,这个用户被吓到了,也很困惑 —— 但这人也很庆幸没有弄丢自己的钱。最终是一个皆大欢喜的结局。(这并不是唯一的一个案例 …… 只是目前为相对比较有趣的一个)。
—— Gregory Maxwell,Bitcoin Talk forum (2013)
在这个案例中,当然要感谢这个善意的黑客,但是,不要指望总是能遇到这样的黑客。
3.5 非区块链的隐私性
虽然区块链已被证明是隐私泄露的一个重要来源,还有许多其它类型的泄露与区块链无关,其中一些非常微妙,从键盘记录器到互联网流量分析,五花八门。想要了解这些方式,请回头阅读 Chris Belcher 的文章,尤其是 “对隐私性的非区块链攻击(Non-blockchain attacks on privacy)” 标题下的部分。
在众多的攻击类型中,Belcher 提到了其他人窥探你的互联网连接的可能性,比如说,你的互联网服务商(ISP):
如果这个敌手看到一笔交易或者一个区块从你的节点传出,而此前并没有人给你转发这笔交易(这个区块),那么,TA 可以近乎百分百确定,这笔交易是由你制作的、这个区块是由你挖出的。因为互联网连接是无法回避的,这个敌手能够将这段被揭晓的信息与你的 IP 地址关联起来。
—— Chris Belcher,Bitcoin wiki
然而,最显著的隐私泄露来自密码货币交易所。出于通常被称为 “KYC(了解你的客户)” 和 “AML(反洗钱)” 的法律的要求,位于带有这类法律的司法辖区的交易所和相关公司常常不得不收集用户的个人信息、建立起关于哪个用户拥有哪些比特币的巨大数据库。这些数据库对于恶意的政府和犯罪团伙来说,是巨大而吸引人的目标。实际上还真的有这类数据的市场,黑客会盗窃这些数据然后卖给出价最高的人。更糟糕的是,管理这些数据库的公司通常在保护金融数据上经验不足,实际上他们绝大部分都是年轻的初创公司,我们已知的就有多次泄露发生过。比如说位于印度的 MobiQwik,还有 HubSpot 。
再说一次,保护数据免遭这些五花八们的攻击是困难的,很可能最终你也无法完全做到。你必须在便利性与最适合自己的隐私性之间作出取舍。
3.6 可互换性
“可互换性(fungibility,同质性)”,在货币的语境下,意味着一个钱币可以跟同种货币的另外任何一个钱币互换。这个有趣的词,我们在 3.2 节已经简单提及。而在讨论它的文章中,Gregory Maxwell 指出:
金融隐私性也是比特币同质性的一个必要条件:如果你可以有意义地区分出一个钱币和另一个钱币,那它们的同质性就很弱。如果我们的同质性实际上太弱了,那就无法去中心化:如果某个重要人物能够公布一份被盗钱币的名单、并表示自己不会接受来源于这些钱币的支付,那你就必须对照这份清单仔细检查给你支付的钱币,并退还清单中的钱币(以防自己收到的钱花不出去)。然后,每个人都受困于检查不同权威发布的黑名单,就为了避免收到不受欢迎的钱币。这会增加摩擦和交易费用,并且让比特币(作为一种货币)不那么有价值。
—— Gregory Maxwell,Bitcoin Talk forum (2013)
在这里,他说的是因为缺乏同质性而带来的危险。假设你拥有一个 UTXO(比特币钱币),这个 UTXO 的历史通常可以往前追溯一些步骤,涉及许多以往的交易的输出。如果其中任何一个输出参与了任何非法的、不受欢迎的或者可疑的活动,那么你的钱币的潜在支付对象就有可能拒收它。如果你认为自己的支付对象会根据一些中心化的白名单或者黑名单服务来检查你的钱币,你可能也会开始检查自己收到的钱币,就为了站在安全的位置。结果是,糟糕的同质性进一步恶化。
Adam Back 和 Matt Corallo 在 2016 年米兰(Milan)的 Scaling Bitcoin 上作了关于同质性的演讲。他们的想法是一致的:
比特币需要同质性,才能正常工作。如果你收到了钱币却不能花费它,你就会开始怀疑它到底能不能花出去。如果你对收到的钱币有疑问,那么你会自然而然寻找污点检查服务,检查 “这些钱币是不是有问题”,然后人们就会开始拒绝交易。这个过程的实质是,它将比特币从一种去中心化的免许可系统转化为一种中心化的许可系统,你收到的其实是来自黑名单提供者的一个 “IOU(借条)”。
—— Matt Corallo 和 Adam Back,Fungibility Overview (2016)
看起来,隐私性和同质性是紧密相关的。如果隐私性很弱,比如来自不受欢迎的人的钱币会被放到黑名单,那么同质性也会弱化。同样地,如果同质性很弱,隐私性也会弱化:如果已经有一个黑名单了,你就会去询问黑名单提供者,某一个钱币能不能收,而这就会暴露你的 IP 地址、邮箱地址和其它敏感信息。这两项特性相互交叉得极为紧密,所以,我们很难孤立地讨论它们中的任何一个。
3.7 隐私保护措施
为帮助人们保护自己的隐私不被泄露,许多技术被开发出来。其中最显著的一个是,正如中本聪在白皮书中所说的,为每一笔交易使用一个专门的地址;但也还有别的措施。笔者无意在此指导读者成为隐私性忍者。但是,“Bitcoin Q+A” 有一个隐私强化技术的简要总结,并且一定程度上是按照实现的难易程度来排序的。阅读它,你就会注意到,比特币隐私性常常必须跟比特币以外的隐私性同时处理。举个例子,你不应该吹嘘自己有多少比特币,应该使用 Tor 和 VPN 。这篇文章也列举了一些跟比特币直接相关的隐私保护措施:
全节点
如果你不使用自己的全节点,你会向互联网上的服务商泄露关于你的钱包的大量信息。运行一个全节点是很好的第一步。
闪电网络
比特币上存在许多协议,比如闪电网络和 Blockstream 公司开发的 Liquid 侧链,使用这些协议可以获得一些隐私性帮助。
CoinJoin
这是一种可以让许多人将各自的交易合并为一笔交易的办法,这将让区块链分析更难分辨出谁在给谁支付。
在 Breaking Bitcoin 会议上的一个访谈中,Chris Belcher 给出了提升隐私性的一个有趣的现实案例:
有一家比特币赌场。网上博彩在美国是非法的,所以 Coinbase 交易所的任何客户,如果直接向 Bustabit 存入资金,都会让自己的账户被冻结,因为 Coinbase 交易所在持续监控他们。Bustabit 做了几件事。首先,是一种叫做 “避免找零” 的技术,走完这个流程,你就可以看出自己是否能构造一笔没有找零输出的交易。这样做可以节约矿工费,同时阻挠区块链分析。此外,他们还将自己重度重复使用的存款地址放到 joinmarket 中。从此,Coinbase 交易所得客户就不再被冻结了。看起来,在此之后,Coinbase 的监控服务就无法分析出自己的客户是否参与了 Bustabit 。所以说,这些分析算法,是可以打败的。
—— Chris Belcher 论 “打破比特币隐私性”,Breaking Bitcoin conference (2019)
他在 Bitcoin wiki 的隐私性页面,以及其它地方,都提到了这个案例。
还请注意,更好的隐私性可以通过在比特币上开发协议来实现,比如闪电网络:

- 图 4. 比特币之上的层级可以添加隐私性 -
我们在第二章(中文译本)指出,随着技术层级的堆叠,信任需求只会上升,但隐私性似乎不是如此,它既可能得到提升,也可能恶化。为什么呢?因为(如本书 8.2.4 节解释的),在比特币之上实现的层级,必须偶尔使用区块链内的交易,否则就不是 “基于比特币的”。而强化隐私性的层级通常会尝试尽可能少使用基础层,以减少在基础层(比特币区块链)泄露的信息。
上图介绍了可以在一定程度上提升你的隐私性的技术。但也还有别的方法。如本章开头说的,比特币是一个使用假名的系统。这就意味着,比特币的用户不会直接揭晓自己的真名和其他个人数据,而只会揭晓自己的公钥。一个公钥就是一个假名,一个用户可以拥有许多假名。在一个理想的世界中,你的个人身份跟你的比特币假名是分离的。不幸的是,因为本章前面提到的隐私性问题,这种分离常常会随着时间逐步降级。
要缓解泄露你的个人数据的风险,你在一开始就不应该放弃它,也不该把它交给中心化的服务 —— 他们会构造出巨大的数据库,这些数据库本身可能泄露(见 3.5 节)。Bitcoin Q+A 的一篇文章解释了 KYC 以及由此派生的危险。该文也建议了你可以采取的改善自身处境的少量步骤。
幸运的是,还有一些选项,使你可以从非 KYC 的来源购买比特币。它们全都是点对点的交易所,意思是你直接跟另一个个人交易,不使用中心化的第三方。不过,有人除了比特币也卖其它货币,我们敦促您小心。
—— Bitcoin Q+A,bitcoiner.guide
这篇文章建议你避免使用要求 KYC/AML 的交易所,转而尝试私人交易,或者使用去中心化的交易所(比如 bisq)。
想要关于隐私性对策的更深入材料,请参考前面提到的隐私性 wiki 界面,从 “提升隐私性的方法(非区块链)(Methods for improving privacy (non-blockchain))” 标题开始。
3.8 结论
隐私性是非常重要的,只是难以完全实现。隐私性没有一劳永逸的办法。为了让你的比特币获得良好的隐私性,你必须主动采取措施,有些措施较为昂贵,也比较费时。