Eliptičke krivulje u kriptografiji

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Temu rezervirao: Marko Kos


Sadržaj

Uvod

Danas u gotovo svim dijelovima računalnog svijeta susrećemo kriptografiju. Pošto količina podataka koja se šalje preko Interneta strelovito raste iz godine u godinu te se je sve teže zaštititi od brojnih napadača, potrebno je konstantno razvijati i proširivati postojeće metode kriptografije. Pri tome valja voditi računa o snažnoj zaštiti informacija kao i o brzini postupka enkripcije, odnosno dekripcije. U ovom radu biti će opisane osnove metode kriptiranja podataka koje se temelje na eliptičkim krivuljama (engl. ECC - Eliptic Curve Cryptography). Diskretni logaritamski problem eliptičke krivulje predstavili su 1985. godine kriptografi Neal Koblitz iz IBM-a i Victor Miller s University of Washington. [1] Na bazi tog logaritamskog problema nastao je ECDSA (Eliptic Curve Digital Signature Algorithm), algoritam koji se koristi za digitalni potpis, a zasnovan je na eliptičkim krivuljama. Taj algoritam razvijen je kao alternativa RSA algoritmu, a njegove prednosti nad RSA su kraći ključevi te brže generiranje ključeva. Još jedna važna stvar kod primjene algoritama koji su zasnovani na eliptičkim krivuljama jest činjenica da oni u svom radu više opterećuju poslužitelj nego klijenta. U nastavku rada biti će opisane osnove algoritama baziranih na eliptičkim krivuljama, pogledati ćemo moguće primjene, kao i neke druge specifičnosti.

Eliptičke krivulje

Općenito o eliptičkim krivuljama

Za promatranje ćemo uzeti krivulju iz sustava konačnih polja primarnih brojeva (Fp) jer je jednostavnija za objasniti od polinomne krivulje. Ključno svojstvo eliptičke krivulje koje ju čini prikladnom za upotrebu u kriptografiji jest matematičko svojstvo, koje kaže da ako se odaberu dvije različite točke na krivulji, tada pravac koji ih spaja presijeca krivulju u trećoj točki. Ako tu točku reflektiramo na x-os dobivamo još jednu točku. Pod uvjetom da su poznate točke P i Q, moguće je naći točku refleksije koja je na slici označena kao P+Q. Upravo ta točka zadovoljava matematička svojstva koja se pojavljuju uz cijele brojeve, pod uvjetom da je definirana točka beskonačnosti. Ta točka je u slučaju cijelih brojeva 0. [1]

Crypto ecc.png
Slika 1 Eliptička krivulja
Izvor: [2]

Matematička analiza

Konacna polja.PNG

Problem diskretnog algoritma

DisLog.PNG

ElGamalov kriptosustav

ElGamal.PNG


PR2.PNG


Tako zamišljeni sustav se nakon toga može modificirati da se umjesto prethodno navedene grupe koristi grupa eliptičke krivulje nad konačnim poljem. Kada se je koncept ElGamalovog kriptosustava preslikao na krivulje došlo se je do zaključka da to ima određene nedostatke. Neki od osnovnih nedostaka su: [3]

Zbog tih nedostataka predložene su i druge varijante kriptosustava baziranih na eliptičkim krivuljama. U nastavku će biti riječi o poboljšanom kriptosustavu baziranom na eliptičkim krivuljama.

Menezes-Vanstoneov kriptosustav eliptičkih krivulja

MVKripto.PNG
Slika 3 Menzes - Vanstoneov kriptosustav eliptičkih krivulja
Izvor: [3]


Primjena eliptičkih krivulja u drugim sustavima

                      - Sustav temeljen na eliptičkim krivuljama analogan RSA algoritmu
                      - Temelji se na traženju brojeva p i q, n=pq pri čemu su p i q veliki prosti brojevi
                      - n nije prost broj
                      - Shema kod koje postoje određena ograničenja vezana za brojeve p i q (n=pq)
                      - Odabrati proste brojeve p i q tako da je faktorizacija od n (n=pq) nemoguća
                      - Ovisno o brojevima p i q računaju se ostali parametri sustava
                      - Metoda za izračun digitalnog potpisa koja koristi eliptičke krivulje
                      - Prihvaćena kao ISO standard 1998. godine, 1999. godine kao ANSI standard, a 2000. godine kao NIST i IEEE standard
                      - Predstavljena 1992. godine (Okamoto, Fujioka i Fujisaki)
                      - Eliptičke krivulje nad Zn, gdje je n=(p^2)q, a brojevi p i q su prosti

Razmjena poruka koristeći ECC kriptiranje

500px-Tijek.jpg
Slika 3 Razmjena poruka koristeći ECC kriptiranje
Izvor: [6]

Sigurnost kriptosustava eliptičkih krivulja

U sljedećoj tablici prikazane su veličine ključeva različitih algoritama u bitovima koje pružaju jednaku razinu sigurnosti prilikom kriptiranja.[4]

Tablica 1 Duljine kriptografskih ključeva prema NIST organizaciji
Simetrični algoritmi DSA/RSA/Diffie-Hellman Eliptičke krivulje
80 1024 160
112 2048 224
128 3072 256
192 7680 384
256 15360 521

Još jedna prednost algoritama eliptičnih krivulja jest ta što su manje računski zahtjevni od spomenutih algoritama, ali imaju složenije operacije po bitu ključa. [5]

Neki od nedostataka algoritama zasnovanih na eliptičkim krivuljama su:

Tablica 2 Vrijeme potrebno za generiranje i provjeru potpisa [5]
Algoritam Generiranje potpisa Provjera potpisa
RSA (1024 bit) 25 ms < 2 ms
ECDSA (160 bit) 32 ms 33 ms
RSA (2048 bit) 120 ms 5 ms
ECDSA (216 bit) 68 ms 70 ms

Iz tablice je vidljivo da s povećanjem veličine ključa generiranje potpisa kod ECDSA algoritma postaje mnogo brže u odnosu na RSA algoritam. Isto tako možemo vidjeti da je verifikacija potpisa kod ECDSA mnoga sporija nego kod RSA algoritma. RSA je sporiji kod generiranja iz razloga što računa velike proste brojeve. ECDSA za generiranje ključeva treba stvoriti samo slučajni broj koji postaje korisnikov tajni ključ i provesti operacije kako bi izračunao javni ključ.

Primjeri implementacije ECDSA U Sage-u

SPR1.PNG
 - 1. dio 
 - definiramo sljedeće vrijednosti: p - prosti broj; k - predstavlja slučajno odabrani broj pomoću kojeg će Alice potpisati poruku za Boba; m - predstavlja poruku namijenjenu za Boba; 
   n - broj točaka na eliptičkoj krivulji
 - krivulja obično ima oblik: Krivulja.PNG
 - nakon toga konstruiramo eliptičku krivulju koristeći zadani  prosti broj i parametre a i b koji u našem primjeru imaju vrijednosti a = 4, b = 5
 - uz pomoć naredbe E.points() ispišemo sve točke koje se nalaze na eliptičkoj krivulji
 - odabiremo jednu točku na krivulji u našem slučaju to je točka A = (3,0) te izaberemo slučajni broj a iz intervala [1, n-1]
 - izračunamo B = A * a
SPR5.PNG
 - 2. dio
 - na početku smo odabrali slučajni broj k iz intervala [1, n-1]
 - računamo R = A * k (potrebno je provjeriti r = x mod n --> ako je r = 0 vratiti se na prvi korak u ovom odjeljku
 - nakon toga računamo kinv na način da se uzme cjelobrojna vrijednost od izraza k^(-1) mod n
 - u praksi se u ovom dijelu generiranja potpisa koristi hashiranje, no zbog jednostavnosti to ovdje nije napravljeno
 - koristeći odabrani tajni ključ a (to nije onaj a kod generiranja krivulje da se izbjegnu zabune, iako imaju iste vrijednosti) i kinv izračunaju se parametri c i s  
SPR3.PNG
 - 3. dio
 - kako bi se verificirao potpis najprije se provjeri da li su vrijednosti parametara r i s iz intervala [1, n-1] 
 - računaju se redom izrazi u_1, u_2 i V
 - potpis za poruku m se prihvaća ukoliko imamo iste vrijednosti parametara V i R
 - [R = (3: 0 : 1)] = [V = (3 : 0 : 1)]
 - u ovom slučaju potpis možemo prihvatiti
 - u praksi se također koristi hashiranje i u ovom dijelu provjere potpisa
 - izabrani su jednostavni i ilustrativni primjeri kako bi se lakše ušlo u ovo dosta kompleksno područje
SPR4.PNG


PR2-NEW.PNG
 - Rješenje navedenog primjera možete pogledati na sljedećoj poveznici. ECDSA - Sage - Primjer
 - Za bolje razumijevanje primjera možete koristiti sljedeću poveznicu. Korištenje eliptičnih krivulja u kriptografiji

Zaključak

Kao što sam već ranije spomenuo kriptografski sustavi bazirani na eliptičkim krivuljama predstavljaju alternativu za RSA algoritam. Najveća prednost i područje primjene gdje su daleko bolji ovakvi sustavi su mali uređaji s ograničenom procesorskom snagom kao i memorijskim prostorom. To je iz razloga što u svom radu takvi sustavi više opterećuju poslužitelj, nego klijenta. Činjenice koje ovakvim sustavima ne idu u prilog su teškoće pri generiranju prikladnih krivulja, spore potvrde potpisa, patentna prava i sl.

Literatura

[1] http://www.cis.hr/www.edicija/LinkedDocuments/CCERT-PUBDOC-2006-11-169.pdf, dostupno 05.01.2016.

[2] http://www.garykessler.net/library/crypto.html#ecc, dostupno 05.01.2016.

[3] http://hrcak.srce.hr/index.php?show=clanak&id_clanak_jezik=14678, dostupno 05.01.2016.

[4] The Case for Elliptic Curve Cryptography, http://www.nsa.gov/ia/industry/crypto_elliptic_curve.cfm, dostupno 05.01.2016.

[5] Thales e-Security: Eliptic Curve Cryptography, 2000.

[6] https://security.foi.hr/wiki/index.php/ECC_kriptografija_(Elipti%C4%8Dne_krivulje), dostupno 05.01.2016.

Korisno

[1] https://koclab.cs.ucsb.edu/teaching/cren/docs/w03/09-ecc.pdf

Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima