Kryptografické útoky: vysvetlenie pre zmätené mysle

Pri slove „kryptografia“ niektorí spomínajú svoje WiFi heslo, zelený zámok vedľa adresy obľúbenej stránky a to, ako je ťažké preniknúť do cudzieho e-mailu. Iní si spomenú na sériu zraniteľností za posledné roky s výstižnými skratkami (DROWN, FREAK, POODLE…) a štýlovými logami, a na varovanie, aby si okamžite aktualizovali prehliadač.

Kryptografia pokrýva všetko toto, ale essencia je v niečom inom. Esencia spočíva v jemnej hranici medzi jednoduchým a zložitým. Niektoré veci sa dajú ľahko urobiť, ale ťažko sa vracajú späť: napríklad, rozbiť vajíčko. Iné veci sa robia jednoducho, ale je ťažké ich vrátiť späť, keď chýba malá, ale dôležitá rozhodujúca časť: napríklad, otvoriť zamknuté dvere, keď je „rozhodujúca časť“ kľúčom. Kryptografia skúma tieto situácie a spôsoby ich praktického využitia.

Za posledné roky sa zbierka kryptografických útokov premenila na zoologickú záhradu kričiacich log a obsadených vzorcami vedeckých článkov a vyvolala všeobecný temný pocit, že je všetko poškodené. Ale v skutočnosti mnohé z útokov sú založené na niekoľkých spoločných princípoch, zatiaľ čo nekonečné stránky vzorcov sa často zredukujú na jednoducho pochopiteľné myšlienky.

V tejto sérii článkov preskúmame rôzne typy kryptografických útokov, so zameraním na základné zásady. V hrubých črtách a nie úplne v tomto poradí, ale povieme nasledujúce:

  • Základné stratégie: bruteforce, frekvenčná analýza, interpolácia, pokles a krížové protokoly.
  • „Značkové“ zraniteľnosti: FREAK, CRIME, POODLE, DROWN, Logjam.
  • Pokročilé stratégie: útoky orákulum (útok Vodena, útok Kelsey); metodika stretnutia v strede (meet-in-the-middle), útok „narodenín“, štatistické skreslenie (diferenciálna kryptanalyza, integrálna kryptanalyza atď.).
  • Útoky prostredníctvom bočných kanálov a ich blízki príbuzní, metódy analýzy porúch.
  • Útoky na kryptografiu s verejným kľúčom: kubický koreň, vysielanie, prepojené správy, útok Copperfield, algoritmus Pollard-Hellman, číselné sitko, útok Wiener, útok Bleichenbacher.

Tento konkrétny článok pokrýva vyššie uvedený materiál až po útok Kelsey.

Základné stratégie

Nasledujúce útoky sú jednoduché v tom zmysle, že ich možno prakticky úplne vysvetliť bez špeciálnych technických detailov. Vysvetlíme každý typ útoku v najjednoduchších termínoch, ani sa nehlboko zaoberajúc zložitými príkladmi alebo rozšírenými spôsobmi použitia.

Niektoré z týchto útokov už stratili svoju aktuálnosť a mnoho rokov sa nepoužívali. Iné – sú staré známe, stále pravidelne pasú na nič netušiacich vývojárov kryptosystémov v 21. storočí. Môžeme považovať, že éra modernej kryptografie začala príchodom IBM DES – prvého šifrovacieho algoritmu, ktorý odolal všetkým útokom na tomto zozname.

Jednoduchý bruteforce

Kryptografické útoky: vysvetlenie pre zmätené mysleŠifrovací systém sa skladá z dvoch častí: 1) šifrovacia funkcia, ktorá prijíma správu (otvorený text) v kombinácii s kľúčom a potom vytvára zašifrovanú správu – šifrovaný text; 2) dešifrovacia funkcia, ktorá prijíma šifrovaný text a kľúč a vytvára otvorený text. Šifrovanie aj dešifrovanie by mali byť s kľúčom ľahko vypočítateľné – a ťažko bez neho.

Predpokladajme, že vidíme šifrovaný text a snažíme sa ho dešifrovať bez akejkoľvek dodatočnej informácie (tomu sa hovorí útok „iba na šifrovaný text“). Ak by sme akýmkoľvek čarovným spôsobom našli správny kľúč, môžeme ľahko overiť, že je naozaj správny, ak výsledok je rozumná správa.

Všimnite si, že tu sú dve implicitné predpoklady. Po prvé, že vieme, ako vykonať dešifrovanie, teda ako funguje kryptosystém. Je to štandardný predpoklad pri diskusii o kryptografii. Skrývanie detailov implementácie šifry pred útočníkmi sa môže zdať ako dodatočné opatrenie zabezpečenia, ale akonáhle útočník zistí tieto detaily, toto dodatočné zabezpečenie nezvratne a bez povšimnutia zmizne. Takýto je Kерckhoffsov princíp: zisk systému do rúk nepriateľa by nemal spôsobovať nepríjemnosti.

Po druhé, predpokladáme, že správny kľúč je jediný kľúč, ktorý povedie k rozumnej dešifrovanej správe. Toto je tiež rozumný predpoklad; platí, ak je šifrovaný text oveľa dlhší ako kľúč a je dobre čitateľný. Zvyčajne to tak býva v reálnom svete, s výnimkou obrovských nepraktických kľúčov alebo a iných manipulácií, ktoré je lepšie nechať bokom (ak sa vám nepáči, že sme sa vzdali vysvetlení, prosím, pozrite sa na teóriu 3.8 tu).

Vzhľadom na to, čo bolo uvedené, vzniká stratégia: skontrolovať každý možný kľúč. Toto sa nazýva brute force a táto útok zaručene funguje proti všetkým praktickým šifrom — nakoniec. Napríklad, brute force je dostatočný na to, aby prelomiť Cézarovu šifru, starodávnu šifru, kde kľúčom je jedno písmeno z abecedy, čo znamená niečo viac ako 20 možných kľúčov.

Bohužiaľ pre kryptanalytikov, zväčšenie veľkosti kľúča dobre chráni pred brute force. S rastom veľkosti kľúča sa počet možných kľúčov exponenciálne zvyšuje. Pri súčasných veľkostiach kľúčov je jednoduchý brute force úplne nepraktický. Aby sme pochopili, čo máme na mysli, zoberme si najrýchlejší známy superpočítač z polovice roku 2019: Summit od IBM, s vrcholovým výkonom okolo 10^17 operácií za sekundu. Dnes typická dĺžka kľúča je 128 bitov, čo znamená 2^128 možných kombinácií. Na prechod všetkých kľúčov by superpočítaču Summit trvalo čas, ktorý je približne 7800-krát dlhší než vek vesmíru.

Máme považovať brute force za historický kuriozitu? Rozhodne nie: je to nevyhnutná ingrediencia v kuchárskej knihe kryptanalýzy. Zriedkavo sa stretávame s tak slabými šiframi, že ich je možné prelomiť iba inteligentným útokom bez použitia sily do tej či onej miery. Mnoho úspešných prelomení najprv využíva algoritmickú metódu na oslabenie cieľovej šifry a potom spustí brute force.

Frekvenčná analýza

Kryptografické útoky: vysvetlenie pre zmätené mysleVäčšina textov nie je nezrozumiteľná. Napríklad v anglických textoch je veľa písmen ‘e’ a článkov ‘the’; v binárnych súboroch je veľa nulových bajtov ako vycpávka medzi fragmentami informácií. Frekvenčná analýza je akýkoľvek útok, ktorý využíva tento fakt.

Kanonickým príkladom šifry, ktorá je zraniteľná voči tomuto útoku, je jednoduchá šifra substitúcie. V tejto šifre predstavuje kľúč tabuľku s nahradením všetkých písmen. Napríklad, ‘g’ je nahradené ‘h’, ‘o’ — j, takže slovo ‘go’ sa mení na ‘hj’. Táto šifra je ťažko podliehajúca jednoduchému brute force, pretože existuje veľmi veľa možných tabuliek substitúcie. Ak vás zaujíma matematika, efektívna dĺžka kľúča je približne 88 bitov: toto
Kryptografické útoky: vysvetlenie pre zmätené mysle. Často však frekvenčná analýza rýchlo vyrieši problém.

Zvážime nasledujúci šifrový text spracovaný jednoduchým substitučným šifrom:

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

Pretože Y sa často vyskytuje, vrátane konca mnohých slov, môžeme predbežne predpokladať, že ide o písmeno e:

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

Pár XD sa opakuje na začiatku niekoľkých slov. Konkrétne kombinácia XDeLe jasne naznačuje slovo these alebo there, preto pokračujeme:

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

Ďalej predpokladajme, že L zodpovedá r, A — a a tak ďalej. Je pravdepodobné, že bude potrebné urobiť niekoľko pokusov, ale v porovnaní s úplným brute-force útokom táto technika obnovuje pôvodný text v krátkom čase:

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

Pre niektorých je riešenie takýchto "kryptogramov" zaujímavým koníčkom.

Myšlienka frekvenčnej analýzy je zásadnejšia, než sa môže na prvý pohľad zdať. A je použiteľná na oveľa zložitejšie šifry. Počas celej histórie sa rôzne konštrukcie šifier snažili odolávať takýmto útokom pomocou „polialfabetickej substitúcie“. Počas šifrovania sa tabuľka substitúcie písmen mení zložitými, ale predvídateľnými spôsobmi, ktoré závisia od kľúča. Všetky tieto šifry sa kedysi považovali za ťažko prelomiteľné; predsa iba skromná frekvenčná analýza ich nakoniec všetky prekonala.

Najambicióznejším polialfabetickým šifrom v histórii a pravdepodobne aj najznámejším bol šifrovací stroj Enigma počas druhej svetovej vojny. Bol relatívne zložitý v porovnaní s predchodcami, ale po dlhej a usilovnej práci britskí kryptanalytici ho rozlúštili pomocou frekvenčnej analýzy. Samozrejme, že nedokázali vyvinúť elegantný útok, ako je ukázané vyššie; museli porovnávať známe páry otvorených a zašifrovaných textov (tzv. „útok na základe otvorených textov“) a dokonca vyprovokovať používateľov „Enigmy“, aby šifrovali určité správy a analyzovali výsledok („útok na základe vopred zvoleného otvoreného textu“). No to nezjednodušilo osud porazených armád nepriateľa ani potopených ponoriek.

Po tomto triumfe frekvenčná analýza zmizla z histórie kryptológie. Šifry modernej digitálnej éry sú navrhnuté tak, aby pracovali s bitmi, a nie s písmenami. Čo je ešte dôležitejšie, tieto šifry boli vytvorené s temným pochopením toho, čo sa neskôr nazývalo zákon Šnajjera: každý môže vytvoriť algoritmus šifrovania, ktorý sám nedokáže prelomiť. Nie je dosť, aby šifrovací systém vyzeral zložitý: aby preukázal svoju hodnotu, musí prejsť neúprosne bezpečnostným preskúmaním mnohými kryptológmi, ktorí urobia všetko, čo je v ich silách, aby šifru prelomia.

Predbežné výpočty

Kryptografické útoky: vysvetlenie pre zmätené myslePredstavme si hypotetické mesto Prekom Heights s populáciou 200 000 ľudí. V každom dome mesta sú cennosti priemerne vo výške 30 000 dolárov, ale nie viac ako 50 000 dolárov. Trh s bezpečnosťou v Prekome monopolizovala spoločnosť ACME Industries, ktorá vyrába legendárne dverové zámky triedy Coyote ™. Podľa odborného posúdenia je zámok triedy Coyote schopná prelomiť iba veľmi zložitá hypotetická mašina, ktorej vytvorenie si vyžaduje približne päť rokov a investíciu 50 000 dolárov. Je mesto v bezpečí?

Skôr nie. Napokon sa objaví dosť ambiciózny zločinec. Bude uvažovať takto: „Áno, ponesiem vysoké počiatočné náklady. Päť rokov trpezlivého čakania a 50 000 dolárov. Ale po dokončení práce budem mať prístup k všekému bohatstvu tohto mesta. Ak dobre zahrám svoje karty, táto investícia sa mnohonásobne vráti.“

Podobne je to aj v kryptografii. Útoky na konkrétnu šifru sú podrobené neúprosnému analýze nákladov a prínosov. Ak je pomer priaznivý, útok sa neuskutoční. Ale útoky, ktoré cielia na mnoho potenciálnych obetí, sa takmer vždy oplatia, a v tomto prípade je najlepšou praktikou predpokladať, že začali od prvého dňa. Máme vlastne kryptografickú verziu Murphyho zákona: „Všetko, čo môže systém skutočne zlomiť, zlomiť systém.“

Najjednoduchší príklad kryptosystému, ktorý je zraniteľný voči útoku s predbežnými výpočtami, je šifrovanie so stálym algoritmom bez použitia kľúča. Tak tomu bolo v prípade Cézarovej šifry, ktorý jednoducho posúva každé písmeno abecedy o tri písmená dopredu (tabuľka je uzavretá, takže posledné písmeno v abecede je šifrované tretím). Tu sa opäť prejavuje princíp Kerckhoffsov: akonáhle je systém zlomený, je zlomený navždy.

Koncept je jednoduchý. Aj začínajúci vývojár kryptosystémov si pravdepodobne uvedomí hrozbu a primerane sa na ňu pripraví. Ak sa pozrieme na evolúciu kryptografie, takéto útoky boli pre väčšinu šifier zbytočné, počnúc prvými vylepšenými verziami Cezarovho šifrova, až po úpadok polyalfabetických šifier. Tieto útoky sa vrátili až s nástupom modernej éry kryptografie.

Toto vrátenie je spôsobené dvoma faktormi. Po prvé, konečne sa objavili dostatočne zložité kryptosystémy, kde možnosť využitia po zlomení nebola očividná. Po druhé, kryptografia sa tak rozsiahlo rozšírila, že milióny neprofesionálov každý deň rozhodovali, kde a aké časti kryptografie použiť opakovane. Trvalo nejaký čas, kým odborníci uvedomili vzniknuté riziká a zdvihli varovný prst.

Pamätajte si útok s predpočítaním: na konci článku preskúmame dva kryptografické príklady z reálneho života, kde zohrali dôležitú úlohu.

Interpolácia

Pred vami známy detektív Sherlock Holmes, vykonávajúci útok s interpoláciou na nešťastného doktora Watsona:

I hneď som sa domyslel, že ste prišli z Afganistanu... Moje myšlienkové pochody boli také: „Tento človek je typom – lekár, ale má vojenskú postavu. Znamená to vojenský lekár. Práve sa vrátil z tropov – má tmavú pleť, ale to nie je prirodzený odtieň jeho pokožky, pretože jeho zápästia sú oveľa bledšie. Tvár je vyčerpaná – evidentne si prešiel niečím a prekonal chorobu. Bol zranený v ľavej ruke – drží ju nepohybne a trochu neprirodzene. Kde mohol vojenský lekár z Anglicka v tropoch držať ťažkosti a získať zranenie? Samozrejme, v Afganistane.“ Celý priebeh myšlienok nezabral ani sekundu. A tak som povedal, že ste prišli z Afganistanu, a vy ste boli prekvapení.

Z každého úlu mohol Holmes extrahovať veľmi málo informácií. K svojmu záveru mohol dospieť len po zohľadnení všetkých naraz. Rovnako funguje interpolácia, ktorá skúma známe páry otvoreného a zašifrovaného textu, získané v dôsledku aplikácie toho istého kľúča. Z každého páru sa extrahujú jednotlivé pozorovania, ktoré umožňujú urobiť všeobecný záver o kľúči. Všetky tieto úsudky sú nejasné a zdajú sa byť bezcenné, kým náhle nedosiahnu kritickú masu a nevedú k jedinému možnému záveru: akýkoľvek by bol neuveriteľný, musí byť pravdivý. Potom sa alebo odhalí kľúč, alebo sa proces dešifrovania stane tak dokonale zvládnutým, že ho možno replikovať.

Ilustrujme na jednoduchom príklade, ako funguje interpolácia. Predpokladajme, že chceme prečítať osobný denník nášho nepriateľa Boba. Šifruje každé číslo v svojom denníku pomocou jednoduchej kryptosystémy, o ktorej sa dozvedel z reklamného inzerátu v časopise 'Posmech kryptografii'. Systém funguje nasledovne: Bob si vyberie dve čísla, ktoré má rád: Kryptografické útoky: vysvetlenie pre zmätené mysle a Kryptografické útoky: vysvetlenie pre zmätené mysle. Od tejto chvíle, aby zašifroval akékoľvek číslo Kryptografické útoky: vysvetlenie pre zmätené mysle, vypočíta Kryptografické útoky: vysvetlenie pre zmätené mysle. Napríklad, ak si Bob vybral Kryptografické útoky: vysvetlenie pre zmätené mysle a Kryptografické útoky: vysvetlenie pre zmätené mysle, číslo Kryptografické útoky: vysvetlenie pre zmätené mysle sa zašifruje ako Kryptografické útoky: vysvetlenie pre zmätené mysle.

Predpokladajme, že 28. decembra sme si všimli, že Bob niečo škriabe vo svojom denníku. Keď skončí, potichu ho vezmeme a pozrieme sa na posledný záznam:

Dátum: 235/520

Drahý denník,

Dnes bol dobrý deň. O 64 dni mám rande s Aliciou, ktorá žije v byte 843. Naozaj si myslím, že by mohla byť 26!

Keďže máme veľmi vážne úmysly sledovať Boba na jeho rande (v tomto scenári máme po 15 rokov), je kriticky dôležité zistiť dátum aj adresu Alicie. Našťastie si všimneme, že Bobova kryptosystéme je zraniteľná voči útoku interpolácie. Možno nepoznáme Kryptografické útoky: vysvetlenie pre zmätené mysle a Kryptografické útoky: vysvetlenie pre zmätené mysle, ale poznáme dnešný dátum, takže máme dva páry 'otvorený text — zašifrovaný text'. A to konkrétne vieme, že Kryptografické útoky: vysvetlenie pre zmätené mysle sa zašifruje do Kryptografické útoky: vysvetlenie pre zmätené mysle, a Kryptografické útoky: vysvetlenie pre zmätené mysle — v Kryptografické útoky: vysvetlenie pre zmätené mysle. Čo si zapíšeme:

Kryptografické útoky: vysvetlenie pre zmätené mysle

Kryptografické útoky: vysvetlenie pre zmätené mysle

Keďže nám je 15 rokov, už poznáme systém dvoch rovníc s dvoma neznámymi, čo v tejto situácii stačí na nájdenie Kryptografické útoky: vysvetlenie pre zmätené mysle a Kryptografické útoky: vysvetlenie pre zmätené mysle bez zvláštnych problémov. Každý pár „nezašifrovaný text - zašifrovaný text“ ukladá obmedzenie na kľúč Boba, a dve obmedzenia dohromady sú dostatočné na to, aby sa kľúč úplne obnovil. V našom príklade odpoveď Kryptografické útoky: vysvetlenie pre zmätené mysle a Kryptografické útoky: vysvetlenie pre zmätené mysle (pri Kryptografické útoky: vysvetlenie pre zmätené mysle Kryptografické útoky: vysvetlenie pre zmätené mysle, takže 26 v denníku zodpovedá slovu ‚ten‘, teda „ten pravý“ — pozn. prekl.

Interpoláciové útoky samozrejme nie sú obmedzené iba na takéto jednoduché príklady. Každý kryptosystém, ktorý sa dá zúžiť na dobre pochopiteľný matematický objekt a zoznam parametrov, je vystavený riziku interpoláciového útoku — čím je objekt zrozumiteľnejší, tým vyššie je riziko.

Nováčikovia často sťažujú, že kryptografia je „umením navrhnúť čo najviac škaredé veci“. Pravdepodobne za to môžu útoky interpolácie. Bob môže buď použiť elegantný matematický dizajn, alebo si udržať súkromie stretnutia s Alicou — ale bohužiaľ, zvyčajne nie je možné získať oboje. To sa ukáže, keď sa nakoniec dostaneme k téme kryptografie s verejným kľúčom.

Kros-protokol / zníženie

Kryptografické útoky: vysvetlenie pre zmätené mysleVo filme „Ilúzia podvodu“ (2013) sa skupina iluzionistov pokúša oklamať a vylákať celé bohatstvo skorumpovaného poisťovacieho magnáta Arta Treslera. Aby získali prístup k bankovému účtu Arta, iluzionisti musia buď poskytnúť jeho používateľské meno a heslo, alebo ho prinútiť osobne sa objaviť v banke a zúčastniť sa schémy.

Obe možnosti sú veľmi ťažké; chlapci sú zvyknutí vystupovať na pódiu, nie sa zapájať do operácií spravodajských služieb. Preto si vyberajú tretiu možnú možnosť: ich komplic zavolá do banky a prehlási sa za Arta. Banka kladie niekoľko otázok na overenie identity, ako meno strýka a meno prvého domáceho maznáčika; naši hrdinovia získavajú túto informáciu od Arta s pomocou obratnej sociálnej inžinierie. . Od tohto momentu už vynikajúca bezpečnosť hesla nemá žiadny význam.(Podľa mestského mýtu, ktorý sme osobne overili a potvrdili, sa kryptograf Eli Beham raz stretol s bankovým pokladníkom, ktorý trval na nastavení tajnej otázky. Keď sa pokladník opýtal na meno babičky z materskej strany, Beham začal diktovať: „Veľké X, malé y, tri…“).

(Согласно городской легенде, которую мы лично проверили и подтвердили, криптограф Эли Бихэм однажды столкнулся с кассиром банка, который настаивал на установке секретного вопроса. Когда кассир спросил имя бабушки по материнской линии, Бихэм начал диктовать: «Заглавная X, маленькая y, три…»).

Rovnako aj v kryptografii, ak sa na ochranu toho istého aktíva súčasne používajú dva kryptografické protokoly, pričom jeden je oveľa slabší ako druhý. Výsledný systém sa stáva zraniteľným voči krížovej protokolovej útoku, keď sa napáda slabší protokol, aby sa dostal k cieľu, aniž by sa dotýkal silnejšieho.

V niektorých zložitých prípadoch nestačí jednoducho sa spojiť so serverom prostredníctvom slabšieho protokolu, ale vyžaduje si to neúmyselnú účasť legitímneho klienta. To sa dá zrealizovať prostredníctvom takzvanej úpravy (downgrade) útoku. Na pochopenie tohto útoku predpokladajme, že naši iluzionisti majú zložitejšiu úlohu ako vo filme. Predpokladajme, že zamestnanec banky (pokladník) a Artur sa dostali do nejakých nepredvídaných okolností, v dôsledku ktorých sa uskutočnil takýto dialóg:

Útočník: Haló? Tu je Artur Tressler. Chcel by som obnoviť svoje heslo.

Pokladník: Výborne. Prosím, pozrite sa do svojho osobného zoznamu tajných kódov, strana 28, slovo 3. Všetky nasledujúce správy budú zašifrované pomocou tohto konkrétneho slova ako kľúča. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…

Útočník: Hej, počkaj, počkaj. Je to naozaj potrebné? Nemôžeme proste hovoriť ako normálni ľudia?

Pokladník: Neodporúčam to robiť.

Útočník: Ja len… počuj, mal som zlý deň, jasné? Som VIP klient a nemám náladu sa zaoberať tými hlúpymi kódovými knihami.

Pokladník: Dobre. Ak na tom trváte, pán Tressler. Čo chcete?

Útočník: Prosím, chcel by som previesť všetky svoje peniaze do Národného fondu obetí Artura Tresslera.

(Pauza).

Pokladník: Tak, rozumiem. Prosím, uveďte svoj PIN kód pre veľké transakcie.

Útočník: Môj čo?

Pokladník: Na vašu osobnú žiadosť transakcie tohto rozsahu vyžadujú zadanie PIN kódu pre veľké transakcie. Tento kód vám bol pridelený pri otvorení účtu.

Útočník:… Stratilo sa mi to. Je to naozaj potrebné? Nemôžete jednoducho schváliť transakciu?

Pokladník: Nie. Ospravedlňujem sa, pán Tressler. Opäť ide o bezpečnostné opatrenie, o ktoré ste požiadali. Ak chcete, môžeme vám poslať nový PIN kód na vašu e-mailovú adresu.

Naši hrdinovia odkladajú operáciu. Počúvajú niekoľko veľkých transakcií Tresslera s nádejou, že počujú PIN kód; ale zakaždým sa rozhovor zmení na zašifrovanú nezrozumiteľnosť, skôr než zaznie niečo zaujímavé. Nakoniec, v jeden krásny deň uvedú plán do akcie. Trpezlivo čakajú na okamih, keď Tressler musí uskutočniť veľkú transakciu po telefóne, pripojí sa k linke, a potom…

Tressler: Dobrý deň. Chcel by som uskutočniť vzdialenú transakciu, prosím.

Pokladník: Skvelé. Prosím, pozrite sa do svojej osobnej knihy tajných kódov, stránka…

(Hacker stlačí tlačidlo; hlas pokladníka sa premení na nečitateľný šum).

Pokladník: — #@$#@$#*@$$@#* bude zašifrované s týmto slovom ako kľúčom. AAAYRR PLRQRZ MMNJK LOJBAN…

Tressler: Prepáčte, úplne som to nepochopil. Ešte raz? Na ktorej stránke? Aké slovo?

Pokladník: To je stránka @#$@#*$)#*#@()#@$(#@*$(#@*.

Tressler: Čo?

Pokladník: Slovo číslo dvadsať @$#@$#%#$.

Tressler: Seriózne! Dosť už! Ty so svojím bezpečnostným protokolom - to je nejaký cirkus. Viem, že môžeš so mnou jednoducho normálne rozprávať.

Pokladník: Odporúčam…

Tressler: A ja ti neodporúčam plytvať mojím časom. Už nechcem viac počuť o tom, kým neopravia problémy so svojou telefónnou linkou. Môžeme uskutočniť túto dohodu alebo nie?

Pokladník:… áno. Dobre. Čo si prajete?

Tressler: Chcel by som previesť 20 000 dolárov na spoločnosť Lord Business Investments, číslo účtu…

Pokladník: Chvíľu, prosím. Je to veľká transakcia. Prosím, uveďte svoj PIN kód pre veľké transakcie.

Tressler: Čo? A, presne. 1234.

Tu je útok na zníženie. Slabší protokol „hovor priamo“ bol zamýšľaný ako možnosť pre krajné prípady. A predsa sme tu.

Môžete sa opýtať, kto v zdravom rozume by navrhoval skutočný systém typu „bezpečné, kým o to nepožiadajú“, aký je opísaný vyššie. Ale rovnako, ako fiktívna banka podstupuje riziko, aby si udržala zákazníkov, ktorí nemajú radi kryptografiu, tak aj systémy sa vo všeobecnosti často zmierujú s požiadavkami, ktoré sú ľahostajné alebo dokonca otvorene nepriateľské voči bezpečnosti.

Presne takýto príbeh sa stal s protokolom SSLv2 v roku 1995. Americká vláda už dávno začala vnímať kryptografiu ako zbraň, ktorú je lepšie držať ďaleko od vonkajších a vnútorných nepriateľov. Fragmenty kódu boli schválené na export z USA jednotlivé, často za podmienok úmyselného oslabenia algoritmu. Spoločnosti Netscape, vývojár najpopulárnejšieho prehliadača Netscape Navigator, dostali povolenie na SSLv2 iba s pôvodne zraniteľným kľúčom RSA 512 bitov (a 40 bitov pre RC4).

Na konci milénia sa pravidlá zjemnili a prístup k modernej kryptografii sa stal široko dostupným. Napriek tomu klienti a servery roky podporovali oslabenú „exportnú“ kryptografiu kvôli tej istej inercie, pre ktorú sa zachováva podpora akejkoľvek zastaranej sústavy. Klienti predpokladali, že sa môžu stretnúť so serverom, ktorý nepodporuje nič iné. Servery robili to isté. Samozrejme, protokol SSL určuje, že klienti a servery by nikdy nemali používať slabý protokol, keď je k dispozícii lepší. Ale tá istá predpokladaná situácia bola aj pre Tresstlera a jeho banku.

Táto teória sa uplatnila v dvoch známej útokoch, ktoré jedna za druhou otrasli bezpečnosť protokolu SSL v roku 2015, obidve zistené výskumníkmi Microsoft a INRIA. Najprv v februári zverejnili detaily útoku FREAK, a o tri mesiace neskôr ďalšiu podobnú útok pod názvom Logjam, ktorý podrobnejšie prediskutujeme, keď prejdeme k útokom na kryptografiu s otvoreným kľúčom.

Kryptografické útoky: vysvetlenie pre zmätené mysleZraniteľnosť FREAK (známou aj ako „Smack TLS“) sa prejavil, keď výskumníci analyzovali implementácie klient/server TLS a objavili zaujímavú chybu. V týchto implementáciách, ak klient ani nepožaduje používať slabú exportnú kryptografiu, ale server aj tak odpovedá takými kľúčmi — klient hovorí „Nuž dobre“ a prechádza na slabý súbor šifrov.

V tom čase všetci považovali exportnú kryptografiu za zastaranú a zakázanú na používanie, preto bola táto útok skutočným šokom a zasiahla mnoho dôležitých domén, vrátane webových stránok Bieleho domu, daňového úradu USA a NSA. Ešte horšie bolo, že mnohé zraniteľné servery optimalizovali výkon tým, že opäť používali tie isté kľúče namiesto toho, aby vytvárali nové pre každý reláciu. To po znížení protokolu umožnilo aj útok s predpočítaním: prelomenie jedného kľúča zostalo relatívne drahé (100 dolárov a 12 hodín v čase publikácie), ale praktické náklady na útok na spojenie sa výrazne znížili. Stačilo raz získať serverový kľúč a prelomiť šifry pre všetky nasledujúce spojenia od tohto momentu.

A skôr ako prejdeme ďalej, treba spomenúť jeden pokročilý útok…

Útok oráka

Kryptografické útoky: vysvetlenie pre zmätené mysleMoxie Marlinspike je najznámejší ako otec multiplatformového kryptomessengera Signal; ale osobne sa nám páči jedno z jeho menej známych inovácií — princíp kryptografickej prekliatia (Cryptographic Doom Principle). Trochu preformulované by sa dalo povedať: „Ak protokol vykonáva akúkoľvek kryptografickú operáciu na správe z potenciálne poškodzujúceho zdroja a správa sa inak v závislosti od výsledku, je odsúdený na zánik.“ Alebo v ostrejšej forme: „Neber od nepriateľa informácie na spracovanie, a ak musíš, aspoň neukazuj výsledok.“

Nechajme bokom pretečenia zásobníkov, injekcie príkazov a podobne; to presahuje rámec tejto diskusie. Porušenie „princípu prekliatia“ vedie k vážnym prolomeniam kryptografie, pretože protokol sa správa presne tak, ako má.

Pre príklad vezmime si vymyslenú konštrukciu so zraniteľným substitučným šifrom a potom ukážeme možný útok. Hoci sme už videli útok na substitučný šifru pomocou frekvenčnej analýzy, to nie je len „iný spôsob, ako rozbiť ten istý šifru“. Naopak, útoky oráka sú oveľa modernejší vynález, ktorý je použiteľný v mnohých situáciách, keď frekvenčná analýza zlyhá, a túto ukážku uvidíme v nasledujúcej sekcii. Tu bol jednoduchý šifram vybraný len na to, aby bol príklad zrozumiteľnejší.

Alice a Bob komunikujú pomocou jednoduchého substitučného šifrovania, pričom používajú kľúč známy iba im. Veľmi striktne dbajú na dĺžku správ: ich dĺžka je presne 20 znakov. Preto súhlasili, že ak niekto chce poslať kratšiu správu, musí pridať nejaký fiktívny text na koniec správy, aby mala presne 20 znakov. Po určitej diskusii sa rozhodli, že prijmú iba nasledujúce fiktívne texty: a, bb, ccc, dddd a pod. Týmto spôsobom je známy fiktívny text akejkoľvek potrebnej dĺžky.

Keď Alice alebo Bob dostane správu, najprv skontrolujú, či má správa správnu dĺžku (20 znakov) a sufix je správny fiktívny text. Ak nie, odpovedajú príslušnou chybovou správou. Ak je dĺžka textu a fiktívny text v poriadku, príjemca si prečíta samotnú správu a odošle zašifrovanú odpoveď.

Počas útoku sa útočník vydáva za Boba a posiela falošné správy Alice. Správy sú úplná hlúposť — útočník nemá kľúč a preto nedokáže falšovať zmysluplnú správu. Avšak, pretože protokol porušuje princíp bezprostrednosti, útočník môže aj tak vylákať Alicu do pasce, aby odhalila informácie o kľúči, ako je uvedené nižšie.

Útočník: PREWF ZHJKL MMMN. LA

Alice: Neplatný fiktívny text.

Útočník: PREWF ZHJKL MMMN. LB

Alice: Neplatný fiktívny text.

Útočník: PREWF ZHJKL MMMN. LC

Alice: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

Útočník nemá ani potuchy, čo práve povedala Alice, ale všimne si, že symbol C musí zodpovedať a, pretože Alice prijala fiktívny text.

Útočník: REWF ZHJKL MMMN. LAA

Alice: Neplatný fiktívny text.

Útočník: REWF ZHJKL MMMN. LBB

Alice: Neplatný fiktívny text.

Po niekoľkých pokusoch…

Útočník: REWF ZHJKL MMMN. LGG

Alice: Neplatný fiktívny text.

Útočník: REWF ZHJKL MMMN. LHH

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

Opäť, útočník nemá ani potuchy, čo práve povedala Alice, ale všimne si, že H musí zodpovedať b, pretože Alice prijala fiktívny text.

A tak ďalej, kým útočník nezistí hodnotu každého symbolu.

Na prvý pohľad sa tento prístup podobá útoku založenému na zvolených otvorených textoch. Nakoniec útočník vyberá šifrované texty a server ich ochotne spracováva. Hlavný rozdiel, ktorý robí tieto útoky realizovateľnými v reálnom svete, spočíva v tom, že útočník nemusí mať prístup k skutočnému dešifrovaniu — stačí mu odpoveď servera, aj taká neškodná, ako "Nesprávny fiktívny text."

Aj keď je tento konkrétny útok poučný, netreba sa príliš zaoberať špecifikami schémy "fiktívneho textu", konkrétnou použitou kryptosystémou alebo presnou sekvenciou správ odoslaných útočníkom. Hlavná myšlienka spočíva v tom, ako Alice reaguje rôznymi spôsobmi na základe vlastností otvoreného textu, a to bez overovania, či zodpovedajúci šifrovaný text skutočne pochádza od dôveryhodnej strany. Takto Alice umožňuje útočníkovi vytlačiť tajné informácie z jej odpovedí.

V tomto scenári je možné veľa zmeniť. Symboly, na ktoré reaguje Alice, alebo samotný rozdiel v jej správaní, alebo dokonca použitá kryptosystémy. Ale princíp zostane rovnaký a útok zostane realizovateľný v nejakej forme. Základná implementácia tohto útoku pomohla odhaliť niekoľko bezpečnostných chýb, ktoré si čoskoro prejdeme; ale najprv by sme sa mali naučiť niektoré teoretické lekcie. Ako použiť tento vymyslený "scenár Alice" v útoku, ktorý môže fungovať na súčasnom modernom šifre? Je to vôbec možné, aj teoreticky?

V roku 1998 švajčiarsky kryptograf Daniel Bleichenbacher potvrdil túto otázku kladne. Prezentoval útok oracle v široko používanom kryptosystéme s verejným kľúčom RSA, pri využívaní určitej schémy správ. V niektorých realizáciách RSA server odpovedá rôznymi chybovými správami v závislosti od toho, či otvorený text zodpovedá schéme alebo nie; to stačilo na vykonanie útoku.

Štyri roky neskôr, v roku 2002, francúzsky kryptograf Serge Vaudenay demonštroval útok na orákulum, takmer identický s tým, ktorý bol popísaný vyššie v scenári Alenky — s tým rozdielom, že namiesto vymysleného šifry prenikol do celého rešpektovaného triedy moderných šifier, ktoré ľudia naozaj používajú. Najmä útok Vaudenaya cieli na šifry s pevným veľkostným vstupom („blokové šifry“), keď sa používajú v tzv. „CBC režime šifrovania“ a s určitým populárnym systémom doplnenia, väčšinou ekvivalentným tomu, čo je v scenári Alenky.

Rovnako v roku 2002 americký kryptograf John Kelsey — spoluautor Twofish — navrhol rôzne útoky na orákulum na systémy, ktoré komprimujú správy a potom ich šifrujú. Najvýznamnejším z nich bol útok, ktorý využíval to, čo často možno odvodiť z pôvodnej dĺžky otvoreného textu od dĺžky zašifrovaného textu. V teórii to umožňuje uskutočniť útok na orákulum, ktorý obnovuje časti pôvodného otvoreného textu.

Ďalej uvádzame podrobnejší popis útokov Vaudenaya a Kelseyho (podrobne popíšeme útok Blychenbachera, keď sa dostaneme k útokom na kryptografiu s otvoreným kľúčom). Napriek všetkým našim snahám sa text stáva trochu technickým; preto, ak je vyššie uvedené dostatočné, preskočte nasledujúce dva oddiely.

Útok Vaudenaya

Ak chcete pochopiť útok Vaudenaya, musíte sa najprv trochu podrobnejšie porozprávať o blokových šifrách a režimoch šifrovania. „Blokový šifrovač“ je, ako už bolo spomenuté, šifrovač, ktorý prijíma kľúč a vstup určitej pevnej dĺžky („dĺžka bloku“) a vydáva zašifrovaný blok rovnakej dĺžky. Blokové šifry sú široko používané a považujú sa za relatívne bezpečné. Dnes už neplatný DES, ktorý považujú za prvý moderný šifrovací algoritmus, bol blokovým šifrom. Ako bolo spomenuté vyššie, to isté platí aj pre AES, ktorý sa dnes široko používa.

Žiaľ, blokové šifry majú jednu výraznú slabinu. Typická veľkosť bloku je 128 bitov, alebo 16 znakov. Je očividné, že moderná kryptografia si vyžaduje prácu s vstupnými údajmi väčšej veľkosti, a práve tu prichádzajú na scénu režimy šifrovania. Režim šifrovania je v podstate hack: je to spôsob, ako nejako aplikovať blokovú šifru, ktorá prijíma vstupné údaje len určitej veľkosti, na vstupné údaje ľubovoľnej dĺžky.

Útok Waternè je zameraný na populárny režim CBC (Cipher Block Chaining, režim reťazenia blokov šifrovaného textu). Útok považuje základnú blokovú šifru za čarovnú neprístupnú čiernu skrinku a úplne obchádza jej bezpečnosť.

Tu je diagram, ktorý ukazuje, ako režim CBC funguje:

Kryptografické útoky: vysvetlenie pre zmätené mysle

Kryptografické útoky: vysvetlenie pre zmätené mysle

Obkreslené plus znamená operáciu XOR (exkluzívne "ALEBO"). Napríklad, druhý blok šifrovaného textu bol získaný:

  1. vykonaním operácie XOR na druhom bloku otvoreného textu s prvým blokom šifrovaného textu.
  2. Šifrovaním získaného bloku pomocou blokovej šifry, s použitím kľúča.

Keďže CBC tak intenzívne využíva binárnu operáciu XOR, poďme využiť tento okamih, aby sme si pripomenuli niektoré jej vlastnosti:

  • Idempotencia: Kryptografické útoky: vysvetlenie pre zmätené mysle
  • Komutatívnosť: Kryptografické útoky: vysvetlenie pre zmätené mysle
  • Asociativita: Kryptografické útoky: vysvetlenie pre zmätené mysle
  • Inverzibilita: Kryptografické útoky: vysvetlenie pre zmätené mysle
  • Po bajtoch: byte n z Kryptografické útoky: vysvetlenie pre zmätené mysle = (byte n z Kryptografické útoky: vysvetlenie pre zmätené mysle) Kryptografické útoky: vysvetlenie pre zmätené mysle (byte n z Kryptografické útoky: vysvetlenie pre zmätené mysle)

Všeobecne platí, že tieto vlastnosti naznačujú, že ak máme rovnicu, ktorá obsahuje operácie XOR a jedno neznáme, dá sa vyriešiť. Napríklad, ak vieme, že Kryptografické útoky: vysvetlenie pre zmätené mysle s neznámym Kryptografické útoky: vysvetlenie pre zmätené mysle a známymi Kryptografické útoky: vysvetlenie pre zmätené mysle a Kryptografické útoky: vysvetlenie pre zmätené mysle, môžeme sa spoliehať na vyššie uvedené vlastnosti, aby sme vyriešili rovnicu pre Kryptografické útoky: vysvetlenie pre zmätené mysle. Aplikovaním XOR na oboch stranách rovnice s Kryptografické útoky: vysvetlenie pre zmätené mysle, dostaneme Kryptografické útoky: vysvetlenie pre zmätené mysle. O chvíľu to všetko nadobudne veľmi aktuálny význam.

Medzi naším scénarom Alice a útokom Waternè sú dva menej významné rozdiely a jeden hlavný rozdiel. Dva menej významné:

  • V scenári Alice očakávala, že otvorené texty končia znakmi a, bb, ccc a tak ďalej. V útoku Waternè obeť namiesto toho očakáva, že otvorené texty končia N-krát bajtom N (t.j. hexadecimálnym 01 alebo 02 02, alebo 03 03 03 a tak ďalej). To je čisto kozmetický rozdiel.
  • V scenárii Alici bolo ľahké povedať, či Alice prijala správu podľa odpovede „Nesprávny fiktívny text“. Pri útoku Vodene je potrebná väčšia analýza a presná implementácia na strane obete; ale pre jednoduchosť predpokladajme, že táto analýza je stále možná.

Hlavný rozdiel:

  • Keďže nepoužívame rovnaký kryptosystém, vzťah medzi ovládanými útočníkom bajtmi šifrovaného textu a tajomstvom (kľúč a otvorený text) bude, samozrejme, iný. Preto bude musieť útočník použiť inú stratégiu pri generovaní šifrotextov a interpretácii odpovedí servera.

Tento hlavný rozdiel je posledným fragmentom skladačky na pochopenie útoku Vodene, preto si na chvíľu zamyslime, prečo a ako je vôbec možné zorganizovať útok orákula na CBC.

Predpokladajme, že máme šifrotext CBC z 247 blokov, a chceme ho dešifrovať. Môžeme serveru posielať fiktívne správy, rovnako ako sme mohli posielať fiktívne správy Alici. Server pre nás dešifruje správy, ale neukáže dešifrovanie – namiesto toho, rovnako ako v prípade s Alicou, server oznámí len jeden bit informácie: či má otvorený text platné vypĺňanie alebo nie.

Majte na pamäti, že v scenárii Alici sme mali nasledujúce vzťahy:

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

Nazvime to „rovnicou Alici“. Ovládali sme šifrotext; server (Alice) poskytoval nejasné informácie o prijatom otvorenom texte; a to nám umožnilo odvodiť informácie o poslednom faktore – kľúči. Podobne, ak nájdeme taký vzťah pre scenár CBC, mohli by sme tam vyvodiť nejaké tajné informácie.

Našťastie tam skutočne existujú vzťahy, ktoré môžeme využiť. Pozrime sa na výstupy konečného volania dešifrovania blokového šifru a označme tieto údaje ako Kryptografické útoky: vysvetlenie pre zmätené mysle. Označme tiež bloky otvoreného textu Kryptografické útoky: vysvetlenie pre zmätené mysle a bloky šifrotextu Kryptografické útoky: vysvetlenie pre zmätené mysle. Pozrite sa ešte raz na diagram CBC a všimnite si, čo dostávame:

Kryptografické útoky: vysvetlenie pre zmätené mysle

Nazvime to „rovnicou CBC“.

V scenárii Alisy, kontrolujúc šifrovaný text a pozorujúc únik informácií o príslušnom otvorenom texte, sme dokázali usporiadať útok, ktorý obnovil tretí člen rovnice - kľúč. V scenárii CBC taktiež kontrolujeme šifrovaný text a pozorujeme úniky informácií na základe príslušného otvoreného textu. Ak analogicky platí, budeme schopní získať informácie o Kryptografické útoky: vysvetlenie pre zmätené mysle.

Povedzme, že sme skutočne obnovili Kryptografické útoky: vysvetlenie pre zmätené mysle, čo potom? No, vtedy môžeme okamžite vypísať celý posledný blok otvoreného textu (Kryptografické útoky: vysvetlenie pre zmätené mysle), jednoducho zadaním Kryptografické útoky: vysvetlenie pre zmätené mysle (ktorý máme) a
získaného Kryptografické útoky: vysvetlenie pre zmätené mysle v rovnice CBC.

Tak sme optimisticky naladení ohľadom celkového plánu útoku, a je čas prepracovať detaily. Venujeme pozornosť, akým spôsobom na serveri dochádza k úniku informácií o otvorenom texte. V scenárii Alisy únik nastal, pretože Alisa odpovedala správnou odpoveďou len v prípade, že $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ končil reťazcom a (alebo bb, a tak ďalej, ale šance na náhodné spustenie týchto podmienok boli veľmi malé). Rovnako s CBC, server akceptuje vyplnenie, ak a iba ak Kryptografické útoky: vysvetlenie pre zmätené mysle sa končí hexadecimálne. 01Takže skúsme ten istý trik: posielanie falošných šifrovaných textov s našimi vlastnými falošnými hodnotami Kryptografické útoky: vysvetlenie pre zmätené mysle, kým server neakceptuje vyplnenie.

Keď server prijme vyplnenie pre jeden z našich falošných správ, znamená to, že:

Kryptografické útoky: vysvetlenie pre zmätené mysle

Teraz využijeme vlastnosť byte-wise XOR:

Kryptografické útoky: vysvetlenie pre zmätené mysle

Vieme prvý a tretí člen. A už sme videli, že to umožňuje obnoviť zostávajúci člen - posledný bajt z Kryptografické útoky: vysvetlenie pre zmätené mysle:

Kryptografické útoky: vysvetlenie pre zmätené mysle

To nám tiež dáva posledný bajt koncového bloku otvoreného textu prostredníctvom rovnice CBC a vlastnosti byte-wise.

Mohli by sme na tom skončiť a spokojne sa s tým, že sme vykonali útok na teoreticky odolný šifrovací algoritmus. Ale v skutočnosti môžeme urobiť oveľa viac: môžeme skutočne obnoviť celý text. To si vyžaduje určitý trik, ktorý v pôvodnom scenári Alisy nebol a nie je súčasťou povinných podmienok útoku oracle, ale metóda určite stojí za preskúmanie.

Aby sme to pochopili, najprv si všimnite, že v dôsledku vyvodenia správnej hodnoty posledného bajtu Kryptografické útoky: vysvetlenie pre zmätené mysle Máme novou schopnosť. Teraz pri falšovaní šifrových textov môžeme ovládať posledný byte príslušného otvoreného textu. Opäť je to spojené s rovnicou CBC a vlastnosťou po bytoch:

Kryptografické útoky: vysvetlenie pre zmätené mysle

Keďže teraz poznáme druhý člen, môžeme využiť našu kontrolu nad prvým na riadenie tretieho. Jednoducho vypočítame:

Kryptografické útoky: vysvetlenie pre zmätené mysle

Predtým sme to nemohli urobiť, pretože sme ešte nemali posledný byte. Kryptografické útoky: vysvetlenie pre zmätené mysle.

Ako nám to pomôže? Predpokladajme, že teraz budeme vytvárať všetky šifrové texty tak, že v príslušných otvorených textoch je posledný byte rovný 02. Teraz server prijíma doplnenie iba v prípade, že otvorený text končí na 02 02. Keďže sme opravili posledný byte, toto sa stane iba vtedy, ak je predposledný byte otvoreného textu tiež rovný 02. Pokračujeme v posielaní falošných šifrových blokov, kým server neprijme doplnenie pre jeden z nich. V tento moment dostaneme:

Kryptografické útoky: vysvetlenie pre zmätené mysle

A obnovujeme predposledný byte Kryptografické útoky: vysvetlenie pre zmätené mysle presne tak, ako sme obnovili posledný. Pokračujeme v tom istom duchu: opravujeme posledné dva byty otvoreného textu na 03 03, opakujeme túto útok na tretí od konca byte a tak ďalej, nakoniec úplne obnovujeme Kryptografické útoky: vysvetlenie pre zmätené mysle.

Čo zvyšuje text? Všimnite si, že hodnota Kryptografické útoky: vysvetlenie pre zmätené mysle je v skutočnosti $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$. Môžeme dať akýkoľvek iný blok namiesto Kryptografické útoky: vysvetlenie pre zmätené mysle, a útok bude stále úspešný. V skutočnosti môžeme požiadať server, aby vykonal $inline$text{BLOCK_DECRYPT}$inline$ pre akékoľvek údaje. V tento moment je hra skončená — môžeme dešifrovať akýkoľvek šifrový text (pozrite sa opäť na diagram dešifrovania CBC, aby ste sa o tom presvedčili; a berte na vedomie, že vektor IV je verejný).

Táto konkrétna metóda hrá kľúčovú úlohu v útoku na orákula, s ktorým sa neskôr stretneme.

Kelsyho útok

Nám blízky duch John Kelsy objasnil princípy, ktoré stoja za mnohými možnými útokmi, a nie len podrobnosti o konkrétnych útokoch na konkrétny šifor. Jeho článok z roku 2002 je výskum možných útokov na zašifrované komprimované údaje. Mysleli ste si, že na vykonanie útoku stačí len informácia, že údaje boli komprimované pred šifrovaním? Ukazuje sa, že je to dostatočné.

Tento úžasný výsledok je spôsobený dvoma princípmi. Po prvé, existuje silná korelácia medzi dĺžkou otvoreného textu a dĺžkou šifrovaného textu; pre mnoho šifier je presná rovnosť. Po druhé, keď sa vykonáva kompresia, existuje tiež silná korelácia medzi dĺžkou komprimovanej správy a úrovňou "šumovosti" otvoreného textu, to znamená podielom neopakujúcich sa symbolov (technický termín - „vysoká entropia“).

Aby sme videli princíp v akcii, posuňme si dva otvorené texty:

Otvorený text 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Otvorený text 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

Predpokladajme, že oba otvorené texty sú komprimované a následne zašifrované. Dostanete dva výsledné šifrované texty a musíte uhádnuť, ktorý šifrovaný text zodpovedá ktorému otvorenému textu:

Šifrovaný text 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

Šifrovaný text 2: DWKJZXYU

Odpoveď je jasná. Medzi otvorenými textami len otvorený text 1 mohol byť skomprimovaný na skromnú dĺžku druhého šifrovaného textu. Zistili sme to, aniž by sme vedeli o algoritme kompresie, šifrovacom kľúči alebo dokonca o samotnom šifre. V porovnaní s hierarchiou možných kryptografických útokov je to akýsi druh šialenstva.

Kelsey ďalej uvádza, že za určitých nezvyčajných okolností sa tento princíp môže tiež použiť na vykonanie útoku oráka. Konkrétne popisuje, ako útočník môže obnoviť tajný otvorený text, ak môže donútiť server zašifrovať údaje formulára (otvorený text, za ktorým nasleduje Kryptografické útoky: vysvetlenie pre zmätené mysle, zatiaľ čo kontroluje Kryptografické útoky: vysvetlenie pre zmätené mysle a môže nejakým spôsobom overiť dĺžku zašifrovaného výsledku.

Opäť, rovnako ako pri iných útokoch oráka, máme vzťah:

Kryptografické útoky: vysvetlenie pre zmätené mysle

Opäť kontrolujeme jeden člen (Kryptografické útoky: vysvetlenie pre zmätené mysle), vidíme malý únik informácií o druhom členovi (šifrovanom texte) a snažíme sa obnoviť ten posledný (otvorený text). Napriek analógii, ide o niečo nezvyčajnú situáciu v porovnaní s inými útokmi oráka, ktoré sme videli.

Aby sme ilustrovali, ako taký útok môže fungovať, použijeme vymyslený kompresný schemat TOYZIP, ktorý sme práve vymysleli. Hľadá textové reťazce, ktoré sa už predtým objavili v texte, a nahrádza ich tromi bajtmi-vyplňovačmi, ktoré určujú, kde nájsť skôr existujúci instance reťazca a koľkokrát sa tam objaví. Napríklad reťazec helloworldhello môže byť stlačená na helloworld[00][00][05] dlžkou 13 bajtov v porovnaní s originálom 15 bajtov.

Predpokladajme, že útočník sa pokúša obnoviť otvorený text formulára password=..., kde samotné heslo je neznáme. V súlade s modelom útoku Kelseyho, útočník môže požiadať server, aby stlačil a potom zašifroval správy formulára (otvorený text, za ktorým nasleduje Kryptografické útoky: vysvetlenie pre zmätené mysle), kde Kryptografické útoky: vysvetlenie pre zmätené mysle — ľubovoľný text. Keď server dokončí prácu, oznámi dĺžku výsledku. Útok prebieha nasledujúcim spôsobom:

Útočník: Prosím, stlač a zašifruj otvorený text bez akýchkoľvek výplní.

Server: Dĺžka výsledku 14.

Útočník: Prosím, stlač a zašifruj otvorený text, ku ktorému bolo pridané password=a.

Server: Dĺžka výsledku 18.

Útočník si všimne: [originál 14] + [tri bajty, ktoré nahradili password=] + a

Útočník: Prosím, stlač a zašifruj otvorený text, ku ktorému bolo pridané password=b.

Server: Dĺžka výsledku 18.

Útočník: Prosím, stlač a zašifruj otvorený text, ku ktorému bolo pridané password=c.

Server: Dĺžka výsledku 17.

Útočník si všimne: [originál 14] + [tri bajty, ktoré nahradili password=c]. To naznačuje, že originálny otvorený text obsahuje reťazec password=c. Teda heslo začína písmenom c

Útočník: Prosím, stlač a zašifruj otvorený text, ku ktorému bolo pridané password=ca.

Server: Dĺžka výsledku 18.

Útočník si všimne: [originál 14] + [tri bajty, ktoré nahradili password=c] + a

Útočník: Prosím, stlač a zašifruj otvorený text, ku ktorému bolo pridané password=cb.

Server: Dĺžka výsledku 18.

(… o chvíľu neskôr…)

Útočník: Prosím, stlač a zašifruj otvorený text, ku ktorému bolo pridané password=co.

Server: Dĺžka výsledku 17.

Útočník si všimne: [originál 14] + [tri bajty, ktoré nahradili password=co]. Podľa tej istej logiky útočník dospel k záveru, že heslo začína písmenami co

A tak ďalej, až kým nebude obnovené celé heslo.

Čitateľovi je treba odpustiť, ak si myslí, že ide o čisto akademické cvičenie a takýto scenár útoku sa nikdy nevyskytne v reálnom svete. Bohužiaľ, ako čoskoro uvidíme, v kryptografii je lepšie neriskovať.

Značkové zraniteľnosti: CRIME, POODLE, DROWN

Nakoniec, po podrobnom preskúmaní teórie môžeme vidieť, ako sa tieto metódy aplikujú v reálnych kryptografických útokoch.

CRIME

Kryptografické útoky: vysvetlenie pre zmätené mysleAk je útok zameraný na prehliadač a sieť obete, niečo bude jednoduchšie a niečo zložitejšie. Napríklad, vidieť premávku obete je jednoduché: stačí sedieť s ňou v tej istej kaviarni s WiFi. Z tohto dôvodu sa potenciálnym obetiam (t.j. všetkým) zvyčajne odporúča používať šifrované pripojenie. Bude to zložitejšie, ale stále možné, vykonávanie HTTP požiadaviek v mene obete na nejakú externú stránku (napríklad Google). Útočník musí zlomiť obeť k návšteve škodlivej webovej stránky so skriptom, ktorý urobí požiadavku. Webový prehliadač automaticky poskytne príslušné reláciové cookies.

To sa zdá neuveriteľné. Ak Bob navštívil evil.com, či môže skript na tejto stránke jednoducho požiadať Google, aby poslal Bobovo heslo e-mailom na attacker@evil.com? Ну, в теории да, но на самом деле нет. Такой сценарий называется атакой на подделку межсайтовых запросов (Cross-Site Request Forgery, CSRF), a bol populárny približne v polovici 90. rokov. Dnes, ak evil.com skúsi takýto trik, Google (alebo akákoľvek rešpektovaná stránka) obvykle odpovedá: „Výborne, ale váš CSRF token pre túto transakciu bude… hmm… tri bilióny a sedem. Prosím, zopakujte toto číslo“. Moderné prehliadače používajú niečo, čomu sa hovorí „politika rovnakého pôvodu“ (same-origin policy), podľa ktorej nemajú skripty na stránke A prístup k informáciám odoslaným webovou stránkou B. Preto skript na evil.com môže posielať požiadavky na google.com, ale nemôže čítať odpovede alebo v skutočnosti dokončiť transakciu.

Musíme zdôrazniť, že ak Bob nepoužíva šifrované spojenie, všetky tieto ochrany sú bezcenné. Útočník môže jednoducho čítať Bobovu prevádzku a obnoviť Bobovu reláciu Google. S touto cookie jednoducho otvorí novú kartu Google, bez toho, aby sa odhlásil zo svojho prehliadača, a predstieral, že je Bob, bez toho, aby sa stretol s nepríjemnými politikami same-origin policy. Avšak, bohužiaľ pre útočníka, takéto prípady sa vyskytujú čoraz menej. Internet vo všeobecnosti už dávno vyhlásil vojnu nešifrovaným pripojeniam, a Bobova odchádzajúca prevádzka je pravdepodobne šifrovaná, nech sa mu to páči alebo nie. Okrem toho, od začiatku implementácie protokolu bola prevádzka tiež komprimovaná pred šifrovaním; bola to bežná prax na zníženie latencie.

Tu vstupuje do hry CRIME (Compression Ratio Infoleak Made Easy, jednoduchá únik prostredníctvom kompresného pomeru). Zraniteľnosť, ktorú preukázali v septembri 2012 bezpečnostní odborníci Giuliano Rizzo a Thai Duong. Už sme prebrali celú teoretickú základňu, ktorá umožňuje pochopiť, čo urobili a ako. Útočník môže prinútiť Bobov prehliadač posielať požiadavky do Google a potom odpočúvať odpovede v miestnej sieti v komprimovanej, šifrovanej forme. Preto máme:

Kryptografické útoky: vysvetlenie pre zmätené mysle

Tu útočník kontroluje požiadavku a má prístup k sniffu prevádzky, vrátane veľkosti paketov. Vymyslený scenár Kelsey sa stal skutočnosťou.

Pochopením teorie autoři CRIME vytvořili exploit, který může ukrást sezení cookies pro široké spektrum webových stránek, včetně Gmailu, Twitteru, Dropboxu a GitHubu. Zranitelnost zasáhla většinu moderních webových prohlížečů, což vedlo k vydání patchů, které tiše pohřbily funkci komprese v SSL, aby nebyla vůbec používána. Jediným, kdo se udržel proti zranitelnosti, byl vážený Internet Explorer, který nikdy nepoužíval SSL kompresi.

POODLE

Kryptografické útoky: vysvetlenie pre zmätené mysleV říjnu 2014 tým bezpečnosti Google způsobil rozruch v bezpečnostní komunitě. Dokázali využít zranitelnost v SSL protokolu, která byla opravena před více než deseti lety.

Ukázalo se, že i když na serverech běží úžasný nový TLSv1.2, mnozí zanechali podporu zastaralého SSLv3 kvůli zpětné kompatibilitě s Internet Explorerem 6. Již jsme mluvili o downgrade útocích, takže si můžete představit, co se děje. Dobře organizovaný sabotážní útok na protokol handshake – a servery jsou připraveny vrátit se k starému dobrému SSLv3, čímž v podstatě zruší posledních 15 let výzkumu v oblasti bezpečnosti.

Pro historický kontext, tady je stručné shrnutí historie SSL až do verze 2 od Matthew Greena:

Transport Layer Security (TLS) je nejdůležitější bezpečnostní protokol na internetu. [..] téměř každá transakce, kterou provádíte na internetu, závisí na TLS. [..] Ale TLS nebyl vždy TLS. Protokol začal svůj život v Netscape Communications pod názvem „Secure Sockets Layer“ nebo SSL. Říká se, že první verze SSL byla tak hrozná, že vývojáři shromáždili všechny výtisky kódu a zakopali je na tajné skládce v Novém Mexiku. V důsledku toho je první veřejně dostupná verze SSL ve skutečnosti verze SSL 2. Je docela strašidelná, a [..] to byl produkt poloviny 90. let, které moderní kryptografové považují za „temné století kryptografie“. Mnoho z nejohavnějších kryptografických útoků, o nichž dnes víme, ještě nebylo odhaleno. V důsledku toho se vývojáři protokolu SSLv2 museli v podstatě orientovat ve tmě a setkali se s mnoha strašidelnými monstry – k jejich zklamání a našemu prospěchu, protože útoky na SSLv2 zanechaly cenné lekce pro další generaci protokolů.

Po týchto udalostiach, v roku 1996, sklamaná spoločnosť Netscape prepracovala protokol SSL od základov. Výsledkom bol SSL verzia 3, ktorý opravil niekoľko známych bezpečnostných problémov svojho predchodcu..

Našťastie pre hackerov, „niekoľko“ neznamená „všetko“. Celkovo SSLv3 poskytoval všetky potrebné stavebné bloky na vykonanie útoku Vodene. Protokol používal blokový šifrovací algoritmus v režime CBC a nebezpečnú schému vyplnenia (toto bolo opravené v TLS; preto vznikla potreba útoku na zníženie). Ak si pamätáte schému vyplnenia z nášho pôvodného popisu útoku Vodene, schéma SSLv3 je veľmi podobná.

Ale, žiaľ, pre hackerov, „podobná“ neznamená „identická“. Schéma vyplnenia SSLv3 má tvar „N ľubovoľných bajtov, za ktorými nasleduje číslo N“. Pokúste sa v takýchto podmienkach vybrať imaginárny blok šifrovaného textu a prejsť všetkými fázami pôvodnej schémy Vodene: zistíte, že útok úspešne extrahuje posledný bajt z odpovedajúceho bloku otvoreného textu, ale ďalej nepokračuje. Dešifrovanie každého 16. bajtu šifrovaného textu je skvelý trik, ale nie výhra.

Vzhľadom na neúspech sa tím Google uchýlil k extrémnemu variantu: prešli na mocnejší model hrozby — ten, ktorý bol použitý v CRIME. Ak predpokladáme, že útočník je skript bežiaci na karte prehliadača obete, a môže extrahovať reláčná cookies, útok aj tak zostáva pôsobivý. Hoci širší model hrozby je menej realistický, už sme v predchádzajúcej časti videli, že tento konkrétny model je realizovateľný.

S ohľadom na takéto mocnejšie schopnosti útočníka môže teraz útok pokračovať. Majte na pamäti, že útočník vie, kde v hlavičke sa zobrazuje zašifrovaný súbor cookie relácie a ovláda dĺžku predchádzajúceho HTTP požiadavku. Preto dokáže manipulovať s HTTP požiadavkou tak, aby posledný bajt cookie bol v súlade s koncom bloku. Teraz je tento bajt vhodný na dešifrovanie. Stačí pridať k požiadavke jeden znak a predposledný bajt cookie zostane na tom istom mieste a je vhodný na odhad rovnakou metódou. Útok pokračuje takto, kým sa súbor cookie úplne neobnoví. Toto sa nazýva POODLE: Padding Oracle on Downgraded Legacy Encryption, vypĺňanie orákula na zníženom zastaranom šifrovaní.

DROWN

Kryptografické útoky: vysvetlenie pre zmätené mysleAko sme už spomenuli, SSLv3 mal nedostatky, ale zásadne sa líšil od predchodcu, pretože dieravý SSLv2 bol produktom inej epochy. Tam bolo možné prerušiť správu v polovici: súhlasím s tým iba cez moje telo pretransformovalo sa na súhlasím s tým; klient a server sa mohli stretnúť na internete, vytvoriť dôveru a vymeniť si tajomstvá pred očami útočníka, ktorý sa potom ľahko mohol vydávať za jedného aj za druhého. Ešte aj problém s exportnou kryptografiou, ktorý sme spomenuli pri štúdiu FREAK. To boli kryptografické Sodoma a Gomora.

V marci 2016 sa tím výskumníkov z rôznych technických oblastí spojil a urobil ohromujúce zistenie: SSLv2 sa stále používa v bezpečnostných systémoch. Áno, útočníci už nemohli znižovať moderné relácie TLS na SSLv2, pretože tento otvor bol zavretý po FREAK a POODLE, ale stále sa mohli pripojiť k serverom a iniciovať relácie SSLv2 samostatne.

Opýtate sa, čo nám je do toho, čo tam robia? Majú zraniteľnú reláciu, ale to by nemalo ovplyvniť ostatné relácie alebo bezpečnosť servera — je to tak? Nuž, nie celkom. Áno, tak by to malo byť v teórii. Ale nie — pretože generovanie SSL certifikátov vytvára určité bremeno, v dôsledku čoho mnohé servery používajú rovnaké certifikáty a, ako dôsledok, rovnaké RSA kľúče pre TLS a SSLv2 spojenia. Ešte horšie je, že kvôli chybe OpenSSL v tejto populárnej implementácii SSL vlastne nefungovala možnosť „Deaktivovať SSLv2“.

To umožnilo krížovú útok na TLS, ktorý nazvali DROWN (Decrypting RSA with Obsolete and Weakened eNcryption, dešifrovanie RSA s archaickým a oslabeným šifrovaním). Pripomeňme, že to nie je to isté ako útok na zníženie; útočník nemusí pôsobiť ako „človek uprostred“ a nepotrebuje zapojiť klienta do nebezpečnej relácie. Útočníci jednoducho sami iniciujú nebezpečnú SSLv2 reláciu so serverom, útočia na slabý protokol a obnovujú uzavretý serverový RSA kľúč. Tento kľúč je tiež platný pre TLS spojenia, a od tohto momentu ho žiadna bezpečnosť TLS nezachráni pred útokom.

Ale na útok je potrebný funkčný útok proti SSLv2, ktorý umožňuje obnoviť nielen konkrétny prenos, ale aj tajný serverový RSA kľúč. Aj keď ide o zložitú situáciu, výskumníci si mohli vybrať akúkoľvek zraniteľnosť, ktorú úplne odstránili po SSLv2. Nakoniec našli vhodnú možnosť: útok Bleichenbachera, o ktorom sme sa spomínali skôr a ktorý podrobne vysvetlíme v nasledujúcom článku. SSL a TLS sú chránené pred týmto útokom, ale niektoré náhodné vlastnosti SSL v kombinácii s krátkymi kľúčmi v exportnej triede kryptografie umožnili určitú implementáciu DROWN.

V čase publikácie boli zraniteľnosti DROWN vystavené 25% top stránok internetu a útok sa dal uskutočniť s skromnými prostriedkami, ktoré boli dostupné aj pre žartovných hackerov-špecialistov. Na extrakciu serverového RSA kľúča bolo potrebných osem hodín výpočtov a $440, a SSLv2 zmenil svoj status z „zastaraného“ na „radioaktívny“.

Počkajte, a čo s Heartbleed?

Toto nie je kryptografický útok v tom zmysle, ako boli opísané vyššie; je to pretečenie vyrovnávacej pamäte.

Dajme si prestávku.

Začali sme niektorými základnými metódami: brute force, interpolácia, downgradovanie, cross-protokol a predpočítania. Potom sme preskúmali jednu pokročilú techniku, možno hlavnú súčasť moderných kryptografických útokov: je to útok oráka. S tým sme sa dosť dlhú dobu zaoberali - a pochopili sme nielen princíp v pozadí, ale aj technické detaily dvoch konkrétnych realizácií: útok Vodene na režim šifrovania CBC a útok Kelsey na protokoly šifrovania s predbežným zmršťovaním.

Pri prehľade útokov na downgradovanie a s predbežnými výpočtami sme stručne zhrnuli útok FREAK, ktorý využíva obe metódy, keď sa cieľové stránky znižujú na slabé kľúče a následne znovu používajú tie isté kľúče. Na nasledujúci článok sme ponechali (veľmi podobný) útok Logjam, ktorý sa zameriava na algoritmy s otvoreným kľúčom.

Potom sme preskúmali ešte tri príklady uplatnenia týchto princípov. Po prvé, CRIME a POODLE: dva útoky, ktoré sa spoliehali na schopnosť útočníka vkladať ľubovoľný otvorený text vedľa cieľového otvoreného textu, potom analyzovať odpovede servera a potom, využívajúc metodológiu útoku oráka, použiť tieto obmedzené informácie na čiastočné obnovenie otvoreného textu. CRIME sa vydal cestou útoku Kelsey na zmršťovanie SSL, zatiaľ čo POODLE namiesto toho použil variant útoku Vodene na CBC s rovnakým efektom.

Potom sme sa zamerali na cross-protokolový útok DROWN, ktorý nadviaže spojenie so serverom prostredníctvom zastaraného protokolu SSLv2, a potom obnoví tajné serverové kľúče pomocou útoku Bleichenbachera. Doteraz sme vynechali technické detaily tohto útoku; ako aj Logjam, bude musieť počkať, kým sa dôkladne nepreskúmame kryptosystémy s otvoreným kľúčom a ich zraniteľnosti.

V nasledujúcom článku sa porozprávame o pokročilých útokoch - ako sú metódy stretnutia v strede (meet-in-the-middle), diferenciálny kryptoanalyzátor a útok „narodeninového problému“. Krátko sa pozrieme na útoky cez bočné kanály a potom sa pustíme do najchutnejšej časti - kryptosystémov s otvoreným kľúčom.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster