Cryptage divertissant. Cours de cryptographie. Chiffres par blocs modernes

Annotation: Cette conférence a plusieurs objectifs. Montrez la différence entre les chiffrements à clé symétriques traditionnels et modernes. Apportez des chiffrements par blocs modernes et discutez 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 de flux modernes.

7.1. Chiffres par blocs modernes

Un chiffrement par bloc de clé symétrique moderne crypte un bloc de n bits du texte original ou déchiffre un 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 l'encodage 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 du 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". Mieux encore, 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é 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 le système d'exploitation Microsoft Windows 95 stocke les mots de passe pour ressources réseau cet utilisateur (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 crypter les 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 de 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 système cryptographique de manières différentes), et la distribution de la clé publique ne détruit pas la force cryptographique du système.

Dans les systèmes asymétriques, la condition suivante doit être remplie : il n'existe pas (ou il n'est pas encore connu) un tel algorithme 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 premiers entre eux 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- 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 vous connectez à un serveur distant en utilisant Open SSH ou SecureShell, 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 prime de 100 $, mais cela nécessitait de factoriser le nombre à 129 chiffres 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 elle méthodes analytiques personne n'a décidé, et l'algorithme RSA ne peut être brisé que par la force brute. À 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 signatures numériques aux lettres (faites attention à l'élément de menu Confidentialité lors de l'édition 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 YYSCHAZHFO ISYSCHYVESCH BSHIZEZHV EESH ZHRSCHCH : LF EMRSU YZEZESHCHG, RYUO RLZ ISCHEESYUZYUKYUKLUYUKLUZYUKYYEES

    É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é dans 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.

    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. Étant donné que le chiffre 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.

    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, nous prenons le chiffrement par décalage par le nombre de positions définies par la clé ronde. Soit la clé secrète K =. 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 de résumer l'essence des modes de cryptage du grand et terrible Magma, brièvement et sans nuage de formules. 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 qu'ils sont "fournis dans l'ordre". 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 la critique de 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.

    Voyons maintenant ce qu'ils ont imaginé entre les murs de la lugubre 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 clés K25 ... K32 sont les clés 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 synchro-message S - une séquence pseudo-aléatoire qui change à chaque itération et est cryptée dans le mode de remplacement simple, après quoi elle 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. Sync 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 en raison 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 dire 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 agit maintenant avec engagement et est devenu moins 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 fonctionnement à partir de son texte et il n'y a pas assez de descriptions plus 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, à bien des égards, elle surpasse les normes étrangères. Après tout, où est le patriotisme ?!

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

    Le saviez-vous?
    À l'époque de l'Empire romain, le cryptage était utilisé par Jules César pour rendre les lettres et les messages illisibles pour l'ennemi. Il a joué un rôle important en tant que tactique militaire, en particulier pendant les guerres.

    Alors que les possibilités d'Internet continuent de croître, de plus en plus de nos entreprises sont embauché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 de service, etc., qui prévoient l'échange de données et d'informations confidentielles. Si ces données tombent entre de mauvaises mains, cela peut nuire non seulement à l'utilisateur individuel, mais à l'ensemble du système commercial en ligne.

    Pour éviter que cela ne se produise, certaines mesures de sécurité du réseau ont été prises pour protéger la transmission des données personnelles. Les principaux d'entre eux sont les processus de cryptage et de décryptage des données connus sous le nom de cryptographie. Il existe aujourd'hui trois méthodes de cryptage principales utilisées dans la plupart des systèmes : le cryptage par hachage, symétrique et asymétrique. Dans les lignes suivantes, je discuterai plus en détail de chacun de ces types de cryptage.

    Types de cryptage

    Cryptage symétrique

    Avec le cryptage symétrique, les données lisibles normales, appelées texte brut, sont cryptées (cryptées) de sorte qu'elles deviennent illisibles. Ce brouillage des données se fait à l'aide d'une clé. Une fois les données cryptées, elles peuvent être transférées en toute sécurité vers le récepteur. Chez le destinataire, les données cryptées sont décodées à l'aide de la même clé qui a été utilisée pour le cryptage.

    Ainsi, il est clair que la clé est la partie la plus importante du chiffrement symétrique. Il doit être caché aux étrangers, car tous ceux qui y ont accès pourront déchiffrer les données privées. C'est pourquoi ce type de cryptage est également appelé « clé secrète ».

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

    Restrictions

    Le maillon faible de ce type de chiffrement est la sécurité de la clé, tant au niveau du stockage que de la transmission de l'utilisateur authentifié. Si un pirate informatique parvient à mettre la main sur cette clé, il peut facilement déchiffrer les données chiffrées, détruisant ainsi tout le point de chiffrement.

    Un autre inconvénient est dû au fait que le 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.

    Cryptage asymétrique

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

    La clé utilisée pour le chiffrement est accessible à tous et à tous sur le réseau. En tant que telle, elle est connue sous le nom de clé « publique ». En revanche, la clé utilisée pour le déchiffrement est tenue secrète et destinée à être utilisée en privé par l'utilisateur lui-même. Par conséquent, il est connu comme la clé "privée". Le chiffrement asymétrique est également appelé chiffrement à clé publique.

    Étant donné qu'avec cette méthode, la clé secrète nécessaire pour déchiffrer le message n'a pas à être transmise à chaque fois et qu'elle n'est généralement connue que de l'utilisateur (destinataire), la probabilité qu'un pirate informatique puisse déchiffrer le message est beaucoup plus inférieur.

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

    Restrictions

    De nombreux pirates informatiques utilisent l'homme du milieu comme une forme d'attaque pour contourner ce type de cryptage. En chiffrement asymétrique, on vous donne Clé publique qui est utilisé pour échanger en toute sécurité des données avec une autre personne ou un autre service. Cependant, les pirates utilisent des réseaux de ruse pour vous inciter à communiquer avec eux tout en vous faisant croire que vous êtes sur une ligne sûre.

    Pour mieux comprendre ce type de piratage, considérons les deux parties en interaction Sasha et Natasha, et le pirate informatique Sergey avec l'intention 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 reçoit la clé publique qui lui est associée, et l'utilise pour crypter et transmettre un faux message, Natasha, contenant sa clé publique au lieu de Sasha.

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

    Ainsi, lorsque Sasha reçoit ce message, on lui fait croire qu'il vient de Natasha et continue d'ignorer le jeu déloyal.

    Hachage

    La technique de hachage utilise un algorithme appelé fonction de hachage pour générer ligne spécialeà partir des données données connues sous le nom de hachage. Ce hachage a les propriétés suivantes :

    • les mêmes données produisent toujours le même hachage.
    • il est impossible de générer des données brutes à partir du hachage seul.
    • Il n'est pas pratique d'essayer différentes combinaisons d'entrées afin d'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 dans leur forme d'origine (décryptées). Ce fait garantit que même si le pirate informatique met la main sur le hachage, il lui sera inutile, car il ne pourra pas déchiffrer 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échiffrer 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 implémentation faible de la technique de hachage, utilisant une quantité suffisante de ressources et des attaques par force brute, un hacker persistant peut trouver des données qui correspondent au hachage.

    Combinaison de méthodes de cryptage

    Comme indiqué ci-dessus, chacune de ces trois méthodes de chiffrement souffre de certains inconvénients. Cependant, lorsqu'une combinaison de ces méthodes est utilisée, elles forment un système de cryptage fiable et très efficace.

    Le plus souvent, les techniques de clés privées et publiques sont combinées et utilisées ensemble. La méthode de la clé privée permet un déchiffrement rapide, tandis que la méthode de la clé publique offre un moyen plus sûr et plus pratique de transférer la clé secrète. Cette combinaison de techniques 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 le hachage du mot de passe au lieu du mot de passe lui-même, ce 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). Pendant 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é. Ainsi, le mot de passe réel ne sera visible que dans de brefs instants lorsqu'il devra être modifié ou vérifié, ce qui réduira considérablement la probabilité qu'il tombe entre de mauvaises mains.

    Le hachage est également utilisé pour authentifier les données avec une clé secrète. Le hachage est généré à l'aide des données et de cette clé. Par conséquent, seuls 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, on peut dire que ces techniques peuvent être utilisées pour coder efficacement les données dans un format illisible qui peut garantir qu'elles restent sécurisées. La plupart des systèmes modernes utilisent généralement une combinaison de ces techniques de cryptage avec des algorithmes puissants pour améliorer la sécurité. En plus de la sécurité, ces systèmes offrent également de nombreux avantages supplémentaires, tels que la vérification de l'identité de l'utilisateur et la garantie que les données reçues ne peuvent pas être falsifiées.

    Au 21e siècle, la cryptographie joue un rôle important dans la vie numérique les gens modernes... Jetons un coup d'œil rapide aux moyens de crypter les 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 pouvez-vous stocker des données en toute sécurité afin que personne ne puisse simplement ouvrir l'ordinateur, retirer Disque dur et ont 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 rend le hachage pas très bon de manière pratique stockage de données, mais adapté 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.

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