Les paramètres de domaine sont un nombre premier p (de 1024 à 3072 bits), un nombre premier q qui divise p − 1 (160, 224 ou 256 bits) et un générateur g du sous-groupe d’ordre q. Une signature est formée de r = (gᵏ mod p) mod q et de s = k⁻¹·(z + x·r) mod q, la même structure qu’ECDSA, son analogue sur courbe elliptique, avec lequel DSA partage le même mode de défaillance : un k répété ou prévisible révèle la clé privée x. La RFC 6979 couvre DSA aussi bien qu’ECDSA.
FIPS 186-5 indique que DSA « n’est plus spécifié dans cette norme et ne peut être utilisé que pour vérifier des signatures numériques générées antérieurement ». OpenSSH a désactivé les clés ssh-dss par défaut en 2015 et a entièrement supprimé la prise en charge de DSA dans OpenSSH 10.0 (avril 2025) ; GnuPG lit toujours les anciennes clés DSA/ElGamal, et de nombreuses bibliothèques conservent la vérification DSA pour les archives.
Les signatures sont encodées comme celles d’ECDSA : une SEQUENCE DER des deux entiers en X.509 et en CMS (par exemple dsa-with-SHA256, 2.16.840.1.101.3.4.3.2), ou deux entiers de longueur fixe ailleurs. Si vous trouvez encore des clés DSA, remplacez-les par des clés Ed25519 ou ECDSA P-256 et ne gardez DSA que là où d’anciennes signatures doivent être vérifiées.