深度解析DKLs23阈值签名库安全审计:关键漏洞与修复方案
背景介绍
2023年10月,我们对Silence Laboratories的DKLs23阈值签名方案(TSS)库Silent Shard进行了安全审计。这是首批采用不经意传输(OT)替代传统Paillier密码学的生产级实现之一。我们的审查发现了可能导致密钥销毁攻击的严重漏洞,Silence Laboratories已及时修复。
审计方法
手动审查与工具分析
我们采用手动审查文档并结合自动化工具对Rust代码库进行分析:
- 使用
cargo-audit和Clippy识别已知漏洞依赖和常见Rust错误 - 通过
cargo-llvm-cov分析测试覆盖率,定位需要加强测试的热点区域 - 运用Trail of Bits自定义工具Dylint检测代码质量问题
协议复杂性挑战
DKLs23协议规范包含大量复杂符号和子协议(如$\mathcal{F}{Com}$、$\mathcal{F}{RVOLE}$、$\mathcal{F}_{Zero}$等),每个子协议都有独立的安全考量,需要跨文献追踪参考。
关键发现
高危安全漏洞
TOB-SILA-6:通信通道Nonce复用漏洞
- 实现中加密Nonce复用可能导致恶意方篡改协议消息
- 可能引发密钥销毁攻击,阻止消息签名
- 修复方案:通信通道双向使用不同密钥,避免同一加密密钥重复使用Nonce
TOB-SILA-12:选择性中止攻击处理不当
- 恶意行为处理缺陷导致程序panic,无法正确识别恶意方
- 可能引发密钥销毁或密钥提取攻击
- 修复方案:明确返回AbortProtocolAndBanReceiver错误,包含被禁方ID
其他安全问题
共发现15个安全漏洞,详细列表参见完整报告。代码质量建议包括:
- 使用特定类型增强可读性和一致性
- 完善公共库函数参数文档
- 减少不必要的unsafe代码使用
侧信道分析
代码库通过subtle等crate实现常数时间代码,有效防御侧信道攻击。唯一存在风险的eval_pprf函数可能通过时序信息泄露秘密值,但实际攻击难度较高。Silence Laboratories已提交补丁消除此时序泄漏。
长期建议
- 加强文档建设:特别是错误处理文档,这对TSS系统的恶意行为处理至关重要
- 增加负面测试:负面测试可提前发现TOB-SILA-1和TOB-SILA-2等问题,cargo-llvm-cov分析也确认了此需求
项目成果
审计结束后,Silence Laboratories已解决15个安全问题中的14个,部分解决剩余信息类问题,并按照建议加强了文档和测试投入。
关于TSS协议安全
我们已完成对所有主要TSS协议(ECDSA、Schnorr、BLS签名)的安全评估,并为所有相关签名方案提供Go和Rust实现服务。如需TSS协议安全审查或工程服务,欢迎联系我们获取基于丰富经验的免费咨询。
本文基于实际安全审计案例,为密码学库开发提供实践指导。关注我们获取更多安全研究洞见。