Elliptic Curve Digital Signature Algorithm
Tento článok urgentne potrebuje úpravy a/alebo aspoň základné rozšírenie. Pomôž Wikipédii tým, že ho vhodne vylepšíš, alebo rozšíriš. Pozri si kritériá na minimálny článok, inšpiráciu môžeš nájsť aj v radách štylistickej príručky, prípadne v diskusii k článku. Neodstraňuj túto šablónu ak nedošlo k podstatnému vylepšeniu článku. Ak si článok založil, odstránenie šablóny prenechaj inému redaktorovi. Ak nebude tento článok do 14 dní prijateľne upravený, bude pravdepodobne zmazaný. Preto buďte pri úprave smelí! Dátum označenia je 30. 12. 2009, k zmazaniu dôjde 13. 1. 2010. Ak si umiestnil/a túto šablónu do článku, vyhľadaj autora v histórii článku a vlož na jeho diskusnú stránku oznam: {{Urgentne upraviť autor|Elliptic Curve Digital Signature Algorithm}} --~~~~ |
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_U.
- Output: Podpis S=(r, s) sa skladá z dvoch celočíselných sekvencií r a s.
Na vytvorenie podpisu S z M použije Alica (U) Signture Generation 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 = x_1 mod n, kde x_1 = kG_U, 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)
Overovacia operácia
- Input: pre overenie podpisu potrebuje Bob poznať svoju kópiu Alicinho verejného kľúča Q_U, pôvodnú správu M a podpis S.
- Output: Údaj o tom, či podpis S bol overený, teda či správa M je true alebo false.
Ak Bob nemá dôveru v kľuč Q_U, musí si ho potvrdiť:
- Overí si, či Q_U nie je rovná Ό , inak sú jeho súradnice platné.
- Overí si, či Q_U leží na danej krivke.
- 1.Overí si, či nQ_U = Ό, kde Ό je náš bod v nekonečno na krivke.
Následne pre overenie podpisu S sa použije Signature Verification Algorithm:
- 1. overuje, či r a s sú celé čísla v intervale [1, n - 1]. Ak nie, podpis je neplatný a overovanie je zastavené
- 2. použijeme hašovaciu funkciu na výpočet celočíselnej hash hodnoty e = HASH(M)
- 3. vypočítame: w = s^−1 mod n
- 4. vypočítame: u_1 = ew mod n a u_2 = rw mod n
- 5. vypočítame: R = (x_R, y_R) = u_1 G + u_2 Q_U , [R ≠ Ό] inak sa procedúra opakuje
- 6. vypočítame: v = x_R (mod n)
- 7. 1.porovná či r = v, ak áno operácia je validná
Tiež pozri
Pre podrobnejší popis a význam jednotlivých parametrov a ich generovanie pozri sekciu Kryptografia na báze eliptických kriviek.