深度解析首个DKLs23库安全审计:密钥销毁攻击与侧信道漏洞

本文详细记录了Trail of Bits对Silence Laboratories的DKLs23阈值签名库Silent Shard的安全审计过程,发现15个安全漏洞包括密钥销毁攻击风险,并提供了基于OT协议与Paillier加密的对比分析及修复建议。

深度解析首个DKLs23库安全审计:密钥销毁攻击与侧信道漏洞

背景介绍

2023年10月,我们审计了Silence Laboratories的DKLs23阈值签名方案(TSS)库Silent Shard——这是当时新型协议的首批生产级实现之一,该协议使用茫然传输(OT)替代传统Paillier密码学。我们的审查发现了可能导致密钥销毁攻击的严重缺陷,Silence Laboratories已及时修复。

审计收获的三个关键经验

  1. DKLs23规范赋予实现者选择子协议(基础OT、OT扩展、配对乘法)的显著自由度,需要仔细研究规范和实现选择。
  2. 基于OT的系统通常比基于Paillier的系统更不易出错,一旦防止选择性中止攻击,只需更简单的安全验证。
  3. 所有TSS方案都需要关注基础要素,如安全P2P通信、广播和共识验证。

新型库——Silent Shard

Silence Laboratories是一个由学术和工业界科学家组成的团队,构建了名为Silent Shard的多功能TSS库。该团队旨在为各种应用和用例提供TSS支持,包括加密货币钱包MetaMask。

为支持ECDSA签名,Silence Laboratories基于当时新颖的DKLs23协议构建了Silent Shard库。许多常见的ECDSA协议(如CGGMP21)依赖Paillier加密系统的同态属性来执行特定ECDSA签名操作。DKLs23协议是一个根本不同的协议,使用称为茫然传输(OT)的密码学原语,而不是Paillier。这种基于OT的方法在过去几年中因其竞争性能和基于Paillier系统的脆弱性(例如最近的BitForge和TSShock漏洞)而受到更多关注和推动。

我们如何进行审查

我们与Silence Laboratories的项目从手动审查随附文档开始,并包括与Silence Laboratories的定期咨询以澄清某些问题。实现TSS协议,尤其是DKLs23,是一项非常复杂的任务,因为规范充满了复杂的符号和许多子协议,每个子协议都有其自身的尖锐边缘和安全问题。为了让您更好地理解这一点,以下是主要DKLs23协议的截图,该协议跨越了四页文本:

如果您没有被需要理解和跟踪的所有不同变量所淹没,还请记住,每个𝓕Com、𝓕RVOLE、𝓕Zero等符号都是其自己的复杂子协议,具有自己的密集符号和安全考虑。其中一些子协议实际上是在以前的出版物中定义的,因此您还必须进行大量的参考文献追踪。

除了手动审查外,我们使用相关工具对Rust代码库进行自动化分析。特别是,我们使用cargo-audit和Clippy来识别已知易受攻击的依赖项和常见的Rust错误。我们还使用cargo-llvm-cov来分析代码库的测试覆盖率,并确定额外测试最有价值的热点。最后,我们使用了Trail of Bits的自定义Rust工具Dylint,该工具识别了Trail of Bits在以前项目中发现的更常见的Rust错误和代码质量问题。

关键发现

在项目过程中,我们总共识别了15个安全问题。在这15个问题中,我们识别了两个高风险安全问题,可能导致密钥销毁攻击,并可能导致密钥恢复攻击:

TOB-SILA-6:各方之间的通信通道可以重用随机数。 TSS协议有严格的通信要求以保持协议安全。特别是,协议中的各方必须拥有安全的双向通道以防止消息被读取或篡改。加密使用的随机数实现中的这个错误可能允许恶意方更改两方之间的协议消息之一,从而阻止他们签名消息。这被称为密钥销毁攻击。为解决此问题,Silence Laboratories团队更新了通信通道,为通道中的每个方向使用不同的密钥,这防止了相同的随机数与相同的加密密钥被使用两次。

TOB-SILA-12:实现错误处理选择性中止攻击。 这些TSS协议的关键设计之一是正确检测和处理其他方的恶意行为。我们在这个恶意行为处理中发现了一个错误,导致恐慌,阻止各方正确识别恶意方。没有正常运作的可识别中止,协议中的各方要么必须指责协议中的每个人(或某些随机子集),这可能导致密钥销毁攻击,要么不指责或惩罚任何人,这可能导致密钥提取攻击。Silence Laboratories修补了实现以返回明确的AbortProtocolAndBanReceiver错误,其中包括要禁止的方的ID。

我们识别的一些其他发现也可能导致密钥销毁攻击和其他问题。所有安全问题的详细列表可以在我们的完整报告中访问。

我们的报告还包括我们的代码质量建议,旨在增强代码可读性、可维护性和健壮性。一些建议涉及使用特定类型以提高可读性和一致性,公共库函数参数的全面文档化,以及减少不必要的不安全代码使用。更多信息请参阅报告的附录C。

侧信道分析

对Silence Laboratories的Silent Shard DKLs23库的安全审查包括分析实现中潜在的侧信道漏洞。我们发现代码库通过在使用适当的地方(如subtle crate)使用恒定时间代码,在很大程度上防止了侧信道攻击。然而,有一个函数eval_pprf,时序信息可能泄露一些关于秘密值的信息。正如我们在报告中描述的那样,我们认为与此问题相关的风险相当低,因为实际攻击即使不是完全不可行,也很困难。但为了深度防御,我们包括了使此函数恒定时间从而不泄露任何不必要信息的建议。针对此问题,Silence Laboratories提交了一个补丁以消除此时序泄漏。更多详情请参阅我们报告中的附录D。

建议

除了提供解决我们识别的15个安全问题和代码质量问题的建议外,我们在项目结束后向Silence Laboratories提供了两个长期建议。对DKLs23实现的第一个建议是改进文档,特别是错误处理,鉴于处理恶意行为在TSS系统中的重要性以及我们识别的错误处理问题。

我们的另一个主要建议是向代码库引入额外的负面测试。特别是,负面测试本可以检测和防止我们识别的一些问题,如TOB-SILA-1和TOB-SILA-2。对额外负面测试的需求也通过我们的cargo-llvm-cov分析得到确认。

自我们的项目结束以来,我们很高兴地说,Silence Laboratories已解决15个安全问题中的14个,并部分解决了剩余的信息性问题。Silence Laboratories还根据我们的长期建议投资于额外的文档和测试。

保护TSS协议

我们赞扬Silence Laboratories在这个项目上高效协作的工作,以及他们对我们发现和建议的及时响应。像这样的审计展示了加强代码库安全性的主动方法,是提供多功能TSS工具包的重要一步。

随着这个项目的结束,我们的密码学团队现在已经对ECDSA、Schnorr和BLS签名的所有主要TSS协议进行了多次安全评估。此外,所有主要TSS协议都聘请我们提供工程服务,为所有相关签名方案构建Go和Rust实现。如果您需要任何TSS协议的安全审查或工程,请联系我们!我们提供免费的办公时间会议,我们可以根据我们这些系统的丰富经验提供有影响力的建议。

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

关于我们

自2012年以来,Trail of Bits帮助保护了世界上一些最受针对的组织和产品。我们结合高端安全研究和真实世界攻击者心态来降低风险并强化代码。 更多信息请访问:www.trailofbits.com

社交 Twitter LinkedIn GitHub Mastodon Hacker News

最近帖子 非传统创新者奖学金 劫持您的PajaMAS中的多代理系统 我们构建了MCP一直需要的安全层 利用废弃硬件中的零日漏洞 Inside EthCC[8]:成为智能合约审计员

类别 aixcc 8 apple 13 application-security 19 attacks 14 audits 14 authentication 6 benchmarking 1 binary-ninja 15 blockchain 91 c/c++ 1 capture-the-flag 11 careers 3 codeql 6 compilers 33 conferences 35 confidential-computing 1 containers 3 cryptography 79 crytic 4 cyber-grand-challenge 8 darpa 27 design-review 1 dynamic-analysis 14 ebpf 6 echidna 1 ecosystem-security 10 education 18 empire-hacking 7 engineering-practice 23 events 8 exploits 30 fuzzing 51 go 10 guides 15 internship-projects 42 invariant-development 3 iverify 5 java 1 kernel 1 kubernetes 3 linux 8 llvm 5 machine-learning 38 malware 7 manticore 17 mcp 5 mcsema 11 memory-safety 2 meta 12 mitigations 11 mlir 2 multi-agent systems 1 open-source 28 operational security 1 osquery 23 paper-review 11 people 8 podcast 1 policy 14 press-release 29 privacy 9 products 8 program-analysis 22 prompt injection 3 recursion 1 research-practice 41 reversing 18 rust 8 safedocs 1 semgrep 9 sinter 1 slither 4 snapshot fuzzing 1 sponsorships 13 stablecoins 1 static-analysis 37 supply-chain 11 symbolic-execution 18 testing handbook 6 threat modeling 4 threshold-signatures 1 tool-release 9 training 3 vast 2 vulnerabilities 4 vulnerability-disclosure 22 windows 3 working-at-trail-of-bits 4 year-in-review 6 zero-knowledge 12

© 2025 Trail of Bits. 使用Hugo和Mainroad主题生成。

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