← Derniers articles
💻 computer science

DALC-CT: Dynamic Analysis of Low-Level Code Traces for Constant-Time Verification

Cet article présente DALC-CT, un outil open-source qui vérifie de manière fiable et légère la propriété de temps constant des programmes en analysant dynamiquement et en comparant les traces d'exécution de niveau inférieur pour détecter toute variation dans la séquence d'instructions.

Auteurs originaux : Nges Brian Njungle, Edwin P. Kayang, Mishel J. Paul, Michel A. Kinsy

Publié 2026-04-21
📖 5 min de lecture🧠 Analyse approfondie

Auteurs originaux : Nges Brian Njungle, Edwin P. Kayang, Mishel J. Paul, Michel A. Kinsy

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

🕵️‍♂️ Le Problème : Le Vol par le "Chronomètre"

Imaginez que vous avez un coffre-fort ultra-sécurisé (votre mot de passe ou votre clé cryptographique). Normalement, un voleur ne peut pas l'ouvrir sans la bonne combinaison. Mais imaginez un voleur très malin qui ne force pas la serrure. Au lieu de cela, il se cache dans l'ombre et écoute le temps que vous mettez à ouvrir le coffre.

  • Si vous tapez la bonne combinaison, le coffre s'ouvre en 2 secondes.
  • Si vous vous trompez au premier chiffre, le coffre s'ouvre en 1 seconde.

Même si la différence est infime (une fraction de seconde), un voleur patient peut mesurer ces temps, faire des statistiques et deviner, chiffre par chiffre, quelle est la bonne combinaison. C'est ce qu'on appelle une attaque par canal auxiliaire temporel (ou timing side-channel).

Pour se protéger, les programmeurs essaient d'écrire des codes "à temps constant". C'est comme si le coffre-fort prenait exactement 2 secondes pour s'ouvrir, que vous ayez tapé la bonne combinaison, la mauvaise, ou n'importe quoi d'autre. Le temps ne doit jamais trahir le secret.

🚧 Le Défi : Comment vérifier que c'est vrai ?

Le problème, c'est que vérifier si un programme prend toujours le même temps est très difficile :

  1. Les méthodes mathématiques (théoriques) sont trop abstraites. Elles supposent que le code fonctionne comme sur le papier, mais les ordinateurs réels sont complexes et font parfois des choses imprévues.
  2. Les méthodes de mesure (chronomètre réel) sont trop sensibles au bruit. Si un autre programme tourne en arrière-plan, ou si le ventilateur de l'ordinateur s'active, cela fausse la mesure. C'est comme essayer d'entendre un chuchotement dans un concert de rock.

🛠️ La Solution : DALC-CT (Le Détective des "Pas" du Programme)

Les auteurs de l'article (de l'Université d'État de l'Arizona) ont inventé un outil appelé DALC-CT. Au lieu de chronométrer le programme, ils regardent les pas exacts qu'il fait pour arriver au but.

Voici l'analogie pour comprendre comment ça marche :

Imaginez que le programme est un cuisinier qui doit préparer un plat (le résultat) en utilisant des ingrédients secrets (le mot de passe).

  • Le cuisinier "non sécurisé" : Si l'ingrédient secret est "sel", il prend 3 cuillères. Si c'est "poivre", il prend 5 cuillères. Le nombre de cuillères (les instructions) change selon ce qu'il y a dans le secret. Un observateur peut deviner le secret en comptant les cuillères.
  • Le cuisinier "DALC-CT" : Il ne regarde pas le résultat final, ni le temps que ça prend. Il regarde la liste des mouvements (les instructions) que le cuisinier fait.
    • Il demande : "Est-ce que le cuisinier a fait exactement les mêmes gestes (les mêmes types d'ordres) pour préparer le plat avec du sel, du poivre ou du sucre ?"
    • Si le nombre de gestes est différent, DALC-CT crie : "ALERTE ! Le secret influence les gestes !"

🔍 Comment fonctionne l'outil DALC-CT ?

  1. Il ne regarde pas le code source (les recettes écrites), mais le code binaire (ce que l'ordinateur comprend vraiment). C'est important car le compilateur (le traducteur) peut parfois changer les choses à la dernière minute.
  2. Il joue le jeu plusieurs fois : Il donne au programme différents secrets (ex: "mot de passe 1", "mot de passe 2").
  3. Il compte les "types de pas" : Pour chaque exécution, il classe les actions du programme en 13 catégories (comme "charger un objet", "faire un calcul simple", "faire un calcul complexe", "prendre une décision").
  4. Il compare les comptes :
    • Si pour le mot de passe A, le programme a fait 100 calculs simples et 5 décisions...
    • Et pour le mot de passe B, il a fait 90 calculs simples et 15 décisions...
    • DALC-CT conclut : "Ce n'est pas constant ! Il y a une fuite d'information !"

🏆 Les Résultats

L'équipe a testé leur outil sur des exemples célèbres :

  • Comparaison de mots de passe : Ils ont montré que la méthode "naïve" (qui s'arrête dès qu'elle trouve une erreur) change de nombre de pas selon le mot de passe. DALC-CT l'a détecté instantanément.
  • Cryptographie (RSA) : Ils ont testé des calculs mathématiques complexes. Là encore, DALC-CT a réussi à distinguer les versions sécurisées (qui font toujours les mêmes pas) des versions vulnérables.

💡 En Résumé

DALC-CT est comme un inspecteur de police qui ne se fie ni aux promesses du suspect (le code source), ni à un chronomètre imprécis. Il regarde la liste exacte des mouvements que le suspect fait.

  • Si la liste des mouvements change selon le secret, c'est coupable.
  • Si la liste est toujours identique, c'est innocent (du moins, du point de vue de la logique).

C'est une méthode légère, rapide et très fiable pour s'assurer que nos logiciels ne laissent pas fuir nos secrets à travers le temps qu'ils mettent à fonctionner. C'est une nouvelle façon de dire : "Peu importe ce que vous cachez, votre façon de travailler doit être toujours la même."

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →