Schémas de chiffrement symétriques. Utilisation combinée de chiffres symétriques et asymétriques

  • Développement de sites Web,
  • Algorithmes
    • Traduction

    De toute façon, comment fonctionne HTTPS ? C'est une question avec laquelle je me débat depuis plusieurs jours dans le cadre d'un projet de travail.

    En tant que développeur Web, j'ai compris qu'utiliser HTTPS pour protéger les données des utilisateurs est très, très bonne idée, mais je n’ai jamais vraiment compris comment fonctionne réellement HTTPS.

    Comment les données sont-elles protégées ? Comment un client et un serveur peuvent-ils établir une connexion sécurisée si quelqu'un écoute déjà leur chaîne ? Qu'est-ce qu'un certificat de sécurité et pourquoi devrais-je payer quelqu'un pour en obtenir un ?

    Pipeline

    Avant d'aborder son fonctionnement, expliquons brièvement pourquoi il est important de sécuriser les connexions Internet et contre quoi HTTPS protège.

    Lorsqu'un navigateur envoie une requête à votre site Web préféré, la requête doit passer par de nombreux réseaux différents, chacun d'entre eux pouvant potentiellement être utilisé pour écouter ou interférer avec la connexion établie.

    De ton propre ordinateur vers d'autres ordinateurs de votre réseau local, via des routeurs et des commutateurs, via votre FAI et via de nombreux autres fournisseurs intermédiaires - un grand nombre d'organisations relaient vos données. Si un attaquant se retrouve dans au moins l’un d’entre eux, il a la possibilité de voir quelles données sont transmises.

    En règle générale, les requêtes sont envoyées via HTTP brut, dans lequel la requête du client et la réponse du serveur sont envoyées en texte clair. Et il existe de nombreux bons arguments pour expliquer pourquoi HTTP n'utilise pas le cryptage par défaut :

    Il en faut plus Puissance de calcul
    Plus de données transférées
    La mise en cache ne peut pas être utilisée

    Mais dans certains cas, lorsque le canal de communication transmet exclusivement une information important(tels que des mots de passe ou des données cartes de crédit), des mesures supplémentaires doivent être prises pour empêcher toute écoute clandestine de ces connexions.

    Sécurité de la couche de transport (TLS)

    Nous allons maintenant plonger dans le monde de la cryptographie, mais nous n'aurons besoin d'aucune expérience particulière pour cela - nous ne considérerons que les plus questions générales. Ainsi, la cryptographie vous permet de protéger une connexion contre des attaquants potentiels qui souhaitent influencer la connexion ou simplement l'écouter.

    TLS - le successeur de SSL - est le protocole le plus souvent utilisé pour fournir une connexion HTTP sécurisée (appelée HTTPS). TLS est situé un niveau en dessous Protocole HTTP dans le modèle OSI. Pour faire simple, cela signifie que pendant le processus d'exécution d'une requête, toutes les « choses » associées à la connexion TLS se produisent d'abord et ensuite seulement tout ce qui concerne la connexion HTTP.

    TLS est un système cryptographique hybride. Cela signifie qu’il utilise plusieurs approches cryptographiques, que nous examinerons ensuite :

    1) Cryptage asymétrique (cryptosystème à clé publique) pour générer une clé secrète partagée et une authentification (c'est-à-dire vérifier que vous êtes bien celui que vous prétendez être).
    2) Le chiffrement symétrique, qui utilise une clé secrète pour chiffrer davantage les demandes et les réponses.

    Cryptosystème à clé publique

    Un système cryptographique à clé publique est un type de système cryptographique dans lequel chaque partie possède à la fois une clé publique et une clé privée qui sont mathématiquement liées les unes aux autres. La clé publique est utilisée pour chiffrer le texte du message en « charabia », tandis que la clé privée est utilisée pour déchiffrer et récupérer le texte original.

    Une fois qu'un message a été chiffré à l'aide d'une clé publique, il ne peut être déchiffré que par la clé privée correspondante. Aucune clé ne peut remplir les deux fonctions. La clé publique est publiée dans accès libre sans risque d'exposer le système à des menaces, mais la clé privée ne doit pas tomber entre les mains de quiconque n'a pas le droit de déchiffrer les données. Nous avons donc des clés - publiques et privées. L’un des avantages les plus impressionnants du cryptage asymétrique est que deux parties qui ne se connaissaient pas peuvent établir une connexion sécurisée tout en échangeant initialement des données via une connexion ouverte et non sécurisée.
    Le client et le serveur utilisent leurs propres clés privées et une clé publique publiée pour créer une clé secrète partagée pour la session.

    Cela signifie que si quelqu'un se trouve entre le client et le serveur et observe la connexion, il ne pourra toujours pas connaître ni la clé privée du client, ni la clé privée du serveur, ni la clé secrète de la session.

    Comment est-ce possible? Mathématiques!

    Algorithme Diffie-Hellman

    L'une des approches les plus courantes est l'algorithme d'échange de clés Diffie-Hellman (DH). Cet algorithme permet au client et au serveur de se mettre d'accord sur une clé secrète partagée sans avoir à transmettre la clé secrète via la connexion. Ainsi, les attaquants écoutant le canal ne pourront pas déterminer la clé secrète, même s'ils interceptent tous les paquets de données sans exception.

    Une fois que les clés ont été échangées à l'aide de l'algorithme DH, la clé secrète résultante peut être utilisée pour chiffrer d'autres communications au sein de cette session en utilisant un chiffrement symétrique beaucoup plus simple.

    Un peu de maths...

    Les fonctions mathématiques qui sous-tendent cet algorithme ont une particularité importante : elles sont relativement faciles à calculer dans le sens direct, mais pratiquement pas calculées dans le sens inverse. C’est exactement le domaine où les très grands nombres premiers entrent en jeu.

    Supposons qu'Alice et Bob soient deux parties échangeant des clés en utilisant l'algorithme DH. D'abord, ils sont d'accord sur une certaine base racine(généralement un petit nombre tel que 2,3 ou 5) et un très grand nombre premier prime(plus de 300 chiffres). Les deux valeurs sont envoyées en texte clair sur le canal de communication, sans risquer de compromettre la connexion.

    Rappelons qu'Alice et Bob possèdent tous deux leurs propres clés privées (de plus de 100 chiffres), qui ne sont jamais transmises via les canaux de communication.

    Le mélange est transmis via le canal de communication mélange, dérivés des clés privées ainsi que des valeurs prime Et racine.

    Ainsi:
    Mélange d'Alice = (racine ^ Alice's Secret) % prime
    Mélange de Bob = (racine ^ Bob's Secret) % prime
    où % est le reste de la division

    Ainsi, Alice crée son mélange en fonction des valeurs approuvées des constantes ( racine Et prime), Bob fait de même. Une fois qu'ils ont obtenu les valeurs mélange entre eux, ils effectuent des opérations mathématiques supplémentaires pour obtenir la clé privée de la session. À savoir:

    Les calculs d'Alice
    (Mélange de Bob ^ Alice's Secret) % prime

    Les calculs de Bob
    (Mélange d'Alice ^ Bob's Secret) % prime

    Le résultat de ces opérations est le même numéro pour Alice et Bob, et ce numéro devient la clé privée de cette session. Notez qu’aucune des parties n’a dû envoyer sa clé privée via le canal de communication et que la clé secrète résultante n’a pas non plus été envoyée via la connexion publique. Fabuleux!

    Pour ceux qui sont moins doués en mathématiques, Wikipédia fournit une excellente image expliquant ce processus En utilisant le mélange de couleurs comme exemple :

    Remarquez comment la couleur de départ (jaune) finit par être la même couleur « mélangée » pour Bob et Alice. La seule chose qui se transmet canal ouvert les communications sont des couleurs à moitié mélangées, qui n'ont en réalité aucun sens pour quiconque écoute le canal de communication.

    Cryptage symétrique

    L'échange de clés n'a lieu qu'une seule fois par session, lors de l'établissement de la connexion. Une fois que les parties se sont déjà mises d'accord sur une clé secrète, l'interaction client-serveur s'effectue à l'aide d'un cryptage symétrique, qui est beaucoup plus efficace pour transmettre des informations puisqu'aucun coût de confirmation supplémentaire n'est requis.

    À l'aide d'une clé secrète préalablement obtenue et d'un accord sur le mode de cryptage, le client et le serveur peuvent communiquer en toute sécurité en chiffrant et déchiffrant les messages reçus l'un de l'autre à l'aide de la clé secrète. Un attaquant qui se connecte à un canal ne verra que des « déchets » aller et venir à travers le réseau.

    Authentification

    L'algorithme Diffie-Hellman permet à deux parties d'obtenir une clé secrète privée. Mais comment les deux parties peuvent-elles être sûres qu’elles se parlent réellement ? Nous n'avons pas encore parlé d'authentification.

    Et si j'appelle mon ami, nous effectuons un échange de clés DH, mais soudain il s'avère que mon appel a été intercepté et que je parlais en fait à quelqu'un d'autre ?! Je pourrai toujours communiquer en toute sécurité avec cette personne - personne d'autre ne pourra nous écouter - mais ce ne sera pas la personne avec laquelle je pense communiquer. Ce n'est pas très sûr !

    Pour résoudre le problème d’authentification, nous avons besoin d’une infrastructure à clé publique pour garantir que les sujets sont bien ceux qu’ils prétendent être. Cette infrastructure est conçue pour créer, gérer, distribuer et révoquer des certificats numériques. Les certificats sont ces choses ennuyeuses que vous devez payer pour que votre site fonctionne via HTTPS.

    Mais qu’est-ce qu’un certificat exactement et comment nous assure-t-il notre sécurité ?

    Certificats

    Dans l'approximation la plus grossière, un certificat numérique est un fichier qui utilise une signature numérique électronique (nous en parlerons plus dans une minute) et associe la clé publique d'un ordinateur à sa propriété. Une signature numérique sur un certificat signifie que quelqu'un vérifie qu'une clé publique donnée appartient à une personne ou une organisation spécifique.

    Essentiellement, les certificats lient noms de domaine avec une clé publique spécifique. Cela empêche un attaquant de fournir sa clé publique en se faisant passer pour le serveur auquel le client accède.

    Dans l'exemple de téléphone ci-dessus, un pirate informatique pourrait essayer de me montrer sa clé publique en prétendant être un de mes amis - mais la signature sur son certificat ne serait pas celle d'une personne en qui j'ai confiance.

    Pour qu'un certificat soit approuvé par n'importe quel navigateur Web, il doit être signé par une autorité de certification accréditée (Certificate Authority, CA). Les CA sont des entreprises qui effectuent vérification manuelle, que la personne qui tente d'obtenir le certificat remplit les deux conditions suivantes :

    1. existe réellement ;
    2. a accès au domaine pour lequel il tente d'obtenir un certificat.

    Une fois que l'autorité de certification est convaincue que le demandeur est réel et contrôle réellement le domaine, elle signe un certificat pour ce site, approuvant essentiellement le fait que la clé publique du site lui appartient réellement et peut être fiable.

    Votre navigateur est déjà préchargé avec une liste de CA accrédités. Si le serveur renvoie un certificat qui n'est pas signé par une autorité de certification accréditée, un grand avertissement rouge apparaîtra. DANS sinon, n’importe qui pouvait signer de faux certificats.

    Ainsi, même si un pirate informatique s'emparait de la clé publique de son serveur et générait un certificat numérique confirmant que cette clé publique est associée au site facebook.com, le navigateur ne le croirait pas car le certificat n'est pas signé par une autorité de certification accréditée.

    Autres choses que vous devez savoir sur les certificats

    Validation étendue
    En plus des certificats X.509 classiques, il existe des certificats à validation étendue qui offrent un niveau de confiance plus élevé. En délivrant un tel certificat, l'AC s'engage également plus de contrôles en relation avec la personne qui reçoit le certificat (généralement en utilisant les données du passeport ou des comptes).

    Lors de la réception d'un tel certificat, le navigateur affiche une barre verte dans la barre d'adresse, en plus de l'icône habituelle avec un cadenas.

    Servir plusieurs sites Web sur un seul serveur
    Étant donné que l'échange de données via le protocole TLS a lieu avant le début de la connexion HTTP, des problèmes peuvent survenir si plusieurs sites Web se trouvent sur le même serveur Web, à la même adresse IP. Routage hôtes virtuels est effectuée par le serveur Web, mais la connexion TLS se produit encore plus tôt. Un seul certificat pour l'ensemble du serveur sera utilisé lors de la requête d'un site situé sur le serveur, ce qui peut entraîner

    Les systèmes cryptographiques asymétriques ont été développés dans les années 1970. La différence fondamentale entre un cryptosystème asymétrique et un cryptosystème à chiffrement symétrique réside dans le fait que différentes clés sont utilisées pour chiffrer les informations et leur déchiffrement ultérieur :

      clé publique K : utilisée pour chiffrer les informations, calculée à partir de la clé privée k ;

      clé privée k : utilisée pour déchiffrer les informations chiffrées avec sa clé publique K appariée.

    Ces clés diffèrent de telle sorte que la clé secrète ne peut être déduite par des calculs kà partir de la clé publique K. Par conséquent, la clé publique K peut être librement transmise sur les canaux de communication.

    Les systèmes asymétriques sont également appelés systèmes cryptographiques à deux clés ou systèmes cryptographiques à clé publique.

    Schéma asymétrique généralisé cryptosystèmes de cryptage

    Pour la fermeture cryptographique et le décryptage ultérieur des informations transmises, les clés publiques et secrètes du destinataire sont utilisées DANS messages. La clé publique du destinataire doit être utilisée comme clé de chiffrement et sa clé privée comme clé de déchiffrement.

    Les clés privée et publique sont générées par paires. La clé privée doit rester chez son propriétaire ; elle doit être protégée de manière fiable contre tout accès non autorisé (semblable à la clé de cryptage dans les algorithmes symétriques). Chaque abonné du réseau cryptographique avec lequel le propriétaire de la clé secrète échange des informations doit disposer d'une copie de la clé publique.

    Le processus de cryptage et de transmission d'un message

    Le processus de transmission d'informations cryptées dans un cryptosystème asymétrique s'effectue comme suit :

    1.Étape préparatoire.

    Abonné DANS génère une paire de clés : clé secrète k B et clé publique À V. Clé publique À V envoyé à l'abonné UN et à d'autres abonnés (ou est mis à disposition, par exemple, sur une ressource partagée).

    2.Utilisation - échange d'informations entre les abonnés A et B.

    Abonné UN chiffre un message à l'aide d'une clé publique À DANS abonné DANS et envoie le texte chiffré à l'abonné DANS. L'abonné B décrypte le message grâce à sa clé secrète k B. Personne d'autre (y compris l'abonné) UN) ne peut pas décrypter ce message, puisqu'il ne possède pas la clé secrète de l'abonné DANS. La protection des informations dans un système cryptographique asymétrique est basée sur le secret des clés k B destinataire du message

    Fonctions unidirectionnelles

    Les algorithmes asymétriques sont basés sur l'utilisation de fonctions unidirectionnelles.

    Fonction F: X → Y est dit unilatéral si les deux conditions suivantes sont remplies :

      il existe un algorithme efficace qui calcule F(x) pour tout le monde XX;

      il n'existe pas d'algorithme efficace pour inverser une fonction F, c'est à dire. algorithme qui vous permet de déterminer la valeur de x par la valeur F(x).

    Un algorithme polynomial est dit « efficace », c'est-à-dire : algorithme permettant d'obtenir le résultat pour une entrée de longueur n ne dépense plus P(n)étapes où P.- un polynôme.

    Aucune fonction à sens unique ne peut être utilisée pour le cryptage. En effet, si l'on transforme le texte clair t en utilisant une fonction unidirectionnelle : c = F(t), puis décryptez le texte reçu, c'est-à-dire récupérez de c t, personne, y compris le destinataire légal, ne le pourra. Pour être utilisé en cryptographie, il est nécessaire que la tâche d'inversion de la transformation du chiffrement (c'est-à-dire le calcul t Par F(t)) pouvait être résolu dans un délai acceptable, mais seule une personne connaissant la clé secrète pouvait le faire. De telles fonctions sont appelées fonctions secrètes unidirectionnelles.

    Une fonction à sens unique avec un secret est une fonction F k : XOui, en fonction du paramètre kK(ce paramètre est appelé secret), pour lequel les conditions suivantes sont remplies :

      à n'importe kK il existe un algorithme efficace qui calcule F k (X) pour tout le monde XX;

      avec l'inconnu k il n'existe pas d'algorithme efficace pour inverser une fonction F k ;

      avec un connu k il existe un algorithme efficace pour inverser une fonction F k .

    AlgorithmeRSA

    Dans un système cryptographique à clé publique, chaque participant possède à la fois une clé publique et une clé privée. Dans le système cryptographique RSA, chaque clé est constituée d'une paire d'entiers. Chaque participant crée indépendamment sa propre clé publique et privée. Chacun d’eux garde la clé privée secrète et les clés publiques peuvent être partagées avec n’importe qui ou même publiées.

    Les nombres premiers sont les nombres qui n'ont pas de diviseur commun autre que 1.

    Fonction d'Euler (p) du naturel p est le nombre de nombres inférieur à p et s'amorcent mutuellement avec n(le nombre 1 est premier à n’importe quel nombre).

      Si p est un nombre premier, alors (p) = p - 1.

      Si p- simple, un est un nombre naturel, alors (p un ) = p un - p un -1 .

      Si p Et q relativement premier, alors (pq) = (p) (q)

      La génération de clé est effectuée à l'aide de l'algorithme suivant :

      1. Deux grands nombres premiers sont sélectionnés p, q(aujourd'hui, on choisit généralement des nombres contenant de 200 à 400 caractères)

      2. leur produit est calculé n, qui ne peut être factorisé dans un délai raisonnable. Ce travail s'appelle module

      3 . La valeur de la fonction Euler est calculée

      φ(n) = φ(pq) = (p − 1)(q − 1).

      4. Un entier est sélectionné e (1< e< (n)) , premier à la valeur (n) . Habituellement comme e prenez des nombres premiers contenant un petit nombre de bits un en notation binaire, par exemple, Fermat premiers 17, 257 ou 65537. Nombre e appelé exposant ouvert

      5. Le nombre est calculé d, satisfaisant la condition :

      de1(module(n))

      ou sous une autre forme :

      de=1+k(n)

      Nombre d appelé l'exposant secret

      6. Paire P. = (e, n) publiée comme clé publique du système RSA.

      7. Paire S = (d, n) appelée clé privée RSA et est gardée secrète.

    1. Cryptage des messages

    Pour chiffrer des données à l'aide d'une clé connue P = (e,n), il est nécessaire de diviser le texte chiffré en côtés, chacun pouvant être représenté par un nombre M(i) = 0, 1, ... , n- 1. Ensuite, le texte est crypté sous la forme d'une séquence de nombres M(i), transformée selon la formule suivante :

    C(i) = M(i)emod(n)

    2. Décoder le message

    Pour déchiffrer un message à l'aide de la clé secrète P=(d,n), vous devez convertir chaque nombre de la séquence du message crypté à l'aide de la formule :

    M(i) = C(i)dmod(n)

    En conséquence, un ensemble de nombres M(i) sera obtenu, qui représente le texte source.

    Énoncé du défi de la sécurité de l’information

    Schéma de cryptage symétrique

    Formellement, un schéma de chiffrement symétrique peut être décrit comme suit :

    SE = (K, E, D) , Où

    • K - algorithme de génération de clé K,
    • E(M,K) = C - algorithme de chiffrement en clair M sur la clé K, dont le résultat est le texte chiffré C,
    • ré(C, K) = M - algorithme de déchiffrement du texte chiffré C sur la clé K, dont le résultat est le texte en clair M

    Le processus de messagerie peut être décrit comme suit :

    L'expéditeur crypte le message à l'aide d'un algorithme de cryptage spécifique, dont l'entrée est le message original (non crypté) et la clé. La sortie de l'algorithme est un message crypté. La clé est une valeur indépendante du message chiffré. Changer la clé devrait changer le message crypté.

    Le message crypté est envoyé au destinataire. Le destinataire convertit le message chiffré en message d'origine à l'aide d'un algorithme de décryptage et de la même clé utilisée pour le chiffrement, ou d'une clé facilement dérivée de la clé de chiffrement.

    L’élément le plus important d’un système de chiffrement symétrique est l’algorithme de chiffrement qu’il utilise. Actuellement, on distingue les algorithmes de chiffrement par bloc et par flux :

    • bloquer les chiffrements. Traiter les informations en blocs d'une certaine longueur (généralement 64, 128 bits, comme dans DES ou AES), en appliquant une clé au bloc dans de la manière prescrite, généralement à travers plusieurs cycles de brassage et de substitution, appelés tours.
    • les chiffrements de flux, dans lesquels le cryptage est effectué sur chaque bit ou octet du texte original (brut) à l'aide de gamma.

    En pratique, la frontière entre les algorithmes de chiffrement par bloc et par flux est assez floue (un chiffrement par flux peut être facilement créé sur la base d'un chiffrement par bloc, par exemple GOST 28147-89 en mode gamma).

    Les schémas de chiffrement utilisés dans les chiffrements par blocs sont également appelés modes de chiffrement.

    Voici quelques-uns des schémas de chiffrement symétriques :

    1. (BCE) Livre de codes électronique
      • (CTS de la BCE
    2. (CBC) Chaînage de blocs de chiffrement Mode de chaînage de blocs de texte chiffré
      • (CBC CTS) Vol de texte chiffré
      1. () chaînage de blocs Mode de chaînage de blocs
      2. (CBC$) Chaînage de blocs de chiffrement avec IV aléatoire (vecteur d'initialisation) Mode de chaînage de blocs avec un vecteur d'initialisation aléatoire
      3. (CBCC) chaînage de blocs de chiffrement avec somme de contrôle Mode de chaînage de blocs de texte chiffré avec une somme de contrôle
      4. (PCBC) chaînage de blocs de chiffrement à propagation Mode de chaînage de blocs avec propagation des erreurs
      5. (CBPCD) chaînage de blocs de chiffrement de la différence de texte en clair
    3. (CFB) Mode de retour de texte chiffré
    4. (OFB) Réinjection de sortie Mode de retour de sortie
    5. (OFBNLF) retour de sortie avec une fonction non linéaire
    6. (PBC) chaînage de blocs de texte en clair
    7. (PFB) retour en texte clair Mode de retour en texte brut
    8. (CTR) Compteur Mode compteur
    9. Cryptage multiple
      1. Double
        • Méthode Davis-Price
      2. Tripler
        • Schéma Tuchman
        • Circuit à trois touches

    Structures cryptographiques de base et leur force (primitives et/ou protocoles cryptographiques)

    La force cryptographique des schémas de chiffrement symétrique dépend presque entièrement de l’algorithme de chiffrement symétrique utilisé. En règle générale, lors de l'analyse de la force d'un algorithme symétrique (à clé unique), on suppose que le schéma de cryptage le plus simple est utilisé - ECB. L'utilisation d'autres schémas peut améliorer certaines propriétés de l'algorithme, notamment certains cas, mais pas l'inverse.

    Pour garantir la fiabilité des algorithmes de chiffrement symétrique il faut :

    • l'algorithme cryptographique doit être suffisamment puissant pour que le message crypté transmis ne puisse pas être déchiffré sans clé, en utilisant uniquement divers modèles statistiques du message crypté ou d'autres méthodes d'analyse de celui-ci.
    • la sécurité du message transmis doit dépendre du secret de la clé, mais pas du secret de l'algorithme. L'algorithme doit être analysé par des spécialistes pour éliminer la présence de faiblesses en présence desquelles la relation entre les messages non cryptés et cryptés est mal cachée.
    • l'algorithme ne doit pas violer le secret de la clé, même si l'ennemi dispose d'un grand nombre de paires de textes clairs et de textes chiffrés correspondants obtenus à l'aide de cette clé.

    En règle générale, on suppose que les participants à l'échange crypté d'informations se font entièrement confiance, sinon si des différends et des désaccords surviennent sur la fiabilité du message, un observateur indépendant ne sera pas en mesure de dire qui l'a envoyé.

    En règle générale, les systèmes de chiffrement symétriques se caractérisent par une vitesse de cryptage/déchiffrement élevée, ce qui leur permet d'être utilisés pour crypter rapidement de grands volumes d'informations. De plus, avec l'aide de certains d'entre eux, il est possible d'assurer les trois propriétés de la sécurité de l'information : confidentialité, authenticité, intégrité.

    • La confidentialité de la transmission dépend de la force du chiffrement et de la garantie de la confidentialité de la clé de chiffrement.
    • L'authenticité est assurée du fait que sans décryptage préalable, il est presque impossible d'effectuer une modification sémantique et une contrefaçon cryptographique. message privé. Un faux message ne peut pas être chiffré correctement sans connaître la clé secrète.
    • L'intégrité des données est assurée en attachant un code spécial (insertion d'imitation) généré à l'aide d'une clé secrète aux données transmises. Une insertion de copie est un type de somme de contrôle, c'est-à-dire une caractéristique de référence d'un message par rapport à laquelle l'intégrité de ce dernier est vérifiée. L'algorithme de génération d'un insert simulé doit assurer sa dépendance, selon une loi cryptographique complexe, de chaque bit du message. L'intégrité du message est vérifiée par le destinataire du message en générant, à l'aide d'une clé secrète, une insertion simulée correspondant au message reçu et en la comparant à la valeur reçue de l'insertion simulée. S'il y a correspondance, on conclut que les informations n'ont pas été modifiées entre l'expéditeur et le destinataire.

    Possédant une vitesse de cryptage élevée, les cryptosystèmes à clé unique permettent de résoudre de nombreux problèmes importants de sécurité de l'information (par exemple, il est très efficace d'utiliser des algorithmes symétriques pour crypter les ressources locales, disque dur, Par exemple). Cependant utilisation autonome les cryptosystèmes symétriques dans les réseaux informatiques posent le problème de la répartition des clés de chiffrement entre les utilisateurs.

    Applications pratiques des structures cryptographiques, caractéristiques de leur mise en œuvre (Questions pratiques)

    L'application pratique des schémas de cryptage peut être constatée dans de nombreux domaines de notre vie, par exemple, le schéma ECB est utilisé pour crypter les clés, les schémas CBC et CFB sont utilisés pour l'authentification des données, le schéma CFB est également utilisé pour crypter des caractères individuels. Le schéma OFB est souvent utilisé dans les canaux à fortes interférences (par exemple, les systèmes de communication par satellite). Le schéma de cryptage PCBC utilise les protocoles Kerberos v4 et WASTE

    Peu de gens savent exactement comment fonctionne le chiffrement asymétrique. Par exemple, certaines personnes ne considèrent pas le protocole https comme une protection adéquate pour les données transmises. Et en règle générale, lorsqu'ils tentent de les convaincre du contraire, ils répondent quelque chose du genre : « si nous transmettons des données cryptées, alors nous devons dire comment les déchiffrer, et ces informations peuvent être interceptées et, par conséquent, les données peuvent être décrypté. » Et aux arguments selon lesquels ce n’est pas le cas et que le chiffrement asymétrique en est la base, la réponse est « Et alors ?

    D'accord, je comprends que tout le monde n'a pas besoin de connaître toutes les subtilités de la mise en œuvre du chiffrement asymétrique. Mais principe général le travail, je crois, devrait être connu de tous ceux qui sont connectés de quelque manière que ce soit aux ordinateurs.

    Je voudrais résumer l'essence de cet article dans cette annotation : rappelez-vous, le chiffrement asymétrique est sécurisé, bien sûr, si toutes les conditions sont remplies. Et pour le prouver, je vais essayer de décrire l'algorithme dans un langage compréhensible afin que tout le monde puisse comprendre qu'il est sûr. Rencontrez Alice, Bob et Eve et la transmission de leur message secret sous la coupe.

    Au fait, pourquoi Alice et Bob ? Il y a un court article à ce sujet sur Wikipédia : Alice, Bob et Eve. Pour que ce soit plus clair, Alice et Bob veulent échanger des messages, et Eve essaie d'intercepter et de lire ces messages.

    Un peu d'histoire

    La cryptographie des siècles passés avait un énorme problème : celui du transfert de clé. À cette époque, il n'existait que des chiffrements dits « symétriques », c'est-à-dire des chiffrements dans lesquels les données sont cryptées et déchiffrées avec la même clé.

    Par exemple, Alice a chiffré un message et souhaite l'envoyer à Bob. Naturellement, pour que Bob puisse le lire, il a besoin de la clé avec laquelle le message a été crypté. Et puis se pose le problème de savoir comment transférer la clé afin que personne ne puisse l'intercepter. Les esprits curieux feront une offre – laissez-les la transmettre en personne, puis communiquez autant qu'ils le souhaitent. Oui, je ne discute pas, c'est une issue. Imaginez maintenant une seconde que votre messagerie Internet, avant de vous y connecter, vous oblige à vous rendre à l'emplacement physique du serveur de messagerie. Confortable? Peut-être pas grand-chose.

    Bien entendu, la clé peut être transmise via un autre canal de communication. Mais la cryptographie considère tous les canaux de communication non sécurisés comme non sécurisés. Autrement dit, transférer la clé à Bob par téléphone, par exemple, est considéré comme dangereux, tout comme rien n'empêche Eve d'écouter également le téléphone.

    Jusqu'aux années 70, ce problème est devenu si courant qu'il était considéré comme un axiome selon lequel pour transmettre un message, il fallait transmettre la clé avec laquelle le message est crypté (et certaines personnes pensent encore ainsi). Mais en 1976, Diffie et Hellman ont proposé leur « méthode d’échange exponentielle de clés ». Depuis ces années, le développement des cryptosystèmes asymétriques a commencé.

    Un peu de vraie vie

    Avant d’étudier un algorithme, il faut imaginer son fonctionnement. Et le moyen le plus simple est de comparer cela avec la façon dont quelque chose fonctionne dans la réalité.

    Imaginons qu'Alice et Bob vivent dans un pays dans lequel tout le système postal est complètement immoral et où les postiers lisent tout le courrier non sécurisé. Alice, une fille pas stupide, avant d'envoyer un message à Bob, prit une boîte en fer et, mettant la lettre à l'intérieur et la fermant avec son cadenas, envoya cette boîte à Bob.

    Naturellement, la poste ne peut pas lire cette lettre, mais Bob lui-même ne peut pas la lire, car il n'a pas la clé avec laquelle on ferme la serrure. Alice, bien sûr, peut prendre une autre boîte en fer, y mettre la clé de la précédente et l'envoyer à Bob, mais Bob ne pourra pas non plus l'ouvrir...

    Le seul moyen est de faire un duplicata de la clé et de la remettre à Bob en personne...

    Il semble donc que l’échange de clés soit une partie inévitable du chiffrement – ​​ou n’est-ce pas le cas ?

    Imaginons une image différente. Je vais l'écrire étape par étape :

    1. Alice met sa lettre dans une boîte en fer et, la fermant à clé, l'envoie à Bob.
    2. Bob, dès réception de la boîte, (attention !) prend son cadenas et, après avoir en outre verrouillé la boîte avec, la renvoie.
    3. Alice reçoit déjà le coffret avec deux cadenas (je vous le rappelle, le premier cadenas d'Alice, dont elle a la clé, et le second de Bob, dont seul Bob a la clé).
    4. Alice enlève son cadenas et renvoie la boîte à Bob
    5. Bob reçoit un coffret avec une de ses serrures pour laquelle il possède une clé
    6. Bob déverrouille sa serrure restante avec sa clé et lit le message

    La signification de cette nouvelle est énorme. Cela montre que deux personnes peuvent transmettre un message secret sans échanger les clés. Pensez-y! Cette histoire détruit en réalité tous les axiomes sur lesquels était bâtie la cryptographie de l’époque. Oui, nous obtenons une certaine complication du processus (la boîte a dû être envoyée trois fois), mais le résultat...

    Revenons à la cryptographie

    Il semblerait qu'une solution ait été trouvée. L’expéditeur et le destinataire chiffrent leur message, puis les interlocuteurs déchiffrent le leur à tour de rôle.


    Mais le fait est qu’il n’existe aucun chiffre permettant de supprimer un chiffre d’un autre chiffre. C'est-à-dire que l'étape où Alice supprime son chiffre est impossible :


    Malheureusement, tous les algorithmes disponibles nécessitent toujours la suppression des chiffrements dans la file d'attente dans laquelle ils ont été appliqués. J'ai peur d'appeler cela un axiome (puisque l'histoire connaît déjà des cas où de tels axiomes ont été réduits en miettes), mais c'est toujours le cas.

    Revenons aux mathématiques

    L'idée de la boîte que j'ai décrite ci-dessus a inspiré Diffie et Hellman à chercher un moyen de transmettre un message. Finalement, ils ont fini par utiliser des fonctions à sens unique.

    Qu'est-ce qu'une fonction à sens unique ? Par exemple, il existe une fonction de doublement, c'est-à-dire double(4)=8, c'est double face, parce que à partir du résultat 8, il est facile d'obtenir la valeur initiale 4. Une fonction unidirectionnelle est une fonction après application de laquelle il est quasiment impossible d'obtenir la valeur initiale. Par exemple, mélanger de la peinture jaune et bleue est un exemple de fonction à sens unique. Mélangez-les facilement, mais pour récupérer les composants d'origine - impossible. Une de ces fonctions en mathématiques est calcul modulo.

    Comme base de l'algorithme, Hellman a proposé la fonction Yx (mod P). La transformation inverse d’une telle fonction est très difficile, et on peut dire qu’elle consiste essentiellement en une énumération complète des valeurs originales.

    Par exemple, on vous a dit que 5 x (mod 7) = 2, essayer de trouver X, UN? Vous l'avez trouvé ? Imaginez maintenant que des nombres de l’ordre de 10 300 soient considérés comme Y et P.

    D'ailleurs, pour augmenter la durabilité, le nombre P. doit être un nombre premier, et Oui- être un modulo racine primitif P.. Mais comme nous essayons encore de comprendre la théorie, je ne vois pas l’intérêt de s’en préoccuper.

    Algorithme Diffie-Hellman

    Et puis un jour, Hellman s’est rendu compte qu’il a pu développer un algorithme d’échange de clés fonctionnel. Cet algorithme nécessite des étapes des deux côtés pour fonctionner, je vais donc le mettre dans un tableau :

    Alice Haricot
    Étape 1 Les deux participants sont d'accord sur les significations Oui Et P. pour une fonction générale à sens unique. Cette information n'est pas secrète. Disons que les valeurs ont été sélectionnées 7 Et 11 . La fonction générale ressemblerait à ceci : 7x (modèle 11)
    Étape 2 Alice choisit nombre aléatoire, Par exemple 3 UN Bob choisit un nombre aléatoire, par exemple 6 , le garde secret, notons-le par un nombre B
    Étape 3 Alice remplace le numéro UN 7 3 (mod 11)= 343 (mod 11) = 2 un Bob branche le numéro B V fonction générale et calcule le résultat 7 6 (mod 11)= 117649 (mod 11) = 4 , désigne le résultat de ce calcul sous la forme d'un nombre b
    Étape 4 Alice passe le numéro un Bob Bob passe le numéro b Alice
    Étape 5 Alice obtient b de Bob, et calcule la valeur bA (mod 11)= 4 3 (mod. 11) = 64 (mod. 11) = 9 Bob obtient un d'Alice, et calcule la valeur un B (mod 11)= 2 6 (mod. 11) = 64 (mod. 11) = 9
    Étape 6 Les deux participants se sont retrouvés avec un numéro 9 . Ce sera la clé.

    La magie? Je ne discute pas, ce n’est pas clair à première vue. Mais après avoir lu et réfléchi à ce tableau, son fonctionnement devient clair. Cependant, si ce n'est pas clair, faites défiler jusqu'à la fin du chapitre, où j'ai posté une vidéo explicative.

    De plus, notez que pour obtenir la clé dans la formule finale, toute personne doit avoir trois valeurs :

    • Valeurs un Et P., et le numéro secret de Bob B
    • ou des significations b Et P., et le numéro secret d'Alice UN

    Mais les numéros secrets ne sont pas transmis sur le canal ! Eve ne pourra pas récupérer la clé sans le numéro secret de quelqu'un. Pourquoi - j'ai écrit ci-dessus, cette fonction est unilatéral. Essayez de résoudre l'équation 4 x (mod 11) = 2 ans (mod 11) avoir trouvé X Et oui.

    Pour rendre plus clair le fonctionnement du schéma Hellman, imaginez un chiffre qui utilise d'une manière ou d'une autre la couleur comme clé :

    Supposons d'abord que tout le monde, y compris Alice, Bob et Eve, possède un pot de trois litres dans lequel est versé un litre de peinture jaune. Si Alice et Bob veulent se mettre d'accord sur une clé secrète, ils ajoutent chacun un litre de leur propre peinture secrète dans leurs pots.

    Alice peut ajouter de la peinture teinte violette, et Bob est framboise. Après cela, chacun d'eux envoie à l'autre son pot avec le contenu mélangé.

    Finalement, Alice prend le mélange de Bob et y ajoute un litre de sa peinture secrète, et Bob prend le mélange d'Alice et y ajoute un litre de sa peinture secrète. La peinture dans les deux pots sera désormais de la même couleur, puisque chaque pot contient un litre de peinture jaune, violette et cramoisie.

    C’est cette couleur, obtenue en ajoutant deux fois dans les pots de peinture, qui servira de clé. Alice n'a aucune idée du type de peinture que Bob a ajouté, et Bob n'a aucune idée non plus du type de peinture qu'Alice a versé, mais ils ont tous deux obtenu le même résultat.

    Pendant ce temps, Eve est furieuse. Même si elle parvenait à intercepter les pots contenant le produit intermédiaire, elle ne serait pas en mesure de déterminer la couleur finale, qui serait la clé convenue. Eve peut voir la couleur de la peinture obtenue en mélangeant la peinture jaune et la peinture secrète d'Alice dans le pot envoyé à Bob, et elle peut voir la couleur de la peinture obtenue en mélangeant la peinture jaune et la peinture secrète de Bob dans le pot envoyé à Alice , mais pour trouver la clé, elle doit en fait connaître les couleurs des peintures secrètes originales d'Alice et Bob. Cependant, en regardant les pots de peintures mélangées, Eve ne parviendra pas à identifier les couleurs secrètes d'Alice et Bob. Même si elle prélève un échantillon de l'une des peintures mélangées, elle ne pourra pas le séparer en peintures originales pour trouver la peinture secrète, puisque le mélange de peinture est une fonction à sens unique.

    Ce n'est toujours pas clair ? Alors regardez la vidéo :

    Eh bien, j'espère que vous comprenez qu'il existe un moyen très réel d'échanger des clés en toute sécurité. Mais veuillez noter qu'il n'est pas encore possible d'appeler cet algorithme un chiffre asymétrique, car il s'agit essentiellement d'un algorithme d'échange de clés.

    Chiffrement asymétrique

    un algorithme asymétrique suppose la présence de deux clés - publique et privée. Autrement dit, le message est chiffré avec une clé publique et déchiffré avec une clé privée et rien d'autre. En fait, c’est ce concept que Diffie a formulé.

    En général, l'essence de cet algorithme est que le côté récepteur, avant de recevoir le message, génère une paire de clés basées sur l'algorithme arithmétique modulaire (le principe est le même que dans l'algorithme de Diffie-Hellman), les clés privées et publiques réelles clé. Avant l'envoi, l'expéditeur reçoit une clé publique et crypte le message avec cette clé, après quoi ce message ne peut être déchiffré qu'avec une clé privée, qui est gardée secrète par le destinataire.


    Si nous revenons à l’analogie avec les verrous, alors le chiffrement à clé publique peut être considéré comme suit :

    N'importe qui peut verrouiller une serrure en cliquant simplement dessus jusqu'à ce qu'elle se ferme, mais seule quelqu'un qui possède la clé peut la déverrouiller. Verrouiller une serrure (cryptage) est facile, presque tout le monde peut le faire, mais seul le propriétaire de la clé peut l'ouvrir (déchiffrement). Comprendre comment verrouiller un verrou pour qu'il se ferme ne vous dira pas comment le déverrouiller.

    Une analogie plus profonde peut être établie.

    Imaginez qu'Alice conçoive une serrure et une clé. Elle garde la clé avec vigilance, mais en même temps fabrique des milliers de serrures en double et les envoie partout. bureau de poste Mondial. Si Bob veut envoyer un message, il le met dans une boîte, se rend au bureau de poste local, demande un « cadenas Alice » et verrouille la boîte avec. Désormais, il ne pourra plus ouvrir la boîte, mais quand Alice recevra la boîte, elle pourra l'ouvrir avec sa seule clé.

    Mettre un cadenas et cliquer dessus pour fermer équivaut à une clé partagée pour le cryptage, puisque tout le monde a accès aux cadenas et que tout le monde peut utiliser le cadenas pour verrouiller le message dans la boîte. La clé de la serrure est équivalente à la clé secrète de déchiffrement car seule Alice la possède, elle seule peut ouvrir la serrure, et elle seule peut accéder au message contenu dans la boîte.

    Il existe plusieurs algorithmes qui implémentent le chiffrement asymétrique. Le plus connu d’entre eux est le RSA. Je ne vois pas l’intérêt de le décrire, puisque je ne pourrai toujours pas comprendre tout de suite comment cela fonctionne, et je ne pourrai toujours pas l’écrire mieux que ce qui est écrit sur Wikipédia.

    Conclusion

    Eh bien, j'espère qu'une fois que vous aurez compris comment fonctionne le cryptage asymétrique de l'intérieur, vous commencerez à lui faire davantage confiance et, par conséquent, à utiliser SSL plus souvent =)

    Des matériaux ont été utilisés du livre Singh Simon - Book of Codes. À propos, le meilleur livre pour ceux qui veulent comprendre au moins un peu la cryptographie. Je conseille à tout le monde de le lire.

    1. la télé

      La sélection d'une telle clé vous prendra beaucoup de temps. Il n'y a guère plus que l'univers. Même sur des ordinateurs très puissants.

    2. Igor

      A quoi sert cette absurdité avec les clés publiques ? Les symétriques sont plus fiables.
      Bon après-midi
      Bon site, le matériel est clairement présenté, un grand merci à l'auteur. Je suis venu ici par hasard en septembre, alors que je cherchais des informations sur le cryptage pratique.
      J'écris parce que je veux demander : quelqu'un veut savoir comment trouver des nombres pour le cryptage symétrique ? Je peux vous apprendre à vérifier rapidement la primalité du nombre P (sans chercher le nombre g) - mais il est peu probable que cela soit intéressant. Le plus intéressant:
      Trouvez le nombre P de n'importe quelle longueur et le nombre g qui lui correspond. Je n’utilise aucun 2 à la puissance n plus un (ou moins un). Naturellement, c'est gratuit. Il existe même un site Internet sur lequel j'ai posté mon travail.

  • Ouassia Petrovitch

    Je comprends que beaucoup de temps s'est écoulé, mais je répondrai quand même aux nouveaux lecteurs comme moi.

    Cela ne fonctionnera pas parce que... après les actions 2 et 3, nous voyons la différence par laquelle le numéro de chacun des blocs a changé, donc le numéro secret de Bob nous devient évident et nous ne pouvons intercepter le message qu'après la 4ème action (c'est-à-dire sans le chiffre d'Alice) et utiliser ce qui est Nous connaissons déjà le numéro de Bob.

  • Eugène

    Merci beaucoup pour l'article!
    Après lecture, presque tout s'est mis en place sur ses propres étagères et a acquis une structure facile à développer.
    Ayant une telle structure, il est facile de générer les bonnes questions (étagère d'attaque MiTM, merci spécial à Mikhail :)).

    D'un point de vue pédagogique, vous avez tout fait parfaitement. Je pense que vous avez raison de ne pas ajouter d'attaques MiTM à cet article, sinon il y aurait eu une surcharge d'informations.

    La vidéo est adorable, surtout compte tenu de son âge.

    PS : l’usage de métaphores pour expliquer des systèmes « complexes » est franchement difficile à surestimer. Merci encore!

  • dbzix

    De cet article, je n'ai pas saisi le moment de transition de l'algorithme Diffie-Hellman, où deux abonnés échangent des données publiques et des résultats de calcul intermédiaires pour obtenir une clé secrète (dans l'exemple il y avait jusqu'à 6 étapes) à l'étape où une certaine clé publique est utilisée pour le cryptage, qui est ensuite déchiffrée à l'aide d'une clé privée (je ne compte ici que 2 étapes de transfert de données - l'envoi d'une clé publique et l'envoi d'un message crypté avec cette clé).
    Ceux. Je comprends que quelque part entre ces deux explications, il y a probablement beaucoup de mathématiques cachées, et en fin de compte l’explication se résume à « c’est comme ça que ça marche, faites-moi confiance ». Mais il serait probablement plus facile de comprendre cette transition soudaine si l’analogie avec les peintures était étendue pour expliquer l’essence du chiffrement avec une clé publique suivi du déchiffrement avec une clé privée. En attendant, le résultat est une sorte de « B fonctionne parce que A », alors qu’il n’y a pas de lien clair entre A et B. Au moins pour moi.
    Cher auteur, auriez-vous la gentillesse de m'expliquer ce saut mystique de A à B ? :) Merci!

  • Eugène

    Bon après-midi,

    Étant donné : il existe une formule Y^x (mod P).
    l'exemple de l'article est basé sur la formule 7^x (mod 11)

    J'ai pris 4^x (mod 7) pour mon exemple
    et je n'ai pas pu trouver une clé commune.
    Question : pourquoi l'algorithme de l'exemple fonctionne-t-il pour 7^x (mod 11) et pas pour 4^x (mod 7) ?

  • Jessi-Jane
  • Andreï

    Merci, super article !
    Ce n'est que maintenant que j'ai presque compris l'algorithme, comment calculer via le module.
    Pourriez-vous me dire comment calculer le nombre B si le nombre A est inférieur au module ?
    Eh bien, par exemple :
    3(mod 13) = ?

    Je sais que si, par exemple, il faut calculer 625(mod 13), il faut 625/13, puis multiplier le plus grand diviseur entier possible (48) par le module (qui sera ici égal à 624), et enfin 625-624 = 1
    Les nombres 625 et 1 sont comparables modulo 13, puisque 624 est divisible par 13.
    C'est ce que je comprends. Mais que se passe-t-il si le module plus de numéro UN?

  • Horreur jaune

    1. L’attaque de l’homme du milieu est Problème sérieux. Autant que je sache, dans le seul cadre de la cryptographie, ce problème ne peut en principe être résolu : si l'on admet qu'Eve est capable d'intercepter et de remplacer imperceptiblement TOUTES les données arrivant à Alice ou émanant d'elle via TOUS les canaux de communication, aucun cryptage n'est possible. aidera. Au moins un certificat doit être obtenu par Alice auprès d'une source totalement fiable. Mais si un attaquant ne peut qu'écouter le canal de communication et ne pas modifier les données qu'il contient, le cryptage asymétrique est tout à fait fiable.
    2. Quant à la possibilité de supprimer une « couche de chiffrement » sous une autre, la fonction banale XOR, largement utilisée en cryptographie depuis l'Antiquité jusqu'à nos jours, possède cette propriété. Je ne pense pas que cela puisse être breveté :(

    1. Dmitri Amirov Auteur

      Oui, vous avez raison, l'attaque mitm d'aujourd'hui ne peut en aucun cas être résolue si vous êtes absolument paranoïaque. Si ce n’est pas le cas, manipuler les certificats et les signatures fournira une protection « nécessaire et suffisante ».

      Quant à la fonction XOR, on peut difficilement l'appeler un chiffre, car ce n’en est pas un dans son essence.

      1. Horreur jaune

        Allez? Recherchez le chiffre Vernam sur Google. Il s'agit d'un système de messagerie avec absolu crypto-résistant. Et il est basé précisément sur XOR. Mis à part certaines difficultés d'organisation (créer des clés véritablement aléatoires avec une distribution uniforme, maintenir le secret du tampon de cryptage dans un environnement hostile et détruire en toute sécurité les clés utilisées), l'humanité n'a encore rien trouvé de plus simple et de plus fiable.

      2. Horreur jaune

        Cependant, après réflexion raisonnable, j'ai réalisé que la méthode de cryptage double réversible ne fonctionne pas si l'attaquant connaît l'algorithme de cryptage. Regardons les idées de Mikhail à titre d'exemple :

        1. Nous divisons les informations cryptées en blocs. Chaque bloc est représenté par un numéro. La taille du bloc (nombre de bits) détermine le nombre de valeurs de bloc possibles et (en conséquence ?) la force du cryptage.
        2. Pour chiffrer le message, Alice sélectionne un numéro secret (qu'elle n'envoie à personne), qu'elle ajoute à chacun des numéros des blocs et envoie le message ainsi chiffré à Bob.

        Jusqu'ici tout va bien : Eve ne peut pas lire le message d'Alice parce que... ne connaît pas le numéro de clé. Si les blocs sont suffisamment grands, il est difficile de récupérer le message d’Alice, mais si le bloc est plus long que le message et que la clé ne présente pas de vulnérabilités, c’est impossible. Mais Eve peut copier et copie le chiffrement d'Alice.

        3. Bob reçoit le message crypté, choisit son numéro secret (qu'il n'envoie également à personne), ajoute ce numéro à chacun des numéros présents dans les blocs du message crypté par Alice, et envoie ce message double crypté à Alice .

        Et c'est ici que commencent les problèmes : Eve ne parvient toujours pas à lire le message d'Alice, mais, disposant d'une copie du chiffrement reçu par Bob et du double cryptage envoyé par lui, elle peut facilement restaurer clé Boba.

        4. Alice soustrait son numéro secret de chaque numéro dans les blocs de ce message doublement crypté et envoie le message résultant à Bob.

        Alice a supprimé sa « couche » de chiffre et envoie désormais à Bob sa lettre, cryptée uniquement avec la clé de Bob. Ce qu'Eva possède déjà ! Eve déchiffre la lettre et la lit et, au cas où, peut récupérer la clé d'Alice en utilisant le texte déchiffré de la lettre et le premier chiffrement qu'elle a intercepté.

  • Dmitri

    Bonjour. Bon article, mais je n'ai pas non plus compris certains des points décrits ci-dessus.
    C'est le passage de l'algorithme permettant d'obtenir une clé secrète par les deux interlocuteurs (Alice et Bob) (sans les mettre en accès public) au chiffrement asymétrique.
    Vous écrivez que le message est chiffré du côté d'Alice avec la clé publique reçue de Bob. Mais si nous chiffrons avec une clé publique, Eve peut facilement l'obtenir et la déchiffrer elle-même, n'est-ce pas ?
    Je ne sais toujours pas comment chiffrer avec une clé publique et déchiffrer seulement secret du côté de Bob. Autrement dit, ils l'ont crypté avec le mot « Maison » et l'ont déchiffré avec le mot « Monde ». Pour moi, c'est une sorte d'absurdité.
    Sur la base de ces lacunes évidentes (la vôtre ou la mienne), j'ai conclu que le circuit ici doit être plus compliqué que sur la photo. Très probablement, la flèche allant de la clé publique de Bob à Alice signifie autre chose, à savoir toute la séquence d'actions pour obtenir « Y » et « P », obtenir des résultats intermédiaires, etc. En d'autres termes, je pense que lorsque le message original est crypté avec une clé prétendument publique, il est en réalité crypté non pas avec une clé publique, mais avec une clé secrète, qui est calculée séparément de chaque côté.

    J'avais également une question sur le décryptage d'un message doublement crypté. Si nous prenons, disons, le chiffre de César, où chaque lettre est cryptée avec une autre lettre, située, disons, 3 positions plus loin. Si Alice crypte la lettre A dans le message avec la lettre B, puis Bob crypte cette lettre B avec la lettre G, alors il sera facile d'obtenir la lettre A à partir de G, et dans n'importe quel ordre. Certes, cela ne fonctionnera probablement que dans les cas où les deux connaissent le type de cryptage de l'interlocuteur et avec suffisamment d'informations. types simples cryptage (monoalphabétique/polyalphabétique). Je suis également nouveau en cryptographie, donc c'est mon avis ;)

    1. Dmitri

      J'ai oublié de demander.
      Quelle est la différence entre les méthodes symétriques et asymétriques ?

      1. Dmitri

        Je l'ai lu, regroupant plus ou moins tout dans mon esprit.
        Je répondrai aux questions que j'ai écrites, aidant peut-être ainsi d'autres lecteurs.
        1. À propos

        Vous écrivez que le message est chiffré du côté d'Alice avec la clé publique reçue de Bob. Mais si nous chiffrons avec une clé publique, Eve peut facilement l'obtenir et la déchiffrer elle-même, n'est-ce pas ?
        Je ne comprends toujours pas comment il est possible de chiffrer avec une clé publique et de déchiffrer uniquement avec une clé secrète du côté de Bob. Autrement dit, ils l'ont crypté avec le mot « Maison » et l'ont déchiffré avec le mot « Monde ». Pour moi, c'est une sorte d'absurdité.

        Cet article mentionne l'algorithme RSA. Algorithme de cryptage symétrique. Il utilise en fait l'algorithme suivant :
        1) A partir d'une certaine fonction de chiffrement unidirectionnel (fonction facile à calculer dans un sens, mais très difficile dans l'autre. A) on crée un couple sur le destinataire (clé publique ; clé privée). Cette paire est unique, c'est-à-dire qu'à chaque clé publique correspond une clé privée unique pour cette fonction unidirectionnelle.

        3) L'expéditeur crypte le message
        4) Virements au destinataire

        Comme vous pouvez le constater, l’expéditeur ne connaît pas la clé privée et il n’est pas en mesure de déchiffrer son propre message crypté. C'est pourquoi on l'appelle asymétrique, car l'un possède toutes les clés et l'autre n'a que la partie nécessaire au cryptage.

        Quelle est la différence entre les méthodes symétriques et asymétriques ?
        Si j'utilisais l'algorithme de Diffie et Hellman pour transmettre la clé secrète, puis que j'étais capable de transmettre en toute sécurité le message crypté, cette méthode serait-elle symétrique ?

        L'algorithme Daffy-Hellman, qui sert à l'échange de clés et à un cryptage symétrique supplémentaire. Autrement dit, son essence est que d'abord les deux reçoivent clé complète pour le cryptage et le déchiffrement, puis ils commencent le cryptage symétrique le plus courant.

        Méthode asymétrique - un nœud possède toutes les informations pour le cryptage/déchiffrement, et l'autre, en règle générale, uniquement pour le cryptage

        Symétrique : les deux nœuds connaissent toutes les informations de cryptage/déchiffrement.

        J'espère avoir aidé quelqu'un ;3

        1. Dmitri

          Cet article mentionne l'algorithme RSA. Algorithme de chiffrement asymétrique Je l'ai scellé.

        2. Dmitri Amirov Auteur

          Hmm... je viens de remarquer vos commentaires. Mes excuses.

          Tout semble être correct. Il y a une chose à propos de votre dernier paragraphe, en particulier les termes :

          • Algorithme de Daffy-Hellman- est un algorithme qui vous permet d'obtenir une clé secrète partagée et rien de plus
          • Chiffrement asymétrique/symétrique- en général, tout va bien chez toi
          • RSA- un algorithme qui est une combinaison de ces éléments. Sur vos doigts : grâce au cryptage asymétrique utilisant le protocole Deffie-Helman, une clé secrète est établie à l'aide de laquelle les messages entre interlocuteurs sont cryptés selon la méthode de cryptage symétrique.
        3. Dmitri

          Je n'ai toujours pas compris l'énoncé :
          2) La clé publique est transférée à l'expéditeur.
          3) L'expéditeur crypte le message
          4) Virements au destinataire
          5) Le destinataire déchiffre à l'aide de la clé privée. Ce message ne peut pas être déchiffré à l'aide de la clé publique.

          Il s’avère que vous l’aviez en tête dès le début. Nous chiffrons avec le mot Home et déchiffrons avec le mot World. Cela signifie-t-il qu’il existe un autre algorithme reliant le Monde et la Maison entre eux ?

  • Robert

    Merci beaucoup!!!

  • Roman

    Merci. J'ai finalement décidé de comprendre comment cela fonctionne et j'ai appris de cet article. Seulement, je crois, si les complices se connaissent et qu'il est possible d'échanger des clés publiques en toute sécurité, alors cela en vaut la peine. Éliminer l'impact néfaste de l'apparition possible d'une personne au milieu lors de l'échange de clés, qui se fera passer pour A en tant que B et B en tant que A, en remplaçant les clés par les siennes et en visualisant finalement toutes les informations.

    Et dans la vidéo, je pense que c'est en vain qu'ils utilisent ce 3^(24*54), parce que Ce n’est pas du tout évident d’où ça vient, sinon ils expliqueraient que c’est conditionnel.

  • RinswinD

    Merci pour l'article. Tout est expliqué très clairement.

  • Grigori

    Eh bien, cet analphabétisme en orthographe irrite tout le monde - « unilatéral », « appliqué », « long », comme en 5e année. Et donc, pas mal pour comprendre les bases.

  • Grigori

    Parfois la question est simple. Les virus Ransomware utilisent une clé privée. Manger fichier original, il existe un fichier crypté. Tâche : trouver un algorithme, pour ainsi dire, qui recherche un algorithme pour convertir le premier fichier en second...

  • Alexis

    Merci pour cet article clair et amusant ! J'ai enfin compris les bases :).

  • Iaroslav

    Malheureusement, tous les algorithmes disponibles nécessitent toujours la suppression des chiffrements dans la file d'attente dans laquelle ils ont été appliqués.

    Ce n'est pas tout à fait vrai. Je vais vous donner un exemple :
    — supposons que chaque lettre corresponde à code numérique A = 1, B = 2, C = 3, etc. ;
    — supposons qu'Alice envoie à Bob une lettre composée d'une seule lettre A (pour simplifier l'exemple) ;

    Alice : met son chiffre A + 2 = B

    Bob : met son chiffre B + 3 = E
    Bob : envoie une lettre à Alice
    Alice : supprime son chiffre E - 2 = G
    Alice : envoie une lettre à Bob
    Bob : supprime son chiffre G - 3 = A

    Ici le chiffre 2 est la clé secrète d'Alice, le 3 est la clé secrète de Bob. De plus, il se peut qu’il ne s’agisse pas d’un seul caractère. En principe, sa durée est illimitée.

  • Dmitri

    J’ai longtemps évité les fondements théoriques du chiffrement asymétrique. Je le savais superficiellement : il existe une clé publique avec laquelle les données sont cryptées, et il existe une clé privée avec laquelle les données sont déchiffrées. Mais l’idée de mettre en œuvre un tel cryptage m’a toujours dérangé.
    Votre article m’a beaucoup aidé, merci beaucoup pour cela !
    Ce n’est que vers la fin que j’ai revu cette absurdité : « crypté avec une clé publique ». Après tout, à proprement parler, le message n’est pas crypté avec une clé publique, mais avec une clé obtenue sur la base de la clé privée de l’expéditeur et de la clé publique du destinataire (qui, à son tour, a été générée sur la base de la clé privée du destinataire). En effet, dans le tableau concernant Alice et Bob - eux et eux seuls ont pu obtenir la même clé « 9 » - elle est utilisée pour chiffrer et déchiffrer le message. Mais cette clé ne peut être obtenue qu'à partir d'une paire de clés - secrète (Alice/Bob) et publique (Bob/Alice).
    Au sens figuré - oui, le message est toujours crypté avec la clé secrète de l'expéditeur (elle est, grosso modo, constante) et la clé publique du destinataire (cela dépend du destinataire spécifique), donc dans la description, cryptage avec la clé « secrète » est omis - et cette omission brise tout l'ordre du raisonnement.

  • Clarkson

    J'ai lu l'article et je ne l'ai pas très bien compris, même s'il était meilleur que sur le wiki. Mais il y a juste une chose que je ne comprends pas. Si quelqu'un peut répondre correctement, aidez-moi.

    si j'envoie à tout le monde la question « combien font 2+2 ? », je leur dis comment crypter la réponse (je donne à tout le monde la clé publique), et tout le monde m'enverra une réponse à la question, comment puis-je trouver de qui exactement j'attends une réponse, c'est-à-dire avec qui avais-je vraiment envie d'établir un lien ?

    1. Dmitri Amirov Auteur

      Ici, vous posez la question un peu mal.

      Si vous avez besoin d’établir une connexion avec quelqu’un, vous devez alors aller dans la direction opposée. Vous vous connectez à votre interlocuteur, et déjà il te le dira fournit votre clé publique, pas vous.

      MISE À JOUR : a écrit un article sur, je pense que ce sera la bonne réponse à votre question.

      1. Clarkson

        Je vais devoir combattre ma stupidité. le sujet est abordé dans les commentaires et dans votre article, il semble que tout ait été expliqué.

        encore. Pourquoi dois-je publier sa clé ? dites-moi si je ne comprends pas bien.
        Je suis l'initiateur (j'ai besoin de réponses, dans l'exemple je suis le destinataire), ce qui signifie que je génère une paire. c'est lui qui répond (l'expéditeur dans ton exemple) qui a besoin de mon public

        Avant l'envoi, l'expéditeur reçoit une clé publique et crypte le message avec cette clé, après quoi ce message ne peut être déchiffré qu'avec une clé privée, qui est gardée secrète par le destinataire.

  • Être abattu

    J'ai relu plusieurs fois cet article et d'autres sur le sujet, mais l'algorithme d'utilisation des signatures numériques dans les e-mails n'est pas clair. documents Si c'est comme ça ici : https://ru.wikipedia.org/wiki/Electronic_signature, alors des divergences surviennent. Alors, chiffre-t-on toujours en utilisant une clé privée ou une clé publique ?

    1. Dmitri Amirov Auteur

      Si nous signons quelque chose, nous formons la signature basée sur notre clé privée. Et le destinataire doit disposer de notre clé publique, avec l'aide de celle-ci il pourra déchiffrer cette signature.

      Si la signature est « déchiffrée », alors la clé publique correspond à la clé privée, et puisque a priori, seul l'expéditeur possède la clé privée, ce qui signifie que c'est l'expéditeur qui a signé le document.

      1. Être abattu

        Dmitry, ton article m'a beaucoup aidé, tu as un bon style. Mais il y a un point incompréhensible : vous prétendez que l'algorithme asymétrique suppose la présence de deux clés - publique et privée. Autrement dit, le message est chiffré avec une clé publique et déchiffré avec une clé privée et rien d'autre.

        Il peut s'agir de la tâche initiale, par exemple le destinataire doit authentifier le messager.
        Alors je ne peux pas imaginer comment ce programme peut aider ?

        1. Dmitri Amirov Auteur

          Autrement dit, le message est chiffré avec une clé publique et déchiffré avec une clé privée et rien d'autre.

          Pas tout à fait vrai. Le message est chiffré avec une clé et déchiffré avec une autre. Ceux. Il est tout à fait possible de le chiffrer en privé et de le décrypter publiquement.

          Regardons un exemple. Vous souhaitez m'envoyer un message, je veux m'assurer que c'est vous qui me l'avez envoyé. Pas à pas:
          1) Vous chiffrez le message avec la clé privée
          2) Envoyez-le-moi
          3) Je vous contacte et reçois de votre part votre clé publique
          4) Je décrypte le message reçu avec votre clé publique
          5) Si le message est décrypté, cela signifie que c'est vous qui l'avez envoyé

          Personne d'autre ne peut envoyer ce message en se faisant passer pour vous, car vous seul possédez la clé privée.

          1. Être abattu

            Ok, mais que se passe-t-il si vous devez cacher un message aux regards indiscrets ?

  • Anya

    Bon après-midi J'ai aimé l'article, mais j'avais encore des questions (il y en avait même quelques-unes similaires dans les commentaires, mais sans réponses).
    Si dans la deuxième partie de l'article on passe à l'analogie avec Alice et Bob, notamment aux nombres A, B, a, b, P et au nombre 9 obtenu dans l'exemple, lequel d'entre eux sera la clé privée et quelle sera la clé publique ? Merci d'avance pour votre réponse!

    1. Anya

      On ne sait pas si mon commentaire a été publié ou non :(

    2. Dmitri Amirov Auteur

      Il serait plus correct de dire que lors du processus d'échange de données, Alice et Bob reçoivent une clé commune 9 , qui peuvent ensuite être utilisés pour chiffrer leurs messages. En fait, dans l'article, je n'ai pas décrit le cryptage asymétrique lui-même, mais le protocole d'échange de clés, qui a donné une impulsion au développement du cryptage asymétrique.
      L'algorithme de génération d'une paire de clés privée/publique est en réalité un peu plus compliqué, bien qu'il soit similaire à l'algorithme décrit ci-dessus, mais mérite probablement un article séparé. Je ne l’écrirai pas tout de suite dans les commentaires, car je pourrais confondre beaucoup de choses.

  • Grégory
  • Cette partie aborde les problématiques suivantes :

    • Types de chiffres
    • Chiffres de substitution
    • Chiffres de permutation
    • Méthodes de cryptage
    • Algorithmes symétriques et asymétriques
    • Cryptographie symétrique
    • Cryptographie asymétrique
    • Chiffrements en bloc et en flux
    • Vecteurs d'initialisation
    • Méthodes de chiffrement hybrides
    Les chiffrements symétriques sont divisés en deux types principaux : la substitution et la permutation. Chiffres de substitution remplacer les bits, symboles ou blocs par d'autres bits, symboles ou blocs. Chiffres de permutation ne modifient pas le texte source, mais déplacent les significations originales dans le texte source - ils réorganisent les bits, les caractères ou les blocs de caractères pour masquer la signification originale.

    Les chiffrements de substitution utilisent une clé qui spécifie comment la substitution doit être effectuée. DANS Le chiffre de César chaque caractère a été remplacé par le caractère situé trois positions plus bas dans l'alphabet. L'algorithme était l'alphabet et la clé était l'instruction « décaler de trois caractères ».

    La substitution est utilisée par les algorithmes symétriques modernes, mais elle est difficile à comparer avec une méthode aussi simple que le chiffre de César. Cependant, le chiffre de César est un exemple simple et clair du concept de fonctionnement d’un chiffre de substitution.

    Dans un chiffre par permutation, les valeurs sont brouillées ou mises dans un ordre différent. La clé spécifie la position vers laquelle la valeur doit être déplacée, comme le montre la figure 6-6.

    Figure 6-6. Chiffre de permutation


    Ce exemple le plus simple chiffre de permutation, il montre uniquement comment la permutation est effectuée. Si complexe fonctions mathématiques, le réarrangement peut devenir assez difficile à résoudre. Les algorithmes symétriques modernes utilisent simultanément de longues séquences de substitutions et de permutations complexes de symboles du message crypté. L'algorithme contient possible méthodes de processus de substitution et de permutation (représentées dans des formules mathématiques). La clé réside dans les instructions de l'algorithme, spécifiant exactement comment doit le traitement a lieu et dans quel ordre. Pour comprendre la relation entre l'algorithme et la clé, jetez un œil à la figure 6-7. Au sens figuré, l'algorithme crée différentes cases, chacune possédant son propre ensemble (différent des autres) de formules mathématiques indiquant les étapes de substitution et de permutation qui doivent être effectuées sur les bits qui entrent dans cette case. Pour chiffrer un message, la valeur de chaque bit doit passer par différentes cases. Cependant, si chacun de nos messages passe par le même ensemble de boîtes aux lettres dans la même séquence, un attaquant peut facilement procéder à une ingénierie inverse de ce processus, déchiffrer le chiffre et obtenir le texte brut de notre message.

    Figure 6-7. Relation entre clé et algorithme


    Pour contrecarrer un attaquant, une clé est utilisée, qui est un ensemble de valeurs qui indiquent quelles cases doivent être utilisées, dans quel ordre et avec quelles valeurs. Ainsi, si le message A est chiffré avec la clé 1, la clé nécessite que le message passe par les cases 1, 6, 4 et 5. Lorsque nous devons chiffrer le message B, nous utilisons la clé 2, qui nécessite que le message passe par les cases 8. , 3, 2 et 9. La clé ajoute du caractère aléatoire et du secret au processus de cryptage.

    Les chiffrements simples de substitution et de permutation sont vulnérables aux attaques qui effectuent analyse de fréquence (analyse de fréquence). Dans chaque langue, certains mots et modèles sont utilisés plus souvent que d’autres. Par exemple, dans le texte sur langue anglaise la lettre « e » est généralement utilisée plus souvent. Lors de l'analyse fréquentielle d'un message, l'attaquant recherche les modèles de 8 bits (qui composent le caractère) les plus fréquemment répétés. S'il trouve, par exemple, 12 modèles de huit bits dans un message court, il peut conclure qu'il s'agit très probablement de la lettre « e » – la lettre la plus couramment utilisée dans la langue. L'attaquant peut désormais remplacer ces bits par la lettre « e ». Cela lui donnera un avantage dans un processus qui lui permettra de faire de l'ingénierie inverse et de restaurer le message d'origine.

    Les algorithmes symétriques modernes utilisent des techniques de substitution et de permutation dans le processus de chiffrement, mais ils utilisent (devraient utiliser) des mathématiques trop complexes pour permettre le succès d’une attaque d’analyse de fréquence aussi simple.

    Fonctions de génération de clés. Pour générer des clés complexes, une clé principale est généralement d'abord créée, à partir de laquelle des clés symétriques sont ensuite générées. Par exemple, si une application est chargée de générer une clé de session pour chaque entité qui y accède, elle ne doit pas simplement distribuer des copies de la même clé. Différentes entités nécessitent des clés symétriques différentes sur chaque connexion afin de minimiser la durée de leur utilisation. Même si un attaquant intercepte le trafic et déchiffre la clé, il ne pourra visualiser les informations transmises qu'au sein de la session correspondante. La nouvelle session utilisera une clé différente. Si deux clés ou plus sont générées à partir d'une clé principale, elles sont appelées sous-clés (sous-clé).

    Les fonctions de génération de clés (KDF – fonction de dérivation de clé) sont utilisées pour générer des clés constituées de valeurs aléatoires. Différentes valeurs peuvent être utilisées indépendamment ou ensemble comme matériau de clé aléatoire. Des algorithmes sont créés qui utilisent des hachages, des mots de passe et/ou des sels spécifiques qui sont transmis plusieurs fois via des fonctions mathématiques spécifiées par l'algorithme. Plus ce matériel clé passe de fois fonctions spécifiées, plus le niveau de confiance et de sécurité que le cryptosystème dans son ensemble peut offrir est élevé.


    NOTE. N'oubliez pas que l'algorithme reste statique. Le caractère aléatoire des processus de cryptographie est assuré principalement par le matériel de clé.


    Bien que le processus de chiffrement comporte de nombreuses parties, il comporte deux parties principales : les algorithmes et les clés. Comme indiqué précédemment, les algorithmes utilisés dans les systèmes informatiques sont des formules mathématiques complexes qui dictent les règles de conversion du texte brut en texte chiffré. La clé est une chaîne de bits aléatoires utilisée par l’algorithme pour ajouter du caractère aléatoire au processus de cryptage. Pour que deux entités communiquent par chiffrement, elles doivent utiliser le même algorithme et, dans certains cas, la même clé. Dans certaines technologies de chiffrement, le destinataire et l'expéditeur utilisent la même clé, tandis que dans d'autres technologies, ils doivent utiliser des clés différentes mais liées pour chiffrer et déchiffrer les informations. Les sections suivantes expliquent les différences entre ces deux types de méthodes de chiffrement.

    Les algorithmes cryptographiques sont divisés en algorithmes symétriques qui utilisent des clés symétriques (également appelées clés secrètes), et algorithmes asymétriques , qui utilisent des clés asymétriques (également appelées clés publiques et clés privées).

    Dans un système de chiffrement utilisant la cryptographie symétrique, l'expéditeur et le destinataire utilisent deux copies de la même clé pour chiffrer et déchiffrer les informations, comme le montre la figure 6-8. Ainsi, la clé a une double fonctionnalité et est utilisée à la fois dans le processus de cryptage et de déchiffrement. Les clés symétriques sont également appelées clés secrètes, parce que Ce type de cryptage oblige chaque utilisateur à garder la clé secrète et à la protéger de manière appropriée. Si un attaquant obtient cette clé, il peut l'utiliser pour déchiffrer tout message crypté qui y est intercepté.

    Figure 6-8. Lors de l'utilisation d'un algorithme symétrique, l'expéditeur et le destinataire utilisent la même clé pour crypter et déchiffrer les données.


    Chaque paire d'utilisateurs nécessite deux copies de la même clé pour échanger des données en toute sécurité à l'aide de la cryptographie symétrique. Par exemple, si Dan et Irina doivent échanger des données, ils doivent tous deux obtenir une copie de la même clé. Si Dan souhaite également interagir avec Norm et Dave en utilisant la cryptographie symétrique, il doit disposer de trois clés distinctes : une pour chaque ami. Ce n'est pas un gros problème jusqu'à ce que Dan ait besoin d'interagir avec des centaines d'autres personnes pendant plusieurs mois et de conserver un historique de conversations. Après tout, cela nécessitera l'utilisation de la clé appropriée pour la correspondance avec chaque destinataire spécifique. Dans ce cas, cela peut devenir une tâche ardue. Si dix personnes devaient communiquer entre elles en toute sécurité à l’aide de la cryptographie symétrique, elles auraient besoin de 45 clés. Si une centaine de personnes doivent interagir, elles auront besoin de 4950 clés. Formule de calcul quantité requise les clés symétriques ressemblent à ceci :

    Nombre de clés = N(N – 1)/2, où N est le nombre d'abonnés


    Lors de l'utilisation d'algorithmes symétriques, l'expéditeur et le destinataire utilisent la même clé pour les processus de cryptage et de déchiffrement des informations. La sécurité de ces algorithmes dépend entièrement de la manière dont les utilisateurs protègent les clés. Dans ce cas, la sécurité dépend entièrement du personnel, qui doit garder ses clés secrètes. Si une clé est compromise, tous les messages chiffrés avec cette clé peuvent être déchiffrés et lus par un attaquant. En fait, cela devient encore plus complexe car les clés doivent être distribuées en toute sécurité et mises à jour si nécessaire. Si Den doit interagir avec Norm pour la première fois, Den doit décider comment donner la clé à Norm en toute sécurité. S'il le fait de manière non sécurisée, par exemple en envoyant simplement la clé par courrier électronique, cette clé peut facilement être interceptée et utilisée par un attaquant. Dan doit donc donner la clé à Norm d'une manière non conventionnelle. Par exemple, Dan pourrait écrire la clé sur une clé USB et la placer sur le bureau de Norm ou l'envoyer à Norm via un coursier de confiance. Le processus de distribution de clés symétriques peut être une tâche très complexe et fastidieuse.

    Étant donné que les deux utilisateurs utilisent la même clé pour chiffrer et déchiffrer les messages, les systèmes de chiffrement symétriques peuvent assurer la confidentialité mais pas l'authentification ou la non-répudiation. Un tel algorithme cryptographique ne permettra pas de prouver qui a réellement envoyé le message, car les deux utilisateurs utilisent la même clé.

    Mais si les cryptosystèmes symétriques présentent tant de défauts et de problèmes, pourquoi sont-ils utilisés presque partout ? Parce qu’ils offrent une vitesse de traitement très élevée et sont très difficiles à pirater. Les algorithmes symétriques sont beaucoup plus rapides que les algorithmes asymétriques. Ils peuvent chiffrer et déchiffrer de grandes quantités de données relativement rapidement. De plus, les données chiffrées avec un algorithme symétrique utilisant une clé longue sont très difficiles à déchiffrer.

    La liste suivante décrit les forces et les faiblesses des cryptosystèmes à clé symétrique :

    Forces:

    • Beaucoup plus rapide que les systèmes asymétriques
    • Difficile à pirater en utilisant une clé longue
    Points faibles :
    • Nécessite un mécanisme de transfert de clé sécurisé
    • Chaque paire d'utilisateurs a besoin d'une clé unique ; À mesure que le nombre d’utilisateurs augmente, le nombre croissant de clés peut rendre leur gestion tout simplement irréaliste.
    • Fournit la confidentialité mais ne fournit pas d’authentification ou de non-répudiation
    Vous trouverez ci-dessous quelques exemples d'algorithmes symétriques, qui seront abordés en détail plus loin dans la section Chiffrements par blocs et flux.
    • RC4, RC5 et RC6
    Liens connexes:
    • Security in Open Systems, Node 208, « Symmetric Key Cryptography », par Paul Markovitz, NIST Special Publication 800-7 (juillet 1994)
    Dans la cryptographie à clé symétrique, la même clé secrète est utilisée pour le cryptage et le déchiffrement, alors que dans les systèmes à clé publique, des clés différentes sont utilisées à ces fins. asymétrique ) clés. Dans ce cas, deux clés asymétriques différentes sont liées mathématiquement. Si un message est chiffré avec une clé, une autre clé est requise pour le déchiffrer.

    Dans les systèmes à clé publique, une paire de clés est créée, dont l’une est privée et l’autre publique. Clé publique(clé publique) peut être connue de tous, et Clé privée(clé privée) ne doit être connue que de son propriétaire. Les clés publiques sont souvent stockées dans des répertoires et des bases de données d'adresses E-mail, accessible au public à toute personne souhaitant utiliser ces clés pour crypter et déchiffrer des données lors d'interactions avec des individus. La figure 6-9 illustre l'utilisation de différentes clés asymétriques.
    Les clés publiques et privées d'un cryptosystème asymétrique sont mathématiquement liées, mais si quelqu'un possède la clé publique d'une autre personne, il est impossible de connaître la clé privée correspondante. Ainsi, si un attaquant obtient une copie de la clé publique de Bob, cela ne signifie pas que, par une magie mathématique, il pourra obtenir la clé privée correspondante de Bob. Cependant, si quelqu'un met la main sur la clé privée de Bob, il y aura un gros problème. Par conséquent, personne d’autre que le propriétaire ne devrait avoir accès à la clé privée.

    Figure 6-9. Cryptosystème asymétrique


    Si Bob chiffrait les données avec sa clé privée, le destinataire aurait besoin de la clé publique de Bob pour les déchiffrer. Le destinataire peut non seulement décrypter le message de Bob, mais également répondre à Bob avec un message crypté. Pour ce faire, il doit chiffrer sa réponse avec la clé publique de Bob, puis Bob pourra déchiffrer cette réponse avec sa clé privée. Lorsqu’on utilise un algorithme asymétrique, il est impossible de chiffrer et déchiffrer un message avec la même clé ; ces clés, bien que mathématiquement liées, ne sont pas les mêmes (contrairement aux algorithmes symétriques). Bob peut chiffrer les données avec sa clé privée, puis le destinataire peut les déchiffrer avec la clé publique de Bob. En déchiffrant un message à l'aide de la clé publique de Bob, le destinataire peut être sûr que le message provient réellement de Bob, car le message ne peut être déchiffré à l'aide de la clé publique de Bob que s'il a été chiffré à l'aide de la clé privée correspondante de Bob. Cela fournit des capacités d'authentification car Bob est (vraisemblablement) le seul à posséder cette clé privée. Si le destinataire veut être sûr que le seul à pouvoir lire sa réponse sera Bob, il doit chiffrer son message adressé à Bob avec la clé publique de Bob. Alors seul Bob pourra déchiffrer ce message, puisque lui seul possède la clé privée nécessaire pour le faire.

    De plus, le destinataire peut choisir de chiffrer les données avec sa clé privée plutôt qu'avec la clé publique de Bob. Qu'est-ce que cela va lui apporter ? Authentification. Bob saura que le message vient de lui et ne peut provenir de personne d’autre. S'il chiffre les données avec la clé publique de Bob, cela ne fournira pas d'authentification car n'importe qui peut obtenir la clé publique de Bob. S'il utilise sa clé privée pour chiffrer les données, alors Bob peut être sûr que le message vient de lui. Les clés symétriques ne fournissent pas d'authentification car les deux parties utilisent la même clé, ce qui ne peut garantir que le message provient d'une personne spécifique.

    Si l'expéditeur est plus soucieux de la confidentialité des informations transmises, il doit chiffrer son message avec la clé publique du destinataire. C'est appelé format de message sécurisé (format de message sécurisé), puisque seule la personne possédant la clé privée correspondante pourra décrypter ce message.

    Si l'authentification est plus importante pour l'expéditeur, il doit crypter les données transmises avec sa clé privée. Cela permettra au destinataire d’être sûr que la personne qui a chiffré les données est bien celle qui possède la clé privée correspondante. Si l'expéditeur chiffre les données avec la clé publique du destinataire, cela ne fournit pas d'authentification car la clé publique est accessible à tous.

    Le chiffrement des données à l'aide de la clé privée de l'expéditeur est appelé format de message ouvert (format de message ouvert), car n'importe qui peut déchiffrer ces données en utilisant la clé publique publique de l'expéditeur. La confidentialité n'est pas assurée.

    Les clés privées et publiques peuvent être utilisées pour chiffrer et déchiffrer les données. Ne pensez pas que la clé publique n’est nécessaire que pour le cryptage et que la clé privée n’est nécessaire que pour le déchiffrement. Il faut comprendre que si les données sont cryptées avec une clé privée, elles ne pourront pas être déchiffrées avec celle-ci. Les données chiffrées avec une clé privée peuvent être déchiffrées avec la clé publique correspondante. Et vice versa.

    L'algorithme asymétrique est plus lent que l'algorithme symétrique car les algorithmes symétriques exécutent des fonctions mathématiques relativement simples sur les bits dans les processus de cryptage et de déchiffrement. Ils remplacent et mélangent (déplacent) les bits, ce qui n'est pas très compliqué et n'utilise pas beaucoup de CPU. La raison pour laquelle ils résistent au piratage est qu’ils exécutent ces fonctions plusieurs fois. Ainsi, dans les algorithmes symétriques, un ensemble de bits subit une plus longue série de substitutions et de permutations.

    Les algorithmes asymétriques sont plus lents que les algorithmes symétriques car ils utilisent des mathématiques beaucoup plus complexes pour exécuter leurs fonctions, ce qui nécessite plus de temps CPU. Cependant, les algorithmes asymétriques peuvent assurer l'authentification et la non-répudiation selon l'algorithme utilisé. De plus, les systèmes asymétriques permettent un processus de distribution de clés plus simple et plus gérable que les systèmes symétriques et ne présentent pas les problèmes d'évolutivité des systèmes symétriques. La raison de ces différences est qu’avec les systèmes asymétriques, vous pouvez envoyer votre clé publique à toutes les personnes avec lesquelles vous souhaitez interagir, plutôt que d’utiliser une clé privée distincte pour chacune d’elles. Ensuite, dans la section Méthodes de chiffrement hybrides de ce domaine, nous verrons comment ces deux systèmes peuvent être utilisés ensemble pour obtenir les meilleurs résultats.

    NOTE. La cryptographie à clé publique est une cryptographie asymétrique. Ces termes sont utilisés de manière interchangeable.

    Voici les forces et les faiblesses des algorithmes à clé asymétrique :

    Forces

    • Meilleur processus de distribution de clés que les systèmes symétriques
    • Meilleure évolutivité que les systèmes symétriques
    • Peut fournir une authentification et une non-répudiation
    Côtés faibles
    • Fonctionne beaucoup plus lentement que les systèmes symétriques
    • Effectuer des transformations mathématiques complexes
    Vous trouverez ci-dessous des exemples d'algorithmes à clés asymétriques.
    • Cryptosystème à courbe elliptique (ECC)
    • Algorithme Diffie-Hellman
    • El Gamal
    • Algorithme de signature numérique (DSA – Algorithme de signature numérique)
    • Sac à dos
    Nous reviendrons sur ces algorithmes plus loin dans ce domaine, dans la section « Types de systèmes asymétriques ».

    Le tableau 6-1 fournit un bref résumé des principales différences entre les systèmes symétriques et asymétriques.

    Tableau 6-1. Différences entre les systèmes symétriques et asymétriques


    NOTE. Les signatures numériques seront abordées plus loin dans la section Signatures numériques.
    Liens connexes:
    • Sécurité dans les systèmes ouverts, Node 210, « Assymétrique Key Cryptography », par Paul Markovitz, NIST Special Publication 800-7 (juillet 1994)
    • Foire aux questions sur la cryptographie actuelle, version 4.1, section 2.1.4.5, « Qu'est-ce que le mode de retour de sortie ? » par Laboratoires RSA
    Il existe deux principaux types d’algorithmes symétriques : les chiffrements par blocs, qui opèrent sur des blocs de bits, et les chiffrements par flux, qui opèrent sur un bit à la fois.

    Si vous utilisez pour crypter et décrypter des données chiffrement par bloc , le message est divisé en blocs de bits. Ces blocs sont ensuite transmis aux fonctions mathématiques pour traitement, un bloc à la fois. Imaginez que vous ayez besoin de chiffrer un message destiné à votre mère à l'aide d'un chiffrement par blocs qui fonctionne par blocs de 64 bits. Votre message fait 640 bits, il est donc divisé en 10 blocs distincts de 64 bits. Chaque bloc est transmis séquentiellement à l'entrée de la fonction mathématique. Ce processus se poursuit jusqu'à ce que chaque bloc soit converti en texte chiffré. Après cela, vous envoyez un message crypté à votre mère. Il utilise le même chiffrement par bloc et la même clé. Ces 10 blocs de texte chiffré sont introduits dans l'algorithme dans l'ordre inverse jusqu'à ce que le texte brut original soit obtenu.


    Pour garantir la force d'un chiffre, celui-ci doit faire suffisamment appel à deux méthodes fondamentales : la confusion et la diffusion. Mélange se fait généralement par substitution, alors que la diffusion - en utilisant le réarrangement. Pour qu’un chiffre soit vraiment puissant, il doit utiliser ces deux méthodes pour rendre l’ingénierie inverse pratiquement impossible. Le niveau de mélange et de dispersion est indiqué par le caractère aléatoire de la valeur clé et la complexité des fonctions mathématiques utilisées.

    Dans les algorithmes, la diffusion peut se produire à la fois au niveau des bits individuels des blocs et au niveau des blocs eux-mêmes. Le brassage est effectué à l'aide de fonctions de substitution complexes pour empêcher un attaquant de comprendre comment les valeurs d'origine ont été remplacées et d'obtenir le texte brut d'origine. Imaginez que j'ai 500 blocs de bois, chacun portant une lettre. Je les aligne pour en faire un message (texte brut). Je remplace ensuite 300 de ces blocs par des blocs d'un autre ensemble (mélange par substitution). Ensuite je réorganise tous ces blocs (dispersion par brassage) et laisse cette pile. Pour que vous puissiez reconstruire ma phrase originale, vous devez remplacer les blocs par les bons et les placer dans le bon ordre. Bonne chance!

    Le brassage est effectué pour créer une relation entre la clé et le texte chiffré résultant. Cette relation doit être aussi complexe que possible afin qu'il soit impossible d'ouvrir la clé à partir de l'analyse du texte chiffré. Chaque valeur du texte chiffré doit dépendre de plusieurs parties de la clé, mais pour un observateur, cette relation entre les valeurs de la clé et les valeurs du texte chiffré doit apparaître complètement aléatoire.

    La diffusion, en revanche, signifie qu'un bit de texte en clair affecte plusieurs bits de texte chiffré. Le remplacement d'une valeur dans le texte brut devrait entraîner le remplacement de plusieurs valeurs dans le texte chiffré, et non d'une seule. En fait, dans un chiffrement par bloc vraiment puissant, lorsqu'un bit du texte en clair est modifié, environ 50 % des bits du texte chiffré devraient changer. Ceux. Si vous modifiez juste un bit dans le texte en clair, environ la moitié du texte chiffré changera.

    Les chiffrements par blocs utilisent à la fois le brassage et la diffusion dans leurs méthodes de fonctionnement. La figure 6-10 montre un exemple conceptuel de chiffrement par bloc simple. Il reçoit quatre blocs de quatre bits chacun pour le traitement. L'algorithme de bloc considéré comporte deux niveaux de boîtes de remplacement de quatre bits, appelées boîtes S. Chaque S-box contient des tables de recherche utilisées par l'algorithme comme instructions pour chiffrer les bits.

    Figure 6-10. Le message est divisé en blocs de bits sur lesquels sont réalisées les fonctions de substitution et de diffusion


    La clé spécifie (voir Figure 6-10) quelles boîtes S doivent être utilisées dans le processus de brassage du message original du texte clair lisible au texte chiffré illisible. Chaque S-box contient différentes méthodes de substitution et de permutation qui peuvent être effectuées sur chaque bloc. Ceci est un exemple très simple. En réalité, la plupart des chiffrements par blocs fonctionnent avec des blocs de 32, 64 ou 128 bits et peuvent utiliser beaucoup plus de S-box.

    Comme indiqué précédemment, les chiffrements par blocs exécutent des fonctions mathématiques sur des blocs de bits. Contrairement à eux, chiffrements de flux (chiffrement par flux) ne divise pas le message en blocs. Ils traitent le message comme un flux de bits et exécutent des fonctions mathématiques sur chaque bit séparément.

    Lors de l'utilisation d'un chiffrement par flux, le processus de chiffrement convertit chaque bit de texte brut en un bit de texte chiffré. Les chiffrements par flux utilisent un générateur de flux de clés qui produit un flux de bits concaténés à l'aide de Opérations XOR avec des bits de texte en clair pour obtenir du texte chiffré. Ceci est illustré à la figure 6-11.

    Figure 6-11. Dans un chiffrement de flux, les bits générés par le générateur de flux de clés sont XOR avec les bits de texte en clair du message.

    NOTE. Ce processus est très similaire à l’utilisation de tampons de chiffrement uniques décrits précédemment. Les bits individuels du tampon unique sont utilisés pour chiffrer les bits individuels du message à l'aide de l'opération XOR, et dans l'algorithme de flux, les bits individuels sont créés par un générateur de flux de clés également utilisé pour chiffrer les bits du message à l'aide de l'opération XOR. Opération XOR.

    Si un système de chiffrement dépend uniquement d'un algorithme de flux symétrique, un attaquant peut obtenir une copie du texte brut et du texte chiffré résultant, les XOR ensemble et se retrouver avec un flux de clés utilisé qu'il pourra ensuite utiliser pour déchiffrer d'autres messages. Par conséquent, des gens intelligents ont décidé d'insérer la clé dans ce flux.

    Dans les chiffrements par blocs, la clé détermine quelles fonctions sont appliquées au texte en clair et dans quel ordre. La clé garantit le caractère aléatoire du processus de cryptage. Comme indiqué précédemment, la plupart des algorithmes de chiffrement sont open source, les utilisateurs savent donc comment ils fonctionnent. Le seul secret est la clé. Dans les chiffrements par flux, le caractère aléatoire est également obtenu grâce à la clé, ce qui rend le flux de bits avec lequel le texte en clair est combiné aussi aléatoire que possible. Ce concept est illustré dans la figure 6-12. Comme vous pouvez le voir sur cette figure, l'expéditeur et le destinataire doivent avoir la même clé pour générer le même flux de clés afin de pouvoir crypter et déchiffrer correctement les informations.

    Figure 6-12. L'expéditeur et le destinataire doivent avoir la même clé pour générer le même flux de clés



    Les vecteurs d'initialisation (IV) sont des valeurs aléatoires utilisées par l'algorithme pour garantir qu'il n'y a aucun modèle dans le processus de cryptage. Ils sont partagés avec des clés et n'ont pas besoin d'être chiffrés lorsqu'ils sont envoyés au destinataire. Si aucun vecteur d'initialisation n'est utilisé, deux textes en clair identiques chiffrés avec la même clé donneront le même texte chiffré. Un tel modèle simplifiera considérablement la tâche de l’attaquant consistant à briser la méthode de cryptage et à révéler la clé. Si votre message comporte une partie répétée (une phrase ou un mot), vous devez vous assurer que lorsque vous chiffrez chaque partie répétée du texte brut du message, un texte chiffré différent est créé, c'est-à-dire aucun modèle ne sera créé. C'est pour garantir un plus grand caractère aléatoire dans le processus de chiffrement que le vecteur d'initialisation est utilisé avec la clé.

    Les chiffrements de flux solides et efficaces présentent les caractéristiques suivantes :

    • Longues périodes de modèles non répétitifs dans les valeurs du flux clé. Les bits générés par le flux de clés doivent être aléatoires.
    • Flux de clés statistiquement imprévisible. Les bits produits à la sortie du générateur de flux de clés ne doivent pas être prévisibles.
    • Le flux de clés n'a pas connexion linéaire avec clé. Si quelqu’un a obtenu les valeurs du flux de clés, cela ne devrait pas lui permettre de recevoir la valeur de la clé.
    • Flux de clés statistiquement uniforme (nombre approximativement égal de zéros et de uns). Le flux clé ne doit pas être dominé par des zéros ou des uns.
    Les chiffrements de flux nécessitent un caractère aléatoire et chiffrent un bit à la fois. Cela nécessite plus de puissance CPU qu'un chiffrement par bloc, les chiffrements par flux sont donc plus adaptés à une implémentation matérielle. Et les chiffrements par blocs, puisqu'ils nécessitent moins de ressources processeur, sont plus faciles à mettre en œuvre au niveau logiciel.
    NOTE. Bien entendu, il existe à la fois des chiffrements par blocs, implémentés au niveau matériel, et des chiffrements par flux, fonctionnant au niveau logiciel. La déclaration ci-dessus est simplement une ligne directrice de conception et de mise en œuvre de « meilleures pratiques ».


    Chiffres de flux et tampons uniques. Les chiffrements par flux offrent le même type de sécurité que les tampons à usage unique, ils fonctionnent donc de la même manière. Les chiffrements par flux ne peuvent pas réellement fournir le même niveau de sécurité que les tampons à usage unique, car ils sont mis en œuvre sous forme de logiciels et d'outils automatisés. Cependant, cela rend les chiffrements par flux plus pratiques.


    Auparavant, nous avons examiné les algorithmes symétriques et asymétriques et avons noté que les algorithmes symétriques sont rapides mais présentent certains inconvénients (mauvaise évolutivité, gestion complexe des clés, offrant uniquement la confidentialité), tandis que les algorithmes asymétriques n'ont pas ces inconvénients, mais ils sont très lents. Examinons maintenant les systèmes hybrides qui utilisent à la fois des méthodes de chiffrement symétriques et asymétriques.

    Utilisation combinée d'algorithmes asymétriques et symétriques


    Cryptographie à clé publique utilise deux clés (publique et privée) générées par un algorithme asymétrique, il sert à protéger les clés de chiffrement et à les distribuer. La clé secrète est générée par un algorithme symétrique et est utilisée pour le processus de cryptage principal. Il s’agit de l’utilisation hybride de deux algorithmes différents : symétrique et asymétrique. Chaque algorithme a ses propres avantages et inconvénients, et les utiliser ensemble vous permet de tirer le meilleur parti de chacun d’eux.

    Dans une approche hybride, ces deux technologies se complètent, chacune remplissant ses propres fonctions. L'algorithme symétrique produit les clés utilisées pour chiffrer la majeure partie des données, tandis que l'algorithme asymétrique produit les clés utilisées pour distribuer automatiquement les clés symétriques.

    La clé symétrique est utilisée pour chiffrer les messages que vous envoyez. Lorsque votre ami reçoit un message que vous avez chiffré, il doit le déchiffrer, ce qui nécessite la clé symétrique sur laquelle votre message est chiffré. Mais vous ne voulez pas envoyer cette clé de manière non sécurisée car... le message peut être intercepté et la clé non protégée peut en être extraite par un attaquant pour une utilisation ultérieure pour décrypter et lire vos messages. Vous ne devez pas utiliser une clé symétrique pour chiffrer les messages à moins qu'elle ne soit correctement protégée. Pour sécuriser une clé symétrique, un algorithme asymétrique peut être utilisé pour la chiffrer (voir Figure 6-13). Mais pourquoi utiliserions-nous une clé symétrique pour chiffrer les messages et une clé asymétrique pour chiffrer une clé symétrique ? Comme mentionné précédemment, l'algorithme asymétrique est lent car il utilise des mathématiques plus complexes. Et comme votre message sera probablement plus long que la clé, il est plus logique d'utiliser un algorithme plus rapide (symétrique) pour le chiffrer, et un algorithme plus lent (asymétrique) qui fournit des services supplémentaires sécurité.

    Figure 6-13. Dans un système hybride, la clé asymétrique est utilisée pour chiffrer la clé symétrique et la clé symétrique est utilisée pour chiffrer les messages.


    Comment cela fonctionne-t-il en réalité ? Disons que Bill envoie un message à Paul et souhaite que seul Paul puisse le lire. Bill crypte le message avec la clé secrète, il possède désormais un texte chiffré et une clé symétrique. La clé doit être sécurisée, donc Bill chiffre la clé symétrique avec une clé asymétrique. Les algorithmes asymétriques utilisent une clé privée et une clé publique, donc Bill chiffre la clé symétrique avec la clé publique de Paul. Bill dispose désormais du texte chiffré du message et du texte chiffré de la clé symétrique. Pourquoi Bill a-t-il chiffré la clé symétrique avec la clé publique de Paul et non avec sa clé privée ? Si Bill le chiffrait avec sa propre clé privée, n'importe qui pourrait le déchiffrer avec la clé publique de Bill et obtenir une clé symétrique. Cependant, Bill ne souhaite pas que quiconque possédant sa clé publique puisse lire ses messages à Paul. Bill veut que seul Paul ait cette opportunité. Bill a donc chiffré la clé symétrique avec la clé publique de Paul. Si Paul protégeait bien sa clé privée, lui seul serait capable de lire le message de Bill.

    Paul reçoit le message de Bill et utilise sa clé privée pour déchiffrer la clé symétrique. Paul utilise ensuite la clé symétrique pour décrypter le message. Paul peut désormais lire un message important et confidentiel de Bill.

    Quand on dit que Bill utilise une clé pour chiffrer un message et que Paul utilise la même clé pour le déchiffrer, cela ne veut pas dire qu’ils effectuent toutes ces opérations manuellement. Moderne logiciel fait tout cela pour nous sans que nous ayons besoin de connaissances particulières pour l'utiliser.

    Tout ici est assez simple, vous devez vous rappeler les aspects suivants :

    • Un algorithme asymétrique effectue le cryptage et le déchiffrement à l’aide de clés privées et publiques mathématiquement liées.
    • L'algorithme symétrique effectue le cryptage et le déchiffrement à l'aide d'une clé secrète partagée.
    • Une clé symétrique (secrète) est utilisée pour chiffrer les messages réels.
    • La clé publique est utilisée pour chiffrer la clé symétrique pour une transmission sécurisée.
    • Une clé secrète est identique à une clé symétrique.
    • Une clé asymétrique peut être privée ou publique.
    Ainsi, lors de l’utilisation d’un système hybride, l’algorithme symétrique crée une clé secrète utilisée pour chiffrer les données ou les messages, et la clé asymétrique chiffre la clé secrète.

    Clé de session (clé de session) est une clé symétrique utilisée pour chiffrer les messages échangés entre deux utilisateurs. Une clé de session n'est pas différente de la clé symétrique décrite précédemment, mais elle n'est valable que pour une seule session de communication entre utilisateurs.

    Si Tanya dispose d'une clé symétrique qu'elle utilise constamment pour chiffrer les messages entre elle et Lance, cette clé symétrique n'a pas besoin d'être régénérée ou modifiée. Ils utilisent simplement la même clé à chaque fois qu’ils interagissent en utilisant le cryptage. Cependant, longtemps réutilisation l’utilisation de la même clé augmente la probabilité qu’elle soit interceptée et compromette les communications sécurisées. Pour éviter cela, vous devez générer une nouvelle clé symétrique chaque fois que Tanya et Lance ont besoin de communiquer, l'utiliser uniquement pour une seule session de communication, puis la détruire (voir Figure 6-14). Même s’ils doivent interagir à nouveau dans une heure seulement, une nouvelle clé de session sera générée.

    Figure 6-14. Une clé de session est générée pour chaque session d'interaction utilisateur et n'est valable que dans cette session.


    Enveloppes numériques. Lorsque les gens découvrent la cryptographie pour la première fois, l’utilisation conjointe d’algorithmes symétriques et asymétriques peut prêter à confusion. Cependant, ces concepts sont très importants à comprendre car ils constituent véritablement les concepts fondamentaux de la cryptographie. Ce procédé n'est pas seulement utilisé dans client de messagerie ou dans plusieurs produits, il détermine l'ordre dans lequel les données et les clés symétriques sont traitées lors de leur transmission.
    L'utilisation combinée de ces deux technologies est appelée approche hybride, mais elle porte aussi un nom plus général - enveloppe numérique (enveloppe numérique).




    La clé de session offre un niveau de protection plus élevé par rapport à une clé symétrique statique, car il n'est valable que pour une session de communication entre deux ordinateurs. Si un attaquant parvient à intercepter la clé de session, il ne pourra l'utiliser que pour obtenir un accès non autorisé aux informations transmises pendant une courte période de temps.

    Si deux ordinateurs doivent communiquer en utilisant le cryptage, ils doivent d'abord passer par un processus de « poignée de main » dans lequel ils se mettent d'accord sur un algorithme de cryptage qui sera utilisé pour transmettre une clé de session afin de crypter davantage les données pendant que les ordinateurs communiquent. Essentiellement, deux ordinateurs installent connexion virtuelle les uns avec les autres, ce qu'on appelle une séance. Une fois la session terminée, chaque ordinateur détruit toutes les structures de données créées pour cette session, libère des ressources et, entre autres, détruit la clé de session utilisée. Ces choses système opérateur et les applications s'exécutent dans arrière-plan et l'utilisateur n'a pas besoin de s'en soucier. Cependant, le professionnel de la sécurité doit comprendre les différences entre les types de clés et les problèmes qui leur sont associés.


    NOTE. Les clés privées et symétriques ne doivent pas être stockées et/ou transmises en clair. Même si cela semble évident, il existe déjà de nombreux produits logiciels a été compromis précisément pour cette raison.

    Problèmes de sécurité sans fil. Nous avons examiné diverses normes 802.11 et le protocole WEP dans le domaine 05. Parmi la longue liste de problèmes liés au WEP, il existe un problème lié au cryptage des données. Si seul WEP est utilisé pour chiffrer le trafic sans fil, la plupart des implémentations n'utilisent qu'une seule clé statistiquement symétrique pour chiffrer les paquets. L'un des changements et avantages de la norme 802.11i est qu'elle garantit que chaque paquet est chiffré avec une clé de session unique.