# Surchiffrement

Le surchiffrement est un procédé cryptographique qui consiste à chiffrer, avec d'autres algorithmes et des clés différentes, des données qui avaient déjà été chiffrées. On peut le faire autant de fois que nécessaire mais cela implique nécessairement des performances amoindries.
Cette méthode permet normalement de s'assurer qu'en cas de vulnérabilité d'un des systèmes utilisés, les autres pourront prendre le relais et assurer encore une forte protection. Il permet aussi de cacher certaines propriétés statistiques dans les cas où des chiffrements faibles seraient utilisés.
Afin de repousser les attaques, il est recommandé de chiffrer dans le sens : algorithme considéré le plus fort, vers l'algorithme considéré comme le plus faible. Ainsi, si la première clé est trouvée par l'attaquant dans un temps t, il lui prendra normalement, encore plus de temps de trouver la clé suivante, ce qui découragera l'attaquant. Au mieux, il faut utiliser au minimum 3 algorithmes différents et des clés de tailles légèrement différentes. Aussi, il est recommandé de ne pas utiliser des algorithmes validés par un même organisme ou pays, et surtout de ne pas utiliser des clés issues d'un traitement d'une clé maître.

## Risques

Le surchiffrement double, avec le même algorithme mais deux clés différentes, présente des risques. On peut en effet appliquer une attaque par le milieu. Contrairement à ce que l'on peut penser de prime abord, le chiffrement obtenu n'est pas équivalent à un chiffrement avec une clé deux fois plus longue (on ne passe pas de 2$^{56}$ à 2$^{112}$ dans le cas de DES). Il suffit en effet d'essayer toutes les clés pour déchiffrer la première étape. On obtient un résultat, toujours chiffré, qui se trouve entre les deux blocs de chiffrement. Ce résultat est soumis à son tour à une recherche exhaustive avec toutes les clés possibles. Finalement, la complexité est seulement multipliée par deux avec un même algorithme de chiffrement.
Dans le cas de DES, on obtient une résistance de l'ordre de 2$^{57}$, c'est pourquoi on utilise 3DES qui a une complexité finale de 2$^{112}$ opérations (malgré une clé plus longue de 3*56 bits). Grâce à trois chiffrements, chaque sortie du deuxième bloc de chiffrement doit être essayée avec toutes les clés, ce qui augmente considérablement le nombre de possibilités. Il est donc vivement recommandé de ne pas surchiffrer avec le même algorithme deux fois de suite.
Une vulnérabilité pourrait survenir si les clés ne sont pas complètement/réellement aléatoires. Dans ce cas, en partant du principe que par malchance, la première clé et la deuxième clé sont les mêmes, et que le chiffrement est réversible, alors ce surchiffrement produira le message original !
Dans le cas où des algorithmes mutuellement distincts sont employés, avec des clés indépendantes et aléatoires, alors un surchiffrement est au moins aussi robuste que le premier algorithme de la chaîne ( James Massey, 1993). Si les chiffrements sont commutatifs — c'est le cas si le surchiffrement ne comprend que des chiffrements par flot additifs (utilisation par exemple de XOR pour chiffrer le texte) — alors la chaîne est aussi robuste que le chiffrement le plus fort.