<<

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

SEMINARSKI RAD

Kriptoanaliza

Darko Poljak

Zagreb, lipanj 2005. Sadržaj 1. Uvod...... 1 2. Uvod u kriptoanalizu...... 2 3. Kriptoanaliza simetričnih kriptosustava...... 5 3.1. Pretraživanje prostora...... 5 3.1.1. Pretraživanje cijelog prostora...... 5 3.1.2. Pretraživanje pola prostora...... 5 3.2. Linearna kriptoanaliza...... 6 3.2.1. Osnovni supstitucijsko-permutacijski kriptosustavi...... 6 3.2.1.1. Supstitucija...... 8 3.2.1.2. Permutacija...... 8 3.2.1.3. Djelovanje ključa...... 8 3.2.1.4. Dekriptiranje...... 8 3.2.2. Pregled linearne kriptoanalize...... 9 3.2.3. Piling princip...... 10 3.2.4. Analiza komponenti kriptosustava...... 12 3.2.5. Konstrukcija linearnih aproksimacija za cijeli kriptosustav...... 15 3.2.6. Otkrivanje bitova ključa...... 18 3.3. Diferencijalna kriptoanaliza...... 21 3.3.1. Pregled napada...... 21 3.3.2. Analiza komponenti kriptosustava...... 22 3.3.2.1. Utjecaj ključa na razliku u S-kutiji...... 24 3.3.3. Konstruiranje diferencijalnih karakteristika...... 25 3.3.4. Dobivanje bitova ključa...... 28 3.4. Diferencijalno-linearna kriptoanaliza...... 29 3.5. XSL napad na kriptosustave...... 30 3.5.1. XSL-kriptosustav...... 30 3.5.2. Osnovna struktura Rijndaela...... 31 3.5.3. Osnovna struktura Serpenta...... 31 3.5.4. S-kutije i preodređene algebarske jednadžbe...... 31 3.5.4.1. Preodređene jednadžbe nad Serpentovim S-kutijama...... 32 3.5.4.2. Preodređene jednadžbe nad Rijndaelovim S-kutijama...... 32 3.5.5. MQ napad na blokovne kriptosustave...... 33 3.5.5.1. Opis napada...... 33 3.5.6. Metode rješavanja multivarijantnih kvadratnih jednadžbi...... 34 3.5.6.1. Rješavanje MQ sa XL algoritmom...... 34 3.5.7. Prvi XSL napad ...... 35 3.5.7.1. “T' metoda” XSL napada ...... 35 3.5.7.2. Jezgra prvog XSL napada...... 36 3.5.8. Drugi XSL napad ...... 37 3.5.9. Posljedice XSL napada na dizajniranje blokovnog kriptosustava...... 37 3.6. Modulo n kriptoanaliza...... 38 3.6.1. Modulo 3 napad...... 38 3.6.1.1. Aproksimacija rotacija...... 38 3.6.1.2. Aproksimacija zbrajanja modulo 232...... 40 3.6.1.3. Bias i l2 norma...... 40 3.6.1.4. Postupak napada...... 40 3.6.2. Modulo 5 napad...... 41 3.6.3. Modulo 257 napad...... 42 3.6.4. Zaključak uz modulo n napade...... 42 3.7. Meet-in-the-Middle napad...... 43 3.7.1. Opis napada i formuliranje problema traženja kolizije...... 43 3.7.2. Rješavanje problema traženja kolizije...... 44 3.7.2.1. Opis paralelne pretrage kolizije...... 44 3.7.2.2. Usporedba sa prethodnim napadom...... 45 3.7.3. Zaključak uz meet-in-the-middle napad...... 45 4. Kolizije u hash funkcijama...... 46 4.1. Birthday napad...... 46 4.1.1. Wagner-ov općeniti birthday napad...... 48 4.2. Pollardova ro metoda...... 48 4.3. Metoda razlikovnih točaka...... 50 4.4. Multikolizijski napadi na hash funkcije...... 50 4.4.1. Multikolizija klasične hash funkcije...... 51 4.4.1.1. Joux-ov multikolizijski napad na H f...... 51 4.4.1.2. Provedba multikolizije...... 52 4.4.2. Multikolizijski napad na opću sekvencijsku hash funkciju...... 52 4.4.2.1. Generalizirana sekvencijska hash funkcija...... 52 4.4.2.2. Terminologija...... 53 4.4.3. Multikolizijski napad na generaliziranu sekvencijsku hash funkciju...... 53 4.4.4. Napadi na generalizirane hash funkcije bazirane na stablu...... 54 4.4.5. Ukratko o multidomenskom napadu...... 57 4.5. Posljedice kolizija...... 58 5. Kriptoanaliza asimetričnih kriptosustava...... 59 5.1. Problem diskretnog logaritma...... 60 5.1.1. Osnovni napadi...... 60 5.1.2. Pollardova metoda...... 60 5.1.3. Index-calculus metoda...... 62 5.2. Problem faktorizacije...... 63 5.2.1. Eulerova metoda...... 64 5.2.2. Fermatova faktorizacija...... 65 5.2.3. Metoda isključivanja...... 66 5.2.4. Dixonova metoda...... 66 5.2.5. Pollardova ro metoda ...... 67 5.2.6. Brentova metoda...... 68 5.2.7. Pollardova p-1 metoda...... 68 5.2.8. Faktorizacija kvantionskom algebrom...... 68 5.3. Kriptoanaliza u podgrupama od Zn* primarnog reda...... 69 5.3.1. Klasa 1: Nepostojanje “rupe” u podgrupi primarnog reda...... 69 5.3.1.1. Slučaj n=pq=(ordn(g)k + 1)(ordn(g)l+1)...... 70 5.3.2. Klasa 2: Otkrivanjem podgrupe teški problemi postaju laki...... 70 5.3.3. Klasa 3: Redukcija u faktorizaciji cijelih brojeva...... 71 6. Praktični rad...... 72 7. Zaključak...... 76 8. Literatura...... 77 Popis slika

Slika 3.1. Osnovni supstitucijsko-permutacijski kriptosustav...... 7 Slika 3.2. Preslikavanje S-kutijom...... 1 2 Slika 3.3. Primjer linearne aproksimacije...... 16 Slika 3.4. S-kutija s ključem...... 24 Slika 3.5. Primjer diferencijalne karakteristike...... 2 6 Slika 4.1. Primjer Pollard-ove rho metode...... 49 Slika 4.2. Primjer metode razlikovnih točaka...... 50 Slika 4.3. Primjer 6 blokovne hash funkcije bazirane na stablu...... 56

Popis tablica

Tablica 3.1. Reprezentacija S-kutija...... 8 Tablica 3.2. Permutacija...... 8 Tablica 3.3. Primjer linearnih aproksimacija S-kutije...... 13 Tablica 3.4. Linearna aproksimacija...... 14 Tablica 3.5. Rezultati linearne kriptoanalize za dani primjer kriptosustava...... 20 Tablica 3.6. Primjer razlika parova za S-kutiju...... 2 3 Tablica 3.7. Tablica distribucije diferencija...... 2 3 Tablica 3.8. Rezultati diferencijalne analize za primjer kriptosustava...... 29 Tablica 6.1. Popis implementiranih funkcija i važnih varijabli...... 73 1. Uvod

Kriptoanaliza je znanstvena disciplina koja proučava postupke otkrivanja otvorenog teksta bez poznavanja ključa, te postupke otkrivanja ključa uz poznavanje otvorenih i/ili kriptiranih tekstova, ili uz poznavanje nekih informacija o otvorenim i/ili kriptiranim tekstovima.

U ovom radu opisane su neke metode kriptoanalize.

U poglavlju 3. opisani su neki postupci kriptoanalize simetričnih kriptosustava: pretraživanje prostora, linearna kriptoanaliza, diferencijalna kriptoanaliza, diferencijalno-linearna kriptoanaliza, XSL napadi na kriptosustave, modulo n kriptoanaliza i meet-in-the-middle napad.

U poglavlju 4. opisani su neki postupci traženja kolizija u hash funkcijama: birthday napad, Pollardova ro metoda, metoda razlikovnih točaka i multikolizijski napadi na hash funkcije.

U poglavlju 5. opisani su neki postupci kriptoanalize asimetričnih kriptosustava: metode za rješavanje problema diskretnog logaritma, metode faktorizacije i * kriptoanaliza u podgrupama od Zn primarnog reda. Od metoda za rješavanje problema diskretnog logaritma opisane su: osnovni napadi, Pollardova metoda i index-calculus metoda. Opisane metode faktorizacije su: Eulerova metoda, Fermatova faktorizacija, metoda isključivanja, Dixonova metoda, Pollardova ro metoda, Brentova metoda, Pollardova p-1 metoda i faktoriziranje kvantionskom algebrom.

U poglavlju 6. opisana je implementacija linearne kriptoanalize na primjeru DES- a (Data Standard) reduciranog na 3 runde. Ostvarena je linearna kriptoanaliza koja otkriva jedan bit ključa, odnosno otkriva linearni izraz kojim se može dobiti jedan bit ključa uz poznavanje ostalih bitova ključa. U implementaciji se također koristi vlastita implementacija DES algoritma (reduciranog na 3 runde).

1 2. Uvod u kriptoanalizu

Kriptoanaliza svoje korijene vuče iz 650-ih godina kada su teolozi željeli verificirati autentičnost rukopisa uspoređujući konzistentnost različitih riječi. Prava kriptoanaliza je najvjerojatnije počela u Europi. Najpoznatiji uspjeh kriptoanalize bio je 1500-te godine u Engleskoj, koji je doveo do uhićenja i smaknuća škotske Kraljice Marije zbog izdaje. Povijesno, najuobičajeniji postupak kriptoanalize je frekvencijska analiza. Frkevencijskom analizom se izbroji količina svakog slova ili simbola u šifriranom tekstu i usporedi se sa frekvencijom slova u otvorenom tekstu pisanom danim jezikom. Druga poznata metoda je traženje uzoraka jezika. Svaki jezik ima specifične uzorke. Najkorisnije karakteristike su uzorci koji se ponavljaju. Najvažniji ili najpoznatiji događaj u kriptoanalizi bio je razbijanje Zimmermann- ovog telegrama 1917. g. za vrijeme I. svjetskog rata.

Četiri glavne prijetnje sigurnosti su

1. prekidanje 2. presretanje 3. modifikacija 4. izmišljanje

Napadi na sigurnost se mogu razdvojiti u pasivne i aktivne napade. Pasivnim napadom se samo prisluškuje poslana poruka. Pasivni napad je puno teže detektirati nego aktivni napad. Aktivni napad uključuje mijenjanje poruke, maskiranje, ponovno slanje i DoS ('Denial of Service') napade.

Vrste napada:

• Napad poznatim šifriraniim tekstom: ovaj napad je najteži. Kriptoanalitičar poznaje samo algoritam kriptiranja i kriptirane tekstove. • Napad poznatim otvorenim tekstom: za dani kriptirani tekst kriptoanalitičar poznaje odgovarajući otvoreni tekst ili njegov dio. Kriptoanalitičar zna algoritam i 1 do N otvorenih i kriptiranih tekstova, ali ne zna ključ. • Napad odabranim otvorenim tekstom: kriptoanalitičar odabire otvoreni tekst i kriptira ga. Ovaj napad omogućuje pronalaženje slabosti u algoritmu. Kriptoanalitičar zna algoritam, kriptirani tekst i 1 do N odabranih parova otvorenih i kriptiranih tekstova, ali ne zna ključ. • Napad odabranim kriptiranim tekstom: kriptoanalitičar može odabrati kriptirani tekst i na neki način ga dekriptirati i dobiti otvoreni tekst. Također može odabrati neki otvoreni tekst po svojoj želji. Kriptoanalitičar zna algoritam, kriptirani tekst i 1 do N navodnih kriptiranih tekstova sa otvorenim tekstovima, ali ne zna ključ. • Adaptivan napad odabranim otvorenim tekstom: kriptoanalitičar koristi napad odabranim otvorenim tekstom. Rezultati napada se koriste za odabir nekog drugog otvorenog teksta. Ovim načinom moguće je unaprijediti napad. Ovaj napad poznat je pod nazivom "diferencijalna

2 kriptoanaliza". Kriptoanalitičaru je poznat algoritam, kriptirani tekst, odabrani otvoreni tekst sa kriptirani tekstom, te odabrani kriptirani tekst sa otvorenim tekstom. • Birthday attack: ovaj napad je dobio ime po paradoksu rođendana.Više o napadu u poglavlju 3.1. • Meet in the Middle: napad je sličan birthday napadu, osim što kriptoanalitičar može provjeriti sjecište između dvaju skupova, a ne mora čekati pojavljivanje vrijednosti dvaput u jednom skupu. Napad je opisan u poglavlju 2.7. • Napad korištenjem srodnih ključeva: u ovom napadu pretpostavlja se znanje o odnosu između ključeva u dva različita kriptiranja. Napad može otkriti slabosti u postupku generiranja podključeva. • Djelomično znanje o ključu: napadač posjeduje djelomično znanje o tajnom kljluču (npr. zbog “rupe” u postupku generiranja podključeva). U dobrim kriptosustavima, djelomično znanje o ključu ne bi trebalo olakšati pronalaženje ostatka ključa. Ako nije tako, lakše je izvesti iscrpno pretraživanje.

Prema Larsu Knudsenu (1998.), prema količini i kvaliteti otkrivenih tajnih informacija [20] može se klasificirati uspjeh kriptoanalize kriptosustava bloka podataka:

1. Potpuno probijanje ("Total break") - napadač otkriva ključ. 2. Globalna dedukcija ("Global deduction") - napadač otkriva funkcijski ekvivalent algoritma za kriptiranje i dekriptiranje, ali ne nalazi ključ. 3. Lokalna dedukcija ("Instance (local) deduction") - napadač otkriva dodatne otvorene tekstove (ili kriptirane tekstove), nepoznate od prije. 4. Informacijska dedukcija ("Information deduction") - napadač dobiva Shannon-ove informacije o otvorenim tekstovima (ili kriptirane tekstovima), nepoznatih od prije. 5. Algoritam koji omogućuje razlikovanje ("Distinguishing algorithm") - napadač može razlikovati kriptirane tekst od slučajne permutacije.

Također se mogu karakterizirati napadi prema količini potrebnih resursa, i to prema: • vremenu - broj potrebnih primitivnih operacija (osnovne instrukcije ili cijela metoda kriptiranja) • memoriji - količina memorijskog prostora potrebnog za pohranu za vrijeme napada • podacima - količina potrebnih otvorenih i šifriranih tekstova.

Postupci kriptoanalize:

1. Klasična kriptoanaliza: - frekvencijska analiza - Kasiski ispitivanje

3 2. Simetrični algoritmi: - diferencijska kriptoanaliza - linearna kriptoanaliza - mod-n kriptoanaliza - XSL napad 3. Ostale metode: - Birthday attack - Man in the middle attack - DeCSS - Gardening

4 3. Kriptoanaliza simetričnih kriptosustava

Blokovni kriptosustavi otvoreni tekst podijele u blokove i koriste specijalno konstruirane funkcije koje određenim operacijama pomiješaju blok otvorenog teksta sa ključem i dobiva se kriptirani tekst. Da bi se izbjegao napad korištenjem riječnika, koriste se veliki blokovi (64, 128 i više bitova). Ideja se sastoji u aproksimaciji slučajne permutacije na velikom skupu ulaza. Jedna od metoda koje se koriste je korištenje nekoliko transformacija. Osnovne metode koje se koriste su supstitucije i permutacije. U supstituciji se koriste S-kutije, koje su nelinearni dio kriptosustava. S-kutije se kreiraju tako da zadovoljavaju određena svojstva, te da bi bile otporne na kriptoanalizu. U ovom poglavlju opisane se neke metode kriptoanalize simetričnih kriptosustava: pretraživanje prostora, linearna kriptoanaliza, diferencijalna kriptoanaliza, diferencijalno-linearna kriptoanaliza, XSL napad, modulo n napadi, te meet-in-the-middle napad.

3.1. Pretraživanje prostora

3.1.1. Pretraživanje cijelog prostora

Pretraživanje cijelog prostora je najjednostavnija i najsporija vrsta napada. Napadač dekriptira kriptirani tekst sa svim mogućim ključevima koji se mogu pojaviti. Budući da algoritam kriptiranja nije tajan, ovaj napad nije moguće spriječiti.

Napadač kod ovog napada ima poznat otvoreni tekst ili otvoreni tekst ima neku poznatu strukturu. Ovaj napad se najčešće izvodi sklopovski.

3.1.2. Pretraživanje pola prostora

Pretraživanje pola prostora primjenjivo je na kriptosustave koji pokazuju određeno svojstvo simetričnosti i smanjuje vrijeme napada za 50%.

Ako za kriptosustav duljine ključa n vrijedi: C = E(P, K) C' = E(P', K') gdje je P otvoreni tekst, P' bitovni komplement otvorenog teksta, C kriptirani tekst, C' bitovni komplement kriptiranog teksta, te K i K' ključ i njegov bitovni komplement, a E postupak kriptiranja. Ovaj napad koristi se ako je poznat par otvorenog i kriptiranog teksta za koje vrijedi svojstvo komplementa. Za posljednji bit ključa postavi se vrijednost '0' i pretražuje prostor sa preostalih 2 n-1 ključeva. Ako se za neki ključ dobije kriptirani tekst, zaključuje se da je taj ključ pravi ključ. Ako se dobije komplement otvorenog teksta, zaključuje se da je pravi ključ komplement od primjenjenog.

5 3.2. Linearna kriptoanaliza

Linearnu kriptoanalizu predstavio je Matsui na EUROCRYPT '93 kao teoretski napad na DES (), a kasnije je uspješno iskorišten u praktičnoj kriptoanalizi DES-a. Pokazano je da se DES može razbiti uz pomoć 243 poznatih parova otvorenog i kriptiranog teksta, brže nego iscrpnim pretraživanjem [6]. Iako je isprva prezentirana kao napad na DES, linearna kriptoanaliza je primjenjiva na druge blokovne kriptosustave. Mnogi kandidati za AES (Advanced Encryption Standard) su dizajnirani tako da budu otpornosti na linearnu kriptoanalizu.

U opisu linearne kriptoanalize koristi se primjer kriptosusatava iz [5] opisanim u poglavlju 2.2.1.

3.2.1. Osnovni supstitucijsko-permutacijski kriptosustavi

Na slici 3.1. prikazan je kriptosustav kojem je ulaz 16-bitni blok i nad tim blokom se obavljaju osnovne operacije runde, i to četiri puta. Svaka runda se sastoji od

1. supstitucije 2. permutacije bitova 3. djelovanje ključa

Ova osnovna struktura naziva se Feistel struktura, a ove osnovne operacije su slične onima koje se nalaze u DES-u i ostalim kriptosustavima, uključujući Rijndael.

6 Slika 3.1. Osnovni supstitucijsko-permutacijski kriptosustav

7 3.2.1.1. Supstitucija

U prikazanom kriptosustavu, 16-bitni blok podataka se dijeli u četiri 4-bitna podbloka. Svaki podblok čini ulaz u 4x4 S-kutiju (supstitucija sa 4 ulazna i 4 izlazna bita). Najvažnije svojstvo S-kutija je nelinearnost, tj. izlazni bitovi se ne mogu prikazati kao linearna operacija ulaznih bitova.

Linearna kriptoanaliza je jednaka bez obzira radi li se o jednom preslikavanju ili svaka S-kutija ima svoje preslikavanje. U tablici 3.1 je prikazano preslikavanje za S-kutije DES-a. (Prvi redak prve S-kutije). U tablici najznačajniji bit heksadecimalne notacije odgovara najljevijem bitu S-kutije na slici 3.1.

Ulaz 0 1 2 3 4 5 6 7 8 9 A B C D E F Izlaz E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7

Tablica 3.1. Reprezentacija S-kutija

3.2.1.2. Permutacija

Permutacija je jednostavna zamjena bitova ili pozicija bitova. Permutacija sa slike 1 je prikazana u tablici 3.2 (brojevi predstavljaju poziciju bita u bloku, gdje je 1 najljeviji bit, a 16 najdesniji bit) i može se jednostavno opisati kao: izlaz i iz S- kutije j je ulaz j u S-kutiju i.

Ulaz 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Izlaz 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16

Tablica 3.2. Permutacija

3.2.1.3. Djelovanje ključa

U prikazanom kriptosustavu koristi se jednostavan bitovni ekskluzivni ili (XOR) između bitova podključa trenutne runde i ulaznog bloka podataka u rundu. Podključ se upotrebljava do zadnje runde uključivo, što osigurava da se zadnja supstitucija ne može ignorirati.

3.2.1.4. Dekriptiranje

U postupku dekriptiranja, podaci se kroz postupak propuštaju u obrnutom redoslijedu. Preslikavanje u S-kutijama kod dekriptiranja je inverz preslikavanja u

8 postupku kriptiranja. To znači da sve S-kutije moraju biti bijektivne, preslikavanje jedan na jedan sa jednakim brojem ulaznih i izlaznih bitova. Također se primjenjuju podključevi u obrnutom redoslijedu. Ono što osigurava da dekriptiranje bude ista struktura kao i kriptiranje je izostanak permutacije u posljednjoj rundi kriptiranja.

3.2.2. Pregled linearne kriptoanalize

Linearna kriptoanaliza pokušava iskoristiti veliku vjerojatnost pojavljivanja linearnih izraza uključujući bitove otvorenog teksta, bitove kriptiranog teksta i bitova podključeva. Linearna kriptoanaliza je napad poznatim otvorenim tekstom: napadaču je poznat skup otvorenih tekstova i odgovarajućih kriptiranih tekstova. No, napadač ne može odabrati otvorene i odgovarajuće kriptirane tekstove.

Osnovna ideja je da se nađe linearna aproksimacija nelinearnih S-kutija, dobivenim linearnim izrazima konstruira linearni put kroz Feistelovu mrežu, i dobije rezultat koji je linearni izraz kriptosustava koji uključuje otvoreni tekst, kriptirani tekst i ključ.

Dva su koraka linearne kriptoanalize:

1. pronalaženje linearne aproksimacije 2. primjena napada poznatim otvorenim tekstom.

Linearna aproksimacija se pronalazi na slijedeći način:

1. Pronalazi se linearna aproksimacija S-kutija koja daje odnos između podskupa ulaza i podskupa izlaza u S-kutiju. 2. Aproksimacija se proširuje na funkciju F i dobiva se linearni izraz za svaku aproksimaciju. 3. Spajanjem linearnih izraza za funkciju F konstruira se linearna aproksimacija kriptosustava. Vjerojatnost ove aproksimacije se može izračunati iz vjerojatnosti aproksimacija S-kutija. 4. Izračunava se potreban broj otvorenih tekstova potrebnih za dobivanje izraza linearne aproksimacije.

Aproksimira se dio kriptiranog teksta sa linearnim izrazom, gdje se linearnost odnosi na modulo 2 bitovne operacije (ekskluzivni or, xor). Takav izraz je oblika:

Xi1 xor Xi2 xor...xor Xiu xor Yj1 xor...xor Yjv = 0 ( 1 )

Gdje Xi predstavlja i-ti bit ulaza X=[X1, X2,...], a Yj predstavlja j-ti bit izlaza Y=[Y1, Y2,...]. Ova jednadžba predstavlja ekskluzivno-ili „sumu“ u bitova ulaza i v bitova izlaza. Osnovni koncept u linearnoj kriptoanalizi je određivane izraza u gornjem obliku koji imaju veću ili manu vjerojatnost da vrijedi. (Ako postoji očita linearnost gornjeg oblika za sve vrijednosti ulaza i izlaza, kriptosustav je trivijalno slab). Ako

9 kriptosustav pokazuje težnju da gornja jednadžba vrijedi sa velikom vjerojatnošću ili ne vrijedi sa velikom vjerojatnosšću, tada kriptosustav ima slabi generator slučajnih brojeva. Ako slučajno izaberemo vrijednosti za u + v bitova i uvrstimo ih u gornju jednadžbu, vjerojatnost jednakosti izraza bi bila točno 1/2. U linearnoj kriptoanalizi se iskorištava devijacija ili bias od vjerojatnosti 1/2 da gornji izraz vrijedi: što je linearni izraz dalje od vjerojatnosti 1/2 da vrijedi, to je primjenjivost linearne kriptoanalize bolja. U daljnjem tekstu koristi se izraz linearni bias vjerojatnosti kao vrijednost za koju vjerojatnost da linearni izraz vrijedi prelazi 1/2 . Ako gornji izraz vrijedi sa vjerojatnošću pL za slučajno izabrane otvorene i odgovarajuće kriptirane tekstove, tada je bias vjerojatnosti pL – 1/2. Što je veličina biasa vjerojatnosti, | pL -1/2|, veća to je bolja primjenjivost linearne kriptoanalize sa manjim brojem poznatih otvorenih tekstova.

U daljnjem tekstu prikazana je konstrukcija linearne aproksimacije u kojoj se bitovi otvorenog teksta prikazuju simbolom X, a ulaz u zadnju rundu kriptosustava (ili ekvivalentno izlaz prethodne runde kriptosustava) kao Y. Bitovi otvorenog teksta i ulaza u slijedeću rundu su slučajni.

Jednadžba (1) se može ekvivalentno formulirati tako da na desnoj strani bude suma određenog broja bitova podključa. U načinu kako je jednadžba napisana u (1), bitovi ključa su implicitno uključeni: ti bitovi su fiksni, ali nepoznati, i implicitno absorbirani u “0“ na desnoj strani jednadžbe i vjerojatnosti pL da jednadžba vrijedi. Ako je suma uključenih bitova podključa “0”, bias od (1) ima isti predznak kao bias izraza koji uključuje sumu podključa, a ako je suma uključenih bitova podključa “1“, bias od (1) će imati suprotan predznak. pL =1 znači da je linearni izraz (1) savršena reprezentacija ponašanja kriptosustava, a kriptosustav ima katastrofalnu slabost. Ako je pL =0, tada (1) predstavlja afin odnos u kriptosustavu, također indikator katastrofalne slabosti. Za sustave kod kojih se zbraja modulo 2, afina funkcija je komplement linearne funkcije. Obje linearne i afine aproksimacije, koje pokazuju da je pL >1/2 i pL <1/2, respektivno, su jednako osjetljive na linearnu kriptoanalizu i izraz linearan se odnosti na oba odnosa.

Kako se konstruira izraz koji je linearan s velikom vjerojatnošću? To se radi tako da se uzimaju u obzir svojstva jedine nelinearne komponente kriptosustava: S- kutija. Moguće je razviti linearnu aproksimaciju između skupa bitova ulaza i bitova izlaza u S-kutiji. Moguće je spojiti linearne aproksimacije S-kutija tako da se srednji bitovi (bitovi podataka u kriptiranom tekstu) mogu izbaciti i dobiva se linearni izraz sa velikim biasom i uključuje samo otvoreni tekst i bitove ulaza u sljedeću rundu.

3.2.3. Piling princip

Prije konstruiranja linearnog izraza za primjer kriptosustava potrebno je definirati osnovne “alate“. Neka su X1 i X2 dvije slučajne binarne varijable:

10 X1 xor X2 = 0 je linearni izraz i ekvivalentan je izrazu X1=X2;

X1 xor X2 = 1 je afin izraz i ekvivalentan je izrazu X1≠X2.

Neka su distribucije vjerojatnosti dane sa

Pr(X1 = i) = { p1 , i=0; 1- p1 , i=1 i Pr(X2 = i) = { p2 , i=0; 1- p2 , i=1.

Ako su dvije slučajne varijable nezavisne, tada je

Pr(X1 = i, X2 = j) = p1p2 ,i=0, j=0 p1 (1-p2) ,i=0, j=1 (1-p1) p2 ,i=1, j=0 (1-p1)(1-p2) ,i=1, j=1 i može se pokazati da je

Pr(X1 xor X2 = 0) = Pr(X1=X2) = Pr(X1=0, X2=0) + Pr(X1=1, X2=1) = p1 p2 + (1 - p1)(1 - p2).

Druga perspektiva je doupustiti da je p1 = ½ + ε1 i p2 = ½ + ε2 gdje su ε1 i ε2 biasi vjerojatnosti i vrijedi -1/2 ≤ ε 1, ε2≤+1/2. Vrijedi:

Pr(X1 xor X2 = 0) = ½ + 2ε1 ε2 a bias ε1,2 od X1 xor X2 = 0 je

ε1,2 = 2ε1 ε2.

Ovo se može proširiti na više od dviju slučajnih binarnih varijabli, X1 do Xn, sa vjerojatnostima p1=1/2+ ε1 do pn=1/2+ εn. Vjerojatnost da je X1 xor ... xor Xn = 0 se može odrediti pomoću Piling Leme koja pretpostavlja da je svih n slučajnih varijabli nezavisno.

Piling Lema (Matsui)

Za n nezavisnih, slučajnih binarnih varijabli, X1, X2, ...Xn,

n-1 n Pr(X1 xor ... xor Xn = 0) = ½ + 2 Πi=1 ει ili, ekvivalentno,

n-1 n ε1,2,...,n = 2 Πi=1 ει gde ε1,2,...,n predstavljaju bias od X1 xor ... xor Xn = 0.

11 Ako je pi = 0 ili 1 za svaki i, tada je Pr(X1 xor ... xor Xn = 0) = 0 ili 1. Ako je samo jedan pi = 1/2, tada je Pr(X1 xor ... xor Xn = 0) = 1/2.

U razvoju linearne aproksimacije, vrijednosti Xi će reprezentirati linearne aproksimacije S-kutija. Npr., neka su X1, X2, X3 i X4 četiri nezavisne slučajne binarne varijable. Neka je Pr(X1 xor X2 = 0) = 1/2 + ε1,2 i

Pr(X2 xor X3 = 0) = 1/2 + ε2,3. Neka je X1 xor X3 izvedena tako da se zbroje X1 xor X2 i X2 xor X3. Dakle,

Pr(X1 xor X3 =0) = Pr([X1 xor X2 ] xor [X2 xor X3] = 0).

Na taj način kombiniramo linearne izraze tako da tvore novi linearni izraz. Budući da slučajne varijable X1 xor X2 i X2 xor X3 možemo smatrati nezavisnima, možemo koristiti Piling lemu, te odrediti

Pr(X1 xor X3 = 0) = 1/2 + 2 ε1,2ε2,3 i, kako slijedi,

ε1,3 = 2ε1,2ε2,3.

Izrazi X1 xor X2 = 0 i X2 xor X3 = 0 su analogni linearnoj aproksimaciji S-kutija i X1 xor X3 = 0 je analogan aproksimaciji kriptiranog teksta gdje je srednji bit X2 eliminiran. Naravno, prava analiza je mnogo kompleksnija i uključuje mnogo aproksimacija S-kutija.

3.2.4. Analiza komponenti kriptosustava

Prije detaljnijeg opisa napada, prvo su objašnjene linearne ranjivosti S-kutije. Neka je S-kutija predstavljena kao na slici 3.2, sa ulazom X = [ X1 X2 X3 X4] i odgovarajućim izlazom Y = [ Y1 Y2 Y3 Y4 ].

Slika 3.2. Preslikavanje S-kutijom

12 Mogu se ispitati sve linearne aproksimacije da bi se odredilo koja je korisna, tako da se izračunaju bias vjerojatnosti za svaku. Dakle, ispitujemo sve izraze u obliku jednadžbe (1) gdje su X i Y ulazi i izlazi S-kutije. Na primjer, za S-kutiju u danom primjeru kriptosustava, neka je linearni izraz slijedeći:

X2 xor X3 xor Y1 xor Y3 xor Y4 = 0 ili ekvivalentno X2 xor X3 = Y1 xor Y3 xor Y4.

Primjenjujući svih 16 mogućih vrijednosti ulaza X i ispitujući odgovarajuće izlazne vrijednosti Y, može se vidjeti da je za 12 od 16 slučajeva, gornji izraz istinit. Dakle, bias vjerojatnosti je 12/16 – 1/2 = 1/4. Rezultati se mogu vidjeti u tablici 3.3.

Tablica 3.3. Primjer linearnih aproksimacija S-kutije

Slično, za jednadžbu X1 xor X4 = Y2 može se vidjeti da je bias verojatnosti 0, a za jednadžbu X3 xor X4 = Y1 xor Y4 bias vjerojatnosti je 2/16 – 1/2 = - 3/8. U posljednjem slučaju, najbolja aproksimacija je afina aproksimacija, što se može vidjeti po negativnom predznaku. Uspješnost napada se bazira na veličini biasa, a afine aproksimacije se mogu koristiti ekvivalentno linearnim aproksimacijama.

13 Sve linearne aproksimacije S-kutije za dani primjer kriptosustava su prikazane u tablici 3.4.

Tablica 3.4. Linearna aproksimacija

Svaki element tablice reprezentira broj podudaranja između linearne jednadžbe reprezentirane heksadecimalno kao “Ulazna suma“ (“Input sum“) i sume bitova izlaza “Izlazna suma“ (“Output Sum“) minus 8. Dakle, dijeljenjem vrijednosti elementa sa 16 dobiva se bias vjerojatnosti za određenu linearnu kombinaciju bitova ulaza i izlaza. Heksadecimalna vrijednost koja reprezentira sumu, kada se prikaže kao binarna vrijednost, pokazuje varijable koje su uključene u sumu. Za linearnu kombinaciju ulazih varijabli reprezentiranih kao

a1 and X1 xor a2 and X2 xor a3 and X3 xor a4 and X4

gdje su ai ∈{0, 1}, heksadecimalna vrijednost predstavlja binarnu vrijednost a1a2a3a4, gdje je a1 najznačajniji bit. Slično, za linearnu kombinaciju izlaznih bitova b1 and Y1 xor b2 and Y2 xor b3 and Y3 xor b4 and Y4 gdje su bi∈{0, 1}, heksadecimalne vrijednosti reprezentiraju binarni vektor b1b2b3b4. Dakle, bias linearne jednadžbe X3 xor X4 = Y1 xor Y4 (hex ulaz 3 i hex izlaz 9) je -6/16 = -3/8, a vjerojatnost da je linearna jednadžba istinita je 1/2 – 3/8 = 1/8.

U tablici linearnih aproksimacija se mogu uočiti sljedeća svojstva: • vjerojatnost da je bilo koja suma nepraznog skupa bitova izlaza jednaka sumi koja ne uključuje ulazne bitove, je točno 1/2, jer bilo koja linearna kombinacija bitova izlaza za bijektivnu S-kutiju mora imati jednak broj nula i jedinica,

14 • linearna kombinacija koje ne uključuje bitove izlaza će uvijek biti jednaka linearnoj kombinaciji bez bitova ulaza, rezultirajući biasom od +1/2 i vrijednošću tablice od +8 u gornjem lijevom uglu. Dakle, prvi redak tablice su sve nule, osim najljevije vrijednosti; slično, prvi stupac su sve nule osim najgornje vrijednosti, • suma bilo kojeg redka ili bilo kojeg stupca mora biti ili +8 ili -8.

3.2.5. Konstrukcija linearnih aproksimacija za cijeli kriptosustav

Nakon linearnih aproksimacija S-kutija, aproksimira se kriptosustav u obliku jednadžbe (1). To se može postići spajanjem odgovarajućih linearnih aproksimacija S-kutija. Kod konstruiranja linearne aproksimacije koja uključuje bitove otvorenog teksta i bitove izlaza iz S-kutija prethodne runde, moguće je napasti kriptosustav tako da se obnovi podskup bitova podključa koji slijedi zadnju rundu.

Neka aproksimacije uključuju S12, S22, S32 i S34, što je prikazano na slici 3.3.

15 Slika 3.3. Primjer linearne aproksimacije

16 Razvija se izraz za prve 3 runde kriptosustava, ali ne sve 4 runde. Ovo može biti korisno u dobivanju bitova podključa nakon zadnje runde, što je pokazano u daljnjem tekstu. Koriste se sljedeće aprokasimacije S-kutije: S12: X1 xor X3 xor X4 = Y2 sa vjerojatnoću 12/16 i biasom +1/4 S22: X2 = Y2 xor Y4 sa vjerojatnoću 4/16 i biasom -1/4 S32: X2 = Y2 xor Y4 sa vjerojatnoću 4/16 i biasom -1/4 S34: X2 = Y2 xor Y4 sa vjerojatnoću 4/16 i biasom -1/4

Neka Ui (Vi) predstavlja bitove 16-bitnog bloka ulaza (izlaza) S-kutije runde i i Ui,j (Vi,j) predstavlja j-ti bit bloka Ui (Vi), gdje su bitovi pobrojani od 1 do 16 s lijeva na desno. Slično, neka Ki predstavlja blok bitova podključa xor-anih na ulazu u rundu i, osim K5 koji je xor-an na izlazu iz runde 4.

Dakle, U1 = P xor K1 gdje je P blok od 16 bitova otvorenog teksta. Koristeći linearnu aproksimaciju prve runde, imamo

V1,6 = U1,5 xor U1,7 xor U1,8 = (P5 xor K1,5) xor (P7 xor K1,7) xor (P8 xor K1,8) (2) sa vjerojatnošću 3/4. Za aproksimaciju u drugoj rundi, imamo

V2,6 xor V2,8 = U2,6 sa vjerojatnošću 1/4. Kako je U2,6 = V1,6 xor K2,6, može se dobiti aproksimacija u obliku V2,6 xor V2,8 = V¸1,6 xor K2,6 sa vjerojatnošću 1/4. Kombiniranjem se dobiva

V2,6 xor V2,8 xor P5 xor P7 xor P8 xor K1,5 xor K1,7 xor K1,8 xor K2,6 = 0 (3)

što vrijedi sa vjerojatnošću 1/2+ 2(3/4-1/2)(1/4-1/2) = 3/8 (sa biasom od -1/8) po Piling lemi.

Za rundu 3 vrijedi V3,6 xor V3,8 = U3,6 sa vjerojatnošću 1/4 i V3,14 xor V3,16 = U3,14 sa vjerojatnošću 1/4. Kako je U3,6 = V2,6 xor K3,6 i U3,14 = V2,8 xor K3,14 ,

V3,6 xor V3,8 xor V3,14 xor V3,16 xor V2,6 xor K3,6 xor V2,8 xor K3,14 = 0 (4) sa vjerojatnošću 1/2 +2(1/4-1/2)2 = 5/8 (sa biasom od +1/8). Kombinirajući dobivene aproksimacije, kombiniranjem svih četiri aproksimacija S- kutija, dobiva se: V3,6 xor V3,8 xor V3,14 xor V3,16 xor P5 xor P7 xor P8

17 xor K1,5 xor K1,7 xor K1,8 xor K2,6 xor K3,6 xor K3,14 = 0.

Vrijedi:

U4,6 = K3,6 xor K4,6 , U4,8 = K3,14 xor K4,8 , U4,14 = K3,8 xor K4,14 i U4,16 = V3,16 xor K4,16 , pa se može pisati:

U4,6 xor U4,8 xor U4,14 xor U4,16 xor P5 xor P7 xor P8 xor ∑K = 0 gdje je

∑K=K1,5 xor K1,7 xor K1,8 xor K2,6 xor K3,6 xor K3,14 xor K4,6 xor K4,8 xor K4,14 xorK4,16 i ∑K fiksno postvljena na 0 ili 1 ovisno o ključu kriptosustava. Po Piling lemi, 3 3 gornji izraz vrijedi sa vjerojatnošću 1/2+2 (3/4-1/2)(1/4-1/2) = 15/32 (bias -1/32). Kako je ∑K fiksno,

U4,6 xor U4,8 xor U4,14 xor U4,16 xor P5 xor P7 xor P8 = 0 (5) mora vrijediti sa vjerojatnošću ili 15/32 ili (1-15/32), ovisno o tome da li je ∑K = 0 ili 1. Drugim riječima, sada se dobiva linearna aproksimacija prvih triju rundi kriptosustava sa biasom 1/32. U daljnjem tekstu je pokazano kako se takav bias može upotrijebiti za određivanje nekih bitova ključa.

3.2.6. Otkrivanje bitova ključa

Za danu linearnu aproksimaciju, moguće je odrediti jedan bit ključa slijedećim algoritmom:

T:= broj otvorenih tekstova (od njih N) takvih da je lijeva strana jednadžbe (xori P) xor (xorj C) = xork K (i bitova otvorenog teksta se xor-a sa j bitova kriptiranog teksta i izjednači sa xor-om k bitova podključa, gdje su bitovi koji se xor-aju neki bitovi otvorenog, kriptiranog teksta i podključa) jednaka 0. Ako je T > N/2 tada pretpostavi xork K = 0 (kada je p > 1/2) ili 1 (inače) inače pretpostavi xork K = 1 (kada je p > 1/2) ili 0 (inače) Za praktičan napad poznatim otvorenim tekstom, napad koji daje više od jednog bita informacije o ključu, dešifrira se posljednja runda koristeći podključ posljednje runde. Dobiva se drukčiji izraz koji je istinit sa najbolijim biasom n-1 rundi:

18 (xori P) xor (xorj C) xor (xorm f(C, Kn)) = xork K.

Ako se zamijeni neispravni kandidat za podključ Kn efektivnost prethodnog linearnog izraza se smanjuje. Vjerojatnost da je linearna aproksimacija istinita, ako dekriptiramo posljednju rundu sa dobrim podključem, je veća od vjerojatnosti kada je runda dekriptirana krivim kandidatom podključa. Jedna runda dekriptiranja sa krivim podključem se može smatrati kao još jedna runda kriptiranja, čime će otvoreni tekst i njemu odgovarajući kriptirani tekst biti manje ovisni i linearni izraz će imati manji bias. slijedeći algoritam implementira metodu najveće mogućnosti za modificiranu linearnu aproksimaciju. Algoritam nalazi i bitova sa nekom vjerojatnošću, kao rezultat dobrog kandidata podključa i jednog bita informacije o sumi nekih bitova ključa koji čine desnu stranu linearnog izraza. Algoritam: za svaki kandidat podključa Ki od K činiti Ti := broj otvorenih tekstova (od njih N) takvih da je lijeva strana linearne aproksimacije jednaka 0 kraj Tmax := max {Ti} Tmin := min {Ti} Ako je |Tmax – N/2| > |Tmin – N/2| tada Primijeni kandidat podključa koji odgovara Tmax-u i pretpostavi xork K = 0 (kada je p > 1/2) ili 1 (inače) kraj Ako je |Tmax – N/2| < |Tmin – N/2| tada Primijeni kandidat podključa koji odgovara Tmin-u i pretpostavi xork K = 1 (kada je p > 1/2) ili 0 (inače) kraj

Kad je R-1 runda linearno aproksimirana, za kriptosustav od R rundi sa odgovarajuće velikim linearnim biasom vjerojatnosti, može se izvesti napad tako da se dobiju bitovi posljednjeg podključa. U danom primjeru kriptosustava, moguće je dobiti bitove podključa K5 preko linearne aproksimacije treće runde. Daljnji proces uključuje djelomično dekriptiranje zadnje runde. Za sve moguće vrijednosti bitova posljednjeg podključa, odgovarajući bitovi kriptiranog teksta se xor-aju sa spomenutim bitovima podključa i rezultat se propusti u obrnutom smjeru kroz odgovarajuće S-kutije. To se radi za sve poznate parove otvorenog i kriptiranog teksta, i za svaku vrijednost bita posljedneg podključa se sačuva brojač. Brojač za pojedine bitove posljednjeg podključa se povećava kada je linearni izraz istinit za bitove ulaza u S-kutije zadnje runde i bitove poznatog otvorenog teksta. Za vrijednost bitova ključa za koju je brojač različit od najvećeg od pola broja otvorenih/kriptiranih uzoraka se pretpostavlja da reprezentira ispravne vrijednosti bitova podključa. To vrijedi, jer se pretpostavlja da ispravna djelomična vrijednost podključa rezultira linearnom aproksimacijom sa vjerojatnošću značajno različitom od 1/2. Da li je veća ili manja od 1/2 ovisi o tome da li je linearni ili afini izraz najbolja aproksimacija, a to ovisi o nepoznatim vrijednostima bitova podključa implicitno uključenim u linearni izraz.

19 Pretpostavlja se da neispravni podključ rezultira u relativno slučajnom pogađanju bitova kod ulaza u S-kutije posljedne runde i kao rezultat, linearni izraz će vrijediti sa vjerojatnošću blizu 1/2.

Za dani primjer kriptosustava, linearni izraz (5) djeluje na ulaze u S-kutije S43 i S44 u zadnjoj rundi. Za svaki uzorak otvorenog i kriptiranog teksta, isprobalo bi se svih 256 vrijednosti za bitove posljednjeg podključa [K5,5...K5,8 , K5,13... K5,16 ]. Za svaku djelomičnu vrijednost podključa, brojač se inkrementira svaki put kada je jednadžba (5) istinita, gdje određujemo vrijednost za [U4,5...U4,8, U4,13...U4,16] tako da podatke propustimo obrnuto kroz bitove posljednjeg podključa i S-kutije S24 i S44. Za brojač koji najviše odstupa od polovice broja otvorenih/kriptiranih uzoraka tekstova pretpostavlja se da je ispravna vrijednost. Da li je devijacija pozitivna ili negativna ovisi o vrijednostima bitova podključa uključenih u ∑K. Kada je ∑K = 0, linearna aproksimacija (5) će dati ocjenu sa vjerojatnošću < 1/2, a kada je ∑K = 1, (5) vrijedi sa vjerojatnošću > 1/2. U tablici 3.5 prikazani su rezultati napada na dani primjer kriptosustava [5].

Tablica 3.5. Rezultati linearne kriptoanalize za dani primjer kriptosustava

20 3.3. Diferencijalna kriptoanaliza

Diferencijalna kriptoanaliza je napad primjenjiv na iterativne blokovne kriptosustave. Prvi put ju je predstavio Murphy u napadu na FEAL-4, a kasnije su ju unaprijedili Biham i Shamir na CRYPTO '90 kao napad na DES [23]. Diferencijalna kriptoanaliza je u osnovi napad odabranim otovrenim tekstom i oslanja se na analizu razlika između dva otvorena teksta kriptiranim istim ključem. Te razlike se mogu iskoristiti za pridjeljivane vjerojatnosti mogućim ključevima te za određivanje najvjerojatnijeg ključa. Za kriptosustave poput DES- a razlika je odabrana kao fiksna XOR vrijednost dva otvorena teksta. Diferencijalna kriptoanaliza je upotrijebljena u napadu na mnoge kriptosustave, a može se koristiti u napadima i na ostale kriptografske algoritme kao što su hash funkcije.

3.3.1. Pregled napada

Diferencijalna kriptoanaliza koristi visoku vjerojatnost pojavljivanja razlika otvorenog teksta i razlika u zadnjoj rundi kriptosustava. Neka je ulaz X=[X1X2...Xn] i izlaz Y=[Y1Y2...Yn]. Neka su dva ulaza u sustav X' i X'' sa odgovarajućim izlazima Y' i Y''. Razlika između ulaza je ∆X = X' xor X'', gdje je xor bitovni ekskluzivni ili n-bitnih vektora:

∆X = [∆X1 ∆X2 ... ∆Xn] gdje je ∆Xi = X'i xor X''i , X'i i X''i su i-ti bitovi od X' i X''. Slično je ∆Y = Y' xor Y'' izlazna razlika:

∆Y = [∆Y1 ∆Y2 ... ∆Yn] gdje je ∆Yi = Y'i xor Y''i . U kriptosustavu s idealnim generatorom slučajnih brojeva vjerojatnost da se nad danom razlikom ulaza ∆X pojavi određena razlika izlaza ∆Y je 1/2n gdje je n broj bitova od X. Diferencijalna kriptoanaliza traži slučaj u kojem se određeni ∆Y nad n danim ∆X pojavljuje sa vrlo velikom vjerojatnošću pD (puno većom od 1/2 ). Par (∆X, ∆Y) se naziva diferencija.

Diferencijalna kriptoanaliza je napad odabranim otvorenim tekstom, dakle, napadač po volji odabire ulaze i razmatra izlaze s ciljem otkrivanja ključa kriptiranja. Napdač odabire takve parove ulaza, X' i X'', da određeni ∆X bude zadovoljen, znajući da se za taj ∆X, određeni ∆Y pojavljuje sa velikom vjerojatnošću.

U daljnjem tekstu diferencijalna kriptoanaliza ilustrirana je na primjeru kriptosustava iz [5] opisanim i poglavlju 2.2.1. Diferencijalne karakteristike se dobivaju iz razmatranja svojstava pojedinih S-kutija. Razmatra se razlika ulaza i izlaza S-kutija s ciljem određivanja para s velikom vjerojatnošću diferencije. Kombinirajući diferencije S-kutija iz jedne runde u drugu, tako da diferencija

21 izlaznih bitova iz jedne runde odgovara ulaznim bitovima u sljedeću rundu, pronalazi se velika vjerojatnost diferencije koja se sastoji od razlike otvorenog teksta i razlike ulaza u posljednju rundu. Bitovi podključa nestaju iz razlike, jer su ukljlučeni u oba skupa podataka, dakle, njihov utjecaj na razliku uključuje xor bitova podključa sa samim sobom, što rezultira nulom.

3.3.2. Analiza komponenti kriptosustava

Neka 4x4 S-kutija sa slike 2 ima ulaz X = [X1 X2 X3 X4] i izlaz Y = [Y1 Y2 Y3 Y4]. Mogu se razmatrati svi parovi razlika S-kutije (∆X, ∆Y), a vjerojatnost za ∆Y uz dani ∆X se može dobiti ako se razmatraju parovi (X', X'') takvi da je ∆X = X' xor X''. Poredak para nije važan, pa je za 4x4 S-kutiju potrebno razmatrati svih 16 vrijednosti za X' , a ∆X ograničava vrijednost X'' na X'' = X' xor ∆X.

Ako se razmatraju S-kutije danog primjera kriptosustava, za svaki par ulaza (X', X'' = X' xor ∆X) mogu se dobiti ∆Y. Npr. binarne vrijednosti od X, Y za dane parove (X, X xor ∆X) , i odgovarajuće vrijednosti za ∆Y su prikazane u tablici 3.6 za vrijednosti ∆X 1011 (hex B), 1000 (hex 8) i 0100 (hex 4). Zadnja tri stupca tablice predstavljaju vrijednosti ∆Y za vrijednost X (prikazan u redku) i određeni ∆X za svaki stupac. U tablici se može vidjeti da je broj pojavljivanja ∆Y=0010 za ∆X=1011 8 od 16 mogućih vrijednosti (vjerojatnost 8/16), za ∆Y=1011 za ∆X=1000 4 od 16, za ∆Y=1010 za ∆X=0100 je 0 od 16. Da je S-kutija “idealna“ broj pojavljivanja razlika bila bi 1, vjerojatnost 1/16. Pokazuje se da takva “idealna“ S-kutija nije matematički moguća.

22 Tablica 3.6. Primjer razlika parova za S-kutiju

Podaci za S-kutiju se mogu prikazati u tablici distribucije diferencija u kojoj redci predstavljaju vrijednosti ∆X, a stupci ∆Y. Tablica distribucije diferencija S-kutije iz tablice 1 je prikazana u tablici 3.7.

Tablica 3.7. Tablica distribucije diferencija

23 Svaki element tablice predstavlja broj pojavljivanja odgovarajuće izlazne razlike ∆Y uz danu ulaznu razliku ∆X. Osim posebnog slučaja (∆X = 0, ∆Y = 0), najveća vrijednost u tablici je 8, što odgovara ∆X = B i ∆Y = 2. Vjerojatnost da je ∆Y = 2 uz dani par ulaza koji zadovoljavaju ∆X=B je 8/16. Najmanja vrijednost u tablici je 0 i pojavljuje se za mnoge parove. Vjerojatnost je u ovom slučaju 0.

Iz tablice se može izvesti nekoliko svojstava: 1. suma svih elemenata u redku je 2n=16 2. suma elemenata u stupcu je 2n=16 3. sve vrijednosti elemenata su parne; to je zato što parovi ulaza (X', X'') imaju jednak ∆X kao par (X', X''), jer je ∆X=X' xor X''=X'' xor X' 4. ulazna razlika ∆X=0 daje izlaznu diferenciju ∆Y=0 za preslikavanje S-kutije jedan na jedan, pa element u gornjem desnom uglu u tablici ima vrijednost 2n=16, a sve ostale vrijednosti u prvom redku i prvom stupcu su 0 5. da je moguće konstruirati idealnu S-kutiju, koja ne daje informacije o razlikama izlaza uz dane ulaze, ona bi sve elemente u tablici imala jednake 1 i vjerojatnost pojavljivanja odgovarajuće vrijednosti ∆Y uz dani ∆X bila bi 1/2n=1/16. Budući da spomenuta gornja svojstva moraju vrijediti, ovo nije moguće postići.

3.3.2.1. Utjecaj ključa na razliku u S-kutiji

X je ulaz, a Y izlaz u S-kutiju bez ključa. Na slici 3.4 prikazana je S-kutija sa ključem.

Slika 3.4. S-kutija s ključem

Neka je ulaz u S-kutiju sa ključem W=[W1 W2 W3 W4]. Ulazna razlika S-kutije sa ključem je ∆W=[W1' xor W1'' W2' xor W2'' ... Wn' xor Wn'']

24 gdje W'=[W1' W2' ... Wn'] i W''=[ W1'' W2'' ... Wn''] predstavljaju dvije ulazne vrijednosti. Budući da su bitovi ključa isti i za W' i za W'', vrijedi (jer je Ki xor Ki = 0):

∆Wi = W'i xor W''i = (X'i xor Ki) xor (X''i xor Ki) = X'i xor X''i = ∆Xi . Dakle, bitovi ključa nemaju utjecaja na vrijednost ulazne diferencije i mogu se ignorirati. S-kutija sa ključem ima istu tablicu distribucije diferencija kao i S-kutija bez ključa.

3.3.3. Konstruiranje diferencijalnih karakteristika

Nakon prikupljanja informacija o S-kutijama, dobiveni su podaci za određivanje diferencijalnih karakteristika kriptosustava. To se čini tako da se spoje odgovarajući parovi diferencija S-kutija. Diferencijske karakteristike za pojedinu S-kutiju u svakoj rundi konstruirane su tako da diferencija uključuje bitove otvorenih tekstova i bitove podataka ulaza u S-kutiju posljednje runde. Zbog toga je moguće napasti kriptosustav tako da se dobije podskup bitova podključa koji slijedi posljednju rundu.

Za primjer, neka diferencijalna karakteristika uključuje S12, S23, S32, i S33. Na slici 3.5 prikazana je diferencijalna karakteristika.

25 Slika 3.5. Primjer diferencijalne karakteristike

Dijagram ilustrira utjecaj diferencija različitih od nule u bitovima pri prolazu kroz postupak kriptiranja. U dijagramu su označene S-kutije koje se mogu smatrati aktivnima (za njih postoji diferencija različita od 0). Na ovaj način razvije se diferencijalna karakteristika za prve 3 runde, ali ne za sve 4 runde.

26 U primjeru se koriste slijedeći parovi S-kutija:

S12: ∆X=B -> ∆Y=2 sa vjerojatnošću 8/16

S23: ∆X=4 -> ∆Y=6 sa vjerojatnošću 6/16

S32: ∆X=2 -> ∆Y=5 sa vjerojatnošću 6/16

S33: ∆X=2 -> ∆Y=5 sa vjerojatnošću 6/16

Sve ostale S-kutije imaju ulaznu diferenciju nula, a zbog toga je i izlazna diferencija nula. Ulazna diferencija je ekvivalentna ulaznoj diferenciji u prvu rundu i dana je sa

∆P = ∆U1 =[0000 1011 0000 0000] gdje Ui predstavlja ulaz u S-kutije i-te runde i Vi predstavlja izlaz iz S-kutija i-te runde. ∆Ui i ∆Vi predstavljaju odgovarajuće diferencije. Kao rezultat se dobiva

∆V1 = [0000 0010 0000 0000] što uključuje diferenciju para za S1,2 i dalje slijedi permutaciju runde 1

∆U2 =[0000 0000 0100 0000] sa vjerojatnošću 8/16=1/2 uz danu diferenciju otvorenog teksta ∆P.

Diferencija druge runde, koristeći par diferencije za S2,3 rezultira sa

∆V2 = [0000 0000 0110 0000] a permutacija runde 2 daje

∆U3 =[0000 0010 0010 0000] sa vjerojatnošću 6/16 za dani ∆U2 i sa vjerojatnošću 8/16 x 6/16 = 3/16 za dani ∆P. U određivanju vjerojatnosti diferencije otvorenog teksta ∆P, pretpostavljeno je da je diferencija prve runde neovisna o diferenciji druge runde, te je vjerojatnost pojavljivanja obiju dobivena kao produkt tih dviju vjerojatnosti.

Dalje se mogu iskoristiti diferencije za S-kutije treće runde, S32 i S33 , te permutacija treće runde dolazi kod

∆V3 = [0000 0101 0101 0000] i

∆U4 =[0000 0110 0000 0110] 2 2 sa vjerojatnošću (6/16) danog ∆U3 i tada je vjerojatnost 8/16 x 6/16 x (6/16) = 27/1024 za danu diferenciju otvorenog teksta ∆P, gdje je pretpostavljena neovisnost diferencija parova S-kutija u svim rundama.

Postupkom kriptoanalize, tekstovi za koje je ∆P = [0000 1011 0000 0000] biti će dekriptirani. Sa velikom vjerojatnošću, 27/1024, pojavit će se ilustrirana diferencijalna karakteristika. Takvi parovi za ∆P nazivaju se “pravi parovi”. Parovi otvorenog teksta za koje se karakteristika ne pojavljuje nazivaju se “krivi parovi”.

27 3.3.4. Dobivanje bitova ključa

Kada je dobivena diferencijalna karakteristika za R-1 rundu, za kriptosustav od R rundi, sa dovoljno velikom vjerojatnošću, moguće je napasti kriptosustav izvlačenjem bitova posljednjeg podključa. U danom primjeru kriptosustava, moguće je dobiti bitove podključa K5 . U postupku se djelomično dekriptira posljednja runda i dobiva ulaz u zadnju rundu, te se određuje da li se pojavio pravi par. Parcijalna dekripcija zadnje runde uključuje, za sve S-kutije u zadnjoj rundi, ekskluzivni ili kriptiranog teksta sa dijelovima bitova podključa koji se pokušavaju otkriti. Podaci se propuštaju kroz S-kutije obrnuto, gdje se isprobavaju sve moguće vrijednosti za bitove podključa koji se pokušavaju otkriti.

Parcijalno dekriptiranje se provodi za svaki par kriptiranog teksta koji odgovaraju parovima otvorenih tekstova, da bi se generirala ulazna diferencija ∆P za sve moguće vrijednosti parcijalnog dijela podključa. Za svaku vrijednost pohranjuje se brojač. Brojač se povećava kada diferencija za ulaz u posljednju rundu odgovara vrijednosti koja se očekuje iz diferencijalne karakteristike. Za parcijalni dio ključa koji ima najveći brojač pretpostavlja se da upućuje na ispravne vrijednosti bitova podključa. Kada se pojavi krivi par, čak i kada se koristi djelomično dekriptiranje sa ispravnim podključem, brojač za ispravni podključ se ne povećava.

Za dani primjer kriptosustava, diferencijalna kriptoanaliza djeluje na ulaze u S- kutije S42 i S44 u zadnjoj rundi. Za svaki par kriptiranog teksta, isprobava se 256 vrijednosti za [K5,5… K5,8, K5,13… K5,16]. Za svaku vrijednost djelomičnog podključa, povećava se brojač kad god je ulazna diferencija u posljednju rundu jednaka ∆V3 =[0000 0101 0101 0001] i ∆U4 =[0000 0110 0000 0110]. Za svaku djelomičnu vrijednost podključa pohranjuje se brojač koji predstavlja broj pojavljivanja diferencija konzistentnih sa pravim parovima (uz pretpostavku da je djelomični ključ ispravne vrijednosti). Brojač koji je najveći uzima se kao ispravna vrijednost.

Za dani primjer kriptosustava dobiveni rezultati napada diferencijalnom kriptoanalizom prikazani su u tablici 3.8 [5].

28 Tablica 3.8. Rezultati diferencijalne analize za primjer kriptosustava

3.4. Diferencijalno-linearna kriptoanaliza

Langford i Hellman su 1994. godine pokazali da se linearna i diferencijalna kriptoanaliza mogu kombinirati u tehniku nazvanu diferencijalno-linearna kriptoanaliza (eng. Differential-linear ), u kojoj diferencijalni dijelovi stvaraju linearnu aproksimaciju sa vjerojatnošću 1 [1]. Ovu tehniku primijenili su na DES sa 8-rundi i analizirali spomenuti kriptosustav koristeći samo 512 odabranih otvorenih tekstova u nekoliko sekundi na osobnom računalu. Ovaj napad je do sad najbolji napad na DES sa 8-rundi. Diferencijalno-linearna analiza je kasnije primjenjena na IDEA-u. Langford iHellman su odabrali karakteristike DES-a od 3 runde, koje predviđaju diferencije nekoliko bitova nakon 3 rundi sa vjerojatnošću 1 (vjerojatnost za cijeli blok nakon 3 runde je mnogo manja). Uz dani par otvorenih tekstova sa potrebnim diferencijama, sigurno je poznata diferencija tih nekoliko bitova nakon tri runde. Oni su koristili linearnu aproksimaciju za runde 4-6. Ako se može predvidjeti diferencija u podacima prije linearne aproksimacije, tada se može dobiti informacija o paritetima. Točnije, ako se može predvidjeti diferencija u podskupu ulaza, tada je poznato da li je paritet podskupa ulaza u oba kriptiranja jednak ili različit. Linearna aproksimacija predviđa paritet podskupa izlaza, pa se sada može predvidjeti da li je vjerojatnije da je paritet podskupa izlaza dva kriptirana teksta jednak ili ne. Također su pronašli diferencijalne i linearne karakteristike u kojima je paritet u podskupovima potrebnih za paritet predviđen sa vjerojatnošću 1 i to sa diferencijalnom karakteristikom. Slijedi da diferencijalna karakteristika pokazuje diferencije dva pariteta. Paritet i obje diferencije su linearne operacije (obje koriste XOR). Slijedi da se dvije linearne aproksimacije u

29 rundama 4-6 u oba kriptiranja mogu kombinirati u aproksimaciju 6 rundi koju čine runde:

61-51-41-diferencijal-42-52-62, gdje indeks označava da li runda pripada prvom ili drugom kriptiranju, a diferencijal se odnosi na kombinaciju diferencija koja osigurava da pariteti podataka prije runde 4 u oba kriptiranja budu uvijek jednaki (ili uvijek različiti).

Ova povećana linearna karakteristika ima dva puta toliko rundi koliko i original, pa je njena vjerojatnost mnogo bliža 1/2. No, i dalje je korisna, i u različitim slučajevima vodi do najboljeg poznatog napada na analizirani kriptosustav, kao i u slučaju diferencijalno-linearnog napada na DES od 8 rundi. Diferencijalno-linearne razlike su temeljene na kriptiranju mnogo parova sa istom poznatom ulaznom diferencijom. Svaki par se kriptira, a paritet izlaznog podskupa se računa za oba kriptirana teksta. Dio kada se dva pariteta podudaraju se razlikuje od 1/2 za dobru diferencijalno-linearnu karakteristiku. Dakle, može se koristiti za razlikovanje kriptiranog teksta od slučajne permutacije. Koristeći standardne tehnike (pogađanje podključa runde koja slijedi, itd.) može se obaviti napad kojim se obnovi ključ. U [1] se može vidjeti napad koji je unaprijeđena metoda diferencijalno-linearne kriptoanalize od strane autora, te je opisan napad na DES od 7, 8, 9 rundi, te napad na COCONUT98.

3.5. XSL napad na kriptosustave

XSL napad (eXtended Sparse Linearisation) prvi put je objavljen 2002. godine [32]. Napad je primjenjen na kriptosustave Rijndael i . Postoje dvije verzije napada: prva verzija je generalna i ne uključuje generiranje podključeva, i proučava se aproksimativno s ciljem otkrivanja asimptotskog ponašanja XSL-a; druga verzija koristi generiranje podključeva i dizajnirana je za konkretnu kriptoanalizu Rijndaela i Serpenta.

3.5.1. XSL-kriptosustav

XSL-kriptosustav je kompozicija Nr istovrsnih rundi: X Prva runda i=1 počinje operacijom xor sa sjedničkim ključem Ki-1. S Zatim slijedi B bijektivnih S-kutija, svaka sa s bitova. L Slijedi linearna difuzija. X Slijedi operacija xor sa slijedećim ključem Ki-1. Ako je i= Nr postupak završava, inače se povećava i i nastavlja sa korakom S.

30 U opisu XSL-kriptosustava bitovi ključa označeni su varijablama Ki j gdje je i=0..Nr i j=1..s * B. Postoji Nr+1 sjedničkih ključeva, K0 je prvi, a KNr je posljednji. Broj bitova ključa prije ekspanzije je HK, broj bitova ključa nakon ekspanzije je Ek, a broj bitova koji su linearno neovisni o spomenutima je Lk. Ako se izabere Lk varijabli ključa koji tvore bazu, linearni izraz bilo kojeg bita ključa se označava sa [Ki j], kao linearna kombinacija Ki j koji su u bazi. Xi j je j-ti bit ulaza u funkciju i-te runde XSL-kriptosustava, ulaz nakon operacije XOR sa sjedničkim ključem. Yi j je j-ti bit ulaza u linearni dio funkcije i-te runde, ulaz nakon primjene odgovarajuće S-kutije na s odgovarajućih Xi j . Zi j je j-ti bit izlaza iz funkcije runde (prije operacije XOR sa slijedećim sjedničkim ključem). Otvoreni tekst označen je sa Z0, a kriptirani tekst označen je sa XNr+1, i to su konstante, a ne varijable. Uz ove oznake vrijedi Xi+1 j = Zi j xor Ki j za sve i=0..Nr.

3.5.2. Osnovna struktura Rijndaela

Rijndael je poseban slučaj XSL-kriptosustava sa s = 8, B = 4 * Nb. Rijndael ima Nr = 10..14 rundi. Podaci u Rijndaelu su predstavljeni kao pravokutna “stanja” komponirana od Nb stupaca, kod kojih je svaki veličine 4 S-kutija (4 * s = 32 bita). Veličine blokova su Nb = 4, 6 ili 8, što daje veličine blokova od Nb * 32 = 128, 192 i 256 bitova. Kriptiranje se obavlja na slijedeći način: X Operacija XOR sa sjedničkim ključem Ki-1. S Primjena B = Nb * 4 S-kutija svaka na s=8 bitova. L Permutacija bajtova ShiftRow, slijedi linearna transformacija GF(256)4 -> GF(256)4 MixColumn za svaki od Nb stupaca. Ako je i=Nr (u posljednjoj rundi) MixColumn se ne primjenjuje. X Operacija XOR sa slijedećim sjedničkim ključem Ki i slijedi završetak, ili korak S i nastavlja se sa sljedećom rundom.

Duljina (neproširenog) ključa je Hk = Nk * 32 bitova gdje je Nk=4, 6 ili 8, što se proširuje na Ek = (Nr + 1) * s * B = (Nr + 1) * Nb * 32 bitova.

3.5.3. Osnovna struktura Serpenta

Serpent je XSL-kriptosustav sa s = 4, B = 32, Nr = 32. Veličina bloka je uvijek 128 bita. Duljina ključa može biti Hk = 128, 192 ili 256 bitova, i također se proširuje na Ek = (Nr + 1) * s * B = 1056 bitova.

3.5.4. S-kutije i preodređene algebarske jednadžbe

S-kutije su jedini nelinearni dio XSL-kriptosustava. Neka je F: GF(2)8 -> GF(2)8 S- kutija takva da je F: x = (x1...xs). U Rijndaelu i Serpentu (i ostalim “dobrim”

31 kriptosustavima), S-kutije su izgrađene sa “dobrim” logičkim (boolean) funkcijama. Jedan od kriterija nad logičkim (boolean) funkcijama koji se primjenjuju u kriptografiji je da svaki yi treba imati visok algebarski stupanj kada se izrazi kao multivarijantni polinom po xi. No to ne osigurava nepostojanje “implicitnih” multivarijantnih jednadžbi oblika P(x1,...,xs,y1,...,ys) niskog algebarskog stupnja. Pokazano je da za Rijndael i Serpent postoji velik broj takvih jednadžbi. Za specifičan stupanj jednadžbi d (obično d=2) zanimljiv je pravi broj r takvih jednadžbi P(x1,...,xs,y1,...,ys). Taj broj, što ne vrijedi za eksplicitne jednadžbe yi=f (x1,...,xs), može biti veći od s. Također je zanimljiv broj monomskih jednadžbi koje se pojavljuju u tim jednadžbama, a označavaju se sa t, i izračunavaju uključujući s s konstantni izraz. Općenito vrijedi t~( d). Ako je t <<( d),kažemo da su jednadžbe rijetke. Ako je r=s, takve jednadžbe (aproksimativno) su dovoljne za potpun opis S-kutije: za svaki y prosječno će postojati 1 rješenje x. Kada je r>>s, kažemo da je sustav preodređen.

3.5.4.1. Preodređene jednadžbe nad Serpentovim S-kutijama

Pokazano je da 4-bitne S-kutije uvijek daju preodređen sustav multivarijantnih jednadžbi. Gradi se 16 x 37 matrica koja u svakom redku sadrži vrijednosti od s t=37 monoma {1,x1,...,x4,y1,...,y4,x1x2,...,x1y1,...,y3y4} za svaki od 2 =16 mogućih vrijednosti x = (x1,...,x4). Rang te matrice je najviše 16, dakle, kakva god S-kutija bila, postojat će najmanje r ≥37-16=21 kvadratnih jednadžbi. Ovaj sustav je jako preodređen budući da je 21 >> 4.

3.5.4.2. Preodređene jednadžbe nad Rijndaelovim S-kutijama

Kod Rijndaela vrijedi s=8. Kod Rijndaela taj broj je velik u odnosu na Serpent: postoji (28)!~21684 bijektivnih S-kutija nad 8 bitova, prema (24)!~244 za s=4. Zbog toga se ne očekuje slučajno pojavljivanje korisnih svojstava. Rijndael S-kutije su izabrane prema optimalnim rezultatima u odnosu na linearnu, diferencijalnu i diferencijalnu analizu visokog stupnja, i trenutno je jedinstvena poznata S-kutija koja zadovoljava te zahtjeve. Rijndael S-kutija je kompozicija “popravljenih” inverza u GF(256) gdje se 0 preslikava u samu sebe, sa multivarijantnim afinim transformacijama GF(2)8->GF (2)8. Te funkcije su označene sa g i f, a S=f o g. Neka je x ulazna vrijednost, a y=g(x) odgovarajuća izlazna vrijednost. Neka je z=S(x)=f(g(x))=f(y). Prema definiciji S-kutije je: za svaki x ≠ 0, 1=xy. Ova jednadžba daje 8 multivarijantnih bi-linearnih jednadžbi od 8 varijabli i to vodi do 8 bi-afinih jednadžbi između xi i zj. Pokazalo se da je 7 od tih jednadžbi istinito sa vjerojatnošću 1, a 8. je istinita sa vjerojatnošću od 255/256. Postojanje ovih jednadžbi za g i S je očito. Postoji i više takvih jednadžbi. Npr. imamo: x = y * x2.

32 Kako je x->x2 linearno, ako se piše kao skup od 8 multivarijantnih funkcija, gornja jednadžba daje 8 bi-afinih jednadžbi između xi i yj, i između xi i zj. Također je ova jednadžba simetrična u GF(256) u odnosu na zamjenu x i y. Dakle, dobiva se 16 bi-afinih jednadžbi istinitih sa vjerojatnošću 1 između xi i zj. Iz gornjeg postupka dobivaju se 23 jednadžbe između xi i zj istinitih sa vjerojatnošću 1. Dodatno je uočeno da, ako je x uvijek različit od 0, u Rijndael S-kutiji postoje 24 linearno nezavisnih jednadžbi. Za jednu S-kutiju, vjerojatnost istinitosti 24-te jednadžbe je 255/256. Zanimljiva je vjerojatnost istinitosti jednadžbe za sve S- kutije, i prilično je velika. Dakle, ako napad djeluje bolje sa 24 jednadžbe, obično će biti korisno iskoristiti njih sve i ponoviti napad 2-9 puta. Ako napad koristi samo jednu (ilii dvije) jednadžbe, pretpostavlja se r=24, inače je r=23.

3.5.5. MQ napad na blokovne kriptosustave

SA-kriptosustav je kriptosustav sa supstitucijama i afinim funkcijama. Za svaki SA-kriptosustav takav da se S-kutije mogu opisati izrazima algebarskih jednadžbi, kriptoanaliza kriptosustava se može opisati kao problem rješavanja sustava takvih jednadžbi. Ako su te jednadžbe multivarijantne kvadratne, takav napad se naziva “MQ napad”. Takvi kriptosustavi su Rijndael i Serpent.

3.5.5.1. Opis napada

Postoji više načina primjene MQ napada. Sustav jednadžbi bi trebalo napisati u takvom obliku da imaju točno jedno rješenje. U praksi je dovoljno izgraditi sustav sa u prosjeku jednim rješenjem. Tada, ako postoje dva rješenja, obavi se pogađanje i ispravljanje nekoliko bitova.

Prvi (općeniti) napad koji ignorira postupak generiranja podključeva: Ovaj napad je dizajniran za bilo koji XSL-kriptosustav, bez obzira na postupak generiranja podključeva. Kako postoji (Nr+1) ključeva Ki veličina jednakih kao i otvoreni tekst, i potrebno je dovoljno ograničenja da ih se jedinstveno odredi, potrebno je (Nr+1) poznatih otvorenih tekstova. Bolja verzija koristi skup odabranih otvorenih tekstova koji se razlikuju u samo nekoliko bitova u jednoj S- kutiji. Postojat će mnogo zajedničkih varijabli sustava jednadžbi za različite parove otvorenog i kriptiranog teksta.

Drugi (specifičan) napad koji koristi postupak generiranja podkljlučeva: Ovaj postupak koristi samo jedan poznati otvoreni tekst. Ako je ključ dulji od veličine bloka, bit će potreban još jedan otvoreni tekst. Ovaj napad je manje općenit i oslanja se na činjenicu da je postupak generiranja podključeva u Rijndaelu i Serpentu vrlo sličan samom postupku kriptiranja: koristi kombinaciju afinih transformacija i (iste) S-kutije.

33 Jači napadi Ako su napadi poput MQ napada mogući, tj. postoje efikasne metode rješavanja kvadratnih jednadžbi, tada oni omogućuju napad na kriptosustave poput napada kod kojih napadač ima samo kriptirani tekst. Potrebno je karakterizirati redundanciju otvorenih tekstova u izrazima kvadratnih jednadžbi, a to se može načiniti ili sa djelomičnim znanjima o kriptiranim tekstovima, ili sa srodnim kriptiranim tekstovima.

3.5.6. Metode rješavanja multivarijantnih kvadratnih jednadžbi

MQ je NP-težak problem. Više kriptosustava sa javnim ključem bazirano je na MQ, kao npr. HFE [3]. Redukcijom se pokazuje da, ako je problem lagan za 1600 varijabli, tada se Rijndael može probiti. Sa trenutnim napadima, faktorizacija 1600-bitnog RSA osigurava razinu sigurnosti nešto manju od 2128. Dakle, ako je Rijndael siguran, MQ bi trebao biti težak problem, kao i faktorizacija.

3.5.6.1. Rješavanje MQ sa XL algoritmom

Na Crypto '99, Shamir i Kipnis su otkrili da bi rješavanje MQ trebalo biti lakše za preodređene sustave [3]. Za taj problem razvijen je XL algoritam. Slijedi opis XL algoritma za slučaj GF(2).

Kako XL radi? Razmatra se problem rješavanja m kvadratnih jednadžbi sa n varijabli u GF(2). Općenito, broj kvadratnih izraza u tim jednadžbama je t~n2/2. Neka je D=2,3,... parametar XL algorima. U osnovi, algoritam množi svaku moguću jednadžbu 1..m sa svim mogućim produktima D-2 varijabli. Tako se n dobiva R~( D-2)m novih jednadžbi. Ukupni broj izraza koji se pojavljuju u tim n jednadžbama je T=( D). Očekuje se da je većina tih jednadžbi linearno nezavisno. n n Izabire se odgovarajuće velik D takav da je R=( D-2)m ≥ ( D) = T. Očito je da broj linearno nezavisnih jednadžbi ne može premašiti broj izraza T. Očekuje se da, ako sustav ima jedinstveno rješenje, tada postoji takav D za kojeg je R ≥ T, i takav da je broj Free linearno nezavisnih jednadžbi u R vrlo blizu T. Tada, ako deficit ranga T-Free nije prevelik, očekuje se da je sustav riješiv. Očekuje se da je D, za koje XL funkcionira, jednak ili vrlo blizu teoretskoj vrijednosti za koju je R ≥T. Očekuje se da će XL algoritam biti uspješan kada je: n n 2 2 R ≥ t => m ≥ ( D)/( D-2)~n /D . Ovo daje D~n/√m.

Za 128-bitni Rijndael sa 128-bitnim ključem, dobiva se sustav od m=8000 jednadžbi sa n=1600 varijabli. Parametar D za kojeg je XL algoritam uspješan je D~n/√m~18. Dakle, složenost izravnog XL napada je približno 2330. Ovaj napad je

34 neuspješan, jer za slučajan sustav kvadratnih R=8000 jednadžbi sa n=1600 varijabli, postoji oko T=n2/2~220 izraza.

3.5.7. Prvi XSL napad

Umjesto generalnog XL postupka, dizajniran je algoritam koji iskorištava specifične strukture jednadžbi, poput njihove rijetkosti. Ovaj napad naziva se XSL napad, što je kratica za “eXtended Sparse Linearization” ili “multipy (X) by Selected monomials and Linearize”. Započinje se sa početnim jednadžbama za svaku S-kutiju sa r jednadžbi i t izraza. Definira se skup kvadratnih jednadžbi koji potpuno definira tajni ključ kriptosustava. U XL napadu množi se svaka od ovih jednadžbi sa svim mogućim monomima stupnja D-2. Umjesto toga, u XSL napadu se jednadžbe množe sa posebno odabranim monomima. Kako se čini, najbolje je koristiti umnoške monoma koji se već pojavljuju u ostalim jednadžbama.

3.5.7.1. “T' metoda” XSL napada

Nije potrebno imati R mnogo veći od T. U XL napadu, sustav je rješiv kada je T- Free mali broj. Oba algoritma, XL i XSL rade i kada je T-Free velik. Neka je xi varijabla, i neka je T' broj izraza koji se mogu množiti sa x1 i također pripadaju skupu T izraza. Pretpostavimo da je Free ≥ T-T'+C sa malim C. Primjenjuje se algoritam naziva “T' metoda”. 1. Jednom Gaussovom eliminacijom sustav se dovodi u oblik u kojem je svaki izraz poznata linearna kombinacija izraza u T'. 2. Isto početno izračunavanje obavlja se dva puta, npr. sa T' definiran za xi i odvojeno za x2. 3. U svakom od ta dva sustava, postoji podsustav od C jednadžbi koje sadrže samo izraze iz T'. Te nove jednadžbe vjerojatno nisu istovrsne početnim jednadžbama generiranim u napadu sličnom XL napadu: samo kombiniranjem svih jednadžbi može se dobiti informacija o rješenju. Dijelovi sustava obično imaju mnogo rješenja. 4. U svakom od dva podsustava sa C izvanrednih jednadžbi, svaka jednadžba se množi sa x1 i x2. Tada se izrazi iz točke 1 zamijene sa ovima i dobivaju se neke druge jednadžbe koje sadrže samo izraze iz T', ali za drugu varijablu. Očekuje se da su te jednadžbe nove i različite. 5. Dakle, ako je na početku Free ≥ C + T – T' može se povećati broj jednadžbi. U ovom trenutku očekuje se do 2C dodatnih jednadžbi (u praksi je taj broj manji). 6. Očekuje se da broj novih jednadžbi raste eksponencijalno. 7. Ako početni sustav ima jedinstveno rješenje, očekuje se da je do sada Free=T. 8. Za svaku jednadžbu koja sadrži samo izraze iz T' složenost izračunavanja izvedene dodatne jednadžbe je oko T'2. Kako nedostaje T' jednadžbi, očekuje se izvršavanje T'3 dodatnih operacija u napadu.

35 9. Ako cijeli napad ne uspije, pokuša se sa drugim parom varijabli ili se koriste tri varijable (i tri sustava). Broj mogućnosti raste vrlo brzo sa brojem varijabli. Nova jednadžba dobivena sa jednom varijablom se može transformirati i proširiti sa svim ostalim varijablama.

U napadu na Rijndael od 128-bita, dobiva se T~296 i T'~290. Očekuje se da XSL napad djeluje dok god je Free > T-T'~99.4% T.

3.5.7.2. Jezgra prvog XSL napada

Neka je A S-kutija XSL-kriptosustava, tzv. “aktivna S-kutija”. Za S-kutiju A mogu se napisati jednadžbe u obliku:

0 = ∑ αijk Xi j Yi k + ∑ βi j Xi j + ∑ γi j Yi j + δ. Broj monoma koji se pojavljuju u tim jednadžbama je malen, t (većina njih oblika Xi j Yi k ). Iz tog razloga zadržavaju se obje varijable Xi j i Yi k . Te jednadžbe se množe sa jednim od t monoma koji postoje za neke druge S- kutije (tzv. “pasivne” S-kutije). Neka je S ukupan broj S-kutija u opisanom napadu. Razmatra se Nr+1 provedbi kriptosustava, a S će biti jednak B * Nr * (Nr + 1). Kritičan parametar napada je P∈ N. U napadu se svaka jednadžba svake “aktivne” S-kutije množi sa svim mogućim izrazima za sve podskupove od (P-1) ostalih “pasivnih” S-kutija. XSL napad dizajniran je na takav način da je za veliki P vrlo sličan oćenitom XL napadu. Zbog posebne strukture jednadžbi, dovoljan je mnogo manji P. Ukupan broj jednadžbi generiranih ovom metodom je: P-1 S-1 R ~ r * S * t * ( P-1). Ukupan broj izraza u tim jednadžbama je: P S T ~ t * ( P).

Moguće je uočiti da nisu sve napisane jednadžbe linearno nezavisne. Može se pokazati da bi jednadžbe trebalo generirati na slijedeći način: ograničava se množenje “aktivne” jednadžbe samo sa jednim od monoma T1...Tt – r za neku “pasivnu” S-kutiju sustava. Također se dodaju jednadžbe koje sadrže umnoške nekoliko “aktivnih” S-kutija. Tada se čini da nema drugih očitih linearnih ovisnosti.

Još uvijek nije dobiven sustav sa jednim jedinstvenim rješenjem i potrebne su dodatne jednadžbe. Te jednadžbe se konstruiraju na način da se mogu množiti sa mnogo izraza, a da se i dalje mogu zapisati sa istim T monomima. Eliminiraju se sve varijable ključa i dodatne jednadžbe se zapisuju u obliku:

Xi j xor ∑ αj Yi-1 j = X' i j xor ∑αj Y'i-1 j = X'' i j xor ∑αj Y''i-1 j = ... Postoji Nr * (Nr +1) * (sB) takvih jednadžbi. Svaka od tih jednadžbi, tzv. “aktivna jednadžba”, se množi sa umnoškom izraza za neke (P-1) “pasivnih” S-kutija. Ovdje je potrebno isključiti izraze za nekoliko susjednih S-kutija (za one koje imaju zajedničke varijable sa aktivnom jednadžbom).

36 3.5.8. Drugi XSL napad

Drugi napad koristi postupak generiranja podključeva. Za razliku od prvog, drugi XSL napad je dizajniran tako da se postigne konkretan napad na Rijndael i Serpent. Neka je A broj potrebnih otvorenih tekstova s ciljem kompletnog određivanja ključa. Za Rijndael i Serpent potrebno je A=1 ili 2. Izgradit će se sustav jednadžbi u kojem za svaki bit ulaza i izlaza svake S-kutije postoji zasebna varijabla, ali također uključuju S-kutije koje se koriste u generiranju podključeva. Dobiva se: S = A * B * Nr + D + E, gdje je D broj S-kutija u postupku generiranja podključeva, a E=0 ili 1 broj dodatnih “umjetnih” S-kutija (objašnjeno kasnije). Prvo se napišu jednadžbe kao i u prvom XSL napadu.

Broj varijabli ključa koje se koriste u ovom napadu se označava sa Sk. Zahtijeva se: – te varijable moraju sadržavati svaki ulazni i svaki izlazni bit svake od D S-kutija iz postupka generiranja podključeva. To daje Sk = 2 * s * D gdje je D = (Lk – Hk) / s za Rijndael i D = (Nr + 1) * B za Serpent. • Ako je to dovoljno za linearno obuhvaćanje svih varijabli ključa, dobiva se Sk=2*s*D. U ovom slučaju E=0, tj. nema “umjetnih” S-kutija. Ovo je slučaj za Serpent. • Inače, neka je E=1 i neka je e broj od K i j koje treba dodati gornjim 2*s*D varijablama, da bi se linearno obuhvatile sve varijable ključa. Ovdje je E=1 i konstruira se “umjetna” S-kutija na slijedeći način: jednadžbe za tu S-kutiju je prazan skup, tj. r=0, a njeni izrazi su sve e dodatne varijable.

Sa [K i j] se označava izraz od K i j kao linearna kombinacija od Sk “istinitih” varijabli ključa. Dodaju se sljedeće jednadžbe:

X i+1 j = ∑ α j Y i j xor [K i j ] za sve i=0..Nr. Svaka od tih jednadžbi množi se sa umnoškom izraza od (P-1) “pasivnih” S-kutija (izabranih kao i prije od njih S, bez nekoliko “susjednih”). Dobiva se skup jednadžbi koje koriste samo T prethodno opisanih izraza.

Da bi se dobio potpun jednadžbama opisan kriptosustav, i da bi sustav imao jedinstveno rješenje potrebno je još jednadžbi. Ono što nedostaje su linearne jednadžbe iz postupka generiranja podključeva. To proizlazi iz činjenice da Sk varijable ključa nisu sve linearno nezavisne. Te jednadžbe se ponovno množe sa umnošcima izraza od (P-1) “pasivnih” S-kutija.

3.5.9. Posljedice XSL napada na dizajniranje blokovnog kriptosustava

Napad na Serpent pokazao je da je korištenje mnogo koraka sa jednostavnim S- kutijama loš izbor. XSL napad je primjenjiv na sve kriptosustave u kojima je jedini nelinearni dio inverz funkcije u GF(28), sa malim s. Dakle, kriptosustavi poput

37 Rijndaela i Cemellia-e bi trebali koristiti dovoljno velik s, npr. s=16, ili razmotriti drukčije S-kutije [3]. U [3] prikazan je između ostalog direktan MQ napad na Rijndael, simulacije XSL napada na primjeru kriptosustava, te primjer “T' metode”.

3.6. Modulo n kriptoanaliza

Modulo n kriptoanaliza je još jedan napad kod kojeg se koristi odnos otvorenog teksta i ulaza u posljednju rundu. Napad je efektivan za kriptosustave u kojima je sigurnost bazirana na modularnom zbrajanju i rotacijama bitova. Ovaj napad je iskorišten kao modulo 3 napad na RC5P (varijanta RC5 koja koristi zbrajanje umjesto XOR), te kao modulo 5 i modulo 257 napadi na kriptosustave koji se koriste u FireWire standardu, tj. [8]. U ovom napadu pokazuje se da je, u nekim slučajevima, vrijednost ulaza u posljednju rundu modulo n u nekom odnosu na vrijednost otvorenog teksta modulo n. Napdač može koristiti ovaj odnos za prikupljanje informacija o podključu posljednje runde. Kriptosustavi koji uspješno umanjuju statističke informacije koje se mogu dobiti linearnom ili diferencijalnom analizom nisu nužno sigurni od ovog napada [8].

3.6.1. Modulo 3 napad

U modulo 3 kriptoanalizi, istražuju se modulo 3 vrijednosti nekih dijelova bloka kriptosustava kroz uzastopne runde, te se dolazi do informacija o ulazu u posljednju rundu ili dvije posljednje runde, koje ih razlikuju od slučajno izabranog bloka. Izraz “modulo 3 vrijednost” predstavlja vrijednost koja se dobiva tako da se izabere neki dio 32-bitnog bloka i reducira ga se modulo 3. Dakle, modulo 3 vrijednost može biti jedino 0, 1 ili 2. U slučajno odabranom 32-bitnom bloku očekuje se da se 0, 1 i 2 kao modulo 3 vrijednosti pojavljuju sa skoro jednakom vjerojatnošću. Blokovi blokovnih kriptosustava prolaze korz veći broj uzastopnih rundi, te bi blok trebalo sve teže razlikovati od slučajno odabranog bloka. Modulo 3 kriptoanaliza djeluje kada vrijednost bloka modulo 3 još uvijek nije preteško razlikovati od slučajnog bloka.

3.6.1.1. Aproksimacija rotacija Motivacija za modulo 3 kriptoanalizu bilo je ponašanje modulo 3 vrijednosti nekih 32-bitnih riječi, X, prije i poslije rotacije za jedan bit [8]. Neka je X 32-bitni cijeli broj, a X<<<1 X rotiran lijevo za jedan bit. Učinak rotacije se može pisati kao:

X<<<1 = 2X , ako je X < 231; X<<<1 = 2X + 1 – 232 , ako je X ≥ 231.

38 Vrijedi: 232 ≡ 1 mod 3. Dakle, X<<<1 ≡ 2X mod 3, jer je 2X + 1 – 232 ≡ 2X mod 3. Iz toga se izvodi učinak većeg broja rotacija, kao na primjer:

X<<<2 ≡ (X<<<1) <<< 1 ≡ 2 x 2 x X ≡ X mod 3.

Općenito vrijedi:

X<<

Vrijedi da rotacija za bilo koji neparan broj bitova množi modulo 3 vrijednost sa 2, a množenje sa bilo kojim neparnim brojem bitova ostavlja modulo 3 vrijednost nepromijenjenu. Kada je poznat broj bitova za koji je 32-bitni blok rotiran, i ako je poznata njegova ulazna modulo 3 vrijednost, može se odrediti njegova izlazna modulo 3 vrijednost.

Neka je poznata ulazna modulo 3 vrijednost, ali nije poznat broj rotacije. I u ovom slučaju poznate su neke informacije o izlaznoj modulo 3 vrijednosti. To je zato, jer vrijedi:

X <<< n mod 3 = 2X mod 3, ako je n neparan X <<< n mod 3 = X mod 3, ako je n paran.

Ako je X mod 3 = 0, tada je X <<< n ≡ 0 mod 3, bez obzira na n. Slijedi da je Pr[X <<< n ≡ X mod 3] = 4/6 kada je X uniformno distribuiran, i poznate su nepotpune informacije od X <<< n.

Moguće je izraziti napredovanje djelomičnih informacija koristeći notaciju vjerojatnosnih vektora. Neka vjerojatnosni vektor px predstavlja distribuciju od X, tako da je j-ta komponenta od px jednaka Pr[X = j]. Na primjer, ako je Y = X <<< 1 i px=[0, 1/2, 1/2], pronalazi se da vrijedi py = [0, ¸1/2, 1/2]. Uniformno distribuirana slučajna varijabla U predstavljena je vektorom vjerojatnosti pu = [1/3, 1/3, 1/3]. U nekim slučajevima korisno je prikazati rotaciju kao množenje modulo 232-1. Vrijedi relacija:

x <<< j ≡ 2 j x mod (232 – 1) za rotacije ulijevo za j bitova. Ako se obje strane reduciraju modulo 3 (3 dijeli 232-1) dobiva se:

x <<< j ≡ 2 j x mod 3.

Kada p dijeli 232-1 dobiva se dobra aproksimacija modulo p oblika:

x <<< j ≡ 2 j x mod p.

39 3.6.1.2. Aproksimacija zbrajanja modulo 232

Za zbrajanje modulo 232 vrijedi:

X + Y mod 232 = X + Y, ako nema prijenosa (eng. carry) X + Y mod 232 = X + Y - 232, ako postoji prijenos (eng. Carry).

Kako vrijedi 232 ≡ 1 modulo 3, može se pisati:

(X + Y mod 232) mod 3 = X + Y mod 3, ako nema prijenosa (X + Y mod 232) mod 3 = X + Y – 1 mod 3, ako postoji prijenos.

Ponekad je poznata distribucija prijenosa. Može biti poznato da su sva četiri značajnija bita od Y svi jedinice, te je poznato da je vjerojatnost prijenosa približno 0.98. Aproksimacija se može pisati ovako:

X + Y mod 232 mod 3 = X + Y mod 3, sa vjerojatnošću 0.02 X + Y mod 232 mod 3 = X + Y – 1 mod 3, sa vjerojatnošću 0.98.

3.6.1.3. Bias i l2 norma

l 2 norma koristi se kao mjera udaljenosti od uniformne distribucije (bias). Bias vjerojatnosnog vektora px definira se kao:

2 2 ||px – pu|| = ∑j (px[j] – pu[j]) .

Što je bias veći, potrebno je manje blokova opisanih sa px da bi ih se razlikovalo od slučajnih blokova.

3.6.1.4. Postupak napada

Napad je opisan nad podacima koji odgovaraju kriptosustavu RC5P (npr. broj bitova).

1. Izabere se N otvorenih tekstova. 2. Za svaki kriptirani tekst, isproba se svih 48 kombinacija modulo 3 vrijednosti i četiri najznačajnija bita podključa za zadnju polu-rundu. Ovim nagađanjima se predvide modulo 3 vrijednosti za obje 32-bitne polovice bloka prije zadnje runde, i pohrani se brojač tih vrijednosti za svako nagađanje. 3. Preko brojača se izračuna tzv. “chi-” proračun sa osam stupnja slobode, tako da se blok podijeli u devet mogućih kategorija temeljenih na dvije modulo 3 vrijednosti.

40 4. Izabere se nagađanje sa najvećim “chi-square” proračunom. 5. Uz pretpostavku da je gornje nagađanje točno, postupak se ponavlja za slijedećih šest bitova podključa. Postupak se ponavlja na jednak način dok ne preostanu četiri bita podključa. Ta četiri bita se pogađaju i testiraju na jednak način. 6. Rezultat je nagađanje koje je najvjerojatnije točno. Ovom vrijednošću se može izostaviti posljednja polu-runda za sve kriptirane tekstove. Rezultirajuće vrijednosti se napadaju istim postupkom, ali s verzijom kriptosustava sa jednom polu-rundom manje.

3.6.2. Modulo 5 napad

Vrijedi teorem: f(x) mod 5 ∈ {0, 4} za sve x.

Dokaz: Dovoljno je pokazati da je g5 (b) mod 5 ∈ {0, 4}.

32 14 32 32 g5 (b) = (b <<< 14) + b – 2 k ≡ (2 + 1)b – 2 k mod 2 – 1 uz b <<< 14 ≡ 214b mod 232 – 1. Jer je (b <<< 14) + b < 233 vrijedi da je k ∈ {0, 1}. 5 dijeli 232 – 1, pa se obje strane mogu reducirati modulo 5. Kako je 214 +1 ≡ 0 mod 5 i 232 ≡ 1, dobiva se:

g5 (b) ≡ -k mod 5, k ∈ {0, 1}.

Funkcija runde F se analizira koristeći gornji teorem. Feistelova funkcija se kombinira sa zbrajanjem mod 232. Neka je (y' , x) = F((x,y)), tako da je y' – y = f(x) mod 232. Može se pisati:

y' – y = f(x) + 232k, k ∈ {0, 1}.

Ako se obje strane reduciraju modulo 5, dobiva se :

y' – y mod 5 ∈ {0, 3, 4}.

Dalje se lako može vidjeti da je f(x) mod 5 uniformno distribuirana na {0, 4}, a k je uniformno distribuiran na {-1, 0}. Iz toga slijedi da y' – y mod 5 = f(x) + k mod 5 poprima vrijednosti 0, 3, 4 sa vjerojatnostima 1/4, 1/4, 1/2.

Ovo se dalje može primjeniti na cijeli kriptosustav. Primjer je prikazan nad kriptosustavom M6. Neka je PL lijeva polovica otvorenog teksta, a CL lijeva polovica kriptiranog teksta. CL – PL je suma pet nezavisnih slučajnih varijabli čija vrijednost modulo pet ima distribuciju (1/4, 0, 0, 1/4, 1/2). Slijedi da je distribucija od CL – PL mod 5 konvolucija od (1/4, 0, 0, 1/4, 1/2), ili aproksimativno:

41 pcL – pL mod 5 = (0.248, 0.215, 0.161, 0.161, 0.215).

Isto vrijedi i za desne polovice.

Vrijedi da CL mod 5 ima vjerojatnost 1/4 da bude jendak PL mod 5, što je osjetno veće od 1/5 što se očekuje za jake kriptosustave.

3.6.3. Modulo 257 napad

Feistelova funkcija f se može dobro aproksimirati modulo 257. Te aproksimacije se mogu lako iskoristiti u napadu obnavljanja ključa, jer otkrivaju vrijednosti K2 mod 257.

Teorem: f(x) – 194 K2 mod 257 ∈ {0, 62, 63, 256} za sve x, i ta vrijednost je uniformno distribuirana kada je x uniformno distribuiran.

Dokaz: 32 Slično prethodnom teoremu, pronalazi se, jer 257 dijeli 2 - 1, da je g3(z) mod 257 ∈ {0, 256}. Također vrijedi:

14 32 32 f(x) = g5(g3(z) + K1) ≡ (2 + 1) (g3(z) + K1) – 2 k mod 2 -1.

Reduciranjem obiju strana modulo 257 uz k' = 194g3(z) mod 257 dobiva se:

f(x) ≡ 194 K1 – k + k' mod 257, k ∈ {0, 1}, k' ∈ {0, 63}, jer da je 214 + 1 ≡ 194 mod 257.

Prethodni napad se može ponoviti, uz opasku da je distribucija od XL = CL – PL – 5 * 194 * K2 mod 257 neuniformna.

3.6.4. Zaključak uz modulo n napade

Mogu se razmotiri modulo p napadi za bilo koji prim broj p koji dijeli 232 – 1. Faktorizacija od 232 - 1 je 3 * 5 * 17 * 257 * 65537, pa nema nedostatka za potencijalnog kandidata za p. Jedan od mogućih problema za p > 3 je da rotacija j može uključiti množenje sa bilo kojom vrijednošću iz skupa Sp = {2 mod p: j = 0, 1, ...}. Na sreću (za napadača), kada p = 2k + 1 dijeli 232 – 1, vrijedi svojstvo da je k 2k |Sp| = 2k (jer je 2 = -1 mod p i 2 = 1 mod p). Dakle, općeniti modulo p napadi mogu biti uspješniji od modulo 3 napada na RC5P [8]. Također se mogu razmotriti napadi modulo n gdje n nije nužno prim broj. Kada je n složen, modulo n napad je ekvivalentan kriptoanalizi modulo p sa više aproksimacija. Ako je faktorizacija od n jednaka p1 * ... * pm, tada se po

42 Kineskom teoremu ostataka svi modulo n napadi mogu rastaviti na m napada modulo pj.

3.7. Meet-in-the-Middle napad

3.7.1. Opis napada i formuliranje problema traženja kolizije

Meet-int-the-middle napad uključuje dvije funkcije f1 i f2, za koje postoje dva ulaza, a i b, tako da je f1(a)=f2(b). Cilj je naći a i b. Mogu također postojati i drugi parovi ulaza koji zadovoljavaju tu jednadžbu, ali je tipično samo jedan par rješenje. Meet in the Middle: napad je sličan birthday napadu, osim što kriptoanalitičar može provjeriti sjecište između dvaju skupova, a ne mora čekati pojavljivanje vrijednosti dvaput u jednom skupu. Neka kriptoanalitičar zna prirodu poslanog otvorenog teksta i neka pošiljatelj koristi 64 bitni ključ. Kriptoanalitičar izgradi 1 od 2 skupa, tj. tablicu, tako da izračuna 232 jedinstvenih hash rezultata za isti otvoreni tekst sa jedinstvenim ključem za svaku poruku, i to koristeći istu hash funkciju koju koristi pošiljatelj. Zatim prisluškuje svaku poruku i provjerava da li kriptirana hash vrijednost postoji u njegovoj tablici. Ako dođe do kolizije, tada je moguće da je odgovarajući ključ iz tablice ispravan, što omogućuje kriptoanalitičaru umetanje svoje poruke. Ako postoji N mogućih vrijednosti i 1 skup ima X elemenata, a drugi skup ima Y elemenata tako da je X+Y≤N, tada postoji X * Y mogućih parova elemenata takvih da je šansa za koliziju za svaki par 1/N. Što je (X * Y)/N bliži 1 vjerojatnost kolizije raste. Za efikasnost, bilo bi dobro da kriptoanalitičar koristi vrijednost X za jedan skup, a vrijednost Y za drugi skup, tako da je X * Y ~ N ili je X ~ Y ~ √(N).

U ovom poglavlju pokazano je kako se te funkcije mogu konstruirati, te je iz tih funkcija f1 i f2 konstruirana jedna funkcija f prikladna za varijantu paralelne pretrage za kolizijom.

Prvi primjer meet-in-the-middle napada prikazan je na varijanti DES-a naziva dvostruki-DES gdje se podaci kriptiraju dva puta sa dva nezavisna ključa (k1, k2). Diffie i Hellman su pokazali da je dvostruki-DES osjetljiv na meet-in-the-middle napad koji pronalazi k1 i k2. Neka je dan par otvorenog i kriptiranog teksta (P, C) takvi da se postupkom dvostrukog-DES-a uz par ključeva (k1, k2), P preslikava u C. Funkcija f1 je funkcija kriptiranja konstante P sa DES ključem, a f2 je funkcija dekriptiranja konstante C sa DES ključem. Vrijedi f1(k1)=f2(k2). Ovdje su P i C implicitne konstante u f1 i f2. Mogu postojati i drugi pogrešni parovi ključeva koji preslikavaju P u C, ali samo jedan par ključeva je ispravan. Jedan dodatni par otvorenog i kriptiranog teksta dovoljan je za jedinstveno određivanje ispravnog para ključeva.

43 Drugi primjer je problem diskretnog logaritma, u posebnom slučaju gdje eksponenti imaju nisku Hamming-ovu težinu. Uz dani generator α cikličke grupe i element y = α x gdje je x duljine m bitova, a Hammingova težina t, želi se naći x. Problem se može riješiti meet-in-the-middle napadom. Sve moguće vrijednosti od x se mogu napisati kao suma dviju m-bitnih m vrijednosti, svaka sa Hamming-ovom težinom t/2. Neka je n=( t/2) i neka h preslikava cijele brojeve iz intervala [0,n) u m-bitne vrijednosti Hamming-ove h(i) h(j) x - h(j) težine t/2. Uz f1(i)=α i f2(j)=y/α (=α ), postoje ulazi a i b takvi da je f1(a)=f2 (b). Ako se pronađu ulazi a i b zbog x = h(a) + h(b) dobiva se x.

Funkcije f1 i f2 moraju biti istog ranga, ali ne trebaju imati istu domenu. Uz f1: D -> R i f2: D -> R pronalaze se parovi ulaza i i j, takvi da vrijedi f1(i)=f2(j) dok se ne pronađe ispravan par ulaza a i b. Ako mnogo parova rezultira kolizijom, može biti potreban test za određivanje da li je pronađen ispravan par. Npr. za slučaj dvostrukog-DES-a to se može načiniti tako da se provjeri par dobivenih kljlučeva koristeći drugi par otvorenog i kriptiranog teksta.

Za paralelnu pretragu kolizije potrebna je funkcija f takva da su njezina domena i prostor jednaki i da postoje dva ulaza u f koji daju isti izlaz i koji vode rješenju danog problema. Neka je g: R -> D x {1, 2} funkcija koja preslikava element iz prostora funkcije f1 (i f2) u element domene D zajedno sa bitom koji se koristi za određivanje funkcije f1 i f2. Ovdje se pretpostavlja da je |R| ≥ 2|D|. Definira se f: D x {1,2} -> D x {1,2} kao f(x,i) = g(fi(x)), za i=1,2. Kako vrijedi f1(a) = f2(b), slijedi da je g(f1(a))=g(f2(b)) i f(a,1)=f(b,2). Ovo je tražena kolizija.

3.7.2. Rješavanje problema traženja kolizije

Važno je napomenuti da postoji mnogo parova i, j takvi da je f(i, 1)=f(j, 2), a među njima je jedinstveni par kolizije, f(a, 1)=f(b, 2) koji rješava meet-in-the- middle problem. Da bi se našla jedna smislena kolizija, tzv. zlatna kolizija, potrebno je naći velik broj kolizija u f. Za primjer dvostrukog-DES-a, kolizija koja se traži je f(k1, 1)=f(k2, 2) za ispravan par ključeva (k1, k2).

3.7.2.1. Opis paralelne pretrage kolizije

Neka je dana funkcija f: S -> S. Izabere se prepoznatljivo svojstvo koje razlikuje dio Θ elemenata iz S (npr. Θ = 2 -10 kada se razlikuju elementi sa vodećih 10 nula). Izabere se element x0 ∈ S i generira niz točaka xi = f(xi-1), za i = 1, 2,... sve dok se ne dostigne razlikovna točka xd. Trojka (x0, xd, d) se pohrani u tablicu. Ovaj postupak se ponavlja za više vrijednosti x0. Ako se pojave dvije trojke sa jednakim xd, tada su njihovi nizovi točaka u koliziji. Ponavljanjem generiranja niza točaka iz njihovih odgovarajućih vrijednosti x0, mogu se pronaći dva ulaza, u i v, u funkciju f takvih da je f(u)=f(v). Neka je N=|S|. Očekuje se izvođenje √(πN/2) iteracija funkcije f prije nego jedan niz bude u koliziji s drugim. Za pronalaženje k

44 kolizija očekuje se √(πkN/2) iteracija funkcije f. Također, što je dostupna memorija veća, postupak je učinkovitiji. Da bi se riješio meet-in-the-middle problem, iz mnogo kolizija koje su na N 2 raspolaganju, potrebno je pronaći tzv. zlatnu koliziju. Postoji ( 2)~N /2 parova ulaza i vjerojatnost da se oba ulaza preslikavaju funkcijom f u isti izlaz je 1 od N. Zbog toga se očekuje da za danu slučajnu funkciju f postoji oko N/2 kolizija. U praksi se neke kolizije pronađu mnogo puta, a neke nikada. Zbog toga se ograniči broj traženih kolizija za funkciju f i ako se zlatna kolizija ne pronađe nakon određenog vremena, konstruira se nova funkcija f i postupak se ponavlja.

Dio Θ koji se odabire, kako dugo se koristi konstruirana verzija funkcije f, kako dugo tražiti zlatnu funkciju, te koliko memorije je potrebno određuje se prema sljedećoj propoziciji:

Propozicija (heuristika): Neka je n kardinalitet domene funkcija f1 i f2, tako da je rang od f jednak N=2n. Za memoriju u koju se može pohraniti w trojki, naslućuje se da je optimum dijelova razlikovnih točaka Θ ~ 2.25√(w/N) i potrebno je generirati oko 10w nizova točaka po verziji funkcije f. Očekivani broj iteracija funkcije f je uz te parametre 2.5N3/2/w1/2~7n3/2/w1/2, a očekivan broj pristupa memoriji je 4.5N=9n.

Za dvostruki-DES, n je veličina ključa (n=256). Za ograničene eksponente m Hammingove težine, za početnu verziju je n=( t/2 ), a za poboljšanu verziju je n= m/2 ( t/2 ).

3.7.2.2. Usporedba sa prethodnim napadom

Meet-in-the-middle napad se obavlja na slijedeći način. Izračuna se f1(x) za sve x

∈ D i par (f1(x),x) se pohrani u tablicu (koristeći hash vrijednost od f1(x)). Za svaki y ∈ D izračuna se f2(y) i potraži se u tablici. Ako se pronađe, x i y provjerava se da li su oni ispravni ulazi (a i b). Ova metoda u prosjeku zahtijeva 1.5n evaluacija funkcije i memoriju za n parova, gdje je n=|D|. Za dvostruki-DES to je (1.5)256 DES operacija i 256 pohranjenih parova [14]. Očito je da ovo nije praktična količina memorije. Pretpostavimo da dostupna memorija može pohraniti samo w parova (f1(x),x). Napad se može modificirati kako su opisali Even i Goldreich u [6] iz [14].

3.7.3. Zaključak uz meet-in-the-middle napad

Napad se obavlja tako da se operacije razdvoje u dvije polovice. U svakoj polovici je uključena različita tajna informacija. Ako je svaka tajna izabrana iz skupa veličine n, i dostupno je w elemenata memorije, tada se paralelno traženje kolizije može obaviti u očekivanom heurističkom broju operacija, 7n3/2/w1/2, što je 0.07√(n/w) brže od prijašnjih tehnika meet-in-the-middle napada.

45 4. Kolizije u hash funkcijama

Sigurnost hash funkcije H() se određuje na temelju slijedećih svojstava:

• Jednosmjernost: Za bilo koji ulaz h, računski nije moguće naći ulaz x takav da je H(x)=h. • Slaba otpornost na koliziju: Za bilo koji ulaz x, računski nije moguće naći drugi ulaz y≠x takav da je H(x)=H(y). • Jaka otpornost na koliziju: Računski je nemoguće naći par (x, y) takve da je H(x)=H(y). • Domenska otpornost (eng. pre-image resistance): za dani izlaz y=h(x) (ali nije dan odgovarajući ulaz x) praktično je nemoguće pronaći x. • Druga domenska otpornost (eng. 2nd pre-image resistance): za dani izlaz y=h(x) i odgovarajući ulaz x praktično je nemoguće pronaći drugi ulaz z≠x takav da je h(z)=h(x). • Svojstvo slučajnog predviđanja: funkcija h() se ponaša kao slučajno odabrana funkcija.

Najmanje je potrebno da hash funkcija bude jednosmjerna i slabo otporna na koliziju. Bez tih svojstava, bilo bi lako naći takav ulaz y da vrijedi H(x)=H(y)=h. Tada bi bilo moguće presresti poruku i potpisanu hash vrijednost, naći drugi ulaz y i poslati originalno potpisanu poruku sa novim sadržajem y. U ovoj shemi ne traži se jaka otpornost na koliziju, jer napadač treba naći koliziju za specifičan ulaz. Općenito, mnoge aplikacije zahtijevaju da hash kolizije budu jako otporne na koliziju, zbog meet-in-the-middle napada. Ako za hash funkciju vrijede gornja tri svojstva, jedini način za nalaženje kolizije je gruba sila. Napad grubom silom je napad u kojem napadač isproba različite ulaze dok ne nađe koliziju.

Ako hash funkcija izračunava hash vrijednost od n bitova, napadač bi u prosjeku trebao isprobati 2n-1 različitih ulaza prije nego dođe do kolizije. Ako je to točno, kaže se da hash funkcija osigurava sigurnost razine 2n-1. Npr. MD5 hash funkcija koja izračunava 128-bitnu hash vrijednost osigurava razinu sigurnosti 2127. No to nije uvijek točno, zbog paradoksa rođendana (Birthday napad). U ovom poglavlju opisani su: Birthday napad, Pollardova ro metoda, metoda razlikovnih točaka, te multikolizijski napadi.

4.1. Birthday napad

Ako se u sobi nalaze 23 osobe tada je vjerojatnost da su barem dvije rođene isti dan 50%; za 60 i više ljudi, vjerojatnost je veća od 99%. Primijenjeno na hash funkcije, osobe i rođendani su ekvivalentni ulazima i njihovim hash vrijednostima, a da dvije osobe imaju rođendan na isti dan, je ekvivalentno tome da dva ulaza u hash funkciju imaju istu hash vrijednost. Vjerojatnost kolizije je jednaka X * (X -

46 1) / (2 * N), X je broj odabranih elemenata od N elemenata. Ako je X ≥ sqrt(N), tada je vjerojatnost ≥ 50%. U bitovima, granica "rođendana" je 2K/2 elemenata prije pojave kolizije. Kako postoji 2K mogućih vrijednosti, mora biti √(2K) elemenata u očekivanju kolizije.

Vjerojatnost da se ne nađe kolizija, kada se hash-ira k različitih ulaza sa hash funkcijom f koja može izračunati n različitih vrijednosti je:

k-1 (1-1/n)(1-2/n)...(1-(k-1)/n) = ∏ i=1 (1-i/n).

Može se pokazati da je broj ulaza k, potrebnih za generiranje kolizije sa hash funkcijom jednak: k~√(2nln(1/(1-ε))) gdje je n veličina rezultata hash funkcije, a ε vjerojatnost pojavljivanja kolizije. Npr. za vjerojatnost kolizije 50% dobiva se:

k~1.17√ n.

To znači da je za dobivanje kolizije potrebno √ (2n)=2 n / 2 različitih ulaza.

Birthday napad traži bilo koje poklapanje para, dok iscrpno pretraživanje traži poklapanje sa odabranim ciljem. Birthday napad traži N stanja, što zahtijeva generiranje O(N) stanja. Usporedba sa N stanja znači O(N2) usporedbi. Višak u traženju poklapajućeg para u N od M stanja je: odds = 1; for i=0 to N-1 odds = odds * (M-i)/M

Stoga birthday napad može pronaći poklapajući par elemenata mnogo brže nego iscrpno pretraživanje koje traži poklapanje za odabrani cilj.

Naivna implementacija birthday napada jednostavno isproba različite ulaze, dok god se ne pronađe poklapanje hash vrijednosti. Za ovaj postupak bila bi potrebna ogromna količina memorije, npr. za probijanje 48-bitne hash funkcije bilo bi potrebno 2*48*1.17√ (248)~1797Mb.

Postoje dvije metode za traženje kolizije hash funkcija sa skromnijim korištenjem memorije, Pollard-ova ro metoda (eng. Pollard's rho method) i metoda razlikovnih točaka (eng. Distinguished points method), opisanih u poglavljima 3.2. i 3.3.

47 4.1.1. Wagner-ov općeniti birthday napad

Neka su L1,...,L4 četiri liste n-bitnih slučajnih cijelih brojeva. Zadatak je naći xi ∈ Li n / 4 takav da je x1 xor x2 xor x3 xor x4=0. Ako svaka lista sadrži najmanje 2 cijelih brojeva, rješenje postoji sa dobrom vjerojatnošću. U postupku se generiraju sve moguće vrijednosti x1 xor x2 i x3 xor x4 i tada se traži kolizija. Složenost postupka je O(2 n / 2). Za liste veličine najmanje 2 n / 3, ovaj napad rješava problem u O(2n / 3). n / 3 Prvo se generira lista od 2 vrijednosti y=x1 xor x2 takvih da je n/3 najmanje značajnih bitova od y nula. Isto se načini za vrijednosti z=x3 xor x4. Dobiju se dvije liste sa 2 n / 3 cijelih brojeva sa n/3 najmanje značajnih bitova jednakih nuli. Tada se traži kolizija između tih dviju listi. Ova metoda se može generalizirati tako da se traži nul-suma između 2a listi.

4.2. Pollardova ro metoda

Funkcija f : S -> S koja preslikava vrijednosti iz konačnog skupa S u taj isti skup će u nekoj točki kreirati periodičnu sekvencu. Ponavljanje sekvence hi = fi(fi-1(...(f1(x)))) dovoljno dugo, učinit će je periodičnom. To znači da postoje brojevi i > j gdje je hi=hj. Na slici 4.1 ilustriran je primjer Pollard-ove ro metode, gdje je za početu vrijednost x1 izračuanta hash vrijednost do vrijednosti x2 koristeći hash funkciju f (x).

48 Slika 4.1. Primjer Pollard-ove rho metode

Kako postupak napreduje i kreira se periodična sekvenca, dobiva se oblik grčkog slova “ro” , i po tome je ova metoda dobila ime. Da bi se ova metoda koristila za traženje kolizije, potrebne su dvije stvari: 1. algoritam za detekciju ciklusa za što postoji nekoliko mogućnosti, npt. Floyd- ov algoritam ili Brent-ov algoritam, 2. način određivanja predperioda, što je sekvenca od x1 do x2.

Tada je moguće početi tražiti koliziju tako da se odabere slučajna početna vrijednost x1 i počinje računati sekvenca uz izvođenje algoritma za detekciju ciklusa. Pohranjuju se samo one vrijednosti potrebne za određivanje posljednje vrijednosti koja uzrokuje koliziju. Na slici 4.1 posljednja vrijednost koja uzrokuje koliziju je vrijednost x9, što ovisi o korištenom algoritmu. Budući da se točka kolizije može preskočiti, važno je sačuvati dovoljan broj vrijednosti da bi se spriječilo ponovno računanje sekvence. Trivijalan način za to je da se sekvenca započne ponovno dok se ne nađe točka kolizije, u slučaju sa slike je to točka x3. Također ovisi o algoritmu da li će se prva vrijednost naći na pametniji ili brži način.

49 4.3. Metoda razlikovnih točaka

Ova metoda je slična Pollard-ovoj metodi. Odabire se slučajna početna točka x1, i računa se sekvenca f(f(...f(x2f(x)))) dok se ne nađe razlikovna točka xp. Razlikovna točka je točka (vrijednost) koja ima razlikovne karakteristike, tj. ima nule na prvih n bitova. Kada se pronađe ta točka, početna točka x1 i razlikovna točka xp se sačuvaju i slučajno se odabere nova početna točka. Postupak se ponavlja dok dvije početne točke ne daju istu razlikovnu točku. Tada se te dvije sekvence sijeku i generiraju koliziju. Još jedino preostaje pronaći sjecište tih dviju sekvenci, a to se može načiniti relativno lako. Slika 4.2 ilustrira ovu metodu.

Slika 4.2. Primjer metode razlikovnih točaka

Razlikovne točke na slici 4.2 označene su dvostrukim krugovima. Početne točke x9 i x14 donose istu razlikovnu točku x13, što znači da generiraju koliziju. Kolizija se događa na mjestu gdje se te dvije sekvence sijeku, tj. u točki x11. Zbog toga x10 i x15 generiraju koliziju u hash funkciji. Valja spomenuti da se u sekvenci može pojaviti petlja (kao kod ro metode). To se događa kada se razlikovna točka pronađe prije nego se dogodi kolizija. Jedan način rješavanja ovog problema je da se ograniči duljina izračunatih sekvenci. No to može trošiti dodatno vrijeme ako se odbace sekvence kod kojih se još nije pojavila petlja. Drugi način je da se koriste algoritmi za detekciju ciklusa, te se pomoću njih detektira kada se u sekvenci pojavila petlja.

4.4. Multikolizijski napadi na hash funkcije

Multikolizija je skup elemenata čije su izlazne vrijednosti jednake. Za neku funkciju H : {0,1}* -> {0,1}n bilo koji K multikolizijski napad (npr. traženje skupa veličine K čiji su izlazi jednaki) zahtijeva Ω(2(K-1)n/K) upita funkcije H. Pronađene su multikolizije kojima je potrebno manje vremena [12]. Dokazi teorema, lema i propozicija u ovom poglavlju mogu se naći u [12].

50 4.4.1. Multikolizija klasične hash funkcije

Kolizija funkcije g: D -> R je podskup {x,y} od D takav da je g(x)=g(y).

Slično, za r ≥2, r kolizija (ili multikolizija) je podskup {x1,...,xr} (multikolizijski podskup) od D takav da je g(x1)=g(x2)=...=g(xr)=z (z je izlaz hash funkcije). Izlazna vrijednost z je vrijednost kolizije (eng. collision value) za multikolizijski skup. r kolizijski napad ili multikolizijski napad: Za funkciju g ronalazi se podskup C veličine r (≥2). Za slučaj r = 2 ovo je obični kolizijski napad.

Funkcija g: D -> R je slučajna funkcija ako su za bilo koji k>0 i k različitih ulaza x1,x2,...,xk ∈ D, vrijednosti g(xi) nezavisno i uniformno distribuirane na R. Osim ako nije izračunata vrijednost g(x), g(x) će biti uniformno distribuirana na R. Kaže se da je funkcija g modelirana kao slučajna, ako je g slučajna funkcija. Složenost napada je broj izračunavanja funkcije g. Ako se neka funkcija definira bazirano na g, za koju se smatra da je slučajna funkcija, složenost bilo kojeg napada nad tom funkcijom je broj izračunavanja funkcije g.

Neka je g: D -> R funkcija modelirana kao slučajna. Tada bilo koje traženje r kolizije ima složenost Ω( |R| ( r - 1 ) / r ). Složenost birthday napada za r koliziju je O ( |R| ( r - 1 ) / r ).

Dakle, u tom slučaju je birthday napad najbolji napad za traženje r kolizije. Za slučaj hash funkcija prvo se dizajnira funkcija sažimanja f: {0,1} n + m -> {0,1} n gdje je m > 0. Tada se dizajnira metoda koja proširuje domenu u veću proizvoljnu domenu. Na primjer MD-metoda, gdje je hash funkcija H f : ({0,1} m )* -> {0,1} n bazirana na funkciji sažimanja f definirana na slijedeći način: h0 je neka fiksna početna vrijednost i |m i| = m. f algoritam H (m1 ||...|| ml) za i=1 do l hi = f(hi-1, mi) vrati hl

4.4.1.1. Joux-ov multikolizijski napad na H f

Joux je pokazao da postoji 2 r kolizijski napad za gornju klasičnu iteracijsku hash funkciju sa složenošću O(r2 n / 2) [12]. Također je dokazao da H f nije slučajna funkcija. Složenost se ovdje odnosi na pozive funkcije f, jer je H f bazirana na f za koju se pretpostavlja da je slučajna funkcija. Ideja napada je da se nađe prvih r uzastopnih kolizija

1 2 f(hi-1, mi ) = f(hi-1, mi ) = hi, 1 ≤ i ≤ r.

51 i1 ir r Vrijedi H(m1 ||...|| mr ) = hr gdje su i1,...,ir ∈ {1,2}. Dakle, dobiva se 2 kolizija tako da se nađe samo r uzastopnih 2 kolizija, pa je složenost napada O(r2 n / 2).

4.4.1.2. Provedba multikolizije

Neka je H : D -> {0,1}n neka hash funkcija koja ima 2n/2 multikoliziju uz vremensku složenost (n). Tada, za bilo koju drugu funkciju G : D -> {0,1}n, H()||G() ima koliziju uz vremensku složenost q(n) uz pretpostavku da potreban samo jedan zahtjev za računanje G i q(n) ≥ 2n/2. Ako je q(n) << 2n (što je složenost birthday napada na H||G) tada se dobiva napad bolji od birthday napada. Traži se kolizija za G() iz skupa multikolizije za H().

4.4.2. Multikolizijski napad na opću sekvencijsku hash funkciju

Za svaki l, može se sa klasičnim algoritmom dobiti niz <1, 2,..., l>. i-ta vrijednost niza predstavlja broj bloka poruke koji je uključen u i-tu petlju algoritma. Ako se dopusti da se brojevi blokova ponavljaju više puta, ova ideja se može generalizirati. Npr. neka svakom l odgovara niz <1, 2,..., l, 1, 2,..., l>. Ako je H(IV,M) klasična iteracijska hash funkcija sa početnom vrijednošću IV tada ja hash funkcija bazirana na nizu <1, 2,..., l, 1, 2,..., l> H(H(IV,M),M). Ova funkcija otporna je na Joux-ov napad. No na tu funkciju može se primijeniti varijanta Joux-ovog napada.

4.4.2.1. Generalizirana sekvencijska hash funkcija

Za svaki pozitivni cijeli broj l, postoji pozitivan cijeli broj s=s(l) i sekvenca l l l l l a = gdje je a (i) ∈ Zl := {1, 2,..., l}. Može se definirati hash n m l n l funkcija H : {0, 1} x ({0,1} ) -> {0, 1} koja se bazira na nizu a . Neka je M = m1 || ... || ml gdje je |mi| = m za svaki i.

Algoritam H(m1||...||ml) za i = 1 do s

hi = f(hi-1, mai)

vrati hs Niz koji odgovara klasičnoj hash funkciji je <1, 2,..., l>. Generaliziranoj sekvencijskoj hash funkciji H : {0, 1}n x ({0, 1}m)* -> {0, 1}m može se pridružiti beskonačan niz . Ovdje je element niza konačan niz. l-ti niz predstavlja funkciju koja računa hash vrijednost poruke veličine l blokova. l Pretpostavlja se da se svaki element od Zl pojavljuje u nizu a. Tj. za dobivanje konačne hash vrijednosti svaki blok poruke se koristi barem jednom. Ako to ne bi bilo tako postojao bi trivijalan kolizijski napad.

52 4.4.2.2. Terminologija

Neka je dan konačan niz a = od Zl := {1, 2,..., l}. Duljina niza je s i označava se sa |a|. Skup indeksa skupa je [1, s] := {1, 2,..., s}. Za svaki podskup I={i1,...,it} skupa indeksa [1, s] postoji podniz a(I) = gdje je i1<...

Različiti elementi x1,...,xd iz Zl su nezavisni u podnizu a(I) ako postoji d disjunktnih i iscrpnih podintervala I1,...,Id (čija unija daje sijeli skup I), takvih da se xi pojavljuje u podnizu a(Ii) ali ne u a(Ik) za k ≠ i.

Neka je N(a(I)) := max {d : ∃ d nezavisnih elemenata u podnizu a(I)}. x1,...,xt su nezavisni u nizu a ako postoji podniz od a za neke 1 ≤ i ≠ j ≤ t. Ako postoji k elemenata koji se u nizu a pojavljuju samo jednom, tada je N(a) ≥ k. Za niz a od Zl i x ∈ Zl je freq(x,a) (kraće freq(x)) = |{i : a(i) = x}| (frekvencija od x). Frekvencija od x je broj koji pokazuje koliko puta se x pojavljuje u nizu a. freq(a) (frekvencija niza) je najveća frekvencija od svih elemenata u nizu, tj. freq(a) = max { freq(x) : x ∈ Zl }. Neki multikolizijski napadi baziraju se na nizovima gdje je frekvencija najviše dva. Primjer 1: Neka je b(1) = <1, 2,...,l> (niz klasične hash funkcije). Vrijedi N(b(1)) = l. Neka je b(2) = <1, 2,..., l, 1, 2,..., l>. Lako se može vidjeti da ne postoje dva nezavisna elementa u nizu b(2) i da je N(b(2)) = 1. No vrijedi N(b(2)([1, l])) = N(b(1)) = l. Primjer 2: Neka je cl = <1, 2, 1, 3, 2, 4, 3, ..., l-1, l-2, l, l-1, l>. Jer su 1, 3,...,l (ako je l neparan) ili 1, 3, ..., l-1 (ako je l paran) nezavisni elementi, vrijedi N(cl) = floor ((l+1)/2) (floor je funkcija najveće cijelo).

4.4.3. Multikolizijski napad na generaliziranu sekvencijsku hash funkciju

Multikolizijski napad kaže da za niz a, N(a) = r postoji 2r kolizijski napad na hash funkciju baziran na nizu a. Složenost napada je O(s2n/2) gdje je s=|a|. Napad je ilustriran za hash funkciju baziranu na c5 = <1, 2, 1, 3, 2, 4, 3, 5, 4 , 5>. 1, 3, 5 su 5 nezavisni elementi u c . Prvo se blokovi poruke m2, m4 i m6 spoje sa IV. Tada se 1 2 pronađu m1 ≠ m1 takvi da je 1 1 2 2 f(f(f(h0,m1 ),IV),m1 ) = f(f(f(h0,m1 ),IV),m1 ) = h1.

53 1 2 1 2 Na jednak način pronađu se m3 ≠ m3 i m5 ≠ m5 takvi da je 1 1 2 2 f(f(f(f(h1,m3 ),IV),IV),m3 ) = f(f(f(f(h1,m3 ),IV),IV),m3 ) = h2. 1 1 2 2 f(f(f(h2,m5 ),IV),m5 ) = f(f(f(h2,m5 ),IV),m5 ) = h3. 1 2 Vrijedi da je { m : mi = mi ili mi , i = 1, 3, 5, mi = IV, i = 2, 4, 6 } multikolizijski skup sa vrijednošću kolizije h3. Propozicija 1: Neka je H hash funkcija bazirana na nizu a=al gdje je N(a)=r. Tada postoji 2r multikolizijski napad na H sa složenošću O(s2n/2) gdje je s=|a|. Ako se uzme l = 2r – 1 tada imamo 2r kolizije za hash funkciju baziranu na nizu cl (primjer 2) sa složenošću O(r2n/2). Ista ideja se može primijeniti na hash funkciju baziranu na nizu c(2) (primjer 1). Vrijedi N(c(2)([1, l])) = l za bilo koji l. Dobiva se multikolizija do nekih rundi, a iz multikolizijskog skupa ponovno se može dobiti r uzastopnih kolizija. Propozicija 2: Neka je H hash funkcija bazirana na al sa freq(al) ≤ 2. Ako postoji lijevi podinterval I takav da je N(al(I)) ≥ rn/2 tada postoji 2r multikolizija funkcije H sa složenošću O(r2n2n/2).

Definicija 2: Za dani podniz a(I) definira se S(a(I)) = | { x ∈ Zl : freq(x, a(I)) ≥ 1 } |. i Slično, definira se S (a(I)) = | { x ∈ Zl : freq(x, a(I)) = i } |. Kada je freq(a) ≤ 2 vrijedi S(a(i)) = S1(a(i)) + S2(a(i)).

Propozicija 3: Neka je a niz od Zl sa freq(a) ≤ 2, tada je ili N(a) ≥ M ili postoji lijevi podinterval I takav da je N(a(I)) ≥ N kad god je l ≥ MN. Kao posljedica gornjih triju propozicija, 1, 2 i 3, dobiva se multikolizijski napad na generalizirane sekvencijske hash funkcije sa frekvencijom najviše 2. Teorem 1: Neka je H hash funkcija bazirana na nizu < a1, a2, ... > sa freq(al) ≤ 2 za svaki l ≥ 1. Tada postoji 2r multikolizija sa složenošću O(r2n2n/2).

4.4.4. Napadi na generalizirane hash funkcije bazirane na stablu

Neka je f : {0,1}n x {0,1}n -> {0,1}n funkcija kompresije na temelju koje je definirana generalizirana hash funkcija H(). 1. Neka je m = m1 || m2 ||...|| ml poruka sa l blokova sa veličinom bloka n, |mi| = n. n Također postoji h1, h2,... ∈ {0,1} konstanti (fiksnih početnih vrijednosti koje ovise samo o l). 1 2 1 2 2. Definira se lista s uređenih parova {( xj , xj )}1≤j≤s. Za 1 ≤ j ≤ s, xj , xj ∈ { h1, 1 2 h2,... } U {m1, m2,..., ml} U {z1,...,zj-1} i zj = f(xj , xj ). Za j ≠ s, zj se nazivaju prijelazne hash vrijednosti, a zs je konačna hash vrijednost. 3. Konačni sažetak poruke m definira se kao konačna hash vrijednost H(m)=zs.

54 Može se pretpostaviti da su svaka prijelazna hash vrijednost zi i svaki blok poruke mj u listi, i tako čine ulaz u neke pozive funkcije f. Tako ne postoje blokovi poruke i prijelazne hash vrijednosti za koje se ne računa hash. Gornja hash funkcija se također može definirati koristeći usmjereno binarno stablo. Pretpostavlja se da je čitatelju poznat pojam grafa i binarnog stabla.

Terminologija: 1. Neka je G = (V, E) usmjereno stablo sa jednim korijenom q ∈ V i skupom bridova E ⊂ V x V. v -> u označava brid (v,u) ∈ E, a v => u označava da postoji put od čvora v do u ili je u=v. 2. Za čvor v, definira se podstablo G[v] = (V[v]),E[v]) koje se sastoji od skupa čvorova V[v] = {u ∈ V : u => v}. Kaže se da je v korijen grafa G[v]. 3. L[G] (ili samo L) označava skup listova od G ,a L[v] za L[G[v]], je skup listova grafa G[v]. Vrijedi L[v] = L ∩ V[v].

Generalizirana hash funkcija koja se temelji na stablu: Neka je G = (V, E) usmjereno stablo sa jednim korijenom i p: L -> [1, l] U {0,1}n. Ako je p(v) ∈ [1,l] tada p(v) označava indeks bloka poruke. Kada je p(v) ∈ {0,1}n, tada p(v) označava početnu vrijednost. Za dani par (G,p) i l blokova poruke m = m1||...||ml pridružuje se n-bitni string za svaki čvor od G na slijedeći način: 1. Svakom listu v pridružuje se n-bitni string mi ako je p(v)=i ili se pridružuje h ako je p(v)=h. 2. Svakom drugom čvoru v pridružuje se n-bitni string f(z,z') gdje su z i z' pridruženi čvorovima u i u' i vrijedi u -> v, u' -> v.

Izlaz iz hash funkcije H() je vrijednost pridružena korijenu stabla. Za dani par (G,p) može postojati više načina za izračunavanje konačne hash vrijednosti. Tako (G,p) može biti karakterizacija nekoliko hash funkcija, ali su kao funkcije one identične. Dva različita para uvijek predstavljaju dvije različite hash funkcije. (G,p) je algoritam za H.

Terminologija u napadu: 1. Za x ∈ [1, l], freq(x,G) (freq(x)) je broj pojavljivanja elementa x u multiskupu p(L) (frekvencija od x). Tj. freq(x) označava broj izračunavanja hash vrijednosti bloka mx u postupku dobivanja konačne hash vrijendosti. Definira se, freq(G) =max{freq(x): x ∈ L}. 2. Hash vrijednost izlaza u čvoru v (vrijednost pridružena čvoru v, dok je poruka označena sa m) definira se sa H(v,m). Blok poruke mi se kod računanja H (v,m) koristi ako i samo ako je i u p(L[v]). Koristi se i oznaka H(v,mi) za H(v,m) kada H(v,m) ovisi samo o i-tom bloku poruke, tj. jedini indeks koji se pojavljuje u p(L[v]) je i. 3. Za dani čvor v definira se S(v,G) = S(v) = |{x ∈ [1,l] : freq(x,G[v]) ≥ 1}|. Slično i se definira S (v) = |{x ∈ Zl : freq(x,G[v]) = i}|. S(v) označava broj blokova poruke za koje se, da bi se izračunalo H(v,m), hash vrijednost izračunava barem jednom.

55 Definicja 3 (nezavisni nizovi indeksa poruka) Za dani algoritam (G,p), (x1, x2,...,xk) je nezavisni niz indeksa poruke ako postoje

čvorovi v1, v2,...,vk ∈ V takvi da je 1. Sva pojavljivanja xi su u p(L[vi]) za sve i.

2. xi ∉ (L[vj]) za sve i>j. 3. vk = q je korijen stabla G.

N(v) označava najveću vrijednost od k takvu da postoji nezavisni niz indeksa poruka u G[v] duljine k. N(q) označava najveću duljinu nezavisnog niza indeksa poruke u grafu G. Kaže se da vi odgovara čvoru xi. Zbog svojstva 2 u definicji 3, važan je redoslijed elemenata. Dakle, (x2,x1,x3,...,xk) ne mora biti nezavisan bez obzira ako je (x1,x2,x3,...,xk) nezavisan niz.

Na slici 4.3, (1, 5, 4) je nezavisan niz [12].

Slika 4.3. Primjer 6 blokovne hash funkcije bazirane na stablu

Odgovarajući čvorovi za 1, 5 i 4 su v1, v2 i v3 respektivno (slika 4.3). (4, 1, 5) nije nezavisan niz, jer jedini čvor v takav da su sva pojavljivanja 4 u p(L[v]) je v3. Vrijedi da je (5, 4) nezavisan niz u G-G[v1]. Općenito vrijedi lema:

Lema 1: Ako je (x1, x2,..,xk) nezavisan niz u G tada je (x2,..,xk) također nezavisan niz u G – G[v1] gdje je v1 čvor koji odgovara x1. Također vrijedi x1 ∉ p(L[G-G[v1]]).

Za dani par (G,p), ako postoji r nezavisnih elemenata u G, tada postoji 2r kolizijski napad za hash funkciju H baziranu na algoritmu (G,p). Složenost ovog napada je O((s + 1)2n/2) gdje je s broj srednjih čvorova u G. Ideja napada je slična Joux-ovom napadu: isprobava se r parova (ovi parovi nisu kolizijski) 1 2 1 2 r (mx1 ,mx1 ),...,(mxr ,mxr ). Zatim se svi ti parovi nezavisno kombiniraju i dobiva se 2 kolizijski napad. U primjeru sa slike 1, prvo se blokovi poruke m2, m3 i m6 spoje sa n-bitnim 1 2 1 2 * stringom IV. Tada se pronađe m1 ≠ m1 takvi da je H(v1, m1 ) = H(v1, m1 ) = h1 pri n/2 čemu se koristi 3.2 izračunavanja funkcije f. Neka je G2 = G-G[v1]. Slično se 1 2 1 2 * n/2 pronađu m5 ≠ m5 takvi da je H(v2, m5 ) = H(v2, m5 ) = h2 pri čemu se koristi 3.2

56 * izračunavanja funkcije f. Neka je G3 = G2 – G[v3] i preslikavanje p3(v1)=h1 , p3(v2) * 1 2 1 =h2 . Za taj par (G3,p3), mogu se pronaći m4 ≠ m4 takvi da je H(v3, m4 ) = H(v3, 2 * n/2 m4 ) = h3 pri čemu se koristi 5.2 izračunavanja funkcije f. Lako se provjeri da je skup 1 2 { m : mi = IV, i = 2, 3 i 6, mj = mj ili mj , j = 1, 4 i 5 } * multikolizijski skup sa vrijednošću kolizije h3 . U ovom primjeru potrebno je O (11.2n/2) izračunavanja funkcije f gdje je broj srednjih čvorova 10.

Lema 2: Za bilo koji par (G,p) sa S(q) ≥ 2N, postoji čvor v ∈ V sa N ≤ S(v) ≤ 2N gdje je q korijen stabla G=(V, E).

Propozicija 4: Neka je l=|S(q)| gdje je q korijen stabla. Ako je freq(G) ≤ 2, tada postoji čvor v takav da je N(v) ≥ N ili je N(q) ≥ M kad god je l ≥ 2MN.

Dakle, kad god je l ≥ 2r2n, ili je N(q) ≥ r ili postoji čvor v takva da je N(v) ≥ r n = k. U prvom slučaju već postoji 2r kolizijski napad. U drugom slučaju može se postupiti na jednak način kao i u slučaju nizova. Neka je (x1,...,xk) nezavisan niz. Pronađe se r čvorova v1, v2,...,vr = q u G' (= G-G[v]) takvih da je:

1. xin+1, xin+2,...,xin+n/2 ∈ p(L(G'[vi])) za sve i.

2. xin+1, xin+2,...,xin+n/2 ∈ p(L(G'[vj])) za sve j

Dakle, prvo se pronađe 2k kolizija na v.Tada se pronađe r uzastopnih kolizija iz multikolizijskog skupa. Ideja napada je slična napadu u slučaju nizova, pa su detalji izostavljeni. Dakle, glavni teorem glasi:

Teorem 3: Ako je freq(G(H)) ≤ 2, tada postoji 2r multikolizijski napad sa složenošću O(r2n.2n/2).

4.4.5. Ukratko o multidomenskom napadu

Za hash funkciju H: {0,1}* -> {0,1}n definira se: r multidomenski napad: za dani slučajni y ∈ {0,1}n, pronađe se podskup C=

{x1,..,xr} veličine r (≥1) takav da je H(x1)=...=H(xr)=y.

Složenost r multidomenskog napada za slučajnu funkciju je Ω(r2n). Za generaliziranu hash funkciju baziranu na stablu ili za sekvencijalnu hash funkciju postoji r multidomenski napad sa složenošću O(2n/2). Za slučaj multikolizijskog napada, vrijedi slično. Napad počinje jednako kao i kod multikolizijskog napada i na kraju, umjesto zadnje kolizije, traži se izlaz dan kao slika y. Složenost za zadnji korak je O(2n).

57 4.5. Posljedice kolizija

Na konferenciji Crypto 2004 [28] došlo se do zaključka da funkcije koje se dobiju iz konstrukcije poput one u MD4 nisu sigurne. To uključuje MD4, MD5, RIPEMD, HAVAL i SHA [28].

Hash funkcije se mogu koristiti u MAC (Message Authentication Codes) konstrukcijama poput HMAC [28]. Napadač koji može pronaći valjanu oznaku autentičnosti (MAC) za prethodno neviđen ulaz mogao bi probiti hash funkciju na jedan od dva načina:

1. Napadač bi mogao otkriti kolizije u hash funkcijama koje se koriste sa slučajnim i tajnim početnim vrijednostima. 2. Napadač bi mogao naći izlaz kompresijske funkcije koja se koristi sa slučajnim i tajnim početnim vrijednostima.

Trenutno se sumnja na takve mogućnosti trenutnih napada na hash funkcije.

Kolizijski napad na hash funkciju može se iskoristiti za digitalni potpis ovako:

1. Napadač pronađe par poruka x i y takve da je h(x)=h(y). x je “nedužna”, a y “kompromisna” poruka. 2. Napadač uvjeri “žrtvu” da potpiše (digitalni potpis) “nedužnu” poruku x. 3. Napadač priloži poruku y i potpis od x. Kako obje poruke imaju jednaku hash vrijednost, ovaj potpis je valjan i za y.

No, praktična razmatranja ograničuju mogućnosti takvih napada u stvarnom životu. Integritet postojećih potpisa ne treba se temeljiti na otpornosti na koliziju. Za postojeće potpise, ulaz i izlaz za hash funkciju su već određeni i fiksirani. Napadač koji pokušava iskoristiti te potpise za neku drugu poruku, trebao bi pronaći drugu domenu, a ne generalnu koliziju. Ovo je za suprotnu stranu mnogo teže budući da je vrijednost koja je u koliziji fiksirana. U [28] se mogu pronaći preporuke određene na temelju ECRYPT 2004.

58 5. Kriptoanaliza asimetričnih kriptosustava

Sigurnost većine danas asimetričnih kriptosustav bazira se na problemu diskretnog logaritma i problemu faktorizacije cijelih brojeva. Stoga su u ovom poglavlju opisane neke metode za rješavanje spomenutih problema.

Prema [29] trenutno najbolji algoritmi za rješavanje problema diskretnog logaritma su podijeljeni u dvije skupine: index-calculus metode i metode traženja kolizije. Razlika između tih dviju metoda je u sljedećem: index-calculus metode, da bi bile uspješne, zahtijevaju određena aritmetička svojstva, dok se metode traženja kolizije mogu primijeniti općenitije.

Index-calculus metode su vrlo slične trenutno najbržim metodama faktorizacije cijelih brojeva, i izvode se u sub-eksponencijalnom vremenu. Te metode nisu brze koliko metode eksponencijalne složenosti, ali se smatraju bržim od metoda eksponencijalne složenosti. Dvije su osnovne index-calculus metode, a odnose se na kvadratno faktoriziranje i na metode kvantionske faktorizacije.

Do sada je najveći riješeni problem faktorizacije, problem u GF(2503) [29].

Algoritmi traženja kolizije imaju isključivo eksponencijalnu složenost. Najbolja osnovna metoda je Pollard-ova rho metoda. Ova metoda je složenosti O(√n) gdje je n veličina grupe. Najveći takav problem koji je riješen je n~297 [29].

Prema [30], najbolji algoritmi faktoriziranja dolaze u dvije skupine: metode spoecijalne namjene i opće metode. Učinkovitost prvih ovisi o nepoznatim faktorima, dok učinkovitost drugih ovisi o broju koji se faktorizira. Metode specijalne namjene se koriste za faktoriziranje brojeva s malim faktorima. Opće metode se koriste kod sustava za kriptiranje.

Metode specijalne namjene uključuju Pollard-ovu rho metodu, sa očekivanom složenošću O(√p), i Pollard-ovu p-1 metodu, sa složenošću O(p'), gdje je p' najveći prim faktor od p-1. Pollard-ova p+1 metoda je također algoritam specijalne namjene, sa složenošću O(p'), gdje je p' najveći prim faktor od p+1. Sve ove metode su eksponencijalne složenosti u veličini (broju bitova) od p.

Najbolji algoritam opće namjene je NFS (Number Field Sieve), složenosti O(e1.9(ln n)^1/3(lnln n)^2/3). Najšire korišten algoritam opće namjene bio je MPQS (Multiple Polynomial Quadratic Sieve), sa složenošću O(e(ln n)^1/2(lnln n)^1/2).

Osim nekih metoda rješavanja problema diskretnog logaritma i problema * faktorizacije, opisana je i kriptoanaliza u podgrupama od Zn primarnog reda.

59 5.1. Problem diskretnog logaritma

Neka je p prim broj. Problem diskretnog logaritma nad Zp je: .(za dane a i b, potrebno je naći x takav da je ax =ݰ b (mod p Sigurnost mnogih kriptosustavi javnog ključa se temelji na problemu diskretnog logaritma. Prvi praktičan kriptosustav javnog ključa bio je DH (Diffie-Hellman) metoda, a temelji se upravo na ovom problemu. Više o tome može se naći u [13]. U poglavlju su opisani: osnovni napadi, Pollardova metoda i index-calculus metoda.

5.1.1. Osnovni napadi

U ovom poglavlju opisani su neki opći algoritmi za diskretni logaritam i pretpostavlja se osnovno znanje iz područja grupa.

Za cikličke grupe G = postoji efikasna metoda za stvaranje jedinstvene kanonske reprezentacije elemenata (postoje i takve grupe kod kojih je ekvivalenciju dviju reprezentacija teško dokazati). Za takve grupe postoji više metoda za računanje diskretnog logaritma, koje zahtijevaju oko |G|1/2 operacija. Prva i najpoznatija metoda je Shank-ova “baby-steps, giant-steps” medota [13]. Ako je n red grupe g, neka je m = n1/2 te se računa h, hg-1, hg-2,..., hg-(m-1) i 1, gm, g2m,...,g(m-1)m. Ako je h ∈ , tada je h = gi+jm za neke 0 ≤ i, j ≤ m – 1, a hg-1 i gjm iz gornjih listi će biti jednaki. Provjeravanje jednakosti u tim dvjema sortiranim listama za m elemenata se može obaviti u linearnoj složenosti. Shank-ov algoritam je deterministički. Ako se želi izbaciti determinizam, da bi se ubrzao postupak, može se umjesto sortiranja koristiti hash. No, ne postoji mogućnost redukcije potrebnog prostora, što je reda m~||1/2 [13].

5.1.2. Pollardova metoda

Pollard-ov algoritam je vjerojatnosni algoritam tipa Monte Carlo [4].

Prvo se pronađu dva broja u i v takvi da je

au ≡ bv (mod p).

60 U ovom koraku potrebno je pronaći niz brojeva x0, x1,... dok se ne pronađu dva jednaka. Niz se definira na slijedeći način:

x0 = 1

xi+1 = bxi ako je 0 < xi ≤ p/3 2 xi+1 = xi ako je p/3 < xi ≤ 2p/3 xi+1 = axi ako je 2p/3 < xi < p xi se može predstaviti kao

ci di xi ≡ a b (mod p).

Algoritam za računanje niza je slijedeći:

c0 = 0

ci+1 = ci ako je 0 < xi ≤ p/3

ci+1 = 2ci ako je p/3 < xi ≤ 2p/3 ci+1 = ci+1 ako je 2p/3 < xi < p

d0 = 0

di+1 = di+1 ako je 0 < xi ≤ p/3

di+1 = 2di ako je p/3 < xi ≤ 2p/3 di+1 = di ako je 2p/3 < xi < p

Da bi se našao jednak par, potrebno je pohraniti sve brojeve. Algoritam obrađuje skupove

(xi, ci, di; x2i, c2i, d2i), i = 1, 2,... gdje se svaki skup generira iz prethodnog, sve dok se ne generira skup za kojeg u v vrijedi xi = x2i. Dobiva se a ≡ b (mod p), gdje je

u = c2i – ci (mod p-1) v = d2i – di (mod p-1).

Niz {xi} se može smatrati slučajnim. Procijenjeno je da je period slučajnog niza1.0308 √p [13].

U drugom koraku potrebno je naći x. Ako je v ≡ 0 (mod p-1), tada algoritam ne uspijeva. Neka je v ≠ 0 (mod p-1). Tada algoritam pronalazi d, najveći zajednički djelitelj od v i p-1, uz uporabu proširenog Euklidovog algoritma. Odnosno,

d = (v, p-1) = uv + (p-1)μ.

Ako se obje strane u au ≡ bv (mod p) potenciraju sa w dobiva se

61 au w ≡ bv w ≡ bd- (p-1) ≡ bd ≡ (ax)d (mod p).

Dakle, xd ≡ uw (mod p-1), iz čega slijedi

xd = uw + m(p-1).

Kako d | (p-1), slijedi d | nw. Dobiva se x = (uw + m(p-1)) / d.

Vrijednost m je između 0 i d. U slučaju kada je d mali, može se obaviti iscrpno pretraživanje. Ako je d velik, iscrpno pretraživanje bi jako dugo trajalo. Ako je d=1, tj. kada je (v, p-1) = 1, tada se dobiva

x = uw = uv-1 (mod p-1).

Gornji algoritam se također može prilagoditi i primijeniti na faktore od p-1. Taj postupak naziva se višestupanjska metoda (eng. Multistage method). Neka je p-1 = st. Umjesto a i b uvrsti se as i bs. Zatim se pronađu u i v takvi da je

(as)u ≡ (bs)v (mod p).

Ostali koraci su analogni.

Efikasniji algoritmi od ovoga su Pohlig-Hellman-ov algoritam te index-calculus metoda [13].

5.1.3. Index-calculus metoda

Index-calculus metoda je metoda za rješavanje problema diskretnog logaritma u r poljima oblika Fq, gdje je q prim broj, ili u poljima F2^r. Ako je p prim broj i p~2 problem je lakše riješiti u F2^r. No, lakše je implementirati kriptosustave u F2^r. Osnovnu ideju iznio je Kraitchik (McCurley) [13]: ako je za neke elemente iz GF(q)*

m m ∏ i=1 xi = ∏ j=1 yj tada je

m m ∑ i=1 loggxi ≡ ∑ j=1 loggyj (mod q -1).

Ako se dobije mnogo jednadžbi gornjeg oblika (gdje je barem jedna koja uključuje element z kao što je g, za kojeg je poznat loggz), i ne uključuju previše xi i yj, tada je sustav riješiv. Najjednostavniji pristup (za diskretan logaritam modulo prim p) je da se uzme slučajni cijeli broj a, izračuna u = ga (mod p), 1 ≤ u ≤ p-1, i provjeri da li vrijedi

62 u = ∏ pi, gdje su pi prim brojevi koji zadovoljavaju pi < B za neku granicu B. Kada gornja kongruencija vrijedi kaže se da je u poravnat sa granicom B. Za većinu vrijednosti a, u neće biti poravnat, te će tako biti odbačen. Čak i za ovaj pristup složenost može biti jednaka exp((c + o(1))(logp)1/2(log logp)1/2) kad p -> ∞ za neku konstantu c. Više o unaprijeđenju metode može se naći u [13].

Slijedi opis postupka: Neka je f(x) stupnja d i f(x) je ireducibilan polinom modulo 2. d * n Imamo Fq = F2[x]/(f(x)) gdje je q = 2 . Neka je g generator Fq . Ako je g = y tada r je loggy = n ili log y = n. Vrijedi log(uv) = log(u) + log(v) (mod q-1) i log(u ) = rlog (u) (mod q-1). Izabere se m tako da je 1 < m < d. 1. Pronađi logaritam za svaki polinom stupnja ≤ m, na slijedeći način: t t a1 a2 ar uzmi potencije od g, poput g i nadaj se da je g = h1 h2 ...hr gdje je

deg(hi) ≤ m. Logaritmiraj obje strane. Dobiva se t = a1log(h1) + ... * arlog(hr). Ovo je linearna jednadžba po log(hi). Pronađi više takvih linearnih jednadžbi dok se ne mogu riješiti svi log(hi). Kada se to obavi, svi ai = log(hi) su poznati. t t b1 br 2. Izračunaj y(g ) za različite t dok se ne dobije yg = h1 ...hr . Tada vrijedi logy + tlogg = b1logh1 +...+ brloghr ili logy + t = b1a1 +...+ brar. Jedina nepoznanica ovdje je logy. Kada se postupak obavlja za konačno polje, obično se koristi oznaka ind umjesto log.

5.2. Problem faktorizacije

Kriptosustavi poput RSA svoju sigurnost temelje na problemu faktorizacije velikih cijelih brojeva. Najočitiji način probijanja RSA je faktoriziranje n=pq u prim brojeve p i q. Može se pretpostaviti da je n neparan. Trivijalno dijeljenje se obavlja tako da se n dijeli sa svakim neparnim brojem, ili sa svim prostim brojevima do √n. Ovaj postupak je jako spor.

Većina algoritama faktorizacije temelji se na slijedećem. Pretpostavlja se da je n=pq gdje su p i q prim brojevi. Neka su pronađeni x i y takvi da je x2 ≡ y2 (mod n) uz x ≠ ±y(mod n). Tada n | x2 – y2 pa je n | (x + y)(x – y). Slijedi pq | (x + y)(x – y) i p | (x+y)(x – y).

63 p je prim broj, pa iz p | ab slijedi p | a i p | b. Vrijedi p | (x + y) ili p | (x – y) i q | (x + y) ili q | (x – y). Ako oba dijele (x + y) tada pq | (x + y) i x + y ≡ 0 (mod n) te slijedi x ≡ -y (mod n), no to nije istina. Ako oba dijele x – y tada pq | x – y te slijedi x - y ≡ 0 (mod n) i x ≡ y (mod n), no i to nije istina. Slijedi da ili p | x + y i q | x – y ili obrnuto. U prvom slučaju tvrdi se da je gcd(x + y, n) = p. Poznato je da je gcd(x + y, n) djelitelj od n i da p dijeli oba, te slijedi da p dijeli gcd i q ne dijeli x + y, te je gcd ≠ pq = n. Slično je gcd(x – y, n) = q. Budući da je postupak traženja najveće zajedničke mjere sporo, ako se mogu pronaći takvi x i y, moći će se brže faktorizirati n. Dakle, traže se x i y, rješenja x2 ≡ y2 (mod n). Ako je x ≡ ±y(mod n) tada se pokuša ponovno. Ako nije, izračuna se gcd(x – y, n) = q i n/q = p. Može se vidjeti da n ne mora biti produkt točno dva prim broja. Općenito, gornji argumenti vrijede i za mnogo kompliciranije n. Općenito je gcd(x – y, n) neki djelitelj od n. U ovom poglavlju opisane su neke metode faktorizacije, tj. Eulerova metoda, Fermatova faktorizacija, metoda isključivanja (“Excludent” metoda), Dixonova metoda, Pollardova ro metoda, Brentova metoda, Pollardova p-1 metoda i metoda faktorizacije kvantionskom algebrom.

5.2.1. Eulerova metoda

Euler-ova metoda je algoritam faktoriziranja koji radi tako da se N izrazi u kvadratnoj formi na dva različita načina. Tada je N = a2 + b2 = c2 + d2, te je a2 – c2 = d2 – b2 (a – c)(a + c) = (d – b)(d + b). Neka je k najveća zajednička mjera od a – c i d – b, te je a – c = kl d – b = km (l, m) = 1, gdje (l, m) označava najveću zajedničku mjeru od l i m, i vrijedi l(a + c) = m(d + b). Kako je (l, m) = 1, m | a + c i a + c = mn, što daje b + d = ln

64 pa imamo [(½k)2 + (½n)2](l2 + m2) = ¼ (k2 + n2)(l2 + m2) = ¼ [(km)2 + (kl)2 + (nm)2 + (nl)2] = ¼ [(d – b)2 + (a – c)2 + (a + c)2 + (d + b)2] = ¼ (2a2 + 2b2 + 2c2 + 2d2) = ¼ (2N + 2N) = N.

5.2.2. Fermatova faktorizacija

Za dani n, Fermat-ova faktorizacija traži takve x i y da vrijedi n = x2 – y2. Tada je n = (x – y)(x + y) i n je faktoriziran. Modifikacijom se dobiva Dixon-ova metoda faktorizacije i kvadratno faktoriziranje (eng. quadratic sieve). Svaki pozitivan cijeli broj može se zapisati u obliku n = x2 – y2 tako da se piše n=ab (a > b), što daje a = x + y b = x – y. Zbrajanjem i oduzimanje se dobiva a + b = 2x a – b = 2y, te se rješavanjem po x i y dobiva x = ½(a + b) y = ½(a – b). Dakle, x2 – y2 = ¼[(a + b)2 – (a – b)2] = ab.

Prvo se pokuša za x vrijednost x1 = √n. Provjeri se da li je 2 ∆x1 = x1 – n kvadratni korijen. Postoje samo 22 kombinacije za zadnje dvije znamenke koje se mogu pojaviti u kvadratnom korijenu, te se većina kombinacija može eliminirati. Ako ∆x1 nije kvadratni korijen, pokuša se sa x2 = x1 +1, tako da je 2 2 2 ∆x2 = x2 – n = (x1 + 1) – n = x1 + 2x1 + 1 – n

= ∆x1 + 2x1 +1. Nastavlja se sa 2 2 2 ∆x3 = x3 – n = (x2 + 1) – n = x2 + 2x2 + 1 – n

= ∆x2 + 2x2 +1 = ∆x2 + 2x1 +3, odnosno, sljedeće diferencije se dobiju tako da se zbroje dvije prethodne. Maurice Kraitchik je ubrzao algoritam [26] tako da se traže x i y koji zadovoljavaju x2 ≡ y2 (mod n). tj. n | (x2 – y2). Ova kongruencija ima neinteresantna rješenja x ≡± y (mod n), te zanimljiva rješenja x ≠±y (mod n). Vrijedi: ako je n neparan i djeljiv sa najmanje dva različita primarna broja, tada je zanimljivo najmanje pola rješenja

65 x2≡y2 (mod n) gdje je xy relativno prost sa n. Za takva rješenja, (n, x – y) nije ni n ni 1 i stoga je netrivijalni faktor od n.

5.2.3. Metoda isključivanja

Metoda isključivanja (“excludent”) je metoda rješavanja kvadratnih jednadžbi kongruencija. Ova metoda je poznata i kao metoda diferencija kvadrata. Prvi ju je koristio Fermat, a kasnije ju je unaprijedio Gauss. Gauss je tražio x i y koji zadovoljavaju y2 ≡ x2 – N (mod E) za različite module E. Ovo dopušta izuzimanje mnogo potencijalnih faktora. Metoda najbolje radi kada su faktori približno jednakih veličina, te je ponekad bolje pokušati sa mN za neki zgodno odabrani m.

5.2.4. Dixonova metoda

Ova metoda traži x i y takve da je x2 ≡ y2 (mod n) (modificirana forma Fermat-ove metode). U tom slučaju, vjerojatnost da je GCD(n, x – y) faktor od n, iznosi 50%. Odabere se slučajni cijeli broj r, i računa 2 g(ri) ≡ ri (mod n). Zatim se pokuša faktorizirati g(ri). Ako g(ri) nije lako faktorizirati, isproba se neki drugi ri. U praksi se za ri uzimaju vrijednosti n + k, gdje je k = 1, 2, .... Ovaj postupak dopušta korištenje metode kvadratnog faktoriziranja. Nastavlja se sa traženjem i faktoriziranje g(ri) sve dok se ne dobije N ≡ Pd, gdje je P funkcija brojanja prostosti (eng. prime counting function). Za svaki g(ri), piše se a1i a2i aNi g(ri) = p1i p2i ...pNi , i dobiva se vektor eksponenata T v(ri) = [a1i a2i ... aNi] . Ako je aki paran za bilo koji k, tada je g(ri) kvadrat nekog broja i dobiva se rješenje početne jednadžbe. Ako nije paran, traži se linearna kombinacija ∑iciv(ri) takva da su svi elementi parni, tj. T T T T c1[a11 a21 ... aN1] + c2[a12 a22 ... aN2] +...+ cN[a1N a2N ... aNN] = [0 0 ... 0] (mod 2). Budući da se ovaj sustav mora riješiti samo modulo 2, problem se može pojednostaviti tako da se aij zamijene sa bij = 0 za aij paran bij = 1 za aij neparan. Gauss-ovom eliminacijom se dobiva rješenje bc = z za c, gdje je z vektor jednak 0 (mod 2). Kada je c poznat, vrijedi 2 ∏ k g(rk) ≡ ∏k rk (mod n),

66 gdje se produkti uzimaju za sve k za koje je ck = 1. Obje strane su točni kvadrati, pa je vjerojatnost da ovo donosi netrivijalni faktor od n jednaka 50%. Ako nije, nastavlja se sa drukčijim z i postupak se ponavlja. Nema jamstva da će ova metoda dati faktore, ali u praksi otkriva faktore brže od bilo koje metode koja koristi trivijalne djelitelje. Također je primjenjiva u paralelnom procesiranju, gdje svaki procesor obavlja postupak za drugu vrijednost od r.

5.2.5. Pollardova ro metoda

Ova metoda poznata je i pod nazivom Pollard-ova Monte Carlo metoda. Dva su pogleda na ovu metodu. Prva ideja je da se funkcija iterira dok se ne dobije ciklus. Neka je n=pq, gdje je n broj kojeg treba faktorizirati, a p i q su nepoznati prim faktori. Iteriranjem formule

2 xn+1 = xn + a (mod n),

2 ili skoro bilo koju polinomnu formulu (osim xn – 2), za bilo koju početnu vrijednost x0 dobit će se niz brojeva koji eventualno čine ciklus. Očekivano vrijeme dok xn ne postane ciklus i očekivana duljina ciklusa su proporcionalni sa √n. Kako je n=pq gdje su p i q relativno prosti brojevi, kineski teorem ostatka osigurava da svaka vrijednost od x (mod n) jedinstveno odgovara paru vrijednosti ( x (mod p)), x (mod q)). Nadalje, niz xn slijedi istu formulu modulo p, tj.

2 xn+1 = [xn (mod p)] + a (mod p) 2 xn+1 = [xn (mod q)] + a (mod q).

Dakle, niz (modulo p) će činiti ciklus mnogo manje duljine. Izravno se može provjeriti da x1 i x2 imaju iste vrijednosti (mod p), tako da se izračuna

GCD(|x2 – x1|, n),

što je jednako p, (GCD je najveća zajednička mjera).

Drugi dio Pollard-ove metode sastoji se u provjeri da li je niz postao periodičan. Pollard je predložio da se iskoristi Floyd-ova ideja za uspoređivanje xi i x2i za sve i [26]. Za najgori slučaj, Pollard-ov ro algoritam može biti vrlo spor.

67 5.2.6. Brentova metoda

Drugi dio Pollard-ove ro metode sastoji se u određivanju da li je niz periodičan. Pollard je predložio da se iskoristi Floyd-ova ideja za uspoređivanje xi i x2i za sve i. Brent-ovo unaprjeđenje Pollard-ove metode sastoji se u načinu predviđanja periodičnosti, te se Floyd-ova metoda zamijeni sa slijedećim algoritmom. Pohranjuje se samo jedna kopija od xi. Ako je i potencija od 2, neka je y = xi, i u svakom koraku se trenutna vrijednost xi usporedi sa pohranjenom vrijednošću y. U slučaju faktoriziranja, umjesto uspoređivanja xi sa y, računa se GCD(|xi – y|, n).

5.2.7. Pollardova p-1 metoda

Ovo je metoda koja se može implementirati u jedno- ili dvo-načinskoj formi. U jednonačinskoj verziji, prim brojevi p nađu se ako je p-1 umnožak malih prim brojeva, tako da se nađe m takav da vrijedi m ≡ cq (mod n), gdje p-1 | q, q je veliki broj i (c, n) = 1. Budući da p-1 | q, vrijedi m ≡ 1 (mod p), te je p | m -1. Potoji velika vjerojatnost da nije n | m-1. U tom slučaju je GCD(m – 1, n) netrivijalni djelitelj od n. U dvonačinskoj verziji, prim broj p se može dobiti ako je p-1 umnožak malih prim brojeva i jednog velikog prim broja.

5.2.8. Faktorizacija kvantionskom algebrom

Ova metoda je primjenjiva za faktorizaciju brojeva n ako je n > 10110 i ako je najmanji prim broj koji dijeli n najmanje 1048. RSA brojevi su ovog tipa. Koristeći ovu metodu, faktoriziran je 1996. godine RSA-130 [15]. Izabere se stupanj d (koji ovisi o n, d ~ √(logn/log logn)). Neka je m = ⌊ d√n⌋ i n d d-1 se proširi u bazi m: n = m + ad-1m +...+ a0 gdje je 0 ≤ ai < m. d d-1 Neka je f(x) = x + ad-1x +...+a0. Neka je α korijen od f. Potupak se obavlja u Q (α). Kaže se da je broj poravnat ako se faktorizira u male prim brojeve. Žele se naći brojevi oblika a + bi ∈ Z[i] gdje je a ≥ 0, b ≠ 0 i gcd(a, b) = 1 (kada je a > 0) za koje je a + bi poravnat u Z[i] i h(a + bi) je poravnat u Z. Općenito, takvi brojevi su jako rijetki, i zbog toga je za sada RSA siguran.

Takvi brojevi označeni su sa α i. Želi se pronaći neki podskup takvih brojeva, 2 2 α 1,..., α r gdje je α 1 ∗...∗ α r = β u Z[i] i h(α 1)*...*h(α ρ) = t u Z. 2 2 2 Vrijedi: h(β) = h(β)h(β) ≡ h(β ) = h(α 1 ∗...∗ α r) ≡ h(α 1)*...*h(α r) ≡ t (mod n). Sada se h(β) i t reduciraju modulo n. Ove redukcije neka su označene sa c za h(β) reduciran i d za reduciran t. Poznato je c2 ≡ d 2 (mod n).

68 Nadamo se da vrijedi c ≠± d (mod n). Tada je gcd(c-d, n) netrivijalni faktor od n.

* 5.3. Kriptoanaliza u podgrupama od Zn primarnog reda

Mnogi kriptografski protokoli i kriptosustavi su dizajnirani tako da iskoriste * primarni red podgrupa od Zn gdje je n umnožak dva velika različita prim broja. U ovom poglavlju analizira se ovakva shema.

Neka je n = pq, gdje su p i q veliki prim brojevi. Multiplikativna grupa cijelih * brojeva modulo n, Zn , ima tajni red (broj elemenata u grupi) (p-1)(q-1). Pretpostavlja se da je ovaj iznos teško odrediti iz poznatog n, a to je osnova mnogih kriptosustava i protokola poput RSA, Fiat-Shamir, Rabin, Guillou- Quisquater.

U poglavlju je opisana analiza tri klasa za gore navedene kriptosustave i protokole. Klasa 1: ako su dani elementi primarnog reda podgrupe, red grupe se ne može koristiti kao skrivena rupa za sustave poput RSA. Klasa 2: otkriven prim * red podgrupe dopušta rješavanje problema koji bi trebali biti teški u Zn (teški ako se podgrupa ne otkrije). Klasa 3: veličina otkrivenog prim reda podgrupe u * odnosu na onaj od Zn vodi do smanjenja složenosti kod faktoriziranja n. n=pq se u poglavlju odnosi na to da su p, q različiti veliki prim brojevi. Za element * a ∈Zn , ordn(a) označava red od a modulo n, a to je najmanji cijeli broj b koji zadovoljava ab ≡ 1 (mod n).

5.3.1. Klasa 1: Nepostojanje “rupe” u podgrupi primarnog reda

Neka je g ≠ 1 poznat element iz podgrupe primarnog reda. Kako je g mod p (g * * mod q) element u Zp (Zq ) vrijedi: ordp(g) | p – 1, ordq(g) | q – 1. (1) Slijedi p = ordp(g)k+1, q = ordq(g)l+1, (2) za neke parne brojeve k i l. Osnovna činjenica iz teorije brojeva je: za svaki x * ∈Zn , iz m | n slijedi ordm(x) | ordn(x). Kako je ordn(g) prosti, vrijedi ili ordp(g) = ordn(g), ili ordp(g) = 1. Isto vrijedi i za ordq(g). Slučaj ordn(g)=1 se ne razmatra, te se (1) sastoji od jednog od sljedeća tri slučaja: p=ordn(g)k+1, q=ordn(g)l+1 (3) ili p=ordn(g)k+1, q=l+1, sa ordn(g) ne dijeli l (4)

69 ili p=k+1, q=ordn(g)l+1, sa ordn(g) ne dijeli k (5)

Iz slučaja (4) slijedi g ≡ 1 (mod q), ili q | g – 1. Za 0 < g -1 < n, vrijedi: gcd(g – 1, n) = q. Slično za slučaj (5) vrijedi: gcd(g – 1, n) = p.

* Propozicija 1: Neka je g ∈Zn poznati element i ordn(g) je neparan prim broj. Tada se n=pq mora sastojati samo od p i q sa strukturama prikazanim u (3) ili je faktorizacija od n otkrivena.

5.3.1.1. Slučaj n=pq=(ordn(g)k + 1)(ordn(g)l+1)

Iz (3) slijedi: 2 n=pq=ordn(g) kl + ordn(g)(k + l) + 1. Slijedi da je n – 1 višekratnik od ordn(g). Broj n – 1 je javno poznat iako je ordn(g) nepoznat. Ovo govori da podgrupa generirana sa g nema rupe u sustavima poput RSA. Za ovu rupu se podrazumijeva tajni broj koji je inverz javnog eksponenta modulo red grupe. Taj broj je skriven, jer je skriven red grupe.

U slučaju kad je n -1 višekratnik reda grupe, za bilo koji javni eksponent e, može se izračunati d koji zadovoljava ed = 1 (mod n -1). (6) Postojanje broja d nije problem. Ako je gcd(e, n-1) > 1, može se n-1 u (6) zamijeniti sa (n-1) / (gcd(e, n-1)) koji također treba biti višekratnik od ordn(g) osim ako je gcd(e, n-1) = ordn(g). Kako je ordn(g) | n – 1, iz (6) slijedi ed = 1 (mod ordn(g)). Dakle, u bilo kojoj podgrupi reda ordn(g), kriptosustavi poput RSA ili algoritmi potpisa više neće biti sigurni. Bilo koje varijacije koje se temelje na tajnosti ordn(g) će također biti neuspješne. U [9] se može vidjeti primjer sheme koja demonstrira navedeno u ovoj klasi.

5.3.2. Klasa 2: Otkrivanjem podgrupe teški problemi postaju laki

Uz dane elemente u grupi, neznanja dokazuju da neka svojstva, koja se tiču njihovog diskretnog logaritma, zahtijevaju da red grupe bude javan (barem od * strane entiteta koji sudjeluju u protokolu). Kada se radi o grupi Zn , red (p–1)(q–1) se ne može otkriti, inače se ne može iskoristiti problem faktorizacije cijelih brojeva. Pametan način za rješavanje te kontradikcije je tzv. “zero-knowledge” * protokol u podgrupi od Zn primarnog reda, kod koje je red otkriven bez mogućnosti otkrivanja (p-1)(q-1). Jedna metoda za ostvarivanje ovoga je da se

70 konstruiraju p i q sa strukturama danim u (3), i da se g i ordn(g) načine javnim [9]. g se odabire tako da je ordn(g) = ordp(g)=ordq(g). U [9] se može vidjeti primjer sheme koja demonstrira navedeno u ovoj klasi.

5.3.3. Klasa 3: Redukcija u faktorizaciji cijelih brojeva

Vrijedi: n=pq, p=2p'r+1, p=2q'r+1, (7) gdje su p, q, p', q', r različiti prim brojevi. Za n se izvodi: (n-1)/2r=2p'q'r+(p'+q'), (8) ili p'+q'=(n-1)/2r (mod r). (9) Lako se može vidjeti da, jednom kad se otkrije p'+q', n se može faktorizirati. Jednadžba (9) daje: ako duljina od p'+q' ne premaši duljinu od r, pronalaženje p'+q' može biti trivijalno lako. Problem ne ovisi o duljini od n. Neka je L(a) duljina broja a u binarnoj reprezentaciji. Kako (9) znači p'+q' = ( (n-1)/2r mod r) +kr, za neke nepoznate k, uz (n-1)/2r mod r < r, dobiva se L(k) L(k) ~ L(p'+q')-L(r)~L((p'+q')/r). Dakle, pronalaženje k, p'+q', ili faktoriziranje n, ograničeno je sa 2L((p'+q')/r) (10) koraka. Duljina od n ne igra ulogu u (10) za dodavanje težine u faktorizaciji.

Propozicija 2: Neka je n konstruiran prema (7) sa otkrivenim r. Vrijeme potrebno za faktoriziranje n je s gornje strane ograničeno se 2L((p'+q')/r).

* Dakle, kada Zn sadrži podgrupu primarnog reda sa otkrivenim redom r, nužno je odabrati takve p', q' i r da je nemoguće postići 2L((p'+q')/r) koraka računanja. Za većinu slučajeva, gornja granica dana sa (10) bit će mnogo manja u većini naprednih algoritama za faktoriziranje. Detalji o složenosti se mogu pronaći u [9].

71 6. Praktični rad

Praktično je ostvaren primjer linearne kriptoanalize DES-a (Data Encryption Standard) reduciranog na 3 runde. Program je pisan u programskom jeziku C++. Linearna aproksimacija uzeta je iz [10], [11] i glasi:

Pl [15] xor Ph [7,18,24,29] xor Cl [15] xor Ch [7,18,24,29] = K1 [22] xor K3 [22]

Gdje je Pl desna polovica otvorenog teksta, Ph lijeva polovica otvorenog teksta, Cl desna polovica kriptiranog teksta, Ch lijeva polovica kriptiranog teksta, K1 podključ prve runde, a K3 podključ treće runde. Indeksi označavaju bitovnu poziciju s desna na lijevo, gdje je prvi bit bit s indeksom 0. U aproksimaciji je otvoreni tekst onaj nakon inicijalne permutacije IP DES algoritma, jer ta permutacija ne utječe na ponašanje napada. Također se izostavlja završna permutacija IP-1 te je kriptirani tekst onaj prije završne permutacije. Također se uzimaju bitovi podključeva nakon permutacije PC1 u postupku generiranja podključeva.

Vjerojatnost da gornji izraz vrijedi iznosi p = 0.70. Za uspjeh od 99.8% potrebno 50 poznatih otvorenih tekstova (2|p-1/2|-2) [10].

Implementacija je osmišljena kao demonstracija linearne kriptoanalize. Pokretanjem programa generira se slučajni ključ. Zatim se u svakoj iteraciji algoritma generira novi otvoreni tekst, tekst se kriptira, izvrši se algoritam, te se uz rezultat algoritma ispisuju i pravi bitovi ključa. Kao parametar programu moguće je zadati broj otvorenih tekstova.

U implementaciji se koristi vlastita implementacija DES-a reduciranog na 3 runde.

U tablici 6.1. opisane su implementirane funkcije algoritma napada i važne globalne varijable.

72 Funkcija Opis void gen_texts3r(string *p, string *c,const generira slučajni otvoreni tekst p, kriptira ga string& ); ključem key i rezultirajući kriptirani teksta pohranjuje u c void analysis_init(string *key); generira slučajni ključ key i inicijalizira generator slučajnih brojeva bit lin_analysis_DES_1bit (void implementacija maximum likelihood algoritma, (*next_plain_cipher) (string*, string*,const prvog opisanog u 3.2.6. next_plain_cipher je string&), int ptxtcnt, const string& key, float p); funkcija koja u argumente pohranjuje sljedeći par otvorenog i kriptiranog teksta; ptxtcnt je broj poznatih otvorenih tekstova; key je ključ kriptiranja (u pravom napadu on nije poznat); p je vjerojatnost da linearna aproksimacija vrijedi.

extern bit LHS; u funkciji kriptiranja DES implementacije u varijablu LHS pohranjuje se vrijednost lijeve strane linearne aproksimacije extern bit k1_22; u varijable k1_22 i k3_22 pohranjuju se prave extern bit k3_22; vrijednosti bitova podključeva za koje se određuje linearna aproksimacija, da bi se provjerio rezultat programa

Tablica 6.1. Popis implementiranih funkcija i važnih varijabli

U implementaciji se koristi maximum-likelihood algoritam iz poglavlja 3.2.6. Slijedi pseudokod implementiranog algoritma:

1. inicijaliziraj brojač T=0; 2. za svaki otvoreni tekst Pi i odgovarajući kriptirani tekst Ci gdje je 0 <= i < N, činiti { neka je t evaluacija lijeve strane linearne aproksimacije, tj. implementirane jednadžbe t <- Pl [15] xor Ph [7,18,24,29] xor Cl [15] xor Ch [7,18,24,29]; ako je t = 0 povećaj brojač T; } 3. ako je vjerojatnost linearne aproksimacije veća od 1/2 (npr. P = 0.70) { ako je T > N/2 tada pretpostavi da je vrijednost desne strane aproksimacije 0, tj. K1 [22] xor K3 [22] = 0; ako je T <= N/2 tada pretpostavi da je vrijednost desne strane aproksimacije 1, tj. K1 [22] xor K3 [22] = 1; } 4. ako je vjerojatnost linearne aproksimacije manja od 1/2 { ako je T > N/2 tada pretpostavi da je vrijednost desne strane aproksimacije 1; ako je T <= N/2 tada pretpostavi da je vrijednost desne strane aproksimacije 0; }

73 Programski kod maximum likelihood algoritma glasi: extern bit LHS; /* lijeva strana linearne aproksimacije 3-round DES-a */ bit lin_analysis_DES_1bit(void (*next_plain_cipher) (string*, string*, const string&), int ptxtcnt,const string& key, float p) { string P, C; // otvoreni P i kriptirani C tekst int i, T=0; // T - brojac: za koliko parova otvorenog i // kriptiranog teksta je linearni // izraz jednak 0 bit t; bit kxor; // = K1[22] ^ K3[22], // = lijeva strana linearnog izraza

/* za svaki otvoreni tekst i pripadni kriptirani tekst */ for(i=0;i0.5) { if(T> (ptxtcnt>>1)) { kxor=0; } else { kxor=1; } } else { if(T> (ptxtcnt>>1)) { kxor=1; } else { kxor=0; } }

return kxor; }

74 Slijede dva primjera izvršavanja programa: primjer 1.

Real Key: 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0 1 1

Real bits K1[22] = 1; K3[22] = 1

3-round DES linear analysis (1 key bit) result: Pl[15] xor Ph[7,18,24,29] xor Cl[15] xor Ch[7,18,24,29] = K1[22] xor K3 [22] = 0 primjer 2.

Real Key: 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0

Real bits K1[22] = 0; K3[22] = 1

3-round DES linear analysis (1 key bit) result: Pl[15] xor Ph[7,18,24,29] xor Cl[15] xor Ch[7,18,24,29] = K1[22] xor K3 [22] = 1

75 7. Zaključak

Ostvarenje linearne kriptoanalize u ovom radu omogućuje smanjivanje iscrpne pretrage ključa za faktor 2. Ako bi se primijenila aproksimacija za još koji bit ključa složenost iscrpne pretrage bi se još smanjila.

Ako algoritam ima svojstvo komplementa (što vrijedi za DES, vidjeti 3.1.2.), može se linearna aproksimacija ugraditi u algoritam pretraživanja pola prostora na način da se linearnim izrazom ispravi određeni bit ključa.

Simetrija linearnog izraza može se iskoristiti za dobivanje dodatne linearne aproksimacije. Ako konstrukcija linearne aproksimacije nije simetrična može se provesti algoritam još jednom, ali tako da se zamijene uloge otvorenog i kriptiranog teksta. Rezultat je reverzna linearna aproksimacija u kojoj su ključevi Ki zamijenjeni ključevima Kn-i+1 gdje je n broj rundi.

Matsui je u [10] dao linearne aproksimacije za DES do 20 rundi. Potpuni DES može se probiti sa 243 poznatih otvorenih tekstova [6], brže nego iscrpnom pretragom.

Primjer kriptosustava za koji se smatra da je nemoguće probiti je kriptiranje kod kojeg je ključ jednake duljine kao i poruka, slučajan je i koristi se samo jednom na toj poruci (eng. one-time pad). Zahtjevi za ovim postupkom su slijedeći:

• Ključ mora biti istinski slučajan. Ne generira se algoritmima koji kao ulaz koriste kraći ključ. Mora biti bez biasa: vjerojatnost svih simbola mora biti jednaka. • Ključ mora biti jednake duljine kao i poruka. Znakovi u poruci i ključu moraju biti iz iste abecede jednake veličine. • Ključ se na poruku mora primijeniti tako da su za dane simbole otvorenog teksta, svi simboli kriptiranog teksta jednako mogući, te obrnuto. • Osim za kriptiranje poruke, ključ se ne koristi u druge svrhe.

Druga ideja zaštite je kontinuirana promjena ključa.

Za probijanje kriptosustava sa javnim ključem, sigurnost leži u teškoći računanja tajnog ključa uz poznavanje javnog ključa.

Dakle, samo se one-time pad može smatrati sigurnim kriptosustavom.

76 8. Literatura

[1] Eli Biham, Orr Dunkelman, Nathan Keller, Enhancing Differential-, dokument dostupan na adresi: http://citeseer.ist.psu.edu/572086.html

[2] Jean-Sebastien Coron and Antoine Joux, Cryptanalysis of a Provably Secure Cryptographic Hash Function, dokument dostupan na adresi: http://eprint.iacr.org/2004/013.pdf

[3] Nicolas T. Courtois and Josef Pieprzyk, Cryptanalysis of Block with Overdefined Systems of Equations, dokument dostupan na adresi: http://eprint.iacr.org/2002/044.pdf

[4] D. J. Guan, Pollard’s Algorithm for Discrete Logarithm Problem, August 25, 2003, dokument dostupan na adresi: http://guan.cse.nsysu.edu.tw/data/pollard.pdf

[5] Howard M. Heys, A Tutorial on Linear and Differential Cryptanalysis, dokument dostupan na adresi: http://www.engr.mun.ca/~howard/PAPERS/ldc_tutorial.ps

[6] Pascal Junod, Linear Cryptanalysis of DES, dokument dostupan na adresi: http://crypto.junod.info/lincrypt.pdf

[7] Jesper Kampfeldt, Collision Search in Hash Functions, September 20, 2004, dokument dostupan na adresi: http://www.imm.dtu.dk/courses/02232/Labs/hash.pdf

[8] John Kelsey, , and David Wagner, Mod n Cryptanalysis, with Applications Against RC5P and M6, dokument dostupan na adresi: http://www.schneier.com/paper-mod3.pdf

* [9] Wenbo Mao, Cryptanalysis in Prime Order Subgroups of Zn , March 24, 1998, dokument dostupan na adresi: http://grouper.ieee.org/groups/1363/Research/contributions/subgroup.ps

[10] Mitsuru Matsui, Linear Cryptanalysis Method for DES Cipher, dokument dostupan na adresi: http://www.esat.kuleuven.ac.be/~abiryuko/Cryptan/matsui_des.PDF

[11] Fauzan Mirza, Linear and S-Box Pairs Cryptanalysis of the Data Encryption Standard, Third Year Undergraduate Project, October 1996 – April 1997, dokument dostupan na adresi:

77 http://www.secinf.net/uplarticle/4/fmirza-report-des.ps

[12] M. Nandi and D. R. Stinson, Multicollision Attacks on Generalized Hash Functions, dokument dostupan na adresi: http://eprint.iacr.org/2004/330.pdf

[13] Andrew Odlyzko, Discrete logarithms: The past and the future, July 19, 1999, dokument dostupan na adresi: http://www.dtc.umn.edu/~odlyzko/doc/discrete.logs.future.pdf

[14] Paul C. van Oorschot and Michael J. Wiener, Improving Implementable Meet-in-the-Middle Attacks by Orders of Magnitude, 1996 May 22, dokument dostupan na adresi: http://www3.sympatico.ca/wienerfamily/Michael/MichaelPapers/meetmid.pdf

[15] Ed Schaefer, An introduction to , dokument dostupan na adresi: http://math.scu.edu/7Eeschaefe/0116.pdf

[16] Demir Sinan, METHODS OF CRYPTANALYISIS, Seminar Cryptography 1999 Fachhochschule Augsburg, dokument dostupan na adresi: http://archiv.informatik.fh-augsburg.de/informatik/projekte/ c rypto99/de mir/kryptanalyse2.html

[17] Birthday Attack Calculations, dokument dostupan na adresi: http://www.ciphersbyritter.com/NEWS4/BIRTHDAY.HTM

[18] What is a birthday attack?, dokument dostupan na adresi: http://www.x5.net/faqs/crypto/q95.html

[19] Cryptanalysis, dokument dostupan na adresi: http://www.bletchleypark.net/cryptology/Cryptanalysis.pdf

[20] Cryptoanalysis - encyclopedia article about Cryptoanalysis, dokument dostupan na adresi: http://encyclopedia.thefreedictionary.com/cryptoanalysis

[21] Cryptanalysis - a Whatis.com definition, dokument dostupan na adresi: http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci214432,00.html

[22] IEEE P1363 Research Contributions: Cryptanalysis, dokument dostupan na adresi: http://grouper.ieee.org/groups/1363/Research/Cryptanalysis.html

[23] Kryptographie FAQ: Frage 58: What is Differential Cryptoanalysis?, dokument dostupan na adresi:

78 http://www.iks-jena.de/mitarb/lutz/security/cryptfaq/q58.html

[24] The Limits of Cryptanalysis, dokument dostupan na adresi: http://home.ecn.ab.ca/~jsavard/crypto/mi060901.htm

[25] Man-in-the-middle attack, dokument dostupan na adresi: http://www.computerhope.com/jargon/m/mitma.htm

[26] Prime Factorization Algorithms, dokument dostupan na adresi: http://mathworld.wolfram.com/PrimeFactorizationAlgorithms.html

[27] Quadratic Cryptanalysis, dokument dostupan na adresi: http://home.ecn.ab.ca/~jsavard/crypto/co4514.htm

[28] Recent Collision Attacks on Hash Functions: ECRYPT Position Paper, November 19, 2004, dokument dostupan na adresi: https://www.cosic.esat.kuleuven.ac.be/ecrypt/documents/ECRYPT-hash- statement.pdf

[29] RSA Laboratories, Home: Crypto FAQ: Chapter 2 Cryptography: 2.3 Hard Problems, 2.3.8 What are the best discrete logarithm methods in use today?, dokument dostupan na adresi: http://www.rsasecurity.com/rsalabs/node.asp?id=2194

[30] RSA Laboratories, Home: Crypto FAQ: Chapter 2 Cryptography: 2.3 Hard Problems, 2.3.4 What are the best factoring methods in use today?, dokument dostupan na adresi: http://www.rsasecurity.com/rsalabs/node.asp?id=2190

[31] Strong cryptography makes the world a place, dokument dostupan na adresi: http://www.c4i.org/erehwon/crypto.html

[32] XSL attack Details, Meaning XSL attack Article and Explanation Guide, dokument dostupan na adresi: http://www.e-paranoids.com/x/xs/xsl_attack.html

79