constant-time-analysis — скилл для Claude Code: что делает
Статически проверяет ассемблер и байткод криптографического кода на утечки по времени. Находит деление на секретные данные и ранние выходы из сравнений.
npx skills add trailofbits/skills --skill constant-time-analysis -a claude-codeЧто делает constant-time-analysis
Скилл компилирует исходный файл и разбирает полученный ассемблер или байткод виртуальной машины. Анализатор ищет инструкции с переменным временем выполнения, деление и табличные выборки. Он работает статически. Бинарник в процессе проверки не запускается, потому что для замеров времени исполнения применяются отдельные утилиты вроде dudect.
Проверка запускается скриптом ct_analyzer/analyzer.py через uv. Анализатор распознаёт язык по расширению файла. Поддерживаются C, C++, Rust, Go, Swift, Java, C#, PHP, JavaScript, Python и Ruby. Для нативного кода доступны флаги выбора компилятора, целевой архитектуры через --arch и уровня оптимизации через --opt-level.
Запуск без флага --warnings скрывает критичные ошибки. По умолчанию анализатор молчит об уязвимостях вроде раннего выхода из memcmp или зависимости ветвления от секретов. Чистый отчёт на одной конфигурации не гарантирует безопасность на другой: инструкция cmov на уровне -O2 легко превратится в ветвление на -O0.
Какие задачи решает
- найти операции деления и взятия остатка над секретными значениями
- выявить ранний выход из сравнения хэшей или тегов аутентификации
- проверить сгенерированный ассемблер под разными архитектурами и флагами оптимизации
- обнаружить переходы в коде, зависящие от ключа или открытого текста
Примеры запросов агенту
- Проверь функцию verify в crypto/sign.c на утечки по времени с флагом --warnings.
- Запусти анализ constant-time для src/kem.rs под целевую архитектуру arm64.
- Найди ветвления от секретных данных в auth_tag.py через ct_analyzer.
Как установить constant-time-analysis
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill constant-time-analysis -a claude-code2Вручную: положить файлы
~/.claude/skills/constant-time-analysis/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/constant-time-analysis/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill constant-time-analysis -a codex2Вручную: положить файлы
.agents/skills/constant-time-analysis/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill constant-time-analysis -a cursor2Вручную: положить файлы
.cursor/skills/constant-time-analysis/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install trailofbits/skills constant-time-analysis2Вручную: положить файлы
.github/skills/constant-time-analysis/SKILL.md1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill constant-time-analysis -a gemini-cli2Командой платформы
gemini skills install https://github.com/trailofbits/skills --path plugins/constant-time-analysis/skills/constant-time-analysisВручную: положить файлы
.devin/skills/constant-time-analysis/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill constant-time-analysis -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о constant-time-analysis
Как установить constant-time-analysis в Claude Code?
Выполните в терминале команду npx skills add trailofbits/skills --skill constant-time-analysis -a claude-code.
Что делает constant-time-analysis?
Скилл статически разбирает сгенерированный ассемблер или байткод без исполнения программы. Он находит инструкции с переменным временем работы, деление секретов и ранние выходы из сравнений.
Зачем передавать флаг --warnings при анализе?
Без этого флага анализатор сообщает только об ошибках уровня деления или слабого ГПСЧ. Ранние выходы из функций сравнения вроде memcmp имеют статус предупреждений и останутся незамеченными.