比特币的隐私悖论:中本聪早就承认了,后来者解决了吗

CN
13分钟前
中本聪早在白皮书第 10 节就承认比特币的隐私短板,而今天的隐私技术给出了比「匿名」更细的答案。

撰文:@Lithos_eth

编译:AididiaoJP,Foresight News

比特币是公开的,这是设计使然。中本聪知道,公开会带来隐私问题。

任何人都能验证比特币的交易历史,不需要银行批准。但同一份公开记录,可能暴露远超多数人想象的信息。中本聪在白皮书第 10 节讨论过这个问题。此后,研究者和开发者找到了在保持可验证性的同时保护信息的方法。我们走到哪一步了?

一笔比特币转账,暴露了什么

你付给别人比特币。这笔交易被确认后,会进入公开记录,任何人都能查到。

他们能看到输入、收款地址、每个输出对应的金额,以及这笔交易被打包进哪个区块。他们未必知道你的名字。但只要你的某个地址和身份挂上钩,其余活动就变得容易追查。你的工资、储蓄、生意往来、消费习惯,都可能在同一个公开账本上留下线索。

对一个「让人不靠银行就能转钱」的系统来说,这是个奇怪的取舍。而且中本聪没有忽视它——白皮书里有一节就叫「隐私」,第 10 节。

要理解区块链隐私往哪走,得先回到中本聪实际写了什么,再看比特币之前的研究,最后审视今天的隐私系统能做什么、不能做什么。

比特币之前,人们已经在解这道题

围绕数字货币的隐私讨论,不是从比特币开始的。

1982 年,David Chaum 发表《Blind Signatures for Untraceable Payments》。他研究的是:一个人如何拿到数字签名的支付凭证,而发行方无法把凭证和最终支付关联起来。这个想法重要,因为一笔支付暴露的不只是「钱转了」,还暴露谁和谁交易、什么时候交易、多久交易一次。

179472301991359.jpg

Chaum 的工作确立了数字现金的一个重要方向,但他的电子现金模型仍依赖发行方。保护支付信息和去掉中心化信任,是两个问题。其他研究者和程序员继续攻关。密码朋克想走得更远。

1992 年 9 月,一群密码学家、程序员和隐私倡导者围绕 John Gilmore 主持的邮件列表组织起来。「Cypherpunks」这个名字出自 Jude Milhon,据说是她用来称呼群里的人。他们的兴趣不止于数字货币,还讨论加密、匿名通信、数字身份、信息自由,以及个人如何用软件保护自己。Timothy C. May 在 1988 年写了《加密无政府主义者宣言》,1992 年前后在运动早期聚会期间以电子方式传播。1993 年 3 月 9 日,Eric Hughes 发表《密码朋克宣言》。

其中一句话三十多年来仍然切题:隐私是开放社会在电子时代所必需的。

但 Hughes 还有一句,对理解区块链隐私更有用:隐私是选择性向世界展示自己的力量。

他不是说人应该什么都藏起来,而是说人应该控制自己展示什么。商店卖你东西,不需要你的全部财务史;收款人收你一笔钱,也不需要看你钱包里的每一笔交易。Hughes 说得很直白:交易各方只应知道与这笔交易直接相关的信息。这个想法至今仍是隐私讨论的中心。密码朋克也不相信隐私会被人恩赐——他们相信隐私得自己造。他们的名言是:密码朋克写代码。

通向比特币的几条路

比特币不是凭空出现的。已经有人在做数字货币问题的不同部分。

Hashcash(Adam Back,1997)是一个工作量证明系统,目的是让某些滥用行为——包括垃圾邮件——变得更贵。b-money(Wei Dai,1998)提出一种匿名、分布式的电子现金系统。bit gold(Nick Szabo)提出围绕计算工作量构建数字稀缺价值,他后来在 2005 年发表了详细描述。可复用工作量证明(Hal Finney,2004)尝试让工作量证明结果可复用为可转让的数字价值。

这些是不同的提案,都不是比特币,也没有解决同一组问题。但它们说明中本聪出自什么样的研究环境:已经有人在认真构建不完全依赖银行、政府或中心支付处理商的数字货币。中本聪的白皮书引用了 Hashcash 和 b-money。

比特币把此前工作的想法汇到一起,回答了一个难题:人们如何在没有中心机构防止双重支付的前提下,对一份共享支付记录达成一致?这是突破,解决了重要问题。但它的答案要求交易公开——这就是取舍。

中本聪到底说了什么

2008 年 10 月 31 日,中本聪发表《比特币:一种点对点的电子现金系统》。第 10 节标题是「隐私」。

这一节先拿比特币的公开交易模型,和人们在传统银行习惯的隐私作对比。在银行,交易对银行可见,但公众通常无法翻看每个人的账户历史。比特币不同:交易公开广播,用户用公钥而非真名代表自己。

中本聪写道:必须公开广播所有交易,这一方法排除了传统隐私,但隐私仍可通过在另一处切断信息流来保持——让公钥匿名。

他提出的做法包括每笔交易用新的密钥对,让不同支付更难连到同一个人。但他也承认一个弱点:一笔交易使用多个输入时,会暴露这些输入属于同一所有者。如果其中一个地址和真实身份挂上钩,其他活动就可能更容易被关联到这个人。

这是关键区别:比特币的原始设计提供的是化名,不是机密交易。你的真名不会像传统银行那样自动写进账本,但交易细节是公开的,链外信息能帮人把地址和真人连起来。中本聪没有声称这是完美隐私。他描述的是一种在需要公开验证的系统里,减少公开交易与真实身份关联的方法。

从一笔交易能看出什么

举个简单例子。Lithos 要付给 Emmakun 0.5 BTC,用她现有的未花费交易输出构造交易。交易被广播、打包、上链。

外部观察者能看到:被花费的输入、输出地址、每个输出的金额、交易费(输入总额减输出总额),以及确认这笔交易的区块和时间戳。

观察者不会自动知道 Lithos 或 Emmakun 的真名。但假设 Lithos 从一家要求身份验证的交易所收到资金,或者她把自己的某个地址发在网站上,观察者就可能把地址和身份连起来。从那里出发,其他交易可以被分析、被关联。

还有一个复杂点:某个输出可能是找零退回给发送方,而不是付给另一个人。区块链分析常靠假设来判断哪个输出是哪个。这些假设有用,但不总是对。

179472302018924.jpg

重点在于:比特币不需要暴露一个人的名字,交易历史就足以泄露有用信息。所以讨论比特币时,我不认为「匿名」和「隐私」可以互换。它的地址是化名的,底层交易历史是公开的——这是两件很不一样的事。

中本聪在 2010 年还在想这件事。

179472302042329.jpg

2010 年那场讨论:零知识证明难在哪

2010 年 8 月 11 日,中本聪参与了一场题为「不是建议」的 BitcoinTalk 讨论。主题是比特币能否避免像当时那样存储完整交易历史。问题在于双花:节点如果没有足够信息检查交易历史,怎么知道一枚币没被花过?

中本聪解释说,验证「不存在双花」需要对该笔相关交易的全局知识。然后他写道:很难想到这种情况下怎么应用零知识证明。

这话值得再读一遍,因为语境很重要。他不是说零知识证明没用,而是在讨论一个具体问题:节点如何在不了解所有相关交易的情况下,证明没有其他花费存在?换句话说,网络如何验证「不存在双花」?这和「证明能否隐藏支付细节」是不同的问题。

179472302067262.jpg

这一点重要,因为现代隐私讨论有时说得像中本聪忽视了零知识密码学。历史记录比这更有意思:他知道这个想法,也在思考把它用到比特币双花问题上的难度。事实上,后续研究探索的正是如何用零知识证明保护交易信息,同时让网络验证交易合规。

从隐藏身份到隐藏支付本身

研究没有停在比特币。

2013 年,研究者发表《Zerocoin:来自比特币的匿名分布式电子现金》。论文指出比特币的明确局限:公开交易日志意味着隐私主要靠化名。Zerocoin 探索如何用密码学切断交易与来源的关联,提升比特币隐私。但它仍暴露支付去向和金额,支付方式也有局限。

179472302103562.jpg

2014 年,同一方向推进到《Zerocash:来自比特币的去中心化匿名支付》。Zerocash 提出用 zk-SNARKs 的支付系统,能隐藏交易的来源、去向和金额,同时让网络验证支付有效。

这和比特币原始隐私模型不同。比特币试图让公钥与真实身份脱钩;Zerocash 探索让交易本身更多内容不进入公众视野。这是有意义的转变:网络不必看到支付的每个细节,也能检查支付是否合规。密码学证明可以确立交易有效,而不暴露构造交易的全部信息。这就是零知识证明对隐私研究如此重要的原因之一。

今天的隐私系统,各自保护什么

讨论区块链隐私时,人们常把所有项目归成一类。但隐藏收款方不等于隐藏金额,隐藏金额不等于隐藏交易图谱,链上隐藏信息也不自动保护交易上链前的网络活动。值得把各种路径分开看。

一个系统可以隐藏收款方但暴露金额;另一个可以隐藏金额,却仍通过钱包或网络连接泄露信息;第三个可以让人证明自己满足某条件,而不披露完整身份。这些是不同的保护。

比特币与 Payjoin。 比特币底层交易层仍然公开透明,但这不意味着什么都做不了。开发者找到了让某些交易分析更不可靠的办法。Payjoin Dev Kit 在 BIP 78 中描述了一种方式:发送方和接收方协作构造支付,接收方也贡献一个输入。为什么重要?某些区块链分析假设一笔交易里的多个输入属于同一个人。有了 Payjoin,这个假设可能不再成立,因为接收方也出了输入。但 Payjoin 不隐藏交易金额,也不把比特币变成机密支付系统。它让某些分析更不可靠——有用,但不能和完整交易机密混为一谈。

Monero。 Monero 把隐私建进普通交易模型,用几种机制保护支付的不同部分:环签名提供发送方模糊性,让外部观察者难以确定哪个输出真被花费;隐身地址生成一次性收款地址,让支付更难连到收款人的公开地址;环机密交易(RingCT)隐藏金额,同时让网络验证货币规则。这些机制合起来保护发送方、收款方和金额信息。

但有局限。发送方隐私是概率性的,取决于交易的环和观察者掌握的其他信息。Monero 还用 Dandelion++ 让交易传播更难跨网络追踪,但其官方文档警告,这不能防住所有网络观察者——用户的 ISP、VPN 提供商或某些远程节点配置仍可能暴露信息。Monero 因此是一个有用的例子,说明交易隐私能走多远,但它不承诺用户活动的每一部分都不可见。

Zcash。 Zcash 把 Zerocash 研究做成了可运行的加密货币。其屏蔽交易用零知识证明保护交易信息。两个屏蔽地址之间转账时,公开账本不会像透明交易那样暴露发送方、收款方、金额或备注,网络仍能验证交易有效。这比比特币原始模型强得多。

但 Zcash 也支持透明地址,涉及透明地址的交易仍公开可见。屏蔽交易的使用比例、资金在透明池和屏蔽池之间的流动、钱包支持程度、匿名集大小,都影响用户实际获得的隐私。Zcash 还说明一个重要想法:隐私和披露不必对立。其屏蔽生态包含查看密钥机制,允许在不交出花费权限的前提下检查选定信息。具体能力取决于池和钱包实现,不能假设每个地址都有相同的披露功能。

对比的要点很简单:隐私不是单一功能,而是一组分开的保护。 一个项目需要说清楚它保护的是哪几项。这张对比只描述外部观察者能从区块链本身学到什么,不衡量 IP 地址暴露、钱包安全、交易所记录、设备被攻破、胁迫,或用户自愿披露的信息。也不意味着所有隐私保护的强度相同——比如 Monero 的发送方保护是概率性的,收款方和金额保护用的是不同机制;Payjoin 不是独立货币,而是构造比特币支付的一种方式。

下一个问题:应用内部的隐私

比特币以来最大的发展,不限于隐藏交易细节的加密货币。隐私正在成为智能合约和应用程序设计的一部分。这很重要,因为人们在区块链上做的不只是转钱:他们交易、借贷、投票、管理资产、证明资格、和应用程序交互。这些活动会暴露个人和企业可能不想公开的信息。

交易员不想让所有人盯着自己的仓位;企业不想让竞争对手追踪资金动向;申请服务的人可能需要证明自己满足条件,而不公开全部身份或财务历史。不同技术正在处理这些问题,私有智能合约因此变得重要。思路是让应用完成有用工作,同时不把工作中涉及的每项信息都公开。几个项目从不同方向切入。

Aztec:一个应用里同时有私有和公开函数。 Aztec 在以太坊上构建隐私 Layer 2,智能合约可以同时包含私有函数和公开函数。区别在于计算在哪发生。私有函数在用户设备上的私有执行环境(PXE)中运行,PXE 完成私有计算并生成零知识证明,证明被发送到网络,从而在不把私有输入发给排序器的情况下验证所需结果。公开函数不同,它们在网络上执行,使用公开状态。一笔交易可以同时涉及两者。

这是可编程隐私:开发者逐函数决定应用哪些部分保持私有、哪些需要公开。以投票应用为例:一个人应该能投票而不公开选择,同时最终票数需要公开,以便所有人验证。私有部分处理选票,公开部分更新计数。应用不需要暴露单张选票,也能让最终计票可验证。这就是私有智能合约让设计成为可能的东西。网络本身是去中心化的,排序者质押出块,证明者可无许可加入,治理开放。Aztec 把自己定位为以太坊上少数完全去中心化的 L2 之一,没有中心运营方控制排序或 rollup。

但也不应夸大。Aztec 文档说明,PXE 向节点查询网络状态时——比如检查某个 nullifier 是否存在——节点能知道用户对哪些数据感兴趣。运行自己的节点可以减少这种暴露。私有执行不会让周围所有交互都私有。开发者仍需考虑公开函数调用、网络请求、交易时机,以及应用选择披露的信息。Aztec 有意思的地方不只是隐藏交易,而是给开发者一种方式,决定应用哪些部分该私有、哪些该公开。

Oasis Sapphire:走硬件路线的机密执行。 Sapphire 用可信执行环境(TEE)运行机密智能合约。TEE 是一种受保护的硬件环境,把数据和计算与系统其余部分隔离。Sapphire 支持加密交易输入和机密合约状态,让合约处理不应公开可见的信息。

它和 Aztec 的区别很重要。Aztec 的私有函数用客户端执行和零知识证明,Sapphire 依赖受保护的硬件环境。两者不能互换。TEE 引入围绕硬件、其安全性、认证和实现的信任假设。零知识系统有自己的假设,包括电路、软件和证明系统的正确性。两种方法都可能有用,只是保护信息的方式不同。

Umbra:把转账留在屏蔽池里。 我一直在关注 Umbra 在 Solana 上的工作,尤其是从第一版到 V2 的变化。据 Umbra 团队向我解释,V1 用加密代币账户作为进入屏蔽池的存款方式,池子充当这些账户与公开代币账户或其他加密代币账户之间的中介。V2 放弃了这套安排,聚焦屏蔽池:用户可以在池内进行私有转账,而不是在多个加密代币账户之间移动。

这个区别重要,因为池子成了管理私有余额和转账的地方。但需要理解池子隐藏什么、不隐藏什么。存入和取出池子可能在链上暴露信息:观察者可能看到存款或取款涉及的地址、资产和金额。时机和金额也能帮人猜测哪些资金流动是关联的。隐私保护针对的是池内活动。所以我不会说这能让用户 Solana 活动的每一部分都私有——它保护交易流的一个特定部分。这仍然有用,只是要按这个标准评估。

Privacy Pools:证明某件事,而不暴露一切。 Privacy Pools(由 0xbow 构建)是以太坊及其他链上的合规隐私协议。用户可以在私下转移加密货币的同时,对存款进行筛查,防止非法资金进入池子。你把 ETH 或稳定币从普通钱包存入(屏蔽)池子,0xbow 运行的关联集提供方(ASP)筛查存款,只有获批存款才能被私下使用。没有 KYC,也没有全局查看密钥。零知识证明让你证明资金来自获批存款,而不暴露是哪一笔,从而切断存款和取款之间的链上联系。它是非托管的,部署在以太坊、Arbitrum、Base、Optimism、BNB Chain 等链上。设计源自 2023 年一篇有 Vitalik Buterin 参与的研究论文。目标是为普通用户提供实用隐私,同时让池子远离已知不良行为者资金。

还有一个问题我觉得重要:如果有人需要证明自己的资金满足某条件,而不公开全部交易历史呢?Privacy Pools 研究论文《区块链隐私与监管合规:走向实用均衡》探索了一种路径,用零知识证明和关联集。用户可以证明自己的资金属于某组存款,而不暴露具体是哪笔存款,也不公开全部交易图谱。比如,用户可能想证明资金与一组已知非法来源无关。证明可以确立关联集成员资格,但它不证明一个人普遍清白,也不确立每笔资金来源都合法。结果取决于构造关联集所用的信息和提供方应用的规则。Privacy Pools 是选择性披露的有趣例子:用户可以证明某个特定属性,而不交出全部交易历史。这比把所有信息要么完全公开、要么完全隐藏的系统,更接近 Hughes 的选择性披露理念。

Kohaku:交易之前,钱包泄露了什么。 区块链隐私有一部分值得更多关注:一个人可以使用私有交易协议,却仍通过访问它的钱包泄露信息。钱包查余额时,通常向远程提供商询问某个地址的信息。这个请求会告诉提供商用户关心哪个地址。钱包请求交易历史、模拟交易或获取其他账户信息时,同样的问题会出现。交易本身可能私有,但交易之前的请求是另一回事。

这是 Kohaku 正在探索的领域之一。Kohaku 是以太坊隐私项目,被描述为隐私保护钱包和开源钱包 SDK 的参考实现。以太坊官方曾称它可能是近年来最令人兴奋的隐私进展。其工作覆盖钱包体验的多个部分,包括隐私协议、提供商抽象、轻客户端集成和后量子账户工具。一个值得关注的领域是私有信息检索(PIR)。普通余额查询中,服务器收到地址并返回信息。有了 PIR,钱包可以构造查询,让服务器返回所需信息,却不知道查的是哪个地址。我喜欢这个方向,因为它把讨论带到了交易之外。钱包是用户管理密钥、账户、权限和应用的地方。如果这一层持续泄露信息,单靠私有交易无法解决整个问题。

我们比中本聪的隐私模型走得更远了吗

我认为答案是:在具体技术能力上,是的。

如果谈交易机密性,Monero 和 Zcash 屏蔽交易保护了比特币暴露的支付细节。如果谈在不暴露全部底层信息的前提下证明计算或交易有效,零知识系统可以做到。Aztec 把私有执行带进智能合约,Oasis Sapphire 用机密硬件执行,Umbra 屏蔽池聚焦私有转账,Privacy Pools 探索如何证明资金的特定属性而不暴露完整交易历史,Kohaku 通过开源隐私钱包和 SDK 让隐私在以太坊上更易用。

这些都是真实进展。但我不会说隐私问题已经解决。

一笔私有交易不会自动隐藏提交它的 IP 地址。一个私有智能合约不会让每个公开函数或交互都私有。一个屏蔽池不会抹掉资金进出时暴露的信息。一个 TEE 不会消除硬件信任假设。一个零知识证明保护不了一个设备已被攻破的用户。一个人们无法理解或正确使用的隐私功能,实际提供的保护可能低于其技术描述。

必须看整条路径:钱包、设备、应用、网络、合约,以及最终公开的信息。所以确实有真实进展,但还得让它更好用,让每个人都能用。

什么该公开,什么该私有

多年来,区块链围绕公开状态构建。任何人都能检查余额、追踪交易、分析活动。这种透明让独立验证成为可能,但也让个人和商业活动以难以辩护的方式暴露。

我不认为区块链的每一部分都该隐藏——你们看到我写选择性披露。公共机构应该被问责,公共支出应该接受审视,网络应该提供方式让人验证规则被遵守、关于其运行的声明可被核实。但我也不认为一个人的储蓄、收入、私人支付、投资仓位、身份文件和商业活动,应该仅仅因为用了区块链就自动公开。

这些要求可以共存。一个人应该能证明自己符合服务资格,而不交出身份的全部细节。企业应该能结算付款,而不把全部财务状况暴露给竞争对手。选民应该能秘密投票,同时最终结果保持公开可验证。钱包应该能查余额,而不告诉远程提供商主人在看哪个账户。这些不是要隐藏一切的论点,而是要把披露的控制权交给人的论点。

这就是为什么我反复回到 Hughes 对隐私的定义:隐私是选择性向世界展示自己的力量。它比简单问「项目是否有私有交易」有用得多。

比特币开启了这项工作的重要部分,但没有完成它。每次读中本聪白皮书第 10 节,让我印象最深的不是比特币没能解决所有隐私问题,而是中本聪理解并承认了公开交易系统与个人隐私之间的张力,然后在他正在构建的设计里提出了一个务实的折中。密码朋克多年来问的是一个更宽的问题:人们如何使用数字系统,而不交出不需要披露的信息?比特币回答了其中重要的一部分,后来者把工作推得更远。Chaum 探索不可追踪的数字支付,Zerocoin 和 Zerocash 推进交易隐私,Monero 和 Zcash 把不同形式的机密支付带入使用。

所以我们超越中本聪了吗?在某些技术能力上,绝对超越了。但密码朋克更宽的目标不只是隐藏交易,而是让人控制自己披露什么,同时不失去验证要紧之事的能力。更新的系统把隐私带进智能合约、钱包、身份和选择性披露。每种方法都有不同优势和局限。这也是我希望读者评估隐私项目时知道的:不只看网站上的声明,不只看技术名字,不只看一笔交易是否被描述为私有。看系统实际隐藏了什么,看什么仍然可见,弄清谁能访问信息、系统依赖什么假设、有人在真实世界使用时会发生什么。

密码朋克最初的问题仍值得问:一个系统为什么应该知道比它完成工作所需更多的信息?

比特币让不依赖银行验证货币成为可能。现在的工作,是让人对自己披露的信息有更多控制,同时保留验证能力。这是我想继续研究的那部分隐私运动。

免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到[email protected],本平台相关工作人员将会进行核查。

分享至:
APP下载

X

Telegram

Facebook

Reddit

复制链接