Preskočiť na obsah

Elliptic Curve Digital Signature Algorithm

z Wikipédie, slobodnej encyklopédie
Verzia z 19:55, 1. január 2010, ktorú vytvoril JohnyB3212 (diskusia | príspevky)

Elliptic Curve Digital Signature Algorithm (ECDSA) je variant podpisovej schémy DSA (Digital Signature Algorithm) s dodatkom na základe ECC. Je navrhnutý tak, aby bol existenčne nefalšovatelný.

Nastavenie systému

Zadefinujeme si subjekty:

  • U – signer
  • V – verifier
  • M – message
  • S - signature

V skutočnosti platí, že hneď po podpísaní správy M každý subjekt V s kópiou U verejného kľúča môže overiť daný podpis S.

Predpokladajme, že Alice (U) chce poslať podpísanú správu Bobovi (V).

Subjekty U a V musia vykonať nasledujúci postup pre prípravu využitia ECDSA:

  • jednotka U by mala určiť, ktoré z podporovaných hašovacich funkcií je potrebné použiť pre generovanie podpisu.
  • jednotka U by mala stanoviť domenové parametre eliptických kriviek T=(p, a, b, G, n, h) or (m, f(x), a, b,G, n, h) pre požadovanú úroveň zabezpečenia.
  • subjekt V (Bob) by mal získať autentickým spôsobom hašovaciu funkciu a doménový parameter T, aby V mohol určiť, či doménové parametre sú platné pre krivku pomocou jednej z vybraných metód.
  • jednotka U by mala vytvoriť kľúčový pár eliptických kriviek (d, Q) v spojení s T pre použitie v podpisovej schéme. Kľúčový pár tvorý verejný a privátny kľúč.
  • subjekt V by mal získať autentickým spôsobom Alicin verejný kľúč QU.

Podpisová operácia

  • Input: Vstupná správa M, ktorá je spáva určená pre podpis a Alicin privátny kľuč d.
  • Output: Podpis S=(r, s) sa skladá z dvoch celočíselných sekvencií r a s

Na vytvorenie podpisu S z M použije Alice (U) Signture Seneration Algorithm:

  • 1. použijeme hašovaciu funkciu, ktorú sme zvolili na výpočet celočíselnej hash hodnoty: e=HASH(M)
  • 2. vyberieme náhodné číslo k z intervalu [1, n – 1].
  • 3. vypočítame r = x1 mod n, kde x1 = kG, ak r = 0 proces sa opakuje
  • 4. vypočítame s = k^−1(e + rd) mod n, ak s = 0 proces sa opakuje
  • 5. výstupný podpis S = (r, s)