Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Kui kuulete sõna "krüptograafia", mäletavad mõned inimesed oma WiFi-parooli, oma lemmikveebisaidi aadressi kõrval olevat rohelist tabalukku ja seda, kui raske on kellegi teise meilile pääseda. Teised meenutavad viimaste aastate haavatavusi koos kõnekate lühendite (DROWN, FREAK, POODLE...), stiilsete logode ja hoiatusega brauserit kiiresti värskendada.

Krüptograafia hõlmab kõike, kuid sisuliselt Teises. Asi on selles, et lihtsa ja keerulise vahel on peen piir. Mõningaid asju on lihtne teha, kuid raske uuesti kokku panna, näiteks muna murda. Muid asju on lihtne teha, kuid raske tagasi saada, kui mõni väike, oluline ja ülioluline osa on puudu: näiteks lukustatud ukse avamine, kui "oluline osa" on võti. Krüptograafia uurib neid olukordi ja seda, kuidas neid praktikas kasutada.

Krüptograafiliste rünnakute kogu on viimastel aastatel muutunud toretsevate logode loomaaiaks, mis on täidetud teadustööde valemitega ja tekitanud üldise sünge tunde, et kõik on katki. Kuid tegelikult põhinevad paljud rünnakud mõnel üldisel põhimõttel ja lõputud leheküljed valemeid on sageli taandatud lihtsalt mõistetavatele ideedele.

Selles artiklite sarjas vaatleme erinevaid krüptograafiliste rünnakute tüüpe, rõhutades põhiprintsiipe. Üldiselt ja mitte täpselt selles järjekorras, kuid käsitleme järgmist.

  • Põhistrateegiad: toores jõud, sagedusanalüüs, interpoleerimine, alandamine ja ristprotokollid.
  • Kaubamärgiga haavatavused: FREAK, KRIMI, PUUDL, UPPUJA, Logjam.
  • Täiustatud strateegiad: oraakli rünnakud (Vodenet rünnak, Kelsey rünnak); meet-in-the-middle meetod, sünnipäeva rünnak, statistiline eelarvamus (diferentsiaalkrüptoanalüüs, integraalne krüptoanalüüs jne).
  • Külgkanali rünnakud ja nende lähisugulased, rikete analüüsi tehnikad.
  • Rünnakud avaliku võtme krüptograafia vastu: kuupjuur, saade, seotud sõnum, Coppersmith rünnak, Pohlig-Hellmani algoritm, numbrisõel, Wieneri rünnak, Bleichenbacheri rünnak.

See konkreetne artikkel hõlmab ülaltoodud materjali kuni Kelsey rünnakuni.

Põhistrateegiad

Järgmised rünnakud on selles mõttes lihtsad, et neid saab peaaegu täielikult seletada ilma suuremate tehniliste üksikasjadeta. Selgitame igat tüüpi rünnakuid kõige lihtsamate sõnadega, laskumata keerulistesse näidetesse või täpsematesse kasutusjuhtudesse.

Mõned neist rünnakutest on suures osas aegunud ja neid ei ole kasutatud juba aastaid. Teised on vanamehed, kes 21. sajandil ikka veel regulaarselt hiilivad pahaaimamatute krüptosüsteemide arendajate juurde. Kaasaegse krüptograafia ajastut võib pidada alguseks IBM DES-i – esimese šifri, mis pidas vastu kõikidele selle nimekirja rünnakutele – tulekuga.

Lihtne toore jõud

Krüptograafilised rünnakud: seletus segaduses olevatele meelteleKrüpteerimisskeem koosneb kahest osast: 1) krüpteerimisfunktsioon, mis võtab võtmega kombineeritud sõnumi (lihtteksti) ja seejärel loob krüpteeritud sõnumi – šifriteksti; 2) dekrüpteerimisfunktsioon, mis võtab šifri ja võtme ning toodab lihtteksti. Nii krüptimist kui ka dekrüpteerimist peab võtmega olema lihtne arvutada ja ilma selleta raske arvutada.

Oletame, et näeme šifriteksti ja proovime seda ilma täiendava teabeta dekrüpteerida (seda nimetatakse ainult šifriteksti rünnakuks). Kui leiame kuidagi võluväel õige võtme, saame hõlpsalt kontrollida, kas see on tõesti õige, kui tulemuseks on mõistlik teade.

Pange tähele, et siin on kaks kaudset eeldust. Esiteks teame, kuidas dekrüpteerida, st kuidas krüptosüsteem töötab. See on krüptograafia arutamisel tavaline eeldus. Šifri juurutamise üksikasjade varjamine ründajate eest võib tunduda täiendava turvameetmena, kuid kui ründaja need üksikasjad selgeks saab, kaob see lisaturvalisus vaikselt ja pöördumatult. Niimoodi Kerchhoffsi põhimõte: Süsteemi sattumine vaenlase kätte ei tohiks tekitada ebamugavusi.

Teiseks eeldame, et õige võti on ainus võti, mis viib mõistliku dekrüpteerimiseni. See on ka mõistlik oletus; see on rahul, kui šifreeritud tekst on võtmest palju pikem ja loetav. Tavaliselt juhtub see reaalses maailmas, v.a tohutud ebapraktilised võtmed või muud segadused, mis on parem kõrvale jätta (kui teile ei meeldi, et oleme selgituse vahele jätnud, vaadake teoreemi 3.8 siin).

Arvestades ülaltoodut, tekib strateegia: kontrollige kõiki võimalikke võtmeid. Seda nimetatakse tooreks jõuks ja selline rünnak toimib kindlasti kõigi praktiliste šifrite vastu – lõpuks. Näiteks piisab häkkimiseks toore jõu kasutamisest Caesari šifr, iidne šifr, mille võtmeks on üks tähestiku täht, mis tähendab veidi üle 20 võimaliku võtme.

Kahjuks on krüptoanalüütikute jaoks võtme suuruse suurendamine hea kaitse toore jõu eest. Võtme suuruse kasvades suureneb võimalike võtmete arv plahvatuslikult. Kaasaegsete võtmesuuruste puhul on lihtne toore jõud täiesti ebapraktiline. Et mõista, mida me mõtleme, võtame 2019. aasta keskpaiga seisuga teadaolevalt kiireima superarvuti: Summit IBMilt, tippjõudlusega umbes 1017 toimingut sekundis. Tänapäeval on tüüpiline võtme pikkus 128 bitti, mis tähendab 2128 võimalikku kombinatsiooni. Kõigi võtmete otsimiseks vajab Summiti superarvuti aega, mis on ligikaudu 7800 korda universumi vanusest pikem.

Kas toorest jõudu tuleks pidada ajalooliseks kurioosumiks? Üldse mitte: see on vajalik koostisosa krüptoanalüüsi kokaraamatus. Harva on šifrid nii nõrgad, et neid saab murda vaid nutika rünnakuga, ilma ühel või teisel määral jõudu kasutamata. Paljud edukad häkkimised kasutavad algoritmilist meetodit, et kõigepealt nõrgestada sihtšifrit ja seejärel sooritada jõhkra jõuga rünnak.

Sagedusanalüüs

Krüptograafilised rünnakud: seletus segaduses olevatele meelteleEnamik tekste ei ole jaburad. Näiteks ingliskeelsetes tekstides on palju tähti 'e' ja artikleid 'the'; binaarfailides on teabetükkide täidisena palju nullbaiti. Sagedusanalüüs on igasugune rünnak, mis seda asjaolu ära kasutab.

Selle rünnaku suhtes haavatava šifri kanooniline näide on lihtne asendusšifr. Selles šifris on võtmeks tabel, kus on kõik asendatud tähed. Näiteks "g" asendatakse "h"-ga, "o" j-ga, nii et sõna "go" muutub "hj". Seda šifrit on raske toorelt jõuga kasutada, kuna võimalikke otsingutabeleid on nii palju. Kui olete matemaatikast huvitatud, on efektiivne võtme pikkus umbes 88 bitti: see on nii
Krüptograafilised rünnakud: seletus segaduses olevatele meeltele. Kuid sagedusanalüüs saab tavaliselt töö kiiresti tehtud.

Vaatleme järgmist šifriteksti, mida on töödeldud lihtsa asendusšifriga:

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

Alates Y esineb sageli, sealhulgas paljude sõnade lõpus, võime tinglikult eeldada, et see on täht e:

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

Paar XD korratakse mitme sõna alguses. Eelkõige viitab kombinatsioon XDeLe selgelt sellele sõnale these või there, nii et jätkame:

TheLe ALe UGLe thWNKE WN HEAJeN ANF EALth DGLAtWG kui ALe FleAUt GR WN OGQL ZDWBGEGZDO

Oletame veel, et L vastab r, A - a ja nii edasi. Tõenäoliselt võtab see paar katset, kuid võrreldes täieliku toore jõu rünnakuga taastab see rünnak algse teksti kiiresti:

horatio taevas ja maas on rohkem asju, kui teie filosoofias unistatakse

Mõne jaoks on selliste “krüptogrammide” lahendamine põnev hobi.

Sagedusanalüüsi idee on põhjapanevam, kui esmapilgul tundub. Ja see kehtib palju keerukamate šifrite kohta. Läbi ajaloo on mitmesugused šifrilahendused püüdnud sellisele rünnakule vastu seista, kasutades "polüalfabeetilist asendust". Siin muudetakse krüpteerimisprotsessi käigus tähtede asendustabelit keerukatel, kuid etteaimatavatel viisidel, mis sõltuvad võtmest. Kõiki neid šifreid peeti korraga raskeks murda; ja ometi alistas tagasihoidlik sagedusanalüüs lõpuks need kõik.

Ajaloo kõige ambitsioonikam polüalfabeetiline šifr ja ilmselt ka kuulsaim oli Teise maailmasõja Enigma šifr. Võrreldes eelkäijatega oli see suhteliselt keeruline, kuid pärast rasket tööd murdsid Briti krüptoanalüütikud selle sagedusanalüüsi abil lahti. Loomulikult ei suutnud nad välja töötada sellist elegantset rünnakut, nagu ülal näidatud; nad pidid võrdlema teadaolevaid lihtteksti ja salateksti paare (nn "plaintext attack"), provotseerides isegi Enigma kasutajaid teatud sõnumeid krüpteerima ja tulemust analüüsima ("valitud lihtteksti rünnak"). Kuid see ei teinud lüüasaanud vaenlase armeede ja uppunud allveelaevade saatust sugugi lihtsamaks.

Pärast seda triumfi kadus sagedusanalüüs krüptoanalüüsi ajaloost. Tänapäeva digiajastu šifrid on loodud töötama bittide, mitte tähtedega. Veelgi olulisem on see, et need šifrid loodi tumeda arusaamaga sellest, mida hiljem hakati nimetama Schneieri seadus: igaüks saab luua krüpteerimisalgoritmi, mida ta ise ei saa murda. Krüpteerimissüsteemi jaoks sellest ei piisa tundus raske: oma väärtuse tõestamiseks peavad paljud krüptoanalüütikud läbima selle halastamatu turvakontrolli, kes annavad endast parima, et šifri lahti murda.

Esialgsed arvutused

Krüptograafilised rünnakud: seletus segaduses olevatele meelteleVõtke hüpoteetiline linn Precom Heights, kus elab 200 000 inimest. Igas linnas asuvas kodus on väärtasju keskmiselt 30 000 dollari väärtuses, kuid mitte rohkem kui 50 000 dollari väärtuses. Precomi turvaturu monopoliseerib ACME Industries, mis toodab legendaarseid Coyote™ klassi ukselukke. Ekspertanalüüsi järgi suudab Coyote-klassi luku lahti murda vaid väga keeruline hüpoteetiline masin, mille loomine nõuab umbes viis aastat ja 50 000 dollari suurust investeeringut. Kas linn on turvaline?

Suure tõenäosusega ei. Lõpuks ilmub välja üsna ambitsioonikas kurjategija. Ta arutleb järgmiselt: „Jah, mul tekivad suured eelkulud. Viis aastat kannatlikku ootamist ja 50 000 dollarit. Aga kui olen lõpetanud, on mul juurdepääs kogu selle linna rikkus. Kui ma oma kaarte õigesti mängin, tasub see investeering end mitmekordselt ära.

Sama kehtib ka krüptograafias. Rünnakud konkreetse šifri vastu on läbinud halastamatu tasuvusanalüüsi. Kui suhe on soodne, siis rünnakut ei toimu. Kuid rünnakud, mis toimivad korraga paljude potentsiaalsete ohvrite vastu, tasuvad end peaaegu alati ära. Sel juhul on parim kavandamispraktika eeldada, et need said alguse esimesest päevast. Meil on sisuliselt Murphy seaduse krüptograafiline versioon: "Kõik, mis võib tegelikult süsteemi rikkuda, rikub süsteemi."

Eelarvutusründe suhtes haavatava krüptosüsteemi lihtsaim näide on konstantse võtmeta šifr. See oli nii Caesari šifr, mis lihtsalt nihutab tähestiku iga tähte kolm tähte ettepoole (tabel on silmustega, seega krüpteeritakse tähestiku viimane täht kolmandaks). Siin tuleb taas mängu Kerchhoffi põhimõte: kui süsteemi sisse häkitakse, häkitakse see igaveseks.

Kontseptsioon on lihtne. Isegi algaja krüptosüsteemi arendaja tunneb tõenäoliselt ohu ära ja valmistub vastavalt. Krüptograafia arengut vaadates olid sellised rünnakud enamiku šifrite jaoks sobimatud, alates Caesari šifri esimestest täiustatud versioonidest kuni mitmetähestikuliste šifrite allakäiguni. Sellised rünnakud naasesid alles krüptograafia kaasaegse ajastu tulekuga.

See tagasitulek on tingitud kahest tegurist. Esiteks ilmusid lõpuks välja piisavalt keerulised krüptosüsteemid, mille ärakasutamise võimalus pärast häkkimist polnud ilmne. Teiseks sai krüptograafia nii laialt levinud, et miljonid võhikud langetasid iga päev otsuseid selle kohta, kus ja milliseid krüptograafia osi taaskasutada. Kulus veidi aega, enne kui eksperdid riskidest aru said ja häirekella tõstsid.

Pidage meeles eelarvutusrünnakut: artikli lõpus vaatleme kahte päriselust pärit krüptograafilist näidet, kus see mängis olulist rolli.

Interpoleerimine

Siin on kuulus detektiiv Sherlock Holmes, kes sooritab interpolatsioonirünnaku õnnetule dr Watsonile:

Ma aimasin kohe, et olete Afganistanist tulnud... Minu mõttekäik oli järgmine: „See mees on tüübilt arst, aga tal on sõjaline kandvus. Niisiis, sõjaväearst. Ta saabus just troopikast – ta nägu on tume, kuid see pole tema naha loomulik toon, kuna randmed on palju valgemad. Nägu on räsitud – ilmselgelt on ta palju põdenud ja põdenud haigusi. Ta sai vasakusse käest haavata – hoiab seda liikumatult ja veidi ebaloomulikult. Kus troopikas võis inglise sõjaväearst raskusi kannatada ja haavata saada? Muidugi, Afganistanis." Kogu mõttekäik ei võtnud sekunditki. Ja nii ma ütlesin, et tulite Afganistanist, ja olite üllatunud.

Holmes võis igast tõendist eraldi välja võtta väga vähe teavet. Ta jõudis järeldusele ainult neid kõiki koos kaaludes. Interpolatsioonirünnak toimib sarnaselt, uurides samast võtmest tulenevaid teadaolevaid lihtteksti ja šifreeritud teksti paare. Igast paarist eraldatakse individuaalsed tähelepanekud, mis võimaldavad teha üldise järelduse võtme kohta. Kõik need järeldused on ebamäärased ja tunduvad kasutud, kuni saavutavad ootamatult kriitilise massi ja viivad ainsa võimaliku järelduseni: ükskõik kui uskumatu see ka poleks, peab see tõsi olema. Pärast seda kas võti avalikustatakse või dekrüpteerimisprotsess muutub nii rafineerituks, et seda saab kopeerida.

Illustreerime lihtsa näitega, kuidas interpolatsioon toimib. Oletame, et tahame lugeda oma vaenlase Bobi isiklikku päevikut. Ta krüpteerib kõik oma päevikus olevad numbrid lihtsa krüptosüsteemi abil, mille kohta sai teada ajakirja "A Mock of Cryptography" kuulutusest. Süsteem töötab järgmiselt: Bob valib kaks talle meeldivat numbrit: Krüptograafilised rünnakud: seletus segaduses olevatele meeltele и Krüptograafilised rünnakud: seletus segaduses olevatele meeltele. Nüüdsest suvalise numbri krüpteerimiseks Krüptograafilised rünnakud: seletus segaduses olevatele meeltele, see arvutab Krüptograafilised rünnakud: seletus segaduses olevatele meeltele. Näiteks kui Bob valis Krüptograafilised rünnakud: seletus segaduses olevatele meeltele и Krüptograafilised rünnakud: seletus segaduses olevatele meeltele, siis number Krüptograafilised rünnakud: seletus segaduses olevatele meeltele krüpteeritakse kui Krüptograafilised rünnakud: seletus segaduses olevatele meeltele.

Ütleme nii, et 28. detsembril märkasime, et Bob kratsis midagi oma päevikusse. Kui ta on lõpetanud, võtame selle vaikselt kätte ja vaatame viimast sissekannet:

Дата: 235/520

Kallis päevik,

Täna oli hea päev. Läbi 64 täna on mul kohting Alisaga, kes elab korteris 843. Ma tõesti arvan, et ta võib olla 26!

Kuna oleme väga tõsiselt Bobi jälgimise suhtes tema kohtingul (selle stsenaariumi kohaselt oleme mõlemad 15-aastased), on oluline teada nii kuupäeva kui ka Alice'i aadressi. Õnneks märkame, et Bobi krüptosüsteem on interpolatsioonirünnaku suhtes haavatav. Me ei pruugi teada Krüptograafilised rünnakud: seletus segaduses olevatele meeltele и Krüptograafilised rünnakud: seletus segaduses olevatele meeltele, kuid me teame tänast kuupäeva, seega on meil kaks lihtteksti-šifriteksti paari. Nimelt me ​​teame seda Krüptograafilised rünnakud: seletus segaduses olevatele meeltele sisse krüpteeritud Krüptograafilised rünnakud: seletus segaduses olevatele meelteleJa Krüptograafilised rünnakud: seletus segaduses olevatele meeltele - sisse Krüptograafilised rünnakud: seletus segaduses olevatele meeltele. Selle paneme kirja:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Kuna oleme 15-aastased, siis teame juba kahe tundmatuga võrrandisüsteemi, mille leidmiseks antud olukorras piisab Krüptograafilised rünnakud: seletus segaduses olevatele meeltele и Krüptograafilised rünnakud: seletus segaduses olevatele meeltele ilma probleemideta. Iga lihtteksti ja salateksti paar seab Bobi võtmele piirangu ja need kaks piirangut koos on piisavad võtme täielikuks taastamiseks. Meie näites on vastus Krüptograafilised rünnakud: seletus segaduses olevatele meeltele и Krüptograafilised rünnakud: seletus segaduses olevatele meeltele (at Krüptograafilised rünnakud: seletus segaduses olevatele meeltele Krüptograafilised rünnakud: seletus segaduses olevatele meeltele, nii et 26 päevikus vastab sõnale "üks", see tähendab "sama" - u. sõidurada).

Interpolatsioonirünnakud ei piirdu muidugi selliste lihtsate näidetega. Iga krüptosüsteem, mis taandub hästi mõistetavaks matemaatiliseks objektiks ja parameetrite loendiks, on interpolatsioonirünnaku ohus – mida arusaadavam objekt, seda suurem on risk.

Uustulnukad kurdavad sageli, et krüptograafia on "kunst kujundada asju võimalikult inetult". Tõenäoliselt on suures osas süüdi interpolatsioonirünnakud. Bob võib kasutada elegantset matemaatilist kujundust või hoida oma kohtingut Alice'iga privaatselt – aga kahjuks ei saa te seda tavaliselt mõlemat pidi teha. See saab täiesti selgeks, kui jõuame lõpuks avaliku võtme krüptograafia teemani.

Protokolliülene/alla versioonile üleminek

Krüptograafilised rünnakud: seletus segaduses olevatele meelteleFilmis Now You See Me (2013) üritab rühm illusioniste korrumpeerunud kindlustusmagnaat Arthur Tresslerilt kogu tema varanduse välja petta. Arthuri pangakontole juurdepääsu saamiseks peavad illusionistid kas andma tema kasutajanime ja parooli või sundima teda isiklikult panka ilmuma ja skeemis osalema.

Mõlemad võimalused on väga rasked; Poisid on harjunud laval esinema, mitte luureoperatsioonidel osalema. Seega valivad nad kolmanda võimaliku variandi: nende kaasosaline helistab panka ja teeskleb Arthurit. Pank küsib isikusamasuse kontrollimiseks mitmeid küsimusi, näiteks onu nime ja esimese lemmiklooma nime; meie kangelased ette nad võtavad selle teabe Arthurilt hõlpsalt välja, kasutades nutikat sotsiaalset manipuleerimist. Sellest hetkest alates pole suurepärane parooliturvalisus enam oluline.

(Vastavalt linnalegendile, mida oleme isiklikult kontrollinud ja kontrollinud, kohtas krüptograaf Eli Beaham kord pangatellerit, kes nõudis turvaküsimuse seadmist. Kui teller küsis oma emapoolse vanaema nime, hakkas Beaham dikteerima: "Pealinn X, väike y, kolm...").

Sama on krüptograafias, kui sama vara kaitsmiseks kasutatakse paralleelselt kahte krüptoprotokolli ja üks on teisest palju nõrgem. Saadud süsteem muutub haavatavaks protokollidevahelise rünnaku suhtes, kus rünnatakse nõrgemat protokolli, et jõuda auhinnani ilma tugevamat puudutamata.

Mõnel keerulisel juhul ei piisa lihtsalt nõrgema protokolli abil serveriga ühenduse võtmisest, vaid selleks on vaja seadusliku kliendi tahtmatut osalemist. Seda saab korraldada nn alandamise rünnaku abil. Selle rünnaku mõistmiseks oletame, et meie illusionistidel on keerulisem ülesanne kui filmis. Oletame, et pangatöötaja (kassapidaja) ja Arthur puutusid kokku ettenägematute asjaoludega, mille tulemusena tekkis järgmine dialoog:

Vargas: Tere? See on Arthur Tressler. Soovin oma parooli lähtestada.

Kassapidaja: Suurepärane. Palun vaadake oma isiklikku salakoodiraamatut, lk 28, sõna 3. Kõik järgmised sõnumid krüpteeritakse, kasutades võtmena seda konkreetset sõna. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…

Vargas: Hei, hei, oota, oota. Kas see on tõesti vajalik? Kas me ei võiks rääkida nagu tavalised inimesed?

Kassapidaja: Ma ei soovita seda teha.

Vargas: Ma lihtsalt... vaata, mul oli halb päev, eks? Olen VIP-klient ja mul pole tuju neid tobedaid koodiraamatuid kaevuda.

Kassapidaja: Hästi. Kui te nõuate, hr Tressler. Mida sa tahad?

Vargas: Palun, ma tahaksin annetada kogu oma raha Arthur Tressleri riiklikule ohvrifondile.

(Paus).

Kassapidaja: Kas nüüd on selge. Suurte tehingute jaoks sisestage oma PIN-kood.

Vargas: Minu Mis?

Kassapidaja: Teie isiklikul soovil nõuavad selle suurusega tehingud suurte tehingute jaoks PIN-koodi. See kood anti teile konto avamisel.

Vargas:... Ma kaotasin selle. Kas see on tõesti vajalik? Kas te ei saa tehingut lihtsalt heaks kiita?

Kassapidaja: Ei. Vabandust, hr Tressler. Jällegi, see on turvameede, mida te palusite. Soovi korral saame sinu postkasti saata uue PIN-koodi.

Meie kangelased lükkavad operatsiooni edasi. Nad kuulavad pealt mitmeid Tressleri suuri tehinguid, lootes kuulda PIN-koodi; aga iga kord läheb jutt kodeeritud jaburaks, enne kui midagi huvitavat öeldakse. Lõpuks, ühel heal päeval, pannakse plaan teoks. Nad ootavad kannatlikult hetke, mil Tressler peab telefoni teel suure tehingu tegema, ta liinile saab ja siis...

Tressler: Tere. Soovin sooritada kaugtehingu, palun.

Kassapidaja: Suurepärane. Palun vaadake oma isiklikku salakoodiraamatut, lehte...

(Vargas vajutab nuppu; kassapidaja hääl muutub arusaamatuks müraks).

Kassapidaja: - #@$#@$#*@$$@#* krüpteeritakse selle sõna võtmega. AAAYRR PLRQRZ MMNJK LOJBAN…

Tressler: Vabandust, ma ei saanud päris hästi aru. Jälle? mis lehel? Mis sõna?

Kassapidaja: See on leht @#$@#*$)#*#@()#@$(#@*$(#@*).

Tressler: Mis?

Kassapidaja: Sõna number kakskümmend @$#@$#%#$.

Tressler: Tõsiselt! Aitab juba! Teie ja teie turvaprotokoll olete mingi tsirkus. Ma tean, et saate minuga normaalselt rääkida.

Kassapidaja: Ma ei soovita…

Tressler: Ja ma ei soovita teil oma aega raisata. Ma ei taha sellest rohkem kuulda enne, kui olete oma telefoniliini probleemid lahendanud. Kas me saame selle tehingu lõpule viia või mitte?

Kassapidaja:… Jah. Hästi. Mida sa tahad?

Tressler: Soovin kanda 20 000 dollarit Lord Business Investmentsile, konto number...

Kassapidaja: Üks minut, palun. See on suur asi. Suurte tehingute jaoks sisestage oma PIN-kood.

Tressler: Mida? Oh täpselt. 1234.

Siin on rünnak allapoole. Nõrgemat protokolli "lihtsalt rääkige otse" nägi ette valik hädaolukorras. Ja ometi siin me oleme.

Võiksite mõelda, kes terve mõistusega kavandaks tõelise "seif, kuni küsitakse teisiti" süsteemi, nagu ülalkirjeldatud. Kuid nii nagu väljamõeldud pank võtab riske klientide hoidmiseks, kellele krüptograafia ei meeldi, kalduvad süsteemid üldiselt sageli turvalisuse suhtes ükskõiksete või isegi lausa vaenulike nõuete poole.

Täpselt nii juhtus SSLv2 protokolliga 1995. aastal. USA valitsus on juba pikka aega hakanud krüptograafiat pidama relvaks, mida on kõige parem välis- ja sisevaenlastest eemal hoida. Kooditükid kiideti Ameerika Ühendriikidest eksportimiseks eraldi heaks, sageli tingimusel, et algoritmi nõrgendati tahtlikult. Populaarseima brauseri Netscape Navigatori arendaja Netscape sai SSLv2 jaoks loa ainult oma olemuselt haavatava 512-bitise RSA-võtmega (ja 40-bitise RC4 jaoks).

Aastatuhande lõpuks olid reeglid leebemad ja juurdepääs kaasaegsele krüpteerimisele muutus laialdaselt kättesaadavaks. Kliendid ja serverid on aga aastaid toetanud nõrgenenud "ekspordi" krüptograafiat sama inertsuse tõttu, mis toetab iga pärandsüsteemi. Kliendid uskusid, et nad võivad kokku puutuda serveriga, mis midagi muud ei toeta. Sama tegid ka serverid. Muidugi nõuab SSL-protokoll, et kliendid ja serverid ei tohiks kunagi kasutada nõrka protokolli, kui on saadaval parem. Kuid sama eeldus kehtis Tressleri ja tema panga kohta.

See teooria leidis tee kahes kõrgetasemelises rünnakus, mis raputasid 2015. aastal SSL-protokolli turvalisust. Mõlemad avastasid Microsofti teadlased ja INRIA. Esmalt avalikustati veebruaris FREAK-i rünnaku üksikasjad, millele järgnes kolm kuud hiljem teine ​​sarnane rünnak nimega Logjam, millest räägime lähemalt, kui liigume edasi avaliku võtmega krüptograafia rünnakute juurde.

Krüptograafilised rünnakud: seletus segaduses olevatele meelteleHaavatavus FREAK (tuntud ka kui "Smack TLS") tuli ilmsiks, kui teadlased analüüsisid TLS-i kliendi/serveri rakendusi ja avastasid uudishimuliku vea. Kui nendes teostustes klient isegi ei palu kasutada nõrka ekspordikrüptograafiat, kuid server vastab ikkagi selliste võtmetega, ütleb klient "Oh well" ja lülitub nõrgale šifrikomplektile.

Tol ajal peeti ekspordi krüptograafiat laialdaselt aegunuks ja piiramatuks, nii et rünnak oli täielik šokk ja mõjutas paljusid olulisi domeene, sealhulgas Valge Maja, IRSi ja NSA saite. Veelgi hullem on see, et paljud haavatavad serverid optimeerisid jõudlust, kasutades samu võtmeid uuesti, selle asemel, et luua iga seansi jaoks uusi. See võimaldas pärast protokolli alandamisel sooritada arvutuseelne rünnak: ühe võtme lahtimurdmine jäi suhteliselt kulukaks (avaldamise hetkel 100 dollarit ja 12 tundi), kuid ühenduse ründamise praktiline kulu vähenes oluliselt. Piisab, kui valida serveri võti üks kord ja sellest hetkest alates kõigi järgnevate ühenduste jaoks krüpteering lahti murda.

Ja enne kui edasi liigume, tuleb mainida ühte arenenud rünnakut...

Oracle'i rünnak

Krüptograafilised rünnakud: seletus segaduses olevatele meelteleMoxie Marlinspike tuntud kui platvormideülese krüptosõnumirakenduse Signal isa; aga meile isiklikult meeldib üks tema vähemtuntud uuendustest - krüptograafilise hukatuse põhimõte (Krüptograafiline hukatuse põhimõte). Veidi parafraseerides võime öelda järgmist: "Kui protokoll toimib mis tahes sooritab potentsiaalselt pahatahtlikust allikast pärineva sõnumiga krüptograafilise toimingu ja käitub olenevalt tulemusest erinevalt, on see hukule määratud. Või teravamal kujul: "Ärge võtke vaenlaselt teavet töötlemiseks ja kui peate, siis ärge näidake vähemalt tulemust."

Jätame kõrvale puhvri ületäitumised, käsusüstid jms; need jäävad sellest arutelust välja. "Hukuprintsiibi" rikkumine toob kaasa tõsiseid krüptograafiahäkke, kuna protokoll käitub täpselt ootuspäraselt.

Näitena võtame haavatava asendusšifriga väljamõeldud kujunduse ja demonstreerime seejärel võimalikku rünnakut. Kuigi oleme juba näinud rünnakut asendusšifri vastu, kasutades sagedusanalüüsi, pole see lihtsalt "teine ​​viis sama šifri purustamiseks". Vastupidi, oraaklirünnakud on palju kaasaegsem leiutis, mis on rakendatav paljudes olukordades, kus sagedusanalüüs ebaõnnestub, ja me näeme selle demonstratsiooni järgmises jaotises. Siin valitakse lihtne šifr ainult selleks, et näide oleks selgem.

Nii et Alice ja Bob suhtlevad lihtsa asendusšifri abil, kasutades ainult neile teadaolevat võtit. Sõnumite pikkuse suhtes on nad väga ranged: need on täpselt 20 tähemärgi pikkused. Seega leppisid nad kokku, et kui keegi soovib saata lühemat sõnumit, peab ta lisama sõnumi lõppu fiktiivse teksti, et see oleks täpselt 20 tähemärgi pikkune. Pärast mõningast arutelu otsustasid nad, et aktsepteerivad ainult järgmisi näivaid tekste: a, bb, ccc, dddd jne. Seega on teada mis tahes vajaliku pikkusega näivtekst.

Kui Alice või Bob saab sõnumi, kontrollivad nad kõigepealt, kas sõnum on õige pikkusega (20 tähemärki) ja järelliide on õige näivtekst. Kui see nii ei ole, vastavad nad vastava veateatega. Kui teksti pikkus ja näivtekst on korras, loeb adressaat sõnumi ise ja saadab krüpteeritud vastuse.

Rünnaku ajal kehastab ründaja Bobi ja saadab Alice'ile võltssõnumeid. Sõnumid on täielik jama – ründajal pole võtit ja seetõttu ei saa ta sisulist sõnumit võltsida. Kuid kuna protokoll rikub hukatuse põhimõtet, võib ründaja ikkagi Alice'i lõksu püüda avaldada põhiteavet, nagu allpool näidatud.

Vargas: PREWF ZHJKL MMMN. LA

Alice: Vale näiv tekst.

Vargas: PREWF ZHJKL MMMN. LB

Alice: Vale näiv tekst.

Vargas: PREWF ZHJKL MMMN. LC

Alice: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

Sissemurdjal pole aimugi, mida Alice just ütles, kuid märgib, et sümbol C peab sobima a, kuna Alice võttis näiva teksti vastu.

Vargas: REWF ZHJKL MMMN. LAA

Alice: Vale näiv tekst.

Vargas: REWF ZHJKL MMMN. LBB

Alice: Vale näiv tekst.

Pärast mitmeid katseid...

Vargas: REWF ZHJKL MMMN. LGG

Alice: Vale näiv tekst.

Vargas: REWF ZHJKL MMMN. LHH

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

Jällegi pole ründajal aimugi, mida Alice just ütles, kuid märgib, et H peab vastama b-le, kuna Alice võttis näiva teksti vastu.

Ja nii edasi, kuni ründaja teab iga tegelase tähendust.

Esmapilgul meenutab meetod valitud lihttekstirünnakut. Lõpuks valib ründaja šifritekstid ja server töötleb neid kuulekalt. Peamine erinevus, mis muudab need rünnakud reaalses maailmas elujõuliseks, on see, et ründaja ei vaja juurdepääsu tegelikule ärakirjale – piisab serveri vastusest, isegi sellisest kahjutust nagu „Vale näiv tekst”.

Kuigi see konkreetne rünnak on õpetlik, ärge olge liialt kinni "näivteksti" skeemi, konkreetse kasutatava krüptosüsteemi või ründaja saadetud sõnumite täpse jada spetsiifikaga. Põhiidee seisneb selles, kuidas Alice reageerib lihtteksti omadustest lähtuvalt erinevalt ja teeb seda ilma kontrollimata, et vastav šifreeritud tekst pärines tegelikult usaldusväärselt osapoolelt. Seega lubab Alice ründajal oma vastustest salajase teabe välja pigistada.

Selles stsenaariumis saab palju muuta. Sümbolid, millele Alice reageerib, või tema käitumise erinevus või isegi kasutatav krüptosüsteem. Kuid põhimõte jääb samaks ja rünnak tervikuna jääb ühel või teisel kujul elujõuliseks. Selle ründe põhiteostus aitas avastada mitmeid turvavigu, mida me lähiajal vaatleme; kuid kõigepealt tuleb õppida mõned teoreetilised õppetunnid. Kuidas kasutada seda fiktiivset "Alice'i skripti" rünnakus, mis võib töötada tõelise kaasaegse šifri peal? Kas see on isegi teoreetiliselt võimalik?

1998. aastal vastas Šveitsi krüptograaf Daniel Bleichenbacher sellele küsimusele jaatavalt. Ta demonstreeris konkreetse sõnumiskeemi abil oraakli rünnakut laialdaselt kasutatavale avaliku võtmega krüptosüsteemile RSA. Mõnes RSA-rakenduses vastab server erinevate veateadetega olenevalt sellest, kas tavatekst vastab skeemile või mitte; sellest piisas rünnaku läbiviimiseks.

Neli aastat hiljem, 2002. aastal, demonstreeris prantsuse krüptograaf Serge Vaudenay oraaklirünnakut, mis oli peaaegu identne ülaltoodud Alice'i stsenaariumis kirjeldatuga – välja arvatud see, et fiktiivse šifri asemel purustas ta terve auväärse klassi kaasaegseid šifreid, mida inimesed tegelikult kasutavad. Eelkõige on Vaudenay rünnak suunatud fikseeritud sisendsuurusega šifritele ("plokišifrid"), kui neid kasutatakse niinimetatud "CBC krüpteerimisrežiimis" ja teatud populaarse polsterdusskeemiga, mis on põhimõtteliselt samaväärne Alice'i stsenaariumi omaga.

Samuti 2002. aastal Ameerika krüptograaf John Kelsey - kaasautor Kaksik — pakkus välja mitmesuguseid oraaklirünnakuid süsteemidele, mis sõnumeid tihendavad ja seejärel krüpteerivad. Kõige tähelepanuväärsem neist oli rünnak, mis kasutas ära asjaolu, et sageli on võimalik šifreeritud teksti pikkusest järeldada lihtteksti algset pikkust. Teoreetiliselt võimaldab see oraakli rünnakut, mis taastab algse tavateksti osad.

Allpool anname Vaudenay ja Kelsey rünnakute üksikasjalikuma kirjelduse (Bleichenbacheri rünnakut kirjeldame üksikasjalikumalt, kui liigume edasi avaliku võtmega krüptograafia rünnakute juurde). Vaatamata meie pingutustele muutub tekst mõnevõrra tehniliseks; nii et kui ülaltoodust teile piisab, jätke kaks järgmist jaotist vahele.

Vodene rünnak

Vaudenay rünnaku mõistmiseks peame kõigepealt natuke rohkem rääkima plokkšifritest ja krüpteerimisrežiimidest. "Plokišifr" on, nagu mainitud, šifr, mis võtab võtme ja teatud kindla pikkusega sisendi ("ploki pikkus") ning toodab sama pikkusega krüpteeritud ploki. Plokkšifreid kasutatakse laialdaselt ja neid peetakse suhteliselt turvaliseks. Nüüdseks pensionile jäänud DES, mida peeti esimeseks kaasaegseks šifriks, oli plokkšifr. Nagu eespool mainitud, kehtib sama ka tänapäeval laialdaselt kasutatava AES kohta.

Kahjuks on plokkšifritel üks silmatorkav nõrkus. Tüüpiline ploki suurus on 128 bitti või 16 tähemärki. Ilmselgelt nõuab kaasaegne krüptograafia suuremate sisendandmetega töötamist ja siin tulevad mängu krüpteerimisrežiimid. Krüpteerimisrežiim on sisuliselt häkkimine: see on viis, kuidas rakendada plokkšifrit, mis aktsepteerib suvalise pikkusega sisestamiseks ainult teatud suurusega sisendit.

Vodene rünnak on keskendunud populaarsele CBC (Cipher Block Chaining) töörežiimile. Rünnak käsitleb aluseks olevat plokkšifrit kui maagilist, immutamatut musta kasti ja läheb selle turvalisusest täielikult mööda.

Siin on diagramm, mis näitab, kuidas CBC-režiim töötab:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Ringiga ümbritsetud pluss tähistab operatsiooni XOR (eksklusiivne VÕI). Näiteks võetakse vastu šifriteksti teine ​​plokk:

  1. Tehes XOR-operatsiooni teisel lihttekstiplokil koos esimese šifreeritud tekstiplokiga.
  2. Saadud ploki krüpteerimine plokkšifriga võtme abil.

Kuna CBC kasutab nii palju binaarset XOR-operatsiooni, meenutagem mõnda selle omadust:

  • Idempotentsus: Krüptograafilised rünnakud: seletus segaduses olevatele meeltele
  • Kommutatiivsus: Krüptograafilised rünnakud: seletus segaduses olevatele meeltele
  • Assotsiatiivsus: Krüptograafilised rünnakud: seletus segaduses olevatele meeltele
  • Iseseisev pöörduvus: Krüptograafilised rünnakud: seletus segaduses olevatele meeltele
  • Baiti suurus: bait n Krüptograafilised rünnakud: seletus segaduses olevatele meeltele = (bait n/ Krüptograafilised rünnakud: seletus segaduses olevatele meeltele) Krüptograafilised rünnakud: seletus segaduses olevatele meeltele (bait n/ Krüptograafilised rünnakud: seletus segaduses olevatele meeltele)

Tavaliselt viitavad need omadused sellele, et kui meil on võrrand, mis hõlmab XOR-i toiminguid ja ühte tundmatut, saab selle lahendada. Näiteks kui me seda teame Krüptograafilised rünnakud: seletus segaduses olevatele meeltele tundmatuga Krüptograafilised rünnakud: seletus segaduses olevatele meeltele ja kuulus Krüptograafilised rünnakud: seletus segaduses olevatele meeltele и Krüptograafilised rünnakud: seletus segaduses olevatele meeltele, siis saame võrrandi lahendamisel tugineda ülalnimetatud omadustele Krüptograafilised rünnakud: seletus segaduses olevatele meeltele. Rakendades XOR-i võrrandi mõlemale poolele Krüptograafilised rünnakud: seletus segaduses olevatele meeltele, saame Krüptograafilised rünnakud: seletus segaduses olevatele meeltele. See kõik muutub hetkega väga aktuaalseks.

Meie Alice stsenaariumi ja Vaudenay rünnaku vahel on kaks väikest erinevust ja üks suur erinevus. Kaks väiksemat:

  • Stsenaariumis eeldas Alice, et lihttekstid lõpevad tegelastega a, bb, ccc ja nii edasi. Wodene'i rünnaku korral eeldab ohver, et lihttekstid lõpevad N korda N-baidiga (st kuueteistkümnendsüsteemis 01 või 02 02 või 03 03 03 jne). See on puhtalt kosmeetiline erinevus.
  • Alice'i stsenaariumi puhul oli vastuse "Vale näivtekst" järgi lihtne aru saada, kas Alice oli sõnumi vastu võtnud. Vodene rünnaku puhul on vaja rohkem analüüsi ja oluline on täpne elluviimine ohvri poolel; kuid lühiduse huvides võtame selle kohta, et see analüüs on siiski võimalik.

Peamine erinevus:

  • Kuna me ei kasuta sama krüptosüsteemi, on ründaja juhitud šifritekstibaitide ja saladuste (võti ja tavatekst) vaheline suhe ilmselgelt erinev. Seetõttu peab ründaja šifritekstide loomisel ja serveri vastuste tõlgendamisel kasutama teistsugust strateegiat.

See oluline erinevus on viimane pusletükk Vaudenay rünnaku mõistmiseks, nii et mõelgem hetkeks, miks ja kuidas saab üldse korraldada oraakli rünnaku CBC vastu.

Oletame, et meile antakse 247 plokist koosnev CBC šifritekst ja me tahame selle dekrüpteerida. Saame saata serverisse võltssõnumeid, täpselt nagu varem Alice'ile. Server dekrüpteerib kirjad meie eest, kuid ei näita dekrüptimist – selle asemel, nagu Alice'i puhul, edastab server ainult ühte infot: kas lihttekstil on kehtiv täidis või mitte.

Mõelge, et Alice'i stsenaariumi järgi olid meil järgmised suhted:

$$display$$text{SIMPLE_SUBSTITUTION}(tekst{šifreeritud tekst},tekst{võti}) = tekst{plaintext}$$kuva$$

Nimetagem seda "Alice'i võrrandiks". Me kontrollisime šifriteksti; server (Alice) lekitas vastuvõetud tavateksti kohta ebamäärast teavet; ja see võimaldas tuletada teavet viimase teguri - võtme kohta. Analoogia põhjal, kui leiame CBC skripti jaoks sellise ühenduse, saame sealt ka salajase teabe välja võtta.

Õnneks on seal tõesti suhteid, mida saame kasutada. Mõelge plokkšifri dekrüpteerimiseks viimase kõne väljundile ja tähistage seda väljundit kui Krüptograafilised rünnakud: seletus segaduses olevatele meeltele. Tähistame ka lihtteksti plokke Krüptograafilised rünnakud: seletus segaduses olevatele meeltele ja šifriplokid Krüptograafilised rünnakud: seletus segaduses olevatele meeltele. Heitke veel kord pilk CBC diagrammile ja pange tähele, mis juhtub:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Nimetagem seda "CBC võrrandiks".

Alice'i stsenaariumi kohaselt suutsime salateksti jälgides ja vastava lihtteksti leket jälgides korraldada rünnaku, mis taastas võrrandi kolmanda liikme – võtme. CBC stsenaariumi puhul jälgime ka šifriteksti ja jälgime infolekkeid vastaval tavatekstil. Kui analoogia kehtib, saame teavet selle kohta Krüptograafilised rünnakud: seletus segaduses olevatele meeltele.

Oletame, et oleme tõesti taastanud Krüptograafilised rünnakud: seletus segaduses olevatele meeltele, mis siis? Noh, siis saame terve viimase lihtteksti ploki korraga välja printida (Krüptograafilised rünnakud: seletus segaduses olevatele meeltele), lihtsalt sisestades Krüptograafilised rünnakud: seletus segaduses olevatele meeltele (mis meil on) ja
saadud Krüptograafilised rünnakud: seletus segaduses olevatele meeltele CBC võrrandisse.

Nüüd, kui oleme üldise rünnakuplaani suhtes optimistlikud, on aeg üksikasjad välja töötada. Palun pöörake tähelepanu sellele, kuidas lihtteksti teave serverisse lekib. Alice'i skriptis toimus leke, kuna Alice vastaks õige sõnumiga ainult siis, kui $inline$text{SIMPLE_SUBSTITUTION}(tekst{ciphertext},text{key})$inline$ lõppes reaga a (Või bbja nii edasi, kuid nende tingimuste juhusliku käivitamise tõenäosus oli väga väike). Sarnaselt CBC-ga aktsepteerib server täidist siis ja ainult siis Krüptograafilised rünnakud: seletus segaduses olevatele meeltele lõpeb kuueteistkümnendsüsteemiga 01. Proovime siis sama nippi: saadame oma võltsväärtustega võltsšifreid Krüptograafilised rünnakud: seletus segaduses olevatele meeltelekuni server täidise vastu võtab.

Kui server aktsepteerib ühe meie võltssõnumi täidist, tähendab see järgmist:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Nüüd kasutame atribuuti byte-byte XOR:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Teame esimest ja kolmandat terminit. Ja oleme juba näinud, et see võimaldab meil taastada järelejäänud tähtaja - viimase baiti Krüptograafilised rünnakud: seletus segaduses olevatele meeltele:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

See annab meile ka viimase lihtteksti ploki viimase baidi CBC võrrandi ja bait-baidi atribuudi kaudu.

Võiksime selle pooleli jätta ja olla rahul, et oleme sooritanud rünnaku teoreetiliselt tugeva šifri vastu. Kuid tegelikult saame teha palju enamat: tegelikult saame kogu teksti taastada. Selleks on vaja nippi, mida Alice'i algses stsenaariumis ei olnud ja mida oraakli rünnaku jaoks vaja pole, kuid see tasub siiski ära õppida.

Selle mõistmiseks pange kõigepealt tähele, et viimase baidi õige väärtuse väljastamise tulemus on Krüptograafilised rünnakud: seletus segaduses olevatele meeltele meil on uus võime. Nüüd saame šifreeritud tekstide sepistamisel manipuleerida vastava lihtteksti viimase baidiga. Jällegi on see seotud CBC võrrandi ja bait-baidi atribuudiga:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Kuna me teame nüüd teist terminit, saame kasutada oma kontrolli esimese üle, et kontrollida kolmandat. Arvutame lihtsalt:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Me ei saanud seda varem teha, sest meil polnud veel viimast baiti Krüptograafilised rünnakud: seletus segaduses olevatele meeltele.

Kuidas see meid aitab? Oletame, et loome nüüd kõik šifreeritud tekstid nii, et vastavate lihttekstide viimane bait on võrdne 02. Server aktsepteerib nüüd täitmist ainult siis, kui tavatekst lõpeb tähega 02 02. Kuna me parandasime viimast baiti, juhtub see ainult siis, kui lihtteksti eelviimane bait on samuti 02. Jätkame võltsitud šifritekstiplokkide saatmist, muutes eelviimast baiti, kuni server võtab ühe neist täidise vastu. Sel hetkel saame:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Ja taastame eelviimase baidi Krüptograafilised rünnakud: seletus segaduses olevatele meeltele täpselt nagu viimane taastati. Jätkame samas vaimus: parandame lihtteksti kaks viimast baiti 03 03, kordame seda rünnakut lõpust kolmanda baidi ja nii edasi, lõpuks taastades täielikult Krüptograafilised rünnakud: seletus segaduses olevatele meeltele.

Aga ülejäänud tekst? Pange tähele, et väärtus Krüptograafilised rünnakud: seletus segaduses olevatele meeltele on tegelikult $inline$text{BLOCK_DECRYPT}(tekst{key},C_{247})$inline$. Selle asemel võime panna mis tahes muu ploki Krüptograafilised rünnakud: seletus segaduses olevatele meeltele, ja rünnak õnnestub ikkagi. Tegelikult võime paluda serveril teha mis tahes andmete jaoks $inline$text{BLOCK_DECRYPT}$inline$. Siinkohal on mäng läbi – saame dekrüpteerida mis tahes šifriteksti (selle nägemiseks vaadake veelkord CBC dekrüpteerimisskeemi ja pange tähele, et IV on avalik).

See konkreetne meetod mängib otsustavat rolli oraaklirünnakus, millega me hiljem kokku puutume.

Kelsey rünnak

Meie sümpaatne John Kelsey pani paika paljude võimalike rünnakute aluseks olevad põhimõtted, mitte ainult konkreetse šifri vastu suunatud konkreetse rünnaku üksikasjad. Tema Aasta 2002-i artikkel on uuring võimalike rünnete kohta krüptitud tihendatud andmete vastu. Kas arvasite, et teabest, et andmed enne krüptimist tihendati, ei piisa rünnaku läbiviimiseks? Selgub, et sellest piisab.

See üllatav tulemus tuleneb kahest põhimõttest. Esiteks on tavateksti pikkuse ja šifreeritud teksti pikkuse vahel tugev korrelatsioon; paljude šifrite jaoks täpne võrdsus. Teiseks, tihendamisel on tihe korrelatsioon ka tihendatud sõnumi pikkuse ja lihtteksti "müralisuse" astme vahel, see tähendab mittekorduvate märkide osakaalu vahel (tehniline termin on "kõrge entroopia"). ).

Et näha põhimõtet toimimas, kaaluge kahte lihtsat teksti:

Lihttekst 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Lihttekst 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

Oletame, et mõlemad lihttekstid tihendatakse ja seejärel krüpteeritakse. Saad kaks saadud šifriteksti ja peate ära arvama, milline salatekst vastab millisele lihttekstile:

Šifreeritud tekst 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

Šifreeritud tekst 2: DWKJZXYU

Vastus on selge. Lihttekstide hulgast sai teise šifriteksti kasina pikkusega kokku suruda vaid lihtteksti 1. Arvutasime selle välja, teadmata midagi tihendusalgoritmist, krüpteerimisvõtmest või isegi šifrist endast. Võrreldes võimalike krüptorünnakute hierarhiaga on see omamoodi hull.

Kelsey juhib lisaks tähelepanu sellele, et teatud ebatavalistel asjaoludel saab seda põhimõtet kasutada ka oraaklirünnaku läbiviimiseks. Eelkõige kirjeldab see, kuidas ründaja saab salajase tavateksti taastada, kui ta saab sundida serverit vormiandmeid krüpteerima (lihttekst, millele järgneb Krüptograafilised rünnakud: seletus segaduses olevatele meeltelekui ta kontrollib Krüptograafilised rünnakud: seletus segaduses olevatele meeltele ja saab kuidagi kontrollida krüptitud tulemuse pikkust.

Jällegi, nagu teistel oraaklirünnakutel, on ka meil suhe:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Jällegi kontrollime ühte terminit (Krüptograafilised rünnakud: seletus segaduses olevatele meeltele), näeme väikest teabeleket teise liikme kohta (šifreeritud tekst) ja proovime taastada viimast (lihttekst). Vaatamata analoogiale on see mõnevõrra ebatavaline olukord võrreldes teiste oraaklirünnakutega, mida oleme näinud.

Et illustreerida, kuidas selline rünnak võiks toimida, kasutame fiktiivset tihendusskeemi, mille just välja mõtlesime: TOYZIP. See otsib teksti ridu, mis on tekstis varem esinenud, ja asendab need kolme kohahoidjabaidiga, mis näitavad, kust leida rea ​​varasem eksemplar ja mitu korda see seal ilmub. Näiteks joon helloworldhello saab kokku suruda helloworld[00][00][05] 13 baiti pikk, võrreldes algse 15 baidiga.

Oletame, et ründaja proovib taastada vormi tavateksti password=..., kus parool ise on teadmata. Kelsey ründemudeli kohaselt võib ründaja paluda serveril vormisõnumid tihendada ja seejärel krüpteerida (lihttekst, millele järgneb Krüptograafilised rünnakud: seletus segaduses olevatele meeltele), kus Krüptograafilised rünnakud: seletus segaduses olevatele meeltele - vaba tekst. Kui server on töö lõpetanud, teatab ta tulemuse pikkuse. Rünnak käib järgmiselt:

Vargas: Palun tihendage ja krüptige lihttekst ilma polsterduseta.

Server: Tulemuse pikkus 14.

Vargas: Pakkige ja krüptige lihttekst, millele on lisatud password=a.

Server: Tulemuse pikkus 18.

Kreeker märgib: [originaal 14] + [kolm baiti, mis asendati password=] + a

Vargas: Palun tihendage ja krüptige lihttekst, millele on lisatud password=b.

Server: Tulemuse pikkus 18.

Vargas: Palun tihendage ja krüptige lihttekst, millele on lisatud password=с.

Server: Tulemuse pikkus 17.

Kreeker märgib: [originaal 14] + [kolm baiti, mis asendati password=c]. See eeldab, et algne tavatekst sisaldab stringi password=c. See tähendab, et parool algab tähega c

Vargas: Palun tihendage ja krüptige lihttekst, millele on lisatud password=сa.

Server: Tulemuse pikkus 18.

Kreeker märgib: [originaal 14] + [kolm baiti, mis asendati password=с] + a

Vargas: Palun tihendage ja krüptige lihttekst, millele on lisatud password=сb.

Server: Tulemuse pikkus 18.

(… Veidi aega hiljem…)

Vargas: Palun tihendage ja krüptige lihttekst, millele on lisatud password=со.

Server: Tulemuse pikkus 17.

Kreeker märgib: [originaal 14] + [kolm baiti, mis asendati password=co]. Sama loogikat kasutades järeldab ründaja, et parool algab tähtedega co

Ja nii edasi, kuni kogu parool on taastatud.

Lugejale antaks andeks, kui ta arvab, et tegemist on puhtalt akadeemilise harjutusega ja sellist rünnakustsenaariumit pärismaailmas kunagi ei teki. Paraku, nagu varsti näeme, on parem krüptograafiast mitte loobuda.

Brändi haavatavused: KRIMI, PUUDL, DROWN

Lõpuks, pärast teooria üksikasjalikku uurimist, näeme, kuidas neid tehnikaid reaalses elus krüptograafilistes rünnakutes rakendatakse.

Kuritegu

Krüptograafilised rünnakud: seletus segaduses olevatele meelteleKui rünnak on suunatud ohvri brauseri ja võrgu vastu, on mõnel lihtsam ja mõnel keerulisem. Näiteks kannatanu liiklust on lihtne näha: lihtsalt istu temaga samas WiFi-ga kohvikus. Sel põhjusel soovitatakse potentsiaalsetel ohvritel (st kõigil) üldiselt kasutada krüpteeritud ühendust. Raskem, kuid siiski võimalik, on ohvri nimel HTTP-päringuid mõnele kolmanda osapoole saidile (nt Google) teha. Ründaja peab meelitama ohvri pahatahtlikule veebilehele päringu esitava skriptiga. Veebibrauser esitab automaatselt vastava seansiküpsise.

See tundub hämmastav. Kui Bob läks evil.com, võiks selle saidi skript lihtsalt paluda Google'il saata Bobi parool e-posti aadressile [email protected]? Noh, teoreetiliselt jah, aga tegelikkuses mitte. Seda stsenaariumi nimetatakse saidiüleseks päringu võltsimise rünnakuks (Saitidevaheline taotluste võltsimine, CSRF) ja see oli populaarne umbes 90ndate keskel. Täna, kui evil.com proovib seda trikki, vastab Google (või mõni endast lugupidav veebisait) tavaliselt järgmiselt: "Tore, aga teie CSRF-i märk selle tehingu jaoks on... um... три триллиона и семь. Palun korrake seda numbrit." Kaasaegsetel brauseritel on midagi, mida nimetatakse "sama päritolu poliitikaks", mille kohaselt saidi A skriptidel ei ole juurdepääsu veebisaidi B saadetud teabele. Seega on skriptil evil.com saab saata päringuid aadressile google.com, kuid ei saa vastuseid lugeda ega tehingut tegelikult lõpule viia.

Peame rõhutama, et kui Bob just krüpteeritud ühendust ei kasuta, on kõik need kaitsed mõttetud. Ründaja saab lihtsalt lugeda Bobi liiklust ja taastada Google'i seansiküpsise. Selle küpsise abil avab ta oma brauserist lahkumata lihtsalt uue Google'i vahekaardi ja kehastab Bobi ilma tüütuid sama päritoluga eeskirju tundmata. Kuid kahjuks on see sissemurdjate jaoks üha harvem. Internet tervikuna on juba ammu krüptimata ühendustele sõja kuulutanud ja Bobi väljaminev liiklus on ilmselt krüpteeritud, meeldib see talle või mitte. Lisaks oli protokolli rakendamise algusest peale ka liiklus kahanes enne krüptimist; see oli levinud praktika latentsusaja vähendamiseks.

Siin tuleb see mängu Kuritegu (Compression Ratio Infoleak Made Easy, lihtne leke läbi surveastme). Haavatavuse paljastasid 2012. aasta septembris turvauurijad Juliano Rizzo ja Thai Duong. Oleme juba uurinud kogu teoreetilist alust, mis võimaldab meil mõista, mida ja kuidas nad tegid. Ründaja võib sundida Bobi brauserit saatma Google'ile päringuid ja seejärel kuulama vastuseid kohalikus võrgus tihendatud, krüptitud kujul. Seetõttu on meil:

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele

Siin juhib ründaja taotlust ja tal on juurdepääs liikluse nuusutajale, sealhulgas paketi suurusele. Kelsey väljamõeldud stsenaarium sai ellu.

Teooriast aru saades lõid CRIME autorid ärakasutamise, mis võib varastada seansiküpsiseid paljudel saitidel, sealhulgas Gmail, Twitter, Dropbox ja Github. Haavatavus mõjutas enamikku moodsaid veebibrausereid, mille tulemusel vabastati paigad, mis matsid vaikselt SSL-i tihendusfunktsiooni, nii et seda ei kasutataks üldse. Ainus, mis haavatavuse eest kaitstud, oli auväärne Internet Explorer, mis ei kasutanud kunagi SSL-i tihendamist.

PUUDEL

Krüptograafilised rünnakud: seletus segaduses olevatele meeltele2014. aasta oktoobris lõi Google'i turvameeskond turvaringkonnas laineid. Nad suutsid ära kasutada SSL-protokolli haavatavust, mis oli paigatud rohkem kui kümme aastat tagasi.

Selgub, et kuigi serverites töötab uus särav TLSv1.2, on paljud jätnud Internet Explorer 3-ga tagasiühilduvuse tagamiseks toe pärand-SSLv6-le. Oleme juba rääkinud alandamise rünnakutest, nii et võite ette kujutada, mis toimub. Käepigistusprotokolli hästi korraldatud sabotaaž ja serverid on valmis naasma vana hea SSLv3 juurde, tühistades sisuliselt viimase 15 aasta turvauuringud.

Ajaloolise konteksti jaoks siin on Matthew Greeni lühikokkuvõte SSL-i ajaloost kuni versioonini 2:

Transport Layer Security (TLS) on Interneti kõige olulisem turvaprotokoll. [..] peaaegu iga Internetis tehtud tehing sõltub TLS-ist. [..] Kuid TLS ei olnud alati TLS. Protokoll alustas oma eluiga aastal Netscape'i side nimega "Secure Sockets Layer" või SSL. Kuulujuttude kohaselt oli SSL-i esimene versioon nii kohutav, et arendajad kogusid kõik koodi väljatrükid kokku ja matsid need New Mexico salajasse prügimäele. Selle tulemusena on SSL-i esimene avalikult saadaval versioon tegelikult versioon SSL 2. See on päris hirmutav ja [..] see oli 90ndate keskpaiga toode, mida tänapäeva krüptograafid peavad kui "krüptograafia pimedad ajastud" Paljusid kõige kohutavamaid krüptorünnakuid, mida me täna teame, pole veel avastatud. Selle tulemusel jäid protokolli SSLv2 arendajad sisuliselt pimedas kobama ja nad seisid silmitsi palju kohutavaid koletisi - nende meelehärmiks ja meie kasuks, kuna rünnakud SSLv2 vastu andsid hindamatu õppetunni järgmise põlvkonna protokollidele.

Pärast neid sündmusi kujundas pettunud Netscape 1996. aastal SSL-protokolli nullist ümber. Tulemuseks oli SSL-i versioon 3, mis parandas mitmeid oma eelkäija teadaolevaid turvaprobleeme.

Õnneks ei tähenda "mõned" sissemurdjate jaoks "kõiki". Üldiselt andis SSLv3 kõik vajalikud ehitusplokid Vodene rünnaku käivitamiseks. Protokoll kasutas CBC-režiimi plokkšifrit ja ebaturvalist polsterdamisskeemi (seda parandati TLS-is; sellest ka vajadus alandamise rünnaku järele). Kui mäletate meie algses Vaudenay rünnaku kirjelduses olevat polsterdamisskeemi, on SSLv3 skeem väga sarnane.

Kuid kahjuks ei tähenda "sarnane" sissemurdjate jaoks "identne". SSLv3 täidisskeem on "N juhuslikku baiti, millele järgneb number N". Proovige nendel tingimustel valida väljamõeldud šifritekstiplokk ja läbida kõik Vaudene'i algse skeemi etapid: avastate, et rünnak eraldab vastavast lihttekstiplokist edukalt viimase baidi, kuid ei lähe kaugemale. Krüptteksti iga 16. baidi dekrüpteerimine on suurepärane trikk, kuid see pole võit.

Ebaõnnestumisega silmitsi seistes kasutas Google'i meeskond viimast abinõu: nad läksid üle võimsamale ohumudelile – sellele, mida kasutati KURITEGI puhul. Eeldades, et ründaja on ohvri brauseri vahekaardil töötav skript ja suudab seansiküpsiseid ekstraktida, on rünnak siiski muljetavaldav. Kuigi laiem ohumudel on vähem realistlik, nägime eelmises jaotises, et see konkreetne mudel on teostatav.

Arvestades neid võimsamaid ründaja võimalusi, saab rünnak nüüd jätkuda. Pange tähele, et ründaja teab, kus krüptitud seansiküpsis päises kuvatakse, ja juhib sellele eelneva HTTP-päringu pikkust. Seetõttu saab see HTTP-päringut manipuleerida nii, et küpsise viimane bait on joondatud ploki lõpuga. Nüüd sobib see bait dekrüpteerimiseks. Päringule saab lihtsalt lisada ühe märgi ning küpsise eelviimane bait jääb samasse kohta ning sobib sama meetodiga valimiseks. Rünnak jätkub sel viisil, kuni küpsisefail on täielikult taastatud. Selle nimi on POODLE: Oracle'i polsterdus alandatud pärandkrüptimisel.

UPPUDA

Krüptograafilised rünnakud: seletus segaduses olevatele meelteleNagu me mainisime, oli SSLv3-l oma puudused, kuid see erines põhimõtteliselt oma eelkäijast, kuna lekkiv SSLv2 oli teise ajastu toode. Seal saate sõnumi keskel katkestada: соглашусь на это только через мой труп kujunes соглашусь на это; klient ja server võivad võrgus kohtuda, luua usaldust ja vahetada saladusi ründaja ees, kes saab seejärel hõlpsasti mõlemana esineda. Samuti on probleem ekspordi krüptograafiaga, mida mainisime FREAKi kaalumisel. Need olid krüptograafiline Soodoma ja Gomorra.

2016. aasta märtsis tuli erinevate tehnikavaldkondade teadlaste meeskond kokku ja tegi jahmatava avastuse: SSLv2 kasutatakse turvasüsteemides siiani. Jah, ründajad ei saanud enam kaasaegseid TLS-i seansse SSLv2-le alandada, kuna see auk suleti pärast FREAK-i ja POODLE-i, kuid nad saavad siiski luua ühenduse serveritega ja algatada SSLv2-seansse ise.

Võite küsida, miks meid huvitab, mida nad seal teevad? Neil on haavatav seanss, kuid see ei tohiks mõjutada teisi seansse ega serveri turvalisust – eks? No mitte päris. Jah, nii see teoreetiliselt peakski olema. Aga ei – kuna SSL-sertifikaatide genereerimine tekitab teatud koormuse, mille tulemusena kasutavad paljud serverid samu sertifikaate ja sellest tulenevalt samu RSA-võtmeid TLS-i ja SSLv2-ühenduste jaoks. Asja teeb hullemaks see, et OpenSSL-i vea tõttu ei töötanud selles populaarses SSL-i rakenduses valik "Keela SSLv2".

See tegi võimalikuks protokolliülese rünnaku TLS-ile, nn UPPUDA (RSA dekrüpteerimine vananenud ja nõrgenenud krüptimisega, RSA dekrüpteerimine vananenud ja nõrgenenud krüptimisega). Tuletage meelde, et see ei ole sama, mis lühike rünnak; ründaja ei pea tegutsema "mehena keskel" ega pea klienti kaasama, et osaleda ebaturvalisel seansil. Ründajad lihtsalt algatavad ise serveriga ebaturvalise SSLv2 seansi, ründavad nõrka protokolli ja taastavad serveri RSA privaatvõtme. See võti kehtib ka TLS-ühenduste jaoks ja sellest hetkest alates ei takista TLS-i turvalisus selle ohtu sattumast.

Kuid selle murdmiseks vajate töötavat rünnet SSLv2 vastu, mis võimaldab taastada mitte ainult konkreetse liikluse, vaid ka salajase RSA-serveri võtme. Kuigi see on keeruline seadistus, said teadlased valida mis tahes haavatavuse, mis pärast SSLv2-d täielikult suletud. Lõpuks leidsid nad sobiva võimaluse: Bleichenbacheri rünnak, mida me varem mainisime ja mida me järgmises artiklis üksikasjalikult selgitame. SSL ja TLS on selle rünnaku eest kaitstud, kuid mõned SSL-i juhuslikud funktsioonid koos ekspordikvaliteediga krüptograafia lühivõtmetega võimaldasid seda DROWNi konkreetne teostus.

Avaldamise ajal oli DROWN-i haavatavus mõjutatud 25% Interneti tippsaitidest ja rünnak sai läbi viia tagasihoidlike ressurssidega, mis olid kättesaadavad isegi vallatutele üksikutele häkkeritele. Serveri RSA-võtme leidmine nõudis kaheksa tundi arvutamist ja 440 dollarit ning SSLv2 muutus vananenud radioaktiivseks.

Oot, aga Heartbleed?

See ei ole krüptograafiline rünnak ülalkirjeldatud tähenduses; See on puhvri ületäitumine.

Teeme pausi

Alustasime mõne põhitehnikaga: toore jõud, interpoleerimine, alandamine, protokollide rist ja eelarvutus. Seejärel vaatasime ühte täiustatud tehnikat, võib-olla tänapäevaste krüptorünnakute põhikomponenti: oraakli rünnakut. Kulutasime selle väljamõtlemiseks üsna kaua aega – ja mõistsime mitte ainult aluspõhimõtet, vaid ka kahe konkreetse teostuse tehnilisi üksikasju: Vaudenay rünnak CBC krüpteerimisrežiimile ja Kelsey rünnak tihendamiseelsete krüpteerimisprotokollide vastu.

Ülevaatamisel alandamise ja eelarvutusrünnakute ülevaates kirjeldasime lühidalt FREAK-i rünnakut, mis kasutab mõlemat meetodit, lastes sihtsaitidel alandada nõrkade võtmete versiooni ja seejärel kasutada samu võtmeid uuesti. Järgmise artikli jaoks salvestame (väga sarnase) Logjami rünnaku, mis sihib avaliku võtme algoritme.

Seejärel vaatasime veel kolme näidet nende põhimõtete rakendamisest. Esiteks CRIME ja POODLE: kaks rünnet, mis põhinesid ründaja võimel sisestada sihttava lihtteksti kõrvale suvaline lihttekst, seejärel uuriti serveri vastuseid ja siis,kasutades Oracle'i rünnaku metoodikat, kasutage seda hõredat teavet lihtteksti osaliseks taastamiseks. CRIME läks Kelsey ründe teed SSL-i tihendamise vastu, samas kui POODLE kasutas selle asemel Vaudenay sama efektiga rünnaku varianti CBC-le.

Seejärel pöörasime tähelepanu protokollidevahelisele DROWN-rünnakule, mis loob ühenduse serveriga pärandprotokolli SSLv2 abil ja taastab seejärel serveri salajased võtmed, kasutades Bleichenbacheri rünnakut. Oleme selle rünnaku tehnilised üksikasjad praegu vahele jätnud; nagu Logjam, peab see ootama, kuni saame avaliku võtmega krüptosüsteemidest ja nende haavatavustest hea ülevaate.

Järgmises artiklis räägime täiustatud rünnakutest, nagu kohtumine keskel, diferentsiaalkrüptoanalüüs ja sünnipäevarünnakud. Tutvume kiirelt külgkanalite rünnakutega ja liigume siis lõbusama osa juurde: avaliku võtmega krüptosüsteemid.

Allikas: www.habr.com

Lisa kommentaar