Am implementat o bibliotecă de criptografie hobbyist și sunt în partea în care este implementată criptografia cu curbă eliptică. Am implementat și testat deja ECDSA cu P-256 și P-384, unde cheile private statice și efemere sunt de 256 de biți și 384 de biți fiecare, până acum e bine.
Ceea ce mă deranjează este P-521. Plănuiesc să generez statică de 512 biți ($d$) și chei efemere ($k$) pentru a ușura implementarea, deoarece majoritatea funcțiilor hash (excluzând XOF-urile) au o ieșire de cel mult 512 biți (nu folosesc funcții hash pentru a genera direct cheile, doar aloc spațiu de stivă în funcție de lungimea de ieșire a funcțiilor hash obișnuite ).
Dacă fac asta, componenta de semnătură rezultată $s$ poate avea un fel de părtinire, dar din moment ce produsul de $d \cdot k^{-1}$ se va revarsa $n$, am pseudo-convingerea că aceasta nu este o problemă prea serioasă.
Așa că pun 2 întrebări legate:
Î1: pot scăpa cu generarea de chei statice și efemere de 512 biți pentru ECDSA peste P-521 și să nu dăunez securității?
Q2: pentru cazul general, dat un modul prim $n$, se dă un adversar $s = k \cdot r + d \pmod n$ și $r$, Unde $d$ este static și $r$ este calculat aleatoriu determinist din $k$; ambii $k$ și $d$ au mai putin de $\lceil {\log_2{n} \over 4} \rceil$ din bucăți de vârf tăiate; poate adversarul să obțină vreo parte din $d$ sau $k$?