# Cryptanalyse différentielle

La cryptanalyse différentielle est une méthode générique de cryptanalyse qui peut être appliquée aux algorithmes de chiffrement itératif par blocs, mais également aux algorithmes de chiffrement par flots et aux fonctions de hachage.
Dans son sens le plus large, elle consiste en l'étude sur la manière dont les différences entre les données en entrée affectent les différences de leurs sorties. Dans le cas d'un chiffrement itératif par blocs, le terme se rapporte à l'ensemble des techniques permettant de retracer les différences à travers le réseau des transformations, découvrant ainsi où l'algorithme montre un comportement prédictible et exploitant ainsi ces propriétés afin de retrouver la clé secrète.

## Origines de la cryptanalyse différentielle

La découverte de la cryptanalyse différentielle est généralement attribuée à Eli Biham et Adi Shamir à la fin des années 1980. Ces derniers publièrent alors un grand nombre d'attaques contre divers algorithmes de chiffrement itératif par blocs et diverses fonctions de hachage ; ces articles comprenaient la présentation d'une faiblesse théorique dans l'algorithme DES.
Il a été alors noté que DES était particulièrement résistant à cette attaque et en particulier que de petites modifications dans ses paramètres l'affaiblissaient. Ce constat a fait naître la rumeur que ses concepteurs (travaillant pour IBM) connaissaient déjà cette méthode dans les années 1970. Effectivement, plusieurs personnes ayant participé à sa conception ont depuis admis que la défense contre la cryptanalyse différentielle était bien un des buts recherchés alors (Don Coppersmith, 1994). Il semblerait même que la NSA qui contribua également à la conception de DES, avait même connaissance de cette technique avant sa redécouverte par IBM. La NSA exigea même que le processus de la conception soit tenu secret afin d'éviter la propagation de cette méthode. À l'intérieur d'IBM, la cryptanalyse différentielle était connue sous le nom de T-attack, abréviation de Tickling attack, l'attaque par chatouillement car elle consistait à chatouiller les entrées pour voir l'effet sur les sorties .
Alors que DES avait été conçu pour résister à la cryptanalyse différentielle, d'autres algorithmes conçus à la même époque se sont révélés particulièrement vulnérables. Une des premières cibles fut FEAL, qui illustra la puissance de la méthode. Sa version originale, constituée de quatre itérations (FEAL-4), peut être compromise avec seulement huit messages en clair choisis avec soin. Cela va même plus loin. En effet, FEAL est susceptible d'être attaqué par cette méthode dans toutes ses versions avec 31 itérations ou moins.

## Description de l'attaque

La cryptanalyse différentielle s'effectue en général dans un contexte de texte clair choisi, ce qui signifie que l'attaquant est en mesure d'obtenir les résultats chiffrés de textes clairs de son choix. Il existe des variantes qui fonctionnent dans d'autres modes d'attaque : à texte clair connu ou à texte chiffré seulement. La cryptanalyse repose sur des paires de textes clairs qui ont une différence constante. L'opération de différence peut être définie de diverses manières, la Fonction OU exclusif est la plus courante. L'attaquant calcule ensuite les différences dans les textes chiffrés, afin d'en extraire des motifs pouvant indiquer un biais. Les différences en sortie du chiffrement sont nommées des différentielles. Leurs propriétés statistiques dépendent de la nature des boîtes-S de l'algorithme de chiffrement. Pour chaque boîte de substitution $S$, l'attaquant peut calculer une paire de différentielles $(\Delta _{X},\Delta _{Y})~$ avec :
$\Delta _{Y}{=}S(X)\oplus S(X\oplus \Delta _{X}){=}$ la différence en sortie (avec $\Delta _{X}~$ la différence appliquée au texte en entrée).
Dans l'attaque classique, une différence particulière dans le texte chiffré permet de distinguer le texte chiffré d'un flot aléatoire (l'aléa en sortie est une propriété attendue dans tout chiffrement robuste). Des techniques plus sophistiquées permettent de diminuer la complexité de l'attaque comme dans le cas de DES. Le choix des différences appliquées en entrée est cruciale pour la réussite de l'attaque. Une analyse des rouages de l'algorithme permet de déterminer les différences qui ont la plus grande chance d'apparaître sur le cheminement des données et de déterminer une caractéristique différentielle.

## Cryptanalyses
### Cryptanalyse différentielle tronquée

Comme son nom l'indique, une telle cryptanalyse s'intéresse à des différences qui n'affectent qu'une partie des variables considérées.

### Cryptanalyse différentielle d'ordre supérieur

La cryptanalyse différentielle originale est une différentielle de premier ordre. En introduisant l'équivalent des dérivées dans les fonctions cryptographiques, on peut mener une cryptanalyse avec des degrés supérieurs. Ce sont des « différences de différences de ... ».
Voir pour les définitions formelles et un exemple d'attaque.

### Cryptanalyse différentielle impossible

Au lieu de chercher les différences probables, on inverse le problème et l'on cherche les différences qui ne se produiront pas.

### L'attaque boomerang

L'attaque boomerang est une version améliorée de la cryptanalyse différentielle inventée par David Wagner. Elle consiste à attaquer les deux moitiés d'un algorithme de chiffrement par bloc et part du principe que certaines propriétés, après perturbations des entrées, ne se propagent pas à travers toute la structure.

### L'attaque rectangle

L'attaque rectangle est une extension de l'attaque boomerang, elle a été inventée en 2001 par Eli Biham et son équipe pour attaquer leur chiffrement Serpent, candidat pour le standard AES.