1. 基本信息
| 项目 | 内容 |
|---|---|
| 名称 | constant-time-analysis-trailofbits-skills |
| 项目自述名称 | Constant-Time Analysis |
| 作者/维护者 | Scott Arciszewski(Trail of Bits) |
| 来源链接 | https://github.com/trailofbits/skills/tree/main/plugins/constant-time-analysis/skills/constant-time-analysis |
| 许可证 | CC-BY-SA-4.0(数据来自 GitHub API) |
| GitHub Stars | 7,073(数据来自 GitHub API;为 trailofbits/skills 整个合集仓库的数字,不代表本技能自身热度) |
| Forks | 605(数据来自 GitHub API) |
| 最新版本 | 0.2.4(数据来自插件清单 plugin.json) |
| 安装方式 | Claude Code 插件市场:/plugin marketplace add trailofbits/skills 后 /plugin menu 选取 |
2. 功能介绍与亮点
Constant-Time Analysis 检测密码学代码中的定时侧信道漏洞——编译或反编译目标代码,检查生成的 汇编或字节码里有没有变量耗时的指令(除法、取模、提前退出比较、按密钥索引的表查找等),再交由 使用者判断哪些确实触碰了密钥、明文等秘密数据。
核心流程分两步:
- 编译:把源码编译为目标架构的汇编,或转成对应运行时的字节码,机械且确定。
- 分诊:逐条追溯每个被标记指令的操作数是否来自密钥、随机数或用户输入——这一步才是真正 的工作,技能正文明确警告“把原始输出当结论直接汇报是本技能最常见的失败模式”。
亮点:
- 覆盖 12 种语言:C/C++/Go/Rust/Swift 走汇编分析,Java/Kotlin/C# 走虚拟机字节码, PHP/JavaScript/TypeScript/Python/Ruby 走各自解释器字节码,每种语言配一份独立参考指南。
- 跨架构、跨优化等级验证:同一段除法在 x86_64 的
IDIV与 arm64 的SDIV表现不同,-O2下的cmov在-O0可能退化为分支——技能要求同一份修复在多编译器、多架构、 多优化等级下重新扫一遍,而不是一次干净的报告就收工。 - 自带已知答案的测试样本:每种语言配一对真阳性/假阳性夹具,
expectations.json记录 正确判定与理由,供交叉核验分诊结论。 - 明确列出已知局限:仅做静态分析(看不到缓存等微架构侧信道)、无数据流分析(每条发现 都是待核实的候选而非定论)、结果随编译器/架构/优化等级/运行时版本而变化——这些声明本身 就是使用该技能时应有的谨慎边界。
3. 适用场景
所属分类:安全与合规(产出是一份定时侧信道漏洞的发现与分诊报告,属安全审计范畴)。
适用人群与场景:
- 实现签名、加密、密钥交换或密钥派生例程的开发者,在提交前自查是否引入了编译器级定时泄露;
- 密码学库或协议实现方复现 KyberSlash(后量子密钥交换的除法定时泄露)、Lucky Thirteen (TLS 填充校验定时差异)这类历史漏洞模式,逐函数排查;
- 安全审计人员在代码审查环节,把“是否常量时间”从人工肉眼判断变成有工具输出佐证的检查项;
- CI/CD 流水线接入定时侧信道的自动化门禁(技能支持 JSON 与 GitHub Actions 注解输出)。
4. 跨 Agent 兼容性
| Agent | 结论 | 依据 |
|---|---|---|
| Claude Code | ✅ 原生支持 | 官方发布的 Claude Code 插件市场技能,/plugin marketplace add trailofbits/skills 一条命令安装 |
| Codex | ✅ 原生支持 | 仓库 README 明确“Codex supports Claude plugin marketplaces directly”,并给出 codex plugin marketplace add trailofbits/skills 专用安装命令 |
| OpenClaw | ✅ 原生支持 | OpenClaw 官方文档确认其技能格式与 Claude Code 共用同一 SKILL.md 标准,本技能仅声明 Bash/Read/Grep/Glob 等通用工具、不依赖 Claude Code 专属编排机制;需手动将技能目录放入 OpenClaw 的 skills 目录(未走该仓库自带的插件市场安装流程) |
| Hermes Agent | ✅ 原生支持 | Hermes Agent 同样遵循 agentskills.io 开放标准的 SKILL.md 格式,工具需求同样通用;需手动放入技能目录(未走插件市场机制) |
5. 推荐理由
密码学代码里的定时侧信道是一类只有专用工具才能系统性发现的漏洞——KyberSlash、Lucky Thirteen 都曾在生产环境里潜伏多年才被发现。这个技能把“编译看汇编”这套专家级排查手法封装成可重复执行 的流程,覆盖 12 种主流语言与 7 种目标架构,并且诚实标注了自己的局限(无数据流分析、仅静态), 让使用者清楚该在什么地方补充人工判断,而不是把工具输出当成不假思索的结论。
6. 评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 受欢迎程度 | 7 | Trail of Bits 是公认的一线安全研究机构,长期为多家大型开源基金会与商业公司提供安全审计与工具,其发布的 Semgrep 规则、YARA 规则集等已是业界常用参考;未查到该子技能自身的独立第三方讨论或采用数据 |
| 可用性 | 9 | 核心命令 uv run {baseDir}/ct_analyzer/analyzer.py --warnings <file> 一行即可运行(uv 自动处理依赖);文档极完整——按语言拆分的参考指南、前置条件表、故障排查文档、自带已知答案测试夹具;仓库对该插件路径的最近一次改动为 2026-08-27,维护活跃;无付费依赖 |
| 安全性 | 8 | 检查清单:①仅执行本地编译器与打包脚本,范围明确;②无联网外发;③不涉及 API key/凭据;④正文与脚本未见可疑指令;⑤作者为公认安全机构,无信誉问题;⑥License 明确(CC-BY-SA-4.0);⑦近期持续维护,无弃置风险 |
综合评分:8.0(三项均值)
7. 跟同类 Skills 相比的优势
| 技能 | 定位 | 与本技能的差异 |
|---|---|---|
| wycheproof-trailofbits-skills | 用 Google Wycheproof 测试向量批量测密码学库实现的正确性(弱密钥、边界值、已知攻击向量) | 测的是“算出的结果对不对”,本技能测的是“算的过程会不会通过耗时泄密”——两者是密码学实现审查的不同维度,可配合使用 |
| static-analysis-trailofbits-skills | 通用静态分析工具箱(CodeQL、Semgrep、SARIF 解析),面向广谱代码缺陷 | 通用规则库覆盖不到“编译后汇编层面的耗时差异”这类需要看目标代码而非源码模式的问题,本技能专门补这一类盲区 |
| 常见的 dudect / ctgrind 等命令行侧信道测试工具 | 对运行中的二进制做统计学定时测量 | 本技能明确说明这类“动态测量”场景应改用同仓库的 constant-time-testing 技能;本技能只做静态汇编/字节码检查,不执行目标程序,检测速度更快但发现的是“理论上可能泄密的指令”而非“实测确认泄密” |
8. 用户评价
该技能目前在第三方平台尚无具名用户评价;检索到的结果均为技能聚合站点(如 agentskill.sh、 atskills.one 等)对 SKILL.md 内容的自动转载,非独立使用反馈。
9. 其他补充
技能自带 agents/openai.yaml,为 OpenAI 风格的 Agent 构建器提供图标与品牌色配置,
显示作者在设计时已考虑过跨平台分发。
10. 安装使用方式
Claude Code / Codex(插件市场):
/plugin marketplace add trailofbits/skills
/plugin menu
安装后技能会在编写或审查密码学代码时自动触发,也可显式调用 /constant-time-analysis:constant-time-analysis,
或直接执行独立命令 /constant-time-analysis:ct-check <source-file> [--warnings] [--json]。
OpenClaw / Hermes Agent(手动安装):将 plugins/constant-time-analysis/skills/constant-time-analysis/
目录复制进对应 agent 的 skills 目录即可。
分析特定语言前需准备该语言的编译/反汇编工具链(如 C/C++/Go/Rust 需要 gcc/clang/go/rustc
在 PATH 中,Java/Kotlin 需要 JDK,C# 需要 .NET SDK 加 ilspycmd),具体清单见 SKILL.md 内的
“Prerequisites” 表格。
11. 注意事项
- 仅做静态检查,不执行目标代码:无法发现缓存等微架构层面的侧信道,也无法验证运行时行为。
- 无数据流分析:工具会标记每一条潜在危险指令,但不判断操作数是否真的来自秘密数据—— 报告是待人工分诊的清单,不是可以直接照抄的漏洞列表。
- 结果与编译配置强相关:同一段代码换一个编译器、优化等级或目标架构可能得到不同结果, 一次干净的运行只能证明“这一种配置安全”,不能代表全部配置都安全。
- 多语言场景需要对应工具链:分析 Java/Kotlin/C# 等语言前需要提前安装 JDK/.NET SDK 等 运行时环境,否则该语言的分析路径无法执行。