Sie sind auf Seite 1von 101

1

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

1.1 ULOGE KARAKTERA


Prema tradiciji, Alisa i Bob su dobri. Ponekad su nam potrebni dodatni dobri momci kao što je
Čarli.
Trudi je naš generički loš momak, koji pokušava da napadne sistem na neki način. Neki autori
zapošljavaju tim loših momaka čije ime upućuje na određene loše aktivnosti. U ovom slučaju
Trudi je uljez, Eva je prisluškivač ... Trudi će biti naš loš momak za svaku svrhu.
Alisa, Bob i Trudi i ostatak grupe ne moraju biti ljudi. Na primer, jedan mogući scenario jeste da
je Alisa laptop, Bob server, a Trudi čovek.

1.2 ALISINA ONLINE BANKA


Pretpostavimo da Alisa osniva online bankarski posao, koji se zove Alisina online banka – AOB.
Koji su Alisini interesi za sigurnost informacija? Ako je Bob Alisin korisnik koji su njegovi
interesi za sigurnost informacija? Ako pogledamo AOB sa Trudine strane, koje sigurnosne
ranjivosti možemo videti?
Prvo razmotrimo tradicionalnu trojku, poverljivost, integritet i raspoloživost u kontekstu Alisine
banke. A onda ćemo obratiti pažnju na druge sigurnosne interese.
1.2.1 POVERLJIVOST, INTEGRITET I RASPOLOŽIVOST

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.

1.2.2 IZNAD PIR

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 O OVOJ KNJIZI


Lapson [139] smatra da stvarna svetska sigurnost zavisi od sledeće tri stvari:

 Specifikacija/načelo: Šta je sistem u mogućnosti da uradi?


 Implementacija/mehanizam: Kako on to radi?
 Ispravke/osiguranje: Da li on to stvarno radi?

A ja bih dodao i četvrto:

Ljudska priroda: Može li sistem preživeti ''pametne'' korisnike?

U središtu ove knjige je kao primarno implementacija/mehanizam. Ja verujem da je to prihvatljivo


jer snage, slabosti i vezana ograničenja direktno utiču na sve druge kritične apekte sigurnosti.
Drugim rečima, bez razumnog shvatanja mehanizma nije moguće ni diskutovati o mnogim drugim
temama. Kategorisao sam predmete razgovora u ovoj knjizi u četiri glavana dela. Prvi deo se bavi
kriptografijom, a druga dva dela pokrivaju pristup kontroli i protokolima. Poslednji deo se bavi
softverom.

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.2 KONTROLA PRISTUPA

Kontrola pristupa se bavi autentifikacijom i autorizacijom. Pod autentifikacijom podrazumevamo


mnoge stvari koje se odnose na lozinke. Lozinke su danas najviše korištena forma autentifikacije,
ali pre svega zato što su besplatne, a definitivno ne zato što su sigurne.
Naučićemo kako da napravimo sigurnu lozinku. A onda ćemo govoriti o temama koje
okružuju odabir sigurnih lozinki. Iako je moguće izabrati jake lozinke koje su relativno lake za
zapamtiti, važno je ubediti korisnike na takva načela. U stvari, slabe lozinke su glavni razlog
slabosti zaštite u današnjim sistemima.
Alterantiva lozinkama uključuje biometriku i smart kartice. Razmotirćemo i neke metode
biometrijske autentifikacije.
Autorizacija se bavi ograničenjem smeštenim na sutentifikacione korisnike. Kada je Alisa
sigurna da je Bob stvarno Bob, ona mora primeniti ograničenja na Bobove aktivnosti. Dve
klasične metode za primenu takvih ograničenja lista kontrola pristupa i ovlašćenja. Preći ćemo
prednosti i mane ove dve metode.
Autorizacija podrazumeva nekoliko relativno specijalizovanih tema. Govorićemo o
višenivovskoj zaštiti. Na primer, vojska ima informacije koje su TOP SECRET i SECRET. Neki
korisnici mogu videti obe vrste informacija, a neki samo SECRET. Ako su oba tipa informacija na
jednom sistemu kako ćemo primeniti takvu vrstu ograničenja. Ovo je prednet autorizacije, koja
ima potencijalne implementacije iznad klasifikovanih vojnih i vladinih sistema.
Višenivovska zaštita se odnosi na retka područja modelinga zaštite. Iza područje takvih
modelinga leži suština potreba za zaštitu sistema. Verifikujući nekoliko jednostavnih potreba mi
znamo da taj sistem zadovoljava određeni model zaštite. Ako je tako sistem može automatski da
nasledi sve potrebe zaštite koje su poznate na bi takav sistem postojao. Danas mi poznajemo dva
jednostavna modela zaštite i oba se razvijaju u oblasti višenivovske zaštite.
Višenivovska zaštita daje mogućnost razgovora o željenim programima i izvođenjima
kontrole. Željeni programi su neodređeni programi za komunikaciju. Takvi programi su zajednički
i kreiraju potencijalne probleme zaštite. Kontrola izvođenja teži da ograniči informacije koje mogu
nenamerno dovesti do baze podataka na osnovu legitimnih upita korisnika. Oba problema su teški
za bavljenje sa efikasnošću u realnom sistemu.
Pošto se firewall-ovi ponašaju kao oblik pristupa kontrole za mrežu mi proširujemo već
poznatu definiciju pristupa kontrole da i ona uključuje i firewall-ove. Bez obzira na tip pristupa
kontrole napadi se uvek mogu dogoditi. Sistem za detekciju napada (IDS) je dizajniran da
detektuje napad u razvoju. Zato diskusiju o IDS tehnikama posle diskusije o firewall-ovima.

1.3.3 PROTOKOLI

Govorićemo o protokolima. Prvo ćemo razmotriti problem o autentifikaciji na mreži. Obradićemo


mnoge primere, od kojih svaki ilustruje neku od specifičnih klopki u zaštiti. Na primer, replay je
kritični problem, i mi ćemo obraditi načine na koji se taj napad može izbeći.
Kriptografija će se pokazati korisnom u protokolima autentifikacije. Daćemo neke primere
za protokole koji koriste simetričnu kriptografiju, kao i primere koji se odnose na javne ključeve
kriptografije. Heš funkcije takođe igraju važnu ulogu u protokolima zaštite.
Naše izučavanje jednostavnih autentifikacionih protokola će ilustovati neke od manjih
protokola koji mogu prerasti u polje protokola zaštite. Očigledno beznačajna promena u protokol
može potpuno promeniti njegovu sigurnost. Takođe ćemo istaći nekoliko specifičnih tehnika koje
se koriste u realnosti.
Onda ćemo nastaviti sa proučavanjem četiri specifična sigurnosna protokola. Prvi od njih je
Secure Socket Layer ili SSL koji se koristi da zaštiti elektronsko poslovanje. SSL je elegantan i
efikasan protokol.
Onda ćemo govoriti o IPsec, koji je drugi internet sigurnosni protokol. SSL i IPsec imaju
mnoge slićnosti, ali se implementacija veoma razlikuje. Nasuprot SSL-u IPsec je kompleksan i
''preterano projektovan''. Ali bez obzira na kompleksnost IPsec ima nekoliko sigurnosnih rupa,
uprkos opširnom i otvorenom procesu razvoja. Ovo lepo opisuje nerazdvojive izazove u razvoju
sigurnosnih protokola.
Treći protokol o kome ćemo govoriti je Kerberos, a on je jedan autentifikacioni sistem
baziran na simetričnoj kriptografiji. Kerberos-a prati mnogo drugačiji pristup nego kod SSL-a i
IPsec-a.
Govorićemo o mehanizmima sigurnosti uposlenim u GSM-u u sistemu mobilnih telefona.
Iako je GSM sigurnosni protokol veoma jednostavan, veoma je interesantan za proučavanje zbog
mnogobrojnih napada. Ovi napadi uključuju razne kombinacije napada na protokol kao i na
kriptografiju unutar njega.

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.4 PROBLEM ČOVEKA


Pametni korisnici imaju sposobnost da unište najbolje postavljene planove sigurnosti. Na primer,
pretpostavimo da Bob želi kupiti nešto preko Amazon.com. Bob može koristiti svoj web
pretraživač da se sigurno spoji sa amazonom koristeći SSL protokol (Deo III), koji se oslanja na
kriptografske tehnike (Deo I). Razni pristupi kontroli nastaju u takvim transakcijama (Deo II) i svi
mehanizmi sigurnosti su sprovedeni u softveru (Deo IV). Videćemo u poglavlju 10. da će takav
napad na transakciju prouzrokovati da Bobov web pretraživač prikaže upozorenje. Nažalost, Bob
je običan korisnik, on će jednostavno ignorisati upozorenje što će prouzrokovati pobedu nad
zaštitom – bez obzira koliko je kriptografija sigurna, koliko su dobro dizajnirani protokoli i
mehanizmi pristupa kontroli i koliko je softver nepogrešiv.
Da uzmemo još jedan primer, veliki deo bezbednosti danas se oslanja na lozinke. Korisnik
želi da izabere da lako zapamti lozinku, ali to će omogućiti Trudi da lakše pogodi lozinku – kao
što je diskutovano u poglavlju 7. Jasno rešenje je dodeliti jake lozinke korisnicima. Međutim, ovo
je skoro izvesno da će lozike biti zapisane u notes i smeštene na vidljivo mesto, što će činiti sistem
manje sigurnim nego da su korisnici sami birali svoje (relativno slabe) lozinke.
Primarna namena ove knjige je razumevanje mehanizama sigurnosti – unutrašnjosti i
spoljašnjosti informacione zaštite. Na nekoliko mesta ''problem čoveka'' je obrađen, ali je moguće
napisati još mnogo toga na tu temu. Za više informacija o ulozi koju ljudi igraju u zaštiti
informacija, možda najbolji izvor je Ross Andersonova odlična knjiga [14], koja je ispunjena sa
slučajevima neuspeha sigurnosti, od kojih najviše njih ima korene pretežno u ljudkoj prirodi.

1.5 PRINCIPI I VEŽBE


Ovo nije teorijska knjiga. Svesno smo pokušali da obradimo i neke praktične probleme, a gde je
teorija potrebna, trudiću se da je svedem na minimum. Moj cilj je da prestavim dovoljno teorije da
čitalac može dokučiti osnovne principe. Za više teorije o mnogim temama obrađenih u ovoj knjizi
Bishopova knjiga [27] je logičan izbor.

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

The solution is by no means so difficult as you might


be led to imagine from the first hasty inspection of the characters.
These characters, as any one might readily guess,
form a cipher—that is to say, they convey a meaning. . .
—Edgar Allan Poe, The Gold Bug

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:

 kriptografiju simetričnih ključeva,


 javne ključeve,
 heš funkcije, i
Slika 2.1. Kripto kao crna kutija

 unapređene kriptoanalize.

2.2 KAKO GOVORITI KRIPTO


Osnovna terminologija za kripto obuhvata sledeće:

 Kriptologija je umetnost i nauka pravljenja i razbijanja ''tajnih kodova. ''


 Kriptografija je pravljenje ''tajnih kodova. ''
 Kriptoanaliza je razbijanje ''tajnih kodova.''
 Kripto je sinionim za sve gore navedeno (ali i više od toga). Precizno značenje će biti jasno
iz konteksta.

Š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.

2.3 KLASIČNI KRIPTO


Ispitaćemo četiri klasična kriptosistema, od kojih će svaki islustrovati neko određeno bitno
svojstvo. Prvi na našem redu je šifra zamene, koja je jedna od najstarijih kriptosistema i datira još
od pre 2000 godina i idelana je za prikaz osnovih napada. Onda ćemo obratiti pažnju na dvostruku
transpoziciju, koja uključuje važne koncepte koji se koriste u modernoj kriptografiji. Takođe ćemo
govoriti o kodnoj knjizi, pošto se mnoge moderne šifre mogu videti kao ''elektronski'' jednake
kodnim knjigama. Na kraju, razmotrićemo jedini praktični kriptosistem koji je verovatno siguran –
a to je one-time pad.

2.3.1 ŠIFRA ZAMENE

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

Sada bi trebalo biti jasno zašto se ovo zove šifra zamene.


Da bi dešifrovali, jednostavno pogledamo pogledamo slovo u šifratu u šifarskom redu i
zamenomo ga sa odgovarajućim slovom iz otvorenog teksta, ili jednostavno pomerimo svako
slovo za tri mesta unazad. Šifra zamene sa pomeranjem za tri mesta je pozanat kao Cezarova šifra
jer ju je uspešno koristio Julije Cezar. Ako ograničimo šifru zamena na pomeranje,onda su mogući
ključevi n∈{0,1,2,....25}. Preptostavimo da Trudi presretne poruku

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.

2.3.2 KRIPTOANALIZA PROSTE ZAMENE

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

Slika 2.2 Učestalost slova u engleskom jeziku

šifrat mnogo pre 4450 milenijuma!


Ovaj napad na šifre zamene pokazuje da veliki prostor ključeva nije dovoljan da bi se
obezbedila sigurnost. Ovaj napad takođe pokazuje da dizajneri šifri se moraju čuvati pametnih
napadača. Ali kako se možemo zaštititi od svih takvih napada, dok se pametni novi napadi u isto
vreme razvijaju. Odgovor je da se ne možemo zaštititi. Kao rezultat, šifrat se može smatrati
sigurnim dok god ga nijedan napad na njega nije otkriven. A što je više veštijih kriptografa
pokušalo da razbiju šifru i nisu uspeli, to znači da više poverenja možemo imatu u sistem.

2.3.3 DEFINICIJA SIGURNOSTI

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.

2.3.4 DVOSTRUKA TRANSPOZICIJA

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

Šifrat je sada pročitan iz poslednjeg niza:


NADWTKCAATAT (2.2)

Za dvostruku transpoziciju ključ se sastoji od veličine matrice i permitacije redova i kolona.


Primalac, koji zna ključ može jednostavno staviti šifrat u odgovarajuću matricu i uraditi
permutaciju unazad da bi dobio otvoreni tekst.
Na primer, da bi dešifrovali šifrat 2.2 prvo ga stavimo u 3x4 niz. Onda kolone su (4,2,1,3) i treba
ih reorganizovati u (1,2,3,4). Onda su redovi (3,2,1) i treba ih reorganizovati u (1,2,3) kao što je
prikazano

i otkrili smo otvoreni tekst, attackatdawn.


Za razliku od šifre zamene, dvostruka transpozicija ne čini ništa da bi prikrila slova u
poruci. Ali se pojavljuje nasuprot napadu koji se oslanja na statističke informacije obuhvaćene u

Tabela 2.1. Skraćeni alfabet.

otvorenom tekstu, iako je statistika otvorenog teksta istrošene kroz sifrat.


Dvostruka transpozicija nije prosta čifra koju treba razbiti. Ideja ’’zamazivanja’’
informacija u otvorenom tekstu u šifratu je tako korisna da je uposlena u modernim blokovskim
šiframa.

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

Pretvaranjem bitova šifrata ponovo u slova, rezultat je srlhssthsr.


Kada Bob primi Alisinu poruku, on je dešifruje pomoću istog ključa,

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

i tako će dobiti orginalni otvoreni tekst.


Hajde da razmotrimo nekoliko scenarija. Prvo, pretpostavimo da Alisa ima neprijatelja koji
se zove Čarli i koji ima svoji špijunsku organizaciju. Čarli tvrdi da je pravi ključ korišten za
šifrovanje Alisine poruke

101 111 000 101 111 100 000 101 110 000 .

Kada Bob dešifruje šifarski tekst koristeći taj ključ, on dobije

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

Bob koji ne razume kripto, naredi da se Alisa dovede na ispitivanje.


Sada razmotrimo drugi scenario. Pretpostavimo da je Alisa uhapšena od strane njenih
neprijatelja, koji su takođe presreli šifrat. Neprijatelji žele pročitati poruku i Alisa je primorana da
im da ključ ove super tajne poruke. Alisa tvrdi da je ona agent i da je ključ sledeći
111 101 000 011 101 110 001 011 101 101 .

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 oba su šifrovana sa istim ključem K=110 011 101 111. Onda

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

P1=kill =011 010 100 100.

Onda može otkriti odgovarajući ključ

I ona može koristiti ovo K da ’’dešifruje’’ C2 i rezulta 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.

2.3.6 PROJEKAT VENONA

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.

[C% Ruth] learned that her husband [v] was called up


by the army but he was not sent to the front. He is a
mechanical engineer and is now working at the ENORMOUS
[ENORMOZ] [vi] plant in SANTA FE, New Mexico.
[45 groups unrecoverable]
detain VOLOK [vii] who is working in a plant on ENORMOUS.
He is a FELLOWCOUNTRYMAN [ZEMLYaK] [viii]. Yesterday he
learned that they had dismissed him from his work. His
active work in progressive organizations in the past was
cause of his dismissal.
In the FELLOWCOUNTRYMAN line LIBERAL is in touch with
CHESTER [ix]. They meet once a month for the payment of
dues. CHESTER is interested in whether we are satisfied
with the collaboration and whether there are not any
misunderstandings. He does not inquire about specific
items of work [KONKRETNAYa RABOTA]. In as much as CHESTER
knows about the role of LIBERAL’s group we beg consent to
ask C through LIBERAL about leads from among people who
are working on ENOURMOUS and in other technical fields.

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.

2.3.7 KODNA KNJIGA

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

TABLE 2.4. Kodna knjiga sa izbora 1876. godine

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.

Jedan pravi šifrat je izgledao ovako

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.

2.4 ISTORIJA MODENE KRIPTOGRAFIJE


Ne dozvolite da vam juče oduzme prevuše od danas.
- Abraham Lincoln

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.

Slika 2.5 Enigma


Ova dva koncepta – konfuzija i difuzija – su i dalje vodeći principi u pravljenju šifara danas. U
sledećem poglavlju, postaće jasno zašto su ovi koncepti presudni u modernim blokovskim
šifarskim sistemima.
Do nedavno, kriprografija je bila samo u domenu vlade. To se dramatično promenilo 1970-
ih godina, prvenstveno zbog kompjuterske revolucije, koja je vodila do potrebe za zaštitu velike
količine elektronskih podataka. Sredinom 1970-ih čak je i američka vlada shvatila da postoji
legitimna komercijalna potreba za sigurnom kriptografijom, i bilo je jasno da su komercijani
proizvodi svakog dana nedostajali. Nacionalni zavod za standarde ili NBS izdaje zahtev za
kriptografskim algoritmima. Krajnji rezultat ovog procesa je bio poznat kao Data Encryption
Standard ili DES, koji je postao službeni standard američke vlade. Moguće je naglasiti ulogu koju
je DES igrao u modernoj kriptografskoj istoriji. Govorićemo mnogo više o DES-u u sledećem
poglavlju.
Posle DES-a, akademsko zanimanje za kriptografiju je rasla ubrzano. Kriptografija javnih
ključeva je otkrivena (ili preciznije, ponovo otkrivena) kratko posle nastanka DES-a. Tokom
1980-ih, održavana je godišnja KRIPTO konferencija, koja je dosledno prikazivala visok kvalitet
rada u ovoj oblasti. Tokom 1990-ih, Clipper Chip i razvoj zamene za starenje DES-a bili su dva od
mnogih kripto vrhunaca.
Vlada je nastavila da finansira glavne organizacije koje rade na kriptu i povezanim
oblastima. Međutim, jasno je da je duh kripta pobegao iz vladine boce i nikada se tamo neće
vratiti.

2.5 RAZVRSTAVANJA U KRIPTOGRAFIJI


U sledeća tri poglavlja, razmotrićemo tri kategorije šifri: simetrične šifre, kriptosisteme javnih
ključeva i heš funkcije. Ovde ćemo samo ukratko reći nešto svakoj od tri navedene kategorije.
Dok se razlika između javnih ključeva i simetričnih ključeva može zanemariti, to znači da
kriptografija javnih ključeva može uraditi neke korisne stvari koje je nemoguće postići sa
simetričnim šiframa.
U kriptografiji sa javnim ključevima, ključevi za šifrovanje su mogu biti javni. Ako, na
primer, vi postavite svoj javni ključ na internet, svako ko ima internet konekciju može šifrovati
potuku za vas, bez prethodnog dogovora u odnosu na ključ. Ovo je pravi kontrast simertičnim
šiframa, gde se učesnici moraju unapred dogovoriti o ključu. Pre prihvatanja kriptografije javnih
ključeva, sigurna isporuka simetričnog ključa je bila Ahilova peta kriptografije. Spektakularan
slučaj o propasti simetrične šifre je da sistem distribucije može biti viđen u istraživanju špijunskog
lanca porodiceWalker. Porodica Walker je prodala kriptiografske ključve koje je američka vojska
koristila za Sovjetski Savez skoro dve decenije pre nego što je bila otkrivena [60, 71].
Kriptografija javnih ključeva ima drugu iznenađujuće i ekstremno korisno svojstvo, za koje
nema nema paralela u svetu simetrične kriptografije. Pretpostavimo da je poruka ’’šifrovana’’ sa
privatnim ključem umesto sa javnim. Pošto je javni ključ javni, svako može dešifrovati poruku. Na
prvi pogled, ovakvo šifrovanje se čini besmoslenim. Međutim, to može biti korišteno kao digitalna
forma rukom napisanog potpisa – svako može čitati potpis, ali samo je potpisnik kreirao potpis.
Kao o svim ovim temama, tako i o digitalnim potpisima govorićemo u sledećim poglavljima.
Sve što možemo uraditi sa simetričnim šiframa možemo takođe ispuniti i sa kriptografijom
javnih ključeva. Kriptografija javnih ključeva takođe omogućava da uradimo stvari koje ne
možemo sa simetričnom kriptografijom. Pa zašto onda ne koristimo kriptografiju javnih ključeva
za sve? Primarni razlog je brzina. Kriptografija simpertičnih ključeva je po svom opsegu brža od
javne kriptografije. Kao rezultat, simetrična kriptografija je korištena za šifrovanje većine golemih
podataka danas. Sada kriptografija javnih ključeva igra kritičnu ulogu u modernoj zaštiti
informacija.
Svaka o gore razmotrenih klasičnih šifri su simetrične šifre. Moderne simetrične šifre mogu
biti podeljene na sekvencijalne šifre i blokovske šifre. Sekvencijane šifre generalizuju one-time pad
pristup, žrtvujući sigurnost za ključ koji je razumne dužine. Blokovske šifre, generalizuju kondu
knjigu. U blokovskim šiframa ključ određuje kodnu knjigu, i dok god ključ ostaje iste dužine
koristi se ista kodna knjiga. Isto tako, kada se ključ promeni, druga kodna knjiga se izabere.
Dok su sekvencijalne šifre dominirale tokom Drugog svetskog rata, danas su blokovske
šifre kraljevi simetričnih šifri – sa nekoliko značajanih izuzetaka. Generalno govoreći, blokovske
šifre su lakše u otimizaciji za softversku implementaciju, dok su sekvencijalne šifre obično mnogo
efikasnije kod harvera.
Treća glavna kripto kategorija obuhvata heš funkcije. Ove funkcije uzimaju ulaz od bilo
koje veličine i proizvodi izlaz od fiksne veličine koji zadovoljava neka specifična svojstva. Nije
očigledno da takve funkcije korisne – ili da takve funkcije stvarno postoje – ali mi ćemo videti da
one postoje i da su veoma korisne za iznenađujuće veliki niz problema.

2.6 TAKSONOMIJA KRIPTOANALIZE


Cilj kriptoanalize jeste otkrivanje otvorenog teksta, ključa ili oboje. Po Kerkhovim principima, mi
pretpostavljamo da Trudi kriptoanalitičar ima potpuno znanje o unutrašnjem radu algoritama.
Druga osnovna pretpostavka jeste da Trudi ima pristup šifratu – inače zašto se mučiti oko
šifrovanja. Ako Trudi samo zna algoritme i šifrat onda ona mora izvesti samo šifrat napad. Ovo je
nejnezgodniji mogući scenario iz Trudine perspektive.
Trudine šanse za uspeh se mogu poboljšati ako ima pristup poznatom otvorenom tekstu. To
znači da Trudi mora znati nešto od otvorenog teksta i posmatrati odgovarajući otvoreni tekst. Ovo
podudaranje otvoreni tekst-šifrat para mogu obezbediti neke informacije o ključu. Ako je sve od
otvorenog teksta poznato, onda nema smisla u pronalaženju ključa. Ali je čest slučaj da Trudi ima
pristup (ili može pogoditi) neki deo otvorenog teksta. Na primer, mnoge vrste podatake sadrže
stereotipne hedere – e-mejl je odličan primer. Ako je takav podatak šifrovan, napadač može veoma
lako pogoditi neke delove otvorenog teksta i videti odgovarajući šifrat.
Često, Trudi može da izabere otvoreni tekst koji će biti šifrovan i može da vidi šifrat. Ovo
se zove napad izabranog otvorenog teksta. Kako je moguće da Trudi izabere otvoreni tekst?
Videćemo da neki protokoli šifruju sve što je poslato i šalju odgovarajući šifrat. Takođe je moguće
da Trudi ima ograničen pristup kriptosistemu, dozvoljavajući joj da šifruje otvoreni tekst koji je
ona izabrala. Na primer, moguće je da se Alisa zaboravila izlogovati sa njenog računara kada je
otišla na pauzu za ručak. Trudi tada može šifrovati neke izabrane poruke pre nego što se Alisa
vrati. Ovaj primer ''pauza za ručak napada'' ima nekoliko oblika.
Potencijalno, za uspešan napad mnogo je bolji napad prilagodljivo izabranog otvorenog
teksta. U ovom scenariju, Trudi izabere otvoreni tekst, vidi rezultirajući šifrat i izabere drugi
otvoreni tekst baziran na posmatranom šifratu. U nekim slučajevima, ovo može učiniti Trudin
posao veoma efikasnim. Napadi povezanog ključa su takođe veoma efikasni u nekim aplikacijama.
Ideja je da se traže slabosti sistema kada su ključevi povezani na neki poseban način.
Tu su druge vrste napada zbog kojih su kriptografi ponekad veoma zabrinuti – posebno
kada je potrebno da javno predstave neki novi akademski rad. U svakom slučaju, šifrat se može
smatrati sigurnim ako ako nije poznat nijedan uspešan napad na njega. Definisaćemo ''uspešan'' u
sledećem poglavlju.
Na kraju, postoji jedan poseban scenario napada koji se samo odnosi na kriptografiji javnih
ključeva. Pretpostavimo da Trudi presretne šifrat koji je šifrovala Alisa sa svojim javnim ključem.
Ako Trudi posumlja da je poruka otvorenog teksta je ili ''da'' ili ''ne'', onda ona može šifrovati oba
ova otvorena teksta i na taj način poruka je razbijena. Ovo je poznato kao pretraga unapred. Iako
pretraga unapred nema poseban efekat kod simetričnih šifri videćemo da ovaj pristup može biti
korišten za napad na heš funkcije i neke aplikacije.
Prethodno smo videli da ključ mora biti dovoljno veliki da spreči napadače da pretraži sve
moguće ključeve. Pretraga unapred upućuje na to da u kriptografiji javnih ključeva mi moramo biti
sigurni da je veličina otvorenog teksta dovoljno velika da napadač ne može jednostavno šifrovati
sve moguće poruke otvorenog teksta.

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

1. Korišćenjem Cezarove šifre, pronađite otvoreni tekst iz šifrata


VSRQJHEREVTXDUHSDQWU
2. Pronađite otvoreni tekst i ključ iz šifrata
CSYEVIXIVQMREXIH
znajući da je korištena šifra zamene sa pomerajem za n mesta.
3. ako imamo računar koji može testirati 240 ključeve u sekundi, koje je očekivano vreme da
će se pronaći ključ tokom iscrpne pretrage ključeva ako je prostor ključeva 2 128? Dajte svoj
odgovor u godinama.
4. Kako radi Vižnerova šifra? Dajte jedan primer. Upotrebite svoje znanje o statistici napada
na šifru zamene da bi konstuisali napad na Vižnerovu šifru.
5. Slaba šifra korištena tokom izbora 1876. godine upotrebljena je fiksna permutacija reči za
date rečenicu date dužine. Da bi videli da je slaba, pronađite permutaciju (0,1,2,3,...,10)
koja je korištena da proizvede izmešanu rečenicu dole, gde je ’’San Francisco’’ tretiran kao
jedna reč. Primetite da neka permutacija je bila korištena za sve tri rešenice.
first try try if you and don’t again at succeed
only you you you as believe old are are as
winter was in the I summer ever San Francisco coldest spent
6. Slaba šifra na izborima 1876. godine koristila je jednim delom kodnu knjigu, a drugim
delom permutaciju reči. Dizajnirajte mnogo sigurniju verziju ove šifre.
7. Definišite termine konfuzija i difuzija u kontekstu kriptografije? Razmotrite klasične šifre
koje koriste samo konfuziju i takođe razmotrite klasične šifre koje koriste samo difuziju.
Koje šifra obrađena u prethodnom poglavlju koristi i konfuziju i difuziju?
8. Dešifrujete primer jednostavene zamene u otvorenom tekstu 2.1
9. Dešifrujte šifrat koji se pojavljuje u citatu iz Alise u zemlju čuda na početku poglavlja.
10. dešifrujte sledeću poruku koja je šifrovana korišćenjem šifre zamene
GBSXUCGSZQGKGSQPKQKGLSKASPCGBGBKGUKGCEUKUZKGGBSQEICA
CGKGCEUERWKLKUPKQQGCIICUAEUVSHQKGCEUPCGBCGQOEVSHUNSU
GKUZCGQSNLSHEHIEEDCUOGEPKHZGBSNKCUGSUKUASERLSKASCUGB
SLKACRCACUZSSZEUSBEXHKRGSHWKLKUSQSKCHQTXKZHEUQBKZAEN
NSUASZFENFCUOCUEKBXGBSWKLKUSQSKNFKQQKZEHGEGBSXUCGSZQ
GKGSQKUZBCQAEIISKOXSZSICVSHSZGEGBSQSAHSGKHMERQGKGSKR
EHNKIHSLIMGEKHSASUGKNSHCAKUNSQQKOSPBCISGBCQHSLIMQGKG
SZGBKGCGQSSNSZXQSISQQGEAEUGCUXSGBSSJCQGCUOZCLIENKGCA
USOEGCKGCEUQCGAEUGKCUSZUEGBHSKGEHBCUGERPKHEHKHNSZKGGK
AD
11. napišite program koji pomaže analitičaru da dešifruje šifru zamene. Vaš program treba da
uzme šifrat kao ulaz izračuna učestalost slova, i to prikaže analitičaru. Ovaj program bi
trebao dozvoliti analitičaru da pogodi ključ i prikaže rezultat ’’dešifrovanja’’ sa ključem.
12. Proširite program razvijen iz problema 11. tako da u početku dešifruje poruku. Ovde je
jedan jednostavan način kako to uraditi. Koristite učestalost izračunatih slova i poznavanje
učestalosti slova u engleskom jeziku da biste pogodili ključ. Onda iz rezultirajućeg
dešifrovanja, izračunajte broj reči koje se pojavljuju i koristite to kao ’’rezultat.’’ Dalje, za
svako slovo u ključu pokušajte ga zameniti sa slovom koje je susedno (poštujući učestalost
brojanja) i ponovo izračunajte rezultat. Ako se rezultat poboljša, ažurirajte ključ, a ako ne
onda nemojte ažurirati ključ. Ponovite proces dok se rezultat ne poboljša za čitavo
prosleđivanje kroz alfabet. U ovom trenutku prosledićete vaše dešifrovanje analitičaru.
Kako bi se pomoglo analitičaru u ručnoj fazi, vaš program može održati svu funkcionalnost
probrama iz problema 11.
13. Šifrujte poruku
we are all together
koristeći dvostruku transpoziciju sa 4 reda i 4 kolone, koristeći permutaciju redova.
(1, 2, 3, 4) → (2, 4, 1, 3)
i permutaciju kolona
(1, 2, 3, 4) → (3, 1, 2, 4).
14. Dešifrujte šifrat

IAUTMOCSMNIMREBOTNELSTRHEREOAEVMWIHTSEEATMAEOHWHSYCEEL
TTEOHMUOUFEHTRFT

Ova poruka je šifrovana pomoću dvostruke transpozicije koristeći matricu 7 redova i 10


kolona. Savet: prva reč je ’’there’’
15. Dajte u kratkim crtama napad na dvostruku transpoziciju, pretpostavljajući da je veličina
matrice poznata
16. Koristeći slova šifrovana u Tabeli 2.1 sledeće dve poruke su šifrovane sa istim one-time
padom
KHHLTK i KTHLLE.
Pronašite moguće otvorene tekstove za svaku poruku i odgovarajući one-time pad.
17. Koristeći slova šifrovana u Tabeli 2.1, sledeći šifrat je šifrovan sa one-time padom
KITLKE
ako je otvoreni tekst ’’trill’’ koji je onda ključ?Koje otvoreni tekst ’’tiller’’, koji je ključ?
18. Pretpostavimo da imate poruku koja se sastoji od 1024 bita. Kreirajte metod koji će
proširiti ključ koji je 64 bita dug na string od 1024 bita. Onda će tih 1024 bita biti
XORovano sa porukom, isto kao one-time pad. Da li je rezultirajući šifrat siguran kao one-
time pad? Da li je moguće da je bilo koja šifra sigurana kao one-time pad?
19. Kreirajte kompjuterizovanu verziju kodne knjige. Vaša šifra treba da sadrži nekoliko
mogućih kodnih knjiga, sa ključem koji se koristi da odredi kodnu knjigu koja će biti za
šifrovanje (ili dešifrovanje) određene poruke.
20. U tekstu smo objasnili kako pretraga unapred napad može raditi uprkos kriptosistemu
javnog ključa. Zašto isti pristup ne može biti korišten da se razbije simtrična šifra?
3
KRIPTO SIMETRIČNIH
KLJUČEVA

’’Vi to prokuhate na piljevini: vi to posolite u ljepilu:


Vi to zgusnite sa skakavcima i pantljikom:
I dalje održavajući jedan glavni objekt u vidu –
Da biste očuvali njegov simetrični oblik.’’
- Lewis Carrol – ’’The Hunting of the Snark’’

Glavna forma lepote je red i simetrija...


- Aristotel

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.

3.2 SEKVENCIJANE ŠIFRE

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

c0 = p0 ⊕ s0, c1 = p1 ⊕ s1, c2 = p2 ⊕ s2, . . .

gde je P = p0p1p2... otvoreni tekst, S = s0s1s2...je keystram, a C = c0c1c2... je šifrat. Za dešifrovanje


šifrata C, keystream S je ponovo korišten

p0 = c0 ⊕ s0, p1 = c1 ⊕ s1, p2 = c2 ⊕ s2, . . . .

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 = x13 ⊕ x16 ⊕ x17 ⊕ x18


xi = xi−1 for i = 18, 17, 16, . . . , 1
x0 = t

Isto se dešava sa registrima Y i Z i svaki korak se sastoji od

t = y20 ⊕ y21
yi = yi−1 for i = 21, 20, 19, . . . , 1
y0 = t

t = z7 ⊕ z20 ⊕ z21 ⊕ z22


zi = zi−1 for i = 22, 21, 20, . . . , 1
z0 = 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

m = maj(x8, y10, z10)

izračunata. Onda registri X, Y i Z se pomeraju na osnovu sledećeg pravila

If x8 = m then X steps
If y10 = m then Y steps
If z10 = m then Z steps

Na kraju keystream bita s je generisan kao

s = x18 ⊕ y21 ⊕ z22

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,

Slika 3.1 A5/1 generator registara

TABLE 3.1. RC4 inicijalizacija

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.

TABLE 3.2. RC4 registarski bajt.


i = (i + 1) mod 256
j = (j + S[i]) mod 256
swap(S[i], S[j ])
t = (S[i] + S[j ]) mod 256
keystreamByte = S[t ]

3.3 BLOKOVSKE ŠIFRE

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.

3.3.1 FESTEL ŠIFRA

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 )

i krajnji rezultat je orginalni otvoreni tekst P = (L0,R0).


Svaka runda funkcije u Festel šifri će raditi, ako izlaz funkcije F predstavlja pravilan broj
bita. U stvari, nema potrebe da funkcija F bude obrnuta. Međutim, Festel šifra neće biti sigurna za
svako moguće F. Na primer, runda funkcije

F(Ri−1,Ki ) = 0 za sva Ri−1 i 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

Mi šaljemo [DES] S-kutije za Vašington. One će se vratiti i biće sve različite.


- Alan Konheim, jedan od dizajnera DES-a

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

F(Ri−1,Ki ) = P-box(S-boxes(Expand(Ri−1) ⊕ Ki )). (3.3)

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

Slika 3.2 Jedna runda u DES-u

Nema ovog dela knjige


u svakoj od 64 pozicije. Svaka S-kutija je napravljenja tako da svaki od njenih četiri reda je
permutacija heksadecimalnih brojeva {0,1,2,...,E,F}. Mi dajemo S-kutiji broj 1 dole, gde je ulaz u
S- kutiju obilježen sa b0b1b2b3b4b5. Primetite da prvi i poslednji ulazni biti su korišteni da
indeksiraju red, dok srednja četiri bita indeksiraju kolonu.

Strukturu permutacije S-kutije 1 je lakše videti ako pretvorimo bite u heksadecimalne,

Svih 8 S-kutija su prikazne u Dodatku.

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].

TABLE 3.3. DES algoritam rasporeda ključa.

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.

3.3.3 Trostruki DES

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˜ ),

A to znači da je K1=K i K2= K˜ u jednačini 3.4.


Ovaj napad na dvostruki DES zahteva da mi preračunamo i smestimo ogromnu tabelu od 256
elemenata. Ali računanje tabele se radi samo jednom, pa ako koristimo tu tabelu više puta
(napadajući dvostruki DES više puta) posao za računanje tabele može biti amotrizovan preko broja
napada. Zanemarujući posao potreban za preračun tabele, posao se sastoji od računanja D(C,K)
dok ne pronađemo ono što odgovara u tabeli. Ovo zahteva posao od 255, i isto je tako iscrpljujući
posao pretrage ključa kod običnog DES-a.
Pošto dvostruki DES nije siguran, mi ćemo utrostručiti DES i videti da li je on siguran.
Možemo reći da je napad meet-in-the-middle isto kao kod dvostrukog DES-a nepraktičan, jer je
predračun tabele neizvodljiv – ili je rad na napadu neizvodljiv ako smanjimo tabelu na praktičnu
veličinu.
Onda to znači da bi logičan pristup trostrukom DES-u bio

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).

Primetite da trostruki DES koristi samo dva ključa i šifrovanje-dešifrovanje-šifrovanje, ili


EDE se koristi umesto EEE. Razlog zašto se koristi samo dva ključa je taj što 112 bita dovoljno,
ali zašto EDE? Iznenađujuće, odgovor je povratna kompatibilnost sa običnim DES-om. Ako se
3DES koristi sa K1=K2=K onda se to pretvara u obični DES

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

MixColumn operacija je primenjena u svaku kolonu 4 x 6 bajtnog niza.

MixColomn se sastoji od pomeranja i operacije XORovanja, i najbolje je implementirana kao


velika tabela. Sveobuhvatna operacija je nelinerana ali invertibilna i kao ByteSub, ima ulogu itu
kao S-kutije kod DES-a.
AddRoundKey je jednostavna operacija. Kao DES, algoritam tabele ključa je korišten da
bi se generisao ključ za svaku rundu. Neka K ij bude 4 x 6 podključ niz određenu rundu. Onda je
podključ XORovan sa trenutnim 4 x 6 bajtnim nizom aij kao što je prikazano dole:

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].

3.3.7. Režimi rada blokovskih šifri

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

P0, P1, P2, . . .

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

Ci = E(Pi ⊕ Ci−1,K) for i = 0, 1, 2, . . . (3.5)


Slika 3.3 Alisa i ECB režim

I dešifrujemo na osnovu formule

Pi = D(Ci,K) ⊕ Ci-1 for i = 0, 1, 2, . . . . (3.6)

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

Pretpostavimo da blok šifrata Ci pokvaren recimo u G. Onda

Pi ≠ D(G,K) ⊕ Ci-1 i Pi+1 ≠D(Ci+1,K) ⊕ G

ali

Pi+2 = D(Ci+2,K) ⊕ Ci+1

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)

onda će Bob ovo dešifrovati kao

Money_for_Alice_is_$2___
Money_for_Trudy_is_$1000

što je bolje za Trudi!


Ako mislite da CBC režim može eliminisati cut-paste napad, onda se varate. Sa CBC
režimom, cut-paste napad je moguć, iako je malo teži i neki podaci mogu biti blokirani. Ovo ćemo
više istražiti u delu 3.6.
Takođe je moguće koristiti blokovske šifre da se generiše ključ, koji može biti korišten kao
ključ sekvencijane šifre. Postoje nekoliko prihvatljivih načina da se izvrši ovaj podvig, ali mi
ćemo spomenuti samo jedan, režim brojača, ili CTR. Kao i CBC režim, CTR režim koristi
inicijalizacioni vektor ili IV. Formula za šifraovanje u CTR režimu je

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

Dok se tajnost bavi prevencijom neautorizovanog čitanja integritet se bavi prevencijom


neautorizovanog pisanja. Na primer, pretpostavimo da vršite elektronski transfer sredstava sa
jednog računa na drugi. Vi ne želite da drugi znaju za ovu transakciju i u tom slučaju šifrovanje će
obezbediti željenu poverljivost. Bili zabrinuti za poverljivost ili ne, vi svakako želite da se
transakcija obavi onako kako treba. Ovde se koristi integritet.
U prethodnom deli govorili smo o blokovskim šiframa za poverljivost. Ovde ćemo
pokazati kako se blokovske šifre koriste da obezbede integritet podataka.
Važno je znati da su tajnost i integritet dva različita pojma. Šifrovanje sa nekom šifrom, od
one-time pada do blokovskih šifri, u bilo kom od njihovih režima, ne štiti podatke od malicioznih
ili nepažljivih promena. Ako Trudi manipuliše šifratom (recimo, preko cut-paste napada) ili ako se
dogodi greška tokom prenosa, integritet podataka je narušen. Mi želimo da budemo u mogućnosti
da automatski detektujemo kada primljini podatak nije isti kao poslat podatak. Videli smo
nekoliko primera, a videćemo ih još, da bismo vam dokazali na šifrovanje ne osigurava integritet.
Poruka autentifikacionog koda ili MAC, koristi blokovsku šifru da osigura integritet
podatka. Procedura je jednostavna da bi se šifrovao podatak u CBC režimu, izuzimajući sve
šifarske blokove osim poslednjeg bloka koji je MAC. Formulana osnovu N blokova podataka je

C0 = E(P0 ⊕ IV,K), C1 = E(P1 ⊕ C0,K), . . . ,


CN-1 = E(PN-1 ⊕ CN-2,K) = MAC.

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

C0 = E(P0 ⊕ IV,K), C˜1 = E(Q⊕ C0,K), C˜2 = E(P2 ⊕ C˜1,K),


C˜3 = E(P3 ⊕ C˜2,K) = “MAC” ≠ MAC.

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

koristeći 128-bitni ključ


0xA56BABCD00000000FFFFFFFFABCDEF01.

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

U svom seminarskom radu [67], Difi i Helman su pretpostavili su da je javna kriptografija


moguća, iako nisu ponudili nijedan sistem. Kratko nakon toga Merkle-Helman knapsack je
predstavljen, verovali ili ne, od strane Merkla i Helmana. Govorićemo o Helmanu kasnije, ali je
potrebno reći nešto o Merklu koji je takođe jedan od osnivača kriptografije sa javnim ključevima.
On je napisao iscrpan rad [157] koji takođe govori o kriptografiji sa javnim ključevima. Merklov
rad je odabran da se izda negde u isto vreme kao i Difi i Helmanov rad, ali se ipak pojavio mnogo
kasnije. Iz nekog razloga, Merklovo zalaganje nikada nije dobilo pažnju onakvu kakvu je
zaslužilo.
Merkle-Helman knapsack je zasnovan na jednom problemu 1 koji je poznat kao NP
kompletan [88]. To je značilo da je idealan kandidat za sigurnu kriptografiju sa javnim
ključevima.
Kapsack problem može biti predtavljen na sledeći način. Dat je skup n težina

W0,W1, . . . , Wn-1

i sume S, pronađite a0,a1,..., an-1, gde svako ai ∈{0,1}, tako da je

S = a0 W0+ a1 W1 +· · ·+an-1 Wn-1

pretpostavljajući da je ovo moguće. Na primer, neka su veličine

85, 13, 9, 7, 47, 27, 99, 86

i željena suma je S=172. onda rešenje ovog problema postoji i dato je na osnovu

a = (a0, a1, a2, a3, a4, a5, a6, a7) = (11001100)

pošto je 85 + 13 + 47 + 27 = 172. Iako je genralni knapsack problem poznat da je NP kompletan,


tu je poseban slučaj koji može biti rešen u linearno vreme.
Superinkrementalni knapsack je isti kao generalni knapsack osim kada su težine poredane
od najmanje do najveće, svaka veličina je veća od sume svih prethodnih težina. Na primer,

3, 6, 11, 25, 46, 95, 200, 411 (4.1)

je superinkrementalni knapsack. Rešavanje problema superinkrementalnog knapsacka je lako.


Pretpostavimo da je dat skup težina iz jednačine 4.1 i sume S=309. Da bi ovo rešili, jednostavno
počnemo sa najvećom težinom pa sve do najmanje da bi dobili a i u lineranom vremenu. Pošto je
S<411, imamo da je a7=0. onda pošto je S>200 imamo da je a6=1 i da je S=S-200=109. Onda
pošto je S>95, imamo da je a5=1 i da je S=S-95=14. Nastavljajući na ovaj način mi otkrivamo
a= 10100110, koji možemo lako verifikovati rešavajuči problem jer je 3 + 11 + 95 + 200 = 309.
Dalje, ćemo predstaviti listu koraka u proceduri korišćenu da konstruiše knapsack
kriptosistem. Onda ćemo prikazati te korake sa specifičnim problemom.

1. Generisati superinkrementalni knapsack.


2. Konvertovati superinkrementalni knapsack u generalni knapsack.
3. Javni ključ je generalni knapsack.
4. Privatni ključ je superinkrementalni knapsack zajedno sa faktorima konverzije.

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. Izabraćemo superinkrementalni knapsack


(2, 3, 7, 14, 30, 57, 120, 251).

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.

3. Javni ključ je generalni knapsackž

Javni ključ: (82, 123, 287, 83, 248, 373, 10, 471).

4. Privatni ključ je superinkrementalni knapsack zajedno sa modularnom inverznošću


konverzije faktora m, a to je

Privatni ključ : (2, 3, 7, 14, 30, 57, 120, 251) i


m-1 mod n = 4-1 mod 491 = 12.

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.

Da dešifruje šifrat, Bob koristi njegov privatni ključ da pronađe

Cm-1 mod n = 548 · 12 mod 491 = 193

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

548m−1 = 82m-1 + 83m-1 + 373m-1 + 10m-1


= 2mm-1 + 14mm-1 + 57mm-1 + 120mm-1
= 2 + 14 + 57 + 120
= 193 mod 491.
Rečima, množenjem preko m-1 transformiše problem u superinkrementalnu oblast gde je lako rešiti
za težine.
Bez privatnog ključa, napadač Trudi mora da pronađe skup elemenata javnog ključa koji
sumiraju vrednost šifrata C. U ovom primeru, Trudi mora pronaći skup elemenata (81, 123, 287,
83, 248, 373, 10, 471) čija je suma ukupno 548. Ovo je problem generalnog knapsacka koji može
da bude veoma težak problem.
Trapdoor kod knapsacka se dešava kada konvertujemo superinkrementalni knapsack u
generalni knapdack koristeći modularnu aritmetiku. Faktori konverzije su nedostupni napdaču.
Jednosmerno svojstvo rezultira iz činjenice da je lakše šifrovati sa generalnim knapsackom, ali je
teško dešifrovati bez privatnog ključa. Ali sa privatnim ključem, mi možemo konvertoveti
problem u superinkrementalni knapsack problem, kojeg je lako rešiti.
Nažalost, ovaj pametan kriptosistem sa javnim ključem je nesiguran. Razbijen je od strane
Šamira 1983. godine koristeći Apple II računar [205]. Napad se oslanja na tehniki koja se zove
’’rešetkasto smanjene’’ o kome ćemo detaljno govoriti u poglavlju kriptoanalize. U osnovu
’’generalni knapsack’’ je izveden iz superinpovećavajućeg knapsacka i napad rešetkastog
smanjenja je u mogućnosti da uzme prednost od ove strukturu da lako resi za otvoreni tekst (sa
visokom verovatnošću).
Urađemo je mnogo istraživanja knapsack problema otkako je Merkle-Helmanov knapsack
razbijen. Danas, postoje varijante knapsacka koje su sigurne, ali ljudi su protive da ih koriste jer je
ime ’’knapsack’’ zauvek pokvareno. Za više informacije o knapsack kriptosistemu, vidite [65,
138, 169].

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

Javni ključ: (N, e)

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.

Da bi dešifrovali C, modularno stepenovanje sa eksponentom je korišteno na sledeći način

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

M = Cd mod N = Med mod N.

Da bi to uradili, moramo pratiti standardan rezultat iz teorija broja [34].


Ojlerova teorema: Ako je x relativno prost broj u odnosu na n onda je xφ(n) = 1 mod n.
Setite se da je

ed = 1 mod (p-1)(q-1)

φ(N) = (p-1)(q-1).

Ove dve činjenice upućuju na to da je

ed – 1 = kφ(N)

za neki integer k.

Sada imamo sve potrebne delove slagalice da bi verifikovali da RSA dešifrovanje radi.
Imamo

Cd = Med = M(ed-1)+1 = M · Med-1 = M · Mkφ(N) = M · 1k = M mod N (4.3)

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.

4.3.1 RSA primer

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

C = Me mod N = 153 = 3375 = 9 mod 33

koji on onda šalje Alisi. Da dešifruje šifrat C, Alisa koristi svoj privatni ključ d = 7 da pronađe

M = Cd mod N = 97 = 4,782,969 = 144,938 · 33 + 15 = 15 mod 33.

i tako Alisa dobije poruku M iz šifrata C.

4.3.2 Sukcesivno kvadriranje

Modularno stepenovanje velikih brojeva sa velikim eksponentima je težak posao. Da bi ga učinili


lakšim (a isto tako da bi učinili RSA efikasnijim), koristi se nekoliko trikova. Jedan takav trik je
sukcesivno kvadriranje za modularno stepenovanje.
Pretpostavimo da želimo izračunati 520. Naravno možemo pomnožiti 5 samim sobom dvadest puta
i rezultat svesti na mod 35 i to je

520 = 95,367,461,640,625 = 25 mod 35 (4.4)

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

(0, 1, 10, 101, 1010, 10100) = (0, 1, 2, 5, 10, 20).


Kao rezultat, eksponent 20 može biti rastavljen na seriju koraka gde se svaki korak sastoji od
dupliranja i kada sledeći bit u binarnom proširenju od 20 je 1, dodajemo jedan, pa je to onda

1=0·2+1
2=1·2
5=2·2+1
10 = 5 · 2
20 = 10 · 2.

sada je računanje 520 na osnovu sukcesivnog kvadriranje

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.

4.3.3 Ubrzavanje RSA

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

Difi-Helman algoritam razmene ključeva ili skraćeno DH su izumeli Malcolm Williamson iz


GCHQ i malo kasnije je ponovo izumljen od strane Whitfielda Diffiea i Martina Helmana [147].
DH je algoritam ’’razmene ključeva’’ jer se samo koristi za uspostavljanje zajedničkog
simetričnog ključa. Važno je napomenuti da reči Difi-Helman i razmena ključeva uvek idu
zajedno – DH nije za šifrovanje ili označavanje, ali umesto toga omogučava korisnicima da
uspostave zajedničku tajnu. Ovo nije značajan podvig, pošto uspostavljanje problema ključa je
jedno od osnovnih zamki kod kriptografije sa simetričnim ključem.
Sigurnost DH algoritma se zasniva na težini problema diskretnog logaritma. Pretpostavimo
da su dati g i x = gk. Da bi se pronašlo k potrebno je izračunati logaritam log g(x). Sada dato g, p i
gk mod p, problem pronalaženja k je analogno problemu logaritma, ali u diskretnom postavljanju;
tako da je ovaj problem poznat kao diskretni logoritam. To znači da je dikretni logaritam veoma
težak za rešiti, ali kao i faktorizacija, nije poznato da je NP kompletan.
Matematička postavka za DH je relativno jednostavna. Neka je p prost broj i neka je g
generator, što znači da za svako x ∈ {1, 2, . . . , p − 1} možemo pronaći eksponent n tako da je x
= gn mod p.
Vrednosti p i generator g su javne. Sada za razmenu ključeva, Alisa generiše njen tajni
eksponent a i Bob generiše njegov tajni eksponent b. Alisa šalje ga mod p Bobu, a Bob šalje
gb mod p Alisi. Onda Alisa računa

(gb)a mod p = gab mod p

a Bob računa

(ga)b mod p = gab mod p

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

Slika 4.1 DH razmena ključa

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

ga · gb = ga+b ≠ gab mod p.

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

1. šifrovati DH sa zajedničkim simtričnim ključem;


2. šifrovati DH sa javnim ključevima; i
3. označiti vrednosti sa privatnim ključevima.

Slika 4.2 Difi-Helman man-in-middle napad

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.

4.4 KRIPTOGRAFIJA ZASNOVANA NA ELIPTIČKIM KRIVAMA

''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.

4.5.1. Matematika eliptičke krive

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

Slika 4.3 Eliptička kriva

Tabela 4.1 Tačke krive y2 = x3 + 2x + 3 (mod 5)

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).

Na primer, razmotrimo eliptičku krivu

y2 = x3 + 2x + 3 (mod 5). (4.5)


Mi možemo dati listu tačaka (x, y) na krivoj i menjati za moguće vrednosti od x i rešiti za
odgovarajuću vrednost y ili vrednosti. Radeći to, mi rezultate smestimo u tabelu 4.1.
Onda su tačke na eliptičkoj krivoj iz jednačine 4.5

(1, 1) (1, 4) (2, 0) (3, 1) (3, 4) (4, 0) i ∞. (4.6)

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

m = (1 − 4)/(3 − 1) = −3 · 2-1 = −3 · 3 = 1 mod 5.

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.

Tabela 4.2 Sabiranje na eliptičkoj krivoj mod p


4.5.2 ECC Difi-Helman
Sada kada možemo uraditi sabiranje sa eliptičkim krivama, hajde da razmotrimo Difi-Helman
verziju ECC. Javne inforamacije sastoje se od krive i tačke na krivoj. Selektovaćemo krivu

y2 = x3 + 11x + b (mod 167) (4.7)

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

Javna: Kriva y2 = x3 + 11x + 19 (mod 167) i tačka (2, 7) (4.8)

Alisa i Bob odabrati svoje tajne množitelje.3 Pretpostavimo da Alisa odabere A = 15 i Bob odabere
B = 22. Onda Alisa računa

A(2, 7) = 15(2, 7) = (102, 88)

gde je sva aritmetika urađena na jednačini 4.8. Alisa šalje ovaj rezultat Bobu.
Bob računa

B(2, 7) = 22(2, 7) = (9, 43)

i to šalje Alisi. Sada Alisa množi vrednost koji je primila od Boba sa njenim tajnim A i to je onda

A(9, 43) = 15(9, 43) = (131, 140).

Onda Bob računa

B(102, 88) = 22(102, 88) = (131, 140)

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

Pre diskusije o korištenju kriptografije javnih ključeva, moramo da razmotrimo pitanje


označavanja. Pošto kriptografija javnih ključeva koristi po dva ključa za svakog korisnika,
navikavanje na označavanje koju smo koristili za simetričnu kriptografiju može se smatrati
nespretnom. Osim toga, digitalni potpis je šifrovanje (sa privatnim ključem), ali ista operacija je
dešifrovanje kada se primenjuje na šifrat.
Mi ćemo se naviknuti na označavanje korišteno u [122] za šifrovanje javnim ključem,
dešifrovanje i potpisivanje:

Šifrovana poruka M sa Alisinim javnim ključem: C = {M}Alice



Dešifrovana poruka C sa Alisinim privatnim ključem: M = [C]Alice

 Potpisivanje je ista operacija kao dešifrovanje, pa je označavanje za Alisininu poruku M je


S = [M]Alice, gde je S potpisana poruka
Pošto su šifrovanje i dešifrovanje inverzne operacije

[{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.

4.7 UPOTREBA KRIPTOGRAFIJE JAVNIH KLJUČAVA

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.7.1 Poverljivost u realnom svetu

Primarna prednost simetrične kriptografije je efikasnost. 4 Setite se da kod simetrične kriptografije


MAC obezbeđuje integritet. Struktura javnog ključa obezbeđuje integritet, ali takođe obezbeđuje i
neporecivost, a to je nešto što simetrični ključevi ne mogu obezbediti.

4
Druga prednost jeste da nije potrebna infrastruktura javnog ključa ili PKI. Govorićemo o tome posle.
Slika 4.4 Hibridni kriptosistem

Da bi razumeli neporecivost, hajde da prvo razmotrimo integritet u slučaju simetričnog


ključa. Pretpostavimo da Alisa izda nalog za kupovinu 100 akcija z anjenog omiljenog klijent
Boba. Da bi osigirala integritet njenog naloga Alisa računa MAC koristeći zajednički ključ K AB.
Pretpostavimo da nakon što Alisa izda nalog, ali pre nego što uzme novac od Boba cena akcija
padne za 80%. Tada Alisa tvrdi da nije izdala nalog, tj. ona poriče transakciju.
Može li Bob dokazati da je Alisa izdala nalog? Ne može. Pošto Bob takođe zna simetrični
ključ KAB, on je mogao krivotboriti poruku u kojoj Alisa izdaje nalog. Tako da iako Bob zna da je
Alisa izdala nalog, on to ne može dokazati.
Sada razmotrimo isti scenario, ali kada Alisa koristi digitalni potpis umesto računanja
MAC-a. Kao i MAC potpis obezbeđuje integritet. Može li Bob da je nalog došao od Alise? Da,
može, pošto jedino Alisa ima pristup njenom privatnom ključu. Digitalni potpisi obezbeđuju
integritet i neporecivost. U sledećem poglavlju ćemo više govoriti o potpisima integritetu.

4.7.3 Tajnost i neporecivost

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.

Da li raspored igra ulogu?


Razmotrićemo dva različita scenarija, ista kao ona iz [56]. Prvo, pretpostavimo da su Alisa
i Bob u vezi. Alisa odluči polati poruku Bobu

M = “I love you”

Pa korišćenjem potpisivanja i šifrovanja ona šalje

{[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 = “Brontosauruses are thin at one end, much much thicker


in the middle, then thin again at the other end”

i tu poruku ona šifruje pa potpiše

[{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.

Ovaj scenario je predstavljen na Slici 4.6.


Kada Bob primi poruku od Čarlija, on pretpostavlja da je Čarli otkrio tu veliku teoriju i
odmah čestita Čarliju. Kada Alisa sazna da je Čarli preuzeo sve zasluge za njenu teoriju ona se
odlučuje da nikada prvo više prvo šifruje pa potpiše.
Koji je ovde problem? U prvom scenariju, Čarli pretpostavlja da je {[M]Alice}Charlie poslato
od Alise za Čarlija. To nije sličaj, pošto je Čarlijev javni ključ javan. Problem u ovom slučaju jeste
da Čarli ne razume krptografiju sa javnim ključevima.
Slika 4.6 Zamka kod potpisivanja pa šifrovanja

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.

4.8 INFRASTRUKTURA JAVNIH KLJUČEVA

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:

 Generalizacija ključa i upravljanje


 Sertifikacioni autoriteti (CA)
 Lista povlačenja sertifikata (CRL)

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

5.1 ŠTA JE HEŠ FUNKCIJA?


Kriptografska heš funkcija h(x) mora omogućite sledeće:

 Kompresiju: za svaku veličinu ulaza x, dužina izlaza y=h(x) je mala. U praksi,


kroptografske heš funkcije proizvode fiksnu veličinu izlaza, bez obzira na dužinu ulaza.
 Efikasnost: mora biti lako za izračunati h(x) za svaki ulaz x
 Jednosmernost: Za zadato bilo koje y praktično je nemoguće izračunati x jer je h(x)=y.
Drugi način da se ovo kaže jeste da je teško obrnuti heš.
 Slaba otpornost na kolizije: za zadato x i h(x) nemoguće je izračunati y, sa y≠x, ako je
h(y)=h(x).
 Jaka otpornost na kolizije: nemoguće je izračunati x i y sa x≠y, ako je h(x)=h(y).

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.

5.2 ROĐENDANSKI PROBLEM


Takozvani rođendanski problem je osnovni predmet u mnogim poljima kriptografije. Mi ćemo ga
ovde predstaviti iako je kritično za razumeti sigurnu implementaciju hešovanja.
Pretpostavimo da je u sobi N ljudi. Koliko veliko N mora biti pre nego što nađete makar
jednu osobu koja ima rođendan isti dan kada i vi? Ekvivalentan način da bi ovo postavili jeste,
koliko veliko N mora biti da bi verovatnoća da neko ma isti rođendan kada i vi je veći od ½. Kao
sa mnogo računanja verovatnoće, lakše je izračunati verovatnoću komplamenta, a to je da niko od
N osoba nema isti rođendan kada i vi i oduzeti rezultat od jedan.
Vaš rođendan je na jedan poseban dan u godini. Ako osoba nema isti rođendan kada i vi,
njegov rođendan je onda jedan od preostalih 364 dana. Ako su svu rođendanski datumi slični,
verovatnoća da slučajno odabrana osoba nema isti rođendan kada i vi je 364/365. Onda je
verovatnoća da niko od N osoba ima rođendan kao vi jeste (364/365)N, a verovatnoća da makar
jedna osoba ima rođendan kada i vi je

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

1 − 365/365 · 364/365 · 363/365 · · · (365 − N + 1)/365.

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.

5.5. NEKRIPTOLOŠKI HEŠ


Pre nego što budemo govorili o kriptografskim heš funkcijama, prvo ćemo obratiti pažnju na
nekoliko jednostavnih nekriptoloških heševa. Pretpostavimo da je ulazni podatak

X = (X0,X1,X2, . . . , Xn−1)

gde je svako Xi bajt. Možemo definisati heš funkciju h(X) preko

h(X) = (X0 + X1 + X2 +· · ·+Xn−1) mod 256.

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

h(10101010, 00001111) = h(00001111, 10101010) = 10111001.

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).

Sada ćemo definisati heš h(X) kao

h(X) = nX0 + (n − 1)X1 + (n − 2)X2 +· · ·+2Xn−2 + Xn−1 mod 256.

Da li je ovaj heš siguran? Na kraju krajeva ovaj heš daje različit rezultat kada se dva bajta zamene,
na primer

h(10101010, 00001111) ≠ h(00001111, 10101010).

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.

5.4 TIGER HEŠ


Sada ćemo obratiti pažnju na kriptografske heš funkcije. Dve najpopilarnije heš funkcije koje se
danas koriste. Jedna od njih je MD5 gde je MD skraćenica od message digest. MD5 je naslednik
MD4 koji je bio naslednik MD2. Ranije MD verzije se više ne smatraju sigurnim, imajući u vidu
da su pronađene kolizije. Zapravo, MD5 kolizije su skoro otkrivene. Sve MD verzije je izumeo
Ron Rivest. MD5 proizvodi 128-bitni izlaz.
Drugi kandidat za naslov ’’najpopularnija svetska heš funkcije’’ je SHA-1 i on je standard
američke vlade. Pošto je vladin standard SHA je akronim od ’’secure hash algoritm’’. Možda je
pitate zašto SHA-1 a ne SHA? U stvari, postoji SHA (sada poznat kao SHA-0), ali je doživeo
propast, ali je SHA-1 doživeo uspon sa nekim malim izmenama ali bez objašnjenja.
SHA-1 algoritam je veoma sličan MD5 algoritmu. Glavna praktična razlika jeste da SHA-1
generiše 180 bitni izlaz, što omogućava veću sigirnost u odnosu na MD5. Kriptografske heš
funkcije se sastoje od broja rundi. U tom slučaju, oni podsećaju na blokovske šifre.
Heš funkcije se smatraju sigurnim ukoliko se ne pronađu kolizije. Kao i sa blokovskim
šiframa, efikasnost je glavna briga kod dizajna heš funkcija. Ako na primer, je mnogo teže
izračunati heš od M nego označiti M, heš funkcija nije korisna, pa makar u aplikacijama
potpisivanja o kojima smo govorili.
Željeno svojstvo svake kripografske heš funkcije je tzv. lavina efekat ili jaki lavina efekat.
Cilj je da svaka mala promena u ulazu rezultira velikom promenom u izlazu. Idealno bi bilo da
svaka promena u izlazu rezultira vrednostima izlaza koje su nepovezane, i da napadač mora biti
primoran na iscrpnu pretragu za kolizijama.
U idelanom slučaju lavina efeket bi se trebao dogoditi posle nekoliko rundi, tako da bi runde
trebale biti jednostavne i efikasne što je više moguće. Dizajneri heš funkcija su se kao i dizajneri
blokovskih šifri suočili sa trade offs.
MD5 i SHA-1 algoritmni nisu posebno interesantni, jer se oba sastoje od slučajnih kolekcija
transformacija. Umesto da govorimo o njima detaljnije mi ćemo govoriti o Tiger hešu. Tiger koji
je razvijen od strane Rosa Andersona i Eli Biham ima više organizovaniji od SHA-1 ili MD5.
Ustvari, Tiger može biti smatran kao veoma sličan blokovskim šiframa.
Tiger je dizajniran da bude ’’jak i brz’’ što mu i samo ime govori. Takođe je dizajniran za
optimalan rad 64-bitnih procesora i da bude zamena za MD5, SHA-1 ili bilo koji drugi heš sa
sličnim ili istim izlazom.
Kao i MD5 i SHA-1 izlaz kod Tiger algoritma je podeljen na blokove od po 512 bita, sa
ulazom povećanim za više od 512 bita, ako je potrebno. Za razliku od MD5 i SHA-1, izlaz kod
Tiger heša je 192 bita. Numerologija iza izbora od 192 bita jeste da je Tiger dizajniran za 64-bitne
procesore, a 192 bita je tačno tri 64-bitne reči. Kod Tiger heša sve srednje runde se takođe sastoje
od 192-bitnih vrednosti.
Uticaj Tiger blokovskih šifri može se videti u činjenici da on koristi četiri S-kutije, gde se
svaka od njih preslikava sa 8 bita na 64 bita. Tiger takođe može koristiti algoritam ''tabele ključa'',
koja pošto nema ključa je primenjena na ulazne blokove, kao što je dole objašnjeno.
Ulaz X je povećan za više od 512 bita i napisan kao

X = (X0, X1, ... , Xn-1)

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 = (c0, c1, . . . , c7)


Slika 5.2 Tiger unutrašnja runda za Fm

Gde je svako ci jedna bajt. Onda je fm,i dato 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

h(K,M‘) = h(K,M,X) = F(h(K,M),X) (5.3)

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

h(M,K) = F(h(M),K) = F(h(M’),K) = h(M’,K) (5.4)

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,

ipad = 0x36 repeated B times

opad = 0x5C repeated B times.

Onda je HMAC od M

HMAC(M,K) = H(K ⊕ opad,H(K ⊕ ipad,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.

5.6 KORIŠĆENJE HEŠ FUNKCIJA


Neke od standardnih aplikacija koje koriste heš funkcije uključuju autentifikaciju, integritet
poruke (koriste HMAC), poruke otiska prsta, data corruption detection, efikasnost digitalnog
potpisa. Postoji veliki broj pametnih I ponekad iznenađujućih korištenja sigurnih heš funkcija.
Dole ćemo objasniti dva interesantna primera heš funkcija koji mogu biti korišteni za rešavanje
sigurnosnih problema. Takođe je tačno da heš funkcije mogu biti korištene za sve što se može
učiniti sa šiframa simetričnih ključevima i obrnuto.
Prvo ćemo ukratko razmotriti korišćenje heš funkcija da sigurno smesti online ponude.
Onda ćemo govoriti o interesantnom pristupu smanjenja spamova koje se oslanja na hešovanje.

5.6.1 Online ponude

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.

5.6.2 Sprečavanje spamova

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.

5.7 DRUGE TEME O KRIPTOGRAFIJI

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.

5.7.1 Tajna razmena

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.

5.7.2 Nasumični brojevi


Videćemo da su nasumični brojevi potrebni da bi se tačno genereisali simetrični ključevi kao RSA
parovi ključa i Difi-Helman eksponenti. U sledećem poglavlju, videćemo da nasumični brojevi
imaju važnu ulogu kod sigurnosnih protokola.
Nasumični brojevi se koriste u mnogim nesigurnim aplikacijama kao što su simulacije i
statistike. U takvim aplikacijama, nasumični brojevi obično samo trebaju biti ''statistički''
nasumični, to znači da one moraju proslediti određene statističke testove koji pokazuju da su oni u
nekom smislu ne razlikuju od slučajnosti.
Ipak, kriptografski nasumični brojevi moraju biti statistički nasumični i oni moraju takođe
zadovoljiti mnogo strožije zahteve koji su nepredvidivi. Zašto moraju takvi brojevi biti
nepredvidivi? Pretpostavimo da server generiše sledeće simetrične ključeve:

 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

24 · 60 · 60 · 1000 < 227


i na osnovu toga moguće je manje od 227 različitih mešanja.
Trudi, napadač, može uraditi bolju stvar. Ako ona sinhroniše njen sat sa serverom, Trudi
može smanjiti broj mešanja koji trebaju biti testirani u manje od 2 18. Ovih 218 mogućih mešanja
mogu biti generisani u realnom vremenu i testirani uprkos kartama koje svi vide i da odrede pravo
mešanje u tekućoj igri. U stvari, nakon prve (ili pete) runde klađenja, Trudi može odrediti
jedinstveno mešanje i ona može tako znati karte koje su u rukama ostalih igrača – pre nego što i
sami igrači dobiju svoje karte.
Karte igrača Zajedničke karte na sredini stola.
koje samo oni vide
Slika 5.4 Texas Hold ’em Poker

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.

5.7.2.2 Generisanje nasumičnih bita. Stvarnu nasumičnost nije samo teško


pronaći, nego je i teško definisati. Možda je koncept entropije najbolje što možemo uraditi, na
osnovu Shannona. Entropija se koristi da se meri nesigurnost ili obratno predvidljivost bitova u
nizu. Nećemo više detaljisati ali više o entropiji možete saznati u [234].
Izvori stvarne nasumičnosti postoje. Na primer, radioaktivni raspad je takav izvor.
Međutim, nuklearni računari nisu veoma popularni, tako da trebamo naći drugi izvor. Nekoliko
hardverskih uređaja su dostupni i mogu biti korišteni da okupe neke nasumične bite zasnovane na
različitim fizičkim i toplotnim svojstvima za koje se zna da su visoko nepredvidivi. Drugi
popularan izvor nasumičnosti je online lava lampa [155], koja ostvaruje svoju nasumičnost iz
njenog inherentnog haotičnog ponašanja.
Neki softveri su deterministički, stvarni nasumični brojevi moraju biti generisani spolja u
kodu. Pored toga specijalni uređaji koje smo gore naveli, razumni izvori nasumičnosti uključuju
kretanje miša, dinamiku tastature, određenu aktivnost mreže itd. Takođe je moguće dobiti neke
visoko kvalitetne nasumične bitove na osnovu takve metode, ali količina takvih bita je ograničena.
Nasumičnost je interesantna i tema kojoj se često obraća velika pažnja. Uvek je važno
zapamtiti da ’’Korištenje pseudo nasumičnih procesa da se generišu tajne količine može rezultirati
pseudo sigurnošću.’’ [122].
5.7.3 Skrivanje informacija

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

 Nevidljivi watermarkovi, koji ne bi trebalo da budu primetni u medijima.


 Vidljivi watermarkovi, koji su predviđeni da budu primetni. TOP SECRET pečat na
dokumentu je jedna primer takvog watermarka.

Watermarkovi mogu dalje biti kategorizovani kao

 Snažni watermarkovi, koji treba da ostanu čitljivi i kada su napadnuti.


 Slabi watermarkovi, koji su dizajnirani da budu uništeni ako se neka opasnost
dogodi.

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.

Slika 5.6 Bajka o dve Alise


Još jedan jednostav primer steganografije će dublje objasniti proces. Razmotrimo jedan HTML
koji sadrži tekst

“The time has come,” the Walrus said,


“To talk of many things:
Of shoes and ships and sealing wax
Of cabbages and kings
And why the sea is boiling hot
And whether pigs have wings.”

U HTML-u RGB boja slova je naznačena u tagovima u formi

<font color="#rrggbb"> . . . </font>

gde je rr heksadecimalna vrednost od R, gg je heksimalna vrednost od G i bb je heksadecimalna


vrednost od B. Na primer, crna boja se predstavlja kao #000000, dok je bela boja #FFFFFF. Dok
RGB biti nižeg reda neće uticati na boju, možemo informacije sakriti u tim bitima, kao što je
prikazano u HTML tekstu. Čitanje boje RGB bita nižeg reda propušta ’’skrivenu’’ informaciju 110
010 110 011 000 101.
Skrivanje informacija u RGB bitima nižeg reda HTML tagovima za boje očigledno nije
veoma snažan. Ako napadač zna šemu, on može pročitati skrivenu informaciju jednako lako kao i
pošiljalac. Ili napadač može uništiti informaciju tako što zameni HTML fajl sa drugim koji je
identičan, osim da su RGB biti slučajni ostaci.
Primamljivo je sakriti informacije u bitovima koji nisu važni, dok će oni biti nevidljivi u
smislu da sadržina neće biti narušena. Ali ako se to čini ono olakšava napadaču koji zna tu šemu
da pročita ili uništi informaciju. Dok biti koji nisu važni za sliku ne moraju biti očigledni kao RGB
biti nižeg reda u HTML tagovima, takvi biti su jednako podložni napadu od strane svakoga koji
znaju format slike.
Zaključak je da ako želite da skrivanje informacija bude robustan, informacija mora biti
postojati u bitima koji su važni. Ali ovo stvara ozbiljan izazov, jer sbaka promena bita koji su
važni mora biti urađena pažljivo da bi informacija ostala ’’nevidljiva.’’
Kao što je rečeno gore, ako Trudi zna šemu skrivanja informacija, ona može otkriti
skrivenu informaciju lako kao i pošiljalac. Šema watermarking obično šifruje skrivenu informaciju
pre nego što se umetne u objekat. Ali iako je to tako, ako Trudi razumije kako šema funkcioniše,
ona može skoro sigurno oštetiti ili uništiti informaciju. Ova činjenica je dovela programere da se
često oslanjaju na vlastitu watermark šemu, koja funkcioniše suprotno od Kerkohovih pravila. Ovo
je rezultiralo u mnogim pristupima koji su ugledali svetlost dana.

Tabela 5.2 Jednostavna steganografija


Da bi dalje zakomplikovali život steganografa, nepoznata watermark šema može biti
predstavljena preko napada kolizije. To znači da orginalni objekt i watermark objekt (ili nekoliko
različitih watermark objekata) može biti upoređeno da odredi bite koji nose informacije. Kao
rezultat, watermak šeme koriste širok spektar tehnika da bolje sakriju bite koji skrivaju
informacije. Takvi pristupi čine posao napadača malo težim. Izazovi i opasnosti watermarka su
ilustrovani preko napadača na SDMI šemi.
Poslednja stvar jeste da je skrivanje digitalne informacije mnogo teže nego što se čini na
prvi pogled. Skrivanje informacija je oblast o kojoj se još uvek istražuje i iako niko ko na tome
radi do sada nije obećao njihovim zagovornicima da će implikacije snažnih šema biti ogroman.
Iako je oblast skrivanja informacija veoma star, digitalna verzija je relativno mlada, tako da još
uvek ima prostora za napredak.

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

The magic words are squeamish ossifrage


—Solution to RSA challenge problem
posed in 1977 by Ron Rivest, who
estimated that breaking the message
would require 40 quadrillion years.
It was broken in 1994

6.1 UVOD
U ovom poglavlju govorićemo o sledećim tehnikama napredne kriptoanalitike

 Linearna i diferencijalna kriptoanaliza


 Side-channel napad na RSA
 Redukovanje laticije na knapsack
 Helmanov vremenski-memorijski trade off napad na DES

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.

6.2 LINEARNA I DIFERENCIJALNA KRIPTOANALIZA


Uticaj Data Encryption Standard (DES) na modernu kriptografiju se ne može proceniti. I linearna i
diferencijna kriptoanaliza su razvijene da napadaju DES. Kao što je već rečeno, ove tehnike ne
doprinose praktičnim napadima. Umesto toga linearni i diferencijalni ''napadi'' upućuju na slabosti
dizajna blokovskih šifri. Ove tehnike su postale osnovni analitički alati koji su primenjeni na
analize svih blokovskih šifri.
Diferencijalna kriptoanaliza je u neklasifikovanom svetu prema Bihamu i Šamiru koji su
1990. godine predstavili ovu tehniku. Zatim je postalo jasno da je neko ko je uključen u dizajn
DES-a (a to je NSA) bio svetan diferencijalnih kriptoanaliza tokom 1970-ih godina. Diferencijana
kriptoanaliza je napad odabranog otvorenog teksta.
Linearna kriptanaliza je predstavljena od strane Matsua 1993. godine. Pošto DES nije
dizaniran da ponudi optimalan otpor na sofisticirane linerane kriptoanalitičke napade, tako ni NSA
nije znala za ove tehnike tokom 1970-ih godina ili nisu bili zabrinuti za ovakvu vrstu napada.
Napadi linearne kriptoanalize su malo više realniji nego napadi diferencijalne kriptoanalize, pre
svega zbog toga jer je to napad poznat otvoreni tekst, a ne na odabrani otvoreni tekst.

6.2.1 Ukratko o DES-u


Nisu nam potrebni svi detalji o DES-u, tako da ćemo dati kratak pregled koji uključuje samo
određenje činjenice koje su nam potrebne. DES ima osam S-kutija, gde se svaki od šest ulaznih
bita i to x0x1x2x3x4x5 pretvara u četiri izlazna bita i to y0y1y2y3 . Na primer, DES S-kutija broj jedan
u hesadecimalnim oznakama je:
Slika 6.1 daje pojednostavljen pogled na DES. Dalje, smo najviše zainteresovani za analizu
nelinearnih delova DES-a, tako da dijagram ističe činjenicu da su S-kutije jedine nelinearne u
DES-u. Slika 6.1 takođe predstavlja način na se koji podključ Ki smešta u rundu DES-a.
Dalje, ukratko ćemo predstaviti diferencijalne kriptoanalize na osnovu istog pregleda kao
kod linearnih kriproanaliza. Predstavićemo pojednostavljenu verziju DES-a koju zovemo Tiny
DES ili TDES. Predstavićemo i linerne i diferencijalne napade na TDES.

6.2.2 Pregled diferencijalnih kriptoanaliza


Pošto su diferencijane kriptoanalize razvijene da analiziraju DES, govorićemo o njima u kontekstu
DES-a. Setite se da je čitav DES lineran osim S-kutija. Videćemo da linerani delovi DES-a igraju
veliku ulogu u samoj sigurnosti DES-a, međutim sa kriptoanalitičkog pogleda, linearni delovi su
jednostavni. Matematičati su dobri u rešavanju linernih jednačina, što znali da njihova nelineranost
predstavlja glavnu kriptoanalitičku prepreku. Kao rezultat, diferencijane i linerane kriptoanalize su
fokusirane da se bave sa nelineranim delovima DES-a, odnosno S-kutijama.

Slika 6.1 Jednostavan pogled na DES

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

Sbox(X1 ⊕ K)=10 i Sbox(X2 ⊕ K)=01.


(6.2)

Sada pretpostavimo da je K u jednačini 6.2 nepoznato, ali da su ulazi X 1 = 110 i X2 = 010


poznati kao i odgovarajući izlazi Sbox(X1 ⊕ K)=10 i Sbox(X2 ⊕ K)=01. Onda za S-box 6.1
vidimo da X1 ⊕ K ∈ {000, 101} i X2 ⊕ K ∈ {001, 110}. Pošto su X1 i X2 poznati imamo

K ∈ {110, 011} ∩ {011, 100}

š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

(X1 ⊕ K) ⊕ (X2 ⊕ K)=X1 ⊕ X2,


(6.3)

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.

6.2.3 Pregled linearne kriptoanalize


Ironično, linearna kriptoanaliza je kao i diferencijalna kriptoanaliza fokusirana na nelineranom
delu blokovske šifre. Iako je linearna kriptoanaliza razvijene nekoliko godina posle diferencijalne
kriptoanalize, ona je u osnovu jednostavnija i ima više efekta na DES i zahteva samo poznati
otvoreni tekst nasuprot odabranom otvorenom tekstu.
U diferencijalnoj kriptoanalizi, fokusirali smo se na ulazne i izlazne razlike. U linearnim
kriptoanalizama cilj je približiti nelinerani deo šifrata sa lineranom jednačinom. Pošto su
matematičari dobri u rešavanju linearnih jednačina ako možemo pronaći takvu približnost to je
onda razlog da možemo to koristiti kao napad na šifrat. Pošto su nelinearni deo DES-a samo S-
kutije, linearna kriptoanaliza može biti fokusirana samo na S-kutije.
Ponovo ćemo posmatrati S-kutiju 6.1. Dodaćemo tri ulazna bita x0x1x2 i dva izlazna bita
y0y1. Sada x0 određuje red, a x1x2 određuju kolonu. U Tabelu 6.2 poredali smo broj vrednosti za
koju sadrži svaka linearna približnost. Pošto u svakom slučaju postoji osam vrednosti svaki broj
osim četiri upućuje na nenasumičan izlaz.
Rezultati u Tabli 6.2 pokazuju da na primer, y0 =x0 ⊕ x2 ⊕ 1 sa verovatnoćom 1 i y0 ⊕ y1 =x1 ⊕ x2
sa verovatnoćom 3/4 . Koristeći ove informacije, u našoj analizi možemo zameniti S-kutije preko
lineranih funkcija. Rezultat ovoga jeste da smo menjali S-kutije za linearne jednačine, gde se
linerane jednačine samo drže sa nekom verovatnoćom.

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.

6.2.4 Tiny DES


Tiny DES ili TDES je šifra slična DES-u koju je za razliku od DES-a lakše i jednostavnije
analizirati. TDES je dizajniran od strane autora DES-a da bi se diferencijalni i linerani napadi
lakše mogli implementirati. TDES je neprirodna šifra i u praksi ju je lako razbiti. Ali je ista kao
DES da bi se ilustrovali principi iza linearne i diferencijane kriptoanalize.
TDES je mnogo jednostavnija verzija DES-a koja sadrži

 16-bitnu veličinu bloka


 16-bitnu veličinu ključa
 Četiri runde
 Dve S-kutije, u kojoj se 6 bita pretvara u 4 bita
 12-bitni podključ u svakoj rundi

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.

Slika 6.2 Jedna runda kod TDES-a

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)).

Proširena permutacija je data preko

expand(R)=expand(r0r1r2r3r4r5r6r7)=(r4r7r2r1r5r7r0r2r6r5r0r3). (6.5)

Leva S-kutija TDES-a koju smo označili sa SboxLeft(X) je heksadecimalna

Dok je desna S-kutija SboxRight(X) takođe heksadecimalna odnosno

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

a podključ je generisan kao što sledi. Neka je

LK = k0k1 . . . k7
RK = k8k9 . . . k15.

Onda je za svaku rundu i = 0, 1, 2, 3, 4,

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.

6.2.5 Diferencijalna kriptoanaliza DES-a


Naš diferencijalni napad će se fokusirati na levu S-kutiju, koja se pojavljuje u S-kutiji 6.7.
Pretpostavimo da smestimo u tabelu SboxRight(X1) ⊕ SboxRight(X2) za sve parove X1 and X2 sa
X1 ⊕ X2 =001000. Onda ćemo pronaći da

X 1 ⊕ X2 =001000 upućuje na SboxRight(X1) ⊕ SboxRight(X2)=0010


(6.8)

sa verovatnoćom 3/4. setite se da za svaku S-kutiju

X 1 ⊕ X2 =000000 upućuje na SboxRight(X1) ⊕ SboxRight(X2)=0000.


(6.9)

Das könnte Ihnen auch gefallen