DSA

Iš testwiki.
Pereiti į navigaciją Jump to search

DSA (Digital Signature Algorithm), skaitmeninio parašo algoritmas yra Jungtinių Valstijų federalinės valdžios (Šablonas:En) standartinis skaitmeninis parašas. Jis buvo patvirtintas Nacionalinės standartų ir technologijų instituto (NIST, National Institute of Standards and Technology) 1991 metais.

Raktų generavimas

  • Pasirenkamas 160-bitų pirminis skaičius q.
  • Pasirenkamas L-bitų ilgio pirminis skaičius p, toks kad tenkintu sąlygą p=qz+1 kur z yra sveikas skaičius ir kad L tenkintu sąlygą 512<=L<=1024 ir L dalintusi iš 64.
  • Pasirenkamas h, kuris 1<h<p1 toks kad tenkinama lygybė g = h*z mod p>1
  • Pasirenkamas atsitiktinai sugeneruota skaičių x kuris tenkintu sąlyga 0<x<q
  • Suskaičiuojamas y= g*x mod p
  • Viešas raktas yra (p,q,g,y). Privatus raktas yra x.

Pasirašymas

  • Generuojama atsitiktinė žinutė, kurios reikšmė k būtų 0<k<q
  • Suskaičiuojama r = (gk mod p) mod q
  • Suskaičiuojama s = (k1 (SHA1(m) + x*r)) mod q , kur SHA1(m) yra SHA-1 santraukos funkcija taikoma žinutei m.
  • Perskaičiuojam parašą mažai tikėtinu atveju kai r=0 arba s=0
  • Parašas yra (r,s).

Patvirtinimas

  • Atmesti parašą jei netenkinama bent viena iš sąlygų 0<r<q arba 0<s<q
  • Suskaičiuojama w =s1 mod q
  • Suskaičiuojama u1 = (SHA1(m)*w) mod q
  • Suskaičiuojama u2 = (r*w) mod q
  • Suskaičiuojama v = ((gu1*yu2) mod p) modq
  • Parašas galioja jeigu tenkinama lygybe v=r.