SNICKER可能是比特币日益增长的隐私工具箱中的下一个工具.

虽然中本聪 白皮书 这表明隐私是比特币协议的设计目标,如今,区块链分析通常会破坏用户的隐私。这是个问题。比特币用户可能不一定希望世界知道他们的钱花在哪里,他们的收入或拥有的数量,而企业可能不想将交易详细信息泄露给竞争对手—仅举几个例子.

幸运的是,比特币开发人员和研究人员正在为用户提供越来越多的解决方案,以恢复其隐私。比特币隐私保护领域的拥护者之一是亚当·“太平鸟”吉布森,他可能以其对JoinMarket的贡献而闻名,JoinMarket是一种允许用户混合硬币的协议,并为参与这种混合提供经济奖励.

最近,吉布森(Gibson)提出了一个新想法:SNICKER(带有重用加密密钥的简单非交互式Coinjoin)。现在提交为 比特币改进提案草案 (BIP),SNICKER将允许硬币混合,而无需任何同步或交互:无需用户同时进行协调或在线.

投币

到目前为止,SNICKER基于成熟的比特币混合技术CoinJoin。当今可用的一些最受欢迎的混合解决方案已经使用了这种技巧,包括Wasabi钱包(ZeroLink),Samorai钱包(Whirlpool)和JoinMarket.

进一步阅读:什么是比特币混合器?

CoinJoin本质上是将多个交易合并为一个的工具。假设爱丽丝(Alice)想向卡罗尔(Carol)支付一枚比特币,而鲍勃(Bob)要向戴夫(Dave)支付一枚比特币。在此示例中,爱丽丝和鲍勃可以合作创建一笔大交易,在这笔交易中,他们都花费一个比特币(总共两个),而卡罗尔和戴夫则各自获得一个比特币。区块链间谍将无法辨别哪个发件人向哪个收件人付款,这将惠及所有人的隐私。.

然而,实际上,交易的比特币数量经常是隐私泄漏。如果爱丽丝想向卡罗尔支付一枚比特币,而鲍勃想向戴夫支付两枚比特币,则很明显,谁来匹配发送和接收金额来支付谁.

这就是为什么CoinJoin更常用于混合的原因。爱丽丝和鲍勃没有给别人付钱,而是向自己发送了一个比特币。通过将其合并为一笔交易,区块链间谍无法分辨是谁退回了哪枚硬币:混合硬币,从而保护了爱丽丝和鲍勃的未来隐私.

CoinJoin混音器现在可以工作,但是它们有一个缺点:它们需要交互性。仅当所有参与用户都签署了整个交易时,CoinJoin交易才有效-但是要签署整个交易,参与用户必须首先向其添加所有硬币和新的接收地址。这通常意味着他们需要多次传递交易,并且通常都要求他们同时在线.

对于许多用户来说,这样的要求有点困难,这就是CoinJoin交易不是很常见的原因之一。这些要求是SNICKER可以解决的.

SNICKER版本1

本节中描述的协议是SNICKER的第一个建议版本。这个版本比其他版本更容易理解,但需要注意的是,它实际上不是协议的最佳版本,也不是最有可能实现的版本。 (稍后会提供更多有关替代版本的信息。)

话虽如此,以下是SNICKER版本1的工作方式:

假设爱丽丝想混合一个比特币,以区块链上未花费的交易输出(UTXO)为代表。她要做的第一件事是将这个比特币重新发送到她的同一个地址。没错,在此版本的SNICKER中,她正在重复使用地址,这违反了比特币的最佳做法。但这很方便:它公开标记了UTXO为(可能)可用于混合.

顺便说一句,这并不意味着爱丽丝不能使用硬币。它仍然坐在她的钱包里,随时可以使用。如果有人在乎,它会被标记.

鲍勃还有一枚硬币要混合。 (实际上,数量不必事先相等-Bob至少需要拥有Alice的数量。)Bob不认识Alice,但他确实知道像Alice这样的用户在那里,标记了他们的UTXO作为可混合的。因此,鲍勃(Bob)扫描了区块链以查找潜在的匹配项。他找到了爱丽丝的UTXO,可能还找到了更多匹配的UTXO,包括误报(并非所有重复使用的地址都可用于混合)。但是,为了简单起见,现在让我们假设鲍勃只找到一个匹配:爱丽丝的UTXO。 (稍后,我们将返回其他可能的匹配和误报。)

通过匹配,Bob现在将获取与重用地址相对应的公钥。这完全有可能是因为地址被重用了:通过第一次使用它,爱丽丝在区块链上发布了该公钥。 (一旦花费了硬币,公钥就会在区块链上可见,而地址总是可见的。)

此时,Bob拥有Alice的UTXO(因为她标记了它)和她的公共密钥(因为她从地址花费了一次).

现在,鲍勃使用爱丽丝的公钥,并将其与自己的私钥(用于他要混合的硬币)结合起来,以创建“共享秘密”。从字面上看,这是加密书中最古老的技巧,因为只有Alice和Bob才能生成此秘密,所以它是共享的:Bob带有他的私钥和Alice的公钥,而Alice带有她的私钥和Bob的公钥(对应于他想要的硬币)混合).

因此,现在Bob有了Alice的UTXO和她的公共密钥,以及一个共享的秘密(因为他是使用Alice的公共密钥和他的私人密钥生成的).

鲍勃以新颖的方式使用共享的秘密。他用它来数学上“调整”爱丽丝的公钥。这种调整实际上会创建一个新的公共密钥。除了……没有人拥有私钥。然而.

有趣的是,由于有了另一种加密魔术,经过调整的公钥的经过调整的私钥也可以被爱丽丝发现!如果她使用相同的共享密钥调整原始私钥,则调整后的私钥将对应于调整后的公钥。.

换句话说,鲍勃可以为爱丽丝生成一个新的公共密钥,从而为爱丽丝生成一个新的比特币地址,只有她可以从中使用。即使她现在不知道!

因此,鲍勃现在有了爱丽丝的UTXO和她的公共密钥,一个共享密钥,以及一个新的爱丽丝比特币地址(使用她的公共密钥和共享密钥生成).

这几乎足以创建有效的CoinJoin交易。具体来说,鲍勃(Bob)收录了爱丽丝(Alice)的UTXO,并为自己的硬币添加了UTXO,因此有两个输入。然后,他添加了爱丽丝的新地址和自己的地址作为输出(以及费用和其他一些详细信息,例如需要时提供自己的更改地址)。然后他签署了交易.

现在唯一缺少的是爱丽丝的签名.

到达爱丽丝

最后一步-到达爱丽丝-实际上比听起来容易,但需要最后一招.

鲍勃可以简单地将几乎完成的CoinJoin交易发布到某个地方,以供爱丽丝查找。例如,在专用于SNICKER用户的公告板上;最好是在Tor隐藏服务上,或者以其他方式保证为发布者提供匿名.

但是,如果以纯文本格式进行,这仍然不是理想的选择。如果间谍监视公告板,他们可以轻松地查看哪个输入属于提议者(在此例中为Bob),以及哪个输入属于接受者(在此例中为Alice):签名者是提议者。这本身可能是隐私泄漏。但是,如果鲍勃提出更多的提案来混合不同的硬币,那就更糟了。在这种情况下,例如,间谍可能能够将所有不同的UTXO连接到Bob,因为他的那批建议同时发布到了公告板上。.

因此,鲍勃改为用爱丽丝的公钥对CoinJoin交易进行加密!这样,只有爱丽丝才能解密交易,而间谍则无法学到任何东西.

在将加密交易发布到公告板上之后,Bob完成了他需要做的所有事情。如果他愿意的话,他可以在网上消失.

爱丽丝的轮到

由于现在对CoinJoin事务进行了加密,因此确实引入了最后一个轻微的复杂性。虽然Alice知道要在哪里寻找软件包(在SNICKER公告板上),但她不知道要寻找什么:公告板上的所有CoinJoin交易看起来像加密的Blob.

只有一种出路。爱丽丝需要尝试使用她的私钥来解密所有软件包,希望其中一个可以变成有用的东西.

但是当Bob的加密Blob变成CoinJoin交易时,Alice拥有了完成混音所需的一切。她使用她的私钥和Bob的公钥(包含在他的输入中)来生成共享密钥,然后她可以用来创建新的,经过调整的私钥。在检查新密钥与输出中的新接收地址相对应后,她签署了交易并将其广播到比特币网络.

爱丽丝(Alice)和鲍勃(Bob)混合了他们的硬币,即使他们从未互动过,也不需要同时在线.

尽管该过程在文本上听起来可能有些费力,但请记住,所有过程都可以通过软件进行抽象,翻译为笔记本电脑或手机屏幕上的几个按钮,甚至完全自动化.

狙击手第2版

到目前为止说明的SNICKER是该提案的第一个版本。吉布森(Gibson)已经提出了第二个版本,其他变化也在讨论中.

第二个SNICKER版本与此类似,但是避免了地址重用的需要-只是稍微复杂了一点.

在第二个版本中,Bob不会从重用地址获得Alice的公钥。相反,鲍勃从创建爱丽丝的UTXO的同一笔交易的输入中获取公钥。鲍勃(Bob)认为该交易中至少有一个输入是由爱丽丝(Alice)自己创建的,并且她仍然拥有用于这些交易的私钥。.

鲍勃做出这个假设是因为这次,爱丽丝的UTXO甚至被更清楚地标记为可以混合使用,并且只有当爱丽丝控制与输入相对应的私钥时,才可以被如此清晰地标记。 SNICKER BIP没有指定如何进行初始标记,但是建议某些钱包(如JoinMarket钱包)可以正确地透露此类信息。另外,爱丽丝可以在公告板上简单地发布一条消息,宣传她的UTXO.

但更好的是:一旦开始使用SNICKER,查找新的匹配项将变得更加容易。这是因为SNICKER交易本身很难识别,并且现有的SNICKER用户可能希望再次混合其硬币。换句话说,在初始引导阶段之后,未混合的硬币将与先前混合的硬币混合,从而产生更多的混合硬币,进而可以利用杠杆进行更多混合.

挑战与机遇

如上所述,SNICKER BIP仍只是草案,尚有待审核和可能的改进。 (自从Gibson在 博客文章.)该提案现已提交成为BIP,因此可以标准化,并且可以在不同的钱包之间兼容.

SNICKER还面临一些未解决的问题和挑战,尽管这些似乎都不是无法克服的。例如,其中包括应选择哪些UTXO作为匹配项,尤其是如何限制误报的数量。除了重复使用的地址外,还可以例如过滤潜在的匹配项,以获取金额,UTXO的使用期限或使用的特定类型的钱包.

但是,正如本文前面提到的,即使存在多个匹配项(包括误报),这也可能只是一个小问题。要约人(“鲍勃”)可以简单地为其创建候选交易。即使这些提议发生冲突(因为Bob所有人都使用相同的UTXO),这仅意味着第一个做出回应的参与者(第一个“ Alice”)会做出回应-其他潜在的接受者会发现它们为时已晚,但没有害处会完成的。对于误报,也不会造成任何实际伤害,Bob的提议只会放在公告板上,被永久忽略(或直到被删除).

但是,垃圾邮件可能是一个特别重要的问题。由于公告板将托管加密的数据块,因此不可能过滤掉“伪造”建议:攻击者发布的乱码来破坏SNICKER协议。吉布森(Gibson)在他的BIP草案中提出了一些解决此问题的方法,但是这些方法会带来新的权衡,例如发布建议的成本.

另一方面,SNICKER还提供了一些迄今为止为简单起见而遗漏的优点。这样的好处之一是,要约人可以在要约人的产出中增加一些资金,从而增加接受该组合的经济动机。也可以同时与两个以上的用户进行SNICKER混合-尽管这会使技巧更加复杂。.

正是由于该协议是非交互性的,Gibson认为,与其他一些隐私技术(例如JoinMarket)相比,SNICKER在钱包中的实现相对容易。到目前为止,Electrum钱包已经对采用该提案表现出了兴趣-尽管实际实施可能还有很长的路要走.

有关SNICKER的更多信息和背景,请参见 BIP草案, 关注bitcoin-dev邮件列表 讨论 或阅读吉布森(略过时) 博客文章 根据建议.