0Pricing
Cryptology Academy · Leçon

Attaques temporelles : extraire des clés du temps d’exécution

Démontrez une attaque temporelle par cache contre une implémentation dont le temps d’exécution n’est pas constant.

Attaques temporelles : extraire des clés du temps d’exécution est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cryptology Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cryptology Academy comprend 4 leçons au total.

Qu'est-ce qu'une attaque par temporisation

Une attaque par temporisation est une attaque par canal auxiliaire dans laquelle un adversaire mesure la durée des opérations cryptographiques afin d'en déduire des données secrètes. Même des différences de l'ordre de la nanoseconde peuvent révéler des bits de clé.

Pourquoi la durée d'exécution révèle des secrets

Les branchements et les accès mémoire dans le code cryptographique dépendent souvent de valeurs secrètes. Une boucle qui s'arrête prématurément lorsqu'elle rencontre un bit nul s'exécute plus rapidement : l'attaquant mesure cette différence.

Attaques par temporisation du cache contre AES

Les recherches classiques dans les tables AES utilisent des lignes du cache du CPU dont les adresses dépendent des octets de la clé. Des outils tels que Flush+Reload permettent à un attaquant d'observer quelles lignes du cache ont été consultées.

L'oracle de temporisation RSA de Bleichenbacher

L'attaque de Bleichenbacher, en 1998, a exploité les différences de temporisation lors de la validation du remplissage PKCS#1 v1.5. Des millions de textes chiffrés choisis pouvaient permettre de récupérer une clé privée RSA de 1024 bits.

Attaques par temporisation à distance

Même sur le réseau, des différences de temporisation inférieures à la milliseconde peuvent être mesurées avec suffisamment d'échantillons. Lucky13 a exploité la temporisation du MAC en mode CBC dans TLS sur Internet.

Mesurer le temps en Python

Utilisez time.perf_counter_ns() pour une résolution à la nanoseconde. Pour illustrer une comparaison vulnérable :

import time

def vulnerable_compare(a, b):
    for x, y in zip(a, b):
        if x != y:
            return False
    return len(a) == len(b)

start = time.perf_counter_ns()
vulnerable_compare(b"secret_key_here", b"wrong_key_xxxxx")
elapsed = time.perf_counter_ns() - start
print(f"Elapsed: {elapsed} ns")

Simuler un oracle de temporisation

Un oracle de temporisation indique si une supposition est correcte AND révèle la durée. Nous pouvons récupérer un secret octet par octet en mesurant quelle supposition prend le plus de temps avant de renvoyer Faux.

Analyse statistique des données de temporisation

Les mesures individuelles sont bruitées. Les attaquants recueillent des milliers d'échantillons par candidat et utilisent des tests statistiques (test t, test de Welch) pour distinguer le signal du bruit.

L'attaque de Manger contre OAEP

En 2001, Manger a montré que même un RSA avec remplissage OAEP divulgue des informations si l'implémentation distingue « le premier octet est nul » des autres erreurs avec des temporisations différentes.

Exemples concrets

OpenSSL, GnuTLS et NSS ont tous connu des CVE liées à des attaques par temporisation. L'attaque TLS Lucky13 (CVE-2013-0169) a touché pratiquement toutes les bibliothèques TLS au moment de sa divulgation.

Vérification des connaissances

Quelle technique statistique aide les attaquants à distinguer le signal de temporisation du bruit de mesure ?

Récapitulatif de la leçon

Les attaques par temporisation extraient des secrets cryptographiques en mesurant les différences de durée d'exécution. Elles fonctionnent localement (cache) ou à distance (réseau). L'analyse statistique sépare le signal du bruit. La solution consiste à utiliser un code à durée d'exécution constante, traité dans la leçon sur les contre-mesures.

Questions Fréquemment Posées

La leçon « Attaques temporelles : extraire des clés du temps d’exécution » est-elle gratuite ?

Oui — le texte complet de « Attaques temporelles : extraire des clés du temps d’exécution » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cryptology Academy, passe à CoddyKit PRO. Le cours Cryptology Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Attaques temporelles : extraire des clés du temps d’exécution » ?

Démontrez une attaque temporelle par cache contre une implémentation dont le temps d’exécution n’est pas constant. Tu pratiques Cryptology Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cryptology Academy ?

Aucune expérience préalable n'est requise. Cryptology Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Attaques temporelles : extraire des clés du temps d’exécution » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cryptology Academy ?

Oui. Chaque leçon Cryptology Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Attaques temporelles : extraire des clés du temps d’exécution
  2. Analyse de la consommation : SPA et DPA
  3. Canaux auxiliaires électromagnétiques et acoustiques
  4. Contremesures : masquage, aveuglement et code à temps constant
← Retour à Cryptology Academy