對安全保持敬畏之心,開放與協作推進行業安全

作者:Safeheron team

封面:Photo by Markus Spiske on Unsplash

背景

Trail of Bits 近期披露了 MPC 門限簽名協定的一個漏洞,可用於攻擊 MPC 門限簽名方案中的 DKG(Distributed Key Generation)協定。  利用該漏洞可惡意提升私鑰分片的門限,導致意料之外的分片結果; 在極端情況下,甚至可能導致私鑰無法重建。

Trail of Bits 在 2024 年 1 月 3 日通過電子郵件向 Safeheron 披露了一個安全漏洞。 Safeheron 經過分析研究,於 2024 年 1 月 4 日修補了該漏洞,同時公開了修復補丁(詳見本文的「漏洞修復」部分)。 在獲得 Trail of Bits 的許可後,Safeheron 也立即通知了安全合作夥伴和業內其他廠商關於此漏洞的資訊。

Safeheron 的 SaaS 產品已確認不受此漏洞的影響。

DKG(Distributed Key Generation)協定

在安全多方計算的場景中,不存在可信的第三方 Dealer,秘密是由多方共同生成的。 任何時候,任何地點,都不曾有完整的秘密出現。 為了實現這個目標,1991 年提出了 [5] 一種分散式的私鑰生成協定(DKG,Distributed Key Generation),該協定基於 Shamir 的門限分享方案 [1] [2] [3] [4] 進行了擴展。 協議實現了如下目的:

典型的 MPC 多簽協定,如 GG18[6]、GG20[7]、基於門限方案的 CMP[8]、Frost[10]、DMZ21[9] 等,都定義了分散式的私鑰生成子協定,即 DKG(Distributed Key Generation)協定,其分片生成的原理都類似,我們介紹一下核心思想。

注意:對於典型的 MPC 多簽協定,MPC 多簽門限和私鑰重建的門限是一樣的,這裡為了敘述簡便,僅提到了私鑰重建。 一般來說,只要能重建私鑰,就可以完成 MPC 多簽; 如果不能重建私鑰,就不能完成 MPC 多簽。 最後再強調一下,MPC 多簽時並不會重建私鑰,也不會洩漏彼此私鑰分片的任何資訊。

漏洞攻擊原理

在 DKG 協定的具體實現中,如果在驗證 VSSS(Verifiable Secret Sharing Scheme)的 Commitment 時,只驗證了分片的正確性,但是沒有驗證隨機多項式的度數,那麼就可以採用如下方式攻擊:

漏洞攻擊影響

具体影响分析如下

  • 如果 DKG 協定中沒有額外驗證,那麼 DKG 協定會正常結束,但是最終生成的分片將永遠無法重建私鑰,或者簽名,這種情況會直接造成資損。 補充一下,我們注意到有些開源演算法庫缺乏驗證,會導致這種嚴重的後果。

漏洞修復

為了修復漏洞,需要檢查 Feldman VSSS 演算法中的 Commitment 的長度,確保其和門限保持一致。 具體的:

本質上是通過約束隨機多項式的度數來鎖定分片的門限。

具體修復參考

  • https://github.com/Safeheron/safeheron-crypto-suites-cpp/commit/5531ce457a6de958cd0a5281d0db233188feb6d6
  • https://github.com/Safeheron/multi-party-sig-cpp/commit/71da5cd3b7bb91f1abcfe5dc251d788bdacdef89

實現值得信賴的安全需要持之以恆的嚴謹打磨,「不積跬步無以至千里」,保持敬畏,腳踏實地,讓安全真正有效服務於行業。

Trail of Bits 團隊的負責任安全披露展現了安全行業的開放與協作,Safeheron 也在不斷與更多安全夥伴積極對話,能參與到此漏洞的修復與披露中我們也倍感欣慰。 打造安全的行業環境,與廠商、安全從業人員、用戶的對話必不可少,多方的共同關注與努力方能實現安全賦能行業。

參考文獻

[1] Secret Sharing

https://en.wikipedia.org/wiki/Secret_sharing#Efficient_secret_sharing

[2] Verifiable secret sharing

https://en.wikipedia.org/wiki/Verifiable_secret_sharing

[3] How to share a secret

https://web.mit.edu/6.857/OldStuff/Fall03/ref/Shamir-HowToShareASecret.pdf

[4] A Practical Scheme for Non-interactive Verifiable Secret Sharing

https://www.cs.umd.edu/~gasarch/TOPICS/secretsharing/feldmanVSS.pdf

[5] Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing

https://link.springer.com/content/pdf/10.1007/3-540-46766-1_9.pdf

[6] GG18: Fast Multiparty Threshold ECDSA with Fast Trustless Setup

https://eprint.iacr.org/2019/114.pdf

[7] GG20: One Round Threshold ECDSA with Identifiable Abort

https://eprint.iacr.org/2020/540.pdf

[8] CMP: UC Non-Interactive, Proactive, Threshold ECDSA with Identifiable Aborts

https://eprint.iacr.org/2021/060.pdf

[9] DMZ21: Promise Sigma-protocol: How to Construct Efficient Threshold ECDSA from Encryptions Based on Class Groups

https://eprint.iacr.org/2022/297.pdf

[10] FROST: Flexible Round-Optimized Schnorr Threshold Signatures

https://eprint.iacr.org/2020/852.pdf

[11] Breaking the shared key in threshold signature schemes

https://blog.trailofbits.com/2024/02/20/breaking-the-shared-key-in-threshold-signature-schemes/embed/#?secret=SmzbBQehZ7#?secret=WfJWum3O5v

免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。