Beruflich Dokumente
Kultur Dokumente
UVOD
'' Počnite od početka,'' reče kralj, veoma ozbiljno,
'' i nastavite dok ne dođete do kraja: onda stanite.''
- Lewis Carroll, Alisa u zemlji čuda
Poverljivost ima za cilj da predvidi neautorizovano čitanje informacija. AOB verovatno ne bi puno
brinula o tajnosti informacija sa kojim posluje, ali njenu korisnici brinu. Bob ne želi da Trudi zna
koliko on ima novca na računu. Alisina banka bi imala pravnih problema ukoliko bi se ugrozila
zaštita takvih informacija.
Informacija ima integritet ako je neautorizovano pisanje zabranjeno. Alisina banka mora
zaštititi integritet informacija na računu da bi sprečila, recimo, povećanje stanja na njenom računu
ili promenu stanja na Bobovom računu.
Denial of service (napadi odbijanje servisa) su relativno skoriji razlozi za brigu. Takvi
napadi pokušavanju da smanje pristup informacijama. Kao rezultat povećanja DoS napada,
raspoloživost je postala osnovni predmet u zaštiti informacija. Raspoloživost je briga i za Alisu i
za Boba. Ako AOB web stranica nije dostupna, tada Alisa ne može dobijati novac od transakcija
klijenata i Bob ne može da završi svoj posao. Tada Bob može njegov posao završiti negde drugo.
Ako Trudi zavidi Alisi ili samo želi biti pakosna – ona može primeniti napad odbijanja servisa na
Alisinu banku.
Poverljivost, integritet i raspoloživost (PIR) su samo početak priče o zaštiti informaciji. Kada se
Bob uloguje na svoj računar, kako Bobov računar odredi da je Bob stvarno Bob, a nije Trudi. A
kada se Bob uloguje na račun u Alisinoj banci, kako AOB zna da je Bob zaista Bob, a nije Trudi.
Iako ova dva autentifikacijska problema izgledaju slično spolja, ispod površine oni su potpuno
drugačiji. Autentifikacija na one-stand sistemu zahteva da se Bobova lozinka verifikuje. Da bi bili
sigurni neke pametne tehnologije iz oblasti kriptografije su potrebne.
Autentifikacija na mreži je otvorena za mnoge vrste napada. Poruka poslata preko mreže
može biti viđena od strane Trudi. Da bi stvari bile gore, trudi sem što može presresti poruku, ona
je može izmeniti i upisati poruke koje je ona sastavila. Takođe na osnovu nekih starih poruka
može uveriti AOB da je ona Bob. Autentifikacija u tim slučajevima zahteva obraćanje pažnje
protokolima koji su korišteni. Kriptografija takođe ima veoma važnu ulogu u sigurnosnim
protokolima. Kada je Bob autentifikovan u Alisinoj banci, tada Alisa mora imati neka ograničenja
kod Bobovih aktivnosti. Na primer, Bob ne može gledati stanje Čarlijevog računa ili instalirati
novi softver na sistemu. Sem, administrator sistema, može instalirati novi softver na AOB sistemu.
Upotrebljavanje takvih ograničenja je u domenu autorizacije. Primetite da autorizacija pravi
ograničenja na akcije autentifikovanih korisnika. Kako autorizacija i autentifikacija imaju posla sa
predmetima pristupa resursima, onda ćemo oboje staviti pod naslov pristup kontroli.
Svi mehanizmi zaštite informacija o kojima smo do sada govorili su implementirani u softver.
Moderni softverski sistemi teže da budu veliki, kompleksni i puni grešaka. Ove greške često vode
ka kvarovima zaštite. Koji su ovo kvarovi i kako su iskorišteni ? Kako AOB može biti sigurna da
će se njen softver ponašati ispravno. Kako AOB softver diveloperi mogu ograničiti broj kvarova
zaštite u softveru kojeg razvijaju? Mi ćemo ispitati ova pitanj (i mnoga druga) kada budemo
govorili o softveru.
Iako greške mogu (i čine to) povećati kvarove zaštite, ovi kvarovi su stvoreni nenamerno. Sa druge
strane, neki softveri su i stvoreni da čine zlo. Takvi softveri ili malveri uključuju kompjuterske
viruse, crve koji muče internet danas. Kako ovi loši stvorovi rade ono što rade i šta Alisina banka
može uraditi da bi ograničila njihovu štetu. A šta Trudi treba da radi da bi povećala štetu? Bob
takođe ima mnogo softverskih briga? Na primer, kada Bob ukuca svoju lozinku na njegov računar,
kako da on zna da njegova lozinka nije presretena i poslata Trudi? Ako Bob vodi transakciju na
www.aliceonlinebank.com kako on zna da je transakcija na njegovom ekranu ista kao ona u banci?
Generalno, Bob mora verovati da se softver ponaša onako kako treba nasuprot onom kako bi Trudi
želela da se on ponaša? Razmotrićemo i ova pitanja kasnije. Kada govorimo o softveru i sigurnosti
moramo obratiti pažnju na operativni sistem ili teme u vezi sa operativnim sistemom.
Operativni sistemi su veliki i kompleksni delovi softvera. Operativni sistemi takođe primoravaju
većinu sigurnosti u svakom sistemu, tako da je neko znanje o operativnim sistemima potrebno da
bi se bolje razmotrila zaštita informacija.
1.3.1 KRIPTOGRAFIJA
Kriptografija ili ''tajni kodovi'' su osnovni alati u zaštiti informacija. Kriptografija ima mnoge
primene, uključujući zaštitu tajnosti i integriteta, iznad mnogih drugih važnih funkcija zaštite
informacija. Govorićemo o kriptografiji detaljno jer je ona pozadina za mnoge stvari u ovoj knjizi.
Počećemo sa razmenjivanjem kriptografije pogledom na sistem šifri. Ovi sistemi prikazuju
osnovne principe koji su uposleni u moderne digitalne šifarske sisteme, ali na mnogo jednostavniji
način.
Sa ovim predznanjem spremni smo da izučavamo modernu kriptografiju. Simetrični
ključevi kriptografije i javni ključevi kriprografije igraju glavnu ulogu u zaštiti informacija i mi
ćemo čitav ovaj deo knjige razmatrati tu temu. Onda ćemo obratiti pažnju na heš funkcije koje su
još jedan osnovni alat. Heš funkcije se koriste u mnogim različitim kontekstima u zaštiti
informacija. Neke su veoma iznenađujuće i ne uvek intuitivne. Mi ćemo govoriti o heš funkcijama
za online naredbe i smanjenje spamova.
Takođe ćemo obratiti pažnju na nekoliko posebnih tema koje se odnose na kriptografiju.
Na primer, govorićemo o skrivanju informacija, gde je cilj da Alisa i Bob komuniciraju bez trudi
iako znaju da je neka informacija prosleđena. Ovo je relativno blisko sa watermarking-om, što
ćemo takođe ukratko obraditi.
Poslednji deo se bavi modernom kriptografijom, a to je način na koji se razbijaju moderni
šifarski sistemi. Iako je to relativno tehnička i specijalizovana inforamcija, potrebno je ceniti
metode napada da bi se razumeli dizajnerski principi iza modernih kriptografskih sistema.
1.3.3 PROTOKOLI
1.3.4 SOFTVER
U poslednjem delu knjige, razmotrićemo neke od aspekata zaštite i softvera. Ovo je veliki deo, a
mi možemo samo preći samo selektovane predmete. Govorićemo o rupama u zaštiti i virusima,
kao što smo već gore spomenuli.
Takođe ćemo obratiti pažnju na softver reverzni inženjering da bi ilustrovali kako
posvećeni napadač može ponovo konstruisati softver bez pristupa izvornom kodu. Mi možemo
iskoristiti naše novootkriveno znanje hakera na problem upravljanja digitalnim pravima, što pruža
odličan primer granica sigurnosti u softveru – posebno kada se softver mora izvršiti u
neprijateljskom okruženju.
Naša poslednja tema vezana za softver je operativni sistem (OS). Operativni sistem je
sudija u mnogim operacijama kod sigurnosti pa je važno razumeti kako OS sprovodi zaštitu.
Onda ćemo obratiti pažnju na zahteve takozvanog pouzdanog operativnog sistema.
Pouzdan OS pruža jake garancije da taj OS radi ispravno. Posle ovog, razmotrićemo skoriji
pokušaj Microsofta da implementira pouzdan OS za PC platformu. Ova diskusija nadalje ilustruje
izazove nerazdvojive u implementaciji sigurnosti u softveru.
1.6 PROBLEMI
Problem nije to da tu postoje problemi. Problem je
očekivanje drugačijeg i razmišljanje da je postojanje problema problem.
- Theodore I. Rubin
1. Između osnovnih izazova u zaštiti informacija su poverljivost, integritet i dostupnost ili CIA.
Dajte primer gde je potrebna poverljiviost, a nije potreban integritet. Dajte primer gde je
potreban integritet, a ne poverljivost. Dajte primer gde je dostupnost važnija od integriteta i
poverljivosti.
2. RFID su veoma mali uređaji sposobni za emitovanje broja kroz vazduh koji može biti pročitan
preko obližnjeg senzora. Predviđeno je da RFID tagovi će uskoro biti pronađeni u svim
vrstama proizvoda, uključujući papirni novac, delovima odeće ... Ako se ovo desi, osoba može
biti okružena ''oblakom'' RFID brojeva koji će obezbeživati informacije o osobi. Razmotrite
sigurnost i druge zabrinutosti za sigurnost koji se mogu pojaviti.
3. Iz perspektive bankara, šta je obično važnije, integritet podataka njegovih klijenata ili
poverljivost podataka? A iz perspektive klijenta banke, šta je važnije?
4. Neki autori prave razliku između tajnosti, privatnosti i poverljivosti. U ovom slučaju, tajnost je
ekvivalentna našem terminu poverljivosti, gde je privatnost tajnost primanjena na lične
podatke i poverljivost se odnosi na obavezu da ne oda određene informacije. Razmotrite
primer gde je potrebna privatnost. Razmotrite primer gde je poverljivost potrebna.
5. Pročitajte članak [126] o propasti Vizantije. Opišite problem i objasnite zašto se problem ne
može desiti da su četiri generala od kojih je samo jedan izdajica. Zašto je ovaj problem bitan
za zaštitu informacija?
Deo 1
KRIPTO
2
OSNOVE KRIPTOGRAFIJE
MXDXBVTZWVMXNSPBQXLIMSCCSGXSCJXBOVQXCJZMOJZCVC
TVWJCZAAXZBCSSCJXBQCJZCOJZCNSPOXBXSBTVWJC
JZDXGXXMOZQMSCSCJXBOVQXCJZMOJZCNSPJZHGXXMOSPLH
JZDXZAAXZBXHCSCJXTCSGXSCJXBOVQX
- otvoreni tekst iz Lewis Carroll, Alise u zemlji čuda
2.1 UVOD
U ovom poglavlju govorićemo o nekim osnovnim elementima kriprografije. Ovo poglavlje će
postaviti osnove za ostale kripto delove. Izbegavaćemo matematiku što je više moguće, ali ćemo
se truditi da prikažemo što više detalja da ne bismo razumeli samo ''šta'' nego i ''zašto.'' Ovo
poglavlje će obratiti pažnju na:
unapređene kriptoanalize.
Šifra ili šifarski sistem se koriste za šifrovanje podataka. Orginalni podaci su poznati kao otvoreni
tekst, a rezultat šifrovanja je šifrat. Mi dešifrujemo šifarski tekst da bi dobili orginalni otvoreni
tekst. Ključ se koristi da se konfiguriše kriptosistem za šifrovanje i defiofrovanje. Kod simetričnih
šifri, isti ključ se koristi za šifrovanje i dešifrovanje kao što je predstavljeno na slici 2.1.
Takođe postoje i kriptografija javnih ključeva gde su ključevi za šifrovanje i dešifrovanje
različiti. U kriptografiji javnih ključeva ključ za šifrovanje se zove javni ključ, ključ za
dešifrovanje se zove privatni ključ. U simetričnoj kriptografiji ključe je poznat pod nazivom
simetrični ključ. Nećemo koristiti dvosmislen termin ''tajni ključ.''
Sa svakim šifrom, cilj je imati sistem gde je ključ neophodan da bi se otkrio otvoreni tekst.
Onda, čak iako je Trudi napadač i ima potpuno znanje o algoritmima koji su korišteni i mnogo
drugih informacija, ona ipak ne može otkriti otvoreni tekst bez ključa. Ovo je cilj iako se to u
realnom svetu znatno razlikuje.
Osnovno načelo kriptografije jeste da je unutrašnji rad kriptosistema potpuno poznat
napadaču Trudi, ali je samo ključ nepoznat. Ovo je poznato kao Kerkohovo pravilo, koji je stvorio
šest pravila za pravljenje šifri i njihovo korištenje. Kerkohov princip se zasniva na tome da šifra
''ne mora da bude tajna, i da je moguće da može pasti u ruke neprijatelju bez neprijatnosti'' a to je
da pravljenje šifre nije tajna.
Šta je cilj Kerkohovih principa? Na kraju krajeva, život mora biti mnogo teži za Trudi ako
ne zna kako šifre rade. Ako je ovo istina onda je takođe istina da i detalji kriptosistema retko
ostaju tajna duže vremena. Reverzni inženjering može lako otkriti algoritme za softver i algoritmi
smešteni u hardver su podložni na slične napade. Nadalje, skriveni kripto algoritmi imaju istoriju
neuspeha da budu sigurni kada budu otkriveni javnom pregledanju. Iz tog razloga, kriptografi neće
prihvatiti algoritam kao siguran dok se ne prođu stalne analize od strane mnogih kriptografa tokom
određenog vremena. Na kraju, suština je da svaki kriptosistem koji ne zadovoljava Kerkohov
princip mora biti osuđen na propast. A to znači da je ''šifra je kriva dok se ne dokaže da je nevina.''
Kerkohovi principi mogu biti prošireni i na to da pokriju i druge aspekte sigurnosti, a ne
samo kriptografiju. Drugim rečima, Kerkohovi principi znače da je stvaranje sigurnosti samo po
sebi otvoreno. Veruje se da ''više očnih jabućica'' dovodi do propasti sigurnosti. Iako Kerkohovi
principi (u oba oblika) su široko prihvaćeni u principu, postoji mnogo realnih iskušenja da bi se
prekršili.
U ovom delu, razmotrićemo ukratko nekoliko klasičnih kriptosistema. Iako je istorija
kriptografije fascinantna tema, svrha ovog predmeta jeste jednostavno da omogući elementarni
uvod u neke kritične koncepte koji će se pojaviti u modernoj kriptografiji.
Kod implementacije šifre zamene, poruka je šifrovana tako što se slova zamene za n mesta
alfabeta unapred od tog slova.
Na primer, ako je n=3, zamena bi bila
otvoreni tekst: 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
šifrat: DEFGHIJKLMNOPQRSTUVWXYZABC
gde prateći dogovor da je otvoreni tekst napisan malim slovima, a šifrat napisan velikim slovima.
U ovom primeru, za ključ se može reći da je ''3'' jer je broj pomeranja ključ.
Koristeći da je ključ 3, možemo šifrovati otvoreni tekst
fourscoreandsevenyearsago
gledajući gore za svako slovo u redu otvorenog teksta i zameniti ga sa odgovarajućim slovom iz
reda šifrata ili jednostavno zameniti slovo slovom koje je tri pozicije posle slova u otvorenom
tekstu. U ovom primeru, rezultirajući šifrat je:
IRXUVFRUHDAGVHYHABHDUVDIR
CSYEVIXIVQMREXIH
i ona posumlja da je šifrovana šifrom zamene sa ''pomerajem za n''. Onda će ona pokušati svaki od
26 mogućih ključeva, dešifrovaće poruku sa svakim mogućim ključem dok god otvoreni tekst ne
bude imao nekog smisla. Ako je poruka stvarno bila šifrovana preko pomeraja za n, Trudi će
očekivati da će pronaći otvoreni tekst, a isto tako i otkriti ključ, u proseku posle 13 pokušaja.
Svirep pokušaj probavanja svih ključeva dok se ne pronađe pravi poznata je pod nazivom
potpuna pretraga ključeva. Pošto je ovaj napad uvek jedna od opcija, potrebno je (iako veoma
neefikasno) da je broj mogućih ključevo toliko veliki da ukoliko bi ih Trudi sve isprobala oduzima
joj doista vremena.
Koliko veliko polje ključeva je dovoljno veliko? Pretpostavimo da Trudi ima veoma brz
računar koji može da testira 240 ključeva u sekundi. Onda prostor ključeva od 2 56 može biti
iscrpljen za 216 sekundi ili otprilike za 18 sati, a gde bi za prostor ključeva veličine 2 64 bilo
potrebno više od pola godine.
Šifra zamene ne mora biti ograničena na pomeraje preko n. Svaka zamena od 26 slova
može biti ključ. Na primer, sledeći ključ, a nije pomeranje alfabeta, definiše šifru zamene
otvoreni tekst: 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
šifrat: ZPBYJRGKFLXQNWVDHMSUTOIAEC
Ako šifra zamene može uposliti svaku permutaciju kao ključ, onda je tu 26! ≈ 2 88 mogućih
ključeva. Sa našim super brzim računarom koji testira 2 40 ključeva u sekundi, prostor ključeva
velićine 288 bi uzeo više od 8900 milenijum za isvršavanje. Naravno, mi očekujemo da ćemo naći
pravi ključ za polovinu tog vremena ili 4450 milenijuma! Pošto je 2 88 ključeva više nego što Trudi
može isprobati u nekom razumnom vremenu, ova šifra prolazi naš prvi zahtev, prostor ključeva je
dovoljno velik da bi potpuna pretraga ključeva bila izvodljiva.
Da li ova znači da je šifra zamene sigurna? Odgovor je ne, kao što napad u sledećem delu
to objašnjava.
Pretpostavimo da Trudi presretne sledeći šifrat, koji na posumlja da je nastao na osnovu šifre
zamene - preko ne obaveznog pomeraja za n.
PBFPVYFBQXZTYFPBFEQJHDXXQVAPTPQJKTOYQWIPBVWLXTOXBTFXQWAXBVCXQWAXFQ
JVWLEQNTOZQGGQLFXQWAKVWLXQWAEBIPBFXFQVXGTVJVWLBTPQWAEBFPBFHCVLXBQU
FEVWLXGDPEQVPQGVPPBFTIXPFHXZHVFAGFOTHFEFBQUFTDHZBQPOTHXTYFTODXQHFT
DPTOGHFQPBQWAQJJTODXQHFOQPWTBDHHIXQVAPBFZQHCFWPFHPBFIPBQWKFABVYYDZ
BOTHPBQPQJTQOTOGHFQAPBFEQJHDXXQVAVXEBQPEFZBVFOJIWFFACFCCFHQWAUVWFL
QHGFXVAFXQHFUFHILTTAVWAFFAWTEVOITDHFHFQAITIXPFHXAFQHEFZQWGFLVWPTOFFA
(2.1)
Pošto je mnogo posla za Trudi da isproba svih 2 88 mogućih ključeva,ona može biti pametnija.
Pretpostavimo da je poruka na engleskom, ona može koristiti tabelu učestalosti slova u engleskom
jeziku prikazanoj na Slici 2.2 zajedno sa učestalošću sa otvorenog teksta 2.1, koji se pojavljuje na
Slici 2.3.
Prema šifratu ona zaključuje da je slovo F najčešće, a na osnovu učestalosti slova u
engleskom jeziku to je slovo E. Na osnovu toga može zaključiti da je slovo F u šifratu zamena za
E. Na osnovu ovoga Trudi može probati zamenu dok ne prepozna reč i na taj način može biti
uverena u njene pretpostavke.
Na osnovu toga najlakše je da odredi prvu reč, pošto ona ne zna gde je razmak. Pošto je treće
slovo e, ona na osnovu učestalosti slova na osnovu razumnog pogađanja može zaključiti da je prva
reč ''the''. Na osnovu ovog ona je u mogućnosti da pogodi više slova i šifrat će uskoro biti otkriven.
Verovatno će napraviti po koju grešku, ali na osnovu korišćenja statističkih informacija otkriće
Postoji nekoliko razumnih definicija sigurnosti šifara. Idealno, mi bi hteli da imamo matematički
dokaz da tamo nema mogućeg napada na sistem. Međutim, postoji samo jedan sistem šifara koji
dolazi sa takvim dokazom, a on je nepraktičan za korišćenja.
Zbog odsutnosti dokaza o jačini šifre, mi možemo zahtevati je najpoznatiji napad na
sistem nepraktičan. Dok se ovo može činiti najviše željenim, mi ćemo izabrati drugačiju definiciju.
Reći ćemo da je kriptosistem siguran onoliko koliko najpoznatiji napad zahteva rada da bi se
Slika 2.3 Učestalost slova u otvorenom tekstu
pronašao pravi ključ, a to je ne baš kratak napad. Prema ovoj definiciji, siguran kriptosistem sa
malim brojem ključeva može biti lakši za razbijanje od nesigurnog sistema sa velikim brojem
ključeva. Razumno za našu definiciju jeste da ako je kratki napad poznat algoritam ne omogućava
da ''objavi'' njegov nivo sigurnosti, kao što je naznačeno na osnovu dužine ključa. Takav kratki
napad upućuje na to da takva šifra ima grešku tokom stvaranja.
U praksu, moramo izabrati čifru koja je sigurna i ima dovoljno veliki prostor ključeva tako
da je traženje ključa nepraktično. Oba faktora su potrebna.
Da bi šifrovali na osnovu dvostruke transpozicije, prvo pišemo otvoreni tekst u niz određene
veličine i onda permutujemo redove i kolone prema specifičnoj permutaciji. Na primer,
pretpostavimo da napišemo otvoreni tekst attackatdawn u 3x4 niz.
sada ćemo permutovati redove na osnovu (1,2,3)→(3,2,1) i onda permutujemo kolone na osnovu
(1,2,3,4)→(4,2,1,3) i dobijemo
2.3.5 ONE-TIME-PAD
Vernamova šifra ili one-time pad je verovatno siguran kriptosistem. U prošlosti je mnogo
korištena, ali ipak za mnoge situacije nije praktična. Međutim, ona ipak veoma lepo prikazuje neke
veoma važne koncepte koje ćemo videti kasnije.
Na početku prikazaćemo jednostavan primer sa samo osam slova. Naša slova imaju
odgovarajuće binarne vrednosti i te vrednosti smo naveli u Tabeli 2.1. Važno je reći da vrednosti
slova nije tajna. Ovo isto kao kod ASCII koda, koji takođe nije tajan.
Pretpostavimo da špijun koji se zove Alisa, želi da šifruje otvoreni tekst
heilhitler
koristeći one-time pad. Ona prvo pogleda Tabelu 2.1 i konvertuje slova u bit string
001 000 010 100 001 010 111 100 000 101.
One-time pad zahteva ključ koji se sastoji od sličajno uzabranog stringa bita koji je iste dužine kao
i poruka. Ključ se onda XORuje sa otvorenim tekstom da bi se dobio šifrat. Jednostavniji način da
se ovo kaže jeste da se dodamo otvoreni tekst i ključ bita modula 2.
Označimo XOR bita x sa bitom y kao x⊕y. Pošto je x⊕y⊕y=x, dešifrovanje je ostvareno
preko XORovanja istog ključa sa otvorenim tekstom.
Pretpostavimo da Alisa ima ključ
111 101 110 101 111 100 000 101 110 000
koji je iste dužine kao i šifrat poruke iznad. Onda da bio dešifrovala Alisa računa,
h e i l h i t l e r
otvoreni tekst: 001 000 010 100 001 010 111 100 000 101
ključ: 111 101 110 101 111 100 000 101 110 000
šifrat: 110 101 100 001 110 110 111 001 110 101
s r l h s s t h s r
s r l h s s t h s r
šifrat: 110 101 100 001 110 110 111 001 110 101
ključ: 111 101 110 101 111 100 000 101 110 000
otvoreni tekst: 001 000 010 100 001 010 111 100 000 101
h e i l h i t l e r
101 111 000 101 111 100 000 101 110 000 .
s r l h s s t h s r
šifrat: 110 101 100 001 110 110 111 001 110 101
''ključ'': 101 111 000 101 111 100 000 101 110 000
''otvoreni tekst'': 011 010 100 100 001 010 111 100 000 101
k i l l h i t l e r
Kada Alisini neprijatelji ''dešifruju'' poruku koristeći taj ključ oni dobiju sledeći rezultat
s r l h s s t h s r
šifrat: 110 101 100 001 110 110 111 001 110 101
''ključ'': 111 101 000 011 101 110 001 011 101 101
''otvoreni tekst'': 001 000 100 010 011 000 010 010 011 000
h e l i k e s i k e
Alisini neprijatelji koje se ne razumeju u kriptografiji, čestitaju Alisi na saradnji i puste je.
Ovi primeri pokazuju zašto je one-time pad sigurna šifra. Ako je ključ sličajno izabran, onda
napadač koji vidi šifrat nema nikakvu informaciju o poruci sem njene dužine. To znači da bilo koji
dati šifrat, bilo kog ''otvorenog teksta'' iste dužine može biti generisan kao odgovarajući ''ključ'' i
svi mogući otvoreni tekstovi su slični. A kako možemo napuniti poruku sa bilo kojim brojem
slučajnih slova pre šifrovanja, dužina onda nije od koristi. Tako da šifrat ne pruža nikakve
informacije o otvorenom tekstu. Ovo je razlog zašto je one-time pad verovatno sigurna šifra.
Naravno, ovo podrazumeva da se šifra pravilno koristi. Ključ mora biti izabran sličajno,
korišten samo jednom i moraju ga znati samo pošiljalac i primalac.
Mi ne možemo uraditi ništa bolje od verovatno sigurne šifre, tako da možda možemo uvek
koristiti one-time pad. Međutim, one-time pad ima ozbiljnu manu: ključ je iste dužine kao poruka i
ključ mora biti sigurno prenesen do primaoca pre nego što se poruka dešifruje. Ako sigurno
možemo proslediti ključ, zašto onda jednostavno ne prosledimo i otvoreni tekst? Dole ćemo videti
istorijski primer gde stvarno ima smisla koristiti one-time pad, bez obzira na ozbiljna ograničenja.
Međutim, za moderne sisteme podataka, one-time pad šifra je potpuno nepraktična.
Zašto se one-time pad može koristiti samo jednom? Pretpostavimo da imamo dva otvorena
teksta P1 i P2, šifrovanje kao C1=P1⊕K C2=P2⊕K; to znači da imamo dve različite poruke
šifrovanje istim ključem K. U kriptoanalizi ovo je poznato kao dubina. U slučaju one-time pada
dubina je
C1 ⊕ C2 = P1 ⊕ K ⊕ P2 ⊕ K = P1 ⊕ P2
i ključ je nestao iz problema. Ovo ne može biti dobro ni za koga sem za Trudi, kriptoanalitičara.
Hajde da razmotrimo specifičan primer one-time pad dubine. Koristeći iste bite za
šifrovanje iz Table 2.1, pretpostavimo da imamo,
P1 = like = 100 010 011 000 and P2 = kite = 011 010 111 000
i
Ako Trudi kriptoanalizičar zna da je poruka u dubini, ona odmah vidi da je drugo i četvro slovo
poruka P1 i P2 isto, pošto su odgovarajuća slova u čifratu identična. Ali više poražavajuća
činjenica jeste da Trudi sada može pogoditi poruku P1 i proveriti njen rezultat koristeći P2.
Pretpostavimo da koja samo ima C1 i C2 sumlja da je
Pošto K ne zahteva pametan opis za P2, Trudi sumlja da je rezultat koji je otkrila za P1 netačan.
Kada Trudi posle nekog vremena pogodi da je P1=like ona će koristeći pravi ključ K dešifrovati
P2=kite i time će potvrditi ispravnost ključa i ispravnost oba opisa.
Projekat VENONA[239] je interesantan primer korištenja one-time pada u realnom svetu. 1930-ih
i 1940-ih, sovjetski špijuni su opisivali stanje u SAD-u donoseći one-time pad ključeve sa njima.
Špijuni su koristili ove ključeve da bi šifrovali važne poruke, koje su onda bile slate u Moskvu.
Ove poruke su se bavile veoma važnim špijunskim operacijama u to vreme. Konkretno, tajano
pravljenje atomske bombe bio je jedan od glavnih žarišta špijuniranja. Rosenbergov Alger Hiss i
mnogi drugi špijuni – i mnogi nikada ne identifikovani špijuni – su se istakli na projektu
VENONA.
Tabela 2.2. VENONA Decrypt of message of September 21, 1944.
Ovi Sovjetski špijuni su bili veoma dobro obučeni i nikada nisu ponovo koristili isti ključ, pa su
mnoge poruke koje su bile presretene dešifrovane od strane američkih kriproanalitičara. Kako je to
moguće, uzimajući u obzir da je one-time pad siguran? Ovo je bio slučaj propasti korišćenja
metode generisanja dopuna, pa su se oni ponavljali. Kao rezultat, mnoge poruke su bile u dubini,
što je omogućilo kriptoanaltičarima da otkruju poruke.
Deo VENONA je dat u Tabeli 2.2. Poruka se odnosi na Davida Greenglassa i njegovu ženu
Ruth. LIBERAL je Julius Rosenberg koji je zajedno sa svojom ženom Ethyl pogubljen jer je imao
ulogu u nuklearnoj špijunaži. Sovjetsko kodno ime za nuklearnu bombu je bilo ENORMOUS.
VENONA skript [239] je veoma interesantan za čitanje.
Klasična kodna knjiga je, doslovno, rečnik kao knjiga koja sadrži reči i njihove odgovarajuće
kodne reči. Tabela 2.3 sadrži izvod iz čuvene kodne knjige koju su koristili Nemci u Prvom
svetskom ratu.
Na primer, da bi šifrovali nemačku reč Februar, čitava reč bi bila zamenjena sa 5 cifara
''kodnom rečju'' 13605. Kodna knjiga u Tabeli 2.3 je korištena za šifrovanje, dok je odgovarajuća
kodna knjiga, u kojoj su kodne reči od 5 cifara bile poredane numerički i korištene za
dešifrovanje. Kodna knjiga je šifra zamene, ali zamena je mnogo dalje od jednostavnosti, dok je
zamena korištena za cele reči ili čak za čitavu frazu.
Kodna knjiga prikazana u Tabeli 2.3 je korištena za šifrovanje čuvenog Zimmermanovog
telegrama. 1917. Nemac ministar spoljašnjih poslova Arthur Zimmerman je poslao šifrovani
TABLE 2.3. Izvod iz nemačke kodne knjige
telegram Nemačkom ambasadoru u Meksiko. Šifrat, kao što je prikazano na slici 2.4 [171] su
presreli Britanci. U to vreme, Britanci i Francuzi su bili saveznici u ratu protiv Nemačke, ali je
SAD bila neutralna [236].
Rusi su otkrili oštećenu verziju nemačke kodne knjige, i deo kodne knjige je bio prosleđen
Britancima. Tokom mukotrpne analize, Britanci su bili u mogućnosti da otkriju dovoljno da bi
dešifrovali Zimmermanov telegram [61]. U telegramu je stajalo da je Nemačka vlada planirala
''oružani sukob podmornica'' i na kraju je rečeno da će to verovatno voditi ratu sa SAD-om. Kao
rezultat Zimmerman je odlučio da Nemačka treba da pokuša da pridobije Meksiko kao saveznika u
ratu protiv SAD-a. Podsticaj za Meksiko bi bio da ''povrate izgubljene teritorije kao što su Teksas,
Novi Meksiko i Arizonu''. Kada je Zimmermanov telegram izdat u SAD-u, javnost se okrenula
protiv Nemačke i posle potapanja putničkog broda Luizijane, Amerika je objavila rat Nemačkoj.
Slika 2.4 Zimmermanov telegram
Britanci su prvo bili neodlučni da li da objave Zimmermanov telegram, jer će Nemci svatiti da je
njihova šifra razbijena i da će je verovatno prestati koristiti. Međutim, pošto je mnoštvo poruka
bilo poslato u isto vreme kao i Zimmermanov telegram Britanski analitičari su otkrili da drugačiji
telegram poslat nešifrovan. Verzija Zimmermanovog telegrama koju su Britanci naknadno objavili
veoma se poklapa sa nešifrovanom verzijom telegrama. Nemci su zaključili da njihova kodna
knjiga nije kompromitovana i nastavili su da koriste osetljive poruke tokom rata.
Moderne blokovske šifre koriste kompleksne algoritme da generišu šifrat iz otvorenog
teksta (i obrnuto) ali na većem nivou, blokovske šifre mogu se posmatrati kao kodne knjige, gde
svaki ključ određuje vidljivu kodnu knjigu.
2.3.8 ŠIFRE SA IZBORA 1876. GODINE
Američki presednički izbori 1876. godine su bili prava mrtva trka. U to vreme Građanski rat je bio
još uvek svež u ljudskim mislima, ''radikalne'' rekonstrukcije su nastavljene kod bivših
konfederacija i nacija je još uvek bila podeljena.
Kandidati za presednika su bili republikanac Rutherford B. Hayes i demokrata Samuel J.
Tilden. Tilden je bio omalovažavan od strane većine ali je izborni kolegijum odlređuje
predsedništva. Za izborni kolegijum svaka država šalje delegaciju i čitava delegacija glasa za
kandidata koji je dobio najveći broj glasova u određenoj državi (iako nema zakonske potrebe za
delegata da glasa za određenog kandidata, i nije redak slučaj da delegat glasa za drugog
kandidata).
1876. godine delegacija izbornog kolegijuma iz četiri zemlje su bili u svađi i to je
održavalo balans. Komisija od 15 članova je bila odlučna da odredi koja delegacija iz koje zemlje
je legalana – i tako odredi predsedništvo. Komisija je odlučila da sve četiri zemlje glasaju za
Hayesa i on da on postane predsednik SAD-a. Tildove pristalice su optužili Hayesove ljude da su
podmitili zvaničnike da glasaju za njega, ali za to nije bilo dokaza.
Nekoliko meseci posle izbora, izveštači su otkrili veliki broj šifrovanih poruka koje su
poslali Tildenove pristalice zvaničnicima u spornim državama. Jedna od šifara koja je je bila
korištena je jednim delom kodna knjiga zajedno sa transpozicijom reči. Kodna knjiga je korištena
samo kod važnih reči, a transpozicija je bila fiksna permutacija za poruku date dužine. Dozvoljena
dužina poruke je bila 10,15,20,25 i 30 reči i sve poruke su bile stavljane u jednu od ovih dužina.
Permutacija korištena za poruke od 10 reči je bila
9, 3, 6, 1, 10, 5, 2, 7, 4, 8.
Warsaw they read all unchanged last are idiots can’t situation.
Koja je bila dešifrovana ne koristeći permutaciju i zamenu telegram za Warsaw i rezultat je sledeći
Can’t read last telegram. Situation unchanged. They are all idiots.
Kriptoanalitičari su veoma lako razbili ovu slabu šifru. Pošto je permutacija date dužine bila stalno
korištena, mnoge poruke date dužine su bile osuđene na propast– sa poštovanjem permutacije
zajedno sa kodnom knjigom. Kriptoanalitičari su tako mogli uporediti sve poruke iste dužine, i na
taj način bilo je lako otkriti fiksnu permutaciju, i bez znanja o delimičnoj kodnoj knjizi. Analitičari
su morali niti pametni da razmotre sve mogućnosti da sve poruke date dužine koriste istu
permutaciju, ali sa ovim uvidom permutaciju je bilo lako otkriti. Kodna knjiga je onda izvučena iz
kontekta pomoću nekih nešifrovanih poruka koje daju trag u sastav sifarskog teksta.
I šta su ove dešifrovane poruke otkrile? Izveštači su želeli otkriti da su Tildenove pristalice
pokušale da podmite zvaničnike u spornim zemljama. Ironija je u tome da su Tildenovi ljudi bili
krivu upravo za ono za šta su optuživali Hayesove ljude.
Kako god pogledate, ova šifra je bila loše dizajnirana i slaba. Pouka ove priče jeste da je
ponovno korišćenje (mnogobrojno korišćenje) istog ključa vodi do propasti. U ovom slučaj, svaki
put kada je permutacija ponovo korištena, to daje kriptoanalitičarima više informacija koje mogu
da sakupe i otkriju permutaciju. U modernim šifarskim sistemima, pokušavamo da ograničimo
korišćenje jednog ključa tako da ne bi dozovlili kriptoanalitičarima da sakupe mnogo informacija
o odrešenom ključu – i da bi ograničili štetu koja nastaje kada se ključ otkrije.
Tokom 20-og veka, kriptografija je igrala važnu ulogu u velikim svetskim dešavanjima. Kasnije u
20. veku, kriptografija je postala kritična tehnologija i za komercijane i za poslovne komunikacije.
Zimmermanov telegram je jedan od prvih primera iz prošlog veka i uloge kriptoanalitičara u
političkim i ratnim aferama. U ovom delu, smo spomenuli istorijskih nekoliko događaja iz prošlog
veka. Za više informacija o istorijskim događajima najbolji izvor je Kahnova fascinantna
knjiga[119].
1929. godine državni sekretar Henry L. Stimson je završio zvaničku kriptoanalitičku
aktivnost američke vlade opravdavajući njegove postupke sa besmrtnim potezom . ''Džentlmeni ne
čitaju mejlove jedan drugom'' [224]. Ali to se pokazalo kao velika greška zbog napada Japanaca na
Perl Harbur.
Kratko nakon napada 7. 12. 1941. SAD je ponovo pokrenula svoj kriptoanalitički program.
Uspeh savezničkih kripnoanalitičara tokom Drugog svetskog rata je znatan i ovo doba se često
naziva ''zlatno doba'' kriptoanalize. Praktično svi važni kriptosistemi su bili razbijeni i vrednost
podataka dobijenih iz tih sistema je teško proceniti.
U pacifičkom teatru, tako se zvala Purpurna šifra je korištena za komunikaciju između
Japanske vlade na visokim položajima. Ova šifra je razbijena od strane američkog kriptoanalitičara
pre napada na Perl Harbur, ali je inteligencija (tajno ime Magic) nije imala jasne indikacije o
napadu[61]. Japanska državna mornarica je koristila šifru poznatu pod nazivom JN-25, koju su
takođe amerikanci razbili. Podaci iz JN-25 su bili sigurno presudni u dugim bitkama koje su vodili
u Korejskom moru i Midveju, gde su neravnopravne američke snage po prvu put imale mogućnost
da drže prednost u odnosu na Japance. Japanska mornarica nikada nije bila u mogućnosti da se
potpuno opravi od gubitaka zadobijenih tokom ove bitke.
U Evropi, razbijanje Enigme (kodno ime ULTRA) je takođe sudbonosna pomoć
saveznicama tokom rata [59, 87]. Često je tvrđeno da je vrednost podataka ULTRE bili toliki
važni da je Čerčil u novembru 1940. godine da ne informiše britanski grad Koventri o vazdušnom
napadu od strane nemačke avijacije, jer je glavni izvor za napad došao iz dešifrovanja poruke iz
Enigme[229]. Čerčil je navodno bio zabrinut da bi upozorenje moglo navesti Nemce da pomisle da
je šifra razbijena.
Enigma je u početku bila razbijena od strane Poljaka. Posle pada Poljske, poljski
kiptoanalitičari su pobegli u Francusku. Posle toga, Francuska je pala u ruke nacista i
kriptoanalitičari su pobegli u Englesku, gde su dali svoje znanje o Enigmi britanskim
kriproanalitičarima. Zanimljivo je da poljskim kriptoanalitičarima nije bilo dozvoljeno da se dalje
bave Enigmom. Međutim, britanski tim uključujući Alana Turinga su razvili poboljšan napad [59].
Slika Enigme je prikazana na Slici 2.5, a unutrašnji rad je predstavljen u Problemu 12 u poglavlju
6.
Posle Drugog svetskog rata, kriptografija je od ''mrtve umetnosti'' postala oblast nauke.
Izdanje Clauda Shennona 1949. godine Informaciona teorija tajnih sistema (Information Theory of
Secrecy Systems) [207] predstavlja početnu tačku. Shannonova studija je pokazala da je one-time
pad sigurna i takođe je ponudio dva osnovna principa pravljenja šifara: konfuzija i difuzija.
Konfuzija je napravljena da učini nejasnim vezu između otvorenog teksta i šifrata, dok je difuzija
korištena da širi statistike otvorenog teksta kroz šifrat. Jednostavna zamena šifara i one-time pad
koriste samo konfuziju, dok dvostruka transpozicija koristi difuziju. Pošto je one-time pad
verovatno siguran očigledno je da je samo konfuzija ''dovoljna'', dok navodno difuzija sama nije.
2.7 UKRATKO
U ovom poglavlju smo obradili nekoliko klasničnik kriptosistema, uključujući šifre zamene,
dvostruku transpoziciju, kodne knjige i one-time pad. Svaka od njih ilustruje neki važan smisao na
koje ćemo se vratiti u sledećem poglavlju. Takođe smo raspravljali o nekim osnovnim aspektima
kriptografije.
U sledećem poglavlju obratićemo pažnju na modernu šifre simetričnih ključeva. Sledeće
poglavlje obuhvata kriptografiju javnih ključeva, heš funkcije i kriptoanalizu. Kriptografija će se
ponovo pojaviti u poslednjim delovima knjige. Kriptografija je praktično presudan sastojak u
poglavlju o sigurnosnim protokolima.
2.8 PROBLEMI
IAUTMOCSMNIMREBOTNELSTRHEREOAEVMWIHTSEEATMAEOHWHSYCEEL
TTEOHMUOUFEHTRFT
3.1 UVOD
U ovom poglavlju govorićemo o dve vrste kriptografije simetričnim ključem: sekvencijalne šifre i
blokovske šifre. Sekvencijalne šifre su slične one-time padu, sem što one menjaju dokazanu
sigurnost za relativno mali (ili izvodljiv) ključ. Ključ je ''rastegnut'' na duge bitove, koji su onda
korišteni kao one-time pad. Kao i one-time pad, sekvencijane šifre u Shannonovoj terminologiji
predstavljaju samo konfuziju.
Blokovske šifre su bazirane na konceptu kodne knjige, gde ključ određuje kodnu knjigu.
Unutrašnji rad algoritama blokovskih šifri može biti veoma zastrašujući, tako da moramo imati na
umu da su blokovske šifre samo ''elektronske'' knjige. Blokovske šifre primenjuju i konfuziju i
difuziju.
Mi ćemo razmotriti dva algoritma sekvencijanih šifri, A5/1 i RC4. Oba ova algoritma se
veoma koriste i danas, A5/1 se koristi u mobilnoj telefoniji. A5/1 alogoritam predstavlja veliku
klasu sekvencijalnih šifri zasnovanih na hardveru. RC4 se mnogo koristi, uključujući Secure
Socket Layer ili SSL protokol. RC4 je veoma jedninstvena sekvencijalna šifra i efikasno je
implementiran u softver.
Kod blokovskih šifri razmotrićemo DES, jer je relativno jednostavan (kao standard
blokovskih šifri) i blokovska šifra sa kojom se sve ostale upoređuju. Takođe ćemo ukratko
pogledati nekoliko drugih popularnih blokovskih šifri. Onda ćemo ispitati različite modove
operacija blokovskih šifri i razmotrićemo ulogu blokovskih šifri na polju integriteta, kao
suprotnosti poverljivosti.
Naš cilj jeste da se u ovom delu upoznamo sa šiframa simetričnih ključeva i da postignemo
neko razumevanje o tome kako one rade. To znači da ćemo više obratiti pažnju na ''kako'' nego na
''zašto''. Da bi razumeli kako su blokovske šifre kreirane onako kako jesu, neki aspekti unapređene
kriptografije su potrebni. Odgodićemo razmatranje o naprednoj kriptografiji za Poglavlje 6.
Sekvencijane šifre uzimaju ključ K od n bita dužine i razvlače ga na dugi keystream. Keystream je
onda XORovan sa otvorenim tekstom P da bi proizveo šifrat C. Korišćenje keystreama je
identično korišćenju ključa kod one-time pada. Da bi dešifrovali sekvencijalnu šifru, isti
keystream je generisan i XORovan sa šifratom. Jedan izvanredan uvod u sekvencijane šifre može
biti pronađen u Rueppelovoj knjizi [194]; za vođenje u neke aspekte o najizazovnijem istraživanju
problema u tom polju pogledajte [114].
Funkcija sekvencijalne šifre je
StreamCipher(K)=S
gde je K ključ a S je keystream koji koristimo isto kao u one-time padu. Formula za šifrovanje je
Pod pretpostavnkom da i pošiljalac i primalac imaju isti algoritam sekvencijane šifre da su oba
znaju ključ K, ovaj sistem je praktično generalizacija one-time pada iako ne siguran kao one-time
pad.
3.2.1 A5/1
Prva sekvencijana šifra o kojoj ćemo govoriti je A5/1, koja se koristi kod GSM mobilnih telefona
za poverljivost. Ovaj algoritam ima algebarski opis, ali takođe može biti prikazan kroz relativno
jednostavnu sliku. Mi ćemo dati ovde oba opisa.
A5/1 koristi tri linearne povratne informacije pomeračke registre [95] ili LFSR, koje ćemo
mi nazvati X, Y i Z. Registar X se sastoji od 19 bita, koje ćemo označiti sa (x 0,x1,...,x18). Registar
Y se sastoji od 22 bita (y1,y2,...,y21) i registar Z se sastoji od 23 bita (z 1,z2,...,z22). Nije slićajno da
sva tri registra zajedno imaju 64 bita.
Ključ K je 64 bita. Ključ služi za postavljanje početnog stanje sva tri registra. Kada su sva
tri registra postavljena na početno stanje, mi smo spremni da generišemo keystream. Ali pre nego
što možemo opisati keystream, moramo govoriti o registrima X, Y, Z malo opširnije.
Kada se registar X pomeri, dogodi se sledeće
t = y20 ⊕ y21
yi = yi−1 for i = 21, 20, 19, . . . , 1
y0 = t
Data tri bita (x,y,z) definišu maj(x,y,z) i to predstavlja ’’većinu glasova’’ funkciju; to znači da ako
većina od x,y i z je 0, onda funkcija vraća 0, u suprotnom vraća 1.
A5/1 je implementiran u hardver i na svakom taktnom impulsu je vrednost
If x8 = m then X steps
If y10 = m then Y steps
If z10 = m then Z steps
i koji je onda XORovan sa otvorenim tekstom (ako je u pitanju šifrovanje) ili XORovan sa
šifratom (ako je u pitanju dešifrovanje).
Iako se čini da je ovo komplikovan način generisanje jednog bita keystream, A5/1 je lako
implementiran u hardver i može generisati bite na stopi proporcionalnoj brzini sata. Takođe, broj
keystream bita koji može biti generisan iz jednog 64-bitnog ključa je praktično neograničen – iako
će se keystream ponoviti. A5/1 diagram ima jednostavan prikaz ’’žičanog diagrama’’, kao što je
prikazano na Slici 3.1. Vidite [26] za više informacija o A5/1 algoritmu.
A5/1 algoritam je predstavnik velike klase šifri koje su bazirane na pomeračkim registrima
i imlementirane u hardver. Ovi sistemi su nekada bili kraljevi simetričnih kripto sistema, ali
skorijih godina su im blokovske šifre preuzele tu titulu. A danas gde se koriste sekvencijane šifre
koristi se RC4 algoritam, o kome ćemo govoriti kasnije.
U prošlosti, sekvencijane šifre bazirane na pomeračkim registrima su bile potrebne da bi se
držao korak sa tokovima bita (kao što je slučaj kod audio fajlova) koji su proizvedeni po relativno
visokoj stopi podataka. U prošlosti softver baziran kripto nije mogao da generiše bite dovoljno
brzo za takve aplikacije. Danas postoji samo nekoliko aplikacija za koji softver baziran kripto nije
odogovarajući. Ovo je jedan od glavnih razloga zašto su blokovske šifre sada dominantne.
3.2.2 RC4
RC4 je sekvencijana šifra, ali mnogo različita od A5/1. Algoritam RC4 je napravljen za softversku
implementaciju, dok je A5/1 dizajniran za hardver i RC4 pravi keystream bajt na svakom koraku,
dok A5/1 prozvodi samo jedan keystream bit. RC4 algoritam je veoma jednostavan, jer njegova
tabela sadrži permutaciju 256 bajtova. Svaki put kada je registarski bajt napravljen, tabela se
modifikuje na takav način da tabela uvek sadrži permutaciju od {0,1,2,...255}.
Čitav RC4 algoritam je bajtno baziran. Prva faza algoritma inicijalizuje tabelu koristeći
ključ. Mi ćemo označiti ključ kao ključ [i] za i = 0,1,…N-1,
for i = 0 to 255
S[i] = i
K[i] = key[i mod N]
next i
j=0
for i = 0 to 255
j = (j + S[i] + K[i]) mod 256
swap(S[i],S[j ])
next i
i=j=0
gde je svaki ključ [i] bajt, a tabela S[i], gde je S[i] je takođe bajt. Pseudo kod za inicijalizaciju
permutacije S pojavljuje se u Tabeli 3.1. Jedna interesantna odlika RC4 algoritma jeste da ključ
može biti bilo koje dužine od 0 do 255 bajtova. Ključ se koristi samo da bi se inicijalizovala
permutacija S.
Nakon faze inicijalizacije, svaki registarski bajt je generisan na osnovu algoritma u Tabeli
3.2. Izlaz, koji smo označili sa keystreamByte je jedan bajt koji može biti XORovan sa otvorenim
tekstom (ako je u pitanju šifrovanje) ili XORovan sa šifratom (ako je u pitanju defišrovanje). RC4
izlaz može biti korišten kao pseudo-slučajan broj generator za aplikacije koje zahtevaju
‘’kriptografske’’ (to je nepraktično) pseudo-slučajne brojeve.
RC4 algoritam – za koga se može reči da je samomenjajuća tabela – je elegantan,
jednostavan i efikasan u softveru. Međutim, postoji napad koji je izvodljiv protiv određenih
korištenja RC4 algoritma [80, 150, 255], ali ovaj napad je neizvodljiv ako jednostavno odbacimo
prvih 256 registarskih bajtova koji su generisani. Ovo može biti ostvareno dodavanjem posebnih
256 koraka u fazu inicijalizacije, gde svaki dodatni korak generiše – i odbacuje – registarske bajte
prateći algoritam u Tabeli 3.2.
RC4 se koristi za mnoge aplikacije, uključujući SSL. Međutim, algoritam je veoma star i
nije optimizovan za 32-bitne procesore (u stvari, optimizovan je stare 8-bitne procesore).
Poslednjih godina je učinjeno malo da bi se razvili nove sekvencijane šifre. U stvari, ‘’smrt
sekvencijanih šifri’’ je nedavno najavljena na glavnoj konferenciji ni manje ni više nego od samog
Shamira [53]. Iako ovo može biti kao malo omalovažavanje, jasno je da su blokovske šifre danas
dominantne.
Ponovljena blokovska šifra deli otvoreni tekst na fiksnu veličinu blokova i generiše fiksnu veličinu
blokova u šifratu. Otvoreni tekst je dobijen iz otvorenog teksta preko iteracijske funkcije F preko
nekog broja rundi. Funkcija F, koja zavisi od izlaza prethodne runde i ključ K, je poznata kao
funkcija runde, ne zbog svog oblika, nego zbog toga što je primenjena u svakoj rundi.
Ciljevi dizajna blokovskih šifri su sigurnost i efikasnost. Nije toliko teško razviti ili sigurnu
blokovsku šifru ili efikasan algoritam, ali je iznenađujuće teško razviti sigurnu blokovsku šifru
koja je visoko efikasna.
Festel šifra, dobila ime po jednom od osnivača blokovskih šifri Horst Festelu, je generalno
dizajniran šifarski princip, ne specifična šifra. Kod Festel šifre, otvoreni tekst je podeljen na levu i
desnu polovinu,
P=(L0,R0)
i za svaku rundu i = 1,2,...,n nova leva i desna polovina su izračunate na osnovu pravila,
Li = Ri−1 (3.1)
Ri = Li−1 ⊕ F(Ri−1,Ki ) (3.2)
gde je Ki podključ za rundu i. Podključ je dobijen iz ključa K na osnovu key schedule algoritma.
Na kraju, šifrat C je izlaz poslednje runde
C = (Ln,Rn).
Naravno, lepo je biti u mogućnosti i dešifrovati. Lepota Festel šifre jeste da mi možemo
dešifrovati bez obzira na pojedinačnu rundu funkcije F. Da bi to uradili, jednostavno rešimo
jednačine 3.1 i 3.2 za Ri-1 i Li-1 što nam dozvoljava da pokrenemo proces unazad. Za i=n, n-1,...1,
pravilo za dešifrovanje je
Ri−1 = Li
Li−1 = Ri ⊕ F(Ri−1,Ki )
je legitimna runda funkcije u kojoj možemo ’’šifrovati’’ i ’’dešifrovati’’sa tim F, ali šifra je
nesigurna. Jedna prednost Festel šifre jeste da sva pitanja o sigurnosti postaju pitanja o rundi
funkcije, tako da analiza može biti usmerena na F.
3.3.2 DES
Reći ću da, suprotno onome u šta većina ljudi veruje, da nema dokaza o tempering DES-a tako da
je osnovni dizajn bio oslabljen.
- Adi Shammir
Data Encryption Standard poznat kao DES – što se rimuje sa ''fez'' i ''pez'' – je razvijen 1970-ih
godina. Dizajn je baziran na Luciferovoj šifri, a Festel šifru je razvio IBM. DES je iznenađujuće
jednostavna blokovska šifra, ali priča o tome kako je od Luciferove šifre nastao DES je sve samo
ne jednostavna.
Do sredine 1970-ih, bilo je jasno čak i američkoj birokratskoj vladi da postoji legitimna
komercijalna potreba za sigurnom kriptografijom. U to vreme, kompjuterska revolucija je bila u
toku, i iznos i osetljivost digitalnih podataka je ubrzano rasla.
Sredinom 1970-ih, kriptografija je bila veoma malo poznati izvan vojnih i političkih
krugova, i oni nisu o tome govorili (i za večini slučajeva još uvek nisu). Ishod je bio da preduzeća
nisu imala način da postavljaju zakonska prava u vezi kriptografskog proizvoda i kvalitet većine
takvih proizvoda je bio loš.
U ovom okruženju Nacionalni biro za standarde (National Bureau of Standards) ili NBS
(sada poznat kao NIST) izdao je zahtev za predlog šifri. Pobednik je postao standard američke
vlade i skoro sigurno de facto industrijski standard. Veoma malo razumnih podnošenja su
primljene, i veoma brzo je postalo jasno da je IBM-ova Luciferova šifra jedini ozbiljan kandidat.
U ovom trenutku, NBS je imao problem. Bilo je veoma malo kriptografskih ekspertiza u
NBS-u, tako da su se okrenuli vladinim stručnjacima, super-sigurnoj Nacionalnoj sigurnosnoj
agenciji (National Security Agency) ili NSA. NSA je dizajnirala i stvarila kriptografije koje su se
koristile u američkoj vojsci i vladi za visoko osetljive informacije. NSA takođe sprovodi ''signalnu
inteligenciju,'' ili SIGINT, čiji su pokušaji sa zadobiju inteligentne informacije.
NSA se očigledno nerado umešala sa DES-om, ali na kraju su se složili da proučavaju
dizajn Luciferove šifre i ponude neka mišljenja. Ovo se desilo u tajnosti, a na kraju kada je
informacija ugledala svetlost dana [212] (a kako je to neizbežno u Americi) mnogi su bili sumljivi
da NSA stavila ''backdoor'' u DES tako da to samo može razbiti šifru. Dakako, SIGNIT misija u
NSA i generalna klima u vezi nepoverenja vladi proizvela je takve strahove. Ali 30 godina
intenzivnih kriptoanaliza nije otkrilo nijedan backdoor za DES. Ipak, ova sumlja je kvarila DES od
samog početka.
Lucifer je najzad postao DES, ali ne posle nekoliko veštih – i nekoliko ne baš veštih –
promena je učinjeno. Najočiglednija promena da je dužina ključa smanjena sa 128 bita na 64 bita.
Međutim, 8 od 64 bita ključa su odbačeni, pa je stvarna dužina ključa samo 56 bita. Kao rezultat
ovim promena, očekivani posao je zahtevao da se iscrpljujuća pretraga ključa smanji sa 2 177 na 255.
Po ovoj meri, DES je 272 lakši za razbiti od Lucifera! Razumljivo, sumlja je da je NSA imala ulogu
u ovom. Međutim, naknadne kriptoanalize DES algoritma su otkrili napad koji zahteva neznatno
malo posla od probavanja 255 ključeva. Kao rezultat, DES je verovatno jak sa ključem og 56 bita
kao što bi bio i sa dužim ključem.
Vešte promene Lucifera uključile su zamenu kutija (boxes) ili S-kutija, koje su dole
objašnjene. Ove promene su ustvari ispunile sumlju o backdoor. Ali je posle nekog vremena
postalo jasno, da je promena u S-kutije ustvari ojačala algoritam nudeći zaštitu protiv
kriptoanalitičkih tehnika koje nisu bile poznate (barem ne izvan NSA, i o tome se nije govorilo)
sve do unazad nekoliko godina. Činjenica je da kogod je modifikovao Lucifer algoritam (a to je
NSA) znali su čineći to da će značajno ojačati algoritam. Vidite [164, 212] za više informacija o
ulozi NSA u razvoju DES-a.
Da sumuramo.
DES je Festel šifra sa 16 rundi
DES ima ključ dužine 64 bita
DES koristi ključ od 56 bita
Svaka runda u DES-u koristi 48-bitni podključ i svaki podključ se sastoji od 48-
bitnog podseta od 56-bitnog ključa.
Svaka runda je relativno jednostavna – barem prema standardu o kreiranju blokovskih šifri. DES
S-kutije su jedna od najvažnijih sigurnosnih funkcija. Videćemo da su S-kutije zajednička funkcija
većini modernih blokovskih šifri. U DES-u, svaka S-kutija preslikava 6 bita u 4 bita, i DES koristi
osam S-kutija. S-kutije, zajedno preslikavaju 48 bita u 32 bita. Iste S-kutije su korištene za svaku
rundu u DES-u.
Pošto je DES Festel šifra, šifrovanje prati pravila prikazana u jednačini 3.1 i 3.2. Jedna
runda DES-a je predstavljena kao žičani dijagram na Slici 3.2, gde su brojevi broj bita koji prati
odgovarajuću ''žicu.''
U dijagramu na Slici 3.2 vidimo da DES funkcija runde F može biti napisana kao
Sa ovom funkcijom runde, vidi se da je DES Festel šifra kao što je definisano u jednačini 3.1 i 3.2.
Pošto je DES blok veličine 64 bita, svako Li i Ri je 32 bita. Kao što se traži u jednačini 3.1,
nova leva polovina je jednostavno stara desna polovina. Runda funkcije F je
DES ’’permutacija kutije’’ ili P-kutija, ne služi za svrhu sigurnosti, ali se njena prava svrha
izgubila tokom istorije. Jedano uverljivo objašnjenje jeste da su dizajneri želeli da učine DES
mnogo komplikovanijim tokom implementacije u softver dok je orginalni dizajn zvan za specijalni
hardver. To je očigledno bila nada da DES može ostati algoritam samo za hardver. U stvari,
S-kutije su orginalno bile klasifikovane, tako da pristup samo hardver je podrazumevao da on
ostane tajna. Predvidljivo, DES S-kutije su postale javno poznate skoro odmah.
Samo da se zna, P-kutija permutacija je
15 6 19 20 28 11 27 16 0 14 22 25 4 17 30 9
1 7 23 13 31 26 2 8 18 12 29 5 21 10 3 24.
Jedini značajan deo DES-a koji nam je ostao jeste stvaranje podključa ili algoritam
rasporeda ključa. Ovo je donekle uvrnut proces, ali konačni rezultat je jednostavno da je 48 od 56
bita ključa izabrano za svaku rundu. Međutim, detalji su sigurnosno-kritični, jer postoje napadi
algoritma rasporeda ključa na blokovske šifre.
Kao i obično, mi ćemo izbrojati 56-bitni DES ključ s leva na desno, počinjući od 0. prvo
ćemo izvući 28 bitova iz DES ključa, permutovati ih, i nazvati rezultat LK. Biti DES ključa od LK
su sledeći biti orginalnog ključa
49 42 35 28 21 14 7
0 50 43 36 29 22 15
8 1 51 44 37 30 23
16 9 2 52 45 38 31
Isto tako, preostalih 28 bita od DES ključa su poznati kao RK, i oni su
55 48 41 34 27 20 13
6 54 47 40 33 26 19
12 5 53 46 39 32 25
18 11 4 24 17 10 3
Pre nego što možemo opisati algoritam rasporeda ključeva, potrebno nam je još nekoliko
stavki. Definisati permutaciju LP kao
13 16 10 23 0 4 2 27 14 5 20 9
22 18 11 3 25 7 15 6 26 19 12 1
I permutaciju RP kao
12 23 2 8 18 26 1 11 22 16 4 19
15 20 10 27 5 24 17 13 21 7 0 3
Na kraju, definisati
DES algoritam rasporeda ključeva za generisanje 48-bitnog podključa Ki za rundu i može sad biti
opisan kao u Tabeli 3.3.
Za potpunost, postoje dve druge funkcije DES-a koje moraju biti spomenute. Početna
permutacija je primljena u otvoreni tekst pre runde jedan, a njena obrnuta permutacija je primljena
posle poslednje runde. Takođe, tokom šifrovanja, polovine su zamenjene(swapped) nakon
poslednje runde, pa je pravi šifrat (R16, L16) umesto (L16, R16). Ništa od ovoga ne služi za
poboljšanje sigurnosti, i ignorisaćemo ih u sledećim diskusijama.
Nekoliko reči o sigurnosti DES-a mogu biti korisne. Prvo, matematičari su veoma dobri u
rešavanju linearnih jednačina, i jedini deo kod DES-a koji nije linearan su S-kutije. Kao rezultat,
S-kutije su presudne za sigurnos DES-a. U stvari, proširenost permutacija ima važnu ulogu, ali
nista manju ne igra ni raspored ključeva. Sve ovo će postati mnogo jasnije posle diskusije o
linernim i diferencijalnim kriptoanalizama i kasnijem poglavlju. Za više detalja u vezi dizajan
DES- vidite [203].
Uprkos zabrinutosti u vezi dizajna DES-a – posebno uloge NSA-a u celom procesu – DES
je očito opstao kroz vreme [141]. Danas, DES je veoma jednostavan zbog veoma malog ključa, a
ne zbog kratkih napada vrednih pažnje. Iako su neki napadi razvijeni, da u teoriji, zahtevaju
neznatno malo posla u odnosu na iscrpljujuću pretragu ključeva, DES krekeri su u praksi danas
razvili jednostavne pokušaje svih ključeva dok ne pronađu pravi. Neizbežan zaključak jeste da su
DES dizajneri znali šta rade.
Imaćemo više toga reći o DES-u kada budemo govorili o naprednoj kriptoanalizi u
sledećem poglavlju. U stvari, DES je bio poticaj za mnoga skorija zbivanja na polju kriptoanalize.
Dalje, ćemo objasniti trostruki DES, koji je korišten za efikasno proširenje dužine ključa
kod DES-a. Ovaj kratak pregled ćemo upotpuniti sa još nekoliko blokovskih šifri. A onda ćemo
detaljnije govoriti o jednoj veoma jednostavnoj blokovskoj šifri.
Pre nego što nastavimo da govorimo o drugim šiframa, moramo prvo da govorimo o popularnoj
varijanti DES-a poznatoj kao trostruki DES ili 3DES. Ali pre toga, potrebno nam je označavanje.
Neka P bude blok otvorenog teksta, K je ključ, C je odgovarajući blok šifrata. Za DES, C i P su po
64 bita, dok je K 56 bita. Obilježavanje koje ćemo prihvatiti za šifrovanje otvorenog teksta P sa
ključem K je
C = E(P,K)
A za dešifrovanje je
P = D(C,K).
DES je skoro sveprisutan, ali njegova dužina ključa je danas nedovoljna. To bi značilo da bi
pametan način za korištenje DES-a bilo da se poveća dužina ključa. Intuitivno, to bi značilo da je
dvostruki DES dovoljan,
C = E(E(P,K1),K2). (3.4)
Ovo bi nudilo pogodnosti ključa od 112 bita, ali jedina mana bi bila gubitak efikasnoti u vezi sa
dve DES operacije.
Međutim, postoji napad na dvostruki DES koji ga čini više-manje sličnim običnom DES-u.
Iako je ovaj napad nepraktičan, veoma je blizu da postane praktičan što je i uzrok zabrinutosti.
Ovo je napad izabranog otvorenog teksta. Mi odaberemo određeni otvoreni tekst P i dobijemo
odgovarajući šifrat C. Naš cilj je pronaći ključ K1 i K2 u jednačini 3.4. Prvo preračunamo tabelu
veličine 256 koja sadrži parove E(P,K) i ključ za sve moguće vrednosti ključa K. Sortiramo ovu
tabelu na vrednosti E(P,K). Sada na osnovu ove tabele i vrednosti šifarskog teksta C odgvarajućeg
za izabrano P, mi dešifrujemo C sa ključem K˜ dok ne nađemo vrednosti D(C, K˜) koji je u
tabeli. Vrednost koju nađemo u tabeli će biti E(P,K) za neko K i mi imao
D(C, K˜ ) = E(P,K)
gde su K˜ i K poznati. Da smo otkrili 112-bitni ključ znači da smo obe strane šifrovali sa K˜, što
daje
C = E(E(P,K), K˜ ),
C = E(E(E(P,K1),K2),K3)
ali to nije način na koji se to radi. Umesto toga, trostruki DES se definiše kao
C = E(D(E(P,K1),K2),K1).
C = E(D(E(P,K),K),K) = E(P,K).
Trostruki DES je danas mnogo popularan. Ali sa razvojem Advanced Encryption Standard-a,
trostruki DES će se za nekoliko godina prestati koristiti.
3.3.4 AES
Tokom 1990-ih bilo je jasno svima pa i američkoj vladi da je DES nadživeo svoju korisnost.
Presudan problem sa DES-om jeste da dužina ključa od 56 bita osetljiva na isrpljujuću pretragu
ključa. Posebnu ulogu DES krekera koji su uspeli da naprave da mogu da otkriju DES ključeve za
nekoliko sati, i uznemirujući napadi koristeći dobrovoljne računare na internetu uspeli su da
pronađu DES ključeve [70].
Početkom 1990-ih National Institute of Standards and Technology (NIST), koji je danas
otelovljenje NBS-a, izdao je poziva za kripto predlog za Advanced Encryption Standard ili AES.
Ali ne tako kvalitetne kao pre dvadest godina kada je NIST dao veoma kvalitetne predloge. Polje
se svelo na pregršt finalista, i algoritam poznat pod nazivom Rijndael (izgovara se nešto slično kao
Rain deal) je odmah izabran. Vidite [140] za više informacija o konkurenciji AES-a i [54] za
detalje u vezi Rijndael algoritma.
AES konkurencija je vođena na potpuno otvoren način i za razliku od DES konkurencije,
NSA je otvoreno umešana kao jedan od sudija. Kao rezultat, ne postoje verodostojini dokazi da su
neke tajnosti bile umešane u AES. AES je visoko rangiran u kriptografskoj zajednici. Shamir je
izjavio da će AES sa ključem od 256 bita biti ’’siguran zauvek’’, bez obzira na predstojeće
napretke u računarskoj tehnologiji [52].
Kao DES, AES je iterativna blokovska šifra. Ali za razliku od DES-a AES algoritam nije
Festel šifra. Ovo podrazumeva da, u načinu dešifrovanja, AES operacije moraju biti povratne.
Takođe za razliku od DES-a, AES algoritam je visoka matematička struktura. Mi ćemo dati samo
kratak osvrt na algoritam – veliki količina informacija o svim aspektima AES-a je dostupna za
čitanje. Nijedan algoritam u istoriji nije primio više ispitivanja u kratkom periodu kao što je AES.
Vidite [5, 187] za više informacija o Rijndael algoritmu.
Neki od osnovnih podataka o AES-u su
Dužina blokova je: 128, 192 i 256 bitova.
Dužina ključeva (u zavisnosti od odabrane dužine bloka) je: 128, 192 ili 256 bita.
Broj rundi varira od 10 do 14, u zavisnosti od dužine ključa.
Svaka runda se sastoji od četiri funkcije, koje su u tri ’’sloja.’’ Funkcije su:
ByteSub (nelinearni sloj)
ShiftRow (sloj linearnog mešanja)
MixColumn (nelinearan sloj)
AddRoundKey (dodatni sloj ključa)
Uzimajući u obzir 192-bitnu dužinu bloka, AES tretira podatke kao 4 x 6 bajtni niz.
Operacija ByteSub je primenjena u svakom bajtu aij, a to je bij = ByteSub(aij). Rezultat niza bij je
predstavljen ispod:
ByteSub je AES-ova S-kutija, i može se posmatrati kao nelinearna – ali invertibilna – kompozicija
dve matematičke funkcije ili se može jednostavno posmatrati kao lookup tabela. Kasnije ćemo dati
njen pregled. ByteSub lookup tabela je prikazana u Tabeli 3.4. Na primer, ByteSub(3c)=eb pošto
se eb pojavljuje u redu 3 i koloni c u tabeli 3.4.
ShiftRow operacija je jednostavno ciklično pomeranje bajtova u svakom redu 4 x 6
bajtnom nizu. Ta operacija je predstavljena
I to znači da se prvi red ne pomera, drugi red se pomera za pet bajtova udesno, treći red za 4 bajta i
poslednji red za 3 bajta. Primetite da je ShiftRow invertan pomeranjem u suprotnu stranu.
Tabla 3.4. AES ByteSub
Ignorisaćemo AES raspored ključa, ali je važan deo sigurnosti algoritma. Na kraju, kao što smo
napomenuli gore, svaka od četiri funkcije ByteSub,ShiftRow, MixColumn i AddRoundKey su
invertibilne. Kao rezultat, čitav rezultat je invertibilan i na osnovu toga AES može dešifrovati kao
što može šifrovati.
3.3.5 Još tri blokovske šifre
U ovom delu, kratko ćemo obraditi tri blokovska algoritma, International Data Encryption
Algorithm (IDEA), Blowfish, i RC6. Svaka od njih ima neke novitete u svom dizajnu. U sledećem
delu, govorićemo o Tiny Encryption Algorithm, or TEA [246].
IDEA je delo James L. Massey, jednog od najvećih kriptografa modernog vremena.
Najsavremenija odlika IDEA je to što koristi miksovanju modularnu aritmetiku. Algoritam
kombinuje sabiranje modula 2 (XORovanje) sa sabiranjem modula 2 16 i Lai-Massey
multiplikaciju, koja je skoro 216 multiplikacija. Ove operacije zajedno proizvode potrebnu
nelinearnost i kao rezultat neeksplicitna S-kutija je potrebna. Massey je prvi koji je koristio ovaj
pristup, i taj pristup se danas veoma koristi. Vidite [156] za više detalja o IDEA dizajnu.
Blowfish je Bruce Schneierov omiljeni algoritam, jer ga je on izumeo. Scheier je poznat
kriptograf i dobar pisac o svim stvarima koje se tiču sigurnosti. Interesantna stvar kod Blowfisha
jeste ta što njegova upotreba zavisnosti ključa od S-kutija. Umesto da ime fiksne S-kutije Blowfish
generiše S-kutije bazirane na ključu. To može biti prikazano da su tipične Blowfish S-kutije
sigurne. Vidite [202] za više informacija o Blowfish-u.
RC6 je delo Ron Rivest-a, čija su kriptografska dostignuća zaista velika, uključujući sistem javnih
ključeva RSA i prethodno spomenuta RC4 sekvencijalna šifra, kao i jedna od najpoznatijih heš
funkcije MD5. Neobičan aspekt RC6 je to što koristi rotacije zavisne od podataka [188]. Veoma je
neobično da se oslanja na podatke kao na jedan od neophodnih delova operacije u kripto
algoritmu. RC6 je bio jedan od AES finalista, dok nije na kraju izgibio.
Ove tri šifre daju neke od mnogih varijacija korištenih kod pitanja za idelan balans između
sigurnosti i performansi u dizajnu blokovskih šifri. U sledećem poglavlju govorićemo o linernim i
diferencijanim kriptoanalizama, koje čini razmenu nerazdvojivom u dizajnu blokovskih šifri
jasnijom.
3.3.6 TEA
Poslednja blokovska šifra o kojoj ćemo govoriti je Tiny Encryption Algorithm ili TEA. Dijagrami
o kojima smo prethodno govorili upućuju na to da su blokovske šifre potrebno kompleksne. TEA
veoma lepo ilustruje da ona nije kompleksna.
TEA koristi blok dužine 64 bita i ključ dužine 128 bita. Algoritam podrazumeva artmetiku
sa 32 bitne reči, tako da sve matematičke operacije koriste moduo 2 32. Broj rundi varira ali mora
biti relativno veći upoređujući sa prethodnim blokovskim šiframa koje smo videli (32 runde se
smatraju sigurnim).
U dizajnu blokovskih šifri, postoji razmena između kompleksnosti svake runde i potrebnog
broja rundi. Šifre kao što je DES pokušavaju sa smanje balans između ovog dvoga, dok AES
redukuje broj rundi ali ima mnogo kompleksniju funkciju runde. TEA, sa jedne strane, koristi
veoma jednostavnu funkciju runde; međutim, kao posledica, broj rundi mora biti veliki da bi
postigao visoj nivo sigurnosti. Pseudo kod za TEA šifrovanje – ako su korištene 32 runde - se
pojavljuje u Tabeli 3.5, gde je ''<<'' je levo pomeranje i ''>>'' desno pomeranje.
Jedna stvar koju treba primetiti kod TEA jeste da ona nije Festel šifra, tako da treba da
razdvojimo rutine šifrovanja i dešifrovanja. Ali TEA je ''skoro'' Festel šifra ali ona koristi sabiranje
i oduzimanje umesto XORovanja. Međutim, potreba za razdvajanje rutina šifrovanja i dešifrovanja
je najmanji problem kod TEA, jer se koristi veoma malo koda.
Algoritam je takođe veoma efikasan, iako sadrži veliki broj rundi. TEA algoritam za dešifrovanje
sa 32 runde prikazan je u Tabeli 3.6
Postoji nejasan napad ''povezan ključ'' [123]. Ako kriptoanalitičar zna da su dve poruke šifrovane
ključevima koji su povezani na poseban način, onda otvoreni tekst može biti otkriven. Ovo je
napad veoma niske verovatnoće koji se u većini slučajeva može ignorisati. Ali postoji malo
kompleksnija varijanta TEA ili XTEA [165]. koja odoleva ovom problemu. Postoji i
pojednostavljena verzija TEA, poznata kao STEA, koja je veoma slaba, ali omogućava da se
ilustruju određeni tipovi napada [160].
Korišćenje sekvencijalnih šifri je jednostavno – vi generišete ključ koji je iste dužine kao otvoreni
tekst i XORujete. Korišćenje blokovskih šifri je takođe jednostavno, dokle god imate samo jedan
blok da šifrujete. Ali kako se mogu višestruki blokovi šifrovati? I kako parcijalni blokovi mogu
biti šifrovani? Odgovori nisu jednostavni kao što se čini?
Pretpostavimo da imamo višestruke otvorene blokove
Za fiksan ključ K, blokovska šifra je kodna knjiga, dokle god kreira fiksno preslikavanje između
otvorenog teksta i blokova šifrata. Prateći ideju kodne knjige, obavezna stvar koju treba uraditi
jeste koristiti blokovsku šifru u takozvanoj elekotronskoj kodnoj knjizi ili ECB režimu. U ECB
režimu mi šifrujemo koristeći formulu
Ci = E(Pi,K) for i = 0, 1, 2, . . .
Mi možemo dešifrovati na osnovu formule
Pi = D(Ci,K) for i = 0, 1, 2, . . .
Ovaj pristup funkcioniše, ali postoji nekoliko problema u vezi sigurnosti sa ECB režimom.
Pretpostavimo da je ECB režim korišten, napadač zapazi da je C i=Cj. Onda napadač zna da
je Pi=Pj. Iako se ovo može smatrati bezazlenim, postoji slučajeva gde napadač zna deo otvorenog
teksta i svako podudaranje da poznatim blokom otkriva novi blok. Ali i da napadač ne zna P i ili Pj
neke informacije su otkrivene, naime da su ova dva bloka otvorenog teksta ista, a mi ne želimo da
damo kriptoanalitičaru nešto slobodno – pogotovo ako postoji razuman način da se to izbegne.
Massey [151] daje dramatičnu ilustraciju slabosti ECB režima, na osnovu primera Alisine
slike koja pored orginalne slike ima sliku šifrovanu u ECB režimu. Dajemo primer na Slici 3.3,
koji nam prikazuje nekompresovanu sliku Alise, pored slike koja je šifrovana u ECB režimu. Dok
je svaki blok na desnoj slici šifrovan, blokovi koji su isti na orginalnoj slici su isti su isti i u ECB
verziji slike. U ovom slučaju, nije teško za Trudi da pogodi otvoreni tekst iz šifrata.
Na sreću, postoji nekoliko rešenja za slabosti ECB režima. Mi ćemo govoriti o
najakorišćenijem metodu menjanja šifarskih blokova, ili CBC režimu. U CBC režimu, šifrat iz
bloka je korišten za nepoznat otvoreni tekst sledećeg bloka, pre nego što je šifrovan. Formula za
šifrovanje u CBC režimu je
Prvi blok zahteva poseban način vođenja pošto nema šifarskog bloka Ci-1. Inicijalizacioni vektor ili
IV se koristi da zauzme mesto C i-1. Pošto šifrat nije tajan i pošto IV igra ulogu bloka šifrata ni on
takođe ne treba da bude tajan. Ali IV mora biti nasumično selektovan. Koristeći IV prvi blok je
šifrovan na sledeći način
Co = E(P0 ⊕ IV,K)
Sa formulom iz jednačine 3.5. korištenom za preostale blokove. Prvi blok je dešifrovan kao
P0 = D(C0,K) ⊕ IV
Sa formulom iz jednačine 3.6. korištenom da dešifruje preostale blokove. Pošto IV nije tajan,
obično se nasumično generiše i šalje kao prvi ’’šifat’’ bloka. Primalac mora znati da prvi blok
treba trtirati kao IV.
Prednost CBC režima jeste da identičan otvoreni tekst neće rezultirati identičnim šifratom.
Ovo je predstavljeno ilustrujući Alisinu sliku šifrovanu koristeći ECB režim prikazanu na Slici 3.3
sa Alisinom slikom šifrovanom šifrovanom u CBC režimu, koja se pojavljuje na Slici 3.4.
Moguća briga sa CBC režimom jeste moguća pojava grešaka. Kada je šifrat poslat, mogu se
dogoditi kvarovi, 0 može postati 1 ili obrnuto. Ako jedna prenesena greška učini otvoreni tekst
nepopravljivim, onda je CBC režim beskoristan u mnogim aplikacijama. Na sreću, ovo nije taj
slučaj.
Slika 3.4 Alisa daje prednost CBC režimu
ali
I svi sledći blokovi su šifrovani pravilno. Činjenica da se dogodi greška jednog bita dva čitava
bloka tada su kvarna i to može prouzrokovati ozbiljne brige u okruženju sa visokom mogućnošću
grešaka kao što je wireless.
Sekvencijalne šifre nemaju ovaj problem – jedan pokvaren bit šifrata rezultira jednim pokvarenim
bitom u otvorenom tekstu i to je razlog zašto se sekvencijane šifre koriste kod wireless aplikacija.
Još jedna briga kod blokovskih šifri je cut-paste napad. Pretpostavimo da tekst
Money_for_Alice_is_$1000
Money_for_Trudy_is_$2___
gde je ’’ _’’ prazno mesto, šifrovano sa blokovskim šiframa koje imaju 64-bitnu veličinu bloka.
Pretpostavimo da svaki karakter zahteva 8 bita blokovi otvorenog teksta su
P0 = Money_fo
P1 = r_Alice_
P2 = is_$1000
P3 = Money_fo
P4 = r_Trudy_
P5 = is_$2___
Pretpostavimo da je ovo šifrovano u ECB režimu. Onda su blokovi šifrata izračunati kao Ci =
E(Pi,K) for i = 0, 1, . . . , 5. Sada pretpostavimo da Trudi zna da je korišten ECB režim, ona zna
generalnu strukturu otvorenog teksta i zna da će ona primiti $2, ali ne zna koliko će Alisa primiti –
ali ona pretpostavlja da je više od njena $2. ako Trudi može reorganizovati šifarske blokove u
C0,C1,C5,C3,C4,C2 (3.7)
Money_for_Alice_is_$2___
Money_for_Trudy_is_$1000
Ci = Pi ⊕ E(IV + i,K)
a za dešifrovanje
Pi = Ci ⊕ E(IV + i,K).
CTR režim se često koristi kada je potreban nasumičan pristup. Međutim, nasumičan pristup je
takođe unapređen sa CBC režimom. Postoji još mnogo režima blokovkih šifri; vidite [203] za opis
još nekoliko režima koji se najčešće koriste.
3.4 INTEGRITET
MAC i otvoreni tekst su poslati primaocu koji ponavlja proces i upoređuje izračunati ’’MAC’’ sa
primljenim MAC-om. Ako postoji razlika, primalac zna da je podatak (ili MAC) promenjen;
međutim, ako nema razlike onda je podatak skoro sigurno ispravan. Primetite da u CBC režimu
pošiljalac i primalac moraju deliti simetrični ključ K i IV koji nije tajan.
Zašto MAC radi? Neka Alisa pošalje P0, P1, P2, P3 Bobu, zajedno sa MAC-om. Ako
Trudi promeni blok otvorenog teksta P1 u recimo, Q tokom prenosa, onda kada Bob pokuša da
verifikuje MAC on računa
Svaka promena u bloku otvorenog teksta širi se kroz sledće blokove do izračunatog MAC-a.
Setite se da sa CBC šifrovanjem, promena u bloku šifrata se manifestuje samo na dva bloka
otvorenog teksta. U suprotnom, primer iznad pokazuje da svaka promena u otvorenom tekstu se
manifestuje na sve sledeće blokove u CBC šifrovanju. Ovo je kritično područje koje ne dozvoljava
MAC-u da se brine za integritet.
Često su potrebni i poverljivost i integritet. U tom slučaju, za efikasnost bi bilo korisno da
se postigne oboje sa jednim CBC ’’šifrovanjem’’ podatka. Međutim, ako CBC šifruje podatak i
pošalje rezultirajući šifrat i izračunati MAC, mi možemo jednostavno da ponovimo dvaput finalni
blok šifrata. Nažalost, nema jasnog načina da se obuhvate i poverljivost i integritet tokom jednog
šifrovanja podatka. Ova tema je detaljnije objašnjena na kraju ovog poglavlja.
Računanje MAC-a baziranom na CBC režimu nije jedini način da bi se obezbedio integritet
podataka. Hešovani MAC, ili HMAC je jedan standardni pristup integritetu. O HMAC- u ćemo
govoriti u Poglavlju 5.
3.5 UKRATKO
U ovom poglavlju smo govorili o kriptografiji simetričnih ključeva. Postoje dva različita tipa
simetričnih šifri: sekvencijalne šifre i blokovske šifre. Ukratko smo govorili o dve sekvencijane
šifre A5/1 i RC4. One time pad je sekvencijalna šifra, verovatno jedina sigurna šifra.
Blokovske šifre, sa druge strane, mogu se smatrati kao ’’elektronski’’ jedne kodoj knjizi.
Govorili smo o detaljno DES blokovskoj šifri i spomenuli smo ukratko nekoliko drugih
blokovskih šifri. Takođe smo pokazali da blokovske šifre mogu biti korištene za integritet
podataka.
Simetrična kriptografija se koristi za poverljivost podataka. Postoji dva različita oblika
poverljivosti. Sa jedne strane, mi možemo šifrovati podatak i poslati ka kroz nesiguran kanal. Sa
druge strane, mi možemo šifrovati podatak koji je smešten na nesigurnom mediju, kao što je
računarski disk. Simetrična kriptografija, korišćenjem MAC-a može biti korištena da osigura
integritet.
Simetrične šifre su takođe korisne kod autentifikacionih protokola, što ćemo pokazati u
sledećem poglavlju. Interesantno je primetiti da sekvencijalne šifre, blokovske šifre i heš funkcije
su iste u smislu da šta možete da radite sa jednom, možete i sa ostale dve. Iz tog razloga, na sva tri
se često odnosi kao na kriptografske ’’primitivce.’’
Kriptografija simetričnih ključeva je jedna ogromna oblast. Mi ćemo ovde govoriti samo
ukratko, međutim, ali sa onim što smo obradili u ovom poglavlju, spremni smo da se dotaknemo
problema koje ćemo obrađivati u poglavljima koji slede.
Da bi zaista razumeli dizajn blokovskih šifri, potrebno je da se još više udubimo u polje
kriptoanalize. Poglavlje 6 koje se bavi naprednom kriptoanalizom, se preporučuje svakome ko želi
što više da sazna o principima dizajna blokovskih šifri.
3.6 PROBLEMI
1. Neka K = (k0 k1 k2 ... k55) bude 56-bitni DES ključ. Lista 48-bitnih sa svaki DES podključ
K1 K2, ... K16. Napravite tabelu koja se sastoji od broja podključeva u kojem svaki bit k i je
korišten. Možete li dizajnirati DES algoritam tabelu ključa u kojem svaki bit ključ korišten
jednak broj puta?
2. Implementirajte TEA i koristite ga da šifrujete 64-bitni blok
0x0123456789ABCDEF
Dešifrujte rezultirajući šifrat da biste dobili orginalni otvoreni tekst. Onda šifrujte i
dešifrujte poruku
Four score and seven years ago our fathers brought forth on this continent, a new
nation, conceived in Liberty, and dedicated to the proposition that all men are
created equal
koristeći sledeća tri različita režima: ECB, CBC i CTR režim. U svakom slučaju, koristite
ključ koji je dat gore.
3. Nacrtajete dijagram da biste ilustrovali šifrovanje i dešifrovanje u CBC režimu.
4. Formula za režim brojača je
Ci = Pi ⊕ E(IV + i,K).
Pretpostavimo da umesto te formule koristite formulu
Ci = Pi ⊕ E(K, IV + i).
Da li je ovo sigurno? Ako jeste, zašto? Ako nije, objasnite napad?
5. AES se sastoji od 4 funkcije u tri sloja. Koje od voh funkcija su primarno za konfuziju, a
koje su primarno za difuziju? Koji od ovih slojeva su za konfuziju, a koji su za difiziju?
Pojasnite svoj odgovor?
6. Implementirajte RC4 algoritam. Neka se ključ sastoji od sledećih sedam bajtova:
ključ = (0x1A, 0x2B, 0x3C, 0x4D, 0x5E, 0x6F, 0x77).
Prikažite listu permutacija S posle faze inicijalizacije. Prikažite listu permutacija S posle
generisanja 100 bajtova ključa. Prikažite listu permutacija S posle generisanja 1000
bajtova.
7. Za bite x,y i z funkcija maj(x,y,z) je ’’majority vote’’ funkcija, a to znači da ako dva ili
više od tri bita 0, onda funkcija vraća 0, u suprotnom, vraća 1. Napišite tabelu za ovu
funkciju i izvedite bulean funkcije koje su ekvivalentne maj(x,y,z).
8. Implenetirajte A5/1 alogoritam. Neka je posle određenog koraka vrednost registara
X = (x0, x1, . . . , x18) = (1010101010101010101)
Y = (y0, y1, . . . , y21) = (1100110011001100110011)
Z = (z0, z1, . . . , z22) = (11100001111000011110000)
Generišite i ispišite sledeća 32 bita ključa. Ispišite sastav X, Y i Z nakon što su 32 bita
ključa generisana.
9. Šta je Festel šifra? Zašto Tiny Encryption Algorithm ili TEA nije Festel šifra? Zašto je
TEA ’’skoro’’ Festel šifra?
10. Pretpostavimo da koristimo blokovsku šifru da šifrujemo na osnovu pravila
C0 = IV ⊕ E(P0,K), C1 = C0 ⊕ E(P1,K), C2 = C1 ⊕ E(P2,K), . . .
Koje je odgovarajuće pravilo za dešifrovanje? Dajte neke mane sigurnosti ovog režima u
odnosu na CBC režim?
11. Sekvencijalne šifre se smatraju kao generalizacija one-time pada. Setite se da je one-time
pad verovatno siguran. Zašto ne možemo dokazati da je sekvencijana šifra sigurna koristeći
isti algument koji koristimo kod one-time pada?
12. Kod svake sekvencijalne šifre moramo ključ nakon nekog vremena ponavljati?
13. Kod DES-a koliko je bita u ključu, koliko je bita u bloku otvorenog teksta, koliko je bita u
svakom podključu, koliko ima rundi, i koliko ima S-kutija?
14. DES menja izlaz krajnje runde, a to znači da šifrat nije C=(L16,R16), ali jeste C=(R16, L16).
Koja je svrha zamene? Zamena ne služi za svrhu sigurnosti.
15. Setite se napada na dvostuki DES o kome smo govorili. Pretpostavimo da definišemo
dvostuki DES kao C = D(E(P,K1),K2). Opišite ’’meet-in-middle’’ napad na ovu verziju
napada na dvostruki DES?
16. IV nije tajan, ali da li treba da bude slučajno izabran? Da li postoje neke sigurnosne mane
ili (prednosti) ako je IV izabran namerno umesto da je generisan slučajno?
17. Pretpostavimo da blokovi šifrata
C0,C1,C2, . . . ,C9
Su šifrovani u CBC režimu. Pokažite da li je moguć cut-paste napad, odnosno pokažite da
li je moguće reporganizovati blokove tako da se neki od blokova dešifruju pravilno, iako
nisu u pravom redu?
18. Objasnite kako uraditi slučajni pristup podatku koristeći CBC režim. Šta je mana korištenja
CBC režima za slučajni pristup u odnosu na CTR režim.
19. CTR režim generiše ključ koristeći blokovsku šifru. Dajte drugi metod za korištenje
blokovske šifre kao sekvencijalne šifre. Da li vaš metod podržava slučajni pristup?
20. Pretpostavimo da šifrujemo u CBC režimu koristeći ključ K i računamo MAC koristeći
ključ K ⊕ X, gde je X poznato kao konstanta. Šifrat i MAC su poslati primaocu. Pokažite
da li će primalac otkriti cut-paste napad.
21. Pretpostavimo da definišemo trostruku DES sa 168 bitnim ključem C = E(E(E(P,K1),K2),
K3). Podrazumevajući da mi možemo izračunati i smestiti tabelu veličine 256, pokažite da
ova verzija trostrukog DES-a nije sigurnija od običnog 3DES, C=E(D(E(P,K1),K2),K1).
22. Dajte dvs načina za šifrovanje parcijalnog bloka koristeći blokovsku šifru. Vaš prvi metod
može rezultirati šifratom koji je veličine kompletnog bloka, dok vaš drugi metod ne može
proširiti podatak. Diskutujte o nekim sigurnosnim mogućnostima vaša dva metoda.
23. Razmotrite Festel šifru sa četiri runde i P = (L0,R0). Šta je šifrat C ako je šifra funkcije
a. F(Ri−1,Ki ) = 0.
b. F(Ri−1,Ki ) = Ri−1.
c. F(Ri−1,Ki ) = Ki .
d. F(Ri−1,Ki ) = Ri−1 ⊕ Ki .
24. Neka je X podatak. Definišite F(X) da bude MAC kada X je CBC šifrovano sa ključem K i
datim IV. Da li je F jednosmerna, odnosno dato F(X) da li je moguće pronaći X? Da li je F
otporan na kolizije, tj. Dato F(X) da li je moguće pronaći Y da je F(Y) = F(X)?
25. Pretpostavimo da je šifrat u jednačini 3.7 šifrovan u CBC režimu umesto u ECB režimu.
Ako Trudi veruje da je korišten ECB režim i pokuša isti cut-paste napad, koji se blok
dešifruje ispravno?
26. Preuzmite fajl Alice.bmp sa web stranice i iskoristite TEA šifru da ECB šifrujete sliku,
ostavljajući prvih 10 blokova nešifrovane. Vidite šifrovanu sliku? Šta će se desiti da ste to
isto pokušali sa JPG fajlom?
27. Pretpostavimo da Alisa i Bob uvek biraju isti IV.
a) Diskutujte o jednom sigurnosnom problemu koje ovo krira ako je korišten CBC
režim.
b) Diskutujte o jednom sigurnosnom problemu koje ovo krira ako je korišten CTR
režim.
c) Ako se uvek koristi isti IV, koji je režim sigurniji, CBC ili CTR?
28. Pretpostavimo da Alisa i Bob uvek koriste CBC režim za šifrovanje i iniceijalizacione
vektore sekvencijalno. Koje su prednosti i mane ovog pristupa koristeći slučajni IV?
29. Dajte dijagram analogno Slici 3.2 za TEA šifru.
30. Neka Alisa koristi DES da izračuna MAC. Ona onda šalje otvoreni tekst i odgovarajući
MAC Bobu. Ako Trudi izmeni jedan blok otvorenog teksta pre nego što ga Bob primi, koja
je verovatnoća da Bob ne primeti promenu?
31. Alisa ima četiri bloka otvorenog teksta P0, P1, P3, P3, koje one šifruje koristeći CBC režim
da dobije C0, C1, C2, C3. Ona onda šalje IV i šifrat Bobu. Kada primi šifrat Bob planira da
verifikuje integritet kako sledi. Prvo će dešifrovati da bi dobio otvoreni tekst, a onda će
ponovo šifrovati ovaj otvoreni tekst koristeći CBC režim i dobijeni IV. Ako on dobije isti
C3 kao rezultirajući šifarski blok, on će utvrditi integritet otvorenog teksta.
a) Neka Trudi izmeni C1 u slučajnu vrednost X (ostavljajući sve ostale blokove i IV
nepromenjene). Da li će Bob primetiti promene?
b) Neka Trudi promeni C3 u slučajnu vrednost Y (ostavljajući sve ostale blokove i IV
nepromenjene). Da li će Bob primetiti promene?
c) Da li je Bobov metod za proveru integriteta siguran?
32. Koristeći CBC režim, Alisa šifruje četiri bloka otvorenog teksta P0, P1, P3, P3 i šalje
rezultirajuće blokove šifrata C0, C1, C3, C3 i IV Bobu. Pretpostavimo da je Trudi u
mogućnosti da promeni bilo koji od blokova šifrata pre nego što ga Bob primi. Ako Trudi
zna P1, pokažite da ona može ’’zameniti’’ P1 sa X, odnosno da kada Bob dešifruje C1
dobije X umesto P1.
33. Pretpostavimo da Alisa ima četiri bloka otvorenog teksta P0, P1, P3, P3. Ona računa MAC
koristeći ključ K1 i onda ona CBC šifruje podatak koristeći ključ K2 da dobije C0, C1, C2, C3
i MAC. Međutim, Trudi presretne poruku i zameni C1 sa X tako da Bob primi IV, C0, X,
C2, C3 i MAC. Bob pokušava da verifikuje integritet podatka tako što dešifruje (koristeći
ključ K2) i onda računa MAC (koristeći K1) na otvoreni tekst.
a) Pokažite da će Bob otkriti Trudinu nameru
b) Pretpostavimo da Alisa i Bob samo dele jedan simetrični ključ K. Oni se slažu da je
K1=K i K2= K ⊕ Y, gde je Y poznato Alisi, Bobu i Trudi. Da li ovo stvara neki
sigurnosni problem?
4
KRIPTOGRAFIJA
JAVNIH KLJUČEVA
Ne možeš živeti na jadan način u privatnosti, drugi u javnosti.
- Publilius Syrius
Troje može čuvati tajnu, ako su dvoje od njih mrtvi.
- Ben Franklin
4.1 UVOD
U ovom poglavlju, govorićemo o kriptografiji javnih ključeva. Kriptografija javnih ključeva je
takođe poznata i ako ’’asimetrična’’ kriptografija, kriptografija ’’dva ključa’’ ili čak kriptografija
’’javnog ključa’’, ali mi ćemo se držati naziva kriptografija javnih ključeva.
U simetričnoj kriptografiji isti ključ se koristi i za šifrovanje i za dešifrovanje. U
kriptografiji javnih ključeva, jedan ključ se koristi za šifrovanje, a drugi ključ se koristi za
dešifrovanje. Kao rezultat, ključ za šifrovanje je javan. Ovo rešava jedan od mnogih
uznemirujućih problema simetrične kriptografije, tj. kako sigurno sigurno distribuirati simetrični
ključ. U stvari, kriptografija javnih ključeva je šire definisana da uključuje metode koji se ne
pokoravaju ’’dva ključa’’ modelu ali obuhvataju neke važne informacije koje su javne.
Kriptografija javnih ključeva je relativno mlada, i nju su izmislili kriptografi koji su radili
za GCHQ (Britanski pandan za NSA) kasnih 1960-ih i ranih 1970-ih i na osnovu akademskih
istrživanja posle [147]. Vladajući kriptografi nisu shvatali punu snagu njihovog otkrića i to je
ostalo neiskorišteno dok ga akademici nisu izdali. Krajnji efekt je bio nista manje do revolucije u
kriptografiji.
U ovom poglavlju ćemo obraditi neke od najvažnijih sistema javne kriptografije. Ne postoji
nigde približan broj kriptosistema javne kriptografije kao što su simetrične šifre, jer je sistem
javnoh ključa baziran na veoma specijalnim matematičkim strukturama, gde skoro svako može
dizajnirati verodostojnu simetričnu šifru.
Kriptografija javnih ključeva je bazirana na ''trap door jednosmernim funkcijama'' odnosno
funkcijama koje se lako računaju u jednom smeru a teško u drugom smeru. Svrha jednosmernih
funkcija je da osigura da napadač ne može koristiti javnu informaciju da otkrije tajnu informaciju.
Na primer, relativno je lako generisati dva prosta broja p i q i izračunati njihov proizvod N=pq. Ali
ako je dato N teško je izračunati parametre p i q.
Potrebno je obratiti pažnju na obilježavanje. U simetričnoj kriptografiji, otvoreni tekst je P
i šifrat je C. Ali u kriptografiji javnih ključeva, tradicija kaže da mi šifrujemo poruku M, iako je i
dalje rezultat šifrat C. Mi ćemo pratiti tradiciju.
Da bismo uradili kriptografiju javnim ključem, Bob mora imati par ključa koji se sastoji od
javnog i priatnog ključa. Svako može koristiti Bobov javni ključ da šifruje poruku za Boba, ali
samo Bob može dešifrovati poruku jer samo on ima svoj privatni ključ.
Bob takođe može digitalno potpisati poruku M ''šifrujući'' je sa njegovim tajnim ključem.
Onda svako može ''dešifrovati'' poruku koristeći Bobov javni ključ. Verovatno se pitate koja je
korist od ovoga. Ali ovo je jedna od najkorištenijih stvari u kriptografiji javnim ključem. Digitalni
potpis je kao ručni potpis – samo malo više od toga. Samo Bob, koji ima privatni ključ, može
digitalno potpisati, kao što se on može ručno potpisati. Svako ko Bobovim javnim ključem može
verifikovati njegov digitalni potpis, isti kao što svako može pročitati Bobov ne digitalni potpis.
Međutim, digitalni potpis ima neke važne prednosti u odnosu na rukom napisan potpis. Jedna stvar
jeste da je digitalni potpis čvršće povezan sa samim dokumentom. Dok rukom napisan potpis
može biti fotokopiran na drugi dokument, a to nije moguće sa digitalnim potpisom. Još važnija
činjenica jeste da je nemoguće krivotvoriti digitalni potpis bez privatnog ključa. U ne digitalnom
svetu, krivotvorenje Bobovog potpisa može biti otkriveno samo od strane eksperata. Ali u
digitalnom svetu krivotvorenje može svako otkriti.
Dalje ćemo govoriti o nekoliko sistema javne kriptografije. Prvi o kome ćemo govoriti
jeste knapsack kriptosistem. Ovo je u redu jer je on prvi koji je predstavio kriptografiju javnih
ključeva. Ali knapsack je sada nesiguran, ali se na osnovu njega može razumeti sistem. Posle
knapsacka govorićemo o zlatnom standardu javne kriptografije RSA. Objasnićemo Difi-Helman
razmenu ključeva koja se kao i RSA veoma koristi u praksi.
Takođe ćemo govoriti o kriptografiji eliptičkih krivih ili ECC. Iako ECC nije kriptosistem
one ipak daju različite matematičke realnosti u kojima čine da matematika izrasta u mnogim
sistemima javne kriptografije. Prednost ECC je da je mnogo efikasniji (u vremenu i prostoru) a
tako i u okruženju okrenutom resursima kao što je wireless i ručnim uređajima.
Ako već niste sada je pravo vreme da pogledate Dodatak u vezi sa matematičkom
aritmetikom.
4.2 KNAPSACK
W0,W1, . . . , Wn-1
i željena suma je S=172. onda rešenje ovog problema postoji i dato je na osnovu
Dole, ćemo videti da je lako šifrovati koristeći generalni knapsack, i sa privatnim ključem da je
lako dešifrovati knapsack. Bez privatnog ključa, znači da je potrebno rešiti veoma težak problem
da bi se dobio otvoreni tekst iz šifrata. Sada ćemo pokazati specifične primere. Za ovaj primer,
pratićemo prethodno navedene numerisane tačke.
1
Ironično, knapsack kriptosistem nije bio baziran na knapsack problemu. Nego je bio baziran na mnogo
ograničavajućem problemu, poznatom pod nazivom subset suma. Kriptosistem je univerzalno poznat kao knapsack.
Izbegavajući našu pedantnu prirodu, mi ćemo se odnositi na oba kriptosistema i nazvati ga knapsack
2. da bi konvertovali superinkrementalni knapsack u generalni knapsack, biramo množilac m
i moduo n, tako da su m i n relativno prosti i da je n veće od sume svih elemenata u
superinkrementalnom knapsacku. Za ovaj primer, mi biramo m=41 i n=491. Onda je
genralni knapsack izračunat iz superinkrementalnog knapsacka preko modularane
multiplikacije:
2m = 2 · 41 = 82 mod 491
3m = 3 · 41 = 123 mod 491
7m = 7 · 41 = 287 mod 491
14m = 14 · 41 = 83 mod 491
30m = 30 · 41 = 248 mod 491
57m = 57 · 41 = 373 mod 491
120m = 120 · 41 = 10 mod 491
251m = 251 · 41 = 471 mod 491.
Rezultirajuči generalni knapsack je (82, 123, 287, 83, 248, 373, 10, 471), koji je generalni
(ne inkrementalni) knapsack.
Javni ključ: (82, 123, 287, 83, 248, 373, 10, 471).
Pretpostavimo da su u koraku 3 i 4 dati Bobovi privatni i javni ključevi. Onda ako Alisa
želi da šifruje poruku M = 150 za Boba, ona prvo konvertuje 150 u binarnu vrednost, a to je
10010110. Onda ona koristi 1 bitove da odabere elementa generalno knapsacka koji zajedno daju
šifrat. U ovom slučaju, Alisa pronalazi
C = 82 + 83 + 373 + 10 = 548.
Bob onda rešava superinkrementalni knapsack za 193. Ovo je lak problem iz koga Bob otkriva
poruku u binarnoj vrednosti 10010110 ili u decimalnoj M=150.
Samo osnovna svojstva modularne aritmetike su potrebna da se potvrdi da formula za
dešifrovanje radi. U ovom primeru, imamo
4.3 RSA
Kao i bilo koji vredan kriptosistem, RSA je dobio ime po ljudima koji su ga izumeli, Rivest,
Shamir i Adleman. Rivesta i Shamira smo ranije upoznali, ali ćemo još govoriti o obojici. U stvari,
Rivest i Shamir su dva giganta modernog kriptosistema. Međutim, koncept RSA je nekoliko
godina ranije izmišljen od strane Cliff Cocksa iz GCHQ pre nego što su ga R. S. i A. ponovo
izmislili [147]. Ovo ni u kom slučaju ne umanjuje dostignuće Rivesta, Shamira i Adlemana, jer je
GCHQ delo bilo klasifikovano i nije bilo prikazano široj kriptografskoj zajednici.
Ako ste se ikada zapitali zašto postoji interes faktorizacije velikih brojeva, odgovor je da je
sigurnost RSA bazirana na činjenici daje faktorizacija komplikovana. Ali nije poznato da je
faktorizacija komplikovana u smislu da je, recimo, posao trgovačkog putnika komplikovan. To
znači da nije poznato da je faktorizacija NP kompletna.
Da bi generisali RSA privatni i javni ključ potrebno je da izaberemo dva velika prosta broja
p i q i formirati njihov proizvod N=pq. Dalje, izaberemo e relatovno prost u odnosu na (p-1)
(q-1) i izračunamo multiplikativnu inverziju od e modula (p-1)(q-1). Označite inverzno e sa d. U
ovom slučaju, imamo N=pq, kao i e i d, koje zadovoljava da je ed=1 mod (p-1)(q-1). Sada
zaboravite na faktore p i q.
Broj N je moduo, gde je e eksponent šifrovanja i d je eksponent dešifrovanja. RSA par se
sastoji od
Privatni ključ: d.
Kod RSA šifrovanje i dešifrovanje se vrši pomoću modularnog stepenovanja. Da bi
šifrovali u RSA, mi na poruku M podižemo eksponent šifovanja e, modula N i to je onda
C = Me mod N.
M = Cd mod N.
Verovatno na prvi pogled nije jasno da dešifrovanje radi, ali mi ćemo na kratkom primeru dokazati
da radi. Pretpostavimo na trenutak da radi. Ako Trudi na osnovu N može da otkrije p i q onda ona
može koristiti javnu vrednost e da otkrije privatnu vrednost d pošto je ed = 1 mod (p-1)(q-1).
Drugim rečima, faktorizacija modula razbija RSA. Međutim, da li je faktorizacija jedini naćčin da
se razbije RSA.
Zašto RSA radi? Dato C = Me mod N, moramo verifikovati da je
ed = 1 mod (p-1)(q-1)
φ(N) = (p-1)(q-1).
ed – 1 = kφ(N)
za neki integer k.
Sada imamo sve potrebne delove slagalice da bi verifikovali da RSA dešifrovanje radi.
Imamo
gde smo iskoristili Ojlerovu teoremu da eliminišemo potragu za Mφ(N). Ovo potvrđuje da RSA
eksponent dešifrovanja zaista dešifruje šifrat C.
Hajde da razmotrimo jednostavan RSA primer. Da generišemo, recimo Alisin par ključeva, mi
odaberemo dva ’’velika’’ prosta broja, p = 11 i q = 3. Onda je moduo N = pq = 33 i (p-1)(q-1)=20.
Dalje, mi izaberemo eksponent šifrovanje e = 3 koji je kao što je potrebno relativno prosti u
odnosu na (p-1)(q-1). Onda izračunamo odgovarajući eksonent dešifrovanja, koji je d = 7, jer je ed
= 3 · 7 = mod 20. Mi imamo
Javni ključ: (33, 3)
Privatni ključ: 7.
Sada pretpostavimo da Bob želi poslati Alisi poruku M = 15. Bob uzima Alisin javni ključ
(N, e) = (33, 3) i računa šifrat C kao
koji on onda šalje Alisi. Da dešifruje šifrat C, Alisa koristi svoj privatni ključ d = 7 da pronađe
Međutim, ovaj metod rezultira sa ogromnom vrednošću iako je krajnji rezultat u rasponu od 0 do
34.
Sada pretpostavimo da želimo uraditi RSA šifrovanje se M e mod N. U sigurnoj
implementaciji RSA modul N mora biti najmanje 1024 bita. Kao rezultat, za tipičnu vrednost e,
brojevi koji se koriste će biti toliko veliki da nepraktično izračunati M e mod N na osnovu
jednačine 4.4. Na sreću, metod sukcesivnog kvadriranja nam omogučava da izračunamo takav
eksponent bez pravljenja ekstramno velikih brojeva u bilo kojem koraku.
Sukcesivno kvadriranje radi na tako što se eksponent e nadograđuje svaki put sa jednim
bitom. Na svakom koraku dupliramo trenutni eksponent i ako je binarno proširenje od e ima 1 u
odgovarajućoj poziciji, mi takođe dodamo jedan eksponentu.
Kako možemo duplirati (i dodati jedan) eksponentu? Osnovne osobine proširenja govore
nam da ako stepenujemo xy, mi dobijemo x2y a to je x · xy = xy+1. Na osnovu ovoga možemo reći da
je lako duplirati eksponent ili dodati jedan.
Koristeći osnovne osobine modularne aritmetike, mi možemo smanjiti svaki dobijeni
rezultat preko modula zaobilazeći velike brojeve. Jedan primer to dokazuje. Opet imamo 5 20. Prvo
primetite da je binarna vrednost eksponenta 20 10100. Sada možemo ’’nadograditi’’ jedan bit
dvaki put
1=0·2+1
2=1·2
5=2·2+1
10 = 5 · 2
20 = 10 · 2.
51 = (50)2 · 51 = 5 mod 35
52 = (51)2 = 52 = 25 mod 35
55 = (52)2 · 51 = 252 · 5 = 3125 = 10 mod 35
510 = (55)2 = 102 = 100 = 30 mod 35
520 = (510)2 = 302 = 900 = 25 mod 35
Iako postoji mnogo koraka u sukcesivnom kvadriranju, svaki korak je jednostavan i što je
najvažnije ne moramo da se bavimo velikim brojevima. Uporedite ovo sa jednačinom 4.4 gde smo
se bavili sa veoma ogromnom vrednošću.
Pametan trik za ubrzavanje RSA je korištenje istog eksponenta šifrovanja e za sve korisnike.
Koliko znamo, ovo ne čini RSA slabijim. Eksponent dešifrovanja (privatni ključevi) različitih
korisnika će biti različiti, i p i q će biti različiti i izabrani za svaki par ključeva.
Najbolji izbor za isto šifrovanje je eksponenta jeste da je e = 3. Sa ovim izborom
eksponenta e, svako šifrovanje javnim ključem zahteva dva množenja. Međutim, ali operacije
privatnog ključa ostaju teške jer nema posebne strukture za d. Ovo je često poželjno jer čitavo
šifrovanje može biti urađeno na centralnom serveru, dok je dešifrovanje efikasno usmereno prema
svim korisnicima. Naravno, server treba da označi, onda malo e ne smanjuje protok. U svakom
slučaju, loša ideja je da se za svakog korisnika izabere isto d.
Sa e = 3, napad trećeg korena je moguć. Ako je M < N1/3 tada je C = Me = M3 i to znači da
operacija mod N nema efekta. Kao rezultat, napadač može jednostavno izračunati treći koren od C
i dobiti M. U praksi, ovo se lako izbegava tako što se stavlja da je M>N1/3.
Sa e = 3, postoji i drugi tip napad trećeg korena. Ako je ista poruka M šifrovana za tri
različita korisnika, tada šifrati C1, C2, C3 mogu biti otkriveni kineske teoreme o ostacima [34]. Ovo
se takođe izbegava tako što se svaka poruka M dopunjava slučajnim bitima ili specifičnim
informacijama za svakog korisnika.
Još jedno popularno šifrovanje sa zajedničkim eksponentom jeste e = 216 + 1. Sa ovakvim e,
svako šifrovanje zahteva samo 17 koraka sukcesivnog kvadriranja. Prednost e = 2 16 + 1 jeste da se
poruka može poslati 216 + 1 korisnika pre nego što kineska teorema o ostacima uspije napasti
poruku.
Dalje ćemo govoriti o Difi-Helman algoritmu razmene ključeva, koji je različita vrsta
algoritama sa javnim ključem. Dok se RSA oslanja na komplikovanost faktorizacije, Difi-Helman
algoritam je baziran na takozvanom dikretnom logaritmu.
4.4. DIFI-HELMAN
a Bob računa
i gab mod p je zajednička tajna, koja se koristi kao simetrični ključ. DH razmena ključa je
prikazana na Slici 4.1
Napadač Trudi može videti ga mod p i gb mod p ali ona ne zna zajedničku vrednost gab mod
p. Ona može pretpostaviti da je
Trudi treba naći a i b da bi rešila težak diskretni logaritam. Naravno, ako Trudi može otkriti a ili b
ili gab mod pna bilo koji način, sistem bi bio razbijen. Ali koliko mi znamo jedini način da se
razbije DH jeste rešavanje diskretnog logoritma.
DH algoritam je podložan man-in-middle napadu ili MiM napadu.2 Ovo je aktivan napad
gde se Trudi postavlja između Alise i Boba i hvata poruke od Alise za Boba i obrnuto. Ako je
Trudi tako postavljena, DH razmena između Alise i Boba je narušena. Trudi jednostavno uspostavi
zajedničku tajnu, recimo gat mod p sa Alisom i još jednu zajedničku tajnu sa Bobom g at mod p kao
što je prikazano na slici 4.2. Ni Alisa ni Bob ne znaju da je Trudi između njih i da je ona u
mogućnosti da čita menja svaku poruku prosleđenu između Alise i Boba.
MiM napad na Slici 4.2 je glavna briga kada se koristi DH. Kako možemo sprečiti MiM
napad? Postoji nekoliko mogućnosti, uključujući
Možda se pitate zašto koristimo DH da bi uspostavili simetrični ključ ako već imamo zajednički
simetrični ključ (1) ili par ključeva (2 ili 3). Ovo je odlično pitanje na koje ćemo dati odgovor kada
budemo govorili o protokolima u Poglavljima 9 i 10.
''Eliptičke krive'' nisu kriptosistem. Eliptičke krive jednostavno omogućavaju drugi način za rad sa
kompleksnim matematičkim operacijama potrebnim u kriptografiji sa javnim ključevima. Na
primer, postoji Difi-Helman verzija eliptičke krive.
Prednost eliptičke krive (ECC) jeste da je potrebno malo bita za isti nivo sigurnosti kao u
slučajevima kod neeliptickih krivih. Eliptičke krive su mnogo kompleksnije i kao rezultat,
matematika eliptičkih krivih je teža. Ali uopšte, eliptičke krive nude bolje prednosti računanja. Iz
tog razloga, ECC su popularne u okruženju okrenutom resursima kao što su ručni uređaji.
Eliptička kriva E je grafik funkcije u formi
E: y2 = x3 + ax + b
zajedno sa tačkom beskonačnosti ∞. Grafik tipične eliptičke krive je prikazan na Slici 4.3.
2
Izbegavaćemo politički ispravnu terminologiju ''middleperson attack''
Slika 4.3 takođe prikazuje metod koji se koristi da bi se pronašla suma dve tačke na eliptičkoj
krivoj. Da bi dodali tačke P1 i P2, nacrtana je linija kroz dve tačke. Ova linija obično preseca krivu
u još jednoj tački. Ako je tako ova druga tačka je preslikana na x osu da se dobije suma
P3 = P1 + P2
kao što je prikazano na slici 4.2. Sabiranje je jedina matematička operacija koja je potrebna kod
eliptičkih krivih.
Za kriptografiju, potreban nam je diskretni skup tačaka. Ovo se lako dobija tako što se
dodaje ''mod p'' nu generičku jednakost eliptičke krive, a to je
y2 = x3 + ax + b (mod p).
Algoritam za dodavanje dve tačke na eliptičkoj krivoj se pojavljuje u Tabeli 4.2. Sada
upotrebimo algoritam iz Tabele 4.2 da bi pronašli tačke P 3 = (1, 4) + (3, 1) na krivoj u jednačini
4.5. Prvo, izračunamo
Onda
x3 = 12 − 1 − 3 = −3 = 2 mod 5
y3 = 1(1 − 2) − 4 = −5 = 0 mod 5.
Nadalje, na krivoj y2 = x3 + 2x + 3 (mod 5), imamo (1, 4) + (3, 1) = (2, 0). Primetite da (2, 0) je
takođe na krivoj u jednačini 4.5, kao što je prikazano u jednačini 4.6.
ostavljajuči b da bude određeno posle. Dalje, možemo odabrati tačke (x, y) i odrediti b tako da se
ova tačka nalazi na rezultirajućoj krivoj. U ovom slučaju, izaberemo recimo (x, y) = (2, 7). Onda
zamenom x = 2 i y = 7 u jednačini 4.7 dobijamo da je b = 19.
Sada je javna informacija
Alisa i Bob odabrati svoje tajne množitelje.3 Pretpostavimo da Alisa odabere A = 15 i Bob odabere
B = 22. Onda Alisa računa
gde je sva aritmetika urađena na jednačini 4.8. Alisa šalje ovaj rezultat Bobu.
Bob računa
i to šalje Alisi. Sada Alisa množi vrednost koji je primila od Boba sa njenim tajnim A i to je onda
i Alisa i Bob su uspostavili svoju zajedničku tajnu, koje su odgovarajuće za korištenje simetričnog
ključa. Primetite da ovo radi pošto je AB(2, 7) = BA(2, 7). Sigurnost ovog metoda leži u činjenici
da iako Trudi može videti A(2, 7) i B(2, 7) ona (izgleda) mora pronaći A ili B pre nego što odredi
zajedničku tajnu. Koliko je poznato, DH verzija eliptičke krive je teža za razbiti od običnog DH
algoritma. U stvari, za dat broj bita, verziju eliptičke krive je teže razbiti, što dozvoljava korišćenje
manjih vrednosti za isti nivo sigurnosti.
Nije sve izgubljeno za Trudi. Može je utešiti činjenica da je DH verzija eliptičke krive
podložnija MiM napadu od običnoh DH algoritma razmene ključeva.
Postoje mnogi izvori informacija u vezi eliptičkih krivih. Vidite [192] za više informacija i
[28] za više matematičkih detalja.
3
Pošto znamo kako se radi sabiranje eliptičke krive, možemo uraditi multiplikaciju kao ponavljanje sabiranja
4.6 OZNAČAVANJE U KRIPTOGRAFIJI JAVNIH KLJUČEVA
[{M}Alice]Alice = {[M]Alice}Alice = M.
Nikada ne zaboravite da je javni ključ javan. Kao rezultat, svako može izračunati {M}Alice.
Sa druge strane, privatni ključ je privatan, tako da samo Alisa ima pristup njenom privatnom
ključu. Kao rezultat, samo Alisa može izračunati [C]Alice ili [M]Alice. Ovo upućuje na to da svako
može šifrovati poruku za Alisu, ali samo Alisa može dešifrovati šifrat. Što se tiče potpisivanja,
samo Alisa može potpisati M, ali pošto je javni ključ javan, svako može verifikovati potpis. O
verifikovanju ćemo više govoriti kada budemo govorili o heš funkcijama u sledećem poglavlju.
Možete uraditi sve sa algoritmom kriptografije sa javnim ključem kao što možete sa simetričnim
kriptografijom, samo sporije. Ovo uključuje tajnost u smislu prenosa podataka kroz nesiguran
kanal ili sigurno smeštanje podataka na nesigirnam mediju. Takođe uključuje integritet, gde
potpisivanje javnog ključa igra ulogu MAC simetričnog ključa.
Ali kriptografija sa javnim ključevima nudi dve glavne prednosti u odnosu na simetričnu
kriptografiju. Prva je da sa nam sa javnom kriptografijom nije potrebno unapred uspostavljati
zajednički ključ. Druga glavna prednost jeste da digitalni potpis nudi ne samo integritet nego i
neporecivost. Ove dve prednosti ćemo dole detaljnije objasniti.
4
Druga prednost jeste da nije potrebna infrastruktura javnog ključa ili PKI. Govorićemo o tome posle.
Slika 4.4 Hibridni kriptosistem
Pretpostavimo da Alisa želi poslati poruku M Bobu. Za tajnost, Alisa može šifrovati poruku M sa
Bobovim javnim ključem, a za integritet i neporecivost, može potpisati poruku sa njenim
privatnim ključem. Ali pretpostavimo da Alisa želi i tajnost i neporecivost. Onda ona ne može
jednostavno potpisati M pošto to neće omogućiti tajnost i ne može jednostavno šifrovati M jer to
neće omogućiti integritet. Rešenje nije komplikovano – Alisa može potpisati poruku M i šifrovati
rezultat pre nego što je pošalje Bobu i to je onda
{[M]Alice}Bob.
Ili je bolje za Alisu da prvo šifruje poruku M pa tek onda potpiše rezultat? U ovom slučaju, Alisa
će izračunati
[{M}Bob]Alice.
M = “I love you”
{[M]Alice}Bob.
Slika 4.5 Zamka kod potpisivanja i šifrovanja
Kasnije, Alisa i Bob se posvađaju i Bob se oseća povređenim tako da on dešifruje potpisanu
poruku da bi dobio [M]Alice i ponovo je šifruje kao
{[M]Alice}Charlie.
Bob onda šalje poruku Čarliju, kao što je prikazano na Slici 4.5. Čarli misli da je Alisa zaljubljena
u njega, što uzrokuje neprilike između Alise i Čarlija, ali i kod Boba.
Alisa, je iz svog iskustva nuačila lekciju da nikada prvo ne potpisuje pa onda šifruje. Kada
želi tajnost i neporecivost, Alisa će uvek prvo šifrovati pa onda potpisati.
Posle nekog vremena, Alisa i Bob su se pomirili i Alisa je otkrila veliku teoriju i to želi da
podeli sa Bobom. Ovog puta njena poruka je [41]
[{M}Bob]Alice
pre nego što pošalje Bobu.
Međutim, Čarli je ljut na Alisu i Boba i on koristi man-in-middle napad, smeštajući se
između Alise i Boba da bi mogao da presretne sve poruke između njih. Čarli je čuo da Alisa radi
na velikoj novoj teoriji i pretpostavlja da ta poruka koja je šifrovana i potpisana ima neke veze sa
tim. Tako Čarli koristi Alisin javni ključ za izračuna {M}Bob, i on to potpiše pre nego što pošalje
Bobu,
[{M}Bob]Charlie.
U drugom scenariju, Bob pretpostavlja da je [{M}Bob]Charlie od Čarlija, što nije sličaj, jer
Alisin ključ – koji je Čarli iskoristio da bi efikasno uklonio Alisin potpis iz orginalne poruke –
javan. U tom slučaju, Bob je onaj koji ne razume ograničenja u kriptografiji sa javnim ključevima.
U kriptografiji sa javnim ključevima svako može raditi operacije sa javnim ključevima. To znači
da svako može šifrovati poruku i svako može verifikoveti potpis.
Infrastruktura javnih ključeva ili PKI je suma svega potrebnog za sigurno korišćenje kriptografije
sa javnim ključem. Veoma je teško i uspeti obezbediti sve neophodne delove PKI-a u radni
prostor. Neki značajni PKI problemi moraju biti prevaziđeni pre nego što kriptografija sa javnim
ključem može biti iskorištena u realnom svetu. Za diskusiju o nekim rizicima koje uključuje PKI
vidite [73].
Digitalni sertifikat, ili certifikat javnog ključa ili jednostavno sertifikat sadrži korisničko
ime zajedno sa korisničkovim javnim ključem. U mnogim situacijama, sertifikat mora biti
potpisan od strane sertifikacionog autoriteta, ili CA, koji ima ulogu trećeg lica od poverenja, ili
TTP. Potpisivanjem sertifikata, CA potvrđuje da je identitet na sertifikatu od nositelja
odgovarajućeg privatnog ključa. Primetite da CA ne jamči za indentitet nositelja sertifikata, pošto
je sertifikat javan. Danas, najveći komercijalni izvor za sertifikate je VeriSign [240].
Jedna važna stvar jeste da je verifikovanje potpisa ne verifikuje izvor sertifikata. Sertifikati
su javni, pa na primer, Čarli može poslati Alisin sertifikat Bobu. Bob ne može naslutiti da
kominicira sa Alisom samo ako je primio Alisin validan sertifikat.
Kada primite sertifikat, morate verifikovati potpis. Ako je sertifikat potpisan od strane CA
kome verujete, onda možete pokušti verifikovati potpis koriteći CA javni ključ. Svako može
kreirati sertifikat i tvrditi da je nečiji drugi, ali samo verifikacija potpisa može kreirati poverljivost
u validaciji sertifikata.
Sertifikat može sadržati svaku informaciju koja se smatra vrednošću učesnika. Međutim,
više informacija upućuje na to da će sertifikat postati nevažeći. Na primer, možda kompanija želi
da uključi odeljenje za zapošljevanje u sertifikat. Ali rti znači da svaka ponovna organizacija
sertifikata će učiniti sertifikat nevažećim.
Ako CA napravi grešku, posledice mogu biti velike. Na primer, VeriSign je jednom izdao
sertifikat za Microsoft nekome drugom [101], a to znači da je VeriSign dao odgovarajući privatni
ključ nekome ko nije Microsoft. Taj neko drugi je mogao da radi kao da je Microsoft. Ovakva
greška je brzo otkrivena i sertifikat je povučen pre nego što je učinjena šteta.
Ovo upućuje na još jedan PKI problem koji se zove povlačenje setrifikata. Sertifikati se
obično izdaju sa datumom isticanja. Ali ako je privatni ključ kompromitovan ili je otkriveno da je
sertifikat izdata sa grškom, setifikat mora biti odmah povučen. Večina PKI šema zahteva regularnu
listu za povlačenje sertifikata ili CRL, koji se koriste da bi upotpunili kompromitovane sertifikate.
U nekim situacijama, ovo može staviti veliki teret na korisnike, što znači da to teži ka greškama i
problemima u sigurnosti.
Da sumiramo, svaka PKI infrastruktura se mora baviti sa:
Dalje ćemo ukratko govoriti o nekoliko poverljivih modela koji se koriste danas. Na kraju, morate
se osloniti na digitalni potpis da bi odlučili da li da verujete sertifikatu. Osnovni problem u
kriptografiji sa javnim ključem jeste određivanje čijem potpisu ste voljni verovati. Postoji nekoliko
poverljivih modela koji se koriste. Mi ćemo pratiti terminologiji iz [122].
Verovatno najočigedniji model kome se može verovati je model monopola, gde jedna
poverljiva organizacija je CA za čitav svet. Ovaj pristup je naravno favorizovan od strane najveće
komercijalizovane CA, a to je danas VeriSign. Neki su govorili da vlada mora igrati ulogu
monopolskog CA. Međutim, većina ljudi ne veruje vladi.
Velika mana modela monopola jeste da kreira veliki cilj za napad. Ukoliko se ikada CA
kompromituje, cela PKI infrastruktura je uništena. Takođe, ako ne verujete u model monopola,
sistem je potpuno beskoristan za vas.
Model oligarhije je jedan korak unapred u odnosu na model monopola. U ovom modelu,
postoji nekoliko poverljivih CA. Ovo je pristup koji se danas koristi kod web pretrašivača – web
pretraživač može biti konfigurisan sa 80 ili više CA sertifikata. Korisnici koje se oslanjaju na
sigurnost slobodno mogu da odluče koji od oligarhijskih CA će da koriste, a koji ne.
Obrnuto od monopolskog modela jeste model anarhije. U ovom modelu svako može biti
CA, a na korisniku je da odluči kojem CA će verovati. Ovaj pristup se koristi u PGP-u, koje dolazi
od imena ''web od poverenja.''
Model anarhije može staviti veliki teret na korisnika. Na primer, pretpostavimo da primite
sertifikat potpisan od strane Franka, a vi ne znate ko je Frank, ali verujete Bobu i Bob kaže da se
može verovati Alisi koja garantuje za Franka. Da li onda trebate verovati Franku? Ovo je iznad
strpljenja prosečnog korisnika, koji ili veruje svakome ili ne veruje nikome, a sve zbog toga da bi
izbegao ovakve glavobolje.
Postoji još mnogo PKI modela poverenja, većina njih pokušava da omogići razumnu
fleksibilnost tako što smanjuje teret za krajnjeg korisnika. Činjenica da nema dogovora u vezi
poverljivih modela je glavni problem PKI infrastrukture.
4.9. UKRATKO
U ovom poglavlju, govorili smo o svim najvažnijim temama kriptografije sa javnim ključem.
Govorili smo detaljno o RSA i Difi-Helman algoritmu i eliptičkim krivama. Eliptičke krive nisu
tipičan kriptosistem, nego one nude drugačiji način da se bavimo matematikom kod kriptografije
sa javnim ključem.
Obratili smo pažnju na označavanje i neodbacivanje, koje su najvažnije prednosti
kriptografije sa javnim ključem. Upoznali smo se sa hibridnim kriptosistemom, koji objašnjava
način kako je kriptografija sa javnim ključevima korištena u relanosti za potrebe poverljivosti.
Pominjali smo PKI infrastrukturu, koja često dokazuje blokadu razvoja kripografije sa javnim
ključevima.
Ovo podrazumeva pregled kriptografije sa javnim ključem. Ali ćemo o mnoge aplikacije u
vezi ove kriptografije videti u sledećim delovima ove knjige.
4.10 PROBLEMI
1. Koje informacije treba da sadrži digitalni sertifikat? Koje dodatne informacije treba da
sadrži digitalni sertifikat?
2. Pretpostavimo da su Alisini RSA javni ključevi (N,e) i privatni ključ d. Alisa želi da
potpiše poruku M, a to je [M]Alice. Dajte matematiču formulu koja se ovde koristi.
3. U jednačini 4.3, dokazali smo da za RSA šifrovanje ''radi'', a to je [{M}Alice]Alice = M.
Dokažite da za RSA, verifikacija potpisa radi, ako je [{M}Alice]Alice = M.
4. Alisin RSA javni ključ je (N,e) = (33,3) i njen privatni ključ d = 7.
a. Ako Bob šifruje poruku M = 19 za Alisu, koji je odgovarajući šifrat C? Dokađite da
Alisa može dešifrovati C da bi dobila M.
b. Neka je S rezultat kada Alisa digitalno potpiše poruku M = 25. Koliko je S? Ako Bob
primi M i S, objasnite proces koji Bob koristi da bi verifikovao potpis? Dokažite da je u
ovom slučaju verifikacija potpisa uspešno izvršena.
5. Zašto je loša ideja koristiti isti RSA par ključa i za potpisivanje i za šifrovanje?
6. Da bi ubrzali RSA, možemo koristiti e = 3 za sve korisnike. Ovo stvara mogićnost napada
trećeg korena kao što smo govorili u tekstu. Objasnite ovaj napad i kako se on može izbeći.
Za (N,e) = (33,3) i d = 7, dokažite da napad trećeg korena funkcioniše kada je M = 3, a ne
kada je M = 4.
7. Na dijagramu Difi-Helman razmene ključeva na slici 4.1, jasno ukažite koja informacije je
javna, a koja tajna.
8. Pretpostavimo da Alisa i Bob dele simetrični ključ K. Nacrtajte dijagram da prikažete
različitost Difi-Helman razmene ključeva između Boba i Alise koji sprečava man-in-
middle napad.
9. Digitalni potpis obezbeđuje integritet podataka i MAC obezbeđuje integritet podataka.
Digitalni potpis takođe obezbeđuje prihvatanje, dok MAC to ne dozvoljava. Zašto ne?
10. Hibridni kriptosistem koristi kriptografiju javnih ključeva i simetričnu kriptografiju da bi
preuzeo koristi od svakog. Predstavite takav sistem koristeći Difi-Helman kao sistem
javnih ključeva i DES kao simetričnu šifru. Predstavite takav sistem koristeći RSA kao
sistem javnih ključeva i AES kao simetričnu šifru.
11. Prikažite man-in-middle napad na ECC verziju Difi-Helman.
12. Pretpostavimo da Alisa potpiše poruku M = ''I love you'' i onda šifruje to sa Bobovim
javnim ključem pre nego što poruku pošalje Bobu. Kao što smo rekli u tekstu, Bob može
dešifrovati da bi dobio potpisanu poruku i onda je šifruje sa Čarlijevim javnim ključem i
prosledi rezultirajući šifrat Čarliju. Može li Alisa sprečiti ovaj napad koristeći simetričnu
kriptografiju?
13. 105 str
5
HEŠ FUNKCIJE I
DRUGE TEME
Kolizije moraju postojati jer je ulazno prostor mnogo veći od izlaznog prostora. Na primer,
pretpostavimo da heš funkcija generiše izlaz od 128 bita. Ako razmotrimo, recimo sve moguće
150 bitne vrednosti ulaza onda u proseku 2 22 ili 4 miliona od ovih vrednosti se hešuje na sve
moguće izlazne vrednosti. A ovo je samo računajući 150 bitne ulazne. Osobine otpornosti na
kolizije zahtevaju da sve ove kolizije (kao i sve ostale) su teške za pronaći. Zanimljivo je da
kriptografske heš funkcije zaista postoje.
Heš funkcije su veoma korisne u sigurnosti. Jedan važan promer korišćenja heš funkcija
jeste računanje digitalnog potpisa. Setite se da Alisa potpisati poruku M koristeći njen privatni
ključ da ''šifruje'' a to znači da ona računa S = [M]Alice. Ako Alisa pošalje M i S Bobu onda Bob
može verifikovati potpis tako što verifikuje M = {S}Alice. Međutim, ako je M veliko [M]Alice je teško
izračunati - a da ne spominjemo nepotrebno utrošen protok tokom slanja M i S koji su iste
veličine.
Pretpostavimo da Alisa ima kriptografsku heš funkciju h. Onda h(M) može biti posmatrano
kao ’’otisak prsta’’ fajla M. To znači da je h(M) mnogo manje od M ali ono identifikuje M. Ako se
M' razlikuje od u jednom ili više bita, onda se od h(M) i h(M') može očekivati da se razlikuju u
polovini njihovih bita. Na osnovu tako date funkcije h, Alisa može potpisati M računajući S=
[h(M)]Alice i poslati Bobu M i S. Onda Bob može verifikovati da je h(M) = {S}Alice.
Koja je prednost potpisivanje h(M) umesto M? Pretpostavljajući da je h(M) efikasnije za
izračunati, mnogo je efikasnije za Alisu da potpiše h(M) nego M jer komplikovane operacije
privatnog ključa treba da budu primenjene samo na mali fajl h(M) umesto na čitav fajl M. Veliko
M i mnogo efikasnije h(M) omogućavaju veću čuvanost. Osim toga, propusnost je smanjena, kao
kada Alisa šalje Bobu nekoliko bita više.
1 − (364/365)N.
Izjednačavajući ovaj izraz sa ½ i računanje N, dobijemo da je N=253. Pošto postoji samo 365 dana
ovo bi trebalo da je u redu.
Ponovo, pretpostavimo da je N osoba u prostoriji. Ali sada želimo odgovoriti na pitanje
koliko veliko mora biti N pre nego što je verovatnoća veća od ½ da dve ili više osoba imaju
rođendan isti dan? Ponovo lakše je rešiti za verovatnoću komplamenta i oduzeti jedan od rezultata.
U ovom slučaju, komplament je da svako od N ljudi ima rođendan različitog dan.
Broj ljudi u prostoriji je 0, 1, 2, . . . , N − 1. Osoba 0 ima rođendan određenog datuma. Ako
svi ljudi imaju različite rođendane, onda osoba 1 mora imati rođendan na bilo koji od preostala
364 dana. Isto tako osoba 2 ima rođendan na jedan od preostala 363 dana itd. Ponovo,
pretpostavljajući da su svi datumi slični i uzimajući komplament rezultirajuća verovatnost bi bila
Ako izjedančimo ovu jednačinu da ½ dobijemo da je N=23. Ovo je poznato kao rođendanski
paradoks i čini se da je paradoksalno da samo sa 23 osobe u sobi možemo imati rođendan isti dan.
Međutim, ako ovo razmotrimo bolje to čini ovaj rezultat manje paradoksalnim. U ovom problemu,
mi upoređujemo rođendane od svih ljudi. Sa N osoba u prostoriji broj upoređivanje je N(N − 1)/2
≈ N2. Pošto postoji samo 365 različitih datuma možemo očekivati da ćemo pronaći podudaranje na
N2=365 ili N = √365 ≈ 19. Sa ove tačke gledišta rođendanski paradoks nije više tako paradoksalan.
Šta rođendani imaju sa kriptografijom heš funkcija? Pretpostavimo da heš funkcija h(x)
proizvodi izlaz dužine N bita. Onda je tu 2N različitih mogućih heš vrednosti. Pretpostavimo da
sve vrednosti heš izlaza su slični. Pošto je √2 N = 2N/2, rođendanski problem upućuje na to da ako je
heš oko 2N/2 različitih ulaza, možemo očekivati da ćemo pronaći koliziju, a to je dva ulaza koja se
hešuju na istu vrednost. Ovaj metod ’’razbijanja’’ heš funkcije je analogan napadu potpune
pretrage ključeva na simetrične šifre.
Ovo implicira na to da sigurna heš koji generiše N bitni izlaz zahteva rad od oko 2 N/2 da se
razbije, dok sigurna simetrična šifra sa ključem dužine N zahteva rad od oko 2 N−1 da se razbije.
Suština je da izlaz heš funkcije mora biti otprilike oko dvostruki broj bita kao ključ simetrične
šifre za odgovarajuću količinu sigurnosti – pretpostavljajući da ne postoji napada.
X = (X0,X1,X2, . . . , Xn−1)
Ovo zasigurno izvršava kompresiju, jer bilo koja veličina ulaza je kompresovana na 8-bitni izlaz.
Ali ovo nije sigurno, pošto nam rođendanski problem govori da ako hešujemo samo 2 4=16
slučajno izabranih ulaza, možemo očekivati da ćemo pronaći koliziju. U ovom slučaju, kolizije je
lako direktno konstrisati. Na primer
Ne samo da je ova dužina heša previše kratka, ali tu je veoma mnogo algebarske strukture.
Kao još jedan primer nekriptološkog heša, razmotrilo sledeće. Ponovo, podatak je zapisan
kao bajt
X = (X0,X1,X2, . . . , Xn−1).
Da li je ovaj heš siguran? Na kraju krajeva ovaj heš daje različit rezultat kada se dva bajta zamene,
na primer
Iako ovo nije siguran kriptografski heš, koristi se u određenim nekriptološkim heš aplikacijama
[193].
Primer nekriptološkog heša koji se veoma koristi je cyclic redundancy check ili CRC
[247]. Ovo računanje je duga podela, sa podsetnikom koji se ponaša kao CRC vrednost. Razlika
između ubičajene duge podele jeste to što je XORovanje korišteno umesto oduzimanja.
U CRC računanju dat je divizor. Na primer, pretpostavimo da je divizor 10011 i podatak je
10101011 onda čemo dodati četiri nule podatku i onda je CRC računanje
i CRC checksum je podsetnik, 1010. Sa ovim odabirom divizora lako je pronaći kolizije i lako je
konstruktovati kolizije za svaki CRC sistem [8].
CRC se ponekad (greškom) koristi kao aplikacija gde je potreban integritet. Na primer,
WEP [30] koristi CRC checksum gde bi kriptografski heš bio pogodniji. CRC i slični checksum
metode su dizajnirani da otkriju greške tokom prenosa – a ne da otkriju namerne napade.
gde svaki Xi je od 512 bita. Tiger algoritam koristi spoljnu rundu za svako Xi , za i = 0, 1, 2, .... n-1
i jedna takva runda je predstavljena na Slici 5.1. Svako od a, b, c na Slici 5.1 je 64 bita, a početna
vrednost od (a, b, c) za svaku rundu su
a = 0x0123456789ABCDEF
b = 0xFEDCBA9876543210
c = 0xF096A5B4C3B2E187
dok je krajnja vrednost (a, b, c) iz runde početna vrednost za sledeću rindu. Krajnja vrednost (a, b,
c) iz krajnej runde je 192-bitna heš funkcija. Iz ove perspektive, Tiger veoma liči na blokovske
šifre.
Slika 5.1 Tiger spoljne runda
Primetite da je ulaz u spoljnu rundu F5 (a, b, c). Označavamo izlaza F5 kao (a, b, c) ulaz F7
kao (c, a, b) i ulaz F9 kao (b, c, a). Svaka funkcija Fm na Slici 5.1 se sastoji od osam unutrašnjih
rundi kao što je prikazano na Slici 5.2. Pišemo 512-bitni ulaz W kao
W = (w0,w1, . . . , w7)
gde je svako wi od 64 bita. Primetite da sve linije na Slici 5.2 predstsavlaju 64 bita.
Ulazne vrednosti za fm,i , za i = 0, 1, 2, … , 7 su
(a, b, c), (b, c, a), (c, a, b), (a, b, c), (b, c, a), (c, a, b), (a, b, c), (b, c, a),
odnosno, gde je izlaz od fm,i-1 označeno sa (a, b, c). Svako fm,i zavisi od a, b, c, w, m, gde je wi i od
64 bita pod-blok od 512-bitnog ulaza W. Potpis m od fm,i je množilac kao što je dole definisano.
Pišemo c kao
c = c ⊕ wi
a = a − (S0[c0] ⊕ S1[c2] ⊕ S2[c4] ⊕ S3[c6])
b = b + (S3[c1] ⊕ S2[c3] ⊕ S1[c5] ⊕ S0[c7])
b=b·m
gde je svako Si S-kutija preslikana od 8 bita na 64 bita. Ove S-kutije su velike, pa ih nećemo ovde
predstavljati. Za više detalja o S-kutijama vidite [10].
Jedina preostala tačka o kojoj ćemo govoriti je tabela ključa. Neka W bude 512-bitni ulaz u
algoritam tabele ključa. Kao i gore, W = (w0,w1, . . . , w7) gde je svako wi 64 bita. Neka w¯i bude
binarni komplament od wi. Onda je tabela ključa data u Tabeli 5.1, gde je izlaz dat na osnovu
krajnjeg W = (w0,w1, . . . , w7).
Da sumiramo, Tiger heš se sastoji od 24 runde, koje se mogu videti kao 3 spoljne runde, od
kojih svaka ima po osam unutrašnjih rundi. Sve srednje heš vrednosti su 192 bita.
Tvrdi se da su S-kutije diajnirane da svaki ulazni bit utiče na a, b, c posle tri runde. Takođe, tabela
ključa je dizajnirana tako da svaka mala promena u poruci je uticati na srednje heš vrednosti.
Množenje u poslednjem koraku u fm,i je takože kritična funkcija u dizajnu. Svrha je da se osigura
da svaki ulaz u S-kutiju u jednu rudni se pomeša u mnoge S-kutije u sledećoj rundi. Zajedno, S-
kutije, tabele ključa i višestrukost osigurava dizajniran jak lavina efekat.
Tiger pozajmljuje mnoge ideje iz dizajna blokovskih šifri, uključujući S-kutije, višestruke
runde, mešovita aritmetika, tabela ključa itd. Na višem novou, možemo reći da Tiger koristi
Shannonove principe konfuzije i difizije.
5.5 HMAC
Setite se da za integritet poruke mi možemo izračunati autentifikacioni kod poruke, ili MAC,
koristeći blokovsku šifru u režimu vezivanja blokovskih šifri (CBC). MAC je krajnji šifrovan
blok, koji je poznat kao CBC ostatak. Pošto heš funkcija proizvodi različite vrednosti ako se ulaz
promeni, mi treba da koristimo heš da verifikujemo integritet poruke. Ali ne možemo poslati
poruku M zajedno sa njenim hešom h(M), jer napadač može jednostavno zameniti M sa M‘ i
h(M) sa h(M‘). Međutim, ako učinimo da heš zavisi od simetričnog ključa, onda možemo
izračunati hešovan MAC ili HMAC.
Kako možemo umešati ključ u HMAC? Dva očigledna pristupa su h(K, M) i h(M, K).
Pretpostavimo da želimo izračunati HMAC kao h(K, M). Postoji potencijalni problem kod oog
pristupa. Većina kiptografskih hešova hešuju poruku u blokovima. Za MD5, SHA-1 i Tiger,
veličina bloka koja se koristi je 512 bita. Kao rezultat, ako je M = (B 1, B2) gde je svaki Bi veličine
512 bita, onda je
h(M) = F(F(A,B1),B2) = F(h(B1),B2) (5.2)
za neku funkciju F, gde je A konstanta. Na primer, u Tiger hešu, funkcija F se sastoji od spoljnih
rundi koje su prestavljene na Slici 5.1, gde svako B i odgovara 512-bitnom bloku ulaza i A
odgovara 192-bitnim početnim vrednostima (a, b, c).
Ako je M‘ = (M, X), Trudi može biti u mogućnosti da koristi jednačinu 5.2 da pronađe
h(K, M‘) iz h(K, M) iako ne zna K, jer je za K, M i X odgovarajuće veličine
funkcija F poznata.
Da li je h(M, K) bolje? Ono sprečava navedeni napad. Međutim, ali ako se dogodi da
postoji kolizija, tj. da ako tu postoji neko M‘ sa h(M‘) = h(M) onda na osnovu jednačine 5.3
imamo
pod uslovom da je svako od M i M’ višestruk blokovska veličina. Ovo nije ozbiljan razlog za
brigu kao prethodni slučaj, jer ako se dogodi takva kolizija, heš funkcija je nesigurna. Ali ako
možemo eliminisati ovakav napad onda možemo tako nastaviti.
Zapravo, možemo sprečiti oba ova potencijana problema, tako što ćemo malo modifikovati
metod korišten da pomeša ključ u hešu. Kao što je opisano u RFC 2104 [133], opravdan metod za
računanje HMAC-a sledi. Neka B bude dužina bloka heša u bajtima. Za MD5, SHA-1 i Tiger, B =
64. Sledeće definišemo,
Onda je HMAC od M
koji pažljivo meša ključ u rezultirajući heš. HMAC može biti koristen umesto MAC-a za integritet
poruke. HMAC ima takođe nekoliko svrha, a o nekima ćemo govoriti u kasnijim delovima.
Pretposatvimo da su na svakoj aukciji tri ponuđača, Alisa, Bob i Čarli. Ove aukcije koriste
‘’zapečaćene ponude’’, tj. Da svaki ponuđač podnosi jednu sigurnosnu ponudu i samo kada se sve
ponude prime onda se ponude otkrivaju. Kao i obično, najveća ponuda pobeđuje.
Alisa, Bob i Čarli ne veruju jedno drugom, i ne veruju da će njihove ponude ostati tajne
kada se podnesu. Na primer, ako Alisa da ponudu od 10,00 $, a Bob je na osnovu Alisinih
prethodnih ponuda da svoju ponudu on može dati ponudu od 10.01 $.
Da bi ublažili ove strahove, aukcijske stranice predlažu sledeće šeme. Svaki ponuđač će odrediti
svoju ponudu kao ponuda A od Alice, ponuda B od Boba i ponuda C od Čarlija. Onda će Alisa
podneti h(A), Bob će podneti h(B) i Čarli će podneti h(C). Samo kada se prime i otkriju sve tri
hešovane ponude svi ponuđači će podneti njihove nehešovane ponude A, B i C. Kada je heš
funkcija sigurna, ona je jednosmerna, tako da nema nedostataka tokom davanja hešovanih ponuda
pre konkurenata. Pošto je nemoguće pronaći kolizije, nijedan učesnik ne može promeniti svoju
ponudu nakon što je predao hešovanu vrednost. Pošto ne postoje nedostaci ukoliko prvi predate
hešovanu ponudu, ne postoji način da se promeni ponuda kada je heš vrednost poslata, tako da ova
šema sprečava varanje koje može biti rezultat naivnog pristupa davanja ponuda.
Još jedan primer hešovanih vrednosti proizilazi iz tehike smanjenja spamova. Spam je neželjena i
nepredviđena gomila e-mail. U ovoj šemi, Alisa će odbiti da prihvati e-mail, jer ima dokaz je da
pošiljalac uložio veliki ''napor'' da pošalje taj e-mail. Ovde će napor biti meren u smislu
računarskih resursa, posebno CPU ciklusa. Da bismo bili praktični, mora biti lako za Alisu da
verifikuje da je pošiljalac stvarno obavio posao, a ipak nije moguće za pošiljaoca da vara i ne
obavi zahtevani posao. Ako možemo napraviti takvu šemu, onda bismo imali ograničenu količinu
e-mailova koju korisnik može poslati jer će ga koštati ako pošalje e-mail u gomili.
Neka je M e-mail poruka i neka je T trenutno vreme. Pošiljalac poruke M mora pronaći
vrednost R takav da je
pa, pošiljalac mora pronaći vrednost R tako da heš u jednačini 5.5 ima nule u svim njegovim
prvim N izlaznim bitovima. Onda pošiljalac šalje (M, R, T). Pre nego što Alisa primi e-mail, ona
mora da verifikuje vreme T i da h(M, R, T) počinje sa N nula.
Pošiljalac mora pronaći heš koji počinje sa N nula, dakle on mora izračunati u proseku 2 N
heševa. Sa druge strane. Primalac može verifikovati da h(M, R, T) počinje sa N nula tako što
računa jedna heš. Tako da posao za pošiljaoca, meren u hešovima, je oko 2 N dok je posao za
primaoca računanje samo jednog heša. Posao pošiljaoca se povećava eksponencialno u odnosu na
N dok je posao primaoca zanemarljiv, bez obzira na N.
Da bi učinili ovu šemu praktičnom, moramo izabrati N tako da je nivo posla prihvatljiv za
normale e-mail korisnike ali neočekivano velik za pošiljaoce spamova. Sa ovom šemom, takođe je
moguće da korisnici mogu izabrati njihovu pojedinačnu vrednost N kako bi se podudarala njihova
lična tolerantnost za spamove. Na primer, ako Alisa mrzi spamove, ona može izabrati, recimo, da
je N = 40. Dok će ovo zasigurno zaplašiti pošiljaoce spamova, to će takođe zaplašiti mnoge obične
e-mail pošiljaoce.
Bobu, sa druge strane, ne smeta što prima spamove, tako da on postavlja vrednost N = 10.
Ovo može biti dovoljno da se izbegnu neki spamovi, i to će samo staviti samo zanemarljiv teret na
obične pošiljaoce.
Pošiljaoci spamova ne vole ovakvu šemu. Obični pošiljaoci takođe ne vole ovu šemu, jer
moraju potrošiti više novca da bi brzo izračunali ogroman broj hešova. Ali to je upravo cilj ove
šeme, da se poveća cena slanja e-maila.
U ovom delu, govorićemo o tri teme koje se odnose na kriptografiju, ali nisu usko povezane sa
simetričnom kriptografijom, kriptografijom javnih ključeva ili heš funkcijama. Prvo ćemo
razmotriti Shamiovu šemu tajne razmene. Ovo je veoma jednostavna procedura koja može biti
korištena da podeli tajnu između korisnika. Takođe ćemo spomenuti jednu aplikaciju za ovu
tehniku.
Takođe ćemo govoriti o nasumičnosti. U kriptografiji, često su nam potrebni nasumično
odabrani ključevi, nasumično veliki prosti brojevi itd. Govorićemo o nekim problemima
generisanja nasumičnik brojeva i predstavićemo interesantan primer sa prikažemo zamke kod
odabira loših nasumičnih brojeva.
Na kraju, ukratko ćemo obraditi temu skrivanja informacija, gde je cilj skrivanje
informacija u drugom podatku, kao što je smeštanje tajne informacije u JPEG sliku. Ako napadač
ne zna da informacija postoji, informacija može biti prosleđena bez ikoga ali da učesnici znaju da
se komunikacija dogodila. Skrivanje informacija je široka tema, ali mi ćemo obratiti pažnju samo
na najvažnije.
Pretpostavimo da imamo tajno S i želimo da Alisa i Bob dele ovu tajnu u smislu da
Ni Alisa ni Bob (niti iko drugi) mogu odrediti S sa verovatnoćom boljom od pogađanja.
Alisa i Bob mogu zajedno odrediti S.
Na prvi pogled, ovo je težak problem. Međutim, lako se rešava, i rešenje proizilazi iz činjenice da
''dve tačke određuju liniju.''
Dato je tajno S, nacrtajte liniju L u ravni na osnovu tačaka (0, S) i dajte Alisi tačku A = (X 0, X1) na
L i dajte Bobu drugu tačku B = (X 1, Y1) takođe na liniji L. Onda ni Alisa ni Bob nemaju
pojedninačnu inforamaciju o S, pošto jedan beskonačan broj linija prolaze kroz jednu tačku. Ovaj
primer je prikazan na ''2 od 2'' Slici 5.3. ovo zovemo šema tajne razmene, jer postoje dva učesnika
i oba moraju sarađivati da bi otkrili tajno S.
Lako je proširiti ovu ideju na ''m od n'' šeme tajnog deljenja, za svako m ≤ n, gde je n broj
učesnika, svakog m koji moraju sarađivati da bi otkrili tajnu. Za m = 2, linija uvek finkcioniše. Na
primer, 2 od 3 šema pojavljuje se na Slici 5.3.
Linija, koja je polinom prvog stepena, je jedinstveno određena na osnovu dve tačke, dok
parabola, koja je polinom drugog stepena, je jedinstveno određena na osnovu tri tačke. U principu,
polinomni stepen m-1 je jedninstveno određen na osnovu n tačaka. Ove osnovna činjenica nam
dozvoljava da lako konstruišemo m od n šemu tajnog deljenja za m ≤ n. Na primer, 3 od 3 šema je
prikazana na Slici 5.3.
Pošto je tajno S verovatno ključ ili neka druga brojčana vrednost, ima više smisla da se
bavimo sa diskretnom količinom umesto sa realnim brojevima, a ova šema tajne razmene radi isto
kao i moduo od p. Ovaj koncept elegantne i sigurne tajne razmene se duguje S-u iz RSA (a to je
Shammir).
2 od 2 2 od 3 3 od 3
Slika 5.3 Šema tajne razmene
5.7.1.1 Key escrow. Jedna posebana aplikacija gde je šema tajne razmene korisna je key
escrow problem. Pretpostavimo da su nam potrebni korisnici da smestimo njihove ključeve sa
zvaničnim escrow agencijom. Vlada može, ukoliko sud naredi, dobije pristup ključu kao pomoć
kod kriminalnih istraga. Ovo stavlja kriptografiju u istu kategoriju kao, recimo, običnu telefonsku
liniju, koji može biti snimljen na osnovu sudskog naloga. Jednom je američka vlada želela da
promoviše key escrow tako što je razvila sistem (Clipper i Capstone) koji uključuje key escrow
kao svojstvo. Međutim, ideja key escrow je široko podcenjivana i na kraju je napuštena; vidite
[43] za kratku istoriju u vezi Clipper čipa.
Jedna zabrinutost kod key escrowa je da je escrow agencija nepoverljiva. Jedan način da se
poboljša ova zabrinutost jeste da se ima nekoliko escrow agencija i da se dozvoli korisnicima da
dele ključ između n njih, tako da m od n mora sarađivati da bi odredili ključ. Alisa može onda
odrediti n escrow agencija koje ona smatra najpoverljivijim i ima svoju tajnu podelu između ovog
koristeći m od n šemu tajne razmene.
Shamirova šema tajne razmene može biti korištena da se izvrši takva key escrow šema. Na
primer, pretpostavimo da je n = 3 i m = 2 i Alisin ključ S. Onda ''2 od 2'' šema predstavljena na
Slici 5.3 može biti korištena, na primer, kada Alisa može izabrati da ima Odeljenje pravde koje
ima tačke (X0, Y0), Odeljenje za trgovinu (X1, Y1) i Fredov key escrow kompanija koja ima tačke
(X2 ,Y2). Onda bilo koje dve od ove tri escrow agencije moraju sarađivati da bi odredile Alisin
ključ S.
KA za Alisu
KB za Boba
KC za Čarlija
KD za Dejva.
Alisa, Bob i Čarli ne vole Dejva, tako da oni sarađuju da bi videli da li mogu odrediti Dejvov
ključ. Ako se Dejvov ključ K D može biti predviđen iz znanja ključa KA, KB i KC onda je sigurnost
sistema razbijena.
5.7.2.1 Texas Hold 'em Poker. Sada razmotrimo jedan realan primer koji lepo
ilustruje loš način generisanja kriptografskih nasumičnih brojeva. ASF softver korporacija je
razvila online verziju igre sa kartama poznatu kao Texas hold 'em poker. U ovoj igri, nekoliko
''zajedničkih karata'' se dele sa licem nagore, tako da svako može videti karte. Svaki igrač takođe
prima neke karte za sebe, koje samo on može videti. Svaki igrač koristi svoje karte zajedno sa
zajedničkim kartama. Igra uključuje nekoliko rundi klađenja jer su zajedničke karte otkrivene. Ova
igra je prikazana na Slici 5.4.
Na online verziji ove igre, nasumični brojevi su korišteni da mešaju virtuelni špil karata.
ASF softver ima ozbiljan problem, jer su nasumični brojevi korišteni da mešaju špil karata. Kao
rezultat, program ne pravi pravo nasumično mešanje i moguće je da igrač vara određujući čitav
špil u isto vreme. Na taj način igrač koji vara zna sve karte kod ostalih igrača.
Kako je to moguće? Prvo, primetite da postoji 52! > 2255 mogućih mešanja špila od 52
karte. ASF poker program koristi ''nasumične'' 32-bitni intidžer da odredite mešanje. Na osnovu
toga, program može generisati najviše 232 različitih mešanja od 2255 mogućnosti.
Da bi generisali ''nasumično'' mešanje, program koristi da izgradi Paskal pseudo nasumični
generator brojeva, ili PRNG. Nadalje, PRNG je podeljen na svakim mešanjem, sa nosećom
vrednosti koja je poznata kao funkcija broja milisekundi od ponoći. Broj milisekundi u toku dana
je
AFS Texas Hold ’em Poker program je dobar primer da se vide loši efekti koristeći
predvidljivih nasumičnih brojeva gde su potrebni kriptografski nasumični brojevi. Iako mešanje ne
može biti potpuno predviđeno, broj mogućih nasumičnih mešanja je tako mali da je moguće razbiti
sistem.
Kriptografski nasumični brojevi se ne mogu predvideti. Na primer, keystrem generisan na
osnovu bilo koje sigurne sekvencijalne šifre mora biti nepredvidiv. To znači da keystrem iz RC4
šifre može biti dobar izvor kriptografskih nasumičnih brojeva. Međutim, odabir ključa (koji
postupa kao početna vrednost koja se deli za RC4 u ovom slučaju) je još uvek kritičan problem.
U ovom delu govorićemo o dva aspekta skrivanja informacija, tj. steganografija i digitalni
watermarking. Steganografija ili ''tajno pisanje'', je način skrivanja činjenica da je ta informacija
prosleđena. Jedan primer watermarka je skrivanje identifikacionih informacija u digitalnoj muzici
da bi se u cilju identifikovanja odgovornih za ilegalne preraspodele.
U priči koja se odnosi na Herodota (oko 440 godine pre Hrista) , grčki genereal je obrijao
glavu jednog roba i napisao poruku na njegovoj glavi kao upozorenje na persijsku invaziju. Kada
je porasla robova kosa dovoljno porasla i sakrila poruku, roba su poslali kroz neprijateljsku vojsku
da isporuči skrivenu poruku drugom generealu. Tokom vojne istorije, steganografija se više
koristila od kriptografije.
Moderna verzija steganografije uključuje skrivanje informacija u medijima, kao što su
slike, audio podaci, ili čak i softver [218]. Ovaj tip skrivanja informacija može biti viđen kao oblik
prikrivenog kanala – tema kojoj ćemo se vratiti kada budemo govorili o višenivovskoj sigurnosti u
Poglavlju 8.
Digitalni watermark je skrivanje informacija za drugu svrhu. Postoji nekoliko vrsta
watermarka; u jednoj vrsti ’’nevidljiv’’ identifikator je dodat u podatak. Na primer, jedan
odentifikator može biti dodat u digitalnu muziku, tako da ako se piratska verzija pojavi, watermark
može biti pročitan i prodavac – i pirat – može biti identifikovan. Takve tehnike su razvijene za
gotovo sve tipove digitalne muzike, kao i za softvere.
Digitalni watermark postoji u nekoliko vrsta, uključujući
Na primer, možemo uneti snažanu nevidljivu oznaku u digitalnoj muzici u cilji otkrivanja
piraterije. Onda kada se piratska muzika pojavi na Internetu možda možemo vratiti izvor nazad. Ili
možemo uneti slab nevidljivi watermark u audio fajl. Ako je watermark nečitak, primalc zna da se
opasnost dogodila. Ovaj drugi pristup je bitna forma provere integriteta. Razne druge kombinacije
watermarka mogu biti korišteni.
Mnoge moderne valute uključuju (ne digitalne) watermarkove. Nekoliko američkih
papirnih novčanica, uključujući 20$ prikazana na Slici 5.5 ima vidljiv watermark. Na novćanici od
20$ slika predsednika Jacksona je umetnuta sama u papir, na desnom delu novčanice, i vidljiva je
kada je podignete na svetlost. Ovaj vidljivi watermark je dizajniran da oteža falsifikovanje, jer je
potreban poseban papir da bi se lako kopirao ovaj watermark.
Slika 5.5 Novčanica sa žigom
Jedna šema watermarka koja je predložena može uneti nformaciju u sliku na takav način da ako se
slika ošteti može se rekonstruisati čitava slika iz preostalog dela orginala [129]. To znači da
jedanan kvadratni inč slike može sadrati dovoljno informacija da rekonstruiše čitavi sliku, bez
uticaja na kvalitet slike.
Hajde da obratimo pažnju na veoma jednostavan pristup steganografiji koji je prihvatljiv
kod digitalne slike. Slika koristi 24 bita za boju – po jedan bajt za crvenu, zelenu i plavu, koje se
označavaju sa R, G, B. Na primer, boja predstavljena preko (R, G, B) = (0x7E, 0x52, 0x90) je
mnogo drugačija od (R, G, B) = (0xFE, 0x52, 0x90), iako se ove tri boje razlikuju smao u jednom
bitu. Sa druge strane, boja predstavljena kao (R,G,B) = (0xAB, 0x33, 0xF0) je neprimetno različita
od (R,G,B) = (0xAB, 0x33, 0xF1), koji se takođe razlikuju za jedan bit. Zapravo, RGB biti niskog
reda su zanemarljivi, jer oni predstavljaju neprimetne promene u boji. Pošto RGB biti niskog reda
nisu važani, možemo koristiti ove bite da ’’sakrijemo’’ informacije.
Obratimo pažnju na dve Alisine slike na Slici 5.6. Leva slika ne sadrži skrivene
informacije, dok desna slika sadrži čitavu kljugu ’’Alisa u zemlji čuda’’ u PDF formatu, smeštenu
u RGB bite niskog reda. Ljudskom oku se ove dve slike čine istim, bez obzira na rezoluciju. Dok
je ovaj primer vizuelno divan, važno je zapamtiti da ako uporedimo bite ove dve slike, videćemo
razlike. Posebno je lako za napadača da napiše program izvuče RGB bite nižeg reda ili da prepiše
bite sa ostatkom pri čemu će uništiti skrivenu informaciju, ali neće oštetiti sliku.
5.8 UKRATKO
U ovom poglavlju govorili smo o kriptografskim heš funkcijama, koje su mnogo korisne u zaštiti, i
objasnili smo detaljno Tiger heš. Govorili smo o HMAC-u i drugim interesantnim namenama heš
funkcija, uključujući šemu smanjenja spamova.
Takođe smo govorili o nekoliko tema koje se odnose na kriptografiju koja se ne uklapa u
druga poglavlja. Shamirova šema tajne razmene nudi sigurnu metodu za deljenje tajne u svakom m
od n rasporeda. Govorili smo o nasumičnim brojevima, tema koja je od važnosti za zaštitu, jer
nasumični brojevi proizilaze iz mnogih sigurnosnih konteksta. Dali smo primer da prikažemo
zamke kod nepravilnog korišćenja kriptografskih nasumičnih brojeva gde se oni zahtevaju.
Poglavlje smo završili sa kratkom diskusijom o skrivanju informacija. Iako u praksi ni
steganografija ni watermark nisu dokazani kao snažni, postoji mogućnost da će se to tek dogoditi.
6
NAPREDNE
KRIPROANALIZE
It is the glory of God to conceal a thing:
but the honor of kings is to search out a matter.
—Proverbs 25
6.1 UVOD
U ovom poglavlju govorićemo o sledećim tehnikama napredne kriptoanalitike
Ovi napadi predstavljaju samo mali uzorak u odnosu na mnoge tehnike koje su razvijene u
poslednje vreme. Ali svaki od njih predstavlja značajan generalni kriptoanalitički princip.
Linerana i diferencijalna kriptoanaliza se ne koriste da direktno napadaju kriptosisteme.
Umesto toga, oni se koriste da analiziraju blokovske šifre na dizajnerske slabosti. Kao rezultat,
blokovske šifre su dizajnirane tako da imaju na umu ove tehinke. Da bi razumeli dizajnerske
principe koji se danas koriste u blokovksim šiframa, potrebno je prethodno imati određeno znanje
o lineranim i diferencijalnim kriptoanalizama.
Sporedni kanal nije nameran izvor informacija. Na primer, korišćenje energije ili pažljiv
proračun vremena može otkriti informacije o osnovnim izračunavanjima. Napadi proračuna
vremena su se uspešno koristili na nekoliko sistema javnih ključeva, a o takvom napadu smo
govorili kod RSA. Iako napadi sporednog kanala nisu klasične kriptoanalitičke analize, ovi napadi
su se u skorije vreme koristili da razbiju mnoge šeme šifrovanja, tako da je kritično da se
razumeju implikacije takvih napada.
U poglavlju o kriptografiji javnih ključeva, spomenuli smo napade na knapsack
kriptosisteme. U ovom delu, objasnićemo obaj napad detaljnije. Nećemo mnogo govoriti o
matematici, ali ćemo obezbediti dovoljno informacija da bi razumeli koncept iza napada i da
napišemo program koji implementira napad. Ovo je relativno jednostavan napad koji veoma lepa
isustruje ulogu koju može igrati matematika u razbijanju kriptosistema.
Na kraju, govorićemo o Helmanovom napadu vremenske razmene memorije kod DES-a.
Ovaj napad veoma lepo predstavlja ulogu koju algoritam može igrati u kriptoanalizi.
Ideja iza diferencijanih napada jeste da se uporede ulazne i izlazne razlike. Zbog jednostavnosti,
koristićemo jednostavne S-kutije. Pretpostavimo da DES kao šifra koristi 3-bitnu do 2-bitnu S-
kutiju
(6.1)
Gde za ulazne bite x0x1x2, bit x0 indeksira red, dok x1x2 indeksiraju kolonu. Onda, na primer
Sbox(010)=11 jer biti u redu 0 i koloni 11 su jednaki 11.
Posmatrajmo dva ulaza, X1 = 110 i X2 = 010 i pretpostavimo da je ključ K = 011. Onda je
X1 ⊕ K = 101 i X2 ⊕ K = 001 i onda imamo
što upućuje na to da je K = 011. Ovaj ’’napad’’ je u suštini poznat napad na otvoreni tekst na jedan
S-box (6.1) za ključ K. Isti proces će raditi na jednom DES S-boxu.
Međutim, napadi na S-boxove u jednoj rundi DES-a nije posebno koristan. Pored toga,
napadač neće zanati ulaz ni za jednu rundu osim za prvu, i napadač neće znati izlaz ni jedne runde
sem poslednje. Srednje runde se pojavljuju da budu uznad delokruga kriptoanalitičara.
Za ovaj pristup da bismo dokazali da je koristan u analiziranju DES-a moraćemo biti u
mogućnosti da proširimo napad za jednu čitavu rundu, odnosno moramo uzeti u obzir svih osam
S-kutija istovremeno. Nakon što smo proširili napad za jednu rundu, onda moramo proširiti napad
na više rundi. Na površini, oboje se pojavljuju da budu zastrašujući zadaci.
Međutim, videli smo da fokusiranjem na ulazne i izlazne razlike lako je učiniti neke S-
kutije ''aktivnim'' i druge ''neaktivnim''. Kao rezultat, možemo u nekim slučajevima proširiti napad
za jednu rundu. Da proširimo napad na nekoliko rundi, moramo izabrati ulazne razlike tako da bi
izlazna razlika bila u odgovarajućoj formi za sledeću rundu. Ovo predstavlja izazov i zavisi od
specicfičnih osobina S-kutija, kao i linearnog mešanja koje se pojavljuje kod svake runde.
Ključna tačka ovde jeste da ćemo se fokusirati na ulazne i izlazne razlike. Pretpostavimo da
imamo ulaze X1 i X2. Onda za ulaz X1 stvarni unos u S-kutiju bi bio X1 ⊕ K, a za ulaz X2 stvarni
ulaz u S-kutiju bi bio X2 ⊕ K gde je ključ K nepoznat.
Razlike su definisane po modulu 2 upućujući na to da operacija razlike ista kao i operacije sume,
odnosno XOR. Onda je razlika ulaza S-kutije
tj. ulazna razlika je nezavisna od ključa K. Ovo je osnovno zapažanje koje omogućava
diferencijanoj analizi da radi.
Neka je Y1 =Sbox(X1 ⊕ K) i neka je Y2 =Sbox(X2 ⊕ K). Onda je izlazna razlika Y1 ⊕ Y2 je skoro
ulazna razlika sledeće runde. Cilj je da se uspešno konstruiše ulazna razlika tako da možemo
’’lančati’’ razlike kroz sledeće runde. Pošto je ulazna razlika nezavisna od ključa i pošto je
diferencijalna kriptoanaliza izabrana iz napada na otvoreni tekst mi imamo slobodu da biramo
ulaze tako da izlazne razlike imaju oblik kakakv želimo.
Još jedan ključan element diferencijalnog napada jeste da S-kutija sa ulaznom ralikom nula
uvek rezultira izlaznom razlikom nula. Zašto je ovo slučaj? Ulazna razlika od 0 jednostavno znači
da ulazne vrednosti X1 i X2 su iste i u tom slučaju izlazne vrednosti Y1 i Y2 moraju biti iste odnosno
da je Y1 ⊕ Y2 = 0. Važnost ovog osnovnog zapažanja jeste da možemo učinite S-kutije
’’neaktivnim’’ sa uvažavanjem diferencijanih kriptoanaliza birajući da njihove ulazne razlike budu
nula.
Poslednje opažanje jeste da nije potrebno da se stvari dogode sa sigurnošću. Drugim
rečima, ako se jedan rezultat dogodi sa nekom značajnom mogućnošću onda možemo biti u
mogućnosti da razvijemo napad verovatnoće koji će i dalje biti koristan u dobijanju ključa.
Data je bilo koja S-kutija i možemo je analizirati da li je korisna na osnovu ulaznih razlika.
Za svaku moguću vrednost ulaza X pronađi parove X1 i X2 tako da je X =X1 ⊕ X2 i izračunati
odgovarajuće izlazne razlike Y =Y1 ⊕ Y2 gde je Y1 = Sbox(X1) i Y2 = Sbox(X2). Rezultate ćemo
staviti u tabelu, i pronaći ćemo najpogodnije ulazne vrednosti. Na primer, za S-kutiju 6.1, ova
analiza upućuje na rešenje u Tabeli 6.1.
Za bilo koju S-kutiju, ulazna razlike od 000 nije interesantna jer to znači da su ulazne
vrednosti iste i da je S-kutija ’’nekativna’’ jer izlazne vrednosti moraju biti iste. Na primer, u
Tabeli 6.1 ulazna razlika od 010 uvek daje izlaz od 01, šro je i napogodniji mogući rezultat.
I kao što je rečeno u jednačini 6.3 uzimajući, recimo X 1 ⊕ X2 =010 stvarni unos razlika u S-kutiju
bi bio 010 jer ključ K ispada iz razlike.
Diferencijalna kriptoanaliza DES-a je prilično kompleksna. Da bismo analizirali ovu
tehniku mnogo konkretnije, ali bez svih kompleksnosti koje se nalaze u DES-u, predstavićemo
scaled verziju DES-a odnosno Tiny DES ili TDES. A onda ćemo primeniti diferencijalnu i
linearnu kriptoanalizu na TDES. Ali prvo ćemo predstaviti kratak pregled linearne kriptoanalize.
Da bi ove linerane aproksimacije bile korisne tokom napada na blokovske šifre kao što je DES,
pokušaćemo da proširimo ovaj pristup tako da možemo rešiti linerane jednačine za ključ. Kao i
kod diferencijalnih kriptoanaliza moramo nekako ''ulančati'' ove rezultate kroz višestruke runde.
Koliko dobro možemo približiti S-kutije sa linernim funkcijama? Svaka DES S-kutija je
dizajnirana tako da nijedna linerana kombinacija izlaza nije dobra aproksimacija jednog izlaznog
bita. Međutim, postoje linerane kombinacije izlaznih bita koje mogu biti aproksimirane preko
linernih kombinacija ulaznih bita. Kao rezultat, postoji potencijala za uspeh u lineranoj
kriptoanlizi DES-a.
Kao diferencijalana kriptoanaliza i linearna kriptoanaliza DES-a je kompleksna. Da bismo
ilustrovali linerani napad objasnićemo TDES. I onda ćemo primeniti diferencijalnu i lineranu
kriptoanalizu na DES.
TDES nema P-kutija, početnu ili završnu permutaciju. U suštini, mi smo eliminisali sva svojstva
DES-a koji ne doprinose njenoj sigurnosti, dok smo u isto vreme smanjili blok i veličinu ključa.
Primetite da mali ključ i veličina bloka upućuju na to da TDES ne može doprineti bilokojoj
realnoj zaštiti, bez obzira na osnovni algoritam. Ipak, TDES je koristan alat za razumevanje
diferencijalnih i linearnih napad, kao i značajnijih pitanja o dizajnu blokovske šifre.
TDES je Festel šifra, i mi ćemo otvoreni tekst označiti kao (L0,R0). Onda za i = 1,2,3,4
Li = Ri−1
Ri = Li−1 ⊕ F(Ri−1,Ki )
gde je otvoreni tekst (L4,R4). Jedna runda TDES-a je predstavljena je na Slici 6.2, gde je broj bita
označen na svakoj liniji. Dalje, ćemo potpuno objasniti sve delove TDES algoritma.
TDES ima dve S-kutije, koje ćemo označiti sa SboxLeft(X) i SboxRight(X). Obe S-kutije
pretvaraju 6 bita u 4 bita kao i u standardnom DES-u. Deo TDES koji je nama najinteresantnije su
S-kutije i njihov ulaz. Da bi pojednostavili označavanje, definisaćemo funkciju
F(R,K)=Sboxes(expand(R) ⊕ K)
(6.4)
gde
Sboxes(x0x1x2 . . . x11)=(SboxLeft(x0x1 . . . x5), SboxRight(x6x7 . . . x11)).
expand(R)=expand(r0r1r2r3r4r5r6r7)=(r4r7r2r1r5r7r0r2r6r5r0r3). (6.5)
Kao sa DES-om, svaki red u TDES S-kutiji je permutacija heksadecimalnih brojeva {0, 1, 2
, . . . ,E, F}.
Raspored ključa u TDES-u je veoma jednostavan. Ključ od 16 bita je ozanačen kao
K =k0k1k2k3k4k5k6k7k8k9k10k11k12k13k14k15
LK = k0k1 . . . k7
RK = k8k9 . . . k15.
LK = rotate LK left by 2
RK = rotate RK left by 1
i Ki je dobijeno odabirom bita 0, 2, 3, 4, 5, 7, 9, 10, 11, 13, 14, i 15 od (LK, RK). Podljuč Ki je dat
eksplicitno kao
K1 = k2k4k5k6k7k1k10k11k12k14k15k8
K2 = k4k6k7k0k1k3k11k12k13k15k8k9
K3 = k6k0k1k2k3k5k12k13k14k8k9k10
K4 = k0k2k3k4k5k7k13k14k15k9k10k11
U sledećem delu, objasnićemo diferencijalni napad na TDES. Posle toga objasnićemo linerani
napad na TDES. Ovi napadi ilustruju osnovne principe koji se primenjuju kod diferencijalne i
linearne kriptoanalize DES-a i drugih blokovskih šifri.