În sistemele criptografice cu cheie publică , algoritmul de semnătură digitală Edwards-curve (EdDSA) este o schemă de semnătură digitală care utilizează o variantă a schemei Schnor cu curbă elitică Edwards [1] .
Este proiectat să fie mai rapid decât schema de semnătură digitală existentă, fără a-i compromite securitatea. A fost proiectat de Daniel J. Bernstein , Nils Duif, Tanya Lange, Peter Schwabe și Bo-Yin Yang până în 2011.
Următoarea este o descriere simplificată a EdDSA, care nu include detaliile de codificare a numerelor întregi și a punctelor curbei ca șiruri de biți. O descriere completă și detalii despre această implementare a semnăturii digitale pot fi găsite în documentație și în RFC-urile relevante [2] [3] [1] .
EdDSA utilizează următorii parametri:
Aceste setări sunt minimul necesar pentru toți utilizatorii schemei de semnătură EdDSA. Securitatea unei semnături EdDSA depinde foarte mult de alegerea parametrilor, cu excepția unei alegeri arbitrare a punctului de bază. De exemplu, ro-algoritmul lui Polard pentru logaritmtrebuie să ia aproximativ curbe înainte de a putea[ clarifica ] calculează logaritmul, [4] deci l trebuie să fie suficient de mare încât să nu fie posibil și, în mod normal, ar trebui să fie mai mare de 2^200. [5] Alegerea lui l este limitată de alegerea lui q, deoarece, conform teoremei Hasse , nu ar trebui să difere de q + 1 cu mai mult de
În cadrul schemei de semnătură EdDSA
cheie publică Cheia publică din schema EdDSA este un punct de curbă codificat în b biți. Semnătură Semnătura EdDSA din mesajul M prin cheia publică A este perechea (R,S) codificată în 2b biți, un punct de curbă și un întreg , care satisface ecuația de verificare 2 c S B = 2 c R + 2 c H ( R , A , M ) A . {\displaystyle 2^{c}SB=2^{c}R+2^{c}H(R,A,M)A.} cheie privată Cheia privată din schema EdDSA este un șir k de biți b, care trebuie ales uniform la întâmplare. Cheia publică corespunzătoare în acest caz este , unde , este cel mai puțin semnificativ b-bit al lui H(k), interpretat ca un întreg mic-endian. Semnătura mesajului M este perechea (R,S) unde R=rB pentru și S ≡ r + H ( R , A , M ) s ( mod ℓ ) . {\displaystyle S\equiv r+H(R,A,M)s{\pmod {\ell )).} . Aceasta satisface ecuația de verificare 2 c S B = 2 c ( r + H ( R , A , M ) s ) B = 2 c r B + 2 c H ( R , A , M ) s B = 2 c R + 2 c H ( R , A , M ) A . {\displaystyle {\begin{aligned}2^{c}SB&=2^{c}(r+H(R,A,M)s)B\\&=2^{c}rB+2^{c }H(R,A,M)sB\\&=2^{c}R+2^{c}H(R,A,M)A.\end{aliniat}}}Ed25519 - Schema de semnătură EdDSA folosind SHA-512 și Curve25519 [2] unde:
− X 2 + y 2 = unu − 121665 121666 X 2 y 2 , {\displaystyle -x^{2}+y^{2}=1-{\frac {121665}{121666}}x^{2}y^{2},}
Curba este echivalentă birațional cu curba Montgomery cunoscută sub numele de Curva25519. Echivalență [6] [2]
X = u v − 486664 , y = u − unu u + unu . {\displaystyle x={\frac {u}{v}}{\sqrt {-486664}},\quad y={\frac {u-1}{u+1}}.}Echipa lui Bernstein a optimizat Ed25519 pentru familia de procesoare x86-64 Nehalem /Westmere. Verificarea poate fi efectuată în loturi de 64 de semnături digitale pentru un randament și mai mare. Ed25519 este proiectat pentru a oferi rezistență la atac comparabilă cu calitatea cifrurilor simetrice pe 128 de biți . Cheile publice au o lungime de 256 de biți, iar semnătura este de două ori mai mare.
Ca caracteristică de securitate, Ed25519 nu utilizează operațiuni de ramuri și pași de indexare a matricei care depind de secrete pentru a preveni atacurile pe canalul lateral .
Ca și alte scheme de semnătură logaritmică discretă, EdDSA utilizează o valoare secretă numită nonce , care este unică pentru fiecare semnătură. În schemele de semnătură DSA și ECDSA , acest nonce este în mod tradițional generat aleatoriu pentru fiecare semnătură, iar dacă generatorul de numere aleatoare este rupt sau previzibil în timpul generării semnăturii, semnătura poate scurge cheia privată, ceea ce s-a întâmplat cu firmware-ul Sony PlayStation 3. actualizați cheia de semnare [ 7] [8] . În comparație cu acestea, EdDSA alege non-uri în mod determinist, cum ar fi hash-ul cheii private și mesajul. Astfel, odată ce o cheie privată a fost generată, EdDSA nu mai are nevoie de un generator de numere aleatorii pentru a face semnături și nu există pericolul ca un generator de numere aleatoare spart folosit pentru a crea o semnătură digitală să dezvăluie cheia privată.
Utilizările notabile ale Ed25519 includ OpenSSH , [9] GnuPG [10] și diverse alternative, precum și instrumentul de valori al lui OpenBSD . [unsprezece]