You are on page 1of 23

Seminarski rad

:
RSA algoritam
teorija i implementacija

predmet: Izabrana poglavlja iz Informacionih tehnologija
Student:
´
Andreja Ilic
Prirodno Matematiˇcki Fakultet, Niˇs
e-mail: andrejko.ilic@gmail.com

Mentor:
´
Dr Jelena Ignjatovic
Prirodno Matematiˇcki Fakultet, Niˇs
e-mail: jkovac@pmf.ni.ac.rs

Jun, 2011

1

Uvod

Kriptografija je nauˇcna disciplina koja se bavi prouˇcavanjem metoda za slanje poruka u
takvom obliku da ih samo onaj kome su namenjene moˇze proˇcitati. Sama reˇc kriptografija
je grˇckog porekla i u doslovnom prevodu znaˇci: tajno pisanje. Ukoliko bi modernu kriptografiju predstavili Venovim dijagramom, ona bi pripadala preseku matematike i teorije
algoritama. Kao takva predstavlja jako vaˇznu i lepo granu primenjene matematike.
Osnovni zadatak kriptografije je da omogu´ci dvema osobama, koje ´cemo oznaˇciti sa
A i B 1 , komuniciraju preko nesigurnog komunikacionog kanala na takav naˇcin tre´ca osoba, koja moˇze nadzirati komunikacioni kanal, ne moˇze razumeti samo poruku. Osobu
A ´cemo zvati poˇsiljilac a osobu B primaoc. Za poruku kaˇzemo da je otvoreni tekst
(eng. plaintext). Proces maskiranja poruke, koja ima svrhu sakrivanja njenog sadrˇzaja,
zove se ˇ
sifrovanje (engl. encryption). Rezulat ovog procesa se naziva ˇ
sifrat (engl.
ciphertext). Inverznim procesom se od ˇsifrata dobija poˇcetni otvoreni tekst.
Oznaˇcimo sa P otvoreni tekst a sa C ˇsifrat. Pod tekstom moˇzemo podrazumevati
proizvoljan tekstualni fajl, niz bitova, digitalizovana slika... U opˇstem sluˇcaju se poruka
1

U literaturi su za njih rezervisana imena Alice i Bob, ˇsto je zgodno zbog poˇcetih slova. Ovu notaciju
je uveo Bruce Schneier u knjizi Applied Cryptography.

1

ˇ
Slika 1: Sifrovanje
i deˇsifrovanje
prvo prevodi u neki ceo broj ili niz brojeva ˇcime bi se omogu´cila manipulacija pomo´cu aritmetike raˇcunara (ˇsifrovanje i deˇsifrovanje obiˇcno obavlja raˇcunar). Bez gubljenja opˇstosti
ˇ
´cemo nadalje pod porukom podrazumevati ceo broj. Sifrovanje
i deˇsifrovanje moˇzemo
opisati funkcijama E i D za koje vaˇzi da je
C = E(P )

P = D(C)

D(E(P )) = P

Kriptografski algoritam moˇzemo posmatrati kao funkciju koja se koristi za ˇsifrovanje
odnosno deˇsifrovanje. Poˇsiljilac i primalac moraju da se dogovore oko procedure ˇsifrovanja
odnosno deˇsifrovanja. Savremeni kriptografski algoritmi koriste kljuˇ
c (eng. key) - ˇcime
se procedura sastoji od neke opˇste metode zajedno sa kljuˇcem koji je upotpunosti opisuje.
Kljuˇc obezbedjuje specifiˇcne informacije koje, zajedno sa opˇstom metodom, dopuˇstaju
jednostavno ˇsifrovanje od starne poˇsiljaoca i lako deˇsifrovanje na strani primaoca. Medjutim, bilo ko da presretne prenos, zakljuˇci´ce da je otkrivanje orginalne poruke bez kljuˇca
nepraktiˇcno ˇcak i ako se zna sam metod. Veˇstina ili nauka razbijanja ˇsifrata naziva se
kriptoanaliza. Oblast matematike koja obuhvata i kriptografiju i kriptpanalizu naziva se
kriptologija. Kljuˇc k moˇzemo posmatrati kao element iz skupa parametarizacije funkcija
koje definiˇsu kriptografski algoritam. Zato navedene funckije E i D piˇsemo kao Ek odnosno
Dk . Opisani skup parametarizacije naziva se prostor kljuˇceva. U opˇstem sluˇcaju kljuˇcevi
za ˇsifrovanje i deˇsifrovanje ne moraju biti jednaki. U tom sluˇcaju moˇzemo imati da je
C = Ek1 (P ) i P = Dk2 (C).
Osnovna podela algoritama sa kljuˇcem je na:
• Simetriˇ
cne algoritme (eng. Symmetric-key algorithm) su algoritmi kod kojih
se kljuˇc sa deˇsifrovanje moˇze izraˇcunati na osnovu kljuˇca sa ˇsifrovanje i obrnuto. U
velikom broju sluˇcajeva su ovi kljuˇcevi zapravo identiˇcni. Alternativni naziv za ovu
klasu algoritama je algoritmi sa tajnim kljuˇ
cem. Simetriˇcni algoritmi se mogu
dalje podeliti na: lanˇ
cane ˇ
sifre (eng. stream cipher) i blokovske ˇ
sifre (eng.
block cipher). Lanˇcane ˇsifre obradjuju bit po bit otvorenog teksta dok blokovske
rade nad otvorenim tekstom podeljenim na grupe bitova. Tipiˇcna veliˇcina bloka je
128 bitova.
• Asimetriˇ
cne algoritme (eng. Public-key cryptography) su algoritmi sa takozvanim javnim kljuˇcem. Kljuˇc za ˇsifrovanje je javan i razliˇcit je od kljuˇca za deˇsifrovanje.
Naravno kljuˇc za deˇsifrovanje, kod ovog tipa algoritama, ne moˇze se (u bilo kom
razumnom vremenu) izraˇcunati na osnovu javnog kljuˇca.
Osnovni cilj kriptografije je oˇcuvanje tajnosti poruke odnosno odbrana tajnosti njenog
sadrˇzaja od nekog ko ”prisluˇskuje” kanal veze - napadaˇca. Sa druge strane videli smo da je
2

. Ime je dobio po svojim pronalazaˇcima (R. Za neki algoritam kaˇzemo da je bezuslovno siguran ukoliko je nemogu´ce rekonstruisati otvoreni tekst bez obzira na koliˇcinu infromacija koju poseduje kriptoanalitiˇcar. Na osnovu ovih parova potrebno je na´ci kljuˇc kojim su one kreirane.kriptoanaliza nauka ili veˇstina odredjivanja otvorenog teksta na osnovu poruke (bez samog poznavanja kljuˇca). U daljem delu analizira´cemo RSA algoritam i njegovu primenu. U ovom radu je prikazan deo poruke. . Jedino se sluˇcajna ˇsifra ne moˇze razbiti ˇcak i u sluˇcaju neograniˇcenih resursa. . Osnovna podela je izvrˇsena prema koliˇcini inforomacija koju sam napadaˇc poznaje (u svim varijantama se predpostavlja da napadaˇc poznaje algoritam za ˇsifrovanje): 1. Pn koje nisu poznate. Shamir. Ovo je mo´cniji napad od prethodnog jer se poruke mogu birati tako da daju ˇsto viˇse informacija o samom kljuˇcu. Analiza do sada nije dokazala ali ni opovrgnula sigurnost ovog najpopularnijeg sistema. napad na osnovu ˇ sifrata: Napad na osnovu ˇsifrata predstavlja najopˇstiji i najteˇzi napad. Cn koji su dobijeni preko poruka P1 . . (Pn . Pored toga bi´ce analizirana i njegova implementacija sa akcentom na testove prostosti koji su neophodni za generisanje velikih prostih brojeva.ˇcije je razbijanje praktiˇcno neizvodljivo. (P2 . Rivest. taˇcnije test. koju je NSA nedavno uˇcinila javnom. Dodatak A sadrˇzi interesantnu poruku. 3 . godine. RSA metod je patentiran 1983. . Naime. Par poznatijih napada i njihove odbrane za RSA algoritam ´ce biti prikazane u kratkim crtama. Zadak je isti kao i u prethodnim napadima. Naravno ovo ne sme zavisiti od same tehnologije i brzine raˇcunara. ˇ sifrat): O ovom sluˇcaju kriptoanalitiˇcar poseduje odredjeni broj poruka i njihovih ˇsifrata: (P1 . Cn ). 2 RSA algoritam RSA kriptosistem je najpoznatiji primer asimetriˇcnog ˇsifarskog sistema. Sigurnost algoritma se meri preko broja operacija koje treba izvrˇsiti prilikom njenog razbijanja. . C2 ). koji je istekao u jesen 2000. a objavljen je 1977. Medjutim od iteresa su nam oni algoritmi koji su praktiˇcno sigurni . godine. . . kriptoanalitiˇcar moˇze za proizvoljnu poruku dobiti ˇsifrat. C1 ). Adlema). P2 . . napad na osnovu parova (otvoren tekst. godine. 2. 3. Kriptoanalitiˇcar ima na raspolaganju odredjeni broj ˇsifrata: C1 . . napad na osnovu izabranog otvorenog teksta: Ova klasa napada je lakˇsa od prethodne dve. C2 . More ideja koje oni kriju iza sebe se mogu iskoristiti za takmiˇcarske problema iz programiranja. . A. Postoji nekoliko tipova kriptoanalitiˇckih napada. and L. U Dodatku B prikazano je nekoliko interesantnih problema iz kriptoanalize koji su bili na nekim od medjunarodnih olimpijada. Problem je deˇsifrovati ove poruke (i na´ci algoritam za deˇsifrovanje novih poruka) odnosno generalnije na´ci kljuˇc k koji je koriˇs´cen za ˇsifrovanje. Problem kriptografije kao i kriptoanalize je jako interesantan ve´cini matemati´cara i programera. .

1 Neka vaˇze uslovi opisani u prethodnom delu teksta. φ(n) = (p − 1)(q − 1). Ovom smenom u stepenu broj ci dobijamo: 1+t(p−1)(q−1) cdi = med i = mi 1+t(p−1)(q−1) Kako je φ(n) = (p−1)(q−1) na osnovu Ojlerove teoreme imamo da je i broj mi mi deljiv sa n = pq. Sloˇzenost nalaˇzenja ovih brojeva je O(log n) (ukoliko pretpostavimo da se aritmetiˇcke operacije izvrˇsavaju u konstantnom vremenu). mk ) Analogno ´ce se i sam ˇsifrat sastojati od blokova ci iste duˇzine k. Oznaˇcimo ove proste brojeve sa p i q. spreˇciti da bilo ko sazna njihovu vrednost osim vlasnika javnog kljuˇca. Brojevi p i q nisu viˇse potrebni i treba ih obrisati tj. Posmatra´cemo Ojlerovu funkciju broj n. n) = (79. n − 1]. Na ovaj naˇcin dobijamo poruku predstavljenu preko niza brojeva: m = (m1 . ˇcija vrednost oznaˇcava broj brojeva manjih od n koji su uzajamno prosti sa njim. Broj e = 79 smo izabrali kao prozivoljan koji je uzajamno prost sa φ(n) = 3320. Konaˇcno imamo da par (e. . tako da je za njegovu primenu potrebno poruku m podeliti na blokove tako da se svaki od njih moˇze jednoznaˇcno predstaviti brojem iz segmenta [0. dobijamo reˇsavanjem jednaˇcine ed ≡(p−1)(q−1) 1 Kako je e uzajamno prost sa brojem φ(n) = (p − 1)(q − 1). odredjujemo kao sluˇcajan broj e iz segmenta [1. a broj d tajni kljuˇc. RSA je blokovski algoritam. n) predstavlja javni kljuˇc. Ovde se pod veliki brojem podrazumevaju brojevi reda veliˇcine 10100 . Algoritam za generisanje velikih prostih brojeva opisan je u sekciji: Testovi prostosti. funkcije: Naredna teorema pokazuje korektnost ove Teorema 2. a njihov proizvod sa n = pq. Postupak ˇsifrovanja je: ci = mei mod n Deˇsifrovanje se vrˇsi inverznom funckijom. odnosno kljuˇc za ˇsifrovanje. tajni kljuˇc d nalazimo kao inverz broj 79 4 . φ(n)] koji je uzajamno prost sa φ(n). Javni kljuˇc. −  Primer: Posmatra´cemo RSA algoritam u sluˇcaj kada je p = 47 i q = 71. m2 . Tada vaˇzi da je cdi ≡n mi ˇ Dokaz: Sifrat ci smo dobili kao ci = mei mod n. Gornja jednaˇcina se moˇze zapisati u obliku de + t(p − 1)(q − 1) = 1 koja predstavlja linearnu Diofantovu jednaˇcinu za koju vaˇzi da je na desnoj strani najve´ci zajedniˇcki delilac brojeva ˇciju linearnu kombinaciju razmatramo. 3337).Kljuˇceve RSA algoritma dobijamo preko proizvod dva velika prosta broja. Kao ˇsto smo napomenuli. Kljuˇc d za deˇsifrovanje. . Odavde direktno sledi traˇzena jednaˇcina. . gornja jednaˇcina ima reˇsenje koje se dobija Euklidovim algoritmom. . Za javni kljuˇc izaberimo (e.

m6 ) ˇ Sifrovanjem prvog bloka dobijamo da je c1 = 68879 (mod 3337) = 1570. 1 2 3 4 5 6 7 2. e = randomInt(1. 966. f ). 9 return (e. 687. f ) ̸= 1) do e = randomInt(1. m4 . m3 . f ).po modulu 3320: 3220 = 40 · 79 + 60 79 = 1 · 60 + 19 60 = 3 · 19 + 3 19 = 6 · 3 + 1 3 = 1·1 Preko ovih vrednosti dobijamo da najve´ci zajedniˇcki delilac brojeva 3220 i 79 moˇzemo izraziti kao njihovu linearnu kombinaciju: 1 = 1019 · 79 − 25 · 3220 odakle sledi da je d = 1019. 2714. Analognim postupkom dobijamo da je c = (1570. Problem faktorizacije brojeva se smatra NP teˇskim. n) i d. U daljem delu ovog poglavlja izloˇzi´cemo nekoliko mogu´cih napada na RSA sistem i ukratko ih opisati: 5 . 3) = (m1 . m5 . end Inicijalizovati broj d ∈ [1. 2423. 232. 2756. U ovom konkrentom sluˇcaju se poruka moˇze razbiti na trocifrene blokove ˇcime dobijamo da je m = 6882326879666683 = (688. 2276. 668. while (gcd(e. faktorizacijom broja n koji je element javnog kljuˇca se jednostavno moˇze na´ci tajni kljuˇc za deˇsifrovanje. 158) Algoritam A: Generisanje kljuˇceva RSA algoritma 8 Output: Javni i tajni kljuˇc RSA algoritma Neka su p i q veliki sluˇcajni prosti brojevi. n = pq. f ] takva da je ed ≡f 1. f = (p − 1)(q − 1).1 Napad na RSA sistem Sigurnost RSA algoritma se oslanja na problem faktorizacije velikih brojeva. m2 . Zaista. Da bi ˇsifrovali poruku m = 6882326879666683 prvo je moramo razbiti na blokove.

pri ˇcemu vaˇzi da je p < q < 2p. Medjutim uspostavlja se da ovo dovodi do polinomialnog algoritma za razbijanje RSA sistema. Iz prethodne teoreme moˇzemo videti da bi u suprotnom razliˇciti primaoci mogli da faktorizacijom broja n dodju do kljuˇceva ostalih. Dokaz: Dokaz izvodimo na osnovu aproksimacije veriˇznim razlomcima. Deljenjem ove jednaˇcine sa dφ(n) dobijamo . Tada postoji polinomijalni algoritam koji na osnovu javnog kljuˇca izraˇcunava broj d. tada postoji polinomijalni algoritam za faktorizaciju broj n.2 Neka je (e. tada ovu jednaˇcinu moˇzemo predstaviti u obliku 1 = ed − kφ(n).• Faktorizacija velikih brojeva (eng. n) javni RSA kljuˇc. Teorema 2. Kako vaˇzi da je de ≡φ(n) 1. Taˇcnije imamo da vaˇzi slede´ca Teorema 2. Neka je RSA kljuˇc izabran tako da je d < 31 n1/4 . n). Sa druge strane imamo da je samo nalaˇzenje kljuˇca d ekvivalentno sa faktorizacijom broj n. Factoring large integers) Prvi i najoˇcigledniji napad na RSA sistem je faktorizacija broj n iz javnog kljuˇca (e. Trenutno najbolji algoritmi za faktorizaciju su daleko od pretnje RSA algoritmu. c (eng. Low private exponent) • Mali tajni kljuˇ U ˇzelji da se smanji vreme dekripcije moˇze se do´ci na ideju uzimanja malog broja d. Odavde sledi da se isti broj n ne sme koristiti za razliˇcite vrednosti broj ei . Ukoliko je poznat privatni kljuˇc d.3 (Teorema Wienera) Neka je n = pq.

.

.

e k .

.

1 .

.

φ(n) − d .

Taˇcna vrednost broj φ(n) nije poznata ali se moˇze aproksimirati sa n jer je φ(n) = n − p − q + 1. Polaznu jednaˇcinu moˇzemo transformisati u . √ √ Kako je p + q − 1 < 3 n imamo da vaˇzi nejednakost |n − φ(n)| < 3 n. = dφ(n) e Iz gornje jednaˇcine vidimo da je kd dobra aproksimacija broj φ(n) .

.

.

.

.

.

√ .

.

ed − kφ(n) − kn + kφ(n) .

.

1 − k(n − φ(n)) .

3k n .

e k 3k .

=.

.

≤ .

− .

=.

≤ √ .

.

.

.

n d.

.

nd nd nd d n Kako je e ≤ φ(n) i vaˇzi da je kφ(n) = ed − 1 ≤ ed imamo da je k < d < Konaˇcno dobijamo da je: .

.

.

e .

.

− k.

≤ 1 ≤ 1 .

n d .

a1 . am ]. . . . dn1/4 d2 1 1/4 . Odavde se moˇze dobiti taˇcna vrednost za φ(n). . Jedan od njih ´ce biti jednak upravo kd . Delimiˇcni razlomci pqii konvergiraju broju ne . 3n Sada moˇzemo posmatrati razvoj broj ne u veriˇzni razlomak [a0 . Reˇsavanjem kvadratne jednaˇcine x2 − ((n − φ(n)) + 1)x + n = 0 6 .

Medjutim postoji i ”zaobilaznice” ovog problema: – veliko e: Umesto uzimanja broj e po modulu φ(n). kako bi se saˇcuvao od ovog napada. primality test) predstavlja algoritam za utvrdjivanje da li je dati broj prirodni broj prost ili ne. U mnogim sluˇcajevima. za neko veliko t. Za razliku od problema faktorizacije brojeva. n) pri ˇcemu je e′ = e + tφ(n).  Obiˇcno je n 1024-bitni broj. Na naˇsu sre´cu.1 (Prime number theorem) Za gore opisanu funkciju π vaˇzi: π(x) =1 x→∞ x/ ln x lim 7 . ovaj tip algoritma samo utvrdjuje da li je broj prost ili ne i ne mora vratiti nikakvu informaciju o njegovim prostim ˇclanovima ukoliko je sloˇzen.dobijamo traˇzene proste faktore p i q broja n. 3 Testiranje prostosti Test prostosti (eng. moˇzemo za javni kljuˇc definisati par (e′ . broj prostih brojeva koji su manji ili jednaki broj x. x ∈ R+ . Gustinu prostih brojeva u skupu celih moˇzemo opisati preko slede´ce Teorema 3. prosti brojevi nisu tako retki. Ako pretpostavimo da su brojevi dp = d mod (p − 1) i dq = d mod (q − 1) relativno mali. Ovo je sa druge strane veliki minus za relane probleme koji zahtevaju jako brzu dekripciju (primera radi kod kreditnih kartica). potrebno je na´ci veliki sluˇcajan prost broj. Oznaˇcimo sa π(x). Algoritam je polinomialne sloˇzenosti jer se svodi na nalaˇzenje reprezentacije broj u veriˇzni razlomak (koji se raˇcuna preko rekurentnih relacija za delimiˇcne razlomke). Na osnovu teoreme vidimo da kljuˇc d mora biti barem 256-bitni broj. Gornjom pretpostavkom nije uslovljeno da sam kljuˇc d mora biti mali. – upotreba CRT: Brza dekripcija se moˇze izvrˇsiti upotrebom Kineske teoreme o ostacima. Ovo ne utiˇce na korektnost RSA algoritma ali utiˇce na ˇcinjenicu da k iz dokaza teoreme pos√ toje veliko. Proverom moˇzemo videti da ukoliko je e′ > n n tada bez obzira na veliˇcinu kljuˇca d gore opisani napad viˇse nije mogu´c. kao npr u kriptografiji. dekriptovanu poruku dobijamo reˇsavanjem sistema M = Mp mod p i M = Mq mod q pri ˇcemu je Mp = C dp mod (p−1) odnosno Mq = C dq mod (q− 1).

√ Sloˇzenost ovog algoritma je O( n). Razliˇciti uslovi definiˇsu razliˇcite klase verovatno prostih brojeva. Uspostavlja se da je ova aproksimacija dobra i za male vrednosti broja x. 3. odgovor dobijamo ispitivanje da li ga neki od tih prostih brojeva deli. Medjutim mogu´ce je da se sloˇzen broj prijavi kao prost. Verovatno´ca ove greˇske. verovatno prost broj (eng. . Njihova praktiˇcna primena se oslanja na NP teˇskom problemu faktorizacije brojeva. Pricip rada je slede´ci: neka je n dati prirodni broj za koji ˇzelimo da utvrdimo da li je prost ili ne. probable prime number) oznaˇcava broj koji zadovoljava neki od potrebnih uslova za proste brojeve.1 Fermaov test Fermaov test (eng. Teorema kaˇze da ukoliko je p prost broj i a prirodan broj relativno prost sa p tada vaˇzi da je ap−1 ≡p 1 Eksperimentalno se moˇze primetiti da je ovo tvrdjenje obiˇcno netaˇcno ukoliko je p sloˇzen broj. m = ⌊ n⌋. Kako ´cemo se upoznati u daljem delu ove glave. za astronome). U teoriji brojeva. 8 . je jako mala i sa praktiˇcne strane je prihvatljiva. kako vremensko tako i prostorno. ukoliko zaokruˇzene brojeve iz niza izdvojimo. Na pitanje da li je broj n prost. Prvi algoritam u ovaj klasi. Primera radi za vrednost x = 109 greˇska aproksimacije je manja od 6%. . Ovde se ne sme zanemariti sluˇcaj velikih brojeva. Naime. a memorijska sloˇzenost linearna. √ Prvo napravimo niz brojeva 2. Nakon toga prelazimo na slede´ci element sve dok nismo obiˇsli ceo niz. je Eratostenovo sito. pseudoprimes). Najjednostavniji algoritam za √ dati broj n proverava da li je deljiv nekim od brojeva koji su manji ili jednaki od n. . false positive. Dalje kre´cemo se sa leva na desno kroz listu. tako da moˇzemo uvesti i probabilistiˇ cke metode. 3. Kada naidjemo na neprecrtani broj. postoji dosta algoritama koji spadaju u ovu klasu. Na kraju. . Ovakvi algoritmi nikada ne´ce prijaviti prost broj kao sloˇzen. Ovo nas navodi da se provera prostosti broja n moˇze svesti na raˇcunanje gornjeg ostatka za sluˇcajne vrednosti broja iz intervala [2. Ispitivanje prostosti malih brojeva je vrlo jednostavno. zanemaruju´ci osnovni. Napomenimo ovde da je za naˇse potrebe ”definicija malog broja” razliˇcita od intuitivnog shvatanja (sliˇcno kao i rastojanje.Drugim reˇcima imamo da se funkcija π(x) ponaˇsa kao lnxx . Iznete ideje su jako nepraktiˇcne za naˇse potrebe. Fermat primality test) je prvi probabilistiˇcki test koji se zasniva na maloj Fermaovoj teoremi. n − 1]. Sloˇzeni brojevi koji bi zadovolji ove uslove nazivaju se pseudoprosti brojevi (eng. Njega moˇzemo smanjiti ukoliko uzmemo neki reprezentativni deo i zadovoljimo se rezultatom koji je verovatno taˇcan. Ponavljanjem ovogo postupka odredjeni broj puta dobijamo Fermaov test opisan u Algoritmu B. Sloˇzenost kreiranja Eratostenovog sita je O(n log n). Za opsege standardnih tipova podataka ona se moˇze smatrati konstantnom. glavni problem ovde je prostor pretrage. dobijamo skup svih prostih brojeva koji su manji ili jednaki od m. zaokruˇzujemo ga i precrtavamo sve umnoˇske tog broja (koji su razliˇciti od njega samog).

apsolute pseudoprime ili Carmichael number) ukoliko je k n−1 ≡n 1 za svako k ∈ [2. Najmanji prirodan broj koji zadovoljava ovo je 561 = 3 · 11 · 17. n − 1]. if m ̸= 1 then return f alse. Pokuˇsajmo da okarakeriˇsemo ovu klasu brojeva. 9 . Potpunu karakterizaciju apsolutno pseudoprostih brojeva daje slede´ca Teorema 3. 3. Fermat k-liar) ako je k n−1 ≡n 1. Jedini naˇcin da se utvrdi njihova sloˇzenost je da se za a izabere upravo neki od njegovih prostih ˇcinilaca. end end 12 return true.2 Sloˇzeni broj n nazivamo apsolutno pseudoprostim (eng. d = gcd(a. Glavni. true ako je verovatno prost for k ← 1 to f (n) do Neka je a sluˇcajan broj iz skupa {2. U klasu koju ˇzelimo da ˇsto bolje opiˇsemo spadaju brojevi koji su k-pseudoprosti za svako k iz skupa [2. 1 2 3 4 5 6 7 8 9 10 Test je vrlo jednostavan i elegantan. Sada na osnovu Fermaove teoreme imamo da ukoliko je k n−1 ≡n 1. i jako bitan. Drugim reˇcima to su brojevi za koje posledica teoreme zadovoljena za svako a uzajamno prosto sa n (naravno teorema ne daje dovoljne ve´c samo potrebne uslove). U teoretskom smislu.Algoritam B: Fermaov test prostosti 11 Input: Prirodan broj n koji ispitujemo Output: f alse ako je n sloˇzen. Definicija 3. . . if d > 1 then return f alse. korak Fermaovog testa. n − 1].1 Za sloˇzen ceo broj n kaˇzemo da je k-pseudoprost (eng. tada je n prost broj ili k-pseudoprost. . n − 1}. n). nedostatak ovog algoritma je to ˇsto postoji klasa sloˇzenih brojeva koji ´ce se uvek proˇsunjati kroz 8. alogoritam je polinomijalne sloˇzenosti pri ˇcemu sama sloˇzenost kao i verovatno´ca korektnosti algoritma zavisi od funkcije f (n) (odnosno broja ponavljanja male Fermaove teoreme).2 (Korseltova teorema) Da dati broj n bude pseudoprost potrebno i dovoljno je da vaˇze slede´ci uslovi: • n je sloˇzen • n je kvadratno slobodan • za svaki prosti delilac p broja n vaˇzi da je p − 1|n − 1. end Neka je m jednako an−1 po modulu n. . Zato uvodimo Definicija 3.

za n = 2k + 1 korak 7 moˇzemo implemetirati takodje u logaritamskom vremenu. Ovaj broj je pronadjen preko jednostavnog uslova da svaki aposlutno pseudoprost broj ima barem tri prosta faktora. . . pn . . Sumiranjem dobijamo da je sloˇzenost jedne iteracije Fermaovog testa jednaka O(log2 n). dobijamo traˇzeni uslov. Neka je p proizvoljan prost broj koji deli n. n−1] i p ∈ p1 . Ova grupa je cikliˇcna. Aposlutno pseudoprosti brojevi su jako retki . pk . Ovu dopunu podrˇzava ˇcinjenica da je 95% aposlutno pseudoprostih brojeva manjih od 1016 deljivo nekim prostim brojem manjim od 1000. Kako p ne deli generator a. imamo da je an−1 ≡p 1. Nalaˇzenje gcd-a moˇzemo implementirati preko Euklidovog algoritma ˇcija je sloˇzenost logaritamska u odnosu na sam broj n. . Dovoljno je da pokaˇzemo da p|k n −k za svako k ∈ [2. poslednja kongruencija ˇsetanjem broja p po svim prostim brojevima broj n i uzimanjem njihovog najve´ceg zajedniˇckog delioca. on nije uspeo da i nadje takav broj. dakle postoji element a koji je generator. Verovatno´ca za generisanje apsolutno pseudoprostog broja u ovoj implementaciji je manja od 1/1050 ˇsto predstavlja dobru granicu za praktiˇcnu primenu. za n = 2k an = k 2 (a ) a. Sada imamo da vaˇzi: n|cn − n =⇒ c2 |cn − c ˇsto nije mogu´ce. Ovde smo koristili aproksimaciju broja cifara prirodnog broja n sa log n. Iz p − 1|n − 1 imamo da p|k n−1 − 1. Medjutim oni predstavlaju veliku rupu ovog metoda.  Iako je Korselt naˇsao potrebne uslove za aposlutno pseudoproste brojeve. Sa druge strane moˇzemo uvesti poboljˇsanje da se pored gornjeg algoritma testira i deljivost sa nekom klasom malih prostih brojeva. Program Pretty Good Privacy (PGP) je jedan od programa za kriptovanje koji koristi ovaj test. . Na kraju razmatorimo i samu implementaciju Fermaovog testa kao i njegovu sloˇzenost. Sa druge strane postavlja se pitanje kako efikasno moˇzemo izraˇcunati vrednost an − 1 po modulu n. 10 .Dokaz: (⇒) Neka je n apsolutno pseudoprost broj. Naime. Iz uslova imamo da p|an − a.000 koji su manji od 1016 . Kako je n kvadratno slobodan. Pretpostavimo sada je n nije kvadratno slobodan. Dakle imamo da je n kvadratno slobodan. Kako je a generator imamo da vaˇzi traˇzeni uslov da je p − 1|n − 1. Prvi uslov je zadovoljen po samoj definiciji. Da bi dokazali poslednji uslov posmatra´cemo konaˇcnu grupu Zp× . Naivni pristup simulacije stepenovanja dovodi do nepraktiˇcne sloˇzenosti O(n).primera radi ima ih oko 250. najve´ci problem u algoritmu predstavlaju koraci 3 i 7. Iz male Fermaove teoreme imao da p|k p−1 − 1. (⇐) Neka je n = p1 p2 . . Najmanji ovakav broj je prvi naˇsao Karmikel i kao ˇsto smo videli on je jedak 561 = 3 · 11 · 17. Oznaˇcimo sa c ̸= 1 proizvoljan broj takav da c2 |n. Medjutim koriˇs´cenjem osobine: { (ak )2 .

1 Kvadratnih ostataka po modulu p ima taˇcno p−1 2 . Gauss quadratic reciprocity theorem). i am . Pre svega moˇzemo primetiti da sama jednaˇcina x2 ≡m a. . 2 Dokaz: Primetimo da su brojevi 12 . . gde su i i j razliˇciti brojevi manji ili jednaki p−1 2 . . Ovde ´ce naravno do´ci do nekih ponavljanja pa ´ce kvadratnih ostataka biti manje od m. . (m − 1)2 }. Leˇ simbol (eng. ˇsto je nemogu´ce. moˇze imati ili dva ili nijedno reˇsenje. . Postavlja se pitanje koje su mogu´ce vrednosti elemenata ovog niza ukoliko je n zaista prost broj. .2 Miller-Rabin test Miller-Rabin test prostosti se oslanja na neke jaˇce dovoljne uslove prostih brojeva koje moˇzemo dobiti prouˇcavanjem strukture (Z/nZ)∗ . . .4 Neka je p prost broj ve ci od 2. dok u protivnom kaˇzemo da je a kvadratni neostatak po modulu m. pri ˇcemu je m neparan broj.  11 . a zatim da ostale dobijamo kvadriranjem prethodnih i tako t − 1 puta. Predstavimo n − 1 u formi 2t · m. Posmatrajmo neparan prirodan broj n koji ispitujemo (ako je paran ispitivanje prostosti je trivijalno). i a prirodan broj uzajamno prost sa m. baˇs kao i 2 ) razliˇ p+1 2 2 ( 2 ) . . Ovo je i dalje najpopularniji i najpraktiˇcniji test prostosti. . Njegova implementacija se moˇze na´ci u velikom broju biblioteka koji se oslanjaju na RSA ekripciji (primera radi OpenSSL). Legendre symbol) se definiˇse kao:  ako je a kvadratni ostatak po modulu p ( )  1. ali se determinizam oslanja na nedokazanu Rimanovu hipotezu. Za poˇcetnu taˇcku moˇzemo posmatrati broj am . Definicija 3. U neku ruku teorija brojeva poˇcinje sa modularnom aritmetikom. Ukoliko bi i2 ≡p j 2 . a = −1. U orginalnoj verziji algoritam je deterministiˇcki. Sada t an−1 moˇzemo raˇcunati kao proizvod a2 . Kvadratne ostatke ´cemo definisati kao kvadrate ostataka po nekom modulu tj. . To nas navodi na slede´cu Lema 3. ako je a deljivo sa p Sada moˇzemo razmotriti nekoliko bitnijih teorema i osobina Leˇzandrove funkcije. Pokuˇsajmo da posledice ove teoreme iskoristimo za naˇs test prostosti. 22 . 12 .3. Ukoliko jednacina x2 ≡m a ima reˇsenja. (p − 1) koji predstavljaju iste ostatke samo u drugaˇcijoj permutaciji. ˇsto dobijamo birnanim stenenovanjem. . ( p−1 citi po modulu p. Modifikovanu verziju koju ´cemo mi ovde i izneti je probabilistiˇcka kao i Fermaov test. tada se broj a naziva kvadratnim ostatkom po modulu m. Ovde ´cemo izneti deo ove teorije koji ´ce nam biti potreban. zandrov Definicija 3. ako je a kvadratni neostatak po modulu p  p  0. tada bi imali da je (i − 1)(i + j) deljivo sa p. koji dobijamo kvadriranjem. i a ceo broj koji nije deljiv sa p. kvadratni ostaci po modulu m ´ce biti: {02 . Jedna od prvih i jako bitnih ne trivijalnih teorema iz ove grane teorije brojeva jeste Gausov zakon kvadratnog reciprociteta (eng. Korektnost ovog algoritma se najlakˇse pokazuje kvadratnim ostacima.3 Neka je m prirodan broj ve´ci od 1.

1 ≤ j ≤ p − 1. Kako ovih parova ima p−1 2 . · (p − 1) ≡p −1  Neke lepe posledice Ojlerovog kriterijuma koje ne´cemo dokazivati. tada je ( ) a = (−1)λ p 12 . Ukoliko navedenu jednaˇcinu stepenujemo na p−1 2 dobijamo: af racp−12 ≡p (x2 ) p−1 2 ≡p xp−1 ≡p 1 gde smo u poslednje koraku koristili malu Feramaovu teoremu. + =0 p p p Slede´ca teoreme je poznatija kao Ojlerov kriterijum (eng Euler’s criterion). p−1 2 a po modulu p. postoji jedinstevno j ̸= i. onda je • ( a2 p ( ) a p ( ) = b p ) =1 Lema koje je nama najpotrebnija za analizu Miler-Rabinovog test jeste naredna : Lema 3. p ̸= 2. ukoliko uzmemo njihov proizvod.Kao posledica ove leme dobijamo zanimljivu osobinu Leˇzandrove funkcije ( ( ) ( ) ) 1 2 p−1 + + . ˇcime smo dokazali da ukoliko a jeste kvadratni ostatak po modulu p tada vaˇzi Ojlerov kriterijum. .3 Neka je p neparan prost broj i a priordan broj uzajamno prost sa p. 2a. Wilson’s theorem). Ovo se moˇzemo pokazati sliˇcno dokazu Vilsonove teoreme (eng. . . Tada vaˇzi da: ( ) ( )( ) b • ab = ap zandrove funkcije) p p (multiplikativnost Leˇ • ako je a ≡p b. Teorema 3. . Ako je λ broj negativnih ostataka medju najmanjima po apsolutnoj vrednosti po ostacima brojeva a.. U drugom sluˇcaju imamo da a nije kvadratni ostatak po modulu p pa samim tim i godnja jednaˇcina nema reenja. Primetimo da za svaki broj i iz opsega 1 ≤ i ≤ p−1. .2 Neka je p prost broj a a i b brojevi uzajamno prosti sa p. Tada imamo da vaˇzi jednakost: ( ) p−1 a ≡p a 2 p Dokaz: Razmotri´cemo prvo sluˇcaj kada a jeste kvadratni ostatak po modulu p. prost broj i neka je a ceo broj koji nije deljiv sa p. Samim tim po definiciji imamo da jednaˇcina x2 ≡p a ima reˇsenje u skupu prirodnih brojeva. a preko Vilsonove teoreme.. dobijamo: a p−1 2 ≡p 1 · 2 · . su dati u slede´coj: Lema 3. za koje vaˇzi da je ij ≡p a. .3 (Gausova lema) Neka je p.

p−1 2 . . Po teoremi sa λ smo oznaˇcili broj brojeva u nizu bi koji su ve´ci od [p/2].). Postavlja se pitanje zaˇsto je ovaj algoritam napredniji od Fermaovog testa (u svakom sluˇcaju on ne moˇze biti nekorektniji jer i sam obuhvata Fermaov test). Problem opˇsteg zakona reciprociteta je poznat i kao 9. Upravo zbog toga se najˇceˇs´ce naziva zakonom. Bitna osobina ovog pristupa je da ukoliko je n sloˇzen broj.  Kvadratni zakon recirprociteta smo ve´c pomenuli na poˇcetku ovo dela. p−1 2 ] funkcijom f (x) = −(p − x) koja je bijektivno preslikavanje. . . . p−1 2 a posmatra cemo po modulu p i dobi´cemo niz medjusobno razliˇcitih brojeva b1 < b2 < . tada je verovatno´ca za izbor elementa a koji ´ce dovesti do detekcije sloˇzenosti ve´ca od 0. . Brojeve a. . . Ukoliko zanemarimo −1 u funkciji f (x) dobijamo neki novi niz ˇciji ˇclanovi pripadaju intervalu od 1 do p−1 s tako da 2 . onda vaˇzi: ( )( ) p−1 q−1 p q = (−1) 2 2 q p 2 Ako su p i q neparni prosti Kao direktnu posledica prethodne priˇce moˇzemo opisati Miler-Rabinom test koji je prikazan u Algoritmu C. Uzimaji´ 2 a dobijamo: a p−1 2 ( p−1 p−1 )! ≡p (−1)λ ( )! 2 2 Ukoliko skratimo sve sa ( p−1 sto smemo uraditi jer je taj ˇclan uzajamno prost sa p) 2 )! (ˇ dobijamo da je: p−1 a 2 ≡p (−1)λ Iz Ojlerovog kriterijuma sada imamo traˇzeno tvrdjenje leme. Za komercijalnu upotrebu ovo je jako dobar algoritam. . bikvadratne. Posmatra´cemo broj n koji je apsolutnopseudo prost. Teorema 3. Pokuˇsajmo da dokaˇzemo ovu verovatno´cu. ovde iznosimo samu teoremu. a kako je njih 2 vidimo da se novodobijen niz sastoji baˇs od brojeva 1.. i to baˇ p−1 se svaki ˇclan pojavljuje taˇcno jednom. p−1 ci proizvod brojeva a. . . .. 2a. 2. Pogledajmo na poˇcetku na primeru n = 561 = 3 · 11 · 17 kako se ponaˇca Miler-Rabinov algoritam. Smatra se da moderno doba teorije brojeva poˇcinje upravo otkri´cem i dokazivanjem ovog zakona. Bez dokaza. 13 . Neka je a = 245 sluˇcajno izabran broj. . a ne teoremom. .Dokaz: Razmotri´cemo ovo prebrojavanje na malo drugaˇciji naˇcin.25. dok one koji su manji od [p/2] ne´cemo menjati.4 (Gausov kvadratni zakon reciprociteta) brojevi. Hilbertov problem. Simulacijom algoritma dobijamo slede´cu tabelu: 2 Zakon kvadratnog reciprociteta samo specijalan sluˇcaj opˇsteg zakona racionalnog reciprociteta (on vaˇzi i za kubne. 2a. Ove brojeve 2 ´cemo preslikati u brojeve od [1. < b p−1 .

14 . end end 30 return true. end return f alse. continue. Predstavimo broj n u obliku n = 2t · m. end for i ← 1 to t − 1 do b = b2 . prime = f alse. ukoliko dobijemo da je neki element jednak 1 tada su i svi niˇze od njega takodje jednaki jedinici. Da bi Miler-Rabinom test prijavio broj kao prost. . if (b = ±1 (mod n)) then prime = true. gde je m neparan broj. 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 26 27 28 Broj a a35 a70 a140 a280 a560 mod 3 -1 -1 1 1 1 1 mod 11 3 1 1 1 1 1 mod 17 7 3 9 -4 -1 1 Kada se kre´cemo niz neku od kolona matrice. Pri dokazu teoreme ´ce nam biti potrebna naredna teorema i lema koje ne´cemo dokazivati. Ovo je. end for k ← 1 to f (n) do Neka je a sluˇcajan broj iz skupa {2. kako ´cemo videti. break. .skrenice moraju biti jednake za sve kolone. . skretnice kolona moraju biti sinhronizovane . Prvi red u kome se pojavi jedinica za datu kolunu j nazivamo skretnicom. n − 1}. if (b = −1 (mod n)) then prime = true. b = am (mod n).Algoritam C: Miller-Rabin test prostosti 29 Input: Prirodan broj n koji ispitujemo Output: f alse ako je n sloˇzen. 3. end end if (prime = f alse) then return f alse. . true ako je verovatno prost if (n je paran) then if (n == 2) then return true. end if (b = 1 (mod n)) then return f alse. bitna ˇcinjenica.

Teorema 3. Iz prethodne leme imamo da je nijedan broj iz opsega (0. . broj x zva´cemo Miler-Rabin svedok (u daljem teksu samo svedok) broja n ukoliko njegovim biranjem se n prijavljuje kao sloˇzen. k]. . Prema Kineskoj teoremi o ostacima biranje broja x ∈ [1. Broj x ´ce pripadati skupu Y akko je xtj ≡pi 1 za svako i. Lema 3. . Neka je Ai skup prirodnih brojeva u takvih da je svako y ∈ [1. Zato imamo da barem za jedan 15 . . c. imamo da broj t ne pripada skupu Ai . Oznaˇcimo n−1 = 2s ·t. nk . Sliˇcno sa definicijom u Fermaovom testu. n) = 1 i jednaˇcina xb ≡ c (mod n) ima k > 0 reˇsenja. . Ukoliko pretpostavimo da ovo vaˇzi dobijamo da je broj laˇzova manji od: |Y | + 6 n−1 6n−1 n−1 n−1 n − 1 − |Y | = |Y | + ≤ + = 7 7 7 7 8 7 4 ˇcime bi teorema bila dokazana.5 (Kineska teorema o ostacima) Neka su n1 . .4 Neka su b. pi − 1} zadovoljavaju uslov da je y t ≡pi 1. . nk prirodni brojevi. . pi − 1] vaˇzi y u ≡pi 1. . pi − 1) ne pripada ovom skupu. Pokaza´cemo da je |Y | ≤ n−1 8 i da je broj laˇzova u skupu Zj manji ili jedanak |Zj |/7. Tada Miler-Rabinova metoda (jedna iteracija) prijavljuje broj n kao sloˇzen sa verovatno´com ne manjom od 3/4. . Tada jednaˇcina xb ≡ 1 (mod n) ima k reˇsenja. Z1 . 2. Posmatra´cemo particiju {X. Kako je svaki element paran. . . Potrebno je dokazati da je broj laˇzova nije ve´ci od n−1 4 . x ≡nk ak ima reˇsenje. Dokaz: Neka je n proizvoljan apsolutno pseudoprost broj. Mala Fermaova teorema nam potvrdjuje da pi − 1 pripada skupu Ai . gde je t neparan broj. odnosno Miler-Rabin laˇzov (u daljem tekstu laˇzov) ukoliko prijavljuje da je broj prost. Teorema 3. . a2 . Za proizvoljan niza brojeva a1 . Ovim dobijamo da je skup Ai zapravo skup svih umnoˇzaka broja pi − 1. n2 . . . . . koji su po parovima uzajamno prosti. . .. pri ˇcemu je k ≥ 3. . n prirodni brojevi takvi da je gcd(c. . Pokaza´cemo da najviˇse pola elemenata y ∈ {1. ak sistem kongruencija: x ≡n1 a1 x ≡n2 a2 . . Ovaj skup je zatvoren u odnosu na sabiranje i mnoˇzenje. n − 1]\X je ekvivalentno biranju brojeva xi ∈ [1. 2. Broj n moˇzemo predstaviti u obliku n = p1 p2 . Y. pk . pi − 1] za svako i ∈ [1. n − 1} definisanu kao: • x ∈ X ako x nije uzajamno prost sa n • x ∈ Y ako xt ≡n 1 • x ∈ Zj ako je x2 j ·t (j−1) ·t ≡n 1 ali nije x2 ≡n 1 Jasno je da skup X ne sadrˇzi nijedan laˇzov broj. . jer je ekvivalentan sa dZ za neki prirodni broj d. Zs } skupa {1.6 Neka je n apsolutno pseudoprost broj. pri ˇcemu su proizvoljna dva reˇsenja x1 i x2 kongruentna po modulu n1 n2 ..

+). Ukoliko pretpostavimo korektnost Rimanove hipoteze moˇze se pokazati da je dovoljno proveriti samo mali broj vrednosti broja a kako bi se sa sigurnoˇscu tvrdilo da li je broj n prost ili ne. Na osnovu ovoga dobijamo da svaki od mogu´cih 2k − 1 nizova definiˇsu podskup skupa |Zj | . .  Na poˇcetku smo napomenuli da ovaj algoritam ima i deterministiˇcku verziju. . Oznaˇcimo sa wi element skupa {1.Agrawal-Kayal-Saxena test. pi − 1} zadovoljava da je y t ≡pi 1. . pi − 1] vaˇzi da je y t ̸= 1 (mod pi ). . Kako je k ≥ 3. Na osnovu ovoga dobijamo da kada sluˇcajno biramo brojeve xj . Kako samo sekvenca svih minuseva definiˇse laˇzni Zj ˇcija je kardinalnost jednaka 2k −1 broj i oslanjaju´ci se na ˇcinjenicu da je k ≥ 3. 2. Trenutno najbolji i najpoznatiji deterministiˇcki algoritam je AKS test . i ∈ [1. . Element x ∈ Zj je laˇzov ukoliko je njegova sekvenca jednaka upravo (−. Tada jednaˇcine j−1 y 2 t ≡ 1 (mod pi ). Zato svaki broj x ∈ Zj predstaviti preko niza pluseva i minuseva duˇzine k. k].element y ∈ [1. ˇcime je teorema dokazana. Analogno prvom delu. . Iz ovoga j−1 dobijamo da je x2i t ≡pi ±1. n − 1}\X pripada skupu Y manja od 1/8. . +. Algoritam je naravno polinomijalne sloˇzenosti u odnosu na broj cifara broja n koji se ispituje. 3. pi − 1]. dobijamo da je podskup laˇzova kardinalnosti |Z | manje ili jednake 7j . Problem sa algoritmima baziranim na teoremama koje smo do sada analizirali jeste ˇsto one daju samo dovoljne ali ne i potrebne uslove. pri ˇcemu imamo da taj niz nikada nije jednak (+. pri ˇcemu su verovatno´ce uniformno rasporedjene. Zbog ovoga najviˇse pola elemenata iz skupa {1. Algoritam je publikovan 2002. . Ovim smo aparatom verovatno´ce dokazali da je |Y | ≤ n−1 8 . 2. . . Ostalo je joˇs da pokaˇzemo uslov za skupove Zj . godine u radu pod nazivom ”PRIMES is in P” od strane navedenih Indijskih matematiˇcara. Glavno pitanje koje se postavlja 16 . Konaˇcno dobijamo da je verovatno´ca da sluˇcajno izabran broj iz iz skupa {1. . Za ovaj rad oni su nagradjeni izmedju ostalog sa: Gogel Prize 2006 i Fulkerson Prize 2006. proizvoljan element x ∈ Zj moˇzemo prikazati kao uredjenu k-torku brojeva xi ∈ [1. Podsetimo j se da ako x pripada skupu Zj tada vaˇzi da je x2i t ≡pi 1 za svako i ∈ [1. . . −. Ono ˇsto je potrebno je ekvivalentan uslov definiciji prostog broja koji je podesniji za naˇs problem. n − 1} za koji vaˇzi da je wi ≡pi yi . . Ako su σ i σ ′ dva niza znakova koji se razlikuju samo u i-tom znaku. 2. . Pretpostavimo da skup Zj ima barem jednog laˇzova (inaˇce je oˇcigledno). . Ova granica je aproksimativno jednaka 70(log n))2 . −). tada mnoˇzenje brojem wi definiˇse bijekciju izmedju brojeva sa nizom σ i onih sa nizom σ ′ . . . ova verovatno´ca je sigurno manja od 18 . verovatno´ca da je xtj = 1 (mod pj ) za svako j je manja ili jednaka 21k .3 AKS test Do sada smo analizirali probabilistiˇcke algoritme za testiranje prostosti. . k] imaju barem jedno reˇsenje yi .

h(x)) ako se razlika polinoma a − b moˇze zapisati kao umnoˇzak polinoma h uve´can za umnoˇzak broj n. 17 . Ostale sluˇcajeve je jednostavno dokazati. (2 ⇒ 1) Pretpostavimo da n nije prost broj. Na osnovu iznetih ˇcinjenica moˇzemo pokazati slede´cu Teorema 3.9 Asimptotska sloˇzenost AKS algoritma je O(log 21/2 n). Kako je n deljivo sa c imamo da je n ne deli c ˇsto po uslovu nije mogu´ce. U njemu je dokazana da vaˇzi slede´ca aproksimacija sloˇzenosti ovog algoritma: Teorema 3.7 Slede´ci uslovi su ekvivalentni: • n je prost broj • U prstenu polinoma Zn [x]. Formalan dokaz ovog algoritma se moˇze na´ci u [12]. Tada je n ( ) n−1 ∑ ∑ (n) n n−k k n (x + a) = x a =x +a+ xn−k ak k k n k=0 k=1 ( ) Kako je n prost broj imamo da n| nk za k ∈ [1. faktorijelima velikih brojeva. U prvom sluˇcaju moramo baratati sa polinomima stepena n.  Na ovaj naˇcin smo dobili dva nova uslova: jedan algebarske prirode a drugi kombinatorne. Odavde imamo da vaˇzi i cj || (n−c)! .analizom jeste: Da li je polje Zn dovoljno za definiciju ovakvog uslova? Naime. kombinatorni uslov predstavlja rad sa jako velikim brojevima. Medjutim i u ovim sluˇcajevima moˇzemo nai´ci na probleme. n] i an = a Dokaz: (1 ⇒ 2) Neke je n prost broj.8 Ako polinom (x + 1)n − xn − 1 ima sve koeficiente deljive sa n. pa postoji ne trivijalni delilac c broj n. moˇzemo se rukovoditi posledicom ove teoreme: (x + 1)n ≡ xn + 1(mod n. tada je n stepen prostog broja. Teorema 3. Za sluˇcaj r = 1 dobija se Fermaov test prostosti. Zbog pomenutih nedostataka. n! Neka je cj ||n (ˇsto oznaˇcava da cj |n ali cj+1 ne deli n). pokuˇsajmo da razmatramo prsten polinoma Zn [x] i pokuˇsajmo da vidimo kako bi ovde definisali naˇs problem. Odatle imamo da je (x+a)n = xn +a. (x + a)n = xn + a za svako a ∈ Zn ( ) • U strukturi Zn vaˇzi da je nk = 0 za k ∈ [1. n−1]. ali za vrednosti r > 1 dobijaju se novi kriterijumi. xr − 1) gde za polinome a i b iz Z/nZ piˇsemo a ≡ b(mod n. ( ) ( ) n n j−1 j ˇsto implicira da c || c . Sa druge strane.

if (postoji prost delioc broja n manji ili jednaki r) then return f alse. end for k ← 1 to ⌊log n⌋ do if (n1/k je ceo broj) then return f alse. end end 21 return true. end 20 for b ← 1 to q do if ((x + b)n ̸= xn + b (mod n.Algoritam D: AKS test prostosti 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Input: Prirodan broj n koji ispitujemo Output: f alse ako je n sloˇzen. xr − 1)) then return f alse. end end Neka je r najmanji prost broj takva da je n(r−1)/q ̸= 1 (mod r) i ˇcemu je q najve´ci prost delilac broja r − 1. true ako je prost if (n je paran) then if (n == 2) then return true. end return f alse. 16 17 18 19 18 (2q−1) q ≥ n2⌊ √ t⌋ pri .

08. UAB. SLBKAA. 05. LNONB. LBOAB. SUVUAVBVUBVAV. HLCKACOVLBGOV. LDKBB. LNYBB.C. LEE. AAA. WRBC. QUBB. ABCDEFGHJKLMNOPQRSTUV ABCDEFCHJKLMNOPQRSTUV ABCDEFGHJKLMNOPQR etc . LDMEA. QLAKAA. LGTG. 14. LCKBA. LDKAC. LBOBA. UGJ. LNONA. LFOBC. QHLAALAB. 16. HQLAVBVQLRAVBVRBVAV. LFKDB. 19 . LNOBN. LBRBA. LDOBB. Ovde je iznet samo deo poruke. LFF.4 Dodatak A: NSA test Nedavno je jedan od NSA (National Security Agency) ˇclanaka postao javan. LCPFB. LDRBB. 07. LNIIAA. LBKAA. UCD. LKJARCB. LDPJB. HLFOBSOVLCSOV. LFKBD. SUAB. LARBN. QLRBBB. SLOAVOPVSVOOAVPVSV: HQLAVBVQLllAVBVllBVAV. LFKCKBA. Za celu poruku i njenu analizu pogledati [3]. LNIIEE. LAMCB. SLAA. LBB. LATA. LAA. LFOAOBC. SLOAVPVOPVAV. SHLFOAFLAPFF. SLKAVKPVTVKKAVPVTV . AAAA. LEKDA.G. LRCBKDE. a svaka od njih na odredjene blokove.B. LBIIDB. LCC. 15. LAllBA. QLNOAA. UFJ . QQLCC. LKAKBCKKABC. LDEFGTKKODRJCOERJBKOFRJAOGRJN. HLCDOVLAATRDOVB. 20. 13. LNYFF. LNIIDD. LCMEB. LF"I’OCTBT. LDD. QLNA. AAAAAAA. LCRCA. LKJAOCC. 04. SHLAALBB. SLAOAA. LEKCB. LEKAD. 10. SLKAVPVKPVAV. WKAG. LRCBOCC. LFKAE. LFKEA. LFOCOBA. LEKBC. LDOAD. 19. 03. Signal nije bio neprekidan i time je poruka podeljena na 29 manjih poruka. HLNKBIIRDDDVBODDDVCUVLADDDVLBDDDV. Kao test NSAinim kritoanalitiˇcarima ovo je dato kao veˇzba. 02. 18.E. Naime u njemu su prikazane odredjene poruke za koje je prvo reˇceno da su dobijene preko signala iz svemira. 11. 12. LCKAB. LRBBD. AAAAAA. LBTKATA. LFKAKBC. LAPCC. LABCTKOARJBKOBRJAC. LANTJ. LGKCKAC. LCllDA. LAMDC. LCBATKOCRJBKOBRJAOARJN. LBPJD. SLNIIAA. LRBCKAG. UEJ . HLCAVLAATRAVB. LNMCC. 06. URBCRCB. LBYCA. HLAATRCAVLBAV. LETKBTCT. LGG. QUJG. LARCN. LDKCA. LRBCKDD.D. LFKCC. QLAC. LAOAA. AA. IlLEAVLFKAAV. AAAAA. UBC. SUVLAVBVQLAVBV. 09. 17. HlNLADVLIINADVLARDVB . 01.F. LBMEC. HLJKAAVLGAV . LGKAKBD. 21. LRBCOBD. LFOBOCA. LAMED. LFOAF. LODOEFOODEF. LNMGG. IlUVLABVLNBVLNIIBVRBVB .

Baltic olympiad in informatics (BOI). printf("Input file: ").h> const int len = 10. U opisu problema nije naznaˇceno ˇsta se podrazumeva pod sliˇcnim ali nakon analize reˇsenja problema moˇze se zakljuˇciti da su to verovatno delovi jednog istog dokumenta. int i. . Svaki primer je kriptovan istom metodom. k = (k + 1) % len. Navedene osobine ˇcine ovaj problem jako pogodan za output-only probleme na takmiˇcenjima iz programiranja. *f2. const char *let = "ABCDEFGHIJKLMNOPQRSTUVWXYZ". "wt"). Svaki primer je dat kao uredjeni par (ci . &key[i]). k. 2001 Problem je. f2 = fopen(s2. Algoritam koji je koriˇs´cen za kriptovanje nije opisan u problemu ve´c je dat kao kod. potrebno poznavanje same metode kao i nekoliko primer ˇsifrata i otvorenih tekstova. } Analizom datog koda moˇze se zakljuˇciti da je kljuˇc uredjena 10-orka k = (k1 . printf("Key (%d bytes): ". kako smo videli. k = 0. i < len. s2[250].h> #include <ctype.let) + key[k]) % strlen(let). } fputc(c. • Problem: Crack the Code. char *p. #include <stdio. return 0. . c = let[i]. k10 ) 20 . gets(s1). a di tekst koji je sliˇcan tekstu koji je kriptovan. while ((c = fgetc(f1)) != EOF) { p = strchr(let. f1 = fopen(s1. . c. unsigned char key[len]. kao ˇsto smo napomenuli. .h> #include <string. ++i) scanf("%d". tako da se od takmiˇcara zahtevalo da za svaki od datih primera pronadje kljuˇc. Dekripcija zahteva dublju analizu teksta i njegove statistike. "rt"). gets(s2). len). if (p != NULL) { i = ((p . } fclose(f1). FILE *f1. f2). int main() { char s1[250]. di ) gde je ci kriptovani tekst koji treba dekriptovati.5 Dodatak B: Takmiˇ carski problemi Sam problem koji se nalazi ispred kriptoanalitiˇcara moˇze biti jako interesantan. for (i = 0. Ovde ´cemo izneti nekoliko primera sa poznatijih medjunarodnih takmiˇcenja. output-only i takmiˇcaru su dodeljenja 5 raˇzliˇcita primera. printf("Output file: "). kao i / ili postavljanje odredjenih upita sistemu sa novim otvorenim tekstovima. fclose(f2). Za njegovo reˇsavanje je. toupper(c)).

Nakon ovoga takmiˇcari su trebali definisati funkciju koja ´ce najbolje opisati razliku ovih dokumenata. je manje sigurna nego ˇsto to na prvi pogled moˇze da izgleda.kreirati particija alfabeta i raˇcunati frekvnce grupa. kriptovana poruka se dekriptuje takodje svim mogu´cim kljuˇcevima. challenge24 2006 Veoma interesantana ideja postavke problem. Znaci razmaka i novog reda se preskaˇcu i ostaju nepromenjeni. Q) = 26 ∑ |qi − p1 |2 i=1 pi cava frekvence karaktera u obiˇcnom tekstu tekstu. International Olympiad in Informatics (IOI). 2001 Kao ˇsto se i iz imena problema naslu´cuje. Naime opasnost vreba od takozvanog napada u sredinu (eng. Parametri funkcija su bili: string koji se (de)kriptuje i kljuˇc. nadje oba kljuˇca koja su uˇcestvovala u kritpovanju datog primera. • Problem: Cryptokuo Chawaelleyiengekee. Takmiˇcari na raspolaganju imaju nekoliko test primera koji se sastoje od parova (P. Takodje. a (q)26 pri ˇcemu niz (p)26 i=1 oznaˇ i=1 normirane frekvence karaktera u kriptovnom tekstu. gde je i index karaktera u tekstu (kombinacija viˇse Cezarovih ˇ sifrata). Funkcija koja se pokazala kao najbolja je S(P. Naime tekst problema koji je dat takmiˇcarima je bio kriptovan. Kriptovanje se vrˇsi cikliˇcnim ˇsiftovanjem svakom karaktera ai iz otvorenog teksta za vrednost ki mod 10 . Za duplu enkripcija. Reˇsenje problema je zahtevalo analizu statistike izmedju frekvence slova u parovima tekstova. Drugim reˇcima za data dva kljuˇca k1 i k2 . On funkcioniˇse na slede´ci naˇcin: dati otvoreni tekst P se enkriptuje svim mog´cim kluˇcevima (u naˇsem konkretnom primeru prosto kljuˇceva je kardinalnosti 21 6). Ovo se najbrˇze moˇze uraditi pametnim hash funkcijama. Kako bi se izbegli ˇsumovi malih uˇcestalosti. C) .otvorenog i kriptovanog teksta. takmiˇcarima je bila na raspolaganju biblioteka ˇcije su funkcije za kriptovanje i dekriptovanje bile dostupne. Na osnovu statistike slova kao i nekih kljuˇcnih reˇci 21 . kriptovanje je vrˇseno kao C = Ek2 (Ek1 (P )) Zadatak takmiˇcara je bio da. • Problem: Double Crypt. pod odredjenim uslovima za veliˇcine kljuˇceva. odredjena slova su se mogla grupisati . Problem se svodi na nalaˇzenje istog teksta koji je dobijen opisanim procedurama. Sama metoda nije poznata takmiˇcarima. koja je primenjena u ovo problemu. Kriptovanje je vrˇseno duplim algoritmom.prirodnih brojeva. u problemu se vrˇsila analiza duplog algoritma za kriptovanje. Naime. meet in the middle attack).

22 . vrˇsena je dekripcija teksta problema. Slika 2: Problem sa BubbleCup finala 2011 U prikazanom problemu je jedino deo teksta na kraju problema ’DON’T PANIC’ (ne paniˇci) prikazan da ne bi doˇslo do zabune medju takmiˇcarima.koje ˇcine ˇsablon problema. Nakon dekriptovanja dobija se ’LET’S MATCH’. Sliˇcan ideja je ove proˇsle godine bila i na BubbleCup MDCS takmiˇcenju.

300−17. It is easy to determine whether a given integer is prime. Amer. Rivest and Clifford Stein. Ronald L. Riemann’s hypothesis and test for primality.. Leiserson. 2006 [10] Miller. Addison-Wesley. Knuth. Daleson. Nitin Saxena. NSA Technical Journal. Vol. Algorithms. Menezes. Addison-Wesley. McGregor-Dorsey. Charles E. no. Handbook of Applied Cryptograph. Bull. Neeraj Kayal. 781-793. 2. Paul C.Reference [1] Thomas H. CRC Press. Unclassified [4] Robert Sedgewick. No. Math. Introduction to Algorithms. XIV. van Oorschot and Scott A. Zoran Kadelburg i Duˇsan Djuki´c. 1989 [3] Howard H. Winter 1966. 2004 [7] Alfred J. Journal of Systems and omputer Science (1976). 2006 [9] Zachary S. Vanstone. Soc. Cornell University. The Art of Computer Programming Volume 2. PRIMES is in P. Uvod u teoriju brojeva. 23 . The Miller-Rabin Randomized Primality Test. 1984 [5] Donald E. pp. 1996 [8] A. 3-38. Campaigne. Methods of Primality Testing. The MIT Press. G. Deterministic Primality Testing in Polynomial Time. Boston. [11] Bobby Kleinberg. 1973 [6] Vladimir Mi´ci´c. Addison-Wesley. Beograd. Introduction to Algorithms. Cormen. 2010 [12] Manindra Agrawal. 42:1 (2005). Annals of Mathematics 160 (2004). 2001 [2] Udi Manber. [13] Andrew Granville. 1. Gabriel W. Key To The Extraterrestrial Messages.