Nostr的隐私悖论与对比特币隐私的改善
Nostr,全称“通过中继传输的笔记和其他内容”,是由闪电网络开发者fiatjaf于2021年开发的一种新的通信协议,它是由LNBits开发者Ben Arc的一个名为Diagon Alley的完全去中心化市场的尝试发展而来。与其他通信解决方案不同,大多数通过哑客户端(dumb client)和智能服务器运作,Nostr提供了智能客户端和哑服务器(dumb server),从而提高了用户的抗审查能力。
在Nostr中,所有数据都存储在用户本地,仅通过中继进行分发,而不是存储在像Twitter这样的中央服务器上。在社交媒体的情况下,Nostr增加了抗审查能力,因为用户可以完全拥有自己的内容和个人资料。鉴于近期围绕Twitter的审查政策引发的争议,用户开始向联邦通信解决方案Mastodon迁移。然而,在Mastodon中,对内容和个人资料的所有权掌握在用户注册的Mastodon服务器的运营者手中。虽然像Mastodon这样的联邦系统提供了比中央服务器更多的抗审查能力,因为用户可以在遭到审查时简单地注册到另一个服务器,但也有人对Mastodon可能通过服务器所有者实施审查提出了批评。
2022年12月,Nostr社区获得了Twitter创始人杰克·多尔西提供的14 BTC的资助,这为该协议带来了前所未有的关注。随着建立在Nostr上的应用不断发展,移动客户端Damus在中国iOS应用商店的社交网络类别中排名第一,并因此被禁止。为了遏制#MarchOffTwitter运动,Twitter CEO埃隆·马斯克很快禁止发布与Nostr相关的内容,并禁止其他第三方平台(如Instagram),但没有取得成功。
尽管Nostr本身并不是一个隐私协议——默认情况下,客户端会将用户的IP地址泄露给中继——但Nostr协议可能会提高比特币的隐私性。
提升BIP47的隐私性和可扩展性
BIP47是一项比特币改进提案,旨在为重复支付创建可重复使用的支付代码,同时保护用户的隐私。如果没有BIP47,为了避免地址重用,用户需要手动费力地生成新地址。当用户将一个地址重复用于交易时,任何观察区块链的人都可以轻松将所有属于该地址的交易聚合起来,形成用户的付款历史和净值图。因此,在比特币中,防止地址重用是隐私的最佳实践,并且已经在许多比特币钱包中默认实施。然而,当用户试图与另一方建立重复支付关系,例如在商户和客户之间的关系时,频繁生成新地址可能会不方便。
通过BIP47,客户可以为商户生成一组用于支付的地址。如果客户每月购买产品,商户每月都需要向客户发送一个地址。通过BIP47,客户为商户创建了一个专用的支付代码,类似于扩展公钥。这允许客户自动生成用于商户的新地址,而不需要商户为客户创建地址。
BIP47使用通知地址,这些地址由HD钱包监控以获取输出。在通知交易中,商户通过OP_RETURN字段向客户发送盲化的公钥和链码,以及一个共享密钥,用于在公共区块链上保持共享地址的私密性。由于比特币网络的架构,这种交换会产生几个问题。前两个问题是经济问题:一个通知交易由80个字节组成,在比特币网络的交易费高时,对用户来说可能变得昂贵。此外,通知交易会创建无法发送的输出,随着时间的推移会使UTXO集膨胀。这增加了比特币节点的计算负载,因为它们目前需要存储整个UTXO集,即每个未用作新输入以确保交易有效的比特币输出。
通知交易会创建所谓的“有毒找零”。当用户从通知交易中收到找零并将其支付给第三方时,任何观察区块链的人都能够将用户的重复支付与非重复支付进行关联,即使地址没有重用。一个通知地址每个钱包只存在一次。如果一个商户希望与10个客户建立重复支付关系,任何观察区块链的人都能够了解到商户的客户基础,因为所有10个客户都需要为商户创建到同一个通知地址的通知交易。
与其使用通知交易在商户和客户之间交换支付代码,支付代码可以通过Nostr进行交换。与其他通信方法不同,Nostr适用于交换BIP47支付代码,因为不存在可能对消息交换进行审查的中央机构。同时,Nostr上的所有直接消息默认都是加密的,无需计算共享密钥。通过通过Nostr使用BIP47,用户可以避免通过无法花费的输出创建UTXO集的膨胀,并通过避免有毒找零和通知地址的重复使用来消除重复支付与非重复支付之间的关联,以及通过避免公开客户基础来消除客户基础的发布。
注意:通过实施UTreeXO,可能会在未来消除比特币节点存储整个当前UTXO集的需要。UTreeXO将证明交易是否使用有效的UTXO的负担转移给UTXO的所有者,将存储需求从几个GB减少到几KB。
Nostr Pay-To-EndPoint
在比特币中,区块链分析服务使用“共同输入拥有权”这个启发式规则将交易映射到身份。根据这个规则,包含不同公钥作为输入的交易被分类为属于同一个人。由于比特币协议采用基于UTXO的架构,通过该架构,交易的输入和输出是相互关联的,因此比特币协议也容易受到子集求和分析的影响。在子集求和分析中,攻击者能够计算出输入和输出属于同一实体的概率,即使不同的公钥被用作一个交易的输入。例如,如果一笔交易的输入是1、4、7、23和6,输出是5和36,就可以推断出输入1和4以及输入7、23和6属于同一个实体。
来源:2021年《加密货币交易中的知识发现:一项调查》作者:Xia Fan Lu和Xin-Jiang Jang
Pay-to-EndPoint(P2EP)是对中本聪的Pay-to-IP(P2IP)进行隐私保护的重新设计,编码进原始比特币客户端中。P2EP交易的一种形式是PayJoin交易,旨在打破共同输入拥有权的启发式规则。在PayJoin交易中,发送方和接收方都提供输入以打破共同输入的启发式规则。使用PayJoins,用户可以通过任何通信渠道(如Tor Onion作为终点)交换有关将用作输入的UTXOs的信息,以构建部分签名的比特币交易(PSBT)。一旦双方同意条款并签署交易,PayJoin交易在区块链上看起来就像任何其他比特币交易一样。由于涉及方同时扮演发送方和接收方的角色,PayJoin交易不仅打破了共同拥有权的启发式规则,还打破了子集求和分析:各方可以提供输入为3和5,而交易生成的输出为6和2。
来源:Adam Fiscor的《Pay To EndPoint》,2018年
问题:PayJoin交易的协调相当复杂,因为参与者必须同时在线,无论是使用明网域名还是Tor Onion终点。如果用户发起了一个P2EP交易,例如关闭了他们的计算机或者网络连接中断,交易就无法进行通信。在Nostr中,通信是异步的:用户在网络连接恢复后从中继获取信息。通过使用Nostr密钥而不是Tor Onion作为P2EP交易的终点,可以更容易地协调P2EP交易。
另一个P2EP的实现是备受争议的LNURL。通过LNURL,用户无需为每个交易繁琐地生成新的发票,而是可以接收一个指向Web服务器的静态终点,自动生成新的发票。然而,由于Web服务器依赖全局域名服务(DNS),使用LNURL的用户不可避免地向托管提供商透露了他们的身份,如果没有采取适当的预防措施,还会向收款方透露他们的IP地址。广泛采用LNURL将对闪电网络的匿名性造成损害。用户可以使用Nostr密钥作为LNURL交易的终点,以隐藏他们的身份,而不是使用Web服务器作为LNURL的终点。
Nostr用于CoinJoin
虽然PayJoin很好地打破了共同所有权启发式和子集和分析,但PayJoin无法为发送方和接收方提供对合作方的隐私保护。PayJoin实质上是两方CoinJoin,限于两个参与者,这意味着发送方和接收方都知道自己的输入和输出,使其合作伙伴的输入和输出可识别。除非使用CoinJoined交易来促成PayJoin,否则用户有泄露其钱包余额以及过去和未来交易给PayJoin合作伙伴的风险。
在像Wasabi Wallet的CoinJoin协调协议(WabiSabi)这样的匿名金额凭证系统中,Nostr密钥可以作为协调CoinJoin交易的通信终点。这使得CoinJoin交易的发送方和接收方可以交换参与CoinJoin轮次所需的凭证,从而在CoinJoin中实现一种离散支付形式。通过在CoinJoins中使用Nostr密钥作为终点,合作方在人群中隐藏,对其对手的余额和交易保持不知情。同时,使用Nostr密钥作为CoinJoin交易的终点有助于PayJoin用户节省费用,通过在CoinJoin中直接进行支付,而不是通过CoinJoin来促进支付。
Nostr在CoinJoins中的另一个用途是协调者的发现。虽然大多数CoinJoin协调者在Tor后面运行以掩盖CoinJoin参与者的身份,但用户目前无法轻松地发现新的协调者,除非是JoinMarket(面向更高级的CoinJoin用户的CoinJoin市场)。虽然CoinJoin用户可以向Wasabi Wallet添加自定义协调者(在后台交换URL一样简单),但由于缺乏发布平台,没有办法自动更新协调者的过程。因此,为了发现新的协调者,用户必须手动搜索社交媒体和论坛(如Reddit或Twitter)以添加协调者。然而,通过社交媒体或论坛发布协调者服务可能会对协调提供者构成风险,这取决于服务所应用的政策,因为某些页面可能会轻易关闭。
如果Tor是匿名中继服务器,即一种在同行之间促进匿名转发和接收消息的协议,Nostr可以充当匿名公告板。CoinJoin协调者可以通过Nostr事件类型发布他们的服务,而CoinJoin钱包可以启用自动从这些中继服务器中获取信息并在其客户端中显示。通过Nostr广播协调器服务器,例如通过BTCPay的Servers CoinJoin插件和在基于闪电网络的CoinJoin软件Vortex中提出的方法,可以消除在CoinJoin客户端中手动搜索和添加CoinJoin协调者的需求,进一步分散CoinJoin协调景观。
通过NOSTR绕过IP要求
正如之前提到的,Nostr协议最初的概念是实现一个完全去中心化的市场,称为Diagon Alley。随着Nostr协议的发展,Diagon Alley变成了LNbits的扩展NostrMarkets:一种原生支持Nostr的市场,使商家和客户能够通过中继运行和互动在线商店。在NostrMarkets中,客户可以订阅商家的公钥,从中继获取产品,而不是通过网店访问商家的网站。这增加了在线商店的抗审查性,因为商家不依赖可查封的网站,而是商家的商店由其与之通信的所有中继托管。即使商家的服务器被查封,商店也可以轻松地在不同位置设置,因为所有产品都存储在Nostr网络上的中继上。NostrMarkets通过加密的Nostr直接消息处理订单和付款协调,而付款则通过闪电网络进行。
除了具有抗审查性,LNbits的扩展NostrMarkets还实现了完全匿名的市场。商家和客户不向全世界公开他们的IP地址,而只向他们连接的中继公开,而这可以通过在Tor后面运行客户端或商店来轻松解决。完全在Tor后面运行商店的好处是,商店只能通过Tor浏览器和.onion网页访问,NostrMarkets可以在任何Web浏览器或智能手机上运行,提高了保护隐私的客户端-服务器通信的用户体验。由于支付是通过加密的Nostr直接消息进行协商,并通过闪电网络实现,只要商店的闪电节点在Tor后面运行,NostrMarkets中的付款将保持相对私密,因为付款协调直接消息与Nostr中的其他直接消息无法区分。
另一种绕过服务器客户端通信中IP地址要求的方法是NOSTREST。REST代表“表述性状态转移”,它是世界范围Web的软件架构的一部分,用于通过GET、POST、PUT、DELETE和PATCH请求在服务器和客户端之间进行通信。但是,当客户端向服务器发送REST请求时,IP地址会被公开,可能会泄露个人身份信息。在GitHub上,__escapee__提出了一个建立在Nostr上的REST API桥接,名为NOSTREST。通过使用不带身份验证头的Nostr密钥,用户和服务器运营者无需知道对方的IP地址。因此,NOSTREST的实现可以改善使用REST的比特币应用程序的隐私,因为服务器不需要客户端的IP地址。
其中一个例子可以是运行托管的Chaumian e-cash铸币厂,这是一种匿名金额凭证系统。在e-cash铸币厂中,铸币厂运营商不知道其用户的余额或交换的价值。然而,由于当前的REST架构,除非默认情况下在Tor后面运行(例如在e-cash系统Cashu中),否则它会得知用户的IP地址。但是,实现和管理Tor支持是繁琐的。通过NOSTREST桥接,项目可以轻松保护用户的隐私。通过在Tor后面运行e-cash铸币厂,并使用NOSTREST在服务器和客户端之间进行通信,可以实现异步通信,而服务器运营者和用户只会了解彼此的公钥,消除了通过IP进行识别的风险。