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

Comment l'invoquer

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


Revision #2
Created 2026-05-11 21:19:57 UTC by thymon
Updated 2026-05-11 21:37:30 UTC by thymon