Nikolina Brdari c - Odjel Za Matematikumdjumic/uploads/diplomski/BRD04.pdf · Nikolina Brdari c...
Transcript of Nikolina Brdari c - Odjel Za Matematikumdjumic/uploads/diplomski/BRD04.pdf · Nikolina Brdari c...
Sveuciliste J. J. Strossmayera u OsijekuOdjel za matematiku
Sveucilisni preddiplomski studij matematike
Nikolina Brdaric
Algoritmi kriptografije javnog kljuca
Zavrsni rad
Osijek, 2013.
Sveuciliste J. J. Strossmayera u OsijekuOdjel za matematiku
Sveucilisni preddiplomski studij matematike
Nikolina Brdaric
Algoritmi kriptografije javnog kljuca
Zavrsni rad
Mentor:
doc.dr.sc. Ivan Matic
Osijek, 2013.
Sazetak
Kriptografija je znanost koja se bavi proucavanjem metoda koje omogucuju sigurnu komuni-
kaciju izmedu dvije osobe ili grupe osoba. Svako komuniciranje pomocu kriptografije moze
se razdijeliti na tri kljucna dijela, generiranje kljuceva, sifriranje i desifriranje. Sifriranje je
proces kojim poruku, tj. otvoreni tekst transformiramo u naizgled besmislen niz znakova,
sifrat. Desifriranje je proces inverzan sifriranju i njime sifrat vracamo u prvobitno stanje.
Proces sifriranja i desifriranja provodimo koristeci unaprijed odabrane funkcije sifriranja i
desifriranja koje su jedinstveno odredene generiranim kljucevima. Sustave svih mogucih
otvorenih tekstova, sifrata i kljuceva nazivamo kriptosustavi. S obzirom na tajnost kljuceva,
kriptosustave dijelimo na sustave s tajnim i sustave s javnim kljucem. U kriptosustavima s
javnim kljucem par kljuceva sastoji se od javnog i prvatnog kljuca. Javni odreduje funkciju
sifriranja, a privatni funkciju desifriranja poruke. Neki kriptosustavi javnog kljuca su RSA,
Rabinov i McElieceov kriptosustav. Sigurnost prva dva temelji se na problemu faktorizacije
velikih prirodnih brojeva, a treceg na linearnim kodovima za ispravljanje gresaka.
Kljucne rijeci: kriptografija, kriptografija javnog kljuca, RSA kriptosustav, Rabinov krip-
tosustav, McElieceov kriptosustav, problem faktorizacije, linearni kodovi za ispravljanje
gresaka
Abstract
Cryptography is the study that deals with the methods of providing secure communication
between two entities or a group of entities. Any attempt to communicate in this way can
be devided in three major parts, key generation, encryption and decryption. Encryption is
a proces by which we transform the plaintext message into a seemingly meaningless string,
chipertext. Decryption is the inverse process of encryption and it resets chipertext back to
plaintext message. Encryption and decryption are conducted using pre-selected encryption
and decryption functions which are uniquely determined by pre-generated keys. Sets of all
possible plaintext messages, ciphertexts and keys are called cryptosystems. Taking into con-
sideration the secrecy of the key, cryptosystems can be divided into two types: secret-key
and public-key cryptosystems. In public-key cryptosystems, the key pair consists of a public
and a private key. Public key determinates the encryption and private key the decryption
function. RSA, Rabin and McEliece cryptosystems are only some of public-key criptosys-
tems. The security of the first two is based on the integer factorization problem, while the
security of the third one is based on the linear error-correcting codes.
Key words: cryptography, public-key cryptosystems, RSA cryptosystem, Rabin cryptosys-
tem, McEliece cryptosystem, integer factorization problem, linear error-correcting codes
1
Sadrzaj
1 Uvod 3
2 Kriptografija 4
2.1 Kriptografija javnog kljuca . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Sigurnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 RSA kriptosustav 11
3.1 Neki potrebni problemi i algoritmi . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1 Problem faktorizacije . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.2 RSA problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.3 Prosireni Euklidov algoritam . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.4 Algoritam ”kvadriraj i mnozi” . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Sigurnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4 Implementacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 Rabinov kriptosustav 21
4.1 Problem odredivanja kvadratnog korijena u Zn . . . . . . . . . . . . . . . . . 21
4.2 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3 Sigurnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5 McElieceov kriptosustav 26
5.1 Linearni kodovi za ispravljanje gresaka . . . . . . . . . . . . . . . . . . . . . 26
5.2 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3 Sigurnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2
1 Uvod
Od pocetaka meduljudske komunikacije zahtjeva se da ona bude sto sigurnija. Naglim razvo-
jem tehnologije u 20. stoljecu dolazi i do polaganja cvrstih temelja za razvoj znanosti koja
se bavi pitanjem sigurnosti komunikacije, kriptografije. Naziv kriptografija javnog kljuca ili
asimetricna kriptografija odnosi se na kriptografske algoritme koji koriste dva razlicita, ma-
tematicki povezana, kljuca. Prvi kljuc nazivamo tajnim ili privatnim, dok drugi nazivamo
javnim. Algoritmi javnog kljuca osnova su za sigurnost raznih kriptosustava, aplikacija i
protokola te se, izmedu ostaloga, upotrebljavaju za razmjenu kljuceva u kriptosustavima
kao i za digitalne potpise. Sigurnost algoritama javnog kljuca zasniva se na matematickim
problemima koji se danas smatraju nerjesivima u praksi, kao sto su problem faktorizacije ili
problem odredivanja kvadratnog korijena.
U prvom poglavlju obradit cemo osnove klasicne kriptografije i kriptografije javnog kljuca
te cemo reci nesto o sigurnosti kriptosustava. Zatim cemo u drugom poglavlju opisati RSA
enkripcijsku shemu, njenu sigurnost i neke probleme pri njenoj implementaciji, takoder cemo
se dotaknuti problema faktorizacije velikih prirodnih brojeva i RSA problema. Rabinov krip-
tosustav i njegovu sigurnost obradit cemo u trecem poglavlju, dok ce cetvrto poglavlje biti
posveceno McEliecevom kriptosustavu.
3
2 Kriptografija
Definicija 2.1. Kriptografija (grc. kryptos - skrivati, grafo - pisati) je znanstvena disciplina
koja se bavi pronalazenjem i analiziranjem metoda pomocu kojih je poruku moguce poslati u
obliku u kojem je nece procitati nitko osim onoga kome je namijenjena.
Iz Definicije 2.1 izvedena su cetiri osnovna cilja kriptografije:
• Povjerljivost : sadrzaj poruke nije dostupan nikome osim onome kome je namijenjen
• Netaknutost : sadrzaj primljene poruke u potpunosti odgovara sadrzaju poslane poruke,
tj. sadrzaj poruke je nepromijenjen
• Vjerodostojnost : primatelji i posiljatelji poruka medusobno se mogu identificirati
• Nepobitnost : posiljatelj poruke nije u mogucnosti zanijekati slanje same poruke.
Sudionike u komunikaciji, koji salju i primaju poruke te njima manipuliraju, nazivamo osobe.
Opcenito, osoba ne mora biti samo fizicka osoba, vec osobom smatramo i organizaciju,
racunalo i slicno. Razlikujemo tri osnovne vrste osoba:
• Posiljatelj je osoba koja legitimno salje poruku (u literaturi se cesto naziva Alice).
• Primatelj je osoba kojoj je namijenjena poslana poruka (cesto ju nazivamo Bob).
• Protivnik je osoba koja nije niti posiljatelj niti primatelj poruke i koja pokusava
sprijeciti ostvarivanje kriptografskih ciljeva izmedu posiljatelja i primatelja. Protiv-
nik se cesto pokusava prikazati kao posiljatelj ili primatelj (u literaturi je za njega
rezervirano ima Eva ili Oscar).
Osobe komuniciraju, tj. prenose informacije sredstvima koje nazivamo komunikacijski kanali.
Kanale dijelimo na:
• Nesigurne komunikacijske kanale s kojih osobe kojima poslana poruka nije namijenjena
mogu tu poruku brisati ili preslagivati te cak u nju umetati ili brisati informacije.
• Sigurne komunikacijske kanale s kojih protivnik ne moze brisati ili preslagivati poslanu
poruku, niti u nju umetati ili brisati informacije.
4
Definiramo i slijedece skupove:
• Alfabet otvorenog teksta M je konacan skup svih mogucih osnovnih elemenata od kojih
poruka koju posiljatelj salje moze biti izgradena, ta poruka se jos naziva i otvoreni tekst.
Cesto je koristeni alfabet otvorenog teksta binarni alfabet M = {0, 1}.
• Alfabet sifrata C je konacan skup svih mogucih osnovnih elemenata sifrata ili kripto-
grama, tj. osnovnih elemenata poruke dobivene nakon provodenja transformacije nad
otvorenim tekstom.
• Prostor kljuceva K je konacan skup svih mogucih unaprijed dogovorenih parametara,
tj. kljuceva, pomocu kojih odredujemo sifrat iz otvorenog teksta i obratno.
Svaki kljuc e ∈ K jedinstveno odreduje bijekciju s alfabeta otvorenog teksta M na alfabet
sifrata C. Tu funkciju oznacavamo s Ee i nazivamo funkcija sifriranja. Postupak primjene
funkcije Ee na m ∈ M nazivamo sifriranje. Nadalje, za svaki d ∈ K s Dd oznacavamo
bijekciju sa skupa C na skup M i nazivamo ju funkcija desifriranja. Funkcija desifriranja
Dd je jedinstveno odredena kljucem d, a postupak primjene funkcije Dd na bilo koji c ∈ Cnazivamo desifriranje.
Napomenimo kako cemo u ovom radu, radi jednostavnosti, cesto poistovjecivati otvoreni
tekst s osnovnim elementom otvorenog teksta i sifrat s osnovnim elementom sifrata, buduci
da, ukoliko sifriranje i desifriranje mozemo provesti na osnovnom elementu, tada ga mozemo
provesti i na cijelom otvorenom tekstu ili sifratu.
Enkripcijska shema ili sifra sastoji se od skupa E = {Ee : e ∈ K} funkcija sifriranja i
skupa D = {Dd : d ∈ K} funkcija desifriranja koji imaju svojstvo da:
∀ e ∈ K ∃! d ∈ K t.d. Dd = Ee−1
tj.
∀ e ∈ K ∃! d ∈ K t.d. Dd(Ee(m)) = m, ∀ m ∈M. (2.1)
Kljuceve e i d nazivamo par kljuceva i oznacavamo kao uredeni par (e, d). Primijetimo
da e i d ne moraju nuzno biti razliciti. Iz do sada navedenog proizlazi slijedeca definicija
kriptosustava.
Definicija 2.2. Kriptosustav je uredena petorka (M, C,K, E ,D), u kojoj vrijedi (2.1).
5
Na Slici 2.1 prikazan je uobicajen nacin komunikacije dvaju osoba u kriptografiji.
Slika 2.1: Shema klasicne kriptografije
Dvije osobe Alice i Bob tajno su odabrale i tajno razmijenile (npr. preko sigurnog komu-
nikacijskog kanala) par kljuceva (e, d). U nekom trenutku Alice zeli poslati otvoreni tekst
m ∈M Bobu. Ona odredi sifrat c = Ee(m) i, koristeci neki nesiguran komunikacijski kanal,
posalje c Bobu. Nakon sto primi c, Bob odredi m = Dd(c) i na taj nacin dobiva otvoreni
tekst m. Bitno je primijetiti kako protivnik moze doznati sadrzaj sifrata c, ali, buduci da ne
zna kljuc d, iz sifrata ne moze odrediti otvoreni tekst.
Kriptosustave mozemo podijeliti na vise nacina, od kojih ce u ovom radu biti najvaznija po-
djela s obzirom na tajnost i javnost kljuceva. Obzirom na tu podjelu razlikujemo simetricne
kriptosustave, koje jos nazivamo i kriptosustavi tajnog kljuca, i asimetricne kriptosustave,
poznate i pod imenom kriptosustavi javnog kljuca.
2.1 Kriptografija javnog kljuca
Simetricni kriptosustavi zasnovani su na ideji da posiljatelj i primatelj tajno odaberu kljuc
za sifriranje e ∈ K te pomocu njega odrede funkciju sifriranja Ee ∈ E iz koje je potom
jednostavno odrediti funkciju desifriranja Dd ∈ D, tj. kljuc za desifriranje d ∈ K. Ocito,
sigurnost ovih kriptosustava lezi u tajnosti para kljuceva (e, d). Medutim, tada je nuzno da
se razmjena para kljuceva odvija preko sigurnog komunikacijskog kanala te da se ti kljucevi
cesto mijenjaju. Ovi zahtjevi znatno kompliciraju provodenje sifriranja i desifriranja te do-
6
vode u pitanje povjerljivost samog kriptosustava.
Godine 1976. Whitfield Diffie i Martin Hellman doskocili su problemu nesigurne razmjene
kljuceva uvodenjem nove metode kriptografije javnog kljuca. Ideja javnog kljuca je sljedeca.
Pretpostavimo da je poznavanjem funkcije sifriranja Ee nemoguce (u nekom razumnom vre-
menu) iz nasumicnog sifrata c odrediti otvoreni tekst m takav da je Ee(m) = c, tj. da je
nemoguce (u nekom razumnom vremenu) iz poznavanja kljuca za sifriranje e odrediti kljuc
za desifriranje d. Funkciju Ee promatramo kao osobnu jednosmjernu funkciju1, gdje je d
podatak potreban za izracunavanje njenog inverza Dd, tj. podatak potreban za desifriranje.
Kriptosustave koji ispunjavaju ove pretpostavke nazivamo kriptosustavima javnog kljuca.
Ocito, u njima funkcija sifriranja Ee, tj. kljuc e mogu biti poznati svima, ali je potrebno
zadrzati tajnost kljuca d. Stoga, e nazivamo javnim, a d tajnim ili privatnim kljucem.
Slika 2.2: Shema kriptografije javnog kljuca
Slika 2.2 prikazuje komunikaciju izmedu dviju osoba, Alice i Boba, koristenjem kriptografije
javnog kljuca. Bob odabire par kljuceva (e, d) i salje Alice javni kljuc e koristeci nesiguran
komunikacijski kanal. Bob zadrzava kljuc d tajnim. Alice salje Bobu poruku m, primje-
njujuci funkciju sifriranja Ee odredenu Bobovim javnim kljucem e kako bi dobila c = Ee(m).
Bob desifrira sifrat c primjenom inverzne funkcije desifriranja Dd koja je odredena Bobovim
tajnim kljucem d i na taj nacin zadobiva otvoreni tekst m.
1Osobna jednosmjerna funkcija: Funkcija f : X → Y je osobna jednosmjerna funkcija, ako je f(x)lagano izracunati za svaki x ∈ X, dok je za vecinu y ∈ Im(f) nemoguce odrediti x ∈ X t.d. f(x) = y, osimuz poznavanje nekog dodatnog parametra.
7
U slucaju kada grupa osoba zeli komunicirati putem javnog kljuca dovoljno je da sve osobe
svoje javne kljuceve, zajedno sa svojim identitetom, stave u neku javnu, svima dostupnu,
datoteku. Tada Bob ne mora slati svoj javni kljuc Alice, vec Alice moze Bobov javni kljuc
jednostavno procitati iz datoteke.
Primjetimo kako je za razmjenu kljuceva u kriptografiji javnoga kljuca dovoljan i nesigu-
ran komunikacijski kanal, cime se osigurava povjerljivost podataka u kriptosustavima javnog
kljuca. Isto tako, buduci da je e javan, svaka osoba moze poslati Bobu sifriranu poruku, ali
samo Bob moze primljeni sifrat desifrirati.
Mozemo postaviti pitanje vjerodostojnosti i nepobitnosti komunikacije putem javnog kljuca.
Moze li Bob biti siguran da mu je upravo Alice poslala poruku, a ne protivnik koji samo
oponasa Alice. Ovaj problem rjesava se koristenjem digitalnih potpisa, kao jos jedne pred-
nosti kriptosustava s javnim kljucem, ili na nacin da Alice doda svojoj poruci slucajni broj
unaprijed dogovorene velicine.
Dodatna prednost kriptosustava s javnim kljucem nad simetricnim kriptosustavima, je da
cesto par kljuceva (e, d) moze ostati nepromijenjen duzi period vremena. Isto tako, za ko-
munikaciju vece grupe od n osoba dovoljno je odabrati 2n kljuceva, sto je znatno manje
nego u simetricnim kriptosustavima. Ipak, algoritmi javnog kljuca puno su sporiji od mo-
dernih simetricnih algoritama i njihovi kljucevi su, zbog sigurnosti, znatno veci nego sto
to moraju biti kljucevi u simetricnim kriptosustavima. Stoga, kriptografija javnog kljuca
u praksi niposto ne zamjenjuje simetricnu kriptografiju, vec se koristi za razmjenu kljuceva
simetricnih kriptosustava koji se potom koriste za sifriranje same poruke. Kriptografija jav-
nog kljuca koristi se i za sifriranje malih poruka poput brojeva kreditnih kartica i PINova.
U nastavku cemo reci nesto o sigurnosti kriptosustava, posebno kriptosustava javnog kljuca.
2.2 Sigurnost
Definicija 2.3. Kriptoanaliza je znanstvena disciplina koja se bavi proucavanjem postupaka
za citanje sifrata bez poznavanja kljuca.
Osnovna pretpostavka kriptoanalize, poznata i kao Kerckhoffsovo nacelo, je da je kriptosustav
(M, C,K, E ,D) poznat svima. Jedino sto osobe koje zele komunicirati zadrzavaju u tajnosti
je odabrani par kljuceva (e, d).
Razlikujemo dvije vrste protivnika:
• Pasivni protivnik je onaj koji s nesigurnog komunikacijskog kanala moze samo citati
8
informacije. Ovakav protivnik moze zaprijetiti samo povjerljivosti informacija.
• Aktivni protivnik je onaj koji uz citanje informacija s nesigurnog komunikacijskog ka-
nala te informacije moze i mijenjati ili brisati te cak slati nove informacije. Ovaj
protivnik, uz povjerljivost, prijeti netaknutosti i vjerodostojnosti informacija.
Glavni cilj protivnika koji napada kriptosustav javnog kljuca je otkriti otvoreni tekst na-
mijenjen nekoj osobi A iz pripadnog sifrata. Ukoliko je ovaj cilj ostvaren kazemo da je
enkripcijska shema probijena ili slomljena. Ambiciozniji cilj je stjecanje privatnog kljuca
osobe A. U tom slucaju kazemo da je enkripcijska shema u potpunosti probijena, buduci da
protivnik moze desifrirati sve sifrate poslane osobi A.
Poznajemo sljedece napade na enkripcijske sheme:
• Samo sifrat je napad u kojem protivnik pokusava otkriti kljuc sifriranja ili otvoreni
tekst samo promatranjem sifrata.
• Poznati otvoreni tekst je napad u kojem protivnik posjeduje nekoliko otvorenih tekstova
i odgovarajucih sifrata iz kojih pokusava otkriti kljuc ili algoritam kojim su sifrirani.
• Odabrani otvoreni tekst je vrsta napada u kojoj pretpostavljamo da protivnik moze
odabrati otvoreni tekst i iz njega dobiti odgovarajuci sifrat. Stoga, protivnik pokusava
shvatiti kako iz sifrata koji mu je nedostupan odrediti otvoreni tekst. Buduci da je u
enkripcijskim shemama javnog kljuca funkcija sifriranja javna, one su podlozne ovoj
vrsti napada.
• Odabrani sifrat je vrsta napada u kojoj pretpostavljamo da protivnik moze odabrati
sifrat i iz njega dobiti odgovarajuci otvoreni tekst. Protivnik pokusava otkriti kljuc
za desifriranje. Enkripcijske sheme javnoga kljuca podlozne su ovoj vrsti napada.
Medutim, oko ove vrste napada u enkripcijskim shemama javnoga kljuca treba se
zabrinjavati samo ako se u okruzenju u kojem se koristi shema takav napad uopce
moze izvesti.
Nadalje u ovom radu pretpostavit cemo da posiljatelj ima sredstvo pomocu kojeg moze
potvrditi kako javni kljuc koji koristi za sifriranje poruke doista pripada primatelju kojem
je ta poruka namijenjena. U suprotnom moguca je situacija ilustrirana na Slici 2.3.
9
Slika 2.3: Napad na kriptosustav javnog kljuca
Aktivni protivnik oponasa osobu B slanjem svog javnog kljuca e0 osobi A. Osoba A pretpos-
tavlja kako je e0 javni kljuc osobe B te pomocu njega sifrira otvoreni tekst m i dobiva sifrat
c0. Protivnik presrece c0 i desifrira ga svojim privatnim kljucem d0 te na taj nacin dobiva
otvoreni tekst m. Nakon toga, protivnik sifrira m koristeci javni kljuc e osobe B i dobiveni
sifrat c salje osobi B. Nasrecu, postoji mnogo tehnika za sprecavanje ovakvih situacija te one
ne predstavljaju problem u komunikaciji putem javnog kljuca. U nastavku cemo obraditi
najpoznatije algoritme javnog kljuca.
10
3 RSA kriptosustav
RSA kriptosustav nastao je 1977. godine, ime je dobio po svojim tvorcima Ronaldu Rivestu,
Adi Shamiru i Leonardu Adlemanu. Ovaj kriptosustav je najprimjenjivaniji kriptosustav
javnog kljuca, njegova sigurnost temelji se na problemu faktorizacije velikih prirodnih brojeva.
3.1 Neki potrebni problemi i algoritmi
3.1.1 Problem faktorizacije
Definicija 3.1. Problem prikaza prirodnog broja n ∈ N, n > 1 u obliku produkta potencija
prostih brojeva, tj. pronalazenje zapisa n = p1e1p2
e2 · · · pkek , gdje su pi medusobno razliciti
prosti brojevi, a ei prirodni brojevi, 1 ≤ i ≤ k, nazivamo problem faktorizacije.
Prije pristupanja problemu faktorizacije uvijek je korisno odrediti je li broj koji zelimo fak-
torizirati uistinu slozen. Problem odredivanja je li prirodan broj prost ili slozen puno je
laksi od problema faktorizacije i rjesava se razlicitim testovima prostosti koje ovdje necemo
navoditi. Problem faktorizacije prirodnog broja n > 1 mozemo rijesiti pronalazenjem ne-
trivijalne faktorizacije broja n, tj. pronalazenjem prirodnih brojeva a i b za koje vrijedi
1 < a < n, 1 < b < n i n = ab. Zatim, primijenimo testove prostosti na brojeve a i b
te ponovno pronademo netrivijalnu faktorizaciju broja za koji smo utvrdili da je slozen, to
moze biti a ili b ili oba. Ponavljanjem ovoga postupka dobivamo zapis broja n u obliku
produkta potencija prostih brojeva.
Algoritme faktorizacije mozemo podijeliti na opce i specijalne. Kod specijalnih algoritama
faktorizacije ocekivani broj operacija ovisi o velicini broja n i o svojstvima njegovih faktora.
Neki od specijalnih algoritama su:
• Naivna metoda u kojoj dijelimo broj n sa svim prostim brojevima manjim ili jednakim√n (ukoliko su nam poznati), ova metoda je neefikasna za velike n-ove.
• Pollardov ρ algoritam u kojem slozenost algoritma ovisi o najmanjem prostom faktoru
od n.
• Pollardov p − 1 algoritam koji koristimo za pronalazenje prostih faktora p prirodnog
broja n za koji vrijedi da su svi prosti faktori broja p − 1 manji od nekog relativno
malog broja b.
• Faktorizacija pomocu eliptickih krivulja je algoritam koji daje najbolje rezultate pri-
likom faktorizacije”slucajnih“ brojeva, dok podbacuje prilikom faktorizacije brojeva
oblika n = pq, gdje su p i q bliski prosti brojevi.
11
Kod opcih algoritama faktorizacije ocekivani broj operacija ovisi samo o velicini broja n.
Neki od opcih algoritama su:
• Algoritam kvadratnog sita, koji ima isti ocekivani broj operacija za brojeve oblika n =
pq, gdje su p i q bliski prosti brojevi, kao i faktorizacija pomocu eliptickih krivulja,
ali ipak je bolji u faktorizaciji takvih brojeva zbog jednostavnijih operacija u glavnim
koracima algoritma.
• Faktorizacija sita polja brojeva je trenutno najbolji algoritam za faktorizaciju i primje-
njiv je na sve prirodne brojeve.
Buduci da su specijalni algoritmi faktorizacije opcenito ucinkovitiji, faktorizaciju bismo mogli
provesti na sljedeci nacin. Prvo pokusati odrediti male faktore koristenjem naivne metode ili
Pollardovog ρ algoritma. Zatim, iskoristiti moguca svojstva faktora primjenom faktorizacije
pomocu elipticnih krivulja te, ukoliko svi raniji algoritmi podbace, primijeniti opci algoritam,
na primjer algoritam kvadratnog sita. Napomenimo kako je danas, usprkos svim navedenim
algoritmima, prakticki nemoguce faktorizirati dobro odabran prirodan broj s vise od 250
znamenaka.
3.1.2 RSA problem
Definicija 3.2. Problem odredivanja prirodnog broja m takvog da je me ≡ c (mod n), gdje
je prirodan broj n produkt dva razlicita prosta broja p i q, a e prirodan broj takav da je
najveci zajednicki djelitelj od e i (p− 1)(q − 1) jednak 1, nazivamo RSA problem.
Drugim rijecima, RSA problem zahtjeva pronalazenje e-tih korijena modulo slozeni prirodan
broj n. Uvjeti postavljeni na parametre n i e osiguravaju da za svaki c ∈ {0, 1, . . . , n − 1}postoji tocno jedan m ∈ {0, 1, . . . , n− 1} takav da je me ≡ c (mod n).
Opcenito se vjeruje kako su RSA problem i problem faktorizacije ekvivalentni iako ta tvrdnja
nije dokazana.
3.1.3 Prosireni Euklidov algoritam
Euklidovim algoritmom racunamo najveci zajednicki djelitelj dvaju cijelih brojeva. Jedna
njegova posljedica glasi:
∀a, b ∈ Z ∃ x, y ∈ Z t.d. ax+ by = (a, b). (3.1)
Sljedeci, prosireni Euklidov algoritam koristimo za racunanje brojeva x i y takvih da vrijedi
(3.1), gdje su a i b unaprijed zadani.
12
Algoritam 3.1 Prosireni Euklidov algoritam
Ulaz: dva nenegativna cijela broja a i b t.d. a ≥ bIzlaz: d = (a, b) i cijeli brojevi x, y koji zadovoljavaju ax+ by = d1. if b = 0 do d← a, x← 1, y ← 0 return (d, x, y)2. else x2 ← 1, x1 ← 0, y2 ← 0, y1 ← 13. while b > 0
3.1. q ← ba/bc, r ← a− qb, x← x2 − qx1, y ← y2 − qy13.2. a← b, b← r, x2 ← x1, x1 ← x, y2 ← y1, y1 ← y
4. d← a, x← x2, y ← y25. return (d, x, y)
Primjer 1. Tablica 3.1 prikazuje korake Algoritma 3.1 za a = 3640 i b = 17. Dakle,
1 = (17, 3640) = 3640 · (−8) + 17 · 1713.
q r x y a b x2 x1 y2 y1
\ \ \ \ 3640 17 1 0 0 1214 2 1 -214 17 2 0 1 1 -2148 1 -8 1712 2 1 1 -8 -214 17132 0 17 3640 1 0 -8 17 1713 3640
Tablica 3.1: Primjer prosirenog Euklidovog agloritma
3.1.4 Algoritam ”kvadriraj i mnozi”
Algoritam ”kvadriraj i mnozi” koristimo za racunanje modularnog potenciranja. Ovaj al-
goritam temelji se na sljedecem. Neka jet∑
i=0
ki2i binarni zapis broja k, gdje je ki ∈ {0, 1}.
Tada je,
ak =t∏
i=0
aki2i
= (a20
)k0
(a21
)k1 · · · (a2t)
kt.
13
Algoritam 3.2 Algoritam ”kvadriraj i mnozi”
Ulaz: a ∈ Zn = {0, 1, . . . , n− 1}, cijeli broj 0 ≤ k ≤ n u binarnom zapisu k =t∑
i=0
ki2i
Izlaz: b = ak (mod n)1. b← 12. if k = 0 return (b)3. else A← a4. if k0 = 1 then b← a5. for i = 1 . . . t
5.1. A← A2 (mod n)5.2. if ki = 1 then b← Ab (mod n)
6. return (b)
Primjer 2. Tablica 3.2 prikazuje korake Algoritma 3.2 prilikom racunanja
56717 (mod 3763) = 1774.
i 0 1 2 3 4ki 1 0 0 0 1A 567 1634 13278 1208 2983b 567 567 567 567 1774
Tablica 3.2: Primjer algoritma ”kvadriraj i mnozi”
3.2 Opis
Kako bi osobe mogle komunicirati RSA metodom kriptografije, potrebno je odabrati javni
i generirati pripadni privatni kljuc. Generiranje kljuceva u RSA kriptosustavu za svaku
pojedinacnu osobu odvija se na slijedeci nacin:
1. generirati dva razlicita velika prosta broja p i q koji su otprilike iste velicine
2. izracunati parametar n = pq ∈ N
3. izracunati ϕ(n) = (p− 1)(q − 1), gdje je ϕ(n) Eulerova funkcija2 te vrijedi
ϕ(n) = ϕ(pq) = ϕ(p)ϕ(q) = (p− 1)(q − 1)
4. odabrati e ∈ N za koji vrijedi: 1 < e < ϕ(n) i (e, ϕ(n)) = 1
2Eulerova funkcija: Funkciju ϕ : N → N koja svakom n ∈ N pridruzuje broj prirodnih brojeva u nizu1, . . . , n koji su relativno prosti s n nazivamo Eulerova funkcija.
14
5. koristeci prosireni Euklidov algoritam 3.1 izracunati jedinstveni d ∈ N za kojeg vrijedi:
1 < d < ϕ(n) i ed ≡ 1 (mod ϕ(n))
6. (n, e) je javni, a d privatni kljuc.
Napomena 1. U cetvrtom smo koraku 1 < e < ϕ(n) odabrali tako da je (e, ϕ(n)) = 1, stoga
slijedi:
∃x, y ∈ Z t.d. ex+ ϕ(n)y = (e, ϕ(n)) = 1
ex− 1 = ϕ(n)(−y)
Odakle slijedi
ex ≡ 1 (mod ϕ(n)).
Ocito, x = d, tj. postoji jedinstveni d ∈ N t.d. 1 < d < ϕ(n) i ed ≡ 1 (mod ϕ(n)).
U RSA kriptosustavu e nazivamo enkripcijski, a d dekripcijski eksponent, dok n nazivamo
modul. Nakon generiranja javnog i tajnog kljuca, potrebno je odrediti nacin sifriranja i
desifriranja poruke kako bi Alice i Bob mogli komunicirati koristeci RSA kriptosustav (kao
sto je prikazano na Slici 2.2).
Sifriranje:
1. Alice prima autenticni Bobov javni kljuc (n, e),
2. zapisuje otvoreni tekst kao cijeli broj m ∈ [0, n− 1],
3. racuna sifrat c = Ee(m) = me (mod n), koristeci Algoritam 3.2
4. salje Bobu sifrat c.
Desifriranje:
1. Bob koristi svoj tajni kljuc d kako bi izracunao m = Dd(c) = cd (mod n).
Slijedi definicija RSA kriptosustava.
Definicija 3.3. RSA kriptosustav: Neka je n = pq, gdje su p i q prosti brojevi. Neka je
M = C = Zn te
K = {(n, e, d) : n = pq, de ≡ 1 (mod ϕ(n))}.
Za (n, e, d) ∈ K definiramo
Ee(m) = me (mod n) i Dd(c) = cd (mod n), m, c ∈ Zn.
15
Pokazimo kako skupovi E = {Ee(m) = me (mod n) : (n, e, d) ∈ K} i
D = {Dd(c) = cd (mod n) : (n, e, d) ∈ K} cine enkripcijsku shemu, tj. kako su funkcije
Ee i Dd medusobno inverzne.
Znamo da je
Dd(Ee(m)) = med (mod n),
a iz ed ≡ 1 (mod ϕ(n)) slijedi da postoji k ∈ N takav da de = 1 + ϕ(n)k odakle je med =
m1+ϕ(n)k = m(mϕ(n))k.
Ako pretpostavimo da je (m,n) = 1, tada je prema Eulerovom teoremu3
mde = m(mϕ(n))k ≡ m (mod n), a zbog m ∈ Zn je med (mod n) = m.
Ako je (m,n) = n, tada je mde ≡ 0 ≡ x (mod n).
Ako je (m,n) = p, tada je mde ≡ 0 ≡ x (mod p), a kako je (m,n) = (m, pq) = p slijedi da
je (m, q) = 1 te
mϕ(q) = mq−1 ≡ 1 (mod q),
iz cega slijedi
mde = (mq−1)(p−1)k ≡ m (mod q),
odakle je mde ≡ m (mod n), a zbog m ∈ Zn je med (mod n) = m.
Slicno dobivamo i u slucaju kada je (m,n) = q.
Slijedi da je u svakom slucaju med (mod n) = m te su funkcije Ee i Dd medusobno inverzne.
Primjer 3. Alice zeli poslati poruku Bobu koristeci RSA kriptosustav. Poruka je m = 567.
Odabir kljuceva: Bob odabire proste brojeve p = 53 i q = 71 te odredi n = 53 · 71 = 3763
i ϕ(n) = (p − 1)(q − 1) = 52 · 70 = 3640. Zatim, Bob odabire e ∈ [1, 3640] takav da
je (e, ϕ(n)) = 1 i dobiva e = 17. Koristeci prosireni Euklidov algoritam, kako je prika-
zano u Primjeru 1, racuna d = 1713 takav da je ed ≡ 1 (mod ϕ(n)). Bobov javni kljuc je
(n = 3763, e = 17), a njegov privatni kljuc je d = 1713.
Sifriranje: Kako bi sifrirala poruku m = 567, Alice koristi algoritam za modularno ekspo-
nenciranje(npr. Algoritam 3.2) kako bi izracunala sifrat
c = me (mod n) = 56711 (mod 3763) = 1774,
3Eulerov teorem: Za relativno proste brojeve x i n vrijedi xϕ(n) ≡ 1 (mod n).
16
kao u Primjeru 2. Alice salje sifrat Bobu.
Desifriranje: Kako bi desifrirao c, Bob racuna
cd (mod n) = 17741713 (mod 3763) = 567.
3.3 Sigurnost
Veza s faktorizacijom
Zadatak pasivnog protivnika je otkriti otvoreni tekst m iz pripadnog sifrata c uz poznavanje
primateljevog javnog kljuca (n, e). Ovaj problem naziva se RSA problem i uveli smo ga u
Potpoglavlju 3.1.2.
Kako bi rijesio RSA problem, protivnik bi mogao pokusati faktorizirati n te izracunati ϕ(n)
i d na isti nacin na koji je to ucinio primatelj kada je generirao svoj javni i privatni kljuc.
Jednom kada zadobije d protivnik moze desifrirati bilo koji sifrat namijenjen primatelju. S
druge strane, ako bi protivnik mogao izracunati d, tada bi mogao i faktorizirati n koristeci
slijedecu cinjenicu. Buduci da je ed ≡ 1 (mod ϕ(n)) slijedi da postoji k ∈ N takav da
ed− 1 = ϕ(n)k. Stoga je za svaki a ∈ Zn∗, gdje je Zn
∗ = {1, . . . , n − 1}, prema Eulerovom
teoremu, aed−1 ≡ 1 (mod n). Neka je ed − 1 = 2st, gdje je t neparan. Moze se pokazati
da postoji i ∈ [1, s] takav da ai−1t 6≡ ±1 (mod n) i a2it ≡ 1 (mod n) za barem polovinu
svih a ∈ Zn∗. Ako su a i i takvi brojevi, tada je (a2
(i−1)t, n) netrivijalni faktor od n. Prema
tome, protivnik bi jednostavno trebao odabirati nasumicne a ∈ Zn∗ i provjeravati postoji li
i ∈ [1, s] koji zadovoljava gornja svojstva. Na ovaj nacin protivnik bi pronasao netrivijalnu
faktorizaciju od n, pomocu koje moze rjesiti problem faktorizacije broja n na nacin opisan
u 3.1.1.
Zakljucujemo kako su problem racunanja dekripcijskog eksponenta d iz javnog kljuca (n, e)
i problem faktorizacije modula n ekvivalentni.
Mali enkripcijski eksponent e
Kako bi se poboljsala efikasnost sifriranja, mogli bismo smatrati pozeljnim odabrati mali
enkripcijski eksponent e. Neka grupa osoba ima isti e, kako bi imali razlicite javne kljuceve,
svaka osoba mora imati razliciti modul n. Ukoliko osoba A zeli poslati istu poruku m trima
osobama, ciji su moduli n1, n2, n3 i koje imaju isti enkripcijski eksponent e = 3, tada A
salje ci = m3 (mod ni), i = 1, 2, 3. Postoji algoritam kojim protivnik moze, uz znanje sifrata
c1, c2, c3, naci rjesenje x, 0 ≤ x ≤ n1n2n3 triju kongruencijax ≡ c1 (mod n1)x ≡ c2 (mod n2)x ≡ c3 (mod n3).
17
Buduci da je m3 < n1n2n3, prema Kineskom teoremu o ostacima4, slijedi da je x = m3.
Stoga, izracunavanjem cjelobrojnog kubnog korijena od x, protivnik moze zadobiti otvoreni
tekst m. Uvidamo kako enkripcijski eksponenet e ne bi trebao biti mali u slucaju kada
istu poruku saljemo vise osoba. Kako bismo sprijecili ovu vrstu napada potrebno je, prije
sifriranja, otvorenom tekstu dodati niz brojeva odgovarajuce velicine, koji se generira zasebno
za svako sifriranje. Ovaj postupak se ponekad naziva soljenje ili zacinjavanje poruke.
Mali enkripcijski eksponeneti su problem i pri slanju malih poruka m. Ako je m < n1/e,
protivnik moze otvoreni tekst m zadobiti iz sifrata c = me (mod n) racunanjem cjelobrojnog
e-tog korijena od c. Soljenje poruke takoder rjesava ovaj problem.
Napad pretrazivanjem prema naprijed
Ukoliko je alfabet otvorenog teksta mali ili predvidljiv, protivnik moze desifrirati sifrat c
tako sto ce sifrirati sve moguce otvorene tekstove dok ne dobije c. Soljenje poruke, kao i u
prethodnom slucaju, sprjecava ovu vrstu napada.
Mali dekripcijski eksponent d
Takoder, mogli bismo smatrati pozeljnim odabrati mali dekripcijski eksponent d, kako bi
poboljsali ucinkovitost desifriranja. Medutim, ukoliko je (p− 1, q− 1) mali i d ima do jednu
cetvrtinu bitova modula n, postoji algoritam za racunanje d iz poznavanja javnog kljuca
(n, e). Ovaj algoritam nije ucinkovit u slucaju kada su dekripcijski eksponent d i modul n
priblizno iste velicine.
Multiplikativna svojstva
Neka su m1 i m2 otvoreni tekstovi te c1 i c2 njihovi sifrati sifrirani RSA kriptosustavom.
Uocimo,
(m1m2)e ≡ m1
em2e ≡ c1c2 (mod n).
Prema tome, sifrat c = c1c2 (mod n) odgovara otvorenom tekstu m = m1m2 (mod n). Ovo
svojstvo omogucava slijedeci napad na RSA kriptosustav pomocu odabranog sifrata.
Pretpostavimo kako aktivni protivnik zeli desifrirati sifrat c = me (mod n) namijenjen Bobu
te kako ce Bob desifrirati protivniku proizvoljan sifrat razlicit od c. Protivnik moze sakriti
c tako sto ce izabrati nasumican x ∈ Zn∗ i izracunati c = cxe (mod n). Bob ce protivniku
desifrirati m = (c)d (mod n). Buduci da je m ≡ (c)d ≡ cd(xe)d ≡ mx (mod n), protivnik
moze izracunati m = mx−1 (mod n).
Ovaj napad moze se izbjeci nametanjem odredene strukture otvorenom tekstu. Ako se sifrat c
desifrira u poruku koja ne posjeduje tu strukturu, c se automatski odbacuje. Ukoliko otvoreni
4Kineski teorem o ostacima: Ako su n1, n2, . . . , n3 u parovima relativno prosti prirodni brojevi,tadasustav kongruencija x ≡ a1 (mod n1), . . . , x ≡ ak (mod nk) ima jedinstveno rjesenje modulo n1n2 · · ·nk.
18
tekst m posjeduje zadanu strukturu, tada, s velikom vjerojatnoscu, mx (mod n), x ∈ Zn∗,
nece posjedovati tu strukturu i prethodno opisani odabrani sifrat napad nece uspjeti jer Bob
nece desifrirati c protivniku.
Zajednicki modul n
Neka jedna osoba izabere RSA modul n te zatim odredi i distribuira razlicite enkripcijske i
dekripcijske eksponente (ei, di) ostalim osobama u grupi. Kako je pokazano na pocetku ovog
odjeljka, poznavanje bilo kojeg para (ei, di) omogucuje faktorizaciju modula n i izracunavanje
dekripcijskih eksponenata svih drugih osoba u grupi. Takoder, ako se isti otvoreni tekst salje
dvjema ili vise osoba u grupi, postoji nacin na koji protivnik s velikom vjerojatnoscu moze
procitati poruku pomocu poznavanja samo javnih parametara.
Ciklicki napad
Neka je c = me (mod n) sifrat i k pozitivan cijeli broj takav da je cek ≡ c (mod n). Buduci
da je sifriranje permutacija alfabeta otvorenog teksta Zn, takav k mora postojati. Iz istog
razloga je ce(k−1) ≡ m (mod n). Ova cinjenica omogucuje slijedeci ciklicki napad. Protivnik
izracuna ce (mod n), ce2
(mod n), . . . dok kao rezultat ne dobije c. Ako je cek
(mod n) = c
tada je ce(k−1)
(mod n) = m.
Prikrivanje poruke
Za otvoreni tekst m, 0 ≤ m ≤ n − 1, u RSA enkripcijskoj shemi kazemo da je neprikriven
ukoliko se sifrira sam u sebe, tj. ako je me ≡ m (mod n). Uvijek je neki otvoreni tekst
neprikriven, npr. m = 0,m = 1,m = n = −1. Buduci da su e− 1, p− 1, q− 1 parni brojevi,
broj neprikrivenih poruka je najmanje 9. Ako su p i q nasumicni prosti brojevi i ako je e
odabran nasumicno, broj poruka neprikrivenih RSA sifriranjem je zanemarivo mal i stoga
ne predstavlja prijetnju sigurnosti RSA kriptosustava.
Navedene mogucnosti napada ukazuju na sto treba pripaziti prilikom odabira potrebnih
parametara.
3.4 Implementacija
Cak i uz odredena poboljsanja, RSA kriptosustav je znatno sporiji od cesto koristenih sime-
tricnih kriptosustava. U praksi, RSA kriptosustav koristi se za slanje kljuceva za algoritme
simetricnih kriptosustava i za sifriranje malih podataka.
Uzimajuci u obzir najnovije algoritme za faktorizaciju cijelih brojeva, 512-bitni modul n
19
pruza samo marginalnu sigurnost. Kako bi se osujetili algoritmi kvadratnog sita i faktoriza-
cije sitom polja algebarskih brojeva, preporuca se uporaba modula od barem 768 bitova, a
za dugorocnu sigurnost potrebno je odabrati modul od barem 1024 bita.
Nadalje, prosti brojevi p i q trebali bi biti odabrani tako da je faktorizaciju n = pq prakticki
nemoguce izracunati. Kako bismo izbjegli algoritam faktorizacije pomocu eliptickih krivulja,
p i q bi trebali biti otprilike iste velicine i dovoljno veliki. Takoder, razlika p− q ne bi trebala
biti premalena jer je tada p ≈ q i stoga p ≈√n, tj. tada bismo n mogli faktorizirati pri-
mjenom najjednostavnije naivne metode faktorizacije. Ukoliko su p i q odabrani nasumicno,
razlika p− q je vrlo vjerojatno dovoljno velika.
Isto tako, ponekad se preporuca da p i q budu jaki prosti brojevi, tj. da zadovoljavaju slijedeca
svojstva:
1. p− 1 ima veliki prost faktor r
2. p+ 1 ima veliki prost faktor
3. r − 1 ima veliki prost faktor
Uvjet 1. onemogucava Pollardov p− 1 algoritam, uvjet 2. onemogucava algoritam za p + 1
faktorizaciju koji nije spominjan u ovom radu, dok uvjet 3. onemogucava ciklicke napade.
S druge strane, moze se pokazati kako su sve navedene vrste napada, koje ovi uvjeti sp-
rjecavaju, u potpunosti ili vecinom onemogucene i uporabom samo nasumicno izabranih
prostih brojeva p i q te stoga nije nuzno koristiti jake proste brojeve u generiranju RSA
kljuceva. Ipak, uporabom jakih prostih brojeva RSA kriptosustav ne gubi na sigurnosti niti
na efikasnosti te njihovo koristenje ne predstavlja nikakvu prepreku.
Sifriranje se moze ubrzati odabirom malog enkripcijskog eksponenta e ili odabirom enkrip-
cijskog eksponenta e cija binarana reprezentacija sadrzi sto manje jedinica. Na ovaj nacin
postizemo vecu ucinkovitost Algoritma ”kvadriraj i mnozi” 3.2. Cesto koristeni enkripcijski
eksponent je e = 3, u ovom slucaju potrebno je da niti p − 1 niti q − 1 ne budu djeljivi
sa 3. Ovaj enkripcijski eksponent rezultira vrlo brzim sifriranjem, buduci da je njegovom
uporabom potrebno samo jedno modularno mnozenje i jedno modularno kvadriranje. Drugi
cesto koristeni enkripcijski eksponent je e = 216+1 = 65537 cija binarana reprezentacija ima
samo dvije jedinice te stoga uporaba algoritma ”kvadriraj i mnozi” zahtjeva samo 16 mo-
dularnih kvadriranja i jedno modularno mnozenje. Prednost ovog enkripcijskog eksponenta
nad eksponentom e = 3 opisali smo kada smo govorili o sigurnosti RSA kriptosustava.
Vazno je napomnuti kako, uz pravilnu implementaciju svih parametara, RSA kriptosustav
za sada mozemo smatrati sigurnim kriptosustavom.
20
4 Rabinov kriptosustav
Rabinov kriptosustav razvijen je 1979. godine te je nazvan po svome tvorcu, izraelskom
matematicaru Michaelu Oseru Rabinu. Enkripcijska shema Rabinovog kriptosustava je prva
dokazivo sigurna enkripcijska shema javnog kljuca. Enkripcijska shema je dokazivo sigurna,
ako mozemo dokazati kako je podjednako tesko slomiti tu enkripcijsku shemu i rijesiti neki
dobro poznati i teski matematicki problem. Problem otkrivanja otvorenog teksta iz sifrata,
u Rabinovom kriptosustavu, ekvivalentan je problemu racunanja kvadratnog korijena koji je,
kako cemo pokazati, ekvivalentan problemu faktorizacije opisanom u Potpoglavlju 3.1.1.
4.1 Problem odredivanja kvadratnog korijena u Zn
Definicija 4.1. Neka je n = pq, gdje su p i q prosti brojevi i neka je 1 ≤ a ≤ n−1 kvadratni
ostatak5 modulo n. Problem odredivanja x ∈ Z takvog za je x2 ≡ a (mod n) nazivamo
problem odredivanja kvadratnog korijena modulo n.
Ako su poznati prosti faktori p i q broja n, problem odredivanja kvadratnog korijena mo-
dulo n moze se ucinkovito rijesiti nalazenjem kvadratnih korijena modulo p i modulo q te
koristenjem kineskog teorema o ostacima kako bi se nasli kvadratni korijeni modulo n = pq.
Sljedeci algoritam pronalazi dva kvadratna korijena broja a modulo prost broj p.
Algoritam 4.1 Nalazenje kvadratnih korijena modulo prost broj p
Ulaz: p prost broj , a kvadratni ostatak modulo pIzlaz: dva kvadratna korijena od a modulo p1. a = a (mod p)2. if p ≡ 3, 7 (mod 8) do
2.1. x = a(p+1)/4 (mod p)2.2. return (x)
3. if p ≡ 5 (mod 8) do3.1. x = a(p+3)/8 (mod p)3.2. c = x2 (mod p)3.3. if c 6= a (mod p) do x = x · 2(p−1)/4 (mod p)3.4. return (x)
4. nadi broj d ∈ {2, 3, . . . , p− 1} takav da je d kvadratni neostatak modulo p5. prikazi p− 1 = 2st, t neparan6. A = at (mod p)7. D = dt (mod p)8. m = 0
5Kvadratni ostatak: Neka su a i n ∈ N. Ako kongruencija x2 ≡ a (mod n) ima rjesenje, kazemo da jea kvadratni ostatak modulo n. U suprotnom je a kvadratni neostatak modulo n.
21
Nalazenje kvadratnih korijena modulo prost broj p
9. for 0 ≤ i ≤ s− 1 do9.1. if (ADm)2
s−1−i ≡ −1 (mod p) do m = m+ 2i
10. x = a(t+1)/2Dm/2 (mod p)11. return (x)
Sljedeci algoritam pronalazi sva cetiri kvadratna korijena broja a modulo n.
Algoritam 4.2 Nalazenje kvadratnih korijena modulo n, ciji su prosti faktori p i q poznati
Ulaz: n ∈ Z, njegovi prosti faktori p i q, a kvadratni ostatak modulo nIzlaz: cetiri kvadratna korijena od a modulo n1. Pomocu Algoritma 4.1 nadi kvadratne korijene r i −r od a modulo p2. Pomocu Algoritma 4.1 nadi kvadratne korijene s i −s od a modulo q3. Pomocu prosirenog Euklidovog algoritma 3.1 nadi cijele brojeve c i d takve da jecp+ dq = 14. x← (rdq + scp) (mod n), y ← (rdq − scp) (mod n)6. return (±x (mod n),±y (mod n))
Obrnuto, ako znamo rijesiti problem odredivanja kvadratnog korijena modulo n, mozemo
rijesiti i problem faktorizacije. Neka je n slozen broj. Nasumicno odaberemo broj x takav
da je (x, n) = 1 (inace je (x, n) = p ili (x, n) = q netrivijalni djelitelj od n) i izracunamo
a = x2 (mod n). Zatim primjenimo npr. Algoritam 4.2 i odredimo kvadratne korijene od
a modulo n. Neka je y kvadratni korijen od a modulo n. Ako je y ≡ ±x (mod n), biramo
novi x. Ako y 6≡ ±x (mod n) tada n|(x− y)(x+ y) te je (x− y, n) netrivijalni djelitelj od n.
Buduci da postoje cetiri kvadratna korijena od a modulo n, vjerojatnost da ovaj postupak
uspije u prvom pokusaju je 1/2.
Ocito je da su problem odredivanja kvadratnog korijena modulo n i problem faktorizacije
ekvivalentni.
4.2 Opis
Kao i u RSA kriptosustavu, prije pocetka komunikacije osobe moraju odabrati svoje javne i
privatne kljuceve. U Rabinovom kriptosustavu osobe generiraju kljuceve na slijedeci nacin:
1. generirati dva razlicita, nasumicna, velika prosta broja p i q koji su otprilike iste velicine
2. izracunati parametar n = pq ∈ N
3. n je javni, a (p, q) privatni kljuc.
22
Nakon odabira kljuceva, Alice i Bob moraju odrediti nacin sifriranja i desifriranja poruka u
Rabinovom kriptosustavu, kako bi mogli zapoceti medusobnu komunikaciju.
Sifriranje:
1. Alice prima Bobov autenticni javni kljuc n,
2. zapisuje otvoreni tekst kao cijeli broj m ∈ {0, 1, . . . , n− 1},
3. racuna sifrat c = Ee(m) = m2 (mod n),
4. salje Bobu sifrat c.
Desifriranje:
1. Bob, koristeci Algoritam 4.2, racuna cetiri kvadratna korijena m1,m2,m3 i m4 od c
modulo n.
2. Poslana poruka je m1,m2,m3 ili m4. Bob mora odluciti koja je od dobivenih poruka
ispravna.
Slijedi definicija Rabinovog kriptosustava.
Definicija 4.2. Rabinov kriptosustav: Neka je n = pq, gdje su p i q prosti brojevi. Neka je
M = C = Zn te
K = {(n, p, q) : n = pq}.
Za (n, p, q) ∈ K definiramo
Ee(m) = m2 (mod n) i Dd(c) =√c (mod n), m, c ∈ Zn.
Napomena 2. Ukoliko su prosti brojevi p i q odabrani tako da je p ≡ q ≡ 3 (mod 4),
umjesto koristenja Algoritma 4.2, cetiri kvadratna korijena od c modulo n mozemo pronaci
na slijedeci nacin:
1. Koristeci prosireni Euklidov algoritam 3.1 pronaci a, b ∈ Z takve da je ap+ bq = 1,
2. izracunati r = c(p+1)/4 (mod p),
3. izracunati s = c(q+1)/4 (mod q),
4. izracunati x = (aps+ bqr) (mod n),
5. izracunati y = (aps− bqr) (mod n),
6. kvadratni korijeni od c modulo n su ±x (mod n) i ±y (mod n).
23
Nedostatak Rabinove enkripcijske sheme je da funkcija sifriranja Ee(m) = m2 (mod n)
nije injekcija, tj. primatelj mora sam odabrati otvoreni tekst izmedu cetiri dobivena kva-
dratna korijena sifrata c modulo n. Takav zadatak nije uvijek lagan, jer otvoreni tekst
ne mora biti smislena poruka vec, na primjer, kljuc nekog simetricnog kriptosustava. Ova
nedorecenost prilikom desifiranja moze se ukloniti dodavanjem neke unaprijed odredene re-
dundancije otvorenom tekstu prije sifriranja, npr. mogu se ponavljati zadnja 64 bita poruke.
Tada ce, s velikom vjerojatnoscu, tocno jedan od cetiri kvadratna korijena sifrata c modulo
n posjedovati zadanu redundanciju i primatelj ce upravo taj kvadratni korijen smatrati otvo-
renim tekstom koji mu je poslan. Ukoliko niti jedan od kvadatnih korijena sifrata c modulo
n ne posjeduje zadanu strukturu, primatelj ce u potpunosti odbaciti sifrat c.
Primjer 4. Alice zeli poslati poruku Bobu, ovaj put koristeci Rabinov kriptosustav. Poruka
je m = 567, u binarnom zapisu m = 1000110111.
Odabir kljuceva: Bob odabire proste brojeve p = 431 i q = 151 te odredi n = pq = 431 ·151 = 65081. Bobov javni kljuc je n = 65081, a njegov privatni kljuc je (p, q) = (431, 151).
Sifriranje: Pretpostavimo kako je prije sifriranja potrebno duplicirati posljednjih sest bi-
tova otvorenog teksta. Kako bi sifrirala poruku m = (567)10 = (1000110111)2, Alice du-
plicira posljednjih sest bitova otvorenog teksta m i dobiva slijedecu 16-bitnu poruku m =
1000110111110111, u dekadskom zapisu m = 36343. Alice racuna
c = m2 (mod n) = 363432 (mod 65081) = 59835
i salje sifrat c Bobu.
Desifriranje: Kako bi desifrirao c, Bob koristi Algoritam 4.2 i svoj privatni kljuc (p =
431, q = 151), tj. svoje poznavanje faktorizacije od n = pq kako bi izracunao cetiri kvadratna
korijena od c modulo n:
m1 = 4880, m2 = 28738, m3 = 36343, m4 = 60201,
u binarnom zapisu
m1 = 1001100010000, m2 = 111000001000010,
m3 = 1000110111110111, m4 = 1110101100101001.
Buduci da samo m3 posjeduje zadanu redundanciju, Bob desifrira c kao m3 i zadobiva otvo-
reni tekst m = (1000110111)2 = (567)10.
4.3 Sigurnost
Zadatak pasivnog protivnika je otkriti otvoreni tekst m iz pripadnog sifrata c uz poznava-
nje primateljevog javnog kljuca n. Ovo je upravo problem odredivanja kvadratnog korijena
24
modulo n kojeg smo uveli u Potpoglavlju 4.1. Buduci da smo pokazali kako je ovaj problem
ekvivalentan problemu faktorizacije 3.1.1 kojeg je gotovo nemoguce rijesiti, ukoliko je javni
kljuc n dobro odabran, Rabinova enkripcijska shema je dokazivo sigurna od pasivnog pro-
tivnika.
S druge strane, Rabinova enkripcijska shema podilazi napadu odabrani sifrat. Takav napad
moze se izvesti na slijedeci nacin. Aktivni protivnik odabere nasumicni m ∈ Zn∗ i izracuna
c = m2 (mod n). Zatim, protivnik posalje c primatelju koji desifrira c i vraca protivniku
neki otvoreni tekst y. Buduci da primatelj ne zna m i m je nasumicno izabran, otvoreni
tekst y ne mora nuzno biti jednak m. Ipak, y 6≡ ±m (mod n) s vjerojatnoscu od 1/2 i tada
je (m− y, n) prost faktor od n. Ako je y ≡ ±m (mod n), protivnik ponavlja napad koristeci
novi m.
Medutim, ukoliko se pri komunikaciji koristi redundancija, na nacin opisan ranije u tekstu,
Rabinova enkripcijska shema nije podlozna napadu odabrani sifrat. Naime, ukoliko protivnik
odabere poruku m koja posjeduje zadanu redundanciju, izracuna c = m2 (mod n) i posalje
c primatelju, primatelj ce mu najvjerojatnije vratiti otvoreni tekst y = m, jer ostala tri
kvadratna korijena nece sadrzavati potrebnu redundanciju. Stoga, protivnik na ovaj nacin
nece doci do novih informacija. Nadalje, ako protivnik odabere poruku m koje ne posje-
duje zadanu redundanciju, s velikom vjerojatnoscu niti jedan od cetiri kvadratna korijena
od c = m2 (mod n) nece sadrzavati tu redundanciju te primatelj nece pruziti protivniku
nikakvu povratnu informaciju.
Napomenimo kako Rabinova enkripcijska shema podilazi i napadima slicnima situacijama
opisanim u Potpoglavlju 3.3 pod podnaslovima Mali enkripcijski eksponent e, Napad pre-
trazivanjem prema naprijed i Mali dekripcijski eksponent d. Kao i u RSA kriptosustavu, ovi
napadi se mogu sprijeciti soljenjem poruke odnosno dodavanjem redundancije otvorenom
tekstu.
25
5 McElieceov kriptosustav
McElieceov kriptosustav razvio je 1978. godine matematicar Robert McEliece. McEliece-
ova enkripcijska shema u potpunosti se razlikuje od enkripcijskih shema RSA i Rabinovog
kriptosustava i zasniva se na linearnim kodovima za ispravljanje pogresaka. Ideja sheme je
odabrati kod za koji postoji ucinkoviti algoritam za desifriranje te zatim prikazati taj kod
kao linearni kod cije je dekodiranje NP-tesko6.
5.1 Linearni kodovi za ispravljanje gresaka
Kodovi za ispravljanje pogresaka ispravljaju slucajne greske nastale prilikom prenosenja po-
dataka preko kanala sa ”sumom”. Linearni kod za ispravljanje gresaka je kod za ispravljanje
pogresaka kod kojeg je svaka linearna kombinacija kodnih rijeci ponovno kodna rijec. Line-
arni kodovi omogucavaju ucinkovitije sifriranje i desifriranje od ostalih kodova.
Formalnije, linearni kod duljine n i ranga k, n, k ∈ N, k ≤ n, je k-dimenzionalni potprostor
C vektorskog prostora Zqn, gdje je q prost broj. Ukoliko je q = 2 linearni kod nazivamo
binarnim linearnim kodom. Vektori u C se nazivaju kodne rijeci, a velicina koda je broj
kodnih rijeci. Tezina kodne rijeci je broj njenih nenul elemenata.
Neka su x = (x1, . . . , xn), y = (y1, . . . , yn) ∈ Z2n dvije kodne rijeci, udaljenost medu njima
je takozvana Hammingova udaljenost definirana kao
d(x, y) = |{i : 1 ≤ i ≤ n, xi 6= yi}|,
tj. kao broj koordinata u kojima se x i y razlikuju. Udaljenost d linearnog koda C definiramo
s
d = d(C) = min{d(x, y) : x, y ∈ C, x 6= y},
to je najmanja moguca udaljenost izmedu dvije razlicite kodne rijeci. Tada kazemo da je C
[n, k, d]-kod.
Generirajuca matrica za linearni kod C je k × n matrica G ciji retci tvore bazu za C. Za
matricu G kazemo da je u standardnom obliku, ako je G blok-matrica G = (Ik | A), gdje je
Ik jedinicna matrica, a A neka k × (n− k) matrica. Generirajucoj matrici G pridruzujemo
njenu matricu provjerene parnosti H. H je (n − k) × n matrica ciji retci tvore bazu za
ortogonalni komplement od C koji nazivamo dualnim kodom od C i oznacavamo s C⊥.
6Za problem kazemo da je NP-tezak ukoliko je tezak barem kao bilo koji NP-problem, tj. problem kojije rjesiv u polinomijalnom vremenu.
26
Primjer jednog [7, 4, 3]-koda dan je sljedecom generirajucim matricom G i njenom matri-
com provjerene parnosti H.
G =
1 0 0 0 1 1 00 1 0 0 1 0 10 0 1 0 0 1 10 0 0 1 1 1 1
, H =
1 1 0 1 1 0 01 0 1 1 0 1 10 1 1 1 0 0 1
Demonstrirajmo nacin rada linearnih kodova za ispravljanje gresaka. Neka je G generirajuca
matrica za neki [n, k, d]-kod C i neka je x binarna k-torka koju posaljitelj salje primatelju.
Posiljatelj sifrira x kao n-torku y = xG i salje y primatelju. Primatelj primi n-torku r,
koja se zbog ”suma” u kanalu ne mora podudarati s y. Kako bi desifrirao r, primatelj trazi
kodnu rijec y′ ∈ C s najmanjom Hammingovom udaljenoscu od r te zatim odreduje k-torku
x′ takvu da je x′ = y′G. Primatelj zakljucuje kako je y = y′ i x = x′, tj. kako je ispravio
greske nastale u prijenosu podataka. Ako broj gresaka nije veci od (d − 1)/2, sve se greske
mogu ispraviti na ovaj nacin. Za linearne kodove problem pronalazenja najblize kodne rijeci
je vrlo tezak. U McEliecevom kriptosustavu koristi se posebna klasa binarnih Goppinih
kodova za koje postoji ucinkovit Pattersonov algoritam za desifriranje. Parametri Goppinih
kodova imaju oblik n = 2m, d = 2t+ 1, k ≥ n−mt. Vise informacija o binarnom Goppinom
kodu dostupno je u knjizi Algebraic Coding Theory autora Elwyn R. Berlekampa, kao i u
njegovom clanku Goppa Codes objavljenom u casopisu IEEE Transactions on information
theory koji je dostupan na internetu.
5.2 Opis
Ponovno je prije pocetka komunikacije potrebno odabrati javni i privatni kljuc. U McEli-
ecevom kriptosustavu osobe generiraju kljuceve na slijedeci nacin:
1. parametri n, k, t ∈ N, k ≤ n, su zajednicki parametri sustava
2. svaka osoba provodi slijedece korake
3. izabrati k×n generirajucu matricu G za binarni [n, k]-linearni kod C koji moze ispraviti
t pogresaka i za koji je poznat ucinkovit algoritam za desifriranje, npr. binarni Goppin
kod
4. izabrati nasumicnu k × k invertibilnu matricu S nad Z2
5. izabrati nasumicnu n× n permutacijsku matricu7 P
7Permutacijska matrica: Permutacijska matrica n×n, n ∈ N, je matrica koja u svakom retku i svakomstupcu sadrzi tocno jednu jedinicu, dok su ostali elementi nule.
27
6. izracunati k × n matricu G′ = SGP
7. (G′, t) je javni, a (S,G, P ) privatni kljuc.
Nakon odabira kljuceva, Alice i Bob odreduju nacin sifriranja i desifriranja poruka u McE-
liecevom kriptosustavu.
Sifriranje:
1. Alice prima Bobov autenticni javni kljuc (G′, t),
2. zapisuje otvoreni tekst kao binarni vektor m duljine k,
3. odabire nasumicni binarni vektor pogreske z duljine n koji ima najvise t jedinica,
4. racuna sifrat c koji je binarni vektor c = mG′ + z,
5. salje Bobu sifrat c.
Desifriranje:
1. Bob racuna c′ = cP−1, gdje je P−1 inverzna matrica permutacijske matrice P ,
2. primjenjuje algoritam za desifriranje (binarnog Goppinog) koda generiranog matricom
G, kako bi iz c′ izracunao m′
3. racuna m = m′S−1.
Slijedi definicija McEliecevog kriptosustava.
Definicija 5.1. McElieceov kriptosustav: Neka je G generirajuca matrica za [n, k, d]-linearni
kod C koji moze ispraviti t pogresaka. Neka je S invertibilna k × k matrica nad Z2 te P
n × n permutacijska matrica. Stavimo G′ = SGP i definiramo M = Z2k, C = Z2
n,K =
{(G,S, P,G′, t)}. (G′, t) je javni, a (G,S, P ) privatni kljuc.
Za (G,S, P,G′, t) ∈ K definiramo
Ee(m, z) = mG′ + z,
gdje je z ∈ Z2 slucajno generirani vektor pogreske tezine t = (d− 1)/2.
Sifrat c ∈ Z2 desifriramo tako da izracunamo c′ = cP−1, zatim desifriramo c′ i dobijemo
kodnu rijec m′ ∈ C koja je najbliza c′ i konacno izracunamo m = m′S−1.
Uocimo da c′ mozemo desifrirati jer je kodiran binarnim Goppinim kodom G, a c ne mozemo
jer je kodiran s G′ za koji ne postoji ucinkovit algoritam za desifriranje.
28
Nadalje cemo pokazati kako je desifriranje ispravno provedeno.
Buduci da je
c′ = cP−1 = (mG′ + z)P−1 = (mSGP + z)P−1 = (mS)G+ zP−1
i zP−1 je vektor tezine t, algoritam za dekodiranje npr. binarnog Goppinog koda desifrira c′
u m′. Na poslijetku je m′S−1 = m i desifriranje je ispravno.
Zajednicki parametri sustava koje je McEliece predlozio bili su n = 1024, t = 50 i k ≥ 524.
Medutim, trenutno se optimalnim izborom parametara za binarne Goppine kodove smatraju
n = 1024, t = 38 i k ≥ 644, sto je rezultiralo povecanjem velicine javnog kljuca na velicinu
od otprlike 219 bitova i faktorom povecanja poruke od 1.6.
Primjer 5. Alice zeli poslati poruku Bobu koristeci McElieceov kriptosustav. Poruka je
m = (1, 0, 1, 1).
Odabir kljuceva: Bob za G odabire prethodno navedenu generirajucu matricu za [7, 4, 3]-
kod, t = 1, dok za matrice S i P uzimamo:
S =
1 0 0 11 1 0 10 1 0 11 1 1 1
, P =
0 0 1 0 0 0 01 0 0 0 0 0 00 0 0 0 1 0 00 0 0 0 0 1 00 0 0 0 0 0 10 1 0 0 0 0 00 0 0 1 0 0 0
.
Zatim, Bob racuna
G′ = SGP =
0 0 1 1 0 1 01 0 1 0 0 1 11 1 0 0 0 1 01 0 1 0 1 0 0
.Bobov javni kljuc je (G′, t), a njegov privatni kljuc je (S,G, P ).
Sifriranje: Pretpostavimo kako je Alice izabrala binarni vektor pogreske z = (0, 1, 0, 0, 0, 0, 0).
Alice racuna sifrat c = mG′ + z = (0, 0, 0, 1, 1, 0, 0) i salje sifrat c Bobu.
Desifriranje: Kako bi desifrirao c, Bob prvo racuna c′ = cP−1 = (0, 0, 1, 0, 0, 0, 1) te koristi
algoritam za desifriranje [7, 4, 3]-koda i desifrira c′ u m′ = (0, 0, 1, 0). Zatim, Bob racuna
otvoreni tekst m = m′S−1 = (1, 0, 1, 1).
29
5.3 Sigurnost
Zadatak pasivnog protivnika je otkriti otvoreni tekst m iz pripadnog sifrata c uz poznavanje
primateljevog javnog kljuca (G′, t). Poznata su nam dva osnovna napada na McElieceov
kriptosustav.
Kao prvo, protivnik moze pokusati izracunati generirajucu matricu G binarnog Goppina
koda i zatim primjeniti Pattersonov algoritam za desifriranje. Medutim ne postoji ucinkovit
algoritam za racunanje matrice G.
Nadalje, protivnik bi mogao pokusati doznati otvoreni tekst m izravno iz nekog sifrata c
na slijedeci nacin. Protivnik nasumicno odabire k stupaca matrice G′. Neka G′k, ck, zk
oznacavaju restrikcije od G′, c, z na tih k redaka, tada je (ck + zk) = mG′k. Ako je zk = 0 i
G′k invertibilna, otvoreni tekst m moze se zadobiti rjesavanjem sustava jednadzbi ck = mG′k.
Buduci da je vjerojatnost da je zk = 0, tj. da odabranih k bitova nisu bili u pogresci, jednaka
samo(n−tk
)/(nk
), vjerojatnost ovog napada je zanemarivo mala.
Zapravo, McElieceova enkripcijska shema, uz koristenje binarnog Goppinog koda, do sada
odolijeva kriptoanalizi. Takoder, operacije sifriranja i desifriranja su mnogo brze nego, na
primjer, u RSA kriptosustavu. Ipak, zbog cinjenice da se u javnom i privatnom kljucu nalaze
velike matrice i zbog toga sto je sifrat veci otvorenog teksta, McElieceov kriptosustav nema
vece prakticne primjene.
30
Literatura
[1] A. Dujella, M.Maretic, Kriptografija, Element, Zagreb, 2007.
[2] B. Ibrahimpasic, E. Lidan, Digitalni potpis, Osjecki matematicki list, 10 (2010), 139-148.
[3] I. Matic, Uvod u teoriju brojeva, skripta, Odjel za matematiku, Sveuciliste J. J. Stros-
smayera u Osijeku, Osijek, 2011.
[4] A.J. Menezes, P.C. von Oorschot, S.A. Vanstone, Handbook of applied cryptography,
CRC Press, Boca Raton, 1996.
31