constant-time-analysis
Wykryj luki w kodzie kryptograficznym przed atakami czasowymi
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
Umiejętność analizuje kod kryptograficzny w poszukiwaniu operacji, które ujawniają tajne dane poprzez zmienność czasu wykonania. Chroni Twoje implementacje podpisów, szyfrowania i derywacji kluczy przed atakami czasowymi. Wspiera C, C++, Go, Rust, Swift, Java, Kotlin, C#, PHP, JavaScript, TypeScript, Python i Ruby. Automatycznie identyfikuje operacje dzielenia na wartościach zależnych od sekretów, gałęzie warunkowe wrażliwe na timing i inne wzorce podatne na wyciek informacji przez kanały poboczne.
Jak używać
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.