Contacts

Norme de cryptage nationale GOST 28147 89. L'étape principale de la transformation cryptographique

DES est une norme de cryptage domestique plus pratique pour la mise en œuvre de logiciels.

Contrairement au DES américain, la norme russe utilise une clé plus longue - 256 bits. De plus, la norme russe propose d'utiliser 32 tours de cryptage, tandis que DES - seulement 16.

Ainsi, les principaux paramètres de l'algorithme de transformation de données cryptographiques GOST 28147-89 sont les suivants : la taille du bloc est de 64 bits, la taille de la clé est de 256 bits et le nombre de tours est de 32.

L'algorithme est réseau classique Feistel. Le bloc de données crypté est divisé en deux parties identiques, la droite R et la gauche L. La partie droite est ajoutée à la sous-clé ronde et crypte la partie gauche au moyen d'un algorithme. Avant le prochain tour, les côtés gauche et droit sont échangés. Cette structure permet d'utiliser le même algorithme à la fois pour le chiffrement et le déchiffrement du bloc.

L'algorithme de chiffrement utilise les opérations suivantes :

  • addition de mots modulo 2 32;
  • décalage cyclique du mot vers la gauche du nombre de bits spécifié ;
  • addition au niveau du bit modulo 2;
  • remplacement selon le tableau.

À différentes étapes des algorithmes GOST, les données sur lesquelles ils opèrent sont interprétées et utilisées de différentes manières. Dans certains cas, les éléments de données sont traités comme des tableaux de bits indépendants, dans d'autres cas comme un entier non signé, et dans d'autres comme un élément complexe avec une structure, constituée de plusieurs éléments plus simples.

Structure ronde GOST 28147-89

La structure d'un tour de GOST 28147-89 est illustrée à la Fig. 5.1.

Le bloc de données crypté est divisé en deux parties, qui sont ensuite traitées comme des entiers non signés 32 bits distincts. Tout d'abord, la moitié droite du bloc et la sous-clé du tour sont ajoutées modulo 2 32. Ensuite, une substitution bloc par bloc est effectuée. La valeur de 32 bits obtenue à l'étape précédente (notez-la S) est interprétée comme un tableau de huit blocs de code de 4 bits : S = (S 0, S 1, S 2, S 3, S 4, S 5, S 6, S 7)... De plus, la valeur de chacun des huit blocs est remplacée par une nouvelle, qui est sélectionnée selon la table de substitution comme suit : la valeur du bloc S i est remplacée par le S i -ième élément dans l'ordre (numérotation à partir de zéro ) du ième nœud de substitutions (c'est-à-dire les tables de substitutions de la ième ligne, numérotées également à partir de zéro). En d'autres termes, un élément avec un numéro de ligne égal au numéro du bloc remplacé et un numéro de colonne égal à la valeur du bloc remplacé sous forme d'entier non négatif de 4 bits est sélectionné en remplacement de la valeur de bloc. Chaque ligne du tableau de substitution contient des nombres de 0 à 15 dans un ordre aléatoire sans répétitions. Les valeurs des éléments de la table de substitution sont prises de 0 à 15, car dans les quatre bits qui sont substitués, un entier non signé compris entre 0 et 15 peut être écrit. Par exemple, la première ligne d'une S-box peut contenir des valeurs comme celle-ci : 5, 8, 1, 13, 10, 3, 4, 2, 14, 15, 12, 7, 6, 0, 9, 11 ... Dans ce cas, la valeur du bloc S 0 (les quatre bits les moins significatifs du nombre de 32 bits S) sera remplacée par le nombre à la position dont le nombre est égal à la valeur du bloc remplacé. Si S 0 = 0, alors il sera remplacé par 5, si S 0 = 1, alors il sera remplacé par 8, etc.


Riz. 5.1.

Une fois la substitution effectuée, tous les blocs de 4 bits sont à nouveau combinés en un seul mot de 32 bits, qui est ensuite décalé cycliquement de 11 bits vers la gauche. Enfin, avec l'opération au niveau du bit "somme mod 2" le résultat est combiné avec la moitié gauche, ce qui donne une nouvelle moitié droite de R i. Le nouveau côté gauche L i est pris égal à la partie la moins significative du bloc transformé : L i = R i-1.

La valeur résultante du bloc converti est considérée comme le résultat d'un tour de l'algorithme de chiffrement.

Procédures de cryptage et de décryptage

GOST 28147-89 est un chiffrement par bloc, donc conversion de données est réalisée en blocs dans ce qu'on appelle cycles de base... Les boucles de base consistent en plusieurs exécutions pour le bloc de données du tour principal, que nous avons considéré précédemment, utilisant différents éléments clés et diffèrent les uns des autres dans l'ordre d'utilisation des éléments clés. Chaque tour utilise l'une des huit sous-clés 32 bits possibles.

Considérons le processus de création de tours de sous-clés. Dans GOST, cette procédure est très simple, surtout par rapport à DES. La clé de 256 bits K est divisée en huit sous-clés de 32 bits, notées K 0, K 1, K 2, K 3, K 4, K 5, K 6, K 7. L'algorithme comprend 32 tours, chaque sous-clé est donc utilisée pour le chiffrement en quatre tours dans l'ordre indiqué dans le Tableau 5.1.

Tableau 5.1. Séquence d'utilisation des sous-clés pour le chiffrement
Tour 1 2 3 4 5 6 7 8
Construction complète K 0 K1 K2 K3 K 4 K5 K 6 K 7
Tour 9 10 11 12 13 14 15 16
Construction complète K 0 K1 K2 K3 K 4 K5 K 6 K 7
Tour 17 18 19 20 21 22 23 24
Construction complète K 0 K1 K2 K3 K 4 K5 K 6 K 7
Tour 25 26 27 28 29 30 31 32
Construction complète K 7 K 6 K5 K 4 K3 K2 K1 K 0

Le processus de décryptage suit le même algorithme que le cryptage. La seule différence est l'ordre dans lequel les sous-clés Ki sont utilisées. Lors du déchiffrement, les sous-clés doivent être utilisées dans l'ordre inverse, à savoir, comme indiqué sur

1 Schéma structurel algorithme de transformation cryptographique 1

2 Mode d'échange facile 4

3 Mode gamma 8

4 Mode gamma avec retour d'information 11

5 Mode de fabrication de l'insert imitation 14

Annexe 1 Termes utilisés dans cette norme et leurs définitions 16

Annexe 2 Valeurs des constantes C1, C2 18

Annexe 3 Schémas de mise en œuvre logicielle de l'algorithme cryptographique

transformation. 19

Annexe 4 Règles de sommation modulo 2 32 et modulo (2 32 -I) 25

NORME D'ÉTAT

UNION RSS

SYSTÈMES DE TRAITEMENT DE L'INFORMATION. CRYPTOGRAPHIE PROTÉGÉE

Algorithme de transformation cryptographique

Date de lancement 01.07.90

Cette norme établit un algorithme de transformation cryptographique unifié pour les systèmes de traitement de l'information dans les réseaux électroniques. machines informatiques(Ordinateur), des systèmes informatiques individuels et des ordinateurs, qui détermine les règles de cryptage des données et le développement d'un insert d'imitation.

L'algorithme de transformation cryptographique est destiné à une implémentation matérielle ou logicielle, répond aux exigences cryptographiques et, en termes de capacités, n'impose pas de restrictions sur le degré de secret des informations protégées.

La norme est obligatoire pour les organisations, entreprises et institutions appliquant protection cryptographique données stockées et transmises dans des réseaux informatiques, dans des systèmes informatiques séparés ou dans des ordinateurs.

Les termes utilisés dans la présente norme et leurs définitions sont donnés en annexe 1.

I. SCHÉMA STRUCTUREL DE L'ALGORITHME DE TRANSFORMATION CRYPTOGRAPHIQUE

1.1. Le schéma fonctionnel de l'algorithme de transformation cryptographique (cryptoscheme) contient (voir Figure 1) :

Édition officielle

un périphérique de stockage de clé (KZU) 256 bits, composé de huit lecteurs 32 bits (X 0, X t. X 2, A3 L4, X $, X 6, Xy) ; quatre disques 32 bits (/ V (, N 2, Nj, / V 4);

Réimpression interdite

© Standards Publishing House, 1989 © IPK Standards Publishing House, 1996

deux disques 32 bits L / $,) avec des remplissages constants C 2, C \\

deux additionneurs 32 bits modulo 32 (CM |, SL/3);

additionneur 32 bits pour la sommation au niveau du bit modulo 2 (SL/2);

Additionneur 32 bits modulo (2 32 - 1) (SL/4);

additionneur modulo 2 (SL/5), aucune limitation sur la capacité de l'additionneur SL/$ n'est imposée ;

bloc de substitution (A);

un registre à décalage cyclique onze pas vers le bit de poids fort (R).

1.2. Le bloc de substitution A" est constitué de huit nœuds de substitution A'j,

A 2, A "z, K 4, A5, A7, A 8 avec mémoire 64 bits chacun. Poster

Le vecteur de 32 bits envoyé au bloc de substitution est divisé en huit vecteurs de 4 bits consécutifs, dont chacun est converti en un vecteur de 4 bits par le nœud de remplacement correspondant, qui est un tableau de seize lignes contenant quatre bits de remplissage par ligne . Le vecteur d'entrée définit l'adresse de la ligne dans la table, le remplissage de cette ligne est le vecteur de sortie. Les vecteurs de sortie de 4 bits sont ensuite concaténés séquentiellement en un vecteur de 32 bits.

1.3. Lors de l'addition et du décalage cyclique de vecteurs binaires, les bits les plus significatifs sont considérés comme les bits des lecteurs avec de grands nombres.

1.4. Lors de l'écriture de la clé (I ", W 2 ..., W q e (0,1), d = N256, en

La valeur KZU W \ est entrée dans i-ème rang lecteur Xq, la valeur W 2 est inscrite dans le 2ème bit du lecteur L#, ..., la valeur W ^ 2 est inscrite dans le 32ème bit du lecteur Xq ; la valeur W33 est saisie dans le 1er bit du lecteur X \ y la valeur est saisie dans le 2ème bit du X \ y ..., la valeur WM est saisie dans le 32ème bit du X \\ valeur W 6 5 est inscrite dans le 1er bit du lecteur X 2, etc., la valeur 1Y 2 5b est inscrite dans le 32e bit de la mémoire Xy.

1.5. Lors de la réécriture d'informations, le contenu du p-ième bit d'un périphérique de stockage (additionneur) est réécrit dans rang p un autre lecteur (additionneur).

1.6. Les valeurs des remplissages constants Cj, C 2 (constantes) des variateurs / V 6, / V5 sont données en annexe 2.

1.7. Les clés qui déterminent le remplissage du CCD et les tables du bloc de substitution K sont des éléments secrets et sont fournies de la manière prescrite.

Le peuplement des tables du bloc de substitution K est un élément clé à long terme commun au réseau informatique.

Organisation différents types la communication est réalisée en construisant un système de clés approprié. Dans ce cas, on peut utiliser la possibilité de générer des clés (remplir le CCD) en mode remplacement simple et de les chiffrer en mode remplacement simple avec protection contre les imitations pour transmission via des canaux de communication ou stockage dans la mémoire de l'ordinateur.

1.8. Le schéma crypto prévoit quatre types de travail : le cryptage (décryptage) des données dans un mode de remplacement simple ; cryptage (décryptage) des données en mode gamma ;

cryptage (décryptage) des données en mode gamma avec retour ;

mode de fabrication d'un insert simulé.

Les schémas de mise en œuvre logicielle de l'algorithme de transformation cryptographique sont donnés en annexe 3.

2. MODE DE REMPLACEMENT SIMPLE

2.1. Cryptage des données ouvertes en mode de remplacement facile

2.1.1. Le cryptocircuit "qui implémente l'algorithme de chiffrement dans le mode de remplacement simple, doit avoir la forme illustrée à la Fig. 2.

Les données ouvertes à chiffrer sont divisées en blocs de 64 bits chacun. Saisie de tout bloc T () = (D | (0), ^ (O), ..., q 3 1 (0), x 32 (0), L | (0), b 2 (0) y . . ., Z> 32 (0)) informations binaires dans les lecteurs N \ et N 2 est fait de sorte que la valeur de D | (0) est entrée dans le 1er bit de N |, la valeur a 2 (0) est entrée dans le 2ème bit / Vj, et ainsi de suite, la valeur est 32 (0) est entrée dans le 32ème bit de iVj ; la valeur /> | (0) est saisie

1er bit A/2, la valeur b 2 (0) est inscrite dans le 2e bit N 2, etc., la valeur f> 32 (0) est inscrite dans le 32e bit N 2. En conséquence, un état est obtenu (i 32 (0), i 3 | (0), ..., et 2 (0) y<7|(0)) накопителя yVj и состояние (/>32 (0), b 2 1 (0), ..., /> | (0)) de stockage N 2.

2.1.2. 256 bits de la clé sont entrés dans la RAM. Le contenu de huit lecteurs 32 bits Aq, X\t..., Xj est le suivant :

^0 = (^32^3.....

*1 =(^64^63, . ^34^33)

* 7 = (^ 56> ^ 255. ..., U/226, ^ 225)

2.1.3. L'algorithme de chiffrement pour un bloc de données ouvertes de 64 bits en mode de remplacement simple consiste en 32 cycles.

Au premier cycle, le remplissage initial de l'accumulateur se résume modulo 2 32 dans l'additionneur CM\ au remplissage de l'accumulateur Xq, tandis que le remplissage de l'accumulateur Nj est conservé.

Le résultat de la sommation est converti dans le bloc de substitution K et le vecteur résultant est envoyé à l'entrée du registre /?, où il est décalé cycliquement de onze pas vers les bits supérieurs. Le résultat du décalage est additionné au niveau du bit modulo 2 dans l'additionneur CM 2 avec un remplissage de 32 bits du lecteur yV 2 . Le résultat obtenu en CM 2 est enregistré en N \% avec l'ancien remplissage N | écrase dans N 2. Le premier cycle se termine.

Les cycles suivants se déroulent de la même manière, tandis qu'en

Au 2ème cycle, le remplissage X\ est lu à partir du CCD, au 3ème cycle à partir du CCD

le remplissage X 2 est lu, etc., au 8ème cycle, le remplissage Xj est lu dans la RAM. Dans les cycles du 9 au 16, ainsi que dans les cycles du 17 au 24, les remplissages du CCD sont lus dans le même ordre :

Dans les huit derniers cycles, du 25 au 32, l'ordre de lecture des remplissages CDC est inversé :

enfer, enfer, enfer, enfer.

Ainsi, lors d'un chiffrement en 32 cycles, l'ordre suivant de sélection des remplissages du lecteur est effectué :

enfer, ^ 2, ^), ^ 4> ^ 5, ^ 6 "^ 7, enfer, ^ 2, ^ 3" ^ 4, ^ 5, - ^ 6, ^ 7, enfer, enfer, enfer, enfer, enfer , enfer, enfer, enfer.

Au cycle 32, le résultat de l'additionneur SL/2 est entré dans le lecteur UU 2, et l'ancien remplissage est enregistré dans le lecteur N\.

Obtenu après le 32e nickel de cryptage de remplissage des disques N | et N2 est un bloc de données chiffré correspondant à un bloc de données ouvert.

2.1 4 Les équations de chiffrement en mode remplacement simple sont les suivantes :

J * Cr> "(

I b (/) = a (/ ~ I)

quand y = I -24;

G"

\bO) - a O - O à / 8 * 25 -r 31 ; un (32) = un (31)

A (32) = (q (31) ffl X 0) ARK> b (31)

où d (0) = (a 32 (0), « s | (0), ..., D | (0)) - remplissage initial de N \ avant le premier cycle de chiffrement ;

6 (0) = (632 (0), 63j (0), ..., 6j (0)) - remplissage initial / U 2 avant le premier cycle de chiffrement ;

a (j) = (032 (7), 0z | (/) e ..., 0 | (/)) - remplissage de la CU, après le y-ième cycle de chiffrement ;

b (j) = (6z 2 (/), 63j (/ "), ..., 6 | (/)) - remplissage / V 2 après le y-ième cycle de chiffrement, y = 032.

Le signe signifie la sommation au niveau du bit de vecteurs de 32 bits modulo 2.

Le signe W signifie la sommation de vecteurs de 32 bits modulo 2 32. Les règles de sommation modulo 2 32 sont données en annexe 4 ;

/? - opération de décalage cyclique de onze pas vers les chiffres supérieurs, c'est-à-dire

^ (r 32 "O |> r 30> r 29> r 28> r 27> r 26" r 25> r 24> r 23 'G 22 "r 2b r 20>» r 2 * r |) ~

= (r 21 "r 20> -" r 2 * r 1 * Г 32> Г31 * ГзО »r 29 * r 28 *, 27e" 26e / "25>, 24> Г23", 22) *

2.1.5. Un bloc de 64 bits de données chiffrées T w est sorti des lecteurs L ^, UU 2 dans l'ordre suivant : du 1er, 2e, ..., 32e bits du L7 |, puis du 1er, 2e , . .., stockage 32 bits W 2, c'est-à-dire

t w - (un,<32),0 2 (32),0 32 (32), 6,(32), 6 2 <32),6 32 <32».

Le reste des blocs de données ouverts dans le mode de remplacement simple sont chiffrés de la même manière.

2.2. Décryptage des données cryptées en mode d'écrasement facile

2.2.1. Le cryptocircuit qui implémente l'algorithme de déchiffrement en mode remplacement simple a la même forme (voir page 2) que pour le chiffrement. 256 bits de la même clé sur laquelle le cryptage a été effectué sont entrés dans la RAM. Les données cryptées à décrypter sont divisées en blocs de 64 bits chacun Entrée de n'importe quel bloc

T w - (0, (32), о 2 (32), ..., 0 32 (32), 6, (32), 6 2 (32), ..., 6 32 (32))

dans les dispositifs de stockage L', et N 2 sont produits de sorte que la valeur de dj (32) soit entrée dans le 1er bit/V, la valeur o 2 (32) soit entrée dans le 2ème bit/V, etc., le la valeur d'un 32 (32) est injectée dans le 32ème bit / V ,; la valeur 6, (32) est inscrite dans le 1er bit de N 2, et ainsi de suite, la valeur 6 32 (32) est inscrite dans le 32e bit de N 2.

2.2.2. Le déchiffrement est effectué selon le même algorithme que le chiffrement des données ouvertes, avec pour changement que les remplissages des lecteurs Xq, X\y..., Xj sont lus depuis la RAM en cycles de déchiffrement dans l'ordre suivant :

enfer, enfer 3, enfer, enfer, enfer, enfer, enfer, enfer 0,

Enfer 6, Enfer 4, Enfer 2, Enfer, Enfer, Enfer, Enfer 2, Enfer.

2.2.3. Les équations de décryptage sont :

D d (32 - /) = (d (32 - / + 1) ShLG,.,) * LF6 (32- / + 1) b (32 - /) = d (32 - / + 1) at, / = 1 + 8 ;

I o (32- /) = (a (32- / M) SHDG (32 _ /)(tode8))KLFL(32./M) | 6 (32- /) = q (32 - / + 1)

à / = 9 + 31;

B (0) = (a (1) WDGo) OFi (1)

2.2.4. Obtenus après 32 cycles de fonctionnement de remplissage, les lecteurs W, et N 2 constituent un bloc de données ouvertes.

To = (fli (O), a 2 (0), ..., Az 2 (0) »6, (0), 6 2 (0), ..., 6 32 (0)), correspondant au bloc de données cryptées, tandis que la valeur de o, (0) le bloc 7o correspond au contenu du 1er bit yV, la valeur 02 (0) correspond à

P. 8 GOST 28147-89

correspond au contenu du 2ème chiffre N\, etc., la valeur Dz2 (0) correspond au contenu du 32ème chiffre de N\ ; la valeur 6j (0) correspond au contenu du 1er chiffre ; la valeur ^ (0) correspond au contenu du 2ème chiffre de N2, etc., la valeur £ zr (0) correspond au contenu du 32ème chiffre de N2-

Le reste des blocs de données chiffrés est déchiffré de la même manière.

2.3. L'algorithme de chiffrement dans le mode de remplacement simple d'un bloc de 64 bits Г 0 est noté у, c'est-à-dire

A (T 0) = A (a (0), b (0)) = (a (32), b (32)) = T w.

2.4. Le mode de remplacement simple ne peut être utilisé pour chiffrer (déchiffrer) des données que dans les cas spécifiés au paragraphe 1.7.

3. MODE JEU

3.1. Cryptage des données ouvertes en mode gamma

3.1.1. Le cryptocircuit qui implémente l'algorithme de chiffrement en mode gamma a la forme illustrée à la Fig. 3.

Les données ouvertes, divisées en blocs de 64 séries T \) \ 7), 2) ..., 7)) m ", 1 7 [) M), sont chiffrées en mode gamma par sommation bit à bit modulo 2 dans le SL / 5 additionneur à l'échelle du chiffre G w, qui est généré par blocs de 64 bits, c'est-à-dire

G _ / L1) L2) Lm-1) LM) \

"malade V 1 she e * sh *" "Sh" "* * *" 111 / "

où M est déterminé par le volume de données cryptées.

Tjj) est le Y-ème bloc de 64 bits, / "le nombre de bits binaires dans le bloc 7J) M) peut être inférieur à 64, tandis que la partie de la gamme de chiffrement inutilisée pour le chiffrement à partir du bloc T \ ^] est mis au rebut.

3.1.2. 256 bits de la clé sont entrés dans la RAM. Une séquence binaire de 64 bits (synchro-burst) S = (5 * 1, S 2, ..., 5 ^ 4) est introduite dans les lecteurs iVj, N 2, ce qui correspond au remplissage initial de ces lecteurs pour la suite génération de blocs MB du chiffre gamma. Synchro-package est introduit dans jV | et Л ^ de sorte que la valeur 5 [est inscrite dans le 1er bit de la CU), la valeur de S 2 est inscrite dans le 2e bit de N \, etc., la valeur ^ est inscrite dans le 32e bit 7V |; la valeur de S33 est entrée dans le 1er bit de N 2, la valeur 4S34 est entrée dans le 2ème bit de N 2, et ainsi de suite, la valeur est entrée dans le 32ème bit de N 2.

3.1.3. Le remplissage initial des disques / Vj et N 2 (synchro-burst 5) est chiffré en mode remplacement simple conformément à

L'histoire de ce chiffre est beaucoup plus ancienne. L'algorithme qui devint plus tard la base de la norme est né, vraisemblablement, dans les entrailles de la huitième direction principale du KGB de l'URSS (maintenant dans la structure du FSB), très probablement dans l'un des instituts de recherche fermés sous sa direction. juridiction, probablement dans les années 1970 dans le cadre de projets visant à créer des implémentations logicielles et matérielles du chiffrement pour diverses plates-formes informatiques.

À partir du moment où le GOST a été publié, il portait un cachet restrictif « À usage officiel » et officiellement, le code n'a été déclaré « entièrement ouvert » qu'en mai 1994. L'historique de la création du chiffrement et les critères pour les développeurs à partir de 2010 n'ont pas été publiés.

La description

GOST 28147-89 - chiffrement par bloc avec une clé de 256 bits et 32 ​​cycles de conversion, fonctionnant par blocs de 64 bits. La base de l'algorithme de chiffrement est le réseau de Feistel. Il existe quatre modes de fonctionnement de GOST 28147-89 :

  • mode d'insertion d'imitation.

Mode de remplacement facile

Pour le cryptage dans ce mode, le texte en clair est d'abord divisé en deux moitiés (bits les moins significatifs - A, bits les plus significatifs - B). Au ième cycle, la sous-clé K i est utilisée :

(= binaire "exclusif ou")

Pour générer des sous-clés, la clé d'origine de 256 bits est divisée en huit blocs de 32 bits : K 1 ... K 8.

Les clés K 9 ... K 24 sont une répétition cyclique des clés K 1 ... K 8 (numérotées du bit le moins significatif au bit le plus significatif). Les touches K 25… K 32 sont les touches K 8… K 1.

Après avoir terminé les 32 tours de l'algorithme, les blocs A 33 et B 33 sont collés ensemble (notez que le bit le plus significatif devient A 33 et le bit le moins significatif est B 33) - le résultat est le résultat de l'algorithme.

Le déchiffrement s'effectue de la même manière que le chiffrement, mais l'ordre des sous-clés Ki est inversé.

Fonction est calculé comme suit :

A i et K i sont ajoutés modulo 2 32.

Le résultat est divisé en huit sous-séquences de 4 bits, chacune allant à l'entrée de sa propre nœud de table de remplacement(dans l'ordre croissant de priorité des bits), appelé ci-dessous S-bloc... Le nombre total de boîtes GOST S est de huit, c'est-à-dire autant de sous-séquences. Chaque S-bloc est une permutation des nombres de 0 à 15. La première sous-séquence de 4 bits va à l'entrée de la première S-box, la seconde va à l'entrée de la seconde, et ainsi de suite.

Si S-bloc Ressemble à ça:

1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12

et à l'entrée du bloc S 0, alors la sortie sera 1, si 4, alors la sortie sera 5, si l'entrée est 12, alors la sortie sera 6, etc.

Les sorties des huit S-box sont concaténées dans un mot de 32 bits, puis le mot entier est décalé cycliquement vers la gauche (vers les bits les plus significatifs) de 11 bits.

Le mode de remplacement simple présente les inconvénients suivants :

  • Ne peut être utilisé que pour crypter du texte en clair avec une longueur multiple de 64 bits
  • Lors du cryptage de blocs identiques de texte en clair, des blocs identiques de texte chiffré sont obtenus, ce qui peut fournir certaines informations à un cryptanalyste.

Le texte de la norme indique que la fourniture de remplissage de nœuds de remplacement (S-box) est effectuée de la manière prescrite, c'est-à-dire par le développeur de l'algorithme. La communauté des développeurs russes du CIPF s'est mise d'accord sur les nœuds de remplacement utilisés sur Internet, voir RFC 4357.

Avantages de GOST

  • la futilité d'une attaque de force (les attaques XSL ne sont pas prises en compte, leur efficacité n'étant pas totalement prouvée pour le moment) ;
  • l'efficacité de la mise en œuvre et, par conséquent, des performances élevées sur les ordinateurs modernes.
  • la présence d'une protection contre l'imposition de fausses données (développement d'un insert d'imitation) et le même cycle de cryptage dans les quatre algorithmes GOST.

Cryptanalyse

On pense (voir, par exemple, Vitaly V. Shorin, Vadim V. Jelezniakov et Ernst M. Gabidulin: Linear and Differential Cryptanalysis of Russian GOST) que GOST résiste à des méthodes aussi largement utilisées que la cryptanalyse linéaire et différentielle. L'ordre inverse d'utilisation des clés au cours des huit derniers tours offre une protection contre les attaques par glissement et les attaques par réflexion.

En mai 2011, le célèbre cryptanalyste Nicolas Courtois a prouvé l'existence d'une attaque sur ce chiffre, qui a une complexité de 2 8 (256) fois moins que la complexité d'une recherche directe par force brute, à condition qu'il y ait 2 64 open-text / paires de texte fermé. Cette attaque ne peut pas être réalisée en pratique en raison de sa complexité de calcul trop élevée. De plus, la connaissance de 264 couples texte clair/texte fermé permet évidemment de lire le texte chiffré sans même calculer la clé. La plupart des autres articles décrivent également des attaques qui ne sont applicables que sous certaines hypothèses, telles qu'un certain type de clés ou de tables de remplacement, une modification de l'algorithme d'origine ou nécessitant des quantités de mémoire ou de calcul encore inaccessibles. La question de savoir s'il existe des attaques pratiques qui n'exploitent pas la faiblesse des clés individuelles ou des tables de remplacement reste ouverte.

Critique de GOST

Les principaux problèmes de GOST sont liés à l'incomplétude de la norme en termes de génération de clés et de tables de remplacement. On pense que GOST a des clés «faibles» et des tableaux de substitution, mais la norme ne décrit pas les critères de sélection et de rejet des «faibles». De plus, la norme ne spécifie pas d'algorithme pour générer des tables de substitution (S-box). D'une part, il peut s'agir d'informations secrètes supplémentaires (en plus de la clé), et d'autre part, cela pose un certain nombre de problèmes :

  • il est impossible de déterminer la force cryptographique de l'algorithme sans connaître à l'avance le tableau des substitutions ;
  • les implémentations d'algorithmes de différents fabricants peuvent utiliser des tables de substitution différentes et peuvent être incompatibles les unes avec les autres ;
  • la possibilité de fournir délibérément des tables de substitution faibles par les autorités de délivrance des licences de la Fédération de Russie ;
  • potentiel (absence d'interdiction dans la norme) d'utilisation de tables de remplacement dans lesquelles les nœuds ne sont pas des permutations, ce qui peut conduire à une diminution extrême de la force du chiffrement.

En octobre 2010, lors d'une réunion du 1er comité technique mixte de l'Organisation internationale de normalisation (ISO / IEC JTC 1 / SC 27), GOST a été proposé pour inclusion dans la norme internationale de chiffrement par bloc ISO / IEC 18033-3. À cet égard, en janvier 2011, des ensembles fixes de nœuds de remplacement ont été formés et leurs propriétés cryptographiques ont été analysées. Cependant, GOST n'a pas été adopté comme norme et les tableaux de substitution correspondants n'ont pas été publiés.

Applications possibles

Remarques (modifier)

voir également

Liens

  • GOST 28147-89 «Systèmes de traitement de l'information. Protection cryptographique. Algorithme de transformation cryptographique "
  • Sergueï Panasenko Norme de cryptage GOST 28147-89 (russe) (15 août 2007). Consulté le 3 août 2012.
  • ... - un projet cryptographique de Cryptocom LLC pour ajouter des algorithmes cryptographiques russes à la bibliothèque OpenSSL. Archivé de l'original le 24 août 2011. Récupéré le 16 novembre 2008.

Littérature

  • V. V. Melnikov Protection de l'information dans les systèmes informatiques. - M. : Finances et Statistiques, 1997.
  • Romanets Yu. V. Timofeev P. A., Shangin V. F. Protection de l'information dans les systèmes et réseaux informatiques. - M. : Radio et communication, 1999.
  • Kharin Yu.S., Bernik V.I., Matveev G.V. Fondements mathématiques de la cryptologie. - Mn. : BSU, 1999.
  • Gerasimenko V.A., Malyuk A.A. Fondamentaux de la sécurité de l'information. - M. : MGIFI, 1997.
  • Leonov A.P., Leonov K.P., Frolov G.V. Sécurité des technologies bancaires et bureautiques automatisées. - Mn. : Nat. livre chambre de Biélorussie, 1996.
  • Hiver V. M .. Moldovian A. A., Moldovyan N. A. Réseaux informatiques et protection des informations transmises. - SPb. : SPbGU, 1998.
  • Schneier B. 14.1 Algorithme GOST 28147-89 // Cryptographie appliquée. Protocoles, algorithmes, textes sources en C = Cryptographie Appliquée. Protocoles, algorithmes et code source dans C. - M. : Triumph, 2002 .-- S. 373-377. - 816 p. - 3000 exemplaires. - ISBN 5-89392-055-4
  • Popov, V., Kurepkin, I. et S. Leontiev Algorithmes cryptographiques supplémentaires à utiliser avec les algorithmes GOST 28147-89, GOST R 34.10-94, GOST R 34.10-2001 et GOST R 34.11-94 // RFC 4357... - IETF, janvier 2006.

Fondation Wikimédia. 2010.

Algorithme GOST 28147-89

GOST 28147-89 - La norme soviétique et russe pour le cryptage symétrique, introduite en 1990, est également une norme CIS. Le nom complet est « GOST 28147-89 Systèmes de traitement de l'information. Protection cryptographique. Algorithme de transformation cryptographique".

Riz. 4.

Algorithme de chiffrement par bloc. Lors de l'utilisation de la méthode de chiffrement avec gamma, il peut exécuter les fonctions d'un algorithme de chiffrement de flux. GOST 28147-89 - chiffrement par bloc avec une clé de 256 bits et 32 ​​cycles de conversion, fonctionnant par blocs de 64 bits. La base de l'algorithme de chiffrement est le réseau de Feistel. Il existe quatre modes de fonctionnement de GOST 28147-89: remplacement simple, rayonnement gamma, rayonnement gamma avec rétroaction et mode de génération d'un insert d'imitation.

Les avantages de l'algorithme : la futilité d'une attaque de force, l'efficacité de la mise en œuvre et, par conséquent, des performances élevées sur les ordinateurs modernes, la présence d'une protection contre l'imposition de fausses données (génération d'un insert d'imitation) et le même cycle de chiffrement dans les quatre algorithmes GOST, une clé plus grande par rapport à l'algorithme DESX.

Inconvénients de l'algorithme : Les principaux problèmes de GOST sont liés à l'incomplétude de la norme en termes de génération de clés et de tables de remplacement. On pense que GOST a des clés «faibles» et des tableaux de substitution, mais la norme ne décrit pas les critères de sélection et de rejet des «faibles». De plus, la norme ne spécifie pas d'algorithme pour générer des tables de substitution (S-box). D'une part, il peut s'agir d'informations secrètes supplémentaires (en plus de la clé), et d'autre part, cela pose un certain nombre de problèmes : il est impossible de déterminer la force cryptographique d'un algorithme sans connaître au préalable la table de substitution ; les implémentations d'algorithmes de différents fabricants peuvent utiliser des tables de substitution différentes et peuvent être incompatibles les unes avec les autres ; la possibilité de fournir délibérément des tables de substitution faibles par les autorités de délivrance des licences de la Fédération de Russie.

Avantages d'IDEA par rapport aux analogues

Dans la mise en œuvre du logiciel sur Intel486SX est deux fois plus rapide que DES IDEA, ce qui représente une augmentation significative de la vitesse, la longueur de clé pour IDEA est de 128 bits, contre 56 bits pour DES, ce qui est une bonne amélioration par rapport à l'énumération des clés par force brute. La probabilité d'utiliser des clés faibles est très faible et s'élève à 1/2 64. IDEA est plus rapide que l'algorithme GOST 28147-89 (en implémentation logicielle sur Intel486SX). L'utilisation d'IDEA en modes de cryptage parallèle sur les processeurs Pentium III et Pentium MMX vous permet d'obtenir des vitesses élevées. Comparé aux finalistes AES, 4-way IDEA n'est que légèrement plus lent que RC6 et Rijndael sur Pentium II, mais plus rapide que Twofish et MARS. Pentium III 4-way IDEA est encore plus rapide que RC6 et Rijndael. L'avantage est également une bonne connaissance et une résistance aux outils de cryptanalyse bien connus.

Algorithme de chiffrement GOST 28147-89, son utilisation et sa mise en œuvre logicielle pour les ordinateurs sur la plate-forme Intel x86.


Andrey Vinokourov

Description de l'algorithme.

Termes et désignations.

La description de la norme de cryptage de la Fédération de Russie est contenue dans un document très intéressant intitulé "The GOST 28147-89 Cryptographic Transformation Algorithm". Le fait que dans son nom au lieu du terme "cryptage" apparaisse un concept plus général " transformation cryptographique "Ce n'est pas du tout accidentel. En plus de plusieurs procédures de cryptage étroitement liées, le document décrit un algorithme pour générer imitations ... Ce dernier n'est rien de plus qu'une combinaison de contrôle cryptographique, c'est-à-dire un code généré à partir des données d'origine à l'aide d'une clé secrète à cette fin imitoprotection , ou protégez vos données contre les modifications non autorisées.

À différentes étapes des algorithmes GOST, les données sur lesquelles ils opèrent sont interprétées et utilisées de différentes manières. Dans certains cas, les éléments de données sont traités comme des tableaux de bits indépendants, dans d'autres cas comme un entier non signé, et dans d'autres comme un élément complexe avec une structure, constituée de plusieurs éléments plus simples. Par conséquent, afin d'éviter toute confusion, il est nécessaire de se mettre d'accord sur la notation utilisée.

Les éléments de données dans cet article sont désignés par des lettres majuscules en italique (par exemple, X). À travers | X| indique la taille de l'article X en bits. Ainsi, si vous interprétez la donnée X en tant qu'entier non négatif, vous pouvez écrire l'inégalité suivante :.

Si un élément de données se compose de plusieurs éléments de plus petite taille, alors ce fait est indiqué comme suit : X=(X 0 ,X 1 ,…,Xn –1)=X 0 ||X 1 ||…||Xn-1 . La procédure pour combiner plusieurs éléments de données en un seul s'appelle enchaînement données et désigné par le symbole "||". Naturellement, pour les tailles des données, la relation suivante doit être satisfaite : | X|=|X 0 |+|X 1 |+…+|Xn-1 |. Lors de la spécification d'éléments de données complexes et d'opérations de concaténation, les éléments de données constitutifs sont répertoriés par ordre de priorité croissant. En d'autres termes, si vous interprétez un élément composite et tous les éléments de données qu'il contient comme des entiers non signés, vous pouvez écrire l'égalité suivante :

Dans l'algorithme, un élément de données peut être interprété comme un tableau de bits individuels, auquel cas les bits sont désignés par la même lettre que le tableau, mais dans une version minuscule, comme le montre l'exemple suivant :

X=(X 0 ,X 1 ,…,xn –1)=X 0 +2 1 X 1 +…+2 m-1 · xn –1 .

Ainsi, si vous avez fait attention, le soi-disant GOST a été adopté. Numérotation des bits "petit-boutiste", c'est-à-dire dans les mots de données multibits, les bits individuels et leurs groupes de numéro inférieur sont moins significatifs. Ceci est directement indiqué dans la clause 1.3 de la norme : « Lors de l'ajout et du décalage cyclique de vecteurs binaires, les bits les plus significatifs sont les bits des lecteurs avec de grands nombres. En outre, les clauses de la norme 1.4, 2.1.1 et d'autres prescrivent de commencer à remplir les registres de stockage du dispositif de chiffrement virtuel avec les données des plus bas, c'est-à-dire rejets moins importants. Exactement le même ordre de numérotation est adopté dans l'architecture du microprocesseur Intel x86, c'est pourquoi aucune permutation supplémentaire des bits dans les mots de données n'est requise lorsque le chiffrement est implémenté dans le logiciel sur cette architecture.

Si une opération qui a une signification logique est effectuée sur les éléments de données, alors il est supposé que cette opération est effectuée sur les bits correspondants des éléments. En d'autres termes UNE B=(une 0 b 0 ,une 1 b 1 ,…,un –1 b n–1), où m=|UNE|=|B|, et le symbole "" désigne une opération logique binaire arbitraire ; fait généralement référence à une opération exclusif ou , c'est aussi l'opération de sommation modulo 2 :

La logique de construction d'un chiffrement et la structure des informations clés GOST.

Si vous étudiez attentivement le GOST original 28147-89, vous remarquerez qu'il contient une description d'algorithmes de plusieurs niveaux. Tout en haut se trouvent des algorithmes pratiques conçus pour crypter des tableaux de données et générer un insert d'imitation pour eux. Tous reposent sur trois algorithmes de niveau inférieur, appelés dans le texte de GOST cycles ... Ces algorithmes fondamentaux sont appelés dans cet article cycles de base pour les distinguer de toutes les autres boucles. Ils portent les noms et appellations suivantes, ces dernières sont données entre parenthèses et leur signification sera expliquée plus loin :

  • cycle de cryptage (32-З);
  • cycle de décryptage (32-P) ;
  • cycle de fabrication d'insert imitant (16-З).

À son tour, chacun des cycles de base est une répétition multiple d'une seule procédure, appelée pour plus de précision plus loin dans ce travail l'étape principale de la transformation crypto .

Ainsi, pour comprendre GOST, vous devez comprendre les trois choses suivantes :

  • Quel étape principale transformations cryptographiques ;
  • comment les cycles de base sont constitués des étapes de base ;
  • comme sur trois cycles de base tous les algorithmes GOST pratiques sont additionnés.

Avant de passer à l'étude de ces questions, vous devriez parler des informations clés utilisées par les algorithmes GOST. Conformément au principe de Kirchhoff, qui est satisfait par tous les chiffrements modernes connus du grand public, c'est son secret qui assure le secret du message crypté. Dans GOST, les informations clés se composent de deux structures de données. En plus du réel clé requis pour tous les chiffrements, il contient également tableau de substitution ... Vous trouverez ci-dessous les principales caractéristiques des principales structures GOST.

L'étape principale de la transformation cryptographique.

L'étape principale d'une crypto-transformation est essentiellement un opérateur qui définit la transformation d'un bloc de données 64 bits. Un paramètre supplémentaire de cet opérateur est un bloc de 32 bits, qui est utilisé comme élément clé. L'algorithme de l'étape principale est illustré à la figure 1.


Figure 1. Schéma de l'étape principale de la crypto-transformation de l'algorithme GOST 28147-89.

Vous trouverez ci-dessous les explications de l'algorithme de pas principal :

Étape 0

  • N- le bloc de données 64 bits converti, lors de l'exécution de l'étape, son poids faible ( N 1) et senior ( N 2) les parties sont traitées comme des entiers individuels non signés de 32 bits. Ainsi, on peut écrire N =(N 1 ,N 2).
  • X- élément clé 32 bits ;

Étape 1

Ajout de clé. La moitié inférieure du bloc transformé est additionnée modulo 2 32 avec l'élément clé utilisé à l'étape, le résultat est passé à l'étape suivante ;

Étape 2

Remplacement de bloc. La valeur 32 bits obtenue à l'étape précédente est interprétée comme un tableau de huit blocs de code 4 bits : S =(S 0 , S 1 , S 2 , S 3 , S 4 , S 5 , S 6 , S 7), et S 0 contient les 4 moins significatifs, et S 7 - 4 bits les plus significatifs S.

En outre, la valeur de chacun des huit blocs est remplacée par une nouvelle, qui est sélectionnée dans la table de substitution comme suit : valeur du bloc Si je des changements à Si je-ième élément dans l'ordre (numérotation à partir de zéro) je le nœud de remplacement (c'est-à-dire je-ème ligne du tableau des substitutions, numérotation également à partir de zéro). En d'autres termes, un élément de la table de substitution avec un numéro de ligne égal au numéro du bloc remplacé et un numéro de colonne égal à la valeur du bloc remplacé sous forme d'entier non négatif de 4 bits est sélectionné en remplacement du valeur de bloc. Par conséquent, la taille de la table de remplacement devient claire : le nombre de lignes qu'elle contient est égal au nombre d'éléments de 4 bits dans un bloc de données de 32 bits, c'est-à-dire huit, et le nombre de colonnes est égal au nombre de différentes valeurs d'un bloc de données de 4 bits, qui est connu pour être 2 4, seize.

Étape 3

Décalage cyclique de 11 bits vers la gauche. Le résultat de l'étape précédente est décalé cycliquement de 11 bits vers les bits de poids fort et transféré à l'étape suivante. Dans le schéma de l'algorithme, le symbole désigne la fonction de décalage cyclique de son argument de 11 bits vers la gauche, c'est-à-dire vers les chiffres supérieurs.

Étape 4

Addition bit à bit : la valeur obtenue à l'étape 3 est additionnée bit à bit modulo 2 avec la moitié supérieure du bloc converti.

Étape 5

Décalage le long de la chaîne : la partie inférieure du bloc converti est décalée à la place de l'ancien, et le résultat de l'étape précédente est placé à sa place.

Étape 6

La valeur résultante du bloc transformé est renvoyée à la suite de l'exécution de l'algorithme de l'étape principale de la crypto-transformation.

Cycles de base des transformations cryptographiques.

Comme indiqué au début de cet article, GOST fait référence à la classe des chiffrements par blocs, c'est-à-dire que l'unité de traitement de l'information qu'il contient est un bloc de données. Par conséquent, il est tout à fait logique de s'attendre à ce qu'il définisse des algorithmes pour les transformations cryptographiques, c'est-à-dire pour le cryptage, le décryptage et la "comptabilité" dans la combinaison de contrôle d'un bloc de données. Ce sont ces algorithmes que l'on appelle cycles de base GOST, qui souligne leur importance fondamentale pour la construction de ce chiffre.

Les boucles de base sont construites à partir de étapes principales la transformation cryptographique discutée dans la section précédente. Au cours de l'étape principale, un seul élément de clé de 32 bits est utilisé, tandis que la clé GOST contient huit de ces éléments. Par conséquent, pour que la clé soit pleinement utilisée, chacune des boucles de base doit exécuter à plusieurs reprises l'étape principale avec ses différents éléments. En même temps, il semble tout à fait naturel qu'à chaque cycle de base tous les éléments de la clé soient utilisés le même nombre de fois ; pour des raisons de force du chiffre, ce nombre devrait être supérieur à un.

Toutes les hypothèses faites ci-dessus, basées simplement sur le bon sens, se sont avérées correctes. Les boucles de base consistent en plusieurs exécutions étape principale utilisant des éléments clés différents et ne diffèrent les uns des autres que par le nombre de répétitions de l'étape et par l'ordre dans lequel les éléments clés sont utilisés. Vous trouverez ci-dessous l'ordre des différentes boucles.

Cycle de chiffrement 32-Z :

K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 7 ,K 6 ,K 5 ,K 4 ,K 3 ,K 2 ,K 1 ,K 0 .


Figure 2a. Diagramme du cycle de chiffrement 32-Z

Cycle de décryptage 32-P :

K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 7 ,K 6 ,K 5 ,K 4 ,K 3 ,K 2 ,K 1 ,K 0 ,K 7 ,K 6 ,K 5 ,K 4 ,K 3 ,K 2 ,K 1 ,K 0 ,K 7 ,K 6 ,K 5 ,K 4 ,K 3 ,K 2 ,K 1 ,K 0 .


Figure 2b. Diagramme du cycle de déchiffrement 32-P

Cycle de fabrication d'insert imitant 16-З :

K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 .


Figure 2c. Schéma du cycle de production de l'insert imitant 16-З.

Chacun des cycles a sa propre désignation alphanumérique correspondant au motif " n-X ", où le premier élément de la notation ( m), spécifie le nombre de répétitions de l'étape principale du cycle, et le deuxième élément de la notation ( X), lettre, spécifie l'ordre de chiffrement ("Z") ou de déchiffrement ("P") dans l'utilisation des éléments clés. Cette commande nécessite des précisions supplémentaires :

Le cycle de déchiffrement doit être l'inverse du cycle de chiffrement, c'est-à-dire que l'application séquentielle de ces deux cycles à un bloc arbitraire doit aboutir au bloc d'origine, ce qui se traduit par la relation suivante : C 32-P ( C 32-Z ( T))= T, où T- un bloc de données 64 bits arbitraire, C X ( T) - le résultat de la boucle X au-dessus du bloc de données T... Pour remplir cette condition pour des algorithmes comme GOST, il est nécessaire et suffisant que l'ordre d'utilisation des éléments clés par les cycles correspondants soit mutuellement inverse. Il est facile de vérifier la validité de la condition écrite pour le cas considéré en comparant les séquences ci-dessus pour les cycles 32-З et 32-Р. De ce qui vient d'être dit, une conséquence intéressante découle : la propriété d'un cycle d'être inverse à un autre cycle est réciproque, c'est-à-dire que le cycle 32-З est inverse par rapport au cycle 32-Р. En d'autres termes, le chiffrement du bloc de données peut théoriquement se faire avec un cycle de déchiffrement, auquel cas le déchiffrement du bloc de données doit être effectué avec un cycle de chiffrement. N'importe lequel des deux cycles mutuellement inversés peut être utilisé pour le chiffrement, puis le second doit être utilisé pour déchiffrer les données, mais la norme GOST 28147-89 attribue des rôles aux cycles et ne donne pas à l'utilisateur le droit de choisir en la matière.

Le cycle de génération d'un insert imité est deux fois plus court que les cycles de chiffrement, l'ordre d'utilisation des éléments clés qu'il contient est le même que dans les 16 premières étapes du cycle de chiffrement, ce qui est facile à vérifier en examinant les séquences ci-dessus, donc cet ordre dans la désignation du cycle est codé par la même lettre "Z".

Les diagrammes de cycle de base sont représentés sur les figures 2a-c. Chacun d'eux prend en argument et renvoie comme résultat un bloc de données 64 bits indiqué dans les schémas N... Symbole d'étape ( N,X) désigne l'exécution de l'étape principale de la crypto-transformation du bloc de données N en utilisant l'élément clé X... Il existe encore une différence entre les cycles de chiffrement et d'imitation d'insertion, non évoquée ci-dessus : à la fin des cycles de chiffrement de base, les parties haute et basse du bloc résultat sont inversées, cela est nécessaire à leur réversibilité mutuelle.

Modes de cryptage de base.

GOST 28147-89 fournit les trois modes de cryptage de données suivants :

  • remplacement simple,
  • jeu,
  • gammament avec retour,

et un mode supplémentaire pour générer un insert simulé.

Dans n'importe lequel de ces modes, les données sont traitées par blocs de 64 bits, dans lesquels le tableau subissant la transformation cryptographique est divisé, c'est pourquoi GOST fait référence aux chiffrements par blocs. Cependant, dans deux modes gamma, il est possible de traiter un bloc de données incomplet de taille inférieure à 8 octets, ce qui est essentiel lors du chiffrement de tableaux de données de taille arbitraire, qui ne peut être un multiple de 8 octets.

Avant de procéder à l'examen d'algorithmes spécifiques pour les transformations cryptographiques, il est nécessaire de clarifier la notation utilisée dans les diagrammes des sections suivantes :

T, T w - tableaux de données ouvertes et cryptées, respectivement ;

, – je- Blocs 64 bits dans l'ordre des données ouvertes et cryptées, respectivement : , , le dernier bloc peut être incomplet :;

m- le nombre de blocs de 64 bits dans le tableau de données ;

C X - fonction de conversion d'un bloc de données de 64 bits selon l'algorithme du cycle de base "X".

Décrivons maintenant les principaux modes de chiffrement :

Remplacement facile.

Le chiffrement dans ce mode consiste à appliquer le cycle 32-З aux blocs de données ouvertes, le déchiffrement - cycle 32-Р aux blocs de données chiffrées. C'est le plus simple des modes ; les blocs de données 64 bits y sont traités indépendamment les uns des autres. Des schémas d'algorithmes de chiffrement et de déchiffrement dans le mode de remplacement simple sont représentés sur les figures 3a et b, respectivement, ils sont triviaux et ne nécessitent aucun commentaire.


Dessin. 3a. Algorithme de cryptage des données en mode de remplacement facile


Dessin. 3b. Algorithme de déchiffrement des données en mode remplacement simple

La taille du tableau de données ouvertes ou chiffrées, soumises respectivement au chiffrement ou au déchiffrement, doit être un multiple de 64 bits : | T o | = | T w | = 64 m , une fois l'opération terminée, la taille du tableau de données reçu ne change pas.

Le mode de cryptage Simple Swap présente les caractéristiques suivantes :

  • Étant donné que les blocs de données sont chiffrés indépendamment les uns des autres et de leur position dans le tableau de données, le chiffrement de deux blocs de texte en clair identiques entraîne des blocs de texte chiffré identiques et vice versa. La propriété notée permettra au cryptanalyste de tirer une conclusion sur l'identité des blocs des données initiales, si des blocs identiques sont rencontrés dans le tableau de données cryptées, ce qui est inacceptable pour un chiffrement sérieux.
  • Si la longueur du tableau de données chiffrées n'est pas un multiple de 8 octets ou de 64 bits, le problème se pose de savoir comment et comment compléter le dernier bloc de données incomplet du tableau en 64 bits complets. Cette tâche n'est pas aussi facile qu'il n'y paraît à première vue. Des solutions évidentes telles que "compléter un bloc incomplet avec des bits zéro" ou, plus généralement, "compléter un bloc incomplet avec une combinaison fixe de bits zéro et un" peuvent, sous certaines conditions, donner à un cryptanalyste la possibilité d'utiliser des méthodes d'énumération pour déterminer le contenu de ce bloc incomplet, et ce fait signifie une diminution de la force du chiffrement. De plus, la longueur du texte chiffré changera, augmentant jusqu'au multiple entier le plus proche de 64 bits, ce qui est souvent indésirable.

À première vue, les caractéristiques ci-dessus rendent presque impossible l'utilisation du mode de remplacement simple, car il ne peut être utilisé que pour crypter des tableaux de données avec un multiple de 64 bits qui ne contiennent pas de blocs de 64 bits répétés. Il semble que pour toute donnée réelle, il soit impossible de garantir le respect des conditions spécifiées. C'est presque le cas, mais il y a une exception très importante : n'oubliez pas que la taille de la clé est de 32 octets et que la taille de la table de remplacement est de 64 octets. De plus, la présence de blocs de 8 octets répétés dans la clé ou la table de remplacement indiquera leur très mauvaise qualité, de sorte qu'il ne peut y avoir une telle répétition dans les éléments clés réels. Ainsi, nous avons découvert que le mode de remplacement simple est tout à fait approprié pour chiffrer les informations de clé, d'autant plus que d'autres modes sont moins pratiques à cette fin, car ils nécessitent un élément de données de synchronisation supplémentaire - un message de synchronisation (voir la section suivante). Notre supposition est correcte, GOST prescrit d'utiliser le mode de remplacement simple exclusivement pour chiffrer les données clés.

Gommage.

Comment pouvez-vous vous débarrasser des défauts du mode Easy Swap ? Pour cela, il faut permettre de chiffrer des blocs de taille inférieure à 64 bits et s'assurer que le bloc chiffré dépend de son nombre, c'est-à-dire randomiser processus de cryptage. Dans GOST, cela est réalisé de deux manières différentes dans deux modes de cryptage, fournissant jouer . Gommage - il s'agit de l'imposition (suppression) d'une gamme cryptographique sur des données ouvertes (cryptées), c'est-à-dire une séquence d'éléments de données générés à l'aide d'un algorithme cryptographique pour obtenir des données cryptées (ouvertes). Pour l'imposition du gamma pendant le chiffrement et sa suppression pendant le déchiffrement, des opérations binaires mutuellement inverses doivent être utilisées, par exemple, l'addition et la soustraction modulo 64 pour les blocs de données de 64 bits. Dans GOST, à cet effet, l'opération d'addition au niveau du bit modulo 2 est utilisée, car elle est l'inverse d'elle-même et, de plus, est la plus facilement implémentée en matériel. Gamma résout les deux problèmes ci-dessus : tout d'abord, tous les éléments gamma sont différents pour les tableaux chiffrés réels et, par conséquent, le résultat du chiffrement même de deux blocs identiques dans un tableau de données sera différent. Deuxièmement, bien que les éléments gamma soient générés en portions égales de 64 bits, une partie d'un tel bloc d'une taille égale à la taille du bloc chiffré peut être utilisée.

Passons maintenant directement à la description du mode gamma. Le gamma pour ce mode est obtenu comme suit : à l'aide d'un certain générateur de séquences de nombres récurrents (RNG) algorithmique, des blocs de données de 64 bits sont générés, qui sont ensuite soumis à une conversion dans un cycle 32-Z, c'est-à-dire un cryptage dans le mode de remplacement simple, en conséquence, des blocs gamma sont obtenus. Du fait que l'imposition et la suppression de gamma sont effectuées à l'aide de la même opération d'or exclusif au niveau du bit, les algorithmes de chiffrement et de déchiffrement en mode gamma sont identiques, leur schéma général est illustré à la figure 4.

Le RGPC utilisé pour générer le gamma est une fonction récurrente : - éléments d'une séquence récurrente, F- fonction de conversion. Par conséquent, la question se pose inévitablement de son initialisation, c'est-à-dire de l'élément. En réalité, cette donnée est un paramètre d'algorithme pour les modes gamma, dans les diagrammes elle est désignée comme S, et est appelé en cryptographie paquet synchro , et dans notre GOST - remplissage initial l'un des registres du crypteur. Pour certaines raisons, les développeurs de GOST ont décidé d'utiliser pour l'initialisation du RGFC non pas le synchro-colis lui-même, mais le résultat de sa transformation sur le cycle 32-З : ... La séquence d'éléments générée par le RGPC dépend entièrement de son remplissage initial, c'est-à-dire que les éléments de cette séquence sont fonction de leur nombre et du remplissage initial du RGPC : où Fi(X)=F(Fi –1 (X)), F 0 (X)=X... Compte tenu de la transformation par l'algorithme de remplacement simple, une dépendance à la clé est également ajoutée :

jeje-ième élément de gamme, K- clé.

Ainsi, la séquence d'éléments gamma à utiliser en mode gamma est déterminée de manière unique par les données clés et la séquence de synchronisation. Naturellement, pour la réversibilité de la procédure de chiffrement, le même synchro-message doit être utilisé dans les processus de chiffrement et de déchiffrement. De l'exigence d'unicité du gamut, dont l'échec entraîne une diminution catastrophique de la force du chiffrement, il s'ensuit que pour chiffrer deux tableaux de données différents sur la même clé, il faut s'assurer de l'utilisation de synchro différentes. -colis. Cela conduit à la nécessité de stocker ou de transmettre un message de synchronisation sur des canaux de communication avec des données cryptées, bien que dans certains cas particuliers, il puisse être prédéfini ou calculé d'une manière spéciale si le cryptage de deux tableaux sur une clé est exclu.

Examinons maintenant de plus près le RGFC utilisé dans GOST pour générer des éléments gamma. Tout d'abord, il convient de noter qu'il n'est pas nécessaire de fournir des caractéristiques statistiques de la séquence de nombres générée. Le RGPC a été conçu par les développeurs de GOST sur la base de la nécessité de remplir les conditions suivantes :

  • la période de répétition de la séquence de nombres générée par le RGFC ne doit pas être très différente (en pourcentage) de la valeur maximale possible de 2 64 pour une taille de bloc donnée ;
  • les valeurs adjacentes générées par le RGPC doivent différer les unes des autres dans chaque octet, sinon la tâche du cryptanalyste sera simplifiée ;
  • Le RGFC devrait être assez simple à mettre en œuvre à la fois matériellement et logiciellement sur les types de processeurs les plus courants, dont la plupart sont connus pour être 32 bits.

Sur la base des principes énumérés, les créateurs de GOST ont conçu un RGFC très réussi, qui présente les caractéristiques suivantes :

C 0 =1010101 16 ;

C 1 =1010104 16 ;

L'indice dans la notation d'un nombre signifie son système numérique, donc les constantes utilisées dans cette étape sont écrites en notation hexadécimale.

La deuxième expression a besoin de commentaires, car le texte de GOST contient quelque chose de différent :, avec la même valeur constante C 1 . Mais plus loin dans le texte de la norme, un commentaire est donné que, il s'avère, sous l'opération de prendre le reste modulo 2 32 –1 n'est pas compris de la même manière qu'en mathématiques. La différence est que selon GOST (2 32 –1) mode(2 32 –1) = (2 32 –1), pas 0. En fait, cela simplifie la mise en œuvre de la formule, et l'expression mathématiquement correcte est donnée ci-dessus.

  • la période de répétition de la séquence pour la partie de poids faible est de 2 32, pour la partie de poids fort 2 32 –1, pour toute la séquence la période est de 2 32 (2 32 –1), la preuve de ce fait est tout à fait simple, obtenez-le vous-même. La première formule des deux est implémentée dans une commande, la seconde, malgré sa lourdeur apparente, dans deux commandes sur tous les processeurs 32 bits modernes - la première commande est l'addition habituelle modulo 32 avec stockage du bit de retenue, et la deuxième commande ajoute le bit de retenue à la valeur reçue.

Le schéma de l'algorithme de chiffrement en mode gamma est illustré à la figure 4, ci-dessous les explications du schéma :


Figure 4. Algorithme de chiffrement (déchiffrement) des données en mode gamma.

Étape 0

Définit les données initiales pour l'étape principale de la transformation cryptographique :

  • T o (w) - un tableau de données ouvertes (cryptées) de taille arbitraire, soumises à la procédure de chiffrement (déchiffrement), au cours de la procédure, le tableau est transformé en portions de 64 bits ;
  • S forfait synchro , élément de données 64 bits requis pour initialiser le générateur gamma ;

Étape 1

La transformation initiale du synchro-message, effectuée pour le « randomiser », c'est-à-dire pour éliminer les régularités statistiques qu'il contient, le résultat sert de remplissage initial de la RGFC ;

Étape 2

Une étape du fonctionnement du RGPC, qui met en œuvre son algorithme récurrent. Au cours de cette étape, le senior ( S 1) et plus jeune ( S 0) des parties de la séquence de données sont générées indépendamment les unes des autres ;

Étape 3

Gommage. L'élément 64 bits suivant, généré par le RGPC, est soumis à la procédure de chiffrement dans un cycle 32-Z, le résultat est utilisé comme élément gamma pour le chiffrement (déchiffrement) du prochain bloc de données ouvertes (chiffrées) du même taille.

Étape 4

Le résultat de l'algorithme est un tableau de données chiffré (déchiffré).

Voici les caractéristiques du gammapping en tant que mode de chiffrement :

  1. Des blocs identiques dans un tableau de données ouvert donneront des blocs de texte chiffré différents pendant le cryptage, ce qui masquera le fait de leur identité.
  2. Etant donné que la superposition gamma est effectuée bit par bit, le cryptage d'un bloc incomplet de données s'effectue facilement en cryptant les bits de ce bloc incomplet en utilisant les bits correspondants du bloc gamma. Ainsi, pour chiffrer un bloc incomplet de 1 bit, selon la norme, il faut utiliser le bit le moins significatif du bloc gamma.
  3. Le message de synchronisation utilisé dans le cryptage doit être transmis d'une manière ou d'une autre pour être utilisé dans le décryptage. Ceci peut être réalisé des manières suivantes :
  • stocker ou transmettre un message de synchronisation avec un tableau de données crypté, ce qui entraînera une augmentation de la taille du tableau de données pendant le cryptage de la taille du message de synchronisation, c'est-à-dire de 8 octets ;
  • utiliser une valeur de message synchro prédéterminée ou la générer de manière synchrone par une source et un récepteur selon une certaine loi, dans ce cas il n'y a pas de changement dans la taille du tableau de données transmis ou stocké ;

Les deux méthodes se complètent et dans les rares cas où la première, la plus courante d'entre elles ne fonctionne pas, la seconde, plus exotique, peut être utilisée. La seconde méthode a beaucoup moins d'application, car il est possible de rendre la transmission de synchronisation prédéfinie uniquement si pas plus d'un tableau de données est sciemment chiffré sur un ensemble donné d'informations clés, ce qui n'est pas si souvent. Il n'est pas non plus toujours possible de générer un message de synchronisation de manière synchrone à la source et à la destination du tableau de données, car cela nécessite une liaison stricte à quelque chose dans le système. Ainsi, une idée apparemment sensée d'utiliser le numéro du message transmis comme message synchro dans le système de transmission de messages cryptés ne convient pas, car le message peut être perdu et ne pas atteindre le destinataire, auquel cas le cryptage source et récepteur les systèmes deviendront désynchronisés. Par conséquent, dans le cas considéré, il n'y a pas d'alternative à la transmission d'un message de synchronisation avec un message crypté.

En revanche, l'exemple inverse peut être cité. Supposons que le cryptage des données soit utilisé pour protéger les informations sur le disque et qu'il soit mis en œuvre à un niveau bas, pour garantir un accès indépendant, les données sont cryptées par secteurs. Dans ce cas, il est impossible de stocker le message de synchronisation avec les données cryptées, car la taille du secteur ne peut pas être modifiée, mais elle peut être calculée en fonction du numéro de la tête de lecture du disque, du numéro de la piste (cylindre) et du secteur. numéro sur la piste. Dans ce cas, le message de synchronisation est lié à la position du secteur sur le disque, qui peut difficilement changer sans reformater le disque, c'est-à-dire sans détruire les données qu'il contient.

Le mode gamma a une autre caractéristique intéressante. Dans ce mode, les bits du tableau de données sont chiffrés indépendamment les uns des autres. Ainsi, chaque bit du texte chiffré dépend du bit correspondant du texte en clair et, bien entendu, du numéro ordinal du bit dans le tableau : ... Il s'ensuit que changer le bit de texte chiffré à la valeur opposée conduira à un changement similaire à l'opposé du bit de texte en clair :

où signifie inversé par rapport à t valeur en bits ().

Cette propriété donne à un attaquant la possibilité, en agissant sur les bits du texte chiffré, d'apporter des modifications prévisibles et même ciblées au texte en clair correspondant obtenu après son déchiffrement sans posséder la clé secrète. Cela illustre le fait bien connu en cryptologie que le secret et l'authenticité sont des propriétés différentes systèmes cryptographiques ... En d'autres termes, les propriétés du cryptosystème pour fournir une protection contre la connaissance non autorisée du contenu du message et contre la modification non autorisée du message sont indépendantes et ne peuvent se chevaucher que dans certains cas. Ce qui précède signifie qu'il existe des algorithmes cryptographiques qui assurent un certain secret des données cryptées et en même temps ne protègent pas contre les modifications et vice versa, garantissent l'authenticité des données et ne limitent en aucun cas la possibilité de les connaître. Pour cette raison, la propriété considérée du mode gamma ne doit pas être considérée comme son inconvénient.

Gommage avec rétroaction.

Ce mode est très similaire au mode gamma et n'en diffère que par la méthode de génération des éléments gamma - l'élément gamma suivant est généré à la suite de la conversion de cycle 32-Z du bloc précédent de données cryptées, et pour crypter le premier bloc du tableau de données, l'élément gamma est généré à la suite de la conversion selon le même cycle d'envoi synchro. Cela permet d'obtenir un engagement de bloc - chaque bloc de texte chiffré dans ce mode dépend du bloc de texte en clair correspondant et de tous les blocs de texte en clair précédents. Par conséquent, ce mode est parfois appelé gommage avec engagement de bloc ... Le fait de bloquer l'engagement n'a aucun effet sur la force du chiffrement.

Le schéma des algorithmes de déchiffrement et de déchiffrement en mode gamma avec rétroaction est illustré à la figure 5 et, en raison de sa simplicité, n'a pas besoin de commentaires.


Figure 5. Algorithme de chiffrement (déchiffrement) des données en mode gamma avec rétroaction.

Le chiffrement en mode gamma en boucle fermée présente les mêmes caractéristiques que le chiffrement en mode gamma conventionnel, à l'exception de l'effet des distorsions du texte chiffré sur le texte en clair correspondant. À titre de comparaison, notons les fonctions de déchiffrement des blocs pour les deux modes mentionnés :

Gommage;

Gommage avec rétroaction;

Si dans le mode gamma normal, les modifications de certains bits du texte chiffré n'affectent que les bits correspondants du texte en clair, alors dans le mode gamma en boucle fermée, l'image est un peu plus compliquée. Comme on peut le voir à partir de l'équation correspondante, lors du décryptage d'un bloc de données en mode gamma en boucle fermée, le bloc de données ouvert dépend des blocs de données cryptés correspondants et précédents. Par conséquent, si vous introduisez des distorsions dans le bloc crypté, après le décryptage, deux blocs de données ouvertes seront déformés - le correspondant et le suivant, et les distorsions dans le premier cas auront le même caractère que dans le mode gamma, et dans le second cas - comme dans le mode simple remplacement. En d'autres termes, dans le bloc correspondant de données ouvertes, les mêmes bits seront corrompus que dans le bloc de données cryptées, et dans le prochain bloc de données ouvertes, tous les bits sont indépendants les uns des autres avec une probabilité 1 / 2 changeront leurs valeurs.

Développement d'un insert simulé dans un tableau de données.

Dans les sections précédentes, nous avons discuté de l'impact de la falsification des données cryptées sur les données publiques correspondantes. Nous avons constaté que lors du décryptage en mode écrasement simple, le bloc de données ouvertes correspondant s'avère déformé de manière imprévisible, et lors du décryptage d'un bloc en mode gamma, les changements sont prévisibles. En mode gamma en boucle fermée, deux blocs sont déformés, l'un de manière prévisible et l'autre de manière imprévisible. Est-ce à dire que du point de vue de la protection contre l'intrusion de fausses données, le mode gamma est mauvais, et les modes gamma simple remplacement et retour sont bons ? - Dans aucun cas. Lors de l'analyse de cette situation, il est nécessaire de prendre en compte le fait que des changements imprévisibles dans le bloc de données déchiffré ne peuvent être détectés qu'en cas de redondance de ces mêmes données, et plus le degré de redondance est élevé, plus il est probable détecter la distorsion. Une très grande redondance a lieu, par exemple, pour les textes en langues naturelles et artificielles ; dans ce cas, le fait de la distorsion se révèle presque inévitablement. Cependant, dans d'autres cas, par exemple, lors de la distorsion d'images sonores numérisées compressées, nous obtenons simplement une image différente que notre oreille peut percevoir. La distorsion dans ce cas restera non détectée, à moins, bien sûr, qu'il n'y ait aucune information a priori sur la nature du son. La conclusion ici est la suivante : puisque la capacité de certains modes de chiffrement à détecter les distorsions introduites dans les données chiffrées repose essentiellement sur la présence et le degré de redondance des données chiffrées, cette capacité n'est pas une propriété inhérente aux modes correspondants et ne peut être considérée comme leur avantage.

Pour résoudre le problème de la détection des distorsions dans un tableau de données cryptées avec une probabilité donnée, GOST propose un mode supplémentaire de transformation cryptographique - le développement d'un insert d'imitation. L'insertion d'imitation est une combinaison de contrôle qui dépend des données ouvertes et des informations de clé secrète. Le but de l'utilisation d'un insert simulé est de détecter tous les changements accidentels ou délibérés dans le tableau d'informations. Le problème énoncé dans le paragraphe précédent peut être résolu avec succès en ajoutant un faux insert aux données cryptées. Pour un attaquant potentiel, les deux tâches suivantes sont pratiquement insolubles s'il ne possède pas la clé :

  • calcul d'une insertion simulée pour un tableau ouvert d'informations donné ;
  • sélection de données ouvertes pour un taux d'imitation donné ;

Un schéma de l'algorithme de génération d'un insert simulé est présenté à la figure 6.


Figure 6. Algorithme de génération d'un insert simulé pour un tableau de données.

Une partie du bloc reçu en sortie est prise comme insert d'imitation, généralement ses 32 bits de poids faible. Lors du choix de la taille de l'insert d'imitation, il est nécessaire de prendre en compte le fait que la probabilité d'imposition réussie de fausses données est égale à 2 - | je | pour une tentative de force brute, à moins que l'attaquant ne dispose d'une méthode de force brute plus efficace que la simple devinette. Lors de l'utilisation d'un insert d'imitation 32 bits, cette probabilité est

Discussion sur les algorithmes cryptographiques GOST.

Stabilité cryptographique de GOST.

Lors du choix d'un algorithme cryptographique à utiliser dans un développement spécifique, l'un des facteurs déterminants est sa force, c'est-à-dire sa résistance aux tentatives de l'ennemi pour le révéler. À y regarder de plus près, la question de la force du chiffre se résume à deux questions interdépendantes :

  • est-il possible d'ouvrir ce chiffrement ;
  • si oui, à quel point il est difficile de le faire en pratique ;

Les chiffrements qui ne peuvent pas du tout être divulgués sont appelés absolument ou théoriquement stables. L'existence de tels chiffrements est prouvée par le théorème de Shannon, mais le prix de cette force est la nécessité d'utiliser une clé au moins égale à la taille du message lui-même pour chiffrer chaque message. Dans tous les cas, à l'exception d'un certain nombre de chiffres spéciaux, ce prix est excessif. Par conséquent, dans la pratique, des chiffrements qui n'ont pas de force absolue sont principalement utilisés. Ainsi, les schémas de chiffrement les plus courants peuvent être divulgués en un temps fini ou, plus précisément, en un nombre fini d'étapes, dont chacune est une opération sur des nombres. Pour eux, le plus important est le concept de résilience pratique, qui exprime la difficulté pratique de leur divulgation. Une mesure quantitative de cette difficulté peut être le nombre d'opérations arithmétiques et logiques élémentaires qui doivent être effectuées pour découvrir le chiffre, c'est-à-dire pour déterminer le texte clair correspondant pour un texte chiffré donné avec une probabilité non inférieure à une valeur donnée. Dans le même temps, en plus du tableau de données décryptées, le cryptanalyste peut avoir des blocs de données ouvertes et les données cryptées correspondantes, ou même la possibilité d'obtenir les données cryptées correspondantes pour toutes les données ouvertes qu'il choisit - en fonction de la liste et de nombreux d'autres conditions non spécifiées, des types distincts de cryptanalyse sont distingués.

Tous les cryptosystèmes modernes sont construits sur le principe de Kirchhoff, c'est-à-dire que le secret des messages cryptés est déterminé par le secret de la clé. Cela signifie que même si l'algorithme de chiffrement lui-même est connu du cryptanalyste, il est néanmoins incapable de déchiffrer le message s'il ne dispose pas de la clé correspondante. Un chiffrement est considéré comme bien conçu s'il n'y a aucun moyen de le briser d'une manière plus efficace que la force brute sur tout l'espace clé, c'est-à-dire sur toutes les valeurs de clé possibles. GOST correspond probablement à ce principe - au cours des années de recherche intensive, aucune méthode efficace de sa cryptanalyse n'a été proposée. En termes de force, il est de plusieurs ordres de grandeur supérieur à la norme de cryptage américaine précédente, DES.

Dans GOST, une clé de 256 bits est utilisée et l'espace de clé est de 2 256. Aucun des dispositifs électroniques actuellement existants ou devant être mis en œuvre dans un proche avenir ne peut récupérer la clé en moins de plusieurs centaines d'années. Cette valeur est devenue la norme de facto pour la taille de la clé pour les algorithmes de chiffrement symétriques de nos jours - par exemple, la nouvelle norme de cryptage américaine la prend également en charge. L'ancien standard américain, DES, avec sa taille de clé réelle de 56 bits et un espace de clé de seulement 2 56 n'est plus suffisamment puissant au regard des capacités des installations informatiques modernes. Cela a été démontré à la fin des années 90 par plusieurs attaques par force brute réussies sur DES. De plus, DES a été exposé à des techniques de cryptanalyse spéciales telles que différentielle et linéaire. À cet égard, le DES peut présenter un intérêt scientifique ou scientifique plutôt que pratique. En 1998, sa faiblesse cryptographique a été officiellement reconnue - le National Standards Institute des États-Unis a recommandé d'utiliser un cryptage triple sur DES. Et fin 2001, une nouvelle norme de cryptage américaine, AES, a été officiellement approuvée, construite sur des principes différents et exempte des défauts de son prédécesseur.

Notes sur l'architecture de GOST.

Il est bien connu que la norme de chiffrement domestique est représentative de toute une famille de chiffrements, construits sur les mêmes principes. Son « parent » le plus connu est l'ancienne norme de cryptage américaine, l'algorithme DES. Tous ces chiffrements, comme GOST, contiennent des algorithmes à trois niveaux. Il repose toujours sur une certaine "étape de base", sur la base de laquelle des "cycles de base" sont construits de manière similaire, et déjà sur leur base des procédures pratiques de cryptage et de développement d'un insert d'imitation sont construits. Ainsi, la spécificité de chacun des chiffrements de cette famille réside précisément dans sa démarche principale, plus précisément, voire dans sa partie. Bien que l'architecture des chiffrements par blocs classiques, à laquelle appartient GOST, dépasse de loin le cadre de cet article, cela vaut la peine d'en dire quelques mots.

Les algorithmes des « étapes de base de la crypto-transformation » pour les chiffrements comme GOST sont construits de manière identique, et cette architecture est appelée réseau Feistel équilibré (réseau Feistel équilibré) du nom de la personne qui l'a proposé en premier. Schéma de transformation des données en un cycle, ou, comme on l'appelle communément, tour , est illustré à la figure 7.


Figure 7. Contenu de l'étape principale de la crypto-transformation pour les chiffrements par blocs comme GOST.

Un bloc de taille égale est envoyé à l'entrée de l'étape principale, dont les moitiés haute et basse sont traitées séparément l'une de l'autre. Lors de la transformation, la moitié inférieure du bloc est placée à la place du bloc supérieur, et la moitié supérieure, combinée à l'aide de l'opération au niveau du bit " exclusif ou »Avec le résultat du calcul d'une fonction, à la place de la plus jeune. Cette fonction, prenant comme argument la moitié inférieure du bloc et un élément d'information clé ( X), est une partie significative du chiffre et s'appelle fonction de cryptage ... Pour diverses raisons, il s'est avéré avantageux de diviser le bloc chiffré en deux parties de même taille : | N 1 |=|N 2 | - ce fait se reflète dans le mot "équilibré" dans le nom de l'architecture. Cependant, des réseaux de cryptage asymétriques sont également utilisés de temps en temps, mais pas aussi souvent que les réseaux équilibrés. De plus, des considérations sur la force du chiffrement exigent que la taille de l'élément clé ne soit pas inférieure à la taille d'un demi-bloc : dans GOST, les trois tailles sont égales à 32 bits .

Si nous appliquons ce qui précède au schéma de l'étape principale de l'algorithme GOST, il deviendra évident que les blocs 1, 2, 3 de l'algorithme (voir Fig. 1) déterminent le calcul de sa fonction de cryptage, et les blocs 4 et 5 spécifier la formation du bloc de sortie de l'étape principale en fonction du contenu du bloc d'entrée et des valeurs de la fonction de chiffrement. Plus de détails sur les architectures des chiffrements par blocs modernes avec une clé secrète peuvent être trouvés dans les travaux classiques, ou, sous une forme adaptée, dans mes travaux.

Dans la section précédente, nous avons déjà comparé DES et GOST en termes de sécurité, nous allons maintenant les comparer en termes de contenu fonctionnel et de facilité de mise en œuvre. Dans les cycles de cryptage GOST, l'étape principale est répétée 32 fois, pour DES, cette valeur est de 16. Cependant, la fonction de cryptage GOST elle-même est beaucoup plus simple que la fonction DES analogue, dans laquelle il existe de nombreuses permutations de bits irrégulières. Ces opérations sont extrêmement inefficaces dans les processeurs modernes non spécialisés. GOST ne contient pas de telles opérations, il est donc beaucoup plus pratique pour la mise en œuvre du logiciel.

Aucune des implémentations DES envisagées par l'auteur pour la plate-forme Intel x86 n'atteint la moitié des performances de l'implémentation GOST proposée à votre attention dans cet article, malgré le cycle deux fois plus court. Tout ce qui précède indique que les développeurs de GOST ont pris en compte à la fois les aspects positifs et négatifs du DES et ont également évalué de manière plus réaliste les possibilités actuelles et prometteuses de la cryptanalyse. Cependant, il n'est plus pertinent de se baser sur DES pour comparer les performances des implémentations de chiffrement. La nouvelle norme de cryptage américaine s'en sort bien mieux en termes d'efficacité - avec la même taille de clé de 256 bits que dans GOST, AES est environ 14% plus rapide qu'elle - par rapport au nombre d'"opérations élémentaires". De plus, GOST est pratiquement impossible à paralléliser et AES a beaucoup plus de capacités à cet égard. Sur certaines architectures, cet avantage de l'AES peut être moindre, sur d'autres il peut être plus. Ainsi, sur un processeur Intel Pentium, il atteint 28%. Les détails peuvent être trouvés dans.

Exigences de qualité pour les informations clés et les sources clés.

Toutes les clés et tables de remplacement ne fournissent pas une force de chiffrement maximale. Chaque algorithme de chiffrement a ses propres critères d'évaluation des informations clés. Ainsi, pour l'algorithme DES, l'existence de ce qu'on appelle « touches faibles ”, Lors de l'utilisation de laquelle la connexion entre les données ouvertes et cryptées n'est pas suffisamment masquée et le chiffrement est relativement facile à rompre.

Une réponse exhaustive à la question sur les critères de qualité des clés et des tables de remplacement GOST, si elle peut être obtenue n'importe où, alors uniquement auprès des développeurs de l'algorithme. Les données pertinentes n'ont pas été publiées dans la presse ouverte. Cependant, selon la procédure établie, les données clés reçues d'un organisme autorisé doivent être utilisées pour crypter les informations qui ont un cachet. Indirectement, cela peut indiquer l'existence de méthodes pour vérifier les données clés pour les " poux ". Si la présence de clés faibles dans GOST est un problème discutable, la présence de nœuds de remplacement faibles ne fait aucun doute. De toute évidence, la table "triviale" des substitutions, selon laquelle toute valeur est remplacée par elle-même, est si faible qu'en l'utilisant, le chiffre est simplement cassé, quelle que soit la clé.

Comme indiqué ci-dessus, les critères d'évaluation des informations clés ne sont pas disponibles, mais certaines considérations générales peuvent encore être formulées à leur sujet.

Clé

La clé doit être un tableau de bits statistiquement indépendants qui prennent les valeurs 0 et 1 avec une probabilité égale. Il ne peut pas être complètement exclu que certaines valeurs de clé spécifiques puissent être "faibles", c'est-à-dire que le chiffrement ne puisse pas fournir un niveau de sécurité donné s'ils sont utilisés. Cependant, on peut supposer que la part de ces valeurs dans la masse totale de toutes les clés possibles est négligeable. Au moins, des études intensives du chiffrement n'ont pas encore révélé une telle clé pour l'une des tables de remplacement connues (c'est-à-dire proposées par FAPSI). Par conséquent, les clés générées à l'aide d'un générateur de nombres vraiment aléatoires seront qualitatives avec une probabilité qui diffère de un d'une quantité négligeable. Si les clés sont générées à l'aide d'un générateur de nombres pseudo-aléatoires, le générateur utilisé doit fournir les caractéristiques statistiques ci-dessus et, en outre, avoir une résistance cryptographique élevée, non inférieure à celle du GOST lui-même. En d'autres termes, le problème de la détermination des membres manquants de la séquence d'éléments générés par le générateur ne devrait pas être plus simple que le problème de la rupture du chiffre. De plus, divers critères statistiques peuvent être utilisés pour rejeter les clés présentant de mauvaises caractéristiques statistiques. En pratique, deux critères sont généralement suffisants - le test de Pearson ("chi carré") est généralement utilisé pour vérifier la distribution équiprobable des bits de clé entre les valeurs 0 et 1, et le test d'exécution est utilisé pour vérifier l'indépendance de les bits clés. Vous pouvez lire les critères mentionnés dans des manuels ou des ouvrages de référence sur les statistiques mathématiques.

La meilleure approche pour générer des clés serait d'utiliser des capteurs matériels de milieu de gamme, mais cela n'est pas toujours acceptable pour des raisons économiques. Lors de la génération d'un petit volume d'informations clés, une alternative raisonnable à l'utilisation d'un tel capteur est et est largement utilisée dans la pratique la méthode de la « roulette électronique », lorsque la prochaine partie générée de bits aléatoires dépend du temps pendant lequel l'opérateur appuie sur un touche du clavier de l'ordinateur. Dans ce schéma, la source des données aléatoires est l'utilisateur de l'ordinateur, plus précisément les caractéristiques temporelles de sa réaction. Dans ce cas, seuls quelques bits de données aléatoires peuvent être générés en une seule frappe, par conséquent, le taux global de génération d'informations de clé est faible, jusqu'à plusieurs bits par seconde. Évidemment, cette approche n'est pas adaptée à l'obtention de grands tableaux de clés.

Dans le cas où il est nécessaire de générer un volume important d'informations clés, il est possible et très répandu d'utiliser différents capteurs logiciels pour des nombres pseudo-aléatoires. Étant donné qu'un tel capteur nécessite une résistance cryptographique élevée, il est naturel d'utiliser le générateur gamma du chiffrement lui-même - nous "coupons" simplement le gamma généré par le chiffrement en "morceaux" de la taille requise, pour GOST - 32 octets chacun . Bien entendu, pour une telle approche, nous avons besoin d'une "clé maîtresse", que nous pouvons obtenir en utilisant la méthode de la roulette électronique décrite ci-dessus, et avec son aide, en utilisant le chiffrement dans le mode du générateur gamma, nous obtenons un tableau de clés informations sur le volume requis. Ainsi, ces deux manières de générer des clés - "manuelle" et "algorithmique" - fonctionnent en tandem, se complétant l'une l'autre. Les schémas de génération de clés dans les systèmes de protection cryptographique de l'information « à petit budget » sont presque toujours construits sur ce principe.

Table de remplacement

La table de remplacement est un élément clé à long terme, c'est-à-dire qu'elle est valable pour une période beaucoup plus longue qu'une seule clé. On suppose qu'il est commun à tous les nœuds de chiffrement au sein d'un même système de protection cryptographique. Même si la confidentialité de la table de substitution est violée, la force du chiffrement reste extrêmement élevée et ne descend pas en dessous de la limite acceptable. Par conséquent, il n'est pas particulièrement nécessaire de garder la table secrète, et dans la plupart des applications commerciales de GOST, c'est ainsi que cela se fait. D'autre part, la table de substitution est un élément critique pour assurer la solidité de l'ensemble du chiffrement. Le choix de la mauvaise table peut entraîner la rupture du chiffrement par les techniques de cryptanalyse connues. Les critères de développement des nœuds de remplacement sont un secret derrière sept sceaux et il est peu probable que FAPSI les partage avec le public dans un avenir proche. En fin de compte, décider si une table de substitution donnée est bonne ou mauvaise nécessite une énorme quantité de travail - plusieurs milliers d'heures homme et machine. Une fois sélectionnée et utilisée, la table doit être remplacée si et seulement si le chiffre avec son utilisation s'avère vulnérable à l'un ou l'autre type de cryptanalyse. Par conséquent, le meilleur choix pour l'utilisateur moyen du chiffrement serait de prendre l'une des nombreuses tables qui sont devenues publiques. Par exemple, d'après la norme pour la fonction de hachage, c'est aussi « banque centrale » ; des informations sur ces tableaux peuvent être trouvées dans la presse ouverte et même sur Internet si vous recherchez bien.

Pour ceux qui ne sont pas habitués à la facilité, voici un schéma général pour obtenir des tables de qualité :

  1. En utilisant une méthode ou une autre, vous développez un ensemble de huit nœuds de remplacement avec des caractéristiques de non-linéarité garanties. Il existe plusieurs de ces techniques, l'une d'entre elles est l'utilisation des fonctions dites courbées.
  2. Vérifiez que les « critères de qualité » les plus simples sont respectés, tels que ceux publiés pour les nœuds de remplacement DES. Voici quelques considérations plus générales : Chaque nœud de substitutions peut être décrit par quatre fonctions logiques à partir de quatre arguments logiques. Si ces fonctions écrites en forme minimale(c'est-à-dire avec la longueur d'expression minimale possible) ne sont pas assez complexes, un tel nœud de remplacement est rejeté. De plus, les fonctions individuelles dans l'ensemble de la table de substitution doivent être suffisamment différentes les unes des autres. A ce stade, de nombreuses tables délibérément de mauvaise qualité sont éliminées.
  3. Pour le chiffrement avec les tables de votre choix, construisez différents modèles ronds correspondant à différents types de cryptanalyse, et mesurez les caractéristiques "profil" correspondantes. Ainsi, pour la cryptanalyse linéaire, construisez un analogue statistique linéaire du cycle de cryptage et calculez la caractéristique "profil" - l'indicateur de non-linéarité. S'il s'avère insuffisant, la table de remplacement est rejetée.
  4. Enfin, en utilisant les résultats du paragraphe précédent, vous soumettez le chiffrement avec la table de votre choix à une recherche intensive - une tentative de cryptanalyse par toutes les méthodes connues. Cette étape est la plus difficile et la plus longue. Mais s'il est de haute qualité, alors avec un degré de probabilité élevé, on peut affirmer que le chiffre avec les tables que vous avez choisies ne sera pas brisé par de simples mortels, et, peut-être, il sera trop dur pour les services spéciaux .

Vous pouvez cependant faire beaucoup plus facilement. Le fait est que plus il y a de tours dans le chiffrement, moins les caractéristiques de force d'un tour ont une influence sur la force de l'ensemble du chiffrement. Il y a jusqu'à 32 tours dans GOST - plus que dans presque tous les chiffrements avec une architecture similaire. Par conséquent, pour la plupart des applications domestiques et commerciales, il suffit d'obtenir des nœuds de substitution sous forme de permutations aléatoires indépendantes de nombres de 0 à 15. Cela peut être mis en œuvre de manière pratique, par exemple, en mélangeant un jeu de seize cartes, chacune étant affectée d'une des valeurs de la plage spécifiée.

Un autre fait intéressant doit être noté concernant le tableau de substitution. Pour la réversibilité des cycles de chiffrement "32-З" et "32-Р", il n'est pas nécessaire que les nœuds de remplacement soient des permutations de nombres de 0 à 15. Tout fonctionne même s'il y a des éléments en double dans le nœud de remplacement, et le remplacement déterminé par un tel nœud , irréversible - cependant, dans ce cas, la force du chiffre diminue. Pourquoi il en est ainsi n'est pas considéré dans cet article, mais il n'est pas difficile d'être convaincu du fait lui-même. Pour ce faire, il suffit d'essayer d'abord de chiffrer puis de déchiffrer le bloc de données à l'aide d'une telle table de remplacement « défectueuse », dont les nœuds contiennent des valeurs en double.

Variations sur GOST

Très souvent, pour une utilisation dans un système de protection des données cryptographiques, un algorithme avec une vitesse de mise en œuvre plus rapide que celle de GOST est requis, et en même temps une telle force cryptographique n'est pas requise. Un exemple typique de telles tâches sont les différents types de systèmes de négociation d'échange électroniques qui gèrent les sessions de négociation en temps réel. Ici, les algorithmes de cryptage utilisés sont requis pour qu'il soit impossible de décrypter les données opérationnelles du système pendant la session (données sur les commandes soumises, sur les transactions conclues, etc.), après son expiration, ces données sont généralement déjà inutiles pour les intrus. . En d'autres termes, seules quelques heures de durabilité garantie sont nécessaires - c'est la durée typique d'une session de trading. Il est clair que l'utilisation d'un GOST à ​​part entière dans cette situation tirerait un coup de canon sur des moineaux.

Que faire dans ce cas et dans des cas similaires pour augmenter la vitesse de cryptage ? La réponse se trouve à la surface - utiliser une modification du chiffrement avec moins d'étapes de base (tours) dans les cycles de base. Le nombre de fois que nous réduisons le nombre de tours de chiffrement, le même nombre de fois que les performances augmentent. Le changement indiqué peut être obtenu de deux manières - en diminuant la longueur de la clé et en diminuant le nombre de « cycles de balayage » de la clé. N'oubliez pas que le nombre d'étapes de base dans les boucles de chiffrement de base est N=n m, où m- le nombre d'éléments 32 bits dans la clé, m- le nombre de cycles d'utilisation des éléments clés, dans la norme m=8, m= 4. Vous pouvez diminuer n'importe lequel de ces nombres, mais l'option la plus simple consiste à diminuer la longueur de la clé sans affecter le schéma de son utilisation.

Il est clair que le prix à payer pour accélérer le travail sera une diminution de la puissance du chiffre. La principale difficulté réside dans le fait qu'il est assez difficile d'estimer plus ou moins précisément l'ampleur de cette diminution. Évidemment, la seule façon possible de le faire est de mener une étude de variantes du chiffrement avec des cycles réduits de transformation cryptographique "en totalité". Il est clair que, d'une part, cela nécessite l'utilisation d'informations fermées, qui n'appartiennent qu'aux développeurs de GOST, et, d'autre part, c'est très laborieux. Par conséquent, nous allons maintenant essayer de donner une évaluation, très, très grossière, basée uniquement sur des lois générales.

Quant à la résistance du chiffrement à la rupture par des méthodes "extensives", c'est-à-dire à une attaque "exhaustive", tout est ici plus ou moins clair : une clé 64 bits est quelque part à la limite de l'accessibilité à ce type d'attaque , un chiffrement avec une clé de 96 bits et plus (rappelez-vous que la clé doit contenir un nombre entier d'éléments de 32 bits) est assez robuste contre lui. En effet, il y a quelques années, l'ancienne norme de cryptage américaine, DES, a été piratée à plusieurs reprises par force brute - d'abord par un réseau informatique organisé sur la base de l'Internet mondial, puis par un réseau spécialisé, c'est-à-dire un ordinateur spécialement conçu pour cela. Supposons que la version standard de GOST, lorsqu'elle est implémentée dans un logiciel sur des processeurs modernes, est quatre fois plus rapide que DES. Ensuite, le "GOST réduit" à 8 tours fonctionnera 16 fois plus vite que DES. Supposons également que depuis le craquage de DES, les performances de calcul ont quadruplé conformément à la loi de Moore. En conséquence, nous obtenons que maintenant la vérification d'une clé de 64 bits pour le "GOST réduit" avec huit cycles est effectuée 64 fois plus rapidement que la vérification d'une clé DES a été effectuée en temps voulu. Ainsi, l'avantage de cette version de GOST sur DES en termes de complexité de l'attaque exhaustive est réduit de 2 64–56 = 2 8 = 256 à 256 / 64 = 4 fois. D'accord, c'est une différence très illusoire, presque rien.

Il est beaucoup plus difficile d'évaluer la résistance des modifications affaiblies de GOST aux méthodes "intensives" de cryptanalyse. Cependant, un schéma général peut également être tracé ici. Le fait est que les caractéristiques de "profil" de bon nombre des types de cryptanalyse actuellement les plus puissants dépendent de manière exponentielle du nombre de tours de cryptage. Ainsi, pour la cryptanalyse linéaire (LCA), ce sera la caractéristique de linéarité L :

C et sont des constantes, R est le nombre de tours. Une relation similaire existe pour la cryptanalyse différentielle. Selon leur "signification physique", toutes les caractéristiques de ce genre sont des probabilités. Habituellement, la quantité de données initiales requises pour la cryptanalyse et son intensité de travail sont inversement proportionnelles à ces caractéristiques. Il s'ensuit que ces indicateurs d'intensité de travail croissent de façon exponentielle avec la croissance du nombre d'étapes de cryptage de base. Par conséquent, avec une diminution du nombre de tours de plusieurs fois, l'intensité de travail des types d'analyse les plus connus changera comme, - très grossièrement et grossièrement, - la racine de ce degré par rapport au nombre initial. Il s'agit d'une très grosse baisse d'endurance.

D'autre part, GOST a été conçu avec une grande marge de sécurité et résiste aujourd'hui à tous les types connus de cryptanalyse, y compris différentielle et linéaire. En ce qui concerne l'ACV, cela signifie que pour sa mise en œuvre réussie, il faut plus de couples "bloc ouvert - bloc chiffré" qu'il n'en existe dans la nature, c'est-à-dire plus de 2 64. Compte tenu de ce qui précède, cela signifie que pour un ACV réussi, GOST à ​​16 tours nécessitera au moins des blocs ou 2 35 octets ou 32 Go de données, et pour un 8 tours, au moins des blocs ou 2 19 octets ou 0,5 Mo .

Les conclusions de tout ce qui a été dit ci-dessus sont présentées dans le tableau suivant, qui résume les caractéristiques des versions réduites de GOST.

Nombre de tours Taille de clé, peu Indice d'action rapide Caractéristiques probables du chiffrement (estimation très approximative)
24 192 1,33 Résistant à la plupart des types d'engins spatiaux connus, ou être au bord de la stabilité. La mise en œuvre pratique de l'engin spatial est impossible en raison des exigences élevées en matière de données initiales et d'intensité de travail.
16 128 2 Théoriquement instable pour certains types de cryptanalyse, cependant, leur mise en œuvre pratique est dans la plupart des cas difficile en raison des exigences élevées en matière de données initiales et d'intensité de travail.
12 95 2,67 Il n'est pas résistant à certains types de cryptanalyse connus, mais il est adapté pour assurer le secret de petites quantités de données (jusqu'à des dizaines à des centaines de Ko) pendant une courte période.
8 64 4 Il n'est pas résistant à certains types de cryptanalyse connus, mais il est adapté pour assurer le secret de petites quantités de données (jusqu'à des dizaines de Ko) pendant une courte période.

Les deux dernières options, avec 12 et 8 tours, sont capables de fournir une protection dans le temps très, très limitée. Leur utilisation n'est justifiée que dans des tâches où seul le secret à court terme des données en cours de fermeture est requis, de l'ordre de plusieurs heures. Un domaine d'application possible pour ces options de chiffrement faibles est la fermeture du trafic UDP des systèmes de négociation d'échange électronique. Dans ce cas, chaque paquet de données (datagramme, "D" central de l'abréviation UDP) est chiffré sur une clé distincte de 64 bits, et la clé elle-même est chiffrée sur la clé de session (une clé dont la portée est une session de communication entre deux ordinateurs) et est transmise avec des données.

Avant de terminer avec les versions réduites de GOST, je dirai que toutes les considérations ci-dessus sont hautement spéculatives. La norme offre une durabilité pour une seule variation de 32 tours. Et personne ne peut vous garantir que la résistance des variantes réduites du chiffrement au craquage changera de la manière indiquée ci-dessus. Si vous décidez malgré tout de les utiliser dans vos développements, n'oubliez pas que vous avez marché sur un terrain très branlant, qui peut à tout moment vous dérober sous vos pieds. Étant donné que la vitesse de chiffrement est essentielle pour vous, vous devriez peut-être envisager d'utiliser un chiffrement plus rapide ou un ordinateur plus puissant ? Une autre considération pour laquelle cela devrait être fait est que les versions affaiblies de GOST seront aussi sensibles que possible à la qualité des nœuds de remplacement utilisés.

La question à l'étude a un inconvénient. Que faire si la vitesse de cryptage n'est pas critique et les exigences de sécurité sont très strictes ? Il existe deux façons d'augmenter la résistance GOST - appelons-les "extensives" et "intensives". Le premier n'est rien de plus qu'une simple augmentation du nombre de tours de chiffrement. Je ne comprends pas tout à fait pourquoi cela pourrait être vraiment nécessaire, car la norme nationale offre la durabilité nécessaire sans elle. Cependant, si vous souffrez de paranoïa plus que le niveau requis (et tous les "défenseurs de l'information" sont simplement obligés d'en souffrir, c'est la condition d'aptitude professionnelle, la question n'est que dans la gravité du cas :), ce vous aidera à vous calmer un peu. Si vous n'êtes pas sûr de ce chiffrement KGB ou de la table de substitution que vous utilisez, doublez, quadruplez simplement, etc. nombre de tours - sélectionnez la multiplicité en fonction de la gravité de votre cas. Cette approche vous permet d'augmenter vraiment la force du chiffrement - si la cryptanalyse précédente était tout simplement impossible, maintenant c'est impossible au carré !

Une question plus délicate et intéressante est de savoir s'il est possible d'augmenter la force du chiffrement sans changer le nombre et la structure des étapes de chiffrement de base. Étonnamment, la réponse à cette question est oui, bien que nous marchions à nouveau sur le terrain instable de la spéculation. Le fait est que dans GOST, à l'étape de conversion principale, il est censé remplacer 4 par 4 bits, mais en pratique (nous en parlerons encore plus tard) toutes les implémentations logicielles effectuent le remplacement octet par octet, c'est-à-dire 8 par 8 bits - ceci est fait pour des raisons d'efficacité. Si nous concevons immédiatement un tel remplacement en tant que 8 bits, nous améliorerons considérablement les caractéristiques d'un tour. Premièrement, la caractéristique de "diffusion" ou l'indicateur "d'avalanche" augmentera - un bit des données d'origine et / ou la clé affectera plus de bits du résultat. Deuxièmement, pour les grands nœuds de remplacement, il est possible d'obtenir des caractéristiques différentielles et linéaires plus faibles, réduisant ainsi la sensibilité du chiffrement aux mêmes types de cryptanalyse. Cela est particulièrement vrai pour les cycles GOST réduits, et pour les options à 8 et 12 tours, une telle étape est simplement nécessaire. Cela compensera quelque peu la perte d'endurance en eux due à une diminution du nombre de tours. Ce qui rend difficile l'utilisation de cette technique, c'est que vous devrez concevoir vous-même de telles unités de remplacement « agrandies ». Et aussi le fait que les nœuds plus gros sont généralement beaucoup plus difficiles à concevoir que les plus petits.

Utilisation non standard de la norme.

Bien sûr, l'objectif principal des crypto-algorithmes GOST est le cryptage des données et la protection contre les imitations. Cependant, ils peuvent trouver d'autres applications, naturellement liées à la sécurité de l'information. Parlons brièvement d'eux :

1. Pour le cryptage en mode gamma, GOST prévoit le développement d'une gamme cryptographique - une séquence de bits avec de bonnes caractéristiques statistiques et une force cryptographique élevée. De plus, cette gamme est utilisée pour modifier les données ouvertes, ce qui entraîne des données cryptées. Cependant, ce n'est pas la seule application possible de la gamme cryptographique. Le fait est que l'algorithme pour le générer est un générateur de séquences de nombres pseudo-aléatoires (PRNG) avec d'excellentes caractéristiques. Bien sûr, il n'est pas très raisonnable d'utiliser un tel GPPC où seule l'obtention des caractéristiques statistiques de la séquence générée est requise, et la force cryptographique n'est pas nécessaire, ce n'est pas très raisonnable - pour ces cas, il existe des générateurs beaucoup plus efficaces. Mais pour diverses applications liées à la sécurité de l'information, une telle source sera très utile :

  • Comme indiqué ci-dessus, la gamme peut être utilisée comme « matière première » pour la fabrication de clés. Pour ce faire, il vous suffit d'obtenir un segment gamma de la longueur requise - 32 octets. De cette façon, les clés peuvent être produites selon les besoins et n'ont pas besoin d'être stockées - si une telle clé est à nouveau nécessaire, il sera assez facile de la générer à nouveau. Il suffira de se rappeler sur quelle clé elle a été développée à l'origine, quel message de synchronisation a été utilisé et à partir de quel octet de l'échelle générée la clé a commencé. Toutes les informations, à l'exception de la clé utilisée, ne sont pas classifiées. Cette approche permettra de contrôler facilement un système de clés assez complexe et ramifié à l'aide d'une seule « clé principale ».
  • Semblable au précédent, le gamma peut être utilisé comme matière première pour générer des mots de passe. Ici, la question peut se poser, pourquoi avez-vous besoin de les générer, n'est-il pas plus facile de simplement les inventer au besoin. L'échec de cette approche a été clairement démontré par une série d'incidents sur les réseaux informatiques, dont le plus important a été la paralysie Internet de 24 heures en novembre 1988 causée par le ver Morris. L'un des moyens par lesquels un programme malveillant a pénétré dans un ordinateur était la devinette de mot de passe : le programme a essayé d'entrer dans le système, en essayant séquentiellement les mots de passe de sa liste interne de plusieurs centaines, et dans une proportion importante des cas, il a pu le faire. Le fantasme de l'homme d'inventer des mots de passe s'est avéré très pauvre. C'est pourquoi dans les organisations où la sécurité fait l'objet d'une attention particulière, les mots de passe sont générés et distribués aux utilisateurs par l'administrateur du système de sécurité. La génération de mots de passe est un peu plus difficile que la génération de clés, car dans ce cas, la gamme binaire "brute" doit être convertie en forme symbolique, et pas seulement "coupée" en morceaux. De plus, des valeurs individuelles peuvent devoir être supprimées pour garantir que tous les caractères de l'alphabet apparaissent de manière égale dans le mot de passe.
  • Une autre façon d'utiliser la gamme cryptographique est d'assurer l'effacement des données sur les supports magnétiques. Le fait est que même lors de la réécriture d'informations sur un support magnétique, des traces de données antérieures subsistent, qui peuvent être restituées par l'expertise appropriée. Pour éliminer ces traces, une telle réécriture doit être effectuée plusieurs fois. Il s'est avéré qu'il serait nécessaire de réécrire moins de fois les informations sur le support si, avec une telle procédure, des données aléatoires ou pseudo-aléatoires étaient utilisées, qui resteraient inconnues des experts cherchant à récupérer les informations écrasées. L'échelle du chiffre sera très utile ici.

2. Non seulement la gamme cryptographique, mais aussi la transformation cryptographique elle-même, peuvent être utilisées pour des besoins non directement liés au chiffrement :

  • Nous savons que l'une de ces options pour utiliser GOST est le développement d'un insert simulé pour les tableaux de données. Cependant, sur la base de n'importe quel chiffrement par bloc, y compris GOST, il est assez facile de construire un schéma de calcul d'une fonction de hachage unidirectionnelle, également appelée dans la littérature MDC, qui dans différentes sources signifie changer le code de détection / manipulations (M odification / M annihiler détection C ode) ou résumé de message (M message ingérer C ode). La première transcription est apparue dans la littérature beaucoup plus tôt, la seconde, plus courte, je pense, a été inventée par ceux qui étaient incapables de se souvenir de la première :) - c'était une blague. MDC peut être directement utilisé dans les systèmes d'imitation de sécurité comme un analogue d'un insert d'imitation, qui, cependant, ne dépend pas de la clé secrète. De plus, MDC est largement utilisé dans les schémas de signature numérique électronique (EDS), car la plupart de ces schémas sont conçus de telle manière qu'il est pratique de signer un bloc de données d'une taille fixe. Comme vous le savez, sur la base de la norme discutée GOST 28147-89, la norme de la Fédération de Russie pour le calcul de la fonction de hachage unidirectionnelle GOST R34.11-94 est construite.
  • Il est moins connu que sur la base de n'importe quel chiffrement par bloc, y compris GOST, un schéma EDS complètement fonctionnel peut être construit, avec une clé de signature secrète et une combinaison de vérification ouverte. Pour un certain nombre de raisons, ce schéma n'a pas été largement utilisé dans la pratique, mais dans certains cas, il peut encore être considéré comme une alternative très intéressante aux schémas EDS "mathématiques" actuellement dominants dans le monde.

Littérature

Systèmes de traitement de l'information. Protection cryptographique. Algorithme de transformation cryptographique GOST 28147-89. État Com. URSS selon les normes, M., 1989. ftp://ftp.wtc-ural.ru/pub/ru.crypt/GOST-28147
Shannon Claude. Théorie mathématique des systèmes secrets. Dans la collection "Travaux sur la théorie de l'information et la cybernétique", M., IL, 1963, p. 333-369. http://www.enlight.ru/crypto/articles/shannon/shann__i.htm
Annonce de l'approbation de la norme FIPS (Federal Information Processing Standard) 197, Advanced Encryption Standard (AES), Federal Register Vol. 66, non. 235 / Jeudi 6 décembre 2001 / Avis, pp 63369-63371. http://csrc.nist.gov/encryption/aes/
Feistel Horst. Cryptographie et sécurité informatique. Traduit par A. Vinokourov, publié par Horst Feistel. Cryptographie et confidentialité informatique, Scientific American, mai 1973, vol. 228, n° 5, p. 15-23. http://www.enlight.ru/crypto/articles/feistel/feist_i.htm
Schneier Bruce. Cryptographie appliquée. 2e éd. Protocoles, algorithmes et codes sources en langage C., M., "Triumph", 2002 http://www.ssl.stu.neva.ru/psw/crypto/appl_rus/appl_cryp.htm
Menezes Alfred, van Oorschot Paul, Vanstone Scott. Manuel de cryptographie appliquée. ttp : //www.cacr.math.uwaterloo.ca/hac/
Vinokourov Andreï. Comment fonctionne un chiffrement par bloc ? Manuscrit. http://www.enlight.ru/crypto/articles/vinokurov/blcyph_i.htm
Vinokourov Andreï. Problèmes cryptographiques pour iNFUSED BYTES en ligne. http://www.enlight.ru/crypto/articles/ib/ib.htm
Vinokourov Andrey, Primenko Eduard. Texte du rapport "Sur la mise en œuvre logicielle des normes de chiffrement dans la Fédération de Russie et aux États-Unis", conférence sur l'informatisation, Moscou, MEPhI, 28-29 janvier 2001. Publié dans les actes de la conférence.
Informatique. Protection des informations cryptographiques. Fonction de hachage GOST R34.11-94, Gosstandart RF, M., 1994.



Vous avez aimé l'article ? Partagez-le