对安全保持敬畏之心,开放与协作推进行业安全

作者: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

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。