Das Verfahren (§3.2) nutzt den privaten Schlüssel und den modulo der Gruppenordnung reduzierten Hash als Seed für HMAC (int2octets(x) ‖ bits2octets(h1)), führt die Update-Schritte von HMAC-DRBG aus und zieht Kandidaten, bis einer in 1…q−1 liegt. Derselbe Schlüssel und dieselbe Nachricht ergeben immer dasselbe k und damit Byte für Byte dieselbe Signatur. Verifizierer erkennen keinen Unterschied: Das Ergebnis ist eine gewöhnliche ECDSA- oder DSA-Signatur.
FIPS 186-5 lässt die Methode als „deterministisches ECDSA“ zu (§6.3.2, Anhang A.3.3). Sie beseitigt die Fehlerquelle schlechter Zufallszahlengeneratoren, die hinter dem Fall der PlayStation 3 und vielen Schlüssellecks bei Wallets stand, und macht Testvektoren reproduzierbar: Anhang A.2 von RFC 6979 enthält Vektoren für DSA, die P-Kurven des NIST sowie die K- und B-Kurven.
Der Preis ist die Anfälligkeit für Fehlerinjektion und Seitenkanalangriffe: Wird dieselbe Nachricht zweimal signiert und dabei ein Fehler herbeigeführt, kann das den Schlüssel offenlegen; Hedged-Varianten mischen deshalb zusätzlichen Zufall in dieselbe Ableitung (§3.6 erlaubt zusätzliche Daten). Schalter in Bibliotheken: OpenSSL ab 3.2 -pkeyopt nonce-type:1; Python cryptography ec.ECDSA(hashes.SHA256(), deterministic_signing=True); @noble/curves signiert standardmäßig deterministisch und bietet für Hedging die Option extraEntropy.