TumbleBit 使用链下解谜来替代链上支付,可扩展比特币的交易量和交易速度。

原文标题:《硬核 | 一起了解比特币混币方案:TumbleBit》

 撰文:马宇峰

TumbleBit 是 17 年发表在 NDSS 的文章, 是一个兼容比特币的中心化混币协议,是解决比特币交易可链接问题的协议,TumbleBit 可以扩展区块链的交易量,也可以 扩展区块链的交易速度。在本篇文章中,热爱研究的 Nervos 小伙伴马宇峰详细分析了 TumbleBit 的总体框架结构,它的解谜协议和谜题协议,并且介绍了针对 TumbleBit 不可关联性的一些攻击。快来 Get 新技能吧。

总体框架结构

由于 TumbleBit 需要兼容比特币这种仅支持非图灵完备语言的区块链,它的链上部分需要的密码学原语很少也很简单。此外虽然是中心化的协议,但即使是恶意的 Tumbler 也不能偷币,并且在不和参与用户共谋的情况下也不能找到交易输入和输出的链接关系。和 coinjoin、coinshuffle 这种区中心的混币协议相比,TumbleBit 的优点在于不需要交易方与其他用户交互,交互只发生在交易双方和 Tumbler 之间。

TumbleBit 可以将发给一方的许多交易聚合为两笔链上交易,并且这些交易不需在区块链上存储或验证,因此可以 扩展区块链的交易量 ,并且 TumlbeBit 的链下交易可以在秒级时间内完成,因此也可以 扩展区块链的交易速度

TumbeBIt 的主要思想很简单: 它使用链下解谜来替代链上支付 。当 Alice 想要给 Bob 支付一笔钱时,Alice 给 Bob 一个谜题的解,这个谜题是 Bob 和 Tumbler 交互产生的,这个谜题的解是 Alice 和 Tumbler 交互产生的。每解一个谜,Alice 转给 Tumbler 一个比特币,Tumbler 再转给 Bob 一个比特币。

硬核 | 一起了解比特币混币方案:TumbleBit

图 1. TumbleBit 协议概览

TumbleBit 协议构造如上图所示。TumbleBit 协议以 epoch 为周期运行,需要注意的是所有参与 TumbleBit 协议的人都知道每个 epoch 周期内各个阶段的时间。每个 epoch 分为三个阶段:

硬核 | 一起了解比特币混币方案:TumbleBit

最后是 Cash-out 阶段,这个是链上进行的提现阶段。 Alice 拿回剩余的 2 个比特币,支付 Tumbler 一个比特币,Tumbler 拿回剩余的 2 个比特币,支付 Bob 一个比特币。

解谜协议

关于 TumbleBit 的总体框架结构介绍完了,下面介绍一下刚才提到的两个重要的协议,一个是 Alice 和 Tumbler 之间运行的 解谜协议:RSA-puzzle-solving 协议 ,一个是 Bob 和 Tumbler 间运行的获得 谜题协议:Puzzle-Promise 协议

本文会重点介绍一下 RSA-puzzle-solving 协议,这是一个公平交换协议。当且仅当 Tumbler 给 Alice 一个 RSA puzzle 的解时,Alice 支付给 Tumbler 一个比特币,这个协议除了可集成在 TumbleBit 协议上以外,也可以在其他场景中作为公平交换协议独立运行。

硬核 | 一起了解比特币混币方案:TumbleBit

这个协议面临一个挑战,就是 不使用零知识证明的条件下找到一种办法能够让 Alice 验证密文 是对正确值的加密 。cut-and-choose 可以解决这个问题,cut-and-choose 的思想类似于抽查,即 Alice 选择一些假谜题让 Tumbler 解密,如果 Tumbler 解密正确,那么 Alice 就相信 Tumbler 是诚实的。

硬核 | 一起了解比特币混币方案:TumbleBit

图 2. RSA-puzzle-solving 协议

硬核 | 一起了解比特币混币方案:TumbleBit

接下来 Alice 对混合真假 puzzle 的集合进行随机排序,得到一个新的集合,并记下真 puzzle 和假 puzzle 所对应的下标,然后将这个新集合发送给 Tumbler;

Tumbler 对新集合的每个元素都解密,然后将得到的明文用不同的对称密钥加密得到新密文,之后将所有的新密文以及新密文所对应的密钥的哈希发送给 Alice;

硬核 | 一起了解比特币混币方案:TumbleBit

最后 Alice 通过真 puzzle 密钥来解谜。

硬核 | 一起了解比特币混币方案:TumbleBit

解决方法是:

硬核 | 一起了解比特币混币方案:TumbleBit

谜题协议

接下来讲一下 puzzle-promise 协议,这个协议是在 escrow 阶段运行在收款人 Bob 和 Tumbler 之间的链下协议,目标是让 Bob 获得一个 promise-puzzle 对 (c,z)。

这个协议的挑战是如果 Tumbler 仅仅发送一个 (c,z) 给 Bob,那么 Bob 就不知道 c 是否是正确签名的加密,也不知道 z 是否隐藏了正确密钥。

我们仍然可以通过 cut-and-choose 来应对这个挑战。但是和 RSA-puzzle-solving 协议不同的是 Bob 会得到许多 puzzle-promsie 对,而 cut-and-choose 保证的是至少有一对是正确的(保证全部正确的概率低于至少一对是正确的概率),而 Bob 一次只能问 Alice 一个谜题,TumbleBit 通过 RSA 商链的技术来解决这个问题,通过使用 RSA 商链技术可以保证 Bob 拿到一个谜题的解后能得到所有的谜题的解。

硬核 | 一起了解比特币混币方案:TumbleBit

图 3. Puzzle-promise 协议

篇幅所限,下面我们简单地介绍一下 cut-and-chosse

硬核 | 一起了解比特币混币方案:TumbleBit

不可关联性

到这里完整的 TumbleBit 协议部分就介绍完了,接下来看一下 TumbleBit 的不可关联性。我们先看一下 Tumbler 的视角如下图所示,Tumbler 看不到交易间的关联性 ,但是能看到付款人在哪个时间和自己交互的,因此结合一些额外信息,可以对交易间的关联性进行分析。我们下面介绍一些针对 Unlinkable 的攻击,这些攻击中有些是能避免的,有些是没有很好的方法避免的。

硬核 | 一起了解比特币混币方案:TumbleBit

图 4. Tumbler 视角

天花板攻击

Alice 和 Tumbler 共谋可以制造 ceiling attack,ceiling attack 被称为 天花板攻击 。它假设在某时刻比如,Alice 向 Bob 支付一个比特币,但是 Bob 已经达到的接收上限,因此拒绝了 Alice 的付款请求。Alice 把这个消息告诉 Tumbler,Tumbler 可以排除 时刻后的交易是发给 Bob 的可能。如果 Alice 不与 Tumbler 共谋的话 Tumbler 是不知道 Bob 啥时候达到接受上限的。

这种攻击是有好几种解决办法的,比如:Bob 在 escrow 阶段让自己的接收上限远高于这个预期内能接收的钱;或者可以错开 TumbleBit epoch 的时间,同时运行几个 TumbleBit epoch,Bob 一个 epoch 内的额度用完的话,就用下一个 epoch 的额度。

Bob 和 Tumbler 共谋

Bob 和 Tumbler 共谋:Bob 告诉 Tumbler 自己发给 Alice 盲化 puzzle, 这样 Tumbler 可以知道 Alice 的身份(尤其适用于 Alice 和 Bob 不知道对方身份的场景,比如使用 tor 协议)。解决方法很简单,Alice 对 Bob 发给自己的盲化 puzzle 做二次盲化后再和 Tumbler 运行 RSA-Puzzle-solving 协议,然后将解去盲发给 Bob 即可。

Potato 攻击

Potato 攻击是指考虑外界信息,假设 Bob 是卖土豆的,一个土豆 7 比特币,且 Tumbler 知道没有其他人卖 7 比特币的东西,那么 Tumbler 就可以排除一些交易(比如 Calor 总共只有 6 笔交易,则她被排除,而 Alice 在短期内刚好有 7 笔交易,那么可以推测 Alice 在买土豆)。解决方法有添加冗余交易,Alice 建立一个收款地址,买土豆的同时给自己的地址转一笔钱,或者买土豆的同时再买些其他东西。

Intersection attacks

Intersection attacks:unlinkability 仅仅定义在一个周期内,并不能排除周期之间的一些关联。下面要讲的中止攻击就属于这种攻击。

中止攻击

Abort attacks 中止攻击:Tumbler 可以通过中止交易获得一些信息。比如 Tumbler 注意到在几个周期里:Alice 一直在发起单笔交易而 Bob 一直达到额度上限,然后在下一个周期里,Tumbler 中止 Alice 的支付并发现 Bob 不再达到额度上限,那么 Tumbler 能猜测 Alice 在和 Bob 交易。

小结

虽然存在种种限制,但是如果交易足够多,那么交易的不可连接性还是可以保证的。

笔者认为 TumbleBit 的缺点主要是两个,第一是系统中所有用户都使用同一「面额」的钱,怎样定义面额就些困难。如果面额定义的很小,大额支付需要很多线下交互,不过可以通过在系统内多运行几个 Tumbler,每个 Tumbler 提供不同的面额来解决;第二是需要 Tumbler 事先抵押钱。这个可以通过收取手续费来解决,接收方按照要求 Tumbler 抵押的额度来付手续费。

如果不考虑金额的隐私性, TumbleBit 是一个非常优秀的混币方案。

来源链接:eprint.iacr.org

文章来自:https://www.bitpush.news/archives/1082517?from=listen

更新日期: 2020-12-05 01:10:06
文章标签: ,,,,,
文章链接: 硬核 | 深入分析比特币混币方案 TumbleBit 架构、谜题与解谜协议  [复制链接]
站方声明: 除特别标注, 本站所有文章均为原创, 互联分享, 尊重版权, 转载请注明.