Algorithme de cryptage DES : Data Encryption Standard

DES(Data Encryption Standard) est un algorithme de cryptage extrêmement rapide au niveau du chiffrement/déchiffrement. Même si actuellement l'utilisation de DES comme seul moyen de cryptage n'est plus fiable, il est encore utilisé en combinaison avec d'autres systèmes, ou sous sa forme triple DES.

1 Historique

Feistal Horst, un chercheur des laboratoires IBM, propose dans les années '60 un algorithme de cryptage très fiable dont la simplicité permet un codage aisé sur un circuit électronique. Ce projet est retenu sous le nom de code LUCIFER.

En 1972, le NBS (National Bureau of Standard) lance un appel d'offre pour un algorithme de cryptage. Comme le cahier des charges de la demande est fort proche des possibilités qu'offre le projet LUCIFER, IBM y apporte quelques modifications qu'il réponde à la norme demandée.

L'algorithme de IBM est donc retenu en 1977 par le NBS sous le nom DES : Data Encryption Standard.

DES est validé en 1978 par l'ANSI sous le nom DEA (Data Encryption Algorithm).

Le plus petit changement dans le plaintext (fichier en clair) ou dans la clé produit un grand changement dans le ciphertext (fichier crypté). Ce phénomène porte le nom d'effet d'avalanche.

DES est un algorithme à clé symétrique, c'est-à-dire que nous appliquons la même clé pour chiffrer et pour déchiffrer. Ceci suppose que la personne qui chiffre et celle qui déchiffre possèdent la même clé et que celle-ci ait été échangée par un moyen sécurisé.

2 Principes de l'algorithme de cryptage DES

DES est un algorithme symétrique, qui combine transpositions et substitutions :

  • La transposition est le fait de déplacer des éléments du fichier clair (plain text) dans le fichier crypté (cypher text). Les transpositions permettent d'éclater dans le fichier crypté la redondance présente dans le fichier clair.
    Dans le cas de l'algorithme DES, nous rencontrerons aussi le terme permutation au lieu de transposition.
  • La substitution est la transformation d'un élément du fichier clair en un autre élément dans le fichier chiffré. Les substitutions non linéaires permettent de compliquer la liaison entre le fichier crypté et les clés secrètes.

Le processus de cryptage nécessite 16 étapes numérotées de 0 à 15, comprenant chacune des transpositions et substitutions.

Le fichier clair (plain text) est découpé en blocs de 64 bits.
Nous utiliserons une clé de 8 octets (64 bits) dont seuls 56 bits serviront au codage. Les 8 bits restant (les bits 8, 16, 24, 32, 40, 48, 56, et 64) étant des bits de parités. Cette clé initiale donnera naissance aux 16 clés de 48 bits nécessaires, chaque niveau de clé se basant sur la clé de niveau supérieur.

3 Chiffrement à l'aide de DES

Le fichier clair (plain text) est découpé en blocs de 64 bits, chaque bloc étant traité séparément.

3.1 Phase 1 : Transposition initiale du bloc de 64 bits

Chaque bloc subit une transposition initiale suivant la table suivante :

Table de transpositions initiales
585042342618102
605244362820124
625446383022146
645648403224168
57494133251791
595143352719113
615345372921135
635547393123157

Nous sommes toujours en possession d'un bloc de 64 bits, mais dont les éléments ont changé de place (par exemple, le bit 1 se retrouve à la place du bit 40, le bit 40 se retrouve à la place du bit 28, etc.).

3.2 Phase 2 : 16 itérations

3.2.1 Division en blocs de 32 bits

Ce bloc de 64 bits est découpé en deux blocs de 32 bits, L0 (Left zero) et R0 (Right zero). Chaque bloc est placé dans une mémoire tampon (buffer) car nous en aurons besoin ultérieurement.

3.2.2 Expansion à 48 bits et transpositions

Chaque bloc (L0 et R0) est traité simultanément, mais dans nos explications, nous n'allons en traiter qu'un seul.

Comme la clé correspondant à cette étape (K0) est composée de 48 bits et que notre bloc est composé de 32 bits, nous allons le soumettre à une nouvelle table de transposition dans laquelle un bit peut se trouver deux fois (par exemple, le bit 1 de la sortie de notre table précédente se retrouve à la position 2, et en même temps à la position 48) :

test
3212345
456789
8910111213
121314151617
161718192021
202122232425
242526272829
28293031321

3.2.3 Application de la clé de 48 bits

Comme nous sommes maintenant en présence de blocs de 48 bits (du bloc R ou L 0), ces derniers sont soumis avec les 48 bits de la clé K0 à un opérateur logique XOR, ce qui nous donne un bloc de 48 bits en sortie.

Vous pouvez consulter la partie sur la génération des clés dans la prochaine section.

3.2.4 Sélection (passage de 48 à 32 bits)

Notre bloc de 48 bits est ensuite divisé en 8 vecteurs de 6 bits, chaque vecteur étant finalement traité dans une table de sélection qui permet 4 bits en sortie. Nous avons donc à nouveau un bloc de 32 bits (8 vecteurs de 4 bits).

Sélection : division et positionnement
n° de vecteur Valeur des bits extérieurs Valeurs des bits intérieurs
0123456789101112131415
00 (00) 1441312157783106125907
1 (01) 015741421311061219538
2 (10) 4114813621115129731050
3 (11) 1512824917511314100613
101518141163497213120510
13134715281412011069115
20147111041315812693215
31381013415211671205149
201009146315511312711428
11370934610285141211151
21364981530111212510147
31101306987415143115212
307131430691012851112415
11381156150347212310149
21069012117131513145284
33150610113894511127214
402124171011685315130149
11411212471315015103986
24211110137815912563014
31181271142136150910453
50121101592680133341475
11015427129561131401138
2914155281237041011316
34321295151011141760813
604112141508133129751061
11301174911014351221586
21411131237141015680592
36111381410795015142312
701328461511110931450127
11151381037412561101492
27114191214206101315358
32114741081315129035611

Chaque vecteur (ligne) de la table d'expansion et transitions est numéroté, et est composé de 6 bits.

Le premier bit et le dernier bit nous fournissent le numéro de ligne, entre 0 et 3, et les 4 bits intermédiaires nous fournissent le numéro de colonne.

Exemple

Pour notre exemple, prenons au hasard une série de 6 bits : 011001

Nous sommes dans le premier vecteur (ligne 0).

Les bits extérieurs (01) nous indiquent la deuxième ligne (ligne 1).

Les bits intérieurs (1100) nous indiquent la 12ème colonne.

Dans la table de division et positionnement, l'intersection entre la ligne 1 du vecteur 0 et la colonne 12 nous donne la valeur 9, qui sera codée sur 4 bits de manière binaire normale : 1001.

Si nous procédons de la même manière pour chacun des 8 vecteurs, nous nous trouvons à nouveau en possession d'un bloc de 32 bits (8 vecteurs de 4 bits).

3.2.5 Transpositions du bloc de 32 bits

Les blocs de 32 bits subissent ensuite une série de transpositions selon la table suivante :

Transpositions sur 32 bits
16172021
29122817
1152326
5183110
282414
322739
1913306
2211425

3.2.6 Opérateur XOR

Imaginons que nous étions occupés à traiter le bloc de 32 bits R0, nous devons à présent le soumettre avec le bloc L0 (qui a été mémorisé plus tôt) à l'opérateur logique XOR. Cette opération nous renvoie un tableau de 32 bits.

4 Phase 3 : Transposition finale sur 64 bits

Nous devons exécuter au total 16 fois les opérations de la phase 2.

A la 16ème itération, les deux blocs de 32 bits de gauche et de droite sont réunis en un bloc de 64 bits dans la table suivante :

Transposition finale
408481656246432
397471555236331
386461454226230
375451353216129
364441252206028
353431151195927
342421050185826
33141949175725

 

Génération des clés de DES

Comme nous l'avons vu précédemment, la clé secrète utilisée dans l'algorithme DES est une clé de 64 bits, dont 56 servent au chiffrement, et 8 servent de bits de parités (les bits 8, 16, 24, 32, 40, 48, 56, et 64) .

Nous devrons générer 16 clés depuis ce bloc de 56 bits, une pour chaque itération.

Le bloc clé de 56 bits subit une première série de transpositions et une division en 2 blocs de 28 bits selon les tables suivantes :

Bits de la partie gauche
de la clé
5749413325179
1585042342618
1025951433527
191136052436
Bits de la partie droite
de la clé
63554739312315
7625446383022
1466153453729
2113528201244

Les deux blocs subiront chacun un décalage vers la gauche, en fonction du niveau d'itération (le numéro d'étape, de 0 à 15), selon l'ordre suivant : 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1.

Ensuite, les 2 blocs de 28 bits sont rassemblés en un bloc de 56 bits. Ce bloc de 56 bits est mémorisé car il nous servira pour générer la clé suivante, puis il subira une série de transpositions avec oubli pour obtenir un bloc de 48 bits selon cette table :

Transpositions avec oubli
1417112415
3281562110
2319124268
1672720132
415231374755
304051453348
444939563453
464250362932

Nous sommes en possession d'une clé de 48 bits que nous pourrons soumettre à une porte logique XOR avec les 48 bits du message.

La clé du niveau suivante est générée de la même manière, mais en partant du bloc de 56 bits que nous venons d'obtenir en réunissant les 2 blocs de 28 bits.

Déchiffrement de DES

L'algorithme de cryptage DES est symétrique, ce qui signifie que nous allons utiliser les mêmes étapes, en utilisant les mêmes clés, mais en inversant l'ordre des clés (de la clé 15 à la clé 0).

Modes opératoires de DES

Le mode opératoire est la manière dont les blocs sont présentés à l'algorithme.

Considérons x i les blocs en clair, y i les blocs chiffrés et E k la fonction d'encryption avec une clé K.

  • ECB - Electronic Code Book : les blocs sont traités de manière indépendante, ce qui permet de rendre le chiffrement ou déchiffrement parallèle.Ce mode est souvent utilisé, mais il est sensible à une attaque par dictionnaire.

    y i = eK (x i )

  • CBC - Cipher Block Chaining : moins utilisé, mais nettement plus sûr que ECB, ce mode opératoire utilise le bloc précédent lors du calcul d'un bloc, ce qui lie tous les blocs entre eux (une erreur dans l'émission empêche le déchiffrement de toutes les données).

    y 0 = valeur initiale y i = eK (y i -1 XOR x i ) avec i >= 1

  • CFB - Cipher FeedBack (chiffrement à rétroaction) : Une clé partielle basée sur le bloc chiffré précédemment nous permet de chiffrer le bloc suivant.

    z i = eK(y i -1)

    y i = x i XOR z i avec i >= 1

  • OFB - OutPut FeedBack (chiffrement à rétroaction de sortie) : les blocs ne sont pas liés entre eux (pourtant, deux blocs identiques en clair donnent deux blocs chiffrés différents). Cet aspect nous assure une certaine sécurité face aux erreurs de transmissions.

    Une valeur initiale z0 sert à créer des clés telles que z i = Ek (z i-1 ).

    Cette valeur sert à créer des blocs chiffrés tels que y i = x i XOR z i.

Triple DES

En 1979, IBM découvre que la longueur de clé de 56 bits est devenue insuffisante pour assurer un niveau de sécurité acceptable lors d'une utilisation isolée de DES. Il était possible d'augmenter la longueur des clés, mais les dispositifs de cracking pour des clés plus longues étaient déjà présents.

La parade utilisée (et qui est toujours efficace à l'heure actuelle) est d'effectuer trois codages successifs à l'aide de 2 clés différentes, d'où le nom "triple DES".

Chiffrement triple DES

Deux clés sont générées : K1 et K2.

  • Le fichier subit un premier chiffrement (encryption) à l'aide de la clé K1.
  • Le résultat subit un déchiffrement à l'aide de la clé K2. Comme le chiffrement a été réalisé à l'aide d'une autre clé, le fichier est modifié, mais pas déchiffré.
  • La troisième opération consiste à chiffrer le tout à l'aide de la clé K1.

Déchiffrement triple DES

Pour le déchiffrement triple DES, les opérations inverses sont réalisées :

  • Déchiffrement à l'aide de la clé K1.
  • Chiffrement à l'aide de la clé K2.
  • Déchiffrement à l'aide de la clé K1.

Compatibilité DES et triple DES

Pour assurer la compatibilité entre DES et triple DES, il suffit de rentrer deux fois la même clé dans l'algorithme triple DES. La compatibilité est ainsi assurée en chiffrement ou en déchiffrement, mais au détriment du niveau de sécurité (nous retombons au niveau de DES simple).

Avertissement : Erreur de lecture

Sommaire du document

Erreur de lecture dans la base de données

La page en cours n'a pas été correctement chargée... Vous pouvez essayer d'actualiser la page, ce problème devrait avoir disparu.

De nombreuses fonctions ne sont donc pas accessibles (par exemple les liens de navigation, les sommaires, etc.) et que l'affichage des pages est beaucoup plus lent.

Veuillez réessayer dans quelques minutes (les tests automatiques sont effectués toutes les 15 minutes).

Je vous présente mes excuses pour le désagrément que cela engendre.

Steph.

 

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-463
Document créé le 01/01/70 02:00, dernière modification le Vendredi 17 Juin 2011, 12:11
Source du document imprimé : http://www.gaudry.be/
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Navigation (masquer)
Apparence (afficher)
Stats (afficher)
867 documents
astuces.
niouzes.
definitions.
membres.
2290 messages.

Document genere en :
0,04 seconde
Citation (masquer)
 
l'infobrol
Nous sommes le Mardi 22 Juillet 2014, 21:20, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)