专论比特币与隐私(上):白皮书中的线索

  • BTCStudy
  • 发布于 6小时前
  • 阅读 56

本文是Giacomo Zucco对比特币隐私性的一篇探讨文章。文章分为两部分,第一部分追溯到比特币白皮书,了解比特币与隐私性的基本关系,包括可否认性和可互换性。第二部分将探讨保护和优化比特币隐私性的方式。

作者:Giacomo Zucco

来源: https://www.giacomozucco.com/a-treatise-on-bitcoin-and-privacy/

原文出版于 2020 年 3 月,首次出版于 Bitcoin Magazine

引言

潮流热点,何其易变!这几天,所有人都更关心因为全球金融恐慌而带来的价格波动(这是可以理解的),但是,也别忘记了那些从未消失的恒久问题,比如,在交易比特币的时候保护个人隐私的重要性。巧的是,在这一个月间,我们听到了许多 KYC/AML 合规的交易所出于用户可能使用 CoinJoin 软件(后文详述)而冻结其账户的报道;随后,一位著名且受人尊敬的比特币早期布道者趁机 推销他新创建的不受人欢迎的山寨币,称其 “可以取代不够隐私的比特币!”。

如果你想从全球疫病大流行、金融危机和价格波动中喘口气,那么恰好 —— 本文尝试分析关于这场最新的 “比特币大戏” 的观点、事实和语境。本文计划分为上下两部分:第一部分,我们将追溯到比特币的白皮书,了解比特币与隐私性的基本关系;第二部分,我们将探究保护和优化比特币隐私性的方式 —— 并排除一些 “干扰因素”。

货币需要隐私性

比特币的设计目标是执行货币功能,而货币需要让个人的身份隔绝于具体的货币单位和交易,以大规模、可持续地流通。这种隔绝至少有两种基本元素。

可否认性

我们将第一种元素称为 “可否认性(deniability)”,指的是,使用一种货币工具的个人,在日后可以可信地否认与它有过任何关联的概率。

货币需要具备可否认性的理由是,它是被发展出来协助个人储蓄和人际自愿交换的。但自愿交换的正和游戏并不是提升个人财富的唯一办法:另一种办法就是暴力没收(负和游戏)。社会学家和政治经济学家弗兰茨·奥本海默(Franz Oppenheimer) 敏锐地指出,在社会中,获取财富有两种截然不同的范式:

“劳动和抢劫有所不同:一种是使用自己的劳力,另一种是强迫征用其他人的劳动力。我提议,在接下来的讨论中,将使用个人的劳力以及平等交换其他人的劳力,称为 ‘经济手段’;而将不顾其意见的劳力征用称为 ‘政治手段’。”

虽然诉诸政治手段的诱惑,在广泛的社会背景下长期存在,但涉及到金钱时,这种诱惑变得格外强烈:让货币成为交换和储存经济所得的绝佳工具的特性,也让它成为绝佳的没收目标 —— 以及储存政治手段所得的工具。

交换和存储货币的个人更容易、也更经常被政治寻租者盯上,因为劫掠他们比劫掠只参与物物交换、乃至完全不参与交换的山中隐士要更加高效。政治组织很喜欢将没收作为受害者参与具体类型交易的条件:税收、进口税、路桥费、关税、贡品、贿赂、惩罚、消费税、保护费,等等。

在通信中,隐私权是重要的;而在敌意环境下,经济交换可能是最重要、最敏感、最私人甚至是最危险的通信形式。钱本身会说话。财务和商业生活完全暴露的人,会面临更高的遭遇抢劫、勒索、绑架和政治征用的风险。

出于所有这些理由,经济主体能够将自己的公开身份与自己所参与具体货币转移分离开来、并否认这种联系,是至关重要的。

可互换性

第二种元素叫做 “可互换性(fungibility)”,意味着一个收到了一种货币工具的个人,可以安全地忽视该工具过去与任何具体个人和任何用途发生过的关系的概率。

可互换性更多是一种经济属性而不是一种政治属性:它基本上意味着,两堆数目相同的钱(不论这数目是多少)在实践中是无法区分的,从而让货币接受者的验证成本变得非常低。两张 50 美元的钞票就是一样好的东西,你不需要为了收款或支付而知道谁曾经用过它。实际上,如果收款方需要先了解每一单位货币的历史才能评估它的价值,那验证成本会变得极为高昂。

讽刺的是,“了解你的客户(KYC)” 的监管要求是一种最近才出现的趋势,而货币一直被采用的原因是商家无需了解(和信任)自己的客户!客户已经在一定程度上需要 “了解自己的商家”,因为客户必须一定程度上信任商家会可靠地交付高品质的产品和服务。但商家,当他们要从零零散散的物物交换和信用交易系统扩大为市场时,使用货币就可以从了解所有客户端负担中解放出来。“KYC” 监管只是一种政治控制工具,其营销话语都是自相矛盾的,散发着经济学文盲的气息。

这并不是一个意识形态问题,而是一个功能问题:如果一种商品的每一个接手者都必须验证此前每一任所有权人的政治状态,以了解自己实际上要接手多少政治风险(包括迫害、审查、税收和债务),那这种商品就无法轻松转手,而轻松转手是货币商品的必然要求。

一些商品是缓解可否认性和可互换性的理想选择:“不记名票据”,并不携带前任所有权人的个人信息,所以任何人都能轻松否认参与过某一笔交易。

比特币:为隐私而生

中本聪创建比特币作为一种隐私工具。中本聪作为活跃分子参与其中、比特币实验作为加冕礼的的整个密码朋克运动,完全是关于个人隐私和金融隐私的。中本聪的绝大部分早期的消息和出版物(包括著名的 比特币白皮书),主要关注的都是比特币的隐私特性(白皮书还专门给出一段来讨论它)。

白皮书关于隐私性的第一种考虑是,中心化的在线支付中介很容易成为监管的目标。因此,很容易迫使这些交易主动参与纠纷调解,从而让绝大部分交易都可以逆转。这种要求的结果是,商家出于对退款的担忧,格外 “留意自己的客户、向他们询问本无必要获得的信息”。于是商家再一次回到 “KYC 悖论” 中。变得去中心化、无法管制,比特币就无法被强迫去主动介入争议。出于这个理由,比特币交易很快就会变成不可逆转的,从而让对支付者个人身份的任何调查都变成绝对多余、毫无必要。

第二种考虑则表达对这样一个事实的担忧:比特币的基础层(所谓的 “时间链(timechain)”,为了避免重复花费而且不需要依赖于一个受信任的第三方而设计出来)要求公开每一笔结算交易,因此限制了使用传统的(来自中心化供应商的) “通过混淆来获得隐私性” 技巧的机会。这种局限性因为密码学公钥的匿名特性而得到了缓解,因为这些公钥本就是只打算使用一次的,在工作原理上,不需要跟使用者的身份产生任何关联。用中本聪的话来说:

“传统的银行模式,通过限制对信息的访问实现了一定的隐私性:只有交易相关方和受信任的第三方才能了解信息。宣告所有消息的必要性直接排除了这种方法,但依然可以通过在别的地方打破信息流来保持隐私性:让公钥保持匿名。人们可以看到某个公钥在给另一个公钥支付,但没有信息能够将交易与某个人关联起来。这就类似于股票交易所的信息暴露程度:单笔交易的发生时间和规模,是公开的,但不会公开参与者是谁。”

隐私与信任:全有或全无

中本聪和许多其他比特币早期的贡献者和研究者发现,这种透明设定的一个有趣特点是,其隐私保护天然是 “全有或全无(all-or-nothing)”。确实,一个受信任的第三方可以承诺会保证你的敏感信息安全,不被潜在的绑匪、劫匪和跟踪者得到,但依然可能被强迫向一个更有权力的政治实体(国家及其税务机关、金融权威、保密机构,等等)提供任何细节。

而在一种(准)匿名但公开的系统中,可以安全地假设,但凡后面这种类型的敌手能够获得的敏感财务信息,前一种类型的敌手也能够获得。所以,当某人在时间链上的隐私被打破的时候,它会给所有使用互联网连接的窥探者带来好处:政府、盗贼、黑客、商业对手、私敌、仇家、前配偶,等等。这应该会成为用户保护自己的 “链上” 可否认性的强大动机,进而,成为保护所有人的可互换性的力量。

另一方面,比特币基础层的交易,已经在内部展示出完美的可互换性。我的意思是,虽然每一笔交易都是公开的,但没有公开在一笔具体的交易中,谁控制着花费某一个输入的私钥,也不会揭晓谁控制着能够花费某一个输出的私钥。

比特币的规则为我们保证了,在一笔交易的所有输入中被花费的 “聪” 的总数量,将等于或小于在所有输出中 “锁定” 的聪的数量(交易本身无法创造通货膨胀,它们只能为矿工留下 “区块空间手续费”)。但在技术上,如果一笔交易有 10 个输入和 10 个输出,仅凭公开的时间链数据,无法断定着到底是 1 个支付者、10 个受益人,还是 2 个支付者、1 个受益人,甚或只是一个人左口袋倒右口袋。当然,基于启发式分析和用户习惯,一些概率性的推测是可能的,但光凭公开的时间链数据,在单笔交易层面上,实在无法证明任何事情。

虽然让一个乃至更多实体控制不同的输出可以说不费吹灰之力,但让多个实体来添加输入就有一些棘手了,需要所有支付受益人在交易被广播之前进行一些实时协调(译者注:原文如此。疑应为 “支付人(payer)” 而非 “支付受益人(payee)”)。不过,幸运的是,比特币交易的原子性使得参与这个过程的陌生受益人之间不需要任何信任。

可互换性因子

比特币交易的可互换性在一开始就是比特币设计中的一部分,但其隐私性影响是许多贡献者后来才明确指出的。最后,在 2013 年,Gregory Maxwell 创造了 “CoinJoin” 来指称比特币钱包软件为完全利用这种先天存在内部可互换性而应该实现的最佳操作。后来,人们提出了这种技术的许多变种(PayJoin、JoinMarker、CoinSwap、P2EP 和在 Wasabi 以及 Samourai 钱包中实现的 Zerolink),所有这些变种都有同一个目标:利用比特币协议的基础可互换性。

另一个有望大大增强比特币隐私性的机制是其分层特性(layerization)。协议栈的更高层级,比如闪电网络,不需要使用时间链来确认每一笔交易;相反,在时间链上确认的交易仅用作开启和关闭 “合约” 的 “锚点”,支付在基于合约的其他环境中发生。中本聪很早就已经想象到了这种 “支付通道”:

“参与者们保留这些交易,在有需要的时候,相互传递,直到获得足够多的签名。【……】他们可以通过一致意见不断更新一笔交易。要给其他人支付的参与者将是第一个签名交易新版本的人。如果一方不同意变更了,那么最新状态将被记录在 nLockTime 字段中。如果有需要,可以在交易的每一个版本签署后准备一笔默认交易,从而 n-1 方可以将一个无响应的参与者推出去。所有的中间版本豆不需要广播。只有最后的结果会记录在整个网络中。在 nLockTime 之前,参与者们以及少量的围观节点广播他们看到的序列号最高的交易。”

中本聪的这些想法并没有转变为打造支付通道的具体措施(这些想法是有缺陷的),但支付通道依然成为许多比特币用户的常用工具。它可以直接使用,也可以通过路由转化为集体使用。虽然闪电网络常常被描述为一种 “可扩展性” 解决方案,但广义地说,Layer 2 技术有很大的隐私性好处:它大量减少了暴露在时间链上的公开信息的数量。

一开始就走错了

当然,想在日常的比特币钱包和工具中实现隐私性的最佳实践,并不容易。首先,在减少泄露在时间链上的信息量的同时,Layer 2 技术 和 CoinJoin 通常也会增加需要管理和保护的网络层信息量(主因是实时交互的需要、最新的可触达对等节点清单、公开可用的流动性,等等)。尤其是闪电网络,很不容易启动,直到 比特币网络的用户在 2017 年底采用了一项比特币协议升级

至于 CoinJoin,它不像闪电网络,理论上从第一天开始就能实现(虽然有许多管协调、流动性和金额混淆相关的现实挑战),绝大部分实际实现出来的比特币钱包软件都没花这个心思。但就因为没有做,他们巩固了一个危险的趋势:绝大部分得到区块链确认的交易,都被认为是由单个主体创建、签名和广播的,也即一笔交易的所有输入的相关私钥都由同一个人控制。比特币交易开始被认为要么是一对一支付,要么是一对多支付。因此,比特币协议最有效的可互换性特性之一,并没有实际转化为钱包的最佳模式,直到最近才有所转变 —— 尽管这种特性自始至终就在那里。

还有更不走运的事。其他更简单的最佳做法,尽管被包含在比特币的设计中,作为不起眼的默认做法,在早些年间,却很大程度上被不那么关心隐私性、更加关注用户体验的工具开发者们忽视了。一个显著的例子是 “地址复用”。中本聪关于公钥匿名性的话有一个假设:用户每次收取比特币,都会生成一个一次性的地址 —— 在花费地址中的钱时,这个地址就会被丢掉,从不重复使用。(也许 “地址” 这个词,就不是一个好的措辞,因为它常常让人联想到长久不变的索引:email、IBAN,等等;而现在用于描述闪电网络交易的词语 “发票(invoice)”,是一个更加清楚的措辞。)

实现这种设计一度并不容易(尤其是在 “确定性层级钱包(HD wallets)” 出现之前;HD 钱包只需使用一个 “主” 备份,就能重新派生出几千个密钥,从此就容易了)。所以,我们发现了大量重复使用的静态地址,降低了随机性、帮助了区块链分析和去匿名化。用户开始将同一个地址放到自己在论坛上、社交网络和博客网站的个人描述中。对于许多早期比特币用户,发起一笔支付就意味着接收方可以将支付者过去和未来跟比特币有关的金融生活看得一清二楚。

另一个重要事件是 “轻客户端” 的激增:它们是无法直接下载、验证和存储时间链,但可以存储存储私钥以及查询其它节点(在最好的情况下,查询的是一个受信任的第三方,比如钱包服务的供应商;而在最坏的情况下,查询的是网络上的随机节点,在这种情况下,轻客户端被称为 “SPV 钱包”)以了解涉及一些公钥的交易。除了带来一种安全性上的系统性风险,这些客户端也成为隐私性上的一种常见的危险点。

在这方面,其它一些次要的最佳实现做法,一开始也被工具提供者给忽视了(包括面向隐私的钱币挑选算法、避免钱币合并、找零管理,等等),但是,在很大程度上,这三种做法也代表了被 “区块链分析” 公司 —— 被窃听者雇佣来刺探比特币用户的公司 —— 所使用的启发式分析的基础。

截至今日,这些问题中的绝大部分都有聪明的技术解决方案,以及实现了这些方案的现代工具。但很难在已经对容易走(但实际上并不安全)的捷径 “上瘾”的生态系统中推动最佳习惯(有时会带来微小但真实存在的协调成本)。而就像那句话说的,隐私性喜欢抱团:即使你有最好的工具,也遵循了最佳习惯,如果只有你这样做,那就不会带来什么隐私性好处(实际上,甚至可能带来伤害,因为你会显得特立独行,然后被放在聚光灯下)。

(未完)

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
BTCStudy
BTCStudy
https://www.btcstudy.org/