我们审查首批DKLs23库之一从Silence Laboratories中学到了什么
Joop van de Pol、Jim Miller和Joe Doyle
2025年6月10日
密码学, 审计
2023年10月,我们审计了Silence Laboratories的DKLs23阈值签名方案(TSS)库Silent Shard——这是当时使用不经意传输(OT)替代传统Paillier密码学的创新协议的首批生产实现之一。我们的审查发现了可能导致密钥销毁攻击的严重缺陷,Silence Laboratories已及时修复。
我们的审计得出三个关键教训。首先,DKLs23规范赋予实现者选择子协议(基础OT、OT扩展、配对乘法)的显著自由度,需要仔细研究规范及实现选择。其次,基于OT的系统通常比基于Paillier的系统更不易出错,一旦防止选择性中止攻击,只需更简单的验证即可保障安全。最后,所有TSS方案都需要关注安全P2P通信、广播和共识验证等基础要素。
本篇博文中,我们将介绍审计流程,深入分析发现的关键问题,并讨论增强实现安全性和正确性的建议。查看完整的Silence Laboratories DKLs23审查报告获取更多细节!
全新大胆的库——Silent Shard
Silence Laboratories是由学术和工业科学家组成的团队,构建了名为Silent Shard的多功能TSS库。该团队旨在为多种应用和用例提供TSS支持,包括加密货币钱包MetaMask。
为支持ECDSA签名,Silence Laboratories基于当时新颖的DKLs23协议构建了Silent Shard库。许多常见的ECDSA协议(如CGGMP21)依赖Paillier加密系统的同态属性执行特定ECDSA签名操作。DKLs23协议是 fundamentally不同的协议,使用称为不经意传输(OT)的密码学原语替代Paillier。这种基于OT的方法因其竞争性性能和基于Paillier系统的脆弱性(例如最近的BitForge和TSShock漏洞)在过去几年中获得更多关注和势头。
我们如何进行审查
我们与Silence Laboratories的项目从手动审查附带文档开始,并包括与Silence Laboratories的定期咨询以澄清某些问题。实现TSS协议,尤其是DKLs23,是一项非常复杂的任务,因为规范充满复杂符号和许多子协议,每个子协议都有其自身的尖锐边缘和安全问题。为了让您更好地理解,以下是主DKLs23协议的截图,该协议跨越四页文本:
图1: 主DKLs23协议跨越四页密集规范,每个符号(𝓕Com、𝓕RVOLE等)代表其自身复杂的子协议
如果您没有被需要理解和跟踪的所有不同变量淹没,还请记住每个𝓕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 近期文章 使用Deptective调查您的依赖项 系好安全带,Buttercup,AIxCC的评分回合正在进行中! 使您的智能合约超越私钥风险成熟 Go解析器中意外的安全隐患 我们审查首批DKLs23库之一从Silence Laboratories中学到了什么 类别 aixcc 8apple 13应用安全 19攻击 14审计 14认证 6基准测试 1binary-ninja 15区块链 90c/c++ 1夺旗赛 11职业 3codeql 6编译器 33会议 33机密计算 1容器 3密码学 78crytic 4网络大挑战 8darpa 27设计审查 1动态分析 14ebpf 6echidna 1生态系统安全 10教育 17empire-hacking 7工程实践 23事件 8漏洞利用 30模糊测试 51go 10指南 15实习项目 42不变量开发 3iverify 5java 1内核 1kubernetes 3linux 8llvm 5机器学习 36恶意软件 7manticore 17mcp 4mcsema 11内存安全 2meta 12缓解措施 11mlir 2开源 28操作安全 1osquery 23论文审查 11人员 8播客 1政策 14新闻稿 29隐私 9产品 8程序分析 22提示注入 3递归 1研究实践 40逆向工程 18rust 8safedocs 1semgrep 9sinter 1slither 4快照模糊测试 1赞助 12稳定币 1静态分析 37供应链 11符号执行 18测试手册 6威胁建模 4阈值签名 1工具发布 7培训 3vast 2漏洞 4漏洞披露 22windows 3在Trail of Bits工作 4年度回顾 6零知识 12© 2025 Trail of Bits. 使用Hugo和Mainroad主题生成。