Da, este o practică normală să generați o semnătură ECDSA din mesaj $M$ (sau este hash $H(M)$ ), cheie privată $d_U$ și parametrii curbei, fără a primi un nonce ca intrare. Nonce $k$ este construit ca parte a procesului de semnare, într-unul din două moduri:
- Este generat un număr întreg secret $k$ uniform în $[1,n)$ folosind un adevărat generator de numere aleatoare cu ieșire secretă. Asta este definiția standard a ECDSA.
- Este generat un număr întreg secret $k$ în $[1,n)$ folosind un Funcție pseudo-aleatorie cu cheie $d_U$, aplicat $H(M)$ și, opțional, alte date care nu trebuie să fie secrete (cum ar fi un marcaj temporal sau/și un număr aleatoriu). Asta e ceea ce RFC6979 face, prescriind un PRF bazat pe HMAC.
Ambele metode sunt la fel de sigure: în esență, $k$ este un secret în $[1,n)$ asta, pentru atacatorii care nu cunosc cheia privată $d_U$, este necunoscut și, dacă ar fi cunoscut, ar părea a fi aleatoriu (cu excepția celei de-a doua opțiuni, dacă $M$ este resemnat și celelalte date opționale se repetă sau lipsesc).
A doua metodă are avantajul de a nu necesita un adevărat generator de numere aleatorii de calitate criptografică. Cu toate acestea, folosește cheie privată $d_U$ (și mai rău îl amestecă cu date variabile potențial cunoscute de adversar), prin urmare PRF trebuie protejat împotriva atacurilor pe canalul lateral.
Doar a doua metodă poate asigura că semnarea aceluiași mesaj de două ori cu aceeași cheie privată generează aceeași semnătură, care în funcție de circumstanțe este de dorit sau nu.