Ceci est une version archivée de cette page, en date du 18 mai 2018 à 18:24 et modifiée en dernier par SamPeter10(discuter | contributions)(Correction d'une erreur inversant deux noms de variables). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».
Le Digital Signature Algorithm, plus connu sous le sigleDSA, est un algorithme de signature numériquestandardisé par le NIST aux États-Unis, du temps où le RSA était encore breveté. Cet algorithme fait partie de la spécification DSS pour Digital Signature Standard adoptée en 1993 (FIPS 186). Une révision mineure a été publiée en 1996 (FIPS 186-1) et le standard a été amélioré en 2002 dans FIPS 186-2. Il est couvert par le brevet n° 5 231 668 aux USA (26 juin 1991) attribué à David Kravitz, ancien employé de la NSA, et il peut être utilisé gratuitement.
Aperçu
Le DSA est similaire à un autre type de signature développée par Claus-Peter Schnorr(en) en 1989. Il a aussi des points communs avec la signature ElGamal. Le processus se fait en trois étapes :
génération des clés
signature du document
vérification du document signé
Générations des clés
Leur sécurité repose sur la difficulté du problème du logarithme discret dans un groupe fini.
Choisir des longueurs et avec divisible par 64. Ces longueurs définissent directement le niveau de sécurité de la clef. NIST 800-57 recommande de choisir et pour une sécurité équivalente à 128 bit.
Choisir un nombre premier de longueur .
Choisir un nombre premier de longueur , de telle façon que , avec un entier
Choisir , avec de manière que
Générer aléatoirement un , avec
Calculer
La clé publique est . La clé privée est .
Signature
Choisir un nombre aléatoire tel que
Calculer
Si recommencer avec un autre
Calculer , où est le résultat d'un hachage cryptographique, par exemple avec SHA-256, sur le message
Si recommencer avec un autre
La signature est
Vérification
Rejeter la signature si ou n'est pas vérifié
Calculer
Calculer
Calculer
Calculer
La signature est valide si
Validité de l'algorithme
Ce principe de signature est correct dans le sens où le vérificateur acceptera toujours des signatures authentiques. Ceci peut être démontré comme suit avec un exemple pratique :