En cryptanalyse, les attaques par faute sont une famille de techniques qui consistent à produire volontairement des erreurs dans le cryptosystème. Ces attaques peuvent porter sur des composants matériels (cryptoprocesseur) ou logiciels. Elles ont pour but de provoquer un comportement inhabituel des opérations cryptographiques dans le but d'en extraire des informations secrètes (comme une clé de chiffrement). Une attaque par faute peut être couplée à d'autres méthodes comme l'analyse de la consommation ou une attaque temporelle.

Les attaques sont possibles sous l'hypothèse que l'attaquant peut affecter l'état interne du système en écrivant des valeurs par exemple en mémoire ou sur un bus informatique.

Attaque sur RSA modifier

Un exemple classique d'attaque par faute concerne RSA et en particulier le produit des deux nombres premiers ( ,  ) qui composent en partie la clé (le secret, donc) du système. Le principe est de faire en sorte qu'un de ces deux nombres soit modifié juste avant leur produit  . Il est en effet très difficile de retrouver   ou   en fonction de  . Or, si on arrive à transformer   en   (non premier), on peut retrouver beaucoup plus facilement   en décomposant en nombres premiers   avec   connu.

Attaque par fautes impossibles modifier

Le principe est de réussir à obtenir des états normalement impossibles. Ce type d'attaque a été utilisée contre le chiffrement de flot RC4. En 1994, Finney a montré que certains états étaient impossibles. L'attaque consiste à introduire une erreur dans le tableau des permutations pour tomber dans cette impossibilité et obtenir en sortie l'état interne complet du chiffrement.

Attaque par corruption/perturbation modifier

Glitch Attack modifier

L'idée est de procéder à une perturbation au niveau de l'alimentation électrique du système, afin de provoquer une erreur pouvant révéler des informations sur le système cryptographique. Il peut aussi s'agir d'une modification de la fréquence de l'horloge faite directement sur le composant ou induite par logiciel [1].

Le genre d'effet qu'une telle attaque peut produire est la non-exécution (ou bien une exécution erronée) d'une instruction dans un algorithme d'authentification, souvent due à une violation des contraintes temporelles de propagation des signaux électriques.

Injection de faute modifier

L'attaque par injection de faute consiste à perturber les transistors responsables des activités de chiffrement par une impulsion électromagnétique. Le comportement de la puce est alors scruté pour observer les conséquences de cette perturbation. Si ces conséquences sont variables, on peut procéder à une analyse statistique ou par machine learning pour remonter potentiellement jusqu'à la clef de chiffrement de la puce.

L'injection de faute consiste à utiliser une sonde électromagnétique reliée à un pulseur ou un laser générant une perturbation de l'ordre du temps de cycle du processeur (la nanoseconde). L'énergie transférée peut endommager certains composants de la puce, aussi la tension du pulseur (quelques centaines de volts) et le positionnement de la sonde doivent être finement calibrés. Pour plus de précision, les puces sont souvent décapsulées (érodées chimiquement pour mettre le silicium à nu)[2].

Notes et références modifier

  1. (en) Tang, « CLKSCREW: Exposing the Perils of Security-Oblivious Energy Management », 26th USENIX Security Symposium,‎ (lire en ligne)
  2. (en) « Fault Injection »  , sur eshard.com (consulté le )