Clé faible
# Clé faible

En cryptologie, une clé faible est une clé telle que son utilisation dans une procédure de chiffrement produit un comportement indésirable. Les clés faibles sont généralement peu nombreuses par rapport à l'ensemble des clés possibles. De ce fait, la probabilité d'obtenir une clé faible avec des chiffrements modernes étant très petite (lors d'une génération de clé aléatoire) il est peu probable que cela induise un problème de sécurité. Toutefois, on considère qu'il n'est pas souhaitable qu'un chiffrement ait des clés faibles.

La définition exacte d'une clé faible peut toutefois varier selon le chiffrement considéré.

## Clés de DES

Dans le cadre de DES, on dénombre plusieurs « clés faibles » ainsi que des « clés semi-faibles ».

### Clés faibles

Avec DES, une clé faible $K~$ est telle que :

$E_{k}(E_{k}(M))=M~$

où $E~$ est l'opération de chiffrement. Chiffrer deux fois un message en clair avec la même clé produira ce message en clair. Ce surchiffrement agit donc comme la fonction identité ce qui est à proscrire. De manière formelle, on dit que $E_{k}~$ devient une involution.

Le fonctionnement de DES est propice à la présence de clés faibles. En effet, la clé de 56 bits produit 16 sous-clés, chacune d'entre elles est utilisée dans le tour correspondant. Les clés faibles de DES sont celles qui produisent 16 sous-clés identiques. Hors clés non impaires, c'est le cas pour les clés suivantes :

01 01 01 01 01 01 01 01

1F 1F 1F 1F 0E 0E 0E 0E

E0 E0 E0 E0 F1 F1 F1 F1

FE FE FE FE FE FE FE FE

Comme les sous-clés sont identiques et que DES est un réseau de Feistel, la fonction de chiffrement est également celle de déchiffrement. On a de facto un double chiffrement équivalent à un chiffrement suivi d'un déchiffrement. Le message en clair n'est donc pas chiffré et apparaît inchangé à la sortie.

### Clés semi-faibles

Les clés semi-faibles de DES sont des clés $K_{1}~$ et $K_{2}~$ distinctes satisfaisant la propriété suivante :

$E_{K_{1}}(E_{K_{2}}(M))=M~$

où $E~$ est l'opération de chiffrement DES. On compte 16 clés de ce type dans DES, dont les 4 clés faibles.

### Conséquences

De telles clés sont bien sûr à bannir mais leur présence ne rend pas DES moins robuste en théorie. DES a un espace de clés qui contient $2^{56}$ possibilités. La probabilité de trouver une clé faible avec un tirage aléatoire parfait est de ${\frac {4}{2^{56}}}=5,55111512\cdot 10^{-17}$, c'est un événement hautement improbable. On peut aussi simplement tester la clé pour vérifier qu'elle n'est pas faible. DES est un chiffrement qui a été passablement cryptanalysé et les clés faibles sont un problème qui a été relégué au deuxième plan puisqu'il est désormais possible de mener une recherche exhaustive des clés de DES.

## Autres chiffrements

La liste est incomplète mais plusieurs chiffrements par bloc possèdent des clés faibles :

* IDEA, les clés faibles sont identifiables avec une attaque par texte clair choisi, la relation entre les bits du texte clair et ceux du texte chiffré devient prévisible. Des publications de Joan Daemen en 1993 ont confirmé les risques d'avoir des clés avec de longues séquences de bits nuls (plus de 14 bits nuls consécutifs). Daemen a montré que la classe de clés faibles comptait $2^{51}$ clés, un nombre qui peut paraître énorme mais insignifiant par rapport aux $2^{128}$ clés possibles. La probabilité d'obtenir une clé faible dans IDEA est alors de $2^{-76}$ ce qui est inférieur à la probabilité d'une clé faible dans DES. Les clés faibles étant faciles à détecter, cette découverte ne pose pas un problème majeur en pratique.
* Blowfish, les clés faibles produisent de mauvaises S-Boxes puisque ces substitutions dépendent de la clé. Il existe une attaque par texte clair choisi sur une version réduite de Blowfish qui est facilitée par l'utilisation des clés faibles.
* RC4, un chiffrement par flot n'est pas à l'abri non plus des clés faibles. Les clés qui commencent par « 00 00 FD » ont 14 % de chance de produire une sortie qui commence par « 00 00 ».

Aucune clé faible n'a été découverte dans AES pour l'instant (juillet 2005).

## Buts lors de la conception

L'élimination des clés faibles est un but lors de la conception d'un chiffrement. Toutefois, si les clés faibles sont facilement identifiables et ne sont pas à l'origine d'attaques alors leur présence peut être tolérée. Un algorithme dont les clés faibles sont inconnues ou difficiles à établir n'inspirera pas confiance.

Plusieurs moyens pour empêcher l'utilisation d'une clé faible :

* vérifier la clé générée et la comparer à une liste
* empêcher la création des clés faibles directement au sein de l'algorithme
* si les clés faibles ne sont pas connues, on peut procéder à un double chiffrement et vérifier que le résultat est bien chiffré
* disposer d'un excellent générateur de nombres pseudo-aléatoires réduit les chances d'obtenir de mauvaises clés (si elles sont peu nombreuses)

Un grand nombre de clés faibles est une faille dans toute conception cryptographique car la chance de les obtenir aléatoirement augmente. De plus, les procédures de vérification seront plus longues avec une liste à parcourir, etc. Les clés faibles sont un problème quand l'adversaire peut contrôler les clés utilisées. C'est le cas par exemple dans les fonctions de hachage cryptographiques qui ont une fonction de compression basée sur un chiffrement.

