# Kryptoanalýza klasických šifer

### Ústav telekomunikací, FEKT VUT Brno

## Luštění

Kryptoanalytik se vždy na počátku snaží odhalit, jaký šifrovací sytém byl použit. Tato fáze se nazývá identifikace. Použije k tomu nejen nástroje jako je třeba index koincidence, ale také veškeré dostupné informace o autorovi šifry (jaké šifry použí val v minulosti atd.). V případě, že je zachycená zpráva příliš krátká, těžko se na ni uplatní statistické testy - je tedy třeba získat nějakou další.

Nejobtížnější fází luštění je prolomení. Jednoduché šifrovací systémy, jimiž se zabývá tato páce, se obvykle dají prolomit ručně. Moderní šifrovací metody jsou dnes již natolik výpočetně složité, že se luštitel neobejde bez techniky. I tak může prolomení trvat týdny, měsíce a nebo k němu nemusí vůbec dojít.

Pro luštění šifrového textu lze využít několika různých metod, v závislosti na možnostech, kterými kryptoanalytik disponuje.

- Luštění na základě znalosti šifrového textu Pokud má kryptoanalytik k dispozici více šifrových textů zašifrovaných stejným systémem, může se pokusit odvodit na základě luštění klíč, nebo přímo rozluštit tyto zprávy. Tato situace nastává nejčastěji, ale je také nejobtížnější.

- Luštění na základě znalosti otevřeného textu V případě, že má kryptoanalytik k dispozici jak šifrový text, tak jeho otevřenou předlohu, může se pokusit o odhalení klíče, případně šifrovacího algoritmu.

- Útok hrubou silou V tomto případě přichází obvykle na řadu výpočetní technika. Kryptoanalytik zkoumá všechny možnosti šifrování textu a vyhodnocuje, jestli byl nalezen ten správný. Ne vždy se však všechny možnosti dají otestovat v reálném čase, takže tento postup zůstává sice teoreticky, nikoliv však vždy prakticky možný.

- Útok postranními kanály Tímto způsobem se kryptoanalytik obvykle snaží získat klíč nebo přímo otevřený text. Informace mohou unikat pomocí elektromagnetického vyzařování, měřením spotřeby proudu a času apod.

- Korupční kryptoanalýza V případě korupční kryptoanalýzy dojde k úniku informac í (klíčů, algoritmů, otevřeného textu...) na základě selhání lidského faktoru - to znamená, že díky podplácení, krádežím atd. má kryptoanalytik k dispozici potřebné údaje, na jejichž základě rozluští šifrový text.

Výše popsané metody luštění lze ještě jemněji dělit podle určitých kritérií, pro prvotní přiblížení je však tento výčet dostatečný. Následující text popisuje postup při luštění šifer na základě znalosti šifrového textu.

Následující obrázek demonstruje možný obecný postup při luštění klasických šifer.

Nejprve je třeba vypočítat index koincidence upraveného šifrového textu (tj. zbaven ého mezer). Pomocí něj se provede prvotní odhad typu šifry, případně jazyka otevřeného textu. V případě monoalfabetické substituce a jednoduché transpozice se dále provede srovnání četnosti výskytu jednotlivých znaků šifrového textu a očekávaného jazyka otevřeného textu. Pokud je četnost znaků šifrov ého textu a předpokládaného jazyka otevřeného textu stejná, zřejmě se bude jednat o transpozici - v opačném případě o substituci.

V případě polyalfabetické šifry je třeba určit délku šifrovacího klíče - podle něj se provede rozdělení na šifru Vigénere nebo Vernamovu šifru (která je obecně nerozlu štitelná).

Luštění monoalfabetické substituce

Vzhledem k tomu, že pro abecedu o velikosti 26 znaků existuje cca 4.10 26 možností, ani pro současnou výpočetní techniku není reálné vyzkoušet je všechny v rozumném čase. Jednoduchá záměna je charakteristická některými statistickými rysy. V případě, že luštitel určí (např. za pomocí indexu koincidence), že daná šifra je pravděpodobně jednoduchou záměnou, lze pro získání otevřeného textu využít metodu frekvenční analýzy.

Samotná monoalfabetická substituce se rozpadá na několik poddruhů. Počátek luštění je pro všechny stejný (kryptoanalytik neví, která z šifer byla použita): nejprve je třeba určit frekvenci výskytu jednotlivých hlásek šifrové abecedy (to již pravděpodobně bylo učiněno při rozpoznávání typu šifry). Dále se vyberou nejčetnější znaky šifrového textu a mapují se na nejčetnější znaky očekávané abecedy otevřeného textu. Vzhledem k tomu, že v českém jazyce je nejčetnějším písmenem e, ve většině případů se začíná právě s ním. Čím více písmen se na základě četnosti výskytu podaří namapovat, tím snazší je pokračování luštění - při dostatečně dlouhém textu je možno obvykle namapovat 5 nejčetnějších (e, a, o, i, n) a 5 nejméně četných písmen (q, w, x, f, g).

Pro luštění jednoduché substituce je samozřejmě nutné mít dostatečně dlouhý text - obvykle by měl mít alespoň 200 znaků, jako úplné minimum (které však nemusí mít jednoznačné řešení) se považuje text o délce 50 znaků.

- Jednoduchý posun: dále se luštitel může pokusit vyjádřit rozdíl pozic písmen šifrové a nové namapované abecedy. V případě, že je původní text zašifrován substitucí s jednoduchým posunem, u správně namapovaných znaků se tento rozdíl projeví právě jako parametr posunu. Čím více znaků se luštitel pokusí namapovat, tím pravděpodobněji správně určí parametr posunu (tzn. pokud je např. suverénně nejčastějším písmene v šifrové abecedě - s četností přes 10% - písmeno n, zřejmě bude odpovídat písmenu e v otevřené abecedě, a rozdíl mezi indexy těchto písmen je 9 - to je zmiňovaný parametr posunu).

- Euklidův algoritmus: pokud metoda vyjádření rozdílu selže, je možno použít algoritmus pro luštění afinní šifry. Pro dešifrování lze použít tuto formuli:

  kde a' je tzv. mutiplikativní inverze a v Z 26 a

  To ale platí pouze tehdy, když největší společný dělitel nsd(a; 26) = 1 (pro abecedu o 26ti znacích; v opačném případe nelze O vyjádřit jako funkci S - jednomu znaku šifrové abecedy by odpovídalo více znaků abecedy otevřeného textu, tzn. šifrový text nelze jednoznačně dešifrovat). Největší společný dělitel dvou čísel se dá vypočítat např. pomocí Euklidova algoritmu.

  Modulární multiplikativní inverzi čísla a v Z26 lze vyjádřit jako

  což je ekvivalentní s

  Jak již bylo řečeno, tato inverze existuje pouze v případě, že nsd(a; 26) = 1. Konkrétní příklad výpočtu multiplikativní inverze:

  tedy

  Nejmenším x, které řeší tuto rovnici, je 9 (protože (3.9) mod 26 = 1). Rovnici řeší také čísla 35, 61 - zkráceně množina všech čísel {9 + n.26}, kde n je přirozené číslo. Tato inverze se dá mj. vypočítat pomocí rozšířeného Euklidova algoritmu.

  Luštitel stojí před úkolem odhadnout parametry a-1 a b. Postup je následující: nejprve je třeba pomocí pravidel frekvenční analýzy namapovat alespoň 2 písmena šifrové abecedy na původní abecedu otevřenou (obvykle se začíná nejčetnějšími písmeny - e, a, o). Pomocí nich se sestaví soustava dvou rovnic o dvou neznámých pro šifrování:

  kde

  o1, o2 jsou písmena otevřeného textu, s1, s2 odpovídající písmena šifrového textu. Pomocí ekvivalentních úprav (obvykle sčítání a odčítání) je třeba z rovnic vyjádřit a, např. odečtením:

  kde (o2 - o1)-1 je již výše zmíněná multiplikativní inverze. Výsledné a se dosadí do libovolné ze dvou původních rovnic, čímž se vyjádří druhý parametr b. V tuto chvíli jsou již známy parametry šifrového systému a je možno zašifrovaný text dešifrovat pomocí rovnice 2.7.

- Ostatní systémy: v případě, že se nepodařilo rozluštit jednoduchou substituci jako posun ani jako afinní šifru, luštiteli nezbývá než se snažit ručně mapovat co nejvíce písmen šifrové abecedy na abecedu otevřenou, přičemž k tomu využívá poznatky popsané v kapitole o frekvenční analýze.

Luštění polyalfabetické substituce

Prvním úkolem při luštění tohoto typu šifry je určení délky klíče. Má-li kryptoanalytik k dispozici dostatečně dlouhý text, začne v něm hledat opakující se polygramy (čím delší, tím lepší, začíná se obvykle na bigramech). Pokud jejich výskyt není náhodný a odpovídá stejnému otevřenému textu, musí být vzdálenost těchto polygramů rovna násobku délky klíče. Pro jednotlivé opakující se polygramy se určí jejich vzdálenost. Skutečná délka klíče pak bude s největší pravděpodobností nejv ětším společným dělitelem těchto vzdáleností. Při tomto postupu je třeba mít na vědomí, že opakované bigramy mohou v šifrovém textu vzniknout i náhodně, a ne všechny vzdálenosti opakovaných bigramů musí být násobkem délky klíče (delších polygramů se to v drtivé většině případů netýká).

V tuto chvíli již je známá délka klíče, zbývá určit jeho podobu. Myšlenka spočívá v tom, že v šifrovém textu se pravidelně opakují skupiny znaků (s periodou délky hesla), které jsou zašifrovány jednoduchým posunem. Parametrem posunu je písmeno hesla (resp. jeho index v abecedě). To znamená, že pro délku klíče x bude posunutí o x1 aplikováno na skupiny znaků s indexem polohy v textu {1, x+1, 2x+1.. } atd., posunutí o x2 bude aplikováno na skupiny znaků s pořadovým číslem {2, x+2, 2x+2} atd. - přičemž x1 značí posun o tolik pozic, kolik je pořadí v abecedě prvního písmena klíče, x2 je posun o tolik pozic, kolik je pořadí druhého písmena klíče atd. Tedy x1, x2, x3... odpovídají parametrům jednoduchých posunů. Tento fakt je vysvětlen na následujícím příkladě:

třípísmenným klíčem sen je zašifrovaný text diplomová práce - výsledkem je řetězec vmcds zgznh vnui. Z toho vyplývá, že písmena otevřeného textu d, l, o, p, c jsou posunuta o stejný parametr (konkrétně o 18, což je pozice prvního písmena klíče). Dále písmena i, o, v, r, e jsou posunuta o 4 a zbylá písmena o 13. Šifrový text se nám tedy rozdělil do tří skupin (obecně do tolika, kolik znaků obsahuje klíč). Každá tato skupina je charakteristická konkrétním posunem - dá se tedy na ní nahlížet jako na monoalfabetickou šifru s jednoduchým posunem (v podstatě je to varianta Ceasarovy šifry, pouze parametr posunu nemusí být roven třem). Postup luštění takové šifry je přiblížen zde. Dokonce je o něco jednodušší - protože se jedná o posun, stačí správně určit jeden znak otevřeného textu. Další už se potom zjistí aplikací posunu - pro kontrolu se obvykle srovnává, zda frekvence znaků otevřeného textu přibližně odpovídá. Tímto způsobem se tedy vyluští každá skupina zvlášť, přičemž je také zjištěno heslo.

Výše popsaná metoda se nazývá Kasiského metoda. Je pojmenovaná podle pruského důstojníka Fridricha W. Kasiského, který ji zavedl již roku 1863. Za pomoci této metody luštění je možné prolomit text o délce 50 krát délka klíče (a to v případě, že je znám pouze šifrový text). Pokud kryptoanalytik zná zároveň i otevřený text, k určení klíče mu stačí text o délce dvou klíčů.

Pro zjištění velikosti klíče se dá také použít (průměrný) index koincidence. Při použití polyalfabetické šifry se text rozpadá do několika skupin (tolika, kolik je délka klíče). Každá taková skupina má přibližně stejný index koincidence, jako je IC jazyka otevřeného textu (důvod je prostý - jedná se vlastně o monoalfabetickou šifru, jejíž IC odpovídá IC otevřeného textu). Aritmetický průměr všech IC jednotlivých skupin se tak právě blíží IC použitého jazyka. Zná-li útočník jazyk otevřeného textu, stačí vyzkoušet všechny pravděpodobné možnosti velikosti klíče a pro každou z nich spočítat průměry jednotlivých indexů koincidence. Klíč bude mít nejpravděpodobněji takovou délku, pro kterou se průměrný IC nejvíce blíží IC jazyka otevřeného textu.

Variantně se však můžeme pokusit o hrubý odhad délky klíče za pomocí očekávané hodnoty IC:

kde L je délka šifrového textu, t je délka klíče, kappa(p) a

kappa(r) hodnoty z tabulky 2.9. Pro jednotlivé periody (t = 1,2. . .20,. . .50. .) dosazujeme do vzorce (2.15) a výsledek porovnáváme s hodnotou IC šifrového textu vypočítaného dle vzorce (2.3). Hodnota t, pro kterou se E(IC) nejvíce blíží IC šifrového textu, přibližně odpovídá délce klíče.

Luštění jednoduché transpozice

V případě, že luštitel pomocí indexu koincidence a statistického rozložení znaků určí, že šifrový text byl vytvořen pomocí jednoduché transpozice, dalším krokem je odhadnutí rozměrů původní tabulky.

Šifra obvykle vypadá jako běžný text - řádky s mezerami, rozdělené na slova atd. Nejprve je třeba tento text zbavit mezer (šifrový text OAOED VMCPP LRIA bude po úpravě vypadat OAOEDVMCPPLRIA). Následně se spočítají všechny znaky textu. Tento počet (v tomto případě 14) se rozloží na součin prvočísel, ze kterých se poté odhaduje rozměr šifrové tabulky. Číslo 14 lze rozložit pouze dvěma možnostmi: 1x14 a 2x7. Více pravděpodobná se jeví být varianta 2x7, v prvním případě by délka permutačního klíče byla rovna jedné, a to je poměrně netypická varianta (tuto možnost sice nelze zcela vyloučit, ale s ohledem na pravděpodobnost se obvykle analyzuje až jako druhá v pořadí).

Pro lepší ilustraci ještě jeden příklad: šifrový text o délce 60 znaků se dá rozložit na prvočíselný součin: 60 = 2 x 2 x 3 x 5. V úvahu tedy připadají tabulky 1 x 60, 60 x 1, 2 x 30, 30 x 2, 3 x 20, 20 x 3, 4 x 15, 15 x 4, 5 x 12, 12 x 5, 6 x 10, 10 x 6, celkem tedy 12 variant. Některé z nich se však dají rovnou vyloučit (nebo alespoň odsunout na pozdější testování pro případ, že by jiné varianty neuspěly) - a to 1 x 60, 2 x 30, 3 x 20, 4 x 15. Permutační klíč je totiž u těchto tabulek poměrně krátký a lze předpokládat, že autor šifrového textu použil delší, bezpečnější klíč. Naopak varianty 60 x 1 a 30 x 2 jsou velmi netypické - první z nich by znamenala permutační klíč o stejné délce, jako je samotný otevřený text. Těmito úvahami lze vyloučit hned polovinu možných rozměrů tabulek.

Zachycený šifrový text se dále vepisuje po sloupcích do jednotlivých tabulek. Jako další pomůcka může sloužit jedna z vlastností jednoduché záměny - protože transpozice otevřeného textu dle permutačního klíče probíhá na úrovni řádků, měl by v nich zůstat zachován poměr samohlásek a souhlásek tak, jak je běžné v textu (pro český jazyk je to 40:60). Tabulka, která tento poměr splňuje nejlépe, je nejpravděpodobnější variantou. V následujícím kroku však nezbývá než zkoušet možnosti přeházení sloupečků tak, aby z nich vznikl otevřený text - obvykle za pomocí pravidel frekvenční analýzy (b (bigramové a trigramové vazby atd.).