SuperAPI AI 工具集

constant-time-analysis

安全与审计

查看项目

更新于 10-16 03:37

技能介绍

用途:分析密码学相关代码,找出因执行时间随操作数变化而可能泄露秘密数据的可变时间操作,如对秘密值做除法/取模、基于秘密的分支、提前退出的比较、弱随机数、以秘密为下标的查表等。

主要能力:提供 ct_analyzer/analyzer.py 命令行工具,支持按扩展名选择语言指南(C/C++、Go、Rust、Swift、Java、Kotlin、C#、PHP、JavaScript/TypeScript、Python、Ruby)。原生编译语言(C/C++、Go、Rust、Swift)做汇编级分析,支持 --arch(如 x86_64、arm64)和 --opt-level(如 O0、O3);JVM/CIL 语言(Java、Kotlin、C#)分析字节码,二者不适用 --arch 与 --opt-level。可用 --warnings 输出分支警告,--func 'sign|verify' 过滤函数,--json 供 CI 使用。

必要用法:uv run {baseDir}/ct_analyzer/analyzer.py <source_file>,示例:uv run {baseDir}/ct_analyzer/analyzer.py --arch arm64 crypto.c;uv run {baseDir}/ct_analyzer/analyzer.py --json CryptoUtils.java。前置条件依语言而异:C/C++/Go/Rust 需 PATH 中有编译器;Swift 需 Xcode 或 swiftc;Java 需 javac 与 javap;Kotlin 需 kotlinc 与 JDK;C# 需 .NET SDK 与 ilspycmd(dotnet tool install -g ilspycmd);PHP 需 VLD 或 OPcache;JS/TS 需 Node.js;Python 需 Python 3.x;Ruby 需支持 --dump=insns。macOS 上 Homebrew 的 Java 与 .NET 为 keg-only,需手动加入 PATH。

适用场景:实现签名、加密、密钥派生;代码在秘密派生值上使用 / 或 %;用户提到 constant-time、timing attack、side-channel、KyberSlash;审查 sign、verify、encrypt、decrypt、derive_key 等函数。

限制:仅静态分析汇编/字节码,不检测运行时行为与缓存等微架构侧信道;无数据流分析,会标记所有危险操作,需人工追踪数据来源排除误报;不同编译器、优化级别和运行时版本可能产生不同结果。资料未提供更多平台、收费与效果信息。