DSA

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką

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

Raktų generavimas[taisyti | redaguoti kodą]

  • 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 <p-1 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[taisyti | redaguoti kodą]

  • Generuojama atsitiktinė žinutė, kurios reikšmė k būtų 0 < k < q
  • Suskaičiuojama r\ =\ (g^k\ mod\ p)\ mod\ q
  • Suskaičiuojama s\ =\ (k^{-1}\ (SHA-1(m)\ +\ x*r))\ mod\ q , kur SHA-1(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[taisyti | redaguoti kodą]

  • Atmesti parašą jei netenkinama bent viena iš sąlygų 0<r<q arba 0<s<q
  • Suskaičiuojama w\ = s^{-1}\ mod\ q
  • Suskaičiuojama u_1\ =\ (SHA-1(m)*w)\ mod\ q
  • Suskaičiuojama u_2\ =\ (r*w)\ mod\ q
  • Suskaičiuojama  v\ =\ ((g^{u_1}*y^{u_2})\ mod\ p)\ mod q
  • Parašas galioja jeigu tenkinama lygybe v=r.