SveuˇciliˇsteJ. J. Strossmayera u Osijeku Odjel za matematiku

Igor Jakopiˇcek Asimetriˇcnikriptografski RSA algoritam

Diplomski rad

Osijek, 2010. SveuˇciliˇsteJ. J. Strossmayera u Osijeku Odjel za matematiku

Igor Jakopiˇcek Asimetriˇcnikriptografski RSA algoritam

Diplomski rad

Voditelj: prof.dr.sc. Mario Essert

Osijek, 2010. Sadrˇzaj

Uvod 1

1 Kriptografija 2 1.1 Razvoj kriptografije ...... 2 1.2 Osnovni pojmovi ...... 5 1.3 Matematiˇckitemelji ...... 6 1.3.1 Funkcije ...... 6 1.3.2 Osnove teorije brojeva ...... 8 1.3.3 Kriptosustavi ...... 9 1.4 Simetriˇcnakriptografija ...... 11 1.4.1 Definicija ...... 11 1.4.2 Supstitucijske ˇsifre ...... 11 1.4.3 Transpozicijske ˇsifre ...... 13 1.4.4 Moderni blokovni kriptosustavi ...... 13 1.5 Asimetriˇcnakriptografija ...... 14 1.5.1 Ideja javnog kljuˇca ...... 14 1.5.2 Kriptosustavi zasnovani na problemu diskretnog logaritma ...... 15 1.5.3 Kriptosustavi zasnovani na problemu faktorizacije ...... 16

2 RSA kriptosustav 17 2.1 Definicija ...... 17 2.2 Primjena ...... 18 2.2.1 Generiranje kljuˇceva ...... 18 2.2.2 Sifriranjeˇ i deˇsifriranje ...... 19 2.2.3 Digitalni potpis ...... 19 2.3 Kriptoanaliza ...... 20

3 Implementacija RSA kriptosustava 25 3.1 Algoritmi iz teorije brojeva ...... 25 3.1.1 Sloˇzenostalgoritama ...... 25 3.1.2 Modularno potenciranje ...... 26 3.1.3 Generiranje velikih prostih brojeva ...... 26 3.1.4 Raˇcunanjeinverznog elementa za mnoˇzenje...... 28 3.2 Primjer RSA algoritma u Python programskom jeziku ...... 29 3.2.1 O Pythonu ...... 29 3.2.2 RSA algoritam sa automatskim generiranjem kljuˇceva ...... 30

i Literatura 38

Saˇzetak 39

Summary 40

Zivotopisˇ 41

ii Uvod

Komunikacija se javila vrlo rano u povijesti ˇcovjeˇcanstva, no uvijek je postojao problem privatnosti u komunikaciji. Neke je poruke, iz bilo kojeg razloga, potrebno dostaviti samo onima kojih se tiˇcu,u neizmijenjenom stanju i s potvrdom identiteta poˇsiljaoca. To je jedna od prednosti koje je donio razvoj kriptografije. U poˇcetkurazvoja kriptografije najˇceˇs´cekoriˇstenemetode za ˇsifriranjepodataka bile su supstitucija (zamjena) i transpozicija (premjeˇstanje)osnovnih elemenata teksta, a ˇcijase kombinacija susre´cei danas u modernim simetriˇcnimkriptosustavima. Poˇcetkom sedamde- setih godina 20. stolje´capojavili su se asimetriˇcnikriptosustavi ili kriptosustavi s javnim kljuˇcemkod kojih su se za ˇsifriranjekoristile jednosmjerne funkcije pa je samo funkcija za deˇsifriranjemorala biti tajna, dok je funkcija za ˇsifriranjemogla biti javna. Tema ovog rada je najpoznatiji asimetriˇcnikriptografski algoritam - RSA. U prvom poglavlju predstavljena je kriptografija kroz povijest, uvedeni su osnovni pojmovi te je objaˇsnjenara- zlika izmedu simetriˇcnei asimetriˇcnekriptografije. U drugom je poglavlju predstavljen RSA kriptografski algoritam, opisani su postupci generiranja kljuˇceva, ˇsifriranja,deˇsifriranjai digitalnog potpisa pomo´cuRSA algoritma te je dan kratak osvrt na sigurnost i neke prob- leme praktiˇcneimplementacije. Tre´cepoglavlje opisuje teorijsku i praktiˇcnu implementaciju RSA algoritma, sadrˇzipseudokodove algoritama iz teorije brojeva te primjer RSA algoritma napisan u Python programskom jeziku.

1 1

Kriptografija

1.1 Razvoj kriptografije

Rijeˇckriptografija dolazi od grˇckihrijeˇcikriptos (grˇc. κριπτoσ), ˇstoznaˇcitajan, skriven i grafien (grˇc. γραϕιεν) ˇstoznaˇcipisati, pa bi se mogla doslovno prevesti kao tajnopis”. ” U starom vijeku smatralo se da se kriptografijom komunicira s demonima i zlim silama pa se kriptografija povezivala s crnom magijom. Oko 2000. god. pr. Kr. Egip´canisu razvili hijeroglife koji, iako nisu bili izmiˇsljeniradi skrivanja teksta, predstavljaju najstariji oblik danas poznatog kriptiranog pisma. 1822. godine francuski arheolog J. F. Champollion na temelju jednog trojeziˇcnognatpisa uspio je deˇsifriratiprvi niz fonetskih hijeroglifa. Izmedu 500. i 600. godine pr. Kr. koristila se hebrejska ˇsifrakoja se zasnivala na principu re- ciproˇcnezamjene slova abecede. Spartanci su 400. g. pr. Kr. koristili ˇstapnazvan skital oko kojega se namotao tanak list papirusa na koji bi se uzduˇzˇstapapisala poruka, a da bi se poruka dekriptirala bilo je potrebno imati ˇstapistog prom- jera. Prethodno opisana vrsta ˇsifriranja zove se translacija ili pomicanje, jer nas zanima svako n-to slovo teksta. Julije Cezar 50. g. pr. Kr. Slika 1.1: Skital u drˇzavnim je komunikacijama koristio jednostavnu supstituciju na obiˇcnoj abecedi (kruˇznipomak cijele abecede za dva mjesta). Prvi sus- tav koji je smanjio broj simbola, koji se koriste za kriptiranje, bio je Polybiusov kvadrat. Slova abecede postavljala su se u kvadrat 5x5, redovi i stupci numerirali su se bro- jevima od 1 do 5 tako da svako slovo predstavlja odgovaraju´ci par retka i stupca, a dekriptiranje se obavljalo tako da se svakom od parova pridruˇzivalo odgovaraju´ceslovo abecede. Rijeˇc sifra” koriste´ci Polybiusov kvadrat izgledala bi: 44 42 12 34 11 . ” Sifriranjeˇ supstitucijom dalje se razvijalo tako da se pom- 1 2 3 4 5 icanje slova nije ˇciniloproizvoljno, ve´cna osnovi rijeˇciili 1 ABCDE 2 FGHIJ fraze koja se nazivala kljuˇc.Prvih nekoliko slova abecede za- 3 KLMNO mijenilo bi se kljuˇcem,a ostala bi se popunila ostatkom slova. 4 PQRST Prednost ove metode, koja se naziva monoalfabetna zamjena, 5 U V W X Y/Z jest da primatelj, koji zna kljuˇc,lako moˇzedeˇsifriratiporuku, Slika 1.2: Polybiusov kvadrat a nedostatak je ˇstoje svako slovo zamijenjeno toˇcnojednim drugim slovom pa je napadaˇcmogao nekom od statistiˇckihmetoda prona´ciizvornu poruku. U 14. stolje´cuarapski i talijanski kriptografi koristili su metodu analize frekvencija koja se zasnivala na prebrojavanju uˇcestalostiponavljanja znakova u kriptiranom tekstu.

2 Tijekom srednjeg vijeka kriptografija je poˇcelanapredovati. U 15. se stolje´cupomo´cu bakrenih diskova s ugraviranom abecedom kriptira polialfabetnom supstitucijom koja dopuˇstada viˇserazliˇcitihznakova u kriptiranom tekstu predstavlja jedan znak jasnog teksta pa su frekvencije pojavljivanja svih znakova bile podjednake. Na taj naˇcinonemogu´cenoje pronalaˇzenjeˇsifrestatistiˇckimmetodama, pa je ovaj tip ˇsifriranjanajˇceˇs´cekoriˇstentijekom povijesti, a svoj je oblik zadrˇzaodo danas. U 16. stolje´cu poˇcinju se koristiti ˇsifre koje tijekom kriptiranja jednog teksta promjene nekoliko kljuˇceva sa jasno istaknutim mjestima gdje se prethodni kljuˇc promijenio. Njemaˇckisve´cenikTrithemius ABCDEFGHIJKLMNOPQRSTUVWXYZ Jasan tekst razvio je tablicu koja je u svakom retku pon- FGUQHXSZACNDMRTVWEJBLIKPYO T00 avljala cijelu abecedu, samo ˇstoje abeceda OFGUQHXSZACNDMRTVWEJBLIKPY T01 u svakom sljede´cemredu bila cikliˇckipo- YOFGUQHXSZACNDMRTVWEJBLIKP T02 maknuta za jedan znak u desno. Prvo slovo PYOFGUQHXSZACNDMRTVWEJBLIK T03 . poruke kriptiralo se prvim redom tablice, . GUQHXSZACNDMRTVWEJBLIKPYOF T25 drugo drugim itd., pa se kljuˇc ponavljao Slika 1.3: Sifraˇ sa promjenjivim kljuˇcem svakih 26 znakova kriptiranog teksta. Ovu tehniku proˇsirilisu Giovanni Batista Belaso te Blaise de Vig`enere. Vig`enerova ˇsifrakoristi Trithemiusovu tablicu, a kao kljuˇcza kriptiranje koristio je ili jasni ili kriptirani tekst. U 17. i 18. stolje´cu u Europi se osnivaju tzv. Mraˇcni uredi” koji su ” se bavili deˇsifriranjem presretnutih vojnih i politiˇckih poruka. Koriste se i kn- jige ˇsifri tako da se svaka rijeˇc teksta zamijenila brojem koji je oznaˇcavao njezin poloˇzaj u knjizi. 1795. godine Thomas Jefferson izu- mio je ˇsifarniks kotaˇcemkoji se sastojao od skupa kotaˇcas nasumiˇcnimporetkom abecede. Okretan- jem kotaˇcasloˇzilasu se slova koja ˇcineporuku u jed- nom redu, nakon ˇcegabi se kotaˇcifiksirali, a bilo koji drugi red slova mogao se koristiti kao kripti- rana poruka. Dekriptiranje se obavljalo tako da su se kotaˇcimedusobno okretali dok se ne bi pojavila poruka koja ima lingvistiˇckog smisla. Slika 1.4: Sifarnikˇ s kotaˇcem U 19. stolje´cuzbog izuma telegrafa poraslo je zan- imanje za kriptografiju, a koristi se Vig`enerova ˇsifrasa kratkom ponavljaju´comkljuˇcnom rijeˇci. Koristi se i sustav sa dva diska, jedan u drugom. Vanjski disk sadrˇzavao je 26 slova engleske abecede i brojeve, a unutarnji samo slova abecede. Kriptiralo se tako da se unutarnji disk vrtio sve dok se ˇzeljenoslovo nije pojavilo na vrhu, a broj okretaja diska potrebnih da bi se to dogodilo, bio je kriptirani tekst. Prva bigramska ˇsifra,kojom se kriptirao par slova tako da je rezultat ovisio o oba slova, bio je playfair sustav. Razvijena je i tomografska ˇsifrakoja je svakom znaku teksta dodjeljivala dvoznamenkasti broj prema tablici. Brojevi su se zapisivali tako da su prve znamenke ˇcinilered iznad drugih zna- menki, zatim se donji red mnoˇziosa 9, a takvi uredeni parovi su se ponovno prema tablici pretvarali u kriptirani tekst. Friedrich Kasiski je 1863. godine razvio metodu kriptoanalize koja je Slika 1.5: Sustav diskova mogla razbiti skoro sve ˇsifretoga vremena. Metoda se sasto- jala od pronalaˇzenjaponavljanja nizova znakova u kriptiranom tekstu da bi se dobila duˇzina kljuˇca(N), nakon ˇcegase primjenjivala statistika na svakom N-tom znaku.

3 U 20. stolje´cunapravljeni su prvi elektromehaniˇckiuredaji za kriptiranje, ˇstoje omogu´cilo brˇzei lakˇsekriptiranje poruka. Nakon izuma prvih kompjutora, 60-tih godina proˇsloga stolje´ca,razvijeni su prvi simetriˇcnikriptografski algoritmi koji predstavljaju poˇcetakmod- erne kriptografije. Poˇcetkom 20. stolje´caosnivaju se kriptografske organizacije diljem svi- jeta, Soba 40” u Engleskoj, MI-8 u Americi i druge, koje se u Prvom svjetskom ratu koriste ” za razbijanje njemaˇckihporuka. Nedugo nakon rata Nijemac Arthur Schrebius razvio je Enigmu, sustav za kriptografsku zaˇstituinformacija, koju njemaˇcka vojska uvodi kao stan- dardni naˇcinkriptiranja. Enigma je elektromehaniˇckiuredaj koji se sastojao od 26 tipki, zaslona od 26 ˇzaruljicaza prikaz kriptiranog izlaza, tri mehaniˇcka rotora i elektriˇcneprespo- jne ploˇce,a napajala se pomo´cuugradene baterije. Pritiskom na tipku kroz mreˇzukontakata rotora i prespojne ploˇcezatvara se strujni krug i pali se odgovaraju´caˇzaruljakoja oznaˇcava kriptirano slovo. Uredaj za kriptiranje ameriˇcke vojske SIGABA jedini je tijekom Drugog svjetskog rata ostao neprobijen od strane neprijatelja. Koristio je iste principe rotora kao njemaˇcka Enigma, ali rotori nisu bili fiksni, nego se 10 od 15 rotora moglo izvaditi i prem- jestiti na novu lokaciju.

(a) Enigma i Sigaba (b) Tunny i Sturgeon Slika 1.6: Elektromehaniˇckiuredaji Njemaˇcka vojska koristila je Tunny, tzv. on-line” uredaj za kriptiranje, koji je istovre- ” meno mogao kriptirati i slati poruke, mogao se koristiti i u kamionu, a koristio je inter- nacionalnu telefonsku Baudot” ˇsifru. Kao i Tunny, Sturgeon je bio on-line” uredaj za ” ” kriptiranje sposoban za brze teleprinter” poruke, ali se poruke nisu slale preko radija, nego ” preko ˇzice. Japanski strojevi za enkripciju podataka, poznati po imenima Jade i Purple, koristili su fiksne telefonske sklopke koje su obavljale iste funkcije kao i ˇziˇcnirotor. Za vri- jeme Drugog svjetskog rata za probijanje Enigmine ˇsifrerazvijena je Turingova bomba koja pretraˇzujesve kombinacije postavki rotora u potrazi za ispravnom, a radi na naˇcelupret- postavljenog sadrˇzaja poruke (engl. cribs”). Prvi sustav za sigurno glasovno komuniciranje ” putem telefona bio je Sigsaly, koji je tijekom Drugog svjetskog rata postavljen na 12 lokacija diljem svijeta i nikada nije probijen. Koristio je snimke pozadinske buke za ostvarivanje sigurnosti, tako da su primatelj i poˇsiljateljimali kopiju acetat snimaka od kojih je jedna sluˇzilaza kriptiranje, a druga za dekriptiranje. 1960-ih u IBM-ovom laboratoriju osmiˇsljenje simetriˇcnialgoritam pod nazivom Lucifer na temelju kojega nastaje algoritam DES (engl. Data Standard) za potrebe ameriˇcke vlade. DES koristi 64-bitni kljuˇcod kojeg je 8 bita unaprijed poznato. 1977. godine Ronald R. Rivest, Adi Shamir i Leonard M. Adleman razvili su prvi asimetriˇcnial- goritam i nazvali ga RSA, prema svojim inicijalima.

4 To je prvi algoritam koji upotrebljava sustav kriptiranja sa javnim kljuˇcevima, a svoju sig- urnost zasniva na teˇzinifaktorizacije velikih bro- jeva. Algoritam je objavljen u ˇcasopisu Scien- ” tific American” i svatko je mogao dobiti tehniˇcku specifikaciju. 1990. godine izumljena je kvantna kriptografija koja koristi fotone za prijenos niza bitova kljuˇcaza kriptiranje poruke. Inicijalno je koriˇstenaVernamova ˇsifra,poˇsiljatelji primatelj morali su biti povezani optiˇckimkabelom, a bilo Slika 1.7: Rivest, Shamir i Adleman 2003. je mogu´cedetektiranje uljeza u komunikaciji i mjere koliko je bitova najviˇsemogao uhvatiti. 1991. godine Phil Zimmermann je objavio prvu verziju PGP-a (engl. Pretty Good Privacy), programskog paketa otvorenog koda, koji je postao svjetskim standardom. NSA (engl. National Security Agency) i IBM proizveli su Harvest, elektronski uredaj koji je koristio Tractor, sustav traka velikih brzina. To je bio prvi potpuno automatski sustav, prethodnik danaˇsnjihsustava za pohranu podataka kao ˇsto je Storage Trek”. Cray Research Inc. i NSA razvili su superraˇcunaloXMP-22 brzine 420 ” megaFLOPS1, koje se koristilo od 1983. do 1993., te njegovog nasljednika YMP, brzine 1,67 gigaFLOPS, koji je umirovljen 2000. godine i izloˇzenu muzeju. 2009. godine Cray XT5 Jaguar, sa brzinom od 1,75 petaFLOPS, proglaˇsenje najbrˇzimsuperraˇcunalomna svijetu da bi ga u listopadu 2010. godine nadmaˇsiokineski sustav Tianhe-1A maksimalnom brzinom od 2,57 petaFLOPS.

1.2 Osnovni pojmovi

Definicija 1.1 Kriptografija je znanstvena disciplina koja prouˇcavametode za slanje poruka u takvom obliku u kojem ih moˇzeproˇcitatisamo onaj kome su namijenjene.

Osnovni je zadatak kriptografije omogu´citikomunikaciju dvjema osobama (poˇsiljateljui pri- matelju) preko nesigurnog komunikacijskog kanala (telefonske linije, raˇcunalnemreˇzei sl.) na naˇcinda tre´caosoba (njihov protivnik), koja moˇzenadzirati komunikacijski kanal, ne moˇzerazumjeti njihove poruke. Poruku koju poˇsiljateljˇzeliposlati primatelju zvat ´cemootvoreni tekst (engl. plaintext). To moˇzebiti tekst na njihovom materinjem jeziku, numeriˇckitekst ili neˇstodrugo. Poˇsiljatelj transformira otvoreni tekst pomo´cuunaprijed dogovorenog kljuˇca(engl. ). Taj postupak zove se ˇsifriranje,a dobiveni rezultat zove se ˇsifrat(engl. ) ili kriptogram. Nakon toga poˇsiljateljpreko komunikacijskog kanala ˇsaljeˇsifratkoji primatelj pomo´cukljuˇcamoˇze deˇsifriratii odrediti otvoreni tekst. Protivnik moˇzeprisluˇskuju´cidoznati sadrˇzaj ˇsifrata,ali ne moˇzeodrediti otvoreni tekst. Kriptoanaliza ili dekriptiranje je znanstvena disciplina koja prouˇcava postupke za ˇcitanje skrivenih poruka bez poznavanja kljuˇca. Kriptologija je grana znanosti koja prouˇcava kriptografiju i kriptoanalizu. Kriptografski algoritam ili ˇsifraje matematiˇcka funkcija koja se koristi za ˇsifriranjei deˇsifriranje. Op´cenito,radi se o dvjema funkcijama, jednoj za ˇsifriranje,a drugoj za deˇsifriranje,koje preslikavaju osnovne elemente otvorenog teksta (najˇceˇs´ceslova, bitove, te grupe slova ili

1FLOPS (engl. floationg point operations per second) je broj operacija s pomiˇcnomtoˇckom u sekundi

5 bitova) u osnovne elemente ˇsifratai obratno. Funkcije se biraju iz odredene familije funkcija u ovisnosti o kljuˇcu,a skup svih mogu´cihvrijednosti kljuˇceva nazivamo prostor kljuˇceva. Kod simetriˇcnihkriptosustava koristi se tajni kljuˇc.On je tajan jer se iz kljuˇcaza ˇsifriranje lako moˇzedobiti kljuˇcza deˇsifriranje,koji mu je najˇceˇs´ceidentiˇcan. Kod asimetriˇcnihkriptosustava koristi se javni kljuˇc.Kljuˇcje javan jer se iz njega ne moˇze dovoljno lako izvesti kljuˇcza deˇsifriranje. Kriptosustav se sastoji od kriptografskog algoritma te svih mogu´cihotvorenih tekstova, ˇsifratai kljuˇceva. Prilikom komunikacije kod kriptosustava s javnim kljuˇcempostavlja se pitanje vjerodos- tojnosti ili autentiˇcnostiporuke. Digitalni potpis je kriptosustav s javnim kljuˇcemkoji omogu´cujeautentifikaciju (primatelj moˇzeprovjeriti je li poruku zaista poslao poˇsiljatelj) i nepobitnost (poˇsiljateljne moˇzepore´cida je poslao poruku ako primatelj ima poruku s njegovim potpisom).

1.3 Matematiˇckitemelji

1.3.1 Funkcije Pojam skupa predstavlja cjelinu koju ˇcineelementi ili ˇclanovi toga skupa. Skup se zadaje nabrajaju´ciˇclanove u vitiˇcastimzagradama, npr. A = {a, b, c}. Za pisanje ˇcinjeniceda je a element skupa A koristi se oznaka a ∈ A, a da x nije element skupa A oznaˇcava se x ̸∈ A.

Definicija 1.2 Neka su D i K bilo koja dva neprazna skupa. Postupak f koji svakom ele- mentu x ∈ D pridruˇzujetoˇcnojedan element y ∈ K zove se funkcija ili preslikavanje sa D u K i piˇsemo f : D → K. Skup D zove se domena ili podruˇcjedefinicije, a skup K kodomena ili podruˇcjevrijednosti funkcije f. Svakom x ∈ D odgovaraju´ci(jedinstveni) pridruˇzenielement y ∈ K oznaˇcavase s f(x) i zove slika elementa x ili vrijednost funkcije f u toˇckix. Skup svih vrijednosti funkcije f, tj. skup R(f) = {f(x): x ∈ D} zove se slika funkcije f.

Definicija 1.3 Kaˇzese da je funkcija f : D → K injekcija (ili 1-1 preslikavanje) ako se razliˇcitielementi domene preslikaju u razliˇciteslike, tj.

x1 ≠ x2 ⇒ f(x1) ≠ f(x2)(∀x1, x2 ∈ D) (1.1)

Definicija 1.4 Kaˇzese da je funkcija f : D → K surjekcija ako je R(f) = K.

Definicija 1.5 Kaˇzese da je funkcija f : D → K bijekcija (ili obostrano jednoznaˇcno preslikavanje) ako je ona i injekcija i surjekcija.

Definicija 1.6 Neka je f : D → K bijekcija. Tada postoji funkcija f −1 : K → D definirana formulom f −1(y) := x, gdje je x ∈ D jedinstveni element takav da je f(x) = y. Funkcija f −1 zove se inverzna funkcija funkcije f.

Ako bismo htjeli da funkcija ˇsifriranjabude javna, morao bi se konstruirati takav kripto- sustav da je iz funkcije ˇsifriranjanemogu´ce,barem ne u nekom razumnom vremenu, odrediti funkciju deˇsifriranja.Odredeni tipovi funkcija, poput jednosmjernih i osobnih jednosmjernih funkcija, vaˇznisu u provedbi ove ideje.

6 Definicija 1.7 Za funkciju f : D → K kaˇzese da je jednosmjerna (engl. one-way) ako je f(x) lako izraˇcunatiza svaki x ∈ D, a f −1(y) teˇskoizraˇcunatiza uglavnom sve” elemente ” y ∈ K.

Primjer 1.1 Neka je zadan skup D = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} i neka je f(x) = y ≡ 2x (mod 11), tj. y je ostatak pri dijeljenju 2x sa 11. Funkcija je prikazana u tablici:

x 1 2 3 4 5 6 7 8 9 10 f(x) 2 4 8 5 10 9 7 3 6 1

Npr. za broj 8 lako se izraˇcuna y = 3 ≡ 28 (mod 11). No, ako je zadan y = 3, relativno teˇsko bi se pronaˇsao x = 8 bez tablice pred sobom. Jednosmjerna funkcija u kriptografiji, takva da ne postoji jednoznaˇcnainverzna funkcija kojom bi se cijela kodomena mogla preslikati u domenu, zapravo je surjekcija. Definicija 1.8 Osobna (engl. trapdoor) jednosmjerna funkcija je jednosmjerna funkcija f : D → K za koje je poznat neki dodatni podatak pomo´cukojeg je lakˇseza zadani y ∈ K izraˇcunati f −1(y) = x ∈ D. Cestoˇ koriˇstenefunkcije u kriptografiji su permutacije. Definicija 1.9 Neka je n proizvoljan prirodan broj. Permutacija skupa S = {1, 2, ..., n} je bilo koja bijekcija p : S → S (Cestoˇ se kaˇzei da je p permutacija od n elemenata). Skup svih permutacija od n elemenata oznaˇcavase sa Sn. U praksi je permutacije uobiˇcajeno zapisivati u obliku tablice, gdje gornji red predstavlja domenu, a donji sliku funkcije permutacije. ( ) 1 2 ... n p = p(1) p(2) ... p(n) Funkcija p je bijekcija pa se svaki element skupa {1,2,...,n} u donjem retku pojavljuje toˇcno jednom. Budu´cida bijekcije imaju inverz, p−1 se dobiva zamjenom redaka u tablici. Re- doslijed elemenata nije bitan, ali je vaˇznoda se elementi zamijene u oba reda tablice. ( ) p(2) p(1) p(3) ... p(n) p−1 = 2 1 3 ... n Primjer 1.2 Neka je S={1,2,3,4} i neka je definirana permutacija p : S → S p(1) = 4 p(2) = 3 p(3) = 1 p(4) = 2 ( ) ( ) 1 2 3 4 3 1 4 2 p = p−1 = 4 3 1 2 2 3 1 4 Involucije su funkcije koje su same svoj inverz. Definicija 1.10 Neka je S konaˇcanskup i neka je f bijekcija f : S → S. Funkcija f je involucija ako je f = f −1.

Primjer 1.3 ( ) 1 2 3 4 i = 4 3 2 1

7 1.3.2 Osnove teorije brojeva Za razumijevanje matematiˇckog aparata koriˇstenogu kriptografiji potrebno je poznavanje nekih pojmova iz teorije brojeva, koji su uvedeni u obliku definicija i teorema bez dokaza.

Definicija 1.11 Neka su a ≠ 0 i b cijeli brojevi. Kaˇzese da je b djeljiv s a, odnosno da a dijeli b, ako postoji cijeli broj x takav da je b = ax, ˇstose zapisuje sa a|b. Ako b nije djeljiv sa a, onda se piˇse a - b. Ako a|b, onda se joˇskaˇzeda je a djelitelj od b, a da je b viˇsekratnik od a. Oznaka ak||b ´ce znaˇcitida ak|b, ali ak+1 - b.

Teorem 1.1 (Teorem o dijeljenju s ostatkom) Za proizvoljan prirodan broj a i cijeli broj b postoje jedinstveni cijeli brojevi q i r takvi da je b = qa + r, 0 ≤ r < a.

Definicija 1.12 Neka su b i c cijeli brojevi. Cijeli broj a zove se zajedniˇckidjelitelj od b i c ako a|b i a|c. Ako je barem jedan od brojeva b i c razliˇcitod nule, onda postoji samo konaˇcno mnogo zajedniˇckihdjelitelja od b i c. Najve´cimedu njima zove se najve´cizajedniˇckidjelitelj od b i c i oznaˇcavase s (b, c).

Definicija 1.13 Kaˇzese da su cijeli brojevi a i b relativno prosti ako je (a, b) = 1. Za cijele brojeve a1, a2, ..., an kaˇzese da su relativno prosti ako je (a1, a2, ..., an) = 1, a da su u parovima relativno prosti ako je (ai, aj) = 1 za sve 1 ≤ i, j ≤ n, i ≠ j.

Teorem 1.2 (Euklidov algoritam) Neka su b i c > 0 cijeli brojevi, te neka je uzastopnom primjenom Teorema 1.1 dobiven niz jednakosti

b = cq1 + r1, 0 < r1 < c,

c = r1q2 + r2, 0 < r2 < r1,

r1 = r2q3 + r3, 0 < r3 < r2, . .

rj−2 = rj−1qj + rj, 0 < rj < rj−1,

rj−1 = rjqj+1.

Tada je (b,c) jednak rj, posljednjem ostatku razliˇcitomod nule.

Propozicija 1.1 Euklidov algoritam uvijek daje najve´cizajedniˇckidjelitelj u konaˇcnomnogo koraka.

Definicija 1.14 Prirodan broj p > 1 se zove prost ako p nema niti jednog djelitelja d takvog da je 1 < d < p. Ako prirodan broj a > 1 nije prost, onda se kaˇzeda je sloˇzen.

Teorem 1.3 (Osnovni teorem aritmetike) Faktorizacija svakog prirodnog broja n > 1 na proste faktore je jedinstvena do na poredak prostih faktora.

Definicija 1.15 Neka su a1, a2, ..., an cijeli brojevi razliˇcitiod nule. Najmanji prirodan broj c za koji vrijedi da ai|c za sve i = 1, 2, ..., n zove se najmanji zajedniˇckiviˇsekratnik i oznaˇcava s [a1, a2, ..., an].

8 Definicija 1.16 Ako cijeli broj m ≠ 0 dijeli razliku a − b, kaˇzese da je a kongruentan b modulo m i piˇsemo a ≡ b (mod m). U protivnom, kaˇzese da a nije kongruentan modulo m i piˇse a ̸≡ b (mod m).

Definicija 1.17 Skup {x1, ..., xm} se zove potpuni sustav ostataka modulo m ako za svaki y ∈ Z postoji toˇcnojedan xj takav da je y ≡ xj (mod m).

Teorem 1.4 (Kineski teorem o ostacima) Neka su m1, m2, ..., mr u parovima relativno prosti brojevi, te neka su a1, a2, ..., ar cijeli brojevi. Tada sustav kongruencija

x ≡ a1 (mod m1), x ≡ a2 (mod m2), ... , x ≡ ar (mod mr)

ima rjeˇsenja.Ako je x0 jedno rjeˇsenje,onda su sva rjeˇsenjasustava dana sa

x ≡ x0 (mod m1m2 ··· mr).

Definicija 1.18 Reducirani sustav ostataka modulo m je skup cijelih brojeva ri sa svojstvom da je (ri, m) = 1, ri ≡ rj (mod m) za i ≠ j, te da za svaki cijeli broj x takav da je (x, m) = 1 postoji ri takav da je x ≡ ri (mod m). Jedan reducirani sustav ostataka modulo m je skup svih brojeva a ∈ {1, 2, ..., m} takvih da je (a, m) = 1. Jasno je da svi reducirani sustavi ostataka modulo m imaju isti broj elemenata. Taj broj oznaˇcavase s φ(m), a funkcija φ zove se Eulerova funkcija. Drugim rijeˇcima, φ(m) je broj brojeva u nizu 1, 2, ..., m koji su relativno prosti sa m.

Teorem 1.5 (Eulerov teorem) Ako je (a,m)=1, onda je aφ(m) ≡ 1 (mod m).

Teorem 1.6 Eulerova funkcija je multiplikativna, ˇstoznaˇcida je φ(mn) = φ(m)φ(n) ako je (m, n) = 1.

Definicija 1.19 Neka su a i n relativno prosti prirodni brojevi. Najmanji prirodni broj d sa svojstvom da je ad ≡ 1 (mod n) zove se red od a modulo n. Joˇsse kaˇzeda a pripada eksponentu d modulo n.

Definicija 1.20 Ako je red od a modulo n jednak φ(n), onda se a zove primitivni korijen modulo n.

1.3.3 Kriptosustavi Definicija 1.21 Kriptosustav je uredena petorka (P,C,K,ε,D), gdje je P konaˇcanskup svih mogu´cihosnovnih elemenata otvorenog teksta, C konaˇcanskup svih mogu´cihosnovnih elemenata ˇsifrata, K konaˇcanskup svih mogu´cihkljuˇceva, ε skup svih funkcija ˇsifriranja i D skup svih funkcija deˇsifriranja. Za svaki K ∈ K postoji funkcija ˇsifriranja eK ∈ ε i odgovaraju´cafunkcija deˇsifriranja dK ∈ D. Pritom su eK : P → C i dK : C → P funkcije sa svojstvom da je dK (eK (x)) = x za svaki x ∈ P.

Iz svojstva dK (eK (x)) = x slijedi da funkcije eK moraju biti injekcije. Ako bismo imali eK (x1) = eK (x2) = y za dva razliˇcitaotvorena teksta x1 i x2, onda primatelj ne bi mogao odrediti treba li y deˇsifriratiu x1 ili x2, odnosno ne bi bila definirana funkcija deˇsifriranja dK (y). U skladu s tim, ako je P = C, onda su funkcije eK permutacije.

9 Kriptosustave se obiˇcnoklasificira prema trima kriterijima:

1. Tip operacija koje se koriste pri ˇsifriranju

• supstitucijske ˇsifreu kojima se svaki element otvorenog teksta zamjenjuje nekim drugim elementom • transpozicijske ˇsifreu kojima se elementi otvorenog teksta permutiraju (npr. ski- tal) • kriptosustavi koji kombiniraju ove dvije metode

2. Naˇcinobrade otvorenog teksta

• blokovne ˇsifrekod kojih se obraduju jedan po jedan blok elemenata otvorenog teksta koriste´cijedan te isti kljuˇc K • protoˇcneˇsifre(engl. ) kod kojih se elementi otvorenog teksta obraduju jedan po jedan koriste´cipritom paralelno generirani niz kljuˇceva (engl. key- stream)

3. Tajnost i javnost kljuˇceva

• simetriˇcniili konvencionalni kriptosustavi kod kojih se kljuˇcza deˇsifriranjemoˇze izraˇcunatipoznavaju´cikljuˇcza ˇsifriranjejer su oni najˇceˇs´ceidentiˇcni,a ˇcijasig- urnost leˇziu tajnosti kljuˇca(zato se zovu i kriptosustavi s tajnim kljuˇcem) • asimetriˇcniili kriptosustavi s javnim kljuˇcemkod kojih se kljuˇcza deˇsifriranje, koji je tajan, ne moˇzelako izraˇcunatiiz kljuˇcaza ˇsifriranje,koji je javan.

U daljnjim primjerima kriptosustava koristit ´cese engleski alfabet od 26 slova, a u otvorenom tekstu na hrvatskom jeziku zamijenit ´cese Cˇ i C´ s C, a D, DZ,ˇ Lj, Nj, Sˇ i Zˇ redom s DJ, DZ, LJ, NJ, S i Z. U sljede´coj tablici svakom slovu alfabeta pridruˇzenje njegov numeriˇckiekvivalent”. ”

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Skup {0, 1, 2, ..., 25} oznaˇcavat ´cese sa Z26, a na njemu ´cese definirati operacije zbrajanja, oduzimanja i mnoˇzenjana naˇcinda se rezultat standardnih operacija na kraju zamijeni s njegovim ostatkom pri dijeljenju s 26, za ˇsto´cese koristiti oznake a +26 b ili (a + b)mod 26, te analogno za oduzimanje i mnoˇzenje.Skup Z26 uz operacije +26 i ·26 je prsten, ˇstoznaˇci da su operacije zbrajanja i mnoˇzenjazatvorene (rezultat je ponovno iz Z26), komutativne i asocijativne, te vrijedi distributivnost mnoˇzenjaprema zbrajanju, a za obje operacije postoje neutralni element i inverz. Ako dva cijela broja a i b daju isti ostatak pri dijeljenju s 26, to ´cese zapisivati s a ≡ b (mod 26) i govoriti da su a i b kongruentni modulo 26. Analogno bi se definirao skup Zm i operacije na njemu za proizvoljan prirodan broj m.

10 1.4 Simetriˇcnakriptografija

1.4.1 Definicija

Definicija 1.22 Promotrimo enkripcijsku shemu koja se sastoji od funkcija enkripcije eK i dekripcije dK , K ⊂ K, gdje je K prostor kljuˇceva. Za enkripcijsku shemu kaˇzese da je simetriˇcnog kljuˇcaako se za svaki pridruˇzenipar kljuˇcevaenkripcije i dekripcije (eK , dK ) raˇcunski lako” nade d poznavaju´cisamo e ili obratno. Kako je e = d najˇceˇs´ceu ” K K K K uporabi kao simetriˇcnikljuˇc,odatle je i naziv prikladan.

1.4.2 Supstitucijske ˇsifre Znameniti rimski vojskovoda Gaj Julije Cezar u komunikaciji sa svojim prijateljima koristio se ˇsifromu kojoj su se slova otvorenog teksta zamjenjivala slovima koja su se nalazila tri mjesta dalje od njih u alfabetu (A 7→ D,B 7→ E,C 7→ F itd.). Sada se definira Cezarova ˇsifra.

Definicija 1.23 Neka je P = C = K = Z26. Za 0 ≤ K ≤ 25 definira se

eK (x) = (x + K) mod 26, dK (y) = (y − K) mod 26.

Primjer 1.4 Ako se upotrijebi danaˇsnjiengleski alfabet od 26 slova, te pretpostavi da se alfabet cikliˇckinastavlja, Cezarova ˇsifra moˇzese pregledno zapisati na sljede´cinaˇcin:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z D E F G H I J K L M N O P Q R S T U V W X Y Z A B C Poznata Cezarova izreka ALEA IACTA EST glasila bi tada DOHD LDFWD HVW.

U Cezarovoj ˇsifrisu osnovni elementi otvorenog teksta slova (odnosno njihovi numeriˇcki ekvivalenti), a kljuˇcK odreduje za koliko ´cese mjesta udesno pomicati slova pri ˇsifriranju. Vrijedi uvjet dK (eK (x)) = x, pa je ovo po definiciji kriptosustav. Da bi se dobila barem malo sigurnija ˇsifra,mogu se promatrati funkcije za ˇsifriranjekoje ´ceukljuˇcivati viˇseod jednog parametra, a najjednostavnija takva funkcija je afina funkcija e(x) = ax + b. Budu´cida ova funkcija mora imati inverz, parametar a ne moˇzebiti proizvol- jan, ve´cmora biti relativno prost s modulom 26. Sada se moˇzedefinirati Afina ˇsifra.

Definicija 1.24 Neka je P = C = Z26, te neka je

K = {(a, b) ∈ Z26 × Z26 :(a, 26) = 1}.

Za K = (a, b) ∈ K definira se

−1 eK (x) = (ax + b) mod 26, dK (y) = a (y − b) mod 26.

I ovdje je zadovoljen uvjet definicije kriptosustava

−1 dK (eK (x)) = dK (ax + b) = a (ax + b − b) = x

Budu´cida broj 26 nije prost, multiplikativni inverz imaju samo brojevi iz Z26 koji su relativno prosti s 26, tj. za koje vrijedi da je najve´cizajedniˇckidjelitelj od a i 26 jednak 1, ˇstose zapisuje (a,26)=1. Prikaz tih brojeva zajedno s njihovim inverzima naveden je u tablici.

11 1 3 5 7 9 11 15 17 19 21 23 25 1 9 21 15 3 19 7 23 11 5 17 25

Primjer 1.5 Neka je K = (7, 3). Sifriratiˇ otvoreni tekst OSIJEK. Koriste´ciranije navedenu tablicu, slova otvorenog teksta zamjenjuju se njihovim numeriˇckim ekvivalentima.

14 · 7 + 3 ≡ 23 mod 26 18 · 7 + 3 ≡ 25 mod 26 8 · 7 + 3 ≡ 7 mod 26 9 · 7 + 3 ≡ 14 mod 26 4 · 7 + 3 ≡ 5 mod 26 10 · 7 + 3 ≡ 21 mod 26

Sada se dobiva ˇsifrat XZHOFV.

Cezarova i afina ˇsifrasu specijalni sluˇcajevi supstitucijske ˇsifrekoja je definirana na sljede´ci naˇcin.

Definicija 1.25 Neka je P = C = Z26. Prostor kljuˇceva K sastoji se od svih permutacija skupa {0, 1, 2, ..., 25}. Za svaku permutaciju π ∈ K definira se

−1 eπ(x) = π(x), dπ(y) = π (y),

gdje je π−1 inverzna permutacija od π.

Dakle, za alfabet ˇsifratamoˇzese odabrati bilo koja permutacija slova A,B,...,Z, te svako slovo otvorenog teksta zamijeniti slovom koje se u tablici nalazi ispod njega. Sifreˇ kod kojih svakom slovu otvorenog teksta odgovara jedinstveno slovo ˇsifrata,zovu se monoalfabetske ˇsifre.

Ovdje ima 26! ≈ 4·1026 mogu´cihkljuˇceva, pa je napad ispitivanjem svih mogu´cihkljuˇceva praktiˇcnonemogu´c. No, supstitucijsku ˇsifruje dosta lako dekriptirati koriste´cistatistiˇcka svojstva jezika na kojem je pisan otvoreni tekst pomo´cuanalize frekvencije slova. Sifreˇ kod kojih se svako slovo otvorenog teksta moˇzepreslikati u jedno od m mogu´cihslova, gdje je m duljina kljuˇca,u ovisnosti o svom poloˇzaju unutar otvorenog teksta, zovu se polialfabetske ˇsifre.Kriptosustav, koji se naziva Viegen`ereova ˇsifra,definiran je na sljede´cinaˇcin.

P C K Zm Definicija 1.26 Neka je m fiksan prirodan broj. Definira se = = = 26. Za kljuˇc K = (k1, k2, ..., km), definira se

eK (x1, x2, ..., xm) = (x1 +26 k1, x2 +26 k2, ..., xm +26 km),

dK (y1, y2, ..., ym) = (y1 −26 k1, y2 −26 k2, ..., ym −26 km).

Dakle, slova otvorenog teksta pomiˇcuse za k1, k2, ...km mjesta, ovisno o ostatku dijeljenja pozicije slova s duljinom kljuˇca m. Kod ove ˇsifreosnovni elementi otvorenog teksta i ˇsifrata su blokovi” od po m slova. ”

12 Primjer 1.6 Neka je m=4 i kljuˇcnarijeˇcBROJ, kojoj je numeriˇckiekvivalent kljuˇc K = (1, 17, 14, 9). Neka je otvoreni tekst KRIPTOLOGIJA, ˇcijije numeriˇckiekvivalent (10,17,8,15,19,14,11,14,6,8,9,0). Sifriranjeˇ je dano u tablici. kljuˇc BROJBROJBROJ otvoreni tekst KRIPTOLOGIJA ˇsifrat LIWYUFZXHZXJ

1.4.3 Transpozicijske ˇsifre Ideja transpozicijske ˇsifreje da se elementi otvorenog teksta ostave nepromijenjeni, ali da se promijeni njihov medusobni poloˇzaj. P C Zm K Definicija 1.27 Neka je m fiksan prirodan broj. Neka je = = 26, te neka se sastoji od svih permutacija skupa {1, 2, ..., m}. Za π ∈ K definira se

eπ(x1, x2, ..., xm) = (xπ(1), xπ(2), ..., xπ(m)),

dπ(y1, y2, ..., ym) = (yπ−1(1), yπ−1(2), ..., yπ−1(m)). U praksi je najupotrebljavanija bila stupˇcanatranspozicija kod koje se otvoreni tekst up- isuje u pravokutnik po redcima, a zatim se poruka ˇcitapo stupcima, ali s promijenjenim poretkom stupaca. Ako se posljednji redak ne ispuni do kraja, onda se prazna mjesta pop- une proizvoljnim slovima (nulama) koja ne mijenjaju sadrˇzaj poruke. Primjer 1.7 Sifriratiˇ otvoreni tekst KRIPTOGRAFIJA I KRIPTOANALIZA stupˇcanom transpozicijom s kljuˇcem 4312576. Rjeˇsenjeje dano u tablici. kljuˇc 4 3 1 2 5 7 6 otvoreni tekst KRIPTOG RAFIJAI KRIPTOA NALIZAX

Sifratˇ je: IFILPIPIRARAKRKNTJTZGIAXOAOA.

1.4.4 Moderni blokovni kriptosustavi DES (engl. Data Encryption Standard) kriptosustav razvio je IBM 1976. godine na Feis- telovoj ˇsifrikoriste´ciuporabe supstitucija i transpozicija kroz viˇseiteracija. Ovaj algoritam pomo´cukljuˇca K duljine 56 bitova iz otvorenog teksta duljine 64 bita daje ˇsifratkoji ponovo ima 64 bita. Postoje tri vrste napada na DES: linearna kriptoanaliza, diferencijalna kriptoanaliza i DES ” Cracker”. Za linearnu i diferencijalnu kriptoanalizu, koje nisu razbile DES, potrebno je 243 poznatih parova otvoreni tekst-ˇsifrat.U srpnju 1998. godine ESS (engl. Electronic Frontier Foundation) napravio je stroj DES Cracker” koji je razbio poruku ˇsifriranu DES-om za 56 ” sati, a koristio je napad grubom silom” s 255 DES operacija. ” 13 Nakon razbijanja DES-a pojavilo se viˇseprijedloga za sliˇcne,ali sigurnije kriptosustave, koji imaju ve´cuduljinu kljuˇcaod DES-a, obiˇcno128 bitova. Neki od njih su trostruki DES, IDEA, CAST i RC5. Godine 1997. razvijen je AES (engl. Advanced Encryption Standard) kao op´ceprihva´ceni standard koji ´cezamijeniti DES.

1.5 Asimetriˇcnakriptografija

1.5.1 Ideja javnog kljuˇca Najve´ciproblem simetriˇcnihkriptosustava je taj da poˇsiljatelji primatelj moraju biti u mogu´cnostirazmijeniti tajni kljuˇcpreko nesigurnog komunikacijskog kanala ili se osobno susresti. 1976. godine Whitfield Diffie i Martin Hellman ponudili su jedno mogu´cerjeˇsenje problema razmjene kljuˇceva, zasnovano na ˇcinjenicida je u nekim grupama potenciranje mnogo jednostavnije od logaritmiranja. Njihov postupak za razmjenu kljuˇceva je sljede´ci:

1. Osoba A generira sluˇcajan broj a ∈ {1, 2, ..., |G| − 1}, gdje je G cikliˇcka grupa. Osobi B tada poˇsaljeelement ga.

2. Osoba B generira sluˇcajan broj b ∈ {1, 2, ..., |G| − 1}, te osobi A poˇsaljeelement gb.

3. Osoba A izraˇcuna(gb)a = gab.

4. Osoba B izraˇcuna(ga)b = gab.

Njihov tajni kljuˇcje K = gab.

Definicija 1.28 Kriptosustav s javnim kljuˇcemsastoji se od dviju familija {eK } i {dK } funkcija za ˇsifriranje i deˇsifriranje sa svojstvima:

1. za svaki K je dK inverz od eK

2. za svaki K je eK javan, ali je dK poznat samo osobi K

3. za svaki K je eK osobna jednosmjerna funkcija.

Ovdje se eK naziva javnim kljuˇcem,a dK tajnim ili osobnim kljuˇcem. Ako poˇsiljateljA ˇzeliposlati poruku primatelju B, onda B najprije poˇsaljeA svoj javni kljuˇc eB. Potom A ˇsifrirasvoju poruku pomo´cu eB i poˇsaljeprimatelju ˇsifrat y = eB(x). Primatelj B deˇsifriraˇsifratkoriste´cisvoj tajni kljuˇc dB i dobiva

dB(y) = dB(eB(x)) = x.

Budu´cida je kljuˇcjavan, postavlja se pitanje vjerodostojnosti ili autentiˇcnostiporuke. To se moˇzeprovjeriti na sljede´cinaˇcin:

• Osoba A svojoj poruci doda sluˇcajan broj a od npr. 10 znamenaka.

• Osoba B generira svoj sluˇcajni 10-znamenkasti broj b, te poˇsaljeosobi A poruku eA(a+ b).

14 • A izraˇcuna b pomo´cuformule b = dA(eA(a + b)) − a te ponovno poˇsaljesvoju prvu poruku tako da joj doda b, a isto to uˇcinisa svakom idu´comporukom koju ´ceslati osobi B. Neki kriptosustavi omogu´cujukorisnicima i da digitalno potpiˇsusvoju poruku. Neka je P = C. Tada A moˇzepotpisati poruku x tako da osobi B poˇsaljeˇsifrat z = dA(y) = dA(eB(x)). Kada B primi poruku za koju je pretpostavio da ju je poslao A, prvo primijeni javni kljuˇc eA, a potom svoj tajni kljuˇc dB:

dB(eA(z)) = dB(eA(eB(x))) = x. Sada primatelj B zna sigurno da je poruku poslao A jer je samo on mogao upotrijebiti funkciju dA.

1.5.2 Kriptosustavi zasnovani na problemu diskretnog logaritma Neka je G konaˇcnaAbelova grupa. Da bi bila prikladna za primjene u kriptografiji javnog kljuˇca,u grupi G operacije mnoˇzenjai potenciranja trebale bi biti jednostavne, dok bi logar- itmiranje kao inverz od potenciranja trebalo biti teˇsko. Slijedi definicija problema diskretnog logaritma u grupi G. Definicija 1.29 Neka je (G, ∗) konaˇcnagrupa, g ∈ G, H = {gi : i ≥ 0} podgrupa od G generirana s g, te h ∈ H. Treba na´cinajmanji nenegativni cijeli broj x takav da je h = gx, gdje je x ∗ ∗ ∗ g = |g g {z... g} x puta

Taj broj x se naziva diskretni logaritam i oznaˇcavas logg h. Problem diskretnog logaritma iskoristili su Diffie i Hellman u ranije opisanom protokolu za razmjenu kljuˇceva.

Sada se definira ElGamalov kriptosustav koji je zasnovan na teˇsko´ciraˇcunanjadiskretnog Z∗ · logaritma u grupi ( p, p). ∈ Z∗ P Definicija 1.30 Neka je p prost broj i α p primitivni korijen modulo p. Neka je = Z∗ C Z∗ × Z∗ p, = p p i K = {(p, α, a, β): β = αa mod p}. Vrijednosti p, α, β su javne, a vrijednost a je tajna. Za K ∈ K i tajni sluˇcajnibroj k ∈ {0, 1, ..., p − 1} definira se

k k eK (x, k) = (α (mod) p, xβ mod p). ∈ Z∗ Za y1, y2 p definira se a −1 dK (y1, y2) = y2(y1 ) mod p. Ovdje se moˇzere´cida se otvoreni tekst x zamaskira” mnoˇze´cis βk. Ako se zna tajni ” eksponent a, moˇzese iz αk izraˇcunati βk i ukloniti masku”. ” Da bi eksponent a stvarno bio tajan, prost broj p mora biti dovoljno velik da problem Z∗ diskretnog logaritma u p bude praktiˇcnonerjeˇsiv,pa se preporuˇcakoriˇstenjevelikih prostih brojeva od oko 1024 bita. Takoder bi broj p−1 trebao imati barem jedan veliki prosti faktor (od barem 160 bitova).

15 Primjer 1.8 Neka je u ElGamalovom kriptosustavu p = 2579, α = 2, a = 765. Tada je

β = 2765 mod 2579 = 949.

Pretpostavimo da ˇzelimoposlati poruku x = 1299. Neka je zadan tajno izabrani broj (jed- nokratni kljuˇc) k = 853. Tada se raˇcuna

853 y1 = 2 mod2579 = 435 853 y2 = 1299 · 949 mod2579 = 1299 · 2424 mod 2579 = 2396,

pa se primatelju ˇsaljeˇsifrat (435, 2396) iz kojega on raˇcunaotvoreni tekst:

x = 2396 · (435765)−1 mod 2579 = 2396 · 2424−1 mod 2579 = 2396 · 1980 mod 2579 = 1299. Z∗ Najefikasniji poznati algoritmi za problem diskretnog logaritma u grupi p zasnovani su na tzv. index calculus metodi. Za efikasnost ove metode presudna su svojstva distribucije prostih brojeva, ponajprije ˇcinjenicada ih ima beskonaˇcnomnogo.

1.5.3 Kriptosustavi zasnovani na problemu faktorizacije Jedan od matematiˇckihproblema koji se koristi u konstrukciji osobnih jednosmjernih funkcija je problem faktorizacije velikih prirodnih brojeva. Danas je praktiˇckinemogu´cerastaviti na faktore paˇzljivo odabran prirodni broj s viˇseod 250 znamenaka. Rabinov kriptosustav zasnovan je na teˇsko´ciraˇcunanjakvadratnog korijena po fiksnom sloˇzenommodulu. Njegovo je razbijanje ekvivalentno rjeˇsenjuproblema kvadratnog kori- jena pa je ekvivalentno i problemu faktorizacije. Definicija 1.31 Neka je n=pq, gdje su p i q prosti brojevi takvi da je p ≡ q ≡ 3 (mod 4). Neka je P = C = Zn, te K = {(n, p, q): n = pq}. Za K ∈ K definira se √ 2 eK (x) = x mod n, dK (y) = y mod n.

Vrijednost n je javna, a vrijednosti p i q su tajne. √ Ovdje a = b mod n znaˇcida je a2 ≡ b (mod n). Uvjet p ≡ q ≡ 3 (mod 4) se moˇze izostaviti, no uz njega je deˇsifriranjeefikasnije i jednostavnije. Vaˇznoje uoˇcitida funkcija eK nije injekcija pa se deˇsifriranjene moˇzeprovesti na jedin- stven naˇcin.Jedan naˇcindobivanja jedinstvenog rjeˇsenjaje ubacivanje odredene pravilnosti u otvoreni tekst pa ´cesamo jedan od 4 kvadratna korijena dati rezultat koji ima zadanu pravilnost.

Najpoznatiji kriptosustav s javnim kljuˇcem je RSA kriptosustav. Iako je zasnovan na teˇsko´cifaktorizacije velikih prirodnih brojeva na produkt dva prosta broja, u samom ˇsifriranjui deˇsifriranjukoristi se modularno potenciranje, dok se faktorizacija koristi u do- bivanju dodatnog podatka ( trapdoora”). Ovaj ´cese kriptosustav definirati u sljede´cem ” poglavlju.

16 2

RSA kriptosustav

2.1 Definicija

Definicija 2.1 Neka je n=pq, gdje su p i q prosti brojevi. Neka je P = C = Zn = {0, 1, 2, ..., n − 1}, te

K = {(n, p, q, d, e): n = pq, de ≡ 1 (mod φ(n))}.

Za K ∈ K definira se

e d eK = x mod n, dK = y mod n, x, y ∈ Zn. Vrijednosti n i e su javne, a vrijednosti p, q i d su tajne, tj. (n,e) je javni, a (p,q,d) je tajni kljuˇc.

Ovdje je φ(n) Eulerova funkcija, tj. broj brojeva u nizu 1, 2, ..., n koji su relativno prosti s n. Kod RSA kriptosustava je

φ(n) = φ(pq) = φ(p)φ(q) = (p − 1)(q − 1) = n − p − q + 1.

Vrijednosti n i e su javne, dok su vrijednosti p, q i d tajne. Jednosmjerna funkcija ovdje je xe mod n, a trapdoor” je poznavanje faktorizacije n = pq. ” Joˇsse treba provjeriti da su eK i dK jedna drugoj inverzne. U dokazu da je dK inverz od eK koristi se Eulerov teorem.

Propozicija 2.1 Funkcije eK i dK su jedna drugoj inverzne. Dokaz: d e d de dK (eK (x)) ≡ (eK (x)) ≡ (x ) ≡ x (mod n) Kako je de ≡ 1 (mod φ(n)), to znaˇcida postoji prirodan broj t takav da je de = t · φ(n) + 1 pa se dobiva [ ]t xde = xt·φ(n)+1 = xt·φ(n) · x = xφ(n) · x. U zavisnosti od n i x postoje dva sluˇcaja: 1. (x, n) = 1 Kako je tada prema Teoremu 1.5 (Euler) xφ(n) ≡ 1 (mod n), to je

xde ≡ 1t · x ≡ x(mod n).

17 2. (x, n) ≠ 1 Ako je (x, n) = n, tada je x = 0 pa je kongruencija trivijalno zadovoljena. Neka je (x, n) = p ili (x, n) = q. Bez smanjenja op´cenitostiuzme se da je (x, n) = p, pa je xde ≡ 0 ≡ x (mod p). Kako je (x, pq) = p, gdje su p i q prosti, to je (x, q) = 1 pa je prema Teoremu 1.5

xφ(q) ≡ 1 (mod q) ⇒ xq−1 ≡ 1 (mod q).

Sada je xde = (xq−1)(p−1)·t · x ≡ x (mod q). Konaˇcnoje xde ≡ x (mod pq), tj. xde ≡ x (mod n). 

2.2 Primjena

2.2.1 Generiranje kljuˇceva Kako bi dvije osobe komunicirale koriste´cikriptografski algoritam sa javnim kljuˇcem,potrebna su im po dva kljuˇca,jedan javni i jedan tajni. U RSA kriptosustavu ovi kljuˇcevise generiraju na sljede´cinaˇcin:

1. Sluˇcajnim odabirom odabrati dva razliˇcitaprosta broja p i q od kojih svaki ima oko 100 znamenki. Obiˇcnose odaberu tako da jedan od njih ima nekoliko znamenki viˇse od drugog. Odabir se vrˇsitako da se pomo´cugeneratora sluˇcajnih brojeva generira dovoljno velik prirodan broj k, a zatim se koriˇstenjemnekog testa za testiranje prostosti traˇziprvi prosti broj koji je ve´ciili jednak k.

2. Izraˇcunati n = pq i φ(n) = (p − 1)(q − 1).

3. Na sluˇcajan naˇcinodabrati cijeli broj e takav da je e < φ(n) i (e, φ(n)) = 1.

4. Izraˇcunati d kao inverzni element za operaciju mnoˇzenjabroju e, po modulu φ(n).

de ≡ 1 (mod φ(n)), tj. d ≡ e−1 (mod φ(n))

Izraˇcunavanje d se vrˇsipomo´cuproˇsirenogEuklidovog algoritma koji za dane a i b raˇcuna b−1 mod a.

5. Uredeni par (n, e) objavljuje se kao javni, a (p, q, d) saˇcuva u tajnosti kao vlastiti RSA kljuˇc.

U praksi su ˇcestizbor za eksponent e Fermatovi prosti brojevi 3, 17 i 65537. Njihovim od- abirom ubrzava se proces modularnog potenciranja koji se koristi kod ˇsifriranjai deˇsifriranja. Pokazano je kako je sigurnost RSA kriptosustava ugroˇzenaako se koristi mali javni ekspo- nent e, posebno za e = 3, pa se ne preporuˇcakoriˇstenjeeksponenata manjih od 65537.

18 2.2.2 Sifriranjeˇ i deˇsifriranje RSA koristi relativno jednostavan algoritam za ˇsifriranjekoji, kada se koriste dovoljno dugi kljuˇcevi,zahtijeva znaˇcajne raˇcunalneresurse. Postupak ˇsifriranjaje sljede´ci: 1. Prona´ciprimateljev javni kljuˇc(n, e) i pretvoriti poruku X u cijeli broj x < n, npr. na naˇcinda je razmak = 00,A = 01,B = 02, itd. Ako je x ≥ n, tada se x razbija u blokove brojeva xi, i = 1, ..., k gdje je k broj tih blokova. Kod pretvorbe poruke u blokove postupak pretvorbe, tj. broj znamenaka je unaprijed dogovoren i reverzibilan.

2. Kako bi se dobila ˇsifriranaporuka y, dobiveni broj x = (x1, x2, ..., xk) ˇsifriratiprema izrazu e yi = xi mod n

Dobivena poruka y = (y1, y2, ..., yk) ˇsaljese primatelju. Postupak deˇsifriranjaanalogan je postupku ˇsifriranja:

1. Primatelj iz ˇsifriraneporuke y = (y1, y2, ..., yk) koriste´cisvoj tajni kljuˇc(n, d) raˇcuna x = (x1, x2, ..., xk) prema izrazu

d xi = yi mod n

2. Dobiveni broj x pretvara se u poruku X suprotnim procesom od onoga koriˇstenogpri ˇsifriranju,ˇcimeje poruka X deˇsifrirana.

Primjer 2.1 Sifriranjeˇ i deˇsifriranje u RSA kriptosustavu sa malim parametrima p = 3 i q = 11. Pomo´cuparametara p i q dobiva se da je n = p · q = 33 i φ(n) = 20. Eksponent e mora biti relativno prost s 20, pa neka je e = 7. Tada je (n, e) = (33, 7) javni kljuˇc,a d = 3. Ako ˇsalje 7 poruka x=17, potrebno je izraˇcunati eK (x) = 17 mod 33:

177 = 17 · 172 · 174 ≡ 17 · 25 · (−2) ≡ −25 ≡ 8 (mod 33). ˇ Sifrat y = eK (x) = 8, deˇsifrira se pomo´cutajnog kljuˇca d:

3 2 x = dK (y) ≡ 8 ≡ 8 · 8 ≡ 8 · (−2) ≡ 17 (mod 33).

Dakle, x = 17.

2.2.3 Digitalni potpis Budu´cida su kod RSA kriptosustava kljuˇcevijavni, postavlja se pitanje kako primatelj moˇze sa sigurnoˇs´cupotvrditi identitet poˇsiljatelja. Taj se problem rjeˇsava na lak naˇcin. Neka je P potpis poˇsiljateljaA, koji moˇzdaukljuˇcujeOIB, omiljenu hranu, ime prve uˇciteljicei sl. Budu´cida svi znaju funkciju eB primatelja B, nije dovoljno da poˇsiljateljA poˇsaljeporuku eB(P ), nego na poˇcetkuili na kraju poruke poˇsiljateljtreba dopisati eBdA(P ). Primljeni ˇsifrat,koji se sastoji od poruke i dijela eB(dA(P )) primatelj B deˇsifrirapomo´cu dB i dobiva tekst poruke i nerazumljivi dio koji je dA(P ). Budu´cida primatelj B zna da bi poruka tre- bala biti od poˇsiljateljaA, on koristi njegov javni kljuˇc eA, deˇsifrira dA(P ) i dobije potpis

19 P . Zbog nepoznavanja dA nitko drugi, osim poˇsiljateljaA, nije mogao poruku potpisati na taj naˇcin.

Digitalni potpis kreira se na sljede´cinaˇcin:

1. PoˇsiljateljA pomo´cusamo njemu poznate funkcije dA kreira digitalni popis dA(P ) modularnim potenciranjem potpisa P :

dA dA(P ) = P mod nA

Ovaj postupak identiˇcanje postupku ˇsifriranjaporuke tajnim kljuˇcempoˇsiljateljaA. Sada poˇsiljateljna poˇcetakili kraj poruke M dodaje potpis dA(P ) i dobivenu poruku MA = MdA(P ) ˇsifrirajavnim kljuˇcem eB primatelja B:

eB MB = eB(MA) = MA mod nB

2. Primatelj B modularnim potenciranjem poruke MB deˇsifriradigitalno potpisanu poruku:

db MA = MB mod nB

Rezultat je poruka M i nerazumljivi dio dA(P ) iz kojeg se ponovnim modularnim potenciranjem dobiva digitalni potpis poˇsiljateljaA:

eA P = (dA(P )) mod nA

Na ovaj naˇcinprimatelj B je potvrdio autentiˇcnostporuke poˇsiljateljaA.

2.3 Kriptoanaliza

Budu´cida je implementacija RSA algoritma vrlo jednostavna, i napad na RSA moˇzese jednostavno provesti ako je poznat eksponent d. Jedan oˇcitnapad na RSA je faktorizacija od n = pq. Ako napadaˇcfaktorizira n, onda moˇzeprona´ci φ(n) = (p − 1)(q − 1) i tajni eksponent d iz izraza de ≡ 1 mod φ(n) pomo´cuEuklidovog algoritma. Budu´cida se u RSA algoritmu za p i q uzimaju brojevi sa 100 i viˇseznamenki, onda n = pq ima najmanje 200 znamenki, a najbrˇzialgoritmi za faktorizaciju trebaju eO((log n)1/3(log log n)2/3) operacija pa se vrijeme potrebno za razbijanje algoritma najbrˇzimraˇcunalimaraˇcunau stoti- nama godina. U nekim je sluˇcajevima n ipak lakˇsefaktorizirati, npr. kada su p i q jako blizu jedan drugome, ili ako p − 1 i q − 1 imaju samo male proste faktore, pa takve sluˇcajeve treba izbjegavati. Iako je RSA dovoljno siguran, ako napadaˇcotkrije tajni eksponent d, onda nije dovoljno samo promijeniti eksponent e, ve´cse mora promijeniti i n.

Lema 2.1 Poznavanje tajnog eksponenta d, koji odgovara javnima n i e, moˇzeomogu´citi faktorizaciju od n. Dokaz: Pretpostavi li se da je broj d takav da za sve x relativno proste s n, tj. (x, n) = 1, vrijedi xde ≡ x mod n. Tada za m = ed − 1 vrijedi xm ≡ 1 (mod n) za sve x za koje je (x, n) = 1. Kako je grupa svih reduciranih ostataka modulo p cikliˇcka, xm ≡ 1 (mod n)

20 je ekvivalentno tome da je m zajedniˇckiviˇsekratnikod p − 1 i q − 1. Stoga je poznavanje broja m slabije od poznavanja broja φ(n) = (p − 1)(q − 1), ali se ipak pomo´cu m moˇze s velikom vjerojatnoˇs´cufaktorizirati n. Opisat ´cemofaktorizaciju pomo´cuvjerojatnosnog algoritma iz klase Las Vegas algoritama koji ne daju uvijek odgovor, ali kada ga daju, onda je sigurno toˇcan.U sluˇcaju da algoritam ne ponudi rjeˇsenje,moˇzemu se dati druga nezavisna prilika za nalaˇzenjeodgovora pa se tako vjerojatnost uspjeha algoritma pove´cava s koliˇcinom raspoloˇzivog vremena. Neka je poznatn = pq i neka je m takav da je xm ≡ 1 (mod n), za sve x takve da (x, n) = 1. Uvrˇstavanjem x = −1 vidi se da je m paran. Provjerava se ima li m/2 isto svojstvo kao m. Ako postoji x za koji vrijedi x ̸≡ 1 (mod n), tada u Zn postoji barem 50% takvih brojeva. Zaista, svakom broju y koji zadovoljava kongruenciju ym/2 ≡ 1 (mod n) odgovara broj xy koji tu kongruenciju ne zadovoljava. Ako se sada testira nekoliko desetaka x-ova i svi zadovoljavaju kongruenciju xm/2 ≡ 1 (mod n), tada se s velikom vjerojatnoˇs´cumoˇzere´ci da je kongruencija xm/2 ≡ 1 (mod n) ispunjena za sve x za koje je (x, n) = 1, pa se m moˇze zamijeniti sa m/2. Dijeljenje sa dva nastavlja se sve dok je to mogu´ce,a na kraju postoje dvije mogu´cnosti:

1. m/2 je djelitelj toˇcnojednog od brojeva p − 1 i q − 1. Ako je to p − 1, tada je xm/2 ≡ 1 (mod p) za sve x, ali je xm/2 ≡ −1 (mod q) u toˇcno50% sluˇcajeva.

2. m/2 nije djelitelj ni od p − 1 ni od q − 1. Tada je xm/2 ≡ ±1 (mod p) ili xm/2 ≡ ±1 (mod q) i svaka od 4 mogu´cnostinastupa u toˇcno25% sluˇcajeva.

Dakle, za proizvoljan x vjerojatnost je 50% da je xm/2 − 1 djeljiv s toˇcnojednim od brojeva p i q. Uzimaju´cisluˇcajno nekoliko desetaka x-ova, moˇzese s velikom vjerojatnoˇs´cuoˇcekivati da ´cese prona´ci x sa gornjim svojstvom. Neka je npr. x takav da je xm/2 − 1 djeljiv s p, ali nije s q. Tada je (n, xm/2 − 1) = p, pa je n faktoriziran. 

Na prvi se pogled ideja da se izabere jedan dobar” n za sve, a da se korisnicima tajno ” dodijele parovi eK i dK ne ˇciniloˇsom,jer bi se izbjeglo generiranje razliˇcitihmodula n = pq. Ona, ipak, nije dobra jer bi rezultirala nesigurnim sustavom zbog gore navedenog vjero- jatnosnog algoritma. Korisnik A bi tada na osnovu svojih eA i dA mogao faktorizirati n i odrediti p i q pa bi zbog posjedovanja eB i poznavanja faktorizacije od n, a samim tim i vrijednosti φ(n), mogao otkriti i dB za svakog drugog korisnika. U sluˇcaju zajedniˇckog n i napadaˇcbi se otkrivanjem jednog dK mogao postaviti u ulogu korisnika A i otkriti sve tajne eksponente dK . Lema 2.2 Neka je n = pq produkt dva razliˇcitaprosta broja. Ako je poznat n i φ(n), tada se moˇzebrzo na´ci p i q.

Dokaz: Iz φ(n) = (p − 1)(q − 1) dobivamo

φ(n) = pq − p − q + 1 = n − p − q + 1 = n − (p + q) + 1 ⇒ n − φ(n) + 1 = p + q

Sada je osim produkta pq poznata i suma p + q pa se definira polinom

f(X) = (X − p)(X − q) = X2 − (p + q)X + pq

f(X) = X2 − (n − φ(n) + 1)X + n

21 Sada se p i q raˇcunapomo´cuformule za rjeˇsavanje kvadratne jednadˇzbe. √ (n − φ(n) + 1) ± (n − φ(n) + 1)2 − 4n p, q = 2 

Primjer 2.2 Neka je n = 25397 i φ(n) = 25056. Potrebno je odrediti p i q tako da je n = pq. Dobiva se n − φ(n) + 1 = 25397 − 25056 + 1 = 342, pa je

f(X) = X2 − 342X + 25397 √ 342 ± 3422 − 4 · 25397 342 ± 124 p, q = = ⇒ p = 223, q = 109. 2 2 Sljede´cana prvi pogled dobra ideja je da jedan od eksponenata e i d bude mal jer bi to moglo smanjiti vrijeme potrebno za deˇsifriranje. Teorem M. Wienera iz 1990. godine pokazuje da u sluˇcaju izbora tajnog eksponenta d relativno malog u odnosu na n, postoji efikasan algoritam za razbijanje ˇsifre.

1 0,25 Teorem 2.1 Neka je n=pq i p < q < 2p,te neka je d < 3 n . Tada postoji polinomijalni algoritam koji iz poznavanja n i e izraˇcunavad.

Dokaz: Iz ed ≡ 1 (mod φ(n)) slijedi da postoji prirodan broj k takav da je ed − kφ(n) = 1. Odavde je

e k 1 − = . φ(n) d dφ(n) Dakle, k je dobra aproksimacija od e . Budu´cida φ(n) nije poznat, aproksimirat ´cese s d φ(n) √ √ n. Iz φ(n) = n − p − q + 1 i p + q − 1 < 3 n slijedi |n − φ(n)| < 3 n, pa se zamjenom φ(n) s n dobiva: √

e k ed − kφ(n) − kn + kφ(n) 1 − k(n − φ(n)) 3k n 3k − = = ≤ = √ . n d nd nd nd d n

− 1 0,25 Sada je kφ(n) = ed 1 < ed, pa iz e < φ(n) slijedi da je k < d < 3 n , pa se dobiva:

e k 1 1 − ≤ < . (2.1) n d dn0,25 2d2

Prema Legendreovom teoremu iz teorije diofantskih aproksimacija slijedi da relacija 2.1 k e povlaˇcida je d neka konvergenta razvoja u veriˇznirazlomak od n . Razvoj u veriˇznirazlomak izgleda ovako: b 1 = a0 + 1 = [a0; a1, a2, ..., an], c a1 + 1 a2+ . .. a + 1 n−1 an

22 gdje su a0, a1, ..., an kvocijenti iz Euklidovog algoritma primijenjenog na b i c. Razlomci oblika pk = [a0, a1, ..., ak] za k ≤ n nazivaju se konvergente veriˇznograzvoja. Vrijede rekurzije qk

p0 = a0, p1 = a0a1 + 1, pk = akpk−1 + pk−2,

q0 = 1, q1 = a1, qk = akqk−1 + qk−2.

Odavde slijedi da je qk ≥ Fk, gdje je Fkk−ti Fibonaccijev broj, ˇstoznaˇcida nazivnici kon- vergenti rastu eksponencijalno. U ovom sluˇcaju to povlaˇcida ima O(log n) konvergenti od e k n n . Jedna od njih je d . Dakle, izraˇcunaju se sve konvergente od e i testira koja od njih zadovoljava uvjet (xe)d ≡ x (mod n) za sluˇcajno odabran broj x. To daje polinomijalni algoritam za otkrivanje tajnog kljuˇca d. 

a Wiener je predloˇziosljede´cumetodu za testiranje konvergenti. Neka je b konvergenta od n e . Ako je to toˇcno,tada φ(n) se moˇzeizraˇcunatiiz be − 1 φ(n) = (p − 1)(q − 1) = . a p+q q−p Sada se iz sljede´cihidentiteta raˇcuna 2 i 2 : p + q pq − (p − 1)(q − 1) + 1 an − be + 1 + a = = 2 2 2a ( ) ( ) ( ) q − p 2 p + q 2 p + q 2 = − pq = − n. 2 2 2 p+q q−p a n Ako se dobije da su 2 i 2 prirodni brojevi, tada je b odgovaraju´cakonvergenta od e . Sada je jednostavno dobiti faktorizaciju modula n = pq. Primjer 2.3 Neka je u RSA kriptosustavu zadan modul n = 14462477761 i eksponent e = 1 0,25 ≈ 13456168555. Uz pretpostavku da je d < 3 n 115, 5 treba faktorizirati n. e Razvoj u veriˇznirazlomak od n je e = [0; 1, 13, 2, 1, 2, 4, 1, 1, 19, 2, 3, 1, 1, 5041, 1, 7], n a konvergente su 13 27 40 107 468 575 0, 1, , , , , , , ... 14 29 43 115 503 618 a 107 Ispituju´cikonvergente redom, dobiva se da je za b = 115 . p + q 107 · 14462477761 − 115 · 13456168555 + 1 + 107 = = 120265 2 2 · 107 ( ) q − p 2 = 1202652 − 14462477761 = 10922 2 Sada je p + q = 240530 q − p = 2184 pa se dobiva da je p = 119173 i q = 121357. Tako je faktoriziram n = 119173 · 121357 i dobijen tajni eksponent kao nazivnik pete konvergente d = 115.

23 Postoje i napadi na RSA uz pretpostavku da je eksponent e mal jer bi se tako minimiziralo vrijeme potrebno za ˇsifriranjepa je i takve sluˇcajeve potrebno izbjegavati. Pretpostavimo da imamo tri korisnika s razliˇcitimvrijednostima javnog modula n1, n2, n3, te da svi koriste isti javni eksponent e = 3. Nadalje, pretpostavimo da im se treba poslati identiˇcnaporuka m. Tada njihov protivnik moˇzedoznati sljede´ceˇsifrate:

3 3 3 c1 ≡ m (mod n1), c2 ≡ m (mod n2), c3 ≡ m (mod n3).

Nakon toga on moˇzepomo´cuKineskog teorema o ostacima (Teorem 1.4) na´cirjeˇsenjesustava linearnih kongruencija

x ≡ c1 (mod n1), x ≡ c2 (mod n2), x ≡ c3 (mod n3).

3 3 Tako ´cedobiti broj x sa svojstvom x ≡ m (mod n1n2n3). Kako je m < n1n2n3, zapravo vrijedi jednakost x = m3 pa protivnik moˇzeizraˇcunatioriginalnu poruku m tako da nade tre´cikorijen iz x.

Primjer 2.4 Neka je n1 = 329, n2 = 341, n3 = 377. Pretpostavimo da je protivnik saznao ˇsifrate c1 = 43, c2 = 30, c3 = 372, te ˇzelisaznati zajedniˇckiotvoreni tekst m. Rjeˇsavanjem sustava x ≡ 43 (mod 329), x ≡ 30 (mod 341), x ≡ 372 (mod 377), koriste´ciKineski teorem o ostacima dobiva

x ≡ 341 · 377 · 172 + 329· 377 · 232 + 329· 341 · 317 ≡ 86451373 ≡ 1860867 (mod329· 341 · 377). √ To znaˇcida je x = 1860867 i m = 3 x = 123.

Nakon tri desetlje´caintenzivnog prouˇcavanja joˇsuvijek nije pronadena metoda kojom bi se u potpunosti razbio RSA kriptosustav. Svi poznati napadi na RSA svode se na to da se otkrije pojedina slabost i upozori na ˇstotreba paziti i ˇstotreba izbjegavati kod izbora parametara i implementacije RSA. Stoga se zasad, uz ispravnu primjenu, RSA moˇzesmatrati sigurnim kriptosustavom.

24 3

Implementacija RSA kriptosustava

3.1 Algoritmi iz teorije brojeva

3.1.1 Sloˇzenostalgoritama Definicija 3.1 Algoritam je metoda za rjeˇsavanjeneke klase problema koja za ulazne po- datke odredenog tipa daje odgovor u konaˇcnomvremenu.

Algoritmi se mogu usporedivati s obzirom na broj osnovnih koraka” potrebnih za njihovo ” izvrˇsavanje. Pod osnovnim korakom podrazumijeva se jedna bitna operacija”, tj. logiˇcka ” operacija disjunkcije, konjukcije ili negacije na bitovima - nulama i jedinicama. Nenegativni cijeli broj N zapisuje se u bazi b kao (dk−1dk−2...d1d0)b, gdje su d = 0, ..., b − 1 znamenke, ˇsto k−1 k−2 znaˇcida je N = dk−1b + dk−2b + ... + d1b + d0. Ako je prva znamenka dk−1 ≠ 0, broj N zove se k − znamenkasti broj u bazi b. Veliˇcinaulaznih podataka mjerit ´cese brojem bitova ⌊ ⌋ potrebnim za njihov prikaz pa je veliˇcinaprirodnog broja N u bazi 2 jednaka log2 N + 1, gdje je ⌊x⌋ najve´cicijeli broj manji ili jednak x. Kod ocjene broja operacija, razlikuju se ocjene za

• broj operacija u najloˇsijemsluˇcaju, ˇstose naziva sloˇzenostalgoritma,

• prosjeˇcanbroj operacija, ˇstose naziva prosjeˇcnasloˇzenostalgoritma.

Definicija 3.2 Polinomijalan algoritam je algoritam ˇcijije broj operacija u najloˇsijemsluˇcaju funkcija oblika O(nk), gdje su n duljina ulaznog podatka u bitovima, a k konstanta. Algoritmi koji nisu polinomijalni, nazivaju se eksponencijalnim.

Za polinomijalne algoritme kaˇzese da su efikasni”, dok se za eksponencijalne kaˇzeda su ” neefikasni”. No, u kriptografiji je i stupanj polinoma k jako bitan jer ´cenpr. algoritam ” sloˇzenosti O(nln ln n), koji je asimptotski sporiji od algoritma sloˇzenosti O(n100), u praksi biti brˇzi. Osim toga, ˇcestoje vaˇznijiprosjeˇcanbroj operacija od broja operacija u najloˇsijem sluˇcaju jer kriptosustav treba biti zasnovan na problemu koji je teˇzaku prosjeˇcnomsluˇcaju, a ne samo u izoliranim sluˇcajevima.

Definicija 3.3 Subeksponencijalni algoritam je algoritam ˇcijaje sloˇzenostfunkcija oblika O(eO(n)), gdje je n duljina ulaznog podatka.

25 Najpoznatiji algoritmi za faktorizaciju prirodnog broja N su subeksponencijalni i njihova sloˇzenostje funkcija oblika

c(ln N)v(ln ln N)1−v LN (v, c) = O(e )

pa su subeksponencijalni algoritmi koji odgovaraju vrijednostima v, 0 < v < 1 asimptot- ski sporiji od polinomijalnih, ali su puno brˇziod potpuno eksponencijalnih ˇcijaje sloˇzenost O(enk ).

3.1.2 Modularno potenciranje U RSA kriptosustavu ˇsifriranjese provodi pomo´cumodularnog potenciranja, tj. funkcije oblika xe mod n. Trivijalni algoritam kojim bi se xe raˇcunaokao x · x · ... · x pomo´cu e − 1 mnoˇzenjavrlo je neefikasan i zauzimao bi ogromnu koliˇcinu raˇcunalnememorije. Najjednostavnija i najstarija od efikasnih metoda je binarna metoda ili metoda uzastopnim s−1 kvadriranjem koja za binarni zapis broja e = 2 es−1 +...+2e1 +e0 koristi sljede´cialgoritam:

Algoritam 1 Kvadriraj i mnoˇzi y=1 za i = s − 1, ..., 1, 0 radi (znamenke ˇcitamoslijeva) y = y2 mod n (kvadriraj) ako ei = 1 onda y = y · x mod n; (mnoˇzi)

Ako se za sloˇzenostmnoˇzenjai dijeljenja brojeva manjih od m uzme da je O(ln2 m), u sluˇcaju modularnog potenciranja dobiva se sloˇzenost O(ln n ln2 m). Modul privremenog rezultata uzima se radi uˇstedememorije pri svakom potenciranju.

3.1.3 Generiranje velikih prostih brojeva U RSA algoritmu potrebno je generirati kljuˇceve p i q od kojih svaki ima 100 i viˇseznamenaka pa se zovu veliki prosti brojevi. Za generiranje velikih prostih brojeva, posluˇzit´cemose ˇcinjenicomda su prosti brojevi priliˇcnogusto rasporedeni pa je dovoljno generirati sluˇcajne brojeve odgovaraju´ceveliˇcine i testirati ih na prostost. Testovi prostosti su kriteriji koje broj mora zadovoljiti da bi bio prost. Ako ne zadovolji neki od tih kriterija, onda je sigurno sloˇzen,a ako ih zadovolji, onda je velika vjerojatnost da je prost. Prvi dokaz da prostih brojeva ima beskonaˇcnomnogo, a koji se zasniva na ˇcinjenicida svaki prirodan broj ima barem jedan prosti djelitelj, dao je Euklid oko 300. godine prije Krista. Definicija 3.4 Za x ∈ R, sa π(x) ´cemooznaˇcavatibroj prostih brojeva p takvih da je p ≤ x.

Primjer 3.1 Neka je x = 10, slijedi da je π(x) = 4 jer su 2,3,5,7 prosti brojevi koji su manji ili jednaki broju 10.

Teorem 3.1 (Teorem o prostim brojevima) x π(x) ∼ , x > 0. ln x

26 Ovu ˇcinjenicuprvi je naslutio Gauss, a dokazali su je Hadamard i de la Vall´eePoussin. Joˇsbolja aproksimacija za funkciju π(x) je logaritamsko-integralna funkcija: ∫ x 1 π(x) = dt. 2 ln t Po l’Hˆopitalovu pravilu neposredno slijedi:

π(x) lim = 1. x→∞ x/ ln(x)

Koriste´citeorem o prostim brojevima vjerojatnost da je sluˇcajno izabran prirodan broj n prost dobiva se kao 1/ ln(n). To znaˇcida ´cese u prosjeku testirati ln(n) prirodnih brojeva sluˇcajno izabranih iz okoline broja n kako bi se pronaˇsaoprost broj jednake duˇzine. Najjednostavniji pristup testiranju prostosti broja n bio bi pokuˇsaj dijeljenja n svim prirod- nim brojevima od 2 do ⌊n⌋, izuzevˇsiparne brojeve ve´ceod 2. Ako bi se pokazalo da je n djeljiv bilo kojim od tih brojeva, onda je n sloˇzen,a u suprotnom je n prost broj. Ovaj je pristup praktiˇcansamo kada je n jako mal ili ima barem jedan mali faktor.

Brzu metodu za testiranje prostosti broja sa proizvoljno malom greˇskom predstavlja Miller-Rabinov test prostosti. Ovo je probabilistiˇckialgoritam jer dovodi do rjeˇsenjasamo s odredenom vjerojatnoˇs´cu.Prije samog algoritma navedena su neka vaˇznasvojstva prostih brojeva koja su vrlo jednostavna za provjeru, a ne karakteriziraju samo proste brojeve.

Teorem 3.2 (Mali Fermatov teorem) Neka je p prost broj. Ako p - b, onda je bp−1 ≡ 1 (mod p). Za svaki cijeli broj b vrijedi bp ≡ b (mod p).

Dokaz: Oˇcitoje φ(p) = p − 1, pa tvrdnja slijedi iz Teorema 1.5. 

Obrat ovog teorema ne vrijedi, tj. p moˇzebiti sloˇzen,a da ipak za neki b vrijedi relacija bp ≡ b (mod p).

Definicija 3.5 Kaˇzese da je sloˇzenbroj n pseudoprost u bazi b, ili kra´cen je psp(b), ako je

bn ≡ b (mod n).

Primjer 3.2 Broj 91 = 7 · 13 je psp(3) jer je 390 ≡ 2730 ≡ (−1)30 ≡ 1 (mod 7) i 390 ≡ 2730 ≡ 130 ≡ 1 (mod 13), pa je 390 ≡ 1 (mod 91).

Postojanje pseudoprostih brojeva pokazuje da testiranje samo s jednom bazom nije dovoljno kako bi se zakljuˇciloda je p prost broj. Kombiniraju´ciMali Fermatov teorem sa svojstvom kongruencije x2 ≡ 1 (mod p) dobiva se jaˇcizahtjev od onoga iz definicije pseudoprostih brojeva.

Definicija 3.6 Neka je n neparan sloˇzenbroj, te neka je n − 1 = 2s · t, gdje je t neparan. Ako za cijeli broj b vrijedi

bt ≡ 1 (mod n) ili postoji r < s takav da je b2r·t ≡ −1 (mod n),

onda se kaˇzeda je n jak pseudoprost broj u bazi b, ili kra´cen je spsp(b).

27 Ako uvjet iz definicije nije ispunjen za neki b, 0 < b < n, tada je broj n sloˇzen.U tom sluˇcaju se broj b naziva svjedok sloˇzenostiod n. Sljede´citeorem pokazuje da je nemogu´ceda sloˇzenbroj bude jak pseudoprost broj u svakoj bazi. Teorem 3.3 Neka je n neparan sloˇzenbroj. Tada je n jak pseudoprost broj u bazi b za najviˇse(n-1)/4 baza b, 0 < b < n.

Algoritam 2 Miller-Rabinov algoritam Ulaz: n > 3, neparan cijeli broj ˇcijuprostost testiramo Ulaz: k parametar koji odreduje toˇcnosttesta Izlaz: sloˇzen ako je n sloˇzen,u suprotnom vjerojatno prost n − 1 = 2sd, gdje je d neparan za j = 1, ..., k radi a=sluˇcajan broj iz segmenta [2, n − 2] x = ad mod n ako x = 1 ili x = n − 1 onda j = j + 1 za r = 1, ..., s − 1 radi x = x2 mod n ako x = 1 onda vrati sloˇzen ako x = n - 1 onda r = r + 1 vrati sloˇzen vrati vjerojatno prost

Miller-Rabinov algoritam zasniva se na tvrdnji iz definicije 3.6, te je sloˇzenostalgoritma O(k log3 n). Stoˇ se ve´cibroj baza a testira, to je ve´catoˇcnosttesta. Iz teorema 3.3 vidi se da za bilo koji neparan sloˇzenbroj n, najmanje 3/4 bˆaza a predstavlja svjedoke sloˇzenosti.

3.1.4 Raˇcunanjeinverznog elementa za mnoˇzenje Za nalaˇzenjemodularnog inverza d ≡ e−1 (mod φ(n)) takvog da je de ≡ 1 (mod φ(n)), potrebno je prona´cidobru metodu za raˇcunanjenajve´cegzajedniˇckog djelitelja. Naivna mogu´cnostnalaˇzenjanajve´cegzajedniˇckog djelitelja∏ (a, b) dva∏ cijela broja a i b jest α(p) β(p) faktorizacija tih brojeva na proste faktore. Ako je a = p p , b = p p , onda je ∏ (a, b) = pmin(α(p),β(p)). p Zbog teˇsko´cefaktorizacije velikih prirodnih brojeva, potrebno je prona´cibolju metodu. Prob- leme nalaˇzenjainverza i najve´cegzajedniˇckog djelitelja povezuje sljede´citeorem. Teorem 3.4 Postoje cijeli brojevi x,y takvi da je ax+by=(a,b). Dakle, ako su a i b relativno prosti cijeli brojevi, onda postoje cijeli brojevi x i y takvi da je ax + by = 1 i pritom je x mod b = a−1mod b, dok je y mod a = b−1mod a. Jedan od najvaˇznijihalgoritama u teoriji brojeva je Euklidov algoritam za nalaˇzenjenajve´ceg zajedniˇckog djelitelja. Zasnovan je na ˇcinjenicida je (a, b) = (b, a mod b). Kako je (a, b) = (|a|, |b|), moˇzese pretpostaviti da je a > b ≥ 0. Euklidov algoritam raspisan po koracima izgleda ovako:

28 Algoritam 3 Euklidov algoritam dok b > 0 radi (a, b) = (b, a mod b) vrati a

a = q1b + r1

b = q2r1 + r1 . .

rn−3 = qn−1rn−2 + rn−1

rn−2 = qnrn−1

Kako svaki korak Euklidovog algoritma zahtijeva jedno dijeljenje brojeva ≤ N, a broj koraka je O(ln N), dobiva se da je sloˇzenostEuklidovog algoritma O(ln3 N). Ovaj se algoritam moˇzeiskoristiti i za rjeˇsavanje linearnih diofantskih jednadˇzbi,dakle za nalaˇzenjecijelih brojeva x, y takvih da je ax + by = (a, b). U sluˇcaju da je (a, b) = 1 dobiva se modularni inverz pomo´cuproˇsirenogEuklidovog algoritma.

Algoritam 4 ProˇsireniEuklidov algoritam (x, y, g, u, v, w) = (1, 0, a, 0, 1, b) dok w > 0 radi q = ⌊g/w⌋ (x, y, g, u, v, w) = (u, v, w, x − qu, y − qv, g − qw) vrati (x, y, g)

SloˇzenostproˇsirenogEuklidovog algoritma je O(log2 n).

3.2 Primjer RSA algoritma u Python programskom jeziku

3.2.1 O Pythonu Python programski jezik Python razvio je nizozemski programer Guido van Rossum dok je radio na projektima vezanim uz interpreterski jezik ABC. Nezadovoljan nefleksibilnoˇs´cutog programskog jezika odluˇcioje razviti novi. Krajem 1989. godine poˇceoje razvijati program- ski jezik Python koji je nazvao prema kultnoj seriji Monty Python’s Flying Circus”. 1991. ” puˇstenje prvi interpreter otvorenog koda za programski jezik Python, napisan u C-u. Python je interpreterski jezik, ˇstoznaˇcida se ne kompajlira, nego se prevodi u poseban Python binarni kˆodˇstoomogu´cujejednostavno prenoˇsenjeprograma sa stroja na stroj. Python podrˇzava proceduralno i objektno orijentirano programiranje. Sadrˇziugradene mod- ule iz standardne biblioteke, no mogu se praviti i vlastiti moduli. Koriˇstenjeobjekata i pozivanje procedura iz jednog modula u drugi vrlo je jednostavno. Jednostavno je i otkri- vanje pogreˇsaka u izvrˇsavanju programa. U sluˇcaju takve pogreˇske mogu´ceje odrediti toˇcno mjesto i vrstu greˇske, ˇcimeje omogu´cenolagano ispravljanje pogreˇske u programu. Zbog svojih osobina Python se koristi za web programiranje, XML procesiranje, u aplikaci-

29 jama s bazama podataka, GUI aplikacijama, obrazovanju i za mnoge druge namjene, a koriste ga Google, NASA, Yahoo!, RedHat i drugi.

3.2.2 RSA algoritam sa automatskim generiranjem kljuˇceva Slijedi primjer RSA algoritma napisan u Python programskom jeziku. Glavna funkcija main() opcije korisnika uzima pomo´cufunkcije uzmiOpcije(), te prema varijablama koriˇstenim pri odabiru opcija poziva funkcije potrebne za izvodenje odabranog dijela programa. U sluˇcaju odabira opcije za generiranje kljuˇceva poziva funkciju napraviKljuc() koja kreira javni i tajni kljuˇcpridruˇzenunesenom imenu korisnika, te ih sprema u tekstualne datoteke oblika IME javni.txt i IME tajni.txt. Odabirom opcije za enkripciju javnim kljuˇcem odabranog korisnika mogu´ceje kodirati ve´cpostoje´cudatoteku, ili izravno unijeti tekst koji ´cese automatski spremiti u datoteku s odabranim imenom. Kodiranje se vrˇsipomo´cu funkcije enkriptiraj(), a ˇsifratse ispisuje i sprema u odabranu datoteku. Opcija za dekrip- ciju pozivom funkcije dekriptiraj() deˇsifriraˇsifratiz odabrane datoteke. Slijedi izvorni kˆodprograma. from random import randint , choice from math import log from string import atoi, replace, join from time import time import sys import os

# Globalne varijable za uzimanje opcija infile = None outfile = None keyfile = None keylen = None opcija = None

# uzimanje opcija def uzmiOpcije(): global infile , outfile , keyfile , keylen o p c i j a=raw input (”\ nOdaberite opciju: \n ’g’ za generiranje kljuca \n ’e’ za enkripciju \n ’d’ za dekripciju \n ’k ’ za k r a j \n> ”) if (len(opcija) == 0): os.system(”clear”) print ”Greska: Unesite oznaku opcije.” main ( ) if (opcija == ”e”): keyfile = raw input (”\ nIme vlasnika datoteke s javnim kljucem: ”) + ” j a v n i . txt ” if (os.path. isfile(keyfile)==False):#Ako datoteka ne postoji os.system(”clear”) print”Greska: Datoteka”,keyfile ,”s javnim kljucem ne postoji.” main ( ) e l s e :

30 i n f i l e = raw input (”\ nIme datoteke koju zelite kodirati: ”) if (infile==’’): os.system(”clear”) print ”Greska: Morate unijeti ime datoteke” main ( ) elif (opcija == ”d”): keyfile = raw input (”\ nIme vlasnika datoteke s tajnim kljucem: ”) + ” t a j n i . txt ” if (os.path. isfile(keyfile)==False):#Ako datoteka ne postoji os.system(”clear”) print”Greska: Datoteka”,keyfile ,”s tajnim kljucem ne postoji.” main ( ) e l s e : outfile = raw input (”\ nIme datoteke koju zelite dekodirati: ”) if (outfile==’’): os.system(”clear”) print ”Greska: Morate unijeti ime datoteke” main ( ) elif (opcija == ”g”): keylen = raw input (”\ nDuljina kljuca (bita): ”) if (keylen==’’): os.system(”clear”) print”Greska: Unesite duljinu kljuca.” main ( ) elif (opcija == ”k”): sys . e x i t ( ) e l s e : os.system(”clear”) print ”Greska: Pogresan unos” main ( )

# Funkcija svjedok koristi Miller −Rabinov test prostosti. # Vraca true ako je svjedok za slozenost tj. ne−prostost broja n. # Ako je vratio true, n je garantirano slozen broj. U suprotnom, # ako vrati false , postoji vjerojatnost da je n pseudoprost. def svjedok(a, n): # odmah vraca slozen ako je N paran i f not n & 1 : return True # r j e s e n j e n−1= (2ˆt)u, gdje je (t >= 1) i u je neparan num = n − 1 t = int(log(num,2)) while ( t >= 1 ) : i f (num % (2∗∗ t ) == 0 ) : break t −= 1 u = num / (2∗∗ t )

31 t e s t = {} test[0] = pow(a, u, n) # kvadriranje for i in range(1, t+1): test[i] = pow(test[i −1] , 2 , n) if (test[i]==1) and (test[i −1]!=1) and (test[i −1]!=n−1): return True if (test[t]!=1): return True return False

# Miller −Rabin−ov test prostosti: # Funkcija testira svjedoke slozenosti u rasponu [1, n −1]. # Test se radi s puta da bi se smanjila mogucnost pogreske. # Vjerojatnost pogreske je najvise 2ˆ(− s )

def jeProst(n, s): if n in [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, \ 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]: return True for i in range(s): a = randint(1, n−1) if svjedok(a, n): return False return True

# vraca N bitni prost broj. Buduci da koristimo vrijednost 20 za s # u Miller −Rabinovom testu , vjerojatnost pogreske je oko .000095% def velikiProst(N): p = randint(2∗∗(N−1) ,2∗∗N) while 1 : # provjera prostosti Miller −Rabinovim testom sa sigurnoscu # 99.9999046% da je p prost if jeProst(p, 20): return p p += 1

# Racunamo multiplikativni inverz od a i b. Ova funkcija je u osnovi # prosireni Euklidov algoritam. def inverz(a, b): e = a ; phiN = b v1 = [ 1 , 0 ] v2 = [ 0 , 1 ]

32 while (a != 0) and (b != 0): i f ( a > b ) : m = a / b a %= b for i in range(2): v1[i] = v1[i] − m∗v2 [ i ] e l s e : m = b / a b %= a for i in range(2): v2[i] = v2[i] − m∗v1 [ i ] i f ( a == 1 ) : i f ( v1 [ 0 ] < 0): return (v1[0]%phiN) else: return v1[0] e l s e : i f ( v2 [ 0 ] < 0): return (v2[0]%phiN) else: return v2[0]

# Funkcija za kreiranje datoteke def napraviDatoteku(datoteka ,sadrzaj ): try : # generira datoteku fp = open(datoteka , ”w”) fp.write(str(sadrzaj)) fp . c l o s e ( ) except : print ”Greska: Ne mogu kreirati datoteku.”

# Funkcija za generiranje para javni/tajni kljuc. Za N uzimamo # produkt dva prosta broja ciju duljinu odredjuje korisnik. Za e, # koristimo 17, umjerenu vrijednost za dovoljno veliku sigurnost i # lako racunanje. Za d koristimo prosireni Euklidov algoritam za # nalazenje inverza e modulo N def napraviKljuc(keylen): # uzima string koji dodaje na pocetak imena datoteka sa kljucevima vlastitoIme = raw input (”\ nIme korisnika: ”) javniKljuc = vlastitoIme + ” j a v n i . txt ” tajniKljuc = vlastitoIme + ” t a j n i . txt ” # vrijednost eksponenta e = 17 print ”Molim pricekajte ...” # generira javni kljuc:(e, N)gdje je N produkt dva velika prosta broja fp = open(javniKljuc , ”w”) p = velikiProst(keylen/2)

33 q = velikiProst(keylen/2) fp.write(str(e)) fp . write (”\n”) fp.write(str(p∗q ) ) fp . write (”\n”) fp . c l o s e ( ) # generira tajni kljuc: (e, N) gdje je d multiplikativni inverz od # e modulo N fp = open(tajniKljuc , ”w”) phiN = (p − 1)∗( q − 1) d = inverz(e, phiN) fp.write(str(d)) fp . write (”\n”) fp.write(str(p∗q ) ) fp . write (”\n”) fp . c l o s e ( ) #ispis kljuceva os.system(”clear”) print ”Javni kljuc spremljen u datoteku ”, vlastitoIme ,” j a v n i . txt : \ n e = ” , e ,”\ n n = ” ,p∗q ,”\ n” print ”Tajni kljuc spremljen u datoteku ”, vlastitoIme ,” t a j n i . txt : \ n d = ” ,d ,”\ n n = ” ,p∗q ,”\ n”

# Funkcija za pretvaranje stringa u dugacki cijeli broj. Koristimo 8 # bita po znaku pa long integer ne zauzima vise mjesta od stringa koji # predstavlja ASCII text def string2long(s): m = 0 x = len ( s ) − 1 # petlja unatrag kroz string , za svaki znak i njegovu ASCII vrijednost # pomnozenu sa njegovom pozicijom u stringu vraca return vrijednost for char in s: m += (256∗∗ x )∗ ord ( char ) x −= 1 return m

# Funkcija za pretvaranje dugackog broja u string. def long2string(m): try : m = a t o l (m) except : pass # privremeni spremnik za znakove poruke l e t t e r s = [ ] # string koji ce sadrzavati return vrijednost cleartext = ””

34 # tretira long integer kao s bazom−256 i kroz petlju pretvara svaku # ”znamenku” s bazom 265 u znak i = int(log(m, 256)) while ( i >= 0 ) : c = m / (256∗∗ i ) letters .append(chr(c)) m −= c ∗(256∗∗ i ) i −=1 # pretvara listu znakova u jedan string for l in letters: cleartext += l return cleartext

# Funkcija za enkripciju znakovnog stringa u numericki sifrat. # POZNATA GRESKA: kada je poruka preduga, tj. duza od vrijednosti N, ova # funkcija ne moze sifrirati poruku. #MOGUC ISPRAVAK: u ovom slucaju , razbijanje poruke u blokove fiksne # velicine i sifriranje svakog bloka posebno def enkriptiraj(m): # spremnik za ime datoteke kljuca za enkripciju global keyfile # konvertira znakovni string u long integer message = string2long(m) # pokusava uzeti podatke kljuca za sifriranje iz datoteke fp = open(keyfile , ”r”) e = int(fp.readline()) N = int(fp.readline()) fp . c l o s e ( ) # odustaje ako je poruka preduga i f ( message > N): os.system(”clear”) p r i n t ”\ nGreska: Poruka je preduga. \ n” main ( ) # sifrira poruku modularnim potenciranjem koristeci vrijednosti # iz enkripcijskog kljuca message = pow(message, e, N) return message

# desifirira numericki sifrat i pretvara ga u tekstualnu poruku def dekriptiraj(m): # spremnik za ime datoteke kljuca za desifriranje global keyfile # pokusava uzeti podatke kljuca za desifriranje iz datoteke fp = open(keyfile , ”r”) d = int(fp.readline()) N = int(fp.readline()) fp . c l o s e ( )

35 # dekriptira poruku koristeci modularno potenciranje message = pow(int(m), d, N) return long2string(message)

# Glavna funkcija: uzima odabranu opciju korisnika i izvodi RSA # funkcije ovisno o opcijama def main ( ) : global infile , outfile , keyfile , keylen # uzima opcije komandne linije uzmiOpcije() i f i n f i l e : try : m= open(infile , ”r”) message = m.readlines() m. c l o s e ( ) message = join(message) except : message=raw input (”\ nDatoteka ne postoji. \ nUnesite otvoreni tekst za spremanje u datoteku: ”) print ”Datoteka ”, infile , ” je kreirana.” napraviDatoteku(infile ,message) kodirano = enkriptiraj(message) print ”Sifrat: \ n”,kodirano # uzima ime datoteke u koju ce se spremiti kriptirani tekst kodiranadatoteka = raw input (”\ nIme datoteke za spremanje kriptiranog teksta: ”) # poziv funkcije koja generira datoteku napraviDatoteku(kodiranadatoteka ,kodirano) infile = None #reset varijable os.system(”clear”) main ( ) elif outfile: try : c = open(outfile , ”r”) ciphertext = c.readlines() c . c l o s e ( ) ciphertext = join(ciphertext) os.system(”clear”) print ”Desifrirani tekst: \ n”, dekriptiraj(ciphertext) except : print ”Greska: Ne mogu citati datoteku.” outfile = None #reset varijable main ( ) elif keylen: try : napraviKljuc(int(keylen)) except ValueError:# Izuzimanje unosa koji nije broj

36 os.system(”clear”) print ”Greska: Unos mora biti broj” keylen = None #reset varijable main ( ) i f name == ” m ai n ”: os.system(”clear”) main ( )

37 Literatura

[1] A. Dujella, M.Maretic´, Kriptografija, Element, Zagreb, 2007.

[2] A. Menezes, P. van Oorschot, S. Vanstone, Handbook of Applied , CRC Press, Boca Raton, 1996.

[3] N. Koblitz, A Course in Number Theory and Cryptography, Springer-Verlag, New York, 1994.

[4] B. Ibrahimpaˇsic´, RSA kriptosustav, Osjeˇckimatematiˇckilist vol. 5 br. 2, Sveuˇciliˇste J.J. Strossmayera u Osijeku, Odjel za matematiku, 2005.

[5] A. Dujella, Uvod u teoriju brojeva (skripta), PMF-Matematiˇckiodjel, Sveuˇciliˇsteu Zagrebu, http://web.math.hr/∼duje/utb/utblink.pdf

[6] http://os2.zemris.fer.hr/ostalo/2002 ahel/

[7] http://web.zpr.fer.hr/ergonomija/2005/galinovic/PovijestKriptografije.pdf

[8] http://fly.srk.fer.hr/∼zox/diplomski/DodD Kriptografija.html

[9] http://rsa.googlecode.com/svn-history/r55/rsa/trunk/docs/rsa.pdf

[10] http://brandon.sternefamily.net/files/pyrsa.txt

38 Saˇzetak

Kriptografija, ˇcijije zadatak omogu´citisigurnu komunikaciju preko nesigurnog komunikaci- jskog kanala, te kriptoanaliza, ˇcijizadatak je razbijanje ˇsifri,objedinjeni su u znanosti naz- vanoj kriptologija. Kriptografski algoritam zajedno sa kljuˇcemi protokolima, koji omogu´cuju njegov rad, ˇcinikriptosustav. Prema tipu operacija koriˇstenihpri ˇsifriranjukriptosustavi se dijele na supstitucijske i transpozicijske ˇsifre,ˇcijipoˇcetciseˇzujoˇsu doba Julija Cezara, a sve do 19. stolje´cakriptografija je bila znanost koju su razumjeli samo vladini sluˇzbenici i vojska, koji su poruke kriptirali raznim mehaniˇckimnapravama za kriptiranje. Prema naˇcinu obrade otvorenog teksta kriptosustavi se dijele na blokovne i protoˇcneˇsifre,a prema tajnosti kljuˇceva na simetriˇcnei asimetriˇcnekriptosustave, ˇcijije razvoj zapoˇceou dru- goj polovici 20. stolje´ca.RSA je asimetriˇcnikriptosustav zasnovan na teˇsko´cifaktorizacije velikih prirodnih brojeva na produkt dvaju prostih brojeva koji za dovoljno duge kljuˇceve za- htijeva znaˇcajne raˇcunalneresurse, ˇstoomogu´cujejavno objavljivanje kljuˇceva za ˇsifriranje. Sifriranjeˇ se provodi modularnim potenciranjem, kljuˇcevise generiraju sluˇcajnim odabirom i Miller-Rabinovim algoritmom testiraju na prostost, a inverzni element za mnoˇzenjeraˇcuna se proˇsirenimEuklidovim algoritmom. Razvojem tehnologije, a posebno interneta, narasla je i potreba za sigurnosti prijenosa podataka pa se u novije vrijeme razvijaju razni hibridni kriptosustavi. U njima se poruke ˇsifriraju simetriˇcnimkriptosustvima, a RSA ima vaˇznu ulogu kao siguran kriptosustav za razmjenu kljuˇceva.

39 Summary

ASYMMETRIC CRYPTOGRAPHIC RSA ALGORITHM

Cryptography, whose task is to enable secure communications via an insecure communi- cation channel, and , whose task is code-breaking, are combined in a science called cryptology. A cryptographic algorithm together with the key and protocols that allow its work make a . According to the type of operations used in coding, cryp- tosystems are divided into the substitution and transposition ciphers, whose origins date back to the time of Julius Caesar, and until the 19th century, cryptography was the sci- ence understood only by government officials and the military, who encoded messages with various mechanical encryption devices. According to the way of processing an open text, are divided into block and stream ciphers, and according to the key secrecy into symmetric and asymmetric cryptosystems, whose development began in the second half of the 20th century. RSA is an asymmetric cryptosystem based on the difficulty of fac- torization of large integers into the product of two prime numbers, which for a sufficiently long keys requires considerable computational resources, which allows encryption keys to be published. Encryption is done with modular exponentiation, keys are generated randomly and tested for primality with the Miller-Rabin algorithm while the multiplicative inverse is calculated with the Euclid’s extended algorithm. With the development of technology, and especially the Internet, the need for security of data transmission has grown, and various hybrid cryptosystems have been developed in the most recent time. In these cryptosystems messages are encrypted with symmetric cryptosystems, while the RSA has a big role as a secure cryptosystem used to exchange keys.

40 Zivotopisˇ

Roden sam u Osijeku 24. lipnja 1981. godine, s prebivaliˇstemu Valpovu. Osnovnu ˇskolu Matije Petra Katanˇci´cai osnovnu glazbenu ˇskolu zavrˇsiosam u Valpovu 1995. godine. Potom sam zavrˇsiosrednju Glazbenu ˇskolu Franje Kuhaˇcau Osijeku, te Op´cugimnaziju u Valpovu 1999. godine. Budu´cida sam zbog odliˇcnoguspjeha osloboden mature, 2002. godine izravno se upisujem na smjer matematika-informatika Odjela za matematiku SveuˇciliˇstaJ. J. Stossmayera u Osijeku. Od rujna 2006. godine zaposlen sam u Osnovnoj ˇskoli Matije Petra Katanˇci´cau Valpovu.

41