Krypta.cz - Magazín o informační bezpečnosti
Podle způsobu provedení můžeme rozdělit útoky na algoritmus do několika druhů :
Útok bez známého originálu, (anglicky Ciphertext-only attack), v praxi nejpotřebnější druh útoku, spočívá v nalezení nezašifrované zprávy korespondující se známou zprávou zašifrovanou. Kryptoanalytik zná tedy změť znaků a algoritmus, přičemž se po něm chce, aby našel nezašifrovaný originál, tj. plaintext. Vedle toho útok se známým originálem, (Known plaintext attack), spočívá v nalezení klíče jako "spojku" mezi známým nezašifrovaným originálem a známým zašifrovaným protějškem. Používá se v případě, že předpokládáme existenci více zpráv nebo částí textu zašifrovaných stejným heslem; počítá se, že získaným heslem se poté dešifruje zbylá komunikace. V rámci útoku se známým originálem se také velmi často odlišuje Útok s vybraným originálem (Chosen plaintext attack), což je něco podobného, ovšem s tím rozdílem, že strana snažící se zprávu dešifrovat nezíská originál k jednomu určitému zašifrovanému textu, ale nějakým způsobem "donutí" druhou stranu zašifrovat jakékoliv množství dat. Znamená to tedy, že si může originál a korespondující zašifrovaný text vybrat a nemusí útok provádět podle toho, co má k dispozici. Dobře se to představuje jako černá skřínka, do které se strkají z jedné strany texty a z druhé vypadávají zašifrované depeše. Kryptoanalytik zná algoritmus, ale ne heslo.
Speciálně v souvislosti s Chosen plaintext attackem se často objevuje pojem Timing attack, nejlepší český ekvivalent by asi byl "útok na základě prodlevy". Přestože jde spíše o útok na konkrétní implementaci, neměl by být opomíjen. Princip sám o sobě je relativně jednoduchý : v případě, že se na šifrovacím klíči závisí počet nějakých operací, můžeme po "prohnání" dostatečného množství dat výše zmiňovanou černou skříňkou usoudit něco o hesle. Přidání náhodné prodlevy na začátek nebo konec algoritmu nepomůže, neboť při velkém objemu si spočítám střední hodnotu a jsem na tom úplně stejně. Záměrně píši něco, protože detaily jsou daleko složitější a převyšují rámec tohoto článku. Navíc bychom se museli bavit o konkrétních algoritmech.
Kvalitní algoritmus musí být odolný proti všem třem druhům útoku.
Prvně jmenovaný útok se může zdát nejčastější, ale pokud alespoň přibližně známe charakter zprávy, můžeme daleko efektivněji využít útok druhý. Skoro každý soubor má totiž svojí hlavičku, která se pohybuje od dvou do pěti bytů, a to už by nám mohlo pomoci. Takový dokument psaný ve Wordu má hlavičku jistě daleko větší, navíc nemusí jít jen o ni. Momentálně mě napadjí grafické formáty, například každý obrázek ve formátu BMP má v sobě bez hlavičky v definici barevné palety 256 rezervovaných bytů, nejčastěji nastavených na nulu. Takže celkový postup bude takový, že nejprve odhadneme, kterou sekvenci známe, provedeme na ní known plaintext attack a se zjištěným heslem dešifrujeme zbytek dokumentu. Stejně dobře jako hlavičku můžeme použít cokoliv, o čem předpokládáme, že se v dokumentu vyskytuje. Znalost podpisu na konci, zvláště pokud jde o popis-nepodpis generovaný poštovním programem, je také užitečná věc. Pokud odpovídáte na e-mail, váš poštovní program nejspíš na začátek přihodí něco jako ---Original message follows---. Pokud používáte extra slabou šifru (prostý XOR apod…), toto útočníkovi stačí na dešifrování celého dopisu. Silný algoritmus, tedy ten, který jedině se vyplatí používat, by měl být odolný proti všem třem druhům útoku.
Četli jste Vernovku Osm tisíc mil po Amazonce? Román začíná dvaceti řádky šifry, následuje děj a úplně na konci dojde k rozluštění zprávy tak, že se vypátrá pisatelovo jméno a na poslední znaky zprávy (podpis) se v principu použije known plaintext attack…
Brute force, neboli útok hrubou silou
Útok hrubou silu představuje prosté vyzkoušení všech možností. Jedná se obvykle o útok se známým originálem, tedy alespoň k části zašifrovaného textu je potřeba znát kus originálu (podle toho dešifrovací program totiž pozná, že se právě strefil do správného klíče...). Odolnost proti tomuto způsobu útoku je přímo spjatá s délkou klíče.
Nejsměrodatnější bude, pokud se dovíme kolik kombinací může někdo zkusit při určitém peněžním vkladu za určitý čas. Při těchto úvahách musíme mít na zřeteli především následující fakta:
1. Šifrujeme pro to, aby si nikdo nečetl naše zprávy nejen dnes nebo zítra, ale taky za jeden, dva pět, deset nebo padesát let, což znamená vzít v úvahu nárůst výkonu počítačů. Ten má exponenciální charakter a meziroční nárůst se podle různých zdrojů pohybuje od 160 do 180 procent za rok. Pro jednoduchost budeme počítat, že za každých pět let vzroste výkon počítačů desetkrát, což tak přibližně odpovídá výše uváděným hodnotám.
2. Čeho bude při útoku použito. Nabízejí se dvě možnosti : hardware a software. Každá z nich má svoje výhody a nevýhody. Pokud použijeme hardware, k samotnému zkoušení budou použity optimalizované čipy. Pokud je nějaká věc na něco optimalizovaná, znamená to, že je svému účelu šitá jaksi na míru a že se jejím použitím získá obecně nejlepších možných výsledků. Tuto možnost si ovšem nemůže dovolit jen tak každý a ne vždy se to vyplatí. Nejznámější hardware na útok hrubou silou je kdysi tolik démonizovaný DES Cracker. Obecně crackovací čipy jsou malá elektronická zařízení vyrobená nejen pouze na dešifrování šifer, ale taky přímo na míru algoritmu, který se budeme pokoušet prolomit. Vyzkoušení určitého počtu možností trvá hardwarovými prostředky až desettisíckrát kratší dobu.
Softwarové "bruteforcování" probíhá obvykle na normálních domácích počítačích, proto se v tabulkách nejčastěji uvádí závislost dešifrovacího času na délce klíče při počítání na nějakém aktuálním stroji, dnes řekněme Pentium III 800 MHz. Výhody jsou zřejmé: dešifrovat může naprosto každý doma, navíc se dá výpočet synchronizovat po Internetu a tak můžou na jedné šifře pracovat tisíce lidí najednou, stačí mít připojení k Internetu a nainstalovat si speciální program. Touto metodou celý svět onoho času dokazoval americké vládě nesmyslnost omezení šifer na 56 bitů.
Zde se objevuje ještě jeden zajímavý aspekt, vlastně je to přímý důsledek technického pokroku v oblasti výpočetní techniky. Představme si na chvíli, že chceme provést nějaký náročný výpočet, pro změnu třeba vyzkoušet miliardu miliard možností šifrovacích klíčů. Možná se domníváte, že platí čím dříve začneme, tím dříve skončíme. Ale pozor. Už víme že za pět let budou počítače desetkrát rychlejší, a proto se ukazuje že není nejlepší začínat s výpočtem hned ale je výhodné naopak nějakou dobu počkat. Samozřejmě to nesmí být zase moc dlouho, protože pak by jsme měli sice vlastní výpočet hned, ale na dobu, kdy budeme až tak technologicky vyspělí by jsme čekali velmi dlouho. Nejideálnější by bylo upgradovat výpočetní techniku přímo v průběhu výpočtu - to by nám samozřejmě zajistilo nejrychlejší možný výpočet a tyto úvahy by přestávaly mít smysl.
Když se bavíme o útoku hrubou silou, není úplně od věci znát určité konstanty, resp. jejich dekadické logaritmy (tj. počet číslic). Dekadický logaritmus čísla 2, log(2) se přibližně rovná hodnotě 0,3, tedy 2n má přibližně n*0,3 desetinných míst. Keyspace 128 bitové šifry má tedy v dekadickém zápisu 38 číslic. Kdybychom měli miliardu dnešních počítačů, které by dešifrovali takovouto šifru, každý rychlostí miliardu operací za sekundu, trvalo by to stále déle než existuje vesmír. V případě, že si brute-force nemůžeme z nějakého důvodu dovolit, můžeme zkusit tzv. Dictionary attack, (slovníkový útok), který spočívá ve vyzkoušení dlouhého seznamu slov jako hesla. Na internetu jsou k dispozici dešifrovací slovníky ve velikostech řádově od stovek kilobytů po desítky magabytu.
Jednorázový blok
Zde je důležité říci, že jednorázový blok není šifra v podobě algoritmu, vlastní transformace může probíhat jakkoliv. Jednorázový blok je soubor vlastností, které musí šifrovací proces mít, aby byla šifra nerozluštitelná. Na počítání se pravda nejčastěji používá xor, protože je nejjednodušší a dešifruje se stejným způsobem jako šifruje, ale principielně nic nebrání v použití jakékoliv jiné funkce. Důležité věci jsou, že délka zprávy nesmí přesahovat délku klíče a že jeden klíč bude použit maximálně jednou. Tyto vlastnosti jsou nutnou a postačující podmínkou k tomu, aby byl brute force neúspěšný. Představte si že chcete někomu poslat nějakou tajnou zprávu. Pro zjednodušení nějaké celé číslo v rozmezí 0 až 99 včetně. Aby byla šifra naprosto bezpečná, zvolíte jako heslo opět jakékoliv celé v tom samém rozmezí. Nyní přijde vlastní šifrovací-transformační algoritmus : ke zprávě přičtete heslo a vezmete zbytek po dělení stem, tj. v našem případě odmažete první číslici. Tedy pokud vaše zpráva byla 87 a heslo 39, výsledek bude 26. Výsledkem je tedy zašifrované číslo. Nyní se vžijme do role Evy, která zná algoritmus a tento výsledek získala z Vaší e-mailové schránky. Snaží se zjistit originální nezašifrovaný text (číslo). Zkusí útok hrubou silou…a ouha. Vyzkoušela všech sto možností a dostala sto čísel. Jedno jako druhé. Neexistuje totiž možnost jak přijít na to, který klíč je ten pravý, což je způsobeno právě tím, že heslo je stejně dlouhé jako zpráva. Kdyby Eva chtěla, může si k určité zprávě domyslet heslo, aby jí vyšel výsledek dešifrování takový jaký chce, což je pravda poněkud absurdní. Podmínka jen jednoho použití hesla je obrana proti útoku se známým originálem v případě zkompromitování originálu. Také musíte zaručit aby heslo bylo skutečně naprosto náhodné, ne pouze pseudonáhodné. Pokud by to neplatilo, tak se keyspace (maximální množství klíčů které se musí hrubou silou vyzkoušet) redukuje na počet všech možných stavu automatu, který tyto náhodná čísla generuje. Proslýchá se, že horká linka mezi Washingtonem a Moskvou byla zašifrována pomocí jednorázového bloku.