不要过度扩展你的不经意传输 - Trail of Bits博客
Joop van de Pol
2023年9月20日
密码学, 阈值签名
我们在一个阈值签名方案中发现漏洞,允许攻击者恢复基于不经意传输(OT)的阈值ECDSA实现的签名密钥。恶意协议参与者可在OT扩展子协议中执行选择性中止攻击,恢复其他方的秘密值,并最终恢复签名密钥。利用该密钥,攻击者可冒充用户身份、控制关键系统或窃取金融资产。虽然我们尚不能披露受此漏洞影响的客户端软件,但我们认为这对其他实现MPC协议的开发者具有指导意义。
防范此漏洞很简单:由于攻击依赖于在多个协议轮次中引发选择性中止,惩罚或排除引发选择性中止的参与者即可。但这仍是一个常见问题的典型案例,往往导致严重甚至关键问题:学术界假设与实现者试图在实际系统中高效构建这些协议之间存在脱节。
阈值签名方案
阈值签名方案(TSS)是强大的密码学对象,允许对数字签名方案的签名密钥进行去中心化控制。它们是更通用的多方计算(MPC)的具体应用,旨在去中心化任意计算。每个TSS协议通常针对特定数字签名方案定义,因为不同签名方案需要不同的计算来创建签名。
当前研究旨在为各种数字签名方案定义高效的TSS协议。效率目标包括不同参与者之间的计算和通信。通常,TSS协议依赖于MPC中使用的标准技术,如秘密共享、零知识证明和乘法到加法转换。
阈值ECDSA
ECDSA签名方案被广泛使用。然而,ECDSA的阈值方案通常比其他签名方案更复杂,这是因为ECDSA签名需要计算秘密值的模逆。
各种MPC技术可用于分配此模逆计算。目前,ECDSA阈值签名方案的一项工作使用同态Paillier加密方案,如Lindell等人、Gennaro等人的工作所示。本文将重点介绍依赖不经意传输(OT)的方案,如Doerner等人的工作或Cait-Sith。
在解释OT之前,应注意基本变体相对低效。为缓解此问题,研究人员提出了称为OT扩展的方案,其中少量OT可高效转换为大量OT。阈值签名方案的创建者急切使用此功能,因为您可以运行少量OT的设置一次,然后任意多次扩展。
不经意传输
不经意传输就像魔术师卡牌戏法的设置。魔术师有一堆卡片,希望您选择其中一张,以便他们通过推测您选择的卡片来展示魔法能力。为此,魔术师不知道您选择了哪张卡片很重要,但您必须恰好选择一张卡片,且不能后来声称实际选择了另一张卡片。
在现实生活中,魔术师可能让您在选择的卡片上写些东西,迫使您恰好选择一张卡片。然而,这对密码学设置不够好,因为魔术师之后可以查看所有卡片(使用他们令人印象深刻的戏法隐藏这一事实)并挑出有文字的卡片。更好的解决方案是让魔术师在每张卡片上写一个随机单词,以便您通过记忆这个单词选择卡片。现在,在现实生活中,魔术师可能允许您在选择前查看多张卡片,而在密码学情况下,您必须盲目选择卡片,以便仅了解所选卡片上的随机单词。
选择卡片并归还给魔术师(随机洗牌以确保他们不能直接挑出您归还的卡片)后,他们现在可以尝试找出您选择了哪张卡片。在现实生活中,魔术师将使用各种技巧尝试挑出您的卡片,而在密码学设置中,他们实际上不应能够。
简而言之,OT涉及发送者(魔术师)希望让接收者(您,目标)在一些值(卡片)之间选择。发送者不应了解接收者的选择,接收者不应了解除所选值之外的任何其他值。
事实证明,OT是非常强大的MPC原语,因为它可用作构建任意多方计算协议的构建块。然而,在没有任何特殊假设的情况下实现OT需要非对称密码学,这相对昂贵。使用昂贵的构建块将导致低效协议,因此需要更多东西才能在实践中使用OT。
OT扩展
OT需要非对称密码学或“特殊假设”。这意味着当双方已经访问称为相关随机性的东西时,OT是可能的。更好的是,这种相关随机性可以从OT协议的输出创建。
因此,可以运行昂贵的OT协议若干次,然后将这些“基础”OT扩展为更多OT。此扩展仅使用对称密码学(如哈希函数和伪随机生成器)即可实现,这使其比昂贵的非对称变体更高效。
对于本文,我们将重点关注OT扩展中的特定工作线,从Ishai等人的论文开始。详细解释此方案的工作原理有点复杂,但以下要点很重要:
- 仅使用对称原语(伪随机生成器和哈希函数)。
- 发送者和接收者的角色互换(基础OT中的发送者成为扩展OT中的接收者,反之亦然)。
- 协议包括构建与旧选择(基础OT)和新选择(OT扩展)相关的随机性。
- 扩展OT发送者不能作弊,但协议对作弊的扩展OT接收者不安全。
最后一点是什么意思?扩展OT接收者可以作弊并了解属于扩展OT发送者的原始选择位。Ishai等人提出了解决方案,但效率不高。因此,后续工作如Asharov等人和Keller等人添加了一种一致性检查,其中扩展OT接收者必须提供一些额外信息。扩展OT发送者然后可以使用此信息验证接收者是否作弊。
这些一致性检查限制了接收者可以了解发送者秘密选择的程度,但它们并不完美。发送者执行以验证接收者信息的检查取决于他们自己的秘密选择。因此,接收者仍然可以在特定位置作弊,以便根据发送者是否中止来了解发送者秘密选择的一些位。这称为选择性中止攻击,因为接收者可以选择性地尝试引起中止,并因此从发送者那里了解一些信息。
上述论文承认作弊接收者可能发生这种泄漏。然而,作者选择方案参数,使得接收者在运行协议一次时永远无法充分了解发送者的原始选择位。问题解决了,对吧?
漏洞如何工作
回想一下,在基于OT的阈值签名方案上下文中,您希望在设置阶段执行基础OT一次,并任意多次重用此设置以执行OT扩展。由于这提高了效率,实现者将跃跃欲试。没有非常明确提及的是,导致我们发现的漏洞的是,仅当OT扩展接收者不作弊时,您才能任意多次重用设置。
如果接收者作弊,那么他们可以了解OT扩展发送者的秘密设置值的几个位。如果您允许接收者在协议的不同执行中多次这样做,这确实会成为问题。最终,接收者了解所有秘密发送者位,安全性完全受损。通常,根据特定TSS,接收者现在可以使用秘密发送者位恢复对应于ECDSA nonce的发送者份额。在阈值为二的方案中,这意味着接收者恢复nonce,并且给定使用此nonce的有效签名,他们可以恢复ECDSA签名密钥。(在更多方的方案中,攻击者可能必须对多方重复此攻击。)
那么这里的问题到底是什么?选择性中止攻击是已知的,并在OT扩展论文中明确讨论,但这些论文不太清楚您是否可以重用基础OT。实现者和TSS协议设计者希望任意多次重用基础OT,因为那是高效的。TSS协议设计者知道选择性中止攻击是一个问题,因此他们甚至指定检查并认为案例已关闭,但他们不太清楚实现者在检查失败时应该做什么。学术论文中的这种模糊性总是导致对现实世界系统的攻击。
在这种情况下,一个清晰的解决方案是丢弃在OT扩展协议期间试图作弊的参与者的设置。查看一些公共存储库,大多数OT扩展库将报告类似“相关性检查失败”的内容,这不会告诉用户下一步该做什么。事实上,只有一个库添加了警告,指出特定检查的失败可能代表攻击,您不应重新运行协议。
弥合学术界与实现之间的差距
大多数学术MPC论文提供方案的总体概述和相应的安全性证明;然而,它们没有构成清晰规范所需的细节,也不旨在作为实现的蓝图。在解释学术论文以创建现实世界应用程序时做出错误假设可能导致严重问题。我们希望NIST最近对多方阈值密码学的呼吁将为MPC和TSS的规范设定标准,并在未来防止此类问题。
同时,如果您计划实现阈值ECDSA、其他TSS或一般MPC,您可以联系我们以指定、实现或审查这些实现。
如果您喜欢这篇文章,请分享:
Twitter、LinkedIn、GitHub、Mastodon、Hacker News
页面内容
阈值签名方案、阈值ECDSA、不经意传输、OT扩展、漏洞如何工作、弥合学术界与实现之间的差距
最近帖子
非传统创新者奖学金、劫持您的PajaMAS中的多代理系统、我们构建了MCP一直需要的安全层、利用废弃硬件中的零日漏洞、Inside EthCC[8]:成为智能合约审计员
© 2025 Trail of Bits.
使用Hugo和Mainroad主题生成。