Tout sur la cryptographie : algorithmes à clés symétriques et asymétriques
La cryptographie est née de la nécessité de rendre privée une transmission de données, donc sur la base, la cryptographie est la méthode appliquée à un message pour le chiffrer et le déchiffrer de manière à ce que seul le texte en clair soit visible par l’expéditeur et le destinataire dudit message. , qu’il est totalement illisible pour quiconque l’intercepte au milieu de la transmission, et à son tour, qu’il est suffisamment sécurisé pour résister à toute attaque qui 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 d’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 à clé unique
La cryptographie symétrique est la technique cryptographique la plus ancienne, mais elle offre toujours un haut niveau de sécurité. Elle repose sur l’utilisation d’une clé secrète unique qui sera chargée de chiffrer et de déchiffrer les informations, qu’il s’agisse d’informations en transit avec des protocoles comme TLS, ou d’informations sur un support 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, aient ce clé secrète, sinon ils ne pourront pas. Grâce à la cryptographie symétrique, nous pouvons faire des communications ou stocker des fichiers en toute sécurité.
Le chiffrement à l’aide d’une clé symétrique signifie qu’au moins deux utilisateurs doivent disposer de 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 qui souhaite accéder au message crypté doit disposer de ce mot de passe de décryptage, 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, 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 à clé symétrique doit respecter pour être sécurisé en cours d’utilisation :
- Une fois le message crypté, ni la clé de cryptage ni le message clair ne peuvent être obtenus par quelque méthode que ce soit.
- Si nous connaissons le message clair et le cryptage, il faudrait consacrer plus de temps et d’argent à l’obtention de la clé pour accéder au message clair que la valeur possible des informations volées.
Les attaques par force brute sont le véritable ennemi des algorithmes de cryptographie symétrique , gardez à l’esprit que ces algorithmes sont publics et que la force de ceux-ci dépend directement de la complexité de l’algorithme interne, et de la longueur de la clé utilisée pour empêcher ces attaques.
La chose la plus importante en 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, à la fois expéditeurs et destinataires de l’information, 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 s’il tombait entre de mauvaises mains, l’ensemble du système serait compromis, devant générer une nouvelle clé et redistribuer la clé privée aux différents participantes.
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 asymétriques, chaque utilisateur aura une paire de clés (publique et privée) pour tous les canaux de communication, peu importe le nombre de canaux sécurisés à maintenir, nous n’avons qu’à protéger la clé privée.
L’avantage des algorithmes de cryptographie symétrique est qu’ils sont rapides, très rapides. De plus, ces dernières années, l’accélération du chiffrement matériel a été intégrée aux processeurs informatiques, serveurs, routeurs et autres appareils. De cette manière, nous pouvons vraiment transférer des données via VPN. vite. 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 aussi dans d’autres domaines où le cryptage des données est utilisé , comme dans VeraCrypt.
AES (norme de cryptage avancée)
L’algorithme symétrique AES était chargé de remplacer DES , et est actuellement utilisé dans tous les canaux et protocoles sécurisés tels que TLS, FTPES, 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, et par la suite une série de tours de cryptage lui est appliquée. 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 des attaques ont été enregistrées sur un certain nombre de tours proches du tour final, en particulier 7 tours pour les clés 128 bits, 8 tours pour les clés 192 bits et 9 tours pour les clés 256 bits ont été décryptés.
Le mode de cryptage est la manière dont les blocs du message crypté avec AES sont gérés, il en existe différents types, et chacun d’eux fonctionne de manière différente. Par exemple, il y a l’ AES-CBC, l’AES-CFB et l’AES-OFB , nous allons expliquer ce que c’est exactement qui apparaît dans les bibliothèques cryptographiques telles que OpenSSL et LibreSSL.
- CBC (Cipher-block chaining) : 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 en ce que chaque bloc de texte en clair est XORé avec le bloc de cryptage précédent. Chaque bloc chiffré dépend du précédent traité jusqu’à ce point. Pour effectuer cette option XOR avec le premier bloc de texte, un vecteur d’initialisation IV est utilisé. Ce mode de chiffrement est effectué de manière séquentielle, il ne peut pas être traité en parallèle pour augmenter les performances en chiffrement/déchiffrement des données.
- OFB (Output feedback) : 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 clair est appliquée pour créer le cryptogramme. 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 paralysé.
- CFB (Cipher feedback) : il se fait comme 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é, contrairement au déchiffrement.
- GCM ( Galois / Counter Mode) : Ce mode de cryptage est l’un des meilleurs en termes de sécurité et de rapidité, 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 chiffrement symétrique les plus importants et les plus utilisés au monde, cependant, le mode de chiffrement le plus recommandé est AES-GCM car il intègre AEAD.
ChaCha20
L’algorithme ChaCha20 est un algorithme de chiffrement symétrique qui prend en charge les clés 128 et 256 bits et à grande vitesse, contrairement à AES qui est un chiffrement par bloc, ChaCha20 est un chiffrement par 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é, standardisé par l’IETF dans la RFC 7539 et dans les implémentations logicielles, il est bien plus efficace et plus rapide qu’AES, il s’est donc rapidement fait une niche 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 tous les jours, c’était la prochaine étape du protocole HTTP qui n’avait aucune protection. Cependant, le cryptage varie d’un navigateur à l’autre. Jusqu’à il y a quelques années, Chrome pour Android utilisait AES-GCM comme algorithme de cryptage symétrique, cependant, Google travaille depuis de nombreuses années sur un cryptage plus récent, sécurisé et plus rapide.
Le bond de popularité se produit lorsque, après son lancement dans la version desktop de Chrome, le nouveau ChaCha20 pour le chiffrement et Poly1305 pour l’authentification débarque sur Android . Un travail titanesque qui se traduit par un algorithme symétrique offrant plus de sécurité et immunisé contre divers types d’attaques. Cependant, le plus remarquable est qu’il atteint des performances trois fois supérieures à celles des protocoles un peu plus anciens tels que AES, de cette façon, 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 n’utilise que ChaCha20 pour le cryptage symétrique des données. Il est très possible que bientôt nous voyions également ChaCha20 dans les connexions IPsec, en attendant, vous devriez utiliser AES-GCM chaque fois que possible.
Jusqu’à présent, 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 plus qui dans le passé étaient très pertinents, en particulier pour le développement des algorithmes actuels, car les bases des nouveaux sont-ils réglé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 aux nouveaux, 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 des 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 chiffrer et la déchiffrer . Chaque utilisateur de la communication disposera d’une clé publique et d’une clé privée. La clé privée devra être protégée et conservée par l’utilisateur lui-même, elle sera secrète et ne devra être connue d’absolument personne, ni transmise à qui que ce soit. La clé publique sera accessible par 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, c’est qu’il repose sur des fonctions mathématiques faciles à résoudre dans un sens , mais dont la résolution en sens inverse est extrêmement compliquée , à moins que la clé ne soit 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 toute personne connectée au système.
Les paires de clés ont plusieurs fonctions très importantes, parmi lesquelles nous soulignons :
- Crypter les informations.
- Assurer l’intégrité des données transmises.
- Garantir l’authenticité de l’émetteur.
Cryptage à 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échiffré 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 cryptage, mais l’authenticité de l’expéditeur est vérifiée, avec ceci, nous vérifierons que l’expéditeur est bien celui qui dit l’être).
La structure mathématique de l’opération de cryptage asymétrique est la suivante :
- Message + clé publique = Message crypté
- 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à commenté en parlant de 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 : authenticité, intégrité et 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 en clair et la clé privée par n’importe quelle méthode.
- Si le texte en clair et le cryptage sont connus, il devrait être plus coûteux d’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 les 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 par 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 le font 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 chiffrons avec la clé publique du destinataire, envoyons les données chiffrées sur le canal de communication non sécurisé, puis le destinataire déchiffrera 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-là que la communication utilisant le cryptage symétrique peut démarrer, ce qui rend la communication beaucoup plus rapide que si nous utilisions uniquement la cryptographie asymétrique dans toutes les communications.
L’exemple clair d’où ce type de méthode combinée est utilisé sont 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 un retard important dans le transfert de données. .
Défi-Réponse
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 texto est envoyé à l’expéditeur et il le chiffrera avec sa clé privée (ce qu’il fait en réalité c’est le signer), l’expéditeur va envoyez-nous le texte crypté (signé) et nous décrypterons la clé (nous vérifierons 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 nous avons envoyé précédemment.
Si un utilisateur usurpe l’identité de l’émetteur réel, il n’aurait pas la clé privée, donc le «challenge» n’aurait pas réussi 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 , on peut aussi vérifier si le message a été modifié. La falsification d’une signature numérique est presque impossible à moins qu’ils ne connaissent la clé privée de la personne qui signe (et nous avons déjà dit auparavant que la clé privée doit être sauvegardée et que personne ne doit la connaître). Voici les deux phases pour la 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écrypte 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 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é altérées et les données d’empreintes digitales auront changé. Si le résultat est le même, la communication se déroulera en douceur.
Avec tout cela, nous avons accompli :
- Authenticité, l’émetteur est ce 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 l’on veut introduire la confidentialité dans la communication, il suffit que l’expéditeur chiffre 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 leur fonctionnement.
Diffie-Hellman
Ce n’est pas un algorithme asymétrique 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 aussi 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 trouve au milieu de la communication, il recevra également les clés et, par conséquent, pourrait établir communications avec l’expéditeur et le destinataire en usurpant l’identité. Pour éviter cela, il existe plusieurs solutions qui atténuent et résolvent le problème, telles que l’utilisation de certificats numériques.
RSA
Algorithme asymétrique par excellence, cet algorithme est basé sur la paire de clés , la publique et la privée 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 RSA, car le décryptage complet d’un texte chiffré avec RSA n’est actuellement pas possible, bien qu’un décryptage 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 être utilisé dans 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. Le DSA est largement utilisé comme algorithme de signature numérique, c’est actuellement une norme, mais le DSA n’est pas utilisé pour crypter des données, uniquement en tant que 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 des 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 clé, la longueur de clé minimale est de 512 bits, bien que la plus courante soit d’utiliser 1024 bits.
Maintenant que vous connaissez les deux types de cryptographie et les propriétés de chacun, vous saurez ainsi 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 contre ce type de méthode de sécurité sont renforcées, mais actuellement, celles qui sont en vigueur et continuent d’être utilisées sans raison. .. ayant pourtant été évincés, ce sont eux que nous venons de vous expliquer.