Digital Signature Algorithm

De la testwiki
Sari la navigare Sari la căutare

Algoritmul pentru semnături digitale (engleză: "Digital Signature Algorithm"), cunoscut și sub acronimul DSA, este un standard al guvernului Statelor Unite ale Americii pentru semnăturile digitale. A fost propus de National Institute of Standards and Technology (NIST) în august 1991 pentru utilizare în cadrul standardului Digital Signature Standard (DSS), specificat în FIPS 186 și adoptat în 1993. O revizie minoră a fost emisă în 1996 sub numele de FIPS 186-1 [1]. Standardul a fost extins în 2000 ca FIPS 186-2 [2] Format:Webarchive și în 2009 ca FIPS 186-3 [3].

Algoritmul este format din trei proceduri: generarea cheii, semnarea, verificarea semnăturii.

Generarea cheii

  • Se alege q, astfel încât el este prim și are o dimensiune de 160 de biți (2159 < q < 2160).
  • Se alege p, astfel încât el este prim și p = 2qz+1 (2512 < p < 21024).
Ultimele reglementări specifică faptul că p ar trebui să fie pe fix 1024 de biți, ceea ce înseamnă că z trebuie să fie pe 864 de biți.
  • Se alege hp*, unde h este o rădăcină primitivă în p*.
  • α=hzmodp, unde z=p1q.
  • Se alege arbitrar aq*.
  • Se calculează β=αamodp.
  • Cheia publică este (p,q,α,β).
  • Cheia privată este a.

Semnarea

  • Se alege arbitrar kq*.
  • Se calculează x=SHA-1(mesaj), cu x pe 160 de biți; SHA-1 este funcția de hash, care realizează rezumatul mesajului (returnează un număr în funcție de conținutul mesajului).
  • Se calculează γ=(αkmodp)modq.
  • Se calculează δ=(k1(x+aγ))modq.
Dacă vreuna dintre cele două valori (γ sau δ) este egală cu zero, atunci se reia calculul cu generarea unui alt k.
  • Cheia de semnare este (γ,δ).

Verificarea

  • Se calculează w=δ1modq.
  • Se calculează e1=(xw)modq.
  • Se calculează e2=(γw)modq.
  • Se calculează v=((αe1βe2)modp)modq.
  • Semnătura este validă dacă și numai dacă v=γ.

Algoritmul Semnăturii Digitale este similar Schemei de semnătură ElGamal.

Corectitudine

Algoritmul este corect în sensul că destinatarul va accepta întotdeauna doar semnături originale. Acest lucru poate fi demonstrat după cum urmează:

Din α=hzmodp rezultă αqhqzhp11(modp) din Teorema lui Fermat. Deoarece α>1 și q este prim, α are ordinul q.

Expeditorul calculează

δ=(k1(x+aγ))modq.

Deci

kxδ1+aγδ1xw+aγw(modq).

Deoarece α are ordinul q

αkαxwαaγwαxwβγwαe1βe2(modp).

În sfârșit, corectitudinea algoritmului vine din

γ=(αkmodp)modq=(αe1βe2modp)modq=v.

Securitate

Acest algoritm este considerat imposibil de spart, datorită siguranței mari asigurate de câteva puncte, cum ar fi generarea aleatoare a lui p, q, a și k. Pentru a se afla k, de exemplu, ar trebui rezolvată o problemă de tipul logaritmilor discreți, care este o problemă "dificilă", în sensul că ajungerea la o soluție poate dura câteva luni.

Vezi și

Legături externe