Kada čujete riječ "kriptografija", neki se sjetite svoje WiFi lozinke, zelenog katanca pored adrese svog omiljenog web mjesta i kako je teško ući u tuđu e-poštu. Drugi se sjećaju niza ranjivosti posljednjih godina s govornim kraticama (DROWN, FREAK, POODLE...), modernim logotipima i upozorenjem da hitno ažuriraju preglednik.
Kryptografija obuhvaća sve to, no suština leži u nečemu drugom. Suština je u tankoj liniji između jednostavnog i složenog. Neke stvari su jednostavne za učiniti, ali je teško vratiti ih nazad: na primjer, razbiti jaje. Druge stvari je lako učiniti, ali ih je teško vratiti nazad kada nedostaje mala važna odlučujuća komponenta: na primjer, otvoriti zaključana vrata kada je "odlučujući dio" ključ. Kriptografija proučava te situacije i načine njihove praktične primjene.
Tijekom posljednjih godina kolekcija kriptografskih napada pretvorila se u zoološki vrt vrištećih logotipa, ispunjenih formulama znanstvenih radova, i stvorila opći mračan osjećaj da je sve slomljeno. No, zapravo mnogi od napada temelje se na nekoliko zajedničkih principa, a beskonačne stranice formula često se svode na jednostavne ideje koje je lako razumjeti.
U ovoj seriji članaka razmotrit ćemo različite vrste kriptografskih napada, s naglaskom na osnovne principe. U općim crtama i ne nužno u ovom redoslijedu, ali reći ćemo sljedeće:
- Osnovne strategije: brute force, frekvencijska analiza, interpolacija, redukcija i kros-protokoli.
- "Brendirane" ranjivosti: FREAK, CRIME, POODLE, DROWN, Logjam.
- Napredne strategije: napadi orakla (Vodenâ napad, Kelseyjev napad); metoda susreta na sredini (meet-in-the-middle), napad "rođendana", statističko pristranost (diferencijalna kriptoanaliza, integralna kriptoanaliza itd.).
- Napadi putem vanjskih kanala i njihovi bliski rođaci, metode analize grešaka.
- Napadi na kriptografiju s otvorenim ključem: kubni korijen, broadcast, povezane poruke, Koppersmithov napad, Poligov-Hellmanov algoritam, brojčana sita, Wienerov napad, Bliechenbacherov napad.
Ovaj konkretni članak pokriva gornji materijal do Kelseyjevog napada.
Osnovne strategije
Sljedeći napadi su jednostavni u smislu da se mogu gotovo potpuno objasniti bez posebnih tehničkih detalja. Objasnit ćemo svaki tip napada na najjednostavniji način, ne ulazeći u složene primjere ili proširene načine korištenja.
Neki od ovih napada su uglavnom izgubili značaj i nisu primjenjivani dugi niz godina. Drugi - veterani, još uvijek redovito vrebaju ničim sumnjive programere kriptosustava u 21. stoljeću. Može se smatrati da je era moderne kriptografije započela pojavom IBM DES - prvog algoritma koji se odupirao svim napadima na ovom popisu.
Jednostavni bruteforce
Shematska šifra sastoji se od dva dijela: 1) funkcija šifriranja koja prima poruku (plitki tekst) zajedno s ključem i zatim stvara šifriranu poruku - šifrat; 2) funkcija dešifriranja koja prima šifrat i ključ te stvara plitki tekst. I šifriranje i dešifriranje trebaju biti lako izračunljivi s ključem - i teški bez njega.
Pretpostavimo da vidimo šifrat i pokušavamo ga dešifrirati bez dodatnih informacija (to se naziva napad 'samo šifrat'). Ako nekim čarobnim putem pronađemo pravi ključ, možemo lako provjeriti da li je on stvarno ispravan ako je rezultat razumna poruka.
Obratite pažnju da ovdje postoje dvije neizgovorene pretpostavke. Prvo, da znamo kako izvršiti dešifriranje, tj. kako djeluje kriptosustav. To je standardna pretpostavka kada se raspravlja o kriptografiji. Skrivenost detalja implementacije šifre od napadača može se činiti dodatnom sigurnosnom mjerom, ali kako god napadač otkrije te detalje, ta dodatna sigurnost se neprimjetno i nepovratno gubi. Tako je : gubitak sustava u ruke neprijatelja ne smije uzrokovati neugodnosti.
Drugo, pretpostavljamo da je pravi ključ jedini ključ koji će dovesti do razumnog dešifriranja. To je također razumna pretpostavka; ona vrijedi ako je šifrat znatno duži od ključa i dobro čitljiv. Obično je to slučaj u stvarnom svijetu, osim ili (ako vam se ne sviđa da smo se osvrnuli na objašnjenja, molimo pogledajte teorem 3.8 ).
Uzimajući u obzir navedeno, nastaje strategija: provjeriti svaki mogući ključ. To se naziva brute force, a takav napad jamči uspjeh protiv svih praktičnih šifri – na kraju krajeva. Na primjer, brute force je dovoljan da probije , drevnu šifru gdje je ključ jedna slova iz abecede, što podrazumijeva nešto više od 20 mogućih ključeva.
Nažalost za kriptanalitičare, povećanje veličine ključa dobro štiti od brute force napada. Kako veličina ključa raste, broj mogućih ključeva eksponencijalno se povećava. S modernim veličinama ključeva, jednostavni brute force napad je potpuno nepraktičan. Da bismo razumjeli što mislim, uzmimo najbrži poznati superračunalo sredinom 2019. godine: iz IBM-a, s vrhunskim performansama od oko 10^17 operacija u sekundi. Danas je tipična dužina ključa 128 bita, što znači 2^128 mogućih kombinacija. Da bi probao sve ključeve, superračunalu Summit bi bilo potrebno vrijeme koje je otprilike 7800 puta veće od starosti svemira.
Trebamo li smatrati brute force povijesnom kuriozitetom? Naravno da ne: to je neophodna sastavnica u kuharici kriptanalize. Rijetko se pojavljuju toliko slabe šifre koje se mogu probiti samo pametnim napadom, bez korištenja sile u određenom obliku. Mnogi uspješni napadi prvo koriste algoritamsku metodu da oslabe ciljanu šifru, a zatim pokreću brute force.
Frekvencijska analiza
Većina tekstova nije gibberish. Na primjer, u engleskim tekstovima ima mnogo slova 'e' i članaka 'the'; u binarnim datotekama ima mnogo nul byte-ova kao punila između fragmenata informacija. Frekvencijska analiza je bilo koji napad koji koristi ovu činjenicu.
Kanončki primjer šifre koja je ranjiva na ovaj napad je jednostavna šifra supstitucije. U ovoj šifri, ključ predstavlja tablicu koja zamjenjuje sve slova. Na primjer, 'g' se zamjenjuje s 'h', 'o' – s 'j'. Tako se riječ 'go' mijenja u 'hj'. Ova šifra je teška za jednostavni brute force, jer postoji mnogo mogućih tablica supstitucije. Ako vas zanima matematika, učinkovita dužina ključa iznosi oko 88 bita: to je
. Ali analiza frekvencija obično brzo rješava zadatak.
Razmotrimo sljedeći šifrat, obrađen jednostavnom supstitucijskom šifrom:
XDYLY ALY UGLY XDWNKE WN DYAJYN ANF YALXD DGLAXWG XDAN ALY FLYAUX GR WN OGQL ZDWBGEGZDO
Budući da Y se često pojavljuje, uključujući na kraju mnogih riječi, možemo unaprijed pretpostaviti da je to slovo e:
XDeLe ALe UGLe XDWNKE WN DeAJeN ANF eALXD DGLAXWG XDAN ALe FLeAUX GR WN OGQL ZDWBGEGZDO
Par XD ponavlja se na početku nekoliko riječi. Konkretno, kombinacija XDeLe očito sugerira riječ these ili there, stoga nastavljamo:
theLe ALe UGLe thWNKE WN heAJeN ANF eALth DGLAtWG thAN ALe FLeAUt GR WN OGQL ZDWBGEGZDO
Nakon toga pretpostavljamo da L odgovara r, A — a i tako dalje. Vjerojatno će biti potrebno nekoliko pokušaja, ali u usporedbi s potpunim brute-force napadom, ova napad obnavlja izvorni tekst u najkraćem mogućem vremenu:
there are more things in heaven and earth horatio than are dreamt of in your philosophy
Za neke je rješavanje takvih 'kriptograma' zanimljiv hobi.
Ideja analize frekvencija fundamentalnija je nego što se čini na prvi pogled. I primjenjiva je na mnogo složenije šifre. Tijekom povijesti, različite konstrukcije šifri pokušavale su se oduprijeti takvim napadima kroz 'poli-alfa supstituciju'. Tijekom šifriranja, tablica zamjene slova mijenja se na složene, ali predvidive načine koji ovise o ključnoj riječi. Sve te šifre su u svoje vrijeme smatrane teškima za razbijanje; ipak, skromna analiza frekvencija na kraju ih je sve svladala.
Najambicioznija poli-alfa šifra u povijesti, i vjerojatno najpoznatija, bila je šifra 'Enigma' tijekom Drugog svjetskog rata. Bila je relativno složena u usporedbi s prethodnicima, ali je nakon dugog i upornog rada britanski kriptoanalitičari razbili pomoću analize frekvencija. Naravno, nisu mogli razviti elegantan napad kao što je onaj prikazan iznad; morali su uspoređivati poznate parove otvorenih i šifriranih tekstova (takozvani 'napad temeljen na otvorenim tekstovima') i čak provocirajući korisnike 'Enigme' da šifriraju određene poruke s analizom rezultata ('napad temeljen na odabranom otvorenom tekstu'). No, to nije olakšalo sudbinu poraženih vojski neprijatelja i potopljenih podmornica.
Nakon ove pobjede, frekventna analiza nestaje iz povijesti kriptoanalize. Šifre moderne digitalne ere osmišljene su za rad s bitovima, a ne s slovima. Što je još važnije, te šifre razvijene su s mračnim razumijevanjem onoga što je kasnije postalo poznato kao : svatko može stvoriti algoritam šifriranja koji sam ne može probiti. Nije dovoljno da šifrirni sustav izgleda složen: da bi dokazao svoju vrijednost, mora proći nemilosrdni pregled sigurnosti od mnogih kriptoanalitičara koji će učiniti sve da probariju šifru.
Prethodne kalkulacije
Uzmimo hipotetski grad Prekom Heights s populacijom od 200.000 ljudi. U svakoj kući u gradu nalazi se vrijedna imovina u prosjeku vrijedna 30.000 dolara, ali ne više od 50.000 dolara. Tržište sigurnosti u Prekomu monopolizirala je tvrtka ACME Industries, koja proizvodi legendarnu Coyote ™ bravu. Prema stručnoj analizi, bravu klase Coyote može probiti samo vrlo složena hipotetska mašina, čija izrada zahtijeva oko pet godina i ulaganje od 50.000 dolara. Je li grad u sigurnosti?
Vjerojatno ne. Na kraju će se pojaviti dovoljno ambiciozan zločinac. Razmišljat će ovako: „Da, imat ću velike troškove unaprijed. Pet godina strpljivog čekanja i 50.000 dolara. No na kraju ću imati pristup cjelokupnom bogatstvu ovog grada. Ako igram svoje karte ispravno, ova investicija višestruko će se isplatiti.“
Slično je i u kriptografiji. Napadi protiv određenog šifriranja podložni su nemilosrdnoj analizi troškova i koristi. Ako je omjer povoljan, napad se neće dogoditi. No, napadi koji djeluju odmah protiv mnogih potencijalnih žrtava gotovo uvijek se isplate, a u tom slučaju najbolja praksa dizajniranja je pretpostaviti da su počeli od prvog dana. Imamo, zapravo, kriptografski oblik Murphyjevog zakona: „Sve što može probiti sustav, probit će sustav.“
Najjednostavniji primjer kriptosustava koji je ranjiv na napad s prethodnim kalkulacijama je šifra s konstantnim algoritmom bez korištenja ključa. Tako je bilo u slučaju , koji jednostavno pomiče svako slova abecede unaprijed za tri slova (tablica je kružna, tako da se posljednje slovo u abecedi šifrira s trećim). Ovdje se ponovno javlja princip Kerckhoffa: kada je sustav jednom napadnut, zauvijek ostaje ugrožen.
Koncept je jednostavan. Čak i početni programer kriptosustava, vjerojatno će biti svjestan prijetnje i odgovarajuće se pripremiti. Ako pogledamo evoluciju kriptografije, takvi napadi bili su neprimjereni za većinu šifri, počevši od prvih poboljšanih verzija Cezarove šifre pa do nazadovanja polialfabetnih šifri. Takvi napadi su se vratili tek s pojavom moderne ere kriptografije.
Ova povratak uzrokovana je dva faktora. Prvo, napfinally su se pojavili dovoljno složeni kriptosustavi, gdje mogućnost eksploatacije nakon napada nije bila očita. Drugo, kriptografija je postala toliko široko rasprostranjena, da milijuni neprofesionalaca svaki dan donose odluke o tome gdje i koje dijelove kriptografije ponovno koristiti. Prošlo je neko vrijeme prije nego što su stručnjaci shvatili nastale rizike i digli alarm.
Zapamtite napad s predračunom: na kraju članka pregledat ćemo dva kriptografska primjera iz stvarnog života gdje je odigrao važnu ulogu.
Interpolacija
Pred vama je slavni detektiv Sherlock Holmes, koji provodi napad s interpolacijom na nesretnog doktora Watsona:
Odmah sam pretpostavio da ste došli iz Afganistana... Moj tok misli je bio ovakav: "Ova osoba po izgledu je liječnik, ali njegova postura je vojna. To znači vojni liječnik. Upravo je stigao iz tropa - lice mu je tamno, ali to nije prirodna nijansa njegove kože, jer su mu zapešća mnogo svjetlija. Lice je iscrpljeno, - očito je pretrpio i prebolio mnogo. Bio je ranjen u lijevu ruku - drži je nepomično i pomalo neprirodno. Gdje bi vojni liječnik Englez mogao trpjeti nevolje i zadobiti ranu u tropima? Naravno, u Afganistanu." Cijela misao nije trajala ni sekundu. I tako sam rekao da ste došli iz Afganistana, a vi ste se začudili.
Iz svakog košnice Holmes je mogao izvući samo malo informacija. Svoj zaključak mogao je donijeti samo razmatrajući ih sve zajedno. Slično tome funkcionira napad interpolacijom, istražujući poznate parove otvorenog i šifriranog teksta dobivenih upotrebom istog ključa. Iz svakog para se izdvajaju pojedinačna zapažanja koja omogućuju donošenje općeg zaključka o ključu. Sve te dedukcije su nejasne i čine se beskorisnima, sve dok odjednom ne dođu do kritične mase i ne dovedu do jedinog mogućeg zaključka: kakav god nevjerojatan bio, mora biti istinit. Nakon toga, ili se otkriva ključ, ili proces dešifriranja postaje toliko izvučen da se može reproducirati.
Ilustrirajmo na jednostavnom primjeru kako radi interpolacija. Pretpostavimo da želimo pročitati osobni dnevnik našeg neprijatelja Boba. On šifrira svaki broj u svom dnevniku pomoću jednostavne kriptosustave koju je saznao iz reklamnog oglasa u časopisu „Ružna šala kriptografiji“. Sustav funkcionira na sljedeći način: Bob odabire dva broja koja mu se sviđaju:
i
. Od tog trenutka, da bi šifrirao bilo koji broj
, on računa
. Na primjer, ako je Bob odabrao
i
, onda će broj
biti šifriran kao
.
Pretpostavimo da smo 28. prosinca primijetili da Bob nešto škraba u svom dnevniku. Kada završi, neprimjetno ćemo ga uzeti i pogledati posljednji unos:
Datum:
235/520Dragi dnevniče,
Danas je bio dobar dan. Za
64dana imam sastanak s Ali, koja živi u stanu843. Zaista mislim da ona može biti26!
Budući da ozbiljno želimo pratiti Boba na njegovom sastanku (u ovom scenariju imamo 15 godina), kritično je važno saznati datum, kao i adresu Alise. Na sreću, primjećujemo da je Bobov kriptosustav ranjiv na napad interpolacijom. Možda ne znamo
i
, ali znamo današnji datum, stoga imamo dva para „otvorenog teksta – šifriranog teksta“. Naime, znamo da
se šifrira u
, već
— u
. To ćemo i zapisati:


Budući da imamo 15 godina, već znamo o sustavu dviju jednadžbi s dva nepoznanika, što je u ovoj situaciji dovoljno za pronalaženje
i
bez većih problema. Svaki par „otvoreni tekst-šifrovan tekst” nameće ograničenje na Bobov ključ, a dvije takve ograničenja su dovoljna da se ključ potpuno povrati. U našem primjeru odgovor
i
(u
, tako da 26 u dnevniku odgovara riječi ‘onaj’, odnosno ‘onaj pravi’ — napomena prev.
Interpolacijski napadi, naravno, ne ograničavaju se samo na ovakve jednostavne primjere. Svaki kriptosustav koji se svodi na dobro razumljivi matematički objekt i skup parametara izložen je riziku od interpolacijskih napada — što je objekt jasniji, to je veći rizik.
Početnici često se žale da je kriptografija „umjetnost dizajniranja što mogu neobičnijih stvari”. U velikoj mjeri tomu doprinose interpolacijski napadi. Bob može ili koristiti elegantan matematički dizajn ili sačuvati privatnost sastanka s Alisom — ali, nažalost, obično nije moguće dobiti oboje. To će postati potpuno jasno kada napokon pređemo na temu kriptografije s javnim ključem.
Kros-protokol/smanjenje
U filmu „Iluzija prevara” (2013) grupa iluzionista pokušava prevarom da izvuče cijelo bogatstvo korumpiranog osiguravajućeg magnata Arthura Trustlera. Da bi dobili pristup Arthurovom bankovnom računu, iluzionisti moraju ili predstaviti njegovo korisničko ime i lozinku ili ga natjerati da se osobno pojavi u banci i učestvuje u planu.
Obje opcije su vrlo teške; momci su navikli nastupati na pozornici, a ne sudjelovati u operacijama tajnih službi. Zato biraju treću moguću opciju: njihov saradnik naziva banku i pretvara se da je Arthur. Banka postavlja nekoliko pitanja za provjeru identiteta, kao što su ime ujaka i ime prvog kućnog ljubimca; naši junaci unaprijed . Od ovog trenutka odlična sigurnost lozinke više nema značaj.
(Prema gradskoj legendi kojoj smo lično prisustvovali i potvrdili, kriptograf Eli Biham jednom se suočio sa bankarom koji je insistirao na postavljanju tajnog pitanja. Kada je bankar pitao ime bake s majčine strane, Biham je počeo da diktira: „Veliko X, malo y, tri…”.)
I u kriptografiji, ako se za zaštitu istog sredstva istovremeno koriste dva kriptografska protokola, pri čemu je jedan mnogo slabiji od drugog, konačni sustav postaje ranjiv na napad putem različitih protokola, gdje se slabiji protokol napada kako bi se došlo do nagrade, a da se ne dodirne jači.
U nekim složenim slučajevima nije dovoljno jednostavno se povezati s poslužiteljem putem slabijeg protokola, već je potrebna i nevoljna suradnja legitimnog klijenta. To se može organizirati putem takozvanog napada na smanjenje (downgrade). Da bismo razumjeli ovaj napad, pretpostavimo da naši iluzionisti imaju složeniji zadatak nego u filmu. Pretpostavimo da su se u nepredviđenim okolnostima zaposlenika banke (kasira) i Arthura dogodile određene situacije, što je dovelo do sljedećeg dijaloga:
Haker: Halo? To je Arthur Tresler. Htio bih povratiti svoju lozinku.
Kasir: Odlično. Molim vas, pogledajte u svoju osobnu knjigu tajnih kodova, stranica 28, riječ 3. Sve sljedeće poruke će biti šifrirane ovim konkretnim rječju kao ključem. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…
Haker: Hej, hey, čekaj, čekaj. Je li to stvarno potrebno? Ne možemo jednostavno razgovarati kao normalni ljudi?
Kasir: Ne preporučujem to.
Haker: Samo... slušaj, imao sam užasan dan, jasno? Ja sam VIP-klijent i nisam raspoložen za bavljanje tim glupim kodnim knjigama.
Kasir: Dobro. Ako tako zahtijevate, gospodine Tresler. Što vam je po volji?
Haker: Molim vas, želio bih prebaciti sve svoje novce u Nacionalni fond žrtava Arthura Treslera.
(Pauza).
Kasir: Dakle, jasno. Molim vas, navedite svoj PIN za velike transakcije.
Haker: Moj što?
Kasir: Prema vašoj osobnoj molbi, transakcije te veličine zahtijevaju unos PIN-a za velike transakcije. Taj kod ste dobili kada ste otvorili račun.
Haker:… Izgubio sam ga. Je li to stvarno potrebno? Zar ne možete jednostavno odobriti transakciju?
Kasir: Ne. Ispričavam se, gospodine Tresler. Ponovno, ovo je sigurnosna mjera koju ste tražili. Ako želite, možemo poslati novi PIN-kod na adresu.
Naši junaci odgađaju operaciju. Prate nekoliko velikih transakcija Treslera, nadajući se da će čuti PIN; ali svaki put razgovor postane nejasan prije nego što se čuje nešto zanimljivo. Napokon, jednog lijepog dana provode plan u djelo. Strpljivo čekaju trenutak kada Tresler treba izvršiti veliku transakciju putem telefona, priključuje se na liniju, a zatim…
Tresler: Dobar dan. Htio bih izvršiti udaljenu transakciju, molim vas.
Kasir: Odlično. Molim vas, pogledajte u svoju osobnu knjigu tajnih kodova, stranica…
(Haker pritisne gumb; glas blagajnika pretvara se u nerazgovjetnu buku).
Kasir: — #@$#@$#*@$$@#* bit će šifriran s ovom riječi kao ključem. AAAYRR PLRQRZ MMNJK LOJBAN…
Tresler: Oprostite, nisam potpuno razumio. Možete li ponoviti? Na kojoj stranici? Koja riječ?
Kasir: To je stranica @#$@#*$)#*#@()#@$(#@*$(#@*.
Tresler: Što?
Kasir: Riječ broj dvadeset @$#@$#%#$.
Tresler: Ozbiljno! Pa dosta je već! Ti sa svojim sigurnosnim protokolom — to je pravi cirkus. Znam da možeš samo normalno razgovarati sa mnom.
Kasir: Ne preporučujem…
Tresler: A ja ti ne preporučujem da mi gubiš vrijeme. Ne želim više čuti o tome dok ne ispravite probleme s vašom telefonskom linijom. Možemo li izvršiti ovu transakciju ili ne?
Kasir:… da. U redu. Što želite?
Tresler: Htio bih prenijeti $20,000 na račun tvrtke Lord Business Investments, broj računa…
Kasir: Trenutak, molim vas. To je velika transakcija. Molim vas, navedite svoj PIN za velike transakcije.
Tresler: Što? Ah, da. 1234.
Evo napada na smanjenje. Slabiji protokol „samo pričaj ravno“ predviđen je kao opcija rezervni plan. A ipak, evo nas ovdje.
Možete se pitati tko bi normalan dizajnirao pravi sustav tipa „sigurno, osim ako ne tražiš obrnuto“, kao što je opisano gore. No, baš kao i izmišljena banka preuzima rizik da zadrži klijente koji ne vole kriptografiju, tako i sustavi u cjelini često popuštaju zahtjevima koji su ravnodušni ili čak otvoreno neprijateljski prema sigurnosti.
Istorija koja se dogodila s protokolom SSLv2 1995. godine potvrđuje to. Vlada Sjedinjenih Američkih Država davno je počela gledati na kriptografiju kao na oružje koje treba zadržati dalje od vanjskih i unutarnjih neprijatelja. Djelovi koda odobravani su za izvoz iz SAD-a, često pod uvjetom da se namjerno oslabi algoritam. Tvrtki Netscape, koja je razvila najpopularniji preglednik Netscape Navigator, dodijeljeno je odobrenje za SSLv2 samo s izvorno ranjivim RSA ključem od 512 bita (i 40 bita za RC4).
Do kraja milenija pravila su ublažena i pristup modernim šifriranjima postao je široko dostupan. Ipak, klijenti i poslužitelji su godinama podržavali oslabljen „izvozni“ kriptografski sustav zbog istog inertnog razloga zbog kojeg se podržavaju sve zastarjele sustave. Klijenti su vjerovali da mogu naići na poslužitelj koji ne podržava ništa drugo. Poslužitelji su radili isto. Naravno, protokol SSL nalaže da klijenti i poslužitelji nikada ne bi trebali koristiti slabi protokol kada je dostupan bolji. Ali ista pretpostavka važila je za Tresstlera i njegove banke.
Ova teorija primijenjena je u dva glasovita napada koja su jedan za drugim potresla sigurnost protokola SSL 2015. godine, a otkrili su ih istraživači Microsofta i . Prvo su u veljači objavljeni detalji napada FREAK, a tri mjeseca kasnije još jedan sličan napad nazvan Logjam, koji ćemo detaljnije raspraviti kada pređemo na napade na kriptografiju s javnim ključem.
Ranjivost (poznat i kao „Smack TLS“) manifestirao se kada su istraživači analizirali implementacije klijenta/poslužitelja TLS-a i otkrili zanimljivu grešku. U tim implementacijama, čak i ako klijent ne zatraži korištenje slabe izvozne kriptografije, ali poslužitelj i dalje odgovara takvim ključevima – klijent kaže „Pa dobro“ i prelazi na slabi skup šifara.
Tada su svi smatrali izvoznu kriptografiju zastarjelom i zabranjenom za korištenje, stoga je napad postao pravi šok i pogodio mnoge važne domene, uključujući stranice Bijele kuće, Porezne uprave SAD-a i NSA. Što je gore, ispostavilo se da su mnogi ranjivi poslužitelji optimizirali performanse ponovnim korištenjem istih ključeva, umjesto da stvaraju nove za svaku sesiju. To je omogućilo napad s prekomjenskim izračunom nakon smanjenja protokola: provaljivanje jednog ključa ostalo je relativno skupo (100 dolara i 12 sati u trenutku objave), ali praktični trošak napada na vezu značajno se smanjio. Dovoljno je jednom pronaći poslužiteljski ključ — i provaliti šifriranja za sve sljedeće veze od tog trenutka.
I prije nego što krenemo dalje, važno je spomenuti jedan napredni napad…
Napad orakla
najpoznatiji je kao otac kripto-mesenjera Signal; ali nama se osobno sviđa jedan od njegovih manje poznatih inovacija — (Princip prokletstva u kriptografiji). Malo preformulirajući, možemo reći: "Ako protokol izvršava bilo kriptografske operacije na porukama iz potencijalno zlonamjernog izvora i ponaša se drugačije ovisno o rezultatu, on je proklet." Ili u oštrijem obliku: "Ne uzimaj informacije od neprijatelja na obradu, a ako moraš, barem ne prikazuj rezultat."
Ostavimo po strani preljeve bafereta, injekcije naredbi i slične napade; oni izlaze iz okvira ove diskusije. Kršenje "principa prokletstva" dovodi do ozbiljnih provala u kriptografiji jer se protokol ponaša točno onako kako treba.
Za primjer uzmimo izmišljenu konstrukciju s ranjivim šifrom zamjene, a zatim ćemo demonstrirati mogući napad. Iako smo već vidjeli napad na šifru zamjene putem analiza frekvencija, to nije samo "drugi način da se slomi ta šifra". Naprotiv, napadi orakla su mnogo suvremenije izum, primjenjivo u mnogim situacijama kada analiza frekvencija ne uspijeva, a to ćemo demonstrirati u sljedećem dijelu. Ovdje je jednostavna šifra odabrana samo kako bi primjer bio jasniji.
Dakle, Alisa i Bob komuniciraju uz pomoć jednostavne šifre zamjene, koristeći ključ poznat samo njima. Veoma strogo se drže dužine poruka: njihova dužina je tačno 20 znakova. Stoga su se dogovorili da, ako netko želi poslati kraću poruku, mora dodati neki lažni tekst na kraj poruke kako bi ona imala tačno 20 znakova. Nakon nekog raspravljanja odlučili su da će prihvatati samo sljedeće lažne tekstove: a, bb, ccc, dddd i td. Tako je poznat lažni tekst bilo koje potrebne dužine.
Kada Alisa ili Bob prime poruku, prvo provjeravaju da li poruka ima ispravnu dužinu (20 znakova), a sufiks - ispravan lažni tekst. Ako to nije slučaj, odgovaraju odgovarajućom porukom o grešci. Ako su dužina teksta i lažni tekst u redu, primatelj čita samu poruku i šalje enkriptirani odgovor.
U procesu napada, napadač se lažno predstavlja kao Bob i šalje lažne poruke Alisi. Poruke su potpuna glupost - napadač nema ključ i stoga ne može falsificirati smisleno obavještenje. No, s obzirom da protokol krši princip neizbježnosti, napadač može dovesti Alisu u zamku da otkrije informacije o ključu, kao što je prikazano u nastavku.
Haker:
PREWF ZHJKL MMMN. LAAlisa: Neispravan lažni tekst.
Haker:
PREWF ZHJKL MMMN. LBAlisa: Neispravan lažni tekst.
Haker:
PREWF ZHJKL MMMN. LCAlisa:
ILCT? TLCT RUWO PUT KCAW CPS OWPOW!
Haker nema pojma što je Alisa upravo rekla, ali primjećuje da znak C mora odgovarati a, s obzirom da je Alisa prihvatila lažni tekst.
Haker:
REWF ZHJKL MMMN. LAAAlisa: Neispravan lažni tekst.
Haker:
REWF ZHJKL MMMN. LBBAlisa: Neispravan lažni tekst.
Nakon niza pokušaja…
Haker:
REWF ZHJKL MMMN. LGGAlisa: Neispravan lažni tekst.
Haker:
REWF ZHJKL MMMN. LHHAlisa:
TLQO JWCRO FQAW SUY LCR C OWQXYJW. IW PWWR TU TCFA CHUYT TLQO JWFCTQUPOLQZ.
Opet, haker nema pojma što je Alisa upravo rekla, ali primjećuje da H mora odgovarati b, s obzirom da je Alisa prihvatila lažni tekst.
I tako dalje, dok haker ne sazna značenje svakog znaka.
Na prvi pogled, metoda podsjeća na napad temeljen na odabranom otvorenom tekstu. Na kraju, napadač odabire šifropotpisane tekstove, a server ih poslušno obrađuje. Glavna razlika koja čini ove napade održivima u stvarnom svijetu leži u tome što napadaču nije potreban pristup stvarnoj dešifriranju — dovoljna je reakcija servera, čak i tako bezazlena kao što je "Pogrešan lažni tekst".
Iako je ovaj konkretni napad poučan, ne treba se previše fokusirati na specifičnosti sheme "lažnog teksta", konkretne korištene kriptosustave ili točne sekvence poruka poslanih od strane napadača. Osnovna ideja je u tome kako se Alisa različito ponaša, oslanjajući se na svojstva otvorenog teksta, a to čini bez provjere da li je relevantni šifrovani tekst zapravo primljen od pouzdane strane. Tako Alisa dopušta napadaču da izvuče tajne informacije iz njezinih odgovora.
U ovom scenariju može se mnogo toga promijeniti. Simboli na koje Alisa reagira, ili sama razlika u njenom ponašanju, ili čak korištena kriptosustava. No, princip će ostati isti, a napad u cjelini će ostati održiv u nekom obliku. Osnovna implementacija ovog napada pomogla je u otkrivanju nekoliko sigurnosnih grešaka koje ćemo uskoro razmotriti; ali prije toga, treba usvojiti neke teoretske lekcije. Kako koristiti ovaj izmišljeni "scenarij Alise" u napadu koji može raditi na stvarnom modernom šifriru? Je li to uopće moguće, čak i u teoriji?
Godine 1998. švicarski kriptograf Daniel Bleichenbacher odgovorio je na ovo pitanje pozitivno. Demonstrirao je napad orakla u široko korištenoj kriptosustavi s javnim ključem RSA, koristeći određenu shemu poruka. U nekim implementacijama RSA server odgovara različitim grešaka, ovisno o tome je li otvoreni tekst u skladu s shemom ili ne; toga je bilo dovoljno da se izvede napad.
Četiri godine kasnije, 2002. godine, francuski kriptograf Serge Vaudenay demonstrirao je napad orakla, gotovo identičan onome opisanom ranije u scenariju Alise – osim što je umjesto izmišljenog šifriranja provalio čitavu uglednu klasu modernih šifri koje ljudi zaista koriste. Konkretno, Vaudenayev napad usmjeren je na šifre s fiksnom veličinom ulaza („blok šifre“), kada se koriste u takozvanom „CBC režimu šifriranja“ i s određenom popularnom shemom popunjavanja, koja je u suštini ekvivalentna onoj u scenariju Alise.
Također, 2002. godine, američki kriptograf John Kelsey – koautor predložio je razne napade orakla na sustave koji prvo komprimiraju poruke, a zatim ih šifriraju. Najistaknutiji među njima bio je napad koji je koristio to što se često može izvesti izvorna dužina otvorenog teksta iz dužine šifriranog teksta. U teoriji, to omogućuje provedbu napada orakla koji obnavlja dijelove izvornog otvorenog teksta.
U nastavku dajemo detaljniji opis napada Vaudenaya i Kelseya (dati ćemo detaljniji opis napada Bleichenbachera kada pređemo na napade na kriptografiju s javnim ključem). Unatoč svim našim naporima, tekst postaje donekle tehnički; stoga, ako je navedeno dovoljno za vas, preskočite sljedeća dva odjeljka.
Napad Vaudenaya
Da bismo razumjeli napad Vaudenaya, prvo moramo malo detaljnije razgovarati o blok šiframa i režimima šifriranja. "Blok šifra" je, kao što je već spomenuto, šifra koja prihvaća ključ i unos fiksne duljine („dužina bloka") i daje šifrirani blok iste duljine. Blok šifre su široko korištene i smatraju se relativno sigurnima. Nekadašnji DES, koji se smatra prvim modernim šifrom, bio je blok šifra. Kao što je već spomenuto, to isto vrijedi i za AES, koji se danas široko koristi.
Nažalost, blokovni šifri imaju jednu očitu slabost. Tipična veličina bloka iznosi 128 bita, odnosno 16 znakova. Očito je da moderna kryptografija zahtijeva rad s ulaznim podacima veće veličine, i tu se javljaju način šifriranja. Način šifriranja je, u suštini, hak: to je način na koji se nekako primjenjuje blokovni šifrir koji prihvaća ulazne podatke samo određene veličine na ulazne podatke proizvoljne duljine.
Vodené napad usmjeren je na popularni način rada CBC (Cipher Block Chaining, način povezivanja blokova šifrovanih podataka). Napad promatra osnovni blokovni šifrir kao čarobnu, neprobojnju crnu kutiju i potpuno zaobilazi njegovu sigurnost.
Evo dijagrama koji prikazuje kako funkcionira način rada CBC:


Obrisani plus označava operaciju XOR (isključivo 'ILI'). Na primjer, drugi blok šifrovanih podataka dobiven je:
- Izvršavanjem operacije XOR na drugom bloku otvorenog teksta s prvim blokom šifrovanih podataka.
- Šifriranjem dobivenog bloka pomoću blokovnog šifra, koristeći ključ.
Budući da CBC intenzivno koristi binarnu operaciju XOR, iskoristimo trenutak da se prisjetimo nekih njezinih svojstava:
- Idempotentnost:
- Komutativnost:
- Asocijativnost:
- Inverzibilnost:
- Po bajtovima: bajt n iz
= (bajt n iz
)
(bajt n iz
)
Generalno, ova svojstva impliciraju da ako imamo jednadžbu koja uključuje operacije XOR i jedno nepoznato, može se riješiti. Na primjer, ako znamo da
s nepoznatim
i poznatim
i
, možemo se osloniti na gore navedena svojstva da riješimo jednadžbu za
. Primjenom XOR s obje strane jednadžbe s
, dobivamo
. U trenutku će sve ovo postati vrlo relevantno.
Između našeg scenarija Alice i napada Vodené postoje dvije manje razlike i jedna glavna razlika. Dvije manje:
- U scenariju je Alice očekivala da otvoreni tekstovi završavaju s znakovima
a,bb,ccci tako dalje. U napadu Vodené žrtva umjesto toga očekuje da otvoreni tekstovi završavaju N puta bajtom N (tj. heksadecimalno 01 ili 02 02, ili 03 03 03 i tako dalje). To je čisto kozmetička razlika. - U scenariju Alice lako je bilo reći je li Alice primila poruku, prema odgovoru „Neispravan lažni tekst“. U napadu Vodené potreban je veći analiz i važna je točna implementacija na strani žrtve; no, za sažetak, pretpostavimo da je ta analiza još uvijek moguća.
Glavna razlika:
- Budući da ne koristimo isti kriptosustav, veza između kontroliranih bajtova šifriranog teksta i tajni (ključ i otvoreni tekst) očito će biti drugačija. Stoga će napadaču biti potrebna drugačija strategija pri stvaranju šifrova i tumačenju odgovora servera.
Ovo je glavna razlika – posljednji fragment slagalice za razumijevanje napada Vodené, stoga razmislimo na trenutak o tome zašto i kako uopće može biti organiziran napad orakula na CBC.
Pretpostavimo da imamo CBC šifrovan tekst od 247 blokova, i želimo ga dešifrirati. Možemo slati lažne poruke serveru, baš kao što smo ranije mogli slati lažne poruke Alice. Server će za nas dešifrirati poruke, ali neće pokazivati dešifriranje – umjesto toga, ponovno, kao u slučaju Alice, server će nam dati samo jedan bit informacije: ima li ispravne popunjenosti otvorenog teksta ili ne.
Imajte na umu da smo u scenariju Alice imali sljedeće odnose:
$$display$$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key}) = text{plaintext}$$display$$
Nazovimo to „jednadžba Alice“. Kontrolirali smo šifrovan tekst; server (Alice) je ispuštao nejasne informacije o primljenom otvorenom tekstu; i to nam je omogućilo da izvučemo informacije o posljednjem faktoru – ključ. Slično tome, ako možemo pronaći takvu vezu za CBC scenarij, mogli bismo izvući neku tajnu informaciju i tamo.
Na sreću, doista postoje odnosi koje možemo iskoristiti. Razmotrimo izlaz konačnog poziva za dešifriranje blok šifriranja i označimo te podatke kao
. Također označimo blokove otvorenog teksta
i blokove šifrovanog teksta
. Pogledajte još jednom dijagram CBC i primijetite što se događa:

Nazovimo to „jednadžba CBC“.
U Alicinom scenariju, kontrolirajući šifrotekst i promatrajući curenje informacija o odgovarajućem otvorenom tekstu, uspjeli smo organizirati napad koji je obnovio treći član jednadžbe – ključ. U CBC scenariju također kontroliramo šifrotekst i promatramo curenje informacija o odgovarajućem otvorenom tekstu. Ako analogija postoji, moći ćemo dobiti informacije o
.
Pretpostavimo da smo zaista obnovili
, što onda? Pa, tada možemo odmah izvesti cijeli posljednji blok otvorenog teksta (
), jednostavno unoseći
(koji imamo) i
dobiveni
u CBC jednadžbu.
Dakle, optimistični smo u vezi s općim planom napada, i došlo je vrijeme da razradimo detalje. Obratite pažnju na to kako točno na poslužitelju dolazi do curenja informacija o otvorenom tekstu. U Alicinom scenariju, curenje se dogodilo jer je Alice odgovarala ispravnom porukom samo ako $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ završava sa a (ili bb, i tako dalje, ali šanse za slučajno ispunjavanje tih uvjeta bile su vrlo male). Slično s CBC, poslužitelj prihvaća ispunjenje ako i samo ako
završava heksadecimalnim 01. Pa, pokušajmo istu foru: slanje lažnih šifroteksta s našim vlastitim lažnim vrijednostima
, dok poslužitelj ne prihvati ispunjenje.
Kada poslužitelj prihvati ispunjenje za jednu od naših lažnih poruka, to znači da:

Sada koristimo svojstvo bytewise XOR-a:

Znamo prvi i treći član. I već smo vidjeli da to omogućuje obnovu preostalog člana – posljednjeg bajta iz
:

To nam također daje posljednji bajt konačnog bloka otvorenog teksta kroz CBC jednadžbu i svojstvo bytewise-a.
Mogli bismo završiti tome i zadovoljiti se napadom na teorijski otporan šifrirani tekst. No, zapravo možemo napraviti mnogo više: možemo doista obnoviti cijeli tekst. To zahtijeva određeni trik koji nije bio u originalnom Alicinom scenariju i ne obuhvaća obavezne uvjete napada orakla, ali metoda zaslužuje proučavanje.
Da bismo ga razumjeli, prvo obratite pažnju na to da je rezultat pravilnog izvođenja posljednjeg bajta
Imamo novu sposobnost. Sada možemo upravljati posljednjim bajtom odgovarajućeg otvorenog teksta prilikom lažiranja šifrovanih podataka. Opet, to je povezano s CBC jednadžbom i svojstvom bajtne operacije:

Budući da sada znamo drugi član, možemo iskoristiti našu kontrolu nad prvim za upravljanje trećim. Jednostavno izračunavamo:

Ranije to nismo mogli učiniti jer nismo imali posljednji bajt.
.
Kako nam to može pomoći? Pretpostavimo da sada stvaramo sve šifrovane podatke tako da u odgovarajućim otvorenim tekstovima posljednji bajt bude 02. Sada server prihvata popunjavanje samo ako otvoreni tekst završava sa 02 02. Budući da smo ispravili posljednji bajt, to će se dogoditi samo ako pretposljednji bajt otvorenog teksta također bude 02. Nastavljamo slati lažne šifrovane blokove mijenjajući pretposljednji bajt sve dok server ne prihvati popunjavanje za jedan od njih. U tom trenutku dobivamo:

I obnavljamo pretposljednji bajt
na isti način na koji smo obnovili posljednji. Nastavljamo dalje: ispravljamo posljednja dva bajta otvorenog teksta na 03 03, ponavljajući ovaj napad za treći bajt s kraja i tako dalje, na kraju potpuno obnavljajući
.
Što je s ostatkom teksta? Imajte na umu da je vrijednost
zapravno $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$. Možemo staviti bilo koji drugi blok umjesto
, a napad će i dalje biti uspješan. Zapravo, možemo zatražiti od servera da izvrši $inline$text{BLOCK_DECRYPT}$inline$ za bilo koje podatke. U tom trenutku, igra je gotova – možemo dešifrovati bilo koji šifrovani tekst (pogledajte ponovo dijagram dešifriranja CBC da biste se uvjerili u to; i primijetite da je IV vektor javno dostupan).
Ova konkretna metoda igra ključnu ulogu u napadu orakla, s kojim ćemo se kasnije suočiti.
Napad Kelsey
Naš blizak duh John Kelsey izložio je principe koji leže u osnovi mnogih mogućih napada, a ne samo detalje o specifičnom napadu na specifični šifrirani sistem. Njegov je istraživanje mogućih napada na šifrirane komprimirane podatke. Mislili ste da je za izvođenje napada potrebna samo informacija da su se podaci komprimirali prije šifriranja? Ispostavlja se da je to dovoljno.
Ovaj izvanredni rezultat temelji se na dva principa. Prvo, postoji snažna korelacija između dužine otvorenog teksta i dužine šifrovanog teksta; za mnoge šifre iznos je tačan. Drugo, kada se primenjuje kompresija, takođe postoji snažna korelacija između dužine komprimovane poruke i stepena 'šumovitosti' otvorenog teksta, odnosno udela ponavljajućih karaktera (tehnički termin - 'velika entropija').
Da bismo videli princip u akciji, razmotrimo dva otvorena teksta:
Otvoreni tekst 1:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOtvoreni tekst 2:
ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ
Pretpostavimo da su oba otvorena teksta komprimovana, a zatim šifrovana. Dobijate dva rezultantna šifrovanog teksta i treba da pogodite koji šifrovani tekst odgovara kojem otvorenom tekstu:
Šifrovani tekst 1:
PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTAŠifrovani tekst 2:
DWKJZXYU
Odgovor je jasan. Među otvorenim tekstovima, samo otvoreni tekst 1 mogao je biti komprimovan do oskudne dužine drugog šifrovanog teksta. Otkriće smo došli bez ikakvog znanja o algoritmu kompresije, ključa šifrovanja ili čak samoj šifri. U odnosu na hijerarhiju mogućih kriptografskih napada, ovo je neka vrsta ludila.
Kelsey dalje ukazuje da se pod određenim neobičnim okolnostima ovaj princip također može iskoristiti za izvođenje oracle napada. Konkretno, opisuje kako zlonamerni napadač može obnoviti tajni otvoreni tekst ako može naterati server da šifruje podatke iz obrasca (otvoreni tekst, koji sledi
, dok on kontroliše
i može na neki način proveriti dužinu šifrovanog rezultata.
Opet, kao i kod drugih oracle napada, imamo odnos:

Ponovo, kontroliramo jedan član (
), vidimo malu curenje informacija o drugom članu (šifrovanom tekstu) i pokušavamo da obnovimo poslednji (otvoreni tekst). Iako postoji analogija, ovo je pomalo neobična situacija u odnosu na druge oracle napade koje smo videli.
Da bismo ilustrovali kako takav napad može funkcionisati, koristimo izmišljeni schema za kompresiju, koji smo upravo smislili: TOYZIP. On traži redove teksta koji su se već ranije pojavili u tekstu i zamenjuje ih sa tri bajta-punila, koja ukazuju gde pronaći raniji primer reda i koliko puta se tamo pojavljuje. Na primer, red helloworldhello može se komprimirati u helloworld[00][00][05] dužine 13 bajtova u odnosu na izvornih 15 bajtova.
Pretpostavimo da napadač pokušava povratiti otvoreni tekst obrasca password=..., gdje je sama lozinka nepoznata. Prema Kelseyjevoj napadačkoj teoriji, napadač može zatražiti od servera da komprimira, a zatim šifrira poruke obrasca (otvoreni tekst, nakon čega slijedi
), gdje
— proizvoljan tekst. Kada server završi, izvještava o dužini rezultata. Napad ide na sljedeći način:
Haker: Molimo vas da komprimirate i šifrirate otvoreni tekst bez ikakvih ispunjavanja.
Server: Dužina rezultata je 14.
Haker: Molimo vas da komprimirate i šifrirate otvoreni tekst kojem je dodat
password=a.Server: Dužina rezultata je 18.
Napadač primjećuje: [izvor 14] + [tri bajta koja su zamijenila password=] + a
Haker: Molimo vas da komprimirate i šifrirate otvoreni tekst kojem je dodat
password=b.Server: Dužina rezultata je 18.
Haker: Molimo vas da komprimirate i šifrirate otvoreni tekst kojem je dodat
password=c.Server: Dužina rezultata je 17.
Napadač primjećuje: [izvor 14] + [tri bajta koja su zamijenila password=c]. To implicira da izvorni otvoreni tekst sadrži niz password=c. To jest, lozinka počinje slovom c
Haker: Molimo vas da komprimirate i šifrirate otvoreni tekst kojem je dodat
password=ca.Server: Dužina rezultata je 18.
Napadač primjećuje: [izvor 14] + [tri bajta koja su zamijenila password=c] + a
Haker: Molimo vas da komprimirate i šifrirate otvoreni tekst kojem je dodat
password=cb.Server: Dužina rezultata je 18.
(… neko vrijeme kasnije…)
Haker: Molimo vas da komprimirate i šifrirate otvoreni tekst kojem je dodat
password=co.Server: Dužina rezultata je 17.
Napadač primjećuje: [izvor 14] + [tri bajta koja su zamijenila password=co]. Po istoj logici, napadač zaključuje da lozinka počinje s slovima co
I tako dalje dok se ne obnovi cijela lozinka.
Čitatelju može biti oprošteno pomisliti da je ovo čist akademski zadatak i da takav scenarij napada nikada neće nastati u stvarnom svijetu. Nažalost, kao što ćemo ubrzo vidjeti, u kriptografiji je bolje ne davati takva obećanja.
Brendirane ranjivosti: CRIME, POODLE, DROWN
Na kraju, nakon detaljnog proučavanja teorije, možemo vidjeti kako se ove metode primjenjuju u stvarnim kriptografskim napadima.
CRIME
Ako je napad usmjeren na preglednik i mrežu žrtve, nešto će biti lakše, a nešto teže. Na primjer, vidjeti promet žrtve je lako: dovoljno je sjediti s njom u istom kafiću s WiFi-em. Iz tog razloga, potencijalnim žrtvama (tj. svima) obično se preporučuje korištenje šifrirane veze. Bit će teže, ali i dalje moguće, izvršavanje HTTP zahtjeva u ime žrtve na nekom vanjskom sajtu (npr. Google). Napadač mora privući žrtvu na zlonamjernu web stranicu sa skriptom koja će izvršiti zahtjev. Web preglednik automatski će pružiti odgovarajuću sesijsku kolačić.
To se čini nevjerojatnim. Ako je Bob posjetio evil.com, može li skripta na ovoj stranici jednostavno zatražiti od Googlea da pošalje Bobovu lozinku e-poštom na napadač@zlo.com? Ну, в теории да, но на самом деле нет. Такой сценарий называется атакой на подделку межсайтовых запросов (, CSRF), i bio je popularan otprilike sredinom 90-ih. Danas, ako evil.com pokuša takvu foru, Google (ili bilo koja ozbiljna stranica) obično će odgovoriti: „Odlično, ali vaš CSRF token za ovu transakciju će biti... mmm... tri trilijuna i sedam. Molimo vas, ponovite taj broj.“ Moderni preglednici primjenjuju nešto što se zove „politika istog podrijetla“ (same-origin policy), prema kojoj skripte na stranici A nemaju pristup informacijama poslanim s web stranice B. Stoga skripta na evil.com može slati zahtjeve na google.com, ali ne može čitati odgovore ili zapravo završiti transakciju.
Moramo naglasiti da, ako Bob ne koristi šifriranu vezu, sve te zaštite su besmislene. Haker može jednostavno pročitati Bobov promet i obnoviti Googleovu sesijsku kolačić. S tim kolačićem, jednostavno može otvoriti novu karticu u Googleu, ne izlazeći iz vlastitog preglednika, i pretvarati se da je Bob, ne susrećući se s neugodnim politikama politike istog podrijetla. No, nažalost za hakera, takve situacije se sve manje događaju. Internet je općenito odavno objavio rat nešifriranim vezama, a odlazni promet Boba vjerojatno je šifriran, svidjelo mu se to ili ne. Osim toga, od samog početka implementacije protokola, promet se također kompresirao prije šifriranja; to je bila uobičajena praksa za smanjenje latencije.
Ovdje u igru ulazi (Compression Ratio Infoleak Made Easy, jednostavno curenje kroz omjer kompresije). Ranjivost koju su pokazali u rujnu 2012. godine istraživači sigurnosti Giuliano Rizzo i Thai Duong. Već smo razložili cijelu teorijsku osnovu koja omogućava razumijevanje što su napravili i kako. Haker može natjerati Bobov preglednik da šalje zahtjeve Googleu, a zatim prisluškivati odgovore u lokalnoj mreži u komprimiranom, šifriranom obliku. Stoga imamo:

Ovdje haker kontrolira zahtjev i ima pristup snifferu prometa, uključujući veličinu paketa. Izmišljeni scenarij Kelseyja postao je stvarnost.
Razumijevajući teoriju, autori CRIME-a stvorili su exploit koji može ukrasti sesijske kolačiće za širok spektar web stranica, uključujući Gmail, Twitter, Dropbox i Github. Ranljivost je zahvatila većinu modernih web preglednika, a u rezultat su objavljeni zakrpe koje su potajno zakopale funkciju kompresije u SSL-u, kako ne bi bila korištena. Jedini otporni na ranljivost bio je ugledni Internet Explorer, koji nikada nije koristio SSL kompresiju.
POODLE
U listopadu 2014. godine Googleova sigurnosna ekipa izazvala je uzbunu u sigurnosnoj zajednici. Uspjeli su eksploatirati ranjivost u SSL protokolu, koja je ispravljena više od deset godina ranije.
Ispostavilo se da, iako na poslužiteljima radi novi TLSv1.2, mnogi su ostavili podršku za zastarjeli SSLv3 zbog kompatibilnosti s Internet Explorer 6. Već smo govorili o napadima na poniženje, pa možete zamisliti što se događa. Dobro organizirani sabotaž protokola rukovanja - i poslužitelji su spremni vratiti se na stari dobri SSLv3, efektivno poništavajući posljednjih 15 godina istraživanja sigurnosti.
Za povijesni kontekst, :
Transport Layer Security (TLS) je najvažniji sigurnosni protokol na internetu. [..] gotovo svaka transakcija koju obavljate na internetu ovisi o TLS-u. [..] Ali TLS nije uvijek bio TLS. Protokol je započeo svoj život u pod nazivom «Secure Sockets Layer» ili SSL. Priča se da je prva verzija SSL bila toliko strašna da su programeri sakupili sve ispisane kopije koda i zakopali ih na tajnoj deponiji u Novom Meksiku. Kao rezultat toga, prva javna verzija SSL-a zapravo je . Izgleda prilično zastrašujuće, i [..] to je bio proizvod iz sredine 90-ih koje moderni kriptografi smatraju kao «». Mnogi od najstrašnijih napada kriptografije, za koje danas znamo, još nisu otkriveni. Kao rezultat, programerima SSLv2 protokola bilo je praktički potrebno kretati se u tami, i suočili su se s — na njihovu žalost i našu korist, jer su napadi na SSLv2 ostavili bezcjene lekcije za sljedeću generaciju protokola.
Nakon tih događaja, 1996. godine, razočarana tvrtka Netscape potpuno je prepravila SSL protokol. Rezultat je bio SSL verzija 3, koja .
Na sreću za hakere, "nekoliko" ne znači "sve". U cjelini, SSLv3 je pružao sve potrebne građevne blokove za pokretanje Vodene napade. Protokol je koristio blokovni šifrirajući algoritam u CBC režimu i nesigurnu shemu punjenja (to je ispravljeno u TLS-u; stoga je nastala potreba za napadom na sniženje). Ako se sjećate sheme punjenja iz našeg prvotnog opisa Vodene napade, shema SSLv3 vrlo je slična.
Ali, nažalost za hakere, "slična" ne znači "identična". Shema punjenja SSLv3 ima oblik "N proizvoljnih bajtova, nakon kojih slijedi broj N". Pokušajte u takvim uvjetima odabrati imaginarni blok šifriranog teksta i proći kroz sve faze izvorne sheme Vodene napade: otkrit ćete da napad uspijeva izdvojiti zadnji bajt iz odgovarajućeg bloka otvorenog teksta, ali ne ide dalje. Dešifriranje svakog 16. bajta šifriranog teksta je odlična trik, ali to nije pobjeda.
Suočena s neuspjehom, Googleova ekipa pribjegla je ekstremnoj opciji: prebacili su se na moćniji model prijetnje — onaj koji se koristio u CRIME-u. Ako pretpostavimo da je napadač skripta pokrenuta na kartici preglednika žrtve i da može izvući sesijske kolačiće, napad je i dalje impresivan. Iako je širi model prijetnje manje realističan, u prethodnom odjeljku već smo vidjeli da je ovaj konkretni model izvediv.
Uzimajući u obzir ove snažnije mogućnosti napadača, napad se sada može nastaviti. Imajte na umu da napadač zna gdje se u zaglavlju prikazuje šifrirana sesijska datoteka kolačića i upravlja dužinom HTTP zahtjeva koji joj prethodi. Stoga je sposoban manipulirati HTTP zahtjevom na način da posljednji bajt kolačića bude u skladu s krajem bloka. Sada je ovaj bajt pogodan za dešifriranje. Možete jednostavno dodati jedan znak u zahtjev, a pretposljednji bajt kolačića će ostati na istom mjestu i biti prikladan za pokušaj dešifriranja istom metodom. Napad se nastavlja na ovaj način sve dok se datoteka kolačića ne obnovi u potpunosti. To se naziva POODLE: Padding Oracle on Downgraded Legacy Encryption, oracle s punjenjem na sniženom zastarjelom šifriranju.
DROWN
Kao što smo već spomenuli, SSLv3 je imao nedostatke, ali se značajno razlikovao od svog prethodnika, jer je propusni SSLv2 bio proizvod druge ere. Tamo se moglo prekinuti poruku na sredini: pristajem na to samo preko mog leša pretvara se u pristajem na to; klijent i poslužitelj mogli su se susresti na internetu, uspostaviti povjerenje i razmijeniti tajne pred očima napadača, koji se lako mogao pretvarati i za jednog i za drugog. Također, bila je i problem s izvoznom kriptografijom, o kojoj smo govorili prilikom razmatranja FREAK-a. To su bili kriptografski Sodoma i Gomora.
U ožujku 2016., tim istraživača iz raznih tehničkih područja okupio se i napravio zapanjujuće otkriće: SSLv2 se još uvijek koristi u sustavima sigurnosti. Da, napadači više nisu mogli smanjiti moderne TLS sesije na SSLv2, jer je ta rupa zatvorena nakon FREAK-a i POODLE-a, ali su se još uvijek mogli povezati s poslužiteljima i pokrenuti SSLv2 sesije samostalno.
Pitat ćete se, što nas briga što oni rade? Imaju ranjivu sesiju, ali to ne bi trebalo utjecati na druge sesije ili sigurnost poslužitelja — zar ne? Pa, ne baš. Da, tako bi trebalo biti u teoriji. Ali ne — jer generacija SSL certifikata nosi određeno opterećenje, zbog čega mnogi poslužitelji koriste iste certifikate, a kao posljedicu toga, iste RSA ključeve za TLS i SSLv2 veze. Što je još gore, zbog greške u OpenSSL-u u ovoj popularnoj implementaciji SSL opcija "Onemogući SSLv2" zapravo nije radila.
To je omogućilo kros-protokolsku napad na TLS, nazvan (Decrypting RSA with Obsolete and Weakened eNcryption, dešifriranje RSA sa zastarjelim i oslabjelim šifriranjem). Podsjećamo da to nije isto kao napad s padom; napadaču nije potrebno djelovati kao „čovjek u sredini“ i nije potrebno uključiti klijenta za sudjelovanje u nesigurnoj sesiji. Napadači jednostavno sami iniciraju nesigurnu SSLv2 sesiju s poslužiteljem, napadaju slabi protokol i obnavljaju tajni poslužiteljski RSA ključ. Ovaj ključ također važi za TLS veze, a od tog trenutka nijedna TLS sigurnost neće ga spasiti od provale.
No, za provalu je potreban funkcionalan napad protiv SSLv2, koji omogućava obnavljanje ne samo određenog prometa, već i tajnog poslužiteljskog RSA ključa. Iako je to složen zadatak, istraživači su mogli odabrati bilo koju ranjivost koja je potpuno zatvorena nakon SSLv2. Na kraju su pronašli odgovarajuću opciju: napad Bleichenbachera, o kojem smo već razgovarali i koji ćemo detaljno objasniti u sljedećem članku. SSL i TLS su zaštićeni od ovog napada, ali neke slučajne SSL funkcije u kombinaciji s kratkim ključevima u export-class kriptografiji, omogućile su .
U trenutku objave ranjivost DROWN je bila podložna 25% od najpopularnijih web stranica interneta, a napad se mogao provesti s skromnim resursima, dostupnim čak i za nestašne haker-e. Za vađenje RSA ključa poslužitelja potrebni su bili osam sati proračuna i 440 dolara, a SSLv2 je promijenio status s "zastarjelog" na "radioaktivan".
Čekajte, a što je s Heartbleed-om?
To nije kriptografski napad u smislu, kako su opisani gore; to je prelivanje bafera.
Napravimo pauzu.
Počeli smo s nekim osnovnim metodama: brute-force, interpolacija, pad, kros-protokol i pre-calculacija. Zatim smo razmotrili jednu naprednu tehniku, koja je možda glavni sastavni dio modernih kriptografskih napada: to je napad orakla. O njoj smo se prilično dugo bavili — i shvatili ne samo princip koji stoji iza, već i tehničke detalje dviju specifičnih implementacija: Vodenova napada na CBC način šifriranja i Kelsijev napad na protokole šifriranja s prethodnim kompresijama.
U pregledu napada na smanjenje i uz prethodne izračune, ukratko smo prikazali napad FREAK, koji koristi obje metode, jer ciljani web sadržaji padaju na slabe ključeve, a zatim ih ponovo koriste. Za sljedeći članak ostavili smo (vrlo sličan) napad Logjam, koji cilja na algoritme s javnim ključem.
Zatim smo razmotrili još tri primjera primjene ovih načela. Prvo, CRIME i POODLE: dva napada koja su se oslanjala na sposobnost napadača da umetne proizvoljan otvoreni tekst pored ciljanog otvorenog teksta, a zatim prouči serverove odgovore i zatim, koristeći metodologiju napada orakla, iskoriste te oskudne informacije za djelomično obnavljanje otvorenog teksta. CRIME je slijedio put Kelseyjevog napada na SSL kompresiju, dok je POODLE umjesto toga koristio varijantu Vodene napada na CBC sa istim učinkom.
Zatim smo se osvrnuli na kros-protokolni napad DROWN, koji uspostavlja vezu sa serverom putem zastarjelog protokola SSLv2, a zatim obnavlja tajne servere ključeve kroz napad Bleichenbachera. U ovom trenutku smo preskočili tehničke detalje ovog napada; kao i Logjam, potrebno je malo vremena da dobro proučimo kriptosustave s javnim ključem i njihove ranjivosti.
U sljedećem članku razgovarat ćemo o naprednim napadima — poput metode susreta na sredini (meet-in-the-middle), diferencijalne kriptoanalize i napada 'rođendanske proslave'. Napravit ćemo kratak pregled napada kroz sporedne kanale, a zatim se baciti na ono najzanimljivije — kriptosustave s javnim ključem.
Izvor: habr.com

= (bajt n iz
)
(bajt n iz
)