Attaque par faute
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
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
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 (Glitch Attack)
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.
Notes et références
- (en) Tang, « CLKSCREW: Exposing the Perils of Security-Oblivious Energy Management », 26th USENIX Security Symposium, (lire en ligne)
- Portail de la cryptologie