Ce protocole est utilisé par le logiciel libre GNU Privacy Guard[2] dont les versions récentes implémentent jusqu'à sa version sur les courbes elliptiques[3]. Contrairement au chiffrement RSA, il n’a jamais été sous la protection d’un brevet.
On peut remarquer que DDH est une hypothèse de travail plus forte que celle du logarithme discret, puisqu’elle tient si jamais le problème du logarithme discret est difficile. Il existe par ailleurs des groupes où le problème DDH est facile, mais où on n'a pas d'algorithme efficace pour résoudre le logarithme discret[4].
Comme il s'agit d'un schéma de chiffrement asymétrique, le cryptosystème est composé de trois algorithmes (probabilistes) : GenClefs, Chiffrer et Déchiffrer.
Pour l'illustration, on va considérer que Bob veut envoyer un message à Alice. Mais ce message contient des informations sensibles, Bob ne veut donc pas qu'il soit compréhensible par une autre personne qu'Alice. Ainsi Bob va chiffrer son message.
Comme les schémas de chiffrement asymétrique sont en règle générale plus lents que leurs analogues symétriques, le chiffrement ElGamal est souvent utilisé en pratique dans le cadre d'un chiffrement hybride, comme pour sa spécification PGP[2].
Une manière de voir ce schéma de chiffrement, est de faire un parallèle avec le protocole d’échange de clefs de Diffie-Hellman. L’algorithme de chiffrement consiste alors à envoyer un message chiffré par masque jetable sous la clef partagée , qui peut-être calculé par Alice vu qu’elle dispose de (voir illustration ci-contre).
La première étape du schéma de chiffrement consiste à produire une paire de clefs : la clef publique, et la clef secrète. La première servira à chiffrer les messages et la deuxième à les déchiffrer.
Pour générer sa paire de clefs, Alice va commencer par prendre un groupe cyclique d’ordre q dans lequel le problème hypothèse décisionnelle de Diffie-Hellman est difficile, ainsi qu'un générateur de ce groupe.
Alice va ensuite tirer aléatoirement un élément qui va être sa clef privée, et va calculer dans .
Pour terminer, Alice va publier sa clef publique, notée .
Bob a donc accès à la clef publique d'Alice : . Pour chiffrer un message encodé comme un élément du groupe , Bob commence par tirer un nombre aléatoire et va l'utiliser pour couvrir le message en calculant . Pour permettre à Alice de déchiffrer le message, Bob va adjoindre à cette partie du message une information sur l'aléa : .
Enfin le chiffré sera composé de ces deux morceaux : , et Bob envoie à Alice.
En observant les informations publiques : ; on se rend compte que seuls des éléments de sont rendus visibles et non pas les exposants (ici et respectivement). Informellement on peut remarquer que le problème du logarithme discret peut s'interpréter comme le fait qu'il est difficile de retrouver les informations secrètes ( par exemple) qui permettraient de retrouver le message.
En supposant qu'on ait un adversaire contre la sécurité sémantique du chiffrement ElGamal qui gagne avec une probabilité non négligeableε. Il devient alors possible de construire un adversaire contre DDH, ce qui contredirait la difficulté supposée de ce problème. Cette réduction que l'on vient de décrire va former la preuve de sécurité du schéma.
Pour construire cet adversaire, qui sera appelé dans la suite « la réduction », on suppose qu'il reçoive un triplet DDH : , son but est alors de décider si ou si avec une probabilité non négligeable. Pour cela il dispose d’une interface avec l'adversaire décrit plus haut face à la sécurité sémantique du cryptosystème ElGamal.
La réduction va donc envoyer à l’adversaire contre ElGamal la clef publique . Au moment de produire le challenge pour l'adversaire contre la sécurité sémantique du cryptosystème, la réduction va envoyer comme chiffré : pour de son choix. Si jamais le triplet est un triplet DDH, c'est-à-dire si , alors serait formé comme un chiffré valide pour ElGamal au regard de la clef publique . En revanche, si l'exposant est aléatoire, alors l'adversaire contre ElGamal ne sera pas en mesure de distinguer les deux messages du challenge autrement qu'en répondant au hasard.
On n'a plus qu'à répondre « 1 » (correspondant au fait que le challenger pour DDH a envoyé un triplet DDH) si jamais notre adversaire réussit, et « 0 » (correspondant au fait que le challenger pour DDH a envoyé un triplet aléatoire) dans le cas contraire.
Analyse
On va désormais borner l’avantage de gagner de notre réduction à partir de l’avantage ε de l'adversaire supposé contre notre schéma.
On commence par remarquer que l’on a deux cas: soit le challenge envoyé par notre challenger est un vrai triplet DDH, soit il s’agit d’un triplet tiré uniformément.
Ainsi on a un avantage qui reste non négligeable : pour atteindre la même sécurité entre DDH et notre cryptosystème, il suffit que le problème DDH reste sûr avec un bit de sécurité supplémentaire.
Dans des modèles avec un attaquant possédant plus de puissance, comme sous attaques à chiffrés choisis, le cryptosystème d'ElGamal n'est pas sûr en raison de sa malléabilité ; en effet, étant donné un chiffré pour le message , on peut construire le chiffré , qui sera valide pour le message .
Cette malléabilité (il s’agit d’un homomorphisme multiplicatif) en revanche permet de l'utiliser pour le vote électronique par exemple[6].
Il existe cependant des variantes qui atteignent la sécurité face aux attaques à chiffrés choisis, comme le cryptosystème de Cramer-Shoup qui peut être vu comme une extension du chiffrement ElGamal.
Pour l'exemple, on peut prendre le groupe , avec comme générateur g = 5[7].
Une clef publique possible pourrait donc être: , et comme clef secrète .
On remarquera que comme le chiffrement est un algorithme probabiliste, il y a différentes sorties possibles pour le même message. Un chiffré possible pour le message 42 pourrait donc être (58086963, 94768547), mais aussi (83036959, 79165157) pour les aléas r valant 6689644 et 83573058 respectivement.
Néanmoins, si on fait le calcul pour nos deux chiffrés, on obtiendra bien 42 en sortie.
[ElGamal 1984] (en) Taher ElGamal, « A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms », Crypto, Springer, (DOI10.1007/3-540-39568-7_2, lire en ligne)
[Katz et Lindell 2014] (en) Jonathan Katz et Yehuda Lindell, Introduction to Modern Cryptography, 2nd Edition, Boca Raton, Chapman and Hall, , 583 p. (ISBN978-1-4665-7026-9, lire en ligne), « Chapitre 10.5 The El Gamal Encryption Scheme »
[Menezes, van Oorschot et Vanstone 1996] (en) A. J. Menezes, P. C. van Oorschot et S. A. Vanstone, Handbook of Applied Cryptography, CRC Press, , 810 p. (ISBN978-1-4398-2191-6, lire en ligne [PDF]), « Chapitre 8.4 ElGamal public-key encryption »
[Joux et Nguyen 2003] (en) Antoine Joux et Kim Nguyen, « Separating Decision Diffie–Hellman from Computational Diffie–Hellman in Cryptographic Groups », Journal of Cryptology, vol. 16, , p. 239-247 (DOI10.1007/s00145-003-0052-4)