teorija i implementacija RSA algoritam Seminarski · PDF fileKao ˇsto smo napomenuli, tajni kljuˇc d nalazimo kao inverz broj 79 4. po modulu 3320: 3220 = 40

Embed Size (px)

Citation preview

  • Seminarski rad:

    RSA algoritam

    teorija i implementacija

    predmet: Izabrana poglavlja iz Informacionih tehnologija

    Student:Andreja Ilic

    Prirodno Matematicki Fakultet, Nise-mail: [email protected]

    Mentor:Dr Jelena Ignjatovic

    Prirodno Matematicki Fakultet, Nise-mail: [email protected]

    Jun, 2011

    1 Uvod

    Kriptografija je naucna disciplina koja se bavi proucavanjem metoda za slanje poruka utakvom obliku da ih samo onaj kome su namenjene moze procitati. Sama rec kriptografijaje grckog porekla i u doslovnom prevodu znaci: tajno pisanje. Ukoliko bi modernu krip-tografiju predstavili Venovim dijagramom, ona bi pripadala preseku matematike i teorijealgoritama. Kao takva predstavlja jako vaznu i lepo granu primenjene matematike.

    Osnovni zadatak kriptografije je da omoguci dvema osobama, koje cemo oznaciti saA i B1, komuniciraju preko nesigurnog komunikacionog kanala na takav nacin treca os-oba, koja moze nadzirati komunikacioni kanal, ne moze razumeti samo poruku. OsobuA cemo zvati posiljilac a osobu B primaoc. Za poruku kazemo da je otvoreni tekst(eng. plaintext). Proces maskiranja poruke, koja ima svrhu sakrivanja njenog sadrzaja,zove se sifrovanje (engl. encryption). Rezulat ovog procesa se naziva sifrat (engl.ciphertext). Inverznim procesom se od sifrata dobija pocetni otvoreni tekst.

    Oznacimo sa P otvoreni tekst a sa C sifrat. Pod tekstom mozemo podrazumevatiproizvoljan tekstualni fajl, niz bitova, digitalizovana slika... U opstem slucaju se poruka

    1U literaturi su za njih rezervisana imena Alice i Bob, sto je zgodno zbog pocetih slova. Ovu notacijuje uveo Bruce Schneier u knjizi Applied Cryptography.

    1

  • Slika 1: Sifrovanje i desifrovanje

    prvo prevodi u neki ceo broj ili niz brojeva cime bi se omogucila manipulacija pomocu arit-metike racunara (sifrovanje i desifrovanje obicno obavlja racunar). Bez gubljenja opstosticemo nadalje pod porukom podrazumevati ceo broj. Sifrovanje i desifrovanje mozemoopisati funkcijama E i D za koje vazi da je

    C = E(P ) P = D(C) D(E(P )) = P

    Kriptografski algoritam mozemo posmatrati kao funkciju koja se koristi za sifrovanjeodnosno desifrovanje. Posiljilac i primalac moraju da se dogovore oko procedure sifrovanjaodnosno desifrovanja. Savremeni kriptografski algoritmi koriste kljuc (eng. key) - cimese procedura sastoji od neke opste metode zajedno sa kljucem koji je upotpunosti opisuje.Kljuc obezbedjuje specificne informacije koje, zajedno sa opstom metodom, dopustajujednostavno sifrovanje od starne posiljaoca i lako desifrovanje na strani primaoca. Med-jutim, bilo ko da presretne prenos, zakljucice da je otkrivanje orginalne poruke bez kljucaneprakticno cak i ako se zna sam metod. Vestina ili nauka razbijanja sifrata naziva sekriptoanaliza. Oblast matematike koja obuhvata i kriptografiju i kriptpanalizu naziva sekriptologija. Kljuc k mozemo posmatrati kao element iz skupa parametarizacije funkcijakoje definisu kriptografski algoritam. Zato navedene funckije E iD pisemo kao Ek odnosnoDk. Opisani skup parametarizacije naziva se prostor kljuceva. U opstem slucaju kljuceviza sifrovanje i desifrovanje ne moraju biti jednaki. U tom slucaju mozemo imati da jeC = Ek1(P ) i P = Dk2(C).

    Osnovna podela algoritama sa kljucem je na:

    Simetricne algoritme (eng. Symmetric-key algorithm) su algoritmi kod kojihse kljuc sa desifrovanje moze izracunati na osnovu kljuca sa sifrovanje i obrnuto. Uvelikom broju slucajeva su ovi kljucevi zapravo identicni. Alternativni naziv za ovuklasu algoritama je algoritmi sa tajnim kljucem. Simetricni algoritmi se mogudalje podeliti na: lancane sifre (eng. stream cipher) i blokovske sifre (eng.block cipher). Lancane sifre obradjuju bit po bit otvorenog teksta dok blokovskerade nad otvorenim tekstom podeljenim na grupe bitova. Tipicna velicina bloka je128 bitova.

    Asimetricne algoritme (eng. Public-key cryptography) su algoritmi sa takoz-vanim javnim kljucem. Kljuc za sifrovanje je javan i razlicit je od kljuca za desifrovanje.Naravno kljuc za desifrovanje, kod ovog tipa algoritama, ne moze se (u bilo komrazumnom vremenu) izracunati na osnovu javnog kljuca.

    Osnovni cilj kriptografije je ocuvanje tajnosti poruke odnosno odbrana tajnosti njenogsadrzaja od nekog ko prisluskuje kanal veze - napadaca. Sa druge strane videli smo da je

    2

  • kriptoanaliza nauka ili vestina odredjivanja otvorenog teksta na osnovu poruke (bez samogpoznavanja kljuca). Postoji nekoliko tipova kriptoanalitickih napada. Osnovna podela jeizvrsena prema kolicini inforomacija koju sam napadac poznaje (u svim varijantama sepredpostavlja da napadac poznaje algoritam za sifrovanje):

    1. napad na osnovu sifrata: Napad na osnovu sifrata predstavlja najopstiji i najtezinapad. Kriptoanaliticar ima na raspolaganju odredjeni broj sifrata: C1, C2, . . . , Cnkoji su dobijeni preko poruka P1, P2, . . . , Pn koje nisu poznate. Problem je desifrovatiove poruke (i naci algoritam za desifrovanje novih poruka) odnosno generalnije nacikljuc k koji je koriscen za sifrovanje.

    2. napad na osnovu parova (otvoren tekst, sifrat): O ovom slucaju kriptoanal-iticar poseduje odredjeni broj poruka i njihovih sifrata: (P1, C1), (P2, C2), . . . , (Pn, Cn).Na osnovu ovih parova potrebno je naci kljuc kojim su one kreirane.

    3. napad na osnovu izabranog otvorenog teksta: Ova klasa napada je laksa odprethodne dve. Naime, kriptoanaliticar moze za proizvoljnu poruku dobiti sifrat.Ovo je mocniji napad od prethodnog jer se poruke mogu birati tako da daju sto viseinformacija o samom kljucu. Zadak je isti kao i u prethodnim napadima.

    Sigurnost algoritma se meri preko broja operacija koje treba izvrsiti prilikom njenograzbijanja. Za neki algoritam kazemo da je bezuslovno siguran ukoliko je nemoguce rekon-struisati otvoreni tekst bez obzira na kolicinu infromacija koju poseduje kriptoanaliticar.Jedino se slucajna sifra ne moze razbiti cak i u slucaju neogranicenih resursa. Medjutimod iteresa su nam oni algoritmi koji su prakticno sigurni - cije je razbijanje prakticnoneizvodljivo. Naravno ovo ne sme zavisiti od same tehnologije i brzine racunara.

    Problem kriptografije kao i kriptoanalize je jako interesantan vecini matematicara iprogramera. More ideja koje oni kriju iza sebe se mogu iskoristiti za takmicarske prob-lema iz programiranja. U Dodatku B prikazano je nekoliko interesantnih problema izkriptoanalize koji su bili na nekim od medjunarodnih olimpijada. Dodatak A sadrzi in-teresantnu poruku, tacnije test, koju je NSA nedavno ucinila javnom. U ovom radu jeprikazan deo poruke.

    U daljem delu analiziracemo RSA algoritam i njegovu primenu. Par poznatijih napadai njihove odbrane za RSA algoritam ce biti prikazane u kratkim crtama. Pored toga biceanalizirana i njegova implementacija sa akcentom na testove prostosti koji su neophodniza generisanje velikih prostih brojeva.

    2 RSA algoritam

    RSA kriptosistem je najpoznatiji primer asimetricnog sifarskog sistema. Ime je dobio posvojim pronalazacima (R. Rivest, A. Shamir, and L. Adlema), a objavljen je 1977. godine.RSA metod je patentiran 1983. godine, koji je istekao u jesen 2000. godine. Analiza dosada nije dokazala ali ni opovrgnula sigurnost ovog najpopularnijeg sistema.

    3

  • Kljuceve RSA algoritma dobijamo preko proizvod dva velika prosta broja. Algoritamza generisanje velikih prostih brojeva opisan je u sekciji: Testovi prostosti. Ovde se podveliki brojem podrazumevaju brojevi reda velicine 10100. Oznacimo ove proste brojevesa p i q, a njihov proizvod sa n = pq. Posmatracemo Ojlerovu funkciju broj n, (n) =(p 1)(q 1), cija vrednost oznacava broj brojeva manjih od n koji su uzajamno prostisa njim. Javni kljuc, odnosno kljuc za sifrovanje, odredjujemo kao slucajan broj e izsegmenta [1, (n)] koji je uzajamno prost sa (n). Kljuc d za desifrovanje, dobijamoresavanjem jednacine

    ed (p1)(q1) 1

    Kako je e uzajamno prost sa brojem (n) = (p 1)(q 1), gornja jednacina imaresenje koje se dobija Euklidovim algoritmom. Gornja jednacina se moze zapisati u oblikude+ t(p 1)(q 1) = 1 koja predstavlja linearnu Diofantovu jednacinu za koju vazi da jena desnoj strani najveci zajednicki delilac brojeva ciju linearnu kombinaciju razmatramo.Slozenost nalazenja ovih brojeva je O(log n) (ukoliko pretpostavimo da se aritmeticke op-eracije izvrsavaju u konstantnom vremenu). Konacno imamo da par (e, n) predstavljajavni kljuc, a broj d tajni kljuc. Brojevi p i q nisu vise potrebni i treba ih obrisati tj.spreciti da bilo ko sazna njihovu vrednost osim vlasnika javnog kljuca.

    RSA je blokovski algoritam, tako da je za njegovu primenu potrebno poruku m podelitina blokove tako da se svaki od njih moze jednoznacno predstaviti brojem iz segmenta[0, n 1]. Na ovaj nacin dobijamo poruku predstavljenu preko niza brojeva:

    m = (m1,m2, . . . ,mk)

    Analogno ce se i sam sifrat sastojati od blokova ci iste duzine k. Postupak sifrovanja je:

    ci = mei mod n

    Desifrovanje se vrsi inverznom funckijom. Naredna teorema pokazuje korektnost ovefunkcije:

    Teorema 2.1 Neka vaze uslovi opisani u prethodnom delu teksta. Tada vazi da je

    cdi n mi

    Dokaz: Sifrat ci smo dobili kao ci = mei mod n. Ovom smenom u stepenu broj ci

    dobijamo:

    cdi = medi = m

    1+t(p1)(q1)i

    Kako je (n) = (p1)(q1) na osnovu Ojlerove teoreme imamo da je i brojm1+t(p1)(q1)i mi deljiv sa n = pq. Odavde direktno sledi trazena jednacina.

    Primer: Posmatracemo RSA algoritam u slucaj kada je p = 47 i q = 71. Za javni kljucizaberimo (e, n) = (79, 3337). Broj e = 79 smo izabrali kao prozivoljan koji je uzajamnoprost sa (n) = 3320. Kao sto smo napomenuli, tajni kljuc d nalazimo kao inverz broj 79

    4

  • po modulu 3320:

    3220 = 40 79 + 6079 = 1 60 + 1960 = 3 19 + 319 = 6 3 + 13 = 1 1

    Preko ovih vrednosti dobijamo da najveci zajednicki delilac brojeva 32