Qu'est-ce que le cryptage 3DES et comment fonctionne le DES ?
3DES est un chiffrement chiffre dérivé de la norme de cryptage des données (DES) d'origine. Il est devenu important à la fin des années 90, mais est depuis tombé en disgrâce en raison de la montée en puissance d'algorithmes plus sécurisés, tels que AES-256 et XChaCha20.
Bien qu’il soit obsolète en 2023, il est toujours implémenté dans certaines situations. Puisqu’il est basé sur l’un des premiers algorithmes largement publiés et étudiés, DES, il est toujours important de savoir ce qu’est 3DES et comment il fonctionne.
Ce guide vous guidera à travers :
- Chaque étape du processus DES en détail
- Comment DES est modifié dans 3DES pour le rendre plus sécurisé
- Les différents problèmes de sécurité et si vous devez ou non utiliser l'algorithme
Qu’est-ce que le 3DES ?
Bien qu’il soit officiellement connu sous le nom d’algorithme de chiffrement triple des données (3DEA), il est plus communément appelé 3DES. En effet, l'algorithme 3DES utilise trois fois le chiffrement Data Encryption Standard (DES) pour chiffrer ses données.
DES est un algorithme à clé symétrique basé sur un Réseau Feistel . En tant que chiffrement à clé symétrique, il utilise la même clé pour les processus de cryptage et de déchiffrement. Le réseau Feistel rend ces deux processus presque exactement identiques, ce qui aboutit à un algorithme plus efficace à mettre en œuvre.
DES a à la fois un bloc et une taille de clé de 64 bits, mais en pratique, la clé n'accorde qu'une sécurité de 56 bits. 3DES a été développé comme une alternative plus sécurisée en raison de la petite longueur de clé de DES. Dans 3DES, l'algorithme DES est exécuté trois fois avec trois clés ; cependant, il n'est considéré comme sécurisé que si trois clés distinctes sont utilisées.
Les utilisations du 3DES
Une fois que les faiblesses du DES normal sont devenues plus apparentes, le 3DES a été adopté dans un large éventail d'applications. C'était l'un des systèmes de cryptage les plus couramment utilisés avant l'essor de l'AES.
Voici quelques exemples de ses implémentations :
- Microsoft Office
- Firefox
- Systèmes de paiement EMV
Beaucoup de ces plateformes n’utilisent plus 3DES car il existe de meilleures alternatives.
Le National Institute of Standards and Technology (NIST) a publié un projet de proposition disant que toutes les formes de 3DES seront obsolètes jusqu’en 2023 et interdites à partir de 2024. Bien qu’il ne s’agisse que d’une ébauche, la proposition signifie la fin d’une époque et il est plus que temps de passer à d’autres algorithmes plus sécurisés.
L'histoire du cryptage 3DES
Puisque 3DES est dérivé de DES, il est préférable d’introduire d’abord la norme précédente.
Les origines du chiffrement DES
Dans les années soixante-dix, le Bureau national des normes (NBS – il a depuis été rebaptisé NIST) recherchait un algorithme qu’il pourrait utiliser comme norme pour crypter des informations gouvernementales sensibles mais non classifiées.
Le NBS a accepté les propositions concernant une norme qui répondrait à ses exigences, mais aucun des candidats du premier tour n'était approprié. Il a invité davantage de soumissions, et cette fois IBM a envoyé via un algorithme développé par son équipe. La soumission était dérivée du chiffre de Lucifer qui Horst Feistel conçu.
En 1975, l'algorithme IBM a été publié par le NBS en tant que proposition de norme de cryptage des données. Le public a été invité à commenter le design, ce qui a suscité quelques critiques.
Éminent cryptographes tel que Whitfield Diffie et Martin Hellman , concepteurs de l'échange de clés Diffie-Hellman, ont affirmé que la longueur de la clé était trop courte et que les boîtes S avaient été modifiées par rapport à leur conception initiale.
À l’époque, de nombreux membres de la communauté cryptographique pensaient que la NSA avait saboté le projet et affaibli l’algorithme afin qu’elle soit la seule agence capable de briser le DES.
Lorsque cette affaire a fait l'objet d'une enquête menée par le Comité spécial du Sénat américain sur le renseignement, il a été constaté que :
La NSA a convaincu IBM qu'une taille de clé réduite était suffisante ; indirectement aidé au développement des structures S-box ; et ont certifié que l'algorithme DES final était, à leur connaissance, exempt de toute faiblesse statistique ou mathématique.
Le même rapport poursuit en affirmant que « la NSA n’a en aucune façon altéré la conception ». Cela a été soutenu par certains anciens Personnel IBM qui a affirmé que l'algorithme DES avait été entièrement conçu par l'équipe IBM.
Le La propre documentation déclassifiée de la NSA affirme que l'agence :
a travaillé en étroite collaboration avec IBM pour renforcer l'algorithme contre toutes les attaques sauf par force brute et pour renforcer les tables de substitution…
Les soupçons de falsification de la NSA ont été atténués dans les années 90, une fois différentiels cryptanalyse a été découvert publiquement. Lorsque les boîtes S tant décriées ont été testées avec la nouvelle technique, elles se sont révélées plus résistantes aux attaques que si elles avaient été choisies au hasard.
Cela indique que le L'équipe IBM avaient déjà entendu parler de la cryptanalyse différentielle dans les années 70, Steven Levy affirmant que la NSA leur avait demandé de garder la technique secrète afin de protéger la sécurité nationale.
Célèbre cryptographe Bruce Schneier a un jour plaisanté : « Il a fallu deux décennies à la communauté universitaire pour comprendre que les « ajustements » de la NSA ont réellement amélioré la sécurité du DES.
Malgré les premières questions sur la sécurité de l’algorithme et l’implication de la NSA, l’algorithme d’IBM a ensuite été approuvé comme norme de cryptage des données en 1976. Il a été publié en 1977 et réaffirmé comme norme en 1983, 1988 et 1993.
Les origines du 3DES
Lorsque la cryptanalyse linéaire a été publiée pour la première fois en 1994, elle a commencé à soulever des questions sur la sécurité de l'algorithme. En 1997, le NIST a annoncé qu'il recherchait un algorithme pour remplacer le DES. Le besoin d’un nouvel algorithme s’est intensifié à mesure que la technologie se développait et que les attaques potentielles devenaient plus fortes.
Diverses tentatives de craquage ont montré qu’il était moins difficile de casser l’algorithme qu’on ne le pensait auparavant. En 1998, distribué.net a réussi à déchiffrer DES en 39 jours.
Au début de 1999, l’Electronic Frontier Foundation Fissure profonde avait ramené le temps à un peu plus de 22 heures. Cela signifiait la fin du DES puisqu'une attaque de cette nature était désormais à la portée d'un adversaire disposant de suffisamment de ressources.
Le principal problème était le petit espace clé et un nouvel algorithme était absolument nécessaire. C'était un problème, car il faudrait encore plusieurs années au NIST pour se mettre d'accord sur l'algorithme qui est devenu le standard de remplacement, l'Advanced Encryption Standard (AES).
Alors que le chiffrement pour AES était en cours de décision, 3DES a été proposé comme mesure provisoire. Cela implique d'exécuter l'algorithme DES trois fois, avec trois clés distinctes. En 1999, le DES a été réaffirmé, mais avec 3DES comme algorithme idéal. Le DES normal n'était autorisé que dans les applications héritées.
3DES est devenu un algorithme de chiffrement très répandu, même si sa forte consommation de ressources et ses limitations en matière de sécurité l'ont conduit à être remplacé par AES dans la majorité des cas d'utilisation.
Comprendre l'algorithme DES
Avant de pouvoir parler des détails de 3DES, il est important de comprendre l’algorithme DES dont il est dérivé. Alors commençons par le début.
Nous utilisons le cryptage pour transformer nos données en clair en texte chiffré, c'est-à-dire des informations auxquelles les attaquants ne peuvent pas accéder (tant que nous utilisons des algorithmes appropriés).
Les algorithmes de chiffrement sont essentiellement des formules mathématiques complexes. Lorsqu’il s’agit de chiffrer quelque chose comme « Allons à la plage », beaucoup de gens sont confus. Après tout, comment pouvez-vous appliquer les mathématiques à des éléments comme les lettres et les caractères ?
Encodage du texte
La réalité est que les ordinateurs ne traitent pas les lettres et les caractères. Au lieu de cela, ils fonctionnent sur un système de 1 et de 0 appelé binaire. Chaque 1 ou 0 est appelé un bit, et une collection de huit d'entre eux est appelée un octet.
Vous pouvez soit le rechercher manuellement, soit utiliser un convertisseur en ligne de voir qu'en binaire, « Allons à la plage » devient :
01001100 01100101 01110100 00100111 01110011 00100000 01100111 011011100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000 01100010 01100101 01100001 01100011 01101000
Blocs
Lorsque les données sont cryptées, elles sont divisées en blocs distincts pour être traitées. DES a une taille de bloc de 64 bits, ce qui signifie essentiellement que chaque bloc contient un mélange de 64 uns et zéros. Notre premier bloc (les 64 premiers chiffres du binaire illustré ci-dessus) serait :
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Notre deuxième serait :
00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000
Et notre dernier bloc serait :
01100010 01100101 01100001 01100011 01101000
Rembourrage
Vous avez peut-être remarqué que notre troisième bloc ne fait que 40 bits. Avant de pouvoir être chiffré, il doit être construit jusqu'à une taille de bloc de 64 bits. Cela se fait avec rembourrage , qui consiste à ajouter des informations supplémentaires à un bloc afin de le compléter. Cela peut être fait avec un certain nombre de schémas différents, et cela peut également servir à rendre les informations cryptées plus difficiles à déchiffrer, mais nous n’aborderons pas ce point dans cet article.
Le calendrier des clés DES
Les algorithmes de chiffrement utilisent des clés pour ajouter des données qui modifieront le résultat final du processus. Si le DES impliquait uniquement des étapes telles que la permutation et les S-box (la permutation est expliquée ci-dessous, tandis que les S-box sont couvertes dans le substitution section), tout ce qu’un attaquant aurait à faire est de découvrir les détails de l’algorithme, puis d’effectuer chacune des étapes dans l’ordre inverse pour révéler le message initial.
Étant donné que la plupart de nos algorithmes sont largement connus, cela n’ajouterait pas vraiment beaucoup de sécurité. Au lieu de cela, des clés secrètes sont ajoutées pour modifier le résultat d'une manière qui ne peut pas être prédite simplement par la connaissance de l'algorithme (à condition qu'un algorithme suffisamment complexe soit utilisé).
Le début : une seule clé
DES commence par une seule clé, utilisée pour créer des sous-clés appliquées à chaque tour. Il s'agit d'une clé de 64 bits, de la même taille que nos blocs. Disons que notre clé est :
01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010
Or, cette clé est en binaire, c'est-à-dire la manière dont les données sont exprimées lorsque les ordinateurs les traitent. Lorsque les humains manipulent des clés, elles apparaissent normalement comme un mélange de caractères, quelque chose comme ceci :
kj329nf982bc9wn1
La première étape : permuter la clé
Dans DES, la première étape pour dériver nos clés rondes consiste à permuter la clé (la déplacer) selon le tableau suivant :
Lors de la permutation, chaque bit de notre clé d'origine est déplacé vers une nouvelle position comme indiqué par le tableau. Puisque la cellule dans le coin supérieur gauche (de C) dit 57 , le premier chiffre de notre clé permutée sera le chiffre en 57ème position de notre ancien bloc :
01001010 10101101 11101000 10100101 01110001 01010100 10101001 1 1111010
La deuxième cellule dit 49 , ce qui signifie que le deuxième chiffre de notre nouvelle clé sera le numéro qui se trouve en 49ème position de notre ancien bloc :
01001010 10101101 11101000 10100101 01110001 01010100 1 0101001 1111010
La troisième cellule dit 41 , on cherche donc le chiffre à la 41ème position :
01001010 10101101 11101000 10100101 01110001 0 1010100 10101001 1111010
Jusqu'à présent, notre clé est composée de ' 110 ».
Le reste de la clé est disposé de la même manière, selon les valeurs du tableau. Nous nous déplaçons de gauche à droite, et une fois arrivés à la fin d’une rangée, nous sautons à la suivante, comme d’habitude. Une fois tableau C c'est fini, on passe à tableau D pour compléter la seconde moitié de la clé.
Il n’existe pas de moyen simple de transposer l’intégralité de notre bloc selon la table de permutation initiale. Vous pouvez tout faire manuellement, ou écrire un script pour cela (ou même avoir de la chance et en trouver un dans les profondeurs d'Internet), mais nous allons tricher et inventer :
1100010 1010010 1010101 0101010 1010000 1111001 0001011 1000111
Vous craignez peut-être que nous inventions certains chiffres dans ce guide, mais la réalité est que cela n’a pas vraiment d’importance. Plus personne ne chiffre les données manuellement, tout se fait via des programmes. L'aspect le plus important de ce didacticiel est que vous ayez une idée claire des concepts que nous traitons. Les chiffres eux-mêmes servent simplement à vous aider à visualiser ce qui se passe.
Certains lecteurs ont peut-être remarqué que la table (et maintenant notre clé) ne comporte que 56 bits au lieu de 64. En effet, un bit sur huit est ignoré. Il s'agit d'un artefact des temps anciens de la technologie, lorsqu'il était important d'avoir des bits de contrôle de parité, qui vérifiaient si la clé avait été reçue correctement. Ces bits de contrôle de parité signifient qu'en pratique, DES n'a que la sécurité d'une clé de 56 bits.
Les tableaux C et D nous donnent une clé comportant deux moitiés de 28 bits. Parfois, les moitiés sont appelées C et D, mais tout au long de cet article, nous les appellerons L et R, pour gauche et droite. Notre côté gauche est :
1100010 1010010 1010101 0101010
Alors que notre droit est :
1010000 1111001 0001011 1000111
La deuxième étape : déplacer la clé vers la gauche
L'étape suivante consiste à décaler la clé d'un ou deux espaces vers la gauche, selon le tour. Le nombre exact de places est déterminé selon le tableau prédéterminé suivant :
1 | 1 |
deux | 1 |
3 | deux |
4 | deux |
5 | deux |
6 | deux |
7 | deux |
8 | deux |
9 | 1 |
dix | deux |
onze | deux |
12 | deux |
13 | deux |
14 | deux |
quinze | deux |
16 | 1 |
Prenons donc nos moitiés gauche et droite :
L 1010010 1010010 1010101 0 101010
R 1010000 1111001 0001011 1 000111
Et décalez-les tous les deux d'une position vers la gauche, puisque le premier tour a un décalage de 1 selon le tableau (le numéro à l'extrémité gauche est déplacé vers l'extrémité droite).
Sous-clé de premier tour :
L 0100101 0100101 0101010 101010 1
R 0100001 1110010 0010111 000111 1
Au deuxième tour, le tableau dit aussi 1 , donc ce résultat sera à nouveau modifié en déplaçant chaque position numéro un vers la gauche.
Deuxième tour Sous-clé :
L1001010 1001010 101010 01010 1 dix
R1000011 1100100 010111 0 00111 dix
Au troisième tour, les chiffres seront déplacés de deux places vers la gauche, car le tableau indique désormais deux .
Sous-clé de troisième tour :
L 0101010 0101010 1010 101 010 1010
R 0001111 0010001 0111 000 111 1010
Lors des tours suivants, les numéros sont déplacés vers la gauche selon les distances précisées dans le tableau, chaque décalage étant appliqué au résultat du tour précédent. Au final, cela nous donne seize sous-clés différentes, une pour chaque tour du processus DES.
La troisième étape : une autre permutation
L'étape suivante est une autre permutation selon le tableau PC2 ci-dessous :
À présent, vous devriez être familier avec les permutations, nous n’entrerons donc pas dans le processus en profondeur. Si vous souhaitez voir comment cela fonctionne plus en détail, reportez-vous à l'explication au début de cette section. Bien que les postes de relocalisation soient différents, le processus est le même.
Chacune des 16 touches dérivées du processus de changement de vitesse est maintenant mélangée selon le tableau, le numéro de la 14ème position étant déplacé vers la première place, le 17ème vers la deuxième, le 11ème vers la troisième, etc.
Si vous regardez attentivement le tableau, vous remarquerez qu’il n’y a que 48 bits, au lieu des 56 bits que nous avions auparavant. Ce processus est connu sous le nom de permutation de compression.
Vous pouvez également voir que la moitié supérieure du tableau comporte des nombres compris entre 1 et 28, tandis que la moitié inférieure contient des nombres compris entre 29 et 56. Cela maintient les moitiés gauche et droite de nos sous-clés séparées, et cela est indiqué ci-dessous par un espace plus grand. au milieu des touches.
Encore une fois, nous allons tricher et inventer les chiffres. Disons que l'ensemble de ce processus nous a donné les sous-clés suivantes :
Premier tour : 010101 010101 101010 110100 101001 100101 101010 101010
Deuxième round: 011010 110101 101110 110010 010100 110010 111101 101101
Troisième tour : 010100 100110 110110 101010 100110 011000 101011 011001
Quatrième tour : 011001 110101 011001 110101 000011 001011 010101 010101
Cinquième tour : 110101 001101 010101 010101 010011 001011 010111 100101
Sixième tour : 010111 110101 011001 111001 101001 100101 101010 101010
Septième tour : 110101 111010 101110 101010 100110 010110 111011 001110
Huitième tour : 011001 110101 010101 001001 010011 001011 010100 101010
Neuvième tour : 111011 011010 011110 100010 100010 010110 110011 110010
Tour 10 : 011010 010101 101110 101001 010010 010110 111000 101010
Tour 11 : 110101 001101 101110 101010 100101 100101 101010 001010
Tour 12 : 101001 100100 101001 101010 100110 011000 101011 011001
Tour 13 : 010010 010010 010101 010101 010110 110001 100101 101010
Tour 14 : 101001 100110 010101 011101 010001 001010 110010 111110
Tour 15 : 011001 011010 011001 110101 001001 011001 100101 101101
Tour 16 : 010010 100110 010101 010101 010001 101000 110010 111010
Ce processus de décalage fait que chaque bit de la clé initiale est utilisé dans environ 14 des 16 sous-clés, bien que certains bits soient légèrement plus utilisés que d'autres.
Permutation initiale
Une fois les données divisées en blocs et complétées si nécessaire, il est temps de commencer le processus de cryptage DES.
Nous reviendrons ultérieurement sur les sous-clés que nous venons de créer.
La première étape est connue sous le nom de permutation initiale, où les données sont réorganisées selon le tableau suivant :
Ce processus de permutation initial ne rend pas l’algorithme plus sûr. En effet, cela n’implique la saisie d’aucune clé et peut facilement être inversé. L’algorithme a été conçu à l’origine de cette façon car il facilitait la mise en œuvre dans certains contextes.
Puisque nous avons abordé les permutations à plusieurs reprises, nous passerons ici toute explication majeure. Retournez à le planning des clés DES section si vous avez besoin de plus d’informations sur leur fonctionnement.
Prenons le premier bloc du message « Allons à la plage », que nous avons dérivé dans le Bloc section comprendre l'algorithme DES :
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Puisque la première cellule dit 58 , nous sélectionnerions le numéro à partir de la 58ème position :
01001100 01100101 01110100 00100111 01110011 00100000 01100111 0 1 101111
Ensuite, nous prendrions le nombre à partir de la 50ème position :
01001100 01100101 01110100 00100111 01110011 00100000 0 1 100111 01101111
Et le numéro de la 42ème position :
01001100 01100101 01110100 00100111 01110011 0 0 100000 01100111 01101111
Cela nous donne « 110 ' jusqu'à présent. Nous composerons le reste du nombre :
11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001
Une fois la permutation initiale terminée, les données passent à l'étape suivante.
Diviser les blocs
Une fois que les données ont subi leur permutation initiale, elles sont divisées en deux moitiés. On prend notre bloc qui vient de subir sa permutation initiale :
11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001
Et nous allons le séparer en deux blocs, un bloc de gauche (constitué des 32 premiers chiffres), appelé L 0 :
L 0 11010111 01001010 10101000 10011101
Et un bloc de droite (constitué des 32 seconds chiffres), appelé R. 0 :
R. 0 01001011 10110101 10000111 10101001
La fonction F
Maintenant que le bloc a été divisé, il est temps que la fonction F ait lieu. Au premier tour, il ne sera appliqué qu’à la moitié droite du bloc, tandis que la moitié gauche sera réservée pour plus tard. Le côté droit subit les quatre étapes suivantes dans le cadre de la fonction F :
- Permutation d'expansion (E dans le diagramme)
- Mixage des touches (⊕ dans le schéma)
- Substitution (chaque S1, S2 etc. dans le diagramme)
- Permutation (P dans le diagramme)
Permutation d'expansion
La permutation d'expansion accomplit trois choses :
- Le plus important est qu'il permet à des bits uniques de données d'entrée d'affecter la sortie de deux autres bits, provoquant un effet d'avalanche.
- Cela crée également la moitié droite de 48 bits, de sorte qu'elle ait la même taille que la sous-clé pour l'étape suivante.
- L’autre effet de la permutation d’expansion est qu’elle rend la sortie plus longue que l’entrée. Cela permet de le compresser lors de l'opération de substitution
Les bits sont réorganisés selon le tableau suivant. Certains bits individuels figurent deux fois dans le tableau, c'est ainsi que le bloc est passé de 32 à 48 bits :
Puisque la première cellule indique 32, nous prenons notre bloc de droite et sélectionnons le nombre à partir de la 32ème position, tout comme nous l'avons fait dans les autres exemples de permutation répertoriés ci-dessus :
R. 0 01001011 10110101 10000111 1010100 1
Nous prenons ensuite les nombres de la première position, de la deuxième position, et ainsi de suite, jusqu'à ce que nous arrivions au coin inférieur droit du bloc. Puisqu'il y a un 1 dans cette cellule, le dernier chiffre sera également le numéro qui apparaît en première position de notre bloc.
Disons que la permutation d'expansion nous donne un nouveau bloc de 48 bits de :
101110 100110 100100 000000 001100 001110 101101 011110
Mixage des touches
Une fois que le bloc a été étendu à 48 bits, il est temps d'appliquer la sous-clé du premier tour, que nous avons dérivée dans le Calendrier des clés DES section ci-dessus. Le bloc est modifié par la sous-clé à l'aide du chiffrement XOR.
Le chiffrement XOR est un chiffrement par addition qui suit un processus simple, surtout par rapport aux autres éléments dont nous avons déjà parlé.
Dans un chiffrement XOR :
0 + 0 = 0
1 + 0 = 1
1 + 1 = 0
Supposons donc que vous deviez XOR les deux nombres suivants en binaire :
1101
0101
Chaque chiffre serait ajouté à celui en dessous. D’après les trois règles indiquées ci-dessus, cela donne le résultat suivant :
1000
Pour terminer l'étape de mixage des clés, nous prenons le côté droit de notre bloc que nous venons d'étendre à 48 bits, et la première clé ronde. Nous effectuons ensuite l'addition XOR :
Bloc: 101110 100110 100100 000000 001100 001110 101101 011110
Clé du premier tour : 010101 010101 101010 110100 101001 100101 101010 101010
Résultat XOR : 111011 110011 001110 110100 100101 101011 000111 110100
Le résultat de l’opération XOR est ensuite transmis au tour suivant.
Substitution
La substitution ajoute de la confusion aux données. Cela se fait normalement avec des tables de recherche, également appelées boîtes de substitution ou S-box. DES utilise huit tables distinctes ou S-box, une différente pour 6 bits de données. Le tableau suivant montre les huit S-box de DES :
Les huit boîtes S distinctes sont utilisées pour traduire chaque entrée 6 bits en sortie 4 bits. La première étape du processus consiste à prendre les chiffres au début et à la fin d'un segment de 6 bits, puis à convertir cette valeur binaire en décimale.
Prenons les données que nous venons de terminer le XOR à l'étape précédente :
111011 110011 001110 110100 100101 101011 000111 110100
Nous allons examiner le premier segment de 6 bits pour vous montrer comment fonctionne le processus de substitution :
1 1101 1
Puisque le premier chiffre et le dernier chiffre sont tous deux 1 , cela nous donne une valeur de onze . Nous convertissons ensuite onze du binaire au décimal, ce qui nous donne 3 . Ce ne sont que des valeurs équivalentes, écrites de différentes manières. Considérez cela comme une conversion du langage informatique en langage humain. Vous pouvez vérifier la conversion par vous-même avec un calculateur en ligne si tu veux.
On prend ensuite les quatre chiffres du milieu du premier segment de 6 bits :
1 1101 1
Et convertissez-les du binaire en décimal. 1101 se traduit par le numéro 13.
Maintenant, prenons ces deux nombres et recherchons-les dans le S 1 tableau:
Notre premier numéro, 3 , nous dit de regarder dans la troisième rangée, tandis que notre deuxième numéro, 13 nous dit de regarder dans la 13ème colonne. La valeur de la troisième ligne de la 13ème colonne est 0 .
Maintenant que nous avons recherché notre numéro dans le tableau, nous convertir il revient à un binaire à quatre chiffres. Zéro s'écrit normalement 0 en binaire, mais 0000 est le même, et c'est le format le plus adapté à nos besoins.
Suite à ce processus, la S-box convertit notre première section de données de 6 bits ( 111011 ) en une valeur différente de 4 bits ( 0000 ). Cela semble alambiqué, mais cette technique contribue à obscurcir davantage la relation entre le texte chiffré et le texte clair auquel il est lié.
La section de données suivante de 6 bits passe ensuite par le même processus ; mais à la place, il utilise la boîte S2 présentée ci-dessus. La troisième section utilise la table S3 et ainsi de suite, jusqu'à ce que la dernière section subisse la substitution via la table S8.
Encore une fois, nous allons tricher pour le reste des valeurs. Disons que les cases de substitution nous donnent un résultat de :
0000 1010 1100 1001 0100 1001 0111 0001
Une fois que chaque section de données a parcouru sa S-box, elle passe à l'étape suivante.
Permutation
La dernière étape de la fonction F est une autre permutation, utilisant le tableau suivant :
À présent, vous devriez avoir une bonne compréhension de la façon dont les permutations déplacent les chiffres de l’ancien bloc vers une position différente dans le nouveau bloc, nous n’y reviendrons donc pas.
Disons que cette permutation prend notre résultat précédent :
0000 1010 1100 1001 0100 1001 0111 0001
Et nous donne un résultat de :
0101 0110 1001 0101 0010 0100 0101 0010
Maintenant que la permutation est terminée, nous en avons terminé avec les quatre étapes de la fonction F dans ce tour. En notation mathématique, cette valeur est connue sous le nom de f(R 0, K 1 ) . Cela signifie que le résultat est la fonction (F) du côté droit initial du bloc (R0) et de la sous-clé du premier tour (K1).
XOR avec le bloc gauche
Rappelez-vous comment nous avons divisé le bloc en deux juste avant de commencer les étapes de la fonction F ? Nous avons mis de côté le côté gauche du bloc (L0), tandis que le côté droit a subi chacun de ces processus. Eh bien, il est maintenant temps pour L0 de revenir en action.
On prend le côté droit que l'on vient de traiter f(R 0, K 1 ) et ajoutez-le à l'ancien côté gauche ( L 0 ) en utilisant le chiffrement XOR. Cela nous donne R. 1 , le résultat de notre premier tour :
f(R 0, K 1 ) : 0101 0110 1001 0101 0010 0100 0101 0010
L 0 : 1101 0111 0100 1010 1010 1000 1001 1101
Résultat XOR (R 1 ) : 1000 0001 1101 1111 1000 1100 1100 1111
Se référer au mixage des touches ci-dessus si vous avez besoin d'un rappel du fonctionnement du chiffrement XOR.
Encore 15 tours…
Si vous êtes arrivé jusqu’ici, alors le DES semble probablement être un processus ardu. Mais ce n’est même pas encore près d’être terminé. Les données passent par les quatre étapes de la fonction F, suivies du XOR, encore 15 fois, pour un total de 16 tours.
Au deuxième tour, nous prenons la version originale intacte du côté droit du bloc (R0) et en faisons le nouveau côté gauche (L1). Pendant ce temps, nous prenons le résultat de notre premier tour et l’envoyons via la fonction F.
Tout se passe de la même manière que la dernière fois, mais cette fois, la sous-clé du deuxième tour est utilisée à la place. Disons que ce processus nous donne un résultat de :
f(R 1, K deux ) : 1011 0111 1000 1011 1001 1101 1001 1110
Nous effectuons ensuite un XOR sur le résultat avec L1, qui est en réalité R0 (nous l'avons dérivé dans le Fractionner des blocs section). Cela nous donne le résultat du deuxième tour, R2 :
f(R 1, K deux ) : 1011 0111 1000 1011 1001 1101 1001 1110
L 1 : 0100 1011 1011 0101 1000 0111 1010 1001
R. deux : 1111 1100 0011 1110 0001 1010 0011 0111
Cette étape peut sembler un peu déroutante, mais selon le schéma de Feistel, l’ancien côté droit devient le nouveau côté gauche, tandis que le résultat de l’opération devient le nouveau côté droit.
Le diagramme suivant vous donne une représentation visuelle de ce qui se passe. IP représente la permutation initiale, F remplace la fonction F entière, le ⊕ symbolise la fonction XOR et les flèches indiquent chaque côté du bloc se déplaçant entre la gauche et la droite :
La formule exacte pour chaque étape est :
L n = R. n-1
R. n = L n-1 + F ( R. n-1 , K n )
Où:
L = La moitié gauche du bloc (en commençant par L0 lorsque le bloc a été initialement divisé)
R = La moitié droite du bloc (en commençant par R0 lorsque le bloc a été initialement divisé)
n = Le numéro d'arrondi (commençant par 0, lorsque le bloc a été initialement divisé)
f = La fonction F
Kn = La sous-clé du tour n
Selon la formule et le diagramme, au troisième tour, R1 devient la nouvelle moitié gauche (L2), tandis que R2 est traité via la fonction F. Disons que cela nous donne un résultat de :
f(R deux, K 3 ) 1001 0111 0000 1011 1101 0111 1011 1011
Nous calculons ensuite le résultat de notre troisième tour (R3), en utilisant le chiffre XOR, comme auparavant :
f(R deux, K 3 ) : 1011 0111 1000 1011 1001 1101 1001 1110
L deux : 0100 1011 1011 0101 1000 0111 1010 1001
R. 3 : 1111 1100 0011 1110 0001 1010 0011 0111
Le même processus se poursuit jusqu'au quinzième tour, les blocs étant commutés et la sous-clé suivante étant utilisée à chaque tour. Au 16ème et dernier tour, les blocs ne sont pas inversés. Au lieu de cela, ils sont combinés pour former un bloc de 64 bits.
S'abstenir d'échanger les blocs lors de cette dernière étape permet à l'algorithme d'être utilisé à la fois pour le chiffrement et le déchiffrement.
Disons que le tour final nous donne un résultat de :
1010 0101 0100 1011 1001 0001 0100 1000 0101 1010 1101 0001 1101 1001 1001 1101
Permutation finale
Cette permutation est l’inverse de la permutation initiale et, encore une fois, elle n’ajoute aucune valeur de sécurité supplémentaire. Il réorganise les données selon le tableau suivant :
Cette table de permutation fonctionne de la même manière que les précédentes. Puisqu’il s’agit de la dernière étape du processus de cryptage, le résultat sera le texte chiffré du premier bloc de « Allons-y à la plage'. Disons que le bloc chiffré est :
0100 1001 0011 0010 1001 0101 0111 0100 1011 1010 0111 0101 0111 1010 0101 0101
Maintenant, si vous vouliez le vrai texte chiffré pour « Allons à la plage », vous auriez pu simplement ignorer tout le processus d’apprentissage et passer directement à un outil de cryptage DES en ligne. Si nous saisissons notre phrase à côté d'une clé (disons kj329nf982bc9wn1), l'outil nous donne un texte crypté de :
U2FsdGVkX19Pienyu3w3q4zCd2IPKEPUWBzu3AeyVu2H3FeimZe6hA
Si vous le souhaitez, vous pouvez ensuite convertir la clé et le texte chiffré en binaire, puis comparer la façon dont le texte chiffré du premier bloc s’aligne sur l’ensemble du processus qui a été décrit.
Décryptage DES
Dans DES, le processus de décryptage est incroyablement simple. La structure Feistel de l’algorithme permet de l’inverser facilement.
Le processus est exécuté presque exactement de la même manière pour décrypter les informations. La seule différence est que les sous-clés sont appliquées à l'envers. Il s'agit d'une configuration efficace, car elle signifie que le même logiciel et le même matériel peuvent être utilisés dans les processus de cryptage et de déchiffrement.
Pour décrypter les données, il passe d’abord par une permutation initiale, puis le bloc est divisé et la moitié droite passe par la fonction F. La différence est que lors du premier cycle de décryptage, la 16ème sous-clé est appliquée. Tout le reste se déroule normalement. Une fois la fonction F terminée, elle est XORed avec le côté gauche du bloc.
Les blocs sont inversés et le résultat passe par le même processus pour le deuxième tour, à la seule exception que la 15ème sous-clé est appliquée. Ce processus se poursuit jusqu'au 16ème tour, lorsque la 1ère sous-clé est utilisée.
Tout comme dans le processus de cryptage, les blocs ne sont pas échangés lors de la phase finale, puis les données subissent une permutation finale. Ceci termine le processus de décryptage, ce qui donne le texte brut original du message.
3DES
Alors que les faiblesses de sécurité du DES devenaient plus évidentes, 3DES a été proposé comme moyen d'étendre la taille de sa clé sans avoir à construire un algorithme entièrement nouvel. Plutôt que d'utiliser une seule clé comme dans DES, 3DES exécute l'algorithme DES trois fois, avec trois clés de 56 bits :
- La première clé est utilisée pour Crypter le texte en clair.
- La clé deux est utilisée pour décrypter le texte qui avait été chiffré par la clé un.
- La clé trois est utilisée pour Crypter le texte qui a été déchiffré par la clé deux.
À chaque étape, le processus DES complet est suivi comme indiqué ci-dessus.
Maintenant, vous vous demandez peut-être « Comment l’application du décryptage lors de la deuxième étape peut-elle améliorer la sécurité ? »
La réponse est qu’il utilise une clé distincte. Si la première clé était également utilisée pour déchiffrer les données lors de la deuxième étape, les données seraient alors de retour là où elles ont commencé.
Cependant, comme il utilise une clé différente, le processus de décryptage ne sert pas réellement à décrypter les données. Cela peut sembler logiquement pervers, mais le décryptage avec une clé distincte ne sert qu'à brouiller encore plus les données.
Une fois que la deuxième clé a « déchiffré » les données, la troisième clé est appliquée pour les chiffrer à nouveau. Le résultat est le texte chiffré 3DES.
3DES est structuré de cette manière car il permet aux implémentations d'être compatibles avec des DES à clé unique, des DES à deux clés et des DES à trois clés (ceux-ci sont traités dans la section suivante). Cela ne fonctionnerait pas si le cryptage était utilisé dans les trois étapes.
Options de saisie 3DES
Techniquement, 3DES peut être implémenté avec trois configurations de touches différentes. Malgré cela, les deuxième et troisième options ne sont pas sûres et ne devraient jamais être mises en œuvre.
- Première option de saisie – Cette option utilise trois clés indépendantes et est la plus sécurisée
- Option de saisie deux – Dans cette configuration, les première et troisième touches sont les mêmes
- Troisième option de saisie – Cela utilise trois clés identiques. Lorsque des clés identiques sont utilisées, le processus de décryptage de la deuxième étape annule le premier cryptage, ne laissant que le cryptage final pour modifier les données. Cela fait du résultat le identique au DES ordinaire
Le processus 3DES : première option de saisie
Soyons honnêtes, l’intégralité du processus 3DES peut vous faire tourner la tête, surtout si vous débutez en cryptographie. Pour vous aider à comprendre, voici un bref résumé de l’ensemble du schéma de chiffrement de l’algorithme 3DES :
Le texte brut entre dans l'algorithme 3DES et est le premier chiffré avec la clé 1 dans les étapes suivantes :
Calendrier des clés – les 16 sous-clés sont dérivées de la clé une
Permutation initiale
Le bloc est divisé en moitiés gauche et droite
La moitié droite est envoyée via la fonction F
Permutation d'expansion
XOR avec la sous-clé pour le tour
Substitution
Permutation
XOR le résultat de la fonction F avec le côté gauche
Faites de l'ancien côté droit le nouveau côté gauche et le résultat, le nouveau côté droit.
Répétez les étapes ci-dessus 14 fois
La moitié droite est envoyée via la fonction F
Permutation d'expansion
XOR avec la sous-clé pour le 16èmerond
Substitution
Permutation
XOR le résultat de la fonction F avec le côté gauche
Combinez les côtés gauche et droit du bloc ensemble
Permutation finale
Prenez le texte qui a été crypté avec la clé 1, puis envoyez-le via le processus de « décryptage » avec clé deux :
Calendrier des clés – les 16 sous-clés sont dérivées de la clé deux
Permutation initiale
Le bloc est divisé en moitiés gauche et droite
La moitié droite est envoyée via la fonction F
Permutation d'expansion
XOR avec la sous-clé du tour (à partir du 16èmesous-clé pour le décryptage)
Substitution
Permutation
XOR le résultat de la fonction F avec le côté gauche
Faites de l'ancien côté droit le nouveau côté gauche et le résultat, le nouveau côté droit.
Répétez les étapes ci-dessus 14 fois
La moitié droite est envoyée via la fonction F
Permutation d'expansion
XOR avec la sous-clé pour le premier tour
Substitution
Permutation
XOR le résultat de la fonction F avec le côté gauche
- Combinez les côtés gauche et droit du bloc ensemble
- Permutation finale
Prenez les données qui ont été « décryptées » par la clé deux, puis envoyez-les via le dans processus de cryptage avec clé trois :
Calendrier des clés – les 16 sous-clés sont dérivées des trois clés
Permutation initiale
Le bloc est divisé en moitiés gauche et droite
La moitié droite est envoyée via la fonction F
Permutation d'expansion
XOR avec la sous-clé pour le tour
Substitution
Permutation
XOR le résultat de la fonction F avec le côté gauche
Faites de l'ancien côté droit le nouveau côté gauche et le résultat, le nouveau côté droit.
Répétez les étapes ci-dessus 14 fois
La moitié droite est envoyée via la fonction F
Permutation d'expansion
XOR avec la sous-clé pour le 16èmerond
Substitution
Permutation
XOR le résultat de la fonction F avec le côté gauche
Combinez les côtés gauche et droit du bloc ensemble
Permutation finale
Le résultat est le texte chiffré 3DES.
La sécurité de 3DES
La sécurité de 3DES dépend de l'option de saisie utilisée. La première option de saisie implique trois clés différentes de 56 bits, ce qui lui donne une longueur totale de clé de 168 bits. La longueur effective est considérablement réduite par les attaques meet-in-the-middle, qui ramènent sa sécurité réelle à 112 bits.
Les attaques Meet-in-the-middle sont utiles contre les schémas de chiffrement qui répètent plusieurs fois le même algorithme. La technique stocke les valeurs immédiates de chaque étape de chiffrement, puis utilise ces informations pour améliorer radicalement le temps qu'il faudrait pour forcer brutalement l'algorithme.
Les options deux et trois ont des clés nettement plus petites et sont vulnérables aux attaques en texte clair connu et en texte clair choisi, ainsi qu'à d'autres.
Les attaques en texte clair connu sont possibles lorsqu'un adversaire a accès à la fois au texte clair et au texte chiffré d'un message. Si un algorithme est sensible à ces attaques, l'attaquant peut utiliser ces informations pour déduire la clé, ce qui lui permet de déchiffrer toutes les autres données chiffrées par la même clé.
Une attaque par texte en clair choisi est similaire, mais elle implique que l'attaquant découvre la clé en comparant les textes chiffrés à des textes en clair arbitraires.
En raison de ces vulnérabilités et de la petite taille globale des clés impliquées, les options de saisie deux et trois ne sont pas sécurisées et ne doivent pas être mises en œuvre.
3DES est-il sûr ?
Puisque 3DES sera obsolète dans les prochaines années, il est préférable d’utiliser d’autres algorithmes. Bien que la première option de saisie soit toujours considérée comme sécurisée pour de nombreuses applications, il n'y a pas beaucoup de bonnes raisons pour lesquelles elle devrait être utilisée à la place d'une alternative comme AES.
Bien que le 3DES occupe une place importante dans la cryptographie en tant que successeur du DES, ses années de gloire sont révolues et il est temps de passer à autre chose. Si vous souhaitez sécuriser vos systèmes à long terme, vous devriez plutôt utiliser un algorithme plus à jour.
Formes alternatives d'algorithme de cryptage
Comme mentionné, il existe d’autres types d’algorithmes de chiffrement plus puissants à prendre en compte. Jetons un coup d’œil à trois des plus sécurisés.
Cryptage AES-256
Ce type d'algorithme de cryptage est pratiquement incassable. Aucune puissance de calcul ne peut efficacement fournir un attaque de force brute cela permettrait de déchiffrer un mot de passe protégé par ce type de cryptage. Le gouvernement américain utilise le cryptage AES-256 pour protéger les documents classifiés. Ainsi, si un gestionnaire de mots de passe l'utilise également, vous pouvez être assuré que vos mots de passe seront en sécurité.
Cryptage XChaCha20
Certaines des plus grandes entreprises technologiques, telles que Google et Cloudflare, utilisent cette alternative à AES-256. Ce service repose sur une architecture à connaissance nulle, ce qui signifie que personne au sein de la société de gestion de mots de passe ne peut voir vos mots de passe (y compris votre mot de passe principal), les informations de carte de crédit ou les notes cryptées. Ainsi, même si un pirate informatique violait les systèmes de l’entreprise, vos informations seraient en sécurité. Les avantages de XChaCha20 par rapport à AES-256 incluent des vitesses plus rapides, une moindre susceptibilité aux erreurs humaines et techniques et aucune exigence de support matériel.
En rapport: Types de cryptage courants expliqués