Les algorithmes de cryptage symétrique utilisent la même clé secrète pour le cryptage et le décryptage. Cela signifie que l'expéditeur et le destinataire d'un message crypté doivent partager une copie de la clé secrète via un canal sécurisé avant de commencer à envoyer des données cryptées. Il existe deux types d'algorithmes de chiffrement symétrique : le chiffrement par bloc et le chiffrement par flot.
Types d'algorithmes de chiffrement + avantages et inconvénients de chacun d'entre eux
Types d'algorithmes de chiffrement + avantages et inconvénients de chacun d'entre eux
Chiffrement symétrique
Chiffres en bloc
Un algorithme de chiffrement par blocs chiffre les données en morceaux de taille fixe. Par exemple, l'Advanced Encryption Standard (AES) utilise une longueur de bloc de 128 bits.
Si le texte en clair est plus court que la longueur du bloc, il est complété à la longueur souhaitée avant d'être crypté. À l'autre extrémité, le destinataire du message le décrypte, puis supprime le rembourrage pour rétablir le message original.
Si un texte en clair est plus long que la longueur du bloc, il est divisé en plusieurs morceaux différents pour le chiffrement. Le mode de fonctionnement du chiffrement par blocs définit la manière dont ces morceaux sont liés les uns aux autres.
Chaque mode de fonctionnement a ses avantages et ses inconvénients. Par exemple, le mode Electronic Code Book (ECB) est le mode de fonctionnement le plus simple. Avec le mode ECB, chaque bloc est chiffré de manière totalement indépendante.
L'inconvénient est que les blocs ayant le même texte en clair produisent le même texte chiffré. L'image image ci-dessus est une photo du pingouin Linux. Bien que ces données soient cryptées, les textes chiffrés pour un pixel d'une certaine couleur (noir, blanc, etc.) sont les mêmes dans toute l'image, de sorte que le pingouin est toujours visible.
D'autres modes de fonctionnement éliminent ce problème en interdisant le chiffrement de chaque bloc. Certains offrent également des fonctions supplémentaires, telles que le mode compteur de Galois (GCM), qui génère un code d'authentification de message (MAC) permettant de vérifier que les données n'ont pas été modifiées en cours de route.
Exemple : La norme de cryptage avancée (AES)
Le chiffrement par bloc le plus connu est l'Advanced Encryption Standard (AES). Cet algorithme de cryptage a été sélectionné à l'issue d'un concours organisé par le National Institute of Standards and Technology (NIST) pour remplacer le Data Encryption Standard (DES) vieillissant.
AES est une famille de trois algorithmes différents conçus pour utiliser une clé de cryptage de 128, 192 ou 256 bits. Ces algorithmes se décomposent en un schéma de clé et un algorithme de cryptage.
L'algorithme de cryptage de l'AES est en grande partie le même pour les trois versions. Il est divisé en tours, qui sont composés d'un ensemble d'opérations mathématiques. La principale différence entre les différentes versions de l'AES est le nombre de tours utilisés : 10, 12 et 14.
Chaque cycle de l'AES utilise une clé unique dérivée de la clé secrète d'origine. La dérivation de ces clés rondes est la tâche du programme de clés. Le programme de clés de chaque version d'AES est différent car il utilise des clés secrètes de longueur différente et produit un nombre différent de clés rondes de 128 bits.
Chiffres en continu
L'autre type d'algorithme de chiffrement symétrique est le chiffrement par flux. Contrairement au chiffrement par bloc, le chiffrement par flux chiffre un texte en clair un bit à la fois.
Un chiffrement par flux est conçu sur la base du seul algorithme de chiffrement totalement inviolable : le tampon à usage unique (OTP). L'OTP prend une clé secrète aléatoire de la même longueur que le texte en clair et effectue un OU exclusif (XOR) de chaque bit du texte en clair et de la clé pour produire le texte chiffré, comme le montre l'image ci-dessus. image ci-dessus.
Le décryptage avec un OTP est identique au cryptage. Cela s'explique par le fait que tout XOR avec lui-même est égal à zéro et que tout XOR avec zéro est égal à lui-même. Avec un texte en clair P, un texte chiffré C et une clé K
C XOR K = (C XOR K) XOR K = C XOR (K XOR K) = C XOR 0 = C
Bien qu'il offre une grande sécurité, l'OTP est rarement utilisé car il n'est pas pratique de partager en toute sécurité les quantités massives de clés dont il a besoin pour fonctionner. Le chiffrement par flot utilise la même idée que l'OTP avec une clé légèrement moins sûre.
Au lieu d'une clé entièrement aléatoire, le chiffrement par flux utilise une clé secrète pour alimenter un générateur de nombres pseudo-aléatoires. En partageant la même clé secrète et le même algorithme, l'expéditeur et le destinataire d'un message peuvent produire la même chaîne de bits, ce qui leur permet de crypter et de décrypter un message.
Exemple : Chiffre 4 de Rivest (RC4)
RC4 est un exemple de chiffrement de flux très répandu. Il a été créé par Ron Rivest en 1987 et était à l'origine un secret commercial de RSA Security. En 1994, les détails du chiffrement ont fait l'objet d'une fuite, ce qui l'a rendu publiquement utilisable.
RC4 est utilisé dans une variété d'applications différentes, y compris les normes de cryptage WEP et WPA pour le Wi-Fi. Le chiffrement présente des vulnérabilités connues, en particulier pour certaines applications, mais il peut toujours être utilisé si certains des octets initiaux du flux de clés généré sont supprimés.
Chiffrement asymétrique
Contrairement au cryptage symétrique, la cryptographie asymétrique utilise deux clés différentes pour le cryptage et le décryptage. La clé publique est utilisée pour crypter un message, tandis que la clé privée est utilisée pour le décryptage.
La clé privée est un nombre totalement aléatoire. La clé publique est dérivée de la clé privée à l'aide d'un problème mathématiquement "difficile".
Ce problème "difficile" est basé sur une opération mathématique qui est "facile" à réaliser mais "difficile" à inverser. Un certain nombre de problèmes "difficiles" différents sont utilisés, y compris des problèmes basés sur des nombres entiers et des problèmes basés sur des courbes elliptiques.
Cryptographie basée sur les nombres entiers
La cryptographie asymétrique basée sur les nombres entiers utilise deux principaux problèmes "difficiles". Il s'agit des problèmes de factorisation et de logarithme discret.
Le problème de la factorisation repose sur le fait qu'il est relativement facile de multiplier deux nombres ensemble, mais qu'il est difficile de les factoriser. En fait, la factorisation est tellement difficile que la meilleure façon d'y parvenir (sur un ordinateur "classique") est de procéder à une recherche par force brute. Une personne souhaitant factoriser le produit de deux nombres premiers doit tester les facteurs potentiels jusqu'à ce qu'elle trouve l'un des deux facteurs, ce qui peut prendre beaucoup de temps.
Un algorithme de cryptage asymétrique basé sur le problème de la factorisation aura une clé publique calculée en utilisant le produit de deux clés privées (grands nombres premiers). Ce calcul est facile à effectuer, mais toute personne souhaitant dériver la clé privée de la clé publique devra la factoriser, ce qui est beaucoup plus difficile.
La difficulté de la multiplication croît de manière polynomiale avec la longueur des facteurs, mais la difficulté de la factorisation croît de manière exponentielle. Cela permet de trouver un "point idéal", où un système est utilisable mais essentiellement incassable.
Le problème du logarithme discret utilise l'exponentiation et les logarithmes comme opérations "faciles" et "difficiles". Comme pour la factorisation, la complexité du calcul des logarithmes croît beaucoup plus rapidement lorsque la taille de l'exposant augmente.
Exemple : Rivest-Shamir-Adleman (RSA)
Lechiffrement symétrique est un algorithme cryptographique simple selon les normes actuelles, mais il était autrefois considéré comme le nec plus ultra de la cryptographie. En fait, l'armée allemande l'a utilisé pour envoyer des communications privées pendant la Seconde Guerre mondiale. Le film Le jeu de l'imitation fait en fait explique assez bien le fonctionnement du cryptage symétrique et le rôle qu'il a joué pendant la Seconde Guerre mondiale.et le rôle qu'il a joué pendant la guerre.
Avec le cryptage symétrique, un message tapé en clair passe par des permutations mathématiques pour être crypté. Le message crypté est difficile à déchiffrer parce que la même lettre du texte en clair n'est pas toujours la même dans le message crypté. n'est pas toujours la même dans le message crypté. Par exemple, le message "HHH" ne sera pas crypté avec trois caractères identiques.
Pour crypter et décrypter le message, vous avez besoin de la même clé, d'où le nom de cryptage symétrique. Bien qu'il soit extrêmement difficile dedécrypter les messages sans la clé, le fait que la même clé doive être utilisée pour crypter et décrypter le message comporte un risque important. En effet, si le canal de distribution utilisé pour partager la clé est compromis, c'est tout le système de sécurisation des messages qui est rompu.
L'un des algorithmes de cryptage asymétrique les plus célèbres est celui développé par Ron Rivest, Adi Shamir et Leonard Adleman, appelé RSA. Cet algorithme est basé sur le problème de la factorisation.
L'image image ci-dessus montre un exemple simple du fonctionnement de RSA. Le texte en clair (2) est élevé à la puissance de la clé publique (5) : 2^5 = 32. Cette valeur est ensuite divisée par un module public (14) et le reste (4) est envoyé comme texte chiffré : 32 % 14 = 4.
À l'autre extrémité, la même opération est effectuée avec la clé privée au lieu de la clé publique pour produire le texte en clair : (4^11) % 14 = 2. Ce calcul fonctionne parce que les clés publique et privée sont choisies de telle sorte qu'elles sont inverses dans le module choisi.
Cryptographie à courbe elliptique
La cryptographie asymétrique basée sur les nombres entiers utilise les problèmes de factorisation et de logarithme discret pour construire des algorithmes de cryptage sécurisés. La cryptographie à courbe elliptique utilise les mêmes problèmes avec une petite différence.
Au lieu d'utiliser des nombres entiers pour ses calculs, la cryptographie à courbe elliptique utilise des points sur une courbe elliptique, comme celle qui est illustrée ci-dessus. illustrée ci-dessus. Une clé privée est toujours un nombre aléatoire, mais une clé publique est un point sur la courbe.
Quelques opérations mathématiques différentes sont définies sur ces courbes. Les deux opérations les plus importantes sont les suivantes :
- Addition de points (équivalente à la multiplication de nombres entiers)
- Multiplication de points (équivalent à l'exponentiation des nombres entiers)
Sur ces courbes, il est possible d'effectuer des calculs équivalents aux opérations "faciles" des problèmes de factorisation et de logarithme discret. Cela signifie que les mêmes algorithmes de base peuvent être adoptés pour être utilisés avec des courbes elliptiques.
Mais pourquoi s'en préoccuper ? La cryptographie à courbe elliptique est utile parce que des longueurs de clés plus petites offrent le même niveau de sécurité. Cela signifie que la cryptographie à courbe elliptique utilise moins de stockage, de puissance de traitement et d'énergie pour protéger les données au même niveau qu'un algorithme équivalent basé sur des nombres entiers. Ces économies peuvent être importantes pour les systèmes à ressources limitées tels que les appareils de l'internet des objets (IoT) ou les smartphones.
Avantages et inconvénients du chiffrement symétrique et asymétrique
Les algorithmes de chiffrement symétrique et asymétrique sont tous deux conçus pour accomplir la même tâche : protéger la confidentialité des données. Cependant, ils le font de manière très différente, et chaque approche a ses avantages et ses inconvénients :
- Cryptage symétrique : Le principal avantage de la cryptographie symétrique est son efficacité. En général, les algorithmes de cryptage symétrique utilisent moins de mémoire et de puissance de traitement que la cryptographie asymétrique.
- Chiffrement asymétrique : Le chiffrement asymétrique n'exige pas que les deux parties partagent une clé secrète avant d'envoyer des messages chiffrés. Il est donc possible de communiquer en toute sécurité avec n'importe qui, à condition de disposer de sa clé privée.
Ces différentes forces font que la cryptographie symétrique et la cryptographie asymétrique sont souvent utilisées ensemble, comme dans le protocole TLS . Le cryptage asymétrique est utilisé pour échanger de manière sécurisée une clé symétrique, et le cryptage symétrique est utilisé pour le transfert de données en masse.
L'informatique quantique et son impact sur la cryptographie
Lorsque l'on examine les avantages et les inconvénients des différents algorithmes de cryptage, il est important de tenir compte de l'essor de l'informatique quantique. Les ordinateurs quantiques ont la capacité de casser certains des algorithmes de cryptage asymétriques couramment utilisés aujourd'hui.
La raison en est que certains des problèmes "difficiles" utilisés en cryptographie asymétrique ne sont pas "difficiles" pour les ordinateurs quantiques. Alors que la factorisation est exponentiellement difficile pour un ordinateur classique, elle ne présente qu'une difficulté polynomiale pour un ordinateur quantique en raison de l'existence de l'algorithme de Shor.
Si la multiplication et la factorisation ont toutes deux une complexité polynomiale, il est impossible de construire un système cryptographique utilisable et sûr à partir de ce problème. Il en va de même pour le problème du logarithme discret. Il est également cassé dès que des ordinateurs quantiques suffisamment grands deviennent disponibles.
Toutefois, cela ne signifie pas que l'informatique quantique marquera la fin de la cryptographie asymétrique. De nouveaux problèmes ont été découverts qui sont considérés comme "difficiles" pour les ordinateurs quantiques également. Cela a conduit au développement de nouveaux algorithmes de cryptage asymétrique post-quantique basés sur ces nouveaux problèmes "difficiles".