警惕不经意传输扩展漏洞:ECDSA门限签名密钥可被窃取

本文揭露基于不经意传输的门限ECDSA签名方案存在选择性中止攻击漏洞,恶意参与者可通过多次协议执行恢复签名密钥,威胁数字身份和资产安全,并提出有效的防护措施。

不要过度扩展你的不经意传输 - 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随机数的发送者份额。在门限为二的方案中,这意味着接收者恢复随机数,并且给定带有此随机数的有效签名,他们可以恢复ECDSA签名密钥。(在更多方的方案中,攻击者可能必须对多个方重复此攻击。)

那么这里的问题到底是什么?选择性中止攻击是已知的,并在OT扩展论文中明确讨论,但这些论文并不非常清楚你是否可以重用基础OT。实现者和TSS协议设计者希望任意多次重用基础OT,因为那是高效的。TSS协议设计者知道选择性中止攻击是一个问题,所以他们甚至指定检查并认为案件已关闭,但他们并不非常清楚当检查失败时实现者应该做什么。学术论文中的这种模糊性总是导致对现实世界系统的攻击。

在这种情况下,一个清晰的解决方案是为在OT扩展协议期间试图作弊的参与者丢弃设置。查看一些公共存储库,大多数OT扩展库将报告类似“相关性检查失败”的内容,这并不告诉用户下一步该做什么。事实上,只有一个库添加了警告,指出特定检查的失败可能代表攻击,你不应该重新运行协议。

弥合学术界与实现之间的差距

大多数学术MPC论文提供了方案的一般概述和相应的安全性证明;然而,它们没有构成清晰规范所需的细节,也不打算作为实现的蓝图。在解释学术论文以创建现实世界应用程序时做出错误假设可能导致严重问题。我们希望NIST最近对多方门限密码学的呼吁将为MPC和TSS的规范设定标准,并在未来防止此类问题。

同时,如果你计划实现门限ECDSA、另一个TSS或一般的MPC,你可以联系我们以指定、实现或审查这些实现。

如果你喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News

页面内容
门限签名方案
门限ECDSA
不经意传输
OT扩展
漏洞如何工作
弥合学术界与实现之间的差距
近期文章
Trail of Bits的Buttercup在AIxCC挑战赛中获得第二名
Buttercup现已开源!
AIxCC决赛:记录
攻击者的提示注入工程:利用GitHub Copilot
发现NVIDIA Triton中的内存损坏(作为新员工)
© 2025 Trail of Bits。
使用Hugo和Mainroad主题生成。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计