Cours de cryptographie. Chiffres par blocs modernes. Méthodes de cryptage des données - blog du programmeur Web

Annotation: Cette conférence a plusieurs objectifs. Montrez la différence entre les chiffrements à clé symétriques traditionnels et modernes. Apportez du moderne chiffrements par bloc et discuter de leurs caractéristiques. Expliquez pourquoi les chiffrements par blocs modernes devraient être conçus comme des chiffrements de substitution. Présentez les composants des chiffrements par blocs tels que les boîtes P et les boîtes S. Discutez et montrez la différence entre deux classes de chiffrements : les chiffrements de Feistel et les chiffrements non-Feistel. Discutez de deux types d'attaques visant spécifiquement à casser 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. Discuter du linéaire par rapport au non linéaire retour d'information registres à décalage pour implémenter des chiffrements de flux.

Chiffres traditionnels avec clé symétrique que nous avons étudiés jusqu'à présent sont orientés vers les symboles. Avec l'avènement de l'ordinateur, les chiffrements orientés bits sont devenus nécessaires. Parce que les informations à chiffrer ne sont pas toujours uniquement du texte ; il peut également comprendre des chiffres, des graphiques, des données audio et vidéo. Il est pratique de convertir ces types de données en un flux binaire afin de crypter ce flux, puis de transmettre le flux crypté. De plus, lorsque le texte est traité au niveau du bit, 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. Mélanger plus de caractères augmente la sécurité.

Ce chapitre fournit les bases nécessaires à l'apprentissage des chiffrements modernes par blocs et par flux, qui sont traité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

Chiffrement par bloc moderne avec clés symétriques chiffre le bloc de n bits du texte original ou déchiffre le bloc de n bits du texte chiffré. L'algorithme de chiffrement ou de déchiffrement utilise une clé de k bits. L'algorithme de déchiffrement doit être l'inverse de l'algorithme de chiffrement, et tous deux utilisent la même clé de chiffrement en fonctionnement afin que Bob puisse récupérer le message envoyé par Alice. La figure 7.1 montre l'idée générale du chiffrement et du déchiffrement dans un chiffrement par bloc moderne.


Riz. 7.1.

Si le message est inférieur à n bits, un remplissage doit être ajouté pour créer ce bloc de n bits ; si le message a plus de n bits, il doit être scindé en blocs de n bits et, si nécessaire, ajouter un bourrage au dernier bloc. Les valeurs communes pour n sont généralement 64, 128, 256 ou 512 bits.

Exemple 7.1

Combien de bits supplémentaires devez-vous ajouter à un message de 100 caractères si l'ASCII 8 bits est utilisé pour le codage 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 original doit être divisible par 64 sans reste. Si | M | et | Bloc |- longueur du message et longueur de remplissage, puis

| M | + | Bloc | == 0 mod 64 -> | Bloc | = -800 mod 64 -> 32 mod 64

Cela signifie que 32 bits de remplissage (par exemple des zéros) doivent être ajoutés au message. Le texte serait alors de 832 bits, soit treize blocs de 64 bits. Notez que seul le dernier bloc contient un remplissage. Le crypteur utilise l'algorithme de cryptage 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 utilisée dans les chiffrements traditionnels, sauf que les caractères à remplacer ou à déplacer contiennent des bits au lieu de caractères.

Si le chiffre est conçu comme chiffrement de substitution, les valeurs binaires 1 ou 0 dans le texte source peuvent être remplacées par 0 ou 1. Cela signifie que le texte original et le texte chiffré peuvent avoir un nombre différent d'unités. Un bloc de 64 bits de texte original, qui contient 12 zéros et 52 uns, peut être représenté en texte chiffré avec 34 zéros et 30 uns. Si le chiffre est conçu comme chiffrement par permutation (transposition), les bits ne changent que l'ordre (mouvement), en gardant le même nombre de caractères dans l'original et le texte chiffré. Dans tous les cas, le nombre de sources ou de chiffrements de n bits possibles est de 2 n, car chacun des n bits utilisés dans un bloc peut avoir l'une des deux valeurs - 0 ou 1,2 64 blocs de 64 bits pour en trouver un qui rend sens. Si Eve pouvait échantillonner 1 milliard de blocs par seconde, il lui faudrait des centaines d'années pour réussir.

b. Dans le second cas (permutation), Eve sait qu'il y a exactement 10 uns dans le texte original, car la transposition ne change pas le nombre de uns (ou de zéros) dans le texte chiffré. Eve peut lancer une attaque de recherche exhaustive en utilisant uniquement ces blocs de 64 bits qui sont exactement 10 unités. Il n'y a que (64!) / [(10!) (54!)] = 151 473 214 816 de 2 64 mots de 64 bits, soit exactement 10 uns. 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.

09.07.2003

Qu'est-ce que le cryptage ?

Le chiffrement a été utilisé par l'homme dès l'instant où sont apparues les premières informations secrètes, c'est-à-dire dont l'accès doit être limité. C'était il y a très longtemps - par exemple, l'une des méthodes de cryptage les plus célèbres porte le nom de César, qui, s'il ne l'a pas inventé lui-même, l'a ensuite activement utilisé (voir encadré).

La cryptographie permet de cacher le sens d'un message et de le révéler en le déchiffrant à l'aide d'algorithmes et de clés spéciaux. Nous comprenons la clé comme un état secret spécifique des paramètres des algorithmes de chiffrement et de déchiffrement. Connaître la clé permet de lire le message secret. Cependant, comme vous le verrez ci-dessous, la méconnaissance de la clé ne garantit pas toujours que le message ne puisse pas être lu par un étranger.

Le processus consistant à casser un chiffre sans connaître la clé est appelé cryptanalyse. Le temps nécessaire pour casser un chiffre est déterminé par sa force cryptographique. Plus il est grand, plus l'algorithme de cryptage est "fort". C'est encore mieux si vous ne pouvez pas déterminer au départ si le résultat d'un piratage est réalisable.

Méthodes de cryptage modernes de base

Parmi la variété des méthodes de cryptage, on peut distinguer les principales méthodes suivantes :

  • Algorithmes de remplacement ou de substitution - les caractères du texte original sont remplacés par des caractères d'un autre (ou du même) alphabet selon un schéma prédéterminé, qui sera la clé de ce chiffre. Séparément, cette méthode n'est pratiquement pas utilisée dans les cryptosystèmes modernes en raison de la force cryptographique extrêmement faible.
  • Algorithmes de permutation - les caractères du texte original sont intervertis selon un certain principe, qui est une clé secrète. L'algorithme de permutation lui-même a une faible force cryptographique, mais il est inclus en tant qu'élément dans de nombreux systèmes cryptographiques modernes.
  • Algorithmes de mise à l'échelle - les symboles du texte original sont ajoutés aux symboles d'une certaine séquence aléatoire. L'exemple le plus courant est le cryptage des fichiers "username.pwl", dans lequel système opérateur Microsoft Windows 95 stocke les mots de passe pour ressources réseau utilisateur donné(mots de passe d'accès aux serveurs NT, mots de passe d'accès DialUp à Internet, etc.).

Lorsqu'un utilisateur entre son mot de passe lors de la connexion à Windows 95, un gamma (toujours le même) est généré à partir de celui-ci en utilisant l'algorithme de cryptage RC4, qui est utilisé pour le cryptage mots de passe réseau... La facilité de deviner le mot de passe est due dans ce cas au fait que Windows préfère toujours le même gamut.

  • Algorithmes basés sur des transformations mathématiques complexes du texte source selon une certaine formule. Beaucoup d'entre eux utilisent des problèmes mathématiques non résolus. Par exemple, l'algorithme de chiffrement RSA largement utilisé sur Internet est basé sur les propriétés des nombres premiers.

Cryptosystèmes symétriques et asymétriques

Avant de passer aux algorithmes individuels, considérons brièvement le concept de cryptosystèmes symétriques et asymétriques. Générer une clé privée et crypter un message avec elle est la moitié de la bataille. Mais comment envoyer une telle clé à quelqu'un qui est censé l'utiliser pour déchiffrer le message d'origine ? La transmission de la clé de cryptage est considérée comme l'un des principaux problèmes de la cryptographie.

Restant dans le cadre d'un système symétrique (comme on l'appelle car une même clé convient au chiffrement et au déchiffrement), il est nécessaire de disposer d'un canal de communication fiable pour transmettre la clé secrète. Mais un tel canal n'est pas toujours disponible, et c'est pourquoi les mathématiciens américains Diffie, Hellman et Merkle ont développé en 1976 le concept de clé publique et cryptage asymétrique... Dans de tels systèmes cryptographiques, seule la clé du processus de cryptage est publiquement disponible, et la procédure de décryptage n'est connue que du propriétaire de la clé secrète.

Par exemple, lorsque je souhaite recevoir un message, je génère des clés publiques et privées. Je t'envoie ouvert, tu cryptes le message avec et tu me l'envoies. Moi seul peux déchiffrer le message, puisque je n'ai donné la clé secrète à personne. Bien entendu, les deux clés sont liées d'une manière particulière (dans chaque cryptosystème de différentes manières), et la distribution de la clé publique ne détruit pas la force cryptographique du système.

Dans les systèmes asymétriques, l'exigence suivante doit être satisfaite : il n'y a pas un tel algorithme (ou il n'est pas encore connu) qui déduirait le texte source du cryptotexte et de la clé publique. Un exemple d'un tel système est le cryptosystème bien connu RSA.

Algorithme RSA

L'algorithme RSA (selon les premières lettres des noms de ses créateurs Rivest-Shamir-Adleman) est basé sur les propriétés des nombres premiers (et très grands). Les nombres premiers sont les nombres qui n'ont pas de diviseurs, sauf pour eux-mêmes et un. Et les nombres relativement premiers sont des nombres qui n'ont pas de diviseur commun, à l'exception de 1.

Tout d'abord, choisissons deux très grands nombres premiers (de grands nombres initiaux sont nécessaires pour construire de grandes clés cryptographiquement fortes. Par exemple, le programme Unix ssh-keygen génère des clés d'une longueur de 1024 bits par défaut).

Définissons le paramètre m suite à la multiplication p et q... Choisissons un grand nombre aléatoire et appelons-le , et il doit être premier avec le résultat de la multiplication (p -1) * (q -1).

Trouvons un nombre e pour lequel la relation

(e * d) mod ((p -1) * (q -1)) = 1

(mode est le reste de la division, c'est-à-dire si e multiplié par d, divisé par ((p -1) * (q -1)), alors dans le reste on obtient 1).

La clé publique est une paire de nombres e et n, et fermé - d et n.

Lors du cryptage, le texte original est traité comme une série de nombres, et nous effectuons une opération sur chacun de ses nombres

C (i) = (M (i) e) mod n.

Le résultat est la séquence C (je), qui constituera le cryptotexte. Le décodage de l'information se fait selon la formule

M (i) = (C (i) d) mod n.

Comme vous pouvez le voir, le déchiffrement nécessite la connaissance de la clé secrète.

Essayons les petits nombres.

Installer p = 3, q ​​= 7... Puis n = p * q = 21. Nous choisissons comme 5. De la formule (e * 5) mod 12 = 1 calculer e = 17... Clé publique 17, 21 , secrète - 5, 21 .

Chiffrons la séquence "12345":

C (1) = 1 17 mod 21 = 1

C (2) = 2 17 mod 21 = 11

C (3) = 3 17 mod 21 = 12

C (4) = 4 17 mod 21 = 16

C (5) = 5 17 mod 21 = 17

Cryptotexte - 1 11 12 16 17.

Vérifions le décryptage :

M (1) = 1 5 mod 21 = 1

M (2) = 11 5 mod 21 = 2

M (3) = 12 5 mod 21 = 3

M (4) = 16 5 mod 21 = 4

M (5) = 17 5 mod 21 = 5

Comme vous pouvez le voir, le résultat est le même.

Le cryptosystème RSA est largement utilisé sur Internet. Lorsque vous vous connectez à un serveur sécurisé via SSL, installez un certificat WebMoney sur votre PC ou connectez-vous à un serveur distant en utilisant Open SSH ou SecureShell, alors tous ces programmes utilisent le cryptage Clé publique en utilisant les idées de l'algorithme RSA. Ce système est-il vraiment si fiable ?

Concours de piratage RSA

Depuis sa création, RSA a subi des attaques par force brute constantes. En 1978, les auteurs de l'algorithme publiaient un article où ils donnaient une chaîne chiffrée avec une méthode qu'ils venaient d'inventer. La première personne à déchiffrer le message a reçu une récompense de 100 $, mais cela nécessitait qu'un numéro à 129 chiffres soit divisé en deux facteurs. Ce fut la première compétition pour pirater RSA. Le problème n'a été résolu que 17 ans après la publication de l'article.

La force cryptographique de RSA repose sur l'hypothèse qu'il est extrêmement difficile, voire impossible, de déterminer la clé privée à partir de la clé publique. Cela nécessitait de résoudre le problème de l'existence de diviseurs d'un grand entier. Jusqu'à présent, personne ne l'a résolu à l'aide de méthodes analytiques, et l'algorithme RSA ne peut être déchiffré que par une recherche exhaustive. À proprement parler, l'affirmation selon laquelle le problème de l'affacturage est difficile et que briser le système RSA est difficile n'est pas non plus prouvée.

Le numéro obtenu à la suite du traitement du texte du message par la fonction de hachage est chiffré à l'aide de l'algorithme RSA sur la clé privée de l'utilisateur et envoyé au destinataire avec la lettre et une copie de la clé publique. Le destinataire, en utilisant la clé publique de l'expéditeur, exécute la même fonction de hachage sur le message entrant. Si les deux nombres sont égaux, cela signifie que le message est authentique, et si au moins un caractère a été modifié, les nombres ne correspondront pas.

L'un des plus répandus en Russie clients de messagerie, programme La chauve-souris!, a des capacités intégrées pour ajouter des signatures numériques aux lettres (faites attention à l'élément de menu Confidentialité lors de la modification d'une lettre). En savoir plus sur cette technique dans l'article (voir "PC World", n°3/02).

Riz. 3

Cryptographie

La cryptographie est la science des principes, des moyens et des méthodes de transformation de l'information pour la protéger des accès non autorisés et de la distorsion. DANS Ces derniers temps il se développe très, très rapidement. C'est une course sans fin et passionnante qui demande beaucoup de temps et d'efforts : les cryptanalystes sont des algorithmes de crack qui étaient jusqu'à récemment des standards et étaient largement utilisés. Soit dit en passant, récemment les mathématiciens Dan Goldston (USA) et Kem Ildirim (Turquie) ont prouvé la première régularité dans la distribution des nombres premiers (jusqu'à présent, de telles régularités n'ont pas été remarquées). Les nombres premiers sont situés sur l'axe numérique dans certains groupes, ce qui les rend un peu plus faciles à trouver.

La recherche mathématique, menée partout dans le monde, mène constamment à de nouvelles et nouvelles découvertes. Qui sait, peut-être sommes-nous sur le point de casser l'algorithme RSA ou d'autres cryptosystèmes basés sur des problèmes mathématiques non résolus.

Oleg Bounine- spécialiste du développement logiciel pour les grands projets Internet, salarié de Rambler, http://www..htm).

  • Introduction à la cryptographie / Éd. V.V. Iachchenko. Moscou : MTsNMO, 2000.
  • Nosov V. A. Un bref aperçu historique du développement de la cryptographie // Actes de la conférence "L'Université de Moscou et le développement de la cryptographie en Russie", Université d'État de Moscou, 17-18 octobre 2002.
  • Salomaa A. Cryptographie à clé publique. M., 1996.
  • Zimmermann F. PGP - Chiffrement à clé publique pour tous.
  • Le système de cryptage de Caesar

    Un exemple d'algorithme de remplacement est le système de cryptage de Caesar. Cette méthode est basée sur le remplacement de chaque lettre du message par une autre en décalant par rapport à l'original un nombre fixe de caractères. Essayez de déchiffrer le quatrain d'Omar Khayyam (temps d'exécution - 10 minutes).

    RLZ YOMEYZ AVBZHU IYZAVLU, BZHSCHLU ZHSCHEZZHZ ZHYUESHEZ, EYSCH YSHAZHFO ISYCHYVESH BSHIZEZHV EESH ZHCHRSCHCH : LF EMRSU YZEZESHG, RYU RLZ ISCHEESYUZYUZYUKLUUK ISCHYZYZYURLZYLUUK ISCHYUZYU

    Étiez-vous à l'heure ? Voici une "solution":

    Pour vivre sagement, il faut en savoir beaucoup,

    Deux règles importantes n'oubliez pas de commencer :

    Tu ferais mieux de mourir de faim que de manger quoi que ce soit

    Et il vaut mieux être seul qu'avec n'importe qui.

    Clé de déchiffrement : décalez sept caractères (prenez le septième) vers la gauche par ordre alphabétique. L'alphabet est bouclé. Les caractères ne sont pas sensibles à la casse.

    Windows et mots de passe

    Comment Windows crypte les mots de passe ?

    Le système prend le mot de passe, le convertit en majuscules, le tronque à 14 caractères, puis les divise en deux moitiés de 7, crypte chacun séparément et le stocke de cette façon, ce qui le rend un peu plus facile à craquer. Soit dit en passant, lorsque vous proposez un mot de passe, gardez à l'esprit qu'une combinaison de plus de 14 caractères n'a pas de sens.

    Concours AES (Advanced Encryption Standard)

    Dans les années 80. aux États-Unis a adopté une norme de cryptage symétrique à usage interne - DES ((Data Encryption Standard, il existe une norme similaire en Russie). Mais en 1997, lorsqu'il est devenu clair que la clé DES 56 bits n'était pas suffisante pour un cryptosystem, l'American Standards Institute a annoncé un concours pour un nouvel algorithme standard, sur 15 options, la meilleure a été choisie : l'algorithme belge Rijndael (son nom est composé des noms de famille des auteurs - Rijmen et Daemen, se lit "Reindal". Cet algorithme est déjà intégré à divers outils cryptographiques fournis sur le marché. La concurrence était MARS, RC6, Serpent, TwoFish Tous ces algorithmes se sont avérés assez robustes et opposés avec succès à toutes les méthodes de cryptanalyse bien connues.

    Fonctions de hachage cryptographique

    Les fonctions de hachage cryptographique convertissent les données d'entrée de n'importe quelle taille en une chaîne de taille fixe. Il leur est extrêmement difficile de trouver :

    • deux ensembles de données différents avec le même résultat de transformation (résistance aux collisions) ; par exemple, le nombre d'opérations arithmétiques nécessaires pour trouver un bloc de données ayant également un message court pour la fonction de hachage MD5 est d'environ 2 64 ;
    • une valeur d'entrée basée sur un résultat de hachage connu (irréversibilité) ; pour MD5, le nombre estimé d'opérations nécessaires pour calculer le message d'origine est de 2 128.

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

    La cryptographie n'est pas seulement une sorte de chose informatique

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

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

    Comme vous pouvez le voir, ce chiffrement ne fournit pas vraiment protection fiable information : c'est un exemple simple et direct de toute l'idée de la cryptographie.

    Aujourd'hui, nous parlons le plus souvent de cryptographie dans le contexte d'une sorte de technologie. Comment les informations personnelles et financières sont-elles transférées en toute sécurité lorsque nous achetons en ligne ou consultons des comptes bancaires ? Comment les données peuvent-elles être stockées en toute sécurité afin que personne ne puisse simplement ouvrir l'ordinateur, retirer le disque dur et avoir accès totalà toutes les informations à ce sujet? Nous répondrons à ces questions et à d'autres dans cet article.

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

    Il y a un certain nombre de choses dans la cybersécurité qui inquiètent les utilisateurs en ce qui concerne les données de toute nature. Il s'agit notamment de la confidentialité, de l'intégrité et de 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- confiance que les informations resteront intactes à 100% et ne seront pas modifiées par un attaquant.

    Disponibilité des informations- avoir accès aux données en cas de besoin.

    L'article examinera également les différentes formes de cryptographie numérique et comment elles peuvent aider à atteindre les objectifs énumérés ci-dessus.

    Méthodes de cryptage de base :
    • Symétriquement
    • 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 « chiffrement » ? Cryptage - transformation d'informations afin de les cacher aux personnes non autorisées, tout en permettant aux utilisateurs autorisés d'y accéder.

    Pour chiffrer et déchiffrer correctement les données, vous avez besoin de deux choses : les données et la clé de déchiffrement. Avec le cryptage symétrique, la clé de cryptage et de décryptage 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"

    besoin de "faire levier"

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

    chiffrer. Crypter

    clé = chiffre. clé_aléatoire

    iv = chiffre. aléatoire _ iv

    data_to_encrypt = chiffre. mise à jour (data_to_encrypt) + chiffrement. final

    contraignant. faire levier

    vrai

    Voici ce que le programme affichera :

    Notez que la variable data_to_encrypt qui était à l'origine la chaîne "maintenant vous pouvez me lire!" est maintenant un tas de caractères incompréhensibles. Inversez le processus en utilisant la clé qui était initialement stockée dans une variable clé.

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

    Examinons également d'autres méthodes de cryptage.

    Cryptage asymétrique

    Le problème avec le cryptage symétrique est le suivant : supposons que vous vouliez envoyer des données sur Internet. Si la même clé est requise pour chiffrer et déchiffrer les données, il s'avère que vous devez d'abord envoyer la clé. Cela signifie que vous devrez envoyer la clé via une 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é.

    Afin d'utiliser le cryptage asymétrique, deux clés mathématiquement liées doivent être générées. L'un est Clé privée auquel vous seul pouvez accéder. La seconde est ouverte, qui est accessible au public.

    Considérons un exemple de communication utilisant le cryptage asymétrique. Dans celui-ci, le serveur et l'utilisateur s'enverront des messages. Chacun d'eux a deux clés : privée et publique. Plus tôt, il a été dit que les clés sont cohérentes. Ceux. un message chiffré avec une clé privée ne peut être déchiffré qu'à l'aide de la clé publique adjacente. Par conséquent, pour démarrer la communication, vous devez échanger des clés publiques.

    Mais comment savez-vous que la clé publique du serveur appartient à ce serveur particulier ? Il existe plusieurs façons de résoudre ce problème. La méthode la plus courante (et celle utilisée sur Internet) consiste à utiliser 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 auxquels des certificats et des clés publiques ont été délivrés. Lors de la connexion à un site Web, sa clé publique est d'abord vérifiée par une autorité de certification.

    Créons une paire de clés publique et privée :

    Rubis

    require "openssl" require "pry" data_to_encrypt = "maintenant vous pouvez me lire !" key = OpenSSL :: PKey :: RSA.new (2048) binding.pry true

    nécessite "openssl"

    besoin de "faire levier"

    data_to_encrypt = "maintenant vous pouvez me lire !"

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

    contraignant. faire levier

    vrai

    Il s'avérera :

    Notez que la clé privée et la clé publique sont des entités distinctes avec des identifiants différents. En utilisant #private_encrypt, il est possible de chiffrer la chaîne avec la 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 à sens unique. Il est possible de créer un hachage à partir de certaines données, mais il n'y a aucun moyen d'inverser le processus. Cela fait du hachage un moyen peu pratique de stocker des données, mais il convient pour vérifier l'intégrité de certaines données.

    La fonction prend des informations en entrée et génère une chaîne apparemment aléatoire, qui sera toujours de la même longueur. Une fonction de hachage idéale crée des valeurs uniques pour différentes 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.

    introduction

    Le problème de la protection de l'information en la transformant, en excluant sa lecture par une personne non autorisée a longtemps inquiété l'esprit humain. L'histoire de la cryptographie a le même âge que l'histoire du langage humain. De plus, à l'origine, l'écriture elle-même était un système cryptographique, puisque dans les sociétés anciennes, seuls quelques privilégiés en étaient propriétaires.

    Les livres sacrés de l'Egypte ancienne, de l'Inde ancienne en sont des exemples.

    Avec l'utilisation généralisée de l'écriture, la cryptographie a commencé à se former en tant que science indépendante. Les premiers cryptosystèmes se trouvent déjà au début de notre ère. Ainsi, César dans sa correspondance a utilisé un chiffre plus ou moins systématique qui a reçu son nom.

    Les systèmes cryptographiques se sont rapidement développés au cours des Première et Seconde Guerres mondiales. De l'après-guerre à nos jours, l'avènement de l'informatique a accéléré le développement et l'amélioration des méthodes cryptographiques.

    Pourquoi le problème de l'utilisation de méthodes cryptographiques dans systèmes d'information(IP) est devenu particulièrement pertinent en ce moment ?

    D'une part, l'utilisation de réseaux informatiques, en particulier réseau mondial L'Internet, à travers lequel sont transmis de grands volumes d'informations de nature étatique, militaire, commerciale et privée, qui ne permet pas aux personnes non autorisées d'y accéder.

    D'autre part, l'émergence de nouveaux ordinateurs puissants, de technologies de réseau et de calcul neuronal a permis de discréditer les systèmes cryptographiques qui étaient jusqu'à récemment considérés comme pratiquement indétectables.

    Dans le premier chapitre de ce travail, vous pourrez vous familiariser avec les concepts de base de la cryptographie moderne, leurs exigences, les possibilités de son application pratique.

    Dans le deuxième chapitre de travail avec des protocoles pour la distribution de clés cryptographiques, le concept signature électronique et les protocoles de signature électronique ..

    Le troisième chapitre de ce travail parle des fonctions de hachage et des (méthodes) algorithmes pour leur construction.

    Le quatrième chapitre traitera de la modernisation de la signature électronique d'El Gamal et du problème du logarithme discret.

    Chapitre 1. Concepts de base de la cryptographie moderne

    La cryptologie (kryptos - secret, logos - science) traite le problème de la protection de l'information en la transformant. La cryptologie est divisée en deux domaines - la cryptographie et la cryptanalyse. Les objectifs de ces directions sont exactement le contraire.

    La cryptographie s'occupe de trouver et de rechercher des méthodes mathématiques pour transformer l'information.

    Le domaine d'intérêt de la cryptanalyse est l'étude de la possibilité de décrypter des informations sans en connaître les clés.

    Ce travail portera sur les techniques cryptographiques.

    La cryptographie moderne comprend quatre sections principales :

    Cryptosystèmes symétriques.

    Cryptosystèmes à clé publique.

    Systèmes de signature électronique.

    Gestion des clés.

    Les principales directions d'utilisation des méthodes cryptographiques sont le transfert d'informations confidentielles via des canaux de communication (par exemple, E-mail), authentification des messages transmis, stockage d'informations (documents, bases de données) sur des supports sous forme cryptée.

    La cryptographie permet de transformer l'information de telle manière que sa lecture (récupération) n'est possible qu'avec la connaissance de la clé.

    Comme informations à crypter et décrypter, les textes basés sur un certain alphabet seront considérés. Ces termes signifient ce qui suit.

    L'alphabet est un ensemble fini de caractères utilisés pour coder des informations.

    Le texte est une collection ordonnée d'éléments alphabétiques.

    Voici des exemples d'alphabets utilisés dans l'IP moderne :

    alphabet Z33 - 32 lettres de l'alphabet russe et un espace;

    alphabet Z256 - caractères inclus dans les codes ASCII et KOI-8 standard;

    alphabet binaire - Z2 = (0,1) ;

    alphabet octal ou alphabet hexadécimal;

    Le chiffrement est un processus transformationnel : le texte original, également appelé texte brut, est remplacé par du texte chiffré.

    Le déchiffrement est le processus inverse du chiffrement. Sur la base de la clé, le texte chiffré est converti en celui d'origine.

    La clé est l'information nécessaire au cryptage et au décryptage sans entrave des textes.

    Un système cryptographique est une famille de transformations en T du texte en clair. Les membres de cette famille sont indexés, ou désignés par le symbole k ; le paramètre k est la clé. L'espace de clé K est l'ensemble des valeurs de clé possibles. Typiquement, une clé est une série séquentielle de lettres de l'alphabet.

    Les cryptosystèmes sont divisés en clé symétrique et clé publique.

    Dans les cryptosystèmes symétriques, la même clé est utilisée à la fois pour le cryptage et le décryptage.

    Les systèmes à clé publique utilisent deux clés, publique et privée, qui sont mathématiquement liées l'une à l'autre. Les informations sont chiffrées à l'aide d'une clé publique accessible à tous et déchiffrées à l'aide d'une clé privée connue uniquement du destinataire du message. Les termes distribution de clés et gestion de clés désignent les processus d'un système de traitement de l'information dont le contenu est la compilation et la distribution de clés entre utilisateurs.

    Une signature électronique (numérique) est une transformation cryptographique attachée au texte, qui permet, lorsque le texte est reçu par un autre utilisateur, de vérifier la paternité et l'authenticité du message.

    La résistance cryptographique est une caractéristique d'un chiffrement qui détermine sa résistance au déchiffrement sans connaître la clé (c'est-à-dire la cryptanalyse). Il existe plusieurs indicateurs de force cryptographique, notamment :

    le nombre de toutes les clés possibles ;

    temps moyen requis pour la cryptanalyse.

    La transformation Tk est déterminée par l'algorithme correspondant et la valeur du paramètre k. L'efficacité du chiffrement afin de protéger les informations dépend du maintien du secret de la clé et de la force cryptographique du chiffre.

    Le processus de fermeture des données cryptographiques peut être effectué à la fois de manière logicielle et matérielle. La mise en œuvre matérielle est nettement plus coûteuse, mais elle présente également des avantages : hautes performances, simplicité, sécurité, etc. La mise en œuvre du logiciel est plus pratique et permet une certaine souplesse d'utilisation.

    Pour les systèmes de sécurité des informations cryptographiques modernes, les exigences généralement acceptées suivantes sont formulées :

    le message chiffré ne doit être lisible que si la clé est présente ;

    le nombre d'opérations nécessaires pour déterminer la clé de chiffrement utilisée à partir du fragment du message chiffré et du texte en clair correspondant ne doit pas être inférieur au nombre total de clés possibles ;

    le nombre d'opérations nécessaires pour déchiffrer les informations en énumérant toutes les clés possibles doit avoir une limite inférieure stricte et aller au-delà des capacités ordinateurs modernes(compte tenu de la possibilité d'utiliser l'informatique en réseau) ;

    la connaissance de l'algorithme de chiffrement ne doit pas affecter la fiabilité de la protection ;

    une légère modification de la clé doit entraîner une modification significative du type de message chiffré, même en utilisant la même clé ;

    les éléments structurels de l'algorithme de chiffrement doivent être inchangés ;

    les bits supplémentaires introduits dans le message pendant le processus de cryptage doivent être complètement et sûrement cachés dans le texte chiffré ;

    la longueur du texte chiffré doit être égale à la longueur du texte original ;

    il ne devrait pas y avoir de dépendances simples et faciles à établir entre les clés qui sont systématiquement utilisées dans le processus de chiffrement ;

    toute clé parmi un ensemble de clés possibles devrait fournir une protection fiable des informations ;

    l'algorithme doit permettre à la fois la mise en œuvre logicielle et matérielle, tandis que la modification de la longueur de la clé ne doit pas conduire à une détérioration qualitative de l'algorithme de chiffrement.

    Chapitre 2. Protocoles de distribution de clés cryptographiques et protocoles de signature électronique.

    Quelle que soit la complexité et la fiabilité des systèmes cryptographiques, leur point faible dans la mise en œuvre pratique - le problème de la distribution des clés. Afin de pouvoir échanger information confidentielle entre deux sujets IP, la clé doit être générée par l'un d'eux, puis en quelque sorte, toujours de manière confidentielle, transférée à l'autre. Ceux. dans le cas général, le transfert de la clé nécessite à nouveau l'utilisation d'une sorte de cryptosystème.

    Pour résoudre ce problème, sur la base des résultats obtenus par l'algèbre classique et moderne, des systèmes à clé publique ont été proposés.

    Leur essence réside dans le fait que chaque destinataire IP génère deux clés liées entre elles selon une certaine règle. Une clé est déclarée publique et l'autre privée. La clé publique est publiée et accessible à toute personne souhaitant envoyer un message au destinataire. La clé secrète est gardée secrète.

    Le texte original est crypté avec la clé publique du destinataire et lui est transmis. Le texte chiffré, en principe, ne peut pas être déchiffré par le même


    clé. Le déchiffrement d'un message n'est possible qu'à l'aide d'une clé privée, qui n'est connue que du destinataire lui-même.

    Les systèmes cryptographiques à clé publique utilisent des fonctions dites irréversibles ou unidirectionnelles, qui ont la propriété suivante : pour une valeur donnée de x, il est relativement facile de calculer la valeur de f (x), mais si y = f (x) , alors il n'y a pas de moyen simple de calculer la valeur de x.

    De nombreuses classes de fonctions irréversibles et donne lieu à toute la variété des systèmes à clé publique. Cependant, toutes les fonctions irréversibles ne conviennent pas à une utilisation dans de vrais circuits intégrés.

    Comme vous vous en souvenez, les chiffrements par décalage, les chiffrements de substitution, les permutations et les chiffrements Vernam appliquent une opération à chaque caractère spécifique du texte. Vous devez décaler - nous décalons le caractère, appliquons la clé - appliquons au caractère, puis au caractère suivant, et ainsi de suite, jusqu'à ce que nous cryptions tous les caractères du texte en clair. Cette méthode de cryptage est appelée streaming - nous cryptons chaque caractère séparément. Il existe une autre approche : diviser le texte en clair d'origine en groupes de plusieurs caractères (blocs) et effectuer des opérations de chiffrement dans chaque bloc. Il s'agit d'une méthode de cryptage par bloc.

    Pour faire la différence entre les chiffrements par bloc et par flux, nous allons donner un exemple utilisant un chiffrement de remplacement simple.

    Cryptage de flux

    Chiffrons le mot CIPHER avec le chiffrement de flux de remplacement :

    Chaque caractère a été crypté et a reçu un texte chiffré. Peasy facile.

    BLOC DE CRYPTAGE

    Chiffrons le mot AVADAKEDAVRA. Puisque le chiffrement est un bloc, nous allons diviser le texte brut en blocs de quatre caractères : AVAD | AKED | AVRA (en pratique, les blocs de texte sont de 64-256 bits). Créons notre propre table de remplacement pour chaque bloc :

    Et maintenant, nous chiffrons chacun des blocs avec l'alphabet correspondant :
    Cela s'est avéré un peu mieux que l'approche en ligne en termes de résilience. Après tout, nous avons appris à déchiffrer le chiffrement de remplacement habituel avec un gauche. Et avec une telle approche de bloc, un attaquant devra se casser la tête avant de pouvoir choisir la longueur du bloc et même ensuite appliquer une cryptanalyse pour les chiffrements de remplacement pour chaque bloc.

    RÉSEAU FEITEL

    Nous sommes maintenant prêts à passer à un sujet très important qui ouvre la porte à un monde sans fin. systèmes modernes chiffrement. Le réseau Feistel est une méthode de chiffrement par bloc développée par Horst Feistel dans le laboratoire IBM en 1971. Aujourd'hui, le réseau Feistel sous-tend un grand nombre de protocoles cryptographiques. Essayons de deviner "sur les doigts" ce que c'est.

    Le réseau Feistel fonctionne avec des blocs de texte brut, nous allons donc considérer le mécanisme de son fonctionnement sur l'un des blocs. Avec le reste des blocs, les actions seront similaires.

    • Le bloc est divisé en deux parties égales - gauche (L) et droite (R).
    • Après division, le sous-bloc de gauche est modifié par la fonction f à l'aide de la touche K : x = f (L, K). En fonction, vous pouvez imaginer n'importe quelle transformation que vous souhaitez - par exemple, le bon vieux chiffrement à décalage avec la clé K.
    • Le sous-bloc résultant est ajouté modulo 2 avec le sous-bloc de droite R, qui était en panne auparavant : x = x + R
    • De plus, les pièces résultantes sont échangées et collées ensemble.

    Comme vous pouvez le voir, tout est assez simple. Pour comprendre comment cela fonctionne, regardez le schéma :

    C'est ce qu'on appelle une cellule de Feistel. Le réseau Feistel lui-même se compose de plusieurs cellules. Les sous-blocs obtenus en sortie de la première cellule vont à l'entrée de la deuxième cellule, les sous-blocs résultants de la deuxième cellule vont à l'entrée de la troisième cellule, et ainsi de suite, en fonction du nombre de tours de le réseau Feistel. Chacun de ces tours applique une clé de tour prédéterminée. Le plus souvent, les clés rondes sont dérivées de la clé secrète principale K. Lorsque tous les tours sont terminés, les sous-blocs du texte sont collés entre eux, et un texte chiffré normal est obtenu.

    Voyons maintenant comment fonctionne le réseau Feistel avec un exemple. Prenons le mot AVADAKEDAVRA et divisons-le en deux blocs de six caractères - AVADAK | EDAVRA. En fonction, on prend le chiffrement par décalage par le nombre de positions défini par la clé ronde. Soit la clé secrète K =. Nous prenons comme touches rondes K = 1, K = 2. Pour l'addition modulo 2, nous traduisons le texte en un code binaire selon l'alphabet télégraphique, que presque personne d'autre n'utilise.

    Voici ce qui s'est passé :

    Exécutons maintenant le premier bloc à travers le réseau Feistel à partir de deux tours :

    Essayez de crypter le deuxième bloc vous-même, j'ai MOSSTR.

    Le déchiffrement s'effectue de la même manière : le texte chiffré est divisé en blocs puis en sous-blocs, le sous-bloc de gauche entre dans la fonction, ajouté modulo 2 avec celui de droite, puis les sous-blocs sont intervertis. La différence réside dans le fait que les touches rondes sont servies dans l'ordre inverse, c'est-à-dire que dans notre cas, nous utilisons au premier tour la touche K = 2, puis au second tour K = 1.

    Des études sur le réseau de Feistel ont montré qu'avec des clés rondes indépendantes et une fonction pseudo-aléatoire f cryptographiquement forte, trois tours du réseau de Feistel suffiront pour que le texte chiffré soit pseudo-aléatoire. Cela suggère que les chiffrements basés sur le réseau de Feistel sont actuellement assez forts du point de vue cryptographique.

    GOST 28147-89 (MAGMA)

    L'arsenal contient déjà presque tous les concepts nécessaires, nous sommes donc prêts à passer au premier sujet important de la cryptographie domestique - GOST 28147-89. Cela vaut la peine de dire que seuls les paresseux n'ont pas encore écrit sur cette norme, je vais donc essayer pour la première fois d'expliquer brièvement et sans nuage de formules l'essence des modes de cryptage du grand et terrible Magma. Si vous décidez de lire la norme elle-même, vous devez alors faire le plein de temps, d'énergie, de patience et de nourriture, car, comme vous le savez, il est strictement interdit d'écrire des normes en langage humain.

    Principales caractéristiques : clé 256 bits, bloc 64 bits.

    Avant d'analyser Magma, vous devez apprendre un nouveau concept - les tables de remplacement ou les S-box. Il s'agit d'une table du même type que la table du chiffrement de remplacement. Il est destiné à remplacer les symboles de sous-blocs par des symboles fixés dans le tableau. Ne pensez pas que la S-box est constituée de nombres aléatoires générés par la fonction rand(). Les S-box sont le résultat de séquences générées bien pensées, car elles contiennent la force cryptographique de l'ensemble du chiffrement.

    GOST 28147 caractérise très parcimonieusement ses tables de remplacement. Il dit seulement qu'ils sont un élément secret supplémentaire (avec la clé secrète) et "sont fournis dans ordre établi". Rien d'autre. Depuis l'adoption de GOST 28147, l'incertitude scientifique et technique associée au choix des S-box a généré des rumeurs et des spéculations. Il a été question de critères secrets connus uniquement des développeurs GOST. Naturellement, cette incertitude a réduit la crédibilité du cryptosystème.

    Cette lacune a fourni un excellent terrain pour critiquer la norme. Le cryptographe français Nicolas Courtois a publié plusieurs articles contenant un certain nombre de dispositions controversées concernant la force de GOST. Courtois estime qu'il est facile de construire une attaque contre le standard russe et ne peut en aucun cas être classé parmi les standards internationaux. Cependant, Courtois effectue son analyse pour les boîtes S différentes de celles actuelles, vous ne devez donc pas vous fier à son opinion.

    Et maintenant, voyons ce qu'ils ont inventé dans les murs de la sombre Loubianka.

    Mode de remplacement facile

    Dans le mode de substitution simple à 32 tours, selon la norme, nous avons besoin de 32 touches rondes. Pour générer des clés rondes, la clé d'origine de 256 bits est divisée en huit blocs de 32 bits : K1 ... K8. Les touches K9 ... K24 sont une répétition cyclique des touches K1 ... K8. Les touches K25 ... K32 sont les touches K8 ... K1.

    1. Chaque bloc de 64 bits est divisé en deux sous-blocs - Ai et Bi.
    2. Le sous-bloc gauche Ai est ajouté modulo 232 avec la touche ronde K1 : Ai + 1 = Ai + Ki mod 232.
    3. Le sous-bloc de gauche passe par la S-box.
    4. Les bits du sous-bloc gauche sont décalés de 11 positions (décalage cyclique).
    5. Le sous-bloc de gauche est ajouté à celui de droite modulo 2 : A = A B. iii
    6. Le sous-bloc droit prend la valeur initiale du sous-bloc gauche : Bi + 1 = Ai.
    7. Les sous-blocs sont échangés.

    Juste un exemple d'un tour. Clé de 256 bits :

    arvadek adava arvadek adava arvadek adava arvadek adava arva

    00011 01010 11110 00011 01001 00001 01111 00011 01001 00011 11110

    00011... . . . 00011 01010 11110 0

    Puis les touches rondes

    K1 = 00011 01010 11110 00011 01001 00001 01

    K2 = 111 00011 01001 00011 11110 00011 0001

    K3 =. ... ...

    S - case = [1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12]

    Comment utiliser une telle S-box ? Très simple! Si l'entrée de la S-box est 0, alors la sortie sera 1 (on prend le 0ème caractère de la S-box), si 4, alors la sortie sera 5 (on prend le 4ème caractère), si l'entrée est 7, alors la sortie est 4, etc.

    Texte brut :

    Divisé en deux blocs de 32 bits de bits haut et bas :

    L'exemple, bien sûr, s'est avéré être un exemple sauvage, car GOST n'est toujours pas un standard tel que tout le monde puisse le toucher avec des stylos.

    Le mode de remplacement simple est trop simple et présente des inconvénients importants :

    • une erreur dans un bloc de chiffrement déforme tous les bits de ce bloc ;
    • lors du cryptage de blocs identiques de texte en clair, des blocs identiques de texte chiffré sont obtenus, ce qui peut donner certaines informations à un cryptanalyste.

    Ainsi, il est conseillé d'utiliser GOST 28147-89 en mode de remplacement simple uniquement pour chiffrer les données clés.

    MODE JEU

    Ce mode n'a pas d'inconvénients par rapport au mode de remplacement simple. Le mode gamma est appelé ainsi car il utilise gamma - une séquence pseudo-aléatoire, qui à chaque tour est ajoutée modulo 2 avec du texte brut. Le gamma est formé à partir du message de synchronisation S - une séquence pseudo-aléatoire qui change à chaque itération et subit un cryptage dans le mode de remplacement simple, après quoi il se transforme en gamma et se superpose au texte brut.

    Et maintenant tout est en ordre.

    Les étapes 3 à 5 sont répétées pour chaque bloc. Toutes ces manipulations sont visibles sur le schéma.

    Le déchiffrement est effectué de la même manière, au lieu d'un bloc de texte en clair, un bloc de texte chiffré est fourni.

    Mode gamma avec rétroaction

    On passe à la complication. L'algorithme est similaire au mode gamma, mais le gamma est généré sur la base du bloc précédent de données chiffrées, de sorte que le résultat du chiffrement du bloc actuel dépend également des blocs précédents. 1. Message synchrone S - Séquence pseudo-aléatoire de 64 bits.

    2. S est crypté en mode d'échange facile.
    3. Le texte brut est ajouté modulo 2 avec la gamme résultante.
    4. Le texte chiffré reçu est envoyé en tant que message de synchronisation pour le bloc suivant et est également envoyé à la sortie. À quoi cela ressemble peut être vu dans le diagramme.

    Mode simulation

    Dans ce mode, un insert d'imitation est généré - un bloc supplémentaire d'une longueur fixe, en fonction du texte source et des clés. Un si petit bloc est nécessaire pour confirmer que la corruption n'a pas été accidentellement ou intentionnellement introduite dans le texte chiffré - c'est-à-dire pour vérifier l'intégrité. Ce mode fonctionne comme ceci :

    1. Le bloc de texte en clair passe par 16 tours en mode de substitution simple.
    2. Un autre bloc de texte en clair est ajouté au bloc résultant modulo 2.
    3. La somme fait 16 tours supplémentaires dans le mode de substitution simple.
    4. Le prochain bloc de texte en clair est ajouté et à nouveau remplacement simple et ainsi de suite jusqu'à épuisement des blocs de texte en clair.

    Pour vérification, le destinataire, après avoir déchiffré le texte, effectue une procédure similaire à celle décrite. Si le résultat ne coïncide pas avec l'insert d'imitation transmis, tous les blocs M correspondants sont considérés comme faux.

    GOST 34.12-2015 (Kuznechik)

    Beaucoup considèrent GOST 28147-89 moralement dépassé et insuffisamment stable par rapport aux algorithmes étrangers. Pour le remplacer, les cryptographes nationaux ont publié une nouvelle norme de cryptage. Ils disent que cela s'est produit soit à cause d'un grand nombre d'attaques sur l'ancien GOST, soit parce qu'une telle longueur de bloc est déjà obsolète et trop petite pour les tableaux de données modernes. Personne n'annonce les vraies raisons. Bien sûr, il y a eu quelques changements dans les principales caractéristiques.

    Principales caractéristiques : clé 256 bits, bloc 128 bits.

    Il convient également de mentionner que dans la nouvelle norme, les boîtes S sont fixes et bien pensées, vous ne devriez donc pas inventer vos propres substitutions aléatoires miraculeuses. Dans le nouveau GOST, il y a beaucoup plus de modes de cryptage :
    mode de remplacement facile (Electronic Codebook, BCE);
    mode gamma (Compteur, CTR);
    mode gamma avec retour de sortie (Output Feedback, OFB) ;
    mode de remplacement simple avec engagement (Cipher Block Chaining, CBC) ;
    mode gamma avec retour de chiffrement (Cipher Feedback, CFB);
    mode de génération d'un insert simulé (algorithme Message Authentication Code).

    Considérons les nouveaux modes.

    Mode d'échange simple de maillage

    Comme on l'a vu dans la norme précédente, le mode de remplacement simple est le plus faible des modes. Par conséquent, dans la nouvelle norme, il apparaît maintenant avec engagement et n'est pas devenu si simple du tout.

    1. Le vecteur d'initialisation semble effrayant, mais en réalité, il ne s'agit que d'une séquence de bits entrant dans l'entrée.
    2. Le vecteur est divisé en deux parties - L et R, dont l'une est ajoutée modulo 2 avec du texte brut, et l'autre devient la moitié du vecteur d'initialisation pour le bloc suivant.
    3. La somme du texte en clair et d'une tranche du vecteur d'initialisation passe par le chiffrement de remplacement simple.
    4. Les blocs de texte chiffré résultants sont collés ensemble.

    Cela vaut la peine de regarder le diagramme et tout devient immédiatement clair.

    Bien entendu, le vecteur d'initialisation n'est pas si simple : il passe par une série de transformations linéaires (à l'aide d'un registre à décalage linéaire) avant de commencer à chiffrer un nouveau bloc. Mais pour se familiariser avec le chiffrement, il suffit d'imaginer un tel schéma. Le décryptage dans ce mode n'est pas non plus tout à fait évident, il vaut donc mieux regarder le schéma.

    Pour les pros - Chiffrements. Parmi les développements nationaux, il s'agit du fournisseur de crypto CryptoPro CSP.

    Quelques mots sur la force des modes de cryptage. De nombreux cryptographes étrangers ont tenté de lever la main contre notre norme, mais pour le moment, aucune attaque connue ne peut être mise en œuvre au niveau de développement technologique moderne. Pendant longtemps, cette norme n'était pas très populaire parmi les programmeurs, car il est difficile de comprendre l'algorithme de travail à partir de son texte et il n'y a pas assez de descriptions claires. Mais maintenant, il est déjà plein d'implémentations dans de nombreux langages de programmation. Alors maintenant, l'utilisation de GOST est assez réaliste et dépasse à bien des égards les normes étrangères. Après tout, où est le patriotisme ?!

    Vous avez aimé l'article ? A partager entre amis :