Threshold內存池的反共謀機制
感謝 Luis Bezzenberger 對本文提出的寶貴意見。
簡而言之:加密內存池是一種很有前景的方法,可以防止在以太坊等公鏈中惡意提取最大可提取值 (MEV)。Threshold加密是建立加密內存池的良好選擇,但遺憾的是,它關鍵依賴於Threshold信任假設:假設在一組預先定義的參與方(Threshold委員會)中,至少有一部分參與方是誠實行事的。在本文中,我們將探討一種建立Threshold加密內存池的方法,即使Threshold委員會中的所有參與方都串通一氣,它也能保持安全。
區塊鏈網絡中的最大可提取值 (MEV) 描述了某些參與者通過操縱交易執行順序(通常以犧牲其他用戶的利益為代價)所能獲取的價值。事實上,據估計,迄今為止,從以太坊用戶那裡竊取的 MEV 總額在 11 億至 30 億美元之間。加密內存池是一種很有前途的方法,它通過加密交易直到其執行順序固定下來來防止惡意提取 MEV。建立加密內存池的一個良好候選方案是Threshold加密,這是一種公鑰加密方案,其中解密密鑰由多方委員會共享。也就是說,為Decrypt密密文,需要至少一定Threshold數量的參與方協作。如果參與方數量少於此閾值,則不會洩露有關明文或解密密鑰的信息。此原語按如下方式啟用加密內存池:
Threshold委員會最初生成一個公鑰和相應密鑰的份額。
用戶使用Threshold委員會的公鑰加密他們的交易。
一旦加密交易的位置“固定”在區塊頂部,委員會就會共同解密密文並揭示交易。
雖然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的頂部”。
反共謀機制
高級思路。反合謀機制的核心思想是,在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 :
- 和之前一樣,用戶使用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 )
- 此外,用戶在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 ) 。
只要提議者和密鑰持有者不串通,密鑰持有者在提議者承諾打包交易之前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加密內存池,甚至可以推廣到任何類型的加密內存池。通過將解密與提議者承諾(甚至可能與包含列表)綁定,該機制顯著降低了對加密內存池提供者的信任,而無需任何大量的通信或計算開銷。






