区块链可以解决闪电网络的隐私风险
扫描二维码
随时随地手机看文章
闪电网络以其快速和廉价的支付方式而闻名。但是,与链上支付相比,第二层协议也可以提供更多的隐私,因为交易不是发布在比特币的区块链上,区块链分析基本上是不可能的。
然而,闪电网络也存在其自身的隐私风险。支付是通过一个用户网络进行的,没有什么能阻止间谍在监控资金流动的同时参与转发交易的过程。在闪电网络中,可以用区块链分析代替网络分析。
有一些解决方案可以限制这些风险,比如洋葱路由。这些都有帮助,但是,根据网络拓扑结构和支付类型的不同,弱点可能仍然存在。化名ZmnSCPxj的比特币和闪电开发者最近几周在闪电开发邮件列表上发表了大量关于持续风险的分析。
ZmnSCPxj提供了一个解决方案。与Payswap(他在两周前接受《比特币》杂志采访时提出的关于链上隐私的建议)类似,这位开发者认为“自付”可能是隐私谜题的重要组成部分。
理解自付
在以前的文章中,我们讨论了Payswap,这是ZmnSCPxj提出的一项改进链上隐私的建议,它通过看似颠倒了付款人和收款人之间的关系。ZmnSCPxj实际上最初是在闪电网络的背景下提出这个想法的。实际上,它在闪电网络上的使用可能更好:嵌入在链上备选方案中的一些折衷不适用于第2层协议。
简而言之,对于闪电版的Payswap,自付是同一支付路径的一部分。
为了解释这是如何工作的,让我们来看一个极其简化的闪电网络。A(lice)与B(ob)和C(arol)有支付渠道。Bob与Alice和D(ave)有支付渠道。Carol 和Alice、Dave有支付渠道。Dave和Bob、Carol有支付渠道。
如果Alice想用比特币支付Dave 3,她通常会通过Bob或Carol进行支付。Bob或Carol将对服务收取少量费用,但是为了简单起见,在本例中我们将忽略费用。然而,事实上,支付的费用与下面几段相关,所以要记住这一点。
现在,我们说Alice选择Bob的路径来支付。她给Bob送了3个代币,Bob继续把3个代币转发给Dave。付款成功。
但不幸的是,在这个例子中,Bob很容易正确地假设Alice给了Dave3个代币。他知道数额,因为他转发了它,而如果Alice想支付给Carol,或Carol想支付给Dave,他们可以直接这样做,而不依赖Bob作为中间人。如果Bob是监视网络流量的间谍,他的正确假设会损害Alice和Dave的隐私。
因此,ZmnSCPxj提出了一种替代方案。Alice可以把钱转回自己的账户,也就是“自付”,而Dave会收取一大笔“费用”。“这笔费用实际上是真正的支付。
例如,为了像以前一样付给Dave钱,Alice这次会把5个代币投出去。首先,她把5枚代币送给Bob,Bob再把5枚代币转给Dave。然后Dave会继续把钱转给Carol……但他只会转两枚代币!最后,Carol将这两枚代币转交给Alice。最后,Alice少了3个代币,Dave多了3个代币。因此,Alice付给Dave3个代币。
这种自我支付会误导Bob和Carol。Bob转发了5枚代币,可能在逻辑上错误地认为Alice给了Dave5枚代币。与此同时,Carol的情况可能更糟:她会认为Dave给了Alice两枚代币。在Carol看来,付款的方向是相反的。
如果Bob或Carol暗中监视网络活动,他们就会在支付的金额或方向上被误导,这有利于Alice和Dave的隐私。如果间谍经常被误导,甚至可能使这种间谍活动完全无用。
PTLCs,标准量
上面例子中的一切都被简化了,从网络图到交易金额,而更细微的隐私风险,如费用金额和时间风险则被完全忽略。与此同时,假设即使Bob和Carol都是间谍,他们也没有合作,或者更糟:他们是假装成两个用户的间谍。
实际上,路由的隐私风险和隐私好处都更大,同时也更微妙。处理所有这些微妙之处超出了本文的范围;ZmnSCPxj在Lightning-dev邮件列表中提交的内容是更深入分析的更好资源。更普遍的是,闪电隐私的研究正在进行中。
尽管如此,值得指出的是,ZmnSCPxj关于改善闪电隐私的建议超出了自付费的范围——在某些情况下,额外的协议更改实际上或多或少对自付费有效地改善隐私是必要的。两个最重要的变化是从哈希值的timelock合约(HTLCs)到公钥TImelock合约(PTLCs)的转换,以及采用标准金额。让我们简要地看一下这两个。
现在,闪电支付是通过HTLCs来进行的。路由上的所有用户基本上都传递一个代码,该代码保证,如果另一个对手方向他们索赔,那么他们可以向另一个对手方索赔(这是通过网络转发资金的方式)。不幸的是,如果合作间谍是同一路由的一部分,他们可以使用HTLCs来判断不同的跳线实际上是同一支付的一部分,在一定程度上破坏了洋葱路由的好处。ptlc将利用密码技术来防止间谍将不同的跳转链接到同一条路由。
ZmnSCPxj还建议闪电用户采用标准数量。虽然这是可选的,但钱包将被鼓励分成更小的(但相互关联的)支付,每笔更小的支付由标准金额组成。如果标准金额是例如1、2和5个代币,在上面的例子中,Alice将支付1个代币和2个代币,而不是支付3个代币(或者,如果她自行支付,她可以发送5个代币和2个代币给自己)。
如果有足够多的用户将他们的(部分)支付限制在标准数额,间谍就不能依靠数额将不同的跳转链接到同一笔支付。在自我支付的情况下,用户甚至可以将非标准金额从收款人转回自己的账户,使这些支付看起来更像是常规支付。
自行支付的缺点
ZmnSCPxj的提议的链上版本Payswap具有重大的权衡。与常规支付相比,需要更多的交易,这意味着更高的费用。最重要的是,Payswap交易需要比特币协议之外的用户进行交互;而普通的比特币交易则不然。
在闪电网络中,这些缺点并不存在,或者存在的程度更小。闪电支付需要在两种情况下进行交互,所以自我支付不会使情况变得更糟。虽然需要一些额外的事务跳转来进行自支付,但这些跳转是在非链状态下发生的,因此它们不需要额外的块空间。
尽管如此,即使是在闪电上,自付费用也有一些缺点。虽然比链上费用更便宜,但额外的跳在路由费用上要多花一点。此外,随着更多的跳转被添加到支付中,支付失败的风险增加,以及间谍成为路线的一部分的风险也增加(如果在上面的例子中只有Carol是一个间谍,自我支付将给她更多的信息b比通过Bo会有的简单路线)。
最后,当然,可能还有其他(迄今尚未预见到的)权衡;自我支付是一个相对较新的提议。正如ZmnSCPxj在他的电子邮件中总结的那样,“在付款时对循环付款的使用进行更多的分析可能是合适的。”