Kryptografické útoky: vysvětlení pro zmatkující mysli.

Při zmínce o "kryptografii" si někteří vzpomenou na své WiFi heslo, zelený zámek vedle adresy oblíbené stránky a jak obtížné je dostat se do cizí pošty. Jiní si vybaví sérii zranitelností posledních let s mluvícími zkratkami (DROWN, FREAK, POODLE…) a stylovými logy se varováním, abyste si urgentně aktualizovali svůj prohlížeč.

Kryptografie zahrnuje to vše, ale podstata je jinde. Jde o tenkou hranici mezi jednoduchým a složitým. Některé věci se snadno dělají, ale složitě se vrací zpět: například rozbít vejce. Jiné věci se snadno dělají, ale těžko se vrací zpět, když chybí malá důležitá rozhodující část: například otevřít zamčené dveře, když je "rozhodující část" klíčem. Kryptografie zkoumá tyto situace a způsoby jejich praktického využití.

V posledních letech se sbírka kryptografických útoků proměnila v zoo křičících log, narvaných vzorci vědeckých článků, a vyvolala obecný ponurý pocit, že je vše zlomené. Ale ve skutečnosti mnohé útoky vycházejí z několika společných principů a nekonečné stránky vzorců se často redukují na jednoduché srozumitelné myšlenky.

V této sérii článků se zaměříme na různé typy kryptografických útoků s důrazem na základní principy. V hrubých rysech a ne úplně v tomto pořadí však o tom řekneme následující:

  • Základní strategie: brute force, frekvenční analýza, interpolace, snižování a kross-protokoly.
  • "Značkové" zranitelnosti: FREAK, CRIME, POODLE, DROWN, Logjam.
  • Pokročilé strategie: útoky oracle (útok Vodene, útok Kelsi); metoda setkání uprostřed (meet-in-the-middle), útok „narozenin“, statistické zkreslení (diferenciální kryptoanalyza, integrální kryptoanalyza atd.).
  • Útoky přes postranní kanály a jejich blízké příbuzné, metody analýzy chyb.
  • Útoky na kryptografii s veřejným klíčem: kubický kořen, broadcast, spojené zprávy, útok Copperfielda, algoritmus Polygra – Hellman, číselné sito, útok Wienera, útok Blaychenbachera.

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

Základní strategie

Následující útoky jsou jednoduché v tom smyslu, že je lze prakticky zcela vysvětlit bez zvláštních technických podrobností. Každý typ útoku vysvětlíme co nejjednodušeji, aniž bychom se nořili do složitých příkladů nebo rozšířených využití.

Některé z těchto útoků již většinou ztratily na aktuálnosti a nebyly aplikovány léta. Jiné, staré známé, se stále pravidelně přibližují k ničemu nepodezřívajícím vývojářům kryptosystémů ve 21. století. Dalo by se říci, že éra moderní kryptografie začala s příchodem IBM DES – prvního šifry, která odolala všem útokům na tomto seznamu.

Jednoduchý brute-force

Kryptografické útoky: vysvětlení pro zmatkující mysli.Šifrovací schéma se skládá ze dvou částí: 1) šifrovací funkce, která přijímá zprávu (otevřený text) spolu s klíčem a vytváří šifrovanou zprávu – šifrotext; 2) dešifrovací funkce, která přijímá šifrotext a klíč a vytváří otevřený text. Jak šifrování, tak dešifrování by měly být snadno vypočitatelné s klíčem – a obtížné bez něj.

Předpokládejme, že vidíme šifrotext a snažíme se jej dešifrovat bez jakýchkoli dodatečných informací (tomu se říká útok „pouze šifrotext“). Pokud nějakým zázrakem najdeme správný klíč, můžeme snadno ověřit, že je skutečně správný, pokud je výsledek rozumná zpráva.

Všimněte si, že zde jsou dvě implicitní předpoklady. Za prvé, že víme, jak provést dešifrování, tedy jak funguje kryptosystém. To je standardní předpoklad při diskusích o kryptografii. Skrývání detailů implementace šifry před útočníky se může jevit jako dodatečná bezpečnostní opatření, ale jakmile útočník tyto detaily zjistí, tato dodatečná bezpečnost je tiše a nevratně ztracena. Takto princip Kerckhoffa: zasazení systému do rukou nepřítele by nemělo způsobit potíže.

Za druhé předpokládáme, že správný klíč je jediným klíčem, který povede k rozumné dešifrování. To je také rozumný předpoklad; platí, pokud je šifrotext mnohem delší než klíč a je dobře čitelný. Obecně to tak bývá ve skutečném světě, s výjimkou obrovských nepraktických klíčů nebo jiných machinací, které raději necháme stranou (pokud se vám nelíbí, že jsme odbili vysvětlení, podívejte se na teorém 3.8 zde).

S ohledem na výše uvedené vyvstává strategie: zkontrolovat každý možný klíč. Tomu se říká brute force a tento útok zaručeně funguje proti všem praktickým šifrům — nakonec. Například, brute force stačí na to, aby prolomil Cézarovu šifru, starou šifru, kde klíčem je jedno písmeno z abecedy, což naznačuje něco málo přes 20 možných klíčů.

Bohužel pro kryptanalytiky, zvětšení velikosti klíče dobře chrání před brute forcem. Jak se zvětšuje velikost klíče, počet možných klíčů roste exponenciálně. S moderními velikostmi klíčů je jednoduchý brute force zcela nepraktický. Abychom pochopili, co máme na mysli, vezmeme si nejrychlejší známý superpočítač z poloviny roku 2019: Summit od IBM, s maximální výkonností kolem 10^17 operací za sekundu. Dnes typická délka klíče činí 128 bitů, což znamená 2^128 možných kombinací. K prozkoumání všech klíčů by superpočítači Summit trvalo dobu, která je přibližně 7800krát delší než věk vesmíru.

Máme považovat brute force za historickou kuriozitu? Vůbec ne: je to nezbytná ingredience v kuchařce kryptanalýzy. Zřídkakdy se vyskytují tak slabé šifry, že je lze prolomit pouze chytrým útokem, aniž by se v určité míře použila síla. Mnoho úspěšných prolomení nejprve používá algoritmickou metodu k oslabení cílové šifry a poté spustí brute force.

Frekvenční analýza

Kryptografické útoky: vysvětlení pro zmatkující mysli.Většina textů není žvást. Například v anglických textech je mnoho písmen 'e' a článků 'the'; v binárních souborech je hodně nulových bajtů jako vycpávka mezi fragmenty informací. Frekvenční analýza je jakýkoli útok, který toto využívá.

Kanonickým příkladem šifry, která je na tuto útok zranitelná, je jednoduchá substituční šifra. V této šifře klíč představuje tabulku, kde se nahrazují všechna písmena. Například, 'g' se nahradí 'h', 'o' se nahradí 'j', proto se slovo 'go' změní na 'hj'. Tato šifra se těžko poddává jednoduchému brute forcu, protože existuje velmi mnoho možných substitučních tabulek. Pokud vás zajímá matematika, efektivní délka klíče činí přibližně 88 bitů: to je
Kryptografické útoky: vysvětlení pro zmatkující mysli.. Ale frekvenční analýza obvykle rychle vyřeší úkol.

Zvážíme následující šifrový text, zpracovaný jednoduchým substitučním šifrem:

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

Jelikož Y objevuje se často, včetně na konci mnoha slov, můžeme předběžně předpokládat, že to je písmeno e:

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

Pár XD se opakuje na začátku několika slov. Zejména kombinace XDeLe jasně naznačuje slovo these nebo there, proto pokračujeme:

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

Dále předpokládejme, že L odpovídá jsou rovny nule., A — a a tak dále. Pravděpodobně bude třeba udělat několik pokusů, ale v porovnání s plným bruteforcem tato technika obnovuje původní text v co nejkratším čase:

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

Pro některé je řešení takových „kryptogramů“ fascinující koníček.

Myšlenka frekvenční analýzy je zásadnější, než se zdá na první pohled. A je aplikovatelná na mnohem složitější šifry. V průběhu historie se různé konstrukce šifer snažily čelit takovým útokům pomocí „polialfabetické substituce“. Při šifrování se zde tabulka pro substituci písmen mění 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é k prolomení; a přesto skromná frekvenční analýza nakonec všechny porazila.

Nejambicióznější polialfabetický šifrovací systém v historii a pravděpodobně nejznámější byl šifrovací stroj "Enigma" během druhé světové války. Byl relativně složitý v porovnání se svými předchůdci, ale díky dlouhé a usilovné práci britských kryptanalytiků byl přerušen pomocí frekvenční analýzy. Samozřejmě, že nedokázali vyvinout tak elegantní útok, jak bylo uvedeno výše; museli porovnávat známé páry otevřených a šifrovaných textů (takzvaný „útok na základě známých textů“) a dokonce vyvolávali uživatele „Enigmy“, aby šifrovali určité zprávy, a analyzovali výsledky („útok na základě přizpůsobeného otevřeného textu“). Ale to neulehčilo osud poražených armád nepřátel a potopených ponorek.

Po tomto triumfu frekvenční analýza zmizela z historie kriptoanalýzy. Šifry moderní digitální éry jsou navrženy pro práci s bity, nikoli s písmeny. Co je ještě důležitější, tyto šifry byly vyvinuty s temným porozuměním tomu, co bylo později známo jako zákon Schneiera: kdokoli může vytvořit šifrovací algoritmus, který sám nedokáže rozluštit. Nestačí, aby šifrovací systém působil složitě: aby prokázal svou hodnotu, musí projít bezohledným bezpečnostním přezkumem od mnoha kriptoanalytiků, kteří udělají vše, co je v jejich silách, aby šifru prolomili.

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

Kryptografické útoky: vysvětlení pro zmatkující mysli.Uvažujme hypotetické město Prekom Heights s populací 200 000 lidí. V každém domě města jsou cennosti v průměru v hodnotě 30 000 $, ale ne více než 50 000 $. Trh s bezpečností v Prekomu byl zmonopolizován společností ACME Industries, která vyrábí legendární zámky třídy Coyote ™. Podle expertní analýzy lze zámek třídy Coyote prolomit pouze velmi složitou hypotetickou mašinou, jejíž vytvoření si vyžaduje přibližně pět let a 50 000 $ investic. Je město v bezpečí?

Pravděpodobně ne. Nakonec se objeví dostatečně ambiciózní zločinec. Bude uvažovat takto: „Ano, ponesu velké předběžné náklady. Pět let trpělivého čekání a 50 000 $. Ale po dokončení práce budu mít přístup ke všemu bohatství tohoto města. Pokud správně zahraji své karty, tato investice se mnohonásobně vrátí.“

Stejně tak i v kryptografii. Útoky proti konkrétní šifře podléhají nemilosrdné analýze nákladů a výhod. Pokud je poměr příznivý, k útoku nedojde. Ale útoky, které cílí okamžitě na mnoho potenciálních obětí, se téměř vždy vyplatí, a v tomto případě je nejlepší praxí navrhnout, že začaly od prvního dne. Máme v podstatě kryptografickou verzi Murphyho zákona: „Vše, co skutečně může prolomit systém, systém prolomí.“

Nejjednodušším příkladem kryptosystému zranitelného vůči útoku s předběžnými výpočty je šifrování s konstantním algoritmem bez použití klíče. Tak tomu bylo v případě Césarovy šifry, který jednoduše posune každé písmeno abecedy o tři písmena vpřed (tabulka je uzavřená, takže poslední písmeno v abecedě je šifrováno třetím). Zde se opět projevuje princip Kerckhoffa: jakmile je systém prolomen, je prolomen navždy.

Koncept je jednoduchý. I začínající vývojář kryptosystémů si pravděpodobně uvědomuje hrozby a odpovídajícím způsobem se na ně připraví. Pokud se podíváme na evoluci kryptografie, takové útoky byly pro většinu šifrování nevhodné, počínaje prvními vylepšenými verzemi Caesarovy šifry až po úpadek polyalfabetických šifer. Takové útoky se objevily pouze s nástupem moderní éry kryptografie.

Toto návrat způsobuje dva faktory. Za prvé, konečně existují dostatečně složité kryptosystémy, kde možnost zneužití po prolomení nebyla zřejmá. Za druhé, kryptografie se rozšířila natolik, že miliony neprofesionálů každý den činily rozhodnutí o tom, kde a jaké části kryptografie znovu použít. Uběhlo nějaký čas, než si odborníci uvědomili vzniklé rizika a zdvihli varovný prst.

Zapamatujte si útok s předpočítáváním: na konci článku se podíváme na dva kryptografické příklady z reálného života, kde sehrál důležitou roli.

Interpolace

Před vámi slavný detektiv Sherlock Holmes, provádějící útok pomocí interpolace na nešťastného doktora Watsona:

Okamžitě jsem poznal, že jste přicestoval z Afghánistánu… Můj tok myšlenek byl následující: „Tento muž je podle typu lékař, ale jeho postava je vojenská. To znamená, vojenský lékař. Právě se vrátil z tropů – má opálenou tvář, ale to není přirozený odstín jeho pleti, protože zápěstí má mnohem bělejší. Tvář je vyčerpaná – očividně si prošel nemalými strastmi a přenesl nemoc. Byl raněn do levé ruky – drží ji nehybně a poněkud nepřirozeně. Kde mohl vojenský lékař Angličan v tropech trpět a dostat ránu? Samozřejmě, v Afghánistánu.“ Celý tok myšlenek trval ani ne sekundu. A tak jsem řekl, že jste přicestoval z Afghánistánu, a vy jste se podivili.

Z každého úlu mohl Holmes získat velmi málo informací. K tomu, aby došel ke svému závěru, musel zvážit všechny dohromady. Podobně funguje útok s interpolací, kdy zkoumá známé páry otevřeného a zašifrovaného textu, získaného pomocí stejného klíče. Z každého páru se vyjmou jednotlivé pozorování, která umožňují učinit obecný závěr o klíči. Všechna tato usuzování jsou nejistá a vypadají zbytečně, dokud najednou nedosáhnou kritické masy a nevedou k jedinému možnému závěru: jakkoliv neuvěřitelný může být, musí být pravdivý. Po té se buď odhalí klíč, nebo se proces dešifrování stane natolik propracovaným, že jej lze replikovat.

Ilustrujeme na jednoduchém příkladu, jak funguje interpolace. Představme si, že chceme přečíst osobní deník našeho nepřítele Boba. Šifruje každé číslo ve svém deníku pomocí jednoduché kryptosystémy, o které se dozvěděl z reklamního inzerátu v časopise „Posměch kryptografii“. Systém funguje následujícím způsobem: Bob si vybere dvě čísla, která se mu líbí: Kryptografické útoky: vysvětlení pro zmatkující mysli. a Kryptografické útoky: vysvětlení pro zmatkující mysli.. Od té chvíle, aby zašifroval jakékoli číslo Kryptografické útoky: vysvětlení pro zmatkující mysli., vypočítá Kryptografické útoky: vysvětlení pro zmatkující mysli.. Například, pokud si Bob vybral Kryptografické útoky: vysvětlení pro zmatkující mysli. a Kryptografické útoky: vysvětlení pro zmatkující mysli., bude číslo Kryptografické útoky: vysvětlení pro zmatkující mysli. zašifrováno jako Kryptografické útoky: vysvětlení pro zmatkující mysli..

Předpokládejme, že 28. prosince si všimneme, že Bob něco škrábe ve svém deníku. Když skončí, nenápadně si jej vezmeme a podíváme se na poslední záznam:

Datum: 235/520

Milý deníku,

Dnes byl hezký den. Za 64 dny mám rande s Alicí, která bydlí v bytě 843. Opravu si myslím, že by mohla být 26!

Protože máme velmi vážný zájem sledovat Boba na jeho rande (v tomto scénáři nám je 15 let), je kriticky důležité zjistit datum i adresu Alice. Naštěstí si uvědomujeme, že kryptosystém Boba je zranitelný vůči útoku interpolace. Možná neznáme Kryptografické útoky: vysvětlení pro zmatkující mysli. a Kryptografické útoky: vysvětlení pro zmatkující mysli., ale známe dnešní datum, takže máme dva páry „otevřený text - zašifrovaný text“. A to konkrétně víme, že Kryptografické útoky: vysvětlení pro zmatkující mysli. se zašifruje do Kryptografické útoky: vysvětlení pro zmatkující mysli., a Kryptografické útoky: vysvětlení pro zmatkující mysli. — v Kryptografické útoky: vysvětlení pro zmatkující mysli.. Což si zapíšeme:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Protože nám je 15 let, už víme o systému dvou rovnic se dvěma neznámými, což v této situaci stačí k nalezení Kryptografické útoky: vysvětlení pro zmatkující mysli. a Kryptografické útoky: vysvětlení pro zmatkující mysli. bez větších problémů. Každá dvojice „otevřený text-šifrovaný text“ klade omezení na klíč Boba, a dvě omezení dohromady stačí k tomu, aby se klíč úplně obnovil. V našem příkladu odpověď Kryptografické útoky: vysvětlení pro zmatkující mysli. a Kryptografické útoky: vysvětlení pro zmatkující mysli. (při Kryptografické útoky: vysvětlení pro zmatkující mysli. Kryptografické útoky: vysvětlení pro zmatkující mysli., takže 26 v deníku odpovídá slovu ‘the one’, tedy „ta pravá“ — pozn. red.

Interpolace útoky samozřejmě nejsou omezeny na tak jednoduché příklady. Každý kryptosystém, který se redukuje na dobře pochopitelný matematický objekt a seznam parametrů, je vystaven riziku interpolace útoku — čím je objekt srozumitelnější, tím vyšší je riziko.

Nováčci často lamentují, že kryptografie je „umění navrhovat co možná nejvíce ošklivé věci“. Pravděpodobně za to mohou útoky interpolace. Bob může buď použít elegantní matematický design, nebo zachovat důvěrnost setkání s Alicí — bohužel obvykle nelze mít obojí. To se stane naprosto jasným, když se nakonec dostaneme k tématu kryptografie s veřejným klíčem.

Křížové protokoly/snížení

Kryptografické útoky: vysvětlení pro zmatkující mysli.Ve filmu „Iluze podvodu“ (2013) se skupina iluzionistů pokouší podvodně vylákat veškerý majetek zkorumpovaného pojišťovacího magnáta Artura Tresslera. Aby se dostali k Arturovu bankovnímu účtu, musí iluzionisté buď představit jeho uživatelské jméno a heslo, nebo ho přimět osobně se objevit v bance a zapojit se do schématu.

Obě možnosti jsou velmi obtížné; kluci jsou zvyklí vystupovat na scéně, nikoli se účastnit operací tajných služeb. Proto si vybírají třetí možnou možnost: jejich společník zavolá do banky a vydává se za Artura. Banka klade několik otázek pro ověření identity, jako například jméno strýce a jméno prvního domácího mazlíčka; naši hrdinové tuto informaci s pomocí obratného sociálního inženýrství snadno získávají od Artura. . Od tohoto okamžiku skvělá bezpečnost hesla už nemá význam.(Podle městské legendy, kterou jsme osobně ověřili a potvrdili, se kryptograf Eli Biham jednou setkal s bankovním pokladníkem, který trval na nastavení tajné otázky. Když se pokladník zeptal na jméno babičky po matce, Biham začal diktovat: „Velké X, malé y, tři…“).

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

Také v kryptografii, pokud se k ochraně jednoho a téhož aktiva paralelně používají dva kryptografické protokoly, z nichž 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 dosáhlo cíle, aniž by byl dotčen silnější.

V některých složitých případech nestačí jen se připojit k serveru přes slabší protokol, ale je zapotřebí nevědomého zapojení legitimního klienta. To lze uspořádat pomocí takzvaného útoku na snížení (downgrade). Pro pochopení tohoto útoku předpokládejme, že naši iluzionisté čelí složitějším úkolům než ve filmu. Předpokládejme, že nastaly nečekané okolnosti mezi pracovníkem banky (pokladníkem) a Arturem, načež proběhl následující dialog:

Útočník: Haló? Tady Artur Tressler. Chtěl bych obnovit své heslo.

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

Útočník: Hej, hej, počkejte, počkejte. Je to opravdu nutné? Nemůžeme prostě mluvit jako normální lidé?

Pokladník: Nedoporučuji to dělat.

Útočník: Jenom... poslouchej, měl jsem špatný den, rozumíš? Jsem VIP klient a nemám náladu se hrabat v těch pitomých kódových knihách.

Pokladník: Dobře. Pokud na tom trváte, pane Tresslere. Co si přejete?

Útočník: Prosím, rád bych převedl všechny své peníze do Národního fondu obětí Artura Tresslera.

(Pauza).

Pokladník: Tak, rozumím. Prosím, uveďte svůj PIN kód pro velké transakce.

Útočník: Můj co?

Pokladník: Na vaši osobní žádost jsou transakce této velikosti vyžadovány s PIN kódem pro velké transakce. Tento kód vám byl vydán při otevření účtu.

Útočník:… Ztratil jsem ho. Je to opravdu nutné? Nemůžete prostě schválit transakci?

Pokladník: Ne. Omlouvám se, pane Tresslere. Opět se jedná o bezpečnostní opatření, o které jste požádal. Pokud chcete, můžeme zaslat nový PIN kód na vaši poštovní adresu.

Naši hrdinové odkládají operaci. Poslouchají několik velkých transakcí Treslera, doufajíce, že uslyší PIN; ale pokaždé se konverzace změní na zašifrovaný žargon, než se tam objeví něco zajímavého. Konečně, jednoho krásného dne uvedou plán do akce. Trpělivě čekají na okamžik, kdy by měl Tresler udělat velkou transakci po telefonu, připojuje se k lince, a pak…

Tresler: Dobrý den. Chtěl bych provést vzdálenou transakci, prosím.

Pokladník: Skvěle. Prosím podívejte se do své osobní knihy tajných kódů, stránka…

(Hacker stiskne tlačítko; hlas pokladníka se promění v nejasný šum).

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

Tresler: Omlouvám se, neslyšel jsem úplně. Znovu prosím? Na které stránce? Jaké slovo?

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

Tresler: Co?

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

Tresler: Vážně! Už dost! Ten váš bezpečnostní protokol je jako nějaký cirkus. Vím, že se mnou můžeš mluvit normálně.

Pokladník: Nedoporučuji…

Tresler: A já ti nedoporučuji plýtvat mým časem. Nechci už o tom slyšet, dokud nevyřešíte problémy se svým telefonním vedením. Můžeme uzavřít tuto transakci nebo ne?

Pokladník:… ano. Dobře. Co si přejete?

Tresler: Chtěl bych převést 20 000 $ na společnost Lord Business Investments, číslo účtu…

Pokladník: Chvilku, prosím. To je velká transakce. Prosím, uveďte svůj PIN pro velké transakce.

Tresler: Co? Ano, jistě. 1234.

Toto je útok na oslabení. Slabší protokol „mluvte jasně“ byl určen jako možnost nouzové řešení. A přesto jsme tady.

Můžete se ptát, kdo by byl v plném rozumu, aby navrhl skutečný systém typu „bezpečně, dokud nepožádáte o opak“, jak je popsáno výše. Ale stejně jako fiktivní banka riskuje, aby si udržela klienty, kteří nemají rádi kryptografii, tak i systémy obecně často ustupují požadavkům, které jsou lhostejné, nebo dokonce otevřeně nepřátelské vůči bezpečnosti.

Takový příběh se stal s protokolem SSLv2 v roce 1995. Americká vláda dlouho zvažovala kryptografii jako zbraň, kterou je lepší držet dál od vnějších a vnitřních nepřátel. Kódové úryvky byly schvalovány k exportu z USA jednotlivě, často s podmínkou záměrného oslabení algoritmu. Firmě Netscape, vývojáři nejpopulárnějšího prohlížeče Netscape Navigator, bylo povoleno použít SSLv2 pouze se zranitelným klíčem RSA 512 bit (a 40 bit pro RC4).

Na konci tisíciletí byla pravidla zmírněna a přístup k moderním šifrováním se stal široce dostupným. Nicméně, klienti a servery po mnoho let podporovali oslabující "exportní" kryptografii kvůli téže inertnosti, která udržuje podporu jakéhokoli zastaralého systému. Klienti se domnívali, že mohou narazit na server, který nepodporuje nic jiného. Servery dělaly totéž. Samozřejmě, že protokol SSL stanoví, ž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 našla uplatnění ve dvou významných útocích, které jeden po druhém otřásly bezpečností protokolu SSL v roce 2015, obě objeveny výzkumníky Microsoft a INRIA. Nejdříve v únoru byly zveřejněny podrobnosti útoku FREAK, a o tři měsíce později další podobný útok nazvaný Logjam, který podrobněji prodiskutujeme, když přejdeme k útokům na kryptografii s veřejnými klíči.

Kryptografické útoky: vysvětlení pro zmatkující mysli.Zranitelnost FREAK (také známý jako „Smack TLS“) se projevil, když výzkumníci analyzovali implementace klient/server TLS a objevili znepokojující chybu. V těchto implementacích, pokud klient ani nežádá o použití slabé exportní kryptografie, ale server i tak odpovídá takovými klíči – klient říká „Dobře“ a přechází na slabou sadu šifrování.

V té době považovali všichni exportní kryptografii za zastaralou a zakázanou pro použití, a tak bylo útokem skutečným šokem, který zasáhl mnoho důležitých domén, včetně webových stránek Bílého domu, amerického daňového úřadu a NSA. Ještě hůře se ukázalo, že mnoho zranitelných serverů optimalizovalo výkon opakovaným použitím stejných klíčů, aniž by pro každý sezení vytvářely nové. To po snížení protokolu také umožnilo útoky pomocí předpočítání: prolomení jednoho klíče zůstávalo relativně drahé (100 dolarů a 12 hodin v době publikace), ale praktická cena útoku na spojení se výrazně snížila. Stačilo jednou uhodnout serverový klíč – a rozlousknout šifry pro všechna další spojení od tohoto okamžiku.

A než se posuneme dál, musíme zmínit jeden pokročilý útok...

Útok orákula

Kryptografické útoky: vysvětlení pro zmatkující mysli.Moxie Marlinspike je nejznámější jako otec křížového platformového kryptomessengeru Signal; ale osobně se nám líbí jeden z jeho méně známých nových nápadů – princip kryptografické prokletosti (Princip kryptografické prokletosti). Řečeno trochu jinak: „Pokud protokol provádí jakoukoli kryptografickou operaci na zprávě z potenciálně škodlivého zdroje a chová se jinak v závislosti na výsledku, je odsouzen.“ Nebo jasněji: „Nesbírej informace od nepřítele na zpracování, a pokud musíš, alespoň nezobrazuj výsledek.“

Omluvíme se od přetečení bufferu, injekcí příkazů a podobně; ty přesahují rámec této diskuse. Porušení „principu prokletosti“ vede k závažným prolomením kryptografie, protože se protokol chová přesně tak, jak má.

K ilustraci vezmeme smyšlenou konstrukci se zranitelným substitučním šifrem a poté demonstrujeme možný útok. Ačkoliv jsme již viděli útok na substituční šifru pomocí frekvenční analýzy, není to jen „jiný způsob, jak prolomit stejný šifru“. Naopak, útoky orákula jsou mnohem modernější vynález, aplikovatelný na řadu situací, kdy frekvenční analýza selhává, a to uvidíme v následující části. Zde je jednoduchý šifr vybrán pouze proto, aby byl příklad srozumitelnější.

Tak, Alisa a Bob si posílají zprávy pomocí jednoduché substituční šifry, přičemž používají klíč, který znají pouze oni. Velmi přísně dodržují délku zpráv: má být přesně 20 znaků. Proto se dohodli, že pokud někdo chce poslat kratší zprávu, musí na její konec přidat nějaký fiktivní text, aby měla přesně 20 znaků. Po určité diskusi se rozhodli, že budou akceptovat pouze následující fiktivní texty: a, bb, ccc, dddd a tak dále. Takto je znám fiktivní text jakékoliv potřebné délky.

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

Během útoku se útočník vydává za Boba a posílá Alisě podvodné zprávy. Zprávy jsou naprosto bezvýznamné — útočník nemá klíč, a proto nemůže vytvořit smysluplnou zprávu. Ale protože protokol porušuje princip bezpodmínečnosti, útočník může přesto Alisu nalákat do pasti, takže odhalí informace o klíči, jak je ukázáno níže.

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

Alisa: Neplatný fiktivní text.

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

Alisa: Neplatný fiktivní text.

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

Alisa: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

Útočník nemá tušení, co právě Alisa řekla, ale zaznamenává, že znak C musí odpovídat a, protože Alisa přijala fiktivní text.

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

Alisa: Neplatný fiktivní text.

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

Alisa: Neplatný fiktivní text.

Po řadě pokusů…

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

Alisa: Neplatný fiktivní text.

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

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

Opět, útočník nemá tušení, co právě Alisa řekla, ale zaznamenává, že H by mělo odpovídat b, protože Alisa přijala fiktivní text.

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

Na první pohled metoda připomíná útok založený na zvoleném otevřeném textu. Koneckonců, útočník vybírá šifrotexty a server je poslušně zpracovává. Hlavní rozdíl, který činí tyto útoky životaschopnými ve skutečném světě, spočívá v tom, že útočník nepotřebuje přístup k faktické dešifrování – stačí odpověď serveru, i tak nevinná, jako „Nesprávný fiktivní text“.

Ačkoli je tento konkrétní útok poučný, není třeba se příliš zaobírat specifiky schématu „fiktivního textu“, konkrétní používanou kryptosystémou nebo přesnou posloupností zpráv, které útočník odesílá. Hlavní myšlenka spočívá v tom, jak Alice reaguje různě na základě vlastností otevřeného textu, a dělá to bez kontroly, že příslušný šifrovaný text byl skutečně získán od důvěryhodné strany. Tímto způsobem umožňuje Alici, aby útočník vymáčkl tajné informace z jejích odpovědí.

V tomto scénáři lze mnohé změnit. Symboly, na které Alice reaguje, nebo samotný rozdíl v jejím chování, nebo dokonce používanou kryptosystému. Ale princip zůstane stejný a útok jako celek zůstane životaschopný v nějaké podobě. Základní realizace tohoto útoku pomohla odhalit několik bezpečnostních chyb, které brzy prozkoumáme; ale dříve by se měla osvojit některá teoretická ponaučení. Jak použít tento vymyšlený „scénář Alice“ v útoku, který by mohl fungovat na reálném moderním šifru? Je to vůbec možné, i teoreticky?

V roce 1998 švýcarský kryptograf Daniel Bleichenbacher odpověděl na tuto otázku kladně. Demonstroval útok oráklu v široce používaném kryptosystému s veřejným klíčem RSA, při použití určitého schématu zpráv. V některých realizacích RSA server odpovídá různými chybovými zprávami v závislosti na tom, zda otevřený text odpovídá schématu nebo ne; to bylo dostatečné k provedení útoku.

Čtyři roky poté, v roce 2002, francouzský kryptograf Serge Vaudenay demonstroval útok na orákulum, téměř identický tomu, který je popsán výše ve scénáři Alice – s tím rozdílem, že místo fiktivního šifrování hacknul celou slušnou třídu moderních šifer, které lidé opravdu používají. Konkrétně se Vaudenayův útok zaměřil na šifry s pevným vstupním rozměrem („blokové šifry“), když jsou používány v tzv. „CBC režimu šifrování“ a s určitou populární schémou vyplňování, která je většinou ekvivalentní té, která je ve scénáři Alice.

Také v roce 2002 americký kryptograf John Kelsey – spoluautor Twofish – navrhl různé útoky na orákulum na systémy, které komprimují zprávy a poté je šifrují. Nejdůležitější z nich byl útok, který využíval to, že je často možné odvodit původní délku otevřeného textu z délky šifrovaného textu. V teorii to umožňuje provést útok na orákulum, který obnovuje části původního otevřeného textu.

Dále uvádíme podrobnější popis útoků Vaudenaye a Kelseye (poskytneme podrobnější popis útoku Bleichenbacha, když přejdeme k útokům na kryptografii s veřejným klíčem). Navzdory veškerému našemu úsilí se text stává poněkud technickým; proto, pokud je výše uvedené pro vás dostatečné, přeskočte následující dvě části.

Vaudenayův útok

Abychom pochopili Vaudenayův útok, je nejprve potřeba podrobněji hovořit o blokových šifrách a režimech šifrování. „Bloková šifra“ je, jak již bylo zmíněno, šifra, která přijímá klíč a vstup určité pevné délky („délka bloku“) a vydává šifrovaný blok stejné délky. Blokové šifry jsou široce používány a považují se za relativně bezpečné. Nyní již neexistující DES, který je považován za první moderní šifru, byl blokový. Jak již bylo zmíněno, to samé platí pro AES, který se dnes široce používá.

Bohužel mající blokové šifry mají jednu zásadní slabinu. Typická velikost bloku je 128 bitů, tedy 16 znaků. Je zřejmé, že moderní kryptografie si žádá, aby mohla pracovat s většími vstupy, a právě zde se objevují režimy šifrování. Šifrovací režim je v podstatě trik: je to způsob, jakým lze použít blokovou šifru, která přijímá vstupy pouze určité velikosti, na vstupy libovolné délky.

Útok Vodene je zaměřen na populární režim CBC (Cipher Block Chaining, režim řetězení bloků šifrovacích dat). Útok bere základní blokovou šifru jako kouzelnou nedobytnou černou skříňku a zcela obchází její bezpečnost.

Zde je diagram, který ukazuje, jak funguje režim CBC:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Kruh znamená operaci XOR (exkluzivní "NEBO"). Například druhý blok šifrovacích dat byl získán:

  1. Provedením operace XOR na druhém bloku otevřeného textu s prvním blokem šifrovacích dat.
  2. Šifrováním získaného bloku pomocí blokové šifry, při použití klíče.

Protože CBC intenzivně využívá binární operaci XOR, pojďme využít tuto příležitost a připomenout si některé její vlastnosti:

  • Idempotence: Kryptografické útoky: vysvětlení pro zmatkující mysli.
  • Komutativnost: Kryptografické útoky: vysvětlení pro zmatkující mysli.
  • Asociativita: Kryptografické útoky: vysvětlení pro zmatkující mysli.
  • Inverzibilita: Kryptografické útoky: vysvětlení pro zmatkující mysli.
  • Po bytech: byte n z Kryptografické útoky: vysvětlení pro zmatkující mysli. = (byte n z Kryptografické útoky: vysvětlení pro zmatkující mysli.) Kryptografické útoky: vysvětlení pro zmatkující mysli. (byte n z Kryptografické útoky: vysvětlení pro zmatkující mysli.)

Obecně tyto vlastnosti znamenají, že pokud máme rovnici zahrnující operace XOR a jedno neznámé, můžeme ji vyřešit. Například, pokud víme, že Kryptografické útoky: vysvětlení pro zmatkující mysli. s neznámým Kryptografické útoky: vysvětlení pro zmatkující mysli. a známými Kryptografické útoky: vysvětlení pro zmatkující mysli. a Kryptografické útoky: vysvětlení pro zmatkující mysli., můžeme se spolehnout na výše uvedené vlastnosti k vyřešení rovnice pro Kryptografické útoky: vysvětlení pro zmatkující mysli.. Aplikováním XOR na obou stranách rovnice s Kryptografické útoky: vysvětlení pro zmatkující mysli., dostaneme Kryptografické útoky: vysvětlení pro zmatkující mysli.. Za chvíli se to všechno stane velmi aktuálním.

Mezi naším scénářem Alice a útokem Vodene jsou dva drobné rozdíly a jedno hlavní odlišnost. Dva drobné rozdíly:

  • Ve scénáři Alice očekávala, že otevřené texty končí znaky a, bb, ccc a tak dále. V útoku Vodene oběť naopak očekává, že otevřené texty končí N-krát byte N (tedy hexadecimálně 01 nebo 02 02, nebo 03 03 03 a tak dále). To je čistě kosmetický rozdíl.
  • Ve scénáři Alice bylo snadné říci, zda Alice přijal zprávu podle odpovědi „Neplatný zkušební text“. V útoku Waterner je zapotřebí větší analýza a je důležitá přesná realizace na straně oběti; ale pro stručnost předpokládejme, že tato analýza je stále možná.

Hlavní rozdíl:

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

Tento hlavní rozdíl je posledním fragmentem skládačky pro pochopení útoku Waterner, takže si na okamžik promysleme, proč a jak by vůbec mohla být organizována útok na orákulum na CBC.

Předpokládejme, že máme šifrovaný text CBC o 247 blocích, a chceme jej dešifrovat. Můžeme serveru posílat falešné zprávy, stejně jak jsme mohli dříve posílat falešné zprávy Alici. Server pro nás zprávy dešifruje, ale nebude ukazovat dešifrování — místo toho, opět jako v případě Alice, server zpráva poskytne pouze jednu bitovou informaci: zda má prostý text platné vyplnění či nikoli.

Vezměte v úvahu, že ve scénáři Alice jsme měli následující vztahy:

$$display$$text{JEDNODUCHÁ_NÁHRADA}(text{šifrovaný text},text{klíč}) = text{prostý text}$$display$$

Nazvěme to „rovnicí Alice“. Kontrolovali jsme šifrovaný text; server (Alice) poskytoval nejasné informace o získaném prostém textu; a to nám umožnilo odvodit informace o posledním faktoru — klíči. Podobně, pokud bychom mohli najít takový vztah pro scénář CBC, mohli bychom tam také získat nějaké tajné informace.

Naštěstí tam skutečně existují vztahy, které můžeme využít. Podívejme se na výstup koncového volání dešifrování blokového šifru a označme tato data jako Kryptografické útoky: vysvětlení pro zmatkující mysli.. Také označme bloky prostého textu Kryptografické útoky: vysvětlení pro zmatkující mysli. a bloky šifrovaného textu Kryptografické útoky: vysvětlení pro zmatkující mysli.. Podívejte se znovu na diagram CBC a všimněte si, co dostáváme:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Nazvěme to „rovnicí CBC“.

Ve scénáři Alice, který kontroluje šifrotext a sleduje únik informací odpovídajících otevřenému textu, jsme dokázali uspořádat útok, který obnovil třetí člen rovnice – klíč. Ve scénáři CBC také kontrolujeme šifrotext a pozorujeme úniky informací k odpovídajícímu otevřenému textu. Pokud analogie platí, mohli bychom získat informace o Kryptografické útoky: vysvětlení pro zmatkující mysli..

Předpokládejme, že jsme opravdu obnovili Kryptografické útoky: vysvětlení pro zmatkující mysli., co potom? No, pak můžeme okamžitě vyhodit celý poslední blok otevřeného textu (Kryptografické útoky: vysvětlení pro zmatkující mysli.), prostě zadáním Kryptografické útoky: vysvětlení pro zmatkující mysli. (který máme) a
získaného Kryptografické útoky: vysvětlení pro zmatkující mysli. v rovnici CBC.

Takže jsme optimističtí ohledně celkového plánu útoku a je čas práce na detailech. Všimněte si, jakým způsobem na serveru dochází k úniku informací o otevřeném textu. Ve scénáři Alice k úniku došlo, když Alice odpovídala správnou zprávou pouze v případě, že $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ končil řetězcem a (nebo bb, a tak dále, ale šance na náhodné splnění těchto podmínek byla velmi malá). Podobně s CBC server akceptuje vyplnění, pokud a pouze pokud Kryptografické útoky: vysvětlení pro zmatkující mysli. končí hexadecimálně. 01Tak zkusíme ten samý trik: posílání falešných šifrotextů s našimi vlastními falešnými hodnotami Kryptografické útoky: vysvětlení pro zmatkující mysli., dokud server nepřijme vyplnění.

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

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Nyní použijeme vlastnost po bytech XOR:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Známé jsou první a třetí člen. A už jsme viděli, že to umožňuje obnovit zbývající člen – poslední byte z Kryptografické útoky: vysvětlení pro zmatkující mysli.:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

To nám také dává poslední byte koncového bloku otevřeného textu přes rovnici CBC a vlastnost po bytech.

Mohli bychom na tom skončit a spokojit se s tím, že jsme provedli útok na teoreticky odolný šifrovací systém. Ale ve skutečnosti můžeme udělat mnohem víc: můžeme skutečně obnovit celý text. To vyžaduje určitý trik, který nebyl v původním scénáři Alice a není součástí povinných podmínek útoku oracle, ale metoda si určitě zaslouží prozkoumání.

Abychom to pochopili, nejprve si všimněte, že výsledkem odvození správné hodnoty posledního byte Kryptografické útoky: vysvětlení pro zmatkující mysli. Máme novou schopnost. Nyní, když podvrhujeme šifrované texty, můžeme řídit poslední byte odpovídajícího otevřeného textu. Opět souvisí s rovnicí CBC a vlastností byte-by-byte:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Jelikož nyní známe druhý člen, můžeme využít naši kontrolu nad prvním k řízení třetího. Jednoduše spočítáme:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

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

Jak nám to pomůže? Předpokládejme, že nyní budeme vytvářet všechny šifrované texty tak, aby poslední byte odpovídajícího otevřeného textu byl roven 02. Nyní server přijímá vyplnění pouze tehdy, pokud otevřený text končí na 02 02. Jelikož jsme opravili poslední byte, k tomu dojde pouze tehdy, když předposlední byte otevřeného textu také bude roven 02. Pokračujeme v odesílání podvržených šifrovaných bloků, měníc předposlední byte, dokud server nepřijme vyplnění pro jeden z nich. V tu chvíli získáváme:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

A obnovujeme předposlední byte Kryptografické útoky: vysvětlení pro zmatkující mysli. stejným způsobem, jakým jsme obnovili poslední. Pokračujeme ve stejném duchu: opravujeme poslední dva byty otevřeného textu na 03 03, opakujeme tento útok pro třetí od konce byte a tak dále, až nakonec úplně obnovíme Kryptografické útoky: vysvětlení pro zmatkující mysli..

Co zbytkem textu? Všimněte si, že hodnota Kryptografické útoky: vysvětlení pro zmatkující mysli. je ve skutečnosti $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$. Můžeme vložit jakýkoli jiný blok místo Kryptografické útoky: vysvětlení pro zmatkující mysli., a útok bude stále úspěšný. Vlastně můžeme požádat server, aby provedl $inline$text{BLOCK_DECRYPT}$inline$ pro jakákoliv data. V tu chvíli je hra u konce – můžeme dešifrovat jakýkoli šifrovaný text (ještě jednou se podívejte na diagram dešifrování CBC, abyste se o tom přesvědčili; a vezměte na vědomí, že IV vektor je veřejně dostupný).

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

Útok Kelseyho

Nám blízký John Kelsey formuloval principy, které leží v základech mnoha možných útoků, ne jen podrobnosti konkrétního útoku na konkrétní šifru. Jeho článek z roku 2002 je výzkum možných útoků na šifrovaná komprimovaná data. Mysleli jste, že k provedení útoku stačí jen málo informací o tom, že data byla komprimována před šifrováním? Ukazuje se, že to stačí.

Tento úžasný 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 jsou si dokonce rovny. Za druhé, když dochází ke kompresi, existuje také silná korelace mezi délkou komprimované zprávy a úrovní "šumovosti" otevřeného textu, tedy poměrem unikátních znaků (technický termín - "velká entropie").

Abychom viděli princip v akci, podívejme se na dva otevřené texty:

Otevřený text 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Otevřený text 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

Představme si, že oba otevřené texty byly komprimovány a poté zašifrovány. Získáte dva výsledné šifrované 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 na skromnou délku druhého šifrovaného textu. Zjistili jsme to aniž bychom znali algoritmus komprese, klíč k šifrování nebo dokonce samotnou šifru. Ve srovnání s hierarchií možných kryptografických útoků je to jakési šílenství.

Kelsey dále uvádí, že za určitých neobvyklých okolností lze tento princip také využít k vedení útoku orákl. Konkrétně popisuje, jak může útočník obnovit tajný otevřený text, pokud může přimět server k šifrování dat formuláře (otevřený text následovaný Kryptografické útoky: vysvětlení pro zmatkující mysli., zatímco kontroluje Kryptografické útoky: vysvětlení pro zmatkující mysli. a může nějak ověřovat délku zašifrovaného výsledku.

Opět, jako v jiných útocích orákl, máme poměr:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Opět kontrolujeme jeden člen (Kryptografické útoky: vysvětlení pro zmatkující mysli.), vidíme malé úniky informací o druhém členu (šifrovaném textu) a snažíme se obnovit ten poslední (otevřený text). Navzdory analogii je to poněkud neobvyklá situace ve srovnání s jinými útoky orákl, které jsme viděli.

Abychom ilustrovali, jak takový útok může fungovat, použijme fiktivní schéma komprese, které jsme právě vymysleli: TOYZIP. Hledá řetězce textu, které se již dříve objevily v textu, a nahrazuje je třemi bajty-vyplněním, které ukazují, kde najít dřívější výskyt řetězce a kolikrát se tam objevuje. Například řetězec helloworldhello může být zkomprimována na helloworld[00][00][05] délka 13 bytů ve srovnání s původními 15 byty.

Předpokládejme, že útočník se snaží obnovit otevřený text formuláře password=..., kde je samotné heslo neznámé. Podle Kelseyho modelu útoku může útočník požádat server, aby zkomprimoval a poté zašifroval zprávy z formuláře (otevřený text následovaný Kryptografické útoky: vysvětlení pro zmatkující mysli.), kde Kryptografické útoky: vysvětlení pro zmatkující mysli. — libovolný text. Když server dokončí zpracování, oznámí délku výsledku. Útok probíhá následujícím způsobem:

Útočník: Prosím zkomprimujte a zašifrujte otevřený text bez jakýchkoli vyplňujících znaků.

Server: Délka výsledku je 14.

Útočník: Prosím zkomprimujte a zašifrujte otevřený text, ke kterému bylo přidáno password=a.

Server: Délka výsledku je 18.

Útočník si poznamenává: [originál 14] + [tři byty, které nahradily password=] + a

Útočník: Prosím zkomprimujte a zašifrujte otevřený text, ke kterému bylo přidáno password=b.

Server: Délka výsledku je 18.

Útočník: Prosím zkomprimujte a zašifrujte otevřený text, ke kterému bylo přidáno password=c.

Server: Délka výsledku je 17.

Útočník si poznamenává: [originál 14] + [tři byty, které nahradily password=c]. To naznačuje, že původní otevřený text obsahuje řetězec password=c. To znamená, že heslo začíná písmenem s

Útočník: Prosím zkomprimujte a zašifrujte otevřený text, ke kterému bylo přidáno password=ca.

Server: Délka výsledku je 18.

Útočník si poznamenává: [originál 14] + [tři byty, které nahradily password=c] + a

Útočník: Prosím zkomprimujte a zašifrujte otevřený text, ke kterému bylo přidáno password=cb.

Server: Délka výsledku je 18.

(… o nějakou dobu později…)

Útočník: Prosím zkomprimujte a zašifrujte otevřený text, ke kterému bylo přidáno password=co.

Server: Délka výsledku je 17.

Útočník si poznamenává: [originál 14] + [tři byty, které nahradily password=co]. Podle stejné logiky útočník vyvozuje, že heslo začíná písmeny co

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

Čtenáři je lze odpustit, že si myslí, že se jedná o čistě akademické cvičení a takový scénář útoku se nikdy neobjeví v reálném světě. Bohužel, jak brzy uvidíme, v kryptografii se nedá brát nic jako samozřejmost.

Značkové zranitelnosti: CRIME, POODLE, DROWN

Nakonec, po podrobném zkoumání teorie, se můžeme podívat, jak jsou tyto metody aplikovány v reálných kryptografických útocích.

CRIME

Kryptografické útoky: vysvětlení pro zmatkující mysli.Pokud je útok zaměřen na prohlížeč a síť oběti, něco bude jednodušší a něco složitější. Například je snadné vidět provoz oběti: stačí sedět s ní v jedné a té samé kavárně se WiFi. Z tohoto důvodu je obvykle doporučeno potenciálním obětem (tj. všem) používat šifrované spojení. Je to složitější, ale stále možné, provádět HTTP požadavky jménem oběti na nějakou třetí stranu (např. Google). Útočník musí nalákat oběť na škodlivou webovou stránku se skriptem, který provede požadavek. Webový prohlížeč automaticky poskytne odpovídající sezení cookie.

To se zdá jako úžasné. Pokud Bob navštívil evil.com, může skript na této stránce jednoduše požádat Google, aby poslal Bobovo heslo e-mailem na attacker@evil.com? Ну, в теории да, но на самом деле нет. Такой сценарий называется атакой на подделку межсайтовых запросов (Cross-Site Request Forgery, CSRF), který byl populární přibližně v polovině 90. let. Dnes, pokud evil.com se někdo pokusí o tento trik, Google (nebo jakákoli respektovaná stránka) obvykle odpoví: „Skvělé, ale váš CSRF token pro tuto transakci bude… hmm… tři biliony a sedm. Prosím, zopakujte toto číslo.“ Moderní prohlížeče aplikují něco, co se nazývá „politika stejného původu“ (same-origin policy), podle které skripty na stránce A nemají přístup k informacím zaslaným webem B. Proto 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é spojení, všechny tyto ochrany jsou bezvýznamné. Útočník může jednoduše číst Bobův provoz a získat jeho reléovou cookie pro Google. S touto cookie jednoduše otevře novou kartu Google, aniž by se odhlásil ze svého prohlížeče, a vydává se za Boba, aniž by se setkal s nepříjemnými politikami same-origin policy. Ale bohužel pro útočníka se to vyskytuje čím dál tím méně. Internet v celku dávno vyhlásil válku nešifrovaným spojení, a výstupní provoz Boba je pravděpodobně šifrován, ať se mu to líbí, nebo ne. Kromě toho, od samého začátku zavedení protokolu byl provoz také komprimován před šifrováním; to byla běžná praxe pro snížení latence.

Zde přichází na řadu CRIME (Compression Ratio Infoleak Made Easy, jednoduchý únik přes kompresní poměr). Zranitelnost, kterou ukázali v září 2012 bezpečnostní výzkumníci Giuliano Rizzo a Thai Duong. Již jsme probrali celou teoretickou základnu, která pomáhá pochopit, co udělali a jak. Útočník může donutit Bobův prohlížeč, aby posílal žádosti do Googlu, a poté odposlouchávat odpovědi v lokální síti ve zkomprimované, šifrované podobě. Proto máme:

Kryptografické útoky: vysvětlení pro zmatkující mysli.

Zde útočník řídí žádost a má přístup k odposlechu provozu, včetně velikosti paketů. Fiktivní scénář Kelsey se stal skutečností.

Chápání teorie vedlo autory CRIME k vytvoření exploitů, které mohou krást relace cookies pro širokou škálu webů, včetně Gmailu, Twitteru, Dropboxu a Githubu. Zranitelnost ovlivnila většinu moderních webových prohlížečů, což mělo za následek vydání oprav, které tiše pohřbily funkci komprese v SSL, aby vůbec nebyla používána. Jediným prohlížečem chráněným před touto zranitelností se stal vážený Internet Explorer, který nikdy nevyužíval kompresi SSL.

POODLE

Kryptografické útoky: vysvětlení pro zmatkující mysli.V říjnu 2014 tým bezpečnosti Google vzbudil pozdvižení v bezpečnostní komunitě. Dokázali zneužít zranitelnost v protokolu SSL, která byla opravena před více než deseti lety.

Ukázalo se, že i když na serverech běží skvělý nový TLSv1.2, mnozí ponechali podporu zastaralého SSLv3 pro zpětnou kompatibilitu s Internet Explorerem 6. O útocích na downgradování jsme již hovořili, takže si dokážete představit, co se dělo. Dobře organizovaný sabotážní útok na protokol handshake - a servery jsou připraveny vrátit se ke starému dobrému SSLv3, ve skutečnosti zrušujíc posledních 15 let výzkumů v oblasti bezpečnosti.

Pro historický kontext, zde 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 na internetu provedete, 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ém 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 děsivá, a [..] to byl produkt poloviny 90. let, který současní kryptografové považují za 'temné věky kryptografie'. Mnoho z nejodpudivějších kryptografických útoků, o kterých dnes víme, ještě nebylo objeveno. Výsledkem bylo, že vývojáři protokolu SSLv2 museli v podstatě tápající hledat cestu ve tmě a narazili na množství strašidelných monster , k jejichž zklamání a našemu prospěchu, protože útoky na SSLv2 zanechaly cenné lekce pro další generaci protokolů.

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

Naštěstí pro hackery, "několik" neznamená "všechny". Celkově SSLv3 poskytovalo všechny potřebné stavební bloky pro provedení útoku Vödené. Protokol používal blokovou šifru v režimu CBC a nebezpečný způsob doplňování (což bylo opraveno v TLS; proto vznikla potřeba útoku na snížení). Pokud si vzpomínáte na způsob doplňování v našem původním popisu útoku Vödené, způsob SSLv3 je velmi podobný.

Ale, bohužel pro hackery, "podobný" neznamená "identický". Způsob doplňování SSLv3 má podobu "N libovolných bajtů, za kterými následuje číslo N". Zkuste v takových podmínkách vybrat vymyšlený blok zašifrovaného textu a projít všemi kroky původního způsobu Vödené: zjistíte, že útok úspěšně extrahuje poslední bajt odpovídajícího bloku otevřeného textu, ale dál už nepokračuje. Dekódování každého 16. bajtu zašifrovaného textu je skvělý trik, ale to není vítězství.

Když se tvářili neúspěchu, tým Google sáhnul po krajním řešení: přešli na silnější model hrozby — ten, který byl použit v CRIME. Pokud předpokládáme, že útočník je skript spuštěný na kartě prohlížeče oběti, a může získat session cookies, útok zůstává působivý. Ačkoli širší model hrozby je méně realistický, v předchozí části jsme již viděli, že tento konkrétní model je proveditelný.

S ohledem na takové mocnější schopnosti útočníka může nyní útok pokračovat. Mějte na paměti, že útočník ví, kde se v záhlaví zobrazuje zašifrovaný soubor cookie sezení, a ovládá délku předchozího HTTP požadavku. Proto může manipulovat s HTTP požadavkem tak, aby vyrovnal poslední bajt cookie s koncem bloku. Nyní je tento bajt vhodný pro dešifrování. Můžete jednoduše přidat jeden znak k požadavku, zatímco předposlední bajt cookie zůstane na stejném místě a je použitelný pro stejnou metodu. Útok pokračuje tímto způsobem, dokud není soubor cookie zcela obnoven. Tomu se říká POODLE: Padding Oracle on Downgraded Legacy Encryption.

DROWN

Kryptografické útoky: vysvětlení pro zmatkující mysli.Jak jsme již zmínili, SSLv3 měl nedostatky, ale byl radikálně odlišný od svého předchůdce, protože děravý SSLv2 byl produktem jiné éry. Tam bylo možné přerušit zprávu uprostřed: na to souhlasím pouze přes můj mrtvolu převádělo se na souhlasím na to; klient a server se mohli setkat na internetu, vybudovat důvěru a vyměnit si tajemství před očima útočníka, který se pak snadno vydával za jednoho či druhého. Ještě k tomu problém s exportní kryptografií, který jsme zmínili při zkoumání FREAK. To byla kryptografická Sodoma a Gomora.

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

Zeptáte se, co nám je do toho, co tam dělají? Mají zranitelné sezení, ale to by nemělo ovlivnit ostatní sezení nebo bezpečnost serveru - že? No, ne úplně. Ano, teoreticky by to mělo být takto. Ale ne - protože generování certifikátů SSL klade určitou zátěž, což vede k tomu, že mnohé servery používají stejné certifikáty a v důsledku toho i stejné klíče RSA pro připojení TLS a SSLv2. Co je ještě horší, kvůli chybě OpenSSL v této populární implementaci SSL vlastně nefungovala volba 'Deaktivovat SSLv2'.

To umožnilo křížový útok na TLS, známý jako DROWN (Decrypting RSA with Obsolete and Weakened eNcryption, dešifrování RSA s zastaralým a oslabeným šifrováním). Připomeňme, že to není totéž jako útok na snížení; útočník nemusí jednat jako „člověk uprostřed“ a nepotřebuje zapojit klienta do nebezpečné seance. Útočníci jednoduše sami zahájí nebezpečnou seanci SSLv2 se serverem, zaútočí na slabý protokol a obnoví uzavřený serverový klíč RSA. Tento klíč je také platný pro TLS spojení, a od této chvíle žádné zabezpečení TLS ho nezachrání před útokem.

Ale pro útok je potřeba funkční útok proti SSLv2, který umožňuje obnovit nejen konkrétní provoz, ale i tajný serverový klíč RSA. Ačkoli je to složité, výzkumníci mohli vybrat jakoukoli zranitelnost, která byla úplně uzavřena po SSLv2. Nakonec našli vhodnou variantu: útok Bleichenbachera, o kterém jsme již dříve zmínili a který podrobně vysvětlíme v následujícím článku. SSL a TLS jsou proti tomuto útoku chráněny, ale některé náhodné funkce SSL v kombinaci s krátkými klíči v exportní třídě kryptografie umožnily určitou implementaci DROWN..

V době zveřejnění byly zranitelnosti DROWN vystaveny 25 % nejvýznamnějších webových stránek na internetu, a útok mohl být proveden s skromnými zdroji dostupnými i pro nešťastné jednotlivé hackery. K získání klíče RSA serveru bylo zapotřebí osm hodin výpočtů a $440, a SSLv2 změnilo svůj status z „zastaralého“ na „radioaktivní“.

Počkejte, a co Heartbleed?

To není kryptografický útok v tom smyslu, jak byly popsány výše; je to přetečení bufferu.

Uděláme si přestávku.

Začali jsme s některými základními metodami: hrubá síla, interpolace, snížení, křížový protokol a předpočítání. Pak jsme se podívali na jednu pokročilou techniku, možná hlavní komponentu moderních kryptografických útoků: útok orákula. Docela dlouho jsme se jí zabývali — a pochopili nejen princip v pozadí, ale i technické detaily dvou konkrétních implementací: útok Vodena na režim šifrování CBC a útok Kelsi na protokoly šifrování s předběžným kompresím.

Při přehledu útoků na oslabení a s předběžnými výpočty jsme stručně shrnuli útok FREAK, který využívá oba metody, protože cílové weby ustupují k slabým klíčům a poté znovu používají tatáž klíče. Pro následující článek jsme ponechali (velmi podobný) útok Logjam, který cílí na algoritmy s veřejným klíčem.

Následně jsme prozkoumali 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 vkládat libovolný otevřený text vedle cílového otevřeného textu, poté studovat odpovědi serveru a poté, využívající metodologii útoku orákula, použít tyto vzácné informace k částečnému obnovení otevřeného textu. CRIME se vydalo cestou útoku Kelseyho na kompresi SSL, zatímco POODLE místo toho využilo variantu útoku Vaudenay na CBC se stejným efektem.

Následně jsme se zaměřili na mezi-protokolový útok DROWN, který navazuje spojení se serverem prostřednictvím zastaralého protokolu SSLv2 a pak obnovuje tajné serverové klíče pomocí útoku Bleichenbacha. V tuto chvíli jsme vynechali technické detaily tohoto útoku; stejně jako Logjam, i jemu bude muset počkat, dokud důkladně prozkoumáme kryptosystémy s veřejným klíčem a jejich zranitelnosti.

V dalším článku se budeme zabývat pokročilými útoky — jako je metoda setkání uprostřed (meet-in-the-middle), diferenciální kryptanalýza a útok "narozenin". Krátce se podíváme na útoky přes vedlejší kanály a poté se pustíme do nejzajímavějších témat — kryptosystémů s veřejným klíčem.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster