Cryptographie hybride
La cryptographie hybride est un système de cryptographie faisant appel aux deux grandes familles de systèmes cryptographiques : la cryptographie asymétrique et la cryptographie symétrique. Les logiciels comme PGP et GnuPG reposent sur ce concept qui permet de combiner les avantages des deux systèmes.
Principe
La cryptographie asymétrique est intrinsèquement lente à cause des calculs complexes qui y sont associés, alors que la cryptographie symétrique brille par sa rapidité. Toutefois, cette dernière souffre d'une grave lacune, on doit transmettre les clés de manière sécurisée (sur un canal authentifié). Pour pallier ce défaut, on recourt à la cryptographie asymétrique qui travaille avec une paire de clés : la clé privée et la clé publique. La cryptographie hybride combine les deux systèmes afin de bénéficier des avantages (rapidité de la cryptographie symétrique pour le contenu du message) et utilisation de la cryptographie « lente » uniquement pour la clé.
Chiffrement
La plupart des systèmes hybrides procèdent de la manière suivante. Une clé aléatoire, appelée clé de session, est générée pour l’algorithme symétrique (3DES, IDEA, AES et bien d'autres encore), cette clé fait généralement entre 128 et 512 bits selon les algorithmes. L'algorithme de chiffrement symétrique est ensuite utilisé pour chiffrer le message. Dans le cas d'un chiffrement par blocs, on doit utiliser un mode d'opération comme CBC, cela permet de chiffrer un message de taille supérieure à celle d'un bloc.
La clé de session quant à elle, se voit chiffrée grâce à la clé publique du destinataire, c'est ici qu'intervient la cryptographie asymétrique (RSA ou ElGamal). Comme la clé est courte, ce chiffrement prend peu de temps. Chiffrer l'ensemble du message avec un algorithme asymétrique serait bien plus coûteux, c'est pourquoi on préfère passer par un algorithme symétrique. Il suffit ensuite d'envoyer le message chiffré avec l'algorithme symétrique et accompagné de la clé chiffrée correspondante. Le destinataire déchiffre la clé symétrique avec sa clé privée et via un déchiffrement symétrique, retrouve le message.
Authentification
Il est très courant d'ajouter des authentifications et des signatures aux messages envoyés. On utilise pour cela des fonctions de hachage (MD5, SHA-1 ou des codes authentificateurs comme HMAC).
Alternative
La cryptographie asymétrique propose aussi une autre primitive cryptographique pouvant être associée à un chiffrement symétrique, il s'agit de l'échange de clés ; un exemple est l'échange de clés Diffie-Hellman.
Cette méthode, couplée avec un mécanisme d’authentification, est par exemple utilisée par TLS[1].
Notes et références
- RFC5246 section 7.4. Handshake Protocol