Toolverse
All skills

constant-time-analysis

by trailofbits

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

Quick info

Category
Mobile
Views
2

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

  1. 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.

  2. 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).

  3. 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ść.

  4. 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.

  5. 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.

  6. 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.

Related skills