constant-time-testing
constant-time-testing
Catalogue généré le 2026-05-11
En une phrase
Le constant-time testing vérifie qu'une opération cryptographique met toujours exactement le même temps à s'exécuter — sinon un attaquant peut deviner ta clé secrète juste en chronométrant le serveur.
Quand l'utiliser
- Auditer une implémentation de crypto maison (RSA, AES, ECDSA…).
- Vérifier qu'une fonction de comparaison de signature ne fuit pas d'info par le temps.
- Auditer une bibliothèque crypto avant déploiement.
- Quand tu fais de la crypto post-quantique (Kyber, Dilithium…).
- Vérifier qu'une fonction
compare_passwordne révèle pas la longueur du bon mot de passe.
Comment l'invoquer
- Slash command :
/constant-time-testing - Phrases déclencheurs (texte) : "timing side channel", "constant-time crypto", "timing attack"
- Auto-invocation : Sur demande explicite
Description détaillée
Imagine que tu vérifies un mot de passe. Si ton code dit "non, faux !" plus vite quand la première lettre est fausse que quand les 10 premières lettres sont bonnes mais la 11e fausse, alors un attaquant peut deviner ton mot de passe lettre par lettre en chronométrant. C'est une "attaque par canal auxiliaire temporel" (timing attack). Elle existe depuis 1996 (Kocher) et a déjà cassé en pratique RSA, OpenSSL et même de la crypto post-quantique récente.
Le constant-time testing consiste à vérifier que ton code crypto met toujours exactement le même temps, quel que soit le secret qu'il traite. Concrètement, il faut s'assurer que les branchements (if/else) et les accès mémoire ne dépendent pas du secret. Ça paraît simple, mais le compilateur peut réintroduire des branches sans prévenir, et les processeurs modernes ont des optimisations (caches, prédictions) qui créent des micro-différences mesurables, même à distance sur un réseau.
Cette skill te guide dans l'audit : repérer les patterns dangereux (early returns sur secret, accès tableau indexé par un secret, divisions/multiplications variables), utiliser des outils comme dudect, ctgrind ou timecop pour mesurer expérimentalement le temps, et appliquer des patterns "constant-time" reconnus. Indispensable pour toute crypto destinée à un usage réel.
Pour aller plus loin
Pour les exemples concrets, options de configuration et patterns avancés, voir le SKILL.md original.
Source
- Plugin :
trailofbits/testing-handbook-skills - Nom interne :
constant-time-testing - Fichier :
/home/thymon/.claude/plugins/cache/trailofbits/testing-handbook-skills/1.0.1/skills/constant-time-testing/SKILL.md