Contremesures : masquage, aveuglement et code à temps constant
Implémentez le masquage, l’aveuglement de points et des comparaisons à temps constant.
Contremesures : masquage, aveuglement et code à temps constant est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.
Les trois familles de contre-mesures
Les contre-mesures contre les canaux auxiliaires appartiennent à trois familles : le masquage (rendre aléatoires les valeurs intermédiaires), l’aveuglement (rendre aléatoires les entrées et les sorties) et le code à temps constant (éliminer les variations de temps d’exécution dépendant des données).
Masquage booléen
Effectuez un XOR entre chaque valeur intermédiaire et un masque aléatoire frais r. Traitez la valeur masquée x⊕r, puis retirez le masque à la fin. La trace de consommation électrique dépend alors de x⊕r, et non de x.
Masquage arithmétique des multiplications
Pour les opérations multiplicatives, utilisez des masques multiplicatifs : remplacez x par x·r mod p. Le schéma de masquage doit être compatible avec chaque opération algébrique du chiffrement.
Aveuglement de RSA
Avant de déchiffrer le texte chiffré c, choisissez un r aléatoire et calculez c' = c·r^e mod n. Déchiffrez c' pour obtenir m·r mod n, puis éliminez le facteur r. L’exponentiation réelle ne voit jamais le véritable c.
Aveuglement de points ECC
Rendez les coordonnées projectives aléatoires : au lieu du point affine (x,y), utilisez (λx : λy : λ) pour un λ aléatoire. La multiplication scalaire s’effectue sur des coordonnées rendues aléatoires, ce qui modifie les traces de consommation électrique à chaque fois.
Règles de programmation à temps constant
1. Aucune branche dépendant d’un secret. 2. Aucun indice mémoire dépendant d’un secret. 3. Aucune sortie anticipée. 4. Utilisez, lorsqu’elles sont disponibles, les opérations à temps constant propres à la plateforme (par exemple, crypto_verify_32).
Comparaison à temps constant en Python
N’utilisez jamais == ni hmac.compare_digest sur des octets bruts dans des chemins sensibles au temps d’exécution. Utilisez :
import hmac
def constant_time_compare(a: bytes, b: bytes) -> bool:
"""Uses HMAC double-HMAC trick for constant-time equality."""
# hmac.compare_digest is constant-time in CPython
return hmac.compare_digest(a, b)
# Example
secret = b"expected_mac_value"
received = b"attacker_provided__"
print(constant_time_compare(secret, received)) # False, but no timing leakPièges liés au compilateur et à l’architecture
Les compilateurs peuvent optimiser le code à temps constant jusqu’à le supprimer. Utilisez des écritures volatiles, des barrières mémoire ou des intrinsèques en assembleur. Les compilateurs C proposent -fno-delete-null-pointer-checks, mais il n’existe aucune garantie universelle de temps constant.
Mélange et opérations factices
Permutez aléatoirement l’ordre des consultations des tables S, ou insérez des opérations factices qui consomment de l’énergie sans modifier le résultat. Cela augmente la difficulté des attaques DPA, mais n’élimine pas les fuites.
Contre-mesures matérielles
Les accélérateurs cryptographiques dédiés (ARM TrustZone, AES matériel de STM32) appliquent le masquage directement dans le silicium. Les implémentations ASIC ajoutent un blindage métallique et un maillage actif pour détecter les sondages physiques.
Vérification des connaissances
Quelle contre-mesure empêche les attaques temporelles contre RSA en rendant le texte chiffré aléatoire avant l’exponentiation ?
Récapitulatif de la leçon
Le masquage rend les valeurs intermédiaires aléatoires ; l’aveuglement rend aléatoires les entrées de RSA/ECC ; le code à temps constant élimine les branches dépendant du temps d’exécution. La défense en profondeur combine ces trois approches. Les accélérateurs matériels les appliquent dans le silicium afin d’offrir les garanties les plus solides.
Apprends Cryptology Academy avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 67
- Leçons
- 261
Questions Fréquemment Posées
La leçon « Contremesures : masquage, aveuglement et code à temps constant » est-elle gratuite ?
Oui — le texte complet de « Contremesures : masquage, aveuglement et code à temps constant » 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 « Contremesures : masquage, aveuglement et code à temps constant » ?
Implémentez le masquage, l’aveuglement de points et des comparaisons à temps 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 4 sur 4.
Combien de temps prend la leçon « Contremesures : masquage, aveuglement et code à temps constant » ?
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
- Attaques temporelles : extraire des clés du temps d’exécution
- Analyse de la consommation : SPA et DPA
- Canaux auxiliaires électromagnétiques et acoustiques
- Contremesures : masquage, aveuglement et code à temps constant