半可信混合技术:BCH混币工具CashShuffle引入STAT
作者:互联网
4月23日,Electron Cash钱包开发人员fyookball在github.com上面分享了一项新的技术方案——STAT(Semi-Trusted Amalgamation Technique,半可信混合技术),据fyookball介绍,该方案是对CashShuffle隐私保护技术的补充,其目的是为了让打乱顺序的用户告诉服务器哪些输入是他们的。
以下为全文翻译:
介绍
混币工具就像设计的那样,每天都会处理几百笔比特币现金交易,然而,用户仍然需要整合他们的加密货币(例如你有两个数额均为1BCH的混币交易,但你想购买大于1BCH的东西)。
整合输入(甚至是混乱的输入)是一个问题,因为它泄露了信息——即输入和输出之间的联系。
当只使用一个输入时,交易的输入方会通过混币工具被混淆,所以会提供好几个可能的来源,但是,随着每一个额外的输入被组合起来,累积的线索会暴露出交易的真实信息。
问题
下面是整合具有挑战性的原因:
通常在混币中,每个用户只有一个输入,如果他们没有在输入上签名,那么每个人都知道混币失败的责任在谁。这至少提供了基本级别的DOS保护。
但如果每个人有多项输入,则不清楚应该由谁负责。事实上,发现有罪方(未能签署最终交易)与向其他所有混币用户以及服务器隐藏输入链接的目标是不一致的。
在当前的CashShuffle指责机制中,有一个IP地址组件不能用于这个原因。指责仍然可以根据每个输入进行,但如果没有IP组件,则DOS保护相当薄弱。
替代方法
除了提出主要观点外,我们还可以与其它一些处理这种情况的潜在方法进行比较。
1. 在混币消息中使用多个输入
用户可以简单地选择不关心同一洗牌中的其他玩家是否知道他们的输入链接。
这是一个明显的缺点,但是如果接受了这个限制,那么解决方案就很简单:让每个人都向所有人声明他们全部的输入。如果这些输入没有被签署,每个人都知道该怪谁。
2. ZKP
我们可以想象一些使用零知识证明的“密码魔术”解决方案。如果我们能证明Alice在所有输入上签名而不告诉任何人输入是什么,这将是最好的解。
这或许是不可能的,但如果可以的话,则需要高级的密码学知识。
3. 组合
我们也可以想象一个“穷人的ZKP”,在这里用户签署了对一定价值范围的承诺。例如,如果Alice的实际输入总数为1.00343455,那么她可以签署一个承诺,表示在所有用户的输入总数1.0034到1.0035之间有一个子集的输入。
我们的想法是使这一范围不至于宽到禁止使用,但也不至于窄到需要创造一套独特的输入,这里权衡的标准有些混乱,因为即不能总是责怪某人,也不能保证隐私。
4. 通过多次洗牌进行自我整合
解决整个问题有一个“取巧”的方法,就是让用户自己进行合并,通过使用多次洗牌和限制可合并的货币数量来降低合并的危险性。钱包菜单中的一个特殊工具可以做到这一点,也许还可以使用隐私滑块。更多的隐私意味着更少的货币可以同时被整合,而这些货币也需要进行多重洗牌。
这个很容易构造,但目前还不清楚整个方法在实践中对用户是否友好,也不清楚它真正解决了多少隐私泄露(没有更详细的分析)。这需要把所有东西都进行链上分析。
STAT协议
“半可信”(Semi-Trusted)指将用户输入链接的隐私委托给服务器(可选地)。
这个解决方案的基本思想是让打乱顺序的用户告诉服务器哪些输入是他们的。如果不是所有的输入都签名了,那么服务器就知道应该责怪谁。与自我整合策略相比,此解决方案的优点是没有向区块链发布任何额外的信息。
我们可以使用多轮流程,第一轮不向服务器显示关键信息,并假设所有用户都是诚实的用户。一直使用这个假设自然会导致DOS,但在这里,我们可以全部解决。我们首先尝试简单的构建交易,不泄漏任何信息。如果失败,下一轮将依赖服务器作为促进者。
钱包可以自由配置,这样用户就可以选择是否参与“辅助”洗牌(是否希望与服务器共享信息)。请注意,服务器唯一可信的信息是输入之间的链接,而不是到输出的链接。
请注意,这种类型的整合洗牌将与标准洗牌(v300)完全分离(而且不会取代)。
该协议遵循以下步骤:
1. 用户加入混币池并选择标准大小的输出(例如1 BCH)。他们可以使用coinshuffle分层加密,尽管这是一个不同的环境。在本例中,加密是为了向服务器隐藏输出的所有权。
2. 用户隐秘的宣布他们的输入(这至少需要总产出加上费用),见下文对此的进一步讨论。
3. 所有用户都签署了交易。
4. 如果所有用户都签了名,我们就结束了。如果没有,继续下一步。
5. 重新尝试整个洗牌:愿意与服务器共享输入的用户重新加入。
6. 每个用户与服务器共享他们打算使用的输入。
7. 所有用户都签署了交易。
8. 如果所有用户都签了名,我们就结束了。如果没有,继续下一步。
9. 如果所有输入都没有为任何给定的用户签名,服务器将通过他的IP地址禁止该播放器。
10. 如果一个用户被禁止,那么还有几种方法可以继续执行:要么用当前玩家减去违规玩家(coinshuffle++风格)重复该过程,要么使用另一个新进程(可信或不可信)。
隐秘的公告
一个重要的问题是参与者将如何秘密地向服务器声明他们的输入?在第二个循环中(信任具有输入链接的服务器),则通知不会是隐蔽的;分层加密很好地混淆了输出。
在第一个循环中(无信任),参与者需要向服务器隐藏他们的IP地址。这可以通过TOR来实现,每个输入都有一个单独的TOR路由。建议使用时间延迟(取决于已经切换TOR路由的延迟),这样服务器就不能根据时间推断出输入链接。
还可以构建一个独立的“内部TOR”系统,其中参与者使用DH密钥交换来安全地交换UTXO(未花费的交易输出)以进行广播,并结合来自服务器的公钥加密;在这个方案中,服务器不知道输入是否属于某个用户,而用户也不知道正在交换哪个UXTO。
市场营销
“半可信”这个名字听起来不是最好的名字,所以建议你用“它”来代替。但是,在市场营销方面,尽量保守,少一些争议,或许会更好。营销的三个要点如下:
- 信任是可选的。一些用户将选择完全不共享链接。
- 惟一需要的信任是将输入链接(而不是输出)委托给服务器
- 这比人们对ElectronX服务器的信任程度要低得多(服务器可以看到你的整个钱包)
完
以上就是fyookball对于STAT协议的分享,非常感谢该开发商如此热衷于BCH加密交易的研发。相信随着这项混币工具的逐渐成熟,BCH的持有者们可以更加方便、快捷的使用这项服务来满足自己的交易需求。
标签:STAT,BCH,混币,洗牌,用户,服务器,链接,输入 来源: https://blog.csdn.net/qq_30634311/article/details/97238412