工程开发
constant-time-testing avatar

constant-time-testing

检测密码学实现中的时间侧通道漏洞,防止密钥泄露及加密安全防护被绕过。

简介

常数时间测试 (Constant-time testing) 是一项专为审计人员、密码学工程师及安全研究人员设计的关键安全技能,旨在验证敏感代码是否以常数时间执行。时间攻击利用执行时间的可观察差异来提取私钥或会话令牌等机密信息。此技能提供系统性的指导,用于识别在 RSA、ECDH 及现代后量子算法等协议的加密操作中,因机密数据而导致的条件分支、表格查找以及非常数时间算术运算(如除法或位移)等漏洞模式。

  • 分析原始代码是否存在时间泄漏及微架构依赖性,这些因素会导致执行时间与机密数据产生关联。

  • 提供结构化方法来识别常见违规模式,包括条件跳转、缓存时间敏感的数组访问,以及变动时间的整数算术运算。

  • 整合现代验证工具链,例如用于统计时间分析的 dudect、执行阶段追踪工具 timecop,以及 SideTrail、ct-verif 与 FaCT 等形式验证框架。

  • 支持加密原语与协议的安全性审计,以确保实现层级具备抵御侧通道攻击的稳健性。

  • 提供缓解策略的实现建议,包括消除执行时间与敏感输入之间关联的遮罩技术。

  • 在部署前进行密码学审计、审查涉及加密原语的 Pull Request,或从零开发自定义加密库时使用此技能。

  • 适用于攻击者可能拥有时间预言机 (timing oracle) 或网络层级可观测性的环境。

  • 通过将代码路径与潜在的时间变异性进行比对来运作;为获得最佳效果,需明确定义机密输入。

  • 输出内容提供可执行的见解,包括已识别的漏洞代码片段及建议的形式或统计验证方法。

  • 请注意,虽然形式化方法提供高保证的验证结果,但复杂度较高;统计方法则提供一种更实用、负担较轻的方式,适用于在噪声环境中检测现实世界的时间差异。

仓库统计

Star 数
4,856
Fork 数
421
Open Issue 数
29
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年4月28日 11:37
在 GitHub 查看