Sõna «krüptograafia» kuuldes mõtleb üks osa inimesi oma WiFi paroolile, rohelisele lukuikoonile oma lemmiksaiti kõrval ja sellele, kui keeruline on kellegi teise e-postkasti siseneda. Teised aga meenutavad viimaste aastate haavatavuste jada, kus räägitakse hirmutavatest akronüümidest (DROWN, FREAK, POODLE…) stiilsete logode ja kiireloomulise hoiatusega brauseri värskendamise kohta.
Krüptograafia hõlmab kõike seda, kuid tuum on teistsugune. Tuum peitub õhukeses piiris lihtsa ja keerulise vahel. Mõned asjad on lihtsalt teostatavad, kuid keeruline on neid tagasi pöörata: näiteks muna löömine. Teised asjad on kergesti teostatavad, kuid keeruline on need tagasi pöörata, kui puudub väike oluline lõpp-osa: näiteks lukustatud ukse avamine, kui «lõpp-osa» on võti. Krüptograafia uurib neid olukordi ja viise nende praktiliseks rakendamiseks.
Viimastel aastatel on krüptograafiliste rünnakute kollektsioon muutunud karjuvate logode loomaaedaks, mis on täidetud teadusartiklite valemitega ja tekitanud üldise sünge tunde, et kõik on katki. Kuid tegelikult põhinevad paljud rünnakud mõnel ühisel põhimõttel ja lõputud valemilehed sageli vähenevad lihtsateks arusaadavateks ideedeks.
Selles artiklis vaatleme erinevaid krüptograafia rünnakute tüüpe, rõhuasetusega põhiprintsiipidele. Üldiselt ja mitte tingimata selles järjekorras, räägime järgmistest teemadest:
- Põhistrateegiad: brute-force, sagedusanalüüs, interpolatsioon, allasurumine ja ristprotokollid.
- «Bränditud» haavatavused: FREAK, CRIME, POODLE, DROWN, Logjam.
- Edasijõudnud strateegiad: oraakli rünnakud (Wodene rünnak, Kelsi rünnak); kohtumisviis meetod (meet-in-the-middle), sünnipäeva rünnak, statistiline kallutatus (differentsiaalne krüptoanalüüs, integroiv krüptoanalüüs jne.).
- Külgkanali rünnakud ja nende lähedased sugulased, veaanalüüsi meetodid.
- Avaliku võtme krüptograafia rünnakud: kuupjuur, edastamine, seondatud sõnum, Coppersmithi rünnak, Pollardi–Hellmani algoritm, numbriline sõel, Wieneri rünnak, Blaihenbacheri rünnak.
Käesolev artikkel käsitleb ülaltoodud materjali Kelsi rünnakuni.
Põhistrateegiad
Järgmised rünnakud on lihtsad, sest neid saab praktiliselt täielikult seletada ilma keeruliste tehniliste üksikasjadeta. Selgitame iga tüüpi rünnakut kõige lihtsamates tingimustes, ilma et süveneksime keerulistesse näidetesse või laiendatud kasutusvariante.
Mõned neist rünnakutest on peaaegu oma tähtsuse kaotanud ja pole juba aastaid kasutusel olnud. Teised — on veteranid, kes peavad endiselt regulaarselt silmast silma 21. sajandi süstemaatiliste krüptosüsteemide nähtamatute arendajatega. Modernse krüptograafia ajastu võib pidada alanuks koos IBM DES-i ilmumisega — esimese šifreerimisega, mis talus kõiki selles nimekirjas olevaid rünnakuid.
Lihtne bruteforce
Šifreerimise skeem koosneb kahest osast: 1) šifreerimisfunktsioon, mis võtab vastu sõnumi (avatud tekst) koos võtmega ja seejärel loob šifreeritud sõnumi — šifrites. 2) dešifreerimisfunktsioon, mis võtab vastu šifrites ja võtme ning loob avatud teksti. Nii šifreerimine kui ka dešifreerimine peavad olema võtmega kergesti arvutatavad — ja ilma selleta rasked.
Oletame, et me näeme šifriritud teksti ja proovime seda ilma igasuguse lisainformatsioonita dešifreerida (seda nimetatakse „ainult šifriritud teksti” rünnakuks). Kui me leiduksime maagiliselt õige võtme, saaksime kergesti kontrollida, kas see on tõeliselt õige, kui tulemus on mõistlik sõnum.
Pange tähele, et siin on kaks varjatud eeldust. Esiteks, et me teame, kuidas dešifreerimist teostada, st kuidas krüptosüsteem töötab. See on standardne eeldus krüptograafia arutamisel. Šifri teostamise detailide varjamine ründajatelt võib tunduda lisakaitsemeetmena, kuid niipea kui ründaja need detailid välja selgitab, kaob see lisakaitse märkamatult ja puudumatult. Nii on : süsteemi langemine vaenlase kätte ei tohiks põhjustada ebamugavusi.
Teiseks, eeldame, et õige võti on ainus võti, mis viib mõistliku dekrüpteerimiseni. See on samuti mõistlik eeldus; see kehtib, kui krüpteeritud tekst on palju pikem kui võti ja hästi loetav. Tavaliselt on see nii reaalses maailmas, välja arvatud või (kui sulle ei meeldi, et me põhjenduste üle oleme lasknud, vaata palun teoreemi 3.8 ).
Arvestades eeltoodut, tekib strateegia: kontrollida iga võimalikku võtit. Seda nimetatakse brute force’iks, ja selline rünnak töötab garanteeritult kõigi praktiliste krüptide vastu — lõppkokkuvõttes. Näiteks on brute force piisav, et murda , iidne krüpt, kus võti on üks täht tähestikus, mis tähendab, et on olemas veidi üle 20 võimaliku võtme.
Kahjuks krüptoanalüütikute jaoks kaitseb võtme suuruse suurenemine brutoshamaste eest hästi. Võtme suuruse kasvades suureneb võimalike võtmete arv eksponentsiaalselt. Kaasaegsete võtme suuruste puhul on lihtne brutoshammas täiesti ebaefektiivne. Et saaksime aru, mida me silmas peame, võtame 2019. aasta keskpaiku tuntud kiireima superarvuti: IBMilt, mille tipptöötlusvõime on umbes 10^17 operatsiooni sekundis. Tänapäeval on tüüpiline võtme pikkus 128 bitti, mis tähendab 2^128 võimalikke kombinatsioone. Kõikide võtmete proovimiseks kulub superarvutil Summit aeg, mis on umbes 7800 korda pikem kui Universumi vanus.
Kas peaksime brutoshamast ajalooliseks kurioosumiks pidama? Absoluutselt mitte: see on vajalik koostisosade krüptoanalüüsi retseptis. Harva esinevad nii nõrgad krüptograafiad, et neid saaks murda ainult nutika rünnaku läbi, ilma jõu kasutamiseta. Paljudel edukatel rünnakutel kasutatakse esmalt algoritmilist meetodit, et nõrgestada sihtkrüptograafiat, ja seejärel käivitada brutoshammas.
Frekantsi analüüs
Enamik tekstidest ei ole segane jutt. Näiteks ingliskeelsetes tekstides on palju tähti 'e' ja artikleid 'the'; binaarfailides on palju nullbyte'e, mis toimivad teabefragmentide vahel täitena. Rikkumise analüüs on mistahes rünnak, mis kasutab seda fakti.
Klassikaline näide krüptost, mis on selle rünnaku suhtes haavatav, on lihtne asenduskood. Selles krüptos on võti tabel, mis asendab kõiki tähti. Näiteks 'g' asendatakse 'h'-ga, 'o' aga 'j'-ga, seega sõna 'go' muutub 'hj'ks. Selle krüpto dešifreerimine on keeruline lihtsa brute force'i puhul, kuna võimalike asendustabelite arv on väga suur. Kui teid huvitab matemaatika, on efektiivne võtme pikkus umbes 88 bitti: see on
. Kuid rikkumise analüüs suudab tavaliselt probleemiga kiiresti toime tulla.
Vaatame järgmist krüptoteksti, 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 esialgu 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 viitab selgelt sõnale need või seal, seega jätkame:
theLe ALe UGLe thWNKE WN heAJeN ANF eALth DGLAtWG thAN ALe FLeAUt GR WN OGQL ZDWBGEGZDO
Oletame, et L vastab r, A — a ja nii edasi. Tõenäoliselt tuleb teha mitu katset, kuid võrreldes täieliku brutaalründega taastab see rünnak algteksti lühimal ajal.
taevas ja maapinda on rohkem asju, Horatio, kui su filosoofias unistatakse
Mõne jaoks on selliste «krüptogrammide» lahendamine põnev hobi.
Sagedusanalüüsi idee on põhjalikum, kui esmapilgul tundub. Ja seda saab rakendada palju keerulisematele šifritele. Ajaloo jooksul on erinevad šifreerimisseosed püüdnud takistada sellist rünnakut „polialfabeetiliste asendustega“. Siin šifreerimise protsessis muutub tähe asendamise tabel keeruliste, kuid ettearvatavate viisidega, mis sõltuvad võtmes. Kõik need šifrid olid kord raskesti murdumiseks; ja siiski on alandlik sagedusanalüüs lõpuks need kõik seljataga.
Ajaloo kõige ambitsioonikam polüalfabeteeritud šifreerimisviis oli Teise maailmasõja ajal šiffer "Enigma". See oli oma eelkäijatega võrreldes suhteliselt keeruline, kuid pika ja järjepideva töö tulemusena suudsid Briti krüptoanalüütikud selle murda sagedusanalüüsi abil. Loomulikult ei suudetud välja töötada elegantset rünnakut, nagu eespool näidatud; nad pidid võrdlema tuntud avatud ja šifreeritud tekstide paare (nii nimetatud "avatud tekstide rünnak") ja isegi provotseerima "Enigma" kasutajaid sõnumite šifreerimisega, et analüüsida tulemusi ("valitud avatud teksti rünnak"). Kuid see ei kergendanud langetatud vaenlaste armeede ja uppunud allveelaevade saatust.
Pärast seda triumfi kadus sagedusanalüüs krüptoanalüüsi ajaloost. Kaasaegse digiajastu šifrid on loodud töötama bittidega, mitte tähtedega. Veelgi olulisem on see, et need šifrid on loodud tuhmilt arvestades seda, mida hiljem hakati kutsuma : igaüks saab luua krüpteerimise algoritmi, mida ta ise ei suuda murda. Krüpteerimissüsteem ei pea ilmtingimata olema keeruline, et tõestada oma väärtust; see peab läbima jõhkralt mitmete krüptanalüütikute turvaülevaate, kes teevad kõik, et murda krüpteering. näis keeruline: et tõestada oma väärtust, peab see läbima halastamatu turvaülevaate paljude krüptanalüütikute poolt, kes teevad kõik, et murda krüpteering.
Eelnevad arvutused
Võtame hüpoteetilise linna Prekom Heights, mille populaatsioon on 200 000. Igas linnas on keskmiselt $30 000 väärtuses väärtusliku vara, kuid mitte rohkem kui $50 000. Prekomi turvalisuse turg on monopoolne, mille omanik on ettevõte ACME Industries, mis toodab legendaarseid Coyote ™ klassi lukke. Ekspertide analüüsi kohaselt suudab Coyote klassi luku murda ainult väga keeruline hüpoteetiline masin, mille loomine nõuab umbes viis aastat ja $50 000 investeeringut. Kas linn on ohutus?
Tõenäoliselt mitte. Lõppude lõpuks ilmub piisavalt ambitsioonikas kurjategija. Ta mõtleb: „Jah, ma teen suuri ettemakseid. Viis aastat kannatlikkust ja $50 000. Kuid pärast töö lõpetamist on mul juurdepääs kogu selle linna rikkuseleKui ma oma kaarte õigesti mängin, siis see investeering tasub end korduvalt ära.
Sarnaselt toimub ka krüptograafias. Konkreetse krüptosüsteemi rünnakud alluvad halastamatule kasu ja kulu analüüsile. Kui suhe on soodne, siis rünnakut ei toimu. Kuid rünnakud, mis suunavad end korraga paljude potentsiaalsete ohvriteni, tasuvad end alati ja sellisel juhul on parim disainiprintsip pigem eeldada, et need algasid esimesest päevast. Meil on põhimõtteliselt krüptograafiline versioon Murphy seadusest: "Kõik, mis tõeliselt suudab süsteemi purustada, purustab süsteemi."
Lihtsaim näide krüptosüsteemist, mis on vastuvõtlik eelnevalt tehtud arvutuste rünnakutele, on algoritm, mis töötab konstantse algoritmi alusel ilma võtme kasutamiseta. Nii oli näiteks , mis lihtsalt nihutab iga tähe tähestikus kolme tähe võrra edasi (tabel on ringikujuline, seega viimase tähe kohtas on šifritud kolmandana). Siin tuleb jälle esile Kerckhoffe'i printsiip: kui süsteem on purustatud, on see purustatud igaveseks.
Kontseptsioon on lihtne. Isegi algaja krüptosüsteemide arendaja mõistab tõenäoliselt ähvardust ja valmistub vastavalt. Kui vaadata krüptograafia arengut, on sellised rünnakud olnud enamikus šifrites ebaolulised, alates esimestest täiustatud Julius Caesari šifri versioonidest kuni polüalfavatiivsete šifrite langemiseni. Sellised rünnakud on tagasi tulnud ainult kaasaegse krüptograafia ajastu algusega.
Selle tagasi tuleku põhjuseks on kaks tegurit. Esiteks on lõpuks tekkinud piisavalt keerulisi krüptosüsteeme, kus võimalus pärast murdmist ära kasutada pole olnud ilmne. Teiseks on krüptograafia laialdaselt levinud, nii et miljonid mitteprofessionaalid igapäevaselt langetavad otsuseid, kus ja milliseid krüptograafia osi uuesti kasutada. Vajas aega, enne kui eksperdid mõistsid tekkinud riskid ja tõstsid alarmi.
Pidage meeles eellugemise rünnakut: artikli lõpus arutame kahte reaalse elu krüptograafilist näidet, kus see mängis olulist rolli.
Interpolatsioon
Teie ees on kuulus detektiiv Sherlock Holmes, kes ründab interpretaatsiooni kaudu pahaaimamatut doktor Watsonit:
Mõistsin kohe, et olete Afganistanist... Minu mõttekäik oli järgmine: 'See inimene on tüübi poolest arst, kuid tema jooned on sõjalised. Seega on ta sõjaväearst. Ta on just troopikast saabunud – tema nägu on tumedam, kuid see ei ole loomulik nahatoon, kuna tema randmed on palju heledamad. Nägu on väsinud – ilmselgelt on ta palju kannatanud ja läbi elanud haigusi. Ta sai vasakusse kätesse haava – hoiab seda paigal ja veidi ebamugavalt. Kuidas oleks sõjaväearst-inglise troopikates vaeva näinud ja haava saanud? Loomulikult Afganistanis.' Kogu mõttekäik ei võtnud aega isegi sekundit. Ja siis ütlesin, et olete Afganistanist saabunud, ja te olite üllatunud.
Iga näitaja puhul suutis Holmes välja tuua väga vähe teavet. Ta jõudis oma järeldusele alles siis, kui kaaluda neid kõiki koos. Sarnasel viisil töötab interpolatsioonirünnak, uurides teadaolevaid avatud ja krüpteeritud tekstipaare, mis on saadud sama võtme rakendamise käigus. Iga paari tõttu tehakse eraldi tähelepanekud, mis võimaldavad teha üldise järelduse võtme kohta. Kõik need järeldused on ähmased ja näivad kasutud, kuni nad ühel hetkel saavutavad kriitilise massi ja viivad ainus võimalik järeldus: sõltumata sellest, kui uskumatu see on, peab see olema tõene. Pärast seda kas avatakse võtme või dekodeerimisprotsess muutub nii rafineerituks, et seda saab masstoodanguna toota.
Illustreerime lihtsa näite abil, kuidas toimub interpolatsiooni töö. Oletame, et soovime lugeda meie vaenlase, Bobe, isiklikku päevikut. Ta krüpteerib iga numbri oma päevikus lihtsa krüptosüsteemiga, millest ta kuulis reklaami kaudu ajakirjas "Naer krüptograafia üle". Süsteem töötab järgmiselt: Bob valib kaks numbrit, mis talle meeldivad:
ja
. Alates sellest hetkest, et krüpteerida ükskõik milline number
, arvutab ta välja
. Näiteks, kui Bob valis
ja
, siis number
krüpteeritakse kui
.
Oletame, et 28. detsembril märkame, et Bob kraabib midagi oma päevikus. Kui ta lõpetab, võtame selle märkamatult ja vaatame viimase sissekande:
Kuupäev:
235/520Armas päevik,
Täna oli hea päev. Kümne
64päeva pärast on mul kohting Ailisega, kes elab korteris843. Ma tõeliselt arvan, et ta võib olla26!
Kuna me oleme väga tõsiselt häbelikud, et jälgida Bobe oma kohtingul (selles stsenaariumis oleme 15-aastased), on äärmiselt oluline teada nii kuupäeva kui ka Ailise aadressi. Õnneks märkame, et Bobe krüptosüsteem on interpoleerimise rünnaku suhtes haavatav. Me võime ja ei pruugi teada
ja
, kuid me teame täna kuupäeva, seega on meil kaks paari „selge tekst — krüpteeritud tekst“. Nimelt teame, et
krüpteeritakse
, ja
— in
. Selle ka kirjutame:


Kuna meil on 15 aastat, siis juba teame kahe tundmatuga kahe võrrandi süsteemist, mis selle olukorra jaoks piisab, et leida
ja
ilma eriliste probleemideta. Iga „selge tekst-krüpteeritud tekst“ paar paneb piirangu Bobi võtmele, ja kahest piirangust koos piisab, et täielikult taastada võtme. Meie näites on vastus
ja
(kuna
, nii et 26 päevikus vastab sõnale 'the one', see tähendab 'see üks' — tõlk. märk.
Interpoleerimisrünnakud ei piirdu loomulikult selliste lihtsate näidetega. Iga krüptosüsteem, mis toob endaga kaasa hästi mõistetava matemaatilise objekti ja parameetrite nimekirja, on interpoleerimisrünnaku riskis — mida arusaadavam on objekt, seda suurem on risk.
Algajad kurdavad sageli, et krüptograafia on "kunst võimalikult kohmakate asjade kavandamiseks". Tõenäoliselt on selle eest suures osas süüdi interpoleerimise rünnakud. Bob võib kas kasutada elegantset matemaatilist disaini või hoida kohtingu Alice'iga salajas — kahjuks ei saa enamasti mõlemat korraga. See saab selgeks, kui lõpuks räägime avaliku võtmega krüptograafiast.
Ristprotokoll/alumine
Film „Petmine” (2013) räägib grupp illusioniste, kes püüavad petmise abil erilist rikkust korruptsioonis langenud kindlustusmagnati Arthur Tressleri käest välja pressida. Et pääseda Arthur'i pangakontole, peavad illusionistid kas esitama tema kasutajanime ja parooli või sundima teda isiklikult pangas kohal olema ja osalema skeemis.
Mõlemad variandid on väga keerulised; poisid on harjunud esinema laval, mitte osalema salateenistuse operatsioonides. Seetõttu valivad nad kolmanda võimaliku variandi: nende kaaslane helistab panka ja esindab Arturit. Pangas esitatakse mõned isikutunnistuse kontrollimiseks vajalikud küsimused, nagu tädi nimi ja esimese lemmiklooma nimi; meie kangelased varusid selle teabe hõlpsalt Arturilt osava sotsiaalse inseneri abil. . Sellest hetkest alates ei oma hea parooli turvalisus enam mingit tähtsust.
(Vastavalt linnalegendile, mille oleme isiklikult kontrollinud ja kinnitanud, kohtus krüptograaf Eli Biham kunagi pangakassiiriga, kes nõudis salajase küsimuse seadmist. Kui kassapidaja küsis emaema nime, hakkas Biham dikteerima: «Suurtähed X, väiketähed y, kolm…»).
Nii on ka krüptograafias, kui sama vara kaitseks kasutatakse paralleelselt kahte krüptograafilist protokolli, kusjuures üks neist on oluliselt nõrgem kui teine. Lõpptulemus muutub haavatavaks ristprotokolli rünnaku suhtes, kus nõrgem protokoll on rünnaku all, et pääseda auhinnani, puutumata tugevamat.
Mõnes keerulises olukorras ei piisa lihtsalt serveriga vähem tugeva protokolli kaudu ühenduse loomisest, vaid on vajalik ka seadusliku kliendi sunnitud osalus. Seda saab korraldada nn languse rünnaku (downgrade) abil. Selle rünnaku mõistmiseks eeldame, et meie illustraatoritel on keerulisem ülesanne kui filmis. Oletame, et pangatöötajal (kassas) ja Arturil tekkisid ettenägematud asjaolud, mille tulemusena toimus selline dialoog:
Häkker: Tere? Siin on Artur Tressler. Ma tahaksin oma parooli taastada.
Kassapidaja: Suurepärane. Palun vaadake oma isiklikku salakoodide raamatust lehekult 28, sõna 3. Kõik järgnevad sõnumid on krüpteeritud selle konkreetse sõnaga võtmena. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…
Häkker: Hei, hei, oota, oota. Kas see tõesti vajalik on? Kas me ei saa lihtsalt rääkida nagu tavalised inimesed?
Kassapidaja: Ma ei soovita seda teha.
Häkker: Ma lihtsalt… kuule, mul on olnud halb päev, selge? Olen VIP-klient ja ei ole meeleolus nende tobedate koodiraamatute kallal nokitseda.
Kassapidaja: Aga jah. Kui te nii soovite, härra Tressler. Mis teile meeldib?
Häkker: Palun, ma tahaksin kanda kõik oma raha Artur Treßleri ohvrite riiklikku fondi.
(Paus).
Kassapidaja: Nii, selge. Palun sisestage oma PIN-kood suurte tehingute jaoks.
Häkker: Mis?
Kassapidaja: Teie isikliku soovi kohaselt nõuavad sellised suurte summade tehingud PIN-koodi sisestamist. See kood anti teile arve avamisel.
Häkker:… Ma kaotasin selle. Kas see on tõesti vajalik? Kas te ei saaks lihtsalt tehingut kinnitada?
Kassapidaja: Ei. Vabandust, härra Treßler. Taaskord, see on turvameede, mille soovisite. Kui soovite, saame uue PIN-koodi posti teel saata.
Meie kangelased lükkavad operatsiooni edasi. Nad kuulavad mürarikkaid tehinguid Treßleri osas, lootes kuulda PIN-koodi; kuid iga kord muutub vestlus krüptitud segaduseks, enne kui seal kõlab midagi huvitavat. Lõpuks, ühel ilusal päeval, viiakse plaan ellu. Nad ootavad kannatlikult hetke, kui Treßler peab telefonitsi suure tehingu sooritama, ta liitub liiniga ja siis…
Treßler: Tere. Soovin teha kaugtehingut, palun.
Kassapidaja: Suurepärane. Palun vaadake oma isiklikku saladuskoodide raamatut, lehekülg...
(Häkker vajutab nuppu; kassa hääl muutub arusaamatuks müraks).
Kassapidaja: — #@$#@$#*@$$@#* kodeeritakse selle sõnaga võtmena. AAAYRR PLRQRZ MMNJK LOJBAN…
Treßler: Vabandust, ma ei saanud täpselt aru. Kas saaksid seda veel kord öelda? Millisel leheküljel? Mis sõna?
Kassapidaja: See on lehekülg @#$@#*$)#*#@()#@$(#@*$(#@*.
Treßler: Mida?
Kassapidaja: Sõna number kakskümmend @$#@$#%#$.
Treßler: Tõsiselt! Piisab juba! Teie turvaprotokoll on nagu mingi tsirkus. Ma tean, et sa saad lihtsalt normaalselt minuga rääkida.
Kassapidaja: Ma ei soovita…
Treßler: Aga mina soovitan, et ära raiska mu aega. Ma ei taha enam midagi kuulda, kuni teie telefoniliinid on korralikult korda tehtud. Kas saame selle tehingu teha või mitte?
Kassapidaja:… jah. Hea. Mida soovite?
Treßler: Soovin üle kanda 20 000 $ ettevõttele Lord Business Investments, konto number…
Kassapidaja: Üks hetk, palun. See on suur tehing. Palun sisestage oma suuretehingute PIN-kood.
Treßler: Mis? Ah, õige. 1234.
Siin on allhinnang. Nõrgem „rääkige otse” protokoll oli mõeldud valik kõrvaliseks. Ja ometigi oleme siin.
Te võite küsida, kes normaalne inimene projekteeriks reaalset süsteemi, mis oleks "turvaline, kuni pole nõutud vastupidist", nagu eespool kirjeldatud. Kuid samamoodi nagu väljamõeldud pank riskib, et hoida kliente, kes ei armasta krüptograafiat, kalduvad süsteemid sageli nõudmistele, mis on kas ükskõiksed või isegi avatud vaenulikkusele turvalisuse suhtes.
Just selline lugu juhtus SSLv2 protokolliga 1995. aastal. Ameerika Ühendriigid olid juba ammu hakanud krüptograafiat käsitlema kui relva, mida on parem hoida eemal välisest ja sisemisest vaenlasest. Koodi fragmente kiideti eraldi heaks USA-st eksportimiseks, sageli tingimusel, et algoritm nõrgeneb eesmärgini.
Ajalõpul läksid reeglid leebemaks ja juurdepääs kaasaegsele krüptimisele muutus laialdaselt kättesaadavaks. Siiski toetasid kliendid ja serverid aastaid nõrka 'eksportivat' krüptograafiat, kuna samad inertsi põhjused, mis säilitavad iganenud süsteemide toetuse, püsisid. Kliendid arvasid, et nad võivad sattuda serverisse, mis ei toeta midagi muud. Serverid tegid sama. Loomulikult dikteerib SSL-protokoll, et kliendid ja serverid ei tohiks kunagi kasutada nõrka protokolli, kui on saadaval parem. Siiski kehtis sama eeldus ka Tressleri ja tema panga jaoks.
See teooria leidis rakendust kahes suurejoonelises rünnakus, mis üksteise järel šokeerisid SSL-protokolli turvalisust 2015. aastal, mõlemad avastasid Microsofti teadlased ja . Esmalt avaldati veebruarist FREAK rünnaku üksikasjad ning kolm kuud hiljem veel üks sarnane rünnak nimega Logjam, millest räägime lähemalt, kui jõuame avatud võtmega krüptograafia rünnakute juurde.
Haavatavus (ka tuntud kui «Smack TLS») ilmus, kui teadlased analüüsisid TLSi kliendi/serveri rakendusi ja avastasid huvitava vea. Nendes rakendustes, isegi kui klient ei palu nõrka ekspordikriptograafiat kasutada, vastab server ikkagi selliste võtmetega — klient ütleb «Noh, olgu» ja läheb üle nõrgale krüptograafiale.
Sel ajal peeti ekspordikriptograafiat aegunuks ja suutmatuks kasutada, seega oli rünnak tõeline šokk ning see mõjutas paljusid olulisi domeene, sealhulgas Valge Maja, USA maksuhalduri ja NSA veebisaite. Veelgi hullem, paljud haavatavad serverid optimeerisid jõudlust, taaskasutades samu võtmeid, mitte luues uusi iga seansi jaoks. See võimaldas pärast protokolli nõrgestamist teostada ka eelleitmise rünnaku: ühe võtme purustamine jäi suhteliselt kalliks (100 dollarit ja 12 tundi pärast avaldamist), kuid rünnaku praktilised kulud ühenduse peale vähenesid märkimisväärselt. Piisab, kui üks kord leida serveri võti — ja purustada krüptograafia kõikide edasiste ühenduste jaoks alates sellest hetkest.
Enne edasi liikumist tasub mainida üht keerukamat rünnakut...
Oracle'i rünnak
tuntud kui platvormidevahelise krüptovestluse Signali isaisa; kuid isiklikult meeldib meile üks tema vähem tuntud uuendus — (Cryptographic Doom Principle). Kergelt ümber sõnastades võib öelda: "Kui protokoll teeb mõnda krüptograafilist operatsiooni potentsiaalselt kahjuliku allika sõnumiga ja käitub erinevalt sõltuvalt tulemusele, siis on see hukule määratud." Või veelgi teravamalt: "Ära võta vaenlaselt infot töötlemiseks, ja kui pead, siis vähemalt ära näita tulemust."
Jätame kõrvale mälu ülevoolud, käsu süstimise ja muud sarnased; need jäävad arutelu piiridest välja. "Surma põhimõtte" rikkumine viib tõsiste krüptograafiaalaste häkkimisteni, kuna protokoll käitub täpselt nii, nagu peab.
Võtame näiteks kujuteldava asenduse krüptimise, mis on haavatav ja näitame seejärel võimalikku rünnakut. Kuigi me oleme juba näinud asenduse krüptimise rünnakut sagedusanalüüsi abil, ei ole see lihtsalt "teine viis sama krüpti purustamiseks". Vastupidi, orakli rünnakud on palju kaasaegsem leiutis, mida saab rakendada paljude olukordade jaoks, kus sagedusanalüüs ebaõnnestub, ja me näeme selle demonstreerimist järgmises osas. Siin on lihtne krüptimine valitud vaid selleks, et näide oleks selgem.
Seega suhtlevad Alice ja Bob lihtsa asenduse krüptimise kaudu, kasutades võtit, mis on teada ainult neile. Nad on väga rangelt sõnumite pikkuse osas: nende pikkus on täpselt 20 sümbolit. Seetõttu leppisid nad kokku, et kui keegi soovib saata lühemat sõnumit, peab ta lisama sõnumi lõpuks mingit fiktiivset teksti, et see oleks täpselt 20 sümbolit. Pärast mõningaid arutelusid otsustasid nad, et nad aktsepteerivad ainult järgmisi fiktiivseid tekste: a, bb, ccc, dddd jne. Seega on tuntud fiktiivne tekst mis tahes vajaliku pikkusega.
Kui Alissa või Bob saavad sõnumi, kontrollivad nad esmalt, et sõnum oleks õige suurusega (20 märk) ja et suffix oleks õige vale tekst. Kui see ei vasta, saadavad nad vastava veateate. Kui mälumäng ja vale tekst on korras, loeb vastuvõtja ise sõnumit ja saadab krüpteeritud vastuse.
Rünnaku käigus esitleb kurjategija end Bobina ja saadab Alissale vale sõnumeid. Sõnumid on täielik jama — kurjategijal ei ole võtme ja seetõttu ei saa ta tähendusrikka sõnumi vale. Kuid kuna protokoll rikub hukatuspõhimõtet, suudab kurjategija siiski Alissat lõksu meelitada, et ta paljastaks teavet võtme kohta, nagu allpool näidatud.
Häkker:
PREWF ZHJKL MMMN. LAAlissa: Vale vale tekst.
Häkker:
PREWF ZHJKL MMMN. LBAlissa: Vale vale tekst.
Häkker:
PREWF ZHJKL MMMN. LCAlissa:
ILCT? TLCT RUWO PUT KCAW CPS OWPOW!
Ründaja ei tea, mida Alissa just ütles, kuid märgib, et sümbol C peab vastama a, kuna Alissa aktsepteeris vale teksti.
Häkker:
REWF ZHJKL MMMN. LAAAlissa: Vale vale tekst.
Häkker:
REWF ZHJKL MMMN. LBBAlissa: Vale vale tekst.
Pärast mitmeid katseid…
Häkker:
REWF ZHJKL MMMN. LGGAlissa: Vale vale tekst.
Häkker:
REWF ZHJKL MMMN. LHHAlissa:
TLQO JWCRO FQAW SUY LCR C OWQXYJW. IW PWWR TU TCFA CHUYT TLQO JWFCTQUPOLQZ.
Siiski, häkker ei pruugi mõista, mida Alice just ütles, kuid ta märkab, et H peaks vastama b-le, kuna Alice esitas vale teksti.
Ja nii edasi, kuni kurjategija mõistab iga sümboli tähendust.
Esmapilgul sarnaneb meetod rünnakuga, mis põhineb valitud selgetekstil. Lõppude lõpuks valib kurjategija šifritekste ja server töötleb neid ustavalt. Peamine erinevus, mis muudab need rünnakud reaalses maailmas elujõuliseks, on see, et kurjategija ei vaja tegelikku dešifreerimist — piisab serveri vastusest, isegi nii süütust nagu 'Vale vale tekst'.
Kuigi see konkreetne rünnak on õpetlik, ei tohiks liiga palju keskenduda "vale teksti" skeemi spetsiifikale, kasutatavale krüptosüsteemile või ründaja saatetud sõnumite täpsetele järjestustele. Peamine mõte on, kuidas Alice erinevalt reageerib, põhinedes selgete tekstide omadustele, ja teeb seda ennetamata, kas vastav krüpteeritud tekst on tõeliselt usaldusväärselt allikalt saadud. Seetõttu laseb Alice ründajal välja pressida saladuslikku teavet tema vastustest.
Selles stsenaariumis on palju muudatuseks. Sümbolid, millele Alice reageerib, või isegi tema käitumise erinevus või kasutatav krüptosüsteem. Kuid põhimõte jääb samaks ja rünnak jääb üldiselt elujõuliseks mingil kujul. Selle rünnaku põhiteostus aitas avastada mitmeid turvaauke, mida me peagi vaatame; kuid enne tuleks omandada mõned teoreetilised õppetunnid. Kuidas kasutada seda väljamõeldud «Alice'i stsenaariumi» rünnakus, mis suudab töötada kaasaegsete krüptovõtmete puhul? Kas see on üldse teoreetiliselt võimalik?
1998. aastal vastas Šveitsi krüptograaf Daniel Bleichenbacher sellele küsimusele jaatavalt. Ta demonstreeris oraakli rünnakut laialdaselt kasutatavas RSA avaliku võtme krüptosüsteemis, kasutades teatud sõnumiskeemi. Mõnedes RSA teostustes vastab server erinevate vigadega sõnumitele, sõltuvalt sellest, kas avatud tekst vastab skeemile või mitte; seda oli piisavalt, et rünnak läbi viia.
Neli aastat hiljem, 2002. aastal, demonstreeris Prantsuse krüptograaf Serge Vaudenay orakli rünnakut, mis oli peaaegu identne Alice'i stsenaariumis kirjeldatuga — välja arvatud see, et ta purustas mitte väljamõeldud šifri, vaid terve respektablite klassi kaasaegseid šifreid, mida inimesed tõeliselt kasutavad. Erakordne tähelepanu on suunatud Vaudenay rünnakule, mis on suunatud fikseeritud sisemõõduga šifritele („blokksifrid“), kui neid kasutatakse nii nimetatud „CBC šifreerimisrežiimis“ koos teatud populaarse padjamise skeemiga, mis on peaaegu ekvivalentne Alice'i stsenaariumis kasutatuga.
Samuti 2002. aastal pakkus Ameerika krüptograaf John Kelsey — kaasautor — välja erinevaid orakli rünnakuid süsteemide vastu, mis tihendavad sõnumeid ja seejärel šifreerivad need. Kõige olulisem nende seas oli rünnak, mis kasutas seda, et sageli on võimalik tuletada algse selge teksti pikkus šifreeritud teksti pikkusest. Teoreetiliselt võimaldab see läbi viia orakli rünnaku, mis taastab algse selge teksti osi.
Edasi toome meelerahu rikka kirjelduse rünnakutest Vođené ja Kelsi (anname põhjalikuma kirjeldus rünnakust Blaychenbacher, kui liigume edasi avaliku võtme krüptograafia rünnakutele). Kõik meie pingutused mitte vaatamata muutub tekst veidi tehniliseks; seega, kui eespoolt on piisav, vahele järgmised kaks lõiku.
Vođené rünnak
Et mõista Vođené rünnakut, peab esmalt natuke rohkem rääkima blokšifretest ja krüpteerimismeetoditest. "Blokšifrer" on, nagu juba märgitud, šifre, mis võtab võtme ja fikseeritud pikkusega sisendi ("plokipikkus") ja annab välja krüpteeritud ploki sama pikkusega. Blokšifreid kasutatakse laialdaselt ja peetakse suhteliselt turvaliseks. Praegu pensionil olev DES, mida peetakse esimeseks modernseks šifrimooduks, oli blokšifr. Nagu eespool mainitud, kehtib sama ka AES-i kohta, mida kasutatakse laialdaselt täna.
Kahjuks on plokkšifreid tabanud üks silmatorkav nõrkus. Tüüpiline ploki suurus on 128 bitti, ehk 16 sümbolit. On ilmne, et tänapäeva krüptograafia peab töötama suuremate sisendandmetega, ja just siin tulevad mängu šifrimoodid. Šifrimood on põhimõtteliselt nipp: see on viis, kuidas kuidagi rakendada plokkšifrit, mis aktsepteerib ainult kindla suurusega sisendandmeid, muutuva pikkusega sisendandmete puhul.
Vodenõe rünnak on suunatud populaarsele CBC (Cipher Block Chaining, plokkide šifrite ahelatöötlus) režiimile. Rünnak käsitleb alusplokkšifrit kui maagilist läbitungimatut musta kasti ja ületab täielikult selle turvalisuse.
Siin on diagramm, mis näitab, kuidas CBC-režiim töötab:


Ringiga tähistatud pluss tähendab XOR-operatsiooni (välistavat «VÕI»). Näiteks, teine šifrite plokk on saadud:
- Teise ploki selge tekstiga XOR-operatsiooni teostamisega esimese ploki šifritega.
- Saadud ploki šifreerimine plokkšifri abil, kasutades võtit.
Kuna CBC kasutab XOR binaaroperatsiooni nii intensiivselt, laske meil kasutada hetke, et meenutada mõningaid selle omadusi:
- Idempotentsus:
- Kommutatiivsus:
- Assotsiatiivsus:
- Enda tagasipööramine:
- Bait põhjal: bait n on
= (bait n on
)
(bait n on
)
Üldiselt tähendab need omadused, et kui meil on võrrand, mis sisaldab XOR operatsioone ja ühte tundmatut, saab seda lahendada. Näiteks, kui me teame, et
tundmatuga
ja tuntud
ja
, siis saame toetuda ülaltoodud omadustele, et lahendada võrrand
. Rakendades XOR-i kummalgi poole võrrandi
, saame
. Peagi muutub kõik see väga aktuaks.
Meie Alice'i stsenaariumi ja Vodenä rünnaku vahel on kaks väikest erinevust ja üks peamine erinevus. Kaks väikest:
- Alice'i stsenaariumis ootas ta, et avatud tekstid lõppevad märkidega
a,bb,cccjne. Vodenä rünnakus ootab ohver selle asemel, et avatud tekstid lõppevad N korda bait N (st heksadefinaalne 01 või 02 02, või 03 03 03 jne). See on puhtalt kosmeetiline erinevus. - Alice'i stsenaariumis oli lihtne öelda, kas Alice sai sõnumi, tuginedes vastusele "Vale fiktiivne tekst". Vodenë rünnak nõuab põhjalikumat analüüsi ja täpset teostust ohvri poolel; kuid lühidalt, eeldame, et see analüüs on siiski võimalik.
Peamine erinevus:
- Kuna me ei kasuta sama krüptosüsteemi, siis seos krüpteeritud teksti kontrollitavate kurjategijate baitide ja saladuste (võti ja selge tekst) vahel on ilmselgelt erinev. Seetõttu peab kurjategija kasutama teistsugust strateegiat šifreeritud tekstide loomisel ja serveri vastuste tõlgendamisel.
See on peamine erinevus - viimane pusletükk, et mõista Vodenë rünnakut. Seega mõtleme hetkeks sellele, miks ja kuidas on võimalik korraldada oraklirünnak CBC vastu.
Oletame, et meil on CBC krüpteeritud tekst, mis koosneb 247 plokist, ja me tahame selle dekodeerida. Saame serverisse saata vale sõnumeid, nagu varem saime saata vale sõnumeid Alisele. Server dekodeerib meie sõnumid, kuid ei näita dekodeeringut — selle asemel, nagu ka Alise puhul, annab server ainult ühe bit'i teavet: kas täisteksti puhul on lubatud täiendamine või mitte.
Pange tähele, et Alise stsenaariumis olid meil järgmised suhted:
$$display$$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key}) = text{plaintext}$$display$$
Nimetame seda "Alise võrrandiks". Me kontrollisime krüpteeritud teksti; server (Alise) edastas häguseid andmeid saadud selgest tekstist; ja see võimaldas meil välja tuua teavet viimase teguri — võtme kohta. Samamoodi, kui suudame leida sellise seose CBC stsenaariumi jaoks, võiksime seal mõningat salajast teavet välja tuua.
Õnneks on seal tõepoolest seoseid, mida saame kasutada. Vaatame plokkšifreerimise dekodeerimise lõppkutsumise väljundit ja nimetame need andmed
. Nimetame ka selge teksti plokid
ja krüpteeritud teksti plokid
. Vaadake veel kord CBC diagrammi ja pöörake tähelepanu, mis toimub:

Nimetame seda 'CBC võrrandiks'.
Alice'i stsenaariumi puhul, kus kontrollime šifreteksti ja jälgime teavet, mis voolab vastava selge teksti kohta, suudame korraldada rünnaku, mis taastab võrrandi kolmanda liikme — võti. CBC stsenaariumis kontrollime samuti šifreteksti ja jälgime teateid selge teksti kohta. Kui analoogia kehtib, saame teavet
.
Oletame, et oleme tõeliselt taastanud
, mis siis? Noh, siis saame kohe kogu viimase ploki selget teksti esitada (
), lihtsalt sisestades
(mis meil on) ja
saadud
CBC võrrandisse.
Nii et oleme rünnaku üldplaani osas optimistlikult meelestatud ning nüüd on aeg üksikasju töötada. Jälgime, kuidas serveris voolab teave selge teksti kohta. Alice'i stsenaariumis toimus voolamine seetõttu, et Alice vastas õige sõnumiga ainult siis, kui $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ lõppes rea a (või bb, ja nii edasi, kuid nende tingimuste juhuslikuks aktiveerimiseks olid võimalused väga väikesed). Samamoodi CBC peal, server aktsepteerib täitmist, kui ja ainult siis, kui
lõpeb heksadesimaalse 01. Nii proovime sama nippi: valešifrite saatmine meie enda valeväärtustega
, kuni server aktsepteerib täitmist.
Kui server aktsepteerib täitmist ühe meie vale sõnumi jaoks, tähendab see, et:

Kasutame nüüd XOR'i baitidel põhinevat omadust:

Teame esimest ja kolmandat liiget. Ja me oleme juba näinud, et see võimaldab taastada ülejäänud liikme - viimase baiti
:

See annab meile ka viimase baiti lõpplahendi avatud teksti kaudu CBC võrrandi ja baitidel põhineva omaduse.
Me võiksime sellega lõpetada ja leppida sellega, et tegime rünnaku teoreetiliselt vastupidavale šifrile. Kuid tegelikult saame palju rohkem teha: me saame tõesti taastada kogu teksti. Selleks on vajalik teatud nipp, mida Alice'i originaalsenaariumis ei olnud ja mis ei kuulu orakli rünnaku kohustuslike tingimuste hulka, kuid meetod väärib siiski uurimist.
Selle mõistmiseks vaadake esmalt, et viimase byte õige väärtuse tuletamisel
meil on uus võime. Nüüd, kui caveerime šifritekste, suudame juhtida vastava selge teksti viimast byte'i. Jällegi on see seotud CBC võrrandi ja byte'de omadusega:

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

Varem ei saanud me seda teha, sest meil polnud veel viimast byte'i
.
Kuidas see meid aitab? Oletame, et nüüd loome kõik šifritekstid nii, et vastavates selgetes tekstides viimane byte on 02. Nüüd aktsepteerib server täiendamist ainult juhul, kui selge tekst lõpeb 02 02. Kuna me oleme viimase byte'i muutnud, juhtub see ainult juhul, kui selge teksti eelviimane byte on samuti 02. Me jätkame vale šifriteksti plokkide saatmist, muutes eelviimast byte'i, kuni server aktsepteerib täienduse ühe neist. Sel hetkel saame:

Ja me taastame eelviimase bait...
...täpselt nii, nagu me taastame viimane. Jätkame samas vaimus: parandame viimase kahe bait avatud teksti peal 03 03, korrates seda rünnakut kolmanda viimase baidi jaoks ja nii edasi, lõpuks taastades täielikult
.
Kuidas on ülejäänud tekstiga? Pange tähele, et väärtus
on tegelikult $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$. Võime panna mistahes teise ploki selle asemel
, ja rünnak on ikkagi edukas. Tegelikult saame paluda serveril teha $inline$text{BLOCK_DECRYPT}$inline$ igasuguste andmete jaoks. Sel hetkel on mäng läbi - me saame dekrüpteerida mistahes krüpteeritud teksti (vaadake uuesti CBC dekodeerimise diagrammi, et veenduda selles; ja pidage meeles, et IV vektor on avalik).
See konkreetne meetod mängib ründes olulist rolli, millega me hiljem kokku puutume.
Kelsi rünnak
Meie vaimule lähedane John Kelsi sõnastas põhimõtted, mis puudutavad paljusid võimalikke rünnakuid, mitte ainult konkreetse rünnaku üksikasju konkreetse krüpti kohta. Tema — see uurimused võimalike rünnakute kohta krüpteeritud kokkusurutud andmetele. Kas olete kunagi arvanud, et rünnaku teostamiseks ei piisa üksnes informatsioonist, et andmed on enne krüptimist kokku surutud? Selgub, et see on piisav.
See hämmastav tulemus tuleneb kahest põhimõttest. Esiteks eksisteerib tugev korrelation avatud tekstide pikkuse ja šifriteksti pikkuse vahel; paljude šifrilaikade puhul on need täpselt võrdsed. Teiseks, kui kokkusurumine toimub, eksisteerib samuti tugev korrelation kokkusurutud sõnumi pikkuse ja avatud teksti „mürarikkuse“ astme vahel, see tähendab, et mittesümbolite osakaal (tehniline termin — „kõrge entropia“).
Kuna näha põhimõtte rakendamist, võtame arvesse kaht avatud teksti:
Ava tekst 1:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAva tekst 2:
ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ
Oletame, et mõlemad avatud tekstid on kokku surutud ja seejärel krüpteeritud. Te saite kaks tulemust, šifriteksti ning peate arvama, milline šifriteksti vastab millele avatud tekstile:
Šifritekst 1:
PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTAŠifritekst 2:
DWKJZXYU
Vastus on selge. Avatud tekstide seas sai ainult avatud tekst 1 olla kokku surutud teise šifriteksti nappi pikkusesse. Me tuvastasime selle, teadmata midagi kokkusurumise algoritmist, salajaste võtmetest ega isegi šifrist endast. Võrreldes võimalike krüptograafiliste rünnakute hierarhiaga on see omamoodi hullumeelsus.
Kelsey märgib edasi, et teatud ebatavalistes tingimustes saab seda põhimõtet kasutada ka oraakli rünnaku läbiviimiseks. Eriti kirjeldab ta, kuidas ründaja saab taastada salajase avatud teksti, kui ta suudab sundida serverit vormi andmeid (avatud tekst, millele järgneb
, kui ta kontrollib
ja suudab kuidagi kontrollida šifreeritud tulemuse pikkust.
Jällegi, nagu muude oraakli rünnakute puhul, on meil suhe:

Jällegi kontrollime ühte liiget (
), näeme väikest teavet teise liikme (šifriteksti) kohta ja püüame taastada viimase (avatud teksti). Kuigi tegemist on analoogia, on see võrreldes teiste nähtud oraakli rünnakutega mõnevõrra ebatavaline olukord.
Kuna illustreerida, kuidas selline rünnak võib toimida, kasutame väljamõeldud tihendusskeemi, mille nimetus on TOYZIP. See otsib teksti read, mis on juba varem tekstis esinenud, ja asendab need kolme täitebaiti, mis näitavad, kust leida varasema eksemplari rida ja kuivõrd sageli see seal esineb. Näiteks, rida helloworldhello võib olla tihendatud kujule helloworld[00][00][05] pikkusega 13 baiti võrreldes originaali 15-baitisega.
Oletame, et häkker üritab taastada avatud tekstivormi password=..., kus parool ise on teadmata. Vastavalt Kelsi rünnakumudelile võib häkker paluda serveril tihendada ja seejärel krüpteerida vormi sõnumid (avatud tekst, millele järgneb
), kus
— on suvaline tekst. Kui server on töö lõpetanud, teatab ta tulemuse pikkuse. Rünnak toimub järgmiselt:
Häkker: Palun tihenda ja krüpteeri avatud tekst ilma igasuguste täitebittideta.
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 baiti, mis asendasid password=] + a
Häkker: Palun tihendage ja krüpteerige avatud tekst, millele on lisatud
parool=b.Server: Tulemuse pikkus on 18.
Häkker: Palun tihendage ja krüpteerige avatud tekst, millele on lisatud
parool=c.Server: Tulemuse pikkus on 17.
Häkker märgib: [originaal 14] + [kolm baiti, mis asendasid parool=c]. See eeldab, et algses avatud tekstis on rida parool=c. Seega algab parool tähega c
Häkker: Palun tihendage ja krüpteerige avatud tekst, millele on lisatud
parool=ca.Server: Tulemuse pikkus on 18.
Häkker märgib: [originaal 14] + [kolm baiti, mis asendasid parool=c] + a
Häkker: Palun tihendage ja krüpteerige avatud tekst, millele on lisatud
parool=cb.Server: Tulemuse pikkus on 18.
(… mõni aeg hiljem…)
Häkker: Palun tihendage ja krüpteerige avatud tekst, millele on lisatud
parool=co.Server: Tulemuse pikkus on 17.
Häkker märgib: [originaal 14] + [kolm baiti, mis asendasid parool=co]. Sama loogika kohaselt järeldab häkker, et parool algab tähest co
Nii jätkatakse seni, kuni kogu parool on taastatud.
Lugejal on lubatud arvata, et see on puhtalt akadeemiline harjutus ja sellist ründe stsenaariumi ei tule kunagi ette tõelises maailmas. Kahjuks, nagu me varsti näeme, on krüptograafias parem mitte lubada.
Bränditud haavatavused: CRIME, POODLE, DROWN
Lõpuks, pärast põhjalikku teooria uurimist, saame vaadata, kuidas neid meetodeid rakendatakse reaalsetes krüptograafilistes rünnakutes.
CRIME
Kui rünnak suunatakse ohvri brauserile ja võrgule, on mõned asjad kergemad ja mõned keerulisemad. Näiteks ohvri liiklust on lihtne näha: piisab, kui istuda samas kohvikus WiFi-ühendusega. Seetõttu on potentsiaalsetele ohvritele (st kõigile) tavaliselt soovitatav kasutada krüpteeritud ühendust. Veidi keerulisem, kuid siiski võimalik, on teha HTTP-päringuid ohvri nimel mõnele kolmandale veebisaidile (näiteks Google). Ründaja peab oma ohvrit meelitama pahatahtlikule veebilehele, mille skript teeb päringu. Veebibrauserid annavad automaatselt vastava seansi küpsise.
See tundub uskumatuna. Kui Bob külastas evil.com, kas sellel saidil olev skript võib tõesti paluda Google'il Bobi parooli e-postiga saata aadressile attacker@evil.com? Ну, в теории да, но на самом деле нет. Такой сценарий называется атакой на подделку межсайтовых запросов (, CSRF), ja see oli populaarne umbes 90ndate keskpaiku. Tänapäeval, kui evil.com proovitakse sellist trikki, vastab Google (või mõni endale lubatav veebisait) tavaliselt: „Suurepärane, aga teie CSRF-token selle tehingu jaoks on... hmm... kolm triljonit ja seitse. Palun proovige seda numbrit uuesti. Kaasaegsed brauserid rakendavad midagi, mida nimetatakse "ühtse päritolu poliitikaks" (same-origin policy), mille kohaselt ei pääse A saidi skriptid B saidilt saadud teabele juurde. Seega saab skript evil.com saata päringuid google.com, kuid ei saa lugeda vastuseid ega teostada tehingut.
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 seansi küpsise. Selle küpsisega avab ta lihtsalt uue Google'i vahekaart, mitte oma brauserist väljumata, ja esitleb end Bobina, et mitte kokku puutuda tüütu ühtse päritolu poliitikaga. Kuid häkkerile on see kahjuks üha vähem tavaline. Internet on juba ammu kuulutanud sõda krüpteerimata ühendustele ning Bobi väljaminev liiklus on tõenäoliselt krüpteeritud, olgu tal see meeltmööda või mitte. Lisaks on alates protokolli rakendamisest liiklus samuti kokku surutud enne krüpteerimist; see oli tavaline praktika viivituse vähendamiseks.
Siia astub mängu (Compression Ratio Infoleak Made Easy, lihtne lekke kaudu kokkusurumise suhtega). Haavatavus, mille esitlesid 2012. aasta septembris küberjulgeoleku teadlased Giuliano Rizzo ja Thai Duong. Oleme juba arutanud kogu teoreetilise aluse, mis võimaldab mõista, mida nad tegid ja kuidas. Häkker võib sundida Bobi brauserit saatma päringuid Google'isse ning seejärel kuulama vastuseid kohalikus võrgus kokkusurutud, krüpteeritud kujul. Seetõttu on meil:

Siin kontrollib häkker päringut ja tal on juurdepääs liiklusnuhkijale, sealhulgas pakettide suurusele. Kelsey väljamõeldud stsenaarium on saanud teoks.
Teooriat mõistes lõid CRIME autorid eksploitatsiooni, mis suudab varastada sessiooniküpsiseid laialdaselt kasutatavatelt veebisaitidelt, sealhulgas Gmail, Twitter, Dropbox ja Github. Haavatavus mõjutas enamikku kaasaegsetest veebibrauseritest, mille tulemusena vabastati plaastrid, mis maapinda kandsid SSL-i kokkusurumise funktsiooni, et seda üldse mitte kasutada. Ainsana jäi haavatavusest puutumata väärikas Internet Explorer, mis ei kasutanud kunagi SSL-i kokkusurumist.
POODLE
Oktoobris 2014 pani Google'i turvameeskond turvalisuse kogukonna ärevusse. Nad suutsid ära kasutada SSL-protokolli haavatavust, mis oli parandatud üle kümne aasta tagasi.
Selgus, et kuigi serverites töötab suurepärane uus TLSv1.2, on paljud jättnud vananenud SSLv3 toe Internet Explorer 6 tagasiside ühilduvuse nimel. Oleme juba rääkinud languse rünnakutest, seega võite ette kujutada, mis toimub. Hästi korraldatud käepigistuse protokolli saboteerimine – ja serverid on valmis tagasi liikuma vana hea SSLv3 peale, tühistades põhimõtteliselt viimased 15 aastat turva-uuringutest.
Ajaloolise konteksti jaoks, :
Transport Layer Security (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 nimetusega «Secure Sockets Layer» ehk SSL. Kuuldavasti oli esimene versioon SSL nii kohutav, et arendajad kogusid kogu koodi ja maetasid selle salajasse prügilasse New Mexico osariigis. Seetõttu on esimene avalik versioon SSL tegelikult . See on üsna hirmutav, ja [..] see oli 90ndate keskpaiku toodetud toode, mida tänapäeva krüptograafid peavad «». Paljusid tänapäeval tuntud kõige kohutavamaid krüptograafilisi rünnakuid ei olnud veel avastatud. Tulemuseks pidid SSLv2 protokolli arendajad põhimõtteliselt pimeduses teed leidma ning nad kohtusid — nende suureks pettumuseks ja meie kasuks, kuna rünnakud SSLv2-le andsid hindamatud õppetunnid järgmise põlvkonna protokolle silmas pidades.
Pärast neid sündmusi, 1996. aastal, ümber töötanud Netscape'i ettevõte töötas SSL protokolli nullist. Tulemuseks oli SSL versioon 3, mis .
Häkkijate jaoks on hea uudis, et "mitmed" ei tähenda "kõik". Üldiselt pakkus SSLv3 kõik vajalikud koostisosad, et alustada Vodené rünnakut. Protokoll kasutas blokksalakirja CBC režiimis ja ebaturvalist täitmisviisi (seda parandati TLS-is; seetõttu tekkis vajadus allapoole rünnaku järele). Kui te mäletate täitmisviisi meie algses kirjelduse rünnaku Vodené, näeb SSLv3 täitmisviis välja väga sarnane.
Kuid häkkijate halvaks õnneks ei tähenda "sarnane" "identne". SSLv3 täitmisviis on kujul „N suvalist bitti, millele järgneb number N”. Proovige sellistes tingimustes valida kujuteldav krüpteeritud teksti plokk ja läbida kõik Vodené rünnaku algsed etapid: te avastate, et rünnak suudab edukalt välja tõmmata viimase bitti vastavast avatud teksti plokist, kuid edasi ei pääse. Iga 16. bitini krüpteeritud teksti dekodeerimine on suurepärane trikk, kuid see ei ole võit.
Kuna Google'ile oli ebaõnnestumisega silmitsi seistes ainult üks võimalus, otsustasid nad üle minna võimsamale ohumudelile, nagu see, mida kasutati CRIME'is. Kui eeldada, et ründaja on skript, mis töötab ohvri brauseri vahekaardil ja suudab välja noppida sessiooniküpsised, on rünnak ikkagi muljetavaldav. Kuigi laiem ohumudel on vähem realistlik, oleme varasemas jaotises juba näinud, et see konkreetne mudel on teostatav.
Arvestades selliseid tugevamaid ründevõimeid, võib rünnak jätkuda. Pidage meeles, et ründaja teab, kus peitub krüpteeritud sessiooniküpsise fail, ja juhtib sellele eelneva HTTP-päringu pikkust. Seetõttu suudab ta manipuleerida HTTP-päringuga, et joondada küpsise viimane bait ploki lõpuga. Nüüd on see bait sobiv dekrüpteerimiseks. Simple on lihtsalt lisada päringule üks märk, samas kui eelviimane bait jääb samasse kohta ja sobib samamoodi ikkagi proovimiseks. Rünnak jätkub, kuni küpsise fail on täielikult taastatud. Seda nimetatakse POODLE'iks: Padding Oracle on Downgraded Legacy Encryption, puhverdusoraakel vähenenud ja vananenud krüpteerimisel.
DROWN
Nagu me juba mainisime, oli SSLv3-l puudusi, kuid see erines kardinaalselt eelkäijast, kuna lekkiv SSLv2 oli teise ajastu toode. Seal sai sõnumi keskel katkestada: ma nõustun sellega ainult üle mu laiba muutus ma nõustun sellega; klient ja server said kohtuda internetis, usaldus looma ja vahetama saladusi pahatahtlike silme all, kes seejärel kergesti esitasid end ühe või teise kui õigena. Üks probleem on ka eksportkrüptograafia, millest mainisime FREAKi arutelul. See oli krüptograafiline Soodoma ja Gomorra.
2016. aasta märtsis kogunes rühm teadlasi erinevatest tehnilistest valdkondadest, et teha üllatav avastus: SSLv2 kasutatakse endiselt turvasüsteemides. Jah, kurjategijatel ei olnud enam võimalik kaasaegseid TLS seansse SSLv2-ks langetada, kuna see turvahaigus suleti pärast FREAKi ja POODLE'it, kuid nad saavad endiselt serveritega ühendust luua ja alustada SSLv2 seansse ise.
Te küsid, miks meid peaks häirima, mida nad seal teevad? Neil on haavatav seanss, kuid see ei tohiks mõjutada teisi seansse või serveri turvalisust — eks? Tõepoolest, teoorias peakski olema nii. Kuid ei ole — kuna SSL-sertifikaatide genereerimine toob kaasa teatud koormuse, mille tõttu kasutavad paljud serverid samu sertifikaate ja seega samu RSA võtmeid TLS ja SSLv2 ühenduste jaoks. Veelgi hullem on see, et OpenSSL-i vea tõttu ei toimunud selles populaarse rakenduse puhul tõeliselt valikut "Lülita SSLv2 välja".
See võimaldas krossprotokollite rünnakut TLS-ile, mida nimetatakse (Decrypting RSA with Obsolete and Weakened eNcryption, dekrüpteerimine RSA aegunud ja nõrgestatud krüptimisega). Tuletame meelde, et see ei ole sama mis langetamise rünnak; häkker ei pea toimima kui «mees keset» ja ei pea kaasama klienti osalema ebaohutus sessioonis. Kurjategijad algatavad lihtsalt ise ebaohutu SSLv2 sessiooni serveriga, ründavad nõrka protokolli ja taastavad suletud serveri RSA võtme. See võti kehtib ka TLS-ühenduste jaoks, ja sellest hetkest ei päästa ükski TLS-i turvalisus seda häkkimise eest.
Kuid rünnakuks on vaja töötavat rünnakut SSLv2 vastu, mis võimaldab taastada mitte ainult konkreetset liiklust, vaid ka saladuslikku serveri RSA võtit. Kuigi see on keeruline ülesanne, saavad teadlased valida mis tahes haavatavuse, mis on pärast SSLv2 täielikult suletud. Lõpuks leidsid nad sobiva variandi: Blyhcenbacheri rünnaku, millest oleme juba maininud ja mille selgitame järgmisel artiklil. SSL ja TLS on kaitstud selle rünnaku eest, kuid mõned juhuslikud SSL-i funktsioonid koos lühikeste võtmetega eksportklassi krüptograafias, muutsid selle võimalikuks. .
DROWN-i haavatavuste avaldamise ajal olid 25% Interneti tippveebilehtedest haavatavad ning rünnakut oli võimalik teostada suhteliselt tagasihoidlike ressurssidega, mis olid isegi n-ö nurjatute üksikute häkkerite käes. RSA-serveri võtme hankimiseks olid vajalikud kaheksa tundi arvutusi ja $440, ning SSLv2 staatust muudeti 'aegunuks' 'radioaktiivseks'.
Oota, aga kuidas Heartbleed'i puhul?
See ei ole krüptograafiline rünnak sama mõtte järgi, nagu eespool kirjas; see on puhverdusülekanne.
Teeme pausi
Alustasime mõningate põhimõtteliste meetoditega: bruteforce, interpoleerimine, allapoole viimine, ristprotokoll ja eelnevalt arvutamine. Seejärel uurisime üht edasijõudnud tehnikat, mis võib olla kaasaegsete krüptograafiliste rünnakute peamine komponent: oraakli rünnak. Olime selle kallal üsna kaua taga ajanud ja mõistsime mitte ainult põhimõtet, vaid ka kahe konkreetse teostuse tehnilisi detaile: Vodenä rünnak CBC krüpteerimisrežiimile ja Kelsey rünnakud eelnevate kokkusurumisega krüpteerimisprotokollidele.
Nõrkade võtmete kasutamine ja seejärel sama võtme korduv rakendamine on FREAK rünnakus, mis võib kombineerida kahte meetodit. Me tutvustasime seda rünnakut ja selle ettevalmistust, kui vaatasime läbi videosid, kus sihtsaitide turvakihtide nõrgad võtmed avavad võimaluse neid rünnata. Järgmises artiklis toome välja sarnase Logjam rünnaku, mis keskendub avaliku võtme algoritmidele.
Edasi liikudes, tutvustasime veel kolme näidet, kuidas neid printsiipide rakendusi kasutada. Esiteks, CRIME ja POODLE: kaks rünnakut, mis tuginesid häkkeri võimele sisestada juhuslikku avatud tekstiga sihttekstiga viitena, et uurida serveri vastuseid ja seejärel, kasutades oraakli rünnaku metodoloogiat, et kasutada seda vähest teavet avatud teksti osaliseks taastamiseks. CRIME võttis suuna Kelsey SSL-i kokkusurumise rünnaku poole, samas kui POODLE kasutas selle asemel Vodené CBC rünnaku varianti sama efektiga.
Seejärel tõime tähelepanu DROWN-i rünnakule, mis loob serveriga ühenduse vananenud protokolli SSLv2 kaudu ja taastab siis salajased serveri võtmed Bleichbächeri rünnaku abil. Praegu oleme jätnud selle rünnaku tehnilised üksikasjad vahele; nagu Logjam, peab see ootama, kuni uurime põhjalikult avaliku võtmega krüptosüsteeme ja nende haavatavusi.
Järgmises artiklis räägime edasijõudnud rünnakutest — nagu näiteks kesktee meetod (meet-in-the-middle), diferentseeriv krüptaanalüüs ja sünnipäevade rünnak. Teeme lühikese ülevaate kolmandate kanalite rünnakutest ja seejärel sukeldume kõige huvitavasse — avaliku võtmega krüptosüsteemidesse.
Allikas: habr.com

= (bait n on
)
(bait n on
)