Kriptografski napadi: razlaga za zmedene ume

Ko slišite besedo "kriptografija", se nekateri ljudje spomnijo svojega gesla za WiFi, zelene ključavnice poleg naslova svojega najljubšega spletnega mesta in kako težko je priti do elektronske pošte nekoga drugega. Drugi se spominjajo vrste ranljivosti v zadnjih letih z zgovornimi okrajšavami (DROWN, FREAK, POODLE ...), elegantnimi logotipi in opozorilom, da nujno posodobite brskalnik.

Kriptografija pokriva vse, vendar bistvo v drugem. Bistvo je, da je meja med preprostim in zapletenim tanka. Nekatere stvari je enostavno narediti, vendar jih je težko sestaviti, na primer razbiti jajce. Druge stvari je enostavno narediti, vendar jih je težko vrniti, ko manjka majhen, pomemben, ključni del: na primer odpreti zaklenjena vrata, ko je "ključni del" ključ. Kriptografija proučuje te situacije in kako jih je mogoče uporabiti v praksi.

V zadnjih letih se je zbirka kriptografskih napadov spremenila v živalski vrt bleščečih logotipov, napolnjenih s formulami iz znanstvenih člankov in vzbujajo splošen mračen občutek, da je vse pokvarjeno. Toda v resnici veliko napadov temelji na nekaj splošnih načelih in neskončne strani formul so pogosto strnjene na preprosto razumljive ideje.

V tej seriji člankov si bomo ogledali različne vrste kriptografskih napadov s poudarkom na osnovnih načelih. Na splošno in ne točno v tem vrstnem redu, vendar bomo obravnavali naslednje:

  • Osnovne strategije: groba sila, frekvenčna analiza, interpolacija, znižanje in navzkrižni protokoli.
  • Znamčene ranljivosti: NOREK, ZLOČIN, PUDELJ, UTOPITEV, Logjam.
  • Napredne strategije: napadi na oraklje (napad Vodenet, napad Kelsey); metoda srečanja na sredini, napad na rojstni dan, statistična pristranskost (diferencialna kriptoanaliza, integralna kriptoanaliza itd.).
  • Napadi stranskega kanala in njihovi bližnji sorodniki, metode analize napak.
  • Napadi na kriptografijo z javnim ključem: kubni koren, oddaja, povezano sporočilo, Coppersmithov napad, Pohlig-Hellmanov algoritem, številsko sito, Wienerjev napad, Bleichenbacherjev napad.

Ta poseben članek zajema zgornje gradivo do Kelseyjevega napada.

Osnovne strategije

Naslednji napadi so preprosti v smislu, da jih je mogoče skoraj v celoti razložiti brez veliko tehničnih podrobnosti. Razložimo vsako vrsto napada na najpreprostejši način, ne da bi se spuščali v zapletene primere ali napredne primere uporabe.

Nekateri od teh napadov so v veliki meri zastareli in niso bili uporabljeni že več let. Drugi so staroselci, ki se v 21. stoletju še vedno redno prikradejo nič hudega slutečim razvijalcem kriptosistemov. Za obdobje sodobne kriptografije lahko štejemo, da se je začelo s prihodom IBM DES, prve šifre, ki je zdržala vse napade na tem seznamu.

Enostavna surova sila

Kriptografski napadi: razlaga za zmedene umeShema šifriranja je sestavljena iz dveh delov: 1) šifrirne funkcije, ki vzame sporočilo (golo besedilo) v kombinaciji s ključem in nato ustvari šifrirano sporočilo - šifrirano besedilo; 2) funkcija dešifriranja, ki vzame šifrirano besedilo in ključ ter ustvari odprto besedilo. Tako šifriranje kot dešifriranje morata biti enostavni za računanje s ključem – in težko brez njega.

Predpostavimo, da vidimo šifrirano besedilo in ga poskušamo dešifrirati brez kakršnih koli dodatnih informacij (to se imenuje napad samo s šifriranim besedilom). Če nekako čudežno najdemo pravi ključ, lahko zlahka preverimo, da je res pravilen, če je rezultat razumno sporočilo.

Upoštevajte, da sta tukaj dve implicitni predpostavki. Najprej vemo, kako izvesti dešifriranje, torej kako deluje kriptosistem. To je standardna predpostavka, ko govorimo o kriptografiji. Skrivanje podrobnosti implementacije šifre pred napadalci se morda zdi dodaten varnostni ukrep, a ko napadalec ugotovi te podrobnosti, je ta dodatna varnost tiho in nepovratno izgubljena. Tako Kerchhoffovo načelo: Sistem, ki pade v roke sovražnika, ne bi smel povzročati nevšečnosti.

Drugič, predpostavljamo, da je pravilen ključ edini ključ, ki bo vodil do razumnega dešifriranja. To je tudi razumna domneva; izpolnjeno je, če je šifrirano besedilo veliko daljše od ključa in je berljivo. To se običajno zgodi v resničnem svetu, razen ogromni nepraktični ključi ali druge lumparije, ki jih je najbolje pustiti ob strani (če vam ni všeč, da smo preskočili razlago, glejte izrek 3.8 tukaj).

Glede na zgoraj navedeno se pojavi strategija: preverite vse možne ključe. Temu se reče surova sila in takšen napad bo zagotovo deloval proti vsem praktičnim šifram – sčasoma. Za vdor je na primer dovolj surova sila Cezarjeva šifra, starodavna šifra, kjer je ključ ena črka abecede, kar pomeni nekaj več kot 20 možnih ključev.

Na žalost za kriptoanalitike je povečanje velikosti ključa dobra obramba pred grobo silo. Ko se velikost ključa poveča, se število možnih ključev eksponentno poveča. Pri sodobnih velikostih tipk je preprosta brutalna sila popolnoma nepraktična. Da bi razumeli, kaj mislimo, vzemimo najhitrejši znani superračunalnik od sredine leta 2019: Vrh od IBM-a z največjo zmogljivostjo približno 1017 operacij na sekundo. Danes je tipična dolžina ključa 128 bitov, kar pomeni 2128 možnih kombinacij. Za iskanje po vseh ključih bo superračunalnik Summit potreboval čas, ki je približno 7800-krat večji od starosti vesolja.

Ali je treba surovo silo obravnavati kot zgodovinsko zanimivost? Sploh ne: je nujna sestavina v kuharski knjigi kriptoanalize. Redko so šifre tako šibke, da jih je mogoče razbiti le s premetenim napadom, brez uporabe sile v eni ali drugi meri. Mnogi uspešni vdori uporabljajo algoritemsko metodo, da najprej oslabijo ciljno šifro in nato izvedejo napad s surovo silo.

Frekvenčna analiza

Kriptografski napadi: razlaga za zmedene umeVečina besedil ni blebetanja. Na primer, v angleških besedilih je veliko črk 'e' in členkov 'the'; v binarnih datotekah je veliko ničelnih bajtov kot oblazinjenje med informacijami. Frekvenčna analiza je vsak napad, ki izkorišča to dejstvo.

Kanonični primer šifre, ranljive za ta napad, je preprosta nadomestna šifra. V tej šifri je ključ tabela z zamenjanimi vsemi črkami. Na primer, 'g' se nadomesti s 'h', 'o' z j, tako da beseda 'go' postane 'hj'. To šifro je težko vsiliti, ker obstaja toliko možnih iskalnih tabel. Če vas zanima matematika, je efektivna dolžina ključa približno 88 bitov: to je
Kriptografski napadi: razlaga za zmedene ume. Toda frekvenčna analiza običajno hitro opravi delo.

Razmislite o naslednjem šifriranem besedilu, obdelanem s preprosto nadomestno šifro:

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

Ker Y pojavlja pogosto, tudi na koncu mnogih besed, lahko pogojno domnevamo, da je to črka e:

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

Pari XD ponavlja na začetku več besed. Zlasti kombinacija XDeLe jasno nakazuje besedo these ali there, torej nadaljujmo:

theLe ALe UGLe thWNKE WN heAJeN ANF eALth DGLAtWG THAN ALe FleAUt GR WN OGQL ZDWBGEGZDO

Predpostavimo še to L соответствующий r, A  - a in tako naprej. Verjetno bo potrebnih nekaj poskusov, toda v primerjavi z napadom s polno surovo silo ta napad v trenutku obnovi izvirno besedilo:

v nebesih in na zemlji je več stvari, horatio, kot se sanja v tvoji filozofiji

Za nekatere je reševanje takšnih "kriptogramov" vznemirljiv hobi.

Ideja frekvenčne analize je bolj temeljna, kot se zdi na prvi pogled. In velja za veliko bolj zapletene šifre. Skozi zgodovino so se različni modeli šifriranja poskušali zoperstaviti takšnemu napadu z uporabo "poliabecedne zamenjave". Tu se med postopkom šifriranja tabela zamenjave črk spremeni na zapletene, a predvidljive načine, ki so odvisni od ključa. Vse te šifre so naenkrat veljale za težko razbiti; in vendar jih je skromna frekvenčna analiza na koncu vse premagala.

Najbolj ambiciozna poliabecedna šifra v zgodovini in verjetno najbolj znana je bila šifra Enigma iz druge svetovne vojne. Bil je razmeroma zapleten v primerjavi s svojimi predhodniki, vendar so ga britanski kriptoanalitiki po trdem delu razbili s frekvenčno analizo. Seveda niso mogli razviti elegantnega napada, kot je prikazan zgoraj; primerjati so morali znane pare odprtega besedila in šifriranega besedila (tako imenovani "plaintext attack"), pri čemer so uporabnike Enigme celo izzvali, da šifrirajo določena sporočila in analizirajo rezultat ("chosen plaintext attack"). A to ni nič olajšalo usode poraženih sovražnih vojsk in potopljenih podmornic.

Po tem zmagoslavju je frekvenčna analiza izginila iz zgodovine kriptoanalize. Šifre v sodobni digitalni dobi so zasnovane tako, da delujejo z biti, ne s črkami. Še pomembneje je, da so bile te šifre zasnovane s temnim razumevanjem tega, kar je kasneje postalo znano kot Schneierjev zakon: Vsak lahko ustvari šifrirni algoritem, ki ga sam ne more zlomiti. Za šifrirni sistem ni dovolj zdelo težko: da dokaže svojo vrednost, mora prestati neusmiljen varnostni pregled številnih kriptoanalitikov, ki se bodo potrudili, da razbijejo šifro.

Predhodni izračuni

Kriptografski napadi: razlaga za zmedene umeVzemimo hipotetično mesto Precom Heights z 200 prebivalci. Vsak dom v mestu vsebuje dragocenosti v vrednosti povprečno 000 $, vendar ne več kot 30 $. Varnostni trg v Precomu ima monopol ACME Industries, ki proizvaja legendarne vratne ključavnice razreda Coyote™. Po strokovni analizi lahko ključavnico razreda Coyote zlomi le zelo zapleten hipotetičen stroj, katerega izdelava zahteva približno pet let in 000 dolarjev investicije. Ali je mesto varno?

Najverjetneje ne. Sčasoma se bo pojavil precej ambiciozen kriminalec. Razmišljal bo takole: »Da, vnaprej bom imel velike stroške. Pet let potrpežljivega čakanja in 50 $. Toda ko bom končal, bom imel dostop do vse bogastvo tega mesta. Če bom pravilno odigral svoje karte, se bo ta naložba večkrat povrnila.”

Enako velja za kriptografijo. Napadi na določeno šifro so predmet neusmiljene analize stroškov in koristi. Če je razmerje ugodno, do napada ne bo prišlo. Toda napadi, ki delujejo proti številnim potencialnim žrtvam hkrati, se skoraj vedno izplačajo; v tem primeru je najboljša praksa načrtovanja domnevati, da so se začeli od prvega dne. V bistvu imamo kriptografsko različico Murphyjevega zakona: "Vse, kar lahko dejansko zlomi sistem, bo zlomilo sistem."

Najenostavnejši primer kriptosistema, ki je ranljiv za predračunski napad, je šifra s konstantnim ključem. Tako je bilo pri Cezarjeva šifra, ki preprosto premakne vsako črko abecede tri črke naprej (tabela je zankasta, zato je zadnja črka abecede šifrirana tretja). Tukaj spet pride v poštev Kerchhoffsovo načelo: ko enkrat vdremo v sistem, ostane za vedno.

Koncept je preprost. Celo začetnik razvijalec kriptosistema bo verjetno prepoznal grožnjo in se ustrezno pripravil. Če pogledamo razvoj kriptografije, so bili takšni napadi neprimerni za večino šifer, od prvih izboljšanih različic Cezarjeve šifre do zatona poliabecednih šifer. Takšni napadi so se vrnili šele s prihodom moderne dobe kriptografije.

Ta vrnitev je posledica dveh dejavnikov. Prvič, končno so se pojavili dovolj kompleksni kriptosistemi, kjer možnost izkoriščanja po vdoru ni bila očitna. Drugič, kriptografija je postala tako razširjena, da so se milijoni laikov vsak dan odločali o tem, kje in katere dele kriptografije bodo ponovno uporabili. Trajalo je nekaj časa, preden so strokovnjaki spoznali tveganje in sprožili alarm.

Ne pozabite na predračunski napad: na koncu članka si bomo ogledali dva resnična kriptografska primera, kjer je imel pomembno vlogo.

Interpolacija

Tukaj je slavni detektiv Sherlock Holmes, ki izvaja interpolacijski napad na nesrečnega dr. Watsona:

Takoj sem uganil, da ste prišli iz Afganistana ... Moje misli so bile naslednje: »Ta človek je po tipu zdravnik, vendar ima vojaško držo. Torej, vojaški zdravnik. Pravkar je prišel iz tropov - njegov obraz je temen, vendar to ni naravni odtenek njegove kože, saj so njegova zapestja precej bolj bela. Obraz je izčrpan - očitno je veliko trpel in trpel zaradi bolezni. Ranjen je bil v levo roko - drži jo negibno in malo nenaravno. Kje v tropih bi lahko angleški vojaški zdravnik prestal stiske in bil ranjen? Seveda v Afganistanu." Celoten tok misli ni trajal niti sekunde. In tako sem rekel, da ste prišli iz Afganistana, in bili ste presenečeni.

Holmes je lahko iz vsakega dokaza posebej izluščil zelo malo informacij. Do svojega zaključka je lahko prišel le tako, da jih je upošteval skupaj. Napad z interpolacijo deluje podobno s preučevanjem znanih parov golega in šifriranega besedila, ki izhajajo iz istega ključa. Iz vsakega para so izluščena posamezna opažanja, ki omogočajo splošen zaključek o ključu. Vsi ti sklepi so nejasni in se zdijo neuporabni, dokler nenadoma ne dosežejo kritične mase in vodijo do edinega možnega zaključka: ne glede na to, kako neverjeten je, mora biti resničen. Po tem se razkrije ključ ali pa postane postopek dešifriranja tako izpopolnjen, da ga je mogoče ponoviti.

S preprostim primerom ponazorimo, kako deluje interpolacija. Recimo, da želimo prebrati osebni dnevnik našega sovražnika Boba. Vsako številko v svojem dnevniku šifrira s preprostim kriptosistemom, za katerega je izvedel iz oglasa v reviji "A Mock of Cryptography". Sistem deluje takole: Bob izbere dve številki, ki sta mu všeč: Kriptografski napadi: razlaga za zmedene ume и Kriptografski napadi: razlaga za zmedene ume. Od zdaj naprej za šifriranje poljubne številke Kriptografski napadi: razlaga za zmedene ume, izračuna Kriptografski napadi: razlaga za zmedene ume. Na primer, če je Bob izbral Kriptografski napadi: razlaga za zmedene ume и Kriptografski napadi: razlaga za zmedene ume, nato številko Kriptografski napadi: razlaga za zmedene ume bo šifrirano kot Kriptografski napadi: razlaga za zmedene ume.

Recimo, da smo 28. decembra opazili, da Bob nekaj praska v svojem dnevniku. Ko bo končal, ga bomo tiho vzeli in pogledali zadnji vnos:

Datum: 235/520

Dragi dnevnik,

Danes je bil dober dan. Skozi 64 danes imam zmenek z Aliso, ki živi v stanovanju 843. Res mislim, da bi lahko bila 26!

Ker zelo resno nameravamo spremljati Boba na njegovem zmenku (v tem primeru sva oba stara 15 let), je ključnega pomena, da poznamo datum in Alicein naslov. Na srečo opazimo, da je Bobov kriptosistem ranljiv za interpolacijski napad. Morda ne vemo Kriptografski napadi: razlaga za zmedene ume и Kriptografski napadi: razlaga za zmedene ume, vendar poznamo današnji datum, tako da imamo dva para golo besedilo-šifrirano besedilo. To namreč vemo Kriptografski napadi: razlaga za zmedene ume šifrirano v Kriptografski napadi: razlaga za zmedene umeIn Kriptografski napadi: razlaga za zmedene ume - v Kriptografski napadi: razlaga za zmedene ume. Tole bomo zapisali:

Kriptografski napadi: razlaga za zmedene ume

Kriptografski napadi: razlaga za zmedene ume

Ker smo stari 15 let, že poznamo sistem dveh enačb z dvema neznankama, kar je v tej situaciji dovolj, da najdemo Kriptografski napadi: razlaga za zmedene ume и Kriptografski napadi: razlaga za zmedene ume brez težav. Vsak par golo besedilo-šifrirano besedilo postavlja omejitev na Bobov ključ in obe omejitvi skupaj zadostujeta za popolno obnovitev ključa. V našem primeru je odgovor Kriptografski napadi: razlaga za zmedene ume и Kriptografski napadi: razlaga za zmedene ume (na Kriptografski napadi: razlaga za zmedene ume Kriptografski napadi: razlaga za zmedene ume, torej 26 v dnevniku ustreza besedi 'the one', to je "isti" - pribl. vozni pas).

Interpolacijski napadi seveda niso omejeni na tako preproste primere. Vsak kriptosistem, ki se reducira na dobro razumljiv matematični objekt in seznam parametrov, je v nevarnosti interpolacijskega napada – bolj ko je predmet razumljiv, večje je tveganje.

Novinci se pogosto pritožujejo, da je kriptografija "umetnost oblikovanja čim bolj grdih stvari." Verjetno so v veliki meri krivi interpolacijski napadi. Bob lahko bodisi uporabi elegantno matematično zasnovo ali pa zmenek z Alice ostane zaseben – a žal, običajno ne morete imeti obojega. To bo postalo popolnoma jasno, ko bomo sčasoma prišli do teme kriptografije z javnimi ključi.

Navzkrižni protokol/starša različica

Kriptografski napadi: razlaga za zmedene umeV filmu Now You See Me (2013) skupina iluzionistov skuša pokvarjenemu zavarovalniškemu magnatu Arthurju Tresslerju odvzeti njegovo celotno premoženje. Za dostop do Arthurjevega bančnega računa morajo iluzionisti posredovati njegovo uporabniško ime in geslo ali pa ga prisiliti, da se osebno pojavi na banki in sodeluje v shemi.

Obe možnosti sta zelo težki; Fantje so navajeni nastopati na odru in ne sodelovati v obveščevalnih operacijah. Zato izberejo tretjo možno možnost: njihov sostorilec pokliče banko in se pretvarja, da je Arthur. Banka postavi več vprašanj za preverjanje identitete, na primer ime strica in ime prvega ljubljenčka; naši junaki vnaprej te informacije zlahka izvlečejo iz Arthurja s pomočjo pametnega socialnega inženiringa. Od te točke naprej odlična varnost gesel ni več pomembna.

(Glede na urbano legendo, ki smo jo osebno preverili in preverili, je kriptograf Eli Beaham nekoč naletel na bančnega blagajnika, ki je vztrajal pri nastavitvi varnostnega vprašanja. Ko je blagajnik vprašal za ime njegove babice po materini strani, je Beaham začel narekovati: »Velika črka X, majhen y, tri...").

Enako je v kriptografiji, če se za zaščito istega sredstva vzporedno uporabljata dva kriptografska protokola in je eden veliko šibkejši od drugega. Nastali sistem postane ranljiv za napad med protokoli, kjer je napaden šibkejši protokol, da bi prišel do nagrade, ne da bi se dotaknil močnejšega.

V nekaterih zapletenih primerih ni dovolj preprosto vzpostaviti stik s strežnikom z uporabo šibkejšega protokola, ampak je potrebna neprostovoljna udeležba zakonitega odjemalca. To je mogoče organizirati s tako imenovanim napadom navzdol. Da bi razumeli ta napad, predpostavimo, da imajo naši iluzionisti težjo nalogo kot v filmu. Predpostavimo, da sta bančni uslužbenec (blagajnik) in Arthur naletela na nekaj nepredvidenih okoliščin, kar je povzročilo naslednji dialog:

Vlomilec: Zdravo? To je Arthur Tressler. Rad bi ponastavil svoje geslo.

Blagajnik: Super. Prosimo, poglejte svojo osebno skrivno šifranto, stran 28, beseda 3. Vsa naslednja sporočila bodo šifrirana z uporabo te posebne besede kot ključa. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…

Vlomilec: Hej, hej, počakaj, počakaj. Je to res potrebno? Ali se ne moremo pogovarjati kot normalni ljudje?

Blagajnik: Ne priporočam tega.

Vlomilec: Samo... poglej, imel sem slab dan, v redu? Sem VIP stranka in nisem razpoložena, da bi brskala po teh neumnih šifrantih.

Blagajnik: Globa. Če vztrajate, g. Tressler. Kaj hočeš?

Vlomilec: Prosim, rad bi daroval ves svoj denar nacionalnemu skladu za žrtve Arthurja Tresslerja.

(Pavza).

Blagajnik: Je zdaj jasno. Za velike transakcije vnesite svoj PIN.

Vlomilec: moj kaj?

Blagajnik: Na vašo osebno zahtevo transakcije te velikosti zahtevajo PIN za velike transakcije. To kodo ste prejeli, ko ste odprli račun.

Vlomilec:... izgubil sem ga. Je to res potrebno? Ali ne morete kar odobriti posla?

Blagajnik: št. Oprostite, g. Tressler. Še enkrat, to je varnostni ukrep, ki ste ga zahtevali. Če želite, vam lahko pošljemo novo PIN kodo v vaš nabiralnik.

Naši junaki odložijo operacijo. Prisluškujeta več Tresslerjevim velikim transakcijam v upanju, da bosta slišala kodo PIN; ampak vsakič, ko se pogovor spremeni v kodirano blebetanje, preden je povedano kaj zanimivega. Končno se nekega lepega dne načrt uresniči. Potrpežljivo počakajo na trenutek, ko mora Tressler opraviti veliko transakcijo po telefonu, se oglasi na liniji, potem pa ...

Tressler: Zdravo. Rad bi dokončal transakcijo na daljavo, prosim.

Blagajnik: Super. Prosimo, poglejte svojo osebno skrivno šifranto, stran ...

(Vlomilec pritisne na gumb; glas blagajničarke se spremeni v nerazumljiv hrup).

Blagajnik: - #@$#@$#*@$$@#* bo šifriran s to besedo kot ključem. AAAYRR PLRQRZ MMNJK LOJBAN…

Tressler: Oprosti, nisem dobro razumel. Ponovno? Na kateri strani? Kakšna beseda?

Blagajnik: To je stran @#$@#*$)#*#@()#@$(#@*$(#@*.

Tressler: Kaj?

Blagajnik: Beseda številka dvajset @$#@$#%#$.

Tressler: Resno! Dovolj že! Vi in vaš varnostni protokol ste nekakšen cirkus. Vem, da se lahko normalno pogovarjaš z mano.

Blagajnik: Ne priporočam…

Tressler: In ne svetujem vam, da zapravljate moj čas. Nočem več slišati o tem, dokler ne odpravite težav s telefonsko linijo. Ali lahko sklenemo ta posel ali ne?

Blagajnik:… Da. Globa. Kaj hočeš?

Tressler: Rad bi nakazal 20 $ na Lord Business Investments, številka računa ...

Blagajnik: Eno minuto, prosim. To je velika stvar. Za velike transakcije vnesite svoj PIN.

Tressler: Kaj? Oh, točno tako. 1234.

Tukaj je napad navzdol. Šibkejši protokol "samo govori neposredno" je bil predviden kot možnost v nujnem primeru. In vendar smo tukaj.

Morda se sprašujete, kdo bi pri zdravi pameti zasnoval pravi sistem "varen, dokler ne vprašate drugače", kot je zgoraj opisani. Toda tako kot izmišljena banka tvega, da obdrži stranke, ki ne marajo kriptografije, sistemi na splošno pogosto gravitirajo k zahtevam, ki so brezbrižne ali celo popolnoma sovražne do varnosti.

Točno to se je zgodilo s protokolom SSLv2 leta 1995. Ameriška vlada je že dolgo začela gledati na kriptografijo kot na orožje, ki ga je najbolje obdržati stran od tujih in domačih sovražnikov. Deli kode so bili posamično odobreni za izvoz iz Združenih držav, pogosto pod pogojem, da je bil algoritem namerno oslabljen. Netscape, razvijalec najbolj priljubljenega brskalnika Netscape Navigator, je dobil dovoljenje za SSLv2 samo z inherentno ranljivim 512-bitnim ključem RSA (in 40-bitnim za RC4).

Do konca tisočletja so se pravila sprostila in dostop do sodobnega šifriranja je postal široko dostopen. Vendar pa odjemalci in strežniki že leta podpirajo oslabljeno "izvozno" kriptografijo zaradi iste vztrajnosti, ki ohranja podporo za vse podedovane sisteme. Stranke so menile, da bi lahko naletele na strežnik, ki ne podpira ničesar drugega. Strežniki so storili enako. Seveda protokol SSL narekuje, da odjemalci in strežniki nikoli ne smejo uporabljati šibkega protokola, če je na voljo boljši. Toda ista predpostavka je veljala za Tresslerja in njegovo banko.

Ta teorija je našla pot do dveh odmevnih napadov, ki sta leta 2015 omajala varnost protokola SSL, oba sta odkrili Microsoftovi raziskovalci in INRIA. Najprej so bile podrobnosti o napadu FREAK razkrite februarja, tri mesece kasneje pa je sledil še en podoben napad, imenovan Logjam, o katerem bomo podrobneje razpravljali, ko bomo prešli na napade na kriptografijo z javnimi ključi.

Kriptografski napadi: razlaga za zmedene umeRanljivost FREAK (znan tudi kot "Smack TLS") je prišel na dan, ko so raziskovalci analizirali implementacije odjemalca/strežnika TLS in odkrili čudno napako. V teh izvedbah, če odjemalec niti ne zahteva uporabe šibke izvozne kriptografije, vendar se strežnik še vedno odzove s takšnimi ključi, odjemalec reče "Oh dobro" in preklopi na šibek paket šifer.

Takrat je izvozna kriptografija na splošno veljala za zastarelo in prepovedano, zato je bil napad popoln šok in je prizadel številne pomembne domene, vključno s spletnimi mesti Bele hiše, IRS in NSA. Še huje, izkazalo se je, da so številni ranljivi strežniki optimizirali delovanje s ponovno uporabo istih ključev, namesto da bi za vsako sejo ustvarili nove. To je po znižanju protokola omogočilo izvedbo napada pred računanjem: vdiranje enega ključa je ostalo razmeroma drago (100 USD in 12 ur v času objave), vendar so se praktični stroški napada na povezavo znatno zmanjšali. Dovolj je, da enkrat izberete ključ strežnika in od tega trenutka dalje razbijete šifriranje za vse nadaljnje povezave.

In preden gremo naprej, je treba omeniti en napreden napad ...

Napad Oracle

Kriptografski napadi: razlaga za zmedene umeMoxie Marlinspike najbolj znan kot oče večplatformske aplikacije za kripto sporočanje Signal; osebno pa nam je všeč ena od njegovih manj znanih inovacij – načelo kriptografske pogube (Načelo kriptografske pogube). Če nekoliko parafraziramo, lahko rečemo tole: »Če protokol deluje katerikoli izvede kriptografsko operacijo na sporočilu iz potencialno zlonamernega vira in se glede na rezultat obnaša drugače, je obsojen na propad." Ali v ostrejši obliki: "Ne jemljite informacij od sovražnika za obdelavo, in če morate, potem vsaj ne pokažite rezultata."

Pustimo ob strani prelivanje medpomnilnika, vstavljanje ukazov in podobno; niso v okviru te razprave. Kršitev "doom principa" vodi do resnih kriptografskih vdorov zaradi dejstva, da se protokol obnaša natanko tako, kot je pričakovano.

Za primer vzemimo fiktivno zasnovo z ranljivo nadomestno šifro in nato pokažimo možen napad. Čeprav smo že videli napad na nadomestno šifro z uporabo frekvenčne analize, to ni samo "še en način za razbijanje iste šifre." Nasprotno, orakeljski napadi so veliko bolj sodoben izum, uporaben v številnih situacijah, kjer frekvenčna analiza ne uspe, in videli bomo predstavitev tega v naslednjem razdelku. Tukaj je preprosta šifra izbrana samo zato, da bo primer jasnejši.

Torej Alice in Bob komunicirata s pomočjo preproste nadomestne šifre z uporabo ključa, ki ga poznata le onadva. Pri dolžini sporočil so zelo strogi: dolga so natanko 20 znakov. Zato so se dogovorili, da če nekdo želi poslati krajše sporočilo, mora na koncu sporočila dodati nekaj navideznega besedila, da bo imelo natančno 20 znakov. Po nekaj razpravah so se odločili, da bodo sprejeli samo naslednja navidezna besedila: a, bb, ccc, dddd itd. Tako je znano navidezno besedilo poljubne zahtevane dolžine.

Ko Alice ali Bob prejmeta sporočilo, najprej preverita, ali je sporočilo pravilne dolžine (20 znakov) in ali je pripona pravilno lažno besedilo. Če temu ni tako, se odzovejo z ustreznim sporočilom o napaki. Če sta dolžina besedila in lažno besedilo v redu, prejemnik sam prebere sporočilo in pošlje šifriran odgovor.

Med napadom se napadalec izda za Boba in Alice pošlje lažna sporočila. Sporočila so popolna neumnost - napadalec nima ključa in zato ne more ponarediti smiselnega sporočila. Ker pa protokol krši načelo pogube, lahko napadalec še vedno ujame Alice v razkritje ključnih informacij, kot je prikazano spodaj.

Vlomilec: PREWF ZHJKL MMMN. LA

Alice: Neveljavno navidezno besedilo.

Vlomilec: PREWF ZHJKL MMMN. LB

Alice: Neveljavno navidezno besedilo.

Vlomilec: PREWF ZHJKL MMMN. LC

Alice: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

Vlomilec nima pojma, kaj je pravkar rekla Alice, vendar opazi, da simbol C mora ustrezati a, saj je Alice sprejela navidezno besedilo.

Vlomilec: REWF ZHJKL MMMN. LAA

Alice: Neveljavno navidezno besedilo.

Vlomilec: REWF ZHJKL MMMN. LBB

Alice: Neveljavno navidezno besedilo.

Po številnih poskusih ...

Vlomilec: REWF ZHJKL MMMN. LGG

Alice: Neveljavno navidezno besedilo.

Vlomilec: REWF ZHJKL MMMN. LHH

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

Napadalec spet nima pojma, kaj je pravkar rekla Alice, vendar ugotavlja, da se mora H ujemati z b, ker je Alice sprejela navidezno besedilo.

In tako naprej, dokler napadalec ne pozna pomena vsakega znaka.

Na prvi pogled je metoda podobna izbranemu napadu z navadnim besedilom. Na koncu napadalec izbere šifrirana besedila, strežnik pa jih poslušno obdela. Glavna razlika, zaradi katere so ti napadi izvedljivi v resničnem svetu, je, da napadalec ne potrebuje dostopa do dejanskega prepisa – zadostuje odgovor strežnika, tudi tako neškodljiv, kot je »Neveljavno lažno besedilo«.

Čeprav je ta napad poučen, se ne obremenjujte preveč s posebnostmi sheme "navideznega besedila", uporabljenim specifičnim kriptosistemom ali natančnim zaporedjem sporočil, ki jih pošlje napadalec. Osnovna ideja je, kako se Alice odzove drugače glede na lastnosti odprtega besedila in to brez preverjanja, ali je ustrezno šifrirano besedilo dejansko prišlo od zaupanja vredne osebe. Tako Alice dovoli napadalcu, da iz njenih odgovorov iztisne tajne informacije.

V tem scenariju je mogoče marsikaj spremeniti. Simboli, na katere Alice reagira, ali sama razlika v njenem vedenju ali celo uporabljeni kriptosistem. Toda načelo bo ostalo enako in napad kot celota bo v takšni ali drugačni obliki ostal uspešen. Osnovna izvedba tega napada je pomagala odkriti več varnostnih napak, ki si jih bomo ogledali v kratkem; a najprej se je treba naučiti nekaj teoretičnih lekcij. Kako uporabiti to izmišljeno "Alice skripto" v napadu, ki lahko deluje na pravi sodobni šifri? Je to sploh mogoče, tudi v teoriji?

Leta 1998 je švicarski kriptograf Daniel Bleichenbacher na to vprašanje odgovoril pritrdilno. Prikazal je orakeljski napad na široko uporabljen kriptosistem z javnimi ključi RSA z uporabo posebne sheme sporočil. V nekaterih implementacijah RSA se strežnik odzove z različnimi sporočili o napakah, odvisno od tega, ali se golo besedilo ujema s shemo ali ne; to je bilo dovolj za izvedbo napada.

Štiri leta pozneje, leta 2002, je francoski kriptograf Serge Vaudenay demonstriral napad oraklja, skoraj enak tistemu, opisanemu v scenariju Alice zgoraj - le da je namesto fiktivne šifre razbil cel ugleden razred sodobnih šifer, ki jih ljudje dejansko uporabljajo. Vaudenayev napad cilja predvsem na šifre s fiksno velikostjo vnosa ("blokovne šifre"), ko se uporabljajo v tako imenovanem "načinu šifriranja CBC" in z določeno priljubljeno shemo oblazinjenja, ki je v bistvu enakovredna tisti v scenariju Alice.

Tudi leta 2002 ameriški kriptograf John Kelsey - soavtor Dve ribe — predlagal različne napade Oracle na sisteme, ki stisnejo sporočila in jih nato šifrirajo. Najbolj opazen med temi je bil napad, ki je izkoristil dejstvo, da je pogosto mogoče sklepati na prvotno dolžino odprtega besedila iz dolžine šifriranega besedila. Teoretično to omogoča orakeljski napad, ki obnovi dele izvirnega odprtega besedila.

Spodaj podajamo podrobnejši opis napadov Vaudenay in Kelsey (podrobnejši opis napada Bleichenbacher bomo podali, ko preidemo na napade na kriptografijo z javnimi ključi). Kljub našemu trudu postane besedilo nekoliko tehnično; torej, če vam je zgoraj navedeno dovolj, preskočite naslednja dva razdelka.

Napad Vodene

Da bi razumeli napad Vaudenay, se moramo najprej malo več pogovoriti o blokovnih šifrah in načinih šifriranja. "Bločna šifra" je, kot že omenjeno, šifra, ki vzame ključ in vnos določene fiksne dolžine ("dolžina bloka") in proizvede šifriran blok enake dolžine. Bločne šifre se pogosto uporabljajo in veljajo za relativno varne. Zdaj upokojeni DES, ki velja za prvo sodobno šifro, je bil blok šifra. Kot je navedeno zgoraj, enako velja za AES, ki se danes pogosto uporablja.

Na žalost imajo blokovne šifre eno očitno slabost. Tipična velikost bloka je 128 bitov ali 16 znakov. Očitno je, da sodobna kriptografija zahteva delo z večjimi vhodnimi podatki, in tu pridejo v poštev načini šifriranja. Način šifriranja je v bistvu kramp: je način, kako nekako uporabiti blokovno šifro, ki sprejme samo vnos določene velikosti za vnos poljubne dolžine.

Napad Vodene je osredotočen na priljubljen način delovanja CBC (Cipher Block Chaining). Napad obravnava osnovno šifro blokov kot čarobno, nepremagljivo črno skrinjico in popolnoma zaobide njeno varnost.

Tukaj je diagram, ki prikazuje, kako deluje način CBC:

Kriptografski napadi: razlaga za zmedene ume

Kriptografski napadi: razlaga za zmedene ume

Obkrožen plus pomeni operacijo XOR (izključni ALI). Na primer, prejet je drugi blok šifriranega besedila:

  1. Z izvedbo operacije XOR na drugem bloku golega besedila s prvim blokom šifriranega besedila.
  2. Šifriranje nastalega bloka s šifriranjem blokov z uporabo ključa.

Ker CBC tako močno uporablja binarno operacijo XOR, si vzemimo trenutek in se spomnimo nekaterih njenih lastnosti:

  • Idempotenca: Kriptografski napadi: razlaga za zmedene ume
  • Komutativnost: Kriptografski napadi: razlaga za zmedene ume
  • Asociativnost: Kriptografski napadi: razlaga za zmedene ume
  • Samoreverzibilnost: Kriptografski napadi: razlaga za zmedene ume
  • Velikost bajta: bajt n od Kriptografski napadi: razlaga za zmedene ume = (bajt n od Kriptografski napadi: razlaga za zmedene ume) Kriptografski napadi: razlaga za zmedene ume (bajt n od Kriptografski napadi: razlaga za zmedene ume)

Običajno te lastnosti pomenijo, da če imamo enačbo, ki vključuje operacije XOR in eno neznanko, jo je mogoče rešiti. Na primer, če to vemo Kriptografski napadi: razlaga za zmedene ume z neznanim Kriptografski napadi: razlaga za zmedene ume in slavni Kriptografski napadi: razlaga za zmedene ume и Kriptografski napadi: razlaga za zmedene ume, potem se lahko zanesemo na zgoraj omenjene lastnosti, da rešimo enačbo za Kriptografski napadi: razlaga za zmedene ume. Z uporabo XOR na obeh straneh enačbe z Kriptografski napadi: razlaga za zmedene ume, dobimo Kriptografski napadi: razlaga za zmedene ume. Vse to bo v trenutku postalo zelo pomembno.

Obstajata dve manjši razliki in ena večja razlika med našim Alicinim scenarijem in Vaudenayevim napadom. Dva manjša:

  • V scenariju je Alice pričakovala, da se bo golo besedilo končalo z liki a, bb, ccc in tako naprej. V napadu Wodene žrtev namesto tega pričakuje, da se odprta besedila N-krat končajo z N bajtom (to je šestnajstiško 01 ali 02 02 ali 03 03 03 itd.). To je zgolj kozmetična razlika.
  • V scenariju z Alico je bilo enostavno ugotoviti, ali je Alice sprejela sporočilo z odgovorom "Nepravilno navidezno besedilo". Pri napadu Vodena je potrebna večja analiza in pomembna je natančna izvedba na strani oškodovanca; vendar zaradi kratkosti vzemimo kot samoumevno, da je ta analiza še vedno možna.

Glavna razlika:

  • Ker ne uporabljamo istega kriptosistema, bo razmerje med bajti šifriranega besedila, ki jih nadzoruje napadalec, in skrivnostmi (ključem in odprtim besedilom) očitno drugačno. Zato bo moral napadalec uporabiti drugačno strategijo pri ustvarjanju šifriranih besedil in interpretaciji odzivov strežnika.

Ta velika razlika je zadnji del sestavljanke za razumevanje Vaudenayjevega napada, zato si vzemimo trenutek in razmislimo o tem, zakaj in kako je sploh mogoče izvesti orakeljski napad na CBC.

Recimo, da imamo šifrirano besedilo CBC iz 247 blokov in ga želimo dešifrirati. Strežniku lahko pošiljamo lažna sporočila, tako kot smo prej lahko pošiljali lažna sporočila Alice. Strežnik bo namesto nas dešifriral sporočila, vendar dešifriranja ne bo prikazal – namesto tega bo spet, kot pri Alice, strežnik sporočil le en bit informacije: ali ima odprto besedilo veljavno oblazinjenje ali ne.

Upoštevajte, da smo imeli v Alicinem scenariju naslednja razmerja:

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

Recimo temu "Alicina enačba." Nadzorovali smo šifrirano besedilo; strežnik (Alice) je razkril nejasne informacije o prejetem odprtem besedilu; in to nam je omogočilo izpeljavo informacij o zadnjem dejavniku – ključu. Po analogiji, če lahko najdemo takšno povezavo za skript CBC, bi morda lahko izluščili nekaj tajnih informacij tudi tam.

Na srečo res obstajajo odnosi, ki jih lahko uporabimo. Razmislite o izhodu končnega klica za dešifriranje blokovne šifre in označite ta izhod kot Kriptografski napadi: razlaga za zmedene ume. Označujemo tudi bloke odprtega besedila Kriptografski napadi: razlaga za zmedene ume in bloki šifriranega besedila Kriptografski napadi: razlaga za zmedene ume. Še enkrat si oglejte diagram CBC in opazite, kaj se zgodi:

Kriptografski napadi: razlaga za zmedene ume

Recimo temu "enačba CBC."

V Aliceinem scenariju smo s spremljanjem šifriranega besedila in opazovanjem ustreznega uhajanja odprtega besedila lahko izvedli napad, ki je obnovil tretji člen v enačbi – ključ. V scenariju CBC spremljamo tudi šifrirano besedilo in opazujemo uhajanje informacij v ustreznem odprtem besedilu. Če analogija drži, lahko pridobimo podatke o Kriptografski napadi: razlaga za zmedene ume.

Recimo, da smo res obnovili Kriptografski napadi: razlaga za zmedene ume, kaj potem? No, potem lahko naenkrat natisnemo celoten zadnji blok golega besedila (Kriptografski napadi: razlaga za zmedene ume), preprosto z vnosom Kriptografski napadi: razlaga za zmedene ume (ki ga imamo) in
prejel Kriptografski napadi: razlaga za zmedene ume v enačbo CBC.

Zdaj, ko smo optimistični glede splošnega načrta napada, je čas, da se dogovorimo o podrobnostih. Prosimo, bodite pozorni na to, kako na strežniku uhajajo informacije v navadnem besedilu. V Alicinem skriptu je do uhajanja prišlo, ker bi Alice odgovorila s pravilnim sporočilom le, če bi se $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ končalo z vrstico a (Ali bbin tako naprej, vendar so bile možnosti, da bi se ta stanja sprožila po naključju, zelo majhne). Podobno kot pri CBC strežnik sprejme oblazinjenje le in če Kriptografski napadi: razlaga za zmedene ume se konča na šestnajstiško 01. Poskusimo torej isti trik: pošiljanje lažnih šifriranih besedil z lastnimi lažnimi vrednostmi Kriptografski napadi: razlaga za zmedene umedokler strežnik ne sprejme polnila.

Ko strežnik sprejme oblazinjenje za eno od naših lažnih sporočil, to pomeni, da:

Kriptografski napadi: razlaga za zmedene ume

Zdaj uporabljamo lastnost bajt-bajt XOR:

Kriptografski napadi: razlaga za zmedene ume

Poznamo prvi in ​​tretji izraz. Videli smo že, da nam to omogoča, da obnovimo preostali člen - zadnji bajt iz Kriptografski napadi: razlaga za zmedene ume:

Kriptografski napadi: razlaga za zmedene ume

S tem dobimo tudi zadnji bajt končnega bloka golega besedila prek enačbe CBC in lastnosti bajt za bajtom.

Lahko bi pustili pri tem in bili zadovoljni, da smo izvedli napad na teoretično močno šifro. Toda v resnici lahko storimo veliko več: dejansko lahko obnovimo celotno besedilo. Za to je potreben trik, ki ga ni bilo v Aliceinem prvotnem scenariju in ni potreben za napad na Oracle, vendar se ga je vseeno vredno naučiti.

Da bi ga razumeli, najprej upoštevajte, da je rezultat izpisa pravilne vrednosti zadnjega bajta Kriptografski napadi: razlaga za zmedene ume imamo novo sposobnost. Zdaj lahko pri kovanju šifriranih besedil manipuliramo z zadnjim bajtom ustreznega odprtega besedila. Ponovno je to povezano z enačbo CBC in lastnostjo bajt za bajtom:

Kriptografski napadi: razlaga za zmedene ume

Ker zdaj poznamo drugi člen, lahko s svojim nadzorom nad prvim nadzorujemo tretjega. Preprosto izračunamo:

Kriptografski napadi: razlaga za zmedene ume

Prej tega nismo mogli narediti, ker še nismo imeli zadnjega bajta Kriptografski napadi: razlaga za zmedene ume.

Kako nam bo to pomagalo? Recimo, da zdaj ustvarimo vsa šifrirana besedila tako, da je v ustreznih odprtih besedilih zadnji bajt enak 02. Strežnik zdaj sprejme samo oblazinjenje, če se golo besedilo konča z 02 02. Ker smo popravili zadnji bajt, se bo to zgodilo le, če je predzadnji bajt odprtega besedila prav tako 02. Še naprej pošiljamo lažne bloke šifriranega besedila in spreminjamo predzadnji bajt, dokler strežnik ne sprejme polnila za enega od njih. Na tej točki dobimo:

Kriptografski napadi: razlaga za zmedene ume

In obnovimo predzadnji bajt Kriptografski napadi: razlaga za zmedene ume tako kot je bila zadnja obnovljena. Nadaljujemo v istem duhu: zadnja dva bajta odprtega besedila popravimo na 03 03, ponovimo ta napad za tretji bajt od konca in tako naprej, na koncu popolnoma obnovimo Kriptografski napadi: razlaga za zmedene ume.

Kaj pa ostalo besedilo? Upoštevajte, da je vrednost Kriptografski napadi: razlaga za zmedene ume je pravzaprav $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$. Namesto njega lahko postavimo katerikoli drug blok Kriptografski napadi: razlaga za zmedene ume, pa bo napad še vedno uspešen. Pravzaprav lahko od strežnika zahtevamo, da naredi $inline$text{BLOCK_DECRYPT}$inline$ za vse podatke. Na tej točki je igre konec – dešifriramo lahko katero koli šifrirano besedilo (še enkrat si oglejte diagram dešifriranja CBC, da vidite to; in upoštevajte, da je IV javen).

Ta posebna metoda igra ključno vlogo pri orakeljskem napadu, s katerim se bomo srečali kasneje.

Kelseyin napad

Naš sorodni John Kelsey je predstavil načela, na katerih temeljijo številni možni napadi, ne le podrobnosti specifičnega napada na določeno šifro. Njegovo 2002 članek leta je študija možnih napadov na šifrirane stisnjene podatke. Ste mislili, da podatek, da so bili podatki pred šifriranjem stisnjeni, ni dovolj za izvedbo napada? Izkazalo se je, da je to dovolj.

Ta presenetljiv rezultat je posledica dveh principov. Prvič, obstaja močna korelacija med dolžino odprtega besedila in dolžino šifriranega besedila; za mnoge šifre natančna enakost. Drugič, ko se izvede stiskanje, obstaja tudi močna korelacija med dolžino stisnjenega sporočila in stopnjo "šumnosti" odprtega besedila, to je delež neponavljajočih se znakov (strokovni izraz je "visoka entropija" ).

Če želite videti načelo v akciji, razmislite o dveh odprtih besedilih:

Navadno besedilo 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Navadno besedilo 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

Predpostavimo, da sta obe odprti besedili stisnjeni in nato šifrirani. Dobite dve nastali šifrirani besedili in uganiti morate, katero šifrirano besedilo se ujema s katerim odprtim besedilom:

Šifrirano besedilo 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

Šifrirano besedilo 2: DWKJZXYU

Odgovor je jasen. Med odprtimi besedili je bilo mogoče samo odprto besedilo 1 stisniti v skromno dolžino drugega šifriranega besedila. To smo ugotovili, ne da bi vedeli karkoli o algoritmu stiskanja, šifrirnem ključu ali celo sami šifri. V primerjavi s hierarhijo možnih kriptografskih napadov je to nekako noro.

Kelsey nadalje poudarja, da se lahko v določenih nenavadnih okoliščinah to načelo uporabi tudi za izvedbo napada na orakelj. Zlasti opisuje, kako lahko napadalec obnovi skrivno odprto besedilo, če lahko prisili strežnik, da šifrira podatke obrazca (odkrito besedilo, ki mu sledi Kriptografski napadi: razlaga za zmedene umemedtem ko ima nadzor Kriptografski napadi: razlaga za zmedene ume in lahko nekako preveri dolžino šifriranega rezultata.

Ponovno, tako kot pri drugih orakljskih napadih, imamo razmerje:

Kriptografski napadi: razlaga za zmedene ume

Spet nadzorujemo en izraz (Kriptografski napadi: razlaga za zmedene ume), vidimo majhno uhajanje informacij o drugem članu (šifrirano besedilo) in poskušamo obnoviti zadnjega (golo besedilo). Kljub analogiji je to nekoliko nenavadna situacija v primerjavi z drugimi orakeljskimi napadi, ki smo jih videli.

Za ponazoritev, kako lahko deluje takšen napad, uporabimo fiktivno shemo stiskanja, ki smo si jo pravkar izmislili: TOYZIP. Išče vrstice besedila, ki so se že pojavile v besedilu, in jih nadomesti s tremi bajti nadomestnih znakov, ki kažejo, kje najti prejšnji primerek vrstice in kolikokrat se tam pojavi. Na primer črta helloworldhello se lahko stisne v helloworld[00][00][05] Dolg 13 bajtov v primerjavi s prvotnimi 15 bajti.

Recimo, da napadalec poskuša obnoviti odprto besedilo obrazca password=..., kjer samo geslo ni znano. Po Kelseyjevem napadalnem modelu lahko napadalec od strežnika zahteva, da stisne in nato šifrira sporočila obrazcev (golo besedilo, ki mu sledi Kriptografski napadi: razlaga za zmedene ume), kje Kriptografski napadi: razlaga za zmedene ume - prosto besedilo. Ko strežnik konča z delom, sporoči dolžino rezultata. Napad gre takole:

Vlomilec: Stisnite in šifrirajte golo besedilo brez oblazinjenja.

strežnik: Dolžina rezultata 14.

Vlomilec: Stisnite in šifrirajte odprto besedilo, ki mu je priloženo password=a.

strežnik: Dolžina rezultata 18.

Opombe krekerja: [izvirno 14] + [trije zamenjani bajti password=] + a

Vlomilec: Stisnite in šifrirajte odprto besedilo, ki mu je dodano password=b.

strežnik: Dolžina rezultata 18.

Vlomilec: Stisnite in šifrirajte odprto besedilo, ki mu je dodano password=с.

strežnik: Dolžina rezultata 17.

Opombe krekerja: [izvirno 14] + [trije zamenjani bajti password=c]. To predpostavlja, da izvirno odprto besedilo vsebuje niz password=c. To pomeni, da se geslo začne s črko c

Vlomilec: Stisnite in šifrirajte odprto besedilo, ki mu je dodano password=сa.

strežnik: Dolžina rezultata 18.

Opombe krekerja: [izvirno 14] + [trije zamenjani bajti password=с] + a

Vlomilec: Stisnite in šifrirajte odprto besedilo, ki mu je dodano password=сb.

strežnik: Dolžina rezultata 18.

(… Nekaj ​​časa pozneje…)

Vlomilec: Stisnite in šifrirajte odprto besedilo, ki mu je dodano password=со.

strežnik: Dolžina rezultata 17.

Opombe krekerja: [izvirno 14] + [trije zamenjani bajti password=co]. Z uporabo iste logike napadalec sklepa, da se geslo začne s črkami co

In tako naprej, dokler ni obnovljeno celotno geslo.

Bralcu bo oproščeno, če misli, da je to zgolj akademska vaja in da se takšen scenarij napada v resničnem svetu ne bi nikoli zgodil. Žal, kot bomo kmalu videli, je bolje, da ne opustimo kriptografije.

Ranljivosti blagovne znamke: CRIME, POODLE, DROWN

Končno, po podrobnem preučevanju teorije, lahko vidimo, kako se te tehnike uporabljajo v resničnih kriptografskih napadih.

ZLOČIN

Kriptografski napadi: razlaga za zmedene umeČe je napad usmerjen v brskalnik in omrežje žrtve, bodo nekateri lažji, drugi pa težji. Na primer, enostavno je videti promet žrtve: samo sedite z njim v isti kavarni z WiFi. Zaradi tega se potencialnim žrtvam (tj. vsem) na splošno priporoča uporaba šifrirane povezave. Težje bo, a še vedno mogoče, narediti zahteve HTTP v imenu žrtve na katero koli stran tretje osebe (na primer Google). Napadalec mora žrtev zvabiti na zlonamerno spletno stran s skriptom, ki naredi zahtevo. Spletni brskalnik bo samodejno zagotovil ustrezen sejni piškotek.

To se zdi neverjetno. Če je Bob šel k evil.com, ali bi lahko skript na tem mestu od Googla zahteval, da pošlje Bobovo geslo po e-pošti na [email protected]? No, v teoriji ja, v resnici pa ne. Ta scenarij se imenuje napad s ponarejanjem zahtev med spletnimi mesti (Krivotvoritev zahtev na več mestih, CSRF), priljubljen pa je bil okoli sredine 90-ih. Danes če evil.com poskusi ta trik, bo Google (ali katera koli samospoštljiva spletna stran) običajno odgovorila z: »Super, ampak vaš žeton CSRF za to transakcijo bo ... hm ... три триллиона и семь. Prosim ponovite to številko." Sodobni brskalniki imajo nekaj, kar se imenuje "politika istega izvora", pri čemer skripti na mestu A nimajo dostopa do informacij, ki jih pošlje spletno mesto B. Torej skript na evil.com lahko pošilja zahteve na google.com, vendar ne more prebrati odgovorov ali dejansko dokončati transakcije.

Poudariti moramo, da so vse te zaščite brez pomena, če Bob ne uporablja šifrirane povezave. Napadalec lahko preprosto prebere Bobov promet in obnovi Googlov sejni piškotek. S tem piškotkom bo preprosto odprl nov Googlov zavihek, ne da bi zapustil svoj brskalnik, in posnemal Boba, ne da bi naletel nadležne politike istega izvora. A na žalost vlomilca je tega vedno manj. Internet kot celota je že dolgo napovedal vojno nešifriranim povezavam in Bobov odhodni promet je verjetno šifriran, če mu je to všeč ali ne. Poleg tega je bil že od samega začetka izvajanja protokola promet tudi skrčil pred šifriranjem; to je bila običajna praksa za zmanjšanje zakasnitve.

Tukaj pride do izraza ZLOČIN (Compression Ratio Infoleak Made Easy, preprosto puščanje skozi kompresijsko razmerje). Ranljivost sta septembra 2012 razkrila varnostna raziskovalca Juliano Rizzo in Thai Duong. Preverili smo že celotno teoretično osnovo, ki nam omogoča razumeti, kaj so počeli in kako. Napadalec bi lahko prisilil Bobov brskalnik, da pošlje zahteve Googlu in nato posluša odgovore v lokalnem omrežju v stisnjeni, šifrirani obliki. Zato imamo:

Kriptografski napadi: razlaga za zmedene ume

Tukaj napadalec nadzoruje zahtevo in ima dostop do vohača prometa, vključno z velikostjo paketa. Kelseyin izmišljeni scenarij je oživel.

Avtorji CRIME so razumeli teorijo in ustvarili izkoriščanje, ki lahko ukrade sejne piškotke za širok nabor spletnih mest, vključno z Gmailom, Twitterjem, Dropboxom in Githubom. Ranljivost je prizadela večino sodobnih spletnih brskalnikov, zaradi česar so bili izdani popravki, ki so tiho zakopali funkcijo stiskanja v SSL, tako da se sploh ne bi uporabljala. Edini, ki je bil zaščiten pred ranljivostjo, je bil častitljivi Internet Explorer, ki sploh nikoli ni uporabljal stiskanja SSL.

PUDLE

Kriptografski napadi: razlaga za zmedene umeOktobra 2014 je Googlova ekipa za varnost povzročila valove v varnostni skupnosti. Uspelo jim je izkoristiti ranljivost v protokolu SSL, ki je bila popravljena pred več kot desetimi leti.

Izkazalo se je, da medtem ko strežniki poganjajo sijajni novi TLSv1.2, so mnogi pustili podporo za stari SSLv3 za združljivost z Internet Explorerjem 6 nazaj. Govorili smo že o napadih na starejše različice, tako da si lahko predstavljate, kaj se dogaja. Dobro organizirana sabotaža protokola rokovanja in strežniki so pripravljeni na vrnitev na dobri stari SSLv3, kar v bistvu izniči zadnjih 15 let varnostnih raziskav.

Za zgodovinski kontekst, tukaj je kratek povzetek zgodovine SSL do različice 2 od Matthewa Greena:

Transport Layer Security (TLS) je najpomembnejši varnostni protokol na internetu. [..] skoraj vsaka transakcija, ki jo opravite na internetu, je odvisna od TLS. [..] Toda TLS ni bil vedno TLS. Protokol je začel svoje življenje v Netscape Communications imenovan "Secure Sockets Layer" ali SSL. Govori se, da je bila prva različica SSL tako grozna, da so razvijalci zbrali vse izpise kode in jih zakopali na skrivnem odlagališču v Novi Mehiki. Posledično je dejansko prva javno dostopna različica SSL različica SSL 2. Je precej strašljiv in [..] je bil produkt iz sredine 90-ih, ki ga sodobni kriptografi obravnavajo kot "temne dobe kriptografije" Številni najgnusnejši kriptografski napadi, kar jih poznamo danes, še niso bili odkriti. Posledično so bili razvijalci protokola SSLv2 v bistvu prepuščeni sami poti v temi in so se soočili veliko strašnih pošasti - na njihovo žalost in v našo korist, saj so napadi na SSLv2 pustili neprecenljive lekcije za naslednjo generacijo protokolov.

Po teh dogodkih je leta 1996 razočarani Netscape iz nič preoblikoval protokol SSL. Rezultat je bil SSL različice 3, ki odpravil več znanih varnostnih težav svojega predhodnika.

Na srečo vlomilcev "nekaj" ne pomeni "vsi". Na splošno je SSLv3 zagotovil vse potrebne gradnike za začetek napada Vodene. Protokol je uporabljal blokovno šifro načina CBC in nezanesljivo shemo oblazinjenja (to je bilo popravljeno v TLS; zato je potreben napad na znižanje). Če se spomnite sheme oblazinjenja v našem izvirnem opisu napada Vaudenay, je shema SSLv3 zelo podobna.

Toda na žalost za vlomilce »podobno« ne pomeni »enako«. Shema zapolnitve SSLv3 je "N naključnih bajtov, ki jim sledi število N". Poskusite pod temi pogoji izbrati namišljeni blok šifriranega besedila in iti skozi vse korake Vaudenove izvirne sheme: ugotovili boste, da napad uspešno izvleče zadnji bajt iz ustreznega bloka odprtega besedila, vendar ne gre dlje. Dešifriranje vsakega 16. bajta šifriranega besedila je odličen trik, ni pa zmaga.

Soočena z neuspehom se je Googlova ekipa zatekla k skrajni sili: preklopila je na močnejši model grožnje – tistega, ki je bil uporabljen v CRIME. Ob predpostavki, da je napadalec skript, ki se izvaja na zavihku brskalnika žrtve in lahko ekstrahira sejne piškotke, je napad še vedno impresiven. Čeprav je širši model grožnje manj realističen, smo v prejšnjem razdelku videli, da je ta model izvedljiv.

Glede na te zmogljivejše zmogljivosti napadalca se lahko napad zdaj nadaljuje. Upoštevajte, da napadalec ve, kje se v glavi pojavi šifrirani sejni piškotek, in nadzoruje dolžino zahteve HTTP pred njim. Zato lahko manipulira z zahtevo HTTP tako, da je zadnji bajt piškotka poravnan s koncem bloka. Zdaj je ta bajt primeren za dešifriranje. V zahtevo lahko preprosto dodate en znak, predzadnji bajt piškotka pa bo ostal na istem mestu in je primeren za izbiro na enak način. Napad se nadaljuje na ta način, dokler datoteka piškotka ni popolnoma obnovljena. Imenuje se POODLE: Padding Oracle on Downgraded Legacy Encryption.

UTOPITI

Kriptografski napadi: razlaga za zmedene umeKot smo omenili, je imel SSLv3 svoje pomanjkljivosti, vendar je bil bistveno drugačen od svojega predhodnika, saj je bil puščajoči SSLv2 produkt drugega obdobja. Tam lahko prekinete sporočilo na sredini: соглашусь на это только через мой труп spremeniti se v соглашусь на это; odjemalec in strežnik bi se lahko srečala na spletu, vzpostavila zaupanje in izmenjala skrivnosti pred napadalcem, ki bi se nato zlahka izdal za oba. Obstaja tudi težava z izvozno kriptografijo, ki smo jo omenili, ko smo razmišljali o FREAK-u. To sta bili kriptografski Sodoma in Gomora.

Marca 2016 se je skupina raziskovalcev z različnih tehničnih področij zbrala in prišla do osupljivega odkritja: SSLv2 se še vedno uporablja v varnostnih sistemih. Da, napadalci niso mogli več znižati sodobne seje TLS na SSLv2, saj je bila ta luknja zaprta po FREAK in POODLE, vendar se lahko še vedno povežejo s strežniki in sami sprožijo seje SSLv2.

Lahko se vprašate, zakaj nas briga, kaj tam počnejo? Imajo ranljivo sejo, vendar to ne bi smelo vplivati ​​na druge seje ali varnost strežnika – kajne? No, ne povsem. Ja, tako bi moralo biti v teoriji. Ampak ne – ker ustvarjanje SSL certifikatov predstavlja določeno breme, posledično veliko strežnikov uporablja iste certifikate in posledično enake ključe RSA za povezave TLS in SSLv2. Da bi bile stvari še hujše, zaradi napake OpenSSL možnost »Onemogoči SSLv2« v tej priljubljeni izvedbi SSL dejansko ni delovala.

To je omogočilo medprotokolni napad na TLS, imenovan UTOPITI (Dešifriranje RSA z zastarelim in oslabljenim šifriranjem, dešifriranje RSA z zastarelim in oslabljenim šifriranjem). Spomnimo se, da to ni isto kot kratek napad; napadalcu ni treba delovati kot "človek v sredini" in mu ni treba vključiti stranke, da sodeluje v nevarni seji. Napadalci preprosto sami sprožijo nevarno sejo SSLv2 s strežnikom, napadejo šibek protokol in obnovijo strežnikov zasebni ključ RSA. Ta ključ je veljaven tudi za povezave TLS in od te točke naprej nobena količina varnosti TLS ne bo preprečila, da bi bil ogrožen.

Če ga želite zlomiti, potrebujete delujoč napad na SSLv2, ki vam omogoča obnovitev ne le specifičnega prometa, temveč tudi skrivni ključ strežnika RSA. Čeprav je to zapletena nastavitev, so lahko raziskovalci izbrali katero koli ranljivost, ki je bila po SSLv2 popolnoma zaprta. Na koncu so našli primerno možnost: napad Bleichenbacher, ki smo ga omenili prej in ki ga bomo podrobneje razložili v naslednjem članku. SSL in TLS sta zaščitena pred tem napadom, vendar so nekatere naključne funkcije SSL v kombinaciji s kratkimi ključi v izvozni kriptografiji omogočile posebna izvedba DROWN.

V času objave je bilo ranljivost DROWN prizadeta na 25 % najbolj priljubljenih spletnih mest na internetu, napad pa je bilo mogoče izvesti s skromnimi sredstvi, ki so na voljo celo nagajivim osamljenim hekerjem. Pridobivanje strežniškega ključa RSA je zahtevalo osem ur računanja in 440 USD, SSLv2 pa je iz zastarelega postal radioaktiven.

Čakaj, kaj pa Heartbleed?

To ni kriptografski napad v smislu, ki je opisan zgoraj; To je prekoračitev medpomnilnika.

Vzemimo si odmor

Začeli smo z nekaterimi osnovnimi tehnikami: surovo silo, interpolacijo, znižanjem, navzkrižnim protokolom in vnaprejšnjim izračunom. Nato smo si ogledali eno napredno tehniko, morda glavno komponento sodobnih kriptografskih napadov: napad oraklja. Porabili smo kar nekaj časa, da smo to ugotovili - in razumeli smo ne le osnovni princip, ampak tudi tehnične podrobnosti dveh specifičnih izvedb: Vaudenayev napad na šifrirni način CBC in Kelseyjev napad na šifrirne protokole pred stiskanjem.

Pri pregledu napadov na znižanje in predračunanje smo na kratko orisali napad FREAK, ki uporablja obe metodi tako, da se ciljna spletna mesta vrnejo na šibke ključe in nato znova uporabijo iste ključe. Za naslednji članek bomo prihranili (zelo podoben) napad Logjam, ki cilja na algoritme javnih ključev.

Nato smo si ogledali še tri primere uporabe teh načel. Prvič, CRIME in POODLE: dva napada, ki sta se zanašala na zmožnost napadalca, da vstavi poljubno odprto besedilo poleg ciljnega odprtega besedila, nato preuči odzive strežnika in potem, z uporabo metodologije napada Oracle, izkoristi te redke informacije za delno obnovitev odprtega besedila. CRIME je šel po poti Kelseyjevega napada na stiskanje SSL, medtem ko je POODLE namesto tega uporabil različico Vaudenayjevega napada na CBC z enakim učinkom.

Nato smo pozornost usmerili na napad DROWN med protokoli, ki vzpostavi povezavo s strežnikom z uporabo podedovanega protokola SSLv2 in nato obnovi skrivne ključe strežnika z napadom Bleichenbacher. Zaenkrat smo preskočili tehnične podrobnosti tega napada; tako kot Logjam bo moral počakati, dokler ne bomo dobro razumeli kriptosistemov javnih ključev in njihovih ranljivosti.

V naslednjem članku bomo govorili o naprednih napadih, kot so srečanje na sredini, diferencialna kriptoanaliza in rojstnodnevni napadi. Oglejmo si hiter napad na stranske kanale, nato pa preidimo na zabavni del: kriptosisteme z javnim ključem.

Vir: www.habr.com

Dodaj komentar