Elgamal

Si une clé Elgamal doit servir à la fois à la signature et au cryptage, une attention particulière doit être portée lors de sa création.

Une clé Elgamal consiste en un générateur g, un modulo premier p, un exposant secret x, et une valeur publique y=g^x mod p.

Le générateur et le modulo doivent être choisis de manière à ce que la résolution du problème logarithmique discret soit insoluble. Le groupe g devrait générer le groupe multiplicatif mod p-1 ou un grand sous-groupe lui correspondant et l’ordre de g devrait avoir au moins un facteur premier élevé. Un bon choix serait d’utiliser un nombre premier de Sophie-Germain « fort » pour choisir p, de telle sorte que p et (p-1)/2 soient premiers. En effet, ce choix est si judicieux qu’il SERAIT SOUHAITABLE que les implémentations le respectent, puisqu’il évite l’attaque des petits sous-groupes.

De plus, un résultat de Bleichenbacher [BLEICHENBACHER] montre que si le générateur g possède seulement de petits facteurs premiers, et si g divise l’ordre du groupe qu’il génère, alors les signatures peuvent être falsifiées. En particulier, choisir g=2 est un mauvais choix si l’ordre du groupe peut être pair. D’un autre côté, un générateur de 2 est un bon choix pour une clé dédiée seulement au cryptage puisqu’elle augmentera sa vitesse de réalisation.

Lors de la vérification des signatures Elgamal, noter qu’il est important de vérifier que r et s son inférieur à p. Si cela n’est pas fait, alors les signatures peuvent être facilement falsifier en utilisant des valeurs élevées de r d’une longueur de deux fois environ la longueur de p. Cette attaque est aussi expliquée dans l’article de BleinBacher.

On trouvera des informations sur l’utilisation sécurisée de signatures Elgamal dans [MENEZES], qui traite toutes les faiblesses décrites plus haut.

Si une implémentation autorise les signatures Elgamal, alors elle DOIT OBLIGATOIREMENT utiliser l’identifiant d’algorithme 20 pour une clé publique d’Elgamal pouvant signer.

Il N’EST PAS SOUHAITABLE qu’une implémentation implémente des clés Elgamal d’une taille inférieure à 768 bits. Pour une sécurité à long terme, les clés Elgamal devraient être d’une longueur de 1024 bits ou plus.