Copy Link
Add to Bookmark
Report
2x13 Cryptology 101
....................
...::: 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]