Le chif­fre­ment est une méthode per­met­tant de traduire, à l’aide d’une clé, du texte brut en une chaîne de ca­rac­tères in­com­pré­hen­sible. Dans le meilleur des cas, le contenu du chif­fre­ment ainsi obtenu n’est ac­ces­sible qu’à ceux qui peuvent défaire le chif­fre­ment à l’aide de la clé. Les termes « plaintext » et « cryp­to­gramme » peuvent être con­si­dé­rés comme des dé­ve­lop­pe­ments his­to­riques. En plus des messages texte, les tech­niques modernes de chif­fre­ment peuvent également être ap­pli­quées à d’autres in­for­ma­tions élec­tro­niques, comme les messages vocaux, les fichiers images ou le code d’un programme.

Le chif­fre­ment est utilisé pour protéger les fichiers, lecteurs ou ré­per­toires contre un accès non désiré, ou pour trans­mettre con­fi­den­tiel­le­ment des données. Même dans l’Antiquité, on utilisait des méthodes de chif­fre­ment simples, qui se li­mi­taient prin­ci­pa­le­ment au codage de l’in­for­ma­tion à protéger. Les ca­rac­tères in­di­vi­duels du texte en clair, des mots ou des phrases entières du message sont alors réar­ran­gés (trans­po­si­tion) ou remplacés par d’autres com­bi­nai­sons de ca­rac­tères (subs­ti­tu­tion).

Pour décoder un texte chiffré, le des­ti­na­taire doit connaître la règle selon laquelle le texte a été encodé. Les per­mu­ta­tions dans le cadre des pro­cé­dures de trans­po­si­tion sont gé­né­ra­le­ment ef­fec­tuées à l’aide d’une matrice. Pour pouvoir réécrire un chif­fre­ment en texte clair, la matrice de trans­po­si­tion doit être connue ou bien re­cons­truite. Les pro­cé­dures de subs­ti­tu­tion sont basées sur une as­sig­na­tion tabulaire de ca­rac­tères et de chiffres en clair, sous la forme d’un livre-code secret.

L’une des premières méthodes de chif­fre­ment de ce type remonte à Jules César. Le chif­fre­ment César est basé sur la subs­ti­tu­tion mono al­pha­bé­tique. Pour protéger sa cor­res­pon­dance militaire contre les espions ennemis, le com­man­dant avisé a décalé les lettres de ses mots de trois rangs dans l’alphabet. Le résultat se pré­sen­tait ainsi :

Le nombre d’étapes par les­quelles les ca­rac­tères sont décalés peut être considéré comme une clé dans ce type de chif­fre­ment. Ce n’est pas un chiffre, mais la lettre cor­res­pon­dante dans l’alphabet. Un décalage de trois chiffres cor­res­pond à la touche « C ».

Alors que le chiffre de César (chif­fre­ment par décalage) est re­la­ti­ve­ment facile à com­prendre, les chif­fre­ments modernes reposent aujourd’hui sur des fonctions ma­thé­ma­tiques plus complexes, appelées al­go­rithmes, qui combinent plusieurs subs­ti­tu­tions et trans­mu­ta­tions, et sont pa­ra­mé­trées par des clés sous forme de mots de passe ou de codes binaires. Pour les cryp­toa­na­ly­seurs (code crackers), ces méthodes pré­sen­tent des obstacles beaucoup plus im­por­tants. De nombreux cryp­to­sys­tèmes établis sont con­si­dé­rés comme in­cas­sables par les moyens dis­po­nibles aujourd’hui.

Comment fonc­tionne le chif­fre­ment ?

Une méthode de chif­fre­ment repose es­sen­tiel­le­ment sur deux com­po­sants : un al­go­rithme cryp­to­gra­phique et au moins une clé secrète. Alors que l’al­go­rithme décrit la méthode de chif­fre­ment (par exemple « déplacer chaque lettre dans la séquence de l’alphabet »), la clé renvoie les pa­ra­mètres (par exemple « C = trois rangs »). Le chif­fre­ment peut donc être décrit comme un processus dans lequel un al­go­rithme cryp­to­gra­phique reçoit le texte en clair et une clé, dont il résulte un chif­fre­ment.

Clé digitale

Dans les méthodes modernes de chif­fre­ment, on utilise des clés nu­mé­riques sous forme de séquences de bits. Un critère essentiel pour la sécurité du chif­fre­ment est la longueur de clé en bits. Ceci spécifie la mesure lo­ga­rith­mique pour le nombre de com­bi­nai­sons de touches possibles. C’est ce qu’on appelle aussi la salle des clés. Plus l’espace clé est grand, plus il est résistant aux attaques de force brute, une méthode de dé­chif­fre­ment basée sur l’essai de toutes les com­bi­nai­sons possibles.

Les codes en chif­fre­ment de César attaqués par force brute peuvent être décryptés. Leur espace de clé est de 25, ce qui cor­res­pond à une longueur de clé in­fé­rieure à 5 bits. Un co­de­cra­cker n’a qu’à essayer 25 com­bi­nai­sons pour dé­chif­frer le texte en clair. Le chif­fre­ment de César n’est donc pas un obstacle sérieux. Les méthodes modernes de chif­fre­ment, d’autre part, utilisent des clés qui peuvent re­pré­sen­ter beaucoup plus d’états. La norme Advanced En­cryp­tion Standard (AES), par exemple, offre la pos­si­bi­lité de sé­lec­tion­ner des longueurs de clé de 128, 192 ou 256 bits. L’espace clé de cette procédure est donc important.

Même avec un chif­fre­ment 128 bits, 2128 si­tua­tions peuvent être re­pré­sen­tées. Cela cor­res­pond à plus de 340 sex­til­lions de com­bi­nai­sons de touches possibles. Si AES fonc­tionne avec 256 bits, le nombre de clés possibles est supérieur à 115 duo­dé­cil­liards. Même avec un équi­pe­ment technique approprié, il faudrait une éternité pour essayer toutes les com­bi­nai­sons possibles. Avec la tech­no­lo­gie dis­po­nible aujourd’hui, les attaques par force brute ne sont donc pas réa­li­sables sur la salle des clés AES.

Le principe de Kerck­hoffs

En raison des longueurs de clé communes, les attaques par force brute pour les méthodes modernes de chif­fre­ment ne sont plus une menace. Les co­de­brea­kers re­cherchent plutôt des fai­blesses dans l’al­go­rithme, ce qui permet de réduire le temps de calcul pour dé­chif­frer les données chiffrées. Une autre approche se concentre sur ce qu’on appelle les attaques de canaux latéraux, qui visent la mise en œuvre d’un cryp­to­sys­tème dans un dis­po­si­tif ou un logiciel. Le secret d’une procédure de chif­fre­ment est plutôt contre-productif pour sa sécurité.

Selon le principe de Kerckhoff, la sécurité d’un cryp­to­sys­tème ne repose pas sur le secret de l’al­go­rithme, mais sur celui de la clé. Dès 1883, Auguste Kerck­hoffs a formulé l’un des principes de la cryp­to­gra­phie moderne : afin de chiffrer un texte clair de manière fiable, il suffit de fournir une procédure ma­thé­ma­tique bien connue, bien décrite, avec des pa­ra­mètres secrets. Cette hypothèse est glo­ba­le­ment restée intacte à ce jour.

Comme beaucoup d’autres domaines de l’in­gé­nie­rie lo­gi­cielle, le dé­ve­lop­pe­ment des mé­ca­nismes de chif­fre­ment repose sur l’hypothèse que l’open source ne compromet pas la sécurité. Au contraire, une ap­pli­ca­tion con­sé­quente du principe de Kerckhoff conduit à une détection plus rapide des erreurs dans les al­go­rithmes cryp­to­gra­phiques, puisque les méthodes cor­res­pon­dantes doivent résister aux regards critiques des experts.

Expansion de clé : du mot de passe à la clé

Les uti­li­sa­teurs qui veulent chiffrer ou dé­chif­frer des données n’entrent gé­né­ra­le­ment pas en contact avec les clés, mais utilisent une chaîne de ca­rac­tères plus maniable : le mot de passe. Les mots de passe sécurisés con­tien­nent 8 à 12 ca­rac­tères combinant lettres, chiffres et ca­rac­tères spéciaux, et pré­sen­tent un avantage décisif sur les séquences de bits, puisque les uti­li­sa­teurs peuvent di­rec­te­ment s’en souvenir.

Cependant, les mots de passe ne con­vien­nent pas comme clés dans le contexte du chif­fre­ment, en raison de leur longueur réduite. De nom­breuses méthodes de chif­fre­ment con­tien­nent donc une étape in­ter­mé­diaire dans laquelle un mot de passe de n’importe quelle longueur est converti en une séquence de bits fixe cor­res­pon­dant au système de chif­fre­ment. Il existe par ailleurs des méthodes dans les­quelles les clés sont générées au hasard, dans la limite des pos­si­bi­li­tés tech­niques.

PBKDF2 (Password-Based Key De­ri­va­tion Function 2) est une méthode courante pour calculer les clés à partir des mots de passe. Dans le cadre de cette procédure, les mots de passe sont complétés par une chaîne de ca­rac­tères pseudo-aléa­toires, le salage, et ensuite mappés en séquences binaires de la longueur désirée, à l’aide de fonctions de hashtags cryp­to­gra­phiques.

Les fonctions de hachage sont des fonctions antichoc uni­di­rec­tion­nelles, c’est-à-dire des calculs re­la­ti­ve­ment faciles en soit, mais qui ne peuvent être inversés que dif­fi­ci­le­ment. En cryp­to­gra­phie, une procédure est dite sécurisée si dif­fé­rents hachages sont affectés à dif­fé­rents documents. Les mots de passe qui ont été convertis en clés grâce à des fonctions uni­di­rec­tion­nelles ne peuvent être re­cons­ti­tués qu’avec un effort de calcul con­si­dé­rable. Ceci est similaire à une recherche dans l’annuaire té­lé­pho­nique : s’il est facile de trouver le bon numéro de téléphone pour un nom donné, la recherche d’un nom par numéro de téléphone peut devenir un problème insoluble.

Le calcul ma­thé­ma­tique est effectué dans le cadre de PBKDF2 en plusieurs ité­ra­tions (ré­pé­ti­tions) pour protéger la clé ainsi générée contre les attaques de force brute. La valeur de sel augmente l’effort pour la re­cons­truc­tion d’un mot de passe basé sur des tables arc-en-ciel. C’est un schéma d’attaque dans lequel les codeurs utilisent des valeurs de hachage stockées pour iden­ti­fier un mot de passe inconnu.

Il existe d’autres méthodes de hachage de mot de passe comme scrypt, bcrypt et LM hash. Toutefois, cette dernière est con­si­dé­rée comme obsolète et in­cer­taine.

Le problème de dis­tri­bu­tion de clés

L’un des problèmes prin­ci­paux en cryp­to­lo­gie réside dans le fait de savoir comment les in­for­ma­tions peuvent être chiffrées à un endroit et en clair à un autre. Jules César était déjà confronté au problème de la dis­tri­bu­tion des clés. Si le com­man­dant voulait envoyer un message chiffré de Rome au front ger­ma­nique, il devait s’assurer que le des­ti­na­taire était capable de dé­chif­frer le message secret. La seule solution était de trans­mettre par un messager non seulement le texte secret, mais aussi la clé. Mais comment la clé peut-elle être remise sans risquer de tomber entre les mains de ces tiers ?

C’est la même question qui préoccupe encore aujourd’hui les cryp­to­logues lorsqu’il s’agit de trans­mettre des données chiffrées sur Internet. Des sug­ges­tions de solutions ont été in­cor­po­rées dans le dé­ve­lop­pe­ment de divers cryp­to­sys­tèmes et pro­to­coles d’échange de clés. Le problème de dis­tri­bu­tion clé des cryp­to­sys­tèmes sy­mé­triques peut être considéré comme la prin­ci­pale mo­ti­va­tion du dé­ve­lop­pe­ment des méthodes de chif­fre­ment asy­mé­trique.

Vers la clas­si­fi­ca­tion des méthodes de chif­fre­ment

Dans la cryp­to­lo­gie moderne, une dis­tinc­tion fon­da­men­tale est faite entre les méthodes de chif­fre­ment sy­mé­trique et asy­mé­trique. La clas­si­fi­ca­tion est basée sur la ma­ni­pu­la­tion des clés.

Pour les cryp­to­sys­tèmes sy­mé­triques, la même clé est utilisée pour le chif­fre­ment et le dé­chif­fre­ment des données chiffrées. Si deux parties com­mu­ni­cantes veulent échanger des données chiffrées, il faut trouver un moyen de trans­mettre se­crè­te­ment la clé partagée. Dans les cryp­to­sys­tèmes asy­mé­triques, par contre, chaque par­te­naire de com­mu­ni­ca­tion génère sa propre paire de clés : une clé publique et une clé privée.

Si des méthodes de chif­fre­ment sy­mé­trique et asy­mé­trique sont utilisées en com­bi­nai­son, on les appelle des méthodes hybrides.

Méthodes de chif­fre­ment sy­mé­trique

Jusqu’aux années 1970, le chif­fre­ment de l’in­for­ma­tion était basé sur des cryp­to­sys­tèmes sy­mé­triques dont les origines remontent à des méthodes anciennes comme le chif­fre­ment de César. Le principe de base du chif­fre­ment sy­mé­trique est que le chif­fre­ment et le dé­chif­fre­ment se font à l’aide de la même clé. Si deux parties veulent com­mu­ni­quer de façon chiffrée, l’ex­pé­di­teur et le des­ti­na­taire doivent avoir une copie de la clé commune. Afin de protéger les in­for­ma­tions chiffrées contre l’accès par des tiers, la clé sy­mé­trique est gardée secrète. Il s’agit donc également d’une procédure de clé privée.

Alors que les méthodes de chif­fre­ment sy­mé­trique clas­siques fonc­tion­nent au niveau de la lettre pour convertir du texte brut en textes secrets, le chif­fre­ment se fait au niveau du bit dans les systèmes de chif­fre­ment assistés par or­di­na­teur. On distingue le chif­fre­ment de puissance du chif­fre­ment de bloc :

  • Chif­fre­ment de puissance : chaque caractère ou bit du texte en clair est lié à un caractère ou bit du flux de clés, et ainsi traduit en un caractère de sortie chiffré.
  • Chif­fre­ment de bloc : les ca­rac­tères ou bits à chiffrer sont combinés en blocs de longueur fixe et mappés sur un chif­fre­ment de longueur fixe.

Les méthodes courantes de chif­fre­ment des cryp­to­sys­tèmes sy­mé­triques sont des opé­ra­tions re­la­ti­ve­ment simples, telles que les subs­ti­tu­tions et les trans­po­si­tions, qui sont combinées dans des méthodes modernes et ap­pli­quées au texte simple en plusieurs cycles suc­ces­sifs (ité­ra­tions). De plus, les additions, les mul­ti­pli­ca­tions, les opé­ra­tions arith­mé­tiques mo­du­laires et les opé­ra­tions XOR sont intégrées dans des al­go­rithmes de chif­fre­ment sy­mé­triques modernes.

Les méthodes de chif­fre­ment sy­mé­trique bien connues sont la norme de chif­fre­ment des données (DES) désormais obsolète et son suc­ces­seur, l’Advanced En­cryp­tion Standard (AES).

Data En­cryp­tion Standard (DES)

DES est une méthode de chif­fre­ment sy­mé­trique dé­ve­lop­pée par IBM dans les années 1970 et nor­ma­li­sée en 1977 par le National Institute of Standards and Tech­no­logy (NIST) nord-américain. DES est la première méthode de chif­fre­ment assistée par or­di­na­teur pour établir les débuts de la cryp­to­gra­phie moderne. La norme est libre de droits de brevet, mais en raison de la petite longueur de clé de 64 bits (ac­tuel­le­ment seulement 56 bits), elle est main­te­nant con­si­dé­rée comme obsolète. Dès 1994, le cryp­to­sys­tème était divisé avec douze stations de travail HP-9735 et un temps de calcul de 50 jours. Grâce à la tech­no­lo­gie de pointe actuelle, une clé DES peut être dé­chif­frée en quelques heures par des attaques de force brute.

L’al­go­rithme sy­mé­trique fonc­tionne comme un chif­fre­ment bloc au niveau du bit. Le texte brut est divisé en blocs de 64 bits, qui sont encodés in­di­vi­duel­le­ment avec une clé 64 bits. Ainsi, le texte brut 64 bits est traduit en texte codé 64 bits. Comme chaque huitième bit de la clé agit comme un bit de parité, seuls 56 bits sont ef­fec­ti­ve­ment dis­po­nibles pour le chif­fre­ment.

L’al­go­rithme de chif­fre­ment DES est un réseau de Feistel, basé sur une com­bi­nai­son de subs­ti­tu­tions et de trans­po­si­tions, qui sont ef­fec­tuées en 16 ité­ra­tions. La procédure, qui porte le nom de l’employé d’IBM Horst Feistel, peut être décrite en quatre étapes :

  1. Per­mu­ta­tion d’entrée : le bloc de texte 64 bits est soumis à une per­mu­ta­tion d’entrée qui change la séquence des bits. Le résultat de cette per­mu­ta­tion est écrit sur deux registres 32 bits. Sont ainsi créés un demi-bloc gauche (L) et un demi-bloc droit (R).
     
  2. Per­mu­ta­tion des clés : les 56 bits de la clé qui sont im­por­tants pour le chif­fre­ment sont également soumis à une per­mu­ta­tion et sont ensuite divisés en deux blocs de 28 bits (C et D). Une clé ronde est générée à partir des deux blocs de touches C et D pour chacune des 16 ité­ra­tions. Pour cela, les bits des deux demi-blocs sont décalés cy­cli­que­ment de 1 ou 2 bits vers la gauche. Ceci permet de s’assurer qu’une clé ronde dif­fé­rente est incluse dans chaque cycle de chif­fre­ment. Les deux demi-blocs C et D sont ensuite mappés sur une clé ronde de 48 bits.
     
  3. Rondes de chif­fre­ment : chaque cycle de chif­fre­ment comprend les étapes a) à d). Un demi-bloc R et une clé ronde sont utilisés pour chaque boucle dans le chif­fre­ment. Le demi-bloc L est d’abord omis.
  • Expansion : le demi-bloc R est étendu à un bloc 48 bits par expansion. À cette fin, les 32 bits du demi-bloc sont divisés en groupes de 4 bits dans le cadre de l’expansion, puis par­tiel­le­ment dupliqués et permutés selon le schéma suivant :
  • Connexion XOR d’un bloc de données et d’une clé ronde : dans chaque cycle de chif­fre­ment, le bloc 48 bits R étendu est relié à une clé ronde de 48 bits au moyen d’une opération XOR. Le résultat de l’opération XOR est à nouveau un bloc de 48 bits.
     
  • Boîtes S (boîtes de subs­ti­tu­tion) : après la liaison XOR, le bloc 48 bits est divisé en huit blocs 6 bits, remplacé par huit blocs 4 bits à l’aide de S-Box et combiné en un bloc 32 bits. Le résultat des cases de subs­ti­tu­tion est à nouveau soumis à une per­mu­ta­tion.
     
  • Com­bi­nai­son XOR de R-Block et L-Block : après chaque cycle de chif­fre­ment, le résultat des S-Boxes est lié au L-Block pré­cé­dem­ment inutilisé à l’aide de XOR. Le résultat est un bloc 32 bits qui entre dans le deuxième cycle de chif­fre­ment comme un nouveau bloc R. Le bloc R du premier tour est utilisé comme bloc L du deuxième tour.
  1. Per­mu­ta­tion de sortie : si les 16 rondes de chif­fre­ment ont été exécutées, les blocs L et R sont combinés en un bloc 64 bits et soumis à une per­mu­ta­tion de sortie inversée à la per­mu­ta­tion d’entrée. Le texte clair est main­te­nant chiffré.

Le diagramme suivant montre une re­pré­sen­ta­tion sché­ma­tique de l’al­go­rithme DES. Les liens XOR sont marqués comme des cercles rouges avec des croix blanches.

Le dé­chif­fre­ment d’un texte secret chiffré par DES suit le même schéma dans l’ordre inverse.

L’une des prin­ci­pales critiques à DES est la faible longueur de clé de 56 bits, ce qui se traduit par un espace de clé re­la­ti­ve­ment petit. Ceci ne résiste plus aux attaques de force brute avec la puissance de calcul dis­po­nible aujourd’hui. En outre, la méthode de per­mu­ta­tion des clés, qui produit 16 touches rondes presque iden­tiques, est con­si­dé­rée comme trop faible.

Avec Triple-DES (3DES), une variante de DES a été dé­ve­lop­pée, dans laquelle le processus de chif­fre­ment est exécuté en trois cycles con­sé­cu­tifs. Cependant, la longueur de clé effective de 3DES n’est que de 112 bits, ce qui reste inférieur à la norme minimale actuelle de 128 bits. De plus, 3DES est nettement plus gourmand en calcul que DES.

La norme de chif­fre­ment des données a donc été largement remplacée. L’al­go­rithme de chif­fre­ment également sy­mé­trique Advanced En­cryp­tion Standard est considéré comme le suc­ces­seur.

Advanced En­cryp­tion Standard (AES)

Dans les années 1990, il est devenu évident que la norme de chif­fre­ment DES la plus fré­quem­ment utilisée n’était plus en mesure de faire face aux évo­lu­tions tech­niques. Une nouvelle norme de chif­fre­ment était né­ces­saire. Le suc­ces­seur de l’al­go­rithme de Rijndael, nommé d’après le nom de ses dé­ve­lop­peurs Vincent Rijmen et Joan Daemen (débat: « Reindahl »), s’est imposé comme le suc­ces­seur - une procédure qui a été acceptée dans un appel d’offres public pour sa sécurité, sa flexi­bi­lité et ses per­for­mances et qui a été certifiée par le NIST en tant que norme de chif­fre­ment avancée (AES) à la fin de l’année 2000.

AES divise également le texte brut à chiffrer en blocs. Ainsi, ce cryp­to­sys­tème est, à l’instar de DES, basé sur le chif­fre­ment de bloc. La norme prend en charge les clés 128, 192 et 256 bits. Cependant, au lieu de blocs 64 bits, AES utilise des blocs beaucoup plus grands de 128 bits qui sont encodés en plusieurs cycles con­sé­cu­tifs, à l’aide d’un réseau de per­mu­ta­tion de subs­ti­tu­tion (SPN). Le suc­ces­seur DES utilise également une nouvelle clé ronde pour chaque cycle de chif­fre­ment, qui est dérivée ré­cur­si­ve­ment de la clé initiale et liée au bloc de données à chiffrer en utilisant XOR. Le processus de chif­fre­ment peut être divisé en quatre étapes :

  1. Expansion des clés : comme DES, AES utilise une nouvelle clé ronde dans chaque boucle de chif­fre­ment. Ceci est dérivé de la clé initiale par récursion. La clé initiale est étendue à une longueur qui vous permet de mapper le nombre requis de touches rondes de 128 bits. Chaque clé ronde est donc basée sur une sous-section de la clé initiale étendue. Le nombre de touches rondes né­ces­saires est le nombre de tours de chif­fre­ment (R) y compris le tour final plus une touche ronde pour le tour pré­li­mi­naire (nombre de touches rondes = R + 1).
     
  2. Phase pré­li­mi­naire : lors de la ronde pré­li­mi­naire, le bloc d’entrée 128 bits est transféré dans une table bi­di­men­sion­nelle (tableau) et relié à la première clé ronde à l’aide de XOR (KeyAd­di­tion). Le tableau contient 4 lignes et 4 colonnes. Chaque cellule contient donc un octet (8 bits) du bloc à chiffrer.
     
  3. Rondes de chif­fre­ment : le nombre de rondes de chif­fre­ment dépend de la longueur de clé utilisée : 10 rondes pour AES128, 12 rondes pour AES192 et 14 rondes pour AES256 :
    1. Sous-octets : les sous-octets sont une subs­ti­tu­tion mo­noal­pha­bé­tique. Chaque octet du bloc à chiffrer est remplacé par un équi­valent en utilisant une S-Box.
    2. Les rangées de quarts : dans le contexte de la trans­for­ma­tion ShiftRow, les octets dans les cellules du réseau (voir le tour pré­li­mi­naire) sont déplacés cy­cli­que­ment vers la gauche.
    3. Mix­Co­lumns : avec Mix­Co­lumns, l’al­go­rithme AES inclut une trans­for­ma­tion dans laquelle les données sont fu­sion­nées dans les colonnes du tableau. Cette étape est basée sur un nouveau calcul de chaque cellule in­di­vi­duelle. Pour cela, les colonnes de la matrice sont soumises à une mul­ti­pli­ca­tion ma­tri­cielle et les résultats sont liés par XOR.
    4. KeyAd­di­tion : à la fin de chaque cycle de chif­fre­ment, un autre KeyAd­di­tion a lieu. Comme dans le tour pré­li­mi­naire, il est basé sur un lien XOR entre le bloc de données et la touche ronde courante.
       
  4. Final Round : le dernier round est le dernier round de chif­fre­ment. Con­trai­re­ment aux cycles pré­cé­dents, il ne contient pas de trans­for­ma­tions Mix­Co­lumns et ne comprend donc que les opé­ra­tions SubBytes, ShiftRows et KeyAd­di­tion. Le résultat du dernier tour est le texte secret.

Le dé­chif­fre­ment des données chiffrées AES est basé sur l’in­ves­tis­se­ment de l’al­go­rithme de chif­fre­ment. En plus de la séquence d’étapes, ceci se réfère également aux opé­ra­tions ShiftRow, Mix­Co­lumns et SubBytes, dont la direction est également inversée.

AES est certifié hautement sécurisé grâce à son al­go­rithme. À ce jour, aucune attaque pratique n’est connue. Les attaques par force brute sont inef­fi­caces en raison de la longueur de clé d’au moins 128 bits. De plus, des opé­ra­tions telles que ShiftRows et Mix­Co­lumns ga­ran­tis­sent un mixage optimal des bits : dans le résultat, chaque bit dépend de la clé. De plus, le cryp­to­sys­tème convainc par sa sim­pli­cité d’im­plé­men­ta­tion et sa grande vitesse. AES est utilisé comme norme de chif­fre­ment pour WPA2, SSH et IPSec ainsi que comme al­go­rithme de chif­fre­ment pour les archives de fichiers com­pres­sés telles que 7-Zip ou RAR.

Cependant, les données chiffrées AES ne sont protégées contre l’accès par des tiers que si la clé reste secrète. Comme la même clé est utilisée pour le chif­fre­ment et le dé­chif­fre­ment, le cryp­to­sys­tème est affecté par le problème de dis­tri­bu­tion des clés comme toute autre méthode sy­mé­trique. L’uti­li­sa­tion en toute sécurité d’AES est donc limitée aux domaines d’ap­pli­ca­tion qui ne né­ces­si­tent pas d’échange de clés ou qui le per­met­tent via un canal sécurisé.

Toutefois, la com­mu­ni­ca­tion chiffrée sur Internet exige que les données soient chiffrées sur un or­di­na­teur et dé­chif­frées sur un autre. Ici, des cryp­to­sys­tèmes asy­mé­triques se sont installés, qui per­met­tent un échange sécurisé de clés sy­mé­triques ou de fonctions sans l’échange d’une clé commune.

Les cryp­to­sys­tèmes sy­mé­triques MARS, RC6, Serpent et Twofish, qui sont également basés sur le chif­fre­ment par blocs et ont été parmi les fi­na­listes de l’appel d’offres AES, offrent une al­ter­na­tive à AES. Le pré­dé­ces­seur de deux poissons, Blowfish, est toujours utilisé. Le système de chif­fre­ment élec­trique Salsa20, développé en 2005 par Daniel J. Bernstein, figure parmi les fi­na­listes du projet européen eSTREAM.

Méthodes de chif­fre­ment asy­mé­trique

Alors que la même clé est utilisée pour les cryp­to­sys­tèmes sy­mé­triques des deux côtés de la com­mu­ni­ca­tion chiffrée, les deux parties d’une com­mu­ni­ca­tion chiffrée asy­mé­trique génèrent une paire de clés par côté. Chaque abonné de com­mu­ni­ca­tion dispose ainsi de deux clés : une clé publique et une clé privée. Pour com­mu­ni­quer sous forme chiffrée, chaque partie doit divulguer sa clé publique. Ceci se fait gé­né­ra­le­ment via des serveurs clés. C’est ce qu’on appelle une procédure à clé publique. La clé privée, en revanche, reste secrète. Ceci montre la force des cryp­to­sys­tèmes asy­mé­triques : con­trai­re­ment au chif­fre­ment sy­mé­trique, la clé secrète n’est jamais donnée hors de contrôle à aucun moment.

Dans le contexte du chif­fre­ment asy­mé­trique, les clés publiques sont utilisées pour le chif­fre­ment. Ils per­met­tent également de vérifier les sig­na­tures nu­mé­riques et les uti­li­sa­teurs. Les clés privées, quant à elles, sont utilisées pour le dé­chif­fre­ment et per­met­tent de générer des sig­na­tures nu­mé­riques ou de s’au­then­ti­fier contre d’autres uti­li­sa­teurs.

Voici un exemple :

L’uti­li­sa­teur A souhaite que l’uti­li­sa­teur B envoie un message chiffré. La clé publique de B permet à A de chiffrer un message de telle sorte qu’il ne peut être déchiffré qu’avec la clé privée de B. La clé publique de B permet à A de dé­chif­frer un message de telle sorte qu’il ne peut être déchiffré qu’avec la clé privée de B. La clé publique de B permet à A de dé­chif­frer un message de telle sorte qu’il ne peut être déchiffré qu’avec la clé privée de B. A part B, personne n’est capable de lire le message. Même A n’a aucun moyen de dé­chif­frer le message après chif­fre­ment.

L’avantage du chif­fre­ment asy­mé­trique est que tout le monde peut utiliser la clé publique de l’uti­li­sa­teur B pour chiffrer les messages, mais que seul B peut les dé­chif­frer avec sa clé secrète. Étant donné que seule la clé publique est échangée, il n’est pas né­ces­saire d’utiliser un canal protégé contre les ef­frac­tions.

L’un des in­con­vé­nients de cette méthode de chif­fre­ment, cependant, est que B ne peut pas être sûr que le message chiffré provient bien de A. En principe, un tiers (C) pourrait également utiliser la clé publique de B pour chiffrer les messages, par exemple, pour propager des logiciels mal­veil­lants. De plus, A ne peut pas être sûr qu’une clé publique est bien la clé de B. C pourrait également créer une clé publique et l’utiliser comme la clé de B pour in­ter­cep­ter les messages de A à B. Dans le cadre du chif­fre­ment asy­mé­trique, un mécanisme est donc né­ces­saire pour qu’un par­te­naire de com­mu­ni­ca­tion puisse vérifier l’au­then­ti­cité de l’autre.

Les cer­ti­fi­cats et sig­na­tures nu­mé­riques peuvent résoudre ce problème.

  • Cer­ti­fi­cats nu­mé­riques : afin de sécuriser les pro­cé­dures de chif­fre­ment asy­mé­trique, les par­te­naires de com­mu­ni­ca­tion ont la pos­si­bi­lité de faire au­then­ti­fier leurs clés publiques par une autorité de cer­ti­fi­ca­tion of­fi­cielle. Un standard commun pour les cer­ti­fi­cats de clés publiques est X. 509, qui est utilisé pour la trans­mis­sion de données chiffrées TLS/SSL via HTTPS ou dans le cadre du chif­fre­ment des e-mails via S/MIME, par exemple.
     
  • Sig­na­tures nu­mé­riques : alors que les cer­ti­fi­cats nu­mé­riques sont utilisés pour vérifier les clés publiques, les sig­na­tures nu­mé­riques sont utilisées pour iden­ti­fier sans équivoque l’ex­pé­di­teur d’un message chiffré. Pour ce faire, il utilise sa clé privée pour générer une signature. Le des­ti­na­taire vérifie ensuite cette signature à l’aide de la clé publique de l’ex­pé­di­teur. L’au­then­ti­cité des sig­na­tures nu­mé­riques peut être garantie par des in­fras­truc­tures à clé publique (ICP) hié­rar­chi­que­ment struc­tu­rées. Le système DE-Mail en est un exemple. Une al­ter­na­tive dé­cen­tra­li­sée à l’ICP hié­rar­chique est le Web of Trust (WOT), un réseau dans lequel les uti­li­sa­teurs se vérifient di­rec­te­ment et in­di­rec­te­ment.

La première pu­bli­ca­tion d’une méthode de chif­fre­ment asy­mé­trique date de 1977, par les ma­thé­ma­ti­ciens Rivest, Shamir et Adleman. La procédure RSA nommée d’après les in­ven­teurs est basée sur des fonctions jetables avec trappe et peut être utilisée pour le chif­fre­ment des données ainsi que les pro­cé­dures de signature.

Rivest, Shamir, Adleman (RSA)

Le chif­fre­ment RSA est considéré comme l’une des pro­cé­dures de clé publique les plus sûres et les mieux décrites. L’idée de chiffrer en utilisant une clé de chif­fre­ment publique et une clé de dé­chif­fre­ment secrète est basée sur les cryp­to­logues Whitfield Diffie et Martin Hellman. Publiées en 1976, avec l’échange de clés Diffie-Hellman, elles per­met­tent à deux par­te­naires de com­mu­ni­ca­tion de s’accorder sur une clé secrète via un canal non sécurisé. Les cher­cheurs se sont appuyés sur le puzzle Merkles développé par Ralph Merkle. C’est ce qu’on appelle aussi l’échange de clés Diffie-Hellman-Merkle (DHM).

Les cryp­to­gènes uti­li­saient des fonctions ma­thé­ma­tiques uni­di­rec­tion­nelles, faciles à exécuter mais qui ne peuvent être inversées, là encore, très dif­fi­ci­le­ment. Aujourd’hui encore, l’échange de clés qui porte leur nom est toujours utilisé pour négocier des clés secrètes dans les cryp­to­sys­tèmes sy­mé­triques. Le concept de la trappe est un autre mérite du duo de recherche. Dans la pu­bli­ca­tion de l’échange de clés Diffie-Hellman, des abré­via­tions cachées sont déjà men­tion­nées : elles devraient permettre d’accélérer l’inversion d’une fonction uni­di­rec­tion­nelle. Diffie et Hellmann n’ont fourni aucune preuve concrète, mais leur théorie de la trappe a encouragé de nombreux cryp­to­logues à mener leurs propres enquêtes.

Rivest, Shamir et Adleman ont également cherché des abré­via­tions pour les fonctions à sens unique, à l’origine avec l’objectif de réfuter la théorie de la trappe porte. Cependant, leurs re­cherches se sont dé­ve­lop­pées dans une direction dif­fé­rente et ont abouti à la méthode de chif­fre­ment qui a fi­na­le­ment été nommée d’après eux. Aujourd’hui, RSA est considéré comme le premier al­go­rithme, publié scien­ti­fi­que­ment, qui permet la trans­mis­sion de données chiffrées sans échange de clé secrète.

Le chif­fre­ment RSA utilise un al­go­rithme basé sur la mul­ti­pli­ca­tion de grands nombres premiers. Bien qu’il n’y ait gé­né­ra­le­ment pas de problème à mul­ti­plier deux nombres premiers par 100, 200 ou 300 chiffres, il n’y a toujours pas d’al­go­rithme efficace capable de dé­com­po­ser le résultat d’une telle opération de calcul en ses facteurs premiers dans l’étape inverse. La fac­to­ri­sa­tion en nombres premiers peut être illustrée par l’exemple ci-dessous.

Si vous mul­ti­pliez les nombres premiers 14.629 et 30.491, vous obtenez le produit 446.052.839, qui n’a que quatre diviseurs : 1, lui-même et les deux nombres premiers qui ont été mul­ti­pliés. Si vous supprimez les deux premiers diviseurs, puisque chaque nombre est divisible par 1 et par lui-même, vous obtenez les valeurs initiales 14.629 et 30.491.

Ce schéma est la base de la gé­né­ra­tion des clés RSA. Les clés publiques et privées re­pré­sen­tent deux paires de nombres :

  • Clé publique : (e, N)
  • Clé privée : (d, N)

N est le module RSA. Ceci est contenu dans les deux clés et les résultats du produit de deux nombres premiers très grands p et q (N = p x q) sé­lec­tion­nés au hasard.

Pour générer la clé publique, vous avez également besoin de e, un nombre qui est choisi au hasard avec certaines res­tric­tions. Si vous combinez N et e, vous obtenez la clé publique ac­ces­sible à chaque abonné de com­mu­ni­ca­tion en texte clair.

Pour générer la clé privée, N et d sont né­ces­saires. d est une valeur résultant des nombres premiers p et q générés aléa­toi­re­ment ainsi que du nombre aléatoire e, qui sont calculés sur la base de la fonction phi d’Euler (φ).

Les nombres premiers inclus dans le calcul de la clé privée doivent être tenus secrets afin de garantir la sécurité du chif­fre­ment RSA. Le produit des deux nombres premiers, d’autre part, peut être utilisé en texte clair dans la clé publique, puisqu’il est supposé qu’il n’y a pas d’al­go­rithme efficace aujourd’hui qui peut dé­com­po­ser le produit de nombres premiers très grands en ses facteurs dans le temps pertinent. Il n’est donc pas possible de calculer p et q à partir de N. Sauf si vous pouvez rac­cour­cir le calcul. Une telle trappe re­pré­sente la valeur d, qui n’est connue que du pro­prié­taire de la clé privée.

La sécurité de l’al­go­rithme RSA dépend fortement du progrès technique. La puissance de calcul des or­di­na­teurs double tous les deux ans. Il n’est donc pas exclu qu’une méthode efficace de fac­to­ri­sa­tion primaire soit dis­po­nible dans un avenir pré­vi­sible à l’échelle ha­bi­tuelle. Dans ce cas, RSA offre la pos­si­bi­lité d’adapter l’al­go­rithme au dé­ve­lop­pe­ment technique en utilisant des nombres premiers encore plus grands pour calculer les clés.

Pro­cé­dures d'iden­ti­fi­ca­tion par pièces d'iden­tité à clé publique

La faiblesse centrale des systèmes de chif­fre­ment asy­mé­trique est l’au­then­ti­fi­ca­tion des uti­li­sa­teurs. Dans les pro­cé­dures tra­di­tion­nelles de clés publiques, une clé publique n’a aucun lien avec l’identité de son uti­li­sa­teur. Si une tierce partie est capable de se faire passer pour l’une des parties im­pli­quées dans la trans­mis­sion de données chiffrées au moyen de sa propre clé publique, l’ensemble du système de chif­fre­ment peut être exploité sans attaquer di­rec­te­ment l’al­go­rithme ou une clé de dé­chif­fre­ment privée. Dès 1984, Adi Shamir, co-dé­ve­lop­peur de la RSA, a proposé un cryp­to­sys­tème basé ID et sur l’approche asy­mé­trique, mais qui tente de compenser sa vul­né­ra­bi­lité.

Dans le cadre du chif­fre­ment basé sur l’identité (IBE), la clé publique d’un par­te­naire de com­mu­ni­ca­tion n’est pas générée en fonction de la clé privée, mais calculée à partir d’un iden­ti­fiant unique. Selon le contexte, il peut être approprié d’utiliser une adresse e-mail ou un domaine, par exemple. L’au­then­ti­fi­ca­tion des clés publiques par les or­ga­nismes officiels de cer­ti­fi­ca­tion n’est plus né­ces­saire. Cependant, leur place est occupée par une autre instance : le Gé­né­ra­teur de Clé Privée (PKG). Il s’agit d’un al­go­rithme central qui permet d’attribuer au des­ti­na­taire d’un message chiffré une clé de dé­chif­fre­ment associée à son identité.

La théorie du chif­fre­ment basé sur l’ID résout donc un problème fon­da­men­tal des cryp­to­sys­tèmes asy­mé­triques, mais introduit deux autres lacunes de sécurité : un point central de la critique se pose de la question de savoir comment la clé de dé­chif­fre­ment privée doit être trans­fé­rée du PKG au des­ti­na­taire du message chiffré. C’est là que se pose le problème bien connu de la dis­tri­bu­tion des clés. Un autre in­con­vé­nient des méthodes basées sur l’ID est le fait qu’avec le PKG, il existe une instance sup­plé­men­taire qui reconnaît la clé de dé­chif­fre­ment en plus du des­ti­na­taire d’un message chiffré. Il ne s’agit donc pas par dé­fi­ni­tion d’une clé privée et elle peut donc être utilisée à mauvais escient. Théo­ri­que­ment, le PKG a la pos­si­bi­lité de dé­chif­frer tous les messages sans au­to­ri­sa­tion. Ceci peut être évité en générant la paire de clés avec un logiciel open source sur votre propre or­di­na­teur.

La méthode ID la plus connue est basée sur Dan Boneh et Matthew K. Franklin.

Méthode hybride

Le chif­fre­ment hybride est la connexion entre les systèmes cryp­to­gra­phiques sy­mé­triques et asy­mé­triques dans le contexte de la trans­mis­sion de données sur Internet. L’objectif de cette com­bi­nai­son est de compenser les fai­blesses d’un système par les forces de l’autre.

Les cryp­to­sys­tèmes cryp­to­gra­phiques sy­mé­triques tels qu’AES (Advanced En­cryp­tion Standard) sont con­si­dé­rés comme sécurisés dans l’état actuel de la technique et per­met­tent de traiter ra­pi­de­ment et ef­fi­ca­ce­ment même de grandes quantités de données. Cependant, la con­cep­tion de l’al­go­rithme basé sur une clé privée commune, qui doit être échangée entre le récepteur et l’ex­pé­di­teur d’un message chiffré, pose le problème de la dis­tri­bu­tion des clés pour les méthodes sy­mé­triques. Ceci peut être résolu par des cryp­to­sys­tèmes asy­mé­triques. Des pro­cé­dures telles que RSA sont basées sur une sé­pa­ra­tion stricte des clés publiques et privées, per­met­tant ainsi d’éviter le transfert d’une clé privée.

Cependant, RSA offre une pro­tec­tion fiable contre la cryp­ta­na­lyse seulement avec une longueur de clé suf­fi­sam­ment grande d’au moins 1 976 bits. Il en résulte de longs processus de calcul qui dis­qua­li­fient l’al­go­rithme de chif­fre­ment et de dé­chif­fre­ment de grandes quantités de données. De plus, le texte secret à trans­mettre après le chif­fre­ment RSA est con­si­dé­ra­ble­ment plus grand que le texte brut original.

Dans le chif­fre­ment hybride, les al­go­rithmes asy­mé­triques ne sont donc pas utilisés pour chiffrer les données uti­li­sa­teur, mais pour sécuriser la trans­mis­sion d’une clé de session sy­mé­trique sur un canal public non protégé. Ceci permet de dé­chif­frer ef­fi­ca­ce­ment les chiffres chiffrés en utilisant des al­go­rithmes sy­mé­triques.

Le processus de chif­fre­ment hybride peut être décrit en trois étapes :

  1. Gestion des clés : dans les méthodes hybrides, le chif­fre­ment sy­mé­trique d’un message est encadré par une méthode de chif­fre­ment asy­mé­trique. Pour cela, il faut générer à la fois des touches asy­mé­triques (a) et sy­mé­triques (b) :
    1. Avant la trans­mis­sion des données chiffrées, les deux par­te­naires de com­mu­ni­ca­tion génèrent une paire de clés asy­mé­trique : une clé publique et une clé privée. Par la suite, les clés publiques sont échangées et sé­cu­ri­sées au mieux par un mécanisme d’au­then­ti­fi­ca­tion. La paire de clés asy­mé­triques est utilisée pour chiffrer et dé­chif­frer une clé de session sy­mé­trique et est gé­né­ra­le­ment utilisée plusieurs fois.
    2. Le chif­fre­ment et le dé­chif­fre­ment du texte clair se fait à l’aide de la clé de session sy­mé­trique. Il est régénéré par l’ex­pé­di­teur d’un message lors de chaque processus de chif­fre­ment.
       
  2. Chif­fre­ment : si un message (complet) doit être transmis de manière sécurisée sur Internet, l’ex­pé­di­teur génère d’abord une clé de session sy­mé­trique avec laquelle les données uti­li­sa­teur sont chiffrées. Ensuite, la clé publique du des­ti­na­taire est utilisée pour chiffrer la clé de session de manière asy­mé­trique. Les données de l’uti­li­sa­teur et la clé sy­mé­trique sont ainsi dis­po­nibles sous forme chiffrée et peuvent être envoyées sans hé­si­ta­tion.
     
  3. Dé­chif­fre­ment : si un texte secret est reçu par le des­ti­na­taire avec la clé de session chiffrée, le des­ti­na­taire utilise sa clé privée pour dé­chif­frer asy­mé­tri­que­ment la clé de session. Ceci est ensuite utilisé pour dé­chif­frer les données uti­li­sa­teur chiffrées sy­mé­tri­que­ment.

Selon ce schéma, une méthode de chif­fre­ment efficace peut être mise en œuvre et même de grandes quantités de données d’uti­li­sa­teur peuvent être chiffrées et dé­chif­frées de manière sécurisée et à grande vitesse. Puisque seule une courte clé de session est chiffrée de manière asy­mé­trique, les temps de calcul re­la­ti­ve­ment longs des al­go­rithmes asy­mé­triques ne sont pas per­ti­nents pour le chif­fre­ment hybride. Le problème de dis­tri­bu­tion des clés du chif­fre­ment sy­mé­trique est réduit au problème de l’au­then­ti­fi­ca­tion uti­li­sa­teur par le chif­fre­ment asy­mé­trique de la clé de session. Comme pour les systèmes cryp­to­gra­phiques purement asy­mé­triques, ceci peut être résolu par des sig­na­tures nu­mé­riques et des cer­ti­fi­cats.

Des méthodes de chif­fre­ment hybrides sont utilisées sous forme d’IPSec pour la com­mu­ni­ca­tion sécurisée sur des réseaux IP non sécurisés. Le protocole Hypertext Transfer Protocol Secure (HTTPS) repose également sur un protocole de chif­fre­ment hybride avec TLS/SSL qui combine des systèmes de chif­fre­ment sy­mé­trique et asy­mé­trique. En outre, la mise en œuvre de la méthode hybride est à la base des normes de chif­fre­ment telles que Pretty Good Privacy (PGP), GnuPG et S/MIME, qui sont utilisées dans le chif­fre­ment des emails.

L’une des com­bi­nai­sons courantes dans le chif­fre­ment hybride est le chif­fre­ment sy­mé­trique des données uti­li­sa­teur via AES et le chif­fre­ment asy­mé­trique ultérieur de la clé de session via RSA. Al­ter­na­ti­ve­ment, la clé de session peut être négociée en utilisant la méthode Diffie-Hellman. Ceci peut fournir une sécurité avancée en tant que Diffie-Hellman éphémère, mais il est vul­né­rable aux attaques de l’homme du milieu. Le cryp­to­sys­tème Elgamal remplace l’al­go­rithme RSA. La méthode des clés publiques dé­ve­lop­pée par Taher Elgamal en 1985 est également basée sur l’idée de l’échange de clés Diffie-Hellman et est utilisée dans la version actuelle du programme de chif­fre­ment PGP.

Aller au menu principal