Dans notre blog précédent, nous avons commencé la liste des principaux algorithmes cryptographiques. Continuons notre liste et examinons également de plus près les algorithmes asymétriques.
Algorithmes à clé symétrique
Un algorithme à clé symétrique (également appelé algorithme à clé secrète) s’appuie sur un système de clé et cadenas pour chiffrer du texte clair et déchiffrer les données d’un texte chiffré. Pour en savoir plus, vous pouvez consulter notre blog précédent où nous expliquons plus en détail les algorithmes à clé symétrique, et passons en revue les algorithmes DES, AES, MARS, IDEA, RC2, RC4, RC5 et RC6.
Blowfish
Blowfish désigne un algorithme de chiffrement symétrique par bloc développé par Bruce Schneier en remplacement de DES et IDEA. L’une des premières méthodes de chiffrement par bloc non brevetée et libre d’utilisation (encore aujourd’hui) repose sur 16 tours, des clés aux tailles variables (entre 32 et 448 bits) et des blocs de 64 bits. Le cryptographe français Serge Vaudenay a trouvé le moyen d’utiliser des clés faibles dans une attaque à texte clair afin de décrypter 14 des 16 tours de Blowfish.
Certains reprochent également à l’algorithme sa lenteur dans certaines applications et sa vulnérabilité aux attaques par le paradoxe des anniversaires dans HTTPS.
De nos jours — Malgré sa vulnérabilité connue aux attaques Sweet32, par paradoxe des anniversaires et à texte clair, certaines applications s’en servent encore, par exemple pour chiffrer des mots de passe. Bruce Schneier recommande désormais l’utilisation de Twofish.
Twofish
Le successeur de Blowfish baptisé Twofish a été publié en 1998. Avec 16 tours, des blocs de 128 bits et une taille de clé maximale de 256 bits, Twofish figurait parmi les cinq finalistes du concours Advanced Encryption Standard. Il n’a toutefois pas été sélectionné comme norme. Plus avancé que Blowfish, Twofish pouvait s’appliquer aux matériels et aux cartes à puces, ainsi qu’aux gros microprocesseurs.
Quant à Bruce Schneier et son équipe, ils offraient 10 000 $ à quiconque pourrait attaquer Twofish au cours de la première phase d’évaluation AES. Ainsi, en 1999, Sean Murphy et Fauzan Mirza ont remporté ce prix pour leur article intitulé An Observation on the Key Schedule of Twofish.
De nos jours — Pas encore breveté, Twofish est toujours utilisé.
Threefish
Threefish repose sur des blocs de 256, 512 et 1 024 bits et des clés de même taille que les blocs, ainsi que sur 80 tours. L’algorithme a été conçu comme un composant de la fonction de hachage Skein, l’un des cinq finalistes du concours NIST SHA-3. Threefish s’est démarqué par sa rapidité : Threefish-512 peut chiffrer des données à une vitesse de 6,1 cycles de blocs par bit sur une machine de 64 bits.
De nos jours — Pas encore breveté, Threefish est toujours utilisé. Toutefois, le mois d’octobre 2010 a vu une attaque casser 53 des 72 tours de Threefish-256 et 57 des 72 tours de Threefish-512. L’utilisation de Threefish présente donc malgré tout des risques.
Serpent
Deuxième du concours Advanced Encryption Standard derrière Rijndael (rebaptisé AES), Serpent a été conçu en 1998 par Ross Anderson, Eli Biham et Lars Knudsen. Il repose sur 32 tours, une taille de bloc de 128 bits et des clés de 128, 192 ou 256 bits. À l’époque, Rijndael a surclassé Serpent grâce à ses implémentations logicielles plus efficaces selon les juges.
En 2001, Eli Biham, Orr Dunkelman et Nathan Keller sont parvenus à cracker 10 des 32 tours de Serpent-128 avec 2118 textes clairs connus et une complexité en temps de 289. Ils ont également lancé une attaque réussie contre Serpent-192/256, à l’aide de 2118 textes clairs et avec une complexité en temps de 2187. D’autres ont depuis cassé jusqu’à 12 tours de l’algorithme, ce qui ne suffit toujours pas pour le qualifier de faible.
De nos jours — Toujours dans le domaine public, Serpent est encore utilisé. Bien que certaines attaques aient pu décrypter jusqu’à 12 de ses 32 tours, le temps et les efforts déployés pour y parvenir restent colossaux.
Algorithmes asymétriques
Aussi appelée cryptographie à clé publique, la cryptographie asymétrique repose sur une paire de clés mathématiquement apparentées pour le chiffrement et le déchiffrement : une clé publique et une clé privée. Tandis que la clé publique peut être partagée avec n’importe qui, la clé privée doit rester confidentielle. Tout détenteur de la clé publique peut chiffrer un message, mais vous pouvez déchiffrer ce dernier uniquement à l’aide d’une clé privée. Ici, la sécurité dépend donc de la capacité à garder les clés privées secrètes.
Diffie-Hellman
L’échange de clés Diffie-Hellman constitue l’un des premiers exemples recensés de cryptographie asymétrique, d’abord théorisé par Ralph Merkle, puis mis en œuvre par Whitfield Diffie et Martin Hellman. Traditionnellement, une communication chiffrée sécurisée nécessite l’échange de clés entre les deux parties via un canal physique protégé. Diffie-Hellman a éliminé ce besoin par la création d’une clé supplémentaire : la clé publique.
À ce jour, Diffie-Hellman ne représente plus l’algorithme cryptographique standard car il s’est révélé vulnérable à plusieurs attaques. La vulnérabilité Logjam permet en effet des attaques par interception (man-in-the-middle), dans lesquelles le pirate peut lire et modifier n’importe quelles données envoyées via la connexion.
De nos jours — De manière générale, pour la signature numérique et la sécurité PKI, le NIST recommande RSA (ci-dessous) car Diffie-Hellman consomme plus de ressources processeurs et implique de plus gros transferts de données, en particulier pour SSL et la signature numérique. Il reste cependant utilisé dans le domaine public, notamment dans la cryptographie à courbes elliptiques.
RSA
L’algorithme RSA (Rivet-Shamir-Adleman) s’impose actuellement comme le système de chiffrement asymétrique le plus répandu sur le web. RSA repose sur la factorisation des nombres premiers car il est arithmétiquement difficile de procéder à la rétroingénierie de deux nombres premiers multipliés, d’autant plus que ces nombres sont élevés. D’ailleurs, le casse-tête du décryptage de RSA porte un nom : le problème RSA.
Du fait de sa lenteur, l’algorithme RSA sert à chiffrer et déchiffrer les clés symétriques, qui elles-mêmes chiffrent et déchiffrent les communications. En d’autres termes, les clés symétriques réalisent le gros du travail, tandis que RSA crée un canal fiable et sécurisé.
En 1998, Daniel Bleichenbacher a décrit comment il avait exploité une vulnérabilité du fichier PKCS#1, qui renferme la clé privée. Son attaque a permis de récupérer cette clé et de l’utiliser pour recouvrer les clés de session et déchiffrer les messages. Suite à son travail, les laboratoires RSA ont publié de nouvelles versions de PKCS#1, non vulnérables à cette attaque. Malgré quelques tentatives, l’algorithme RSA demeure fiable, sans doute jusqu’à la généralisation des calculateurs quantiques.
De nos jours — RSA représente actuellement l’algorithme asymétrique le plus répandu.
Courbes elliptiques
La cryptographie sur les courbes elliptiques (ECC) constitue une méthode de chiffrement à clé publique basée sur des courbes elliptiques sur des champs finis. Les algorithmes cryptographiques utilisent généralement une équation mathématique pour déchiffrer les clés. ECC n’y déroge pas, mais adopte une approche différente.
La plupart des certificats SSL/TLS s’appuient sur des clés RSA. Or, la taille recommandée de ces clés ne cesse d’augmenter (par exemple, de 1 024 bits à 2 048 bits il y a quelques années) afin de maintenir une puissance de chiffrement suffisante. Dans ce contexte, ECC propose une alternative à RSA. Les deux types de clés affichent la même propriété essentielle : l’asymétrie (une clé pour le chiffrement et une autre pour le déchiffrement). Cependant, ECC offre le même niveau de chiffrement à l’aide d’une clé bien plus courte — et donc une protection renforcée, mais à moindre consommation de calcul et de stockage.
De nos jours — Le NIST a recommandé l’utilisation de 15 courbes elliptiques en standard. Certains avancent la faiblesse de cette méthode de chiffrement, depuis la découverte de vulnérabilités exploitables par certaines attaques. Il est cependant possible de combler ces failles. Les courbes elliptiques doivent également leur manque de popularité au générateur de clés aléatoires créé par le NIST, baptisé Dual Elliptic Curve Deterministic Random Bit Generator, ou plus simplement DUAL_EC_DRBG. Certains doutaient du caractère aléatoire des nombres donnés par le générateur (développé par la NSA). Il a ensuite été abandonné.
C’est mathématique !
À l’heure où les calculateurs quantiques frappent à nos portes, beaucoup s’interrogent sur l’avenir de la cryptographie. Certains considèrent que l’approche traditionnelle consistant à allonger les clés pour compenser la croissance des puissances de calcul atteindra ses limites. Mais d’autres n’en sont pas si sûrs.
Retenons cependant que tous les algorithmes comportent une « marge de sécurité », comme Bruce Schneier aime à le dire. Nous devons admettre qu’à condition de disposer d’une puissance de calcul et d’un délai suffisants, il est possible de casser un algorithme. Mais, en continuant à collaborer pour garder un coup d’avance sur la puissance de calcul informatique, nous trouverons de nouveaux modes de chiffrement pour remplacer les anciens.
Si vous trouvez qu’un algorithme manque à ce billet, n’hésitez pas à nous alerter. Nous serons ravis de l’ajouter. Enfin, ne manquez pas notre prochain billet sur les fonctions de hachage cryptographique. Au sommaire : SHA, MD, et bien plus encore...