Cryptage moderne. Algorithmes de cryptage modernes. Regardons les nouveaux modes

Sergueï Panasenko,
Responsable du département développement logiciel chez Ankad,
[email protégé]

Concepts de base

Le processus de conversion de données ouvertes en données cryptées et vice versa est généralement appelé cryptage, et les deux composants de ce processus sont appelés respectivement cryptage et déchiffrement. Mathématiquement, cette transformation est représentée par les dépendances suivantes qui décrivent les actions avec les informations d'origine :

C = Ek1(M)

M" = Dk2(C),

où M (message) est une information ouverte (dans la littérature sur la sécurité de l'information, elle est souvent appelée « texte source ») ;
C (texte chiffré) - le texte chiffré (ou cryptogramme) obtenu à la suite du cryptage ;
E (cryptage) - une fonction de cryptage qui effectue des transformations cryptographiques sur le texte source ;
k1 (clé) - paramètre de la fonction E, appelé clé de cryptage ;
M" - informations obtenues à la suite du décryptage ;
D (déchiffrement) - fonction de décryptage qui effectue des transformations cryptographiques inverses sur le texte chiffré ;
k2 est la clé utilisée pour décrypter les informations.

Le concept de « clé » dans la norme GOST 28147-89 (algorithme cryptage symétrique) est défini comme suit : « un état secret spécifique de certains paramètres de l'algorithme de transformation cryptographique, assurant la sélection d'une transformation parmi un ensemble de transformations possibles pour de cet algorithme transformations." En d'autres termes, la clé est un élément unique avec lequel vous pouvez modifier les résultats de l'algorithme de cryptage : le même texte source sera crypté différemment lors de l'utilisation de clés différentes.

Pour que le résultat du décryptage corresponde au message d'origine (c'est-à-dire pour M" = M), deux conditions doivent être remplies simultanément. Premièrement, la fonction de décryptage D doit correspondre à la fonction de cryptage E. Deuxièmement, la clé de décryptage k2 doit correspondre au cryptage. clé k1.

Si un algorithme de cryptage cryptographiquement fort a été utilisé pour le cryptage, alors en l'absence de la clé k2 correcte, il est impossible d'obtenir M" = M. La force cryptographique est la principale caractéristique des algorithmes de cryptage et indique principalement le degré de complexité d'obtention de l'original. texte à partir d'un texte crypté sans clé k2.

Les algorithmes de chiffrement peuvent être divisés en deux catégories : symétriques et cryptage asymétrique. Pour le premier, le rapport entre les clés de cryptage et de déchiffrement est défini comme k1 = k2 = k (c'est-à-dire que les fonctions E et D utilisent la même clé de cryptage). Dans le chiffrement asymétrique, la clé de chiffrement k1 est calculée à partir de la clé k2 de telle sorte que conversion inverse impossible, par exemple, en utilisant la formule k1 = ak2 mod p (a et p sont les paramètres de l'algorithme utilisé).

Cryptage symétrique

Les algorithmes de cryptage symétriques remontent à l'Antiquité : c'est cette méthode de dissimulation d'informations qui a été utilisée par l'empereur romain Gaius Julius Caesar au 1er siècle avant JC. e., et l’algorithme qu’il a inventé est connu sous le nom de « cryptosystème César ».

Actuellement l’algorithme le plus connu est l’algorithme symétrique Chiffrement DES(Data Encryption Standard), développé en 1977. Jusqu'à récemment, il s'agissait d'une « norme américaine », puisque le gouvernement de ce pays recommandait son utilisation pour la mise en œuvre. divers systèmes cryptage des données. Bien qu'il était initialement prévu que le DES ne soit utilisé que pendant 10 à 15 ans, les tentatives pour le remplacer n'ont commencé qu'en 1997.

Nous ne couvrirons pas le DES en détail (presque tous les livres de la liste matériaux supplémentaires mange-le description détaillée), et passons à des algorithmes de chiffrement plus modernes. Il convient seulement de noter que la principale raison du changement de norme de cryptage est sa force cryptographique relativement faible, la raison en est que la longueur de la clé DES n'est que de 56. bits significatifs. Il est connu que tout algorithme de chiffrement puissant peut être déchiffré en essayant toutes les clés de chiffrement possibles (la méthode dite de force brute - force brute attaque). Il est facile de calculer qu'un cluster de 1 million de processeurs, chacun calculant 1 million de clés par seconde, vérifiera 256 variantes de clés DES en près de 20 heures et depuis, selon les normes actuelles, telles. puissance de calcul sont bien réels, il est clair que la clé de 56 bits est trop courte et que l'algorithme DES doit être remplacé par un algorithme plus puissant.

Aujourd'hui, deux algorithmes de cryptage forts modernes sont de plus en plus utilisés : la norme nationale GOST 28147-89 et la nouvelle norme de cryptage américaine - AES (Advanced Encryption Standard).

Norme GOST 28147-89

L'algorithme défini par GOST 28147-89 (Fig. 1) a une longueur de clé de cryptage de 256 bits. Il crypte les informations en blocs de 64 bits (ces algorithmes sont appelés algorithmes de blocs), qui sont ensuite divisés en deux sous-blocs de 32 bits (N1 et N2). Le sous-bloc N1 est traité d'une certaine manière, après quoi sa valeur est ajoutée à la valeur du sous-bloc N2 (l'addition est effectuée modulo 2, c'est-à-dire opération logique XOR - "ou exclusif"), puis les sous-blocs sont échangés. Cette transformation est effectué un certain nombre de fois (« tours ») : 16 ou 32, selon le mode de fonctionnement de l'algorithme. A chaque tour, deux opérations sont effectuées.

Le premier est la saisie. Le contenu du sous-bloc N1 est additionné modulo 2 avec la partie 32 bits de la clé Kx. Clé complète le cryptage est représenté comme une concaténation de sous-clés de 32 bits : K0, K1, K2, K3, K4, K5, K6, K7. Lors du processus de cryptage, l'une de ces sous-clés est utilisée, en fonction du numéro de tour et du mode de fonctionnement de l'algorithme.

La deuxième opération est le remplacement de la table. Après codage, le sous-bloc N1 est divisé en 8 parties de 4 bits dont la valeur de chacune est remplacée conformément au tableau de remplacement de cette partie du sous-bloc. Le sous-bloc subit ensuite une rotation de 11 bits vers la gauche.

Remplacements de tables(Boîte de substitution - S-box) sont souvent utilisés dans les algorithmes de cryptage modernes, il convient donc d'expliquer comment une telle opération est organisée. Les valeurs de sortie des blocs sont enregistrées dans le tableau. Un bloc de données d'une certaine dimension (dans notre cas - 4 bits) a le sien représentation numérique

, qui spécifie le numéro de la valeur de sortie. Par exemple, si la S-box ressemble à 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 et le bloc de 4 bits « 0100 » est arrivé à l'entrée (valeur 4), alors, selon le tableau, la valeur de sortie sera 15, c'est-à-dire « 1111 » (0 a 4, 1 a 11, 2 a 2 ...). L'algorithme, défini par GOST 28147-89, propose quatre modes de fonctionnement : remplacement simple, gamming, gamming avec retour

et génération de préfixes d'imitation. Ils utilisent la même transformation de chiffrement décrite ci-dessus, mais comme la finalité des modes est différente, cette transformation s'effectue différemment dans chacun d'eux. En mode remplacement facile

Pour chiffrer chaque bloc d'informations de 64 bits, les 32 tours décrits ci-dessus sont effectués. Dans ce cas, les sous-clés de 32 bits sont utilisées dans l'ordre suivant :

K7, K6, K5, K4, K3, K2, K1, K0 - aux tours 25 à 32.

Le déchiffrement dans ce mode s'effectue exactement de la même manière, mais avec une séquence d'utilisation des sous-clés légèrement différente :

K0, K1, K2, K3, K4, K5, K6, K7 - aux tours 1 à 8 ;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6, etc. - aux tours 9 à 32.

Tous les blocs sont chiffrés indépendamment les uns des autres, c'est-à-dire que le résultat du chiffrement de chaque bloc dépend uniquement de son contenu (le bloc correspondant du texte original). S'il existe plusieurs blocs identiques de texte original (brut), les blocs de texte chiffré correspondants seront également identiques, ce qui donne des informations supplémentaires. informations utiles pour un cryptanalyste essayant de déchiffrer un chiffre. Par conséquent, ce mode est principalement utilisé pour chiffrer les clés de chiffrement elles-mêmes (des schémas multi-clés sont très souvent mis en œuvre, dans lesquels, pour un certain nombre de raisons, les clés sont cryptées les unes sur les autres). Deux autres modes de fonctionnement sont destinés au cryptage des informations elles-mêmes : gamma et gamma avec feedback.

DANS mode gamma chaque bloc texte en clair ajout au niveau du bit du modulo 2 avec un bloc gamma de chiffrement de 64 bits. Le chiffre gamma est une séquence spéciale obtenue à la suite de certaines opérations avec les registres N1 et N2 (voir Fig. 1).

1. Leur remplissage initial est écrit dans les registres N1 et N2 - une valeur de 64 bits appelée message de synchronisation.

2. Le contenu des registres N1 et N2 est crypté (en dans ce cas- synchroniser les messages) en mode de remplacement simple.

3. Le contenu du registre N1 est ajouté modulo (232 - 1) avec la constante C1 = 224 + 216 + 28 + 24, et le résultat de l'addition est écrit dans le registre N1.

4. Le contenu du registre N2 est ajouté modulo 232 avec la constante C2 = 224 + 216 + 28 + 1, et le résultat de l'addition est écrit dans le registre N2.

5. Le contenu des registres N1 et N2 est affiché sous la forme d'un bloc gamma de 64 bits du chiffre (dans ce cas, N1 et N2 forment le premier bloc gamma).

Si le bloc gamma suivant est nécessaire (c'est-à-dire que le cryptage ou le déchiffrement doit continuer), il revient à l'étape 2.

Pour le déchiffrement, gamma est généré de la même manière, puis le texte chiffré et les bits gamma sont à nouveau XOR. Cette opération étant réversible, dans le cas d'une échelle correctement élaborée, on obtient le texte original (tableau).

Cryptage et décryptage en mode gamma

Pour développer le chiffrement nécessaire au décryptage du gamma, l'utilisateur qui déchiffre le cryptogramme doit disposer de la même clé et de la même valeur de message de synchronisation que celles utilisées lors du chiffrement des informations. Sinon, il ne sera pas possible d'obtenir le texte original à partir du texte crypté.

Dans la plupart des implémentations de l'algorithme GOST 28147-89, le message de synchronisation n'est pas secret. Cependant, il existe des systèmes dans lesquels le message de synchronisation est le même élément secret que la clé de cryptage. Pour de tels systèmes, la longueur de clé effective de l'algorithme (256 bits) est augmentée de 64 bits supplémentaires du message secret de synchronisation, qui peuvent également être considérés comme un élément clé.

En mode feedback gamma, pour remplir les registres N1 et N2, à partir du 2ème bloc, ce n'est pas le bloc gamma précédent qui est utilisé, mais le résultat du cryptage du bloc de texte en clair précédent (Fig. 2). Le premier bloc de ce mode est généré de manière tout à fait similaire au précédent.

Riz. 2. Développement d'un chiffrement gamma en mode gamma avec feedback.

Compte tenu du mode génération de préfixes d'imitation, la notion de sujet de génération devrait être définie. Le préfixe d'imitation est un cryptographique somme de contrôle, calculé à l'aide de la clé de chiffrement et conçu pour vérifier l'intégrité des messages. Lors de la génération d'un préfixe d'imitation, les opérations suivantes sont effectuées : le premier bloc de 64 bits du tableau d'informations, pour lequel le préfixe d'imitation est calculé, est écrit dans les registres N1 et N2 et crypté en mode de remplacement simple réduit (le les 16 premiers tours sur 32 sont effectués). Le résultat résultant est additionné modulo 2 avec le bloc d'informations suivant et le résultat est stocké dans N1 et N2.

Le cycle se répète jusqu'au dernier bloc d'informations. Le contenu 64 bits résultant des registres N1 et N2 ou d'une partie de ceux-ci à la suite de ces transformations est appelé préfixe d'imitation. La taille du préfixe d'imitation est choisie en fonction de la fiabilité requise des messages : avec la longueur du préfixe d'imitation r bits, la probabilité qu'un changement dans le message passe inaperçu est égale à 2-r. Un préfixe d'imitation de 32 bits est utilisé, c'est-à-dire la moitié du contenu des registres. Cela suffit car, comme toute somme de contrôle, la pièce jointe d'imitation est principalement destinée à protéger contre la distorsion accidentelle des informations. Pour se protéger contre la modification intentionnelle des données, autres méthodes cryptographiques- principalement une signature numérique électronique.

Lors de l'échange d'informations, le préfixe d'imitation sert en quelque sorte de moyens supplémentaires contrôle. Il est calculé pour le texte en clair lorsque des informations sont cryptées et est envoyé avec le texte chiffré. Après décryptage, une nouvelle valeur du préfixe d'imitation est calculée et comparée à celle envoyée. Si les valeurs ne correspondent pas, cela signifie que le texte chiffré a été corrompu lors de la transmission ou que des clés incorrectes ont été utilisées lors du déchiffrement. Le préfixe d'imitation est particulièrement utile pour vérifier le décryptage correct des informations clés lors de l'utilisation de schémas multi-clés.

L'algorithme GOST 28147-89 est considéré comme un algorithme très puissant - actuellement, aucun autre n'a été proposé pour sa divulgation méthodes efficaces que la méthode « force brute » mentionnée ci-dessus. Sa grande durabilité est obtenue principalement grâce à longue longueur clé - 256 bits. Lors de l'utilisation d'un message de synchronisation secret, la longueur effective de la clé augmente à 320 bits et le chiffrement de la table de remplacement augmente bits supplémentaires. De plus, la force cryptographique dépend du nombre de tours de transformation, qui selon GOST 28147-89 devrait être de 32 (le plein effet de dispersion des données d'entrée est obtenu après 8 tours).

Norme AES

Contrairement à l'algorithme GOST 28147-89, qui pendant longtemps resté secret, standard américain Cryptage AES, destiné à remplacer DES, a été sélectionné dans le cadre d'un concours ouvert au cours duquel toutes les organisations et individus intéressés pouvaient étudier et commenter les algorithmes candidats.

Un concours pour remplacer le DES a été annoncé en 1997 par le National Institute of Standards and Technology des États-Unis (NIST - National Institute of Standards and Technology). 15 algorithmes candidats ont été soumis au concours, développés à la fois par des organisations renommées dans le domaine de la cryptographie (RSA Security, Counterpane, etc.) et des particuliers. Les résultats du concours ont été annoncés en octobre 2000 : le gagnant était l'algorithme Rijndael, développé par deux cryptographes belges, Vincent Rijmen et Joan Daemen.

L'algorithme de Rijndael n'est pas comme la plupart algorithmes connus cryptage symétrique, dont la structure est appelée « réseau Feistel » et est similaire au GOST russe 28147-89. La particularité du réseau Feistel est que la valeur d'entrée est divisée en deux ou plusieurs sous-blocs, dont une partie à chaque tour est traitée selon une certaine loi, après quoi elle est superposée aux sous-blocs non traités (voir Fig. 1).

Contrairement à la norme de cryptage nationale, l'algorithme de Rijndael représente un bloc de données sous la forme d'un tableau d'octets bidimensionnel de taille 4X4, 4X6 ou 4X8 (l'utilisation de plusieurs est autorisée tailles fixes bloc d'informations crypté). Toutes les opérations sont effectuées sur des octets individuels du tableau, ainsi que sur colonnes indépendantes et des lignes.

L'algorithme de Rijndael effectue quatre transformations : BS (ByteSub) - remplacement de table de chaque octet du tableau (Fig. 3) ; SR (ShiftRow) - décalage des lignes du tableau (Fig. 4). Avec cette opération, la première ligne reste inchangée et les autres sont décalées cycliquement octet par octet vers la gauche d'un nombre fixe d'octets, en fonction de la taille du tableau. Par exemple, pour un tableau 4X4, les lignes 2, 3 et 4 sont décalées respectivement de 1, 2 et 3 octets. Vient ensuite MC (MixColumn) - une opération sur des colonnes de tableau indépendantes (Fig. 5), lorsque chaque colonne une certaine règle est multiplié par une matrice fixe c(x). Et enfin, AK (AddRoundKey) - ajout d'une clé. Chaque bit du tableau est ajouté modulo 2 au bit correspondant de la clé ronde, qui, à son tour, est calculé d'une certaine manière à partir de la clé de cryptage (Fig. 6).


Riz. 3. Opération BS.

Riz. 4. Opération SR.

Riz. 5. Opération MC.

Le nombre de tours de chiffrement (R) dans l'algorithme de Rijndael est variable (10, 12 ou 14 tours) et dépend de la taille du bloc et de la clé de chiffrement (il existe également plusieurs tailles fixes pour la clé).

Le décryptage est effectué à l'aide des opérations inverses suivantes. Le tableau est inversé et le tableau est remplacé par un tableau inverse (par rapport à celui utilisé pour le chiffrement). L'opération inverse de SR consiste à faire pivoter les lignes vers la droite plutôt que vers la gauche. L'opération inverse pour MC est la multiplication selon les mêmes règles par une autre matrice d(x) satisfaisant la condition : c(x) * d(x) = 1. L'ajout de la clé AK est l'inverse de lui-même, puisqu'elle utilise uniquement le XOR opération. Ces opérations inverses sont appliquées lors du déchiffrement dans la séquence inverse de celle utilisée lors du chiffrement.

Rijndael est devenu la nouvelle norme en matière de cryptage des données en raison de nombreux avantages par rapport aux autres algorithmes. Tout d’abord, il offre une vitesse de cryptage élevée sur toutes les plates-formes : implémentation logicielle et matérielle. Il se distingue incomparablement meilleures opportunités parallélisation des calculs par rapport à d'autres algorithmes soumis au concours. De plus, les besoins en ressources pour son fonctionnement sont minimes, ce qui est important lorsqu'il est utilisé dans des appareils aux capacités informatiques limitées.

Le seul inconvénient de l’algorithme peut être considéré comme son schéma inhérent non conventionnel. Le fait est que les propriétés des algorithmes basés sur le réseau Feistel ont été bien étudiées, et Rijndael, en revanche, peut contenir des vulnérabilités cachées qui ne peuvent être découvertes qu'après un certain temps depuis son utilisation généralisée.

Chiffrement asymétrique

Les algorithmes de chiffrement asymétriques, comme déjà indiqué, utilisent deux clés : k1 - la clé de chiffrement, ou publique, et k2 - la clé de déchiffrement, ou secrète. La clé publique est calculée à partir du secret : k1 = f(k2).

Les algorithmes de chiffrement asymétriques reposent sur l’utilisation de fonctions unidirectionnelles. D'après la définition, une fonction y = f(x) est unidirectionnelle si : elle est facile à calculer pour tout options possibles x et pour la plupart des valeurs possibles de y, il est assez difficile de calculer une valeur de x telle que y = f(x).

Un exemple de fonction unidirectionnelle est la multiplication de deux grands nombres : N = P*Q. En soi, une telle multiplication est une opération simple. Cependant, la fonction inverse (décomposition de N en deux grands facteurs), appelée factorisation, selon les estimations de l'époque moderne, est assez complexe. problème de mathématiques. Par exemple, une factorisation N de dimension 664 bits en P ? Q nécessitera environ 1023 opérations, et pour calculer inversement x pour l'exposant modulaire y = ax mod p avec a, p et y connus (avec les mêmes dimensions de a et p), vous devez effectuer environ 1026 opérations. Le dernier exemple donné s'appelle le problème du logarithme discret (DLP), et ce type de fonction est souvent utilisé dans les algorithmes de chiffrement asymétrique, ainsi que dans les algorithmes utilisés pour créer une signature numérique électronique.

Une autre classe importante de fonctions utilisées dans le chiffrement asymétrique sont les fonctions de porte dérobée unidirectionnelle. Leur définition stipule qu'une fonction est unidirectionnelle avec une porte dérobée si elle est unidirectionnelle et qu'elle peut être calculée efficacement. fonction inverse x = f-1(y), c'est-à-dire si le « passage secret » est connu (un certain numéro secret, en application aux algorithmes de chiffrement asymétriques - la valeur de la clé secrète).

Les fonctions de porte dérobée unidirectionnelle sont utilisées dans l’algorithme de chiffrement asymétrique RSA, largement utilisé.

Algorithme RSA

Développé en 1978 par trois auteurs (Rivest, Shamir, Adleman), il tire son nom des premières lettres des noms de famille des développeurs. La fiabilité de l'algorithme repose sur la difficulté de factoriser de grands nombres et de calculer des logarithmes discrets. Le paramètre principal de l'algorithme RSA est le module système N, selon lequel tous les calculs du système sont effectués, et N = P*Q (P et Q sont secrets aléatoires simples gros chiffres, généralement de la même taille).

La clé secrète k2 est choisie aléatoirement et doit répondre aux conditions suivantes :

1

où PGCD est le plus grand diviseur commun, c'est-à-dire que k1 doit être premier à la valeur de la fonction d'Euler F(N), cette dernière étant égale au nombre d'entiers positifs compris entre 1 et N premiers à N, et est calculé comme F(N) = (P - 1)*(Q - 1).

La clé publique k1 est calculée à partir de la relation (k2*k1) = 1 module F(N), et à cet effet l'algorithme euclidien généralisé (l'algorithme de calcul du plus grand diviseur commun) est utilisé. Le chiffrement du bloc de données M à l'aide de l'algorithme RSA s'effectue de la manière suivante : C=M [à la puissance k1] mod N. A noter que puisque dans un cryptosystème réel utilisant RSA le nombre k1 est très grand (actuellement sa dimension peut atteindre jusqu'à 2048 bits), le calcul direct de M [à la puissance k1] irréaliste. Pour l'obtenir, une combinaison de quadrature répétée de M et de multiplication des résultats est utilisée.

L'inversion de cette fonction pour les grandes dimensions n'est pas réalisable ; en d’autres termes, il est impossible de trouver M étant donné les valeurs C, N et k1 connues. Cependant, disposant d'une clé secrète k2, à l'aide de transformations simples on peut calculer M = Ck2 mod N. Évidemment, en plus de la clé secrète elle-même, il faut assurer le secret des paramètres P et Q. Si un attaquant obtient leurs valeurs , il pourra calculer la clé secrète k2.

Quel cryptage est le meilleur ?

Le principal inconvénient du chiffrement symétrique est la nécessité de transférer les clés « de main en main ». Cet inconvénient est très grave, car il rend impossible l'utilisation du chiffrement symétrique dans des systèmes comportant un nombre illimité de participants. Cependant, le cryptage symétrique présente certains avantages qui sont clairement visibles dans le contexte des graves inconvénients du cryptage asymétrique.

Le premier d’entre eux est la faible vitesse des opérations de chiffrement et de décryptage, due à la présence d’opérations gourmandes en ressources. Un autre inconvénient « théorique » est que la force cryptographique des algorithmes de chiffrement asymétrique n’a pas été mathématiquement prouvée. Cela est principalement dû au problème du logarithme discret - il n'a pas encore été prouvé que sa solution dans un délai acceptable est impossible. Des difficultés inutiles sont également créées par la nécessité de protéger les clés publiques contre la substitution - en substituant clé publique utilisateur légitime, l'attaquant pourra chiffrer un message important avec sa clé publique et ensuite le déchiffrer facilement avec sa clé privée.

Toutefois, ces inconvénients n’empêchent pas l’utilisation généralisée d’algorithmes de chiffrement asymétrique. Il existe aujourd'hui des systèmes de chiffrement qui prennent en charge la certification des clés publiques, ainsi que la combinaison d'algorithmes de chiffrement symétriques et asymétriques. Mais c'est un sujet pour un article séparé.

Sources d'informations supplémentaires

Pour les lecteurs sérieusement intéressés par le cryptage, l'auteur recommande d'élargir leurs horizons à l'aide des livres suivants.

  1. Brassard J. « Cryptologie moderne ».
  2. Petrov A. A. "Sécurité informatique : méthodes de protection cryptographiques."
  3. Romanets Yu., Timofeev P. A., Shangin V. F. "La protection de l'information dans les temps modernes systèmes informatiques".
  4. Sokolov A.V., Shangin V.F. "Protection des informations dans les réseaux et systèmes d'entreprise distribués".

Une description complète des algorithmes de chiffrement peut être trouvée dans les documents suivants :

  1. GOST 28147-89. Système de traitement de l'information. Protection cryptographique.
  2. Algorithme de conversion cryptographique. - M. : Norme d'État de l'URSS, 1989.
  3. Algorithme AES : http://www.nist.gov/ae.

Algorithme RSA : http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1. Annotation: Cette conférence a plusieurs objectifs. Montrez la différence entre les chiffrements à clé symétrique traditionnels et modernes. Apportez du moderne et discuter de leurs caractéristiques. Expliquez pourquoi les chiffrements par blocs modernes doivent être conçus comme des chiffrements de substitution. Présentez les composants des chiffrements par blocs tels que les P-box et les S-box. Discutez et montrez la différence entre deux classes de chiffres : les chiffres de Feistel et les chiffres non-Feistel. Discutez de deux types d'attaques visant spécifiquement à briser les chiffrements par blocs modernes : la cryptanalyse différentielle et linéaire. Présentez le concept de « chiffrements de flux » et montrez la différence entre les chiffrements synchrones et non synchrones. Discutez des retours de registres à décalage linéaires et non linéaires pour la mise en œuvre de chiffrements de flux.

Chiffres traditionnels avec clé symétrique, que nous avons étudiés jusqu'à présent, sont axés sur les caractères. Avec l’avènement de l’ordinateur, les chiffrements orientés bits sont devenus nécessaires. Parce que les informations qui doivent être cryptées ne sont pas toujours du texte ; il peut également s'agir de chiffres, de graphiques, de données audio et vidéo. Il est pratique de convertir ces types de données en un flux de bits, de chiffrer ce flux, puis de transmettre le flux chiffré. De plus, lorsque le texte est traité au niveau des bits, chaque caractère est remplacé par 8 (ou 16) bits, ce qui signifie que le nombre de caractères devient 8 (ou 16) fois plus grand. Mélanger plus de caractères augmente la sécurité.

Ce chapitre fournit les bases nécessaires à l'étude des chiffrements par blocs et par flux modernes, qui sont abordés dans les trois chapitres suivants. La majeure partie de ce chapitre est consacrée à la discussion des idées générales des chiffrements par blocs modernes, et seule une petite partie est consacrée aux principes des chiffrements par flux modernes.

7.1. Chiffres par blocs modernes

Un chiffrement par bloc à clé symétrique moderne chiffre un bloc de n bits de texte en clair ou déchiffre un bloc de n bits de texte chiffré. L'algorithme de chiffrement ou de déchiffrement utilise une clé de k bits. L'algorithme de décryptage doit être l'inverse de l'algorithme de chiffrement, et tous deux fonctionnent en utilisant la même clé secrète afin que Bob puisse reconstituer le message envoyé par Alice. La figure 7.1 montre l'idée générale du cryptage et du déchiffrement dans un chiffrement par blocs moderne.


Riz. 7.1.

Si la taille du message est inférieure à n bits, un remplissage doit être ajouté pour créer ce bloc de n bits ; si un message comporte plus de n bits, il doit être divisé en blocs de n bits et un remplissage approprié doit être ajouté au dernier bloc si nécessaire. Les valeurs courantes de n sont généralement 64, 128, 256 ou 512 bits.

Exemple 7.1

Combien de bits supplémentaires doivent être ajoutés à un message de 100 caractères si le codage est ASCII 8 bits et que le chiffrement par bloc accepte les blocs de 64 bits ?

Solution

Encodez 100 caractères en ASCII 8 bits. Ce message contient 800 bits. Le texte source doit être divisible par 64. Si | M | et | Tampon |

- la longueur du message et la longueur du remplissage, puis | M | + |

Tampon | == 0 mod 64 -> | Tampon | = -800 mod 64->32 mod 64

Cela signifie que 32 bits de remplissage (tels que des zéros) doivent être ajoutés au message. Le texte sera alors composé de 832 bits, soit treize blocs de 64 bits. Notez que seul le dernier bloc contient du remplissage. Le chiffreur utilise l'algorithme de chiffrement treize fois pour créer treize blocs de texte chiffré.

Substitution ou transposition

Un chiffrement par bloc moderne peut être conçu pour agir comme un chiffrement de substitution ou comme un chiffrement de transposition. C'est la même idée que celle utilisée dans les chiffrements traditionnels, sauf que les caractères qui seront remplacés ou déplacés contiennent des bits au lieu de caractères. Si le chiffre est conçu comme chiffre de substitution , valeurs de bits 1 ou 0 dans texte source peut être remplacé par 0 ou 1. Cela signifie que le texte original et le texte chiffré peuvent avoir numéro différent unités. Un bloc de texte en clair de 64 bits contenant 12 zéros et 52 uns peut être représenté dans le texte chiffré par 34 zéros et 30 uns. Si le chiffre est conçu comme chiffre de permutation (transposition)

, les bits changent uniquement leur ordre (déplacement), en gardant le même nombre de caractères dans le texte original et chiffré. Dans les deux cas, le nombre de textes en clair ou de textes chiffrés possibles sur n bits est de 2n, car chacun des n bits utilisés dans un bloc peut avoir l'une des deux valeurs suivantes - 0 ou 1,2. 64 blocs de 64 bits pour en trouver un, ce qui fait sens. Si Eve pouvait essayer 1 milliard de blocs par seconde, il faudrait alors des centaines d'années avant que ce travail puisse aboutir. (64!) / [(10!) (54!)] = 151 473 214 816 de 2 64 mots de 64 bits, qui comportent exactement 10 unités. Eve peut tous les tester en moins de 3 minutes si elle peut faire 1 milliard de tests par seconde.

Résistant à une attaque de recherche exhaustive, un chiffrement par bloc moderne doit être conçu comme un chiffrement de substitution.

Le cryptage des données est extrêmement important pour protéger la confidentialité. Dans cet article, je parlerai de différents types et les méthodes de cryptage utilisées aujourd'hui pour protéger les données.

Saviez-vous?
À l’époque romaine, Jules César utilisait le cryptage pour rendre les lettres et les messages illisibles pour l’ennemi. Elle jouait un rôle important en tant que tactique militaire, notamment pendant les guerres.

À mesure que les capacités d’Internet continuent de croître, de plus en plus de nos activités sont menées en ligne. Parmi ceux-ci, les plus importants sont les services bancaires par Internet, paiement en ligne, e-mails, échange de messages privés et officiels, etc., qui impliquent l'échange de données et d'informations confidentielles. Si ces données tombent entre de mauvaises mains, cela pourrait nuire non seulement à l'utilisateur individuel, mais aussi à l'ensemble de l'entreprise. système en ligne entreprise.

Pour éviter que cela ne se produise, plusieurs mesures de sécurité du réseau ont été prises pour protéger la transmission des données personnelles. Les principaux processus sont les processus de cryptage et de déchiffrement des données, appelés cryptographie. Il existe aujourd’hui trois méthodes de chiffrement principales utilisées dans la plupart des systèmes : le hachage, le chiffrement symétrique et asymétrique. DANS lignes suivantes, je vais parler de chacun de ces types de cryptage plus en détail.

Types de chiffrement

Cryptage symétrique

Avec le cryptage symétrique, les données lisibles normales appelées texte brut, est codé (crypté) de manière à devenir illisible. Ce brouillage des données se fait à l'aide d'une clé. Une fois les données cryptées, elles peuvent être envoyées en toute sécurité au destinataire. Chez le destinataire, les données cryptées sont décodées à l'aide de la même clé que celle utilisée pour le codage.

Il est donc clair que la clé est la plus partie importante cryptage symétrique. Il doit être caché aux étrangers, car toute personne y ayant accès pourra décrypter les données privées. C'est pourquoi ce type de cryptage est également appelé « clé secrète ».

DANS systèmes modernes ah, la clé est généralement une chaîne de données dérivée d'un mot de passe fort ou d'un mot de passe complètement source aléatoire. Il est introduit dans un logiciel de cryptage symétrique, qui l'utilise pour garder secrètes les données d'entrée. Le brouillage des données est réalisé à l'aide algorithme symétrique cryptage, tel que Data Encryption Standard (DES), Advanced Encryption Standard (AES) ou International Data Encryption Algorithm (IDEA).

Restrictions

Le maillon le plus faible de ce type de cryptage est la sécurité de la clé, tant au niveau du stockage que de la transmission à l'utilisateur authentifié. Si un pirate informatique parvient à obtenir cette clé, il peut facilement déchiffrer les données cryptées, ce qui irait à l’encontre de l’objectif même du cryptage.

Un autre inconvénient est dû au fait que logiciel, qui traite les données ne peut pas fonctionner avec des données cryptées. Par conséquent, pour pouvoir utiliser ce logiciel, les données doivent d’abord être décodées. Si le logiciel lui-même est compromis, un attaquant peut facilement obtenir les données.

Chiffrement asymétrique

Le chiffrement à clé asymétrique fonctionne de la même manière clé symétrique, c'est qu'il utilise une clé pour coder messages transmis. Cependant, au lieu d’utiliser la même clé, il en utilise une complètement différente pour déchiffrer ce message.

La clé utilisée pour l'encodage est disponible pour tous les utilisateurs du réseau. En tant que telle, elle est connue sous le nom de clé « publique ». En revanche, la clé utilisée pour le décryptage est gardée secrète et est destinée à un usage privé par l'utilisateur lui-même. C’est pourquoi on l’appelle clé « privée ». Le chiffrement asymétrique est également appelé chiffrement à clé publique.

Étant donné que, avec cette méthode, la clé secrète nécessaire au décryptage du message n'a pas besoin d'être transmise à chaque fois et qu'elle n'est généralement connue que de l'utilisateur (destinataire), la probabilité qu'un pirate informatique parvienne à décrypter le message est élevée. inférieur.

Diffie-Hellman et RSA sont des exemples d'algorithmes utilisant le chiffrement à clé publique.

Restrictions

De nombreux pirates informatiques utilisent l'homme du milieu comme forme d'attaque pour contourner ce type de cryptage. Dans le chiffrement asymétrique, vous recevez une clé publique qui est utilisée pour échange sécurisé données avec une autre personne ou un autre service. Cependant, les pirates utilisent la tromperie du réseau pour vous inciter à communiquer avec eux alors que vous êtes amené à croire que vous êtes sur une ligne sécurisée.

Pour mieux comprendre ce type de piratage, considérons deux parties en interaction, Sasha et Natasha, et un pirate informatique, Sergei, dans le but d'intercepter leur conversation. Tout d'abord, Sasha envoie un message sur le réseau destiné à Natasha, lui demandant sa clé publique. Sergei intercepte ce message et obtient la clé publique qui lui est associée et l'utilise pour crypter et envoyer un faux message à Natasha contenant sa clé publique au lieu de celle de Sasha.

Natasha, pensant que ce message venait de Sasha, le crypte maintenant avec la clé publique de Sergei et le renvoie. Ce message a de nouveau été intercepté par Sergei, déchiffré, modifié (si souhaité), à nouveau crypté à l'aide de la clé publique envoyée à l'origine par Sasha et renvoyé à Sasha.

Ainsi, lorsque Sasha reçoit ce message, il a été amené à croire qu'il venait de Natasha et n'est pas au courant d'un acte criminel.

Hachage

La technique de hachage utilise un algorithme appelé fonction de hachage pour générer une chaîne spéciale à partir des données données, appelée hachage. Ce hachage a les propriétés suivantes :

  • les mêmes données produisent toujours le même hachage.
  • Il n'est pas possible de générer des données brutes à partir d'un seul hachage.
  • Ça ne vaut pas la peine d'essayer différentes combinaisons saisir des données pour essayer de générer le même hachage.

Ainsi, la principale différence entre le hachage et les deux autres formes de cryptage des données est qu’une fois les données cryptées (hachées), elles ne peuvent pas être récupérées sous leur forme originale (déchiffrées). Cela garantit que même si un pirate informatique met la main sur le hachage, celui-ci ne lui sera d'aucune utilité, puisqu'il ne pourra pas décrypter le contenu du message.

Message Digest 5 (MD5) et Secure Hashing Algorithm (SHA) sont deux algorithmes de hachage largement utilisés.

Restrictions

Comme mentionné précédemment, il est presque impossible de décrypter les données d’un hachage donné. Cependant, cela n’est vrai que si un hachage fort est mis en œuvre. Dans le cas d'une faible mise en œuvre de la technique de hachage, en utilisant suffisamment de ressources et d'attaques force brute, un pirate informatique persistant peut être en mesure de trouver des données correspondant au hachage.

Combinaison de méthodes de cryptage

Comme indiqué ci-dessus, chacune de ces trois méthodes de cryptage présente certains inconvénients. Cependant, lorsqu'une combinaison de ces méthodes est utilisée, elles constituent une méthode fiable et hautement système efficace cryptage.

Le plus souvent, les techniques à clés privées et publiques sont combinées et utilisées ensemble. La méthode à clé privée permet un déchiffrement rapide, tandis que la méthode à clé publique offre un moyen plus sûr et plus pratique de transmettre la clé secrète. Cette combinaison de méthodes est connue sous le nom d’« enveloppe numérique ». Programme de cryptage e-mail PGP est basé sur la technique de « l'enveloppe numérique ».

Le hachage est utilisé comme moyen de vérifier la force d'un mot de passe. Si le système stocke un hachage du mot de passe au lieu du mot de passe lui-même, il sera plus sécurisé, car même si un pirate informatique met la main sur ce hachage, il ne pourra pas le comprendre (le lire). Lors de la vérification, le système vérifiera le hachage du mot de passe entrant et verra si le résultat correspond à ce qui est stocké. De cette façon, le mot de passe réel ne sera visible que dans brefs instants, lorsqu'il doit être modifié ou vérifié, ce qui réduira considérablement le risque qu'il tombe entre de mauvaises mains.

Le hachage est également utilisé pour authentifier les données à l'aide d'une clé secrète. Un hachage est généré à l'aide des données et de cette clé. Par conséquent, seules les données et le hachage sont visibles et la clé elle-même n'est pas transmise. De cette façon, si des modifications sont apportées aux données ou au hachage, elles seront facilement détectées.

En conclusion, nous pouvons dire que ces méthodes peuvent être utilisées pour codage efficace données dans un format illisible qui peut garantir leur sécurité. La plupart des systèmes modernes utilisent généralement une combinaison de ces méthodes de cryptage ainsi que des implémentations d'algorithmes solides pour améliorer la sécurité. En plus de la sécurité, ces systèmes offrent également de nombreux avantages supplémentaires, comme vérifier l'identité de l'utilisateur et garantir que les données reçues ne peuvent pas être falsifiées.

Le besoin de chiffrer la correspondance est apparu dans le monde antique et de simples chiffres de remplacement sont apparus. Les messages cryptés ont déterminé le sort de nombreuses batailles et ont influencé le cours de l'histoire. Au fil du temps, les gens ont inventé des méthodes de cryptage de plus en plus avancées.

Le code et le chiffre sont, d'ailleurs, différentes notions. Le premier consiste à remplacer chaque mot du message mot de code. La seconde consiste à chiffrer chaque symbole d’information à l’aide d’un algorithme spécifique.

Après que les mathématiques ont commencé à coder l'information et que la théorie de la cryptographie a été développée, les scientifiques ont découvert de nombreux propriétés bénéfiques cette science appliquée. Par exemple, les algorithmes de décodage ont permis de déchiffrer des langues mortes comme l’égyptien ancien ou le latin.

Stéganographie

La stéganographie est plus ancienne que le codage et le cryptage. Cet art est apparu il y a longtemps. Cela signifie littéralement « écriture cachée » ou « écriture secrète ». Bien que la stéganographie ne corresponde pas exactement à la définition d’un code ou d’un chiffre, elle a pour but de cacher des informations aux regards indiscrets.

La stéganographie est le chiffre le plus simple. Des exemples typiques sont des notes avalées recouvertes de cire ou un message sur une tête rasée cachée sous la pousse des cheveux. L'exemple le plus clair de stéganographie est la méthode décrite dans de nombreux livres policiers anglais (et pas seulement), lorsque les messages sont transmis via un journal où les lettres sont discrètement marquées.

Le principal inconvénient de la stéganographie est qu’elle peut être remarquée par un étranger attentif. Par conséquent, pour empêcher la lecture facile du message secret, des méthodes de cryptage et de codage sont utilisées en conjonction avec la stéganographie.

ROT1 et chiffre César

Le nom de ce chiffre est ROTate 1 lettre vers l'avant, et il est connu de nombreux écoliers. Il s'agit d'un simple chiffre de substitution. Son essence est que chaque lettre est cryptée en décalant l'alphabet d'une lettre vers l'avant. A -> B, B -> B, ..., I -> A. Par exemple, chiffrons la phrase « notre Nastya pleure fort » et obtenons « obshb Obtua dspnlp rmbsheu ».

Le chiffrement ROT1 peut être généralisé à un nombre arbitraire de décalages, il est alors appelé ROTN, où N est le nombre par lequel le cryptage des lettres doit être décalé. Sous cette forme, le chiffre est connu depuis l’Antiquité et est appelé « chiffre de César ».

Le chiffre de César est très simple et rapide, mais il s’agit d’un simple chiffre à permutation unique et est donc facile à déchiffrer. Ayant un inconvénient similaire, il ne convient que pour les farces des enfants.

Chiffres de transposition ou de permutation

Ces types de chiffres à permutation simples sont plus sérieux et ont été activement utilisés il n'y a pas si longtemps. Pendant la guerre civile américaine et la Première Guerre mondiale, il était utilisé pour transmettre des messages. Son algorithme consiste à réorganiser les lettres - écrire le message en ordre inverse ou réorganisez les lettres par paires. Par exemple, chiffrons la phrase « Le code Morse est aussi un chiffre » -> « Akubza ezrom - ezhot rfish ».

Avec un bon algorithme qui déterminait des permutations arbitraires pour chaque caractère ou groupe d'entre eux, le chiffre est devenu résistant aux piratage simple. Mais! Seulement en temps voulu. Puisque le chiffre est facile à déchiffrer recherche simple ou une correspondance de dictionnaire, aujourd'hui n'importe quel smartphone peut gérer son décodage. Par conséquent, avec l’avènement des ordinateurs, ce chiffre est également devenu un code pour enfants.

Code Morse

L'alphabet est un moyen d'échange d'informations et sa tâche principale est de rendre les messages plus simples et plus compréhensibles à transmettre. Bien que cela soit contraire à l’objectif du cryptage. Néanmoins, cela fonctionne comme les chiffres les plus simples. Dans le système Morse, chaque lettre, chiffre et signe de ponctuation possède son propre code, composé d'un groupe de tirets et de points. Lors de la transmission d'un message à l'aide du télégraphe, les tirets et les points indiquent des lignes longues et signaux courts.

Le télégraphe et l'alphabet furent les premiers à breveter « son » invention en 1840, bien que des dispositifs similaires aient été inventés avant lui en Russie et en Angleterre. Mais peu importe maintenant... Le télégraphe et le code Morse ont eu une très grande influence sur le monde, permettant la transmission quasi instantanée de messages sur des distances continentales.

Substitution monoalphabétique

Les codes ROTN et Morse décrits ci-dessus sont des représentants des polices de remplacement monoalphabétiques. Le préfixe « mono » signifie que lors du cryptage, chaque lettre du message d'origine est remplacée par une autre lettre ou code issu d'un seul alphabet de cryptage.

Le déchiffrement des chiffres de substitution simples n'est pas difficile, et c'est leur principal inconvénient. Ils peuvent être résolus par une simple recherche ou. Par exemple, on sait que les lettres les plus utilisées dans la langue russe sont « o », « a », « i ». Ainsi, on peut supposer que dans le texte chiffré, les lettres qui apparaissent le plus souvent signifient soit « o », « a » ou « i ». Sur la base de ces considérations, le message peut être déchiffré même sans recherche informatique.

Marie Ier, reine d'Écosse de 1561 à 1567, est connue pour avoir utilisé un chiffre de substitution monoalphabétique très complexe avec de multiples combinaisons. Pourtant, ses ennemis furent capables de déchiffrer les messages, et l’information fut suffisante pour condamner la reine à mort.

Chiffre de Gronsfeld, ou substitution polyalphabétique

Les chiffres simples sont considérés comme inutiles par la cryptographie. Beaucoup d’entre eux ont donc été modifiés. Le chiffre de Gronsfeld est une modification du chiffre de César. Cette méthode est beaucoup plus résistant au piratage et consiste dans le fait que chaque caractère des informations codées est crypté à l'aide de l'un des alphabets différents, qui se répètent cycliquement. On peut dire qu'il s'agit d'une application multidimensionnelle du chiffre de substitution le plus simple. En fait, le chiffre de Gronsfeld est très similaire à celui présenté ci-dessous.

Algorithme de chiffrement ADFGX

Il s’agit du chiffre le plus célèbre de la Première Guerre mondiale utilisé par les Allemands. Le chiffre tire son nom du fait qu'il réduisait tous les chiffrements à une alternance de ces lettres. Le choix des lettres elles-mêmes était déterminé par leur commodité lors de leur transmission sur des lignes télégraphiques. Chaque lettre du chiffre est représentée par deux. Considérons davantage version intéressante carré ADFGX, qui comprend des nombres et s'appelle ADFGVX.

UN D F G V X
UN J. Q UN 5 H D
D 2 E R. V 9 Z
F 8 Oui je N K V
G U P. B F 6 Ô
V 4 G X S 3 T
X W L Q 7 C 0

L'algorithme de composition du carré ADFGX est le suivant :

  1. Nous prenons n lettres aléatoires pour désigner les colonnes et les lignes.
  2. Nous construisons une matrice N x N.
  3. Nous entrons dans la matrice l'alphabet, les chiffres, les signes, dispersés aléatoirement dans les cellules.

Faisons un carré similaire pour la langue russe. Par exemple, créons un carré ABCD :

UN B DANS G D
UN SON N b/b UN I/Y
B H V/F CH Z D
DANS Chut/Chut B L X je
G R. M À PROPOS Yu P.
D ET T C Oui U

Cette matrice semble étrange, puisqu'un certain nombre de cellules contiennent deux lettres. C’est acceptable ; le sens du message n’est pas perdu. Il peut être facilement restauré. Chiffrons l'expression « Compact Cipher » à l'aide de ce tableau :

1 2 3 4 5 6 7 8 9 10 11 12 13 14
Phrase À À PROPOS M P. UN À T N Oui Oui Ch ET F R.
Chiffrer bv gardes FR dieu ah bv base de données ab dg enfer Virginie enfer bb Ha

Ainsi, le message final crypté ressemble à ceci : « bvgvgbgdagbvdbabdgvdvaadbbga ». Bien entendu, les Allemands ont suivi une ligne similaire en utilisant plusieurs autres chiffres. Et le résultat était un message crypté très résistant au piratage.

Chiffre de Vigenère

Ce chiffre est d'un ordre de grandeur plus résistant au craquage que les chiffrements monoalphabétiques, bien qu'il s'agisse d'un simple chiffre de remplacement de texte. Cependant, grâce à son algorithme robuste, il a longtemps été considéré comme impossible à pirater. Ses premières mentions remontent au XVIe siècle. Vigenère (un diplomate français) est considéré à tort comme son inventeur. Pour mieux comprendre ce que nous parlons de, considérons la table Vigenère (carré Vigenère, tabula recta) pour la langue russe.

Commençons par chiffrer la phrase « Kasperovich rit ». Mais pour que le cryptage réussisse, vous avez besoin d'un mot-clé - que ce soit « mot de passe ». Commençons maintenant le cryptage. Pour ce faire, on note la clé tellement de fois que le nombre de lettres qu'elle contient correspond au nombre de lettres de la phrase cryptée, en répétant la clé ou en la coupant :

Maintenant, en utilisant le plan de coordonnées, nous recherchons une cellule qui est l'intersection de paires de lettres, et nous obtenons : K + P = b, A + A = B, C + P = B, etc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Chiffrer: Kommersant B DANS Yu AVEC N Yu G SCH ET E Oui X ET G UN L

Nous obtenons que « Kasperovitch rit » = « abvyusnyugshch eykhzhgal ».

Décrypter le chiffre de Vigenère est si difficile car l'analyse de fréquence nécessite de connaître la longueur du mot-clé pour que cela fonctionne. Par conséquent, le piratage consiste à lancer au hasard la longueur d’un mot-clé et à essayer de déchiffrer le message secret.

Il convient également de mentionner qu'en plus d'une clé complètement aléatoire, une clé complètement aléatoire peut être utilisée tableau différent Vigenère. Dans ce cas, le carré Vigenère est constitué de l'alphabet russe écrit ligne par ligne avec un décalage de un. Ce qui nous amène au chiffre ROT1. Et tout comme dans le chiffre de César, le décalage peut être n'importe quoi. De plus, l’ordre des lettres ne doit pas nécessairement être alphabétique. Dans ce cas, la table elle-même peut être une clé, sans savoir laquelle il sera impossible de lire le message, même en connaissant la clé.

Codes

Les vrais codes sont constitués de correspondances pour chaque mot code séparé. Pour travailler avec eux, vous avez besoin de ce qu'on appelle des livres de codes. En fait, il s'agit du même dictionnaire, contenant uniquement des traductions de mots en codes. Un exemple typique et simplifié de codes est Tableau ASCII- chiffre international de caractères simples.

Le principal avantage des codes est qu’ils sont très difficiles à déchiffrer. L'analyse de fréquence ne fonctionne presque pas lors du piratage. La faiblesse des codes, ce sont en fait les livres eux-mêmes. Premièrement, leur préparation est un processus complexe et coûteux. Deuxièmement, pour les ennemis, ils se transforment en un objet désiré, et intercepter ne serait-ce qu'une partie du livre les oblige à changer complètement tous les codes.

Au XXe siècle, de nombreux États utilisaient des codes pour transmettre des données secrètes, modifiant ainsi livre de codes après certaine période. Et ils recherchaient activement les livres de leurs voisins et opposants.

"Énigme"

Tout le monde sait qu’Enigma était la principale machine de cryptage nazie pendant la Seconde Guerre mondiale. La structure Enigma comprend une combinaison de circuits électriques et mécaniques. Le résultat du chiffrement dépend de la configuration initiale de l'Enigma. Dans le même temps, Enigma modifie automatiquement sa configuration pendant le fonctionnement, cryptant un message de plusieurs manières sur toute sa longueur.

Contrairement à la plupart chiffres simples Enigma a donné des milliards combinaisons possibles, ce qui rendait presque impossible la piratage des informations cryptées. À leur tour, les nazis préparaient une combinaison spécifique pour chaque jour, qu’ils utilisaient un jour spécifique pour transmettre des messages. Ainsi, même si Enigma tombait entre les mains de l'ennemi, elle ne contribuait en aucune façon au déchiffrement des messages sans entrer quotidiennement dans la configuration nécessaire.

Ils ont activement tenté de briser Enigma tout au long de la campagne militaire d'Hitler. En Angleterre, en 1936, l'un des premiers appareils informatiques (machine de Turing) a été construit à cet effet, qui est devenu le prototype des ordinateurs du futur. Sa tâche consistait à simuler le fonctionnement de plusieurs dizaines d'Enigmas simultanément et à y faire passer les messages nazis interceptés. Mais même la machine de Turing n’était capable de déchiffrer un message qu’occasionnellement.

Chiffrement à clé publique

L'algorithme de cryptage le plus populaire, utilisé partout dans la technologie et les systèmes informatiques. Son essence réside, en règle générale, dans la présence de deux clés, dont l'une est transmise publiquement et la seconde est secrète (privée). La clé publique est utilisée pour chiffrer le message et la clé secrète pour le déchiffrer.

Le rôle de clé publique est le plus souvent joué par un grand nombre, qui n'a que deux diviseurs, sans compter un et le nombre lui-même. Ensemble, ces deux diviseurs forment la clé secrète.

Regardons un exemple simple. Soit la clé publique 905. Ses diviseurs sont les nombres 1, 5, 181 et 905. Alors la clé secrète sera, par exemple, le nombre 5*181. Diriez-vous que c'est trop simple ? Et si le numéro public est un numéro à 60 chiffres ? Il est mathématiquement difficile de calculer les diviseurs d’un grand nombre.

Pour un exemple plus réaliste, imaginez que vous retirez de l’argent à un guichet automatique. Lorsqu’une carte est lue, les données personnelles sont cryptées avec une certaine clé publique et, du côté de la banque, les informations sont décryptées avec une clé secrète. Et cette clé publique peut être modifiée à chaque opération. Mais il n'existe aucun moyen de trouver rapidement les principaux diviseurs lors de son interception.

Durabilité des polices

La force cryptographique d’un algorithme de chiffrement réside dans sa capacité à résister au piratage. Ce paramètre est le plus important pour tout cryptage. Il est évident qu'un simple chiffre de substitution que n'importe qui peut déchiffrer appareil électronique, est l’un des plus instables.

À ce jour, il n'existe pas de normes uniformes permettant d'évaluer la force d'un chiffre. Il s’agit d’un processus long et laborieux. Cependant, un certain nombre de commissions ont élaboré des normes dans ce domaine. Par exemple, exigences minimalesà l'algorithme Cryptage avancé Encryption Standard ou AES, développé par NIST USA.

Pour référence : le chiffre Vernam est reconnu comme le chiffre le plus résistant au crack. En même temps, son avantage est que, selon son algorithme, il s'agit du chiffre le plus simple.

Au 21e siècle, la cryptographie joue un rôle important dans la vie numérique les gens modernes. Examinons brièvement les moyens de crypter les informations.

La cryptographie n'est pas qu'une simple affaire informatique

Très probablement, vous avez déjà rencontré la cryptographie la plus simple et peut-être connaître certaines méthodes de cryptage. Par exemple, le chiffre de César est souvent utilisé dans les jeux éducatifs pour enfants.

ROT13 est un autre type courant de cryptage de messages. Dans celui-ci, chaque lettre de l'alphabet est décalée de 13 positions, comme le montre la figure :

Comme vous pouvez le constater, ce chiffre n'assure pas une sécurité des informations vraiment fiable : il s'agit d'un exemple simple et compréhensible de toute l'idée de la cryptographie.

Aujourd’hui, nous parlons le plus souvent de cryptographie dans le contexte de certaines technologies. Comment les informations personnelles et financières sont-elles transmises en toute sécurité lorsque nous effectuons un achat en ligne ou consultons des comptes bancaires ? Comment pouvez-vous stocker des données en toute sécurité afin que personne ne puisse simplement ouvrir votre ordinateur, retirer le disque dur et avoir un accès complet à toutes les informations qu'il contient ? Nous répondrons à ces questions et à d’autres dans cet article.

Définitions et guide rapide sur la cybersécurité

En matière de cybersécurité, un certain nombre de choses inquiètent les utilisateurs lorsqu'il s'agit de données. Ceux-ci incluent la confidentialité, l’intégrité et la disponibilité des informations.

Confidentialité– les données ne peuvent pas être reçues ou lues par des utilisateurs non autorisés.

Intégrité des informations– la confiance que les informations resteront intactes à 100 % et ne seront pas modifiées par un attaquant.

Disponibilité des informations– accéder aux données lorsque cela est nécessaire.

Également dans l'article, nous considérerons diverses formes cryptographie numérique et comment ils peuvent aider à atteindre les objectifs énumérés ci-dessus.

Méthodes de cryptage de base :
  • Symétrique
  • Asymétrique
  • Hachage
  • Signature numérique

Cryptage symétrique

Avant de commencer à comprendre le sujet, répondons à une question simple : qu’entend-on exactement par « cryptage » ? Le cryptage est la transformation d'informations afin de les cacher aux personnes non autorisées, tout en fournissant utilisateurs autorisés y accéder.

Pour crypter et déchiffrer correctement les données, vous avez besoin de deux choses : les données et la clé de déchiffrement. Lors de l'utilisation du chiffrement symétrique, la clé de chiffrement et de déchiffrement des données est la même. Prenons une chaîne et chiffrons-la à l'aide de Ruby et OpenSSL :

Rubis

require "openssl" require "pry" data_to_encrypt = "maintenant vous pouvez me lire !" cipher = OpenSSL::Cipher.new("aes256") cipher.encrypt key = cipher.random_key iv = cipher.random_iv data_to_encrypt = cipher.update(data_to_encrypt) + cipher.final Binding.pry true

nécessite "openssl"

nécessiter "faire levier"

chiffrement = OpenSSL :: Cipher. nouveau("aes256")

chiffrer chiffrer

clé = chiffre . clé_aléatoire

iv = chiffre . aléatoire_iv

data_to_encrypt = chiffrement . update(data_to_encrypt) + chiffrement. final

obligatoire. levier

vrai

Voici ce que le programme va afficher :

Veuillez noter que la variable data_to_encrypt, qui était à l'origine la phrase « maintenant tu peux me lire ! » est maintenant un tas ! personnages étranges. Inversons le processus en utilisant la clé initialement stockée dans une variable clé.

Après avoir utilisé la même clé que celle que nous avons définie pour le cryptage, nous déchiffrons le message et obtenons la chaîne d'origine.

Examinons d'autres méthodes de cryptage.

Chiffrement asymétrique

Le problème du chiffrement symétrique est le suivant : supposons que vous deviez envoyer des données sur Internet. Si la même clé est requise pour crypter et déchiffrer les données, il s'avère que la clé doit être envoyée en premier. Cela signifie que vous devrez envoyer la clé via connexion non sécurisée. Mais de cette façon, la clé peut être interceptée et utilisée par un tiers. Pour éviter ce résultat, le cryptage asymétrique a été inventé.

Pour utiliser le chiffrement asymétrique, vous devez générer deux clés mathématiquement liées. L'un est clé privée, auquel vous seul avez accès. Le second est ouvert et accessible au public.

Regardons un exemple de communication utilisant le cryptage asymétrique. Dans celui-ci, le serveur et l'utilisateur s'enverront des messages. Chacun d'eux possède deux clés : privée et publique. Il a été dit plus tôt que les clés étaient connectées. Ceux. un message chiffré avec une clé privée ne peut être déchiffré qu'à l'aide du code adjacent clé publique. Par conséquent, pour démarrer la communication, vous devez échanger des clés publiques.

Mais comment comprendre que la clé publique du serveur appartient à ce serveur en particulier ? Il existe plusieurs façons de résoudre ce problème. La méthode la plus courante (et celle utilisée sur Internet) est l’utilisation d’une infrastructure à clé publique (PKI). Dans le cas des sites Web, il existe une autorité de certification qui dispose d'un répertoire de tous les sites pour lesquels des certificats et des clés publiques ont été délivrés. Lorsque vous vous connectez à un site Web, sa clé publique est d'abord vérifiée par une autorité de certification.

Créons une paire de clés publiques et privées :

Rubis

require "openssl" require "pry" data_to_encrypt = "maintenant vous pouvez me lire !" clé = OpenSSL :: PKey :: RSA.new (2048) liaison.pry vrai

nécessite "openssl"

nécessiter "faire levier"

data_to_encrypt = "vous pouvez maintenant me lire !"

clé = OpenSSL :: PKey :: RSA. nouveau (2048 )

obligatoire. levier

vrai

Il s'avérera :

Veuillez noter que la clé privée et la clé publique sont objets séparés avec des identifiants différents. En utilisant #private_encrypt, vous pouvez chiffrer la chaîne en utilisant clé privée, et en utilisant #public_decrypt– décrypter le message :

Informations de hachage

Le hachage, contrairement au chiffrement symétrique et asymétrique, est une fonction unidirectionnelle. Il est possible de créer un hachage à partir de certaines données, mais il n'existe aucun moyen d'inverser le processus. Cela rend le hachage pas très bon d'une manière pratique stockage de données, mais adapté pour vérifier l'intégrité de certaines données.

La fonction prend certaines informations en entrée et en sortie, semble-t-il, chaîne aléatoire, qui aura toujours la même longueur. La fonction de hachage idéale crée des valeurs uniques pour diverses entrées. La même entrée produira toujours le même hachage. Par conséquent, le hachage peut être utilisé pour vérifier l’intégrité des données.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :