Kryptografické útoky: vysvětlení pro zmatené mysli

Když slyšíte slovo „kryptografie“, někteří lidé si pamatují své heslo k WiFi, zelený zámek vedle adresy jejich oblíbeného webu a jak obtížné je dostat se do e-mailu někoho jiného. Jiní připomínají řadu zranitelností z posledních let s vypovídajícími zkratkami (DROWN, FREAK, POODLE...), stylovými logy a varováním, abyste si urychleně aktualizovali prohlížeč.

Kryptografie pokrývá všechno, ale podstatu v jiném. Jde o to, že mezi jednoduchým a složitým je tenká hranice. Některé věci se dají snadno udělat, ale je těžké je zase dát dohromady, třeba rozbít vejce. Jiné věci se dají udělat snadno, ale je těžké je získat zpět, když chybí malá, důležitá, zásadní část: například otevření zamčených dveří, když je „zásadní částí“ klíč. Kryptografie tyto situace studuje a jak je lze využít v praxi.

V posledních letech se sbírka kryptografických útoků proměnila v zoo křiklavých log, naplněných vzorci z vědeckých prací, a dala vzniknout všeobecnému chmurnému pocitu, že je všechno rozbité. Ale ve skutečnosti je mnoho útoků založeno na několika obecných principech a nekonečné stránky vzorců jsou často zredukovány na snadno srozumitelné myšlenky.

V této sérii článků se podíváme na různé typy kryptografických útoků s důrazem na základní principy. Obecně řečeno a ne přesně v tomto pořadí, ale pokryjeme následující:

  • Základní strategie: hrubá síla, frekvenční analýza, interpolace, downgrade a křížové protokoly.
  • Zranitelnosti značky: ŠÍLENÝ, ZLOČIN, PUDL, UTOUPIT, Logjam.
  • Pokročilé strategie: věštecké útoky (útok Vodenet, útok Kelsey); metoda meet-in-the-middle, narozeninový útok, statistické zkreslení (diferenciální kryptoanalýza, integrální kryptoanalýza atd.).
  • Útoky na boční kanál a jejich blízkých příbuzných, techniky analýzy poruch.
  • Útoky na kryptografii veřejného klíče: kostkový kořen, vysílání, související zpráva, Coppersmithův útok, Pohlig-Hellmanův algoritmus, číselné síto, Wienerův útok, Bleichenbacherův útok.

Tento konkrétní článek pokrývá výše uvedený materiál až po Kelseyin útok.

Základní strategie

Následující útoky jsou jednoduché v tom smyslu, že je lze téměř úplně vysvětlit bez velkých technických podrobností. Pojďme si vysvětlit každý typ útoku nejjednoduššími termíny, aniž bychom zacházeli do složitých příkladů nebo pokročilých případů použití.

Některé z těchto útoků již do značné míry zastaraly a mnoho let se nepoužívaly. Jiní jsou staromilci, kteří se stále pravidelně plíží k nic netušícím vývojářům kryptosystémů v 21. století. Éru moderní kryptografie lze považovat za započatou s příchodem IBM DES, první šifry, která odolala všem útokům na tomto seznamu.

Jednoduchá hrubá síla

Kryptografické útoky: vysvětlení pro zmatené mysliŠifrovací schéma se skládá ze dvou částí: 1) šifrovací funkce, která vezme zprávu (prostý text) kombinovanou s klíčem a poté vytvoří zašifrovanou zprávu - šifrovaný text; 2) dešifrovací funkce, která vezme šifrovaný text a klíč a vytvoří prostý text. Šifrování i dešifrování musí být snadné spočítat pomocí klíče – a obtížně vypočítat bez něj.

Předpokládejme, že vidíme šifrovaný text a pokusíme se jej dešifrovat bez dalších informací (toto se nazývá útok pouze na šifrovaný text). Pokud nějakým kouzlem najdeme správný klíč, můžeme snadno ověřit, že je skutečně správný, pokud je výsledkem rozumná zpráva.

Všimněte si, že zde existují dva implicitní předpoklady. Za prvé, víme, jak provést dešifrování, tedy jak funguje kryptosystém. Toto je standardní předpoklad při diskuzi o kryptografii. Skrytí podrobností implementace šifry před útočníky se může zdát jako dodatečné bezpečnostní opatření, ale jakmile útočník tyto podrobnosti zjistí, toto dodatečné zabezpečení je tiše a nenávratně ztraceno. Takhle Kerchhoffův princip: Systém, který se dostane do rukou nepřítele, by neměl způsobit nepříjemnosti.

Za druhé, předpokládáme, že správný klíč je jediný klíč, který povede k rozumnému dešifrování. To je také rozumný předpoklad; je splněno, pokud je šifrový text mnohem delší než klíč a je čitelný. To se obvykle děje v reálném světě, kromě obrovské nepraktické klíče nebo další hanebnosti, které je lepší nechat stranou (pokud se vám nelíbí, že jsme přeskočili vysvětlení, podívejte se prosím na větu 3.8 zde).

Vzhledem k výše uvedenému vyvstává strategie: zkontrolujte každý možný klíč. Tomu se říká hrubá síla a takový útok bude zaručeně fungovat proti všem praktickým šifrám – nakonec. Například k hacknutí stačí hrubá síla Caesarova šifra, prastará šifra, kde klíč je jedno písmeno abecedy, což znamená něco málo přes 20 možných klíčů.

Bohužel pro kryptoanalytiky je zvětšení velikosti klíče dobrou obranou proti hrubé síle. S rostoucí velikostí klíče se počet možných klíčů exponenciálně zvyšuje. U moderních velikostí klíčů je jednoduchá hrubá síla zcela nepraktická. Abychom pochopili, co máme na mysli, vezměme si nejrychlejší známý superpočítač z poloviny roku 2019: Summit od IBM se špičkovým výkonem přibližně 1017 operací za sekundu. Dnes je typická délka klíče 128 bitů, což znamená 2128 možných kombinací. K prohledání všech klíčů bude superpočítač Summit potřebovat čas, který je přibližně 7800krát starší než věk vesmíru.

Měla by být hrubá síla považována za historickou kuriozitu? Vůbec ne: je to nezbytná složka v kuchařce kryptoanalýzy. Málokdy jsou šifry tak slabé, že je lze prolomit pouze chytrým útokem, bez použití síly v té či oné míře. Mnoho úspěšných hacků používá algoritmickou metodu k nejprve oslabení cílové šifry a poté k provedení útoku hrubou silou.

Frekvenční analýza

Kryptografické útoky: vysvětlení pro zmatené mysliVětšina textů není blábol. Například v anglických textech je mnoho písmen „e“ a článků „the“; v binárních souborech je mezi informacemi mnoho nulových bajtů jako výplň. Frekvenční analýza je jakýkoli útok, který využívá této skutečnosti.

Kanonickým příkladem šifry náchylné k tomuto útoku je jednoduchá substituční šifra. V této šifře je klíčem tabulka se všemi nahrazenými písmeny. Například „g“ je nahrazeno „h“, „o“ za j, takže slovo „go“ se změní na „hj“. Tuto šifru je těžké vynutit hrubou silou, protože existuje tolik možných vyhledávacích tabulek. Pokud vás zajímá matematika, efektivní délka klíče je asi 88 bitů: to jest
Kryptografické útoky: vysvětlení pro zmatené mysli. Ale frekvenční analýza obvykle udělá práci rychle.

Zvažte následující šifrový text zpracovaný jednoduchou substituční šifrou:

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

Od Y se vyskytuje často, včetně na konci mnoha slov, můžeme předběžně předpokládat, že se jedná o toto písmeno e:

XDeLe ALE UGLe XDWNKE WN DeAJeN ANF eALXD DGLAXWG XDAN ALE FLEAUX GR WN OGQL ZDWBGEGZDO

Pár XD opakuje se na začátku několika slov. Zejména spojení XDeLe to slovo jasně naznačuje these nebo there, tak pokračujme:

theLe ALE UGLe thWNKE WN HEAJEN ANF eALth DGLAtWG THAN ALE FLEAUt GR WN OGQL ZDWBGEGZDO

Předpokládejme dále L odpovídá r, A - a a tak dále. Pravděpodobně to bude trvat několik pokusů, ale ve srovnání s útokem plnou hrubou silou tento útok během okamžiku obnoví původní text:

na nebi a zemi je horatio více věcí, než o kterých se ve vaší filozofii sní

Pro některé je řešení takových „kryptogramů“ vzrušujícím koníčkem.

Myšlenka frekvenční analýzy je zásadnější, než se na první pohled zdá. A týká se to mnohem složitějších šifer. V průběhu historie se různé návrhy šifry pokoušely čelit takovému útoku pomocí „polyalfabetické substituce“. Zde se během procesu šifrování upravuje tabulka substituce písmen složitými, ale předvídatelnými způsoby, které závisí na klíči. Všechny tyto šifry byly považovány za obtížné prolomit najednou; a přesto je skromná frekvenční analýza nakonec všechny porazila.

Nejambicióznější polyalfabetická šifra v historii a pravděpodobně nejslavnější byla šifra Enigma z druhé světové války. Ve srovnání se svými předchůdci byl poměrně složitý, ale po hodně tvrdé práci ho britští kryptoanalytici rozlouskli pomocí frekvenční analýzy. Samozřejmě, že nemohli vyvinout elegantní útok jako ten, který je zobrazen výše; museli porovnat známé dvojice holého textu a šifrového textu (takzvaný „útok holého textu“), a dokonce vyprovokovat uživatele Enigmy k zašifrování určitých zpráv a analýze výsledku („zvolený útok v holém textu“). To ale osud poražených nepřátelských armád a potopených ponorek nijak neusnadňovalo.

Po tomto triumfu zmizela frekvenční analýza z historie kryptoanalýzy. Šifry v moderní digitální době jsou navrženy tak, aby pracovaly s bity, nikoli s písmeny. Ještě důležitější je, že tyto šifry byly navrženy s temným chápáním toho, co se později stalo známým jako Schneierův zákon: Každý může vytvořit šifrovací algoritmus, který sám nemůže prolomit. Pro systém šifrování to nestačí zdálo obtížné: aby prokázal svou hodnotu, musí projít nemilosrdnou bezpečnostní kontrolou mnoha kryptoanalytiků, kteří se budou ze všech sil snažit šifru rozluštit.

Předběžné výpočty

Kryptografické útoky: vysvětlení pro zmatené mysliVezměte si hypotetické město Precom Heights s 200 000 obyvateli. Každý dům ve městě obsahuje cennosti v průměrné hodnotě 30 000 USD, ale ne více než 50 000 USD Trh zabezpečení v Precom je monopolizován společností ACME Industries, která vyrábí legendární dveřní zámky třídy Coyote™. Podle expertní analýzy může zámek třídy Coyote prolomit pouze velmi složitý hypotetický stroj, jehož vytvoření vyžaduje zhruba pět let a investici 50 000 dolarů. Je město bezpečné?

S největší pravděpodobností ne. Nakonec se objeví docela ambiciózní zločinec. Bude uvažovat takto: „Ano, vzniknou mi velké počáteční náklady. Pět let trpělivého čekání a 50 000 dolarů. Ale až skončím, budu mít přístup veškeré bohatství tohoto města. Pokud budu hrát správně, tato investice se mnohonásobně vrátí.“

Totéž platí v kryptografii. Útoky proti konkrétní šifře podléhají nemilosrdné analýze nákladů a přínosů. Pokud je poměr příznivý, k útoku nedojde. Útoky, které působí proti mnoha potenciálním obětem najednou, se však téměř vždy vyplácejí, v takovém případě je nejlepším návrhářským postupem předpokládat, že začaly od prvního dne. Máme v podstatě kryptografickou verzi Murphyho zákona: "Cokoliv, co může skutečně rozbít systém, rozbije systém."

Nejjednodušším příkladem kryptosystému, který je zranitelný vůči předvýpočtovému útoku, je šifra s konstantním klíčem. To byl případ s Caesarova šifra, který jednoduše posune každé písmeno abecedy o tři písmena dopředu (tabulka je zacyklená, takže poslední písmeno v abecedě je zašifrováno jako třetí). Zde opět vstupuje do hry Kerchhoffsův princip: jakmile je systém hacknut, je hacknut navždy.

Koncept je jednoduchý. Dokonce i začínající vývojář kryptosystému pravděpodobně rozpozná hrozbu a podle toho se připraví. Při pohledu na vývoj kryptografie byly takové útoky nevhodné pro většinu šifer, od prvních vylepšených verzí Caesarovy šifry až po úpadek polyalfabetických šifer. Takové útoky se vrátily až s příchodem moderní éry kryptografie.

Tato návratnost je způsobena dvěma faktory. Jednak se konečně objevily dostatečně složité kryptosystémy, kde možnost zneužití po hacknutí nebyla zřejmá. Za druhé, kryptografie se tak rozšířila, že miliony laiků každý den rozhodovaly o tom, kde a jaké části kryptografie znovu použít. Nějakou dobu trvalo, než si odborníci uvědomili rizika a spustili poplach.

Vzpomeňte si na předvýpočetní útok: na konci článku se podíváme na dva reálné kryptografické příklady, kde hrál důležitou roli.

Interpolace

Zde je slavný detektiv Sherlock Holmes, který provádí interpolační útok na nešťastného doktora Watsona:

Okamžitě jsem uhodl, že pocházíte z Afghánistánu... Můj myšlenkový pochod byl následující: „Tento muž je svým typem lékař, ale má vojenské vyznání. Takže vojenský lékař. Právě přijel z tropů - jeho obličej je tmavý, ale to není přirozený odstín jeho kůže, protože jeho zápěstí jsou mnohem bělejší. Tvář je vyčerpaná - evidentně hodně trpěl a trpěl nemocemi. Byl zraněn na levé ruce – drží ji nehybně a trochu nepřirozeně. Kde v tropech mohl anglický vojenský lékař snášet útrapy a být zraněn? Samozřejmě v Afghánistánu." Celý tok myšlenek netrval ani vteřinu. A tak jsem řekl, že jste přijel z Afghánistánu, a byl jste překvapen.

Holmes dokázal z každého důkazu jednotlivě získat velmi málo informací. Ke svému závěru mohl dospět jedině tak, že je všechny zvážil dohromady. Interpolační útok funguje podobně zkoumáním známých dvojic otevřeného textu a šifrového textu, které jsou výsledkem stejného klíče. Z každé dvojice jsou extrahována jednotlivá pozorování, která umožňují vyvodit obecný závěr o klíči. Všechny tyto závěry jsou vágní a zdají se zbytečné, dokud najednou nedosáhnou kritického množství a nevedou k jedinému možnému závěru: ať je to jakkoli neuvěřitelné, musí to být pravda. Poté je klíč buď odhalen, nebo se proces dešifrování natolik zdokonalí, že jej lze replikovat.

Ukažme si na jednoduchém příkladu, jak interpolace funguje. Řekněme, že si chceme přečíst osobní deník našeho nepřítele, Boba. Každé číslo ve svém deníku zašifruje pomocí jednoduchého kryptosystému, o kterém se dozvěděl z reklamy v časopise „A Mock of Cryptography“. Systém funguje takto: Bob si vybere dvě čísla, která se mu líbí: Kryptografické útoky: vysvětlení pro zmatené mysli и Kryptografické útoky: vysvětlení pro zmatené mysli. Od této chvíle šifrovat libovolné číslo Kryptografické útoky: vysvětlení pro zmatené mysli, vypočítává Kryptografické útoky: vysvětlení pro zmatené mysli. Například pokud si Bob vybral Kryptografické útoky: vysvětlení pro zmatené mysli и Kryptografické útoky: vysvětlení pro zmatené mysli, pak číslo Kryptografické útoky: vysvětlení pro zmatené mysli bude zašifrováno jako Kryptografické útoky: vysvětlení pro zmatené mysli.

Řekněme, že 28. prosince jsme si všimli, že Bob něco škrábal ve svém deníku. Až skončí, potichu to zvedneme a podíváme se na poslední záznam:

Дата: 235/520

Milý deníčku,

Dnešek byl dobrý den. Přes 64 dnes mám rande s Alisou, která bydlí v bytě 843. Opravdu si myslím, že by mohla být 26!

Protože to se sledováním Boba na jeho schůzce (v tomto scénáři je nám 15 let) myslíme velmi vážně, je důležité znát datum a také adresu Alice. Naštěstí si všimneme, že Bobův kryptosystém je zranitelný vůči interpolačnímu útoku. Možná nevíme Kryptografické útoky: vysvětlení pro zmatené mysli и Kryptografické útoky: vysvětlení pro zmatené mysli, ale známe dnešní datum, takže máme dva páry prostého textu a šifrovaného textu. Totiž, to víme Kryptografické útoky: vysvětlení pro zmatené mysli zašifrované v Kryptografické útoky: vysvětlení pro zmatené myslia Kryptografické útoky: vysvětlení pro zmatené mysli - v Kryptografické útoky: vysvětlení pro zmatené mysli. Toto si zapíšeme:

Kryptografické útoky: vysvětlení pro zmatené mysli

Kryptografické útoky: vysvětlení pro zmatené mysli

Jelikož je nám 15 let, víme již o soustavě dvou rovnic o dvou neznámých, což v této situaci stačí najít Kryptografické útoky: vysvětlení pro zmatené mysli и Kryptografické útoky: vysvětlení pro zmatené mysli bez problémů. Každý pár prostého textu-šifrovaný text umístí na Bobův klíč omezení a obě omezení dohromady postačují k úplnému obnovení klíče. V našem příkladu je odpověď Kryptografické útoky: vysvětlení pro zmatené mysli и Kryptografické útoky: vysvětlení pro zmatené mysli (v Kryptografické útoky: vysvětlení pro zmatené mysli Kryptografické útoky: vysvětlení pro zmatené mysli, aby 26 v deníku odpovídá slovu „ten“, tedy „ten stejný“ - cca. pruh).

Interpolační útoky se samozřejmě neomezují na takové jednoduché příklady. Každý kryptosystém, který se redukuje na dobře srozumitelný matematický objekt a seznam parametrů, je ohrožen interpolačním útokem – čím srozumitelnější objekt, tím vyšší riziko.

Nováčci si často stěžují, že kryptografie je „umění navrhovat věci co nejošklivější“. Na vině jsou pravděpodobně interpolační útoky. Bob může buď použít elegantní matematický design, nebo nechat své rande s Alicí v soukromí – ale bohužel, obvykle to nemůžete mít oběma způsoby. To bude zcela jasné, až se nakonec dostaneme k tématu kryptografie veřejného klíče.

Křížový protokol/downgrade

Kryptografické útoky: vysvětlení pro zmatené mysliV Now You See Me (2013) se skupina iluzionistů pokouší ošidit zkorumpovaného pojišťovacího magnáta Arthura Tresslera o celý jeho majetek. Aby získali přístup k Arthurovu bankovnímu účtu, musí iluzionisté buď poskytnout jeho uživatelské jméno a heslo, nebo ho donutit, aby se osobně dostavil do banky a zúčastnil se schématu.

Obě možnosti jsou velmi obtížné; Kluci jsou zvyklí vystupovat na jevišti a neúčastnit se zpravodajských operací. Zvolí tedy třetí možnou možnost: jejich komplic zavolá do banky a vydává se za Arthura. Banka pokládá několik otázek k ověření identity, jako je jméno strýce a jméno prvního mazlíčka; naši hrdinové předem snadno získají tyto informace z Arthura pomocí chytrého sociálního inženýrství. Od tohoto okamžiku již na vynikajícím zabezpečení hesel nezáleží.

(Podle městské legendy, kterou jsme osobně ověřili a ověřili, se kryptograf Eli Beaham jednou setkal s bankovním pokladníkem, který trval na zadání bezpečnostní otázky. Když se pokladník zeptal na jméno své babičky z matčiny strany, Beaham začal diktovat: „Kapitál X, malé y, tři...“).

V kryptografii je to stejné, pokud se k ochraně stejného aktiva používají paralelně dva kryptografické protokoly a jeden je mnohem slabší než druhý. Výsledný systém se stává zranitelným vůči meziprotokolovému útoku, kdy je napaden slabší protokol, aby se dostal k ceně, aniž by se dotkl toho silnějšího.

V některých složitých případech nestačí pouze kontaktovat server pomocí slabšího protokolu, ale vyžaduje nedobrovolnou účast legitimního klienta. To lze organizovat pomocí tzv. downgrade útoku. Abychom tomuto útoku porozuměli, předpokládejme, že naši iluzionisté mají těžší úkol než ve filmu. Předpokládejme, že zaměstnanec banky (pokladní) a Arthur narazili na nepředvídané okolnosti, které vyústily v následující dialog:

Zloděj: Ahoj? Tohle je Arthur Tressler. Chtěl bych obnovit své heslo.

Pokladní: Skvělý. Podívejte se prosím do své osobní tajné kódové knihy, strana 28, slovo 3. Všechny následující zprávy budou zašifrovány pomocí tohoto specifického slova jako klíče. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…

Zloděj: Hej, hej, počkej, počkej. Je to opravdu nutné? Nemůžeme mluvit jako normální lidé?

Pokladní: Nedoporučuji to dělat.

Zloděj: Já jen... podívej, měl jsem mizerný den, dobře? Jsem VIP klient a nemám náladu prohrabávat se těmito stupidními kódovými knihami.

Pokladní: Pokuta. Pokud na tom trváte, pane Tresslere. Co chceš?

Zloděj: Prosím, rád bych věnoval všechny své peníze Národnímu fondu obětí Arthura Tresslera.

(Pauza).

Pokladní: Je to teď jasné. U velkých transakcí uveďte svůj PIN.

Zloděj: Můj co?

Pokladní: Na vaši osobní žádost vyžadují transakce této velikosti pro velké transakce PIN. Tento kód jste dostali, když jste si otevřeli svůj účet.

Zloděj:... Ztratil jsem to. Je to opravdu nutné? Nemůžeš tu dohodu prostě schválit?

Pokladní: Ne. Je mi líto, pane Tresslere. Opět se jedná o bezpečnostní opatření, o které jste požádali. Pokud chcete, můžeme vám do vaší poštovní schránky poslat nový PIN kód.

Naši hrdinové odkládají operaci. Odposlouchávají několik Tresslerových velkých transakcí v naději, že uslyší PIN; ale pokaždé, když se konverzace změní v kódovaný blábol, než se řekne něco zajímavého. Konečně, jednoho krásného dne, je plán uveden do praxe. Trpělivě čekají na okamžik, kdy bude muset Tressler provést velkou transakci po telefonu, připojí se na linku a pak...

Tressler: Ahoj. Chtěl bych dokončit transakci na dálku, prosím.

Pokladní: Skvělý. Podívejte se prosím do své osobní tajné kódové knihy, stránky...

(Zloděj stiskne tlačítko; hlas pokladní se změní v nesrozumitelný hluk).

Pokladní: - #@$#@$#*@$$@#* bude zašifrováno tímto slovem jako klíčem. AAAYRR PLRQRZ MMNJK LOJBAN…

Tressler: Promiň, moc jsem to nepochopil. Znovu? Na jaké stránce? Jaké slovo?

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

Tressler: Co je?

Pokladní: Slovo číslo dvacet @$#@$#%#$.

Tressler: Vážně! Už dost! Vy a váš bezpečnostní protokol jste nějaký cirkus. Vím, že se mnou můžeš mluvit normálně.

Pokladní: Nedoporučuji…

Tressler: A nedoporučuji vám plýtvat mým časem. Už o tom nechci slyšet, dokud nevyřešíte problémy s telefonní linkou. Můžeme dokončit tuto dohodu nebo ne?

Pokladní:… Ano. Pokuta. Co chceš?

Tressler: Chtěl bych převést 20 000 $ na Lord Business Investments, číslo účtu...

Pokladní: Minutku, prosím. Je to velká věc. U velkých transakcí uveďte svůj PIN.

Tressler: Co? Oh, přesně tak. 1234.

Tady je útok směrem dolů. Slabší protokol „jen mluvit přímo“ byl představován jako možnost v případě nouze. A přesto jsme tady.

Možná by vás zajímalo, kdo se zdravým rozumem by navrhl skutečný „trezor, dokud se nezeptá jinak“, jako je ten popsaný výše. Ale stejně jako fiktivní banka riskuje, aby si udržela zákazníky, kteří nemají rádi kryptografii, systémy obecně často tíhnou k požadavkům, které jsou lhostejné nebo dokonce přímo nepřátelské k bezpečnosti.

To je přesně to, co se stalo s protokolem SSLv2 v roce 1995. Americká vláda již dlouho začala pohlížet na kryptografii jako na zbraň, kterou je nejlepší držet stranou od zahraničních a domácích nepřátel. Kusy kódu byly jednotlivě schváleny pro export ze Spojených států, často s podmínkou, že algoritmus byl záměrně oslaben. Netscape, vývojář nejpopulárnějšího prohlížeče, Netscape Navigator, dostal povolení pro SSLv2 pouze s inherentně zranitelným 512bitovým klíčem RSA (a 40bitovým pro RC4).

Na konci tisíciletí se pravidla uvolnila a přístup k modernímu šifrování se stal široce dostupným. Klienti a servery však po léta podporují oslabenou „exportní“ kryptografii kvůli stejné setrvačnosti, která udržuje podporu pro jakýkoli starší systém. Klienti věřili, že se mohou setkat se serverem, který nepodporoval nic jiného. Servery udělaly totéž. Protokol SSL samozřejmě nařizuje, že klienti a servery by nikdy neměli používat slabý protokol, když je k dispozici lepší. Ale stejná premisa platila pro Tresslera a jeho banku.

Tato teorie si našla cestu do dvou vysoce profilovaných útoků, které v roce 2015 otřásly bezpečností protokolu SSL, oba objevili výzkumníci společnosti Microsoft a INRIA. Nejprve byly v únoru odhaleny podrobnosti o útoku FREAK, o tři měsíce později následoval další podobný útok s názvem Logjam, kterému se budeme podrobněji věnovat, až přejdeme k útokům na kryptografii veřejného klíče.

Kryptografické útoky: vysvětlení pro zmatené mysliZranitelnost FREAK (také známý jako "Smack TLS") se objevil, když výzkumníci analyzovali implementace TLS klient/server a objevili zvláštní chybu. Pokud v těchto implementacích klient ani nepožádá o použití slabé exportní kryptografie, ale server stále odpovídá pomocí takových klíčů, klient řekne „No dobře“ a přepne se na slabou šifrovací sadu.

V té době byla exportní kryptografie široce považována za zastaralou a zakázanou, takže útok přišel jako naprostý šok a zasáhl mnoho důležitých domén, včetně stránek Bílého domu, IRS a NSA. Ještě horší je, že se ukázalo, že mnoho zranitelných serverů optimalizovalo výkon opětovným používáním stejných klíčů místo generování nových pro každou relaci. To umožnilo po downgradu protokolu provést předvýpočetní útok: prolomení jednoho klíče zůstalo relativně drahé (100 USD a 12 hodin v době publikace), ale praktické náklady na napadení spojení se výrazně snížily. Stačí jednou vybrat klíč serveru a od této chvíle prolomit šifrování pro všechna následující připojení.

A než budeme pokračovat, je tu jeden pokročilý útok, který je třeba zmínit...

Oracle útok

Kryptografické útoky: vysvětlení pro zmatené mysliMoxie Marlinspike nejlépe známý jako otec meziplatformní aplikace pro zasílání kryptografických zpráv Signal; ale osobně se nám líbí jedna z jeho méně známých novinek - princip kryptografické zkázy (Princip kryptografického zkázy). Abychom to trochu parafrázovali, můžeme říci toto: „Pokud protokol funguje jakýkoli provede kryptografickou operaci se zprávou z potenciálně škodlivého zdroje a chová se jinak v závislosti na výsledku, je odsouzena k záhubě." Nebo v ostřejší podobě: „Neber si informace od nepřítele ke zpracování, a když už musíš, tak alespoň neukazuj výsledek.“

Ponechme stranou přetečení bufferu, příkazové injekce a podobně; jsou mimo rámec této diskuse. Porušení „principu zkázy“ vede k vážným kryptografickým hackům, protože protokol se chová přesně podle očekávání.

Jako příklad si vezměme fiktivní návrh se zranitelnou substituční šifrou a pak demonstrujeme možný útok. I když jsme již viděli útok na substituční šifru pomocí frekvenční analýzy, není to jen „další způsob, jak prolomit stejnou šifru“. Naopak věštecké útoky jsou mnohem modernějším vynálezem, použitelným v mnoha situacích, kdy frekvenční analýza selhává, a jejich ukázku uvidíme v další části. Zde je jednoduchá šifra zvolena pouze proto, aby byl příklad jasnější.

Alice a Bob tedy komunikují pomocí jednoduché substituční šifry pomocí klíče, který znají pouze oni. Na délku zpráv jsou velmi přísní: mají přesně 20 znaků. Dohodli se tedy, že pokud chce někdo poslat kratší zprávu, měl by na konec zprávy přidat nějaký fiktivní text, aby měla přesně 20 znaků. Po nějaké diskusi se rozhodli, že přijmou pouze následující falešné texty: a, bb, ccc, dddd atd. Je tedy znám fiktivní text libovolné požadované délky.

Když Alice nebo Bob obdrží zprávu, nejprve zkontrolují, zda má zpráva správnou délku (20 znaků) a že přípona je správný fiktivní text. Pokud tomu tak není, odpoví příslušnou chybovou zprávou. Pokud je délka textu a fiktivní text v pořádku, příjemce si zprávu přečte sám a odešle zašifrovanou odpověď.

Během útoku se útočník vydává za Boba a posílá Alici falešné zprávy. Zprávy jsou naprostý nesmysl – útočník nemá klíč, a proto nemůže zfalšovat smysluplnou zprávu. Ale protože protokol porušuje princip zkázy, útočník může stále chytit Alici, aby odhalila klíčové informace, jak je ukázáno níže.

Zloděj: PREWF ZHJKL MMMN. LA

Alice: Neplatný fiktivní text.

Zloděj: PREWF ZHJKL MMMN. LB

Alice: Neplatný fiktivní text.

Zloděj: PREWF ZHJKL MMMN. LC

Alice: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

Zloděj netuší, co Alice právě řekla, ale poznamenává, že symbol C musí odpovídat a, protože Alice přijala fiktivní text.

Zloděj: REWF ZHJKL MMMN. LAA

Alice: Neplatný fiktivní text.

Zloděj: REWF ZHJKL MMMN. LBB

Alice: Neplatný fiktivní text.

Po několika pokusech...

Zloděj: REWF ZHJKL MMMN. LGG

Alice: Neplatný fiktivní text.

Zloděj: REWF ZHJKL MMMN. LHH

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

Útočník opět netuší, co Alice právě řekla, ale poznamenává, že H musí odpovídat b, protože Alice přijala fiktivní text.

A tak dále, dokud útočník nezná význam každé postavy.

Metoda na první pohled připomíná zvolený útok v otevřeném textu. Nakonec útočník vybere šifrované texty a server je poslušně zpracuje. Hlavním rozdílem, díky kterému jsou tyto útoky životaschopné v reálném světě, je to, že útočník nepotřebuje přístup ke skutečnému přepisu – stačí odpověď serveru, dokonce i tak neškodná jako „Neplatný fiktivní text“.

I když je tento konkrétní útok poučný, nenechte se příliš zavěšovat na specifika schématu „fiktivního textu“, konkrétního použitého kryptosystému nebo přesné sekvence zpráv odeslaných útočníkem. Základní myšlenkou je, jak Alice reaguje odlišně na základě vlastností otevřeného textu a činí tak bez ověření, že odpovídající šifrovaný text skutečně pochází od důvěryhodné strany. Alice tak umožňuje útočníkovi vymáčknout z jejích odpovědí tajné informace.

V tomto scénáři se dá hodně změnit. Symboly, na které Alice reaguje, nebo samotný rozdíl v jejím chování, nebo dokonce použitý kryptosystém. Ale princip zůstane stejný a útok jako celek zůstane v té či oné formě životaschopný. Základní implementace tohoto útoku pomohla odhalit několik bezpečnostních chyb, na které se brzy podíváme; ale nejprve je třeba se naučit nějaké teoretické lekce. Jak použít tento fiktivní „Alice skript“ v útoku, který může fungovat na skutečné moderní šifře? Je to vůbec možné, dokonce i teoreticky?

V roce 1998 odpověděl švýcarský kryptograf Daniel Bleichenbacher na tuto otázku kladně. Předvedl věštecký útok na široce používaný kryptosystém RSA s veřejným klíčem pomocí specifického schématu zpráv. V některých implementacích RSA server odpovídá různými chybovými zprávami v závislosti na tom, zda prostý text odpovídá schématu nebo ne; to stačilo k provedení útoku.

O čtyři roky později, v roce 2002, francouzský kryptograf Serge Vaudenay předvedl věštecký útok téměř totožný s útokem popsaným ve scénáři Alice výše – až na to, že místo fiktivní šifry prolomil celou úctyhodnou třídu moderních šifer, které lidé ve skutečnosti používají. Konkrétně se útok Vaudenay zaměřuje na šifry s pevnou vstupní velikostí ("blokové šifry"), když jsou použity v takzvaném "režimu šifrování CBC" a s určitým oblíbeným schématem výplně, v zásadě ekvivalentním tomu ve scénáři Alice.

Také v roce 2002 americký kryptograf John Kelsey - spoluautor Dvakrát — navrhl různé útoky věštců na systémy, které komprimují zprávy a poté je šifrují. Nejpozoruhodnější z nich byl útok, který využil skutečnosti, že je často možné odvodit původní délku otevřeného textu z délky šifrového textu. Teoreticky to umožňuje útok věštce, který obnoví části původního otevřeného textu.

Níže uvádíme podrobnější popis útoků Vaudenay a Kelsey (podrobnější popis útoku Bleichenbacher uvedeme, když přejdeme k útokům na kryptografii veřejného klíče). Přes naše nejlepší úsilí se text stává poněkud technickým; takže pokud vám výše uvedené stačí, přeskočte následující dvě části.

Útok Vodene

Abychom porozuměli útoku Vaudenay, musíme si nejprve promluvit trochu více o blokových šifrách a režimech šifrování. „Bloková šifra“ je, jak již bylo zmíněno, šifra, která přebírá klíč a vstup o určité pevné délce („délka bloku“) a vytváří zašifrovaný blok stejné délky. Blokové šifry jsou široce používané a považovány za relativně bezpečné. Nyní vysloužilá DES, považovaná za první moderní šifru, byla bloková šifra. Jak již bylo zmíněno výše, totéž platí pro dnes hojně využívaný AES.

Bohužel blokové šifry mají jednu do očí bijící slabinu. Typická velikost bloku je 128 bitů nebo 16 znaků. Je zřejmé, že moderní kryptografie vyžaduje práci s většími vstupními daty a právě zde vstupují do hry režimy šifrování. Režim šifrování je v podstatě hack: je to způsob, jak nějak aplikovat blokovou šifru, která přijímá pouze vstup určité velikosti na vstup libovolné délky.

Vodeneův útok je zaměřen na oblíbený provozní režim CBC (Cipher Block Chaining). Útok považuje základní blokovou šifru za magickou, nedobytnou černou skříňku a zcela obchází její zabezpečení.

Zde je schéma, které ukazuje, jak režim CBC funguje:

Kryptografické útoky: vysvětlení pro zmatené mysli

Kryptografické útoky: vysvětlení pro zmatené mysli

Zakroužkované plus znamená operaci XOR (exclusive OR). Získá se například druhý blok šifrovaného textu:

  1. Provedením operace XOR na druhém bloku prostého textu s prvním blokem šifrovaného textu.
  2. Zašifrování výsledného bloku blokovou šifrou pomocí klíče.

Protože CBC tak intenzivně využívá binární operaci XOR, pojďme si na chvíli připomenout některé její vlastnosti:

  • Idempotence: Kryptografické útoky: vysvětlení pro zmatené mysli
  • Komutativnost: Kryptografické útoky: vysvětlení pro zmatené mysli
  • Asociativita: Kryptografické útoky: vysvětlení pro zmatené mysli
  • Samovratná: Kryptografické útoky: vysvětlení pro zmatené mysli
  • Velikost bajtu: byte n z Kryptografické útoky: vysvětlení pro zmatené mysli = (bajt n z Kryptografické útoky: vysvětlení pro zmatené mysli) Kryptografické útoky: vysvětlení pro zmatené mysli (bajt n z Kryptografické útoky: vysvětlení pro zmatené mysli)

Tyto vlastnosti obvykle znamenají, že pokud máme rovnici zahrnující operace XOR a jednu neznámou, lze ji vyřešit. Například když to víme Kryptografické útoky: vysvětlení pro zmatené mysli s neznámým Kryptografické útoky: vysvětlení pro zmatené mysli a slavný Kryptografické útoky: vysvětlení pro zmatené mysli и Kryptografické útoky: vysvětlení pro zmatené mysli, pak se při řešení rovnice můžeme spolehnout na výše uvedené vlastnosti Kryptografické útoky: vysvětlení pro zmatené mysli. Aplikováním XOR na obě strany rovnice s Kryptografické útoky: vysvětlení pro zmatené mysli, dostaneme Kryptografické útoky: vysvětlení pro zmatené mysli. To vše bude za chvíli velmi aktuální.

Mezi naším scénářem Alice a Vaudenayovým útokem jsou dva menší rozdíly a jeden velký rozdíl. Dvě menší:

  • Ve scénáři Alice očekávala, že prosté texty skončí u postav a, bb, ccc a tak dále. V útoku Wodene oběť místo toho očekává, že otevřené texty N-krát skončí N bajtem (tj. hexadecimálně 01 nebo 02 02 nebo 03 03 03 atd.). To je čistě kosmetický rozdíl.
  • Ve scénáři Alice bylo snadné zjistit, zda Alice zprávu přijala, podle odpovědi „Nesprávný fiktivní text“. V útoku Vodene je zapotřebí více analýzy a důležitá je přesná implementace na straně oběti; ale pro stručnost berme jako samozřejmost, že tento rozbor je stále možný.

Hlavní rozdíl:

  • Vzhledem k tomu, že nepoužíváme stejný kryptosystém, bude vztah mezi bajty šifrovaného textu kontrolovanými útočníkem a tajnými informacemi (klíč a prostý text) zjevně odlišný. Proto bude muset útočník při vytváření šifrovaných textů a interpretaci odpovědí serveru použít jinou strategii.

Tento zásadní rozdíl je posledním kouskem skládačky pro pochopení útoku Vaudenay, takže se pojďme na chvíli zamyslet nad tím, proč a jak lze vůbec provést věštecký útok na CBC.

Předpokládejme, že máme CBC šifrovaný text o 247 blocích a chceme jej dešifrovat. Můžeme posílat falešné zprávy na server, stejně jako jsme předtím mohli posílat falešné zprávy Alici. Server za nás dešifruje zprávy, ale neukáže dešifrování - místo toho opět, jako u Alice, server oznámí pouze jeden bit informace: zda má prostý text platnou výplň nebo ne.

Zvažte, že v Alicině scénáři jsme měli následující vztahy:

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

Říkejme tomu "Alicina rovnice." Kontrolovali jsme šifrový text; ze serveru (Alice) unikla vágní informace o přijatém otevřeném textu; a to nám umožnilo odvodit informaci o posledním faktoru – klíči. Analogicky, pokud najdeme takové spojení pro skript CBC, mohli bychom tam také získat nějaké tajné informace.

Naštěstí tam opravdu existují vztahy, které můžeme využít. Zvažte výstup konečného volání k dešifrování blokové šifry a označte tato data jako Kryptografické útoky: vysvětlení pro zmatené mysli. Označujeme také bloky otevřeného textu Kryptografické útoky: vysvětlení pro zmatené mysli a bloky šifrovaného textu Kryptografické útoky: vysvětlení pro zmatené mysli. Podívejte se znovu na diagram CBC a všimněte si, co se stane:

Kryptografické útoky: vysvětlení pro zmatené mysli

Říkejme tomu „rovnice CBC“.

V Alicině scénáři, sledováním šifrovaného textu a sledováním odpovídajícího úniku otevřeného textu, jsme byli schopni zahájit útok, který obnovil třetí výraz v rovnici – klíč. Ve scénáři CBC také sledujeme šifrový text a sledujeme úniky informací na odpovídajícím otevřeném textu. Pokud platí analogie, můžeme získat informace o Kryptografické útoky: vysvětlení pro zmatené mysli.

Předpokládejme, že jsme skutečně obnovili Kryptografické útoky: vysvětlení pro zmatené mysli, co pak? No, pak můžeme vytisknout celý poslední blok prostého textu najednou (Kryptografické útoky: vysvětlení pro zmatené mysli), jednoduše zadáním Kryptografické útoky: vysvětlení pro zmatené mysli (které máme) a
přijato Kryptografické útoky: vysvětlení pro zmatené mysli do rovnice CBC.

Nyní, když jsme optimističtí, pokud jde o celkový plán útoku, je čas vypracovat detaily. Věnujte prosím pozornost tomu, jak přesně na server unikají informace v prostém textu. Ve skriptu Alice došlo k úniku, protože Alice by odpověděla správnou zprávou pouze v případě, že by $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ skončilo řádkem a (nebo bb, a tak dále, ale šance, že tyto stavy budou spuštěny náhodou, byly velmi malé). Podobně jako u CBC server přijímá výplň tehdy a jen tehdy Kryptografické útoky: vysvětlení pro zmatené mysli končí v šestnáctkové soustavě 01. Zkusme tedy stejný trik: odesílání falešných šifrových textů s našimi vlastními falešnými hodnotami Kryptografické útoky: vysvětlení pro zmatené myslidokud server nepřijme výplň.

Když server přijme výplň pro jednu z našich falešných zpráv, znamená to, že:

Kryptografické útoky: vysvětlení pro zmatené mysli

Nyní použijeme vlastnost byte-byte XOR:

Kryptografické útoky: vysvětlení pro zmatené mysli

Známe první a třetí termín. A již jsme viděli, že nám to umožňuje obnovit zbývající člen - poslední bajt Kryptografické útoky: vysvětlení pro zmatené mysli:

Kryptografické útoky: vysvětlení pro zmatené mysli

To nám také poskytuje poslední bajt konečného bloku prostého textu prostřednictvím rovnice CBC a vlastnosti bajt po bajtu.

Mohli jsme to nechat být a být spokojeni, že jsme provedli útok na teoreticky silnou šifru. Ale ve skutečnosti můžeme udělat mnohem víc: můžeme vlastně obnovit celý text. To vyžaduje trik, který nebyl v původním scénáři Alice a není vyžadován pro útok věštce, ale přesto stojí za to se ho naučit.

Abyste tomu porozuměli, nejprve si všimněte, že výsledkem výstupu správné hodnoty posledního bajtu je Kryptografické útoky: vysvětlení pro zmatené mysli máme novou schopnost. Nyní, když falšujeme šifrové texty, můžeme manipulovat s posledním bytem odpovídajícího otevřeného textu. Opět to souvisí s rovnicí CBC a vlastností byte-by-byte:

Kryptografické útoky: vysvětlení pro zmatené mysli

Protože nyní známe druhý termín, můžeme použít naši kontrolu nad prvním k ovládání třetího. Jednoduše spočítáme:

Kryptografické útoky: vysvětlení pro zmatené mysli

Dříve jsme to nemohli udělat, protože jsme ještě neměli poslední bajt Kryptografické útoky: vysvětlení pro zmatené mysli.

Jak nám to pomůže? Předpokládejme, že nyní vytvoříme všechny šifrové texty tak, že v odpovídajících holých textech je poslední bajt roven 02. Server nyní přijímá odsazení pouze v případě, že prostý text končí na 02 02. Protože jsme opravili poslední bajt, stane se to pouze v případě, že předposlední bajt otevřeného textu je také 02. Neustále posíláme falešné bloky šifrovaného textu a měníme předposlední bajt, dokud server nepřijme výplň pro jeden z nich. V tomto bodě dostáváme:

Kryptografické útoky: vysvětlení pro zmatené mysli

A obnovíme předposlední bajt Kryptografické útoky: vysvětlení pro zmatené mysli stejně jako ta poslední byla obnovena. Pokračujeme ve stejném duchu: opravíme poslední dva bajty otevřeného textu na 03 03, zopakujeme tento útok pro třetí bajt od konce a tak dále, nakonec zcela obnovíme Kryptografické útoky: vysvětlení pro zmatené mysli.

A co zbytek textu? Vezměte prosím na vědomí, že hodnota Kryptografické útoky: vysvětlení pro zmatené mysli je ve skutečnosti $inline$text{BLOCK_DECRYPT}(text{klíč},C_{247})$inline$. Místo toho můžeme umístit jakýkoli jiný blok Kryptografické útoky: vysvětlení pro zmatené myslia útok bude stále úspěšný. Ve skutečnosti můžeme server požádat, aby provedl $inline$text{BLOCK_DECRYPT}$inline$ pro jakákoli data. V tuto chvíli je hra u konce – můžeme dešifrovat jakýkoli šifrovaný text (podívejte se znovu na dešifrovací diagram CBC, abyste to viděli; a všimněte si, že IV je veřejné).

Tato konkrétní metoda hraje zásadní roli v útoku orákula, se kterým se setkáme později.

Kelseyho útok

Náš sympatický John Kelsey popsal principy mnoha možných útoků, nejen detaily konkrétního útoku na konkrétní šifru. Jeho 2002 článek roku je studie možných útoků na šifrovaná komprimovaná data. Mysleli jste si, že informace o tom, že data byla před šifrováním zkomprimována, nestačí k provedení útoku? Ukazuje se, že to stačí.

Tento překvapivý výsledek je způsoben dvěma principy. Za prvé, existuje silná korelace mezi délkou otevřeného textu a délkou šifrovaného textu; pro mnoho šifer přesná rovnost. Za druhé, když se provádí komprimace, existuje také silná korelace mezi délkou komprimované zprávy a mírou „šumu“ otevřeného textu, tedy podílem neopakujících se znaků (odborný termín je „vysoká entropie“ ).

Chcete-li vidět princip v praxi, zvažte dva otevřené texty:

Jednoduchý text 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Jednoduchý text 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

Předpokládejme, že oba otevřené texty jsou komprimovány a poté zašifrovány. Získáte dva výsledné šifrové texty a musíte uhodnout, který šifrovaný text odpovídá kterému otevřenému textu:

Šifrovaný text 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

Šifrovaný text 2: DWKJZXYU

Odpověď je jasná. Mezi otevřenými texty mohl být pouze otevřený text 1 zkomprimován do skrovné délky druhého šifrového textu. Přišli jsme na to, aniž bychom věděli cokoli o kompresním algoritmu, šifrovacím klíči nebo dokonce o šifře samotné. V porovnání s hierarchií možných kryptografických útoků je to trochu šílené.

Kelsey dále poukazuje na to, že za určitých neobvyklých okolností lze tento princip použít i k provedení věšteckého útoku. Zejména popisuje, jak může útočník obnovit tajný prostý text, pokud může donutit server, aby zašifroval data formuláře (prostý text následovaný Kryptografické útoky: vysvětlení pro zmatené myslidokud to má pod kontrolou Kryptografické útoky: vysvětlení pro zmatené mysli a může nějak zkontrolovat délku zašifrovaného výsledku.

Opět, stejně jako jiné věštecké útoky, máme vztah:

Kryptografické útoky: vysvětlení pro zmatené mysli

Opět ovládáme jeden termín (Kryptografické útoky: vysvětlení pro zmatené mysli), vidíme malý únik informací o jiném členu (šifrovaný text) a pokusíme se obnovit poslední (prostý text). Navzdory analogii je to poněkud neobvyklá situace ve srovnání s jinými útoky věštců, které jsme viděli.

Abychom ilustrovali, jak by takový útok mohl fungovat, použijeme fiktivní kompresní schéma, které jsme právě vymysleli: TOYZIP. Hledá řádky textu, které se již dříve v textu vyskytly, a nahradí je třemi zástupnými bajty, které označují, kde najít dřívější výskyt řádku a kolikrát se tam vyskytuje. Například čára helloworldhello lze stlačit do helloworld[00][00][05] Délka 13 bajtů ve srovnání s původními 15 bajty.

Předpokládejme, že se útočník pokusí obnovit prostý text formuláře password=..., kde samotné heslo není známo. Podle Kelseyho modelu útoku by útočník mohl požádat server, aby zkomprimoval a poté zašifroval zprávy formuláře (prostý text následovaný Kryptografické útoky: vysvětlení pro zmatené mysli) kde Kryptografické útoky: vysvětlení pro zmatené mysli - Volný text. Když server dokončí práci, oznámí délku výsledku. Útok probíhá takto:

Zloděj: Komprimujte a zašifrujte prostý text bez jakéhokoli odsazení.

Server: Délka výsledku 14.

Zloděj: Komprimujte a zašifrujte prostý text, ke kterému je připojen password=a.

Server: Délka výsledku 18.

Cracker poznamená: [původních 14] + [tři bajty, které byly nahrazeny password=] + a

Zloděj: Komprimujte a zašifrujte prostý text, ke kterému je přidán password=b.

Server: Délka výsledku 18.

Zloděj: Komprimujte a zašifrujte prostý text, ke kterému je přidán password=с.

Server: Délka výsledku 17.

Cracker poznamená: [původních 14] + [tři bajty, které byly nahrazeny password=c]. To předpokládá, že původní prostý text obsahuje řetězec password=c. To znamená, že heslo začíná písmenem c

Zloděj: Komprimujte a zašifrujte prostý text, ke kterému je přidán password=сa.

Server: Délka výsledku 18.

Cracker poznamená: [původních 14] + [tři bajty, které byly nahrazeny password=с] + a

Zloděj: Komprimujte a zašifrujte prostý text, ke kterému je přidán password=сb.

Server: Délka výsledku 18.

(… O něco později…)

Zloděj: Komprimujte a zašifrujte prostý text, ke kterému je přidán password=со.

Server: Délka výsledku 17.

Cracker poznamená: [původních 14] + [tři bajty, které byly nahrazeny password=co]. Pomocí stejné logiky útočník dojde k závěru, že heslo začíná písmeny co

A tak dále, dokud nebude obnoveno celé heslo.

Čtenáři by bylo odpuštěno, kdyby si myslel, že jde o čistě akademické cvičení a že takový scénář útoku by v reálném světě nikdy nevznikl. Bohužel, jak brzy uvidíme, je lepší kryptografii nevzdávat.

Slabiny značky: CRIME, PODLE, DROWN

Nakonec, po podrobném prostudování teorie, můžeme vidět, jak jsou tyto techniky aplikovány v reálných kryptografických útocích.

ZLOČIN

Kryptografické útoky: vysvětlení pro zmatené mysliPokud je útok zaměřen na prohlížeč a síť oběti, některé budou jednodušší a některé obtížnější. Například je snadné vidět provoz oběti: stačí s ní sedět ve stejné kavárně s WiFi. Z tohoto důvodu se potenciálním obětem (tedy všem) obecně doporučuje používat šifrované připojení. Bude obtížnější, ale stále možné, odesílat požadavky HTTP jménem oběti na některé stránky třetí strany (například Google). Útočník musí nalákat oběť na škodlivou webovou stránku pomocí skriptu, který požadavek provede. Webový prohlížeč automaticky poskytne příslušný soubor cookie relace.

Zdá se to úžasné. Kdyby Bob šel do evil.com, mohl by skript na tomto webu požádat Google, aby poslal Bobovo heslo e-mailem na adresu [email protected]? No, teoreticky ano, ale ve skutečnosti ne. Tento scénář se nazývá útok na padělání požadavku mezi weby (Padělání žádosti mezi weby, CSRF) a byl populární kolem poloviny 90. Dnes pokud evil.com vyzkouší tento trik, Google (nebo jakýkoli seberespektující web) obvykle odpoví: „Skvělé, ale váš token CSRF pro tuto transakci bude... ehm... три триллиона и семь. Opakujte prosím toto číslo." Moderní prohlížeče mají něco, čemu se říká „zásady stejného původu“, kdy skripty na webu A nemají přístup k informacím odesílaným webem B. Skript na evil.com může posílat žádosti na google.com, ale nemůže číst odpovědi nebo skutečně dokončit transakci.

Musíme zdůraznit, že pokud Bob nepoužívá šifrované připojení, všechny tyto ochrany jsou bezvýznamné. Útočník může jednoduše přečíst Bobův provoz a obnovit soubor cookie relace Google. S tímto souborem cookie jednoduše otevře novou kartu Google, aniž by opustil svůj vlastní prohlížeč, a bude se vydávat za Boba, aniž by narazil na otravné zásady stejného původu. Ale bohužel pro zloděje je to stále méně obvyklé. Internet jako celek již dlouho vyhlásil válku nešifrovaným připojením a Bobův odchozí provoz je pravděpodobně šifrovaný, ať se mu to líbí nebo ne. Navíc od samého začátku implementace protokolu byl provoz také scvrklý před šifrováním; to byla běžná praxe ke snížení latence.

Zde přichází do hry ZLOČIN (Compression Ratio Infoleak Made Easy, jednoduchý únik přes kompresní poměr). Zranitelnost byla odhalena v září 2012 bezpečnostními výzkumníky Juliano Rizzo a Thai Duong. Již jsme analyzovali celý teoretický základ, což nám umožňuje pochopit, co a jak dělali. Útočník by mohl přinutit Bobův prohlížeč, aby posílal požadavky do Googlu a pak naslouchal odpovědím v místní síti v komprimované zašifrované podobě. Proto máme:

Kryptografické útoky: vysvětlení pro zmatené mysli

Zde útočník kontroluje požadavek a má přístup k provozu sniffer, včetně velikosti paketu. Kelseyin fiktivní scénář ožil.

Autoři CRIME pochopili teorii a vytvořili exploit, který dokáže ukrást soubory cookie relace pro širokou škálu webů, včetně Gmailu, Twitteru, Dropboxu a Githubu. Tato chyba zabezpečení postihla většinu moderních webových prohlížečů, což vedlo k vydání záplat, které v tichosti pohřbily funkci komprese v SSL, takže by se vůbec nepoužívala. Jediný, kdo byl chráněn před zranitelností, byl úctyhodný Internet Explorer, který nikdy nepoužíval kompresi SSL.

PUDL

Kryptografické útoky: vysvětlení pro zmatené mysliV říjnu 2014 udělal bezpečnostní tým Google vlny v bezpečnostní komunitě. Dokázali zneužít zranitelnost v protokolu SSL, která byla opravena před více než deseti lety.

Ukazuje se, že zatímco servery běží na zbrusu novém TLSv1.2, mnoho z nich opustilo podporu pro starší SSLv3 pro zpětnou kompatibilitu s Internet Explorerem 6. Už jsme mluvili o útocích na downgrade, takže si dokážete představit, co se děje. Dobře organizovaná sabotáž protokolu handshake a servery jsou připraveny vrátit se ke starému dobrému SSLv3, což v podstatě zmaří posledních 15 let výzkumu bezpečnosti.

Pro historický kontext, zde je stručný souhrn historie SSL až do verze 2 od Matthewa Greena:

Transport Layer Security (TLS) je nejdůležitější bezpečnostní protokol na internetu. [..] téměř každá transakce, kterou provedete na internetu, závisí na TLS. [..] Ale TLS nebylo vždy TLS. Protokol začal svůj život v Netscape Communications s 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 pohřbili je na tajné skládce v Novém Mexiku. V důsledku toho je ve skutečnosti první veřejně dostupná verze SSL verze SSL 2. Je to docela děsivé a [..] to byl produkt z poloviny 90. let, který moderní kryptografové považují za „temné časy kryptografie" Mnoho z nejohavnějších kryptografických útoků, o kterých dnes víme, nebylo dosud objeveno. Výsledkem bylo, že vývojáři protokolu SSLv2 byli v podstatě ponecháni, aby tápali ve tmě a čelili spousta hrozných monster - k jejich nelibosti a našemu prospěchu, protože útoky na SSLv2 zanechaly neocenitelné lekce pro další generaci protokolů.

Po těchto událostech v roce 1996 frustrovaný Netscape přepracoval protokol SSL od nuly. Výsledkem bylo SSL verze 3, která opraveno několik známých bezpečnostních problémů svého předchůdce.

Naštěstí pro zloděje „několik“ neznamená „všichni“. Celkově SSLv3 poskytl všechny potřebné stavební bloky pro zahájení útoku Vodene. Protokol používal blokovou šifru režimu CBC a schéma nezabezpečeného vyplnění (toto bylo opraveno v TLS; proto je potřeba provést downgrade útok). Pokud si pamatujete schéma výplně v našem původním popisu útoku Vaudenay, schéma SSLv3 je velmi podobné.

Ale bohužel pro zloděje „podobné“ neznamená „identické“. Schéma výplně SSLv3 je "N náhodných bajtů následovaných číslem N". Zkuste za těchto podmínek vybrat pomyslný blok šifrovaného textu a projít všechny kroky původního schématu Vaudene: zjistíte, že útok úspěšně extrahuje poslední bajt z odpovídajícího bloku otevřeného textu, ale nejde dál. Dešifrování každého 16. bajtu šifrového textu je skvělý trik, ale není to žádné vítězství.

Tváří v tvář neúspěchu se tým Google uchýlil k poslednímu řešení: přešel na silnější model hrozby – ten, který se používá v CRIME. Za předpokladu, že útočníkem je skript spuštěný na kartě prohlížeče oběti a dokáže extrahovat soubory cookie relace, je útok stále působivý. Zatímco širší model hrozby je méně realistický, v předchozí části jsme viděli, že tento konkrétní model je proveditelný.

Vzhledem k těmto silnějším schopnostem útočníka může nyní útok pokračovat. Všimněte si, že útočník ví, kde se v záhlaví zašifrovaný soubor cookie relace nachází, a řídí délku požadavku HTTP, který mu předchází. Proto je schopen manipulovat s HTTP požadavkem tak, aby byl poslední bajt cookie zarovnán s koncem bloku. Nyní je tento bajt vhodný pro dešifrování. Do požadavku můžete jednoduše přidat jeden znak a předposlední bajt cookie zůstane na stejném místě a je vhodný pro výběr stejnou metodou. Útok tímto způsobem pokračuje, dokud není soubor cookie zcela obnoven. Jmenuje se POODLE: Padding Oracle on Downgraded Legacy Encryption.

UTOPIT

Kryptografické útoky: vysvětlení pro zmatené mysliJak jsme zmínili, SSLv3 měl své chyby, ale zásadně se lišil od svého předchůdce, protože děravý SSLv2 byl produktem jiné doby. Zde můžete přerušit zprávu uprostřed: соглашусь на это только через мой труп proměnil соглашусь на это; klient a server by se mohli setkat online, navázat důvěru a vyměňovat si tajemství před útočníkem, který by se pak mohl snadno vydávat za oba. Problém je také s exportní kryptografií, kterou jsme zmínili při zvažování FREAK. Jednalo se o kryptografickou Sodomu a Gomoru.

V březnu 2016 se sešel tým výzkumníků z různých technických oborů a učinil překvapivý objev: SSLv2 se stále používá v bezpečnostních systémech. Ano, útočníci již nemohli downgradovat moderní relace TLS na SSLv2, protože tato díra byla uzavřena po FREAK a POODLE, ale stále se mohou připojit k serverům a sami iniciovat relace SSLv2.

Můžete se ptát, proč nás zajímá, co tam dělají? Mají zranitelnou relaci, ale to by nemělo mít vliv na ostatní relace ani na bezpečnost serveru – ne? No, ne tak docela. Ano, teoreticky by to tak mělo být. Ale ne – protože generování certifikátů SSL představuje určitou zátěž, což vede k tomu, že mnoho serverů používá stejné certifikáty a v důsledku toho stejné klíče RSA pro připojení TLS a SSLv2. Aby toho nebylo málo, kvůli chybě OpenSSL ve skutečnosti nefungovala možnost „Zakázat SSLv2“ v této populární implementaci SSL.

To umožnilo křížový protokolový útok na TLS, tzv UTOPIT (Dešifrování RSA pomocí zastaralého a oslabeného šifrování, dešifrování RSA pomocí zastaralého a oslabeného šifrování). Připomeňme, že to není totéž jako krátký útok; útočník se nemusí chovat jako „muž uprostřed“ a nemusí zapojovat klienta, aby se účastnil nezabezpečené relace. Útočníci jednoduše zahájí nezabezpečenou relaci SSLv2 se serverem sami, zaútočí na slabý protokol a obnoví soukromý klíč RSA serveru. Tento klíč je platný také pro připojení TLS a od tohoto okamžiku žádné zabezpečení TLS nezabrání jeho kompromitaci.

K jeho prolomení však potřebujete funkční útok proti SSLv2, který vám umožní obnovit nejen konkrétní provoz, ale také tajný klíč serveru RSA. Přestože se jedná o složité nastavení, výzkumníci si mohli vybrat jakoukoli zranitelnost, která byla po SSLv2 zcela uzavřena. Nakonec našli vhodnou možnost: Bleichenbacherův útok, o kterém jsme se zmínili dříve a který si podrobně vysvětlíme v dalším článku. SSL a TLS jsou před tímto útokem chráněny, ale některé náhodné vlastnosti SSL v kombinaci s krátkými klíči v exportní kryptografii to umožnily konkrétní implementace DROWN.

V době zveřejnění bylo 25 % nejlepších internetových stránek postiženo zranitelností DROWN a útok mohl být proveden se skromnými zdroji dostupnými i pro zlomyslné osamělé hackery. Získání klíče RSA serveru vyžadovalo osm hodin výpočtu a 440 USD a protokol SSLv2 se změnil ze zastaralého na radioaktivní.

Počkej, co Heartbleed?

Nejedná se o kryptografický útok ve výše popsaném smyslu; Toto je přetečení vyrovnávací paměti.

Dejme si pauzu

Začali jsme s některými základními technikami: hrubou silou, interpolací, downgrade, cross-protocol a precomputation. Pak jsme se podívali na jednu pokročilou techniku, možná hlavní složku moderních kryptografických útoků: útok orákula. Strávili jsme dost času tím, že jsme to zjistili – a pochopili jsme nejen základní princip, ale také technické detaily dvou konkrétních implementací: útoku Vaudenay na režim šifrování CBC a útoku Kelsey na protokoly šifrování před kompresí.

Při revizi downgrade a precomputation útoků jsme stručně nastínili útok FREAK, který využívá obě metody tím, že cílové stránky downgradují na slabé klíče a poté znovu použijí stejné klíče. Pro příští článek si necháme (velmi podobný) útok Logjam, který cílí na algoritmy veřejného klíče.

Poté jsme se podívali na další tři příklady aplikace těchto principů. Za prvé, CRIME a POODLE: dva útoky, které se spoléhaly na schopnost útočníka vložit libovolný prostý text vedle cílového prostého textu, poté prozkoumat odpovědi serveru a pak,pomocí metodologie útoku Oracle, zneužít tyto řídké informace k částečnému obnovení otevřeného textu. CRIME šel cestou Kelseyho útoku na SSL kompresi, zatímco POODLE místo toho použil variantu Vaudenayova útoku na CBC se stejným efektem.

Poté jsme zaměřili svou pozornost na crossprotocol DROWN útok, který naváže spojení se serverem pomocí staršího protokolu SSLv2 a poté obnoví tajné klíče serveru pomocí Bleichenbacher útoku. Technické detaily tohoto útoku jsme prozatím přeskočili; jako Logjam bude muset počkat, dokud dobře porozumíme kryptosystémům s veřejným klíčem a jejich zranitelnostem.

V příštím článku budeme hovořit o pokročilých útocích, jako je meet-in-the-middle, diferenciální kryptoanalýza a narozeninové útoky. Pojďme se rychle vrhnout na útoky postranním kanálem a pak přejdeme k zábavnější části: kryptosystémy s veřejným klíčem.

Zdroj: www.habr.com

Přidat komentář