Cryptographie: explication des algorithmes clés symétriques et asymétriques

La cryptographie est née de la nécessité de rendre une transmission de données privée, donc sur la base, la cryptographie est la méthode appliquée à un message pour le crypter et le décrypter de telle manière que seul le texte en clair soit visible pour l'expéditeur et le destinataire dudit message, qu'il soit totalement illisible pour quiconque l'intercepte au milieu de la transmission, et à son tour, qu'il soit suffisamment sûr pour résister à toute attaque cela pourrait compromettre les informations transmises. Il existe deux types de cryptage selon le type de vos clés. Cryptographie dont les algorithmes n'utilisent qu'une seule clé, ou cryptographie symétrique , et la cryptographie des algorithmes à deux clés, cryptographie asymétrique . Ici, nous pourrons voir comment chacun fonctionne et quelles sont leurs propriétés et leurs différences.

Cryptographie symétrique ou cryptographie à une clé

La cryptographie symétrique est la technique cryptographique la plus ancienne du marché, mais elle offre toujours un haut niveau de sécurité. Il repose sur l'utilisation d'une seule clé secrète qui se chargera de crypter et décrypter les informations, qu'il s'agisse d'informations en transit avec des protocoles tels que TLS, ou d'informations sur un périphérique de stockage amovible. La cryptographie symétrique a été la première méthode utilisée pour crypter les informations, elle est basée sur le fait que le même mot de passe sera utilisé à la fois pour le cryptage et le décryptage, par conséquent, il est essentiel que tous les utilisateurs qui souhaitent crypter ou décrypter le message, l'aient clé secrète, sinon ils ne pourront pas. Grâce à la cryptographie symétrique, nous pouvons effectuer des communications ou stocker des fichiers en toute sécurité.

Cryptographie

Chiffrement l'utilisation d'une clé symétrique signifie qu'au moins deux utilisateurs doivent avoir la clé secrète. En utilisant cette clé, tous les messages transmis via le canal non sécurisé, comme Internet, seront cryptés et décryptés, nous avons donc besoin d'un cryptage des données pour maintenir la confidentialité. Tout utilisateur souhaitant accéder au message chiffré doit avoir ce mot de passe de déchiffrement, sinon il sera illisible.

La méthode pour crypter les données est basée sur le fait que l'expéditeur cryptera le message avec sa clé privée, il l'enverra via le canal non sécurisé et le destinataire devra le décrypter avec le même mot de passe ou la même clé privée que l'expéditeur. a utilisé.

Il y a plusieurs points qu'un algorithme de clé symétrique doit respecter pour être sûr lors de son utilisation:

  • Une fois le message est crypté, ni la clé de cryptage ni le message clair ne peuvent être obtenus par n'importe quelle méthode.
  • Si nous connaissons le message clair et le cryptage, plus de temps et d'argent devraient être consacrés à l'obtention de la clé pour accéder au message clair que la valeur possible de l'information qui est volé.

Attaques par force brute sont le véritable ennemi des algorithmes de cryptographie symétrique , il faut garder à l'esprit que ces algorithmes sont publics et que leur force dépend directement de la complexité de l'algorithme en interne, ainsi que de la longueur de la clé utilisée pour empêcher ces attaques.

La chose la plus importante dans la cryptographie symétrique est de protéger la clé privée ou le mot de passe. Le principal problème qui se pose est la distribution de cette clé privée ou mot de passe à tous les utilisateurs, expéditeurs et destinataires des informations, pour crypter et décrypter les informations contenues dans le message. Il est essentiel que tous les utilisateurs du système protègent au mieux la clé privée ou le mot de passe, car si elle tombe entre de mauvaises mains, tout le système serait compromis, devant générer une nouvelle clé et redistribuer la clé privée aux différents participants.

L'une des différences que nous avons entre la cryptographie symétrique et asymétrique est qu'en symétrique tous les utilisateurs ont la même clé de cryptage / décryptage, si nous avons plus d'un canal de communication, nous aurons autant de clés privées que de canaux de communication parallèles. Cependant, dans les canaux asymétriques, chaque utilisateur aura une paire de clés (publiques et privées) pour tous les canaux de communication, quel que soit le nombre de canaux sécurisés à maintenir, il suffit de protéger la clé privée.

L'avantage des algorithmes de cryptographie symétriques est qu'ils sont rapides, très rapides.De plus, ces dernières années, l'accélération du cryptage matériel a été intégrée aux processeurs informatiques, serveurs, routeurs et autres appareils, de cette manière, nous pouvons transférer des données via VPN très rapide. La vitesse dépend également de l'algorithme de cryptage symétrique à utiliser, par exemple, AES et ChaCha20 sont deux des plus rapides et des plus sécurisés que nous ayons aujourd'hui, mais le matériel de l'équipement influence beaucoup.

Nous allons maintenant parler en détail de deux algorithmes symétriques qui sont utilisés en continu aujourd'hui, soit dans les connexions HTTPS avec TLS 1.2 et TLS 1.3, dans les réseaux privés virtuels avec IPsec, OpenVPN ou WireGuard, et également dans d'autres domaines où le cryptage des données est utilisé, comme dans VeraCrypt.

Advanced Encryption Standard (AES)

L'algorithme AES symétrique était en charge de remplace DES , et est actuellement utilisé dans tous les canaux et protocoles sécurisés tels que TLS, FTPES, les réseaux privés virtuels et bien plus encore. Le cryptage AES peut être utilisé à la fois dans le logiciel et le matériel, AES est un algorithme de cryptage par bloc, la taille de bloc fixe est de 128 bits . La longueur de la clé peut être choisie, et nous avons 128, 192 et 256 bits disponibles , étant la longueur de 128 bits la norme, mais 256 bits sont également largement utilisés.

Un aspect très important est qu'AES est responsable de la génération d'une matrice 4 × 4, puis une série de cycles de cryptage lui sont appliqués. Pour une clé de 128 bits, 10 tours de chiffrement sont appliqués, pour une clé de 192 bits, 12 tours sont appliqués, et pour une clé de 256 bits, les tours appliqués sont de 14. Dès le début, de nombreux cryptographes doutent de sa sécurité, et c'est que les attaques ont été enregistrées sur un certain nombre de tours proches du tour final, en particulier 7 tours pour les clés de 128 bits, 8 tours pour les clés de 192 bits et 9 tours pour les clés de 256 bits ont été déchiffrés.

Le mode de cryptage est la façon dont les blocs de messages cryptés AES sont traités, il existe différents types, et chacun d'eux fonctionne d'une manière différente. Par exemple, il y a AES-CBC, AES-CFB et AES-OFB , nous allons expliquer ce qui apparaît exactement dans les bibliothèques cryptographiques telles qu'OpenSSL et LibreSSL.

  • CBC (chaînage de blocs de chiffrement) - Ce mode de cryptage a été largement utilisé en conjonction avec une fonction de hachage pour vérifier l'authenticité des données, et est toujours utilisé aujourd'hui. Ce mode de cryptage consiste à XORing chaque bloc de texte en clair avec le bloc de cryptage précédent. Chaque bloc chiffré dépend du précédent traité jusqu'à ce point. Pour exécuter cette option XOR avec le premier bloc de texte, un vecteur d'initialisation IV est utilisé. Ce mode de cryptage est effectué séquentiellement, il ne peut pas être traité en parallèle pour augmenter les performances de cryptage / décryptage des données.
  • OFB (retour de sortie) : dans ce mode, la clé secrète est utilisée pour créer un bloc pseudo-aléatoire auquel l'opération XOR avec le texte en clair est appliquée pour créer le texte chiffré. Dans ce cas, un vecteur d'initialisation est également requis, qui doit être unique pour chaque message chiffré. Si un IV différent n'est pas utilisé, la sécurité du système est compromise. Il ne peut pas non plus être parallélisé.
  • CFB (retour chiffré) : cela se fait de la même manière que dans OFB, mais pour produire le keystream, il crypte le dernier bloc de chiffrement, au lieu du dernier bloc du keystream comme le fait OFB. Le chiffrement ne peut pas être parallélisé, mais le déchiffrement le peut.
  • GCM ( Galois / Mode compteur) : Ce mode de cryptage est l'un des meilleurs en termes de sécurité et de vitesse, GCM permet un traitement parallèle et est compatible avec les processeurs AES-NI pour accélérer les performances de cryptage / décryptage des données. Ce mode de cryptage est AEAD, en plus de crypter les données, il est également capable de les authentifier et de vérifier l'intégrité des données, pour s'assurer qu'elles n'ont pas été modifiées. GCM peut également accepter des vecteurs d'initialisation aléatoires.

Comme vous l'avez vu, AES est actuellement l'un des algorithmes de cryptage symétrique les plus importants et les plus largement utilisés au monde, cependant, le mode de cryptage le plus recommandé est AES-GCM car il intègre AEAD.

ChaCha20

L'algorithme ChaCha20 est un algorithme de cryptage symétrique qui prend en charge 128 bits et 256 bits et les clés rapides, contrairement à AES qui est un chiffrement par blocs, ChaCha20 est un chiffrement de flux. Il a des caractéristiques similaires à son prédécesseur Salsa20 mais avec une fonction primitive de 12 ou 20 tours différents. Son code a été publié, normalisé par l'IETF dans la RFC 7539 et dans les implémentations logicielles, il est beaucoup plus efficace et plus rapide qu'AES, il s'est donc rapidement fait une place au sein des algorithmes les plus utilisés aujourd'hui.

Pour savoir pourquoi il est devenu si célèbre, nous allons mettre Google au milieu afin que tout puisse être compris beaucoup plus rapidement. Les connexions HTPPS visent à offrir une sécurité maximale sur les sites Web que nous visitons chaque jour, c'était la prochaine étape du protocole HTTP qui n'avait aucune protection. Le cryptage, cependant, varie d'un navigateur à l'autre. Jusqu'à il y a quelques années, Chrome en Android utilise AES-GCM comme algorithme de cryptage symétrique, cependant, Google travaille depuis de nombreuses années sur un cryptage plus actuel, plus sûr et plus rapide.

Le saut de popularité se produit lorsque, après son lancement dans la version de bureau de Chrome, le nouveau ChaCha20 pour le cryptage et Poly1305 pour l'authentification arrive sur Android. Un travail titanesque qui se traduit par un algorithme symétrique qui offre plus de sécurité et qui est immunisé contre divers types d'attaques. Cependant, le plus remarquable est qu'il atteint des performances trois fois plus élevées que les protocoles un peu plus anciens tels que AES, de cette manière, les capacités du Processeur sont également mieux utilisées et une réduction de 16% de la largeur de la bande utilisée, ce qui permet de profiter encore plus de la connexion.

ChaCha20 est largement utilisé dans les connexions HTTPS, dans les connexions SSH pour gérer les serveurs, et même le protocole VPN WireGuard populaire utilise uniquement ChaCha20 pour le cryptage symétrique des données. Il est très possible que bientôt nous voyons également ChaCha20 dans les connexions IPsec, en attendant, vous devriez utiliser AES-GCM chaque fois que possible.

Jusqu'ici l'explication de la cryptographie symétrique, nous avons commenté les deux algorithmes qui sont fréquemment utilisés aujourd'hui, il y en a beaucoup d'autres qui dans le passé étaient très pertinents, en particulier pour le développement des actuels, puisque les bases des nouveaux sont elles se sont installés sur l'expérience des anciens, leurs erreurs et leurs avantages. Des algorithmes tels que DES, 3DES, RC5 ou IDEA ont ouvert la voie à de nouveaux algorithmes de sorte qu'aujourd'hui nous disposons d'algorithmes de cryptage vraiment puissants capables de résister aux attaques et de protéger toutes nos informations contre les mains indésirables et malveillantes.

Cryptographie asymétrique ou cryptographie à clé publique

La cryptographie à clé asymétrique est également connue sous le nom de clé publique, elle utilise deux clés différentes à chaque extrémité de la communication pour la crypter et la décrypter . Chaque utilisateur de la communication aura une clé publique et une clé privée. La clé privée devra être protégée et conservée par l'utilisateur lui-même, il sera secrète et ne doit être connue de personne, ni envoyée à qui que ce soit. La clé publique sera accessible à tous les utilisateurs du système qui souhaitent communiquer.

La force du système par lequel ce type d'algorithme asymétrique est sûr est qu'il est basé sur des fonctions mathématiques qui sont faciles à résoudre dans un sens , mais dont la résolution dans la direction opposée est extrêmement compliquée , sauf si la clé est connue. . Les clés publiques et privées sont générées simultanément et sont liées les unes aux autres. La relation entre les deux doit être très complexe, de sorte qu'il nous est très difficile d'obtenir une clé de l'autre, dans ce cas, d'obtenir la clé privée puisque la clé publique est connue de toutes les personnes connectées au système.

Les paires de touches ont plusieurs fonctions très importantes, parmi lesquelles nous soulignons:

  • Cryptez les informations.
  • Assurer l'intégrité des données transmises.
  • Garantir l'authenticité de l'émetteur.

Chiffrement de clé asymétrique

Si une personne avec une paire de clés crypte un message avec la clé publique du destinataire, ce message ne peut être décrypté qu'avec la clé privée associée. Si nous chiffrons un message avec la clé privée, nous ne pourrons pas le déchiffrer avec la clé privée elle-même, nous devons utiliser la clé publique (dans ce cas, ce n'est pas considéré comme un chiffrement, mais l'authenticité de l'expéditeur est vérifiée, avec ceci nous vérifierons que l'expéditeur est celui qui dit vraiment être).

La structure mathématique du fonctionnement du cryptage asymétrique est la suivante:

  • Message + clé publique = Message chiffré
  • Message chiffré + clé privée = Message déchiffré
  • Message + clé privée = Message signé
  • Message signé + clé publique = authentification

Comme nous l'avons déjà dit à propos de la cryptographie à clé symétrique, le cryptage symétrique assure la confidentialité (seul le destinataire peut lire le message). La cryptographie asymétrique offre d'autres propriétés: l'authenticité, l'intégrité et la non-répudiation. Pour qu'un algorithme soit considéré comme sûr, il doit respecter les conditions suivantes:

  • Si le texte chiffré est connu, il doit être très difficile ou presque impossible d'extraire le texte brut et la clé privée par n'importe quelle méthode.
  • Si le texte en clair et le cryptage sont connus, il devrait coûter plus cher pour obtenir la clé privée que le texte en clair .
  • Si les données ont été chiffrées avec la clé publique, il ne devrait y avoir qu'une clé privée capable de le déchiffrer , et vice versa.

L'avantage du cryptage asymétrique par rapport au cryptage symétrique est que la clé publique peut être connue de tous les utilisateurs du système, cependant, cela ne se produit pas avec la clé privée, et en raison du cryptage symétrique, les deux utilisateurs doivent connaître la même clé. (et le mot de passe doit être envoyé à chacun des différents utilisateurs via le canal de communication établi).

Fonctionnement du système symétrique et asymétrique

Le principal inconvénient de ce type de cryptage est sa lenteur , l'utilisation de ce type de clés ralentit le processus de cryptage de la communication. La solution consiste à utiliser à la fois un cryptage asymétrique et symétrique (comme des protocoles tels que IPSec ou OpenVPN pour les réseaux privés virtuels, HTTPS pour les connexions Web sécurisées ou dans les connexions SFTP / FTPES).

Cette combinaison de chiffrements se produit comme suit. Nous créons la clé d'algorithme symétrique, la cryptons avec la clé publique du destinataire, envoyons les données cryptées via le canal de communication non sécurisé, puis le destinataire décryptera les données à l'aide de sa clé privée. Avec la clé d'algorithme symétrique dans les deux points, c'est à ce moment que la communication utilisant le cryptage symétrique peut commencer, ce qui rend la communication beaucoup plus rapide que si nous n'utilisions que la cryptographie asymétrique dans toutes les communications.

Les VPN, tels que OpenVPN ou IPsec, dans lesquels la clé de session connue des utilisateurs est régénérée de temps en temps pour augmenter encore la sécurité de la communication, sans entraîner de retard significatif dans le transfert de données, sont un exemple clair d'utilisation de ce type de méthode combinée. .

Réponse au défi

Pour augmenter la sécurité, cette méthode vérifie que l'expéditeur est bien celui qu'il prétend être , pour cela un texte est envoyé à l'expéditeur et il le cryptera avec sa clé privée (ce qu'il fait vraiment c'est le signer), l'expéditeur nous enverra le texte crypté (signé) et nous décrypterons la clé (nous allons vérifier la signature) en profitant du fait que nous avons la clé publique de l'émetteur, et enfin, nous comparerons que le message obtenu est le même que celui que nous avons envoyé précédemment.

Si un utilisateur se fait passer pour le véritable émetteur, il n'aurait pas la clé privée, de sorte que le «défi» n'aurait pas abouti et les données ne seraient pas communiquées.

Signature numérique

La signature numérique permet au destinataire d'un message que l'origine est authentique , nous pouvons également vérifier si le message a été modifié. Falsifier une signature numérique est quasiment impossible à moins qu'ils ne connaissent la clé privée de la personne qui signe (et nous avons déjà dit que la clé privée doit être sauvegardée, et que personne ne doit la connaître). Voici les deux phases de réalisation de la signature numérique:

  • Processus de signature: l'expéditeur crypte les données avec la clé privée et les envoie au destinataire.
  • Vérifier la signature: le destinataire déchiffre les données à l'aide de la clé publique de l'expéditeur et vérifie que les informations correspondent aux données d'origine (si elles correspondent, elles n'ont pas été modifiées).

Dans les signatures numériques, des fonctions de hachage telles que SHA2-256 et SHA2-512 sont utilisées car, comme nous l'avons expliqué précédemment, le cryptage asymétrique est lent. L'expéditeur de la communication appliquera la fonction HASH au message d'origine pour obtenir l'empreinte digitale. L'empreinte digitale sera ensuite cryptée avec la clé privée et envoyée au destinataire via le canal non sécurisé pour le décryptage. Le destinataire hachera également vos données et comparera les résultats (celui qu'il a obtenu et celui qu'il a reçu). Si le résultat de la comparaison de ces données est négatif, c'est-à-dire qu'il existe des différences entre ce qui a été obtenu et ce qui a été reçu, les informations ont été modifiées et les données d'empreintes digitales ont changé. Si le résultat est le même, la communication se fera sans problème.

Avec tout cela, nous avons accompli:

  • Authenticité, l'émetteur est celui qu'il prétend être . La signature à l'origine et à la destination est la même.
  • Intégrité, le message n'a pas été modifié . Ce qui est obtenu et ce qui est reçu est le même.
  • Pas de répudiation, l'expéditeur ne peut nier avoir envoyé le message au destinataire . La signature numérique ne change pas.

Si nous voulons introduire la confidentialité dans la communication, il suffit de demander à l'expéditeur de crypter le message d'origine avec la clé publique du destinataire.

Algorithmes de chiffrement à clé asymétrique

Nous allons maintenant lister les deux principaux algorithmes asymétriques qui sont utilisés aujourd'hui et nous expliquerons comment ils fonctionnent.

Diffie-Hellman

Ce n'est pas un algorithme asymétrique en lui-même, c'est un protocole d'établissement de clé, il est utilisé pour générer une clé privée aux deux extrémités d'un canal de communication non sécurisé . Il est utilisé pour obtenir la clé privée avec laquelle les informations seront ensuite cryptées avec un algorithme de cryptage symétrique. La force du Diffie-Hellman est que sa sécurité réside dans la difficulté de calculer le logarithme discret des grands nombres (Diffie-Hellmann permet également l'utilisation de courbes elliptiques).

Le problème avec cet algorithme est qu'il ne fournit pas d'authentification, il ne peut pas valider l'identité des utilisateurs, par conséquent, si un troisième utilisateur se retrouve au milieu de la communication, il recevrait également les clés et, par conséquent, pourrait établir les communications avec l'expéditeur et le destinataire usurpant l'identité. Pour éviter cela, il existe plusieurs solutions qui atténuent et résolvent le problème, comme l'utilisation de certificats numériques.

RSA

L'algorithme asymétrique par excellence, cet algorithme est basé sur la paire de clés , le public et le privé dont nous avons déjà parlé précédemment. La sécurité de cet algorithme réside dans le problème de la factorisation de très grands entiers, et dans le problème du RSA, car le déchiffrement complet d'un texte chiffré avec RSA n'est actuellement pas possible, bien qu'un déchiffrement partiel soit possible. Certaines caractéristiques très importantes de RSA sont la longueur de la clé, actuellement au moins une longueur de 2048 bits doit être utilisée, bien qu'il soit recommandé qu'elle soit de 4096 bits ou plus pour une plus grande sécurité.

Avantage:

  • Le problème de la distribution des clés symétriques (cryptage symétrique) est résolu.
  • Il peut être utilisé pour les signatures numériques.

Désavantages:

  • La sécurité dépend de l'efficacité des ordinateurs.
  • Il est plus lent que les algorithmes à clé symétrique.
  • La clé privée doit être chiffrée par un algorithme symétrique.

DSA

Cet algorithme est également purement asymétrique, un inconvénient de DSA est qu'il demande beaucoup plus de temps de calcul que RSA pour l'égalité matérielle. DSA est largement utilisé comme algorithme de signature numérique, c'est actuellement un standard, mais DSA n'est pas utilisé pour crypter des données, uniquement comme signature numérique. Cet algorithme est largement utilisé dans les connexions SSH pour vérifier la signature numérique des clients, de plus, il existe une variante de DSA basée sur les courbes elliptiques (ECDSA), et il est disponible dans toutes les bibliothèques cryptographiques actuelles telles que OpenSSL, GnuTLS ou LibreSSL. Une autre caractéristique de DSA est la longueur de la clé, la longueur minimale de la clé est de 512 bits, bien que la plus courante soit d'utiliser 1024 bits.

Maintenant, vous connaissez les deux types de cryptographie et les propriétés de chacun, avec cela, vous saurez où il vaut la peine d'utiliser un type et où l'autre . Au fil du temps, ces méthodes varieront ou seront mises à jour vers des méthodes plus sécurisées, car avec la croissance des performances informatiques, les attaques sur ce type de méthode de sécurité sont améliorées, mais pour le moment, celles qui sont en vigueur et continuent d'être utilisées pour non ayant encore été évincés, ce sont eux que nous venons de vous expliquer.