Attaque temporelle
Qu'est-ce que Attaque temporelle ?
Attaque temporelleUne attaque par canal auxiliaire qui récupère des informations secrètes en mesurant le temps d'exécution d'une opération selon différentes entrées.
Les attaques temporelles exploitent le temps d'exécution dépendant des entrées dans le code cryptographique et d'authentification. Les cibles classiques sont les comparaisons de chaînes qui ne sont pas à temps constant (un octet non concordant provoque un court-circuit précoce et révèle jusqu'où la supposition a coïncidé), l'exponentiation modulaire (square-and-multiply divulguant des bits de clé), les recherches dans les tables AES affectées par l'état du cache, et les recherches de comptes dont la durée révèle si un nom d'utilisateur existe. Même des différences de l'ordre de la nanoseconde peuvent être amplifiées en moyennant des milliers de mesures pour atténuer la gigue du réseau.
L'article de Paul Kocher de 1996 fut le premier à en faire une arme contre RSA et Diffie-Hellman. De manière décisive, l'article de Brumley et Boneh de 2003, « Remote Timing Attacks Are Practical » (USENIX Security), a extrait une clé privée RSA d'OpenSSL 0.9.7 à travers un réseau, en exploitant la variation temporelle de la réduction de Montgomery et de la bascule entre multiplication de Karatsuba et multiplication normale — c'est pourquoi OpenSSL a activé le masquage (blinding) RSA par défaut. Lucky Thirteen (CVE-2013-0169, 2013) a récupéré du texte en clair TLS en mesurant les différences de temps de vérification du MAC lors du traitement du remplissage en mode CBC.
flowchart TD
A[L'attaquant soumet de nombreuses entrées forgées] --> B[Mesurer précisément le temps de réponse]
B --> C[Moyenner les échantillons pour annuler la gigue]
C --> D{Le temps est-il corrélé<br/>au secret ?}
D -->|Oui| E[Déduire un bit/octet du secret]
E --> F[Répéter en réduisant l'espace des clés]
F --> G[Secret entièrement récupéré]
D -->|Non| H[Code à temps constant : aucune fuite]Les défenses exigent des implémentations à temps constant : déplacements conditionnels sans branchement, comparaisons à temps fixe (crypto_memcmp, hmac.compare_digest de Python, MessageDigest.isEqual de Java), masquage pour RSA/ECC et primitives de chiffrement durcies contre les attaques par cache. Des outils automatisés (dudect, ctgrind, MicroWalk) aident à auditer les variations temporelles dépendantes des données, et la limitation de débit réduit le budget de mesure de l'attaquant aux frontières du réseau.
● Exemples
- 01
L'attaque temporelle de Kocher en 1996 récupérant des bits de clé privée RSA/Diffie-Hellman.
- 02
Lucky Thirteen (CVE-2013-0169) — une attaque temporelle sur le remplissage CBC de TLS.
● Questions fréquentes
Qu'est-ce que Attaque temporelle ?
Une attaque par canal auxiliaire qui récupère des informations secrètes en mesurant le temps d'exécution d'une opération selon différentes entrées. Cette notion relève de la catégorie Vulnérabilités en cybersécurité.
Que signifie Attaque temporelle ?
Une attaque par canal auxiliaire qui récupère des informations secrètes en mesurant le temps d'exécution d'une opération selon différentes entrées.
Comment se défendre contre Attaque temporelle ?
Les défenses contre Attaque temporelle combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Attaque temporelle ?
Noms alternatifs courants : Canal auxiliaire temporel.