Krüptograafilised rünnakud: seletus segaduses meeltedele

Sõna "krüptograafia" puhul tuletavad mõned meelde oma WiFi parooli, rohelist lukku oma lemmikveebisaidi aadressi kõrval ja seda, kui raske on kellegi teise postkasti pääseda. Teised meenutavad viimaste aastate haavatavuste harjumust, millel on kõlavaid lühendeid (DROWN, FREAK, POODLE...) ja stiilseid logo ning teadet brauseri kiirest uuendamisest.

Krüptograafia hõlmab kõike seda, kuid oluline on muus. Oluline on õrn piir lihtsa ja keerulise vahel. Mõningaid asju on lihtne teha, kuid keeruline tagasi võtta: näiteks muna purustada. Teisi asju on kergem teha, kuid raske tagasi saada, kui puudub väike oluline lahutamatu osa: näiteks lukustatud ukse avamine, kui "lahutamatu osa" on võti. Krüptograafia uurib neid olukordi ja nende praktilise kasutamise viise.

Viimastel aastatel on krüptograafiliste rünnakute kogu muutunud karjuvate logode loomaaiaks, mis on täis teadusartiklite valemeid ja on tekitanud üldise tumeduse tunde, et kõik on katki. Kuid tegelikult põhinevad paljud rünnakud mõnel ühiselt tuntud põhimõttel, ja lõputud leheküljed valemeid saab sageli lihtsateks arusaadavateks ideedeks kokku võtta.

Selles artiklisarja uurime erinevaid krüptograafilisi rünnakute tüüpe, keskendudes peamistele põhimõtetele. Üldiselt ja mitte tingimata selles järjekorras, kuid me räägime järgmistest:

  • Alustavad strateegiad: bruteforce, sageduseanalüüs, interpoleerimine, allapoole viimine ja rist-protokollid.
  • "Bränditud" haavatavused: FREAK, CRIME, POODLE, DROWN, Logjam.
  • Edasijõudnud strateegiad: oraakli rünnakud (Vodené rünnak, Kelsi rünnak); kohtumisviis (meet-in-the-middle), sünnipäevaring, statistiline kallutatus (diferentsiaalne krüptoanalüüs, integreeritud krüptoanalüüs jne).
  • Külgkanali rünnakud ja nende lähisugulased, rikete analüüsi meetodid.
  • Avaliku võtmise rünnakud: kuupjuur, edastamine, seotud teadet, Copperfieldi rünnak, Pollard-Hellmani algoritm, numbriline sõel, Wieneri rünnak, Bluhenbacheri rünnak.

See konkreetne artikkel katab ülaltoodud materjali kuni Kelsi rünnakuni.

Alustavad strateegiad

Järgmised rünnakud on lihtsad, kuna need on praktiliselt täielikult seletatavad ilma eriliste tehniliste detailideta. Selgitame iga rünnaku tüüpi kõige lihtsamates terminites, süvenemata keerulistesse näidetes või ulatuslikesse kasutusvõimalustesse.

Mõned neist rünnakutest on põhimõtteliselt oma asjakohasust kaotanud ja neid ei ole juba aastaid rakendatud. Teised — vanad tuttavad, hiilivad ikka veel 21. sajandi ebamugandade krüptosüsteemide arendajate kallale. Võib öelda, et kaasaegse krüptograafia ajastu algas IBM DES-i tulekuga — esimesest šifrist, mis talus ära kõik rünnakud selles loendis.

Lihtne brute force

Krüptograafilised rünnakud: seletus segaduses meeltedeleŠifreerimise skeem koosneb kahest osast: 1) šifreerimisfunktsioon, mis võtab vastu sõnumi (ava tekst) koos võtmega ja loob seejärel šifreeritud sõnumi — šifriteksti; 2) dekodeerimisfunktsioon, mis võtab vastu šifriteksti ja võtme ning loob avateksti. Nii šifreerimine kui ka dekodeerimine peavad olema võtmega kergesti arvutatavad — ja ilma selleta rasked.

Oletame, et me näeme šifriteksti ja proovime seda dekodeerida ilma igasuguste lisainformatsioonita (seda nimetatakse "ainult šifriteksti" rünnakuks). Kui suudame kuidagi maagiliselt leida õige võtme, saame kergesti kontrollida, kas see on tõesti õige, kui tulemus on mõistlik sõnum.

Pange tähele, et siin on kaks varjatud eeldust. Esiteks, et me teame, kuidas dekrüpteerimist teha, st kuidas krüptosüsteem toimib. See on tavapärane eeldus krüptograafia arutamisel. Šifri rakenduse detailide varjamine pahategijate eest võib tunduda täiendava turvameetmena, kuid niipea, kui pahategija avastab need detailid, on see täiendav turvalisus märkamatult ja pöördumatult kaotatud. Selline on Kerckhoffi printsiip: süsteemi sattumine vaenlase kätte ei tohiks tekitada ebamugavusi.

Teiseks, eeldame, et õige võti on ainus võti, mis toob kaasa mõistliku dekodeerimise. See on samuti mõistlik eeldus; see kehtib, kui šifritekst on palju pikem kui võti ja hästi loetav. Üldiselt on see tõsi reaalses maailmas, välja arvatud hiiglaslikud ebapraktilised võtmed või teised manipuleerimised, mida on parem kõrvale jätta. (kui te ei ole rahul, et jätkasime seletused vahele jätmist, palun vaadake teoreemi 3.8) siin).

Arvestades ülaltoodut, tuli välja strateegia: kontrollida iga võimalikku võtit. Seda nimetatakse bruteforce'iks ning selline rünnak töötab garanteeritult kõigi praktiliste šifrite vastu — lõpuks. Näiteks on bruteforce piisav, et murda Caesari šiffri, iidne šifrer, kus võtmeks on üks täht tähestikus, mis tähendab veidi üle 20 võimaliku võtme.

Kahjuks krüptaanalüütikutele kaitseb võtme suuruse suurenemine bruteforce'i vastu hästi. Kui võtme suurus kasvab, suureneb võimalike võtmete arv eksponentsiaalselt. Kaasaegsetel võtme suurustel on lihtne bruteforce täiesti ebapraktiline. Et mõista, mida me silmas põlame, vaatame, mis oli 2019. aasta keskpaiku kiireim teadaolev superarvuti: Summit , IBM-i, tippvõimekusega umbes 10^17 operatsiooni sekundis. Täna on tüüpiline võtme pikkus 128 bitti, mis tähendab 2^128 võimaliku kombinatsiooni. Kõikide võtmete proovimiseks kulub superarvutile Summit aega, mis on umbes 7800 korda pikem kui Universumi vanus.

Kas peaksime bruteforce'i pidama ajalooliseks erandiks? Üldse mitte: see on vajalik koostisosade krüptaanalüüsi retseptis. Harva esinevad nii nõrgad šifrid, et need saaksid edasi murda ainult nutika rünnakuga, ilma igasuguse jõhkruse rakendamata. Paljudel edukatel katsetel kasutatakse kõigepealt algorütmilist meetodit, et nõrgestada sihtmärki šifrit ja seejärel käivitada bruteforce.

Sagedusanalüüs

Krüptograafilised rünnakud: seletus segaduses meeltedeleEnamik tekste pole segane. Näiteks ingliskeelsetes tekstides on palju tähti 'e' ja artikleid 'the'; binaarfailides on palju nullbitta täitena infofragmentide vahel. Sagedusanalüüs on iga rünnak, mis kasutab seda fakti.

Kanoniliseks näiteks šifrist, mis on selle rünnaku suhtes haavatav, on lihtne asendussümbol. Sellel šifril on võti, mis esindab tabelit, kus kõik tähed asendatakse. Näiteks 'g' asendatakse 'h'-ga ja 'o' - 'j'-ga, seega sõna 'go' muutub 'hj'-ks. Seda šifrit on raske lihtsate bruteforce'ide kaudu murda, kuna on olemas väga palju võimalikke asendustabeleid. Kui matemaatika teid huvitab, on efektiivne võtme pikkus umbes 88 bitti: see on
Krüptograafilised rünnakud: seletus segaduses meeltedele. Kuid sageduse analüüs suudab ülesande tavaliselt kiiresti lahendada.

Vaatleme järgmist krüpteeritud teksti, mis on töödeldud lihtsa asenduskoodiga:

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

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

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

Paari XD kordub mitme sõna alguses. Eriti kombinatsioon XDeLe vihjab selgelt sõnale these või there, seega jätkame:

theLe ALe UGLe thWNKE WN heAJeN ANF eALth DGLAtWG thAN ALe FLeAUt GR WN OGQL ZDWBGEGZDO

Jätkame eeldustega, et L vastab r, A — a ja nii edasi. Tõenäoliselt tuleb teha mitu katset, kuid võrreldes täieliku bruteforce'iga suudab see rünnak algteksti lühikese aja jooksul taastada:

there are more things in heaven and earth horatio than are dreamt of in your philosophy

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

Sageduse analüüsi idee on fundamentaalsem, kui esmapilgul paistab. Ja seda saab rakendada palju keerulisemate koodide suhtes. Ajaloo jooksul on erinevad koodide konstruktsioonid püüdnud sellistele rünnakutele vastu seista "poli-alfa asendustega". Siin krüpteerimise käigus muudetakse tähemärkide asendamise tabelit keeruliste, kuid ettearvatavate viiside kaudu, mis sõltuvad võtmetest. Kõik need koodid olid oma aja jooksul keeruliseks peetavad; ja siiski suutis tagasihoidlik sageduse analüüs lõpuks nende kõigi murda.

Ajaloo kõige ambitsioonikam poli-alfa kood, ja ilmselt kõige kuulsam, oli Teise maailmasõja "Enigma" kood. See oli võrreldes eelkäijatega suhteliselt keeruline, kuid pika ja pideva töö tulemusena suudsid Briti krüptanalüütikud selle sageduse analüüsi abil murda. Loomulikult ei suutnud nad luua elegantset rünnakut, nagu ülaltoodud; nad pidid võrrelda tuntud avatud ja krüpteeritud tekste (nn "avatud tekstide rünnak") ning isegi provotseerima "Enigma" kasutajaid krüpteerima teatud sõnumeid, et analüüsida tulemusi ("valitud avatud teksti rünnak"). Kuid see ei kergendanud alistatud vaenlaste armeede ja allveelaevade saatust.

Pärast seda triumfi kadus sageduseanalüüs krüptoloogia ajaloost. Kaasaegse digiajastu šifrid on loodud töötama bittide, mitte tähtedega. Veelgi olulisem on, et need šifrid on loodud tume arusaam sellest, mis hiljem sai tuntuks kui Schneieri seadus: igaüks võib luua krüpteerimisalgoritmi, mida ta ise ei suuda murda. Krüpteerimissüsteem ei tohi lihtsalt tunduda keeruline: et tõestada oma väärtust, peab ta läbima halastamatu turvaülevaate paljude krüptoanalüütikute poolt, kes teevad kõik endast oleneva, et šifrit murda. Eelnevate arvutuste

Võtame hüpoteetilise linna Prekam Heights, kus on 200 000 elanikku. Igasse linna majja on keskmiselt paigutatud väärtuslikke esemeid 30 000 dollariga, kuid mitte rohkem kui 50 000 dollariga. Preka turvaturgu monopolitseb ettevõte ACME Industries, mis toodab legendaarseid Coyote ™ klassi ukse lukke. Ekspertide analüüsi kohaselt suudab Coyote klassi lukk murda ainult väga keeruline hüpoteetiline masin, mille loomine nõuab umbes viit aastat ja 50 000 dollari investeeringut. Kas linn on turvaline?

Krüptograafilised rünnakud: seletus segaduses meeltedeleTõenäoliselt mitte. Lõppkokkuvõttes ilmub piisavalt ambitsioonikas kurjategija. Ta mõtleb niimoodi: "Jah, ma pean suuremad ettemaksed tegema. Viis aastat kannatlikku ootamist ja 50 000 dollarit. Aga kui projekt on lõppenud, pääsen ma ligi

kogu selle linna varandusele . Kui mängin oma kaarte õigesti, siis tasub see investeering end mitmekordselt ära."Sarnaselt on ka krüptograafias. Rünnakud konkreetse šifri vastu läbivad halastamatu kulude ja kasu analüüsi. Kui suhe on soodne, ei toimu rünnakut. Kuid rünnakud, mis toimivad kohe paljude võimalike ohvrivast, tasuvad enamikul juhtudel alati ära, ja sellisel juhul on parim projekteerimise praktika eeldada, et need algasid esimesest päevast. Meil on põhimõtteliselt krüptograafiline versioon Murphy seadusest: "Kõik, mis suudab süsteemi murda, murab süsteemi."

Lihtsaim näide krüptosüsteemist, mis on vastuvõtlik eelnevate arvutuste rünnakule, on šifri konstantse algoritmiga, ilma võtme kasutamiseta. Nii oli see kaasuses

Caesari šifrist Caesari šifriga, mis lihtsalt liigendab iga tähte tähestikus kolm tähte edasi (tabel on suletud, seega viimase tähe krüptimine on kolmas). Siin mängib taas rolli Kerckhoffi printsiip: kui süsteem on purustatud, on see igaveseks purustatud.

Kontseptsioon on lihtne. Isegi algaja krüptosüsteemide arendaja tajub tõenäoliselt ohtu ja valmistub vastavalt. Kui vaadata krüptograafia arengut, siis sellised rünnakud on olnud enamus kodeeringutele sobimatud, alates varasematest täiustatud versioonidest Julius Caesari kodeeringule kuni poli-alfa kodeeringute languseni. Sellised rünnakud on naasnud alles tänapäeva krüptograafia ajastul.

See naasmine on tingitud kahest tegurist. Esiteks, lõpuks on tekkinud piisavalt keerulised krüptosüsteemid, kus võimalust eksperimenteerida pärast purustamist ei olnud ilmselge. Teiseks, krüptograafia on saanud nii laialdase leviku, et miljonid mitteprofessionaalid teevad iga päev otsuseid, kus ja milliseid krüptograafia osi uuesti kasutada. Minevikus kulus aega, enne kui eksperdid mõistsid tekkivaid riske ja tõstsid alarmi.

Pange tähele ennustuste rünnakut: artikli lõpus vaatame kaht krüptograafilist näidet reaalsetest olukordadest, kus see mängis olulist rolli.

Interpolatsioon

Teie ees on kuulus detektiiv Sherlock Holmes, kes teeb interpoleerimise rünnaku õnnetule doktor Watsonile:

Ma arvasin kohe, et olete Afganistanist tulnud... Minu mõttekäik oli järgmine: „See inimene on näiliselt arst, kuid tema käitumine on sõjaväeline. Seega on ta sõjaväearst. Ta on just tulnud troopikast - tema nägu on tumedam, kuid see ei ole tema naha loomulik toon, kuna tema randmed on tunduvalt heledamad. Nägu on kurnatud - selgelt on ta palju kannatanud ja tal on olnud tõbi. Ta sai vigastada vasakut kätt - hoiab seda liikumatult ja veidi ebanormaalselt. Kust võis sõjaväearst-inglasena troopikas kannatada ja haava saada? Kindlasti Afganistanis.” Kogu mõttekäik ei kestnud isegi sekundit. Ja siis ütlesin, et olete Afganistanist tulnud, ja te olite üllatunud.

Iga mesilaste korvist suudab Holms eraldi välja nõuda väga vähe teavet. Ta suutis oma järeldusele jõuda vaid siis, kui ta vaatas neid kõiki koos. Samamoodi toimib interpoleerimise rünnak, uurides tuntud avatud ja salastatud tekstide paare, mis on saadud sama võtme kasutamise tulemusena. Iga paarist eraldi teha tõlgendused, mis võimaldavad teha üldise järelduse võtme kohta. Kõik need järeldused on hägused ja näivad olevat kasutud, kuni nad äkitselt ei saavuta kriitilist massi ja ei viida ainukesele võimalikele järeldusele: ükskõik kui ebatõenäoline see ka ei tunduks, peab see olema tõene. Pärast seda kas paljastatakse võti või dekodeerimisprotsess muutub nii välja töötatuks, et seda saab korrata.

Illustreerime lihtsa näitega, kuidas interpoleerimine töötab. Oletame, et tahame lugeda meie vaenlase Bobi isiklikku päevikut. Ta krüpteerib iga numbri oma päevikus lihtsa krüptosüsteemiga, millest ta kuulis ajakirja „Krüptograafia üle naljatamine” reklaamist. Süsteem töötab järgmiselt: Bob valib kaks numbrit, mis talle meeldivad: Krüptograafilised rünnakud: seletus segaduses meeltedele ja Krüptograafilised rünnakud: seletus segaduses meeltedele. Sellest hetkest alates, et krüpteerida mis tahes numbrit Krüptograafilised rünnakud: seletus segaduses meeltedele, arvutab ta Krüptograafilised rünnakud: seletus segaduses meeltedele. Näiteks, kui Bob valis Krüptograafilised rünnakud: seletus segaduses meeltedele ja Krüptograafilised rünnakud: seletus segaduses meeltedele, siis number Krüptograafilised rünnakud: seletus segaduses meeltedele krüpteeritakse kui Krüptograafilised rünnakud: seletus segaduses meeltedele.

Oletame, et 28. detsembril märkame, et Bob kriibib midagi oma päevikus. Kui ta lõpetab, võtame selle vaikselt ja vaatame viimast sisenemist:

Kuupäev: 235/520

Kallis päevik,

Täna oli hea päev. Ülejäänud 64 päeva pärast on mul kohtumine Alicesega, kes elab korteris 843. Ma tõeliselt arvan, et ta võib olla 26!

Kuna me oleme tõeliselt tõsiselt mures, et jälgida Bobi tema kohtingul (selles stsenaariumis oleme 15-aastased), siis on kriitiliselt oluline teada kuupäeva ning Alice aadressi. Õnneks märkame, et Bobi krüptosüsteem on avatuks interpoleerimisrünnaku jaoks. Võime mitte teada Krüptograafilised rünnakud: seletus segaduses meeltedele ja Krüptograafilised rünnakud: seletus segaduses meeltedele, kuid me teame tänase kuupäeva, seega on meil kaks paari „avatud tekst — krüpteeritud tekst”. Nimelt teame, et Krüptograafilised rünnakud: seletus segaduses meeltedele krüpteeritakse Krüptograafilised rünnakud: seletus segaduses meeltedele, vaid Krüptograafilised rünnakud: seletus segaduses meeltedeleKrüptograafilised rünnakud: seletus segaduses meeltedele. Mis me ka kirja paneme:

Krüptograafilised rünnakud: seletus segaduses meeltedele

Krüptograafilised rünnakud: seletus segaduses meeltedele

Kuna me oleme 15-aastased, teame me juba kahe tundmatu kahe võrrandi süsteemist, mis on antud olukorras piisav leidmiseks. Krüptograafilised rünnakud: seletus segaduses meeltedele ja Krüptograafilised rünnakud: seletus segaduses meeltedele ilma erilisi probleeme. Iga paar "avatud tekst-salatetekst" seab piirangu Bobi võtme, ja kaks piirangut koos on piisavad kogu võtme taastamiseks. Meie näites on vastus Krüptograafilised rünnakud: seletus segaduses meeltedele ja Krüptograafilised rünnakud: seletus segaduses meeltedele (kui Krüptograafilised rünnakud: seletus segaduses meeltedele Krüptograafilised rünnakud: seletus segaduses meeltedele, nii et 26 päevikus vastab sõnale ‘the one’, st "see õige" — toimetajalt.

Interpolatsioonirünnakud ei piirdu kindlasti nii lihtsate näidetega. Iga krüptosüsteem, mis VIIB hästi arusaadava matemaatilise objekti ja parameetrite loendi, on interpolatsioonirünnaku ohu all — mida arusaadavam on objekt, seda suurem on risk.

Algajad kaebavad sageli, et krüptograafia on "kunst luua võimalikult koledaid asju". Tõenäoliselt on paljuski süüdi interpolatsioonirünnakud. Bob võib kas kasutada elegantset matemaatilist disaini või kaitsta privaatset kohtumist Alicega — kuid kahjuks ei saa tavaliselt mõlemat korraga. See muutub eriti selgeks, kui lõpuks jõuame avaliku võtmega krüptograafia teemani.

Ristprotokoll/alandamine

Krüptograafilised rünnakud: seletus segaduses meeltedeleFilmis "Illusioonide elamine" (2013) üritab illusioonistide grupp petta ja varastada kogu rikkust korruptsioonist läbinäinud kindlustusmagnaat Arthur Tresslerilt. Arthi pangakontole juurdepääsuks peavad illusioonistid esitama kas tema kasutajanime ja parooli või sundima teda ise pangas kohal olema ja skeemiga osalema.

Mõlemad valikud on väga rasked; poisid on harjunud esinema laval, mitte osalema luureoperatsioonides. Seetõttu valivad nad kolmanda võimaluse: nende kaaslane helistab panka ja esitades end Arthurina. Pank esitab mõningaid küsimusi isikutuvastamiseks, nagu on tema onu nimi ja esimese lemmiklooma nimi; meie kangelased kergesti saavad Arthurlt nende teabe oskusliku sotsiaalse inseneritegevuse kaudu. Sellest hetkest alates ei oma hea parooli turvalisus enam tähtsust.

(Linna legendsi kohaselt, mida me isiklikult kontrollisime ja kinnitasime, sattus krüptograaf Eli Biham kunagi panga kassapidajaga, kes nõudis salajase küsimuse seadmist. Kui kassapidaja küsis emaema nime, hakkas Biham dikteerima: "Suurtäht X, väike y, kolm...").

Nagu ka krüptograafias, kui sama vara kaitsmiseks kasutatakse paralleelselt kahte krüptograafilist protokolli, kusjuures üks on oluliselt nõrgem kui teine. Lõppkokkuvõttes muutub süsteem ristprotokollide rünnakute jaoks haavatavaks, kus nõrgemat protokolli rünnatakse, et jõuda auhinnani, puudutamata tugevamat.

Mõnedes keerulistes olukordades ei piisa lihtsalt serveriga ühenduse võtmisest nõrgema protokolli kaudu, vaid on vajalik ka seadusliku kliendi tahtmatu osalus. Seda saab korraldada nii-öelda allakaudumise rünnaku (downgrade) abil. Selle rünnaku mõistmiseks eeldame, et meie illusioonistidel on keerulisem ülesanne kui filmis. Oletame, et pangatöötajal (kassas) ja Arthuril tekkisid ettenägematud asjaolud, millega seoses toimus järgmine dialoog:

Häkker: Tere? Siin on Arthur Tressler. Soovin taastada oma parooli.

Kassas: Suurepärane. Palun vaadake oma isiklikku saladuste raamatust lehekülg 28, sõna 3. Kõik järgmised sõnumid krüpteeritakse selle konkreetse sõnaga võtmeks. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV...

Häkker: Hei, hei, oota, oota. Kas see tõesti on vajalik? Kas me ei saaks lihtsalt rääkida nagu normaalsed inimesed?

Kassas: Ma ei soovitaks seda teha.

Häkker: Ma lihtsalt... kuula, mul on olnud kehv päev, kas sa saad aru? Olen VIP-klient ja ei ole tujus nende jaburate koodiraamatute kallal nokitseda.

Kassas: Olgu. Kui sa nii soovid, härra Tressler. Mida soovite?

Häkker: Palun, soovin kanda kõik oma raha Arthur Tressleri ohvrite riiklikku fondi.

(Paus).

Kassas: Selge. Palun sisestage oma PIN-kood suurte tehingute jaoks.

Häkker: Mis?

Kassas: Teie isikliku sooviga on sellise suurusega tehingute jaoks vajalik PIN-koodi sisestamine. Selle koodi said te konto avamisel.

Häkker:… Ma kaotasin selle. Kas see tõesti on vajalik? Kas sa ei saa lihtsalt tehingut heaks kiita?

Kassas: Ei. Vabandust, härra Tressler. Taaskord on see teie soovitud turvameede. Kui soovite, võime saata uue PIN-koodi teie postkasti.

Meie kangelased lükkavad operatsiooni edasi. Nad kuulavad mitmeid suuri Teressleri tehinguid, lootes kuulda PIN-koodi; kuid iga kord muutub vestlus krüpteeritud müra, enne kui seal kostub midagi huvitavat. Lõ finally, ühel kaunil päeval viiakse plaan ellu. Nad ootavad kannatlikult hetke, mil Teressler peab telefonitsi tegema suurt tehingut, ta liitub liiniga ja siis…

Teressler: Tere. Sooviksin palun teha kaugtehingu.

Kassas: Suurepärane. Palun vaadake oma isiklikku saladuskoodide raamat, lehekülg…

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

Kassas: — #@$#@$#*@$$@#* krüpteeritakse selle sõna võtmena. AAAYRR PLRQRZ MMNJK LOJBAN…

Teressler: Vabandust, ma ei saanud täpselt aru. Kas saaksite korrata? Millisel leheküljel? Mis sõna?

Kassas: See on lehekülg @#$@#*$)#*#@()#@$(#@*$(#@*.

Teressler: Mis?

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

Teressler: Tõsiselt! Piisab juba! Teie turvaprotokoll on nagu tsirkus. Ma tean, et saate lihtsalt normaalselt minuga rääkida.

Kassas: Ma ei soovita…

Teressler: Aga ma ei soovita sul mu aega raisata. Ma ei taha sellest enam kuulda, kuni probleemid teie telefoniliiniga on lahendatud. Kas me saame selle tehingu teha või mitte?

Kassas:… jah. Hästi. Mida te soovite?

Teressler: Sooviksin kanda üle $20,000 ettevõttele Lord Business Investments, arve number…

Kassas: Poisikene, palun. See on suur tehing. Palun andke oma PIN-kood suurte tehingute jaoks.

Teressler: Mis? Ah, õige. 1234.

Siin on langustunne. Nõrgem protokoll "rääkige lihtsalt otse" mõeldi algselt kui valik äärmuslik lahendus. Ja ometigi oleme siin.

Te võite küsida, kes normaalne inimene projekteeriks tõelise "turvalise, kuni küsitakse vastupidist" süsteemi, nagu ülalpool kirjeldatud. Kuid nagu väljamõeldud pank võtab riski, et hoida kliente, kes ei armasta krüptograafiat, kaaluvad ka süsteemid sageli nõudmisi, mis on ükskõiksed või isegi selgelt vaenulikud turvalisusele.

Just such a story happened with the SSLv2 protocol in 1995. The U.S. government had long viewed cryptography as a weapon best kept away from external and internal enemies. Fragments of code were individually approved for export from the U.S., often under the condition of deliberately weakening the algorithm. The company Netscape, developer of the most popular browser Netscape Navigator, was granted permission for SSLv2 only with an initially vulnerable RSA 512-bit key (and 40 bits for RC4).

By the turn of the millennium, the rules had softened, and access to modern encryption became widely available. However, clients and servers maintained weakened 'export' cryptography for many years due to the same inertia that preserves support for any outdated system. Clients thought they might encounter a server that didn't support anything else. Servers did the same. Of course, the SSL protocol dictates that clients and servers should never use a weak protocol when a better one is available. But the same premise applied to Tresstler and his bank.

This theory was applied in two high-profile attacks that shook the security of the SSL protocol in 2015, both discovered by Microsoft researchers and INRIA. First, in February, the details of the FREAK attack were disclosed, and three months later — another similar attack called Logjam, which we will discuss in more detail when we move on to attacks on public key cryptography.

Krüptograafilised rünnakud: seletus segaduses meeltedeleHaavatavus FREAK (also known as 'Smack TLS') manifested when researchers analyzed TLS client/server implementations and discovered a curious flaw. In these implementations, if a client does not even request the use of weak export cryptography, but the server still responds with such keys — the client says 'Okay then' and switches to the weak cipher suite.

Sel ajal peeti ekspordikrüptograafiat aegunuks ja keelatud kasutamiseks, mistõttu rünnak oli tõeline šokk ja puudutas paljusid olulisi domeene, sealhulgas Valge Maja, USA maksuameti ja NSA veebisaite. Veelgi hullem, selgus, et paljud haavatavad serverid optimeerisid jõudlust, kasutades samu võtmeid uuesti, mitte genereerides uusi igaks sessiooniks. See võimaldas pärast protokolli langetamist läbi viia ka eelseisvaliku rünnaku: ühe võtme häkkimine jäi suhteliselt kulukaks (100 dollarit ja 12 tundi avaldamise ajal), kuid rünnaku praktiline hind ühenduse kohta vähenes oluliselt. Üks kord serveri võtme leidmine – ja krüptograafia rikkumine kõikide järgmiste ühenduste jaoks alates sellest hetkest.

Ja enne kui edasi liikuda, tuleb mainida üht arenenud rünnakut...

Orakli rünnak

Krüptograafilised rünnakud: seletus segaduses meeltedeleMoxie Marlinspike on kõige tuntum kui platvormidevahelise krüptomessengeri Signal looja; aga isiklikult meeldib meile üks tema vähem tuntud uuendus – krüptograafilise hukule määramise printsiip (Cryptographic Doom Principle). Veidi parafraseerides võib öelda järgmist: "Kui protokoll teeb mõnda krüptograafilist toimingut potentsiaalselt kahjuliku allika sõnumiga ja käitub erinevalt vastavalt tulemusele, on see hukule määratud." Või teravamas vormis: "Ära võtta vaenlasest teavet töötlemiseks, ja kui pead, siis vähemalt ära näita tulemust."

Jätame kõrvale mälupaagid, käsu süstekud ja sellele sarnased; need jäävad arutelu väliselt. "Hukule määramise printsiibi" rikkumine viib tõsiste krüptograafia häkkimisteni, kuna protokoll käitub täpselt nii, nagu tal on ette nähtud.

Näiteks võtame kujuteldava konstruktsiooni haavatava asendussala pealt ja demonstreerime seejärel võimalikku rünnakut. Kuigi oleme juba näinud asendussala rünnakut frekventsanalüüsi abil, ei ole see lihtsalt "veel üks viis sama sala murda". Vastupidi, orakli rünnakud on palju kaasaegsem leiutis, mida saab rakendada paljudele olukordadele, kus frekventsanalüüs ebaõnnestub, ning me näeme selle demonstreerimist järgmisel osal. Siin on lihtne sala valitud vaid selleks, et näide oleks selgem.

Nii, Alisa ja Bob suhtlevad lihtsa asendusšifri abil, kasutades neile vaid teadaolevat võtit. Nad suhtuvad sõnumite pikkusesse väga tõsiselt: nende pikkus on täpselt 20 sümbolit. Seetõttu leidsid nad, et kui keegi soovib saata lühemat sõnumit, peab ta sõnumi lõppu lisama vale teksti, et see oleks täpselt 20 sümbolit. Pärast mõningast arutelu otsustasid nad, et aktsepteerivad ainult järgmisi vale tekste: a, bb, ccc, dddd jne. Nii on vale tekst mistahes vajaliku pikkusega teada.

Kui Alisa või Bob saavad sõnumi, kontrollivad nad esmalt, et sõnum oleks õige pikkusega (20 sümbolit) ja et sufiks oleks õige vale tekst. Kui see ei ole nii, vastavad nad sobiva veateatega. Kui tekst ja vale tekst on korras, loeb vastuvõtja sõnumi ise ja saadab šifreeritud vastuse.

Rünnaku käigus esitleb kurjategija end Bobina ja saadab Alisale vale sõnumeid. Sõnumid on täielik jaburus — kurjategijal ei ole võtit ning seetõttu ei saa ta koostada tähenduslikku sõnumit. Kuid kuna protokoll rikub hukatuslikkuse põhimõtet, suudab kurjategija siiski kutsuda Alisat lõksu, nii et ta paljastab teavet võtme kohta, nagu näidatud allpool.

Häkker: PREWF ZHJKL MMMN. LA

Alisa: Vale vale tekst.

Häkker: PREWF ZHJKL MMMN. LB

Alisa: Vale vale tekst.

Häkker: PREWF ZHJKL MMMN. LC

Alisa: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

Lõhkuja ei tea, mida Alisa just ütles, kuid märgib, et sümbol C peab vastama a, kuna Alisa aktsepteeris vale teksti.

Häkker: REWF ZHJKL MMMN. LAA

Alisa: Vale vale tekst.

Häkker: REWF ZHJKL MMMN. LBB

Alisa: Vale vale tekst.

Pärast mitmeid katseid…

Häkker: REWF ZHJKL MMMN. LGG

Alisa: Vale vale tekst.

Häkker: REWF ZHJKL MMMN. LHH

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

Taaskord ei tea lõhkuja, mida Alisa just ütles, kuid märgib, et H peaks vastama b-le, kuna Alisa aktsepteeris vale teksti.

Ja nii edasi, kuni kurjategija tunneb iga sümboli tähendust.

Esmapilgul meenutab meetod ründetaktikat, mis põhineb valitud selgetekstil. Lõppude lõpuks valib ründaja šifravälistuse ja server töötleb neid usinalt. Peamine erinevus, mis muudab need rünnakud teostatavaks reaalsetes oludes, on see, et ründaja ei vaja juurdepääsu tegelikule dekrüptimisele — piisab serveri vastusest, isegi kui see on nii süütu kui "Vale vale tekst."

Kuigi see konkreetne rünnak on õpetlik, ei tohiks liiga palju keskenduda „vale teksti“ skeemi spetsiifikale, ühele konkreetsele krüptosüsteemile või täpsete sõnumite järgnevusele, mida ründaja saadab. Peamine ide on see, kuidas Alice reageerib erinevalt, tuginedes avatud teksti omadustele, tehes seda ilma kontrollimata, kas vastav šifreeritud tekst on tõeliselt saanud usaldusväärselt osapoolelt. Seeläbi võimaldab Alice ründajal tõmmata tema vastustest välja salajast teavet.

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 teatud kujul teostatavaks. Selle rünnaku põhieesmärk aitas tuvastada mitmeid turvavigu, mida me varsti uurime; kuid enne seda tuleks õppida mõned teoreetilised õppetunnid. Kuidas kasutada seda väljamõeldud „Alice'i stsenaariumi“ rünnaku raames, mis oleks suuteline toimima tänapäeva reaalses krüptos ? Kas see on üldse võimalik, isegi teoreetiliselt?

1998. aastal vastas Šveitsi krüptograaf Daniel Bleichenbacher sellele küsimusele jaatavalt. Ta demonstreeris oraklirünnakut laialdaselt kasutatavas RSA avaliku võtme krüptosüsteemis, kasutades teatud sõnumiskeemi. Mõnedes RSA teostustes vastab server erinevate veateadete põhjal, sõltuvalt sellest, kas selgetekst vastab skeemile või mitte; seda piisas rünnaku läbiviimiseks.

Neli aastat hiljem, 2002. aastal, demonstreeris Prantsuse krüptograaf Serge Vaudenay päringurünnakut, mis oli peaaegu sama, nagu eespool kirjeldatud Alice'i stsenaariumis — välja arvatud, et väljamõeldud krüpti asemel murdis ta terve auväärsete klassi kaasaegsete krüptode kallal, mida inimesed tegelikult kasutavad. Eriti on Vaudenay rünnak suunatud fikseeritud sisendiga krüptodele („blokeerivad krüptod”), kui neid kasutatakse nn „CBC krüpteerimisrežiimis” ja teatud populaarse täitmischema järgi, mis on peamiselt samaväärne Alice'i stsenaariumis esitatud skeemiga.

Samuti 2002. aastal pakkus Ameerika krüptograaf John Kelsey — kaasautor Twofish — välja erinevaid päringurünnakutevariante süsteemidele, mis tihendavad sõnumeid ja seejärel krüptivad need. Neist kõige silmapaistvam oli rünnak, mis kasutas sageli võimalust saada esmase avatud teksti algne pikkus krüptitud teksti pikkusest. Teoreetiliselt võimaldab see läbi viia päringurünnaku, mis taastab osa algsest avatud tekstist.

Edasi anname põhjalikuma ülevaate Vaudenay ja Kelsey rünnakutest (toome lähemalt välja Blychenbaheri rünnaku, kui liikume edasi avaliku võtme krüptograafiale suunatud rünnakutele). Hoolimata meie pingutustest muutub tekst natuke tehniliseks; seetõttu, kui ülaltoodud on piisav, jagage järgmised kaks jaotust.

Vaudenay rünnak

Vaudenay rünnaku mõistmiseks peab esmalt rääkima natuke rohkem blokkide krüptodest ja krüpteerimisrežiimidest. „Blokkrüüpt” on nagu juba mainitud, krüpt, mis võtab võtme ja kindla fikseeritud pikkusega sisendi („bloki pikkus”) ning annab sama pikkusega krüpteeritud bloki. Blokkrüptod on laialdaselt kasutusel ja neid peetakse suhteliselt turvaliseks. Nüüdseks pensionile jäänud DES, mida peetakse esimese kaasaegse krüptona, oli blokkrüpt. Nagu eespool mainitud, kehtib sama ka tänapäeval laialdaselt kasutatava AES-i kohta.

Kahjuks on plokkšifritel üks ilmne nõrkus. Tüüpiline ploki suurus on 128 bitti ehk 16 sümbolit. On selge, et tänapäeva krüptograafia nõuab töötlust suuremate sisendite suurustega, ja siin tulevad mängu šifeerimisrežiimid. Šifreeerimisrežiim on sisuliselt nipp: see on viis, kuidas rakendada plokkšifrit, mis võtab sisendit ainult kindla suurusega, sisenditele, mille pikkus on meelevaldne.

Vodene rünnak on suunatud populaarsele CBC (Cipher Block Chaining, plokkide šifrite ahel) töötamise režiimile. Rünnak käsitleb aluseks oleva plokkšifri kui maagilist, tugevat musta kasti ning möödub täielikult selle turvalisusest.

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

Krüptograafilised rünnakud: seletus segaduses meeltedele

Krüptograafilised rünnakud: seletus segaduses meeltedele

Ringi sees olev pluss tähistab XOR-operatsiooni (väljaarvamise „VÕI”). Näiteks on teise šifrite ploki saadud:

  1. Teise avatud teksti ploki XOR-operatsiooni teostamisega esimese šifrite plokiga.
  2. Saadud ploki šifreerimisega plokkšifri abil, kasutades võtit.

Kuna CBC kasutab oluliselt binaarset XOR-operatsiooni, võtame hetke, et meenutada selle omadusi:

  • Idempoteentsus: Krüptograafilised rünnakud: seletus segaduses meeltedele
  • Kommutatiivsuse omadus: Krüptograafilised rünnakud: seletus segaduses meeltedele
  • Assotsiatiivsus: Krüptograafilised rünnakud: seletus segaduses meeltedele
  • Oma tagasi kirjutamise omadus: Krüptograafilised rünnakud: seletus segaduses meeltedele
  • Baitide kaupa: bait n on Krüptograafilised rünnakud: seletus segaduses meeltedele =(bait n on Krüptograafilised rünnakud: seletus segaduses meeltedele) Krüptograafilised rünnakud: seletus segaduses meeltedele (bait n on Krüptograafilised rünnakud: seletus segaduses meeltedele)

Reeglina viitavad need omadused sellele, et kui meil on võrrand, mis sisaldab XOR-operatsioone ja ühte tundmatut, saab selle lahendada. Näiteks, kui me teame, et Krüptograafilised rünnakud: seletus segaduses meeltedele tundmatu Krüptograafilised rünnakud: seletus segaduses meeltedele ja tuntud Krüptograafilised rünnakud: seletus segaduses meeltedele ja Krüptograafilised rünnakud: seletus segaduses meeltedele, siis saame toetuda eespool mainitud omadustele, et lahendada võrrand Krüptograafilised rünnakud: seletus segaduses meeltedele. Rakendades XOR-i mõlemal poolel võrrandiga Krüptograafilised rünnakud: seletus segaduses meeltedele, saame Krüptograafilised rünnakud: seletus segaduses meeltedele. Kohe saab sellest väga aktuaalne.

Meie Alice'i stsenaariumi ja Vodene rünnaku vahel on kaks vähenenud erinevust ja üks peamine erinevus. Kaks vähenenud:

  • Alice'i stsenaariumis ootas avatud tekstide lõppemist sümbolitega a, bb, ccc ja nii edasi. Vodene rünnakus ootab ohver selle asemel, et avatud tekstid lõppeksid N korda bait N (st heksadetsimaalses 01 või 02 02, või 03 03 03 ja nii edasi). See on puhtalt kosmeetiline erinevus.
  • Alicia stsenaarios oli lihtne öelda, kas Alicia võttis sõnumi vastu, põhinedes vastusele „Vale vale tekst“. Vodené rünnakus on vajalik suurem analüüs ja täpne teostus ohvri poolel; aga kokkuvõtteks eeldame, et see analüüs on endiselt võimalik.

Peamine erinevus:

  • Kuna me ei kasuta sama krüptosüsteemi, on seos ründaja kontrolli all olevate krüpteeritud tekstide baitide ja saladuste (võti ja selge tekst) vahel ilmselgelt erinev. Seetõttu peab ründaja šifritekstide genereerimisel ja serveri vastuste tõlgendamisel kasutama teistsugust strateegiat.

See on peamine erinevus - viimane element mõistatuses, et mõista Vodene rünnakut, seega mõtleme hetkeks, miks ja kuidas võiks üldse korraldada oraku rünnaku CBC-le.

Oletame, et meil on 247 plokist koosnev CBC šifri tekst, ja meil on plaanis see dešifreerida. Saame saata serverile vale sõnumeid, nagu varem saime Alicia puhul vale sõnumeid saata. Server dešifreerib sõnumeid meie jaoks, kuid ei näita dešifreerimist - selle asemel teatab server, nagu Alicia puhul, ainult üht bitti teavet: kas selgel tekstil on lubatud täitmine või mitte.

Pange tähele, et Alicia stsenaariumis olid meil järgmised suhted:

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

Nimetame seda "Alicia võrrandiks". Me kontrollisime šifri teksti; server (Alicia) edastas häguseid teateid saadud selge tekstist; ja see võimaldas meil välja tuua teavet viimase teguri - võti. Analoogia järgi, kui suudame leida sellise seose CBC stsenaariumi puhul, võiksime seal ekstraheerida teatud salajast teavet.

Õnneks on seal tõepoolest olemas suhted, mida saame kasutada. Vaatame plokkšifre dešifreerimise lõppkutsumise väljundit ja nimetame seda Krüptograafilised rünnakud: seletus segaduses meeltedele. Samuti nimetame selge teksti plokid Krüptograafilised rünnakud: seletus segaduses meeltedele ja šifri teksti plokid Krüptograafilised rünnakud: seletus segaduses meeltedele. Vaadake veel kord CBC diagrammi ja pöörake tähelepanu, mis välja tuleb:

Krüptograafilised rünnakud: seletus segaduses meeltedele

Nimetame seda "CBC võrrandiks."

Alice'i stsenaariumis, kontrollides šifriteksti ja jälgides avateabe leket, suudame korraldada rünnaku, mis taastab kolmanda liikme valemis - võtme. CBC stsenaariumis jälgime samuti šifriteksti ja vaatame, kuidas avateabe lekkeid toimub. Kui analoogia kehtib, saame teavet Krüptograafilised rünnakud: seletus segaduses meeltedele.

Eeldame, et oleme tõepoolest taastanud Krüptograafilised rünnakud: seletus segaduses meeltedele, mis siis? Noh, siis saame kohe välja anda kogu viimase avaliku teksti ploki (Krüptograafilised rünnakud: seletus segaduses meeltedele), lihtsalt sisestades Krüptograafilised rünnakud: seletus segaduses meeltedele (mida me juba omame) ja
saadud Krüptograafilised rünnakud: seletus segaduses meeltedele CBC valemisse.

Nii et oleme rünnaku üldplaani suhtes optimistlikud ning on aeg üksikasjad välja töötada. Pöörame tähelepanu sellele, kuidas serveris toimub avateabe lekkimine. Alice'i stsenaariumis toimus leke ainult siis, kui $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ lõppes real a (või bb, ja nii edasi, kuid tõenäosus, et need tingimused juhuslikult täidetakse, on väga väike). Samamoodi CBC korral aktsepteerib server täitmise, kui ja ainult siis, kui Krüptograafilised rünnakud: seletus segaduses meeltedele lõppeb arvestuslikuga 01. Nii et proovime sama trikki: saatke vale šifritekstid koos meie enda vale väärtustega Krüptograafilised rünnakud: seletus segaduses meeltedele, kuni server aktsepteerib täitmise.

Kui server aktsepteerib täitmist mõne meie vale sõnumi jaoks, tähendab see, et:

Krüptograafilised rünnakud: seletus segaduses meeltedele

Nüüd kasutame XOR-i byte-by-byte omadust:

Krüptograafilised rünnakud: seletus segaduses meeltedele

Me teame esimest ja kolmandat liiget. Ja me oleme juba näinud, et see võimaldab taastada ülejäänud liikme - viimase byte'i Krüptograafilised rünnakud: seletus segaduses meeltedele:

Krüptograafilised rünnakud: seletus segaduses meeltedele

See annab meile samuti viimase byte'i lõplikust avatud tekstiplokist läbi CBC valemi ja byte-by-byte omaduse.

Me oleksime võinud sellega lõpetada ja leppida sellega, et oleme rünnanud teoreetiliselt vastupidavat krüptograafiat. Kuid tegelikult saame teha palju enamat: saame tõepoolest taastada kogu teksti. See nõuab teatud trikki, mida Alice'i algses stsenaariumis ei olnud ning see ei kuulu rünnaku orakli kohustuslikesse tingimustesse, kuid meetod on ikkagi uurimist väärt.

Selle mõistmiseks pöörake esmalt tähelepanu sellele, et õige lõppbyte'i väärtuse tuletamine Krüptograafilised rünnakud: seletus segaduses meeltedele Meil on uus võime. Nüüd, kui krüptotekste valeandmed, saame hallata vastava selge teksti viimast baiti. See on jälle seotud CBC võrrandi ja baitide omadustega:

Krüptograafilised rünnakud: seletus segaduses meeltedele

Kuna me nüüd teame teist liiget, saame kasutada oma kontrolli esimesel, et hallata kolmandat. Lihtsalt arvutame:

Krüptograafilised rünnakud: seletus segaduses meeltedele

Varem ei saanud me seda teha, kuna meil ei olnud veel viimast baiti. Krüptograafilised rünnakud: seletus segaduses meeltedele.

Kuidas see meid aitab? Oletame, et me hakkame looma kõiki krüptotekste nii, et vastavas selges tekstis viimane bait on 02. Nüüd aktsepteerib server täiendust ainult siis, kui selge tekst lõpeb 02 02. Kuna me oleme viimast baiti parandanud, juhtub see ainult siis, kui eelviimane bait selges tekstis on samuti 02. Me jätkame vale krüptotekstiblockide saatmist, muutes eelviimast baiti, kuni server aktsepteerib täienduse ühe jaoks. Sel hetkel saame:

Krüptograafilised rünnakud: seletus segaduses meeltedele

Ja me taastame eelviimase baiti Krüptograafilised rünnakud: seletus segaduses meeltedele täpselt nii, nagu me taastame viimase. Jätkame samas vaimus: parandame selge teksti viimased kaks baiti kuju 03 03, kordame seda rünnakut kolmanda viimasena baiti ja nii edasi, lõpuks täieliku taastamisega Krüptograafilised rünnakud: seletus segaduses meeltedele.

Kuidas on teiste tekstidega? Pange tähele, et väärtus Krüptograafilised rünnakud: seletus segaduses meeltedele on tegelikult $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$. Me võime panna mõne teise ploki selle asemel Krüptograafilised rünnakud: seletus segaduses meeltedele, ja rünnak on endiselt edukas. Tegelikult saame paluda serveril teha $inline$text{BLOCK_DECRYPT}$inline$ mis tahes andmete jaoks. Sel hetkel on mäng läbi - me saame dekodeerida mis tahes krüptoteksti (vaadake uuesti CBC dekodeerimise diagrammi, et veenduda, et see on nii; ja pange tähele, et IV vektor on avalik).

See konkreetne meetod mängib kriitilist rolli orakli rünnakus, millega me hiljem kokku puutume.

Kelsey rünnak

Meie vaimule lähedane John Kelsey selgitas põhimõtteid, mis seisavad paljude võimalike rünnakute taga, mitte ainult konkreetse rünnaku konkreetse krüpti üksikasju. Tema 2002. aasta artikkel on uurimus võimalikest rünnakutest krüptitud ja kokkusurutud andmete vastu. Kas te arvate, et rünnaku tegemiseks piisab ainult teabest, et andmed olid enne krüpteerimist kokku surutud? Selgub, et see on piisav.

See üllatav tulemus põhineb kahe põhimõtte peal. Esiteks on avatud teksti pikkuse ja šifreeritud teksti pikkuse vahel tugev seos; paljude krüptogrammide puhul on tegemist ka täpsete võrdsuste suhtega. Teiseks, kui rakendatakse tihendamist, on samuti tugev seos tihendatud sõnumi pikkuse ja avatud teksti "mürasuse" taseme vahel, st kordumatute märkide osakaalu (tehniline termin – „kõrge entropia”).

Kuna reeglit praktikas näha, vaatame kaht avatud teksti:

Avatud tekst 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Avatud tekst 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

Oletame, et mõlemad avatud tekstid on tihendatud ja seejärel šifreeritud. Saate kaks saadud šifreeritud teksti ja peate arvama, kumb šifreeritud tekst vastab kummale avatud tekstile:

Šifreeritud tekst 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

Šifreeritud tekst 2: DWKJZXYU

Vastus on selge. Avatud tekstide seas sai ainult avatud tekst 1 olla tihendatud teise šifreeritud teksti nappi pikkusesse. Me jõudsime sellele järeldusele, teadmata midagi tihendamisalgoritmist, krüpteerimisvõtme või isegi šifri enda kohta. Võrreldes võimalike krüptograafiliste rünnakute hierarhiaga on see omamoodi hullus.

Kelsey osutab veel, et teatud ebatavaliste olude korral võib seda põhimõtet kasutada ka orakli rünnaku läbiviimiseks. Eelkõige kirjeldab ta, kuidas ründaja võib taastada salajase avatud teksti, kui ta suudab sundida serverit krüpteerima vormiandmeid (avatud tekst, millele järgneb Krüptograafilised rünnakud: seletus segaduses meeltedele, samal ajal kui ta kontrollib Krüptograafilised rünnakud: seletus segaduses meeltedele ja suudab kuidagi kontrollida šifreeritud tulemuse pikkust.

Taaskord, nagu teiste orakli rünnakute puhul, on meil suhe:

Krüptograafilised rünnakud: seletus segaduses meeltedele

Taaskord kontrollime ühte elementi (Krüptograafilised rünnakud: seletus segaduses meeltedele), näeme teise elemendi (šifreeritud teksti) kohta väikest teabe leket ja püüame taastada viimast (avatud teksti). Kuigi see on analoogne, on see võrreldes teiste orakli rünnakutega, mida me näinud oleme, mõnevõrra ebatavaline olukord.

Kuna illustreerida, kuidas selline rünnak võib töötada, kasutame väljamõeldud tihendusmeetodit, mille me just välja mõtlesime: TOYZIP. See otsib tekstiridasid, mis on tekstis juba varem esinenud, ja asendab need kolme täitebaidiga, mis näitavad, kust leida varasem näide rida ja kui mitu korda see seal esineb. Näiteks rida helloworldhello võib olla tihendatud helloworld[00][00][05] pikkusega 13 bitti võrreldes originaali 15 bitti.

Eeldame, et häkker üritab taastada vormi avatud teksti password=..., kus parool ise on teadmata. Kelsey rünnakumudeli kohaselt võib häkker paluda serveril tihendada ja seejärel krüpteerida vormi sõnumeid (avatud tekst, millele järgneb Krüptograafilised rünnakud: seletus segaduses meeltedele), kus Krüptograafilised rünnakud: seletus segaduses meeltedele – on suvaline tekst. Kui server on töö lõpetanud, teatab ta tulemuse pikkuse. Rünnak käib järgmiselt:

Häkker: Palun tihenda ja krüpteeri avatud tekst ilma täitesõnadeta.

Server: Tulemuse pikkus on 14.

Häkker: Palun tihenda ja krüpteeri avatud tekst, millele on lisatud password=a.

Server: Tulemuse pikkus on 18.

Häkker märgib: [originaal 14] + [kolm bitti, mis asendasid password=] + a

Häkker: Palun tihenda ja krüpteeri avatud tekst, millele on lisatud password=b.

Server: Tulemuse pikkus on 18.

Häkker: Palun tihenda ja krüpteeri avatud tekst, millele on lisatud password=с.

Server: Tulemuse pikkus on 17.

Häkker märgib: [originaal 14] + [kolm bitti, mis asendasid password=c]. See viitab sellele, et originaalne avatud tekst sisaldab stringi password=c. See tähendab, et parool algab tähega c

Häkker: Palun tihenda ja krüpteeri avatud tekst, millele on lisatud password=сa.

Server: Tulemuse pikkus on 18.

Häkker märgib: [originaal 14] + [kolm bitti, mis asendasid password=с] + a

Häkker: Palun tihenda ja krüpteeri avatud tekst, millele on lisatud password=сb.

Server: Tulemuse pikkus on 18.

(… mõni aeg hiljem…)

Häkker: Palun tihenda ja krüpteeri avatud tekst, millele on lisatud password=со.

Server: Tulemuse pikkus on 17.

Häkker märgib: [originaal 14] + [kolm bitti, mis asendasid password=co]. Sama loogika kohaselt järeldab häkker, et parool algab tähtedega co

Ja nii edasi, kuni kogu parool on taastatud.

Lugejale võib tunduda, et see on puhtalt akadeemiline harjutus ja sellist rünnaku stsenaariumi ei juhtu kunagi päris maailmas. Kahjuks, nagu me peagi näeme, ei ole krüptograafias parem midagi liiga kindlalt väita.

Tuntud haavatavused: CRIME, POODLE, DROWN

Lõpuks, pärast teooria põhjalikku uurimist, võime vaadata, kuidas neid meetodeid rakendatakse reaalses krüptograafias.

CRIME

Krüptograafilised rünnakud: seletus segaduses meeltedeleKui rünnak on suunatud ohvri brauserile ja võrgule, on midagi lihtsam ja midagi keerulisem. Näiteks on ohvri liikluse nägemine lihtne: piisab, kui istuda koos temaga samas kohvikus WiFi-s. Seetõttu soovitatakse potentsiaalsetele ohvritele (s.t. kõigile) üldiselt kasutada krüpteeritud ühendust. See on keerulisem, kuid siiski võimalik, kui teha HTTP-päringud ohvri nimel mõnele kolmandale saidile (näiteks Google). Kurjategija peab petma ohvrit külastama pahatahtlikku veebilehte, mis sisaldab skripti, mis teeb päringu. Veebibrauser pakub automaatselt vastavat sessiooniküpsist.

See tundub uskumatuna. Kui Bob külastab evil.com, kas see saidi skript lihtsalt palub Google'il Bobi parooli e-posti teel saata attacker@evil.com? Ну, в теории да, но на самом деле нет. Такой сценарий называется атакой на подделку межсайтовых запросов (Ristsaidite rünne, CSRF), ja see oli populaarne umbes 90ndate keskpaiku. Täna, kui evil.com keegi sellist trikki proovib, vastab Google (või ükskõik milline austatud sait) tavaliselt: „Suurepärane, aga sinu CSRF-token selle tehingu jaoks on... öö... kolm triljonit ja seitse. Palun korda seda numbri“. Kaasaegsed brauserid rakendavad midagi, mida nimetatakse „samade allikate poliitikaks“ (same-origin policy), mille kohaselt ei pääse saidi A skriptid ligi saidi B kaudu edastatud teabele. Seetõttu ei saa saidi skript evil.com saata päringuid google.com, kuid ei saa lugeda vastuseid ega tegelikult tehingut lõpetada.

Peame rõhutama, et kui Bob ei kasuta krüpteeritud ühendust, on kõik need kaitsed mõttetud. Häkker võib lihtsalt lugeda Bobi liiklust ja taastada Google'i seansiküpsise. Selle küpsisega avab ta lihtsalt uue Google'i vahekaardi, ilma et oleks välja logitud oma brauserist, ja esitleb end Bobina, mitte tülikate samade allikate poliitikaga kokku puutudes. Kuid kahjuks häkkeri jaoks on sellised juhtumid järjest harvemad. Internet kui tervik on ammu kuulutanud sõda krüpteerimata ühendustele ja Bobi väljuv liiklus on tõenäoliselt krüpteeritud, ükskõik kas talle meeldib või mitte. Lisaks on alates protokolli juurutamise algusest ka kompressioon enne krüpteerimist; see oli tavapraktika viivituse vähendamiseks.

Siia astub mängu CRIME (Compression Ratio Infoleak Made Easy, lihtne leaks kompressioonikoeffi kaudu). Rünnak, mille tuvastasid septembris 2012 turva-uuringud Juliano Rizzo ja Thai Duong. Oleme juba tutvunud kogu teoreetilise baasi, et mõista, mida nad tegid ja kuidas. Häkker võib sundida Bobi brauserit saatma päringuid Google'ile ja seejärel kuulata vastuseid kohalikus võrgus kompressitud, krüpteeritud kujul. Seetõttu on meil:

Krüptograafilised rünnakud: seletus segaduses meeltedele

Siin kontrollib häkker päringut ja pääseb ligi liiklusniffenile, sealhulgas pakettide suurusele. Kelsey väljamõeldud stsenaarium on saanud tõeks.

Mõistes teooriat, lõid CRIME autorid eksploidit, mis suudab varastada seansiküpsiseid laia valiku veebisaitide jaoks, sealhulgas Gmail, Twitter, Dropbox ja Github. Haavatavus mõjutas enamikku kaasaegsetest veebibrauseritest, mille tõttu väljastati plaastrid, mis vaikimisi matid SSL-i tihendamise funktsiooni, et see üldse mitte kasutusse ei läheks. Ainsaks haavatavuse eest kaitstud brauseriks jäi austatud Internet Explorer, mis ei ole kunagi SSL-i tihendust kasutanud.

POODLE

Krüptograafilised rünnakud: seletus segaduses meeltedele2014. aasta oktoobris tekitas Google'i turvameeskond mürakarjuma turvagruppide seas. Nad suutsid ära kasutada haavatavust SSL-protokollis, mis parandati üle kümne aasta tagasi.

Nagu selgus, kuigi serverites töötas suurepärane uus TLSv1.2, jätsid paljud alles vananenud SSLv3 toe, et tagada ühilduvus Internet Explorer 6-ga. Oleme juba rääkinud allahindlustest, seega võite ette kujutada, mis toimub. Hästi organiseeritud protokolli sabotaaž – ja serverid on valmis naasma vanasse headesse SSLv3-sse, põhimõtteliselt tühistades viimased 15 aastat turvauuringutes.

Ajalooliseks kontekstiks, siin on lühike ülevaade SSL-i ajaloost kuni versioonini 2 Matthew Greeni poolt:

Transpordi Kiht Turvalisus (TLS) on kõige olulisem turvaprotokoll internetis. [..] peaaegu iga tehing, mida teete internetis, sõltub TLS-ist. [..] Kuid TLS ei ole alati olnud TLS. Protokoll alustas oma elu Netscape Communications nimi «Secure Sockets Layer» või SSL. Räägitakse, et esimene versioon SSL oli nii kohutav, et arendajad korjasid kõik kooditrükised kokku ja maetasid need salajasesse prügimäele New Mexico osariigis. Selle tulemusena on esimene avalikult kättesaadav SSL-i versioon tegelikult versioon SSL 2. See on üsna hirmutav ja [..] oli see toode 90ndate keskelt, mida tänapäeva krüptograafid peavad „krüptograafia tumedaks ajastu». Paljud kõige hullemad krüptograafilised rünnakud, millest me täna teame, polnud veel avastatud. Selle tulemusena pidid SSLv2 protokolli arendajad tegelikult pimepimeduses teed otsima ja nad kohtasid paljusid kohutavaid koletisi — nende meelehärmiks ja meie kasuks, sest rünnakud SSLv2 vastu andsid väärtuslikke õppetunde järgmise protokolli põlvkonna jaoks.

Pärast neid sündmusi, 1996. aastal, töötas Netscape rehnavat SSL-protokolli nullist ümber. Tulemuseks oli SSL versiooni 3, mis parandas mitmeid tuntud turvaprobleeme oma eelkäijast.

Kahjuks ründajate jaoks ei tähenda "mõned" "kõik". Üldiselt pakkus SSLv3 kõik vajalikud ehitusplokid Watern'i rünnaku käivitamiseks. Protokoll kasutas plokkšifreid CBC-režiimis ja ebaohutut täitmise skeemi (see parandati TLS-is; seega ilmus vajadus allavääristamise rünnaku järele). Kui te mäletate täitmise skeemi meie algses Watern'i rünnaku kirjelduse jaoks, on SSLv3 skeem väga sarnane.

Kuid kahjuks ründajate jaoks ei tähenda "sarnane" "identne". SSLv3 täitmise skeem näeb välja nagu "N juhuslikku bitti, millele järgneb number N". Proovige sellistes tingimustes valida kujuteldav krüpteeritud teksti plokk ja läbida kõik Watern'i originaalskeemi etapid: leiate, et rünnak õnnestub välja tõmmata viimane bitti vastavast avatud teksti plokist, kuid ei edene edasi. Iga 16. bitti dekrüpteerimine krüpteeritud tekstist on suurepärane trikk, kuid see ei ole võit.

Ebaõnnestumise korral pöördus Google'i meeskond äärmusliku variandi poole: nad lülitusid võimsamale ohumudelile — sellele, mida kasutati CRIME-is. Eeldades, et ründaja on skript, mis töötab ohvri brauseri vahekaardil ja saab seansiküpsiseid välja tõmmata, jääb rünnak siiski muljetavaldav. Kuigi laiem ohumudel on vähem reaalne, oleme varasemas jaotises juba näinud, et see konkreetne mudel on teostatav.

Arvestades selliseid võimsamaid võimalusi häkkerite seas, võib rünnak nüüd jätkuda. Pidage meeles, et kurjategija teab, kus pealkirjas kuvatakse krüpteeritud seansi küpsisefail ja kontrollib sellele eelneva HTTP-päringu pikkust. Seetõttu suudab ta manipuleerida HTTP-päringuga nii, et viimane küpsise bait joondub ploki lõpuga. Nüüd on see bait valmis dekrüpteerimiseks. Lihtsalt lisage päringule üks sümbol ja eelviimane küpsise bait jääb samasse kohta, mis võimaldab sama meetodiga katsetamist. Rünnak kestab nii kaua, kuni küpsisefail on täielikult taastatud. Seda nimetatakse POODLE-ks: Padding Oracle on Downgraded Legacy Encryption.

DROWN

Krüptograafilised rünnakud: seletus segaduses meeltedeleNagu juba mainisime, olid SSLv3-l puudused, kuid see erines oma eelkäijast kardinaalselt, kuna auklik SSLv2 oli teiste aegade toode. Seal oli võimalik sõnum katkestada keskel: ma nõustun sellega ainult üle minu laiba muutuma ma nõustun sellega; klient ja server said kohtuda internetis, luua usaldus ja jagada saladusi kurjategija silme all, kes siis lihtsalt esitas end ühe ja teise kaudu. Veel oli probleem eksportkristograafiaga, millest rääkisime FREAK-i arutamisel. Need olid krüptograafiline Soodoma ja Gomorra.

2016. aasta märtsis kogunes erinevate tehniliste valdkondade teadlaste meeskond ja tegi šokeeriva avastuse: SSLv2 on endiselt turvasüsteemides kasutusel. Jah, kurjategijad ei suutnud enam kaasaegsete TLS-seansside taset alandada SSLv2-le, kuna see auk suleti pärast FREAK-i ja POODLE-it, kuid nad saavad siiski serveritega ühendust võtta ja alustada SSLv2 seansse ise.

Küsite, mis meile sellest, mida nad seal teevad? Neil on haavatav seanss, kuid see ei tohiks mõjutada teisi seansse ega serveri turvalisust - eks? Noh, mitte päris nii. Jah, teoorias peaks see nii olema. Kuid ei - kuna SSL-sertifikaatide genereerimine seab teatud koormuse, mille tõttu kasutavad paljud serverid samu sertifikaate ja seega samu RSA võtmeid TLS ja SSLv2 ühendustes. Mis on veel hullem, populaarse OpenSSL-i rakenduse vea tõttu ei töötanud tegelikult võimalus "SSLv2 keelata".

See võimaldas TLS-i üleprotokollilist rünnakut, mida nimetati DROWN (Decrypting RSA with Obsolete and Weakened eNcryption, RSA dekrüpteerimine aegunud ja nõrgestatud krüptimisega). Meenutame, et see ei ole sama, mis allapoole ründe; häkker ei pea käituma nagu "inimene keskel" ega pea kaasama klienti, et osaleda ebaturvalises seansis. Kurjategijad algatavad lihtsalt ebaturvalise SSLv2 seansi serveriga, ründavad nõrka protokolli ja taastavad salajase serveri RSA-kuu. See võti on samuti kehtiv TLS-ühenduste jaoks, ja alates sellest hetkest ei päästa TLS-i turvalisus seda häkkimise eest.

Aga rünnaku jaoks on vajalik töötav rünnak SSLv2 vastu, mis võimaldab taastada mitte ainult konkreetset liiklust, vaid ka salajast serveri RSA-kuu. Kuigi see on keeruline teema, võisid teadlased valida mis tahes haavatavuse, mis oli pärast SSLv2 täielikult suletud. Lõpuks leidsid nad sobiva variandi: Blyhenbacheri rünnaku, millest oleme varem rääkinud ja mille üksikasju selgitame järgmises artiklis. SSL ja TLS on täitnud selle rünnaku eest kaitset, kuid mõned SSL-i juhuslikud funktsioonid koos lühikeste võtmetega ekspordiklassi krüptograafias, tegid võimalikuks teatud DROWN-i rakenduse.

DROWN-i haavatavuse avaldamise ajal olid 25% maailma tippveebisaitidest haavatavad ning rünnakut sai teostada tagasihoidlike ressurssidega, mis olid isegi kavalate üksikute häkkerite käsutuses. Serveri RSA-kuu lõpuks saamiseks kulus kaheksa tundi arvutusi ja 440 dollarit, ning SSLv2 muutis oma staatust "aegunud" ka "radioaktiivseks".

Oodake, aga kuidas on Heartbleediga?

See ei ole krüptograafiline rünnak sellisel viisil, nagu ülaltoodud; see on puhverülevool.

Teeme pausi

Alustasime mõningate põhiliste meetoditega: jõhkrus, interpolatsioon, allapoole rünnak, üleprotokoll ja eelvälja arvutamine. Siis vaatasime ühte arenenud tehnikat, mis on tõenäoliselt kaasaegsete krüptograafiliste rünnakute peamine komponent: oraakli rünnak. Nõnda tegelesime sellega üsna kaua—ja mõistsime mitte ainult põhimõtet, vaid ka kahe konkreetse rakenduse tehnilisi üksikasju: Vodena rünnak CBC šifreerimisrežiimi vastu ja Kelsi rünnak eelkrüptimise protokollide vastu.

Languste rünnakute ülevaate ja eelneva arvutusega oleme lühidalt kokku võtnud FREAK rünnaku, mis kasutab mõlemaid meetodeid, kuna sihtsaidid langetavad end nõrkade võtmete tasemele ja seejärel kasutavad samu võtmeid uuesti. Järgmises artiklis vaatame (väga sarnast) Logjam rünnakut, mis suunab tähelepanu avaliku võtme algoritmidele.

Seejärel vaatlesime veel kolme näidet nende põhimõtete rakendamisest. Esiteks, CRIME ja POODLE: kaks rünnakut, mis sõltusid ründaja võimest sisestada suvaline avalik tekst sihtmärgiga avaliku teksti kõrvale, seejärel uurida serveri vastuseid ja seejärel, kasutades oraakli rünnaku metoodikat, kasutada seda vaest teavet osaliseks avaliku teksti taastamiseks. CRIME järgnes Kelsi rünnakule SSL-i kokkusurutud andmete vastu, samas kui POODLE kasutas selle asemel Voodenet's rünnaku varianti CBC-l, saavutades sama efekti.

Seejärel pöörasime tähelepanu DROWN ristprotokollirünnakule, mis loob serveriga ühenduse vananenud SSLv2 protokolli kaudu ja seejärel taastab saladuslikud serveri võtmed Blaychenbacheri rünnaku abil. Praegu jätsime selle rünnaku tehnilised detailid kõrvale; nagu Logjam, tuleb sellega oodata, kuni uurime põhjalikult avaliku võtme krüptosüsteeme ja nende haavatavusi.

Järgmisel artiklil räägime edasijõudnud rünnakutest — nagu kohtumetoodetmeetod (meet-in-the-middle), eristusvõime krüptaanalüüs ja sünnipäeva rünnak. Teeme kiire sissevaate külgkanali rünnakutesse ning seejärel asume kõige maitsvama poole — avaliku võtme krüptosüsteemide juurde.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster