Kriptografski napadi: objašnjenje za zbunjene umove

Kada čujete riječ "kriptografija", neki ljudi se sjete svoje WiFi lozinke, zelenog katanca pored adrese svoje omiljene web stranice i koliko je teško ući na tuđu e-poštu. Drugi se prisjećaju niza ranjivosti posljednjih godina sa skraćenicama (DROWN, FREAK, POODLE...), modernim logotipima i upozorenjem da hitno ažurirate svoj pretraživač.

Kriptografija pokriva sve, ali suština u drugom. Poenta je da postoji tanka linija između jednostavnog i složenog. Neke stvari je lako uraditi, ali ih je teško sastaviti, kao što je razbijanje jajeta. Druge stvari je lako učiniti, ali ih je teško vratiti kada nedostaje mali, važan, ključni dio: na primjer, otvaranje zaključanih vrata kada je "ključni dio" ključ. Kriptografija proučava ove situacije i kako se one mogu koristiti u praksi.

Posljednjih godina zbirka kriptografskih napada pretvorila se u zoološki vrt blistavih logotipa, ispunjenih formulama iz naučnih radova, i izazvala opći sumorni osjećaj da je sve pokvareno. Ali u stvari, mnogi napadi se zasnivaju na nekoliko opštih principa, a beskrajne stranice formula se često svode na lako razumljive ideje.

U ovoj seriji članaka osvrnut ćemo se na različite vrste kriptografskih napada, s naglaskom na osnovne principe. Općenito i ne baš ovim redoslijedom, ali ćemo pokriti sljedeće:

  • Osnovne strategije: brute force, analiza frekvencija, interpolacija, downgrading i cross-protocols.
  • Brendirane ranjivosti: NAKAZA, ZLOČIN, PUDLA, UDAVILA, Logjam.
  • Napredne strategije: napadi na proročanstvo (napad Vodenet, napad Kelsey); metoda susreta u sredini, rođendanski napad, statistička pristrasnost (diferencijalna kriptoanaliza, integralna kriptoanaliza, itd.).
  • Napadi sa strane kanala i njihovi bliski srodnici, tehnike analize neuspjeha.
  • Napadi na kriptografiju javnog ključa: kockasti korijen, emitiranje, povezana poruka, Coppersmith napad, Pohlig-Hellman algoritam, sito brojeva, Wiener napad, Bleichenbacher napad.

Ovaj članak pokriva gornji materijal sve do Kelseyjevog napada.

Osnovne strategije

Sljedeći napadi su jednostavni u smislu da se mogu gotovo u potpunosti objasniti bez mnogo tehničkih detalja. Objasnimo svaku vrstu napada najjednostavnijim riječima, ne ulazeći u složene primjere ili napredne slučajeve upotrebe.

Neki od ovih napada su u velikoj mjeri zastarjeli i nisu korišteni dugi niz godina. Drugi su oldtajmeri koji se i dalje redovno šunjaju nesuđenim programerima kriptosistema u 21. veku. Može se smatrati da je era moderne kriptografije započela pojavom IBM DES-a, prve šifre koja je izdržala sve napade na ovoj listi.

Jednostavna brutalna sila

Kriptografski napadi: objašnjenje za zbunjene umoveŠema šifriranja se sastoji od dva dijela: 1) funkcije šifriranja, koja uzima poruku (plaintext) u kombinaciji s ključem, a zatim kreira šifriranu poruku - šifrirani tekst; 2) funkcija dešifriranja koja uzima šifrirani tekst i ključ i proizvodi otvoreni tekst. I šifriranje i dešifriranje moraju biti lake za izračunavanje pomoću ključa — a teško za izračunavanje bez njega.

Pretpostavimo da vidimo šifrirani tekst i pokušamo ga dešifrirati bez ikakvih dodatnih informacija (ovo se zove napad samo šifriranim tekstom). Ako nekako magično pronađemo ispravan ključ, lako možemo provjeriti da li je zaista ispravan ako je rezultat razumna poruka.

Imajte na umu da ovdje postoje dvije implicitne pretpostavke. Prvo, znamo kako izvršiti dešifriranje, odnosno kako funkcionira kriptosistem. Ovo je standardna pretpostavka kada se govori o kriptografiji. Skrivanje detalja implementacije šifre od napadača može izgledati kao dodatna sigurnosna mjera, ali kada napadač shvati ove detalje, ova dodatna sigurnost se tiho i nepovratno gubi. Tako Kerchhoffsov princip: Sistem koji padne u ruke neprijatelja ne bi trebao uzrokovati neugodnosti.

Drugo, pretpostavljamo da je ispravan ključ jedini ključ koji će dovesti do razumnog dešifriranja. Ovo je takođe razumna pretpostavka; zadovoljava se ako je šifrirani tekst mnogo duži od ključa i čitljiv. Ovo se obično dešava u stvarnom svetu, osim ogromni nepraktični ključevi ili druge smicalice koje je najbolje ostaviti po strani (ako vam se ne sviđa što smo preskočili objašnjenje, pogledajte teoremu 3.8 ovdje).

S obzirom na gore navedeno, nameće se strategija: provjeriti svaki mogući ključ. Ovo se zove brutalna sila, a takav napad će zajamčeno djelovati protiv svih praktičnih šifri - na kraju. Na primjer, brutalna sila je dovoljna za hakiranje Cezarova šifra, drevna šifra u kojoj je ključ jedno slovo abecede, što podrazumijeva nešto više od 20 mogućih ključeva.

Nažalost za kriptoanalitičare, povećanje veličine ključa je dobra odbrana od grube sile. Kako se veličina ključa povećava, broj mogućih ključeva raste eksponencijalno. Uz moderne veličine ključeva, jednostavna gruba sila je potpuno nepraktična. Da bismo razumjeli na šta mislimo, uzmimo najbrži poznati superkompjuter od sredine 2019: vrh od IBM-a, sa vršnim performansama od oko 1017 operacija u sekundi. Danas je tipična dužina ključa 128 bita, što znači 2128 mogućih kombinacija. Za pretraživanje svih ključeva, Summit superkompjuteru će trebati vrijeme koje je približno 7800 puta starije od svemira.

Treba li grubu silu smatrati istorijskim kuriozitetom? Nikako: neophodan je sastojak kuharice kriptoanalize. Rijetko su šifre toliko slabe da se mogu razbiti samo pametnim napadom, bez upotrebe sile u ovom ili onom stepenu. Mnogi uspješni hakovi koriste algoritamsku metodu da prvo oslabe ciljnu šifru, a zatim izvedu napad grubom silom.

Analiza frekvencija

Kriptografski napadi: objašnjenje za zbunjene umoveVećina tekstova nije besmislica. Na primjer, u engleskim tekstovima postoji mnogo slova 'e' i članova 'the'; u binarnim datotekama, postoji mnogo nula bajtova kao dopuna između dijelova informacija. Analiza frekvencije je svaki napad koji koristi ovu činjenicu.

Kanonski primjer šifre ranjive na ovaj napad je jednostavna zamjenska šifra. U ovoj šifri, ključ je tabela sa svim zamijenjenim slovima. Na primjer, 'g' se zamjenjuje sa 'h', 'o' sa j, tako da riječ 'go' postaje 'hj'. Ovu šifru je teško primijeniti grubom silom jer postoji toliko mnogo mogućih tabela pretraživanja. Ako vas zanima matematika, efektivna dužina ključa je oko 88 bita: to je
Kriptografski napadi: objašnjenje za zbunjene umove. Ali analiza frekvencije obično brzo obavi posao.

Razmotrimo sljedeći šifrirani tekst obrađen jednostavnom zamjenskom šifrom:

XDYLY ALY UGLY XDWNKE WN DYAJYN ANF YALXD DGLAXWG XDAN ALY FLYAUX GR WN OGQL ZDWBGEGZDO

Od Y pojavljuje se često, uključujući i na kraju mnogih riječi, možemo uvjetno pretpostaviti da je ovo slovo e:

XDeLe ALe UGLe XDWNKE WN DeAJeN ANF eALXD DGLAXWG XDAN Ale FleAUX GR WN OGQL ZDWBGEGZDO

Par XD ponovljeno na početku nekoliko riječi. Konkretno, kombinacija XDeLe jasno sugerira tu riječ these ili there, pa da nastavimo:

theLe ALE UGLE THWNKE WN HEAJEN ANF eALth DGLATWG THAN ALE FleAUt GR WN OGQL ZDWBGEGZDO

Pretpostavimo dalje to L odgovara r, A - a i tako dalje. Vjerovatno će biti potrebno nekoliko pokušaja, ali u poređenju s napadom potpune grube sile, ovaj napad vraća originalni tekst za kratko vrijeme:

ima više stvari na nebu i zemlji, horatio, nego što se sanja u vašoj filozofiji

Za neke je rješavanje takvih "kriptograma" uzbudljiv hobi.

Ideja analize frekvencija je fundamentalnija nego što se čini na prvi pogled. I to se odnosi na mnogo složenije šifre. Kroz istoriju, različiti dizajni šifri su pokušavali da se suprotstave takvom napadu koristeći "polialfabetsku zamenu". Ovdje, tokom procesa šifriranja, tablica zamjene slova se modificira na složene, ali predvidljive načine koji zavise od ključa. Smatralo se da je sve ove šifre teško razbiti u jednom trenutku; a ipak skromna analiza frekvencija ih je na kraju sve porazila.

Najambicioznija polialfabetska šifra u istoriji, a verovatno i najpoznatija, bila je šifra Enigma iz Drugog svetskog rata. Bio je relativno složen u odnosu na svoje prethodnike, ali nakon puno napornog rada, britanski kriptoanalitičari su ga razbili koristeći frekvencijsku analizu. Naravno, nisu mogli razviti elegantan napad kao što je prikazan gore; morali su da uporede poznate parove otvorenog teksta i šifrovanog teksta (tzv. „napad otvorenog teksta“), čak provocirajući korisnike Enigme da šifruju određene poruke i analiziraju rezultat („napad izabranog otvorenog teksta“). Ali to nije nimalo olakšalo sudbinu poraženih neprijateljskih vojski i potopljenih podmornica.

Nakon ovog trijumfa, analiza frekvencija je nestala iz istorije kriptoanalize. Šifre u modernom digitalnom dobu su dizajnirane da rade sa bitovima, a ne slovima. Što je još važnije, ove šifre su dizajnirane s mračnim razumijevanjem onoga što je kasnije postalo poznato kao Schneierov zakon: Svako može kreirati algoritam šifriranja koji sam ne može razbiti. To nije dovoljno za sistem šifriranja činilo se teško: da bi dokazao svoju vrijednost, mora proći nemilosrdnu sigurnosnu reviziju od strane mnogih kriptoanalitičara koji će dati sve od sebe da razbiju šifru.

Preliminarni proračuni

Kriptografski napadi: objašnjenje za zbunjene umoveUzmimo hipotetički grad Precom Heights sa 200 stanovnika. Svaki dom u gradu sadrži u prosjeku 000 30 dolara vrijednih stvari, ali ne više od 000 50. Sigurnosno tržište u Precomu je monopolizirano od strane ACME Industries, koja proizvodi legendarne brave za vrata klase Coyote™. Prema ekspertskim analizama, bravu klase Kojot može razbiti samo vrlo složena hipotetička mašina, za čije je stvaranje potrebno oko pet godina i 000 dolara ulaganja. Da li je grad bezbedan?

Najvjerovatnije ne. Na kraju će se pojaviti prilično ambiciozan kriminalac. On će ovako rezonovati: „Da, snosit ću velike troškove unaprijed. Pet godina strpljivog čekanja i $50 000. Ali kada završim, imat ću pristup svo bogatstvo ovog grada. Ako igram kako treba, ova investicija će se višestruko isplatiti.”

Isto važi i za kriptografiju. Napadi na određenu šifru podliježu nemilosrdnoj analizi troškova i koristi. Ako je odnos povoljan, do napada neće doći. Ali napadi koji djeluju protiv velikog broja potencijalnih žrtava odjednom se gotovo uvijek isplate, u tom slučaju je najbolja dizajnerska praksa pretpostaviti da su počeli od prvog dana. Mi u suštini imamo kriptografsku verziju Marfijevog zakona: "Sve što može da slomi sistem, slomiće sistem."

Najjednostavniji primjer kriptosistema koji je ranjiv na napad predračunavanja je šifra bez ključa s konstantnim ključem. Ovo je bio slučaj sa Cezarova šifra, koji jednostavno pomiče svako slovo abecede za tri slova naprijed (tabela je u petlji, tako da je posljednje slovo u abecedi šifrirano treće). Ovdje ponovo stupa na snagu Kerchhoffsov princip: jednom kada je sistem hakovan, hakovan je zauvijek.

Koncept je jednostavan. Čak će i početnik u razvoju kriptosistema vjerovatno prepoznati prijetnju i pripremiti se u skladu s tim. Gledajući evoluciju kriptografije, takvi napadi su bili neprikladni za većinu šifara, od prvih poboljšanih verzija Cezarove šifre do opadanja polialfabetskih šifri. Takvi napadi su se vratili tek s dolaskom moderne ere kriptografije.

Ovaj povratak je zbog dva faktora. Prvo, konačno su se pojavili dovoljno složeni kriptosistemi, gdje mogućnost eksploatacije nakon hakovanja nije bila očigledna. Drugo, kriptografija je postala toliko raširena da su milioni laika svaki dan donosili odluke o tome gdje i koje dijelove kriptografije ponovno koristiti. Prošlo je neko vrijeme prije nego što su stručnjaci shvatili rizike i podigli uzbunu.

Zapamtite napad predračunanjem: na kraju članka ćemo pogledati dva kriptografska primjera iz stvarnog života u kojima je igrao važnu ulogu.

Interpolacija

Evo poznatog detektiva Sherlocka Holmesa koji izvodi interpolacijski napad na nesretnog dr. Watsona:

Odmah sam pretpostavio da ste došli iz Avganistana... Moj tok misli je bio sledeći: „Ovaj čovek je po vrsti lekar, ali ima vojnički stav. Dakle, vojni doktor. Upravo je stigao iz tropskih krajeva - lice mu je tamno, ali to nije prirodna nijansa njegove kože, jer su mu zglobovi mnogo bjelji. Lice je iznemoglo - očigledno, mnogo je patio i patio od bolesti. Ranjen je u lijevu ruku - drži je nepomično i pomalo neprirodno. Gdje bi u tropima engleski vojni ljekar mogao izdržati teškoće i biti ranjen? Naravno, u Avganistanu." Cijeli tok misli nije trajao ni sekunde. I tako sam rekao da ste došli iz Avganistana i bili ste iznenađeni.

Holmes je mogao izvući vrlo malo informacija iz svakog dokaza pojedinačno. Do svog zaključka mogao je doći samo razmatrajući ih sve zajedno. Interpolacijski napad funkcionira na sličan način ispitivanjem poznatih parova otvorenog teksta i šifriranog teksta koji su rezultat istog ključa. Iz svakog para izdvajaju se pojedinačna zapažanja koja omogućavaju da se izvuče opšti zaključak o ključu. Svi ovi zaključci su nejasni i izgledaju beskorisni sve dok iznenada ne dostignu kritičnu masu i dovedu do jedinog mogućeg zaključka: koliko god da je nevjerovatan, mora biti istinit. Nakon toga, ili se otkriva ključ, ili proces dešifriranja postaje toliko rafiniran da se može replicirati.

Ilustrirajmo jednostavnim primjerom kako interpolacija funkcionira. Recimo da želimo da pročitamo lični dnevnik našeg neprijatelja, Boba. On šifrira svaki broj u svom dnevniku pomoću jednostavnog kriptosistema za koji je saznao iz oglasa u časopisu "Mock of Cryptography". Sistem funkcionira ovako: Bob bira dva broja koja mu se sviđaju: Kriptografski napadi: objašnjenje za zbunjene umove и Kriptografski napadi: objašnjenje za zbunjene umove. Od sada, za šifriranje bilo kojeg broja Kriptografski napadi: objašnjenje za zbunjene umove, izračunava Kriptografski napadi: objašnjenje za zbunjene umove. Na primjer, ako je Bob odabrao Kriptografski napadi: objašnjenje za zbunjene umove и Kriptografski napadi: objašnjenje za zbunjene umove, zatim broj Kriptografski napadi: objašnjenje za zbunjene umove će biti šifriran kao Kriptografski napadi: objašnjenje za zbunjene umove.

Recimo da smo 28. decembra primijetili da Bob nešto grebe u svom dnevniku. Kad završi, tiho ćemo ga podići i pogledati posljednji unos:

Datum: 235/520

Dragi dnevniče,

Danas je bio dobar dan. Kroz 64 danas imam sastanak sa Alisom koja živi u stanu 843. Zaista mislim da bi mogla biti 26!

Pošto smo veoma ozbiljni u pogledu praćenja Boba na njegovom sastanku (obojica imamo 15 godina u ovom scenariju), važno je znati datum kao i Alisinu adresu. Na sreću, primjećujemo da je Bobov kriptosistem ranjiv na interpolacijski napad. Možda ne znamo Kriptografski napadi: objašnjenje za zbunjene umove и Kriptografski napadi: objašnjenje za zbunjene umove, ali znamo današnji datum, tako da imamo dva para čist tekst-šifrirani tekst. Naime, mi to znamo Kriptografski napadi: objašnjenje za zbunjene umove šifrirano u Kriptografski napadi: objašnjenje za zbunjene umovei Kriptografski napadi: objašnjenje za zbunjene umove - u Kriptografski napadi: objašnjenje za zbunjene umove. Evo šta ćemo zapisati:

Kriptografski napadi: objašnjenje za zbunjene umove

Kriptografski napadi: objašnjenje za zbunjene umove

Pošto imamo 15 godina, već znamo za sistem od dve jednačine sa dve nepoznanice, što je u ovoj situaciji dovoljno da se pronađe Kriptografski napadi: objašnjenje za zbunjene umove и Kriptografski napadi: objašnjenje za zbunjene umove bez ikakvih problema. Svaki par otvoreni tekst-šifrirani tekst postavlja ograničenje na Bobov ključ, a dva ograničenja zajedno su dovoljna da se ključ potpuno povrati. U našem primjeru odgovor je Kriptografski napadi: objašnjenje za zbunjene umove и Kriptografski napadi: objašnjenje za zbunjene umove (u Kriptografski napadi: objašnjenje za zbunjene umove Kriptografski napadi: objašnjenje za zbunjene umove, dakle 26 u dnevniku odgovara riječi 'onaj', odnosno ,,isti taj” - cca. traka).

Napadi interpolacije, naravno, nisu ograničeni na tako jednostavne primjere. Svaki kriptosistem koji se svodi na dobro shvaćeni matematički objekat i listu parametara je u opasnosti od interpolacionog napada – što je objekat razumljiviji, to je veći rizik.

Novopridošlice se često žale da je kriptografija “umijeće dizajniranja stvari što je ružnije moguće”. Za to su vjerovatno najvećim dijelom krivi interpolacijski napadi. Bob može koristiti elegantan matematički dizajn ili zadržati svoj spoj s Alis privatnim - ali nažalost, obično ne možete imati oba načina. Ovo će postati potpuno jasno kada na kraju dođemo do teme kriptografije javnog ključa.

Unakrsni protokol/downgrade

Kriptografski napadi: objašnjenje za zbunjene umoveU Now You See Me (2013), grupa iluzionista pokušava da prevari korumpiranog magnata osiguranja Arthura Tresslera iz njegovog cjelokupnog bogatstva. Da bi dobili pristup Arthurovom bankovnom računu, iluzionisti moraju ili dati njegovo korisničko ime i lozinku ili ga prisiliti da se lično pojavi u banci i učestvuje u šemi.

Obje opcije su veoma teške; Momci su navikli nastupati na sceni, a ne sudjelovati u obavještajnim operacijama. Stoga biraju treću moguću opciju: njihov saučesnik zove banku i pretvara se da je Arthur. Banka postavlja nekoliko pitanja kako bi potvrdila identitet, kao što su ime strica i ime prvog ljubimca; naši heroji unapred oni lako izvlače ove informacije od Arthura koristeći pametan društveni inženjering. Od ovog trenutka, odlična sigurnost lozinke više nije bitna.

(Prema urbanoj legendi koju smo lično provjerili i potvrdili, kriptograf Eli Beaham jednom je naišao na blagajnika banke koji je insistirao na postavljanju sigurnosnog pitanja. Kada je blagajnik zatražio ime svoje bake po majci, Beaham je počeo diktirati: „Kapital X, malo y, tri...").

Isto je i u kriptografiji, ako se dva kriptografska protokola koriste paralelno za zaštitu istog sredstva, a jedan je mnogo slabiji od drugog. Rezultirajući sistem postaje ranjiv na međuprotokolski napad, gdje se napada slabiji protokol kako bi se došao do nagrade bez dodirivanja jačeg.

U nekim složenim slučajevima nije dovoljno jednostavno kontaktirati server koristeći slabiji protokol, već je potrebno nehotično učešće legitimnog klijenta. Ovo se može organizirati korištenjem takozvanog napada na smanjenje nivoa. Da bismo razumjeli ovaj napad, pretpostavimo da naši iluzionisti imaju teži zadatak nego u filmu. Pretpostavimo da su službenik banke (blagajnik) i Arthur naišli na neke nepredviđene okolnosti, što je rezultiralo sljedećim dijalogom:

provalnik: Zdravo? Ovo je Arthur Tressler. Želio bih resetirati svoju lozinku.

blagajnik: Odlično. Molimo pogledajte svoju ličnu knjigu tajnih kodova, stranica 28, riječ 3. Sve sljedeće poruke će biti šifrirane korištenjem ove specifične riječi kao ključa. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…

provalnik: Hej, hej, čekaj, čekaj. Da li je ovo zaista neophodno? Zar ne možemo pričati kao normalni ljudi?

blagajnik: Ne preporučujem ovo da radite.

provalnik: Samo... vidi, imao sam loš dan, ok? Ja sam VIP klijent i nisam raspoložen da kopam po ovim glupim šifrantima.

blagajnik: U redu. Ako insistirate, g. Tressler. Šta želiš?

provalnik: Molim vas, želio bih da doniram sav svoj novac Nacionalnom fondu za žrtve Arthura Tresslera.

(Pauza).

blagajnik: Da li je sada jasno. Unesite svoj PIN za velike transakcije.

provalnik: Moje šta?

blagajnik: Na vaš lični zahtjev, transakcije ove veličine zahtijevaju PIN za velike transakcije. Ovaj kod ste dobili kada ste otvorili svoj račun.

provalnik:... Izgubio sam. Da li je ovo zaista neophodno? Zar ne možete jednostavno odobriti dogovor?

blagajnik: br. Žao mi je, g. Tressler. Opet, ovo je sigurnosna mjera koju ste tražili. Ako želite, možemo vam poslati novi PIN kod u poštansko sanduče.

Naši heroji odlažu operaciju. Oni prisluškuju nekoliko Tresslerovih velikih transakcija, nadajući se da će čuti PIN; ali svaki put kada se razgovor pretvori u šifrirano brbljanje prije nego što se kaže bilo šta zanimljivo. Konačno, jednog lijepog dana, plan je sproveden u djelo. Strpljivo čekaju trenutak kada Tressler mora obaviti veliku transakciju preko telefona, on stane na liniju, a onda...

Tressler: Zdravo. Želim da završim transakciju na daljinu, molim.

blagajnik: Odlično. Molimo pogledajte vašu ličnu knjigu tajnih šifri, stranicu...

(Provalnik pritisne dugme; glas blagajnika se pretvara u nerazumljiv zvuk).

blagajnik: - #@$#@$#*@$$@#* će biti šifriran sa ovom riječju kao ključem. AAAYRR PLRQRZ MMNJK LOJBAN…

Tressler: Izvini, nisam baš razumeo. Opet? Na kojoj stranici? Koju riječ?

blagajnik: Ovo je stranica @#$@#*$)#*#@()#@$(#@*$(#@*).

Tressler: Šta?

blagajnik: Riječ broj dvadeset @$#@$#%#$.

Tressler: Ozbiljno! Dosta je bilo! Ti i tvoj sigurnosni protokol ste neka vrsta cirkusa. Znam da možeš normalno razgovarati sa mnom.

blagajnik: ne preporučujem…

Tressler: I ne savetujem vam da gubite moje vreme. Ne želim više da čujem o ovome dok ne riješite probleme sa telefonskom linijom. Možemo li završiti ovaj dogovor ili ne?

blagajnik:… Da. U redu. Šta želiš?

Tressler: Želeo bih da prebacim 20$ na Lord Business Investments, broj računa...

blagajnik: Jedan minut, molim. To je velika stvar. Unesite svoj PIN za velike transakcije.

Tressler: Šta? Oh, tačno. 1234.

Evo napada prema dolje. Zamišljen je slabiji protokol "samo govori direktno". opcija u slučaju nužde. A ipak smo tu.

Možda se zapitate ko bi pri zdravoj pameti dizajnirao pravi sistem "sigurno dok se ne pita drugačije" poput onog gore opisanog. Ali baš kao što izmišljena banka preuzima rizik da zadrži klijente koji ne vole kriptografiju, sistemi općenito često gravitiraju zahtjevima koji su indiferentni ili čak potpuno neprijateljski nastrojeni prema sigurnosti.

Upravo to se dogodilo sa SSLv2 protokolom 1995. godine. Američka vlada je odavno počela da gleda na kriptografiju kao na oružje koje se najbolje čuva od stranih i domaćih neprijatelja. Komadi koda su pojedinačno odobreni za izvoz iz Sjedinjenih Država, često pod uslovom da je algoritam namjerno oslabljen. Netscape, programer najpopularnijeg pretraživača, Netscape Navigator, dobio je dozvolu za SSLv2 samo sa inherentno ranjivim 512-bitnim RSA ključem (i 40-bitnim za RC4).

Do kraja milenijuma pravila su se popustila i pristup modernom šifrovanju postao je široko dostupan. Međutim, klijenti i serveri godinama podržavaju oslabljenu "izvoznu" kriptografiju zbog iste inercije koja održava podršku za bilo koji naslijeđeni sistem. Klijenti su vjerovali da bi mogli naići na server koji ne podržava ništa drugo. Isto su uradili i serveri. Naravno, SSL protokol nalaže da klijenti i serveri nikada ne bi trebali koristiti slab protokol kada je dostupan bolji. Ali ista se premisa odnosila na Tresslera i njegovu banku.

Ova teorija našla je svoj put u dva napada visokog profila koji su uzdrmali sigurnost SSL protokola 2015. godine, a oba su otkrili Microsoftovi istraživači i INRIA. Prvo su detalji FREAK napada otkriveni u februaru, a tri mjeseca kasnije uslijedio je još jedan sličan napad pod nazivom Logjam, o kojem ćemo detaljnije govoriti kada pređemo na napade na kriptografiju javnog ključa.

Kriptografski napadi: objašnjenje za zbunjene umoveRanjivost FREAK (takođe poznat kao "Smack TLS") izašao je na vidjelo kada su istraživači analizirali TLS klijent/server implementacije i otkrili zanimljivu grešku. U ovim implementacijama, ako klijent čak i ne traži korištenje slabe kriptografije za izvoz, ali server i dalje odgovara takvim ključevima, klijent kaže „Oh, dobro“ i prelazi na slab paket šifriranja.

U to vrijeme, izvozna kriptografija se smatrala zastarjelom i zabranjenom, tako da je napad bio potpuni šok i uticao je na mnoge važne domene, uključujući lokacije Bijele kuće, IRS-a i NSA. Što je još gore, pokazalo se da su mnogi ranjivi serveri optimizirali performanse ponovnom upotrebom istih ključeva umjesto generiranja novih za svaku sesiju. Ovo je omogućilo, nakon degradacije protokola, da se izvrši napad pre računanja: razbijanje jednog ključa ostalo je relativno skupo (100 USD i 12 sati u trenutku objavljivanja), ali je praktični trošak napada na vezu značajno smanjen. Dovoljno je jednom odabrati serverski ključ i od tog trenutka provaliti enkripciju za sve naredne veze.

I prije nego krenemo dalje, postoji jedan napredni napad koji treba spomenuti...

Oracle napad

Kriptografski napadi: objašnjenje za zbunjene umoveMoxie Marlinspike najpoznatiji kao otac višeplatformske aplikacije za razmjenu kripto poruka Signal; ali nama se lično sviđa jedna od njegovih manje poznatih inovacija - princip kriptografske propasti (Kriptografski princip propasti). Da malo parafraziramo, možemo reći ovo: „Ako protokol radi bilo koji izvrši kriptografsku operaciju na poruci iz potencijalno zlonamjernog izvora i ponaša se drugačije ovisno o rezultatu, osuđena je na propast." Ili u oštrijoj formi: "Ne uzimajte informacije od neprijatelja na obradu, a ako morate, onda barem ne pokazujte rezultat."

Ostavimo po strani prekoračenja bafera, injekcije komandi i slično; oni su izvan okvira ove rasprave. Kršenje "principa propasti" dovodi do ozbiljnih hakova u kriptografiji zbog činjenice da se protokol ponaša upravo onako kako se očekivalo.

Kao primjer, uzmimo fiktivni dizajn s ranjivom zamjenskom šifrom, a zatim demonstrirajmo mogući napad. Iako smo već vidjeli napad na supstitucijsku šifru korištenjem frekventne analize, to nije samo "još jedan način da se razbije ista šifra". Naprotiv, orakul napadi su mnogo moderniji izum, primjenjiv na mnoge situacije u kojima analiza frekvencija ne uspije, a to ćemo vidjeti u sljedećem odjeljku. Ovdje je odabrana jednostavna šifra samo da bi primjer bio jasniji.

Dakle, Alice i Bob komuniciraju koristeći jednostavnu zamjensku šifru koristeći samo njima poznat ključ. Vrlo su strogi u pogledu dužine poruka: dugačke su tačno 20 karaktera. Tako su se složili da ako neko želi da pošalje kraću poruku, treba da doda neki lažni tekst na kraj poruke kako bi imala tačno 20 karaktera. Nakon neke rasprave, odlučili su da će prihvatiti samo sljedeće lažne tekstove: a, bb, ccc, dddd itd. Dakle, lažni tekst bilo koje potrebne dužine je poznat.

Kada Alice ili Bob prime poruku, prvo provjeravaju da li je poruka ispravne dužine (20 znakova) i da li je sufiks ispravan lažni tekst. Ako to nije slučaj, oni odgovaraju odgovarajućom porukom o grešci. Ako su dužina teksta i lažni tekst u redu, primalac čita samu poruku i šalje šifrirani odgovor.

Tokom napada, napadač se predstavlja kao Bob i šalje lažne poruke Alice. Poruke su potpuna besmislica - napadač nema ključ, pa stoga ne može krivotvoriti smislenu poruku. Ali pošto protokol krši princip propasti, napadač i dalje može zarobiti Alice da otkrije ključne informacije, kao što je prikazano u nastavku.

provalnik: PREWF ZHJKL MMMN. LA

Alice: Nevažeći lažni tekst.

provalnik: PREWF ZHJKL MMMN. LB

Alice: Nevažeći lažni tekst.

provalnik: PREWF ZHJKL MMMN. LC

Alice: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

Provalnik nema pojma šta je Alisa upravo rekla, ali napominje da je simbol C mora odgovarati a, pošto je Alice prihvatila lažni tekst.

provalnik: REWF ZHJKL MMMN. LAA

Alice: Nevažeći lažni tekst.

provalnik: REWF ZHJKL MMMN. LBB

Alice: Nevažeći lažni tekst.

Nakon brojnih pokušaja...

provalnik: REWF ZHJKL MMMN. LGG

Alice: Nevažeći lažni tekst.

provalnik: REWF ZHJKL MMMN. LHH

Alice: TLQO JWCRO FQAW SUY LCR C OWQXYJW. IW PWWR TU TCFA CHUYT TLQO JWFCTQUPOLQZ.

Opet, napadač nema pojma šta je Alisa upravo rekla, ali napominje da H mora odgovarati b pošto je Alisa prihvatila lažni tekst.

I tako sve dok napadač ne sazna značenje svakog znaka.

Na prvi pogled, metoda liči na odabrani napad otvorenog teksta. Na kraju, napadač odabire šifrirane tekstove, a server ih poslušno obrađuje. Glavna razlika koja ove napade čini održivim u stvarnom svijetu je ta što napadaču nije potreban pristup stvarnom transkriptu – dovoljan je odgovor servera, čak i bezopasan kao što je „Nevažeći lažni tekst“.

Iako je ovaj konkretan napad poučan, nemojte se previše zavlačiti na specifičnosti šeme "lažnog teksta", specifičnog kriptosistema koji se koristi ili tačnog slijeda poruka koje napadač šalje. Osnovna ideja je kako Alice reaguje drugačije na osnovu svojstava otvorenog teksta, i to bez provjere da je odgovarajući šifrirani tekst zapravo došao od strane od povjerenja. Tako Alice dozvoljava napadaču da istisne tajne informacije iz njenih odgovora.

Mnogo toga se može promijeniti u ovom scenariju. Simboli na koje Alice reaguje, ili sama razlika u njenom ponašanju, pa čak i kriptosistem koji se koristi. Ali princip će ostati isti, a napad u cjelini će ostati održiv u ovom ili onom obliku. Osnovna implementacija ovog napada pomogla je da se otkrije nekoliko sigurnosnih grešaka, koje ćemo uskoro pogledati; ali prvo treba naučiti neke teorijske lekcije. Kako iskoristiti ovu fiktivnu "Alisa skriptu" u napadu koji može raditi na pravoj modernoj šifri? Da li je to uopšte moguće, čak i u teoriji?

Godine 1998. švicarski kriptograf Daniel Bleichenbacher odgovorio je potvrdno na ovo pitanje. On je demonstrirao napad proročišta na široko korišćeni kriptosistem javnog ključa RSA, koristeći specifičnu šemu poruka. U nekim RSA implementacijama, server odgovara različitim porukama o grešci u zavisnosti od toga da li se otvoreni tekst podudara sa šemom ili ne; ovo je bilo dovoljno za izvršenje napada.

Četiri godine kasnije, 2002. godine, francuski kriptograf Serge Vaudenay demonstrirao je napad proročišta gotovo identičan onom opisanom u scenariju Alice iznad - osim što je umjesto fiktivne šifre razbio čitavu respektabilnu klasu modernih šifri koje ljudi zapravo koriste. Konkretno, Vaudenayev napad cilja na šifre fiksne ulazne veličine („blok šifre“) kada se koriste u takozvanom „CBC načinu šifriranja“ i sa određenom popularnom šemom dopunjavanja, u osnovi ekvivalentnom onoj u scenariju Alice.

Takođe 2002. američki kriptograf John Kelsey - koautor twofish — predložio razne napade proročišta na sisteme koji komprimiraju poruke i zatim ih šifriraju. Najznačajniji među njima bio je napad koji je iskoristio činjenicu da je često moguće zaključiti originalnu dužinu otvorenog teksta iz dužine šifrovanog teksta. U teoriji, ovo omogućava napad proročišta koji vraća dijelove originalnog otvorenog teksta.

U nastavku dajemo detaljniji opis Vaudenay i Kelsey napada (dat ćemo detaljniji opis Bleichenbacher napada kada prijeđemo na napade na kriptografiju javnog ključa). Uprkos našim naporima, tekst postaje donekle tehnički; pa ako vam je gore navedeno dovoljno, preskočite sljedeća dva odjeljka.

Vodeneov napad

Da bismo razumjeli Vaudenay napad, prvo moramo malo više govoriti o blok šiframa i načinima šifriranja. "Blok šifra" je, kao što je spomenuto, šifra koja uzima ključ i ulaz određene fiksne dužine ("dužina bloka") i proizvodi šifrirani blok iste dužine. Blok šifre se široko koriste i smatraju se relativno sigurnim. Sada penzionisani DES, koji se smatra prvom modernom šifrom, bio je blok šifra. Kao što je gore pomenuto, isto važi i za AES, koji se danas široko koristi.

Nažalost, blok šifre imaju jednu očiglednu slabost. Tipična veličina bloka je 128 bita ili 16 znakova. Očigledno, moderna kriptografija zahtijeva rad s većim ulaznim podacima, i tu stupaju na snagu načini šifriranja. Način šifriranja je u suštini hak: to je način da se nekako primijeni blok šifra koja prihvata samo unos određene veličine na unos proizvoljne dužine.

Vodeneov napad fokusiran je na popularni CBC (Cipher Block Chaining) način rada. Napad tretira osnovnu blok šifru kao magičnu, neosvojivu crnu kutiju i potpuno zaobilazi njenu sigurnost.

Evo dijagrama koji pokazuje kako CBC način funkcionira:

Kriptografski napadi: objašnjenje za zbunjene umove

Kriptografski napadi: objašnjenje za zbunjene umove

Zaokruženi plus označava operaciju XOR (isključivo ILI). Na primjer, prima se drugi blok šifriranog teksta:

  1. Izvođenjem XOR operacije na drugom bloku otvorenog teksta s prvim blokom šifriranog teksta.
  2. Šifriranje rezultirajućeg bloka blokovskom šifrom pomoću ključa.

Budući da CBC tako intenzivno koristi binarnu XOR operaciju, uzmimo trenutak da se prisjetimo nekih od njenih svojstava:

  • impotencija: Kriptografski napadi: objašnjenje za zbunjene umove
  • komutativnost: Kriptografski napadi: objašnjenje za zbunjene umove
  • asocijativnost: Kriptografski napadi: objašnjenje za zbunjene umove
  • Samoreverzibilnost: Kriptografski napadi: objašnjenje za zbunjene umove
  • Broj bajtova: bajt n od Kriptografski napadi: objašnjenje za zbunjene umove = (bajt n od Kriptografski napadi: objašnjenje za zbunjene umove) Kriptografski napadi: objašnjenje za zbunjene umove (bajt n od Kriptografski napadi: objašnjenje za zbunjene umove)

Tipično, ova svojstva impliciraju da ako imamo jednadžbu koja uključuje XOR operacije i jednu nepoznatu, ona može biti riješena. Na primjer, ako to znamo Kriptografski napadi: objašnjenje za zbunjene umove sa nepoznatim Kriptografski napadi: objašnjenje za zbunjene umove i poznati Kriptografski napadi: objašnjenje za zbunjene umove и Kriptografski napadi: objašnjenje za zbunjene umove, tada se možemo osloniti na gore navedena svojstva da riješimo jednačinu za Kriptografski napadi: objašnjenje za zbunjene umove. Primjenom XOR na obje strane jednačine sa Kriptografski napadi: objašnjenje za zbunjene umove, dobijamo Kriptografski napadi: objašnjenje za zbunjene umove. Sve će ovo za trenutak postati veoma relevantno.

Postoje dvije manje razlike i jedna velika razlika između našeg scenarija Alice i Vaudenayovog napada. Dva manja:

  • U scenariju, Alice je očekivala da se otvoreni tekstovi završavaju likovima a, bb, ccc i tako dalje. U Wodene napadu, žrtva umjesto toga očekuje da se otvoreni tekstovi završe N puta sa N bajtom (to jest, heksadecimalno 01 ili 02 02, ili 03 03 03, itd.). Ovo je čisto kozmetička razlika.
  • U scenariju Alice, bilo je lako reći da li je Alice prihvatila poruku po odgovoru "Netačan lažni tekst". U napadu Vodene potrebno je više analize i važna je precizna implementacija na strani žrtve; ali radi kratkoće, uzmimo kao dato da je ova analiza još uvijek moguća.

Glavna razlika:

  • Pošto ne koristimo isti kriptosistem, odnos između bajtova šifrovanog teksta koji kontroliše napadač i tajni (ključ i otvoreni tekst) će očigledno biti drugačiji. Stoga će napadač morati koristiti drugačiju strategiju kada kreira šifrirane tekstove i interpretira odgovore servera.

Ova glavna razlika je posljednji dio slagalice za razumijevanje Vaudenayovog napada, pa hajde da odvojimo trenutak da razmislimo o tome zašto i kako se napad proročišta na CBC uopće može izvesti.

Pretpostavimo da nam je dat CBC šifrirani tekst od 247 blokova i želimo ga dešifrirati. Možemo slati lažne poruke na server, baš kao što smo prije mogli slati lažne poruke Alice. Server će dešifrovati poruke umesto nas, ali neće pokazati dešifrovanje - umesto toga, opet, kao i kod Alice, server će izvesti samo jedan bit informacija: da li otvoreni tekst ima validan padding ili ne.

Uzmite u obzir da smo u Aliceinom scenariju imali sljedeće odnose:

$$display$$text{SIMPLE_SUBSTITUTION}(tekst{ciphertext},text{key}) = tekst{plaintext}$$display$$

Nazovimo ovo "Aliceina jednačina." Mi smo kontrolisali šifrovani tekst; server (Alice) je procurio nejasne informacije o primljenom otvorenom tekstu; i to nam je omogućilo da izvedemo informacije o posljednjem faktoru – ključu. Po analogiji, ako pronađemo takvu vezu za CBC skriptu, možda bismo i tamo mogli izvući neke tajne informacije.

Srećom, zaista postoje veze koje možemo iskoristiti. Uzmite u obzir izlaz završnog poziva za dešifriranje blok šifre i označite ovaj izlaz kao Kriptografski napadi: objašnjenje za zbunjene umove. Takođe označavamo blokove otvorenog teksta Kriptografski napadi: objašnjenje za zbunjene umove i blokovi šifriranog teksta Kriptografski napadi: objašnjenje za zbunjene umove. Pogledajte još jednom CBC dijagram i primijetite šta se događa:

Kriptografski napadi: objašnjenje za zbunjene umove

Nazovimo ovo "CBC jednadžba."

U Alisinom scenariju, praćenjem šifriranog teksta i gledanjem odgovarajućeg otvorenog teksta koji curi, uspjeli smo pokrenuti napad koji je povratio treći član u jednadžbi - ključ. U scenariju CBC-a, također pratimo šifrirani tekst i promatramo curenje informacija na odgovarajućem otvorenom tekstu. Ako analogija vrijedi, možemo dobiti informacije o Kriptografski napadi: objašnjenje za zbunjene umove.

Pretpostavimo da smo zaista restaurirali Kriptografski napadi: objašnjenje za zbunjene umove, šta onda? Pa, onda možemo ispisati cijeli posljednji blok otvorenog teksta odjednom (Kriptografski napadi: objašnjenje za zbunjene umove), jednostavnim unosom Kriptografski napadi: objašnjenje za zbunjene umove (koje imamo) i
primljeno Kriptografski napadi: objašnjenje za zbunjene umove u CBC jednačinu.

Sada kada smo optimisti u pogledu ukupnog plana napada, vrijeme je da razradimo detalje. Obratite pažnju na to kako tačno informacije otvorenog teksta procure na server. U Aliceinoj skripti, do curenja je došlo jer bi Alisa odgovorila ispravnom porukom samo ako bi se $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ završilo sa linijom a (ili bb, i tako dalje, ali šanse da se ovi uslovi izazovu slučajno su vrlo male). Slično CBC-u, server prihvata dopunu ako i samo ako Kriptografski napadi: objašnjenje za zbunjene umove završava heksadecimalno 01. Pa hajde da probamo isti trik: slanje lažnih šifriranih tekstova s ​​našim lažnim vrijednostima Kriptografski napadi: objašnjenje za zbunjene umovedok server ne prihvati punjenje.

Kada server prihvati dopunu za jednu od naših lažnih poruka, to znači da:

Kriptografski napadi: objašnjenje za zbunjene umove

Sada koristimo bajt-bajt XOR svojstvo:

Kriptografski napadi: objašnjenje za zbunjene umove

Znamo prvi i treći termin. I već smo vidjeli da nam to omogućava da povratimo preostali termin - posljednji bajt iz Kriptografski napadi: objašnjenje za zbunjene umove:

Kriptografski napadi: objašnjenje za zbunjene umove

Ovo nam također daje posljednji bajt konačnog bloka otvorenog teksta preko CBC jednačine i svojstva bajt po bajt.

Mogli bismo to ostaviti na tome i biti zadovoljni što smo izvršili napad na teoretski jaku šifru. Ali u stvari možemo učiniti mnogo više: zapravo možemo oporaviti sav tekst. Ovo zahtijeva trik koji nije bio u Aliceinom originalnom scenariju i koji nije potreban za napad proročišta, ali ga ipak vrijedi naučiti.

Da biste to razumjeli, prvo primijetite da je rezultat izlaza ispravne vrijednosti posljednjeg bajta Kriptografski napadi: objašnjenje za zbunjene umove imamo novu sposobnost. Sada, kada krivotvorimo šifrirane tekstove, možemo manipulirati posljednjim bajtom odgovarajućeg otvorenog teksta. Opet, ovo je povezano sa CBC jednadžbom i svojstvom bajt po bajt:

Kriptografski napadi: objašnjenje za zbunjene umove

Pošto sada znamo drugi pojam, možemo koristiti našu kontrolu nad prvim da kontrolišemo treći. Jednostavno izračunavamo:

Kriptografski napadi: objašnjenje za zbunjene umove

Nismo mogli to učiniti prije jer još nismo imali zadnji bajt Kriptografski napadi: objašnjenje za zbunjene umove.

Kako će nam ovo pomoći? Pretpostavimo da sada kreiramo sve šifrirane tekstove tako da je u odgovarajućim otvorenim tekstovima posljednji bajt jednak 02. Server sada prihvata dopunu samo ako se otvoreni tekst završava sa 02 02. Pošto smo ispravili zadnji bajt, to će se dogoditi samo ako je pretposljednji bajt otvorenog teksta također 02. Nastavljamo sa slanjem lažnih blokova šifriranog teksta, mijenjajući pretposljednji bajt, sve dok server ne prihvati dopunu za jedan od njih. U ovom trenutku dobijamo:

Kriptografski napadi: objašnjenje za zbunjene umove

I vraćamo pretposljednji bajt Kriptografski napadi: objašnjenje za zbunjene umove baš kao što je i zadnja restaurirana. Nastavljamo u istom duhu: ispravljamo zadnja dva bajta otvorenog teksta u 03 03, ponavljamo ovaj napad za treći bajt od kraja i tako dalje, na kraju potpuno vraćajući se Kriptografski napadi: objašnjenje za zbunjene umove.

Šta je sa ostatkom teksta? Imajte na umu da vrijednost Kriptografski napadi: objašnjenje za zbunjene umove je zapravo $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$. Umjesto toga možemo staviti bilo koji drugi blok Kriptografski napadi: objašnjenje za zbunjene umove, a napad će i dalje biti uspješan. U stvari, možemo tražiti od servera da uradi $inline$text{BLOCK_DECRYPT}$inline$ za bilo koje podatke. U ovom trenutku, igra je gotova - možemo dešifrirati bilo koji šifrirani tekst (pogledajte još jednom CBC dijagram dešifriranja da vidite ovo; i imajte na umu da je IV javan).

Ova konkretna metoda igra ključnu ulogu u napadu proročišta s kojim ćemo se kasnije susresti.

Kelseyin napad

Naš ljubazni John Kelsey izložio je principe koji su u osnovi mnogih mogućih napada, a ne samo detalje specifičnog napada na određenu šifru. Njegovo 2002 članak godine je studija mogućih napada na šifrirane komprimirane podatke. Jeste li mislili da informacija da su podaci komprimirani prije šifriranja nije dovoljna za izvođenje napada? Ispostavilo se da je to dovoljno.

Ovaj iznenađujući rezultat je rezultat dva principa. Prvo, postoji jaka korelacija između dužine otvorenog teksta i dužine šifrovanog teksta; za mnoge šifre tačna jednakost. Drugo, kada se vrši kompresija, postoji i jaka korelacija između dužine komprimirane poruke i stepena "bučnosti" otvorenog teksta, odnosno udjela znakova koji se ne ponavljaju (tehnički izraz je "visoka entropija" ).

Da biste vidjeli princip na djelu, razmotrite dva otvorena teksta:

Otvoreni tekst 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Otvoreni tekst 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

Pretpostavimo da su oba otvorena teksta komprimirana, a zatim šifrirana. Dobivate dva rezultujuća šifrirana teksta i morate pogoditi koji šifrirani tekst odgovara s kojim otvorenim tekstom:

Šifrirani tekst 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

Šifrirani tekst 2: DWKJZXYU

Odgovor je jasan. Među otvorenim tekstovima, samo se otvoreni tekst 1 mogao komprimovati u oskudnu dužinu drugog šifrovanog teksta. Ovo smo shvatili bez da smo znali ništa o algoritmu kompresije, ključu za šifriranje, pa čak ni o samoj šifri. U poređenju sa hijerarhijom mogućih kriptografskih napada, ovo je pomalo ludo.

Kelsey dalje ističe da se pod određenim neobičnim okolnostima ovaj princip može koristiti i za izvođenje napada proročanstva. Konkretno, opisuje kako napadač može povratiti tajni otvoreni tekst ako može prisiliti server da šifrira podatke obrasca (otvoreni tekst praćen Kriptografski napadi: objašnjenje za zbunjene umovedok on ima kontrolu Kriptografski napadi: objašnjenje za zbunjene umove i može nekako provjeriti dužinu šifriranog rezultata.

Opet, kao i drugi napadi na proročanstvo, imamo odnos:

Kriptografski napadi: objašnjenje za zbunjene umove

Opet, kontrolišemo jedan pojam (Kriptografski napadi: objašnjenje za zbunjene umove), vidimo malo curenje informacija o drugom članu (šifrovani tekst) i pokušavamo da povratimo poslednji (plaintext). Uprkos analogiji, ovo je pomalo neobična situacija u poređenju s drugim napadima na proročanstvo koje smo vidjeli.

Da bismo ilustrirali kako bi takav napad mogao funkcionirati, upotrijebimo fiktivnu šemu kompresije koju smo upravo smislili: TOYZIP. On traži redove teksta koji su se ranije pojavili u tekstu i zamjenjuje ih sa tri bajta čuvara mjesta koji ukazuju na to gdje pronaći raniju instancu reda i koliko puta se tamo pojavljuje. Na primjer, linija helloworldhello može se komprimirati u helloworld[00][00][05] 13 bajtova u odnosu na originalnih 15 bajtova.

Pretpostavimo da napadač pokuša povratiti otvoreni tekst obrasca password=..., gdje je sama lozinka nepoznata. Prema Kelseyjevom modelu napada, napadač može zatražiti od servera da komprimira, a zatim šifrira poruke (čisti tekst praćen Kriptografski napadi: objašnjenje za zbunjene umove) gdje Kriptografski napadi: objašnjenje za zbunjene umove - slobodan tekst. Kada server završi sa radom, prijavljuje dužinu rezultata. Napad ide ovako:

provalnik: Komprimirajte i šifrirajte otvoreni tekst bez ikakvih dodataka.

Server: Dužina rezultata 14.

provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem je dodat password=a.

Server: Dužina rezultata 18.

Kreker bilježi: [original 14] + [tri bajta koja su zamijenjena password=] + a

provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem je dodan password=b.

Server: Dužina rezultata 18.

provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem je dodan password=с.

Server: Dužina rezultata 17.

Kreker bilježi: [original 14] + [tri bajta koja su zamijenjena password=c]. Ovo pretpostavlja da originalni otvoreni tekst sadrži string password=c. Odnosno, lozinka počinje slovom c

provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem je dodan password=сa.

Server: Dužina rezultata 18.

Kreker bilježi: [original 14] + [tri bajta koja su zamijenjena password=с] + a

provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem je dodan password=сb.

Server: Dužina rezultata 18.

(… Nekad kasnije…)

provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem je dodan password=со.

Server: Dužina rezultata 17.

Kreker bilježi: [original 14] + [tri bajta koja su zamijenjena password=co]. Koristeći istu logiku, napadač zaključuje da lozinka počinje slovima co

I tako sve dok se cijela lozinka ne vrati.

Čitaocu bi bilo oprošteno što misli da je ovo čisto akademska vježba i da se takav scenario napada nikada ne bi pojavio u stvarnom svijetu. Avaj, kao što ćemo uskoro vidjeti, bolje je ne odustati od kriptografije.

Ranjivosti brenda: ZLOČIN, PUDLA, UDAVLJENJE

Konačno, nakon detaljnog proučavanja teorije, možemo vidjeti kako se ove tehnike primjenjuju u kriptografskim napadima u stvarnom životu.

ZLOČIN

Kriptografski napadi: objašnjenje za zbunjene umoveAko je napad usmjeren na pretraživač i mrežu žrtve, neki će biti lakši, a neki teži. Na primjer, lako je vidjeti promet žrtve: samo sjedite s njim u istom kafiću s WiFi mrežom. Iz tog razloga, potencijalnim žrtvama (tj. svima) općenito se savjetuje korištenje šifrirane veze. Biće teže, ali i dalje moguće, upućivati ​​HTTP zahtjeve u ime žrtve na neku stranicu treće strane (na primjer, Google). Napadač mora namamiti žrtvu na zlonamjernu web stranicu sa skriptom koja postavlja zahtjev. Web pretraživač će automatski pružiti odgovarajući kolačić sesije.

Ovo izgleda neverovatno. Ako je Bob otišao na evil.com, može li skripta na ovoj stranici samo zatražiti od Googlea da pošalje Bobovu lozinku putem e-pošte [email protected]? Pa, u teoriji da, ali u stvarnosti ne. Ovaj scenario se zove napad krivotvorenja zahtjeva na više lokacija (Krivotvorenje zahtjeva za više web lokacija, CSRF), a bio je popularan sredinom 90-ih. Danas ako evil.com pokuša ovaj trik, Google (ili bilo koja web lokacija koja poštuje sebe) će obično odgovoriti sa: “Odlično, ali vaš CSRF token za ovu transakciju će biti... hm... три триллиона и семь. Ponovite ovaj broj." Moderni pretraživači imaju nešto što se zove "politika istog porekla" pri čemu skripte na lokaciji A nemaju pristup informacijama koje šalje veb lokacija B. Dakle, skripta na evil.com može slati zahtjeve na google.com, ali ne može pročitati odgovore niti dovršiti transakciju.

Moramo naglasiti da sve ove zaštite su besmislene, osim ako Bob ne koristi šifriranu vezu. Napadač može jednostavno pročitati Bobov promet i povratiti Googleov kolačić sesije. Sa ovim kolačićem, on će jednostavno otvoriti novu Google karticu bez napuštanja vlastitog pretraživača i oponašati se Boba, a da ne naiđe na dosadna pravila istog porijekla. Ali, na žalost provalnika, to je sve rjeđe. Internet u cjelini odavno je objavio rat nešifriranim vezama, a Bobov odlazni promet je vjerovatno šifriran, sviđalo mu se to ili ne. Osim toga, od samog početka implementacije protokola promet je bio i promet smanjio prije enkripcije; ovo je bila uobičajena praksa za smanjenje latencije.

Ovdje dolazi do izražaja ZLOČIN (Omjer kompresije Infoleak Made Easy, jednostavno curenje kroz omjer kompresije). Ranjivost su otkrili u septembru 2012. istraživači sigurnosti Juliano Rizzo i Thai Duong. Već smo ispitali cjelokupnu teorijsku osnovu koja nam omogućava da shvatimo šta su i kako radili. Napadač bi mogao natjerati Bobov pretraživač da pošalje zahtjeve Googleu, a zatim presluša odgovore na lokalnoj mreži u komprimiranom, šifriranom obliku. Stoga imamo:

Kriptografski napadi: objašnjenje za zbunjene umove

Ovdje napadač kontrolira zahtjev i ima pristup njuškalu prometa, uključujući veličinu paketa. Kelseyin izmišljeni scenario je zaživeo.

Razumijevajući teoriju, autori CRIME-a su kreirali eksploataciju koja može ukrasti kolačiće sesije za širok spektar web lokacija, uključujući Gmail, Twitter, Dropbox i Github. Ranjivost je uticala na većinu modernih web pretraživača, što je rezultiralo izdavanjem zakrpa koje su tiho sahranile funkciju kompresije u SSL-u tako da se uopće ne bi koristila. Jedini zaštićen od ranjivosti bio je časni Internet Explorer, koji nikada nije koristio SSL kompresiju.

POODLE

Kriptografski napadi: objašnjenje za zbunjene umoveU oktobru 2014. Googleov sigurnosni tim napravio je talase u sigurnosnoj zajednici. Bili su u mogućnosti da iskoriste ranjivost u SSL protokolu koja je zakrpljena prije više od deset godina.

Ispostavilo se da dok serveri pokreću sjajni novi TLSv1.2, mnogi su ostavili podršku za naslijeđeni SSLv3 za kompatibilnost sa Internet Explorerom 6. Već smo pričali o napadima na downgrade, tako da možete zamisliti šta se dešava. Dobro orkestrirana sabotaža protokola rukovanja i serveri su spremni da se vrate na stari dobri SSLv3, u suštini poništavajući posljednjih 15 godina istraživanja sigurnosti.

Za istorijski kontekst, evo kratkog sažetka istorije SSL-a do verzije 2 od Matthew Greena:

Sigurnost transportnog sloja (TLS) je najvažniji sigurnosni protokol na Internetu. [..] skoro svaka transakcija koju izvršite na Internetu zavisi od TLS-a. [..] Ali TLS nije uvijek bio TLS. Protokol je započeo svoj život u Netscape Communications pod nazivom "Secure Sockets Layer" ili SSL. Priča se da je prva verzija SSL-a bila toliko strašna da su programeri prikupili sve ispise koda i zakopali ih na tajnoj deponiji u Novom Meksiku. Kao posljedica toga, prva javno dostupna verzija SSL-a je zapravo verzija SSL 2. Prilično je zastrašujuće, i [..] je bio proizvod sredine 90-ih, koji moderni kriptografi smatraju "mračno doba kriptografije" Mnogi od najgnusnijih kriptografskih napada za koje danas znamo još uvijek nisu otkriveni. Kao rezultat toga, programeri SSLv2 protokola su u suštini bili ostavljeni da petljaju u mraku i suočili su se s mnogo strašnih čudovišta - na njihovu žalost i našu korist, budući da su napadi na SSLv2 ostavili neprocjenjive lekcije za sljedeću generaciju protokola.

Nakon ovih događaja, 1996. godine, frustrirani Netscape je redizajnirao SSL protokol od nule. Rezultat je bila SSL verzija 3, koja popravio nekoliko poznatih sigurnosnih problema svog prethodnika.

Na sreću za provalnike, „nekoliko“ ne znači „svi“. Sve u svemu, SSLv3 je pružio sve potrebne gradivne blokove za pokretanje Vodene napada. Protokol je koristio blok šifru CBC moda i nesigurnu šemu dopunjavanja (ovo je ispravljeno u TLS-u; otuda potreba za napadom na nižu verziju). Ako se sjećate šeme dopune u našem originalnom opisu Vaudenay napada, SSLv3 šema je vrlo slična.

Ali, nažalost za provalnike, "sličan" ne znači "identičan". SSLv3 shema dopuna je "N nasumičnih bajtova praćenih brojem N". Pokušajte, pod ovim uslovima, da odaberete zamišljeni blok šifrovanog teksta i prođete kroz sve korake Vaudeneove originalne šeme: otkrićete da napad uspešno izvlači poslednji bajt iz odgovarajućeg bloka otvorenog teksta, ali ne ide dalje. Dešifriranje svakog 16. bajta šifriranog teksta je odličan trik, ali nije pobjeda.

Suočen s neuspjehom, Google tim je pribjegao posljednjem slučaju: prebacili su se na moćniji model prijetnje - onaj koji se koristi u KRIMILU. Pod pretpostavkom da je napadač skripta koja se izvodi na kartici pretraživača žrtve i može izdvojiti kolačiće sesije, napad je i dalje impresivan. Dok je širi model prijetnje manje realističan, vidjeli smo u prethodnom dijelu da je ovaj konkretni model izvodljiv.

S obzirom na ove moćnije mogućnosti napadača, napad se sada može nastaviti. Imajte na umu da napadač zna gdje se šifrirani kolačić sesije pojavljuje u zaglavlju i kontrolira dužinu HTTP zahtjeva koji mu prethodi. Stoga je u mogućnosti manipulirati HTTP zahtjevom tako da posljednji bajt kolačića bude poravnat sa krajem bloka. Sada je ovaj bajt pogodan za dešifriranje. Možete jednostavno dodati jedan znak zahtjevu, a pretposljednji bajt kolačića će ostati na istom mjestu i pogodan je za odabir na isti način. Napad se nastavlja na ovaj način sve dok se datoteka kolačića potpuno ne vrati. Zove se POODLE: Padding Oracle on downgraded Legacy Encryption.

DOWN

Kriptografski napadi: objašnjenje za zbunjene umoveKao što smo spomenuli, SSLv3 je imao svojih nedostataka, ali je bio fundamentalno drugačiji od svog prethodnika, budući da je SSLv2 koji curi bio proizvod druge ere. Tu možete prekinuti poruku u sredini: соглашусь на это только через мой труп pretvorio u соглашусь на это; klijent i server bi se mogli sastati na mreži, uspostaviti povjerenje i razmijeniti tajne pred napadačem, koji bi onda lako mogao imitirati oboje. Tu je i problem sa izvoznom kriptografijom, koji smo spomenuli kada smo razmatrali FREAK. To su bile kriptografske Sodoma i Gomora.

U martu 2016. tim istraživača iz različitih tehničkih oblasti se okupio i došao do zapanjujućeg otkrića: SSLv2 se još uvijek koristi u sigurnosnim sistemima. Da, napadači više nisu mogli da degradiraju moderne TLS sesije na SSLv2 pošto je ta rupa zatvorena nakon FREAK-a i POODLE-a, ali se i dalje mogu povezati sa serverima i sami pokrenuti SSLv2 sesije.

Možete pitati, zašto nas briga šta oni tamo rade? Imaju ranjivu sesiju, ali to ne bi trebalo da utiče na druge sesije ili bezbednost servera - zar ne? Pa, ne baš. Da, tako bi trebalo da bude u teoriji. Ali ne – jer generiranje SSL certifikata nameće određeni teret, što rezultira da mnogi serveri koriste iste certifikate i, kao rezultat, iste RSA ključeve za TLS i SSLv2 veze. Da stvar bude gora, zbog OpenSSL greške, opcija "Onemogući SSLv2" u ovoj popularnoj SSL implementaciji zapravo nije radila.

Ovo je omogućilo međuprotokolski napad na TLS, tzv DOWN (Dešifriranje RSA sa zastarjelom i oslabljenom eNkripcijom, dešifriranje RSA sa zastarjelom i oslabljenom enkripcijom). Podsjetimo da ovo nije isto što i kratak napad; napadač ne mora da se ponaša kao „čovjek u sredini“ i ne mora uključiti klijenta da učestvuje u nesigurnoj sesiji. Napadači jednostavno pokreću nesigurnu SSLv2 sesiju sa samim serverom, napadaju slab protokol i vraćaju RSA privatni ključ servera. Ovaj ključ je također važeći za TLS veze i od ovog trenutka, nikakva TLS sigurnost neće spriječiti da bude kompromitovan.

Ali da biste ga razbili, potreban vam je funkcionalni napad na SSLv2, koji vam omogućava da povratite ne samo određeni promet, već i tajni ključ RSA servera. Iako je ovo složena postavka, 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, koji smo ranije spomenuli i koji ćemo detaljno objasniti u sljedećem članku. SSL i TLS su zaštićeni od ovog napada, ali neke nasumične karakteristike SSL-a, u kombinaciji s kratkim ključevima u kriptografiji za izvoz, omogućile su specifična implementacija DROWN.

U vrijeme objavljivanja, 25% najpopularnijih internetskih stranica bilo je pogođeno ranjivosti DROWN, a napad je mogao biti izveden sa skromnim resursima dostupnim čak i nestašnim usamljenim hakerima. Za preuzimanje RSA ključa servera bilo je potrebno osam sati računanja i 440 dolara, a SSLv2 je postao radioaktivan.

Čekaj, šta je sa Heartbleedom?

Ovo nije kriptografski napad u gore opisanom smislu; Ovo je prelivanje bafera.

Hajde da napravimo pauzu

Počeli smo sa nekim osnovnim tehnikama: grubom silom, interpolacijom, degradacijom, unakrsnim protokolom i predračunanjem. Zatim smo pogledali jednu naprednu tehniku, možda glavnu komponentu modernih kriptografskih napada: napad proročišta. Proveli smo dosta vremena dok smo to shvatili - i razumjeli ne samo osnovni princip, već i tehničke detalje dvije specifične implementacije: Vaudenay napad na CBC način šifriranja i Kelseyjev napad na protokole za šifriranje prije kompresije.

U pregledu napada na niži nivo i preračunavanje, ukratko smo opisali napad FREAK, koji koristi oba metoda tako što ciljne lokacije pređu na slabe ključeve, a zatim ponovo koriste iste ključeve. Za sljedeći članak ćemo sačuvati (veoma sličan) Logjam napad, koji cilja algoritme javnog ključa.

Zatim smo pogledali još tri primjera primjene ovih principa. Prvo, CRIME i POODLE: dva napada koja su se oslanjala na sposobnost napadača da ubaci proizvoljni otvoreni tekst pored ciljnog otvorenog teksta, zatim ispita odgovore servera i onda, koristeći oracle metodologiju napada, iskoristite ove rijetke informacije da biste djelimično povratili otvoreni tekst. ZLOČIN je krenuo putem Kelseyjevog napada na SSL kompresiju, dok je POODLE umjesto toga koristio varijantu Vaudenayovog napada na CBC sa istim efektom.

Zatim smo skrenuli pažnju na napad DROWN među protokolima, koji uspostavlja vezu sa serverom koristeći naslijeđeni SSLv2 protokol, a zatim oporavlja tajne ključeve servera koristeći Bleichenbacher napad. Za sada smo preskočili tehničke detalje ovog napada; kao što je Logjam, moraće da sačeka dok ne budemo dobro razumeli kriptosisteme javnog ključa i njihove ranjivosti.

U sljedećem članku ćemo govoriti o naprednim napadima poput susreta u sredini, diferencijalne kriptoanalize i rođendanskih napada. Krenimo na brzi pohod na napade sa strane kanala, a zatim prijeđimo na zabavni dio: kriptosisteme javnog ključa.

izvor: www.habr.com

Dodajte komentar