分片是 MultiSig 的好選擇嗎?
出於安全目的,我們要求每次提款都必須經過多台伺服器的“批准”,這樣如果一台伺服器遭到入侵,攻擊者將無法從整個錢包中竊取資金。執行這個概念的典型方法是一個
MultiSig
地址,其中一個交易只有在多個實體簽署後才被批准。但是,2/3
MultiSig
交易的費用幾乎是正常交易費用的兩倍。如果我們想要 3/4(或更高)的 MultiSig,費用會更高。這讓我想到了一種方法來利用 MultiSig 交易提供的安全優勢,而不會在此過程中過度消耗費用。想到的直接解決方案是分片。簡而言之,我們可以使用Shamir 的秘密共享方案和無限方案(例如 4-of-7 或 3-of-4 等)安全地分解 PK,而不是使用 MultiSig,並將分片儲存在單獨的伺服器上,從而需要多個伺服器“簽署”提款請求。
與分片相比,MultiSig 是否提供任何(安全)優勢?分片是 MultiSig 的可行替代方案嗎?
更新:
也許這個提議的唯一問題是每個伺服器不能使用它的“分片”獨立地“授權”交易。在某些時候,需要知道所有分片才能“重新組裝”PK,以便攻擊者仍然可以將其用作“最薄弱環節”來竊取 PK?它是否正確?
謝謝
k -of- n的
OP_CHECKMULTISIG
優於 Shamir 秘密共享的優點:
- 無需在一台特定機器上重建實際的密鑰。使用 SSS,您本質上依賴於一台機器能夠驗證它將簽署的內容是否符合預期 - 否則您可能會發送您的全部餘額,而不僅僅是您想要支付的款項。此外,如果該密鑰或(在使用 BIP32 公開派生的情況下)任何相關密鑰曾經被重複使用,那麼被入侵的機器實際上會暴露你的整個錢包,包括未來的資金。鑑於最終目標是減少對單個設備安全性的依賴,這並不理想。
- 問責制:使用基於 SSS 的簽名,鏈上簽名無法告訴您哪些簽名者實際簽署了支出協議,但
OP_CHECKMULTISIG
可以。如果您希望能夠追踪流氓簽名者。SSS 的優勢
OP_CHECKMULTISIG
:
- 更便宜的鏈上。
- 更好的策略隱私(你不會在鏈上透露你實際上正在使用多重簽名策略)。
現在,隨著 BIP 341 - 342 (Taproot) 即將啟動,其中包括對 BIP 340 Schnorr 簽名的支持,將會有更多選擇(聲明:我是這些提案的合著者):
本機門檻值簽名:使用 Schnorr 簽名,可以執行與在公鑰上執行 SSS和在簽名時執行SSS 等效的操作,並最終得到組合公鑰的有效組合簽名。這為您提供了兩者的一些優點,以及一些額外的缺點:
不過,這不是唯一的選擇。BIP 342中列出了更多替代方案,注 5 。在某種程度上,SSS 和 SSS
OP_CHECKMULTISIG
是頻譜的兩個極端。例如,您可以建構一個包含樹的 Merkle 根的輸出,其中每個葉子都是一個k -of- k聚合鍵。它可以通過顯示 Merkle 分支和聚合簽名來使用。這通常比OP_CHECKMULTISIG
發布所有密鑰和簽名的類似結構便宜,但不如類似 SSS 的方法給你的那麼好。另一方面,它也更簡單。