Kriptografski napadi: objašnjenje za zbunjene umove

Kad čujete riječ "kriptografija", neki se ljudi sjete svoje WiFi lozinke, zelenog lokota pored adrese svoje omiljene web stranice i koliko je teško ući u tuđu e-poštu. Drugi se prisjećaju niza ranjivosti u posljednjih nekoliko godina s znakovitim kraticama (DROWN, FREAK, POODLE...), elegantnim logotipima i upozorenjem da hitno ažurirate svoj preglednik.

Kriptografija pokriva sve, ali bit u drugom. Stvar je u tome što je tanka linija između jednostavnog i složenog. Neke je stvari lako učiniti, ali ih je teško sastaviti, poput razbijanja jajeta. Druge stvari je lako učiniti, ali ih je teško vratiti kada nedostaje mali, važan, ključni dio: na primjer, otvoriti zaključana vrata kada je "ključni dio" ključ. Kriptografija proučava te situacije i kako se one mogu koristiti u praksi.

Posljednjih godina zbirka kriptografskih napada pretvorila se u zoološki vrt drečavih logotipa, ispunjenih formulama iz znanstvenih radova, te potaknula opći turobni osjećaj da je sve pokvareno. No zapravo, mnogi se napadi temelje na nekoliko općih načela, a beskrajne stranice formula često se svode na ideje koje je lako razumjeti.

U ovoj seriji članaka razmotrit ćemo različite vrste kriptografskih napada, s naglaskom na osnovnim principima. Općenito i ne baš ovim redoslijedom, ali pokrit ćemo sljedeće:

  • Osnovne strategije: gruba sila, analiza frekvencije, interpolacija, degradacija i unakrsni protokoli.
  • Označene ranjivosti: NAKAZA, ZLOČIN, PUDLICA, UDAVITELJ, Glupa.
  • Napredne strategije: napadi proročišta (napad Vodenet, napad Kelsey); metoda susreta u sredini, rođendanski napad, statistička pristranost (diferencijalna kriptoanaliza, integralna kriptoanaliza itd.).
  • Napadi na bočni kanal i njihove bliske rodbine, tehnike analize kvarova.
  • Napadi na kriptografiju s javnim ključem: kubni korijen, emitiranje, povezana poruka, Coppersmithov napad, Pohlig-Hellmanov algoritam, brojčano sito, Wienerov napad, Bleichenbacherov napad.

Ovaj određeni članak pokriva gornji materijal do Kelseynog 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 na najjednostavniji način, bez ulaska u složene primjere ili napredne slučajeve upotrebe.

Neki od ovih napada uvelike su zastarjeli i nisu korišteni dugi niz godina. Drugi su stari ljudi koji se u 21. stoljeću još uvijek redovito prikradaju programerima kriptosustava koji ništa ne sumnjaju. Može se smatrati da je era moderne kriptografije započela s pojavom IBM DES-a, prve šifre koja je izdržala sve napade s ovog popisa.

Jednostavna gruba sila

Kriptografski napadi: objašnjenje za zbunjene umoveShema šifriranja sastoji se od dva dijela: 1) funkcija šifriranja, koja uzima poruku (otvoreni tekst) u kombinaciji s ključem, a zatim stvara šifriranu poruku - šifrirani tekst; 2) funkcija dešifriranja koja uzima šifrirani tekst i ključ i proizvodi otvoreni tekst. I enkripciju i dešifriranje mora biti lako izračunati s ključem—i teško 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 točan ključ, možemo lako provjeriti je li doista točan ako je rezultat razumna poruka.

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

Drugo, pretpostavljamo da je točan ključ jedini ključ koji će dovesti do razumne dešifriranja. Ovo je također razumna pretpostavka; zadovoljeno je ako je šifrirani tekst mnogo duži od ključa i čitljiv. To je obično ono što se događa u stvarnom svijetu, osim ogromne nepraktične tipke ili druge smicalice koje je najbolje ostaviti po strani (ako vam se ne sviđa što smo preskočili objašnjenje, pogledajte Teorem 3.8 здесь).

S obzirom na gore navedeno, nameće se strategija: provjeriti svaki mogući ključ. To se zove gruba sila, a takav napad zajamčeno će raditi protiv svih praktičnih šifri - na kraju. Na primjer, gruba sila je dovoljna za hakiranje Cezarova šifra, drevna šifra gdje 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 dobra je obrana od grube sile. Kako se veličina ključa povećava, broj mogućih ključeva raste eksponencijalno. S modernim veličinama tipki, jednostavna brute force potpuno je nepraktična. Da bismo razumjeli što mislimo, uzmimo najbrže poznato superračunalo od sredine 2019.: Vrh iz IBM-a, s vršnom izvedbom od oko 1017 operacija u sekundi. Danas je tipična duljina ključa 128 bita, što znači 2128 mogućih kombinacija. Za pretraživanje svih ključeva, superračunalo Summit će trebati vrijeme koje je otprilike 7800 puta starije od svemira.

Treba li grubu silu smatrati povijesnom zanimljivošću? Nimalo: to je neophodan sastojak u kuharici kriptoanalize. Rijetko su šifre toliko slabe da se mogu razbiti samo pametnim napadom, bez upotrebe sile u određenoj ili onoj mjeri. Mnoga uspješna hakiranja koriste algoritamsku metodu za prvo oslabljivanje ciljane šifre, a zatim izvođenje napada grubom silom.

Frekvencijska analiza

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 ispuna između dijelova informacija. Frekvencijska analiza je svaki napad koji iskorištava tu činjenicu.

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

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

XDYLY ALY RUŽNO XDWNKE WN DYAJYN ANF YALXD DGLAXWG XDAN ALY FLYAUX GR WN OGQL ZDWBGEGZDO

Od Y pojavljuje često, uključujući i na kraju mnogih riječi, možemo pretpostaviti da je ovo 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 jasno sugerira 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 da L odgovara r, A - a i tako dalje. Vjerojatno će trebati nekoliko pokušaja, ali u usporedbi s potpunim brute force napadom, ovaj napad vraća izvorni tekst u tren oka:

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

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

Ideja frekvencijske analize temeljnija je nego što se čini na prvi pogled. I to se odnosi na mnogo složenije šifre. Kroz povijest, različiti dizajni šifri pokušavali su se suprotstaviti takvim napadima korištenjem "polialfabetske zamjene". Ovdje se tijekom procesa šifriranja tablica zamjene slova modificira na složene ali predvidljive načine koji ovise o ključu. Sve su te šifre u jednom trenutku smatrane teškima za razbijanje; a ipak ih je skromna analiza frekvencija na kraju sve porazila.

Najambicioznija polialfabetska šifra u povijesti, a vjerojatno i najpoznatija, bila je šifra Enigma iz Drugog svjetskog rata. Bio je relativno složen u usporedbi sa svojim prethodnicima, ali nakon mnogo napornog rada, britanski kriptoanalitičari su ga razbili pomoću analize frekvencija. Naravno, nisu mogli razviti elegantan napad kao što je gore prikazan; morali su uspoređivati ​​poznate parove otvorenog teksta i šifriranog teksta (tzv. "napad otvorenog teksta"), čak i provocirajući korisnike Enigme da šifriraju određene poruke i analiziraju rezultat ("napad odabranog otvorenog teksta"). Ali to nije nimalo olakšalo sudbinu poraženih neprijateljskih armija i potopljenih podmornica.

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

Preliminarni proračuni

Kriptografski napadi: objašnjenje za zbunjene umoveUzmimo hipotetski grad Precom Heights, 200 stanovnika. Svaki dom u gradu sadrži u prosjeku vrijednih $000 30, ali ne više od $000 50. Sigurnosno tržište u Precomu monopolizira ACME Industries, koja proizvodi legendarne brave za vrata klase Coyote™. Prema analizama stručnjaka, bravu klase Coyote može razbiti samo vrlo složen hipotetski stroj za čiju izradu je potrebno oko pet godina i 000 dolara ulaganja. Je li grad siguran?

Najvjerojatnije ne. Na kraju će se pojaviti prilično ambiciozan kriminalac. On će ovako rezonirati: “Da, imat ću velike troškove unaprijed. Pet godina strpljivog čekanja i 50 000 dolara. Ali kad završim, imat ću pristup svo bogatstvo ovoga grada. Ako dobro odigram svoje karte, ova će se investicija višestruko isplatiti.”

Isto je i u kriptografiji. Napadi na određenu šifru podliježu nemilosrdnoj analizi isplativosti. Ako je omjer povoljan, do napada neće doći. Ali napadi koji djeluju protiv više potencijalnih žrtava odjednom gotovo se uvijek isplate, u kojem slučaju je najbolja praksa dizajna pretpostaviti da su počeli od prvog dana. U suštini imamo kriptografsku verziju Murphyjeva zakona: "Sve što zapravo može slomiti sustav, slomit će i sustav."

Najjednostavniji primjer kriptosustava koji je ranjiv na predračunski napad je konstantna šifra bez ključa. To je bio slučaj s Cezarova šifra, koji jednostavno pomiče svako slovo abecede tri slova naprijed (tablica je petljasta, tako da je zadnje slovo u abecedi šifrirano treće). Ovdje ponovno dolazi do izražaja Kerchhoffsovo načelo: jednom kada je sustav hakiran, hakiran je zauvijek.

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

Ovaj povratak je rezultat dva faktora. Prvo, konačno su se pojavili dovoljno složeni kriptosustavi, gdje mogućnost iskorištavanja nakon hakiranja nije bila očita. Drugo, kriptografija je postala toliko raširena da su milijuni laika svaki dan donosili odluke o tome gdje i koje dijelove kriptografije ponovno koristiti. Trebalo je neko vrijeme prije nego što su stručnjaci shvatili rizike i digli uzbunu.

Sjetite se predračunalnog napada: na kraju članka pogledat ćemo dva kriptografska primjera iz stvarnog života u kojima je igrao važnu ulogu.

Interpolacija

Ovdje je slavni detektiv Sherlock Holmes, koji izvodi interpolacijski napad na nesretnog dr. Watsona:

Odmah sam pogodio da ste došli iz Afganistana... Moj tok misli je bio sljedeći: “Ovaj čovjek je po tipu doktor, ali ima vojničku postavu. Dakle, vojni liječnik. Upravo je stigao iz tropskih krajeva - lice mu je tamno, ali to nije prirodna nijansa njegove kože, jer su mu zglobovi puno bjelji. Lice je iscrpljeno - očito je mnogo patio i patio od bolesti. Ranjen je u lijevu ruku - drži je nepomično i pomalo neprirodno. Gdje je u tropima engleski vojni liječnik mogao podnijeti muke i biti ranjen? Naravno, u Afganistanu." Cijeli tok misli nije trajao ni sekunde. I tako sam rekao da ste došli iz Afganistana, i bili ste iznenađeni.

Holmes je mogao izvući vrlo malo informacija iz svakog dokaza pojedinačno. Mogao je doći do svog zaključka samo razmatrajući ih sve zajedno. Napad interpolacije djeluje na sličan način ispitivanjem poznatih parova otvorenog teksta i šifriranog teksta koji proizlaze iz istog ključa. Iz svakog para izdvajaju se pojedinačna opažanja koja omogućuju izvlačenje općeg zaključka o ključu. Svi su ti zaključci nejasni i čine se beskorisnima sve dok iznenada ne dosegnu kritičnu masu i dovedu do jedinog mogućeg zaključka: koliko god nevjerojatno bilo, mora biti istinito. Nakon toga ili se otkriva ključ ili proces dešifriranja postaje toliko rafiniran da se može replicirati.

Ilustrirajmo na jednostavnom primjeru kako radi interpolacija. Recimo da želimo pročitati osobni dnevnik našeg neprijatelja, Boba. Svaki broj u svom dnevniku šifrira pomoću jednostavnog kriptosustava za koji je saznao iz oglasa u časopisu "A Mock of Cryptography". Sustav funkcionira ovako: Bob odabire 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 izabrao Kriptografski napadi: objašnjenje za zbunjene umove и Kriptografski napadi: objašnjenje za zbunjene umove, zatim broj Kriptografski napadi: objašnjenje za zbunjene umove bit će šifrirano kao Kriptografski napadi: objašnjenje za zbunjene umove.

Recimo da smo 28. prosinca primijetili da Bob nešto škraba u svom dnevniku. Kad završi, tiho ćemo ga uzeti i pogledati posljednji zapis:

Дата: 235/520

Dragi dnevniče,

Danas je bio dobar dan. Kroz 64 danas imam spoj s Alisom, koja živi u stanu 843. Stvarno mislim da bi mogla biti 26!

Budući da vrlo ozbiljno želimo pratiti Boba na spoju (u ovom scenariju oboje imamo 15 godina), važno je znati datum kao i Aliceinu adresu. Srećom, primijetili smo da je Bobov kriptosustav ranjiv na napad interpolacije. 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 otvoreni tekst-šifrirani tekst. Naime, 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. Ovo ćemo zapisati:

Kriptografski napadi: objašnjenje za zbunjene umove

Kriptografski napadi: objašnjenje za zbunjene umove

Budući da imamo 15 godina, već znamo za sustav dviju jednadžbi s dvije nepoznanice, što je u ovoj situaciji dovoljno da nađemo 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 ta dva ograničenja zajedno dovoljna su za potpuno vraćanje ključa. U našem primjeru odgovor je Kriptografski napadi: objašnjenje za zbunjene umove и Kriptografski napadi: objašnjenje za zbunjene umove (na Kriptografski napadi: objašnjenje za zbunjene umove Kriptografski napadi: objašnjenje za zbunjene umove, dakle 26 u dnevniku odgovara riječi 'onaj', odnosno “isti” - cca. traka).

Napadi interpolacijom nisu, naravno, ograničeni na tako jednostavne primjere. Svaki kriptosustav koji se svodi na dobro razumljiv matematički objekt i popis parametara izložen je riziku od interpolacijskog napada - što je objekt razumljiviji, to je veći rizik.

Pridošlice se često žale da je kriptografija "umjetnost dizajniranja stvari što je ružnije moguće". Vjerojatno su najvećim dijelom krivi interpolacijski napadi. Bob može ili upotrijebiti elegantan matematički dizajn ili svoj sastanak s Alice držati privatnim - ali nažalost, obično ne možete imati oboje. Ovo će postati posve jasno kada konačno dođemo do teme kriptografije s javnim ključem.

Cross protokol/downgrade

Kriptografski napadi: objašnjenje za zbunjene umoveU filmu Now You See Me (2013.), skupina iluzionista pokušava prevariti korumpiranog osiguravajućeg magnata Arthura Tresslera i oduzeti njegovo cjelokupno bogatstvo. Kako bi dobili pristup Arthurovom bankovnom računu, iluzionisti moraju dati njegovo korisničko ime i lozinku ili ga prisiliti da se osobno pojavi u banci i sudjeluje u shemi.

Obje opcije su vrlo teške; Dečki su navikli nastupati na pozornici, a ne sudjelovati u obavještajnim operacijama. Stoga odabiru treću moguću opciju: njihov suučesnik zove banku i pretvara se da je Arthur. Banka postavlja nekoliko pitanja za provjeru identiteta, kao što je ime ujaka i ime prvog ljubimca; naši heroji unaprijed lako izvlače te informacije iz Arthura pomoću pametnog društvenog inženjeringa. Od ovog trenutka nadalje, izvrsna sigurnost lozinke više nije važna.

(Prema urbanoj legendi koju smo osobno provjerili i potvrdili, kriptograf Eli Beaham jednom je naišao na službenika u banci koji je inzistirao na postavljanju sigurnosnog pitanja. Kada je blagajnik pitao za ime njegove bake po majci, Beaham je počeo diktirati: “Veliko X, mali y, tri...").

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

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

Provalnik: Zdravo? Ovo je Arthur Tressler. Htio bih resetirati svoju lozinku.

Blagajnik: Sjajno. Molimo pogledajte svoju osobnu knjigu tajnih kodova, stranica 28, riječ 3. Sve sljedeće poruke bit će šifrirane korištenjem ove specifične riječi kao ključa. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…

Provalnik: Hej, hej, čekaj, čekaj. Je li ovo stvarno potrebno? Zar ne možemo samo razgovarati kao normalni ljudi?

Blagajnik: Ne preporučujem da to radite.

Provalnik: Samo sam... gledaj, imao sam loš dan, u redu? Ja sam VIP klijent i nisam raspoložen da kopam po tim glupim knjigama kodova.

Blagajnik: Fino. Ako inzistirate, g. Tressler. Što želiš?

Provalnik: Molim vas, želio bih donirati sav svoj novac Nacionalnoj zakladi za žrtve Arthura Tresslera.

(Pauza).

Blagajnik: Je li sad jasno. Unesite svoj PIN za velike transakcije.

Provalnik: Moje što?

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

Provalnik:... Izgubio sam. Je li ovo stvarno potrebno? Zar ne možete jednostavno odobriti dogovor?

Blagajnik: Ne. Ž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štanski sandučić.

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

Tressler: Zdravo. Htio bih dovršiti transakciju na daljinu, molim.

Blagajnik: Sjajno. Molimo pogledajte svoju osobnu knjigu tajnih kodova, stranicu...

(Provalnik pritišće dugme; glas blagajnice pretvara se u nerazumljiv šum).

Blagajnik: - #@$#@$#*@$$@#* bit će šifriran s ovom riječi kao ključem. AAAYRR PLRQRZ MMNJK LOJBAN…

Tressler: Oprostite, nisam baš razumio. Opet? Na kojoj stranici? Koja riječ?

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

Tressler: Što je?

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

Tressler: Ozbiljno! Dosta je više! Ti i tvoj sigurnosni protokol ste nekakav cirkus. Znam da možeš normalno razgovarati sa mnom.

Blagajnik: Ne preporučujem…

Tressler: I ne savjetujem vam da gubite moje vrijeme. Ne želim više čuti o ovome dok ne riješite probleme s telefonskom linijom. Možemo li zaključiti ovaj posao ili ne?

Blagajnik:… Da. Fino. Što želiš?

Tressler: Htio bih prebaciti 20 dolara na Lord Business Investments, broj računa...

Blagajnik: Minutu, molim. To je velika stvar. Unesite svoj PIN za velike transakcije.

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

Evo napada prema dolje. Slabiji protokol "samo govori izravno" zamišljen je kao opcija u hitnim slučajevima. A ipak smo tu.

Možda se pitate tko bi pri zdravoj pameti dizajnirao pravi sustav "siguran dok se ne zatraži drugačije" kao što je gore opisani. No baš kao što fiktivna banka preuzima rizike kako bi zadržala klijente koji ne vole kriptografiju, sustavi općenito često gravitiraju zahtjevima koji su indiferentni ili čak neprijateljski raspoloženi prema sigurnosti.

Upravo se to dogodilo s protokolom SSLv2 1995. godine. Američka vlada odavno je počela gledati na kriptografiju kao na oružje koje je najbolje držati podalje od stranih i domaćih neprijatelja. Dijelovi koda bili su pojedinačno odobreni za izvoz iz Sjedinjenih Država, često uz uvjet da je algoritam namjerno oslabljen. Netscape, razvojni programer najpopularnijeg preglednika, Netscape Navigatora, dobio je dopuštenje za SSLv2 samo s inherentno ranjivim 512-bitnim RSA ključem (i 40-bitnim za RC4).

Do kraja tisućljeća pravila su popustila i pristup modernoj enkripciji postao je široko dostupan. Međutim, klijenti i poslužitelji godinama podržavaju oslabljenu "izvoznu" kriptografiju zbog iste inercije koja održava podršku za bilo koji naslijeđeni sustav. Klijenti su vjerovali da bi mogli naići na poslužitelj koji ne podržava ništa drugo. Poslužitelji su učinili isto. Naravno, SSL protokol nalaže da klijenti i poslužitelji nikada ne bi trebali koristiti slab protokol kada je dostupan bolji. Ali ista se premisa odnosila na Tresslera i njegovu banku.

Ova je teorija pronašla 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 napada FREAK otkriveni u veljači, nakon čega je tri mjeseca kasnije uslijedio još jedan sličan napad nazvan Logjam, o kojem ćemo detaljnije govoriti kada prijeđemo na napade na kriptografiju s javnim ključem.

Kriptografski napadi: objašnjenje za zbunjene umoveRanjivost FREAK (također poznat kao "Smack TLS") izašao je na vidjelo kada su istraživači analizirali implementacije TLS klijent/poslužitelj i otkrili zanimljivu pogrešku. U ovim implementacijama, ako klijent čak i ne zatraži korištenje slabe izvozne kriptografije, ali poslužitelj i dalje odgovara takvim ključevima, klijent kaže "Oh dobro" i prebacuje se na paket slabe šifre.

U to se vrijeme eksportna kriptografija smatrala zastarjelom i zabranjenom, pa je napad bio potpuni šok i utjecao je na mnoge važne domene, uključujući stranice Bijele kuće, porezne uprave i NSA-e. Još gore, pokazalo se da su mnogi ranjivi poslužitelji optimizirali izvedbu ponovnim korištenjem istih ključeva umjesto generiranja novih za svaku sesiju. To je omogućilo, nakon snižavanja protokola, izvođenje napada prije računanja: probijanje jednog ključa ostalo je relativno skupo (100 dolara i 12 sati u vrijeme objave), ali praktični trošak napada na vezu značajno je smanjen. Dovoljno je jednom odabrati ključ poslužitelja i od tog trenutka probiti enkripciju za sve sljedeće konekcije.

I prije nego što nastavimo, postoji jedan napredni napad koji treba spomenuti...

Oracle napad

Kriptografski napadi: objašnjenje za zbunjene umoveMoxie Marlinspike najpoznatiji kao otac međuplatformske aplikacije za razmjenu kripto poruka Signal; ali nama se osobno sviđa jedna od njegovih manje poznatih inovacija - načelo kriptografske propasti (Načelo kriptografske propasti). Da malo parafraziramo, možemo reći ovo: “Ako protokol funkcionira bilo koji izvodi kriptografsku operaciju na poruci iz potencijalno zlonamjernog izvora i ponaša se drugačije ovisno o rezultatu, osuđen je na propast." Ili u oštrijem obliku: "Ne uzimajte informacije od neprijatelja za obradu, a ako morate, onda barem ne pokazujte rezultat."

Ostavimo po strani prekoračenja međuspremnika, ubacivanje naredbi i slično; oni su izvan okvira ove rasprave. Kršenje "načela propasti" dovodi do ozbiljnih hakiranja kriptografije zbog činjenice da se protokol ponaša točno onako kako se očekuje.

Kao primjer, uzmimo fiktivni dizajn s ranjivom zamjenskom šifrom, a zatim demonstriramo mogući napad. Iako smo već vidjeli napad na zamjensku šifru pomoću analize frekvencije, to nije samo "još jedan način da se razbije ista šifra." Naprotiv, oracle napadi su mnogo moderniji izum, primjenjiv u mnogim situacijama u kojima analiza frekvencije ne uspije, a vidjet ćemo demonstraciju toga u sljedećem odjeljku. Ovdje je jednostavna šifra odabrana samo da bi primjer bio jasniji.

Dakle, Alice i Bob komuniciraju pomoću jednostavne supstitucijske šifre koristeći ključ koji je samo njima poznat. Vrlo su strogi po pitanju duljine poruka: one imaju točno 20 znakova. Tako su se dogovorili da ako netko želi poslati kraću poruku, treba dodati neki lažni tekst na kraj poruke kako bi imala točno 20 znakova. Nakon rasprave, odlučili su da će prihvatiti samo sljedeće lažne tekstove: a, bb, ccc, dddd itd. Dakle, poznat je lažni tekst bilo koje potrebne duljine.

Kada Alice ili Bob prime poruku, prvo provjeravaju je li poruka točne duljine (20 znakova) i je li sufiks točan lažni tekst. Ako to nije slučaj, tada odgovaraju odgovarajućom porukom o pogrešci. Ako su duljina teksta i lažni tekst u redu, primatelj sam čita poruku i šalje šifrirani odgovor.

Tijekom 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 budući da protokol krši načelo propasti, napadač još uvijek može uhvatiti Alice u zamku 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 što je Alice upravo rekla, ali primjećuje da simbol C moraju odgovarati a, budući da 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 nekoliko 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 što je Alice upravo rekla, ali primjećuje da H mora odgovarati b jer je Alice prihvatila lažni tekst.

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

Na prvi pogled, metoda podsjeća na odabrani napad otvorenim tekstom. Na kraju, napadač odabire šifrirane tekstove, a poslužitelj ih poslušno obrađuje. Glavna razlika koja ove napade čini održivima u stvarnom svijetu jest ta da napadač ne treba pristup stvarnom prijepisu — dovoljan je odgovor poslužitelja, čak i onaj bezazlen kao što je "Nevažeći lažni tekst".

Iako je ovaj određeni napad poučan, nemojte se previše zaokupiti specifičnostima sheme "lažnog teksta", specifičnog korištenog kriptosustava ili točnog slijeda poruka koje šalje napadač. Osnovna ideja je kako Alice reagira drugačije na temelju svojstava otvorenog teksta, i to bez provjere je li odgovarajući šifrirani tekst zapravo došao od provjerene strane. Tako Alice dopušta napadaču da istisne tajne informacije iz njezinih odgovora.

Mnogo toga se može promijeniti u ovom scenariju. Simboli na koje Alice reagira, ili sama razlika u njezinom ponašanju, ili čak korišteni kriptosustav. Ali princip će ostati isti, a napad u cjelini ostat će održiv u ovom ili onom obliku. Osnovna implementacija ovog napada pomogla je otkriti nekoliko sigurnosnih grešaka, koje ćemo uskoro pogledati; ali prvo treba naučiti neke teorijske lekcije. Kako koristiti ovu fiktivnu "Alice skriptu" u napadu koji može raditi na pravoj modernoj šifri? Je li to uopće moguće, makar i u teoriji?

Godine 1998. švicarski kriptograf Daniel Bleichenbacher odgovorio je na ovo pitanje potvrdno. On je demonstrirao Oracle napad na široko korišten kriptosustav s javnim ključem RSA, koristeći specifičnu shemu poruka. U nekim RSA implementacijama, poslužitelj odgovara različitim porukama o pogrešci ovisno o tome odgovara li čisti tekst shemi ili ne; to je bilo dovoljno za izvršenje napada.

Četiri godine kasnije, 2002., francuski kriptograf Serge Vaudenay demonstrirao je napad proročanstva gotovo identičan onom opisanom u gore navedenom scenariju Alice - osim što je umjesto fiktivne šifre razbio cijelu respektabilnu klasu modernih šifri koje ljudi zapravo koriste. Konkretno, Vaudenayev napad cilja šifre fiksne veličine unosa ("blokovne šifre") kada se koriste u takozvanom "CBC enkripcijskom načinu" i s određenom popularnom shemom popunjavanja, u osnovi ekvivalentnoj onoj u scenariju Alice.

Također 2002., američki kriptograf John Kelsey - koautor Dvije ribe — predložio razne oracle napade na sustave koji sažimaju poruke i zatim ih šifriraju. Najznačajniji među njima bio je napad koji je iskoristio činjenicu da je često moguće zaključiti izvornu duljinu otvorenog teksta iz duljine šifriranog teksta. U teoriji, ovo omogućuje oracle napad koji vraća dijelove izvornog otvorenog teksta.

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

Napad Vodene

Da bismo razumjeli Vaudenayjev napad, prvo moramo govoriti nešto više o blok šiframa i načinima enkripcije. "Blok šifra" je, kao što je spomenuto, šifra koja uzima ključ i unos određene fiksne duljine ("duljina bloka") i proizvodi šifrirani blok iste duljine. Blok šifre se široko koriste i smatraju se relativno sigurnima. Sada umirovljeni DES, koji se smatra prvom modernom šifrom, bio je blok šifra. Kao što je gore spomenuto, isto vrijedi 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čito, moderna kriptografija zahtijeva rad s većim ulaznim podacima, a tu na scenu stupaju načini šifriranja. Način šifriranja je u biti hack: to je način da se na neki način primijeni blok šifra koja prihvaća samo unos određene veličine na unos proizvoljne duljine.

Napad Vodene je fokusiran na popularni CBC (Cipher Block Chaining) način rada. Napad tretira temeljnu blok šifru kao čarobnu, neosvojivu crnu kutiju i potpuno zaobilazi njezinu sigurnost.

Evo dijagrama koji pokazuje kako funkcionira CBC način rada:

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, primljen je drugi blok šifriranog teksta:

  1. Izvođenjem operacije XOR 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 njegovih svojstava:

  • Idempotencija: 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
  • Veličina bajta: 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 nepoznanicu, ona se može riješiti. Na primjer, ako to znamo Kriptografski napadi: objašnjenje za zbunjene umove s nepoznatim Kriptografski napadi: objašnjenje za zbunjene umove i poznat Kriptografski napadi: objašnjenje za zbunjene umove и Kriptografski napadi: objašnjenje za zbunjene umove, tada se možemo osloniti na gore navedena svojstva da bismo riješili jednadžbu za Kriptografski napadi: objašnjenje za zbunjene umove. Primjenom XOR-a na obje strane jednadžbe s Kriptografski napadi: objašnjenje za zbunjene umove, dobivamo Kriptografski napadi: objašnjenje za zbunjene umove. Sve će to uskoro postati vrlo relevantno.

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

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

Glavna razlika:

  • Budući da ne koristimo isti kriptosustav, odnos između šifriranih bajtova koje kontrolira napadač i tajni (ključ i otvoreni tekst) očito će biti drugačiji. Stoga će napadač morati koristiti drugačiju strategiju pri stvaranju šifriranih tekstova i tumačenju odgovora poslužitelja.

Ova velika razlika posljednji je dio slagalice za razumijevanje Vaudenay napada, pa uzmimo 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 dan CBC šifrirani tekst od 247 blokova i želimo ga dešifrirati. Možemo slati lažne poruke poslužitelju, baš kao što smo prije mogli slati lažne poruke Alice. Poslužitelj će dešifrirati poruke umjesto nas, ali neće prikazati dešifriranje - umjesto toga, opet, kao i kod Alice, poslužitelj će prijaviti samo jedan bit informacije: ima li otvoreni tekst valjano punjenje ili ne.

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

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

Nazovimo ovo "Aliceina jednadžba." Kontrolirali smo šifrirani tekst; server (Alice) je pustio nejasne informacije o primljenom otvorenom tekstu; a to nam je omogućilo da izvedemo informaciju o posljednjem faktoru – ključu. Analogno tome, ako uspijemo pronaći takvu vezu za CBC skriptu, možda bismo i tamo mogli izvući neke tajne informacije.

Srećom, stvarno postoje odnosi koje možemo iskoristiti. Razmotrite izlaz posljednjeg poziva za dešifriranje blok šifre i označite ovaj izlaz kao Kriptografski napadi: objašnjenje za zbunjene umove. Također označavamo blokove otvorenog teksta Kriptografski napadi: objašnjenje za zbunjene umove i blokovi šifriranog teksta Kriptografski napadi: objašnjenje za zbunjene umove. Još jednom pogledajte CBC dijagram i primijetite što se događa:

Kriptografski napadi: objašnjenje za zbunjene umove

Nazovimo to "CBC jednadžbom".

U Aliceinom scenariju, nadgledanjem šifriranog teksta i promatranjem odgovarajućeg curenja otvorenog teksta, uspjeli smo pokrenuti napad koji je povratio treći član u jednadžbi - ključ. U CBC scenariju 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 stvarno obnovili Kriptografski napadi: objašnjenje za zbunjene umove, što onda? Pa, onda možemo ispisati cijeli zadnji blok otvorenog teksta odjednom (Kriptografski napadi: objašnjenje za zbunjene umove), jednostavnim unosom Kriptografski napadi: objašnjenje za zbunjene umove (koji imamo) i
primljeno Kriptografski napadi: objašnjenje za zbunjene umove u CBC jednadžbu.

Sada kada smo optimistični u pogledu ukupnog plana napada, vrijeme je da razradimo detalje. Obratite pozornost na to kako točno informacije u otvorenom tekstu cure na poslužitelj. U Aliceinoj skripti do curenja je došlo jer bi Alice odgovorila ispravnom porukom samo ako $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ završava linijom a (Ili bb, i tako dalje, ali su šanse da se ta stanja pokrenu slučajno bile vrlo male). Slično CBC-u, poslužitelj prihvaća padding ako i samo ako Kriptografski napadi: objašnjenje za zbunjene umove završava heksadecimalno 01. Pa pokušajmo s istim trikom: slanje lažnih šifriranih tekstova s ​​vlastitim lažnim vrijednostima Kriptografski napadi: objašnjenje za zbunjene umovedok poslužitelj ne prihvati punjenje.

Kada poslužitelj prihvati padding 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 pojam. I već smo vidjeli da nam to omogućuje da vratimo preostali izraz - zadnji 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 putem CBC jednadžbe i svojstva bajt po bajt.

Mogli bismo to ostaviti na tome i biti zadovoljni da smo izveli napad na teoretski jaku šifru. Ali zapravo možemo učiniti mnogo više: zapravo možemo vratiti sav tekst. Za to je potreban trik koji nije bio u Aliceinom izvornom scenariju i nije potreban za napad proročanstva, ali ipak ga vrijedi naučiti.

Da biste to razumjeli, prvo imajte na umu da je rezultat ispisa 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 s CBC jednadžbom i svojstvom bajt po bajt:

Kriptografski napadi: objašnjenje za zbunjene umove

Budući da sada znamo drugi član, možemo koristiti našu kontrolu nad prvim da kontroliramo treći. Jednostavno izračunamo:

Kriptografski napadi: objašnjenje za zbunjene umove

Nismo mogli prije jer još nismo imali posljednji bajt Kriptografski napadi: objašnjenje za zbunjene umove.

Kako će nam to pomoći? Pretpostavimo da sada kreiramo sve šifrirane tekstove tako da je u odgovarajućim otvorenim tekstovima zadnji bajt jednak 02. Poslužitelj sada prihvaća samo ispune ako otvoreni tekst završava s 02 02. Budući da smo ispravili zadnji bajt, to će se dogoditi samo ako je pretposljednji bajt otvorenog teksta također 02. Nastavljamo slati lažne blokove šifriranog teksta, mijenjajući pretposljednji bajt, sve dok poslužitelj ne prihvati ispunu za jedan od njih. U ovom trenutku dobivamo:

Kriptografski napadi: objašnjenje za zbunjene umove

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

Što je s 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 njega možemo staviti bilo koji drugi blok Kriptografski napadi: objašnjenje za zbunjene umove, a napad će i dalje biti uspješan. Zapravo, možemo zatražiti od poslužitelja da izvrši $inline$text{BLOCK_DECRYPT}$inline$ za bilo koji podatak. U ovom trenutku igra je gotova - možemo dešifrirati bilo koji šifrirani tekst (pogledajte još jednom CBC dijagram dešifriranja da biste to vidjeli; i imajte na umu da je IV javan).

Ova posebna metoda igra ključnu ulogu u oracle napadu s kojim ćemo se susresti kasnije.

Kelseyin napad

Naš bliski John Kelsey iznio je principe koji stoje u osnovi mnogih mogućih napada, a ne samo pojedinosti specifičnog napada na određenu šifru. Njegovo 2002 članak godine je studija mogućih napada na šifrirane komprimirane podatke. Mislite li da podatak da su podaci komprimirani prije enkripcije nije dovoljan za izvođenje napada? Ispada da je to dovoljno.

Za ovaj iznenađujući rezultat zaslužna su dva principa. Prvo, postoji jaka korelacija između duljine otvorenog teksta i duljine šifriranog teksta; za mnoge šifre točna jednakost. Drugo, kada se izvrši kompresija, također postoji jaka korelacija između duljine komprimirane poruke i stupnja "šumnosti" 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 i potom šifrirana. Dobivate dva rezultirajuća šifrirana teksta i morate pogoditi koji šifrirani tekst odgovara kojem otvorenom tekstu:

Šifrirani tekst 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

Šifrirani tekst 2: DWKJZXYU

Odgovor je jasan. Među otvorenim tekstovima, samo se otvoreni tekst 1 mogao komprimirati u oskudnu duljinu drugog šifriranog teksta. Shvatili smo ovo ne znajući ništa o algoritmu kompresije, ključu za šifriranje, pa čak ni o samoj šifri. U usporedbi s hijerarhijom mogućih kriptografskih napada, ovo je pomalo ludo.

Kelsey dalje ističe da se pod određenim neuobičajenim okolnostima ovo načelo također može koristiti za izvođenje napada na proročište. Konkretno, opisuje kako napadač može povratiti tajni otvoreni tekst ako može prisiliti poslužitelj da šifrira podatke obrasca (otvoreni tekst iza kojeg slijedi Kriptografski napadi: objašnjenje za zbunjene umovedok on ima kontrolu Kriptografski napadi: objašnjenje za zbunjene umove i može nekako provjeriti duljinu šifriranog rezultata.

Opet, kao i drugi oracle napadi, imamo odnos:

Kriptografski napadi: objašnjenje za zbunjene umove

Opet kontroliramo jedan izraz (Kriptografski napadi: objašnjenje za zbunjene umove), vidimo malo curenje informacija o drugom članu (šifrirani tekst) i pokušavamo oporaviti posljednjeg (otvoreni tekst). Unatoč analogiji, ovo je pomalo neuobičajena situacija u usporedbi s drugim oracle napadima koje smo vidjeli.

Da bismo ilustrirali kako takav napad može funkcionirati, poslužimo se fiktivnom kompresijskom shemom koju smo upravo smislili: TOYZIP. Traži retke teksta koji su se već pojavili u tekstu i zamjenjuje ih s tri bajta rezerviranog mjesta koji pokazuju gdje pronaći raniju instancu retka i koliko se puta tamo pojavljuje. Na primjer, linija helloworldhello može se komprimirati u helloworld[00][00][05] 13 bajtova u usporedbi s originalnih 15 bajtova.

Pretpostavimo da napadač pokuša vratiti otvoreni tekst obrasca password=..., gdje je sama lozinka nepoznata. Prema Kelseyevom modelu napada, napadač bi mogao zatražiti od poslužitelja da komprimira i zatim šifrira poruke obrasca (otvoreni tekst nakon kojeg slijedi Kriptografski napadi: objašnjenje za zbunjene umove), gdje Kriptografski napadi: objašnjenje za zbunjene umove - slobodan tekst. Kada poslužitelj završi s radom, javlja duljinu rezultata. Napad ide ovako:

Provalnik: Komprimirajte i šifrirajte otvoreni tekst bez ikakvih ispuna.

poslužitelj: Dužina rezultata 14.

Provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem je pridodan password=a.

poslužitelj: Dužina rezultata 18.

Bilješke krekera: [izvorno 14] + [tri zamijenjena bajta password=] + a

Provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem se dodaje password=b.

poslužitelj: Dužina rezultata 18.

Provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem se dodaje password=с.

poslužitelj: Dužina rezultata 17.

Bilješke krekera: [izvorno 14] + [tri zamijenjena bajta password=c]. Ovo pretpostavlja da izvorni otvoreni tekst sadrži niz password=c. Odnosno, lozinka počinje slovom c

Provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem se dodaje password=сa.

poslužitelj: Dužina rezultata 18.

Bilješke krekera: [izvorno 14] + [tri zamijenjena bajta password=с] + a

Provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem se dodaje password=сb.

poslužitelj: Dužina rezultata 18.

(… Nešto kasnije…)

Provalnik: Komprimirajte i šifrirajte otvoreni tekst kojem se dodaje password=со.

poslužitelj: Dužina rezultata 17.

Bilješke krekera: [izvorno 14] + [tri zamijenjena bajta password=co]. Koristeći istu logiku, napadač zaključuje da lozinka počinje slovima co

I tako sve dok se cijela lozinka ne vrati.

Čitatelju bi bilo oprošteno ako pomisli da je ovo čisto akademska vježba i da se takav scenarij napada nikada ne bi dogodio u stvarnom svijetu. Jao, kao što ćemo uskoro vidjeti, bolje je ne odustati od kriptografije.

Ranjivosti robne marke: ZLOČIN, PUDLICA, UDAVLJENJE

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

KRIMINAL

Kriptografski napadi: objašnjenje za zbunjene umoveAko je napad usmjeren na preglednik 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-jem. Iz tog razloga se potencijalnim žrtvama (tj. svima) općenito savjetuje korištenje šifrirane veze. Bit će teže, ali još uvijek moguće, postavljati HTTP zahtjeve u ime žrtve prema nekoj stranici treće strane (na primjer, Google). Napadač mora namamiti žrtvu na zlonamjernu web stranicu sa skriptom koja šalje zahtjev. Web preglednik će automatski dati odgovarajući kolačić sesije.

Ovo izgleda nevjerojatno. Ako je Bob otišao u evil.com, može li skripta na ovoj stranici jednostavno zatražiti od Googlea da pošalje Bobovu zaporku e-poštom na [email protected]? Pa, u teoriji da, ali u stvarnosti ne. Ovaj scenarij naziva se napad krivotvorenja zahtjeva na više web stranica (Krivotvorenje zahtjeva na više web mjesta, CSRF), a bio je popularan sredinom 90-ih. Danas ako evil.com pokuša ovaj trik, Google (ili bilo koje web mjesto koje poštuje sebe) obično će odgovoriti s: "Super, ali vaš CSRF token za ovu transakciju bit će... hm... три триллиона и семь. Molimo ponovite ovaj broj." Moderni preglednici imaju nešto što se zove "pravilo istog porijekla" prema kojem skripte na stranici A nemaju pristup informacijama koje šalje web stranica 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 nemaju smisla, osim ako Bob ne koristi šifriranu vezu. Napadač može jednostavno pročitati Bobov promet i oporaviti Googleov kolačić sesije. Pomoću ovog kolačića on će jednostavno otvoriti novu Google karticu bez napuštanja vlastitog preglednika i glumiti Boba bez susreta s dosadnim pravilima o istom izvoru. No, na žalost provalnika, to je sve rjeđa pojava. Internet kao cjelina odavno je objavio rat nekriptiranim vezama, a Bobov je odlazni promet vjerojatno šifriran, sviđalo se to njemu ili ne. Osim toga, od samog početka provedbe protokola promet je također skupio se prije enkripcije; to je bila uobičajena praksa za smanjenje latencije.

Ovdje dolazi do izražaja KRIMINAL (Omjer kompresije Infoleak Made Easy, jednostavno propuštanje kroz omjer kompresije). Ranjivost su u rujnu 2012. otkrili istraživači sigurnosti Juliano Rizzo i Thai Duong. Već smo ispitali cjelokupnu teorijsku osnovu, koja nam omogućuje da shvatimo što su i kako radili. Napadač bi mogao prisiliti Bobov preglednik da šalje zahtjeve Googleu i zatim sluš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 scenarij je zaživio.

Razumijevajući teoriju, autori CRIME-a stvorili su exploit koji može ukrasti sesijske kolačiće za širok raspon stranica, uključujući Gmail, Twitter, Dropbox i Github. Ranjivost je utjecala na većinu modernih web preglednika, što je rezultiralo izdavanjem zakrpa koje su tiho zakopale značajku kompresije u SSL-u tako da se uopće ne bi koristila. Jedini zaštićen od ranjivosti bio je časni Internet Explorer, koji uopće nije koristio SSL kompresiju.

PUDLICA

Kriptografski napadi: objašnjenje za zbunjene umoveU listopadu 2014. Googleov tim za sigurnost napravio je valove u sigurnosnoj zajednici. Uspjeli su iskoristiti ranjivost u SSL protokolu koja je zakrpana prije više od deset godina.

Ispostavilo se da, iako poslužitelji pokreću sjajni novi TLSv1.2, mnogi su ostavili podršku za naslijeđeni SSLv3 za kompatibilnost unatrag s Internet Explorerom 6. Već smo govorili o napadima na stariju verziju, pa možete zamisliti što se događa. Dobro orkestrirana sabotaža protokola rukovanja i poslužitelji su spremni za povratak na dobri stari SSLv3, u biti poništavajući posljednjih 15 godina istraživanja sigurnosti.

Za povijesni kontekst, evo kratkog sažetka povijesti SSL-a do verzije 2 od Matthewa Greena:

Transport Layer Security (TLS) je najvažniji sigurnosni protokol na internetu. [..] gotovo svaka transakcija koju napravite na internetu ovisi o TLS-u. [..] Ali TLS nije uvijek bio TLS. Protokol je započeo svoj život u Netscape komunikacije pod nazivom "Secure Sockets Layer" ili SSL. Priča se da je prva verzija SSL-a bila toliko užasna da su programeri prikupili sve ispise koda i zakopali ih na tajnom odlagalištu u Novom Meksiku. Kao posljedica toga, prva javno dostupna verzija SSL-a je zapravo verzija SSL 2. Prilično je zastrašujuće, i [..] to je bio proizvod iz sredine 90-ih, koji moderni kriptografi smatraju "mračno doba kriptografije" Mnogi od najgnusnijih kriptografskih napada za koje danas znamo još nisu otkriveni. Kao rezultat toga, programeri protokola SSLv2 bili su u biti prepušteni petljanju po mraku i suočili su se puno strašnih čudovišta - na njihovu žalost i našu korist, jer su napadi na SSLv2 ostavili neprocjenjive lekcije za sljedeću generaciju protokola.

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

Srećom za provalnike, "nekoliko" ne znači "svi". Sve u svemu, SSLv3 je osigurao sve potrebne građevne blokove za pokretanje napada Vodene. Protokol je koristio blok šifru CBC načina rada i nesigurnu shemu dopunjavanja (ovo je ispravljeno u TLS-u; otuda potreba za napadom na nižu verziju). Ako se sjećate sheme popunjavanja u našem izvornom opisu Vaudenay napada, SSLv3 shema je vrlo slična.

Ali, na žalost za provalnike, "slično" ne znači "identično". SSLv3 shema punjenja je "N nasumičnih bajtova iza kojih slijedi broj N". Pokušajte, pod ovim uvjetima, odabrati zamišljeni blok šifriranog teksta i proći kroz sve korake Vaudeneove izvorne sheme: otkrit ćete da napad uspješno izvlači posljednji bajt iz odgovarajućeg bloka otvorenog teksta, ali ne ide dalje. Dešifriranje svakog 16. bajta šifriranog teksta izvrstan je trik, ali nije pobjeda.

Suočen s neuspjehom, Googleov tim pribjegao je posljednjem rješenju: prebacili su se na snažniji model prijetnje – onaj korišten u CRIME-u. Pod pretpostavkom da je napadač skripta koja se izvodi na kartici preglednika žrtve i može izdvojiti kolačiće sesije, napad je još uvijek impresivan. Dok je širi model prijetnje manje realističan, u prethodnom smo odjeljku vidjeli da je ovaj model izvediv.

S obzirom na ove moćnije sposobnosti napadača, napad se sada može nastaviti. Napominjemo da napadač zna gdje se šifrirani kolačić sesije pojavljuje u zaglavlju i kontrolira duljinu HTTP zahtjeva koji mu prethodi. Stoga može manipulirati HTTP zahtjevom tako da zadnji bajt kolačića bude poravnat s krajem bloka. Sada je ovaj bajt prikladan za dešifriranje. Možete jednostavno dodati jedan znak zahtjevu, a pretposljednji bajt kolačića ostat će na istom mjestu i prikladan je za odabir istom metodom. Napad se nastavlja na ovaj način sve dok se datoteka kolačića potpuno ne obnovi. Zove se POODLE: Padding Oracle on Downgraded Legacy Encryption.

UTOPITI

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

U ožujku 2016. tim istraživača iz različitih tehničkih područja okupio se i došao do zapanjujućeg otkrića: SSLv2 se još uvijek koristi u sigurnosnim sustavima. Da, napadači više nisu mogli vratiti moderne TLS sesije na SSLv2 budući da je ta rupa zatvorena nakon FREAK-a i POODLE-a, ali se još uvijek mogu spojiti na poslužitelje i sami pokrenuti SSLv2 sesije.

Možda se pitate zašto nas briga što oni tamo 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 generiranje SSL certifikata predstavlja određeno opterećenje, što rezultira time da mnogi poslužitelji koriste iste certifikate i, kao rezultat toga, iste RSA ključeve za TLS i SSLv2 veze. Da stvar bude gora, zbog pogreške OpenSSL-a, opcija "Onemogući SSLv2" u ovoj popularnoj implementaciji SSL-a zapravo nije radila.

To je omogućilo napad između protokola na TLS, tzv UTOPITI (Dešifriranje RSA sa zastarjelom i oslabljenom enkripcijom, dešifriranje RSA sa zastarjelom i oslabljenom enkripcijom). Podsjetimo se da to nije isto što i kratki napad; napadač ne treba djelovati kao "čovjek u sredini" i ne treba uključiti klijenta da sudjeluje u nesigurnoj sesiji. Napadači jednostavno pokreću nesigurnu SSLv2 sesiju sa samim poslužiteljem, napadaju slabi protokol i obnavljaju RSA privatni ključ poslužitelja. Ovaj ključ također vrijedi za TLS veze i od ovog trenutka nadalje, nikakva količina TLS sigurnosti neće spriječiti njegovo ugrožavanje.

Ali da biste ga razbili, potreban vam je radni napad na SSLv2, koji vam omogućuje oporavak ne samo određenog prometa, već i tajnog ključa RSA poslužitelja. 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 na Bleichenbacher, 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 značajke SSL-a, u kombinaciji s kratkim ključevima u izvoznoj kriptografiji, omogućile su specifična implementacija DROWN-a.

U vrijeme objave, 25% najpopularnijih internetskih stranica bilo je pogođeno ranjivošću DROWN, a napad se mogao izvesti sa skromnim resursima dostupnim čak i nestašnim usamljenim hakerima. Dohvaćanje poslužiteljskog RSA ključa zahtijevalo je osam sati računanja i 440 USD, a SSLv2 je iz zastarjelog postao radioaktivan.

Čekaj, što je s Heartbleedom?

Ovo nije kriptografski napad u gore opisanom smislu; Ovo je prekoračenje međuspremnika.

Odmorimo

Počeli smo s nekim osnovnim tehnikama: gruba sila, interpolacija, degradacija, unakrsni protokol i predračunavanje. Zatim smo pogledali jednu naprednu tehniku, možda glavnu komponentu modernih kriptografskih napada: oracle napad. Proveli smo dosta vremena shvaćajući to - i razumjeli smo ne samo temeljni princip, već i tehničke detalje dviju specifičnih implementacija: Vaudenayjev napad na način šifriranja CBC i Kelseyjev napad na protokole enkripcije prije kompresije.

U pregledu napada na nižu verziju i napada prije računanja, ukratko smo opisali napad FREAK, koji koristi obje metode tako što ciljne stranice vraćaju na slabe ključeve i zatim ponovno koriste iste ključeve. Za sljedeći članak ćemo sačuvati (vrlo sličan) napad Logjam, koji cilja algoritme javnih ključeva.

Zatim smo pogledali još tri primjera primjene ovih načela. Prvo, CRIME i POODLE: dva napada koji su se oslanjali na sposobnost napadača da ubaci proizvoljan otvoreni tekst pored ciljanog otvorenog teksta, zatim ispita odgovore poslužitelja i zatim,koristeći metodologiju oracle napada, iskoristite ove rijetke informacije za djelomično obnavljanje otvorenog teksta. CRIME je išao putem Kelseyeva napada na SSL kompresiju, dok je POODLE umjesto toga koristio varijantu Vaudenayeva napada na CBC s istim učinkom.

Zatim smo pozornost usmjerili na napad DROWN s više protokola, koji uspostavlja vezu s poslužiteljem korištenjem naslijeđenog SSLv2 protokola i zatim vraća tajne ključeve poslužitelja korištenjem Bleichenbacher napada. Za sada smo preskočili tehničke detalje ovog napada; kao i Logjam, morat će pričekati dok dobro ne razumijemo kriptosustave s javnim ključem i njihove ranjivosti.

U sljedećem članku govorit ćemo o naprednim napadima poput susreta u sredini, diferencijalne kriptoanalize i rođendanskih napada. Krenimo na brzinu u napade sporednih kanala, a zatim prijeđimo na zabavni dio: kriptosustave s javnim ključem.

Izvor: www.habr.com

Dodajte komentar