constant-time-analysis
Detects timing side-channel vulnerabilities in cryptographic code. Use when implementing or reviewing crypto code, encountering division on secrets, secret-dependent branches, or constant-time programming questions in C, C++, Go, Rust, Swift, Java, Kotlin, C#, PHP, JavaScript,
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Detects timing side-channel vulnerabilities in cryptographic code. Use when implementing or reviewing crypto code, encountering division on secrets, secret-dependent branches, or constant-time programming questions in C, C++, Go, Rust, Swift, Java, Kotlin, C#, PHP, JavaScript, TypeScript, Python, or Ruby.
How to use
Aktywuj umiejętność w swoim asystencie Claude, Copilot lub innym narzędziu obsługującym skill'e Trail of Bits. Upewnij się, że masz dostęp do repozytorium https://github.com/trailofbits/skills.
Przygotuj kod kryptograficzny do analizy — może to być funkcja implementująca podpis, szyfrowanie, weryfikację lub derywację klucza. Umiejętność automatycznie rozpozna język na podstawie rozszerzenia pliku (.c, .go, .rs, .java, .py, .js, .ts, .php, .swift, .kt, .cs, .h, .cpp, .cc, .hpp).
Poproś asystenta o analizę kodu, wskazując konkretne funkcje lub fragmenty zawierające operacje na tajnych danych. Wspomnienie słów kluczowych takich jak "timing attack", "constant-time", "side-channel" lub "KyberSlash" automatycznie aktywuje umiejętność.
Zwróć szczególną uwagę na operacje dzielenia (/) i modulo (%) na wartościach zależnych od sekretów, instrukcje warunkowe zależne od tajnych danych oraz pętle, których liczba iteracji zależy od klucza. Umiejętność wskaże te miejsca.
Przejrzyj raport z analizy — zawiera konkretne linie kodu podatne na ataki czasowe oraz rekomendacje dla Twojego języka programowania. Dla C/C++ i Go zapoznaj się z wytycznymi w references/compiled.md, dla języków interpretowanych sprawdź odpowiedni przewodnik.
Zastosuj sugerowane poprawki, takie jak użycie bibliotek constant-time, eliminacja gałęzi warunkowych zależnych od sekretów lub zastąpienie operacji arytmetycznych bezpiecznymi alternatywami.