150 likes | 417 Views
Algoritmus ECC a jeho použitie v schémach digitálneho podpisu. Obsah. Kryptografické schémy využívajúce ECC ECDSA ECDSA schéma ECDSA generovanie a verifikovanie Štandardizácia ECDSA Vzor príkladu. Kryptografické schémy využívajúce ECC. ECDH ( Eliptic Curve Diffie-Hellman )
E N D
Algoritmus ECC a jeho použitie v schémach digitálneho podpisu
Obsah • Kryptografické schémy využívajúce ECC • ECDSA • ECDSA schéma • ECDSA generovanie a verifikovanie • Štandardizácia ECDSA • Vzor príkladu
Kryptografické schémy využívajúce ECC • ECDH (ElipticCurveDiffie-Hellman) kľúčová dohoda založená na Diffie-Hellmanschéme s požitím ECC • ECDSA (EllipticCurveDigitalSignatureAlgorithm) digitálne podpisy založené na štandarde DSA (DigitalSignatureAlgorithm) s použitím ECC • ECMQV (EllipticcurveMenezes-Qu-Vanstone) kľúčové dohoda založená na systém dohode kľúčov MQV (Menezes-Qu-Vanstone) čo je vlastne overovací protokol pre kľúčovú dohodu založenú na Diffie-Hellmansystéme.
ECDSA • ECDSA je algoritmus definujúci procedúry a pravidlá pri tvorbe digitálneho podpisu za pomoci šifrovania pomocou eliptických kriviek. Jedná sa o analógový algoritmus k DSA. Bezpečnosť algoritmu ECDSA závisí rovnako ako šifrovanie pomocou eliptických kriviek na riešení problému diskrétneho logaritmu. Analógia spôsobuje, že je možné použiť rovnakú blokovú schému pre DSA ako pre ECDSA
ECDSA generovanie a verifikovanie • Algoritmus ECDSA pozostáva z 3 krokov: • 1. generovanie kľúčov • 2. generovanie digitálneho podpisu • 3. verifikácia digitálneho podpisu
1.generovanie kľúčov odosielateľa: • vyber eliptickú krivku E počet bodov EP(a,b) by mal byť deliteľný veľkým prvočíslom n • zvoľ bod P patrí EP(a,b) rád bodu P je n • vyber d d je náhodné cele číslo z intervalu(1,n-1) • vypočítaj Q Q=d.p • Verejný kľúč VKa= {E,P,n,Q} • Súkromný kľúč SKa={d}
2. generovanie digitálneho podpisu: • vyber k k je náhodné cele číslo z intervalu (1,n-1) • Vypočítaj k.P a r k.P = (x1,y1); r = x1mod n • Vypočítaj s s = k-1(H(M) + dr )mod n H(M) je hašovacia funkcia SHA-1 • Podpis (r,s)
3. verifikácia digitálneho podpisu: • Verifikácia s´,r´ r´, s´ sú celé číslo z intervalu (1,n-1) • Vypočítaj w w = (s´)-1 mod n a H(M´) • Vypočítaj u1, u2 u1 = (H(M´).w) mod n u2 = r´.w mod n • Vypočítaj u1.P + u2.Q = (x0, y0) v = x0 mod n • Test v=r, pričom M´, r´, s´ sú prijaté verzie M,r,s
Štandardizácia ECDSA • Podľa štandardu ANSI X.9.62 sa odporúča voliť n>2160 , čo zaručuje, že bezpečnosť algoritmu ECDSA zodpovedá bezpečnosti DSA, kde q je 160 bitové prvočíslo a p je 1024 bitové prvočíslo. V tomto prípade digitálny podpis na báze DSA aj ECDSA má rovnakú veľkosť 320 bitov. • Dôležitou vecou pri šifrovaní je aj vhodný výber eliptickej krivky, ktorý štandardizuje štandard FIPS 186-2 odporúča použiť 15 eliptických kriviek s rôznou úrovňou bezpečnosti. Uvedené krivky možno rozdeliť do 3 skupín. Sú to: • prvočíselné eliptické krivky nad konečným poľom GF(p) • binárne eliptické krivky nad konečným poľom GF(2 n) • Koblitzove eliptické krivky nad konečným poľom GF(2 n)
Vzor príkladu • Pred samotnou generáciou digitálneho podpisu máme zadané tieto doménové parametre eliptickú krivka E: teda a=1 b=1 bod P=(13,16) a rad bodov n=7 GENEROVANIE KĽUČOV • 1. Vyberieme štatisticky jedinečné číslo d v rozsahu <1, n-1>, číslo d slúži ako súkromný kľúč. d ϵ < 1,6 > ⟹ d=4 • 2. Vypočítame bod Q= d * P, bod Q slúži ako verejný kľúč. Q = 4* (13, 16) 2 * P = P + P a potom 4 * P = 2 * P + 2 * P = (17, 3) • 3. Výstupom je teda verejný kľúč daný parametre (E; G, n, Q) a súkromný kľúč d, v našom prípade Q = (17, 3) a d = 4
GENEROVANIE DIG. PODPISU • Pred generovaním podpisu máme k dispozícií, dokument m k podpísaniu, súkromný kľúč d a verejný kľúč Q. • 1. Vyberieme číslo k ϵ < 1,n -1 > k= 5 platí k ϵ < 1,6 > • 2. Vypočítame bod Q = k * G = 5 * (13; 16), Q =( , ) = (5; 4) a číslo r = mod n = 5 mod 7 = 5 • 3. Výpočet mod n, vypočítame inverzný prvok k prvku k = 5 ⟹ = 3 platí k* mod 7 = 1 • 4. Výpočet digitálneho podpisu s= ( h(m)+d*r) mod n, kde h reprezentuje hashovaciu funkciu SHA-1 ktoréj výstupom je 160-bitový hash daného dokumentu m. Pre naše účely budeme využívať skratenúhash h(m)= = s = 3 * (249250619 + 4 * 5) mod 7 = 747751917 mod 7 = 3 • 5. Výstup algoritmu je digitálny podpis (r , s) = (5, 3)
OVERENIE DIG. PODPISU • Pre overenie digitálneho podpisu (r,s) vykoná prijímacia strana: • 1. Prijíme cez zabezpečovací komunikačný kanál od vysielajúcej strany kópiu verejného kľúča ( E,G,n,Q ) a overí, že čísla r,s ϵ < 1, n- 1 > r = 5 ⟹ r ϵ < 1,6 > s =3 ⟹ s ϵ < 1,6 > • 2. Výpočet hash z prijatého dokumentu a čísla w = mod n w = 5 mod 7 = 5 h(m)= = • 3. Výpočet koeficientov h(m)* w mod n a r * w mod n 249250619 * 5 mod 7 = 1246253095 mod 7 = 3 5 * 5 mod 7 = 25 mod 7 = 4 • 4. Overenie digitálneho podpisu * G + * Q = (, ) = 3 * (13,16)+4 * (5,4) = (17,20)+ (13,7) = (5,19) v = mod n = 5 mod 7 = 5 • Verifikácia digitálneho podpisu sa odvíja od porovnania hodnôt čísel v a r ak platí v = r potom nebol digitálny podpis zmenený.