Generování pseudonáhodných čísel

Podobné dokumenty
Karel Břinda. 7. března 2011

Generování pseudonáhodných. Ing. Michal Dorda, Ph.D.

NÁHODNÁ ČÍSLA. F(x) = 1 pro x 1. Náhodná čísla lze generovat některým z následujících generátorů náhodných čísel:

Generátory pseudonáhodných čísel a jejich aplikace v kryptografii (proudové šifry)

Proudové šifry a posuvné registry s lineární zpětnou vazbou

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ


Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

Testování prvočíselnosti

Pokročilá kryptologie

Báze a dimenze vektorových prostorů

0.1 Úvod do lineární algebry

MĚŘENÍ A ANALÝZA ELEKTROAKUSTICKÝCH SOUSTAV NA MODELECH. Petr Kopecký ČVUT, Fakulta elektrotechnická, Katedra Radioelektroniky

Časové řady, typy trendových funkcí a odhady trendů

z = a bi. z + v = (a + bi) + (c + di) = (a + c) + (b + d)i. z v = (a + bi) (c + di) = (a c) + (b d)i. z v = (a + bi) (c + di) = (ac bd) + (bc + ad)i.

Časové řady, typy trendových funkcí a odhady trendů

Problematika náhodných a pseudonáhodných sekvencí v kryptografických eskalačních protokolech a implementacích na čipových kartách

SOUSTAVY LINEÁRNÍCH ALGEBRAICKÝCH ROVNIC

Úvod do zpracování signálů

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Arnoldiho a Lanczosova metoda

U Úvod do modelování a simulace systémů

Jednoduché cykly

0.1 Úvod do lineární algebry

3. Aritmetika nad F p a F 2

8. RSA, kryptografie s veřejným klíčem. doc. Ing. Róbert Lórencz, CSc.

Simulační modely. Kdy použít simulaci?

1 Analytické metody durace a konvexita aktiva (dluhopisu) $)*

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Datové struktury 2: Rozptylovací tabulky

Šifrová ochrana informací věk počítačů PS5-2

Lineární algebra Operace s vektory a maticemi

Protiopatření eliminující proudovou analýzu

GENEROVÁNÍ NÁHODNÝCH ČÍSEL PSEUDONÁHODNÁ ČÍSLA

1 Polynomiální interpolace

MATURITNÍ TÉMATA Z MATEMATIKY

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA ELEKTROTECHNICKÁ

Základy algoritmizace. Pattern matching

VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A

1 Vektorové prostory.

3. Reálná čísla. většinou racionálních čísel. V analytických úvahách, které praktickým výpočtům

Gymnázium Jiřího Ortena, Kutná Hora

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

Chyby měření 210DPSM

Algoritmizace a programování

1 Linearní prostory nad komplexními čísly

Lingebraické kapitolky - Analytická geometrie

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

Inženýrská statistika pak představuje soubor postupů a aplikací teoretických principů v oblasti inženýrské činnosti.

[1] samoopravné kódy: terminologie, princip

Učební plán 4. letého studia předmětu matematiky. Učební plán 6. letého studia předmětu matematiky

Zavedení a vlastnosti reálných čísel

Stavový model a Kalmanův filtr

7. Rozdělení pravděpodobnosti ve statistice

(Cramerovo pravidlo, determinanty, inverzní matice)

ALGEBRA. Téma 5: Vektorové prostory

Modulární aritmetika, Malá Fermatova věta.

1 Řešení soustav lineárních rovnic

Časové řady a jejich periodicita pokračování

SIGNÁLY A LINEÁRNÍ SYSTÉMY

Obsah. Euler-Fermatova věta. Reziduální aritmetika. 3. a 4. přednáška z kryptografie

Generátory náhodných a

IB112 Základy matematiky

Pohled do nitra mikroprocesoru Josef Horálek

SIGNÁLY A LINEÁRNÍ SYSTÉMY

2 Zpracování naměřených dat. 2.1 Gaussův zákon chyb. 2.2 Náhodná veličina a její rozdělení

Kombinatorická minimalizace

BCH kódy. Alena Gollová, TIK BCH kódy 1/27

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30

2.6. VLASTNÍ ČÍSLA A VEKTORY MATIC

Jak funguje asymetrické šifrování?

Architektura počítačů Logické obvody

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Příklad. Řešte v : takže rovnice v zadání má v tomto případě jedno řešení. Pro má rovnice tvar

Úlohy nejmenších čtverců

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Architektura počítačů Logické obvody

Teorie náhodných matic aneb tak trochu jiná statistika

Pravděpodobnost, náhoda, kostky

Téma 3: Metoda Monte Carlo

Vzdálenost jednoznačnosti a absolutně

Náhodné chyby přímých měření

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Věta 12.3 : Věta 12.4 (princip superpozice) : [MA1-18:P12.7] rovnice typu y (n) + p n 1 (x)y (n 1) p 1 (x)y + p 0 (x)y = q(x) (6)

Základy algoritmizace

Polynomy nad Z p Konstrukce faktorových okruhů modulo polynom. Alena Gollová, TIK Počítání modulo polynom 1/30

Generování pseudonáhodných dat založené na použití LFSR

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

South Bohemia Mathematical Letters Volume 23, (2015), No. 1, DĚLENÍ KRUHU NA OBLASTI ÚVOD

Poznámka. Je-li f zobrazení, ve kterém potřebujeme zdůraznit proměnnou, píšeme f(x) (resp. f(y), resp. f(t)) je zobrazení místo f je zobrazení.

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

Pomocný text. Polynomy

Transkript:

Mendelova univerzita v Brně Provozně ekonomická fakulta Generování pseudonáhodných čísel Bakalářská práce Vedoucí práce: Mgr. Tomáš Foltýnek, Ph.D. Bronislav Ryba Brno 2012

Tímto bych chtěl poděkovat vedoucímu bakalářské práce panu Mgr. Tomáši Foltýnkovi, Ph.D. za odborné vedení, cenné rady, zkušenosti a poskytnutou pomoc, při vypracování této práce. Dále bych chtěl poděkovat rodině a přítelkyni za jejich podporu.

Prohlašuji, že jsem práci na téma Generování pseudonáhodných čísel vypracoval samostatně a použil jen pramenů, které cituji a uvádím v přiloženém seznamu literatury. V Brně dne 3. ledna 2012

Abstract Ryba, B. Generation of pseudorandom numbers. Bachelor thesis. Brno: Mendel University, 2012. This bachelor thesis deals with the generation of pseudorandom numbers. It states and describes some basic algorithms that are used for this purpose. There are also techniques which describes how to attack some of the generators. Part of the thesis are also applications, which clearly demonstrate the principles of the generators, whose structure is composed of linear feedback shift registers. Keywords Generation, pseudorandom number, PRNG, algorithm, period, the linear feedback shift register. Abstrakt Ryba, B. Generování pseudonáhodných čísel. Bakalářská práce. Brno: Mendelova univerzita, 2012. Tato bakalářská práce se zabývá problematikou generování pseudonáhodných čísel. Uvádí a popisuje několik základních algoritmů, které se k tomuto účely využívají. Dále jsou zde uvedeny postupy, kterými je možné zaútočit na některé generátory. Součástí práce jsou také aplikace, které názorně demonstrují principy generátorů, jejichž konstrukce je tvořena lineárními zpětnovazebními posuvnými registry. Klíčová slova Generování, pseudonáhodné číslo, PRNG, algoritmus, perioda, lineární zpětnovazební posuvný registr.

Obsah 5 Obsah 1 Úvod a cíl práce 9 1.1 Úvod... 9 1.2 Cíl práce... 10 2 Generování náhodných a pseudonáhodných čísel 11 3 Metody generování pseudonáhodných čísel 15 3.1 Lineární metody... 15 3.1.1 Lineární kongruenční generátor (LCG)... 15 3.1.2 Zpožděný Fibonacciho generátor (LFG)... 19 3.1.3 Lineární zpětnovazební posuvný registr (LFSR)... 21 3.1.4 Mersenne Twister (MT)... 23 3.2 Nelineární metody... 24 3.2.1 Inverzní kongruentní generátor (ICG)... 24 3.2.2 Kvadratický kongruenční generátor (QCG)... 25 3.2.3 Blum Blum Shub Generátor (BBSG)... 26 4 Kryptoanalytické útoky na metody generování pseudonáhodných čísel 28 4.1 Útoky na LFSR... 28 4.1.1 Korelační útoky... 28 4.1.2 Algebraické útoky... 29 4.1.3 Útok re-synchronizace... 30 4.2 Cryptographic Mersenne Twister (CryptMT)... 32 4.2.1 Rozlišovací útoky... 33 4.2.2 Time-memory trade-off útoky... 35 4.2.3 Algebraické útoky... 35 4.2.4 Útoky Berlekamp-Massey... 35 4.2.5 Shrnutí... 35 4.3 Útoky na LCG... 36

6 Obsah 4.3.1 Předpoklady... 36 4.3.2 Útok Frieze et al.... 37 4.3.3 Útok hrubou silou... 38 4.3.4 Metoda vybrané mezery... 39 4.3.5 Shrnutí... 40 5 Analýza slabin a ekonomický dopad 41 6 Metodika práce a volba algoritmů 44 6.1 Metodika práce... 44 6.2 Volba generátorů... 44 6.3 Nástroje k realizaci... 46 7 Vlastní řešení 48 8 Diskuse a závěr 54 8.1 Přínosy práce... 54 8.2 Možná zlepšení a rozšíření... 54 9 Literatura 56 A Funkce použité v animaci Shrinking generátoru 62 B Funkce použité v animaci Alternating step generátoru 64

Seznam obrázků 7 Seznam obrázků Obr. 1 Generátor pseudonáhodných čísel Zdroj: Zenner, 2004. 11 Obr. 2 Lineární zpětnovazební posuvný registr délky L Zdroj: Menezes, Van Oorschot, Vanstone, 1997. 21 Obr. 3 Alternating step generátor Zdroj: Menezes, Van Oorschot, Vanstone, 1997. 45 Obr. 4 Shrinking generátor Zdroj: Menezes, Van Oorschot, Vanstone, 1997. 46 Obr. 5 Časová osa s rozmístěním klíčových snímků 53

Úvod a cíl práce 9 1 Úvod a cíl práce 1.1 Úvod Náhoda tvoří nedílnou součást našeho světa a náhodné jevy (Sobczyk, 2006) ovlivňují kroky každého z nás už od narození, aniž bychom si to častokrát uvědomovali. Jednoduše a jednoznačně nelze říct, co to náhodné jevy jsou, ale jelikož lidstvo ovlivňují už odedávna, snažíme se tento fenomén nějakým způsobem podchytit, napodobit a případně reprodukovat. To, jak si také později vysvětlíme, je v dnešním moderním a přetechnizovaném světě velice potřebné a dalo by se i říct, že jak z hlediska vědeckého, tak i z hlediska praxe, nepostradatelné. Dnešní svět je sice prošpikován technickými vymoženostmi a s příchodem internetu, bez kterého si dnešní život již drtivá většina z nás nedokáže ani představit, byl tento pokrok ještě umocněn, ale nástup informatiky a počítačové techniky také konečně přinesl schopný nástroj k tomu, abychom se minimálně pokusili s těmito jevy pracovat. Jenomže jak může takové zařízení, jakým je počítač, který pro svou práci potřebuje přesně danou množinu vstupů, zpracovávat a následně produkovat něco, co má být náhodné a v podstatě na ničem nezávislé? Není to úplně snadné, ale samozřejmě, že to lze a dnes jsme díky tomu schopni spousty náhodných jevů napodobit a některé třeba i předpovídat. K takovým účelům nám slouží například generátor náhodných čísel (Klíma, 2000), přesněji řečeno generátor pseudonáhodných čísel (Knuth, 1997), o kterých bude řeč na následujících řádcích této práce. Náhodná čísla jako taková mají velmi širokou oblast využití. Využívají se především tam, kde je zapotřebí nějakého proměnlivého systému. Takovými obory jsou zejména počítačové simulace (Perros, 2009) a modelování (Křivý, Kindler, 2001), kde pomáhají docílit realistického chování, numerické analýzy, programování, rozhodování (losování apod.), kryptografie (např. bezpečnost v komunikaci a šifrování) (Menezes, Van Oorschot, Vanstone, 1997) a hazardní hry (karty, ruleta a další). Samozřejmě v každém oboru hrají náhodná čísla jinou roli a je zapotřebí jiného způsobu získávání takových čísel, ale ve většině z nich jsou velmi důležitým prvkem. Jelikož, jak jsme již zmiňovali, jsou dnes počítače a internet masivně využívány téměř ke všemu a mnoho lidí vystavuje nejen své údaje celému světu, je zapotřebí klást obrovský důraz na ochranu osobních údajů (ÚOOÚ, 2000) a vysoké nároky na bezpečnostní systémy. V tomto ohledu je nesmírně důležitá kryptografie a kryptografických systémy, jako například generování klíčů, šifrování e-mailů, digitální podpisy dokumentů, elektronické platební systémy a další, kde náhodná čísla jsou důležitá v každém aspektu. A proto je nesmírně důležité to, jaký generátor náhodných čísel je implementován v daném prostředí, jelikož snaha

10 Úvod a cíl práce útočníků prolomit, ať už bezpečnostní systémy nebo algoritmy v herních zařízeních a získat tak pro svůj prospěch údaje či finanční obnosy, je neoblomná. Je tedy nutné zjišťovat, zda programy nebo jednotlivé algoritmy nejsou z tohoto pohledu problematické a zda je nebude snadné prolomit. Z tohoto důvodu také vznikla a nadále vzniká řada norem a předpisů definujících požadavky na generátory náhodných resp. pseudonáhodných čísel. 1.2 Cíl práce Cílem této práce je seznámit čtenáře se základními metodami pro generování náhodných čísel. Následně popsat několik algoritmů, které se dnes využívají v kryptografii, popsat možné útoky na tyto algoritmy a zjistit jejich slabiny. Na základě toho se poté pokusit analyzovat jejich ekonomický dopad. Dalším cílem této práce je vytvořit k vybraným algoritmům aplikaci, která bude názorně prezentovat jejich princip a bude použitelná jako výuková pomůcka.

Generování náhodných a pseudonáhodných čísel 11 2 Generování náhodných a pseudonáhodných čísel V problematice, kterou se nyní budeme zabývat, je důležité znát několik základních pojmů: Náhodné číslo Náhodné číslo je číslo získané procesem, jehož výsledek je nepředvídatelný a nelze jej spolehlivě reprodukovat. Generátor Jedná se o zařízení, program nebo proceduru, která většinou deterministickým způsobem vytváří ze vstupních hodnot požadované výstupy. Generátor pseudonáhodných čísel (PRNG) Generátor pseudonáhodných čísel Zenner (2004, s. 15) definoval jako funkci, díky které generátor rozvine malé semínko na posloupnost bitů libovolné délky. Aby byl generátor v zájmu kryptografie, musí být funkce vypočitatelná efektivním algoritmem. V praxi se tak děje pomocí stavového automatu s výstupem, jako je znázorněno na Obr. 1. Součásti tohoto generátoru jsou: 1. Vnitřní stav 2. aktualizační funkce, která upravuje vnitřní stav mezi dvěma výstupy, a 3. výstupní funkce,, která počítá další výstupní bit ze (z části) stávajícího vnitřního stavu (Zenner, 2004). Obr. 1 Generátor pseudonáhodných čísel Zdroj: Zenner, 2004. Generátor pseudonáhodných čísel lze definovat také jako strukturu, kde je konečná množina stavů, je počáteční

12 Generování náhodných a pseudonáhodných čísel stav, zobrazení je přechodová funkce, je konečná množina výstupních symbolů a je výstupní funkce (Gille-Genest, 2009). Rovnoměrné rozdělení hodnot Hodnoty jsou rovnoměrně rozděleny nad nějakou konečnou množinou právě tehdy, pokud se v ní všechny možné hodnoty vyskytují se stejnou pravděpodobností (Knuth, 1997). Random seed (seed, semínko, počáteční hodnota) Jedná se o skutečně náhodnou vstupní hodnotu nebo posloupnost hodnot, kterou je zapotřebí předložit algoritmu, aby byl schopen vytvořit požadovanou výstupní posloupnost čísel, znaků apod. Jak již bylo zmíněno v úvodu, náhodná čísla mají širokou škálu využití a jelikož se v každém oboru s těmito čísly pracuje jiným způsobem, existuje tedy i několik různých typů, přesněji zdrojů takových čísel. 1. Tabulky náhodných čísel Dřívější spolehlivý a hojně využívaný zdroj náhodných čísel. Jediným jejich problémem bylo složité naplňování. Využívaly se například telefonní seznamy, údaje ze sčítání obyvatel apod. Dnes se již příliš nevytváří a ani nevyužívají, ale existují a jsou považovány za velmi kvalitní (např. CDrom Marsaglia). První takovou tabulku roku 1927 publikoval L. H. C. Tippett. 2. Fyzikální (hardwarové) generátory Jedná se o generátory, které jako své zdroje využívají různých fyzikálních jevů. Příkladů takových jevů je celá řada. Uveďme alespoň několik z nich: dříve velmi oblíbené lávové lampy, radioaktivní rozpad, šum a další. Tyto generátory produkují skutečně náhodná čísla, ale je téměř nemožné takto vytvořené hodnoty reprodukovat. Dnes již většina výrobců hardwaru přidává generátor tohoto typu jako pevnou součást svých produktů. Jako například společnost Intel, která již od roku 1999 své procesory doplňuje generátorem produkujícího náhodné sekvence bitů právě na základě rezistorového tepelného šumu. Do této skupiny lze zařadit také mechanické generátory z oblasti hazardního hraní, jakými jsou např. hrací kostka, ruleta, míchání karet atd. Odtud také pochází označení Monte Carlo pro jakékoliv generátory produkující náhodné či pseudonáhodné posloupnosti. 3. Numerické (softwarové) generátory Dnes velmi oblíbený zdroj náhodných čísel založený na deterministických aritmetických operacích zpracovávaných počítačem. V oblasti programovacích jazyků existuje celá řada generátorů, které jsou dostačující pro běžné účely. Náhodná čísla jsou získávána na základě nějakého rekurentního vztahu a následným determinis-

Generování náhodných a pseudonáhodných čísel 13 tickým výpočtem nové hodnoty z předchozích. Posloupnost tedy není náhodná, nýbrž zdánlivě náhodná a takovým posloupnostem se také říká pseudonáhodné nebo kvazináhodné. První metodou, která vycházela z operací počítačové aritmetiky, byla John von Neumannova Metoda prostředku čtverce z roku 1949. Pro generování náhodných čísel v oblasti informatiky existují dva hlavní přístupy neboli typy generátorů. Generátor skutečně náhodných čísel a generátor pseudonáhodných čísel. Generátor skutečně náhodných čísel (True Random Number Generator TRNG) Také se mu často říká zkráceně generátor náhodných čísel (RNG). TRNG zpracovává údaje z fyzikálních jevů, odchylky v pohybech myší, nebo dobu mezi tažením myší a vkládá je do počítače. Produkuje posloupnosti čísel, které nejsou ničím ovlivněny, např. předešlými stavy, a hodnoty v ní jsou tedy skutečně náhodné (všechny hodnoty se v ní vyskytují se stejnou pravděpodobností). Využívají se například ve statistických a kryptografických aplikacích. Ale jelikož jsou počítače navrženy jako deterministické stroje, je bohužel velmi obtížné v počítačích takové generátory vytvořit. Generátor pseudonáhodných čísel (Pseudorandom Number Generator PRNG) Na začátku je zapotřebí předložit generátoru nějaké semínko (počáteční hodnoty) délky. Z tohoto semínka se postupně deterministickým způsobem, na základě nějakého vzorce nebo předem vypočtené tabulky, vygeneruje celá posloupnost, která má délku. Tato posloupnost se jeví jako náhodná, ale ve skutečnosti tomu tak není, tzn., že všechny hodnoty se v ní nevyskytují se stejnou pravděpodobností. PRNG jsou deterministické, periodické a efektivní, proto se využívají především v oblastech, kde je zapotřebí velké množství čísel. Kvalitní generátor náhodných čísel by měl mít několik důležitých vlastností: Délka periody hodnoty by se neměly opakovat, tzn. co možná nejdelší perioda; Rovnoměrnost generované sekvence by se měly chovat jako sekvence nezávislých náhodných proměnných (hodnoty by měly být rovnoměrně rozděleny v intervalu 0 až 1);

14 Generování náhodných a pseudonáhodných čísel Malá vnitřní struktura čím menší je vzdálenost mezi nadrovinami 1 generovaných hodnot, tím lepší generátor. Efektivnost a hospodárnost rychlost generování a menší spotřeba paměťového prostoru; Opakovatelnost schopnost reprodukovat vícekrát naprosto stejné sekvence; Přenositelnost možnost využití generátoru na různých počítačích nebo s různými kompilátory; Nepředvídatelnost nelze předvídat další výstupní hodnoty z předchozích. Důležitá především pro kryptografické aplikace. Samozřejmě požadovaných vlastností pro určitý algoritmus můžeme definovat mnohem více. Pro posuzování kvality generátorů a především jejich výstupních sekvencí existuje a využívá se celá řada různých testů, které jsou utříděny do tzv. baterií statistických testů (např. STS Statistical Test Suite). Testy, které se osvědčili a využívají se v praxi, jsou například: Frekvenční test, Test sérií, Test nejdelší série, Test hodností binární matice, Spektrální test, Sériový test a mnoho dalších. Je třeba si ale uvědomit, že i když generátor projde všemi testy, neznamená to, že je nejlepší a naprosto spolehlivý. Naopak může existovat oblast, a s velkou pravděpodobností tomu tak i je, ve které bude tímto generátorem vytvořená posloupnost naprosto nevhodná a nepoužitelná. Můžeme tedy hledat jakési vyhovující optimum použitelnosti. 1 Nechť je definovaná vztahem, kde. Pak se nazývá nadrovina v (Klaška, 2006). Nadrovina je určena bodem a normálovým vektorem.

Metody generování pseudonáhodných čísel 15 3 Metody generování pseudonáhodných čísel 3.1 Lineární metody První skupinu metod pro generování pseudonáhodných čísel tvoří lineární generátory. Jejich princip spočívá ve výpočtu nové hodnoty z předešlých pomocí nějakého lineárního rekurentního vztahu. Lineární rekurze je posloupnost vektorů, která je definována pomocí matice : 3.1.1 Lineární kongruenční generátor Linear Congruential Generator (LCG) Tato metoda generování náhodných čísel je jednou z nejznámější a stále ještě nejpoužívanějších. Je založena na principu, který D. H. Lehmer zavedl někdy kolem roku 1949. Generátory fungující na tomto principu patří mezi ty nejjednodušší a nejstarší typy sloužící k produkování rovnoměrných pseudonáhodných čísel. Lineární kongruenční generátory jsou periodické a mají tendenci dávat nižší kvality náhodnosti, zejména při velkém počtu náhodných hodnot, a proto nejsou z kryptografického hlediska příliš bezpečné. Generátor je definován rekurentním vztahem, pro který platí. Z uvedeného vztahu lze také odvodit vztah pro -tý člen, kde: vyjadřuje n-tý člen požadované posloupnosti náhodných čísel, je nastavená počáteční hodnota posloupnosti, která se také jinak nazývá semínko a platí pro ni, je násobitel, pro kterého platí, je inkrement neboli přírůstek, pro nějž platí, operace ( modulo ) znamenající zbytek po celočíselném dělení, je modul, pro který platí.,,, jsou libovolně zvolené konstanty (parametry), ze kterých po přiřazení do uvedeného vztahu získáme požadovanou posloupnost rovnoměrných náhodných čísel.

16 Metody generování pseudonáhodných čísel Při jakékoliv volbě hodnot konstant není posloupnost stále náhodná, jelikož je jeho množství omezeno podmínkou, proto se daná kongruentní posloupnost čísel začne po určitém počtu vygenerovaných hodnot z tohoto rozsahu opakovat a dostane se tak do jakési smyčky, ve které se bude opakovat až do nekonečna. Znamená to tedy, že tato metoda má svou periodu. Pokud jsou hodnoty generovány přímo z kongruentní relace, je tato perioda kratší nebo rovna. Pro získání co možná nejpřijatelnější, tedy co nejvíce náhodné, posloupnosti čísel je důležité ideálně zvolit hodnoty parametrů, které nám budou tuto posloupnost definovat. Pokud by byl multiplikátor,, aditivní konstanta,, a modul,, vybrán vhodně, dostaneme ryze pravidelné sekvence s periodou:, je-li mocnina dvou;, když je prvočíslo. Nejprve je však potřeba takové ideální hodnoty nalézt. Podívejme se tedy na volby těchto čísel. Volba počáteční hodnoty (semínka) posloupnosti Prvním parametrem, na který se zaměříme, je semínko, ze kterého nám bude daná posloupnost vycházet. Hodnota semínka lze určit několika různými způsoby: 1. Volba konkrétní hodnoty; 2. Systémové odvození: např. aktuální systémový čas, pohyb myši atd.; 3. Generování jiným generátorem. Výběr násobitele a, inkrementu c Druhým parametrem pro získání požadované posloupnosti náhodných čísel je násobitel a. Obecně platí, že je dobré se vyhýbat násobitelům v jednoduchých tvarech, poněvadž následné vygenerované hodnoty většinou nebývají dostatečně náhodné. Jelikož je pro získání kvalitní posloupnosti náhodných čísel velmi důležitá délka periody, je pro nás žádoucí, mít tuto periodu v lineární kongruentní posloupnosti co nejdelší. Nyní se proto podíváme na to, jak dosáhnout periody maximální délky a vhodně k tomu zvolit hodnotu násobitele. Jak již víme, maximální počet různých hodnot, které můžeme získat je, nemůže tedy ani perioda být delší, než. Proto pro nás bude nyní důležité to, jak vhodně zvolit hodnoty pro,, a tím dosáhnout periody, která by byla délky právě a tedy maximální. Lineární kongruentní posloupnost definovaná parametry,, a má periodu délky právě tehdy, když: 1. je nesoudělné s ;

Metody generování pseudonáhodných čísel 17 2. je násobkem, pro každé prvočíslo které dělí ; 3. je násobkem, pokud je i násobkem (Knuth, 1997). Existují i dva speciální případy hodnot pro inkrement. Jedním z nich je a druhým. U prvního z těchto případů dochází k o něco rychlejšímu generování náhodných hodnot, než je tomu u druhého. Při podmínce také nikdy nelze dosáhnout maximální délky periody, neboť při ní dostaneme vztah: kde v dané posloupnosti je každý následující člen multiplikován a prvek se v ní nemůže nikdy vyskytnout, neboť by tato posloupnost degenerovala do nuly. Potřebujeme proto, aby bylo pro všechna nesoudělné s. V tomto případě tedy sice dochází ke zkracování délky periody, ale i přesto může být dostatečně dlouhá. Maximální možné periody při můžeme dosáhnout, jestliže: 1. je nesoudělné s ; 2. je primitivním prvkem modulo. Pokud by tedy bylo prvočíslo, tzn., bylo by nesoudělné s, můžeme dosáhnout periody až, což je perioda velmi uspokojivá a dostačující. Ale stále potřebujeme najít primitivní prvek modulo. Mascagni, Ceperley, Srinivasan, (1998, s. 3) uvádí primitivní prvek takto: Číslo je primitivním prvkem modulo, když množina celých čísel se rovná množině. Knuth jej ve své knize (Knuth, 1997) definuje následovně: Číslo je primitivním prvkem modulo, kde lze vyjádřit jako právě tehdy, když platí jeden z následujících výrazů: 1.,, je liché; 2.,, ; 3.,,, nebo ; 4.,, nebo ; 5. je liché,, (modulo ), a pro libovolného prvočíselného dělitele čísla ; 6. je liché,, číslo splňuje podmínku (5) a. K závěru, že při mohou být periody delší, přišli, nezávisle na sobě, pánové Thomson a Rotenberg. Lineární kongruentní po-,

18 Metody generování pseudonáhodných čísel sloupnosti, která splňuje některou z těchto dvou případů, se často říká multiplikativní kongruenční metoda ( ) nebo také smíšená kongruenční metoda. Výběr modulu Dalším neméně důležitý parametr, na jehož správnou volbu se zaměříme, je hodnota modulu. U tohoto čísla by nás měla nejvíce zajímat velikost a vliv na rychlost generování. Co se týká velikosti tohoto čísla, je potřeba zvolit poměrně velké číslo, neboť perioda a tedy i množství hodnot nemůže být větší, než je samotná hodnota. Číslo musí být také zvoleno v ideálním případě tak, aby vypočet výsledné hodnoty byl co nejrychlejší. V podstatě se nám nabízejí tyto možnosti volby : Výhody: 1. Modul jako prvočíslo Vzhledem k tomu, že chceme nastavit parametr jako prvočíslo, musíme nejdříve určit množinu přípustných hodnot pro. Při podmínce, že je prvočíslo k získání maximální periody (délky v tomto případě), musí být primitivní prvek modulo, jak již bylo zmíněno výše. 2. Modul o mocnině dvou Jiný způsob využití LCG jako PRNG spočívá v nastavení parametru aditivní konstanty. Je-li modul mocnina dvou pro celá čísla a kde má většinou hodnotu velikosti použitého registru na procesoru. Jedná se o techniku, kterou jako první navrhli pánové Percus a Kalos. Má několik výhod oproti parametrizaci násobitele ; nicméně, existuje i několik značných nevýhod. Největší nevýhodou užívání tohoto typu parametrizace je, že nejméně významné bity generovaných celých čísel mají extrémně krátké periody. Když jsou zbytky z LCG s modulem a vhodně zvolnými parametry, bude mít posloupnost periodu. Nicméně bude mít periodu pro všechna celá čísla. To znamená, že na nejméně významných bitech se budou střídat hodnoty a. Velmi oblíbené a využívané hodnoty byly a. Dnes jsou tyhle hodnoty příliš malé a nesplňují tak dnešní požadavky pro simulace apod. - jednoduchost - snadná implementace - rychlost

Metody generování pseudonáhodných čísel 19 Nevýhody: - jsou předvídatelné: z výstupní sekvence lze zbytek sekvence rekonstruovat, i když jsou parametry,, a nebo neznámé. - nejsou příliš bezpečné - pro kryptografii nevhodné 3.1.2 Zpožděný Fibonacciho generátor Lagged Fibonacci Generator (LFG) Tato metoda, která vznikla začátkem 50. let, vychází z obecné matematické teorie Fibonacciho posloupnosti, ve které je nový prvek získán nějakou kombinací prvků předcházejících. Současně lze také říci, že se jedná o vylepšený LCG, neboť díky této metodě dosáhneme mnohem delších period. Délky period jsou obvykle větší než. Obecně lze zpožděný fibonacciho generátor vyjádřit vztahem: a kde:, pro který platí vyjadřuje požadovanou posloupnost náhodných čísel,, jsou koeficienty zpoždění, pro které platí, je modul, který je často mocninou dvou, tzn. bo ), je operátor zastupující binární aritmetickou operaci: - sčítání, - odčítání, - násobení, - bitová aritmetická operace exclusive-or (XOR). Aditivní zpožděný Fibonacciho generátor (ALFG): (např. Jedná se o posloupnost, v níž je závislé na více než jedné předchozí hodnotě a využívá nejjednodušších aritmetických operací sčítání či odčítání. Pánové, kteří představili tuto metodu s matematickou operací sčítání, byli Green, Smith, Klem a v roce 1958 ve vylepšené podobě také G. J. Mitchell, D. P. Moore. Obecně lze tento vztah zapsat:,. Maximální perioda tohoto typu LFG je.

20 Metody generování pseudonáhodných čísel Multiplikativní zpožděný Fibonacciho generátor (MLFG): Zvláštním příbuzným ALFG je multiplikativní zpožděný Fibonacciho generátor, kde místo operace sčítání resp. odčítání je používáno násobení. Tento generátor může být určen vztahem: Maximální perioda je,. neboli periody ALFG. I přesto, že parametrizací je analogický s ALFG, je považován za nadřazený předešlému generátoru. Two-tap obecný zpětnovazební posuvný registr (GFSR): V tomto případě se opět jedná o jakéhosi příbuzného LFG, ale je používána bitová operace XOR místo zmiňovaných matematických operací. Na tento způsob přišli pánové T. G. Lewis a W. H. Payne v roce 1971. Maximální perioda v tomto případě je. Velmi často se u tohoto typu generátoru využívá tzv. posuvu, kde čísla získaná ze vztahu definujícího LFG tvoří posunutou Fibonacciho posloupnost. Tyto posuvy slouží k tomu, aby daný generátor dosahoval ještě lepších výsledků (delších period ) a spočívá ve správném zvolení hodnot pro koeficient a. Doporučuje se používat posuvy o něco větší, neboť menší čísla mají poněkud kratší periody, podle toho s kolika skupinami hodnot současně aplikace pracuje. Zde je na ukázku několik dvojic hodnot pro koeficienty a vhodných pro posuvy:,,, (Knuth, 1997). Generátory založené na Fibonacciho posloupnostech jsou v praxi široce využívány již od roku 1958. Například Oracle Database implementuje tento generátor v DBMS_RANDOM balíčku (k dispozici v Oracle 8 a novější) nebo třeba.net CLR používá LFG pro generátor System.Random. Výhody: - snadná implementace (aditivní) - možnost realizace přímo s desetinnými čísly - rychlost (především aditivní) - dlouhé periody Nevýhody: - složitá implementace (především GFSR) - výstup velmi citlivý na počáteční hodnoty - neúplné matematické teorie: nutnost spoléhat na statistické testy

Metody generování pseudonáhodných čísel 21 - výstupní hodnoty nedostatečně náhodné 3.1.3 Lineární zpětnovazební posuvný registr Linear Feedback Shift Register (LFSR) Nyní se podíváme na další metodu, která se v současnosti hojně využívá v řadě aplikací a tvoří základnu mnoha dalších generátorů. Jedná se o LFSR neboli Lineární posuvný zpětnovazební registr, který patří i do skupiny metod využívající posuvného registru. Nicméně je jediným zástupcem této skupiny v naší práci, proto jsme se rozhodli jej pro jednoduchost zařadit pouze mezi lineární. Tato metoda úzce souvisí se zpožděným Fibonnaciho generátorem, neboť se při něm přesouvají bity z nějakého místa posuvného registru na jiné (na některý z jeho konců) s určitým zpožděním. Toto zpoždění je rovno délce posuvného registru. Nejčastěji se v LFSR pracuje s binárními hodnotami. Jako první na tuto metodu generování přišel v roce 1965 Tausworthe, podle něhož je někdy také tento generátor nazýván. Generátor LFSR se skládá z několika částí, které při své činnosti využívá. První z nich je n-bitový posuvný registr délky, druhou je zpětnovazební funkce, další pak charakteristický mnohočlen a v neposlední řadě hodiny, které řídí pohyb dat. V posuvném registru pseudonáhodně roluje až hodnot. Každá tato hodnota leží ve své zpožděné schránce (vnitřním registru) číslovaném, kde každá je schopna uchovávat 1 bit a má 1 vstup a 1 výstup. Obr. 2 Lineární zpětnovazební posuvný registr délky L Zdroj: Menezes, Van Oorschot, Vanstone, 1997. Během každé časové jednotky (taktu) se provádí následující operace: 1. Obsah prvku je výstupem (tzv. výstupním bitem) a vytváří požadovanou výstupní posloupnost; 2. Obsah prvku se přesouvá do prvku pro každé,. Čímž se uvolní schránka ;

22 Metody generování pseudonáhodných čísel 3. Novým obsahem prvku je zpětnovazební bit (tzv. vstupní bit), který se získá z logické binární operace XOR (případně XNOR) nenulových výsledků charakteristického polynomu. Tento charakteristický mnohočlen se vypočítá jako zbytek po dělení dvěma součtu obsahu fixní podmnožiny předešlých prvků a má tvar: Je-li počáteční obsah prvku pro každé,, pak se nazývá počáteční stav LFSR a výstupní posloupnost je jednoznačně určena následjícím rekurentním vztahem: pro. Každá výstupní sekvence (tj. pro všechny počáteční stavy) je periodická pouze tehdy, když charakteristický polynom je stupně. A co se samotné periody týká, tak ta může být až. K dosažení této maximální možné periody je zapotřebí, aby: počáteční stav (semínko) byl nenulový (při použití XOR), případně nesmí být pouze z jedniček (XNOR). Tudíž počet jedniček nesmí být roven počtu nul; charakteristický polynom byl polynomem primitivním (koeficienty polynomu jsou nesoudělné). Existují 2 druhy implementace LFSR: interní a externí. Rozdíl spočívá v umístění binární aritmetické operace. Jak z názvů vyplývá, tak zatímco u interního, někdy také nazývaného Fibonacciho nebo Simple Shift Register Generator (SSRG), typu implementace je binární operace umístěna přímo uvnitř posuvného registru, tak u externího typu, někdy také Galoisova nebo Multiple-Return Shift Register Generator (MRSRG) anebo také Modular Shift Register Generator (MSRG), je naopak umístěna vně a není tedy součástí posuvného registru. Externí a interní LFSR generují posloupnosti o stejné délce, ale ne se stejným pořadím hodnot. LFSR má dnes mnoho využití. Může to být například převod mezi paralelními a sériovými daty, zpoždění sériového přenosu dat nebo využití v šifrovacích a dešifrovacích algoritmech. Výhody: - rychlost - ideální hardwarová implementace - periody - dobré statistické vlastnosti posloupností

Metody generování pseudonáhodných čísel 23 Nevýhody: - linearita 3.1.4 Mersenne Twister (MT) Tento typ generátoru, založený na lineární rekurenci, uveřejnilo duo japonských universitních (Universita Keio) pracovníků M. Matsumoto a T. Nishimura roku 1997. Pojmenování Mersenne Twister nese díky tomu, že délka periody je vybírána jako Mersennovo prvočíslo (Mersenne prime) 2 a zároveň se jedná o variaci tgfsr (twisted GFSR nebo také twisted Generalised Feedback Shift Register), který je mimo jiné založen na lineárním zpětnovazebném posuvném registru, neboli LFSR. Existuje celá řada variant MT, jako např. SIMD-Oriented Fast Mersenne Twister (SFMT), což je rychlý 128 bitový PRNG, nebo kryptograficky bezpečný CryptMT (viz. následující kapitola) či klasický MT19937. Algoritmus MT je založen na následujícím rekurentním vztahu: kde:, je celé číslo udávající počet opakování (stupeň rekurence), je celé číslo,, je konstanta, matice, je velikost slova daného počítače v bitech, jsou počáteční semínka,, s hodnotami z dvouprvkové pole je vektor o velikosti, který je vygenerován při, je nejvyšších bitů z, je celé číslo, (ukryté v definici ), je nejnižších bitů z, značí bitovou operaci XOR, značí operaci zřetězení. Délka periody tohoto algoritmu je a jednotlivé celočíselné hodnoty vygenerované tímto algoritmem jsou rovnoměrně rozděleny 2 Nechť je celé číslo. Mersennovo číslo je celé číslo ve tvaru. Je-li prvočíslem, nazývá se Mersennovo prvočíslo (Menezes, Van Oorschot, Vanstone, 1997). V mnoha různých zdrojích lze nalézt tabulku všech dosud známých Mersennových prvočísel.

24 Metody generování pseudonáhodných čísel ve bitech (podle architektury počítače) v 623rozměrném poli při využití 624 slov jako své pracovní oblasti. V současnosti je tento algoritmus považován za jeden z nejlepších generátorů náhodných čísel. Využívá se např. při simulacích metodou Monte Carlo a je implementován v mnoha programovacích jazycích. Výhody: - délka periody - rychlost - statistické vlastnosti - volba semínka nemá vliv na náhodnost celé periody Nevýhody: - inicializace - kryptograficky nevhodný: lze předpovídat pokračování sekvence z několika hodnot (v CryptMT byl tento problém odstraněn hashovací funkcí) 3.2 Nelineární metody Druhou skupinou jsou nelineární generátory, které by se daly ještě rozdělit do dvou podskupin podle toho, jakou využívají přechodovou funkci. Jedny využívají nelineární přechodovou funkci. Druhé přechodovou funkci lineární, ale naproti tomu nelineární funkci produkující výstupy. Nelineární metody mají většinou tu výhodu, že výstupy během celé periody jeví vlastnosti skutečně náhodných čísel. 3.2.1 Inverzní kongruentní generátor Inversive Congruential Generator (ICG) Tuto metodu představili světu pánové Eichenauer a Lehn v roce 1986. Jedná se v podstatě o metodu LCG, jen s tím rozdílem, že funkce pro generování hodnot metodou ICG je inverzní k funkci LCG. Tato metoda je definována následovně:, když, kde:, když,, je požadovaná posloupnost hodnot,, je inicializační hodnota (semínko), je celočíselný násobitel,

Metody generování pseudonáhodných čísel 25 je inverzní prvek k, tj., je celočíselný přírůstek (inkrement), je modul (nejčastěji prvočíselný, nebo mocnina 2). Délka periody, které lze dosáhnout při generování hodnot touto metodou je rovna maximální periodě, tedy hodnotě modulu, když je polynom primitivním polynomem. V případě modulu mocniny dvou dosáhneme maximální periody pouze, pokud a. Výhody: - výsledky testování (rozložení hodnot) - délka periody - vodný pro kryptografii Nevýhody: - rychlost 3.2.2 Kvadratický kongruenční generátor Quadratic Congruential Generator (QCG) Tato metoda v podstatě vyjadřuje v obecnější podobě Lineární kongruenční generátor a navrhl ji D. E. Knuth. Vztah, kterým lze tento generátor vyjádřit může vypadat nějak takto: kde: ; vyjadřuje požadovanou posloupnost náhodných čísel,, je počáteční hodnota posloupnosti (semínko),, jsou celočíselní násobitelé, je celočíselný posun, je modul (obvykle mocnina dvou). Maximální délky periody dosahuje tento typ generátoru opět v případě, že délka periody je rovna hodnotě modulu. Tudíž podmínky pro tři celočíselné parametry, a dávající maximální periody, jsou: 1. musí být nesoudělné s ; 2. a jsou současně násobkem, a to pro všechna lichá prvočísla, která jsou dělitelem ; 3. je sudé, a, pokud je násobkem ;,

26 Metody generování pseudonáhodných čísel, pokud je násobkem ; 4., pokud je násobkem (Knuth, 1997). Pokud však zvolíme modul mocniny 2, potom je zjištění podmínek o něco komplikovanější, ale zkráceně můžeme říct, že k dosažení maximální periody musí být sudé, a musí být liché. Výhody: - slušné periody Nevýhody: - slabší lineární vlastnosti - rozložení hodnot - pro kryptografii nevhodný (ve většině případů) 3.2.3 Blum Blum Shub Generátor (BBSG) S návrhem tohoto konkrétního, po svých autorech název nesoucího, typu kvadratického generátoru přišli v roce 1986 Lenore Blum, Manuel Blum a Michael Shub. BBS generátor má tento tvar: kde, je aktuální člen požadované posloupnosti, je předchozí člen posloupnosti, je modul, který je součinem dvou velkých prvočísel, která by v ideálním případě měla být Blumovými prvočísly. Tento algoritmus je založen na počítání kvadratických zbytků a funguje tak, že nejdříve je zapotřebí získat 2 velká různá prvočísla a taková, že každé z nich je kongruentní 3 modulo 4. Následně jejich součinem získáme modul. Hodnotě modulu získané součinem takových prvočísel se také říká tzv. Blumovo číslo. Poté zvolíme hodnotu, počáteční semínko, které by mělo být celým číslem z intervalu nesoudělné s (tj. a nejsou násobky ). Počáteční, tedy inicializační hodnota generátoru, ze které budeme postupně dostávat celou posloupnost, je:, Další členy požadované posloupnosti získáme již ze vztahu vyjadřujícího BBS generátor.

Metody generování pseudonáhodných čísel 27 Co se periody BBSG týče, tak ta odpovídá, kde je Carmichaelova funkce 3 pro. Velmi zajímavou vlastností BBSG je to, že některá z hodnot může být vypočítána přímo. Lze tak učinit například takto: To znamená, že pokud touto metodou generujeme velké množství klíčů, nemusíme si je všechny někam ukládat či zapisovat. Jsou totiž efektivně indexovány a můžeme je tak jednoduše zpětně získávat jen pomocí indexu, původní inicializační hodnoty a. Podrobněji se problematikou tohoto generátoru zabývají například Pascal Junod (Junod, 1999) nebo Geisler, Kroigard a Danielsen (2004, s. 8-12). Výhody: - kryptograficky bezpečný - vhodný pro šifrování - nepředvídatelný Nevýhody: - výpočetní náročnost - rychlost - nevhodný pro simulace Dnes se často s oblibou kombinuje či míchá dohromady více generátorů, kde například jeden míchá výstupy jiného, nebo se výsledná posloupnost vytvoří např. součtem výstupní posloupnosti 2 různých generátorů a podobně, pro získání ještě lepších vlastností generovaných posloupností a existuje celá řada takovýchto kombinovaných generátorů. Některé takové modifikace mohou vést ke zlepšení, ale zdaleka tomu tak není ve všech případech. 3 Carmichaelova funkce kladného celého čísla je nejmenší kladné celé číslo takové, že, pro každé celé číslo, které je nesoudělné s (Wikipedia, 2011).

28 Kryptoanalytické útoky na metody generování pseudonáhodných čísel 4 Kryptoanalytické útoky na metody generování pseudonáhodných čísel 4.1 Útoky na LFSR V této části věnované útokům, kterými lze nepadnout generátory pseudonáhodných čísel a proudové šifry využívajících lineárního zpětnovazebného posuvného registru (LFSR) pro generování náhodných hodnot, budeme vycházet především z práce H. Ya'akova (Ya'akov, 2004). Lineární zpětnovazební posuvné registry (LFSR) jsou velmi často využívány jako jedna ze složek proudových šifer. I přesto, že samotné LFSR mají dlouhé periody a poměrně dobré statistické vlastnosti, jeho linearita mu neumožňuje vytvářet dostatečně kvalitní výstupní posloupnosti. Proto se LFSR obvykle ještě doplňují nějakými nelineárními složkami, aby výstupní posloupnosti nebyly lineární a byly tak hůře předvídatelné. K implementování proudové šifry založené na LFSR existují tři hlavní konstrukce: Filtrování výstupů z LFSR pomocí nelineární funkce, často boolean 4 (např. Geffeho generátor) Časování jednoho LFSR řízeného výstupní posloupností jiného LF- SR (např. Alternating step generator, Shrinking generator, LILI a další) Filtrování výstupů z LFSR pomocí stavového automatu (např. šifra E0). Ve skutečnosti se však často k dosažení nelinearity výstupních posloupností využívají různé kombinace těchto konstrukcí. Bližší informace k výše zmíněným příkladům a několika dalším generátorům a šifrám takovýchto konstrukcí jsou k nalezení také v práci E. Zennera (2004, s. 27-75). Nyní si ukážeme tři základní útoky, kterými se dají napadnout proudové šifry založené na lineárním zpětnovazebném posuvném registru. Následně uvedeme možné postupy (algoritmy), pomocí nichž by bylo možné tyto útoky praktikovat a prolomit tak proudové LFSR šifry výše uvedených konstrukcí. 4.1.1 Korelační útoky Při korelačních útocích předpokládáme, že útočník má k dispozici alespoň 1 výstupní posloupnost bitů, jenž je nějakým způsobem závislá na 4 Nechť je vnitřní stav LFSR, kde. Nelineárním filtrem je funkce, jejíž vstupy jsou podmnožinou bitů vnitřního stavu LFSR.

Kryptoanalytické útoky na metody generování pseudonáhodných čísel 29 původní výstupní sekvenci jedné z LFSR komponent, ze které se následně snaží získat její vstupy. Útočník bere získanou posloupnost bitů jako svůj první přibližný odhad prvotní posloupnosti LFSR. Následně využívá lineárního opakování LFSR, aby mohl postupně svůj odhad zlepšovat, dokud se mu nepodaří zreprodukovat původní výstupní posloupnost. Potom pomocí řešení soustavy lineárních rovnic může útočník získat vstupy určité LFSR komponenty. Jednotlivé kroky nám znázorňuje i Algoritmus č. 1. Algoritmy pro provedení rychlého korelačního útoku jsou velmi závislé na počtu kohoutků zpětných vazeb 5 v LFSR a pro více než 10 kohoutků už nejsou příliš praktické. V současné době jsou nelineární komponenty proudové šifry založené na LFSR vybírány tak, aby neexistovala žádná významná korelace mezi některou z LFSR komponent a výstupními proudy. Proto není možné tyto útoky provézt na všechny generátory. Z existujících typů korelačních útoků se využívají především 2 typy: Siegenthalerův útok, nesoucí název po svém autorovi, a rychlé korelační útoky. Příklad rychlého korelačního útoku je uveden například i v (Deepthi, Sathidevi, 2008). 4.1.2 Algebraické útoky Algebraické útoky na proudové šifry, které jsou založené na LFSR, se skládají ze dvou hlavních kroků: 1. nalezení soustavy algebraických rovnic, kde neznámými jsou bity klíče a výstupní bity, 2. vyřešení této soustavy rovnic. Vzhledem k tomu, že LFSR je lineární, dostaneme rovnici stavu ( ) a výstupních bitů v čase : vnitřního V důsledku již několikrát zmiňované linearity LFSR také můžeme říct, že kdykoliv v čase bude mít rovnice, pro výpočet lineárních kombinací, tvar: Pokud máme k dispozici dostatek výstupních bitů, dostaneme nadefinovanou soustavu algebraických rovnic, jejímž nejjednodušším způsobem řešení je Linearizace. Při této metodě v rovnicích nahradíme nelineární proměnné za nové běžné proměnné a vyřešíme výslednou soustavu lineárních rovnic. Je však zapotřebí, aby byla nová soustava předdefino- 5 Bity v LFSR, jenž ovlivňují vstup. Jinými slovy se jedná o bity vstupující do logických binárních operací XOR (případně XNOR).

30 Kryptoanalytické útoky na metody generování pseudonáhodných čísel vaná. K tomu je zapotřebí asi bitů, kde je počet proměnných původní rovnice a je nejvyšší stupeň rovnice. Díky tomu, můžeme říct, že algebraický útok lze provézt pouze tehdy, pokud můžeme sestrojit rovnice nižších stupňů s relativně malým počtem proměnných. 4.1.3 Útok re-synchronizace U proudových šifer dochází běžně k častému inicializování. Důvodem může být buď potřeba re-synchronizace odesílatele s příjemcem, nebo potřeba zabránit tomu, aby bylo používáno příliš mnoho dlouhých posloupností se stejným klíčem. Proto se šifra opětovně inicializuje se stejným klíčem, ale s různými (veřejně známými) inicializačními hodnotami. Při útoku re-synchronizací má útočník přístup k mnoha výstupním tokům, které jsou generovány tímto způsobem, a využívá tyto informace k tomu, aby získal informace o klíči. Nyní si ukážeme několik algoritmů, jejichž kroky budou ilustrovat útoky na jednotlivé konstrukce proudových LFSR šifer. Jako první si přiblížíme algoritmus útoku na konstrukce, jejichž výstupy z lineárního zpětnovazebného posuvného registru jsou přefiltrovány nelineární funkcí. Předpokládejme, že útočník má schopnost způsobit ve vnitřním stavu LFSR chybu s nízkou Hammingovou vahou 6. Takový útok by potom mohl probíhat v následujících krocích: Algoritmus č. 1: Útok na nelineárně filtrované LFSR 1. Způsobení chyby a vytvoření výsledného výstupního proudu 2. Odhadování chyby 3. Kontrolování odhadu pomocí algoritmu č. 2, v případě nesprávného odhadu hádat znovu 4. Opakování kroku 1 až 3, dokud není shromážděno identifikovaných odhadů 5. Sestavení a řešení soustavy lineárních rovnic Algoritmus č. 2: Kontrola odhadu 1. Předvídání budoucích rozdílů ve vstupu nelineární funkce založené na odhadu počáteční chyby 2. Identifikování pozice bitu, pro který se předpověď shoduje se vstupem 3. Pro tyto pozice bitu kontroluj, zda pozorovaný výstupní rozdíl je nulový, pokud není, odmítni tento odhad 6 Hammingova váha funkce počítá počet 1 v binární sekvenci. Používá se k určení vzdálenosti mezi dvěma různými binárními sekvencemi (Lauradoux, 2009).

Kryptoanalytické útoky na metody generování pseudonáhodných čísel 31 Dalším algoritmem je algoritmus útoku na konstrukci proudové šifry, ve které dochází k časování. Jedná se tedy o hodinami řízené LFSR proudové šifry. Základní hodinami řízené LFSR konstrukce se skládají ze dvou částí: hodin LFSR a LFSR dat. Následující algoritmy vychází z využití chyby (poruchy) v některé z těchto dvou částí. Porucha v časování způsobuje, že původně zvolený bit, který má být v nějakém pravidelném časovém intervalu a na určitém místě generované posloupnosti použit jako bit tvořící výstupní posloupnost, nebude zvolen správně. Tzn., že výsledné posloupnosti budou tvořeny z nesprávných bitů a tyto posloupnosti jsou tedy chybné nebo také porušené. Algoritmus č. 3: Využití chyby v rejstříku hodin 1. Generování chybných proudů, dokud není získáno různých proudů 2. Identifikování pozic bitu, v nichž lze získat bit současného stavu hodin LFSR 3. Opakování kroku 1 a 2 s různým časováním, dokud nebude nalezeno bitů LFSR hodin posloupnosti 4. Sestavení a řešení soustavy lineárních rovnic 5. Využití již známého umístění výstupních bitů v posloupnosti LFSR dat, sestrojení a řešení soustavy lineárních rovnic Algoritmus č. 4: Využití chyb v LFSR datech 1. Generování bezchybného výstupního proudu délky 2. Opětovné inicializování zařízení a způsobení v datovém registru chyby s nízkou Hammingovou vahou 3. Vytvoření nového (porušeného) proudu délky 4. Odhadování a ověřování chyby spuštěním algoritmu pro obnovení LFSR hodin z LFSR dat, pomocí kterého se vypočítá rozdíl v datovém a výstupním proudu 5. Opakování, dokud odhad není v souladu s výstupním proudem 6. Obnovení stavu datového registru ze současného výstupu a známého registru hodin Jako poslední ze tří uvedených konstrukcí proudových šifer založených na LFSR nám zůstává konstrukce, ve které se pro filtrování výstupů z LFSR a dosažení výsledných nelineárních posloupností využívá stavového automatu (Finite State Machine FSM). Při takovém útoku se využívá chyby ve stavovém automatu a útočník při něm může postupovat například takto:

32 Kryptoanalytické útoky na metody generování pseudonáhodných čísel Algoritmus č. 5: Chyby ve FSM 1. Resetování zařízení, generování chyby a vytvoření výsledného proudu 2. Opakování 1. kroku, dokud není shromážděn dostatek statistických dat 3. Analyzování statistických dat a sestavení lineárních rovnic v původním stavu LFSR 4. Opakování kroků 1 až 3, dokud není nadefinovaná soustava lineárních rovnic a následné řešení této soustavy V několika dalších zdrojích, především pak v dizertační práci pana Zennera (Zenner, 2004), se autor věnuje výše zmíněným i několika dalším útokům, které se používají pro proudové šifry založených na LFSR, ale pro ilustraci a rozsah této práce nám postačí výše uvedené. Ve zmiňované literatuře můžeme narazit na útoky, jako jsou například: Útoky odhadem (Útok Guess and verify, Útok Guess and determine, Linear consistency test, Dynamic linear consistency test), BDD útoky, Time-memory-data tradeoffs. 4.2 Cryptographic Mersenne Twister (CryptMT) V předchozí kapitole jsme představili generátor pseudonáhodných čísel Mersenne Twister a jak jsme zmiňovali, Mersenne Twister není kryptograficky bezpečný. Proto se zde zaměříme na jeho kryptograficky bezpečnou variantu, a to Cryptographic Mersenne Twister nebo zkráceně CryptMT, jehož hlavní část (tzv. mateřský generátor) tvoří právě uváděný Mersenne Twister (hraje roli lineárního konečného automatu s 19937 bity vnitřního stavu). Tento typ šifry patří mezi relativně nové a byl vytvořen pod záštitou projektu ECRYPT 7 v roce 2005. CryptMT je ve své podstatě velmi jednoduchým generátorem pseudonáhodných čísel pro proudové šifry, ale s obrovským množstvím vnitřních stavů, na čemž závisí podstata většiny útoků. Velikost vnitřního stavu tak činí CryptMT velmi odolným vůči mnoha běžným útokům. Pracuje s 32bitovými slovy a v každém kroku vytváří 8bitové výstupy. Velikost klíče a IV (inicializační vektor) této šifry jsou proměnné a mohou být určeny uživatelem (obojí až 2048 bitů = 64 7 Projekt ECRYPT, jehož domovská stránka je www.ecrypt.eu.org, vznikl v roce 2004 a během několika let zajistil návrhy a realizaci nových a bezpečnějších proudových šifer, které by vyhovovaly požadavkům moderní doby a nahradily tak starší, z velké části snadno prolomitelné a tudíž nevhodné, proudové šifry.

Kryptoanalytické útoky na metody generování pseudonáhodných čísel 33 slov). Délka periody je a spolu s bity vnitřního stavu, volitelnými velikostmi klíče a IV jsou hlavními výhodami této šifry oproti jiným proudovým šifrám. Veškeré bližší informace, nejen o CryptMT, můžete nalézt na webu projektu ECRYPT, popřípadě v (Matsumoto, Saito, Nishimura, Hagita, 2006). Kompletním popisem CryptMT mohou být rovnice:, pro, kde: označuje výstupní sekvence MT, značí stavovou posloupnost akumulátoru, označuje výstupní posloupnosti CryptMT,,, jsou bitový AND, XOR, OR, značí pravosměrné posuvné operace 32bitových slov, označuje násobení modulo ; až jsou definované konstanty:,,,, je modul; 4.2.1 Rozlišovací útoky Jsou jedním z obecných útoků na proudové šifry. Jejich cílem je rozlišit výstup dané proudové šifry od čistě náhodné posloupnosti s malými pravděpodobnostními chybami rychleji, než by to trvalo při úplném prohledávání pozic klíče. Pro tyto útoky budeme vycházet z (Khazaei, Shakour, 2005). Předpokládejme, že je výstupní sekvence MT a je stavová posloupnost akumulátoru, které jsou rovnoměrně rozloženy. Definujme 128 32bitových celých čísel, kde. Nechť a, pro. Jinak řečeno obsahuje všechna 32bitová celá čísla, kde první a ( )-tý nejméně významný bit (LSB) jsou jedničky, nejvýznamnějších bitů je nahodilých a zbylých bitů je nulových. Pro každé je 8 nejvýznamnějších bitů z a stej-

34 Kryptoanalytické útoky na metody generování pseudonáhodných čísel ných s nejméně významnými bity a mohou být také různé či stejné se zbylými nejvýznamnějšími bity. Můžeme říct, že pro každé je pravděpodobnost, že nejvýznamnějších 8 bitů z a se rovná za předpokladu, že je rovnoměrně rozděleno. Navíc pravděpodobnost, že se rovná každému, je pro. Pokud se hodnota nerovná žádnému, pravděpodobnost, že 8 nejvýznamnějších bitů z a je stejných, je rovna. Pomocí věty o úplné pravděpodobnosti, lze odvodit, že a se rovnají s pravděpodobností Všimněme si, že a pro. Toto zkreslení lze zachytit pomocí bajtů ( bitů) výstupní sekvence s pravděpodobností chyby kolem. Požadovaná výpočetní složitost je Prostorová a časová složitost lze snížit, pokud bychom se zaměřili na nejméně významné výstupní byty generátoru CryptMT. Můžeme ověřit, že LSB 8 nejvýznamnějších bitů z a, nebo také 25té nejméně významné bity z nich, jsou stejné pro každé a. Pokud hodnota není rovna žádnému, pravděpodobnost, že 25té nejméně významné bity z a jsou stejné je rovna. Opět pomocí věty o úplné pravděpodobnosti můžeme říct, že LSB z a jsou stejné s pravděpodobností Toto zkreslení lze zachytit pomocí bitů výstupní sekvence s pravděpodobností chyby kolem. Požadovaná výpočetní složitost v tomto případě je. Nyní jsme si ukázali, že nejméně významné bity všech dvou po sobě jdoucích výstupních bytů jsou stejné s pravděpodobností která nám ukazuje, že výstupní posloupnost CryptMT se odlišuje od čistě náhodné použitím asi bitů se stejnou výpočetní složitostí. Oba druhy chyb při rozlišovacím útoku se vyskytují s pravděpodobností asi. Pro následující část textu je vhodné definovat: velikost vnitřního stavu mateřského generátoru ( pro MT) velikost paměti filtru ( pro CryptMT) ;.

Kryptoanalytické útoky na metody generování pseudonáhodných čísel 35 4.2.2 Time-memory trade-off útoky Tyto útoky jsou široce využívány a spočívají v tom, že útočník má k dispozici předem vypočítaná data, pomocí kterých se snaží snižovat časovou složitost útoku. Time-memory trade-off útok na CryptMT spotřebovává jako svůj výpočetní čas zhruba odmocninu velikosti stavového prostoru, což je pro CryptMT asi a pro nejnovější verzi CryptMT (Version 3). V (Hong, Sarkar, 2005) byla uvedena i nová třída time-memory trade-off útoků, které již nejsou závislé na velikosti vnitřního stavu a záleží jen na velikosti klíče. Jsou tedy použitelné pro jakýkoliv druh proudové šifry. 4.2.3 Algebraické útoky Předpokládejme, že pro volné variabilní vstupy se používá filtr násobení. Pak, algebraický stupeň s-tého bitu se v dlouhodobém běhu zvyšuje na minimálně. U CryptMT jsou využity bity od třicátého druhého do dvacátého čtvrtého a jejich stupně by byly až. To je opravdu hodně ve srovnání s běžnými filtry bez paměti s omezeným počtem vstupních bitů, např. 16. Na základě těchto argumentů a experimentů s toy-modelem uvedeným v práci čtveřice Japonců Matsumota, Saita, Nishimury a Hagity (2005, s. 10), očekáváme, že algebraické stupně výstupů CryptMT, s ohledem na bity inicializačního stavu, by se měly blížit horní hranici po dostatečně velkém množství kroků. To je zásadní rozdíl od filtru bez paměti, protože výstupní bity lineárního mateřského generátoru jsou vždy prvního algebraického stupně, takže algebraický stupeň funkce filtru je omezen algebraickým stupněm každého výstupního bitu. 4.2.4 Útoky Berlekamp-Massey Lineární složitost lineárního generátoru s bity vnitřního stavu a filtrem bez paměti algebraického stupně má být přibližně, a Berlekamp- Massey útok vyžaduje údajů výpočetní složitosti. CryptMT má filtr s pamětí, takže tento odhad nemůžeme použít. Heuristický odhad je, že by bylo poměrně vysoké, pokud by bylo vhodně rozšířeno jako v případě filtru s pamětí. Díky velikosti se tyto útoky zdají být nemožné. 4.2.5 Shrnutí Velikost vnitřního stavu a délka periody CryptMT znemožňují útoky time-memory-trade-off a vysoká nelinearita by měla znemožňovat i al-