GG18/GG20 协议安全漏洞分析

fffmCQ.jpg

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

作者:Safeheron team

封面:Photo by Nicolas Arnold on Unsplash

背景

近期,Fireblocks 团队披露了 GG18、GG20 、Lindel 17 MPC 协议中的 0-day 漏洞,该漏洞允许攻击者提取一组 MPC 私钥分片背后的真实密钥。

在披露该问题前,Fireblocks 团队与 Safeheron 取得联系并展开积极沟通。Safeheron 开源的 GG18/GG20 MPC 协议严格按照论文内容实现,如果使用此版本的开源算法则可能受到类似攻击。在漏洞披露前,Safeheron 已经修复了开源项目中存在的漏洞,Fireblocks 团队也协助确认了补丁的生效。

Fireblocks 团队采用 Safeheron 的基于 C++ 实现的开源 GG18/GG20 协议构造了 POC, 以演示并帮助社区理解该漏洞。

Safeheron 商业版服务中的 GG18/GG20 MPC 协议额外引入了 CMP20/CGGMP21 中的相关零知识证明,因此不受该漏洞影响。

漏洞影响范围

本文重点关注漏洞针对 GG18 和 GG20 的影响。针对 GG18/GG20 协议,攻击方通过构造特殊的 Paillier 密钥,从而在 MPC 签名阶段完成攻击,通过有限次的签名,攻击方可以解析出其它各参与方的私钥分片。

此次漏洞的影响范围比较广泛,由于影响到了 MPC 协议的安全假设,因此几乎所有主流的开源 GG18/GG20 协议实现都受到该漏洞的影响。

漏洞原理

如何攻击 MPC 协议呢?常见的 MPC 协议在安全假设前提下是可证明安全的,因此针对 MPC 协议的攻击常常聚焦于协议依赖的安全假设。安全假设就好比是 MPC 协议大厦的地基,如果安全假设不成立了,那么整个 MPC 的协议都将会受到影响。

以 GG18/GG20 为例,该 MPC 协议依赖于 Paillier 同态加密算法的安全性。Paillier 同态加密算法基于复合剩余类的困难问题设计,是一种广泛使用的且满足加法运算的同态加密算法。

GG18/GG20 协议安全漏洞分析

 整个攻击的核心逻辑如下:

GG18/GG20 协议安全漏洞分析

攻击方法

本节我们详细介绍攻击的细节。在通用的 MPC 门限多签场景中存在多个参与方,这些参与方两两之间可以发起攻击,而且攻击方式完全相同。

GG18/GG20 协议安全漏洞分析

准备阶段:构造不安全的同态密钥

首次攻击发生在 KeyGen 子协议的执行过程中,我们可以称其为攻击准备阶段。在攻击准备阶段,攻击方 Party A 成功构造了不安全的 Paillier 同态密钥。

正常构造同态密钥的过程如下:

GG18/GG20 协议安全漏洞分析
GG18/GG20 协议安全漏洞分析

攻击阶段:Sign 子协议

GG18/GG20 协议安全漏洞分析

接下来介绍其具体操作方式。

GG18/GG20 协议安全漏洞分析

GG18/GG20 协议中的零知识证协议描述如下:

GG18/GG20 协议安全漏洞分析
GG18/GG20 协议安全漏洞分析
GG18/GG20 协议安全漏洞分析
GG18/GG20 协议安全漏洞分析
GG18/GG20 协议安全漏洞分析

收尾阶段:计算被攻击方的私钥分片

在运行 16 次成功的 MPC Sign 子协议以后,得到

GG18/GG20 协议安全漏洞分析

攻击效果

GG18 论文有两个实现版本,修正版和老版,针对不同版本的攻击效果有所区别。

GG18/GG20 协议安全漏洞分析

在 GG18 修正版论文中作者提供了很多安全修改建议,因此在实现该 MPC 协议时应基于修正版实现。

真实应用场景攻击方式

上述章节描述了该漏洞的原理和算法层面的攻击方式,那么针对真实的基于 MPC 的自托管钱包应用场景,如果使用的 MPC 协议存在该漏洞,应该如何完成攻击呢?

该漏洞影响 t/n 门限,为方便理解,我们假设 MPC Wallet 的参与方为 2 方 Party A 和 Party B,签名的门限为 2/2,其中 Party A 对应的私钥分片由用户持有,通过钱包提供方提供的手机 App 管理和使用;Party B 对应的私钥分片由钱包提供方持有,并且在云端存储和使用。

如果要完成攻击,攻击者必须具备以下能力:

(1)掌握钱包提供方创建钱包和发起交易的实现逻辑和机制

(2)能够模拟钱包提供方 App 使用 MPC 协议完成创建钱包以及签名交易

那么攻击者便可以发起攻击:

GG18/GG20 协议安全漏洞分析

在上述攻击场景中,如果要攻击该钱包则必须在创建钱包时就已经启动了攻击,并且通过使用该钱包签名多次完成攻击,最终获得该钱包的私钥。

漏洞修复

GG18/GG20 协议安全漏洞分析

https://github.com/Safeheron/multi-party-ecdsa-cpp/pull/7/commits/ee78a86b53f341196623bd65a5ae1ee20bcc2853

https://github.com/Safeheron/multi-party-ecdsa-cpp/pull/10/commits/fbc3474f9b05b1a9e6cfd58647e6ebfc4d4fcbca

检测攻击

GG18/GG20 协议安全漏洞分析

Safeheron 提供了大整数分解工具(https://github.com/Safeheron/integer-factorization )可以快速进行批量检测,关于大整数分解相关的算法原理可以参考大整数分解算法与实践

理清此漏洞的原理与攻击方法后,我们不难看出,此漏洞的利用门槛相对较高,但身处安全行业,面对充满未知与挑战的黑森林,我们始终需要对安全保持敬畏之心。

Fireblocks 团队的负责任安全披露彰显了「安全从来都不是孤军奋战」,Safeheron 同样坚持开源透明、以技术为重,能参与到此次安全披露中深感荣幸。Safeheron 后续会联合安全合作伙伴 SlowMist 协助行业内其他厂商修复该漏洞,以确保用户资产安全。

实现行业安全,需要每一家厂商、每一位安全从业人员、每一位用户的关注与努力,望与行业共勉。

参考文献

Fireblocks: Practical Key-Extraction Attacks in Leading MPC Wallets

https://github.com/fireblocks-labs/mpc-ecdsa-attacks-23/blob/main/WhitePaper.pdf

GG18: Fast Multiparty Threshold ECDSA with Fast Trustless Setup

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

GG20: One Round Threshold ECDSA with Identifiable Abort

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

CGGMP21: UC Non-Interactive, Proactive, Threshold ECDSA with Identifiable Aborts

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

声明:该文观点仅代表作者本人,与炒币网无关。炒币网系信息发布平台,仅提供信息存储空间服务。对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,并不对文章观点负责。 提示:投资有风险,入市须谨慎。本资讯仅供参阅,不作为投资理财建议。

发表评论

登录后才能评论