Schéma de cryptage des algorithmes

La Standard est conçue pour protéger contre l'accès non autorisé à des informations importantes, mais peu mémorables dans les organisations d'État et de commerce américaines. L'algorithme, basé sur la norme, a été distribué assez rapidement et déjà en 1980 par l'Institut national des normes et des technologies des États-Unis. À partir de ce moment-là, des deviennent une norme non seulement par son nom, mais aussi en fait. Apparaître logiciel et des microev spécialisés destinés au cryptage et aux informations déchiffrent dans les réseaux de transmission de données.

À ce jour, DES est l'algorithme le plus courant utilisé dans les systèmes de protection de l'information commerciaux. De plus, la mise en œuvre de l'algorithme des des systèmes de ces systèmes devient un signe de bonne tonalité.

Les principaux avantages de l'algorithme des algorithmes:

· Une seule clé est utilisée 56 bits;

· Cryer un message avec un paquet, vous pouvez utiliser n'importe quel autre pour déchiffrer;

· La simplicité relative de l'algorithme assure un traitement à grande vitesse;

· Résistance assez élevée de l'algorithme.

DES CRYPTS Les blocs de données 64 bits à l'aide d'une touche 56 bits. Decriphering in DES est une opération de cryptage inverse et est effectuée par répétition des opérations de cryptage dans l'ordre inverse (malgré des preuves apparentes, il n'est pas toujours fait. Plus tard, nous considérons les chiffres dans lesquels le cryptage et le déchiffrement sont effectués selon différents algorithmes).

Le processus de cryptage est la permutation initiale des bits de bloc 64 bits, de seize cycles de cryptage et, enfin, réorganisez les bits (Fig. 1).

Il convient de noter immédiatement que toutes les tables données dans cet article sont standard et devraient donc être incluses dans votre mise en œuvre de l'algorithme inchangé. Toutes les permutations et codes des tableaux sont sélectionnés par des développeurs de manière à maximiser le processus de déchiffrement en sélectionnant une clé. La structure de l'algorithme des des algorithmes est illustrée à la Fig. 2.

Figure. 2.

Supposons du fichier, un autre bloc de 8 octets t, qui est converti par la matrice de permutation initiale IP (Tableau 1) comme suit: Le bit 58 du bloc T devient bit 1, bit 50-bit 2, etc., qui donnera En conséquence: T (0) \u003d IP (t).

La séquence résultante des bits T (0) est divisée en deux séquences de 32 bits chacune: L (0) - bits gauche ou plus âgés, r (0) - bits droits ou plus jeunes.

Tableau 1: Permutation initiale Matrix 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, cryptage composé de 16 itérations. Résultat i-th L'itération est décrite par les formules suivantes:

R (i) \u003d l (i-1) xor f (r (i-1), k (i)),

où Xor est une opération exclue ou.

La fonction F s'appelle la fonction de cryptage. Ses arguments sont une séquence de 32 bits R (I - 1), obtenue par (I-1) - OH Itération et KE clé 48 bits K (I), qui résulte de la conversion d'une clé de 64 bits K. Détail La fonction de cryptage et l'algorithme d'obtention des touches de (i) sont décrites ci-dessous.

À la 16ème itération, les séquences R (16) et L (16) sont obtenues (sans permutation), qui sont condensées dans la séquence 64 bits R (16) L (16).

Ensuite, les bits de cette séquence sont ensuite réarrangés conformément à la matrice IP -1 (tableau 2).

Tableau 2: Matrix de changement d'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 les suivantes: La valeur du 1er élément de la matrice IP -1 est de 40, et la valeur de l'élément matriciel 40ème IP est 1, la valeur de l'élément matriciel 2ème IP -1 est 8 et la valeur de la 8ème matrice IP est 2, etc.

Le processus de déchiffrement des données est inversible au processus de cryptage. Toutes les actions doivent être complétées dans l'ordre inverse. Cela signifie que les données décodées sont d'abord réarrangées conformément à la matrice IP-1, puis sur la séquence du bit R (16) L (16) Les mêmes actions sont effectuées comme 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) \u003d l (i), i \u003d 1, 2, ..., 16;

L (I - 1) \u003d R (I) XOR F (L (I), K (I)), I \u003d 1, 2, ..., 16.

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

Ensuite, les positions des bits de cette séquence sont réarrangées conformément à la matrice IP. Le résultat d'une telle permutation est la séquence source 64 bits.

Envisagez maintenant la fonction de cryptage F (R (I - 1), k (i)). Schématiquement il est montré à la Fig. 3.


Figure. 3.

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

E - Extension d'une séquence 32 bits jusqu'à 48 bits,

S1, S2, ..., S8 - Conversion du bloc 6 bits en 4 bits,

P - Permutation des bits dans des séquences 32 bits.

La fonction d'extension E est la table définie. 3. Conformément à ce tableau, les 3 premiers bits E (R (I-1)) sont des bits 32, 1 et 2 et les derniers 31, 32 et 1.

Tableau 3: Fonction d'expansion 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 consiste en module 2 (opération XOR) avec une clé K (I) de 48 bits. Une séquence de 48 bits est obtenue, qui est divisée en huit blocs de 6 bits B (1) B (2) B (3) B (3) B (4) B (4) B (5) B (6) B (6) B (7) B (8) B (8). C'est à dire:

E (R (I - 1)) XOR K (I) \u003d B (1) B (2) B (2) ... B (8).

Fonctions S1, S2, ..., S8 sont une table définie. quatre.

Tableau 4.

À l'onglet. 4. Des explications supplémentaires sont nécessaires. Soit un bloc 6 bits B (j) \u003d b1b2b3b4b5b6, puis un nombre binaire B1B6 spécifie le numéro de la ligne matricielle de la matrice, et B2B3B4B5 est le numéro de colonne. Le résultat SJ (B (J)) sera un élément de 4 bits située à l'intersection des rangées et de la colonne spécifiées.

Par exemple, dans (1) \u003d 011011. Ensuite, S1 (In (1)) est situé à l'intersection de la chaîne 1 et de la colonne 13. Dans la colonne 13 de la chaîne 1, la valeur 5. Ainsi, S1 (011011) \u003d 0101.

En appliquant une opération de sélection à chacun des blocs de 6 bits B (1), B (2), ..., B (8), nous obtenons une séquence 32 bits S1 (B (1)) S2 (B (B ( 2)) S3 (B (3)) ... S8 (B (8)).

Enfin, pour obtenir le résultat de la fonction de cryptage, vous devez réorganiser les bits de cette séquence. Pour cela, la fonction de permutation P (tableau 5) est appliquée. Dans la séquence d'entrée, les bits sont désactivés de manière à ce que le bit 16 devienne un peu 1, et un peu 7 - bit 2, etc.

Tableau 5: Perelovka P

De cette façon,

f (R (I - 1), K (I)) \u003d P (S1 (B (1)), ... S8 (B (8)))

Pour compléter la description de l'algorithme de cryptage de données, il reste à diriger l'algorithme d'obtenir des clés de 48 bits à (i), i \u003d 1 ... 16. Sur chaque itération, une nouvelle valeur clé K (I) est utilisée, ce qui est calculé à partir de la clé initiale K. K représente un bloc de 64 bits avec huit bits de contrôle de parité situées dans les positions de 8,16,24,32,40,48 , 56, 64.

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

Tableau 6.

Matrix g de la préparation de la clé initiale

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 C (0) et D (0) 28 bits, avec C (0) se composera de bits 57, 49, ..., 44, 36 K, et D (0) sera composé de bits 63, 55, ..., 12, 4 touches K. Après avoir déterminé C (0) et D (0), C (I) et D (i), i \u003d 1 .. . 16 sont définis de manière récursive. Pour ce faire, utilisez un décalage cyclique vers la gauche ou deux bits en fonction du numéro d'itération, comme indiqué dans le tableau. 7.

Tableau 7. Table de décalage pour calcul de clé

Numéro d'itération

Shift (bit)

La valeur résultante est à nouveau "agitée" conformément à la matrice H (tableau 8).

Tableau 8: Matrix H Traitement final

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

K Touche K (I) comprendra des bits 14, 17, ..., 29, 32 séquences C (i) D (i). De cette façon:

K (i) \u003d h (c (i) d (i))

Le diagramme de bloc de l'algorithme de calcul de clé est représenté sur la Fig. quatre.

Figure. quatre.

La restauration du texte source est effectuée selon cet algorithme, mais vous utilisez d'abord la clé K (15), puis - K (14), etc. Maintenant, vous devriez être clair pourquoi l'auteur recommande de constamment utiliser les matrices ci-dessus. Si vous commencez à envoyer, vous devez avoir un chiffre très secret, mais vous ne pouvez pas le révéler plus tard!

Algorithme Des.

Les principaux avantages de l'algorithme des algorithmes:

· Une seule clé est utilisée 56 bits;

· Cryer un message avec un paquet, vous pouvez utiliser n'importe quel autre pour déchiffrer;

· La simplicité relative de l'algorithme assure un traitement à grande vitesse;

· Résistance assez élevée de l'algorithme.

DES CRYPTS Les blocs de données 64 bits à l'aide d'une touche 56 bits. Decriphering in DES est une opération de cryptage inverse et est effectuée par répétition des opérations de cryptage dans l'ordre inverse (malgré des preuves apparentes, il n'est pas toujours fait. Plus tard, nous considérons les chiffres dans lesquels le cryptage et le déchiffrement sont effectués selon différents algorithmes).

Le processus de cryptage réside dans la permutation initiale des bits du bloc 64 bits, de seize cycles de cryptage et, enfin, inverser le réarrangement des bits (Fig. 1).

Il convient de noter immédiatement que toutes les tables données dans cet article sont standard et devraient donc être incluses dans votre mise en œuvre de l'algorithme inchangé. Toutes les permutations et codes des tableaux sont sélectionnés par des développeurs de manière à maximiser le processus de déchiffrement en sélectionnant une clé. La structure de l'algorithme des des algorithmes est illustrée à la Fig. 2.

Fig.2. Structure de l'algorithme cryptage des.

Supposons du fichier un autre bloc de 8 octets T, qui est converti à l'aide de la matrice de permutation initiale initiale IP (Tableau 1) comme suit: Bit 58 de l'unité T devient bit 1, bit 50 bits 2, etc., qui donnera En conséquence: T (0) \u003d IP (t).

La séquence résultante des bits T (0) est divisée en deux séquences de 32 bits chacune: L (0) - bits gauche ou plus âgés, r (0) - bits droits ou plus jeunes.

Tableau 1: Permutation initiale Matrix 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, cryptage composé de 16 itérations. Le résultat de la I-ème itération est décrit par les formules suivantes:

R (i) \u003d l (i-1) xor f (r (i-1), k (i)),

où Xor est une opération exclue ou.

La fonction F s'appelle la fonction de cryptage. Ses arguments sont la séquence 32 bits R (I-1) obtenue par (I-1) - -th Itération et la clé K (I) 48 bits, qui résulte de la conversion de la clé 64 bits K . En détail, la fonction de cryptage et l'algorithme d'obtention des touches de (i) sont décrites ci-dessous.

À la 16ème itération, les séquences R (16) et L (16) sont obtenues (sans permutation), qui sont condensées dans la séquence 64 bits R (16) L (16).

Ensuite, les positions du bit de cette séquence sont réarrangées conformément à la matrice IP -1 (tableau 2).

Tableau 2: Matrix de changement d'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 les suivantes: La valeur du 1er élément de la matrice IP -1 est de 40, et la valeur de l'élément matriciel 40ème IP est 1, la valeur de l'élément matriciel 2ème IP -1 est 8 et la valeur de la 8ème matrice IP est 2, etc.

Le processus de déchiffrement des données est inversible au processus de cryptage. Toutes les actions doivent être complétées dans l'ordre inverse. Cela signifie que les données décodées sont d'abord réarrangées conformément à la matrice IP-1, puis sur la séquence du bit R (16) L (16) Les mêmes actions sont effectuées comme 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) \u003d l (i), i \u003d 1, 2, ..., 16;

L (I - 1) \u003d R (I) XOR F (L (I), K (I)), I \u003d 1, 2, ..., 16.

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

Ensuite, les positions des bits de cette séquence sont réarrangées conformément à la matrice IP. Le résultat d'une telle permutation est la séquence source 64 bits.

Envisagez maintenant la fonction de cryptage F (R (I - 1), k (i)). Schématiquement il est montré à la Fig. 3.


Fig.3. Calcul de la fonction F (R (I - 1), K (i))

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

E - Extension d'une séquence 32 bits jusqu'à 48 bits,

S1, S2, ..., S8 - Conversion du bloc 6 bits en 4 bits,

P - Permutation des bits dans des séquences 32 bits.

La fonction d'extension E est définie Tableau 3. Conformément à cette table, les 3 premiers bits E (R (I-1)) sont des bits 32, 1 et 2 et les derniers 31, 32 et 1.

Tableau 3: Fonction d'expansion 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 consiste en module 2 (opération XOR) avec une clé K (I) de 48 bits. Une séquence de 48 bits est obtenue, qui est divisée en huit blocs de 6 bits B (1) B (2) B (3) B (3) B (4) B (4) B (5) B (6) B (6) B (7) B (8) B (8). C'est à dire:

E (R (I - 1)) XOR K (I) \u003d B (1) B (2) B (2) ... B (8).

Fonctions S1, S2, ..., S8 sont définies Tableau 4.

Tableau 4.

Tableau 4. Des explications supplémentaires sont nécessaires. Soit un bloc 6 bits B (j) \u003d b1b2b3b4b5b6, puis un nombre binaire B1B6 spécifie le numéro de la ligne matricielle de la matrice, et B2B3B4B5 est le numéro de colonne. Le résultat SJ (B (J)) sera un élément de 4 bits située à l'intersection des rangées et de la colonne spécifiées.

Par exemple, dans (1) \u003d 011011. Ensuite, S1 (In (1)) est situé à l'intersection de la chaîne 1 et de la colonne 13. Dans la colonne 13 de la chaîne 1, la valeur 5. Ainsi, S1 (011011) \u003d 0101.

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

Enfin, pour obtenir le résultat de la fonction de cryptage, vous devez réorganiser les bits de cette séquence. À cette fin, la fonction de permutation P (tableau5) est appliquée. Dans la séquence d'entrée, les bits sont désactivés de manière à ce que le bit 16 devienne un peu 1, et un peu 7 - bit 2, etc.

Tableau 5: Perelovka P

De cette façon,

f (R (I - 1), K (I)) \u003d P (S1 (B (1)), ... S8 (B (8)))

Pour compléter la description de l'algorithme de cryptage de données, il reste à diriger l'algorithme d'obtenir des clés de 48 bits à (i), i \u003d 1 ... 16. Sur chaque itération, une nouvelle valeur clé K (I) est utilisée, ce qui est calculé à partir de la clé initiale K. K représente un bloc de 64 bits avec huit bits de contrôle de parité situées dans les positions de 8,16,24,32,40,48 , 56, 64.

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

Tableau 6.

Matrix g de la préparation de la clé initiale

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 C (0) et D (0) 28 bits, avec C (0) sera composé de bits 57, 49, ..., 44, 36 touches K, et d (0) il s'agira de bits 63, 55, ..., 12, 4 touches K. Après avoir déterminé C (0) et D (0), C (I) et D (i), i \u003d 1. .. 16 sont définis de manière récursive. Pour ce faire, utilisez un décalage cyclique vers la gauche à un ou deux bits en fonction du numéro d'itération, comme indiqué dans le tableau 7.

Tableau 7.

Table de décalage pour le calcul de clé

Numéro d'itération Shift (bit)
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 "mélangée" conformément à la matrice H (tableau 8).

Tableau 8: Matrix H Traitement final

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

K Touche K (I) comprendra des bits 14, 17, ..., 29, 32 séquences C (i) D (i). De cette façon:

K (i) \u003d h (c (i) d (i))

Le schéma de principe de l'algorithme de calcul de clé est illustré à la Fig.4.

Fig.4. Schéma de principe de l'algorithme de calcul de clé K (i)

La restauration du texte source est effectuée selon cet algorithme, mais vous utilisez d'abord la clé

K (15), puis - k (14) et ainsi de suite. Maintenant, vous devriez être clair pourquoi l'auteur recommande de constamment utiliser les matrices ci-dessus. Si vous commencez à envoyer, vous devez avoir un chiffre très secret, mais vous ne pouvez pas le révéler plus tard!

Des modes de fonctionnement des algorithmes

Pour la satisfaction la plus complète avec toutes les exigences relatives aux systèmes de cryptage commerciaux, plusieurs modes de fonctionnement de l'algorithme des algorithmes sont mis en œuvre. Les modes les plus répandus obtenus:

· Cideroblot électronique (CodeBook électronique) - BCE;

· Capher Block chaîning - CBC;

· Commentaires numériques (rétroaction en chiffrement) - BFC;

· Commentaires externes (rétroaction de sortie) - OFB.

Dans ce mode fichier original M est divisé en blocs de 64 bits (8 octets): m \u003d m (1) m (2) ... m (n). Chacun de ces blocs est codé indépendamment en utilisant la même clé de cryptage (Fig. 5). L'avantage principal de cet algorithme est la simplicité de la mise en œuvre. Inconvénient - Stabilité relativement faible contre les cryptanalytiques qualifiées.

Dès plus de 30 ans à compter de la date d'adoption de l'algorithme des États-Unis en tant que norme de cryptage américain. DES est un algorithme de cryptage avec l'histoire la plus riche et intéressante.

L'histoire de la création de l'algorithme

L'un des cryptologues les plus célèbres de Bruce Schneier dans son célèbre livre «Cryptographie appliquée» a donc décrit les problèmes des utilisateurs d'outils de protection de l'information au début des années 70. XXe siècle (naturellement, nous parlons des utilisateurs de l'autre côté du rideau de fer):

P n'était pas comme une norme généralement acceptée de cryptage de données et simplement des algorithmes de protection de l'information largement utilisés, il pourrait donc y avoir un discours entre divers logiciels ou cryptage matériel;

Pratiquement tous les moyens de cryptage était une "boîte noire" avec une teneur assez peu claire: quel algorithme de cryptage est utilisé, dans la mesure où il est cryptographiquement persistant, que ce soit correctement implémenté, que les touches de cryptage soient correctement utilisées, que les touches de cryptage soient utilisées. dans les développeurs. capacités inochangantes etc., - tout cela très très une information important La majorité accablante des acheteurs de médicaments cryptographiques n'était pas disponible.

Le Bureau national des normes, NBS, NBS) a été affecté par ce problème. En conséquence, en 1973, la première de l'histoire d'une concurrence ouverte pour la norme de cryptage a été annoncée. NBS était prêt à explorer afin de sélectionner les algorithmes de candidats standard qui répondent aux critères suivants:

L'algorithme doit être résistant à cryptographique;

L'algorithme doit être rapidement;

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

La résistance au cryptage ne doit dépendre que de la clé, l'algorithme lui-même ne devrait pas être secret;

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

L'algorithme doit être facilement implémenté du matériel sur une base d'élément existante.

Il a été supposé que les organisations ou spécialistes intéressés enverraient des spécifications détaillées des algorithmes de NBS, suffisamment nécessaires pour les mettre en œuvre, c'est-à-dire de ne pas avoir de "taches blanches". Il a également été supposé que l'algorithme sera certifié par NBS pour une utilisation universelle, toutes les restrictions de brevet et d'exportation seront supprimées de celle-ci, à la suite de laquelle une telle norme devra résoudre tous les problèmes de compatibilité du cryptage. De plus, NBS a pris les fonctions de certification des outils de cryptage - c'est-à-dire que les «boîtes noires» devaient irrouverement dans le passé.

En fait, l'algorithme du demandeur s'est avéré être un seul: c'était un algorithme de cryptage de Lucifer développé par la société (Voir la section 3.31). Pendant deux ans, l'algorithme a été raffiné:

Premièrement, NBS, associé à l'Agence nationale de la sécurité (ANB, NSA - Agence nationale de la sécurité), une analyse approfondie de l'algorithme a été réalisée, résultant de son recyclage assez substantiel;

Deuxièmement, des commentaires et des commentaires critiques de toutes les organisations et individus intéressés ont été prises pour examen.

À la suite d'activités conjointes d'IBM, NBS et ANB en janvier 1977, des des États-Unis ont été publiés comme une norme américaine ( dernière version Cette norme est dans le document) sur l'algorithme de cryptage de données (à l'exception de l'information d'un degré accru de secret). L'algorithme a été breveté par Yum, mais NBS a reçu, en fait, une licence gratuite et illimitée à utiliser cet algorithme . Algorithme algorithme alternative, mais moins fréquemment utilisé - DEA (algorithme de cryptage de données).

Les principales caractéristiques et structure de l'algorithme

L'algorithme des algorithmes chiffre les blocs d'information 64 bits à l'aide d'une clé de cryptage 64 bits, qui utilise seulement 56 bits (la procédure d'expansion principale est décrite en détail ci-dessous).

Les informations de cryptage sont effectuées comme suit (Fig. 3.56):

1. Sur le bloc de données 64 bits, la permutation initiale selon la table est effectuée. 3.16.

Tableau 3.16

La table est interprétée comme suit: la valeur de bit d'entrée 58 (ici et puis tous les bits sont numérotés de gauche à droite, à partir du 1er) placés dans le bit de sortie 1, la valeur du 50ème bits 2, etc.



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

figure. 3.56 marqué A 0. et à 0), qui sont produits sur 16 rounds

les transformations suivantes:

Comme mentionné ci-dessus, à partir d'une clé de cryptage de 64 bits, l'algorithme des algorithmes utilise seulement 56 bits. Chaque 8e bit est jeté et non appliqué dans l'algorithme et l'utilisation des bits restants de la clé de cryptage dans les implémentations de l'algorithme des algorithmes ne se limite pas à la norme. La procédure d'extraction de 56 bits significatifs d'une clé 64 bits de la Fig. 3.59 est indiqué comme E. en plus d'extraire, cette procédure Effectue également la permutation des bits de clé en fonction de la table. 3.19 et 3.20.


Tableau 3.19

Tableau 3.20


À la suite de la permutation, deux valeurs 28 bits de C et D sont formées. Le tableau 3.19 détermine l'échantillon des bits de la clé pour C, tableau. 3.20 - pour RÉ.

Ensuite, 16 tours de transformations sont effectuées, chacune qui donne l'une des rondes de K T. Dans chaque cycle, les principales procédures d'expansion sont effectuées par les actions suivantes:

1. Valeurs actuelles C et RÉ. Décalé de manière cyclique à gauche du nombre variable de bits P. Pour les rondes 1, 2, 9 et 16 P \u003d 1, dans le reste des tours, un décalage cyclique est effectué par 2 bits.

2. C I. RÉ. Combinée dans le sens 56 bits à laquelle la permutation de compression de CP est appliquée, résultant de la clé 48 bits du tour à (. La permutation de la compression est effectuée selon la table. 3.21.

Tableau 3.21

Lorsque vous décodez les données, vous pouvez utiliser la même procédure d'expansion de la clé, mais pour utiliser des tours dans l'ordre inverse. Il y a une autre option: dans chaque cycle des principales procédures d'expansion, au lieu d'un décalage cyclique, à gauche pour effectuer un décalage cyclique à droite sur les bits, où le GS '\u003d 0 pour le premier tour, et' \u003d 1 Pour les rondes 2, 9, 16 et n \u003d 2 pour le reste des tours. Une telle procédure d'expansion clé donnera immédiatement aux clés rondes au décryptage.

Il convient de dire que la possibilité d'effectuer l'extension de la clé "à la volée" (surtout si cette fonctionnalité existe, à la fois lorsque crypté et décryptage) est considérée comme l'avantage des algorithmes de cryptage, car dans ce cas, l'extension de clé peut être effectuée. En parallèle avec le cryptage et ne pas passer la mémoire pour stocker des clés d'autres tonnes de clés autres que le courant.

Des. (Stand de cryptage de données) est un algorithme de cryptage symétrique dans lequel une clé est utilisée, à la fois pour le cryptage et pour déchiffrer les données. DES DESSEST DÉVELOPÉES PAR IBM et approuvé par le gouvernement américain en 1977 en tant que norme officielle (FTPS 46-6-3). DES Les blocs de 64 bits et de 16 cycles du réseau FAISTel utilisent une clé avec une longueur de 56 bits pour chiffrer. L'algorithme utilise une combinaison de transformations non linéaires (blocs S-blocs) et linéaires (permutations E, IP, IP-1). Pour des recommandations plusieurs modes:
  • book de code électronique (BCE - Livre de code électronique),
  • blocs de mode d'embrayage (CSS - Cipher Block chaîninging),
  • mode rétroaction Par CIPHERTEXT (BFC - Direction de l'alimentation en chiffre),
  • mode de rétroaction de sortie (OFB - Retour de sortie).

    Chiffre de bloc

    Les données d'entrée pour le chiffrement de bloc sert une taille de bloc N Bit et une touche K-Bit. À la sortie, après avoir appliqué la transformation de cryptage, un bloc crypté N-bits est obtenu et des différences mineures dans les données d'entrée en règle conduisent à un changement significatif dans le résultat. Les chiffres à blocs sont implémentés par une utilisation répétée aux blocs du texte source de certaines transformations de base.
    Transformations de base:
  • Conversion confortable sur une partie locale du bloc.
  • Conversion simple entre les pièces de blocs. Étant donné que la conversion est faite en bloc, une étape séparée, la séparation des données source dans les blocs de la taille requise est requise. Dans ce cas, quel que soit le format des données source, soyez-le documents texte, images ou autres fichiers, ils doivent être interprétés dans un look binaire et seulement après cela est divisé en blocs. Tout ce qui précède peut être effectué par des outils de logiciels et d'appareils.

    Réseau de transformation FAISTEL

    Cette transformation sur les vecteurs (blocs) représente la moitié gauche et droite du registre de changement de vitesse. Dans l'algorithme des des affaires, une conversion directe du réseau de campagne dans le cryptage est utilisée (voir Fig. 1) et la conversion inverse du réseau FAISTel vers du déchiffrement (voir fig. 2).

    Schéma de cryptage des algorithmes


    Source Text - Bloc 64 bits.
    Texte crypté - Bloc 64 bits.

    Le processus de cryptage consiste en une permutation initiale, 16 cycles de cryptage et la permutation finale.
    Considérez le diagramme détaillé de l'algorithme des algorithmes:
    L i r i \u003d 1,2 \\ ldots.alevia et la moitié droite du bloc 64 bits L Je r i
    k i - 48 bits clés
    f - Fonction de cryptage
    IP - Permutation initiale
    IP -1 - Permutation ultime. Selon la table, les 3 premiers bits de la propriété IP résultante de la propriété intellectuelle (T) après la permutation initiale de la propriété intellectuelle sont des bits 58, 50, 42 de l'unité d'entrée T et ses 3 derniers bits sont des bits 23 , 15, 7 bloc d'entrée. En outre, le bloc IP (T) 64 bits est impliqué dans les 16 cycles de la transformation de la Faistel.

    16 cycles de conversion de Faistel:

    Pause IP (T) en deux parties L 0, R 0, où L 0, R 0 - correspondant à 32 bits seniors et 32 \u200b\u200bbits plus jeunes de l'adresse IP T0 (T) \u003d L 0 R 0

    Soit t i -1 \u003d l i -1 r i -1 être le résultat (I-1) de l'itération, puis le résultat de la i-th interface t i \u003d l i r i est déterminé:

    L i \u003d r i - 1 La moitié gauche L I est égale à la moitié droite du précédent vecteur l i-1 r i-1. Et la moitié droite de R i est un peu addition de L I - 1 et F (R I - 1, K I) par module 2.

    Dans la transformation FAISTEL 16 cycles, la fonction F joue le rôle du cryptage. Considérez en détail la fonction f.

    Les arguments de la fonction F sont le vecteur 32 bits r i-1, 48 morsures KE I, qui sont le résultat de la conversion de la touche Source de 56 morsures Cipher K.

    Pour calculer la fonction F, la foulée d'extension E, la conversion S, constituée de 8 transformations de blocs S et de la permutation de P.

    La fonction E est élargi avec le vecteur 32 bits R I - 1 à 48 bits Vecteur E (R I - 1) en double opposant quelques bits de R i - 1. L'ordre du vecteur E (RI-1) est spécifié dans le tableau 2. Les trois premiers bits du vecteur E (R I - 1) sont des bits 32, 1, 2 du vecteur R i -1. Le tableau 2 montre que les bits 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 sont dupliqués. Les 3 derniers bits du vecteur E (RI-1) sont des bits 31, 32, 1 vecteur r i-1. L'E (R I -1) obtenu après le réarrangement est formé par module 2 avec des touches K I, puis représentées par huit blocs consécutifs B 1, B 2, ... B 8.
    E (R I - 1) \u003d B 1 B 2 ... B 8
    Chaque b j est un bloc de 6 bits. Ensuite, chacun des blocs b j est transformé en bloc 4 bits B "J utilise des transformations s j. La conversion s j est déterminée par le tableau 3. Supposons que b 3 \u003d 101111 et nous voulons trouver B" 3. La première et dernière décharge B 3 sont une entrée binaire du nombre A, la reconnaissance de la fonction F (R i-1, KI) (32 bits) (32 bits) est obtenue par la permutation de P appliquée à 32 bits bloc B "1 b "2 ... B" 8. Permutation P set Tableau 4.
    f (R I - 1, K I) \u003d P (B "1 B" 2 ... B "8)
    Selon le tableau 4, les quatre premiers bits du vecteur résultant après la fonction F Fonction F est le bit 16, 7, 20, 21 du vecteur B "1 B" 2 ... B "8

    Génération de clé K i.
    Les kershes k I sont obtenus à partir de la clé initiale K (56 bits \u003d 7 octets ou 7 caractères en ASCII). Huit bits situés dans des positions 8, 16, 24, 32, 40, 48, 56, 64 sont ajoutés à K Touche de sorte que chaque octet contienne un nombre impair d'unités. Ceci est utilisé pour détecter des erreurs lors de l'échange et du stockage des touches. Ensuite, faites la permutation de la clé étendue (à l'exception des bits ajoutés 8, 16, 24, 32, 40, 48, 56, 64). Une telle permutation est définie comme dans le tableau 5.

    Cette permutation est déterminée par deux blocs C 0 et D 0 à 28 bits chacun. Les 3 premiers bits C 0 sont des bits 57, 49, 41 clés étendues. Et les trois premiers bits d 0 sont des bits 63, 55, 47 clés étendues. C i, d i i i \u003d 1,2,3 ... sont obtenus à partir de C I-1, D i-1 par un ou deux décalages cycliques gauche selon le tableau 6.

    K Key I, I \u003d 1, ... 16 se compose de 48 bits choisis parmi les morceaux du vecteur C I D i (56 bits) selon le tableau 7. Les premier et second bits K I sont des morceaux 14, 17 du vecteur c i d i

    La dernière permutation de IP - 1 agit sur T 16 et est utilisée pour restaurer la position. C'est de retour à la permutation de la propriété intellectuelle. La dernière permutation est déterminée par le tableau 8.
    Modes d'utilisation de DES. DES peut être utilisé dans quatre modes.

  • Mode carnet de code électronique (Book de code électronique): utilisation normale des DES comme chiffre de bloc (voir Fig. 7).
  • Mode d'embrayage de bloc (CSS - Ciphers en chute) (voir fig. 8). Chaque bloc suivant C i i i i\u003e \u003d 1, avant le cryptage, il consiste en module 2 avec le bloc de texte ouvert suivant M i + 1. Vecteur C 0 - Vecteur initial, il change quotidiennement et enregistré secret.
  • Mode de rétroaction CFB-BCF (BFC - Retour de chiffrement) (voir la figure 9). En mode BCF, bloquer "gamma" z 0, Z 1, ... Z i \u003d bureau (C i-1) est produit. Le vecteur initial C 0 est enregistré secret.
  • Mode de rétroaction de sortie (OFB - Retour de sortie) (voir Fig. 10). En mode OFB, un bloc "gamma" z 0, Z 1, ..., i\u003e \u003d 1 est produit
  • Le mode ECB est facile à mettre en œuvre, mais il est possible de mener une critique »
  • Dans les modes ECB et OFB, la distorsion lors de la transmission d'un bloc de Ciphext de 64 bits C I I I I Permet de distorsion après avoir décrit uniquement le blocage ouvert correspondant M i, de sorte que de tels modes sont utilisés pour transmettre des canaux de communication avec un grand nombre de distorsions.
  • Dans les modes CBC et BFC, la distorsion lors de la transmission d'un bloc de texte crypté avec I entraîne une distorsion de deux blocs de texte ouvert M I, M i + 1. Le changement de MI conduit à un changement dans tous les autres blocsm i + 1, M i + 2 ... Cette propriété est utilisée pour générer un code d'authentification de message.
  • Quels ANSI appelle l'algorithme de cryptage des données d'algorithme d'algorithme d'algorithme de données et l'ISO-DEA-1 depuis 20 ans est devenu une norme globale. Au fil des ans de son existence, il a enduré l'assaut de diverses attaques et avec des restrictions bien connues est toujours considérée comme Cryptostoy.

    DES est chiffre de blocCryptage des données avec des blocs de 64 bits. À partir d'une extrémité de l'algorithme, un bloc de texte ouvert de 64 bits est entré et de l'autre extrémité se trouve une unité de Ciphext 64 bits. DES est un algorithme symétrique: pour le cryptage et le décryptage sont utilisés le même algorithme et la même clé (à l'exception de petites différences dans l'utilisation de la clé). La longueur de la clé est de 56 bits. (La clé est généralement un nombre de 64 bits, mais chaque huitième bit est utilisé pour vérifier la parité et ignorer. Les bits de parité sont les plus petits signification bits Les octets clés.) La clé pouvant être un nombre de 56 bits peut être modifiée à tout moment.

    La cryptostilité est entièrement déterminée par la clé. Le bloc de construction fondamental des des substituts et des permutations. DES se compose de 16 cycles.

    La vue du cycle de conversion:

    Si L I et R I est la moitié gauche et droite, obtenue à la suite de l'itération I -i, K I est une clé de 48 bits pour un cycle I et F - une fonction qui remplit toutes les substitutions, les permutations et XOR avec Une clé, puis un cycle de conversion peut être représenté comme suit:

    Compte tenu de la substitution F i (*) et de la permutation de T (*), le cycle de conversion peut être représenté tel qu'il est fait à la Fig.

    On peut voir que chaque cycle des des Cycle est un chiffre composite avec deux transformations consécutives - Substitution F i (*) et la permutation de T (*) (à l'exception du dernier, seizième cycle, où la permutation est abaissée).

    Substitution:

    (L I, R i) \u003d (R I -1, L I -1) ⊕ F (R I -1, K)

    est une involution depuis

    F i (f i (l i -1, r i -1) \u003d f i (R i -1, l i -1) ⊕ (F (R i -1, k i))) \u003d (R I - 1, l i -1 ⊕ ( F (R I -1, KI)) ⊕ (F (RI -1, KI))) \u003d (L I -1, RI -1)

    Et substitution

    T (l je ', r i') \u003d (r i ', l je'),

    c'est aussi une involution, car

    T (t (l je ', r i')) \u003d T (r i ', l je') \u003d l je ', r i'

    Si vous désignez l'initiale et l'achèvement des permutations telles que (IP) et (IP) - 1, la conversion directe (cryptage) implémente la fonction:

    DES \u003d (IP) F 1 TF 2 T ... F 15 TF 16 (IP) - 1,

    et la conversion inverse des Conversion (décryptage) implémente la fonction:

    DES - 1 \u003d (IP) -1 F 16 TF 15 T ... F 2 TF 1 (IP).

    Ainsi, des Ciphers Fastel et conçu pour être effectué pour être effectué. propriété utile: Pour cryptage et décryptage, le même algorithme est utilisé. La seule différence est que les clés doivent être utilisées dans l'ordre inverse.


    C'est-à-dire que si les touches K 1, K 2, K 3, ..., K 16 ont été utilisées avec du cryptage, les clés du déchiffrement seront K 16, K 15, K 14, ..., K 1. L'algorithme n'utilise que l'arithmétique standard de nombres de 64 bits et des opérations logiques, elle est donc facilement mise en œuvre au niveau du matériel.

    DES fonctionne avec une unité de texte ouverte 64 bits. Après une permutation initiale, le bloc est divisé en une moitié droite et gauche de 32 bits longs. Ensuite, 16 transformations sont effectuées (F), dans lesquelles les données sont combinées à la clé. Après le seizième cycle, la moitié droite et la moitié gauche sont combinées et l'algorithme est complété avec la permutation finale (inverse par rapport à l'initiale). Sur chaque cycle (voir fig.) Les bits de clé sont décalés, puis 48 bits sont sélectionnés parmi 56 bits. La moitié droite des données augmente à 48 bits par réarrangement avec l'extension, est combinée par XOR avec 48 bits de décalage et la clé réarrangée, traverse 8 s-blocs, formant 32 nouveaux bits et réarrangé à nouveau. Ces quatre opérations sont effectuées par fonction f.

    Ensuite, le résultat de la fonction F est associé à la moitié gauche à l'aide de l'autre Xor. À la suite de ces actions, une nouvelle moitié droite apparaît et l'ancienne droite devient nouvelle moitié gauche. Ces actions sont répétées 16 fois, formant 16 des cycles.

    Standard de la Russie - GOST 28147-89

    GOST 28147-89 est un chiffre à blocs avec une clé de 256 bits et 32 \u200b\u200bcycles de conversion fonctionnant avec des blocs de 64 bits. Le crittalgorithme utilise également une clé supplémentaire décrite ci-dessous. Pour le cryptage, le texte ouvert est d'abord divisé en la moitié gauche et droite de L et R. Le cycle I utilise des connexions à I:

    L i \u003d r i -1
    R i \u003d l i -1 ⊕ (f (r i -1, k i i)).

    La fonction F est mise en œuvre comme suit. Tout d'abord, la moitié droite et I-c'est la fiche du module 2 32. Le résultat est divisé en huit sous-indésidateurs 4 bits, chacun d'entre eux entrant dans l'entrée de son bloc S. GOST utilise huit blocs de S différents, les 4 premiers bits entrent dans le premier bloc S, les deuxième 4 bits de la seconde unité S, etc., chaque bloc S est une permutation de nombres de 0 à 15. Par exemple Le bloc S peut ressembler à: 7, 10,2,4,9,9,0,3,6,12,9,9,1 8,12, 9,13,1811. Dans ce cas, si à l'entrée du bloc S 0, alors à la sortie 7. Si à l'entrée 1, à la sortie 10, etc., tous les huit blocs S sont différents, ils sont en fait un matériau clé supplémentaire . Les sorties de tous les huit blocs S sont combinées dans un mot 32 bits, puis le mot est décalé de manière cyclique à gauche de 11 bits. Enfin, le résultat est combiné avec l'opération XOR avec la moitié gauche et la nouvelle moitié droite s'avère, et la moitié droite devient une nouvelle moitié gauche. Pour générer une fiche, la clé source 256 bits est divisée en huit blocs 32 bits: K 1, K 2, ..., K 8. Chaque cycle utilise sa propre fiche. Le décryptage est effectué de la même manière que le cryptage, mais inversé l'ordre de la connexion K i. La norme ne définit pas la méthode de génération de S-Blocks.

    Les principales différences entre des et gost

    Les principales différences entre le DES et GOST sont les suivantes:

    • DES utilise une procédure complexe pour générer des connexions à partir des clés. En invité, cette procédure est très simple;
    • dans la touche des 56 bits et dans l'invité - 256 bits. Si vous ajoutez des permutations secrètes de S-Blocks, le montant total des informations secrètes du GTONT sera d'environ 610 bits;
    • s-blocks des entrées 6 bits et des sorties 4 bits et les blocs S des entrées et des sorties GOST 4 bits. Dans les deux algorithmes, huit blocs S sont utilisés, mais la taille du bloc S du GOST est égale au trimestre S-block des;
    • dES utilise des réarrangements irréguliers appelés par le bloc R et le décalage cyclique 11 bits à gauche est utilisé dans l'intestin;
    • dans DES 16 cycles, et dans les invités - 32.

    L'attaque de puissance sur GOST est absolument sans danger. GOST utilise une clé de 256 bits et si vous prenez en compte les blocs S Secret, la longueur de la clé sera encore plus. GOST, apparemment, est plus résistant à la cryptoanalyse différentielle et linéaire que des des. Bien que les blocs s aléatoires du GTONT avec un certain choix ne garantissent pas une résistance cryptique élevée par rapport aux blocs de S-blocs fixes, leur secret augmente la durabilité de la cryptanalalyse de la GTONT et linéaire. En outre, l'efficacité de ces méthodes cryptanalytiques dépend du nombre de cycles de conversion - plus de cyclesLa cryptoanalyse plus difficile. GOST utilise deux fois plus de cycles que DES, qui peuvent conduire à l'insolvabilité de la cryptanalyse différentielle et linéaire.

    GOST n'utilise pas la permutation existante dans des affaires avec expansion. L'élimination de cette permutation du DES affaiblit en raison d'une diminution de l'effet d'avalanche; Il est raisonnable de supposer que l'absence d'une telle opération dans Gata affecte négativement sa cryptostilité. Du point de vue de la cryptopitude, le fonctionnement de l'ajout arithmétique utilisé dans l'invité n'est pas pire que l'opération XOR dans DES.

    La principale différence est d'utiliser dans le décalage cyclique des intestins au lieu de permutation. L'effet de la récupération des affaires augmente l'effet d'avalanche. En intestin, une modification d'un bit d'entrée affecte un bloc S d'un cycle de conversion, qui affecte ensuite deux blocs S du cycle suivant, puis trois blocs du cycle suivant, etc. Huit cycles auront besoin avant de changer un bit d'entrée affectera chaque lot du résultat; Dans des, vous n'avez besoin que de cinq cycles. Cependant, GOST se compose de 32 cycles, un DES est que 16.

    Les développeurs Gost ont tenté d'atteindre l'équilibre entre cryptoscope et efficacité. Prenant la base de la conception de la FAISTEL, ils ont développé un cryptoalgorithme meilleur que des des pour la mise en œuvre du logiciel. Pour augmenter la résistance cryptique, une clé d'extension a été introduite et le nombre de cycles a été doublé. Cependant, la question, si les efforts des développeurs ont été couronnés d'un cryptoalgorithme plus cryptoalgorithme, sont restés ouverts.

    Vorobyeva E., Lukyanova A.

    Avez-vous aimé l'article? Partager avec des amis: