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 est telle que :
oĂč 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 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 et distinctes satisfaisant la propriété suivante :
oĂč 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 256 possibilités. La probabilité de trouver une clé faible avec un tirage aléatoire parfait est de , 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 251 clés, un nombre qui peut paraßtre énorme mais insignifiant par rapport aux 2128 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 ().
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.