Cryptanalyse

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

La cryptanalyse est la science qui consiste à décrypter un message chiffré, c’est-à-dire tenter de déchiffrer ce message sans posséder la clé de chiffrement. Le processus par lequel on tente de comprendre un message en particulier est appelé une attaque.

Une attaque est souvent caractérisée par les données qu'elle nécessite :

  • attaque sur texte chiffré seul (ciphertext-only en anglais) : le cryptanalyste possède des exemplaires chiffrés des messages, il peut faire des hypothèses sur les messages originaux qu'il ne possède pas. La cryptanalyse est plus ardue de par le manque d'informations à disposition.
  • attaque à texte clair connu (known-plaintext attack en anglais) : le cryptanalyste possède des messages ou des parties de messages en clair ainsi que les versions chiffrées. La cryptanalyse linéaire fait partie de cette catégorie.
  • attaque à texte clair choisi (chosen-plaintext attack en anglais) : le cryptanalyste possède des messages en clair, il peut créer les versions chiffrées de ces messages avec l'algorithme que l'on peut dès lors considérer comme une boîte noire. La cryptanalyse différentielle est un exemple d'attaque à texte clair choisi.
  • attaque à texte chiffré choisi (chosen-ciphertext attack en anglais) : le cryptanalyste possède des messages chiffrés et demande la version en clair de certains de ces messages pour mener l'attaque.

Familles d'attaques cryptanalytiques[modifier | modifier le code]

Il existe plusieurs familles d'attaques cryptanalytiques, les plus connues étant l'analyse fréquentielle, la cryptanalyse différentielle et la cryptanalyse linéaire.

L'analyse fréquentielle[modifier | modifier le code]

Article détaillé : Analyse fréquentielle.

L'analyse fréquentielle, découverte au IXe siècle par Al-Kindi, examine les répétitions des lettres du message chiffré afin de trouver la clé. Elle est inefficace contre les chiffrements modernes tels que DES, RSA. Elle est principalement utilisée contre les chiffrements mono-alphabétiques qui substituent chaque lettre par une autre et qui présentent un biais statistique.

L'indice de coïncidence[modifier | modifier le code]

Article détaillé : Indice de coïncidence.

L'indice de coïncidence, inventé en 1920 par William F. Friedman, permet de calculer la probabilité de répétitions des lettres du message chiffré. Il est souvent couplé avec l'analyse fréquentielle. Cela permet de savoir le type de chiffrement d'un message (chiffrement mono-alphabétique ou poly-alphabétique) ainsi que la longueur probable de la clé.

L'attaque par mot probable[modifier | modifier le code]

Article détaillé : Attaque par mot probable.

L'attaque par mot probable consiste à supposer l'existence d'un mot probable dans le message chiffré. Il est donc possible d'en déduire la clé du message si le mot choisi est correct. Ce type d'attaque a été mené contre la machine Enigma durant la Seconde Guerre mondiale.

L'attaque par dictionnaire[modifier | modifier le code]

Article détaillé : Attaque par dictionnaire.

L'attaque par dictionnaire consiste à tester tous les mots d'une liste comme mot clé. Elle est souvent couplée à l'attaque par force brute.

L'attaque par force brute[modifier | modifier le code]

Article détaillé : Attaque par force brute.

L'attaque par force brute consiste à tester toutes les solutions possibles de mots de passe ou de clés. C'est le seul moyen de récupérer la clé dans les algorithmes les plus modernes et encore inviolés comme AES. Il est peu utilisé pour des mots de passe possédant un très grand nombre de caractères car le temps nécessaire devient alors trop important.

Attaque par paradoxe des anniversaires[modifier | modifier le code]

Article détaillé : Attaque des anniversaires.

Le paradoxe des anniversaires est un résultat probabiliste qui est utilisé dans les attaques contre les fonctions de hachage. Ce paradoxe permet de donner une borne supérieure de résistance aux collisions d’une telle fonction. Cette limite est de l'ordre de la racine de la taille de la sortie, ce qui signifie que, pour un algorithme comme MD5 (empreinte sur 128 bits), trouver une collision quelconque avec 50 % de chance nécessite 264 hachages d'entrées distinctes.

Cryptanalyse moderne[modifier | modifier le code]

Dès les années 70 apparaissent les méthodes de chiffrement modernes par blocs comme DES. Il sera passablement étudié et attaqué ce qui mènera à des attaques majeures dans le monde de la cryptographie. Les méthodes présentées ci-dessous ne sont pas vraiment génériques et des modifications sont nécessaires pour attaquer un type de chiffrement donné.

Souvent, on ne s'attaque pas à une version complète de l'algorithme de chiffrement mais une variante avec moins de tours (dans le cas des schémas de type Feistel ou les fonctions de hachage). Cette analyse préliminaire, si elle permet de déceler des vulnérabilités, laisse entrevoir une attaque sur l'algorithme complet.

Cryptanalyse linéaire[modifier | modifier le code]

Article détaillé : Cryptanalyse linéaire.

La cryptanalyse linéaire, due à Mitsuru Matsui, consiste à faire une approximation linéaire de la structure interne de la méthode de chiffrement. Elle remonte à 1993 et s'avère être l'attaque la plus efficace contre DES. Les algorithmes plus récents sont insensibles à cette attaque.

Cryptanalyse différentielle[modifier | modifier le code]

Article détaillé : Cryptanalyse différentielle.

La cryptanalyse différentielle est une analyse statistique des changements dans la structure de la méthode de chiffrement après avoir légèrement modifié les entrées. Avec un très grand nombre de perturbations, il est possible d'extraire la clé. Cette attaque date de 1990 (présentée à la conférence Crypto 90). Elle est due à Eli Biham et Adi Shamir. Toutefois, on sait maintenant que les concepteurs de DES connaissaient une variante de cette attaque nommée attaque-T. Les algorithmes récents (AES, IDEA, etc.) sont conçus pour résister à ce type d'attaque. Les attaques différentielles sont aussi possibles sur les fonctions de hachage, moyennant des modifications dans la conduite de l'attaque. Une telle attaque a été menée contre MD5.

Cryptanalyse différentielle-linéaire[modifier | modifier le code]

Introduite par Martin Hellman et Langford en 1994, la cryptanalyse différentielle-linéaire combine les deux principes. L'attaque différentielle produit une approximation linéaire de l'algorithme. Avec cette attaque, Hellman et Langford ont pu attaquer un DES de 8 rondes avec seulement 512 textes en clair et quelques secondes sur un PC de l'époque. Cette méthode a également été employée pour trouver des clés faibles dans IDEA. Ce type de cryptanalyse a été améliorée par Eli Biham en 2002.

Cryptanalyse χ²[modifier | modifier le code]

Article détaillé : Cryptanalyse χ².

La cryptanalyse χ², concept dû à Serge Vaudenay, permet d'obtenir des résultats similaires à des attaques linéaires ou différentielles. L'analyse statistique associée permet de s'affranchir des défauts de ces dernières en évitant d'avoir à connaître le fonctionnement exact du chiffrement.

Cryptanalyse quadratique[modifier | modifier le code]

Article détaillé : Attaque XSL.

La cryptanalyse quadratique est une invention récente de Nicolas Courtois et Josef Pieprzyk. Cette attaque (nommée attaque XSL) vise en particulier AES et les autres chiffrements basés sur Rijndael. L'attaque XSL est le sujet de beaucoup de controverses quant à sa véritable efficacité de par sa nature heuristique. Elle consiste à résoudre un système d'équations de très grande taille.

Cryptanalyse modulo n[modifier | modifier le code]

Article détaillé : Cryptanalyse mod n.

Suggérée par Bruce Schneier, David Wagner et John Kelsey en 1999, cette technique consiste à exploiter les différences de fonctionnement (selon une congruence variable) des algorithmes qui utilisent des rotations binaires.

Attaques par canal auxiliaire[modifier | modifier le code]

Article détaillé : Attaque par canal auxiliaire.

Les attaques par canaux auxiliaires font partie d'une vaste famille de techniques cryptanalytiques qui exploitent des propriétés inattendues d'un algorithme de cryptographie lors de son implémentation logicielle ou matérielle. En effet, une sécurité « mathématique » ne garantit pas forcément une sécurité lors de l'utilisation « en pratique ». Les attaques portent sur différents paramètres : le temps, le bruit, la consommation électrique, etc.

Compromis temps/mémoire[modifier | modifier le code]

Ce concept a été introduit par Martin Hellman en 1980. Il a été amélioré en 1993 par Philippe Oechslin avec le concept de table arc-en-ciel, qui lui a permis par exemple d'attaquer les mots de passe de sessions Windows, lorsqu'ils sont stockés au format LanManager, comme c'est encore le plus souvent le cas. Il s'agit d'un compromis entre une attaque par force brute et l'utilisation de dictionnaires. Une recherche exhaustive nécessite en effet beaucoup de temps alors qu'un dictionnaire de tous les mots de passe possibles nécessiterait énormément de place. Grâce à des procédés algorithmiques, on cherche à trouver un juste milieu entre ces deux principes, en construisant des tables de taille gérable.

Attaques sur les modes opératoires[modifier | modifier le code]

Les chiffrements par bloc comme DES ou AES ne peuvent chiffrer qu'un bloc de taille donnée (128 bits dans le cas d'AES). Pour chiffrer des données plus longues, on utilise des modes opératoires. Un mode opératoire est la manière de chaîner plusieurs blocs ensemble pour obtenir un chiffrement par flux. Par exemple, on peut découper les données en blocs de 128 bits et les chiffrer séparément. C'est le mode ECB qui est vulnérable puisque la présence de deux blocs chiffrés identiques indique que les deux blocs respectifs dans le message original sont également identiques. D'autres modes évitent ce problème mais ne sont pas totalement exempts de vulnérabilités. On utilise alors des vecteurs d'initialisation qui permettent d'éviter la répétition de séquences identiques entre plusieurs messages chiffrés.

Les chiffrements par flot (par exemple RC4) utilisent aussi un vecteur d'initialisation pour les mêmes raisons. Une telle attaque a été récemment menée à ce propos sur le chiffrement des documents de la suite Microsoft Office, qui emploie RC4. Le vecteur d'initialisation y est toujours le même pour un document donné ; un grand nombre d'informations peuvent donc être récupérées en comparant le résultat du chiffrement d'un document après légère modification[1].

Attaque par rencontre au milieu[modifier | modifier le code]

Chiffrer deux fois avec le même algorithme mais via deux clés différentes n'est pas équivalent à un chiffrement avec une clé deux fois plus longue (dans le cas de DES, on ne passe pas de 256 à 2112 opérations pour casser le chiffrement), à cause d'une attaque dite par rencontre au milieu, de type compromis temps-mémoire.

L'attaque fonctionne théoriquement de la façon suivante, dans le cas d'un double chiffrement, on suppose connus un clair M et un chiffré C, C étant obtenu par deux applications d'un même chiffrement avec deux clefs a priori distinctes. Il s'agit de déterminer un couple de clefs qui permet de passer de M à C par double chiffrement. L'opération peut être réitérée sur d'autres couples de clair-chiffré, s'il ne reste pas qu'un seul couple de clefs possibles. Là où les couples de clés candidates sont ceux qui permettent d'obtenir le même bloc par un seul chiffrement de M d'une part, par un seul déchiffrement de C d'autre part (c'est la rencontre au milieu).

Vue ainsi, l'attaque permet un compromis temps-mémoire : on peut

  • stocker tous les blocs obtenus à partir de M par une seule opération de chiffrement en essayant toutes les clefs possibles,
  • puis pour toutes les clefs possibles, et pour chaque bloc obtenu à partir de C par une seule opération de déchiffrement, chercher parmi les blocs stockés lors de l'étape précédente un bloc identique.

Le couple des deux clefs qui ont permis d'obtenir ce bloc intermédiaire (l'une en chiffrant M l'autre en déchiffrant C) est alors candidat à être la clé du double chiffrement.

Dans le cas du DES et pour un bloc de donnée de 64 bits, la première étape demande 256 opérations de chiffrement, et un espace mémoire de 256 blocs de 64 bits, la seconde 256 opérations (plus à chaque fois la recherche du bloc).

La complexité de l'attaque par rencontre au milieu sur le double chiffrement a été seulement multipliée par 2 (en négligeant l'étape finale de comparaison) vis-à-vis de l'attaque par recherche exhaustive sur le chiffrement simple, alors que pour l'attaque par force brute on passe au carré. Elle nécessite cependant un espace mémoire considérablement augmenté, mais des ajustements sont possibles (compromis temps-mémoire moins radicaux) si l'espace mémoire est trop important.

L'attaque vaut en fait également pour l'enchaînement de deux chiffrements différents, et il est possible de pratiquer symétriquement.

Dans le cas de DES, on obtient une attaque théorique de l'ordre de 257 opérations de chiffrements (sans modification elle demanderait un espace mémoire de 256×64 bits !). C'est à cause de cette attaque que le double DES n'est pas utilisé, mais aussi que l'on estime la sécurité du 3DES avec 3 clefs distinctes (168 bits) à 112 bits, soit de l'ordre de 2112 opérations pour casser le chiffrement.

Attaques sur les systèmes asymétriques[modifier | modifier le code]

Casser un chiffrement assuré par de la cryptographie asymétrique nécessite d'autres approches. Dans le cas de RSA, c'est la difficulté de la factorisation qui assure la résistance du chiffrement. Pour ElGamal, c'est le problème du logarithme discret qui est employé. Toutefois, certaines failles peuvent apparaître selon l'utilisation que l'on fait de ces algorithmes. RSA est vulnérable si des exposants de faible magnitude sont utilisés (attaques de Don Coppersmith et Wiener). Sous des conditions particulières, un surchiffrement avec RSA peut être attaqué. Le standard PKCS assure une utilisation plus robuste de RSA, même si les premières ébauches du standard étaient sensibles à des attaques par des canaux auxiliaires (Bleichenbacher).

Autres propriétés analysées[modifier | modifier le code]

Certaines propriétés observées dans les algorithmes de chiffrement ne mènent pas forcément à des attaques mais permettent de déceler des faiblesses dans la conception, problèmes qui peuvent en cacher d'autres plus importants.

Les clés faibles[modifier | modifier le code]

Article détaillé : Clé faible.

Certains algorithmes sont susceptibles d'avoir des clés dites faibles. Si une telle clé est utilisée pour chiffrer un message une première fois et que l'on rechiffre le résultat, toujours avec la même clé, alors on obtient le message en clair. Plus formellement, Ek(Ek(m))=m. DES possède 4 clés de ce genre. Il y a aussi des clés dites semi-faibles. Dans ce cas, Ek1(Ek2(m))=m.

Biais statistique[modifier | modifier le code]

Article détaillé : Biais (statistique).

On peut chercher si la structure de chiffrement produit des biais statistiques. En général, un algorithme de chiffrement est censé produire un résultat proche d'un générateur de nombres aléatoires uniformément distribués, de manière à donner le moins d'information possible et maximiser l'entropie. Si un biais est observé (par exemple, on observe plus de bits à 1 que de bits à 0) alors des analyses supplémentaires peuvent parfois permettre de concevoir une attaque. Citons entre autres des attaques sur RC6 dont les permutations s'écartent sensiblement des caractéristiques normalement observées dans les générateurs de nombres pseudo-aléatoires.

Notes et références[modifier | modifier le code]

Notes[modifier | modifier le code]

Références[modifier | modifier le code]

Annexes[modifier | modifier le code]

Il existe une catégorie consacrée à ce sujet : Cryptanalyse.

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]