Schéma de cryptage de l'algorithme DES. Modes de fonctionnement de base de l'algorithme DES

Plus de 30 ans se sont écoulés depuis l’adoption de l’algorithme DES comme norme de chiffrement aux États-Unis. DES est l’algorithme de chiffrement dont l’histoire est la plus riche et la plus intéressante.

Historique de la création de l'algorithme

L'un des cryptologues les plus célèbres au monde, Bruce Schneier, a décrit dans son célèbre livre « Applied Cryptography » les problèmes des utilisateurs d'outils de sécurité de l'information au début des années 70. XXe siècle (nous parlons bien entendu des utilisateurs de l’autre côté du rideau de fer) :

Il n’existait ni norme généralement acceptée pour le cryptage des données, ni simplement des algorithmes de sécurité de l’information largement utilisés, de sorte que la compatibilité entre les différents outils de cryptage logiciels ou matériels était hors de question ;

Presque tous les outils de chiffrement étaient des « boîtes noires » au contenu plutôt flou : quel algorithme de chiffrement est utilisé, quelle est sa force cryptographique, s'il est correctement mis en œuvre, si les clés de chiffrement sont créées, stockées et utilisées correctement, si l'outil contient des données non documentées. capacités insérées par les développeurs, etc. - toutes ces informations très importantes étaient inaccessibles à la grande majorité des acheteurs de fonds cryptographiques.

Le National Bureau of Standards (NBS) des États-Unis s'est préoccupé de ce problème. En conséquence, en 1973, le tout premier concours ouvert pour une norme de chiffrement a été annoncé. NBS était disposé à examiner les algorithmes candidats répondant aux critères suivants afin de sélectionner une norme :

L'algorithme doit être cryptographiquement fort ;

L'algorithme doit être rapide ;

La structure de l'algorithme doit être claire et précise ;

La force du cryptage ne doit dépendre que de la clé ; l’algorithme lui-même ne doit pas être secret ;

L'algorithme doit être facilement applicable à diverses fins ;

L'algorithme doit être facilement implémenté dans le matériel en utilisant les composants matériels existants.

On partait du principe que les organisations ou les spécialistes intéressés enverraient au NBS des spécifications détaillées d’algorithmes suffisantes pour leur mise en œuvre, c’est-à-dire sans aucun « angle mort ». Il était également supposé que l'algorithme serait certifié par le NBS pour un usage général et que toutes les restrictions en matière de brevets et d'exportation seraient supprimées, de sorte qu'une telle norme devrait résoudre tous les problèmes de compatibilité de cryptage. En outre, NBS a assumé les fonctions de certification des outils de cryptage - c'est-à-dire que les « boîtes noires » auraient dû appartenir au passé.

En fait, il n’y avait qu’un seul algorithme candidat : ​​il s’agissait de l’algorithme de chiffrement Lucifer développé par ShM. (voir section 3.31). En deux ans, l’algorithme s’est affiné :

Premièrement, NBS, en collaboration avec la National Security Agency (NSA, National Security Agency) des États-Unis, a procédé à une analyse approfondie de l'algorithme, qui a abouti à sa révision assez importante ;

Deuxièmement, les commentaires et critiques de toutes les organisations et individus intéressés ont été pris en compte.

Grâce aux efforts conjoints d'IBM, du NBS et de la NSA, le DES a été publié en janvier 1977 en tant que norme américaine (la dernière version de cette norme se trouve dans le document) pour un algorithme de cryptage des données (sauf pour les informations hautement sensibles). L'algorithme DES a été breveté par YuM, mais NBS a en fait reçu une licence gratuite et illimitée pour utiliser cet algorithme. Un nom alternatif, mais moins couramment utilisé pour l'algorithme, est DEA (Data Encryption Algorithm).

Principales caractéristiques et structure de l'algorithme

L'algorithme DES chiffre les informations en blocs de 64 bits à l'aide d'une clé de chiffrement de 64 bits qui n'utilise que 56 bits (la procédure d'extension de clé est décrite en détail ci-dessous).

Le cryptage des informations est effectué comme suit (Fig. 3.56) :

1. Une permutation initiale est effectuée sur un bloc de données de 64 bits selon le tableau. 3.16.

Tableau 3.16

Le tableau s'interprète de la manière suivante : la valeur du bit d'entrée 58 (ci-après tous les bits sont numérotés de gauche à droite en commençant par 1) est placée dans le bit de sortie 1, la valeur du bit 50 est placée dans le bit 2, etc.



2. Le résultat de l'opération précédente est divisé en 2 sous-blocs de 32 bits chacun (par

riz. 3,56 marqué Un 0 et B 0), sur lesquels 16 tours sont effectués

les transformations suivantes :

Comme mentionné ci-dessus, sur une clé de chiffrement de 64 bits, l'algorithme DES n'utilise que 56 bits. Chaque huitième bit est ignoré et n'est en aucun cas utilisé dans l'algorithme, et l'utilisation des bits restants de la clé de chiffrement dans les implémentations de l'algorithme DES n'est en aucun cas limitée par la norme. La procédure d'extraction des 56 bits significatifs d'une clé de 64 bits dans la Fig. 3.59 est désigné par E. En plus de l'extraction, cette procédure effectue également un réarrangement des bits de clé selon le tableau. 3.19 et 3.20.


Tableau 3.19

Tableau 3.20


À la suite de la permutation, deux valeurs de 28 bits C et D sont formées. Le tableau 3.19 définit la sélection des bits de clé pour le tableau C. 3h20 - pour D.

Ensuite, 16 tours de transformations sont effectués, chacun donnant l'une des clés rondes K t . À chaque tour de la procédure d’expansion des clés, les actions suivantes sont effectuées :

1. Valeurs actuelles de C et D décalé cycliquement vers la gauche d'un nombre variable de bits p. Pour les tours 1, 2, 9 et 16 n= 1, dans les tours restants, un décalage cyclique de 2 bits est effectué.

2. C et D sont combinés en une valeur de 56 bits, à laquelle la permutation de compression CP est appliquée, dont le résultat est une clé ronde de 48 bits K (. La permutation de compression est effectuée selon le tableau 3.21.

Tableau 3.21

Lors du déchiffrement des données, vous pouvez utiliser la même procédure d'extension de clé, mais appliquer les clés rondes dans l'ordre inverse. Il existe une autre option : à chaque tour de la procédure d'expansion de clé, au lieu d'un décalage cyclique vers la gauche, effectuez un décalage cyclique vers la droite de n bits, où rc' = 0 pour le premier tour, u' = 1 pour les tours 2, 9, 16 et n = 2 pour les tours restants. Cette procédure d'extension de clé fournira immédiatement les clés rondes nécessaires au décryptage.

Il convient de dire que la possibilité d'effectuer une expansion de clé « à la volée » (surtout si cette possibilité existe à la fois pendant le cryptage et le déchiffrement) est considérée comme un avantage des algorithmes de cryptage, car dans ce cas, l'expansion de clé peut être effectuée en parallèle avec le cryptage. et ne gaspille pas de mémoire pour stocker les clés des autres tours autres que celui en cours.

  • Tutoriel

Bonjour %username% !
Beaucoup de gens savent que l’algorithme DES a longtemps été considéré comme la norme par défaut dans le domaine du chiffrement symétrique. La première attaque réussie contre cet algorithme invincible a été publiée en 1993, 16 ans après son adoption comme standard. La méthode, que l'auteur a appelée cryptanalyse linéaire, en présence de 2 47 paires texte brut/chiffré, permet d'ouvrir la clé secrète du chiffre DES en 2 43 opérations.
Ci-dessous, je vais essayer de décrire brièvement les principaux points de cette attaque.

Cryptanalyse linéaire

La cryptanalyse linéaire est un type spécial d'attaque contre les chiffrements symétriques, visant à récupérer une clé de chiffrement inconnue à partir de messages clairs connus et de leurs textes chiffrés correspondants.

De manière générale, une attaque basée sur la cryptanalyse linéaire se résume aux conditions suivantes. L'attaquant dispose d'un grand nombre de couples texte clair/texte chiffré obtenus en utilisant la même clé de chiffrement K. Le but de l'attaquant est de récupérer une partie ou la totalité de la clé K.

Tout d'abord, l'attaquant examine le chiffre et trouve ce qu'on appelle analogique statistique, c'est-à-dire une équation de la forme suivante, qui est vraie avec probabilité P ≠ 1/2 pour une paire de texte public/privé arbitraire et une clé fixe :
P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
où P n, C n, K n sont les n-èmes bits du texte, du texte chiffré et de la clé.
Une fois une telle équation trouvée, l'attaquant peut récupérer 1 bit d'information clé en utilisant l'algorithme suivant

Algorithme 1
Soit T le nombre de textes pour lesquels le membre gauche de l'équation (1) est égal à 0, alors
Si T>N/2, où N est le nombre de textes en clair connus.
Supposons que K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (quand P>1/2) ou 1 (quand P<1/2).
Sinon
Supposons que K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (quand P>1/2) ou 0 (quand P<1/2).
Il est évident que le succès de l'algorithme dépend directement de la valeur de |P-1/2| et sur le nombre de paires de textes ouverts/fermés disponibles N. Plus la probabilité P d'égalité (1) diffère de 1/2, moins le nombre de textes ouverts N est nécessaire pour l'attaque.

Deux problèmes doivent être résolus pour que l'attaque réussisse :

  • Comment trouver une équation efficace de la forme (1).
  • Comment utiliser cette équation pour obtenir plus d’une information sur la clé.
Considérons la solution à ces problèmes en utilisant le chiffre DES comme exemple.

Description du DES

Mais d’abord, décrivons brièvement le fonctionnement de l’algorithme. On a déjà assez parlé du DES. Une description complète du chiffre peut être trouvée sur Wikipédia. Cependant, pour expliquer davantage l’attaque, nous aurons besoin d’un certain nombre de définitions qu’il est préférable de présenter à l’avance.

Ainsi, DES est un chiffrement par blocs basé sur le réseau Feistel. Le chiffrement a une taille de bloc de 64 bits et une taille de clé de 56 bits. Considérons le schéma de cryptage de l'algorithme DES.

Comme le montre la figure, lors du cryptage du texte, les opérations suivantes sont effectuées :

  1. Permutation initiale des bits. A ce stade, les bits du bloc d'entrée sont mélangés dans un certain ordre.
  2. Après cela, les bits mélangés sont divisés en deux moitiés, qui sont transmises à l'entrée de la fonction Feistel. Pour le DES standard, le réseau Feistel comprend 16 tours, mais d'autres variantes de l'algorithme existent.
  3. Les deux blocs obtenus lors du dernier tour de transformation sont combinés et une autre permutation est effectuée sur le bloc résultant.

A chaque tour du réseau Feistel, les 32 bits de poids faible du message passent par la fonction f :

Regardons les opérations effectuées à ce stade :

  1. Le bloc d'entrée passe par la fonction d'extension E, qui convertit un bloc de 32 bits en un bloc de 48 bits.
  2. Le bloc résultant est ajouté à la clé ronde K i .
  3. Le résultat de l'étape précédente est divisé en 8 blocs de 6 bits chacun.
  4. Chacun des blocs reçus Bi passe par la fonction de substitution S-Box i, qui remplace la séquence de 6 bits par un bloc de 4 bits.
  5. Le bloc de 32 bits résultant passe par la permutation P et est renvoyé comme résultat de la fonction f.

Du point de vue de la cryptanalyse du chiffrement, les blocs S, conçus pour masquer la connexion entre les données d'entrée et de sortie de la fonction f, nous intéressent le plus. Pour réussir à attaquer DES, nous allons d’abord construire des analogues statistiques pour chacune des boîtes S, puis les étendre à l’ensemble du chiffre.

Analyse du bloc S

Chaque S-box prend une séquence de 6 bits en entrée, et pour chacune de ces séquences, une valeur fixe de 4 bits est renvoyée. Ceux. Il existe un total de 64 options d'entrée et de sortie. Notre tâche est de montrer la relation entre les données d'entrée et de sortie des blocs S. Par exemple, pour la troisième boîte S du chiffre DES, le 3ème bit de la séquence d'entrée est égal au 3ème bit de la séquence de sortie dans 38 cas sur 64. Par conséquent, nous avons trouvé l'analogue statistique suivant pour le troisième S. -boîte:
S 3 (x) = x, qui est réalisé avec une probabilité P=38/64.
Les deux côtés de l’équation représentent 1 bit d’information. Par conséquent, si les côtés gauche et droit étaient indépendants l’un de l’autre, l’équation devrait être satisfaite avec une probabilité de 1/2. Ainsi, nous venons de démontrer la relation entre l'entrée et la sortie de la 3ème S-box de l'algorithme DES.

Voyons comment trouver un analogue statistique de la S-box dans le cas général.

Pour une S-box S a , 1 ≤ α ≤ 63 et 1 ≤ β ≤ 15, la valeur NS a (α, β) décrit combien de fois sur 64 bits d'entrée XOR possibles S a superposés aux bits α sont égaux à les bits de sortie XOR superposés aux bits α β, soit :
où le symbole est ET logique.
Les valeurs de α et β pour lesquelles NS a (α, β) est le plus différent de 32 décrivent l'analogue statistique le plus efficace de la S-box S a .

L'analogue le plus efficace a été trouvé dans la 5ème case S du chiffre DES pour α = 16 et β = 15 NS 5 (16, 15) = 12. Cela signifie que l'équation suivante est vraie : Z=Y ⊕ Y ⊕ Y ⊕ Y, où Z est la séquence d'entrée de la S-box et Y est la séquence de sortie.
Ou en tenant compte du fait que dans l'algorithme DES, avant d'entrer dans la S-box, les données sont ajoutées modulo 2 avec une clé ronde, c'est-à-dire Z = X ⊕ K on obtient
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, où X et Y sont les données d'entrée et de sortie de la fonction f sans tenir compte des permutations.
L'équation résultante est exécutée à tous les tours de l'algorithme DES avec la même probabilité P=12/64.
Le tableau suivant présente une liste des plus efficaces, c'est-à-dire ayant le plus grand écart par rapport à P = 1/2, analogues statistiques pour chaque bloc s de l'algorithme DES.

Construire des analogues statistiques pour plusieurs cycles de DES

Montrons maintenant comment nous pouvons combiner les analogues statistiques de plusieurs tours de DES et finalement obtenir un analogue statistique pour l'ensemble du chiffre.
Pour ce faire, considérons une version en trois tours de l'algorithme :

Utilisons un analogue statistique efficace de la 5ème s-box pour calculer certains bits de la valeur X(2).
Nous savons qu'avec une probabilité de 12/64, l'égalité est vraie dans la fonction f X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, où X est le deuxième bit d'entrée de la 5ème S-box, il s'agit essentiellement du 26ème bit de la séquence obtenue après expansion des bits d'entrée. En analysant la fonction d'expansion, on peut établir que le 26ème bit est remplacé par le 17ème bit de la séquence X(1).
De même, Y,..., Y sont essentiellement les 17ème, 18ème, 19ème et 20ème bits de la séquence obtenue avant la permutation P. En examinant la permutation P, on constate que les bits Y,..., Y sont en réalité des bits Y. (1), Oui(1), Oui(1), Oui(1).
Le bit de clé K impliqué dans les équations est le 26ème bit de la sous-clé de premier tour K1 puis l'analogue statistique prend la forme suivante :
X(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y1 ⊕ Y(1) = K1.
Ainsi, X(1) ⊕ K1 = Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)(2) avec probabilité P=12/64.
Connaissant 3, 8, 14, 25 bits de la séquence Y(1), vous pouvez trouver 3, 8, 14, 25 bits de la séquence X(2) :
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ou en tenant compte de l'équation (2)
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 (3) avec une probabilité de 12/64.

Trouvons une expression similaire en utilisant le dernier tour. Cette fois, nous avons l'équation
X(3) ⊕ K3 = Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3).
Parce que
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3)
nous comprenons ça
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3(4) avec une probabilité de 12/64.

En égalisant les membres droits des équations (3) et (4), nous obtenons
CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 avec probabilité (12/64) 2 +(1-12/64) 2 .
En tenant compte du fait que X(1) = PR et X(3) = CR nous obtenons un analogue statistique
СL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
qui est exécuté avec probabilité (12/64) 2 + (1-12/64) 2 =0,7.
L'analogue statistique décrit ci-dessus peut être représenté graphiquement comme suit (les bits de la figure sont numérotés de droite à gauche et en commençant par zéro) :

Tous les bits du côté gauche de l’équation sont connus de l’attaquant, il peut donc appliquer l’algorithme 1 et découvrir la valeur de K1 ⊕ K3. Montrons comment, en utilisant cet analogue statistique, vous pouvez ouvrir non pas 1, mais 12 bits de la clé de cryptage K.

Attaque sur DES avec texte clair connu

Voici un moyen d'étendre l'attaque et d'obtenir immédiatement 6 bits du premier tour.
Lors de la composition de l’équation (5), nous avons pris en compte le fait que nous ne connaissons pas la valeur de F1(PR, K1). Par conséquent, nous avons utilisé son analogue statistique K1 ⊕ PR.
Renvoyons la valeur F1(PR, K1) au lieu de l'expression K1 ⊕ PR et obtenons l'équation suivante :
СL ⊕ CR ⊕ PL ⊕ F1(PR, K1) = K3 (6) , qui sera exécuté avec une probabilité de 12/64. La probabilité a changé puisque nous n'avons laissé que l'analogue statistique du troisième tour, toutes les autres valeurs sont fixes.

Nous avons déjà déterminé plus haut que la valeur de F1(PR, K1) est influencée par les bits d'entrée de la 5ème S-box, à savoir les bits de clé K1 et les bits du bloc PR. Montrons comment, en disposant seulement d'un ensemble de textes ouverts/fermés, vous pouvez restaurer la valeur de K1. Pour ce faire, nous utiliserons l’algorithme 2.

Algorithme 2
Soit N le nombre de paires de textes ouvert/fermé connues avant l'attaque. Ensuite, pour ouvrir la clé, vous devez suivre les étapes suivantes.
Pour (i=0; je<64; i++) do
{
Pour(j=0; j {
si(СL j ⊕ CR j ⊕ PL j ⊕ F1(PR j , i)=0) alors
T je =T je +1
}
}
Comme séquence probable K1, on prend une valeur de i telle que l'expression |T i -N/2| a la valeur maximale.

Étant donné un nombre suffisant de textes clairs connus, l'algorithme aura une forte probabilité de renvoyer la valeur correcte des six bits de la sous-clé de premier tour K1. Ceci s'explique par le fait que si la variable i n'est pas égale à K1, alors la valeur de la fonction F1(PR j, K) sera aléatoire et le nombre d'équations pour une telle valeur de i pour laquelle le côté gauche est égal à zéro tendra vers N/2. Si la sous-clé est correctement devinée, le côté gauche sera égal au bit fixe K3 avec une probabilité de 12/64. Ceux. il y aura un écart significatif par rapport à N/2.

Après avoir reçu 6 bits de la sous-clé K1, vous pouvez également ouvrir 6 bits de la sous-clé K3. Tout ce que vous avez à faire est de remplacer C par P et K1 par K3 dans l'équation (6) :
PL ⊕ PR ⊕ CL ⊕ F3(CR, K3) = K1.
L'algorithme 2 renverra la valeur K3 correcte car le processus de décryptage de l'algorithme DES est identique au processus de cryptage, seule la séquence de clés est inversée. Ainsi, lors du premier tour de décryptage, la clé K3 est utilisée, et lors du dernier tour, la clé K1 est utilisée.

Ayant reçu 6 bits des sous-clés K1 et K3, l'attaquant récupère 12 bits de la clé commune du chiffre K, car les clés rondes sont la permutation habituelle de la clé K. Le nombre de textes en clair requis pour une attaque réussie dépend de la probabilité de l'analogue statistique. Pour déchiffrer une clé DES de 12 bits à 3 tours, 100 paires de texte public/privé suffisent. Pour déchiffrer 12 bits d'une clé DES de 16 tours, il faudra environ 2 à 44 paires de textes. Les 44 bits restants de la clé sont ouverts en utilisant la force brute normale.

Data Encryption Standard (DES) est une norme de cryptage de données inventée aux États-Unis dans les années 1980. Parmi les chiffres, il est à juste titre considéré comme un « retraité », tout en restant le cheval de bataille de la cryptographie. DES n'est plus adapté aux environnements dotés d'une technologie ultra-rapide et de gros volumes de données en raison des limitations de 56 bits par clé et de 64 bits par données. Cependant, il est toujours utilisé.

Que sont les chiffrements par blocs ?

DES est un algorithme de chiffrement par blocs. De nombreux chiffrements par blocs ont été créés au cours des 20 à 30 dernières années, mais créer un bon chiffrement sécurisé est une tâche difficile. Il est important que le chiffre ait des caractéristiques qui lui permettront de fonctionner dans de nombreux domaines et industries.

Les chiffrements par blocs consistent en plusieurs itérations d’utilisation d’un chiffre à tour de rôle. Chaque itération est appelée un tour. Comme le montre la pratique, même certains algorithmes primitifs, lorsqu'ils sont utilisés de manière cohérente, sont capables de créer des chiffres fiables. L’algorithme DES est un exemple resté fiable et incassable depuis 20 ans.

Cette approche du développement du chiffrement simplifie considérablement le processus et simplifie l'analyse de sécurité. Par exemple, une attaque test sur un chiffrement par bloc commence par un nombre minimum de tours et se poursuit méthodiquement avec une augmentation du nombre de tours.

Utilisation du DES

Bien que DES soit considéré comme obsolète et ne réponde pas aux exigences modernes, il peut être utilisé, par exemple, sous la forme de 3DES, lorsque le chiffre est utilisé trois fois de suite. Cette approche supprime la limitation sur la taille de la clé, mais le bloc de données cryptées reste le même. À une certaine époque, DES était un chiffrement assez rapide et sécurisé. Ce n’est plus le cas et 3DES fonctionne trois fois plus lentement. Malgré cela, le DES est toujours utilisé dans un certain nombre de systèmes, mais son utilisation dans de nouveaux projets est interdite.

Officiellement, l’algorithme de chiffrement DES était un standard aux États-Unis jusqu’en 1998. En 1997, la création d'une nouvelle norme a commencé, appelée System), et bien que la cryptanalyse montre qu'une tentative de déchiffrement du DES conduit à de nombreux systèmes d'équations non linéaires, les méthodes analytiques ne sont pas en mesure d'aider à résoudre le problème - son point faible est le petit jeu de clés possibles. Leur nombre est de 2 56 et toutes les options peuvent être résolues grâce aux technologies modernes dans un délai relativement court.

Un tour dans l'algorithme

Pour plus de clarté dans la présentation et la description de l'algorithme DES, nous utilisons la figure 4.1, qui montre la structure d'un tour.

Chaque rectangle du diagramme linéaire représente une sorte de calcul et la flèche qui en découle indique où les résultats du bloc seront transférés. Le signe plus encerclé désigne une opération « ou exclusif », appelée XOR en programmation. L'opération est également appelée « addition au niveau du bit » ou « addition sans retenue ». Vous pouvez trouver l'algorithme DES en C en ligne et l'étudier pour une meilleure compréhension.

DES accepte un bloc de texte de 64 bits. Il subit la permutation initiale selon un certain principe. Lors de l'analyse de l'algorithme, il s'est avéré que cette permutation n'a pas beaucoup de sens, car elle ne donne aucun effet cryptographique. Le bloc de texte est divisé en 2 parties égales : droite (R) et gauche (L). Les parties cryptées sont ensuite échangées et combinées, et à la fin du tour, un bloc de données de 64 bits est obtenu, uniquement crypté.

Algorithme général

L'algorithme DES comprend 16 tours, effectués selon le schéma décrit ci-dessus. Tous les tours sont numérotés via i, où i = (1 ; 16). Chaque ième tour de la paire (Li-1, Ri-1) reçoit une nouvelle paire (Li, Ri), en utilisant la clé Ki. Les principales transformations se produisent à l'intérieur de la fonction F.

Algorithme de fonctionnement de la fonction F

Comme vous pouvez le voir sur la figure 4.1, R passe par l'opération Expand. Ce bloc duplique un certain nombre de bits de R et le complète avec eux, ce qui donne une valeur de 48 bits. Le résultat résultant est transmis par addition au niveau du bit avec la clé Ki de 48 bits. Et le résultat de cette opération est transmis au bloc S. Le bloc S contient 8 petites matrices de substitution, sélectionnées de manière particulière.

Chaque matrice reçoit 6 bits d'information en entrée et produit une valeur de 4 bits. En conséquence, le bloc S reçoit des données de 48 bits en entrée et présente le résultat sous la forme d'une valeur de 32 bits en sortie.

Cette valeur de 32 bits est passée par une autre opération de permutation puis xorée avec L. Enfin, les côtés droit et gauche sont permutés et le tour est terminé. Comme mentionné précédemment, l’algorithme effectue 16 tours de ce type.

Ici, nous ne surchargerons pas l'article avec des exemples qui prennent beaucoup de place. Les travaux du DES et des exemples peuvent être consultés en ligne.

Chiffre de Feistel

L'algorithme DES est basé sur le chiffre de Feistel. Son idée est assez élégante. À chaque tour, la partie L est ajoutée à la valeur F(R, Ki) et L est échangée avec R. La caractéristique clé de l'algorithme de Feistel est que le décryptage et le cryptage comportent les mêmes étapes : les parties L et R sont échangées, puis L est ajouté et F (R, Ki). Cela rend les procédures de cryptage et de décryptage simples et directes.

Un changement intéressant souvent introduit dans les chiffrements de Feistel est la suppression de la permutation L et R lors de la dernière itération. Cela rend les algorithmes de cryptage et de déchiffrement complètement symétriques. La seule différence réside dans l’ordre dans lequel les clés Ki sont utilisées. Ce principe s'est avéré extrêmement pratique à utiliser au niveau logiciel, puisque le cryptage et le déchiffrement s'effectuent à l'aide d'une seule fonction. Par exemple, une implémentation concise de l'algorithme de chiffrement DES en C.

Clés de chiffrement

DES utilise seize clés de 48 bits pour chiffrer les données. Une clé par tour. Chaque clé est créée en échantillonnant 48 bits à partir d'une clé principale de 56 bits. La génération des clés pour un tour particulier est déterminée par un mécanisme décrit en détail dans la documentation DES.

En bref, l'algorithme de sélection de la touche i est le suivant. Des bits sont ajoutés à la clé principale aux positions 8, 16, 24, 32, 40, 48, 56, 64. Ceci est fait de telle sorte que chaque octet contienne un nombre impair de uns. Le respect de la règle permet de détecter les erreurs dans les échanges de clés. Après cela, à l'aide de tables spéciales, la clé augmentée subit des permutations et des décalages, à l'exclusion des bits ajoutés. De cette façon, la clé requise est obtenue.

Composants DES

Chaque composant de l'algorithme DES résout un problème spécifique :

  1. L'algorithme de Feistel simplifie le cryptage et le déchiffrement tout en garantissant que les deux moitiés du texte sont mélangées.
  2. La sommation bit à bit de parties de texte avec des clés mélange le texte brut avec la clé et le crypte.
  3. La S-box et les tables de correspondance rendent l'algorithme non linéaire, augmentant ainsi sa résistance à diverses attaques.
  4. L'expansion, la S-box et les permutations assurent la diffusion de l'algorithme - un effet d'avalanche. En d’autres termes, si au moins 1 bit change dans les données d’entrée de la fonction F, cela entraînera une modification de plusieurs bits à la fois. S'il n'y a pas d'effet d'avalanche dans le chiffre, alors les modifications dans les données ouvertes entraîneront des modifications équivalentes dans la forme cryptée, qui peuvent être suivies et utilisées pour le piratage. En cryptographie, il existe un critère pour l'effet d'avalanche. L'algorithme le satisfait si la modification d'un bit de données brutes modifie au moins la moitié des données cryptées. L’algorithme DES le satisfait à partir du tour 4. Le résultat est que si vous modifiez 1 bit de données brutes dans le chiffrement DES, 29 bits changeront.

Problèmes de sécurité dans DES

Un problème évident avec DES est la sélection des clés de chiffrement à partir d’une clé partagée. Que se passe-t-il si vous choisissez une valeur nulle comme clé (tous les bits de la clé sont 0) ? Cela conduira au fait que la sélection de toutes les clés de cryptage à chaque tour sera la même et que toutes les clés seront égales à zéro. Non seulement 16 cryptages fonctionneront avec une seule clé, mais comme les algorithmes de cryptage et de déchiffrement DES ne diffèrent que par l'ordre dans lequel les clés sont utilisées, ils seront exactement les mêmes. Tout l’intérêt du cryptage sera perdu.

DES a 4 clés, appelées faibles, conduisant à l'effet décrit. DES dispose de 12 clés semi-faibles et 48 pseudo-faibles, ce qui entraîne une variation limitée des clés générées au fil des tours. Autrement dit, il est possible que lors de 16 tours de chiffrement, ce ne soient pas 16 clés différentes qui soient utilisées, mais 8, 4 voire 2.

Un inconvénient moins évident du DES est sa propriété de complémentarité. Cela signifie que si vous utilisez le complément du texte brut et le complément de la clé pour chiffrer, vous obtiendrez une valeur qui est le complément du texte chiffré. Cette propriété étrange peut conduire à des attaques réussies contre des projets qui utilisent DES pour la sécurité.

Problème de clé de chiffrement

Il est fondamental pour le DES et est considéré comme la principale raison pour laquelle cet algorithme devrait être abandonné. Étant donné que la taille de la clé dans DES est de 56 bits, pour énumérer toutes les clés, vous devrez parcourir 2 56 options. Est-ce que c'est autant ?

Si vous effectuez 10 millions de contrôles de clé par seconde, la vérification prendra environ 2 000 ans. L'algorithme semble assez robuste. C'était le cas au siècle dernier, lorsque créer un ordinateur d'une telle puissance était une tâche presque impossible, tant d'un point de vue technique que financier.

Si vous construisez un ordinateur avec un million de puces, la recherche dans l'ensemble des clés DES prendra 20 heures. Le premier ordinateur de ce type destiné au décryptage à l'aide de l'algorithme DES est apparu en 1998 et a accompli la tâche en 56 heures. Les technologies modernes de mise en réseau et de processus parallèles peuvent réduire encore davantage ce temps.

Cryptanalyse et DES

On peut dire sans exagération que le DES est devenu la raison de l'émergence d'une science appliquée appelée « Analyse Cryptographique ». Dès le début de l'émergence du DES, des tentatives ont été faites pour le déchiffrer et des travaux scientifiques ont été menés pour l'étudier. Tout cela a conduit à l'émergence de domaines mathématiques tels que :

  • cryptanalyse linéaire - l'étude et l'identification des dépendances entre texte clair et texte chiffré ;
  • cryptanalyse différentielle - l'étude et l'analyse des dépendances entre plusieurs textes en clair et leurs versions cryptées ;
  • cryptanalyse sur les clés associées - l'étude des dépendances entre les textes chiffrés obtenus sur la clé primaire et les clés liées d'une manière ou d'une autre à la clé primaire.

DES a résisté à 20 ans de cryptanalyses et d’attaques mondiales, mais reste un chiffrement puissant. Mais celui qui cherche trouvera toujours...

  1. Biham et Shamir, scientifiques israéliens, ont montré en 1991, grâce à la cryptanalyse différentielle, qu'une attaque contre DES dans laquelle la clé était calculée était possible, à condition que l'attaquant dispose de 2 47 paires de texte clair et de texte chiffré spécialement sélectionnées.
  2. Le scientifique japonais Mitsuru Matsui a montré en 1993 qu'une clé pouvait être calculée à l'aide de la cryptanalyse linéaire. Pour ce faire, il vous suffit de connaître 2 47 paires de texte en clair et la version cryptée correspondante.

Par la suite, ces méthodes de piratage ont été légèrement affinées, améliorées et simplifiées, et un certain nombre de nouvelles méthodes de piratage sont également apparues. Mais ils restent trop complexes ; dans leur contexte, une recherche complète de toutes les options clés semble être l'attaque la plus adéquate contre le DES.

Algorithme DES

Les principaux avantages de l'algorithme DES :

· une seule clé d'une longueur de 56 bits est utilisée ;

· après avoir chiffré un message à l'aide d'un package, vous pouvez en utiliser n'importe quel autre pour le décrypter ;

· la relative simplicité de l'algorithme garantit une grande rapidité de traitement de l'information ;

· stabilité suffisamment élevée de l'algorithme.

DES crypte des blocs de données de 64 bits à l'aide d'une clé de 56 bits. Le décryptage dans DES est l'opération inverse du cryptage et s'effectue en répétant les opérations de cryptage dans l'ordre inverse (malgré l'évidence apparente, cela n'est pas toujours fait. Plus tard, nous examinerons les chiffrements dans lesquels le cryptage et le décryptage sont effectués à l'aide d'algorithmes différents) .

Le processus de chiffrement consiste en une permutation initiale des bits d'un bloc de 64 bits, seize cycles de chiffrement et, enfin, une permutation inverse des bits (Fig. 1).

Il convient de noter immédiatement que TOUTES les tables données dans cet article sont STANDARD et doivent donc être incluses sans modification dans votre implémentation de l'algorithme. Toutes les permutations et codes dans les tableaux sont sélectionnés par les développeurs de manière à rendre le processus de décryptage aussi difficile que possible en sélectionnant une clé. La structure de l'algorithme DES est présentée sur la figure 2.

Fig.2. Structure de l'algorithme de chiffrement DES

Supposons que le bloc T suivant de 8 octets soit lu dans le fichier, qui est transformé à l'aide de la matrice de permutation initiale IP (tableau 1) comme suit : le bit 58 du bloc T devient le bit 1, le bit 50 devient le bit 2, etc., ce qui donner le résultat : T(0) = IP(T).

La séquence de bits résultante T(0) est divisée en deux séquences de 32 bits chacune : L(0) - bits de gauche ou de poids fort, R(0) - bits de droite ou de poids faible.

Tableau 1 : Matrice de permutation initiale IP

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

Ensuite, le cryptage est effectué, composé de 16 itérations. Le résultat de la ième itération est décrit par les formules suivantes :

R(i) = L(i-1) xou f(R(i-1), K(i)) ,

où xor est l’opération OU EXCLUSIF.

La fonction f est appelée fonction de chiffrement. Ses arguments sont la séquence de 32 bits R(i-1), obtenue à la (i-1)ème itération, et la clé de 48 bits K(i), qui est le résultat de la conversion de la clé de 64 bits K. En détail, la fonction de chiffrement et l'algorithme d'obtention des clés K(i) sont décrits ci-dessous.

A la 16ème itération, on obtient les séquences R(16) et L(16) (sans permutation), qui sont concaténées en une séquence de 64 bits R(16)L(16).

Puis les positions des bits de cette séquence sont réarrangées conformément à la matrice IP -1 (Tableau 2).

Tableau 2 : Matrice de permutation inverse IP-1

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

Les matrices IP -1 et IP sont liées comme suit : la valeur du 1er élément de la matrice IP -1 est 40, et la valeur du 40ème élément de la matrice IP est 1, la valeur du 2ème L'élément de la matrice IP -1 est 8, et la valeur du 8ème élément de la matrice IP est égale à 2, etc.

Le processus de décryptage des données est inverse du processus de cryptage. Toutes les étapes doivent être effectuées dans l'ordre inverse. Cela signifie que les données déchiffrées sont d'abord réorganisées selon la matrice IP-1, puis les mêmes actions sont effectuées sur la séquence de bits R(16)L(16) que dans le processus de cryptage, mais dans l'ordre inverse.

Le processus de décryptage itératif peut être décrit par les formules suivantes :

R(i-1) = L(i), i = 1, 2, ..., 16 ;

L(i-1) = R(i) xou f(L(i), K(i)), i = 1, 2, ..., 16 .

A la 16ème itération, les séquences L(0) et R(0) sont obtenues, qui sont concaténées en une séquence de 64 bits L(0)R(0).

Les positions des bits de cette séquence sont ensuite réorganisées selon la matrice IP. Le résultat d’une telle permutation est la séquence originale de 64 bits.

Considérons maintenant la fonction de chiffrement f(R(i-1),K(i)). Il est représenté schématiquement sur la Fig. 3.


Figure 3. Calcul de la fonction f(R(i-1), K(i))

Pour calculer la valeur de la fonction f, les fonctions matricielles suivantes sont utilisées :

E - extension d'une séquence de 32 bits à 48 bits,

S1, S2, ..., S8 - conversion d'un bloc de 6 bits en un bloc de 4 bits,

P - permutation de bits dans une séquence de 32 bits.

La fonction d'expansion E est définie dans le tableau 3. D'après ce tableau, les 3 premiers bits de E(R(i-1)) sont les bits 32, 1 et 2, et les derniers sont 31, 32 et 1.

Tableau 3 : Fonction d'extension E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 01

Le résultat de la fonction E(R(i-1)) est une séquence de 48 bits qui est ajoutée modulo 2 (opération xor) avec la clé de 48 bits K(i). La séquence de 48 bits résultante est divisée en huit blocs de 6 bits B(1)B(2)B(3)B(4)B(5)B(6)B(7)B(8). C'est-à-dire:

E(R(i-1)) xou K(i) = B(1)B(2)...B(8) .

Les fonctions S1, S2, ..., S8 sont définies dans le tableau 4.

Tableau 4

Vers le tableau 4. des éclaircissements supplémentaires sont nécessaires. Soit l'entrée de la fonction matricielle Sj un bloc de 6 bits B(j) = b1b2b3b4b5b6, alors le nombre de deux bits b1b6 indique le numéro de ligne de la matrice et b2b3b4b5 le numéro de colonne. Le résultat de Sj(B(j)) sera un élément de 4 bits situé à l'intersection de la ligne et de la colonne spécifiées.

Par exemple, B(1)=011011. Alors S1(B(1)) est situé à l’intersection de la ligne 1 et de la colonne 13. Dans la colonne 13 de la ligne 1, la valeur est 5. Cela signifie S1(011011)=0101.

En appliquant l'opération de sélection à chacun des blocs de 6 bits B(1), B(2), ..., B(8), on obtient la séquence de 32 bits S1(B(1))S2(B(2 ))S3(B(3))...S8(B(8)).

Enfin, pour obtenir le résultat de la fonction de chiffrement, il faut réarranger les bits de cette séquence. A cet effet, la fonction de permutation P est utilisée (tableau 5). Dans la séquence d'entrée, les bits sont réorganisés de manière à ce que le bit 16 devienne le bit 1, le bit 7 devienne le bit 2, et ainsi de suite.

Tableau 5 : Fonction de permutation P

Ainsi,

f(R(i-1), K(i)) = P(S1(B(1)),...S8(B(8)))

Pour compléter la description de l'algorithme de chiffrement des données, il reste à présenter l'algorithme d'obtention de clés de 48 bits K(i), i=1...16. A chaque itération, une nouvelle valeur de clé K(i) est utilisée, qui est calculée à partir de la clé initiale K. K est un bloc de 64 bits avec huit bits de parité situés aux positions 8,16,24,32,40,48, 56. 64.

Pour supprimer les bits de contrôle et réorganiser le reste, la fonction G de la préparation initiale de la clé est utilisée (tableau 6).

Tableau 6

Matrice G de préparation initiale des clés

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

Le résultat de la transformation G(K) est divisé en deux blocs de 28 bits C(0) et D(0), et C(0) sera constitué des bits 57, 49, ..., 44, 36 de la clé K, et D(0 ) seront constitués des bits 63, 55, ..., 12, 4 de la clé K. Après avoir défini C(0) et D(0), C(i) et D(i), i= 1...16, sont déterminés de manière récursive. Pour ce faire, appliquez un décalage cyclique vers la gauche d'un ou deux bits, selon le numéro d'itération, comme indiqué dans le tableau 7.

Tableau 7

Table de décalage pour le calcul des clés

Numéro d'itération Décalage (bits)
01 1
02 1
03 2
04 2
05 2
06 2
07 2
08 2
09 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

La valeur résultante est à nouveau « mixte » conformément à la matrice H (tableau 8).

Tableau 8 : Matrice de réalisation des clés H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

La clé K(i) sera constituée des bits 14, 17, ..., 29, 32 de la séquence C(i)D(i). Ainsi:

K(i) = H(C(i)D(i))

Le schéma fonctionnel de l'algorithme de calcul clé est présenté sur la figure 4.

Figure 4. Schéma fonctionnel de l'algorithme de calcul de la clé K(i)

La restauration du texte original s'effectue à l'aide de cet algorithme, mais vous utilisez d'abord la clé

K(15), puis K(14) et ainsi de suite. Vous devez maintenant comprendre pourquoi l'auteur recommande avec insistance d'utiliser les matrices données. Si vous devenez voyou, vous pourriez vous retrouver avec un code très secret, mais vous ne pourrez pas le déchiffrer vous-même !

Modes de fonctionnement de l'algorithme DES

Pour répondre au mieux à toutes les exigences des systèmes de cryptage commerciaux, plusieurs modes de fonctionnement de l'algorithme DES sont implémentés. Les modes les plus utilisés sont :

· livre de codes électronique (Electronic Codebook) - BCE ;

· chaîne de blocs numériques (Cipher Block Chaining) - CBC ;

· retour numérique (Cipher Feedback) - CFB ;

· feedback externe (Output Feedback) - OFB.

Dans ce mode, le fichier source M est divisé en blocs de 64 bits (8 octets chacun) : M = M(1)M(2)...M(n). Chacun de ces blocs est chiffré indépendamment à l'aide de la même clé de chiffrement (Fig. 5). Le principal avantage de cet algorithme est sa facilité de mise en œuvre. L’inconvénient est qu’il est relativement faible face aux cryptanalystes expérimentés.

Ce que l'ANSI appelle l'algorithme de cryptage des données DEA (Data Encryption Algorithm), et l'ISO l'appelle DEA-1, est devenu en 20 ans une norme mondiale. Au fil des années de son existence, il a résisté aux assauts de diverses attaques et, sous réserve de certaines restrictions, est toujours considéré comme crypto-résistant.

DES est un chiffrement par blocs qui crypte les données en blocs de 64 bits. Un bloc de texte brut de 64 bits est entré à une extrémité de l'algorithme et un bloc de texte chiffré de 64 bits est sorti à l'autre extrémité. DES est un algorithme symétrique : le même algorithme et la même clé sont utilisés pour le cryptage et le déchiffrement (à l'exception de différences mineures dans l'utilisation de la clé). La longueur de la clé est de 56 bits. (Une clé est généralement représentée par un nombre de 64 bits, mais un bit sur huit est utilisé pour la parité et est ignoré. Les bits de parité sont les bits les moins significatifs des octets de clé.) La clé, qui peut être n'importe quel nombre de 56 bits. , peut être modifié à tout moment.

La force cryptographique est entièrement déterminée par la clé. L’élément fondamental du DES est la combinaison de substitutions et de permutations.

Le DES se compose de 16 cycles.

Si L i et R i sont les moitiés gauche et droite résultant de la ième itération, K i est la clé de 48 bits pour la boucle i et f est une fonction qui effectue toutes les substitutions, permutations et XOR sur la clé, alors un la boucle de conversion peut être représentée comme :

En tenant compte de la substitution F i (*) et de la permutation T (*), le cycle de transformation peut être représenté comme le montre la Fig.

On peut voir que chaque cycle DES est un chiffre de composition avec deux transformations séquentielles - substitution F i (*) et permutation T (*) (à l'exception du dernier, seizième cycle, où la permutation est omise).

Substitution:

(L je , R i) = (R i −1 , L i −1) ⊕ f (R i −1 , K)

est une involution, puisque

F je (F i (L i −1 , R i −1)) = F i (R i −1 , L i −1) ⊕ (f (R i −1 , K i))) = (R i − 1 , L i −1 ⊕(f (R i −1 , K i)) ⊕ (f (R i −1 , K i))) = (L i −1 , R i −1)

Et le remplacement

T (L je ′, R je ′) = (R je ′, L je ′),

est aussi une involution, puisque

T (T (L i ′, R i ′)) = T (R i ′, L i ′) = L i ′, R i ′

Si nous désignons les permutations initiale et finale par (IP) et (IP) − 1, alors la transformation directe DES (chiffrement) implémente la fonction :

DES = (IP) F 1 TF 2 T … F 15 TF 16 (IP) − 1 ,

et la transformation DES inverse (déchiffrement) implémente la fonction :

DES − 1 = (IP) −1 F 16 TF 15 T … F 2 TF 1 (IP).

Ainsi, DES est un chiffre de Feistel et est conçu pour remplir la propriété utile selon laquelle le même algorithme est utilisé pour le cryptage et le déchiffrement. La seule différence est que les clés doivent être utilisées dans l’ordre inverse.


Autrement dit, si les clés K 1, K 2, K 3, ..., K 16 ont été utilisées lors du cryptage, alors les clés de déchiffrement seront K 16, K 15, K 14, ..., K 1. L'algorithme utilise uniquement des opérations arithmétiques et logiques standard de 64 bits, il peut donc être facilement implémenté dans le matériel.

DES fonctionne sur un bloc de texte en clair de 64 bits. Après le brassage initial, le bloc est divisé en moitiés droite et gauche de 32 bits chacune. Ensuite, 16 transformations (fonction f) sont effectuées dans lesquelles les données sont combinées avec la clé. Après le seizième cycle, les moitiés droite et gauche sont combinées et l'algorithme se termine par une permutation finale (l'inverse de l'original). A chaque cycle (voir figure), les bits clés sont décalés, puis 48 bits sont sélectionnés parmi les 56 bits clés. La moitié droite des données est étendue à 48 bits à l'aide d'une permutation d'expansion, XOR avec les 48 bits de la clé décalée et permutée, passée à travers 8 boîtes S pour former 32 nouveaux bits et permutée à nouveau. Ces quatre opérations sont effectuées par la fonction f.

Le résultat de f est ensuite combiné avec la moitié gauche en utilisant un autre XOR. À la suite de ces actions, une nouvelle moitié droite apparaît et l'ancienne moitié droite devient une nouvelle moitié gauche. Ces étapes sont répétées 16 fois, ce qui donne 16 cycles DES.

Norme russe - GOST 28147-89

GOST 28147-89 est un chiffrement par blocs avec une clé de 256 bits et 32 ​​cycles de conversion, fonctionnant sur des blocs de 64 bits.

L’algorithme de chiffrement utilise également une clé supplémentaire, décrite ci-dessous. Pour le cryptage, le texte brut est d'abord divisé en moitiés gauche et droite L et R.
Au i-ième cycle, la sous-clé K i est utilisée :

La fonction f est implémentée comme suit. Tout d'abord, la moitié droite et la i-ième sous-clé sont ajoutées modulo 2 32.

Le résultat est divisé en huit sous-séquences de 4 bits, chacune étant entrée dans sa propre S-box. GOST utilise huit S-box différentes, les 4 premiers bits vont dans la première S-box, les 4 seconds bits dans la deuxième S-box, etc. Chaque S-box est une permutation de nombres de 0 à 15. Par exemple, La boîte S pourrait ressembler à : 7,10,2,4,15,9,0,3,6,12,5,13,1,8,11. Dans ce cas, si l'entrée de la S-box est 0, alors la sortie est 7. Si l'entrée est 1, la sortie est 10, etc. Les huit S-box sont différentes, elles sont en fait du matériel clé supplémentaire. Les sorties des huit boîtes S sont combinées en un mot de 32 bits, puis le mot entier subit une rotation de 11 bits vers la gauche. Enfin, le résultat est XORé avec la moitié gauche pour créer une nouvelle moitié droite, et la moitié droite devient la nouvelle moitié gauche. Pour générer des sous-clés, la clé originale de 256 bits est divisée en huit blocs de 32 bits : k 1, k 2, ..., k 8. Chaque cycle utilise sa propre sous-clé.

Le déchiffrement s'effectue de la même manière que le chiffrement, mais l'ordre des sous-clés k i est inversé. La norme ne précise pas comment les S-box sont générées.

  • Principales différences entre DES et GOST
  • Les principales différences entre DES et GOST sont les suivantes :
  • DES utilise une procédure complexe pour générer des sous-clés à partir des clés.
  • Dans GOST, cette procédure est très simple ;
  • dans DES, il y a une clé de 56 bits et dans GOST, elle est de 256 bits. Si nous ajoutons des permutations secrètes de boîtes S, alors le volume total d'informations secrètes GOST sera d'environ 610 bits ;

Une attaque énergique contre GOST est absolument inutile. GOST utilise une clé de 256 bits, et si vous prenez en compte les boîtes S secrètes, la longueur de la clé sera encore plus grande. GOST semble être plus résistant à la cryptanalyse différentielle et linéaire que le DES. Bien que les boîtes S GOST aléatoires, si l'on donne un certain choix, ne garantissent pas une force cryptographique élevée par rapport aux boîtes S DES fixes, leur secret augmente la résistance de GOST à ​​la cryptanalyse différentielle et linéaire. De plus, l'efficacité de ces méthodes cryptanalytiques dépend du nombre de cycles de conversion : plus il y a de cycles, plus la cryptanalyse est difficile. GOST utilise deux fois plus de cycles que DES, ce qui peut entraîner l'échec de la cryptanalyse différentielle et linéaire.

GOST n'utilise pas la permutation d'extension existant dans DES.

Supprimer cette permutation du DES l'affaiblit en réduisant l'effet d'avalanche ; Il est raisonnable de supposer que l'absence d'une telle opération dans GOST a un impact négatif sur sa force cryptographique. Du point de vue de la force cryptographique, l'opération d'addition arithmétique utilisée dans GOST n'est pas pire que l'opération XOR dans DES.

La principale différence semble être l'utilisation du décalage cyclique au lieu de la permutation dans GOST. La réorganisation du DES augmente l'effet d'avalanche. Dans GOST, la modification d'un bit d'entrée affecte une S-box d'un cycle de conversion, qui affecte ensuite deux S-box du cycle suivant, puis trois blocs du cycle suivant, etc. Il faut huit cycles avant que la modification d'un bit d'entrée n'affecte chaque bit de la sortie ; en DES, cela ne nécessite que cinq cycles.

Cependant, GOST comprend 32 cycles et DES seulement 16.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :