Aller au contenu

Masquage : Masquage cryptographique (contre-mesure aux canaux auxiliaires)

Cryptographie

Contre-mesure aux attaques par canaux auxiliaires qui découpe chaque valeur secrète en plusieurs parts combinées avec de l'aléa frais, pour que chaque valeur intermédiaire manipulée soit statistiquement indépendante du secret. En masquage booléen, une valeur x devient le couple (x ⊕ m, m), et les parts ne sont recombinées qu'au résultat final.

Schéma de séquence entre quatre acteurs : générateur d'aléa, calcul masqué, attaquant et sortie. Étape 1 : le générateur fournit un masque m tiré à neuf à chaque exécution. Étape 2 : le calcul partage le secret x en deux parts, x ⊕ m et m. Étape 3 : il applique les opérations linéaires à chaque part séparément. Étape 4 : si l'opération n'est pas linéaire, comme une boîte S, le générateur fournit de l'aléa supplémentaire pour la table recalculée ou la multiplication sécurisée. Étape 5 : la consommation et le rayonnement que capte l'attaquant ne dépendent que d'une seule part, donc pas de x. Étape 6 : si l'attaquant combine deux points de fuite, il mène une attaque d'ordre 2, que l'on contre avec trois parts ou plus. Étape 7 : les parts ne sont recombinées qu'au résultat final, envoyé à la sortie.

Linéaire, puis le reste : Un XOR ou une permutation se calcule part par part, sans jamais recombiner. Les opérations non linéaires (boîtes S de l'AES, multiplications) exigent de l'aléa supplémentaire, via une table recalculée pour le masque courant ou des multiplications sécurisées (schéma d'Ishai, Sahai et Wagner), et concentrent l'essentiel du coût. Les algorithmes qui mélangent XOR et additions modulaires imposent en plus des conversions entre masquage booléen et arithmétique.

L'ordre du masquage : Avec d+1 parts, un attaquant qui observe d points de fuite ne voit encore que du hasard ; il doit combiner davantage de mesures, et le nombre de traces nécessaires croît très vite avec le bruit. Chaque part supplémentaire multiplie aussi le coût du calcul, détail que les plaquettes « résistant aux canaux auxiliaires » mentionnent avec une discrétion remarquable.

Ce qui le casse : Un masque réutilisé, un registre où une part écrase l'autre (la fuite porte alors sur leur XOR, donc sur le secret), ou les glitchs d'un circuit matériel qui recombinent brièvement les parts : la preuve tient, l'implémentation non. Les implémentations à seuil (threshold implementations) ont été conçues pour ce dernier cas.

À ne pas confondre : Le masquage de données (masquage dynamique, jeux de test anonymisés) cache des valeurs à des utilisateurs et n'a rien à voir avec ce mécanisme : voir [masquage dynamique et environnements de test](/donnees/masquage-dynamique-environnements-test/). Le masquage cryptographique complète le temps constant sans le remplacer : l'un vise la sonde de consommation, l'autre le chronomètre.

Ce qui arrive si on s'en passe

Sans masquage, chaque valeur intermédiaire manipulée par l'implémentation dépend directement du secret : la consommation électrique, le rayonnement électromagnétique ou le temps d'exécution varient alors avec les bits de la clé. Un attaquant qui enregistre des traces pendant des opérations sur des entrées connues peut confronter ces mesures à un modèle de fuite (par exemple le poids de Hamming d'une sortie de boîte S). Par analyse différentielle ou par corrélation, il retrouve alors la clé octet par octet, sans devoir la tester en bloc. L'algorithme reste mathématiquement solide, mais son exécution physique révèle ce qu'il protège. Aucune journalisation logicielle ne signale cette extraction, puisque l'attaquant ne fait qu'observer un fonctionnement normal. Une clé ainsi obtenue doit être considérée comme compromise sur tous les équipements qui la partagent.

Explication de la marmotte

Imagine que tu dois traverser une ville pleine d'espions avec un code secret en poche. Ces espions ne peuvent pas lire le code, mais ils écoutent le bruit de tes pas. Alors, au lieu de porter le code, tu le découpes en deux morceaux : un nombre tiré au hasard, et un second calculé pour qu'en réunissant les deux on retrouve le code. Un ami porte un morceau, toi l'autre. Pris seul, chaque morceau ressemble à du hasard pur : l'espion qui suit l'un de vous n'apprend rien. Et comme on refait le tirage à chaque trajet, il ne peut même pas comparer d'un jour à l'autre. Le code n'est reconstitué qu'à l'arrivée.

Où ce terme est utilisé

← Tout le glossaire