Threshold内存池的反共谋机制

本文为机器翻译
展示原文

Threshold内存池的反共谋机制

感谢 Luis Bezzenberger 对本文提出的宝贵意见。

简而言之:加密内存池是一种很有前景的方法,可以防止在以太坊等公链中恶意提取最大可提取值 (MEV)。Threshold加密是建立加密内存池的良好选择,但遗憾的是,它关键依赖于Threshold信任假设:假设在一组预先定义的参与方(Threshold委员会)中,至少有一部分参与方是诚实行事的。在本文中,我们将探讨一种建立Threshold加密内存池的方法,即使Threshold委员会中的所有参与方都串通一气,它也能保持安全。

区块链网络中的最大可提取值 (MEV) 描述了某些参与者通过操纵交易执行顺序(通常以牺牲其他用户的利益为代价)所能获取的价值。事实上,据估计,迄今为止,从以太坊用户那里窃取的 MEV 总额在 11 亿至 30 亿美元之间。加密内存池是一种很有前途的方法,它通过加密交易直到其执行顺序固定下来来防止恶意提取 MEV。建立加密内存池的一个良好候选方案是Threshold加密,这是一种公钥加密方案,其中解密密钥由多方委员会共享。也就是说,为Decrypt密密文,需要至少一定Threshold数量的参与方协作。如果参与方数量少于此阈值,则不会泄露有关明文或解密密钥的信息。此原语按如下方式启用加密内存池:

  1. Threshold委员会最初生成一个公钥和相应密钥的份额。

  2. 用户使用Threshold委员会的公钥加密他们的交易。

  3. 一旦加密交易的位置“固定”在区块顶部,委员会就会共同解密密文并揭示交易。

虽然Threshold加密是一种很有前景的方法,但它依赖于Threshold信任假设——即恶意行为的委员会成员人数少于Threshold。如果超过此Threshold,恶意方可能会合谋提前Decrypt交易,从而获取加密交易的内容,进而提取恶意 MEV。本文将探讨一种用于Threshold加密内存池的反合谋机制,该机制可以有效降低Threshold信任假设。我们将以使用ShutterThreshold加密方案的加密内存池为例来说明该机制,并在稍后讨论该机制可以推广到几乎所有Threshold加密内存池。

回顾:关闭加密内存池

Shutter 本质上是Boneh-Franklin 基于身份的加密 (IBE) 方案的Threshold变体。IBE 方案由主公钥/密钥对(mpk, msk) ( m p k , m s k )组成,它允许使用某个身份i i和主公钥mpk m p k加密消息m m 。接下来,我们将 Shutter 加密表示为ct \leftarrow Shutter.Encrypt(mpk, i, m) c t S h u t t e r.E n c r y p t ( m p k , i , m ) 生成的密文ct c t可以通过从主密钥msk m s k和身份i i导出所谓的身份密钥sk_i s k i并使用sk_i s k i进行解密来解密。我们用m \leftarrow Shutter 表示解密。Decrypt(sk_i, ct) m S h u t t e r . D e c r y p t ( s k i , c t ) 。通常在 IBE 方案中,主密钥由受信任的机构维护,但在 Shutter 的情况下,它分发给各方委员会(即所谓的 Keypers),这样任何一方都无法访问完整密钥。也就是说,对于 Shutter 加密的内存池,用户可以发送使用mpk m p k和身份i i加密的交易tx t x 。然后,一旦加密交易的位置固定在区块顶部,Keypers 就会联合派生身份密钥sk_i s k i并Decrypt交易。

固定密文在区块中的位置意味着什么?

只有当区块中密文的位置在解密前固定在顶部时,才能通过Threshold加密有效地防止 MEV。否则,The Block提议者只需等待密文解密,并根据其内容重新排序执行即可。有几种方法可以确保位置固定,例如FOCIL 之类的包含列表或提议者承诺(例如,参见Commit-Boost )。在本文中,我们将重点介绍一种利用提议者承诺的Threshold加密内存池设计——我们最近在这里详细探讨过这个概念)。稍后,我们将讨论如何将此方法推广到解密后强制执行交易顺序的其他方法。

提议者承诺允许区块提议者对其即将提议的The Block中的空间分配做出承诺。此类承诺的一个常见用例是交易预确认,即The Block提议者承诺将某些交易纳入其区块,从而向交易发送者保证,一旦The Block最终确定,他们的交易将确实得到执行。从高层次来看,提议者承诺是经过签名的声明,如果提议者不遵守其承诺,可能会被罚没,从而抑制恶意行为。Commit-Boost 是一项重要的提议者承诺标准化工作,它规定承诺可以是例如基于现有验证者密钥的 BLS 签名。

在加密内存池的语境下,提议者承诺可以扩展至包含加密交易。提议者可以承诺将解密后的密文包含在The Block中,前提是生成的交易有效。该承诺可以是一个已签名的声明:“如果密文ct c t包含有效交易,并且该交易正在被及时解密,我将把ct c t中加密的交易包含在区块k k的顶部”。

使用提议者承诺的 Shutter 加密内存池的流程。
Shutter 使用提议者承诺加密内存池的流程。1435 ×802 122 KB

反共谋机制

高级思路。反合谋机制的核心思想是,在The Block提议者做出有效承诺将解密交易添加到The Block顶部之前,从技术上确保密钥人Decrypt来自加密内存池的密文。这确保了如果密文被解密,则生成的交易将被添加到下一个区块中,否则提议者将被罚没。如果不存在这样的承诺,则密钥人无法Decrypt密文。下文将​​从更技术层面描述这种方法。

技术细节。反合谋机制的核心是基于先前研究(例如1、2 )的观察:BLS 签名可以用作 Boneh-Franklin 加密方案的解密密钥。由于 Shutter 基于 Boneh-Franklin 方案,因此这同样适用于 Shutter。让我们更详细地探讨一下

  • 以太坊中使用的 BLS 和 Shutter 在同一椭圆曲线 BLS12-381 上运行
  • BLS 公钥和私钥对也可以用作 Shutter 的主密钥对
  • Shutter 中的身份密钥具有 BLS 签名的结构,即身份i i的身份密钥为sk_i = H(i)^{msk} s k i = H ( i ) m s k ,且sk_i s k i是在密钥msk m s k下对i i 的有效 BLS 签名

所有这些意味着提议者的 BLS 签名可以用作 Shutter 的解密密钥。

反合谋机制的工作原理如下:令mpk m p k为 Shutter 委员会的主公钥,令pk p k为提议者的 BLS 公钥。然后,用户按如下方式加密其交易tx t x

  1. 和之前一样,用户使用mpk m p k和身份i i加密tx t x ,即用户计算ct_1 \leftarrow Shutter.Encrypt(mpk, i, tx) c t 1 S h u t t e r . E n c r y p t ( m p k , i , t x )
  2. 此外,用户在pk p k和另一个身份j j下对i i进行加密,即用户另外计算ct_2 \leftarrow Shutter.Encrypt(pk, j, i) c t 2 S h u t t e r . E n c r y p t ( p k , j , i )

然后,用户将两个密文(ct_1, ct_2) ( c t 1 , c t 2 )以及身份j j发送到加密的内存池。请注意,如果不知道身份i i ,密钥器就无法Decryptct_1 c t 1 ,因此他们无法获知交易tx t x 。最终,提议者通过在身份j j发送 BLS 签名,即\sigma = H(j)^{sk} σ = H ( j ) s k ,承诺将 tx t x 包含在其区块顶部。此签名本质上是身份 i i 和公钥 pk p k身份私钥即,它可用于通过计算 i \leftarrow Shutter 来Decrypt身份i i 。Decrypt( \ sigma , ct_2 ) i S h u t t e r 解密( σ , c t 2 ) 既然身份i i已知,密钥提供者 (Keypers) 便可以Decrypt交易tx t x,方法是先推导身份密钥sk_i s k i ,然后计算tx \leftarrow Shutter。Decrypt( sk_i , ct_1 ) t x S h u t t e r 解密( s k i , c t 1 )

使用提议者承诺和反勾结机制的 Shutter 加密内存池的流程。
Shutter 使用提议者承诺和反合谋机制加密内存池的流程。1513 ×819 143 KB

只要提议者和密钥持有者不串通,密钥持有者在提议者承诺打包交易之前Decryptt x技术上来说是不可能的。需要注意的是,在提议者发送承诺之后解密交易t x不会造成任何损害,因为该交易已经承诺打包到The Block顶部。

该方法的讨论和局限性

防止密钥生成者与提议者之间的共谋。建议的机制通过确保只有当前区块提议者承诺在下一个区块顶部包含解密密文后才能解密,从而减轻了Threshold委员会内部共谋的有害影响。然而,如上所述,这种方法并未解决密钥生成者与The Block提议者之间潜在的共谋问题。为了有效地抑制此类共谋,有必要对密钥生成者委员会和提议者在出现不当行为时施加经济惩罚。

加密给多个提议者。另一个限制是,在当前方案下,用户总是将其交易加密给特定的提议者。如果该提议者不承诺该交易,交易将不会被纳入,这实际上迫使用户重新发送交易。一个明显的应对措施是允许用户加密给多个提议者,以增加其中一个提议者真正承诺纳入交易的可能性。然而,这有两个缺点:(1) 它会随着提议者数量的增加而线性增加密文大小;(2) 涉及的提议者越多,其中一个提议者与密钥者串通的可能性就越大。第一个缺点可以通过使用多接收者加密方案来解决。另一方面,第二个缺点似乎更像是安全性和便利性之间的权衡:用户选择的提议者越多,其中一个提议者与密钥者串通的风险就越大,但用户重新发送交易的可能性就越小。

确保密钥持有者发布解密密钥。如果我们假设所有密钥持有者都心怀恶意并相互勾结,他们就有可能拒绝发布解密密钥,从而导致系统瘫痪。避免这种情况的一个解决方案是让密钥持有者质押一些资金,并设立一个见证委员会来证明密钥持有者是否为有效的提议者承诺发布了解密密钥。如果密钥持有者不发布密钥,他们的质押金额将面临被削减的风险。

如果用户可以直接向提议者加密,为什么还需要密钥人?有人可能会想,如果提议者承诺允许用户直接向提议者加密交易,那我们为什么还需要密钥人委员会呢?原因是,如果没有委员会,恶意提议者可以直接在本地Decrypt交易,而无需公开承诺将其包含在内,从而再次为 MEV 攻击打开大门。只有当需要解密交易的另一个独立方(在我们的情况下是委员会)时,我们才能强制提议者公开其承诺,从而确保提议者承担责任。

加密交易在The Block顶部的排序。在本文中,我们假设当提议者提交一笔加密交易时,相应的解密交易必须出现在The Block顶部。但是,如果提议者提交了多笔交易,会发生什么情况?在这种情况下,这些交易就没有明确的排序。
一个简单的解决方案是,提议者在每次承诺时添加一个递增的计数器。然后可以根据该计数器对交易进行排序,密钥生成器只会按照该顺序Decrypt。
我们注意到,当使用包含列表而不是提议者承诺时,不会出现这个排序问题,因为包含列表可以明确定义The Block中加密交易的排序。

推广该方法

我们的方法可以通过两种方式进行推广,即加密的内存池和固定密文位置的机制。

加密内存池的泛化。为简单起见,我们描述了针对 Shutter 加密内存池的反合谋机制。然而,其核心思想与 Shutter 无关。主要观点是,以 BLS 签名形式呈现的提议者承诺可以作为 Boneh-Franklin IBE 方案中的解密密钥。这可以与任何使用提议者承诺的(Threshold)加密内存池结合使用。考虑以下更通用的设计:令pk_C p k C为操作(Threshold)加密内存池的委员会的公钥,令pk_P p k P为提议者公钥。然后,用户可以先将其交易加密到加密内存池(即在pk_C p k C下),然后通过 Boneh-Franklin IBE 方案在pk_P p k P下将生成的密文加密发送给提议者。这本质上创建了一个双重加密的交易,该交易必须先由提议者(通过承诺)解密,然后Threshold委员会才能Decrypt该交易。

概括“修复”机制。我们描述了加密内存池的反合谋机制,该机制使用提议者承诺来修复区块中密文的位置。然而,在更抽象的层面上,该机制与修复位置的具体方式无关,只要修复是以可用作解密密钥的 BLS 签名的形式进行的。例如,对于 FOCIL,可以使用允许Decrypt包含列表中所有交易的 BLS 签名进行签名。然而,将 FOCIL 这样的机制与我们的反合谋解决方案精确集成仍然是未来工作的一项有趣任务。

结论

本文描述的解决方案提出了一种实用高效的反合谋机制,适用于Threshold加密内存池,甚至可以推广到任何类型的加密内存池。通过将解密与提议者承诺(甚至可能与包含列表)绑定,该机制显著降低了对加密内存池提供者的信任,而无需任何大量的通信或计算开销。


来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
2
收藏
评论