.................... ...::: phearless zine #2 :::... .........................>---[ Cryptology 101 ]---<........................ ..................>---[ by EArthquake aka Wintermuth ]---<.................. ugsearthquake[at]gmail[dot]com Pojmovi: kriptologija - grcki kriptos = skrivanje , logos = nauka znaci nauka o skrivanju.Nauka koja obuhvata i kriptografiju i kriptoanalizu.Bavi se dakle skrivanjem poruka. kriptografija - nauka koja se bavi skrivenim pisanjem.Naime matematicki proucava nacine za bezbedno slalje poruka preko nesigurnih mreza kao sto je internet bez da neko ko nije oovlascen da procita poruku sazna sta se u njoj nalazi. kriptoanaliza - nauka koja se bavi matematickom analizom i razbijanjem sistema kriptografije.Testira kripto-sisteme protiv neovlascenog tumacenja. steganografija - vestina skrivanja poruke od intercepora interceptor - nezeljeni primalac informacije algoritam - kod kriptovanja je to algoritam koj se koristi za dobijanje sifrata , naziva se cipher kljuc - moderna kriptografija se zasniva na kljucevima.Opseg mogucih vrednosti kljuca se naziva keyrange sifrat (cryptotext,ciphertext) - enkriptovana pouka A cemu to sluzi ? - skriveno pisanje - zastita podatka pri prenosu -od gledanja (pasivan napad) -od falsifikovanja (aktivan napad) - zastita sifre - zastita autorskih prava - neovlasceno tumacenje - otkrivanje tajni - testiranje sigurnosti sopstvenih sistema In theory... Steganografija : - tehnicka - nevidljivo mastilo - mikro tacka - ... - lingvisticka - semagrami (oznacavanje slova i reci ) - otvoreni kod - zargon (promena smisla) - maskiranje - sistem resetke (uspomoc resetke sa rupama na odredjenom mestu se upisuju slova a onda se preostala prazna mesta popunjavaju bezveznim slovima , primalac moze da desifruje poruku samo ako ima istu takvu resetku ) - sistem dodavanja null vrednosti Kripto sistemi : - transpozicija - prosta - anagrami - substitucijski sistemi - monoalfabetska substitucija - poligrafska substitucija - kodovi - polialfabetska substitucija - kompozitni sistemi - DES - IDEA - Skipjack - CAST - Blowfish - asimetricni (Public Key Systems) - RSA (Rivest , Shamir , Adleman) Sta je sta ? Prosta transkripcija Kako joj samo ime kaze , veoma prosta stvar. Radi se tako sto se niz slova u nekom tekstu podeli na odredjen broj , zatim se ti nizovi poredjaju jedan ispod drugog i citaju se znaci odozgo nadole. Jasnije u primeru : EArthquake pise za pHearless <-- tekst koj hocemo da enkriptujemo earth|quake|pisez|aphea|rless <-- podeljen na nizove od 5 slova earth quake pisez <------------------------- poredjano jedno ispod drugog aphea rless eqparauiplrashetkeeshezas <------ enkriptovana poruka Za dekriptovanje se ide unazad. Dakle , mora se znati broj nakova u nizu i zatim redjamo redom : eqpar = e , auipl = a ... dok se ne dodje do earth a zatim i do samo poruke. q u quake p i pisez a p aphea r l rless Mislim da je ocigledno zasto je ovo veoma prosta kripcija. Anagrami : Pa mislim da ovo nije potrebno objasnjavati.Evo nekih primera: - admonition = domination - algorithms = logarithms - compressed = decompress - impression = premission Substitucijski sistemi - Monoalfabetska substitucija : Monoalfabetsku substituciju je koristio i Cezar (mada sumnjam da se ovako zvala) za slanje poruka svojim trupama.Naime ona se sastoji iz zamene svakog karaktera nekim drugim. Odnosno alfabet bi se pomerao u napred za odredjen broj slova i tako bi se odredjivala nova vrednost. Na primer : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bi postalo | | | | | | | | | | | | | | | | | | | | | | | | | | V W X Y Z A B C D I F G H I J K L M N O P Q R S T U ako je broj slova za koja se pomera alfabet bio 5 . Dakle EArthquake bi bilo ZVmoclpvfz . Posto svaki jezik ima specificno slovo koje se najcesce pojavljuje u recima (Engleski e , Srpski a ) prostom analizom ucestalosti slova mozemo razbiti sistem. Potreban je mali tekst , malo srece i primena analize i sistem je resen.Analiza se vrsi tako sto postoji tablica sa frekvencijama (ucestalostima) slova u jeziku i zatim uporedjivanjem te tablice sa pojavljivanjem slova u kriptovanom tekstu dobicemo resenje.U ovom mom primeru moze se primetiti da se slova v i z pojavljuju najcesce tako da se moze zakljuciti o kojim se slovima radi zaista ( na jednoj reci ne ali na vecem tekstu to je veoma uocljivo ).Ovaj sistem ima onoliko mogucih kljuceva koliko i znakova sto je u engleskom alfabetu 26 , znaci vrlo malo mogucih kljuceva. - Visestruka monoalfabetska substitucija Posto je uocljivo da jedno slovo oznacava uvek ista zamena kod monoalfabetske substitucije doslo se do ideje o visestrukoj. Naime ona radi tako sto se za svako novo javljanje znaka njmu dodeljuje druga vrednost. Jasnije na primeru tablice : |1|2|3|4|5|6|7|8|9| ________________________________ 4,5,6,7,8,9,0|E|T|A|O|N|I|R|S|H| ________________________________ 2,3|B|C|D|F|G|J|K|L|M| ________________________________ 1|P|Q|U|V|W|X|Y|Z| | Ovde bi EArthquake bilo 41 43 47 42 49 12 13 53 27 51 Primecujete kako prvo a (43) i drugo a (53) , kao sto i prvo e (41) i drugo e (51) imaju razlicite vrednosti.Ali kao sto ste vec verovatno uocili idalje ima slicnosti.Tako da uz malo veci tekst , koriscenje analize i malo srece moze se razbiti i ovaj sistem. - Poligrafska substitucija Funkcionise tako sto se svakom dvoznaku dodele druga dva znaka. Preko tablice : |A |B |C |D |E |F |G |H |I |J |K |L |M |N |O |P |Q |R |S |T |U |V |W |X |Y |Z _______________________________________________________________________________ A|xz|kj|yh|hp|pl|el|vb|ci|dw|ac|bq|jd|kr|pz|hl|qc|pv|me|wr|ty|uj|io|zs|ab|hg|sw _______________________________________________________________________________ B|lp|qt|he|rs|ur|cr|zh|gv|wc|ta|ui|ea|ra|rq|rb|bn|ds|cd|xc|bv|yi|pa|om|em|na|qi i tako dalje (nadam se da ste shvatili sustinu) Ovde bi znaci dvoznak BA imao vrednost kj , slog UB = yi i tako dalje . Za razbijanje ovog sistema koristi se tablica frekvencija dvoznaka nekog jezika. Naravno potreban je mnogo veci materijal za razbijanje i naravno sreca. - Kodovi Kodovi su jednostavno zamenjene citave reci.Naprimer kada bih ja zamenio earthquake -- 1468 phearless --- 1935 pise -------- 4167 za ---------- 8465 recenica EArthquake pise za phearless bi bila 1468 4167 8465 1935 . Kod razbijanja ovakvih "sistema" uspesniji su lingvisti nego matematicari tako da je potreban sto veci tekst da bi se razbio. - Polialfabetska substitucija Slicna je monoalfabetskoj substituciji ali koristi i kljuc.Najvaznija stvar kod polialfabetske substitucije je duzina kljuca.Ako je kljuc dovoljno dugacak razbijanje sistema je veoma tesko.Da bi generisali nasumicno odabrane kljuceve , za vreme hladnog rata , u Pentagonu nisu koristili nikakve masine vec su im sekretarice nasumicno kucale po masini za kucanje.Mada i tu moze doci do uocavanje neke seme jer se jednom rukom kuca na jednoj strani tastature a drugom na drugoj strani.Predstavimo to ovako: Plain text|A|C|A| |A|B|C _________________ _________ key |c|a|b| A |z|y|x _________________ _________ <---- tablica po kojoj se nalaze zamene cryptotext|q|x|d| B |d|m|r (naravno ona ima sve _________ karaktere ali C |q|r|f mene mrzi celu da crtam) Sada je obican tekst "ACA" presao u qxd. Ako je sam tekst duzi od kljuca , kljuc se ponavlja sto moze dovesti do razbijanja sistema. Naveo sam primer za kratkim recima da nebih morao da crtam cele tablice jer bi to bilo ubitacno po mene.Dakle prvo gledamo prvo slovo obicnog teksta (A) , zatim prvo slovo kljuca (c) i onda po tim "koordinatama" nadjemo prvo slovo sifrata (q) i tako redom za sva slova teksta.Najvaznija stvar kod ovog i svih kriptosistema zasnovanih na kljucu je tajnost i duzina kljuca. Kompozitni sistemi: DES (Data encryption standard) : DES je prvi algoritam za enkripciju koji je savremeni svet video.Napravljen je od strane IBM-a u saradnji sa vladom Sjedinjenjih Americkih Drzava.Zbog toga sto je napravljen pod nadzorom vlade SAD-a bilo je glasina kako sadrzi neke rupe u logici kojom radi koje omogucuju vladi da razbije sve kriptovane podatke i tako cita bilo cije podatke.Duzina kljuca kod DES algoritma je 56 bit-a.Ulavnom su kljucevi dugacki 64bit-a ali posto svaki osmi bit odlazi na proveru i izbacuje se pri ucitavanju kljuca u DES algoritam ostaju samo 56 bit-a.DES je takodje bio kritikovan zbog sovje duzine kljca za koju se smatralo da jednostavno nije dovoljna jer bi u dogledno vreme (to je bilo pre 20 godina ) mogao da se napravi kompjuter koj bi razbio tako kratak kljuc.DES se zasniva na substituciji koju sledi permutacija.Jedna substitucija i jedna transkripcija se naziva krug.DES ima 16 krugova.Glavni deo svakog kruga u DES-u jesu Feistelove mreze (nazvane po Horstu Feistelu).Blok od 64bit-a teksta se deli na dve polovine , levu i desnu , svaka po 32bit-a.Na kraju ce leva strana postati desna i obratno.Leva strana se zatim prosirava na 48bit-a pomocu permutacija.Zatim se XOR-uje 48-o bitnim kljucem.Tako dobijeni niz zatim ulazi u niz od 8 S-Box-ova koji imaju po 6 ulaznih i po 4 izlazne linije , tako nastaje 32-o bitni izlaz koje se zatim permutuje jednim P-Box-om.Izlaz se zatim opet XOR-uje sa drugom polovinom i tako leva polovina postaje desna. Svaki krug u DES-u koristi sopstveni kljuc pri radi i svaki izbacuje novi 64-o bitni izlaz.Sigurno se pitate sta je S-Box i P-Box , e pa mogu vam reci da nema veze sa X-Box-om niti sa prastarim phreakerskim kutijama u boji .Svi noviji cipheri koriste odredjenu duzinu bitova podataka koji se substituisu razlicitim kombinacijama bitova koji odgovaraju odredjenoj tabeli.Softver ili hardver koj implementira ovu metodu naziva se S-Box (Substitucion Box).Permtacija bitova se vrsi tako sto se bitovi koji su ucitani u bafer iz njega citaju drugim redosledom kontrolisanim odredjenom tebelom.Logicno posto se implementcaija substitucije naziva S-Box , implementacija permutacije se naziva P-Box. Ajde da objasnimo o XOR-ovanje.Jedna od logickih operacija (AND , OR , XOR i NOT) koje se koriste kod brojeva je i XOR (Exclusive OR).I ona radi na sledeci nain:Ako je I ili II znak , ali ne oba , 1 onda je rezultat 1 , inace je rezultat 0.Naravno logicke operacije se rade sa binarnim oblikom brojeva , a kako svaki bit ima stanje 1 ili 0 onda je logicno koristiti ih.naime to izgleda ovako: bitovi teksta |1|0|0|1|0|1|1| ____________________________________ bitovi kljuca za XOR |0|1|0|1|1|0|1| ____________________________________ bitovi cypertext-a |1|1|0|0|1|1|0| Dobili smo kriptovani niz bitova 1001011 i on glasi 1100110. Kljuc za isti je 0101101. Da bi se ponovo dobio tekst cypertext se XOR-uje kljucem i dobija se nazad plaintext. Svi se verovatno cudite napretku u enkripciji gledajuci DES.Ali DES je star oko 20-ak godina i naravno RAZBIJEN je. Kasnije se pojavio 3DES (Triple DES ).Koja je razlika? Pa jednostavno u tome sto za razliku od DES-a 3DES koristi 168-o bitni kljuc a ne 56-o bitni. Izvesni Majkl Vajner je izdao clanak u kom kaze da bi sa masinom od 1000000$ za 3.5 sata mogao da nadje kljuc koj bi odgovarao jedno paru plaintext-a i cyphertext-a. Ponavljam to je bilo pre 20-ak godina , danas obican kompjuter to moze da uradi u dogledno vreme.Posto koristi 56-obitni kljuc postoji 2^55 mogucih kljuceva.Dakle za brute force moze postojati 2 na 55-i resenja.Primenom kriptoanalize taj broj se smanjuje negde na oko 2 na 47-i do 2 na 43-i. Ali je primena kriptoanalize definitivno neprakticna :) . Dakle moguce je postaviti lagan bruteforce napad i DES je razbijen. IDEA ( International Data Encryption Algorithm ) : Razvijen kao PES ( Proposed Encryption Standard ) da bi sprecio neke vrste kriptoanaliza koje su razbijale druge sisteme.Koristi se u danasnjim PGP(Pretty Good Privacy ) sistemima enkripcije.Koristi 128-o bitni kljuc. IDEA taj kljuc koristi za enkriptovanje bloka bitova od 64 bita.Koriste se cak 52 podkljuca , koji se generisu iz samog kljuca , za niz komplikovanih aritmetickih i XOR operacija na blok od 64 bita.Podkljucevi se generisu tako sto se kljuc podeli na 8 16-o bitna dela koji cine prvih 8 podkljuceva. Drugih osam podkljuceva se dobija tako sto se ceo kljuc metotdom substitucije pomeri za 25 bita i tako dobijen kljuc se opet podeli na 8 podkljuceva koji ukupno cine 16 16-bitnih podkljuceva.Drugi korak se ponavlja sve dok se ne dobiju ukupno 52 podkljuca.64-o bitni blok se deli na 16 16-o bitnih blokova koji se dalje obradjuju(u daljem tekstu subblock1..4) .Sistem dalje pristupa redom sledecim operacijama: 1.subblock1 * subkey1 = subcipher1 2.subblock2 + subkey2 = subcipher2 3.subblock3 + subkey3 = subcipher3 4.subblock4 * subkey4 = subcipher4 5.subcipher1 XOR subcipher3 = subcipher5 6.subcipher2 XOR subcipher4 = subcipher6 7.subcipher5 x subkey5 = subcipher7 8.subcipher6 + subcipher7 = subcipher8 9.subcipher8 x subkey6 = subcipher9 10.subcipher7 + subcipher9 = subcipher10 11.subcipher1 XOR subcipher9 = subcipher11 12.subcipher3 XOR subcipher9 = subcipher12 13.subcipher2 XOR subcipher10 = subcipher13 14.subcipher4 XOR subcipher10 = subcipher14 I tako osam krugova uzimajuci za ulaz u drugi krug izlaz iz prethodnog.Ovim se dobijaju 4 izlazna bloka koja cemo obeleziti sa outblock1..4. Posto posle odam krugova imamo jos 4 podkljuca , oni se koriste za operacije nad outblock-ovima.Nakon zavrsavanja operacija nad izlaznim blokovima preostalim podkljucevima zavrsava se enkripcija. Dakle: outblock1 x subkey49 --> cipher1 outblock2 + subkey50 --> cipher2 outblock3 + subkey51 --> cipher3 outblock4 x subkey52 --> cipher4 Izlazni kriptovani blokovi (cipher1..4) se spajaju formirajuci jedan pocetni enkriptovani blok od 64 bita. Skipjack : Presednik SAD-a je je objavio kako je razvijen novi nacin za cuvanje privatnosti podataka koji je apsloutno siguran od napada sa strane , dakle koji omogucava potpunu sigurnost podataka , a s druge strane omogucava vladi uvid u sve podatke.Naime taj nacin je bio znan kao enkripciono/dekripcioni algoritam Skipjack.Proizvodjeni su cipovi koji su u sebi imali implementiran Skipjack system za enkripciju podataka. Skipjack je 64-o bitni algoritam koji ulazni 64-o bitni blok podataka pretvara u enkriptovani izlazni blok podataka. Enkripcija se vrsi putem 80-o bitnog kljuca kojim se izvrsavaju 32 slozene nelinearne funkcije. Razvijen je od strane NSA (National Security Agency ) i bio je obelezen kao TOP SECRET. On je deo jedne starije porodice algoritama , takodje razvijenih od strane NSA-e , koji su se zvali Type I algoritmi.Ti algoritmi su bili korisceni za enkriptovanje svih nivoa poverljivih informacija dok je Skipjack specificno imao upotrebu u osetljivim i vaznim ali ne narocito visoko poverljivim informacijama.Kako Skipjack koristi 80-o bitni kljuc , on ima 2^80 mogucih kljuceva sto je otprilike 10^24 a to je nekih trilion triliona mogucih kljuceva.Dva vida napada na kljuceve kjima se enkriptuju podaci su brute force i napad preko neke precice odnosno iskoriscavanje neke slabosti algoritma za njegovu expoiataciju. Najveci strucnjaci su proveli godine pokusavajuci da razbiju Skipjack. Koriscene su sve moguce metode kriptoanalize ali bez uspeha. Napokon , posle dugih istrazivanja i napada svih vrsta na Skipjack , deo NSA-e zaduzen za istrazivanje samog algoritma je objavio kako je ovaj algoritam jedino moguce razbiti brute force metodom. A znajuci da postoje trilijoni trilijona mogucih kljuceva smatra da se u bliskoj buducnosti nemoze doci do resenja , bar ne isplativog. Nezavisno od NSA-e radjeni su i drugi testovi nad Skipjack-om . Jedan od tih testova je test nasumicnosti i korelacije gde se testira da li se nacin na koji algoritam generise kljuceve moze smatrati nasumicnim odabirom i da li ima povezanosti bitova plaintext-a , kljuca i enkriptovanih bitova. Ovaj test je jos vise uverio celnike NSA-e da je algoritam siguran. Jos jedan teste su i diferencijalne kriptoanalize. Naime to su testovi strukture algoritma na povezanost promena obicnog teksta na promene kroptovanog teksta.Ako je moguce brze naci kljuc koriscenjem ove vrste analiza od obicnog brute force napada za algoritam se kaze da postoji sumnja da je ranjiv na diferencijalne kriptoanalize. Sto se Skipjacka tice , testeri su dosli do zakljucka da bi se koriscenjem ovih metoda uz veliku kolicinu teksta mogao razbiti kljuc , ali kolicina teksta i vreme obrade prevazilaze vreme potrebno za brute force napad tako da je skipjack siguran i sto se ovog napada tice.Svi algoritmi imaju slabe kljuceve , to su kljucevi tipa npr. sve nule ili sve jedinice. Skipjack je testiran i na ovu metodu razbijanja ali slabi kljucevi nikako ne uticu na ishod enkripcije kod ovog algoritma. Skipjack je bio uporedjivan sa ostalim algoritmima za enkriptovanje poverljivih podataka i doslo se do zakljucka da je veoma napredan. Zakljucak dva , Skipjack je nemoguce razbiti koriscenjem bilo kakvih metoda precica jer te precice nikako ne umanjuju vreme potrebno za razbijanje. Posto je Skipjack bio implementiran u cipove koji su se koristili u npr. telekomunikacionim napravama posebna paznja se posvetila testiranju cipova na reverse engenering. Cilj pokazivanja metoda kojima je testiran Skipjack je bio da vam pokaze koje se to metode koriste i koliko je sam algoritam siguran. Sam algoritam je oznacen kao TOP SECRET iz vise razloga. Uvid u nacin rada algoritma bi doveo do otkrica nekih poverljivih nacina u dizajnu samog algoritma. Kada bi se imao uvid u nacin rada algoritma bilo bi moguce napraviti hardver koji implementira Skipjack ali koji ne odgovara na LEAF ( Law Enforcement Access Field ) sto bi onemogucilo zakonodavnim i izvrsnim telima da imaju uvid u pojedine enkriptovane podatke kada je to potrebno. LEAF je ideja da svi podaci koji su enkriptovani putem Skipjack algorima mogu biti dostupni na uvid od strane vlade za potrebe pojedinih istraga i sl. tako da bi mogucnost zaobilazenja LEAF-a unistila samu ideju koriscenja Skipjacka ( a to je mogucnost pristupa svim osetljivim podacima od strane vlade ). "Dosije Skipjack " da se izrazim an nivou svetskih zavera , je zapecacen sa "TOP SECRET NOT RELEASABLE TO FOREIGN NATIONALS " sto znaci da sadrzi stvari vitalne po bezbednost nacije (odnosno bezbednost SAD-a) , mozda malo preterano ali tako kazu izvori. Inace , potpuno poznavanje samog algoritma nikako nebi ugrozilo bezbednost enkriptovanih podataka vec bi samo vladi onemogucilo da ima pristup svim tim podacima. Sve prethodno opisane kriptoanaliticke metode su vrsene uz poznavanje strukture algoritma tako da se slobodno moze reci da poznavanje nacina rada Skpijack-a nikako ne ugrozava enkriptovane podatke. CAST : CAST je algoritam slican DES-u , dakle koristi Substitucijsko- -permutacijske operacije i otporan je na razlicite vrste kriptoanalitickih napada.Ovako , CAST enkripcija se vrsi po sledecim koracima: 1. Dobijanje kljuceva - Dobijaju se 16 parova kljuceva (Km i Kr) 2. Deljenje bloka na dva dela - levi i desni (L0 i R0 ) koji se dele na 64 (L1 ,R1 , L2 , R2 ...Li , Ri) 3. 16 krugova Li = Ri-1; Ri = Li-1 ^ f(Ri-1,Kmi,Kri) 4. Ponovno spajanje u kritovani blok CAST-128 koristi dve vrste podkljuceva , jedan za maskiranje i drugi za rotaciju. Kljuc za maskiranje naizvamo Km , a kljuc za rotaciju Kr.Algoritam u sebi ukljucuje 8 S-box-eva , od kojih se 4 imaju funkciju po rundama , a drugih 4 se koriste za generisanje podkljuceva.Kako svaki S-box zahteva 1kb logika je da je potrebno 8 kb za njih , ali je u stvari potrebno samo 4 kb. To je zato sto se kljucevi generisu pre samog pocetka enkripcije. Samo dobijanje kljuceva je veoma komplikovana procedura. Uzmimo sledeci kljuc : x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF U ovom kljucu je x0 najznacajniji , a xF najmanje znacajni bajt.Dalje se na svakom delu vrsi niz operacija: z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8] z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA] z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9] zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB] K1 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2] K2 = S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6] K3 = S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9] K4 = S5[zE] ^ S6[zF] ^ S7[z1] ^ S8[z0] ^ S8[zC] x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0] x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2] x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1] xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3] K5 = S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8] K6 = S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD] K7 = S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3] K8 = S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7] z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8] z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA] z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9] zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB] K9 = S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9] K10 = S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC] K11 = S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2] K12 = S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6] x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0] x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2] x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1] xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3] K13 = S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3] K14 = S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7] K15 = S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8] K16 = S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD] ostalih 16 kljuceva se dobijaju istim redosledom Gde Sn oznacava jedan od S-Box-eva , a ^ oznacava XOR . CAST algoritam dozvljava koriscenje kljuceva razlicite duzine i to u rasponu od 40 bita do 128 bita u koracima od 8 bita (dakle 40 , 48 , 56 , 64 .. 120 , 128).Za velicine kljuceva do i ukljucujuci 80 bita algoritam je isti stim sto se koristi 12 krugova , a ne 16. Pored toga sto moze da koristi razlicitu duzinu kljuceva , CAST koristi i razlicite krugove. Prvi tip: I = ((Kmi + D) <<< Kri) f = ((S1[Ia] ^ S2[Ib]) - S3[Ic]) + S4[Id] Drugi tip: I = ((Kmi ^ D) <<< Kri) f = ((S1[Ia] - S2[Ib]) + S3[Ic]) ^ S4[Id] Treci tip: I = ((Kmi - D) <<< Kri) f = ((S1[Ia] + S2[Ib]) ^ S3[Ic]) - S4[Id] Gde D oznacava input , a f je ranije pominjan (korak 3). Krugovi 1, 4, 7, 10, 13, 1 16 koriste f funkciju prvog tipa. Krugovi 2, 5, 8, 11, and 14 koriste f funkciju drugog tipa. Krugovi 3, 6, 9, 12, and 15 koriste f funkciju treceg tipa. Slede test vektori u hex notaciji: 128-bit key = 01 23 45 67 12 34 56 78 23 45 67 89 34 56 78 9A plaintext = 01 23 45 67 89 AB CD EF ciphertext = 23 8B 4F E5 84 7E 44 B2 80-bit key = 01 23 45 67 12 34 56 78 23 45 = 01 23 45 67 12 34 56 78 23 45 00 00 00 00 00 00 plaintext = 01 23 45 67 89 AB CD EF ciphertext = EB 6A 71 1A 2C 02 27 1B 40-bit key = 01 23 45 67 12 = 01 23 45 67 12 00 00 00 00 00 00 00 00 00 00 00 plaintext = 01 23 45 67 89 AB CD EF ciphertext = 7A C8 16 D1 6E 9B 30 2E Sve u svemu CAST je veoma jak algoritam , a brzina enkriptovanja mu je solidno velika.Na mom racunaru (PII 350Mhz 384MB RAM-a) to je nekih 5 MB/s . Blowfish: Blowfish je simetricni cypher koji radi na blokovima podataka. Koristi kljuceve razlicite duzine. Od 32 do 448 bita. Ovo mu omogucava da se koristi u razlicitim situacijama.Nastao je kao zamena za DES za koji je postalo jasno da nije dovoljno jak. Takodje ima razlicit broj krugova kroz koje pousta podatke za enkripciju. To je besplatan algoritam u svakom pogledu.Za ulazni blok podataka uzima podatke od 64 bit-a.Moze se koristiti kako za enkriptovalje podataka tako i za dobijanje nasumicnih bitova kao i da se od njega napravi one way algoritam za dobijanje hash-ova (veoma cesto se koristi danas pored MD5). Kao sto je slucaj kod CAST-a i Blowfish ima dva dela. Prvi u kom se dobijaju konacni kljucevi i podkljucevi i drugi , u kom se vrsi sama enkripcija podataka.Kako je jos od DES-a slucaj da se za krugove koriste Feistelove mreze to je i ovde slucaj.Naime , Blowfish u samom svom delu enkripcije podataka koristi 16 krugova Feistelovih mreza. Svaki krug se sastoji od permutacije zavisne od kljuca i substitucije zavisne od podataka i kljuca.Sve operacije su XOR. Blowfish koristi veliki broj podkljuceva za S-Box-eve i P-Box-eve.Tacnije za P-Box-eve se koriste 18 32-o bitnih podkljuceva , a za S-Box-eve 4 32-o bitna podkljuca od kojih svaki ima po 255 ulaza. Za generisanje podkljuceva koriste se hexadecimalni zapisi cifara decimala broja Pi i sam Blowfish algoritam.Kada se zavrsi generisanje kljuceva prelazi se na samu enkripciju. Uzmimo da je x 64-o bitni blok podataka: Podelimo x na dve 32-o bitne polovine: xL, xR Sada ledi 16 krugova : xL = xL XOR Pi xR = F(xL) XOR xR Zamena xL i xR Zamena xL i xR (ponistava poslednju zamenu) xR = xR XOR P17(sada se koriste p-boxevi za permutacije ) xL = xL XOR P18 Recombine xL and xR Funkcija f : Prvo se xL podeli na 4 osmobitna dela: a, b, c i d pa je sad : F(xL) = ((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232 (sada se koriste s-boxevi za substituciju) Algoritam je sigoran protiv svih vrsta kriptoanalitickih napada u celosti , jedino obogaljen ima nekih ranjivosti. Jedini nacin za razbijanje Blowfish algoritma je brute force potraga za koriscenim kljucevima. - Asimetricni sistemi RSA (Rivest , Shamir , Adleman): RSA je asimetricni cypher koji se koristi u PGP (pretty good encryption).Asimetrican znaci da koristi razlicite kljuceve za enkripciju i dekripciju.Ideja samog algoritma se zasniva na cinjenici da je relativno lako pomnoziti dva velika (jako velika )broja da bi se dobio jedan rezultat , a isto tako je relativno nemoguce od dobijenog rezultata ici suprotno odnosno dobiti cinioce. Suskalo se kako NSA moze da razbije RSA sistem ali je postali jasno da to nije istina jer je algoritam javno dostupan a i vrsena su velika ispitivanja algoritma van NSA-e.Planiram da posvetim vecu paznju pgp sistemu u nekom narednom izdanju casopisa tako da necu dublje ulaziti u temu. Kraj : Ovo sam zamislio kao uvod u kriptologiju , njene koncepte i najosnovinije stvari koje su potrebne za pocetak bavljenja ovim poslom. Nadam se da je tekst bio zanimljiv i nadasve koristan bar nekome.Mogu da najavim neki tekst o hash funkcijama kao i o PGP sistemima i prakticnoj primeni algoritama. Mislio sam da to napisem u okviru ovog teksta ali sam ovih dana jako zauzet nekim svojim projektima i problemima. Pozdrav svima koji me znaju Veliki pozdrav ekipi sa blackhat foruma [EOF]