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

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

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)

SEKVENČNÍ LOGICKÉ OBVODY

Složitost Filip Hlásek

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

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

Regresní a korelační analýza

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

. Bezpečnost mobilních telefonů. David Machač

Matematika IV 10. týden Kódování

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

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

Informace, kódování a redundance

Architektura počítačů Logické obvody

Architektura počítačů Logické obvody

Regresní a korelační analýza

7. Rozdělení pravděpodobnosti ve statistice

Kódy a kódování dat. Binární (dvojkové) kódy. Kód Aikenův

Datové struktury 2: Rozptylovací tabulky

Vestavěné diagnostické prostředky 1 (BIST)

MÍRY ZÁVISLOSTI (KORELACE A REGRESE)

Obsah přednášky Jaká asi bude chyba modelu na nových datech?

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

ZÁKLADY DATOVÝCH KOMUNIKACÍ

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

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Způsoby realizace této funkce:

Rozprostřené spektrum. Multiplex a mnohonásobný přístup

Kódováni dat. Kódy používané pro strojové operace

Testování prvočíselnosti

Základní definice Aplikace hašování Kontrukce Známé hašovací funkce. Hašovací funkce. Jonáš Chudý. Úvod do kryptologie

Kapitola 1. Signály a systémy. 1.1 Klasifikace signálů

Normální (Gaussovo) rozdělení

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

3. Aritmetika nad F p a F 2

Úvod do zpracování signálů

Kvantové algoritmy a bezpečnost. Václav Potoček

INDUKTIVNÍ STATISTIKA

Představíme základy bezdrátových sítí. Popíšeme jednotlivé typy sítí a zabezpečení.

Stavební bloky kryptografie. Kamil Malinka Fakulta informačních technologií

Automatická detekce anomálií při geofyzikálním průzkumu. Lenka Kosková Třísková NTI TUL Doktorandský seminář,

Informatika / bezpečnost

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Disková pole (RAID) 1

ASYNCHRONNÍ ČÍTAČE Použité zdroje:

Standard IEEE

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

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

Jednoduché cykly

1 Mnohočleny a algebraické rovnice

Principy komunikace s adaptéry periferních zařízení (PZ)

ZÁKLADY DATOVÝCH KOMUNIKACÍ

ALGEBRA. Téma 5: Vektorové prostory

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

KOMBINAČNÍ LOGICKÉ OBVODY

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

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

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

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

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

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

TÉMATICKÝ OKRUH Softwarové inženýrství

Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb.

IMOSI - MODELACE A SIMULACE LEARN 2013 správně možná špatně

VY_32_INOVACE_E 15 03

Doplňování chybějících hodnot v kategoriálních datech 2.00

Disková pole (RAID) 1

Pravděpodobnost, náhoda, kostky

DSY-6. Přenosový kanál kódy pro zabezpečení dat Základy šifrování, autentizace Digitální podpis Základy měření kvality přenosu signálu

Pohled do nitra mikroprocesoru Josef Horálek

Usuzování za neurčitosti

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

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

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

KRY. Projekt č. 2. Kamil Dudka xdudka00

Logické řízení. Náplň výuky

CO JE KRYPTOGRAFIE Šifrovací algoritmy Kódovací algoritmus Prolomení algoritmu

Pravděpodobnost, náhoda, kostky

PROGRAMOVATELNÉ LOGICKÉ OBVODY

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

SIGNÁLY A LINEÁRNÍ SYSTÉMY

Kryptografie, elektronický podpis. Ing. Miloslav Hub, Ph.D. 27. listopadu 2007

Chyby měření 210DPSM

11. Tabu prohledávání

Projekt: 1.5, Registrační číslo: CZ.1.07/1.5.00/ Digitální podpisy

jednoduchá heuristika asymetrické okolí stavový prostor, kde nelze zabloudit připustit zhoršují cí tahy Pokročilé heuristiky

SIGNÁLY A LINEÁRNÍ SYSTÉMY

Direct Digital Synthesis (DDS)

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

MATURITNÍ TÉMATA Z MATEMATIKY

Matematické modelování dopravního proudu

Základy algoritmizace

5. Umělé neuronové sítě. Neuronové sítě

Třídy složitosti P a NP, NP-úplnost

Digitální modulace. Podpora kvality výuky informačních a telekomunikačních technologií ITTEL CZ.2.17/3.1.00/36206

2000 zveřejnění dobové zprávy General Report on Tunny

RNDr. Eva Janoušová doc. RNDr. Ladislav Dušek, Dr.

Transkript:

Masarykova univerzita Fakulta informatiky Generování pseudonáhodných dat založené na použití LFSR Bakalářská práce Ondřej Málek 2007

Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. V Brně 3. 1. 2007... 1

Rád bych poděkoval vedoucímu mé práce Mgr. Janu Krhovjákovi za odborné vedení, pomoc a trpělivost, bez čehož by tato práce nemohla vzniknout. Také bych rád poděkoval svým blízkým za psychickou podporu, kterou mi během tvorby práce poskytovali. 2

Shrnutí Tato práce se zabývá problematikou generování pseudonáhodných dat pomocí posuvných registrů s lineární zpětnou vazbou. Teoretická část se zabývá jak vlastnostmi LFSR a generátorů na nich založených, tak jejich praktickým použitím. V další části jsou rozebrány kryptoanalytické útoky a techniky pro testování těchto generátorů (se zaměřením na generátory vhodné pro praktické využití). Praktickou částí této práce je implementace vybraných generátorů (v jazyce C i Java) pro budoucí testování jejich rychlostí a vlastností. Klíčová slova Alternating-step generator, Bit-Search generator, Geffeho generátor, GLFSR, LFSR, m-lfsr, PRBG, pseudonáhodná data, Self-shrinking generator. 3

Obsah 1 Úvod...... 5 2 Generátory pseudonáhodných dat... 6 2.1 Generátory pseudonáhodných dat... 6 2.2 LFSR...... 6 2.3 Maximální LFSR...... 7 2.4 Vlastnosti výstupních sekvencí... 8 3 LFSR v praxi...... 10 3.1 Nekryptologické využití LFSR... 10 3.2 Kryptologické využití LFSR... 11 4 Bezpečnost LFSR PRBG...... 13 4.1 Všeobecné testy...... 13 4.2 Specifické útoky... 14 4.2.1 Útoky odhadem... 14 4.2.2 Korelační útoky... 15 4.2.3 Algebraické útoky... 16 4.2.4 BDD útoky... 17 4.2.5 Time-memory-data tradeoff... 17 5 Popis vybraných PRBG... 18 5.1 LFSR......18 5.2 Geffeho generátor... 18 5.3 Alternating step generator... 18 5.4 Self-shrinking generator... 19 5.5 Bit-Search generator... 19 5.6 GLFSR... 19 6 Implementace vybraných PRBG... 20 6.1 Implementace... 20 6.2 Výkonnostní test...... 21 7 Závěr...... 23 Reference...... 24 Příloha A Charakteristické polynomy...... 26 4

1. Úvod Dnešní svět je stále více a více závislý na moderních informačních technologiích. Počítače, mobilní telefony, komunikační sítě a množství dalších aplikací hrají stále větší roli v každodenním životě. Rozšiřující se využívání a větší důležitost těchto systémů přináší neustále nové a náročnější požadavky na jejich rychlost, spolehlivost a bezpečnost. Požadavky na bezpečnost nových aplikací a komunikace spolu s nárůstem dostupné výpočetní kapacity vedou k rozsáhlému výzkumu na poli kryptologie. Značná část v současnosti používaných nebo zkoumaných metod využívá v menší či větší míře (pseudo)náhodná data (bity, čísla, sekvence). Z typických aplikací uveďme například generování kryptografických klíčů (nezbytných jak pro symetrické, tak i asymetrické kryptosystémy), náhodných doplňujících hodnot či inicializačních vektorů. Generování skutečně náhodných dat, které se provádí na základě různých fyzikálních dějů a jevů, je v praxi často nahrazováno generováním pseudonáhodných dat. To je většinou prováděno pomocí softwarových nebo hardwarových mechanismů na základě vstupu malého množství skutečně náhodných dat a je řádově rychlejší. Generátory pseudonáhodných dat vhodné pro kryptografické účely v ideálním případě generují výstup nerozlišitelný od skutečně náhodných dat, který však vzniká deterministicky dle příslušného algoritmu. Tato práce se zabývá využitím posuvných registrů s lineární zpětnou vazbou (LFSR Linear Feedback Shift Register), a to hlavně jako generátorů pseudonáhodných dat pro kryptografické účely. LFSR jsou používány z několika důvodů. Díky své jednoduchosti jsou velmi vhodné pro implementaci v hardwaru i softwaru. Jejich výstup je za určitých podmínek velmi dobře statisticky rozložený, výstupní sekvence se opakují ve velkých cyklech, a v neposlední řadě jsou dobře popsatelné pomocí matematických metod, což pomáhá při jejich návrhu i testování. V této práci se nejprve, ve druhé kapitole, seznámíme s pojmem LFSR a s vlastnostmi jeho výstupních sekvencí. V třetí kapitole je rozbor využití generátorů založených na LFSR a to jak v kryptologické, tak nekryptologické rovině. Ve čtvrté kapitole je přehled současných útoků a testů, kterými jsou generátory pseudonáhodných čísel vystavovány. V páté kapitole je potom popsáno několik generátorů založených na LFSR spolu s jejich vlastnostmi. Tyto generátory jsou v praktické části implementovány v jazycích Java a C. Popis implementací a přehled výsledků testů rychlosti tvoří kapitolu šestou. 5

2. Generátory pseudonáhodných dat V této kapitole si zavedeme pojmy generátoru pseudonáhodných bitů a posuvného registru s lineární zpětnou vazbou (LFSR), jako jedné z možností vytváření těchto generátorů. Budeme vycházet hlavně z [1, 2]. 2.1 Generátory pseudonáhodných dat Moderní kryptografické mechanismy jsou často závislé na nutnosti existence náhodných dat. Vzhledem k složitosti a poměrně vysoké časové náročnosti generování skutečně náhodných dat (zpravidla díky různým fyzikálním dějům či jevům) se často využívají generátory pseudonáhodných bitů. Definice 1: Generátor pseudonáhodných bitů (PRBG pseudorandom bit generator) je deterministický algoritmus, který na základě semínka (z angl. seed) skládajícího se z n skutečně náhodných bitů vytváří výstup o délce k > n. Tento výstup je náhodný ve smyslu statistické pravděpodobnosti rozložení jednotlivých bitových hodnot. Jednou ze základních vlastností PRBG je determinismus výstupu, tzn. že daný PRBG dává při stejném semínku a stejném množství výpočetních cyklů vždy identickou výstupní sekvenci. Toho lze s úspěchem využít pro zmenšení objemu předávaných dat, kdy stačí předat pouze semínko a samotnou posloupnost z něj vygenerovat. Na druhou stranu musí být délka semínka dostatečně velká, aby se co nejvíce ztížilo prohledávání všech stavů, ve kterých by daný PRBG mohl být inicializován. Výstup PRBG, má-li být použit pro kryptologické účely, musí být nerozlišitelný od skutečně náhodné sekvence bitů a nesmí být pro útočníka výpočetně jednoduché z dané výstupní sekvence odvodit její pokračování (tzn. nepředvídatelnost). 2.2 LFSR Jednou z nejjednodušších možností implementace PRBG jsou posuvné registry s lineární zpětnou vazbou. Definice 2: Posuvný registr s lineární zpětnou vazbou (LFSR linear feedback shift register) délky L je konstrukce obsahující L vnitřních registrů R (označených R 0 až R L-1 ), časovací signál a charakteristický mnohočlen. Za každý takt časového signálu jsou provedeny následující operace: a) Obsah registru R i se přesune do registru R i-1 a obsah registru R 0 se předá na výstup. 6

b) Je vypočítán obsah pro registr R L-1, který je nazýván registrem zpětné vazby. Obr. 1: Schématické zobrazení LFSR. Na Obr. 1 je zachyceno schéma LFSR o délce L. Ve spodní řadě jsou registry, přičemž registr R 0 je výstupním a R L-1 je registrem zpětné vazby. Buňky C 1 -C L jsou koeficienty charakteristického mnohočlenu. Horní řada znázorňuje logickou funkci. Znak označuje funkci XOR. Každý z vnitřních registrů je schopný uchovávat jednu jednotku informace a má pouze jeden možný vstup a výstup. Registry jsou číslované od 0 do L-1 a jejich obsah zapsaný jako vektor (S 0, S 1,..., S L-1 ) je označován jako vnitřní stav (inner state) LFSR. Jednotka informace použitá v LFSR je zpravidla jeden bit (0, 1), ale používají se i větší hodnoty. Nejčastěji je to 2 n bitů, kde n je voleno tak, aby výsledek odpovídal velikosti slova zpracovatelného v dané architektuře v jednom taktu. Pro takový LFSR se používá označení obecný LFSR (generalized linear feedback shift register, GLSFR). V dalším textu budeme, až na výslovné výjimky, pracovat s LFSR využívajícím jako jednotku informace jeden bit. Další z komponent LFSR je charakteristický mnohočlen (characteristic polynomial). Koeficienty tohoto mnohočlenu jsou udávány ve tvaru zbytku po dělení dvěma, tedy 1 pro liché a 0 pro sudé koeficienty. Zapisován je buď ve tvaru: C(x) = 1+ c 1 x + c 2 x 2 +... + c L x L, nebo ve tvaru vektoru jako (c 1, c 2,..., c L ). Obsahy registrů, k nimž příslušný koeficient charakteristického mnohočlenu má hodnotu 1, jsou vstupem do logické funkce. Tou je v návrzích LFSR zpravidla funkce XOR (exclusive or ), ale setkáváme se také s funkcí XNOR (exclusive nor). Výstup této funkce je při každém taktu časového signálu zapsán do registru zpětné vazby. Semínko (seed), neboli výchozí stav (inicializační vektor) LFSR, je stav ve kterém se LFSR nachází v okamžiku spuštění taktovacího signálu. S tímto souvisí také zakázaný stav LFSR, což je pro logickou funkci XOR stav (0, 0,..., 0) a pro funkci XNOR (1, 1,..., 1). V zakázaném stavu se LFSR zacyklí nezávisle na charakteristické funkci a není schopen změnit svůj stav na jiný. Výchozí stav LFSR nesmí být zakázaný vzhledem k použité funkci. 2.3 Maximální LFSR LFSR se může obecně nacházet v 2 L vnitřních stavech, z toho jeden stav je zakázaný. Pro praktické využití je výhodné, aby bylo využito všech 2 L-1 vnitřní stavů. LFSR, který tolik stavů využívá, se nazývá maximální nebo také m-lfsr. 7

Definice 3: Maximálním LFSR nazýváme takový LFSR, jehož vnitřní stav (S 0, S 1,..., S L-1 ) se opakuje v periodě 2 L-1. Výstupní sekvence maximálního LFSR se nazývá m-sekvence a má délku L-1. Pro vytvoření maximálního LFSR je nutné splnit několik podmínek: a) Charakteristický mnohočlen musí být stupně L. b) Charakteristický mnohočlen musí být primitivní. c) LFSR nesmí být spuštěn v zakázaném stavu vzhledem k použité logické funkci. Primitivní mnohočlen je speciálním případem ireducibilního mnohočlenu. Mnohočlen stupně m je ireducibilní, pokud neexistuje nenulový mnohočlen stupně menšího než m, který ho dělí. Ireducibilní mnohočlen f(x) stupně m je primitivní právě tehdy, když dělí x k -1 a nejmenší kladné číslo k = p m -1, kde p je velikost jednotky informace a v této práci bude vždy 2. Vlastnost primitivnosti pro mnohočlen je algoritmicky dokazatelná, ale není znám algoritmus, který by mnohočleny s touto vlastností generoval jinak než výběrem z vhodných kandidátů. Z tohoto důvodu se pro výběr charakteristického mnohočlenu pro maximální LFSR využívají tabulky vhodných primitivních mnohočlenů. 2.4 Vlastnosti výstupních sekvencí Pro praktické využití v kryptologických aplikacích musí výstupní sekvence PRBG splňovat určitá kritéria. Ta jsou zavedena jako nutné, nikoli však dostačující podmínky pro použitelnost daného PRBG v praxi. Zde si zavedeme základní požadavky pro PRBG založené na LFSR. První z důležitých vlastností výstupní sekvence je velká periodicita výstupu. Pokud má výstup malou periodu, tzn. výstupní sekvence se opakuje v příliš krátkých intervalech, pak je generátor náchylný k útoku hrubou silou. Z tohoto důvodu se pro LFSR generátory používají zpravidla pouze maximální LFSR, které poskytují největší periodicitu výstupu. Výstupní sekvence musí dále splňovat jistá statistická kritéria. Pro m-sekvence platí, že vyhovují Golombovým požadavkům náhodnosti [1]. Ty naplňuje binární periodická sekvence s periodou N právě tehdy, když splňuje následující požadavky: a) V každém výstupním cyklu je počet jedniček rozdílný od počtu nul maximálně o jedna. b) Pokud označíme jedničkami ohraničenou sekvenci nul (1,0...0,1) jako mezeru (gap), nulami ohraničenou sekvenci jedniček (0,1...1,0) jako blok (block) a pro oba typy zavedeme označení běh (run), pak v každém výstupním cyklu má polovina běhů délku 1, čtvrtina délku 2, osmina délku 3... 1/2 i má délku i. Dále pro běhy stejné délky platí, že počet mezer je stejný jako počet bloků. N 1 c) Autokorelační funkce C t =1/ N 2s i 1. 2s i 1 1 má pouze dvě hodnoty i=0 v závislosti na velikosti posunu t. Pokud je t rovno nule, pak funkce vrací hodnotu N. Pro ostatní t (tedy1 t N-1) platí, že výsledek funkce je K pro všechna taková t. 8

Splnění Golombových požadavků náhodnosti je pouze základní nutný požadavek ohledně statistického rozložení výstupu, jaký je na PRBG založené na LFSR kladen. Požadavek velké periodicity výstupní sekvence i Golombovy požadavky náhodnosti jsou u maximálního LFSR dostatečné délky splněny díky samotné konstrukci. V případě použití pouze jedné jednotky LFSR bez dalších úprav se ale problémem stává velká linearita výstupu, tzn. skutečnost, že se informace o vnitřním stavu LFSR dostávají do výstupu. Máme-li výstupní sekvenci o délce k 2. L, kde L je délka LFSR, který ji generuje, pak lze pomocí algoritmu Berlekamp-Massey (například v [3]) vypočítat délku a charakteristický mnohočlen generujícího LFSR. Pokud takto zkonstruovaný LFSR inicializujeme na sekvenci délky L, pak můžeme vygenerovat celý zbytek sekvence původního generátoru. Pro popis této vlastnosti se zavádí pojem lineární složitosti: Definice 4: Lineární složitost (linear complexity) sekvence, značená L(s), je velikost nejmenšího možného LFSR, který generuje danou sekvenci. Výjimkou je sekvence 0...0 respektive sekvence, která není generovatelná žádným LFSR, tyto výjimky mají lineární složitost 0 respektive ). Pro výstupní sekvenci je důležité, aby měla co největší lineární složitost. Vzhledem k tomu, že lineární složitost maximálního LFSR je pouze L, je nutno do návrhu PRBG nelinearitu vkládat pomocí dalších mechanismů, kterými jsou: a) Využití nelineární funkce k sloučení výstupů několika různých LFSR. b) Využití nelineárního filtrovaní výstupu jednoho LFSR. c) Použití jednoho LFSR k časování jiného. Tyto přístupy k porušení linearity výstupní sekvence jsou nejčastějšími používanými možnostmi, často se ale využívají různé kombinace těchto přístupů. 9

3. LFSR v praxi LFSR, hlavně jako generátor pseudonáhodných dat, je používán ve velkém množství různých teoretických i praktických aplikací. Dále si zde blíže popíšeme jeho kryptologické i nekryptologické použití. 3.1 Nekryptologické využití LFSR se uplatňují jako alternativa k tradičním binárním čítačům, tedy zařízením, která zaznamenávají počet nějakých dějů. Důvod pro toto uplatnění je hlavně v nižší režii a vyšší rychlosti LFSR čítačů, a to zvláště při větších hodnotách [4]. Nevýhody oproti binárním čítačům jsou v neintuitivním zobrazení výsledků a absenci jednoduchého dělení dvěma. Obě jsou ale lehce kompenzovatelné, ať již na úrovni hardwaru nebo softwaru. Při použití LFSR jako čítačů je produktem nikoliv normální výstup (tedy jeden výstupní bit), ale vnitřní stav v okamžiku daném časovacím signálem. Velkou oblastí pro uplatnění LFSR jsou vestavěné samočinné testy v integrovaných obvodech, přepisovatelných pamětech a v hardwaru obecně. Pro zajištění kontroly spolehlivosti a funkčnosti je nutno tyto systémy často a důkladně testovat. Za tímto účelem se do těchto zařízení implementují vestavěné samočinné testy [5]. LFSR jsou pro tyto aplikace vhodné hlavně pro schopnost generovat z malého semínka velké množství dat. Samotné jsou ale nedostačující k zachycení všech možných chyb. Proto je využíváno mnoho různých technik pro modifikaci výstupu LFSR například úplná nebo částečná reinicializace, při které je možné měnit počáteční stav. Jinou možností je využití LFSR s více mnohočleny, kde je možno programovat vlastní mnohočlen zpětné vazby. V praxi se využívají i kombinace těchto přístupů. Další oblastí využití LFSR jako PRBG jsou telekomunikace. Například v technologii GPS (Globální polohovací systém Global Positioning System) [6] jsou dlouhé pseudonáhodné sekvence generované LFSR technologií vysílány ze satelitních stanic s tím, že každý satelit generuje jinou sekvenci na základě vlastního unikátního semínka. Následně si pozemní přijímač vypočítá stejnou sekvenci ze známých semínek a zjistí, o kolik a jak jsou vůči sobě posunuté sekvence z různých satelitů. Podle rozdílů je následně možné vypočítat pozici přijímače. V GPS jsou výstupní sekvence LFSR využity nejen pro výpočet pozice, ale na stejném principu i pro synchronizační komunikaci mezi stanicemi. Telekomunikační technikou, při které jsou pseudonáhodné sekvence také využívány, je přenos v rozprostřeném spektru (spread spectrum) [7,8,9]. Je to původně vojenská, dnes již však obecně používaná, technologie pro rozprostření signálů do většího množství frekvencí. Pseudonáhodné sekvence jsou zde užity v přístupu označeném jako přímo rozprostřené spektrum (Direct Sequence Spread Spectrum). V této technologii je kousek (chip) výstupu LFSR použit do funkce XOR s jedním bitem přenášených dat a vysílán je pak výstup této funkce. Takto modulovaný signál je rozprostřen do mnohem širšího pásma než je nutné, a díky tomu je podstatně odolnější proti rušení. Zároveň lze zužitkovat jednu frekvenci pro více přenosů. Z toho těží například CDMA (code division multiple acces) technologie používaná v mobilních telefonech nebo při přenosu dat ze satelitů GPS. Zde se pro rozprostření dat do širšího pásma používá tzv. Goldův kód (Gold code) [11], kdy je výstup dvou maximálních LFSR vstupem do součtové nebo XOR funkce. Generuje se 2 n-1 posloupností postupem, kdy se mění semínko jednoho z m-lfsr. Množina takto získaných kódů má dobré vlastnosti pro jejich vzájemné odlišení, a je tedy možné na jedné frekvenci bezpečně přenášet větší množství signálů. 10

LFSR se také využívá v samoopravných kódech, přesněji v Reed-Solomonově kódu (Reed- Solomon Code) [11]. Ten patří do kategorie BCH (Bose-Chadhuri-Hocquenghem) kódů, které přidávají do dat tzv. redundantní informace. Ty jsou v případě chyby využity pro vytvoření původních dat a pro jejich generování se využívá LFSR konstrukce. Reed-solomonův kód lze využít například pro ukládání dat na CD a DVD nebo pro zajištění integrity dat při jejich přenosu. Při přenosu dat se také používá pseudonáhodných sekvencí generovaných LFSR jako scrambleru pro randomizaci datového proudu [10]. Tato technika je využívána kvůli dlouhým sekvencím nul a jedniček například pro přenos digitálního (např. televizního) signálu. 3.2 Kryptologické využití LFSR je v kryptologii nejčastěji využíván v proudových šifrách pro generování pseudonáhodných dat pro proud klíčů. Následující definice vycházejí z [1, 2]. Definice 5: Proudovou šifrou označujeme takovou šifru, která kóduje vždy pouze jeden znak (v digitální podobě tedy zpravidla jeden bit) otevřeného textu v jeden okamžik a využívá k tomu transformační funkci, která se v čase mění. Proudové šifry jsou postaveny na principu Vernamovy šifry. Ta je definována jako: c i = m i k i pro i = 1, 2 3..., kde m 1, m 2, m 3... jsou znaky z otevřeného textu, k 1, k 2, k 3... jsou jsou znaky z proudu klíčů (tedy jednotlivé klíče) a c 1, c 2, c 3 jsou znaky zašifrovaného textu. Pokud je proud klíčů generován náhodně a nezávisle na otevřeném textu a jeho délka je stejná nebo větší než délka otevřeného textu, pak se tato šifra označuje jako jednorázová tabulková šifra (one-time pad). Ta je při jednorázovém použití daného klíče bezpečná. Zpráva takto zašifrovaná je bez správného klíče nerozluštitelná. V praxi je ale tato šifra těžko použitelná kvůli nutnosti využívat klíč o stejné nebo větší velikosti než jakou má otevřený text a nezbytnosti doručit ho bezpečně druhé straně. Pro praktické využití se tedy klíč, respektive proud klíčů, často generuje pomocí generátorů pseudonáhodných dat. Cílem je generovat z malého semínka pseudonáhodná data splňující určitá statistická kritéria (viz kap. 2.4). K tomu se pak často využívají PRBG založené na LFSR. Mezi nejrozšířenější patří šifry A5/1 a její slabší verze A5/2. Tyto šifry jsou použity pro kódování hovorů vedených z mobilních telefonů na sítích GSM (Global System for Mobile Communications). Šifry A5/1 a A5/2 využívají ke generování proudu klíčů tří respektive čtyř vzájemně se časujících maximálních LFSR. Ani jedna z těchto šifer není příliš silná a byla předvedena řada útoků [2, 13, 14]. V současné době se končí s používání slabší verze A5/2 a postupem času by mělo dojít k přechodu na blokovou šifru A5/3, která ale již LFSR nevyužívá. Velmi rozšířenou je také proudová šifra E0 [2, 13, 15] využívaná v bezdrátové síti Bluetooth pro šifrování přenášených dat. Základem E0 jsou čtyři nezávislé m-lfsr propojené s konečným automatem nazývaným sumační kombinátor (summation combiner) o 16 vnitřních stavech. Na tuto šifru bylo také již podniknuto několik útoků [2, 13, 16], ale žádný dosud neohrozil bezpečnost jejího praktického využití. LFSR je využíváno i v technologii HDCP [15] (High-bandwidth Digital-Content Protection) vyvinutou firmou Intel. Ta má za účel kontrolovat digitální video a audio přenášené po DVI nebo HDMI konektorech a využívá k tomu šifrování vzájemné komunikace stejnojmennou proudovou šifrou, jejíž základ tvoří čtyři LFSR a kombinační funkce. 11

Další proudová šifra, tentokráte založená na dvou LFSR a kombinační funkci vytvářející z jejích výstupů proud klíčů, je součástí systému CSS (Content Scrambling System), tedy systému pro ochranu obsahu DVD před nelegálním kopírováním. Ačkoliv oficiální standardy CSS nejsou uveřejněny, jeho popis lze nalézt v množství publikací [17]. LFSR je i v celé řadě dalších šifer jako jsou SOBER-t16 a SOBER-t32, shrinking generator, self-shrinking generator nebo SNOW [14]. Několik šifer založených na LFSR je také zastoupeno v projektu estream (ECRYPT Stream Cipher Project). Jsou to například Grain [20] sestávající z dvou LFSR a nelineární filtrovací funkce, která je vhodná pro hardware využití, nebo na software orientovaná šifra Sosemanuk [21] kombinující LFSR s konečným automatem. Existuje samozřejmě více různých PRBG založených na LFSR. Jedním z nich je Editing generator [22], který kombinuje dva ternární (tedy pracující nad množinou hodnot 0, 1, 2) LFSR. Dalším je BSG (The Bit-Search Generator) [24] využívající jednoduchý konečný automat vyhledávající ve výstupní sekvenci LFSR stejné bity jako rozhodovací člen pro generování pseudonáhodných dat. Mimo tyto aplikace je LFSR použito například v návrhu některých hašovacích funkcí pro autentizaci zpráv [19] nebo jako čítače v některých kryptografických a kryptoanalytických aplikacích [25]. Poslední oblastí kryptologického využití LFSR je zpracování skutečně náhodných dat [23]. Tento postup je označován jako digital postprocessing. Pro hardwarové generátory platí, že mohou podléhat ovlivňování a jejich výstup nemusí být statisticky náhodný. Z tohoto důvodu se na výstup generátoru náhodných čísel může implementovat PRBG. Do něj je jako semínko přiváděna náhodná sekvence z hardwarového generátoru. Výsledný výstup je pak tedy náhodný z hlediska nepředvídatelnosti (díky skutečně náhodnému semínku) i statistických vlastností (záleží samozřejmě na statistických vlastnostech daného PRBG). 12

4. Bezpečnost LFSR PRBG Bezpečnost je jedním z nejdůležitějších požadavků kladených na jakýkoliv PRBG určený pro kryptografické účely. Proto je nutné jejich návrhy pečlivě analyzovat a testovat. Důležitým poznatkem pro testování je však fakt, že bezpečnost PRBG lze takto pouze vyvrátit, nikoliv potvrdit. V této části je také pojmů útok a test používáno tak, že jsou navzájem zaměnitelné, jedná se o stejnou akci s různým cílem. Prvním krokem pro zajištění jejich bezpečnosti je testování PRBG proti již známým všeobecně použitelným útokům. Zde není vyžadována znalost návrhu daného PRBG testují se pouze statistické vlastnosti výstupních sekvencí. Pokud je generátor úspěšný, následuje návrh specifických útoků využívajících samotné konstrukce daného PRBG. V této kapitole budou představeny některé ze základních principů využívaných pro specifické testy. 4.1 Všeobecné testy Tato část vychází z teoretických informací uvedených v [1,2], další informace o představených testech a jejich použití jsou v [26]. Pro PRBG založené na LFSR by měly minimálně platit požadavky na výstupní sekvence uvedené v kapitole 2.4 tedy hlavně Golombovy požadavky náhodnosti, a co největší lineární složitost výstupní sekvence. Všeobecné testy PRBG jsou zpravidla založeny na statistickém testování výstupních sekvencí. To vychází ze stanovení dvou hypotéz, kdy H 0 je hypotéza, že testovaná sekvence je náhodná, a hypotéza H 1 značí opak, výstupní sekvence není náhodná tzn. je generována použitím nějakého generátoru (pseudo)náhodných čísel. Kvůli možnosti rozhodnout, která z hypotéz platí, je nutné, aby se statistické rozložení náhodné a nenáhodné sekvence lišily. Rozdíl mezi rozložením náhodné a nenáhodné sekvence nazýváme statistická vzdálenost a pro pseudonáhodné generátory by měla být co nejmenší. Výsledkem testu je pak rozhodnutí, zda testovaná sekvence vyhovuje hypotéze H 0 nebo H 1. Jádrem testu je rozhodovací pravidlo testová statistika (test statistic). Ta je vypočítána a výsledné rozložení je porovnáváno s hodnotou, jaké by měla daná statistika dosahovat pro ideálně náhodnou sekvenci. Tyto ideální hodnoty jsou předem známy. Součástí testu je také kritická hodnota (critical value), která udává možnost odchylky od ideálních hodnot. Pokud výsledek testu kritickou hodnotu přesahuje, pak je jako pravdivá přijata hypotéza H 1. Při takovémto rozhodování se mohou vyskytnout dva druhy chyb. První, označovaná termínem chyba I. druhu, nastává tehdy, když je sekvence náhodná a je přijata hypotéza H 1. Pravděpodobnost výskytu této chyby se nazývá hladina významnosti (significance level), je označována symbolem α a zpravidla se pro daný test určuje předem. Druhou možností, tedy chybou II. druhu, se označuje situace, kdy je jako skutečně náhodná zamítnuta, tzn. je přijata hypotéza H 0. Tato chyba má pravděpodobnost výskytu označovanou písmenem β. Při daném rozsahu výběrového souboru pro tyto pravděpodobnosti platí, že čím menší je α, tím větší je β a naopak. V ideálním stavu by samozřejmě měly být tyto dvě hodnoty co nejmenší. 13

Zde je popis některých statistických testů, které by měl PRBG podstoupit, kdy uvedené testy (případně v jistých modifikacích) odpovídají Golombovým požadavkům náhodnosti (viz kap. 2.4). Výčet samozřejmě není úplný, ale pokrývá nejzákladnější testy. Poker test Tento test vychází z předpokladu, že pro m < s, kde s je délka testované sekvence, se v každém náhodně vybraném podřetězci vyskytují všechny navzájem se nepřekrývající bitové vzory stejně často. Speciálním případem poker testu je takzvaný monobit test (nebo frequency test), kdy je m = 1. Zde se testuje počet nul a jedniček v sekvenci, přičemž by v náhodné sekvenci měl být počet nul a jedniček přibližně stejný. Monobit test odpovídá prvnímu z Golombových požadavků náhodnosti a je tedy pro m-sekvence jednoho LFSR splněn triviálně. Dalším případem poker testu je tzv. serial test (také two-bits test), kdy se počítají pouze výskyty možných dvojic znaků, tedy 00, 01, 10 a 11. Odlišnost od poker testu s m = 2 je v počítání, které zahrnuje překrývající se vzory. Serial test se také používá pro delší překrývající se vzory. Runs test Tímto testem je zjišťováno, zda je rozložení běhů (sekvence jedniček, respektive nul ohraničené z obou stran nulami respektive jedničkami) v sekvenci pravidelné, tedy zda odpovídá druhému Golombovu požadavku náhodnosti. Autocorrelation test Zde je zjišťováno, o kolik se liší sekvence od vlastní posunuté verze. To se zjišťuje na základě Hammingovy vzdálenosti mezi původní a posunutou sekvencí. Generátory, které úspěšně projdou autocorrelation test, splňují třetí Golombův požadavek náhodnosti. 4.2 Specifické útoky Ačkoliv specifické útoky jsou založeny na vlastním návrhu daného LFSR, existuje množství základních přístupů k testování. Ty, ač jsou vlastně všeobecným návodem na testování PRBG, jsou zde uvedeny jako specifické útoky, neboť zpravidla nejsou využitelné u všech možných návrhů, a také je nutno je před použitím na daném PRBG uzpůsobit. Tato část vychází z materiálů publikovaných v [2,14] Útoky jsou porovnávány s útokem hrubou silou. Ten pro LFSR PRBG odpovídá prohledávání všech možných hodnot výchozích stavů a vygenerování odpovídají výstupní sekvence, která se následně porovnává s původní. Úspěchem se v případě specifických útoků rozumí útok s časovou složitostí menší, než je potřebná pro plný útok hrubou silou. 4.2.1 Útoky odhadem Útoky odhadem jsou založené na zjednodušení útoku hrubou silou tak, aby nebylo nutné hádat hodnoty všech možných stavů všech LFSR v generátoru. Útok Guess and verify V případě tohoto útoku útočník odhaduje část vstupní sekvence a pokouší se vyloučit některé z těchto odhadů. Předpokladem tohoto útoku je možnost z částečného odhadu určit, zda je nebo není možné z něj generovat očekávanou výstupní sekvenci. Pokud je množství takto vyloučených částí dostatečně velké, je možné na zbytku provést útok hrubou silou a ověřovat proti testované sekvenci. 14

Útok Guess and determine Guess and determine je útok, který rozšiřuje předchozí Guess and verify. Znovu je zde nutné vyloučit některé z odhadů části vstupních sekvencí. V druhé fázi ale nejdříve útočník pokouší pomocí analýzy výstupu generátoru sestrojit další část vstupních dat a až poté provést útok hrubou silou na chybějící data. Linear consistency test Při tomto útoku se útočník snaží odhadnout takovou část vstupních sekvencí, aby bylo možné zbylé části a jejich souvislost s výstupním proudem vyjádřit pomocí soustavy lineárních rovnic. Útočník si nejdříve ověřuje, zda si rovnice v soustavě neodporují v takovém případě je špatný již odhad vstupní sekvence a musí se zopakovat. V případě korektnosti rovnic se z nich dopočítají zbylé části vstupu. Dynamic linear consistency test Toto rozšíření předchozího testu je založeno na zjištění, že linear consistency test odvozuje svoji složitost od množství odhadů původního klíče. Dynamické rozšíření pracuje tak, že není odhadován kompletní klíč, ale systém lineárních rovnic je budován pro každý jednotlivý bit. Díky tomu je možno neúspěšné odhady zjišťovat dříve a s menším výpočetním úsilím. 4.2.2 Korelační útoky Korelační útoky se zakládají na faktu, že ve výstupu PRBG vytvořeného na principu nelineární kombinace nebo filtrování několika LFSR se často vyskytuje korelace s některým ze vstupů. To znamená, že pravděpodobnost závislosti výstupu na některém vstupu je větší než 1/2. Pro příklad takovéhoto útoku si vezmeme PRBG založený na nelineární kombinaci n LFSR (L 1... L 2 ), kde hodnoty l 1... l n udávají délky daných LFSR. Pak počet možných klíčů (tedy kombinace všech vstupních sekvencí jednotlivých LFSR) je 2 li 1 1. i=1 Předpokládáme, že je možno vysledovat korelace mezi výstupy jednotlivých LFSR a celkovým výstupem PRBG a pravděpodobost těchto korelací označíme p, kde p>0.5. Pak je možno porovnat výstup PRBG s možnými posuny výstupu L i dokud výsledná pravděpodobnost korelací neodpovídá korelační pravděpodobnosti p. Díky tomu můžeme odhadnout vstupní sekvenci L i v maximálně 2 li 1 1 krocích. Při korelaci u všech LFSR jsme takto schopni zjistit vstupní sekvence všech LFSR L 1... L n v maximálně n i=1 než by bylo potřeba k prohledání prostoru klíčů hrubou silou. 2 l i 1 1 krocích, což je podstatně méně, Korelační útoky jsou velmi efektivní. Z toho důvodu se k nim musí přihlížet při návrhu generátorů a vytvářet nelineární kombinační funkce takovým způsobem, aby nedocházelo ke korelacím. Tato snaha však naráží na fakt, že čím vyšší je korelační imunita dané funkce, tím nižší je lineární složitost. Proto jsou generátory s lineární složitostí vyhovující nárokům na odolnost proti Berlekamp-Massey algoritmu napadnutelné pomocí korelačních útoků. Siegenthalerův útok Siegenthalerův útok je variantou na guess and verify útok prezentovaný výše. Platí zde předpoklad, že výstup je v korelaci s vstupem registru A. Útok je založen na výpočtu Hammingovy vzdálenosti mezi testovanou sekvencí a odhadnutým obsahem registru. Při dostatečné velikosti výstupních dat je možné s určitou pravděpodobností rozhodnout, zda byl odhad obsahu registru A správný. Rozhodnutí je učiněno na základě rozložení Hammingovy vzdálenosti a prahové hodnotě. Pokud je vybráno více kandidátů, je potřeba použít další testy pro nalezení správné hodnoty. n 15

Rychlé korelační útoky Tyto útoky znovu využívají korelaci mezi vstupní sekvencí a výstupem, ale k výpočtu inicializačních vektorů využívají poznatky z teorie kódování. Díky vlastnostem LFSR je každý bit ze vstupní sekvence vyjádřitelný pomocí soustavy lineárních rovnic. Pokud je využita teorie kódování a na výstupní sekvenci je nahlíženo jako na vstupní sekvenci maskovanou chybovou sekvencí (kde pravděpodobnost chyby je menší než ½), pak pokud je některý ze vstupních bitů funkcí pozměněn ztrácí příslušná soustava lineárních rovnic řešení. Díky tomu lze rozhodnout který bit byl pozměněn a zpětně zrekonstruovat vstupní sekvenci. Tyto útoky jsou úspěšně proveditelné pouze pro malé množství nenulových koeficientů v charakteristickém polynomu, tedy je-li jeho váha co nejmenší. Z tohoto důvodu je doporučováno využívat pro LFSR charakteristické polynomy s větší váhou. Proto bylo vyvinuto i několik různých přístupů využívajících další algoritmy z teorie kódů, které však nejsou zpravidla uplatnitelné jako obecné principy, ale pouze jako opravdu specifické útoky na dané generátory. Důležitý je i poznatek, že korelační útoky nelze jednoduše aplikovat na generátory postavené na použití jednoho generátoru k časování druhého. U těchto generátorů není útočníkovi k dispozici korelace mezi vstupem a výstupem ve smyslu předchozího textu. Lze zde pouze využít jiných měřítek korelace, kterou je Lavenshteinova vzdálenost udávající minimální množství elementárních operací nutných ke změně jedné sekvence na druhou. Tato korelační technika umožňuje na některých specifických časovaných generátorech korelační útok provést. 4.2.3 Algebraické útoky Algebraické útoky využívají k zjišťování vstupních sekvencí nelineární rovnice. Ty popisují bity výstupní sekvence jako nelineární kombinace bitů sekvence vstupní. Jejich vyřešením je tak možné zrekonstruovat z výstupu (s pomocí znalostí o konstrukci generátoru) inicializační vektory LFSR. Kompletní řešení soustavy nelineárních rovnic je NP problém, řešitelné jsou pouze části těchto soustav. Pro řešení soustav se využívá několik technik. První z nich je linearizace, kdy se v soustavě nahrazují nelineární jednočleny normálními proměnnými, následně je vypočten výsledek a proměnné znovu nahrazeny jednočleny. Problémem je zde ztráta určitých informací při substituci za proměnnou. Další technikou je rozšiřování soustavy rovnic pomocí redundantních informací. Nové rovnice jsou vytvářeny pomocí násobení původních malým jednočlenem. Výsledek je za určitých podmínek (velikost stupně) přidán k původní soustavě. Ta, po takovémto rozšíření, je zpracována pomocí linearizace, jak je uvedeno výše. Díky redundantním informacím se omezuje dopad linearizace na ztrátu informací. Tento útok lze úspěšně aplikovat například na Geffeho generátor (viz kap. 5.1). Zde je každý bit výstupu reprezentován jednou rovnicí stupně dva. Pro tento útok tedy stačí mít (l 2 + l)/2 výstupních bitů pro vybudování řešitelné soustavy rovnic a tedy pro útok v polynomiálním čase. Za využití technik linearizace a rozšiřování lze dále počet rovnic popisujících výstupní bit zvětšovat a efektivně tak snižovat množství výstupních bitů, které je nutné pro úspěšný útok. 16

4.2.4 BDD útoky BDD útoky využívají binární rozhodovací diagramy (binary decision diagram BDD), přesněji volné BDD označované FBDD (free BDD). FBDD jsou grafovou reprezentací Booleovských funkcí, přičemž splňují podmínku efektivního spojování funkcí. Každý výstupní bit a jeho lineární závislosti definují Booleovskou funkci vracející jedna při splnění podmínky znázorněné pomocí jednoho FBDD. Útoky pomocí FBDD mají za úkol vytvořit z výstupní sekvence vnitřní výstupní proudy jednotlivých LFSR, a to tak, že musí být zachovány veškeré závislosti výstupu LFSR a tyto proudy musí při dané kombinační funkci vytvářet testovanou výstupné sekvenci. Samotný útok je proveden spojením jednotlivých FBDD do jedné funkce mající jako proměnné výstupní proud. Tato funkce vrací jedna pro kandidáty splňující podmínky útoku. S rostoucím množstvím dat použitým pro útok se zmenšuje množství kandidátů. 4.2.5 Time-memory-data tradeoffs Útoky využívající time-memory-data tradeoff jsou založeny na principu, kdy se snižuje časová složitost útoku pomocí uložených předem vypočítaných dat. To je využíváno například u útoku hrubou silou a dalších útoků. V případě útoku hrubou silou se předem vypočítá určité množství náhodných vstupních sekvencí a k nim příslušných výstupů z PRBG. Následně jsou dvojice těchto hodnot uloženy do tabulky a ta je prohledávána při samotném útoku, což efektivně snižuje náročnost útoku. Je však nutné mít poměrně velkou výstupní sekvenci pro zvýšení pravděpodobnosti kolizí s předpočítanými výstupy. Existuje několik modifikací toho útoku, zpravidla využívající různé metody, jak zjednodušit prohledávání uložené tabulky. Time-memory tradeoff útok byl v několika variantách s úspěchem použit například na šifru A5/1 (viz kap. 3.2). V základní variantě tento útok skladoval tabulku 2 42 128 bitových vzorků, díky čemuž bylo množství kroků v samotném online útoku sníženo na 2 22. Tento útok byl později vylepšován optimalizací ukládaných dat a zvětšováním jejich množství. Time-memory-date tradeoff útoky jsou jedním z důvodů, proč je u LFSR PRBG nutné mít co největší množství vnitřních stavů. 17

5. Popis vybraných PRBG V této kapitole jsou popsány generátory pseudonáhodných čísel vybrané k implementaci jejíž detaily jsou popsány v následující kapitole. Zde se zaměříme na teoretické informace o jejich konstrukci a vlastnostech a o jejich případných slabinách. 5.1 LFSR Toto je generátor složený pouze z jednoho LFSR. Jeho výstup plně odpovídá vlastnostem uvedeným v kapitolách 2.2 až 2.4. 5.2 Geffeho generátor Geffeho generátor (Geffe generator) [1] je typickým příkladem PRBG založeného na kombinaci výstupu několika LFSR pomocí nelineární kombinační funkce. Zde je využíváno tří m-lfsr, kde A, B jsou datové LFSR a C je kontrolní. Délky LFSR l A, l B, l C jsou navzájem nesoudělné. Výstupní bity jednotlivých LFSR v jednom kroku označíme x A, x B x C. Kombinační funkce je definována takto: f(x A,x B,x C ) = x A.x C x B.x C x B. Výstupem Geffeho generátoru po jednom kroku je tedy x A, pokud je kontrolní bit x C roven 1. V opačném případě je výstupem generátoru x B. Lineární složitost výsledného proudu klíčů odpovídá l A.l C + l B.l C + l B a jeho celková perioda je 2 l A 1. 2 l B 1. 2 l C 1. Nevýhodou Geffeho generátoru je, navzdory velké periodicitě a dobré lineární složitosti výstupu, že vnitřní stavy jednotlivých generátorů procházejí do výstupní sekvence, a tudíž je tento generátor slabý vůči korelačním útokům (viz kap. 4.2.2). 5.3 Alternating step generator Alternating step generator [1] je založen na časování dvou m-lfsr A a B pomocí kontrolního registru C. Délky m-lfsr l A, l B a l C jsou stejně jako v případě Geffeho generátoru navzájem nesoudělné a jednotlivé výstupní bity dílčích LFSR označíme a, b, c. Při běhu tohoto generátoru v každém kroku proběhne nejprve generování bitu c. Dle jeho hodnoty je následně jeden z bitů a, b vygenerován a u druhého je zopakována předchozí hodnota. Výstupem celého generátoru v jednom kroku je pak a b. Formálně řečeno, pokud jsou výstupy LFSR A, B a C značené jako a 1, a 2, a 3..., b 1, b 2, b 3... a c 1, c 2, c 3... a a 1 = b 1 = 0 pak výstupní bit x i = a f(j) b 1-f(j), kde f(j) = c i. j i=1 Výstup tohoto generátoru má dobré statistické vlastnosti, velkou periodicitu a lineární složitost. Navíc tento generátor vykazuje velkou odolnost i proti korelačním útokům. 18

5.4 Self-shrinking generator Dalším z vybraných generátorů je Self-shrinking generator [2, 13] (dále SSG), který je jedním z mladších návrhu PRBG. SSG využívá pouze jeden m-lfsr délky l. Pro výstup se u SSG využívá dvojice výstupních bitů z LFSR, kdy první z nich je označen jako rozhodovací bit (selection bit) a druhý jako aktivní (active). Pokud je rozhodovací bit 1, tak je aktivní bit vypuštěn jako do výstupní sekvence, jinak jsou oba bity zahozeny a je vygenerována nová dvojice. Označíme tedy výstupní bit v jednom kroku x, rozhodovací bit b s a aktivní bit jako b a. Pak x = 1 pro (b s, b a ) = (1, 1), x = 0 pro (b s, b a ) = (1, 0). V ostatních případech SSG nevygeneruje v daném kroku žádný bit. Z tohoto plyne nevýhoda SSG nový bit je vygenerován průměrně 1x za čtyři časování LFSR. Velikost výstupní sekvence za daný počet časovacích signálů je proti jednoduchému LFSR čtvrtinová. Na druhou stranu SSG vytváří výstupní sekvenci s vhodnými statistickými vlastnostmi za použití pouze jednoho LFSR. SSG s l > 3 vykazuje periodu i lineární složitost 2 l-1 a zároveň dobré statistické vlastnosti. Na tento generátor byla publikována řada útoků, ať již útoky odhadem, time-memory-data tradeoff nebo BDD útok. Pokud je však využit charakteristický polynom s větší váhou, pak nejsou v současnosti tyto útoky pro l > 120 prakticky využitelné. 5.5 Bit-Search generator Bit-Search generator [24] (dále BSG) je jedním z nejnovějších návrhů generátorů založených na LFSR. Stejně jako Self shrinking generátor se skládá pouze z jednoho m-lfsr a kombinační logiky pracující na jeho výstupu. BSG vytváří výstupní sekvenci prohledáváním výstupu LFSR. První bit v sekvenci je jako vzor a je hledán další stejný bit. Pokud je nalezen v jednom kroku, tzn. následuje po vzoru, je výstupem generátoru 0 a další bit je označen jako vzor. Pokud je odpovídající bit nalezen až po více krocích je do výstupní sekvence vložena 1. Tento generátor stejně jako SSG produkuje na základě jednoho LFSR sekvenci s vhodnými statistickými vlastnostmi. BSG má jeden bit výstupu v průměru jednou za tři časování LFSR, tedy 1/3 rychlost oproti jednoduchému LFSR. Perioda výstupu je nejméně 2 (l-2)/4-1 pro l >3, kde l je délka LFSR. Lineární složitost nebyla zatím popsána, ale dle experimentálních výsledků je dostatečná. Proti BSG bylo předloženo několik útoků, které jsou velmi efektivní proti generátorům s charakteristickým polynomem malé váhy. 5.6 GLFSR Obecný LFSR, obvykle označovaný jako GLSFR, je takový LFSR, kde není jednotkou informace jeden bit ale více bitů. Zpravidla je to 2 n bitů pro vhodné zpracování na dané architektuře. Ostatní vlastnosti normálního LFSR, jako periodicita výstupu nebo lineární složitost jsou zde zachovány ale vztahují se na jednotku informace a ne na jednotlivé bity. Tyto generátory se zpravidla nepoužívají v kryptologii, ale spíše v samočinných testovacích zařízeních, a proto nejsou podrobovány takové kryptoanalýze jako generátory určené pro šifrování. Jsou ceněny pro možnost generování většího množství dat v rámci jednoho časování LFSR. 19

6. Implementace vybraných PRBG 6.1 Implementace Každý z vybraných generátorů (viz kap. 5) byl implementován jak v jazyce Java, tak v jazyce C. Obě verze jsou textově orientované a vstup inicializačních vektorů 1, výstup a jeho množství udávají parametry příkazové řádky. Programy jsou zkompilované pro operační systém Windows, kód v C pomocí Mingw 5.1.2 a kód v jazyce Java v Jdk 1.6.0. Názvy spustitelných souborů v C respektive Javě jsou pro jednotlivé generátory: LFSR lfsr.exe lfsr.class Geffeho generátor geffe.exe geffe.class Alternating step generator alter.exe alter.class Self-shrinking generator ssg.exe ssg.class Bit-Search generator bsg.exe bsg.class GLFSR glfsr.exe glfsr.class Spouštění generátorů probíhá pomocí příkazové řádky a využívá se následující syntax: název.exe [PARAMETRY], respektive java název [PARAMETRY], kde [PARAMETRY] mohou být následující: -a velikost Velikost výstupu v bytech. Pro implementaci v C je rozsah 1 až 2 31, implementace v Javě má rozsah 1 až 2 63. Pokud je jako číslo zadána číslice 0, pak je výstup generován v nekonečném cyklu. -ik -if soubor -ost Zadání inicializačního vektoru pro vnitřní registry z klávesnice. Inicializační vektor je vložen pomocí binárních dat ze souboru. Výstupem generátoru bude textová posloupnost nul a jedniček, vypsaná na standardní výstup. Tento parametr není podporován generátorem GLFSR. -oft soubor Výstupem generátoru bude textová posloupnost nul a jedniček, uložená do souboru. Tento parametr není podporován generátorem GLFSR. -ofb soubor Výstup generátoru se zapíše do souboru jako binární data. Jeden z parametrů určujících typ výstupu musí být vždy zadán. Pokud se tak nestane nebo pokud je generátor spuštěn bez parametrů, je na standardní výstup vypsána nápověda. V případě, že není zadán ani jeden z dvojice parametrů -ik nebo -if soubor, jsou vnitřní registry nastaveny na 1. Příklady spuštění generátorů: lfsr.exe -a 52428800 -if input.bin -osb output.bin vytvoří 50MB binární soubor, který je výstupem LFSR inicializovaného binárními daty ze souboru input.bin. java ssg -ost vypíše na standardní výstup sekvenci 100 znaků 0 nebo 1, které jsou výstupem generátoru SSG se všemy registry inicializovanými na 1. 1 Nejedná se zde o inicializační vektor v kryptologickém, respektive kryptografickém smyslu slova. 20

Délky jednotlivých LFSR v generátorech, stejně jako charakteristické polynomy, jsou v generátorech zadané v kódu. Pro jejich změnu je nutno je přenastavit ve zdrojových kódech, a to pro implementace v C v souboru option.h a pro implementace v Javě na začátku metody main. 6.2 Výkonnostní test Výkonnostní test implementovaných generátorů byl proveden za účelem porovnání rychlostí implementací v různých jazycích a zároveň pro zjištění, jaký vliv na dobu generování má váha charakteristického polynomu, tedy počet nenulových koeficientů. Testování probíhalo na sestavě Athlon 64 (939 venice), základní deska Asus A8-VM, 512MB DDRAM. Jádrem testu bylo generování 50MB sekvencí. Pro každý generátor byly vygenerovány tři takovéto sekvence a výsledné časy byly zprůměrovány. Pro každou sekvenci byl vstup jiný, ale tyto tři vstupy byly totožné pro testování každého generátoru. Tyto tři testy byly také pro každý generátor provedeny dvakrát, jednou s charakteristickým polynomem malé váhy a jednou s váhou větší. Pro nastavení startovních podmínek bylo zadáno, že délka LFSR byla 54. Pro Alternating-step generator a Geffeho generátor, které se skládají ze tří LFSR, byly provedeny dva testy. Při prvním měly všechny LFSR délky co nejbližší hodnotě 54 2, tedy kontrolní registr měl délku 54, registry A (B) měly délku 49 (55). Při druhém testu byla celková délka všech LFSR v generátoru 54, to znamenalo, že kontrolní registr měl délku 22 a registry A (B) měly délku 15 (17). Stejně tak byly nastaveny podmínky i pro váhu charakteristického polynomu, kdy pro jeden test byly zvoleny polynomy o váze 3 a pro druhý test polynomy o váze 33. V případě druhé sady testů pro Alternating-step generator a Geffeho generátor to znamenalo, že celkový součet vah všech LFSR byl 3 respektive 35 (aby zůstalo zachováno množství koeficientů 1 v polynomu). Výsledky testů jsou přehledně zapsány v následující tabulce. Výsledné časy jsou uvedeny v sekundách. Generátor C Java malá váha velká váha malá váha velká váha lfsr 220 320 230 470 geffe 1 223 285 257 441 geffe 2 636 921 530 1173 alter 1 160 209 216 346 alter 2 430 616 382 835 ssg 853 1258 630 1601 bsg 668 948 517 1213 glfsr 35 50 110 135 Tab. 1: Výkonnostní test generátorů. Charakteristické polynomy, které byly pro testování použity, jsou uvedeny v příloze A. 2 A zároveň aby pro dané polynomy existovaly primitivní polynomy váhy 3. 21

Z výsledků vyplývá, že váha charakteristického polynomu má poměrně velký vliv na rychlost generátoru. Pro polynomy o malé váze byly výsledky mezi implementacemi v C a v Javě srovnatelné, pro velkou váhu charakteristického polynomu jsou implementace v Javě podstatně pomalejší. Zajímavých výsledků bylo dosaženo pro Alternating step generator a Geffeho generátor. V prvních testech, kdy byly tři vnitřní LFSR nastaveny na celkovou délku 54, dosáhly tyto generátory proti jednoduchému LFSR o délce 54 v případě Alternating step generator lepšího a v případě Geffeho generátoru přibližně shodného výsledku. V druhých testech, kdy byly všechny vnitřní LFSR nastaveny na délky blízké 54, dosáhly tyto generátory podstatně horších výsledků. Na přiloženém CD jsou uloženy zdrojové kódy a přeložené programy implementovaných generátorů, spolu s vygenerovanou sekvencí o velikosti 50MB pro každý generátor. 22

7. Závěr Tato práce měla za cíl analyzovat generátory pseudonáhodných dat založené na posuvných registrech s lineární zpětnou vazbou, a to zejména s ohledem na použití v kryptografii. Popsali jsme si vlastnosti těchto generátorů spolu s náležitostmi, které musí splňovat pro praktické využití. Zároveň jsme si přiblížili možnosti těchto generátorů výčtem jejich současného uplatnění. Velká část práce byla věnována rozboru testovacích technik, které jsou v rámci návrhu jednotlivých generátorů využívány. Tyto testy (respektive kryptoanalytické techniky) jsme si popsali zároveň s vlastnostmi nutnými pro úspěšné splnění těchto testů, a tedy pro základní kryptografickou bezpečnost. Také zde bylo nastíněno, jak tyto pro kryptografii důležité vlastnosti ovlivňují návrh a konstrukci různých generátorů. V praktické části bylo popsáno a v programovacích jazycích Java a C implementováno šest různých pseudonáhodných generátorů založených na LFSR. Tyto generátory bude možné použít pro jejich další testování, ať už rychlosti nebo kryptografických vlastností. V rámci implementace byla provedena jejich výkonnostní analýza. Výsledky potvrdily předpokládné poměry rychlostí. Nejrychlejší byl GLFSR, následovaný LFSR. Nejpomalejší byly podle očekávání Bit-search generator a Self-shrinking generator, jejichž rychlosti zachovávají poměr dle teoretických výpočtů. Zvláštní kategorií jsou výsledky u Alternating step generator a Geffeho generátoru v závislosti na délkách jejich vnitřních LFSR. 23

Reference [1] Menezes, A., Van Oorchost, P., Vanstone, S.: Handbook of Applied Cryptography, CRC Press, 1996. Dokument dostupný na URL: http://www.cacr.math.uwaterloo.ca/hac/. (duben 2006) [2] Zenner, E.: On cryptographic Properties of LFSR-based Pseudorandom Generators, [PhD thesis], Manheim, 2004. Dokument dostupný na URL: http://th.informatik.uni-mannheim.de/people/zenner/pub/phdzenner.pdf. (duben 2006) [3] Khan, S. U., Till, S., Trippen, G. a kolektiv: COMP 685A project report Berlekamp-Massey Algorithm, Hong Kong University of Science and Technology, 2001. Dokument dostupný na URL: http://ihome.ust.hk/~trippen/cryptography/bm/frameset.html. (duben 2006) [4] Balph, T.: LFSR counters implement binary polynomial generators, EDN, 1998 [5] Agrawal,V.D., Kime, Ch. R., Saluja, K., K.: A tutorial on Built-in Self-Test, In IEE Design & test of computers 1993 [6] Global Positioning System standard positioning service signal specification, 2nd ed. 1995. Dokument dostupný na URL: http://www.navcen.uscg.gov/pubs/gps/sigspec/default.htm. (duben 2006) [7] Klassen, R.: Spread Spectrum A Brief Tutorial, OMNEX Control System, 2003. Dokument dostupný na URL: http://www.omnexcontrols.com/files/white_papers/spread_spectrum_2.pdf. (duben 2006) [8] Dinah, E. H., Jabbari, B.: Spreading Codes for Direct Sequence CDMA and Wideband CDMA Cellular Networks in IEEE Communications Magazine, September 1998. Dokument dostupný na URL: http://www.comsoc.org/ci/private/1998/sep/pdf/jabbari.pdf. (duben 2006) [9] Staudek, J.: Rozprostřování spektra, [poznámky k přednášce], Masarykova univerzita, Brno, 2005. Dokument dostupný na URL: www.fi.muni.cz/usr/staudek/ vyuka/commsys/09. (duben 2006) [10] Nova Engineering, Cincinnati: Linear Feedback Shift Register Megafunction, 1996. Dokument dostupný na URL: http://www.sss-mag.com/pdf/lfsr.pdf. (duben 2006) [11] George, M., Hamid, M., Miller, A. : Gold Code Generators in Virtex Devices. Dokument dostupný na URL: www.xilinx.com/bvdocs/appnotes/xapp217.pdf. (duben 2006) [12] Shah, S.S., Yaqub, S., Suleman, F.: Self-correcting codes conquer noise, Part 2: Reed- Solomon codes, EDN magazine, 2001. Dokument dostupný na URL: http://www.tmssales.com/application_notes/digital_test/reedsolomon.pdf. (duben 2006) [13] Barkan, E., Biham, E., Keller, N.: Instant Ciphertext-Only Cryptanalysis of GSM Encrypted Communication, Hifa 2006. Dokument dostupný na URL http://www.cs.technion.ac.il/users/wwwb/cgi-bin/tr-get.cgi/2006/cs/cs-2006-07.pdf. (květen 2006) 24