Kódování a kryptologie

Podobné dokumenty
Věta o dělení polynomů se zbytkem

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

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

grupa těleso podgrupa konečné těleso polynomy komutativní generovaná prvkem, cyklická, řád prvku charakteristika tělesa

[1] x (y z) = (x y) z... (asociativní zákon), x y = y x... (komutativní zákon).

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

8 Kořeny cyklických kódů, BCH-kódy

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

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

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

ALGEBRA. Téma 4: Grupy, okruhy a pole

4 Počítání modulo polynom

Dosud jsme se zabývali pouze soustavami lineárních rovnic s reálnými koeficienty.

Počet kreditů: 5 Forma studia: kombinovaná. Anotace: Předmět seznamuje se základy dělitelnosti, vybranými partiemi algebry, šifrování a kódování.

1 Mnohočleny a algebraické rovnice

Operace s maticemi. 19. února 2018

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

Charakteristika tělesa

)(x 2 + 3x + 4),

Těleso racionálních funkcí

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:

1 Co jsou lineární kódy

Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace

1 Báze a dimenze vektorového prostoru 1

Lineární algebra : Lineární prostor

1 Mnohočleny a algebraické rovnice

Algebraické struktury s jednou binární operací

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

Operace s maticemi

Báze a dimenze vektorových prostorů

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

Matice. a m1 a m2... a mn

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

Cyklické kódy. Definujeme-li na F [x] n sčítání a násobení jako. a + b = π n (a + b) a b = π n (a b)

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

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

0.1 Úvod do lineární algebry

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

Teoretická informatika Tomáš Foltýnek Algebra Struktury s jednou operací

Nechť M je množina. Zobrazení z M M do M se nazývá (binární) operace

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

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.

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í

1 Lineární prostory a podprostory

0.1 Úvod do lineární algebry

15. Moduly. a platí (p + q)(x) = p(x) + q(x), 1(X) = id. Vzniká tak struktura P [x]-modulu na V.

Pomocný text. Polynomy

Střípky z LA Letem světem algebry

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.

Odpřednesenou látku naleznete v kapitolách skript Abstraktní a konkrétní lineární algebra.

Hisab al-džebr val-muqabala ( Věda o redukci a vzájemném rušení ) Muhammada ibn Músá al-chvárizmího (790? - 850?, Chiva, Bagdád),

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

Úvod do lineární algebry

Učební texty k státní bakalářské zkoušce Matematika Vlastní čísla a vlastní hodnoty. študenti MFF 15. augusta 2008

Vektorový prostor. Př.1. R 2 ; R 3 ; R n Dvě operace v R n : u + v = (u 1 + v 1,...u n + v n ), V (E 3 )...množina vektorů v E 3,

Základní pojmy teorie množin Vektorové prostory

Lineární algebra Kapitola 1 - Základní matematické pojmy

2. V Q[x] dělte se zbytkem polynomy:

Matematika B101MA1, B101MA2

Aritmetika s didaktikou I.

1 Linearní prostory nad komplexními čísly

Úvod do teorie informace

označme j = (0, 1) a nazvěme tuto dvojici imaginární jednotkou. Potom libovolnou (x, y) = (x, 0) + (0, y) = (x, 0) + (0, 1)(y, 0) = x + jy,

Matematika B101MA1, B101MA2

Učební texty k státní bakalářské zkoušce Matematika Algebra. študenti MFF 15. augusta 2008

Karel Klouda c KTI, FIT, ČVUT v Praze 28. února, letní semestr 2010/2011

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

Matematické základy šifrování a kódování

Lineární algebra Operace s vektory a maticemi

Okruhy, podokruhy, obor integrity, těleso, homomorfismus. 1. Rozhodněte, zda daná množina M je podokruhem okruhu (C, +, ): f) M = { a

(Cramerovo pravidlo, determinanty, inverzní matice)

VI. Maticový počet. VI.1. Základní operace s maticemi. Definice. Tabulku

1.3. Číselné množiny. Cíle. Průvodce studiem. Výklad

Aritmetika s didaktikou I.

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

6. Vektorový počet Studijní text. 6. Vektorový počet

8 Matice a determinanty

Úlohy k procvičování textu o svazech

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

ALGEBRA. 1. Pomocí Eukleidova algoritmu najděte největší společný dělitel čísel a a b. a) a = 204, b = 54, b) a = , b =

Lineární algebra : Polynomy

1 Vektorové prostory.

Lineární algebra : Polynomy

ALGEBRA. Téma 5: Vektorové prostory

Polynomy. Vlasnosti reálných čísel: Polynom v matematice můžeme chápat dvojím způsobem. 5. (komutativitaoperace )provšechnačísla a, b Rplatí

Samoopravné kódy, k čemu to je

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

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

Matematický ústav Slezské univerzity v Opavě Učební texty k přednášce ALGEBRA I, zimní semestr 2000/2001 Michal Marvan. 2.

Cyklické kódy. Alena Gollová, TIK Cyklické kódy 1/23

1 Polynomiální interpolace

MPI - 5. přednáška. 1.1 Eliptické křivky

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Teorie informace a kódování (KMI/TIK)

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

Množiny, relace, zobrazení

Výroková a predikátová logika - XII

Číselné vektory, matice, determinanty

Lineární algebra : Násobení matic a inverzní matice

Transkript:

České vysoké učení technické v Praze Fakulta dopravní Katedra aplikované matematiky Kódování a kryptologie Vývojová verze skripta 30. září 2013

2

Obsah 1 Kódování zpráv 11 1.1 Základní pojmy............................... 11 1.2 Prefixové kódy............................... 14 1.3 Blokové kódy................................ 15 1.3.1 Informační a kontrolní znaky.................... 16 1.3.2 Informační poměr kódu....................... 17 1.3.3 Systematické kódování....................... 17 1.3.4 Ekvivalence kódů.......................... 17 1.4 Cvičení.................................... 18 2 Bezpečnostní kódy 19 2.1 Objevování chyb.............................. 19 2.2 Minimální vzdálenost............................ 20 2.3 Opravování chyb.............................. 21 2.4 Cvičení.................................... 22 3 Algebra pro kódování a kryptologii 23 3.1 Algebraická tělesa.............................. 23 3.1.1 Definice a základní vlastnosti................... 23 3.1.2 Tělesa Z p.............................. 24 3.1.3 Řád prvku.............................. 26 3.1.4 Primitivní prvek.......................... 27 3.1.5 Diskrétní logaritmus........................ 28 3.1.6 Charakteristika tělesa........................ 29 3.2 Polynomy.................................. 29 3.2.1 Kořeny polynomů.......................... 30 3.2.2 Modulární okruhy polynomů.................... 30 3.3 Galoisova tělesa............................... 31 3.3.1 Definice a základní vlastnosti................... 32 3.3.2 Minimální polynomy........................ 34 3.3.3 Implementace aritmetiky v Galoisových tělesech......... 34 3.4 Cvičení.................................... 35 3

4 OBSAH 4 Lineární kódy 37 4.1 Základní pojmy............................... 37 4.2 Generující a kontrolní matice....................... 38 4.3 Duální kód.................................. 39 4.4 Chyby a minimální vzdálenost....................... 39 4.5 Cvičení.................................... 40 5 Cyklické kódy 43 5.1 Definice a základní pojmy......................... 43 5.1.1 Generující polynom......................... 44 5.1.2 Kontrolní polynom......................... 47 5.1.3 Generující a kontrolní matice cyklického kódu.......... 47 5.1.4 Rozklad polynomu x n 1..................... 48 5.1.5 Generující kořeny kódu....................... 50 5.2 BCH kódy.................................. 51 5.3 Reedovy-Solomonovy kódy......................... 52 5.3.1 Binární kódy odvozené z Reedových-Solomonových kódů.... 52 5.4 Shlukové chyby............................... 52 5.5 Cvičení.................................... 53 6 Konstrukce kódů 55 6.1 Rozšíření a zúžení.............................. 55 6.2 Zvětšení a zmenšení............................. 57 6.3 Prodloužení a zkrácení........................... 57 6.4 Prokládání.................................. 57 7 Kódy pro kompresi dat 59 7.1 Proudové kódování............................. 59 7.2 Statistické metody............................. 59 7.2.1 Kraftova nerovnost......................... 60 7.2.2 Huffmanovy kódy.......................... 61 7.2.3 Huffmanova konstrukce binárního kódu.............. 62 7.2.4 Shannon-Fanovo kódování..................... 64 7.3 Aritmetické kódování............................ 65 7.4 Slovníkové metody............................. 65 7.4.1 Lempel-Zivovo kódování...................... 66 7.4.2 Algoritmus LZW.......................... 67 7.5 Používané programy pro kompresi dat.................. 69 7.6 Cvičení.................................... 70 8 Základy teorie informace 71 8.1 Chyby v přijaté zprávě........................... 71 8.1.1 Pravděpodobnost nezachycené chyby............... 71 8.1.2 Dekódování maximální pravděpodobnosti............. 72

OBSAH 5 8.2 Sdělovací kanály............................... 72 8.2.1 Binární symetrický kanál...................... 73 8.2.2 Pravděpodobnost nedetekované chyby v BSC.......... 73 8.3 Entropie................................... 74 8.4 Základní Shannonova věta......................... 77 A Webové stránky 81

6 OBSAH

Seznam použitých zkratek a symbolů PGP Pretty Good Privacy RSA Rivest, Shamir, Adlemanův algoritmus DES Data Encryption Standard Z [Z i ] Těleso M Množina A Abeceda A,B,C Písmena abecedy E Šifrovací transformace D Dešifrovací transformace H Entropie N Množina přirozených čísel Z Množina celých čísel R Množina reálných čísel Z/26Z Modulární okruh čísel reprezentujících 26 znaků anglické abecedy Z/2Z Modulární okruh nad abecedou {0, 1} v Vektor w Slovo v i Složka vektoru w i Složka slova M Matice zobrazení p Polynom K Kód dlog(a) Diskrétní logaritmus prvku a dlog 1 (a) Inverzní funkce k diskrétnímu logaritmu S Zdroj informace d Minimální vzdálenost kódu Z Zobrazení p(x) Pravděpodobnost, že nastane jev x 7

8

Úvod Doplnit! 9

10

Kapitola 1 Kódování zpráv 1.1 Základní pojmy Při přenosu nebo uchování informace musíme často nahradit znaky původní zprávy znaky jinými. Jedním z důvodů bývá nemožnost přenést původní zprávu zvolenými technickými prostředky například Morseův telegraf neumožňoval přenos mluvené řeči, na papír nelze přímo zaznamenat tóny 1 a podobně. V současné době je hlavním důvodem pro volbu jiných znaků (zpravidla jedniček a nul) efektivnost a použití výpočetní techniky. Tento proces, přesněji řečeno předpis, který ho realizuje, se nazývá kódování. Nechť jsou dány dvě konečné množiny A (zdrojová abeceda) a B (kódová abeceda). Prvky množiny A, resp. B, označujeme jako zdrojové, resp. kódové znaky. Kódová abeceda se nejčastěji skládá z číslic, písmen nebo čísel 2, jejími prvky však mohou být například i slova, barvy (dopravní semafory), geometrické útvary (námořní znaky), tóny nebo gesta (policista řídící dopravu na křižovatce). To, čemu běžně říkáme abeceda, tj. množině písmen A Z, budeme v tomto textu nazývat anglická abeceda, i když správnější název by byl latinská abeceda. Kód, jehož kódová abeceda je množina {0, 1}, přesněji řečeno těleso Z 2, se nazývá binární kód. Kód s tříprvkovou kódovou abecedou se nazývá ternární, se čtyřprvkovou abecedou kvaternární kód. S přesnou definicí a vlastnostmi tělesa Z 2 a dalších konečných těles se seznámíme v kapitole??. Slovo v dané množině je konečná a neprázdná posloupnost prvků z této množiny; množinu všech slov množiny A, resp. B, značíme A, resp. B. Slova z A, resp. B, nazýváme zdrojové, resp. kódové zprávy. Kódování je zobrazení K : A B. Množina všech kódových slov K(a), kde a jsou zdrojové znaky, se nazývá kód. Kódování zdrojových zpráv je zobrazení K : A B, které je rozšířením kódování K. Příklad 1.1 Máme za úkol zakódovat údaje o prospěchu studentů u závěrečných zkoušek pomocí posloupnosti nul a jedniček. Můžeme zvolit například toto kódování: 1 Noty už jsou určitý druh kódu. 2 Číslo a číslice není totéž! 11

12 KAPITOLA 1. KÓDOVÁNÍ ZPRÁV neprospěl 0 prospěl 01 prospěl s vyznamenáním 100 nedostavil se 111 omluven 1000 Zdrojovou abecedou A je množina pojmů neprospěl, prospěl, prospěl s vyznamenáním, nedostavil se, omluven, kódovou abecedou je množina B = {0, 1}. Kód je množina všech kódových slov K = {0, 01, 100, 111, 1000}. Zdrojovou zprávu omluven, prospěl s vyznamenáním, prospěl, prospěl, prospěl s vyznamenáním zakódujeme jako 10001000101100. *** Praktický význam mají pouze kódování prostá, tj. taková, kde různým zdrojovým znakům odpovídají vždy různá kódová slova. Nadále budeme uvažovat výhradně prostá kódování, aniž bychom tuto vlastnost znovu zdůrazňovali. Příklad 1.2 (Q-kódy) V mezinárodním radiovém provozu se používá systém smluvených třípísmenných zkratek začínajících písmenem Q. Například QRS znamená vysílejte pomaleji, QSL znamená potvrdím vám příjem a podobně. Kódovou abecedou tohoto kódu je anglická abeceda, kódová slova jsou (nikoliv všechny) trojice začínající písmenem Q. Zdrojové zprávy jsou věty, týkající se věcí v telegrafii podstatných. Příklad 1.3 (Námořní vlajkový kód) Obdobný systém jedno- až třípísmenných zkratek, zastupujících celé zprávy, se používá také v námořní signalizaci. Vyvěsí-li například loď vlajku V, znamená to potřebuji pomoc, loď s vyvěšenou vlajkou H má na palubě lodivoda, vlajka O znamená muž přes palubu. Dvojpísmenné signály jsou například DX potápím se, KM mohu vás vzít do vleku nebo IW požár je pod kontrolou. Signály týkající se lékařské pomoci se skládají ze tří písmen, z nichž první je M. Signály obsahující číselné údaje jsou víceznakové: signál S3 udává rychlost 3 uzly, C175 udává kurs 175 stupňů, T1345 znamená místní čas 13 hodin 45 minut. Jednotlivá písmena a číslice jsou reprezentovány vlajkami. Písmena kromě písmen A a B mají vlajky obdélníkové, vlajky číslic mají tvar podlouhlých rovnoramenných trojúhelníků. Naříklad vlajka N je modrobílá šachovnice, vlajka Y má šikmé žluté a červené pruhy, vlajka I je černý kruh ve žlutém poli, vlajka 7 je trojúhelník, jehož spodní polovina je červená a horní bílá atd. To, že vlajky nejsou jen obrázky, ale mají význam písmen, nejen usnadňuje zápis kódu, ale umožňuje i hláskovat jména nebo informace, pro které neexistuje smluvené kódové slovo. Prohlížíme-li si vlajky signálního kódu, můžeme pozorovat zřetelnou snahu omezit nebezpečí nesprávného rozpoznání vlajky. Jednak není použita zelená barva, která by mohla být na dálku snadno zaměněna za barvu modrou, jednak jsou tvary vzorů co nejrozmanitější vodorovné, svislé i šikmé pruhy, latinské i ondřejské kříže a další tvary. Rozdělíme-li například obdélníkovou vlajku svisle na dvě poloviny, můžeme při

1.1. ZÁKLADNÍ POJMY 13 použití pěti barev (černá, červená, modrá, žlutá, bílá) vytvořit 10 různých barevných kombinací. Z nich jsou skutečně použité pouze dvě žluto-modrá vlajka K a bílo-červená vlajka H. Potřeba zamezit zkreslení a špatné interpretaci informace se v kódování vyskytuje velmi často. Tento závažný problém zpravidla nelze řešit tak jednoduchými prostředky, jako je vhodná volba kódové abecedy. V moderním kódování je nezbytné zabezpečit správnost informace vlastnostmi samotného kódu. Touto problematikou se bude podrobně zabývat kapitola?? a kapitoly následující. Protože většina zpráv v běžném životě je zapsaná pomocí písmen abecedy, číslic a několika interpunkčních znamének, vznikla v historii řada kódů určených k zakódování abecedy. Příklad 1.4 (Morseova abeceda) Morseova abeceda přiřazuje jednotlivým znakům anglické abecedy sekvence teček a čárek oddělené mezerami. Můžeme na ni tedy nahlížet jako na ternární kód s kódovou abecedou {,, /}. Zdrojovou zprávu konec zakódujeme jako / / / / //. Příklad 1.5 (Baudotův kód) Pro dálnopisy byl vyvinut Baudotův kód a jeho různé varianty. Baudotův kód kódoval jednotlivá písmena jako pětiznakovou sekvenci nul a jedniček (které byly reprezentovány jako otvor, resp. nevyděrovaná pozice na papírové děrné pásce). Tento kód měl 2 5 = 32 kódových slov, což stačilo pro všechna písmena abecedy, ale již ne pro číslice. Proto musela být vyhrazena dvě speciální kódová slova jako přepínač pro psaní čísel (a speciálních znaků) a přepínač pro psaní písmen. Jednotlivá písmena abecedy za sebou nenásledovala podle abecedy, například písmeno A mělo kód 01111, písmeno B bylo 11001, C bylo 01001, D bylo 00001 a tak dále. Volba kódových slov pro jednotlivá písmena nebyla náhodná, ale vycházela ze způsobu jejich zapisování pomocí pěti kláves tak, aby minimalizovala únavu operátora. Kompletní popis Baudotova kódu můžete najít na webové stránce s adresou http: //www.nadcomm.com/fiveunit/fiveunits.htm. Zájmemcům o dálnopisy a podobná historická zařízení doporučuji navštívit stránky http://www.nadcomm.com/ nebo http://www.vauxelectronics.com/gil/tty/. Ty, které zajímá historie výpočetní techniky, by mohly zaujmout i weby počítačových muzeí http://www.computer-museum.org/ a http://www.old-computers.com/. Příklad 1.6 (Kód ASCII) ASCII kód používá pro reprezentaci každého znaku sekvenci sedmi binárních číslic. Tím má možnost vyjádřit 2 7 = 128 znaků a to stačí pro všechna velká i malá písmena, číslice, interpunkční znaménka a 32 speciálních (řídících) znaků. Jednotlivá písmena jsou abecedně uspořádána a tvoří souvislou posloupnost. Ve stejné době vyvinula firma IBM kód EBCDIC. Ten má písmena také seřazena abecedně, netvoří však souvislou posloupnost; mezi úseky abecedy jsou vsunuty speciální znaky a interpunkční znaménka.

14 KAPITOLA 1. KÓDOVÁNÍ ZPRÁV Podrobnosti k Baudotovu a ASCII kódu může zájemce najít na internetové adrese http://www.vauxelectronics.com/gil/tty/docs/smith--teletype-codes.htm. Pro studium vlastností kódů nejsou důležité vlastnosti zdrojové abecedy, ani smysl a význam kódovaných zpráv. Podstatné jsou pouze vlastnosti kódové abecedy a zejména vlastnosti kódu ve smyslu množiny všech kódových slov. Proto se nadále kromě příkladů nebudeme vůbec zmiňovat o zdrojové abecedě. 1.2 Prefixové kódy Prefixem (tj. předponou) slova v 1 v 2... v n je každé ze slov v 1, v 1 v 2,...,v 1 v 2... v n to znamená každý začátek slova v 1 v 2... v n. Kódování se nazývá prefixové, jestliže je prosté a žádné kódové slovo není prefixem jiného kódového slova. 3 Prefixové kódování je vždy jednoznačně dekódovatelné. Příklad 1.7 ASCII kód (příklad 1.6) je prefixový kód. Všechna jeho kódová slova jsou stejně dlouhá a proto žádné z nich nemůže být prefixem jiného. Příklad 1.8 Kód z příkladu?? není prefixový kód, protože kódové slovo pro neprospěl je prefixem kódového slova pro prospěl. Tento kód není jednoznačně dekódovatelný. Například kódová zpráva 001000111100 mohla vzniknout zakódováním zdrojové zprávy neprospěl, prospěl,neprospěl,neprospěl, neprospěl, nedostavil se, prospěl s vyznamenáním nebo jiné zdrojové zprávy, například neprospěl, neprospěl, prospěl s vyznamenáním, prospěl, nedostavil se, neprospěl, neprospěl. Existují ovšem i kódování, která jsou jednoznačně dekódovatelná a přitom nejsou prefixová. Příklad 1.9 Kódování A 0 B 01 C 011 D 0111 E 01111 není prefixové, protože kódové slovo pro A je prefixem všech ostatních kódových slov, kódové slovo pro B je prefixem kódových slov pro C, D a E atd. Každou kódovou zprávu je však možné jednoznačně dekódovat stačí postupovat od konce zprávy. Prefixové kódy jsou jediné kódy, které lze dekódovat znak po znaku. To znamená, že nemusíme čekat na přijetí celé zprávy, ale již v okamžiku, kdy přijmeme začátek zprávy, tvořený jedním kódovým slovem, můžeme určit první zdrojový znak. Tím je dán velký praktický význam prefixových kódů. Nadále se jinými než prefixovými kódy nebudeme zabývat. 3 Máte pravdu, logičtější název by byl neprefixové kódování.

1.3. BLOKOVÉ KÓDY 15 1.3 Blokové kódy Délka kódových slov může být různá pro různé zdrojové znaky, jako je tomu v příkladu 1.1 nebo u Morseovy abecedy (příklad 1.4). Kódy s nestejnou délkou slov se uplatňují v oblastech, kde je potřeba zajistit kompresi dat. Těmito kódy se bude zabývat kapitola 7. Blokové kódování délky n je kódování, při kterém všechna kódová slova mají stejnou délku n. Příklad 1.10 Baudotův kód z příkladu 1.5 nebo ASCII kód (příklad 1.6) jsou příklady blokových kódů. Morseova abeceda není blokovým kódem, protože jednotlivá písmena jsou kódována různým počtem teček a čárek. Blokový kód 4 je vždy kódem prefixovým. Žádné kódové slovo nemůže být prefixem jiného, protože všechna kódová slova jsou stejně dlouhá. Příklad 1.11 (Kód celkové kontroly parity) Binární kód celkové kontroly parity délky 4 sestává ze slov délky 4, která obsahují sudý počet jedniček; těchto slov je celkem 8: 0000 0011 0101 0110 1111 1100 1010 1001 Příklad 1.12 (Kód dva z pěti ) Kód dva z pěti je blokový kód délky 5, který obsahuje všechna slova délky 5, ve kterých jsou právě dvě jedničky: 00011 00110 01100 11000 10001 10010 10100 01010 01001 00101 Protože těchto slov je celkem 10, můžeme tento kód použít například ke kódování číslic 0 9. K tomuto účelu byl skutečně používán, poprvé v roce 1943, a později i v prvním československém elektronickém 5 počítači EPOS, uvedeném do provozu v roce 1963. Příklad 1.13 (Genetický kód) Zajímavý je pohled na kód, který vznikl v přírodě a nikoliv lidským úsilím. Genetický kód kóduje složení bílkovin v organismu. V prvním přiblížení je bílkovina lineární sekvencí aminokyselin. Aminokyselin, které se vyskytují v bílkovinách, je celkem 20, k jejich zakódování je proto zapotřebí kód, který má nejméně 20 kódových slov (plus nějaké navíc pro řídící znaky). Genetický kód je realizován kyselinou (deoxy)ribonukleovou (RNA, resp. DNA). RNA je lineární struktura, podél které jsou navázány čtyři druhy nukleových bází adenin, guanin, cytosin a uracyl, značí se počátečními písmeny A, G, C, U. Vždy tři po sobě následující báze kódují jednu aminokyselinu, například GCA kóduje aminokyselinu alanin, UAU kóduje thyrosin atd. Tyto tři po sobě následující báze tvoří kódové slovo, které se v genetice nazývá kodón. Vysvetlit podrobneji, J.P. nerozumi zcela 4 Ve starší literatuře můžeme najít i termín pravidelný kód. 5 elektronkovém

16 KAPITOLA 1. KÓDOVÁNÍ ZPRÁV Genetický kód je tedy blokový kvaternární kód s kódovou abecedou B = {A, C, G, U}. Délka bloku je 3, množina B má tedy 4 3 = 64 slov, což pro všechny aminokyseliny bohatě postačuje. Přiřazení jednotlivých aminokyselin ke slovům kódové abecedy je nerovnoměrné, dvě aminokyseliny jsou kódovány vždy jediným kodónem (aminokyselina methionin je kódována AUG, aminokyselina tryptofan kodónem UGG), většina aminkokyselin dvěma nebo čtyřmi kodóny (například fenylalanin je kódován kodóny UUU a UUC, prolin je kódován kodóny CCU, CCC, CCA a CCG) a tři aminokyseliny jsou kódovány šesti různými kodóny (například serin je kódován kodóny UCU, UCC, UCA, UCG, AGU a AGC). Kodóny UAA, UAG a UGA jsou tzv. terminační kodóny, kódují konec bílkovinného řetězce; kodón AUG je iniciační kodón, kóduje začátek bílkoviny místo, odkud má začít dekódování (a kromě toho ještě aminokyselinu methionin). Všechna slova množiny B jsou kódová, každý kodón kóduje nějakou aminokyselinu (nebo konec řetězce). Pokud tedy dojde k chybě při přepisu genetické informace, vždycky z toho vznikne nějaká bílkovina, často ovšem nefunkční. To, že genetický kód sám o sobě nemá žádnou schopnost detekce chyb, příroda částečně kompenzuje tím, že se v dvouvláknové DNA, v níž je genetická informace dlouhodobě uložena, obsahuje druhé paralelní vlákno DNA její kopii (nebo přesněji řečeno doplněk). Jedná se tedy o jakýsi přírodní RAID1. 1.3.1 Informační a kontrolní znaky U některých blokových kódů lze rozdělit znaky na informační, do nichž se kóduje informace, a kontrolní, které jsou jednoznačně určeny volbou informačních znaků: jestliže existuje prosté zobrazení množiny všech slov délky k na množinu všech kódových slov, řekneme, že kód K má k informačních znaků a n k kontrolních znaků. Takový kód označujeme jako (n,k)-kód. Příklad 1.14 (Kód celkové kontroly parity) Binární kód celkové kontroly parity délky 4 zavedený v příkladu 1.11 má 3 informační znaky a jeden (například poslední) znak kontrolní, který je těmito třemi znaky jednoznačně určen. Stejně tak bychom mohli za kontrolní označit například znak druhý, z praktických důvodů však dáváme přednost výše uvedené volbě kontrolního znaku. Příklad 1.15 (Opakovací kód) Binární opakovací kód délky 4 je kód, ve kterém se první znak čtyřikrát opakuje, má tedy jen dvě kódová slova 0000 a 1111. První znak slova jednoznačně určuje všechny tři zbývající znaky. Tento kód má jeden informační znak a tři kontrolní znaky. Příklad 1.16 (Kód dva z pěti ) Kód dva z pěti z příkladu 1.12 nemá oddělené informační a kontrolní znaky. Množina kódových slov má 10 prvků, což není mocnina dvou. Proto nemůže pro žádné k existovat prosté zobrazení množiny {0, 1} k na množinu kódových slov.

1.3. BLOKOVÉ KÓDY 17 1.3.2 Informační poměr kódu Jestliže kód K má k informačních znaků a n k kontrolních znaků, pak podíl k n nazveme informační poměr kódu K. Informační poměr kódu udává množství nadbytečné informace přidané do kódu. Kód, který má malý informační poměr, tj. obsahuje hodně kontrolních znaků, je neúsporný, zabírá v paměti více místa, jeho přenos a zpracování trvá déle. Na druhé straně kódy s velkým informačním poměrem nemohou mít dobré detekční a samoopravné vlastnosti, jak uvidíme v kapitole 2. Příklad 1.17 Binární kód celkové kontroly parity délky 4 má informační poměr 3 4. Binární opakovací kód délky 4 má informační poměr 1 4. 1.3.3 Systematické kódování Nejpřehlednější kódování znaků je systematické kódování, kdy zdrojové slovo tvoří prvních k znaků kódového slova. Kód, který má systematické kódování, se nazývá systematický kód. Jednou z výhod systematického kódu je jeho snadné kódování i dekódování. Příklad 1.18 Binární kód celkové kontroly parity délky 4 je systematický (4, 3) kód. Systematické kódování: ke zdrojovému slovu přidáme jeden kontrolní znak, který je součtem všech znaků zdrojového slova. Například 100 1001, 101 1010, 011 0110 a podobně. Příklad 1.19 (Kód dva z pěti ) Kód dva z pěti není systematický kód. Příklad 1.20 Binární opakovací kód délky 4 sestává ze dvou slov délky 4: 0000 a 1111. Je to systematický (4, 1) kód. Systematické kódování: ke zdrojovému slovu délky 1 přidáme třikrát zopakovaný tentýž znak: 0 0000, 1 1111. 1.3.4 Ekvivalence kódů Dva kódy nazveme ekvivalentní, jestliže se liší pouze pořadím znaků v kódových slovech (tj. jeden kód vznikne z druhého konstantní permutací pořadí znaků). Každý lineární kód je ekvivalentní s nějakým systematickým kódem. Ekvivalentní kódy se shodují v důležitých parametrech, jako je informační poměr, minimální vzdálenost (viz kapitolu 2.2), váhová struktura (viz 2.4.5) atd. Příklad 1.21 Binární koktavý kód délky 4: každý znak se jednou zopakuje, existují tedy čtyři kódová slova: 0000, 0011, 1100 a 1111. Jedná se o (4, 2) kód, jeho informační poměr je 1 2. Koktavý kód není systematický, ale vhodnou transformací jde na systematický kód převést: Uvažujme kód K, který vznikne z koktavého kódu záměnou druhého a třetího znaku v každém kódovém slově. Tento kód má 4 kódová slova 0000, 0101, 1010 a 1111 a je systematický: kódové slovo vznikne zopakováním slova zdrojového. (Například

18 KAPITOLA 1. KÓDOVÁNÍ ZPRÁV 01 0101, 11 1111.) Kódy K a K jsou ekvivalentní. 1.4 Cvičení Cvičení 1.1 Ověřte tvrzení uvedené v příkladu 1.3, že rozdělíme-li obdélníkovou vlajku svisle na dvě poloviny, můžeme při použití pěti barev vytvořit 10 různých barevných kombinací. 6 Cvičení 1.2 Odvoďte vzorec pro výpočet celkového počtu slov délky n v m-prvkové abecedě. Cvičení 1.3 Kolik existuje binárních slov délky 6, obsahujících právě 3 jedničky? Cvičení 1.4 Určete informační poměr kódu celkové kontroly parity délky 3, 5, resp. 6. Cvičení 1.5 Určete informační poměr binárního opakovacího kódu délky 4 z příkladu 1.15. 6 Pokud vám bude toto cvičení činit problémy, zopakujte si část středoškolské matematiky, která se nazývá kombinatorika. V dalším studiu kódů ji budete potřebovat.

Kapitola 2 Bezpečnostní kódy Při použití kódů je nutné předpokládat, že během přenosu a uchování kódových znaků dochází k chybám: při rádiovém přenosu působí elektromagnetické rušení, kompaktní disk se může poškrábat, lidský operátor se může přeslechnout nebo udělat překlep, optická komunikace je narušována mlhou nebo sněžením, elektronická zařízení ohrožuje ionizující záření a podobně. Tyto vnější vlivy zahrnujeme pod pojem rušení, případně šum. Pro zabezpečení informace před šumem se používají bezpečnostní nebo samoopravné kódy, které umožňují určitý počet chyb odhalit, případně opravit. Předpokládáme šum, který se projevuje záměnou vyslaného znaku za jiný znak. Šum, při kterém dochází k poruše synchronizace (tedy k pohlcení vyslaného znaku nebo vytvoření znaku, který nebyl vyslán), zde nebudeme uvažovat. 2.1 Objevování chyb Pracujeme s blokovým kódem K délky n v konečné abecedě T ; označme T n množinu všech slov délky n. Pak je K podmnožinou T n ; slova z K jsou kódová slova a slova z T n K nazýváme nekódová slova. Předpokládáme, že vysíláme kódová slova a přijímáme slova z množiny T n. Pokud jsme přijali nekódové slovo, říkáme, že jsme objevili chybu. Pokud je přijaté slovo kódové, pak buďto k chybě nedošlo, nebo jsme ji neobjevili. Příklad 2.1 Používáme binární kód celkové kontroly parity délky 4 (viz příklad 1.11). Vyšleme slovo 0110. Dojde-li při přenosu ke změně 3.znaku, přijmeme nekódové slovo 0100 a je zřejmé, že nastala chyba objevili jsme chybu. Jestliže dojde ke změně 1. a 3. znaku zároveň, je přijaté slovo 1100 kódové a chybu jsme neobjevili. Chyba je t-násobná, jestliže počet chybných míst je nejvýše t. Kód K objevuje t-násobné chyby, jestliže při vyslání kódového slova a vzniku jakékoliv t-násobné chyby je přijaté slovo vždy nekódové. Příklad 2.2 Binární kód celkové kontroly parity (libovolné délky) objevuje jednoduché chyby (při změně jednoho znaku se změní jejich součet), ale neobjevuje dvojnásobné chyby (k tomu nám stačí protipříklad uvedený v 2.1). 19

20 KAPITOLA 2. BEZPEČNOSTNÍ KÓDY Příklad 2.3 (Kód dva z pěti ) Kód dva z pěti z příkladu 1.12 objevuje jednoduché chyby (při jednoduché chybě má přijaté slovo jednu nebo tři jedničky), ale neobjevuje všechny dvojnásobné chyby (například z kódového slova 01100 může dvojitou chybou vzniknout kódové slovo 01010). Příklad 2.4 (Opakovací kód) Binární opakovací kód délky 4 (viz příklad 1.15) objevuje jednoduché, dvojnásobné i trojnásobné chyby. 2.2 Minimální vzdálenost Důležitým parametrem kódu, který popisuje jeho schopnosti objevovat, případně opravovat chyby, je jeho minimální vzdálenost. Mějme dvě slova délky n: u = u 1 u 2... u n a v = v 1 v 2... v n. Hammingovou vzdáleností (nebo jen vzdáleností) slov u a v nazveme počet pozic, ve kterých se slova od sebe liší, tedy velikost množiny {i; i = 1, 2,... n, u i v i }. Hammingovu vzdálenost slov u a v značíme d(u, v). Příklad 2.5 Hammingova vzdálenost slov u = 1101001 a v = 0110000 je d(u, v) = 4, Hammingova vzdálenost slov w = 01101 a z = 01001 je d(w, z) = 1. Hammingova vzdálenost libovolného slova od sebe sama je d(u, u) = 0. Slovo, které se skládá ze samých nul, nazveme nulovým slovem. Minimální vzdáleností blokového kódu K nazveme nejmenší Hammingovu vzdálenost dvou různých kódových slov. Příklad 2.6 (Kód dva z pěti ) Minimální vzdálenost kódu dva z pěti z příkladu 1.12 je 2. Například slova 00110 a 00101 mají Hammingovu vzdálenost 2 a žádná dvě slova nemají Hammingovu vzdálenost 1. Příklad 2.7 (Opakovací kód) Binární opakovací kód délky 4 z příkladu 1.15 má minimální vzdálenost 4 obsahuje jen dvě slova a jejich Hammingova vzdálenost je 4. Blokový kód minimální vzdálenosti d objevuje t-násobné chyby pro všechna t < d, ale neobjeví všechny d-násobné chyby. Může ovšem odhalovat určitou podmnožinu těchto chyb. Příklad 2.8 (Kód dva z pěti ) Kód dva z pěti z příkladu 1.12, který má minimální vzdálenost 2, objevuje jednoduché chyby a neobjevuje všechny dvojnásobné chyby. Například dvojnásobnou chybu, kdy je místo slova 01100 přijato slovo 01010, neobjeví. Objeví však dvojnásobnou chybu, při které je místo slova 01100 přijato slovo 01111. Je zřejmé, že zjištění minimální vzdálenosti obecného blokového kódu je sice principiálně jednoduché, ale výpočetně velice náročné. Vyžaduje totiž porovnání všech možných dvojic kódových slov. Výpočetní náročnost se však výrazně sníží, pokud použijeme lineární kód (viz kapitola??).

2.3. OPRAVOVÁNÍ CHYB 21 2.3 Opravování chyb Při opravování chyb se používá jednoduché pravidlo, známé jako dekódování maximální pravděpodobnosti: přijaté slovo dekódujeme jako to kódové slovo, které má od něj co nejmenší Hammingovu vzdálenost. (To pokrývá i případ, kdy přijmeme kódové slovo: samo od sebe má nejmenší možnou nulovou Hammingovu vzdálenost.) Pravěpodobnost, že při vyslání slova v bude přijato slovo w, značíme P e (u, w). Pravidlo dekódování maximální pravděpodobnosti můžeme zapsat takto: Je-li přijato slovo w, dekódujeme jej jako to kódové slovo v K, pro které je P e (v, w) = max{p e (u, v), u K}. Příklad 2.9 Používáme binární opakovací kód délky 5 a přijaté slovo je 00010. Je mnohem pravděpodobnější, že toto nekódové slovo vzniklo jednoduchou chybou z kódového slova 00000, než aby vzniklo čtyřnásobnou chybou ze slova 11111. Dekódujeme je tedy jako slovo 00000. Předpokládejme, že při přenosu binárního kódu dojde s pradvěpodobností p e k záměně znaku 0 za znak 1 nebo znaku 1 za znak 0. Odkaz na BSC Zkoumáme, jaká je pravěpodobnost, že při vyslání slova v bude přijato slovo w, které má od slova v Hammingovu vzdálenost d. Přenosy jednotlivých znaků jsou nezávislé jevy; d znaků má být přeneseno chybně (to nastane s pravděpodobností p e ), zbylých n d znaků bude přeneseno správně (pravděpodobnost správného přenosu jednoho znaku je 1 p e ). Hledaná pravděpodobnost je tedy P pe (u, w) = p d e(1 p e ) n d. Příklad 2.10 Nechť je 0011 kódové slovo. Pak pradvěpodobnost, že při vyslání tohoto slova bude přijato slovo 0101 je P pe (0011, 0101) = (1 p e ) 2 p 2 e. Příklad 2.11 Buď K kód délky 4. Pak pro každé kódové slovo v K je pravděpodobnost, že v bylo přijato správně, P pe (v, v) = p 4 e. Kód opravuje t-násobné chyby, jestliže při vyslání kódového slova v a při t-násobné chybě má přijaté slovo w Hammingovu vzdálenost od slova v menší, než je jeho vzdálenost od libovolného jiného kódového slova. (Jinak řečeno: pokud nedojde k více než t-násobné chybě, dává dekódování maximální pravděpodobnosti vždy správný výsledek.) Blokový kód minimální vzdálenosti d opravuje t-násobné chyby pro všechna t < d 2, ale neopraví všechny chyby násobnosti d 2. Příklad 2.12 Binární opakovací kód délky 5 opravuje dvojánsobné chyby (jeho minimální vzdálenost je 5.) Příklad 2.13 Binární kód celkové kontroly parity (libovolné délky) neopravuje žádné chyby.

22 KAPITOLA 2. BEZPEČNOSTNÍ KÓDY Při opravě chyby se samozřejmě může stát, že dojde k chybě (chyba dekódování), pokud vyslané slovo nemá od slova přijatého nejmenší možnou Hammingovu vzdálenost. Pravděpodobnost chyby dekódování může být velmi malá, nikdy však nemůže být nulová. Proto se v některých aplikacích zejména v aplikacích vztahujících se k bezpečnosti samoopravné vlastnosti kódů nevyužívají, i když by to použité kódy umožňovaly. V mnoha jiných aplikacích především tam, kde komunikace není obousměrná nebo kde není možnost zprávu opakovat jsou samoopravné kódy velmi užitečné. V praxi dekódování nemůže probíhat tak, že by se přijaté slovo porovnávalo se všemi kódovými slovy. Pokud mají být využity samoopravné vlastnosti kódu, musí být zvolen takový kód, který umožňuje rychlé dekódování. 2.4 Cvičení Cvičení 2.1 Spočtěte Hammingovu vzdálenost následujících dvojic slov: d(001010, 011010), d(010010, 000111), d(212013, 232013), d(123012, 213210), d(001001, 001001). Cvičení 2.2 (Kód celkové kontroly parity) Zjistěte minimální vzdálenost kódu celkové kontroly parity délky 3, délky 5 a délky 6. Zkuste zformulovat a dokázat, jaká je minimální vzdálenost kódu celkové kontroly parity délky n. Cvičení 2.3 (Opakovací kód) Zjistěte minimální vzdálenost opakovacího kódu délky 3, délky 5 a délky 6. Zkuste zformulovat a dokázat, jaká je minimální vzdálenost opakovacího kódu délky n. Porovnejte výsledky cvičení 2.2 a 2.3. Cvičení 2.4 Nechť je 011010 kódové slovo. Spočítejte pradvěpodobnost, že při vyslání tohoto slova bude přijato slovo 111010, resp. 010110 tj. P pe (011010, 111010), resp. P pe (011010, 010110) pro p e = 0.03. Cvičení 2.5 Při použití kódu délky 8 bylo přijato nekódové slovo 00120210. Které z kódových slov 01220210, 00210120, 10120210, 20120210 bylo nejpravděpodobněji vysláno? Doplnit cviceni

Kapitola 3 Algebra pro kódování a kryptologii Tato kapitola je zaměřena více teoreticky, než ostatní části skript. Může se zdát poněkud obtížnější, ale ubezpečujeme čtenáře, že zde z příslušných partií algebry uvádíme naprosté minimum, nezbytné pro zavedení některých významných kódů. Ostatně není nutné studovat hned celou kapitolu najednou; před přečtením kapitoly 4 o lineárních kódech stačí prostudovat odstavce 3.1.1 a 3.1.2. 3.1 Algebraická tělesa Algebraické těleso je algebraická struktura se sčítáním a násobením, se kterou můžeme pracovat podobně jako s reálnými čísly. To znamená, že v tělese například platí komutativní a distributivní zákon, ke každému prvku kromě nuly existuje prvek inverzní atd. Na tyto vlastnosti jsme zvyklí a obvykle o nich příliš neuvažujeme, existuje však mnoho běžně používaných algebraických struktur, které je nemají. 3.1.1 Definice a základní vlastnosti Algebraické těleso je množina T se dvěma operacemi + a, pro které platí: (TI) operace + tvoří na množině T komutativní grupu 1 s neutrálním prvkem 0, (TII) operace tvoří na množině T \ {0} komutativní grupu s neutrálním prvkem 1, (TIII) distributivní zákon: pro každé a, b, c T platí: a (b + c) = (a b) + (a c). Rozepíšeme-li jednotlivé axiómy grupy (vlastnosti (TI) a (TII)), lze algebraické těleso ekvivalentně definovat následujícím způsobem: Algebraické těleso je množina T se dvěma operacemi + a, které přiřazují každým dvěma prvkům a a b množiny T prvky a + b, a b T tak, že platí: (T1) uzavřenost: a + b a a b jsou prvky množiny T, (T2) asociativita: pro všechna a, b, c T platí: (a+b)+c = a+(b+c) a (a b) c = a (b c), 1 Nevíte-li, co je to grupa, nezoufejte. Hned v následujícím odstavci budou vlastnosti tělesa rozepsány podrobněji. 23

24 KAPITOLA 3. ALGEBRA PRO KÓDOVÁNÍ A KRYPTOLOGII (T3) komutativita: pro všechna a, b T platí: a + b = b + a a a b = b a, (T4) existence neutrálních prvků: v množině T existují neutrální prvky 0 a 1, tj. prvky, pro které platí a + 0 = a a a 1 = a pro každé a T, (T5) existence opačného prvku: pro každý prvek a T existuje prvek ( a), pro který je a + ( a) = 0, (T6) existence inverzního prvku: pro každý nenulový prvek a T existuje prvek a 1, pro který je a a 1 = 1, (T7) distributivita: pro všechna a, b, c T platí: a (b + c) = (a b) + (a c). Operace + a se zpravidla označují tradičními názvy sčítání a násobení. Označení operace je někdy zvykem vynechávat, místo a b se pak píše pouze ab. Přičítání opačného prvku se obvykle zapisuje zkráceně: a + ( b) = a b, podobně násobení inverzním prvkem: a b 1 = a/b. Tím jsou definovány operace odčítání a dělení. Nadále budeme místo pojmu algebraické těleso používat zkrácený termín těleso. Z podmínky (T6) plyne důležitá vlastnost: je-li a b = 0, je alespoň jeden z prvků a, b roven nule. Dále lze snadno dokázat, že pro každé a T je a 0 = 0. Příklad 3.1 Modelovým příkladem tělesa je množina reálných čísel s normálními operacemi sčítání a násobení; dalším příkladem je množina komplexních čísel s operacemi sčítání a násobení. Na druhé straně například přirozená čísla s normálními operacemi sčítání a násobení těleso netvoří neexistují zde opačné ani inverzní prvky. Pro kódování jsou důležitá tělesa o konečném počtu prvků, která lze použít jako kódové abecedy. Počítání v konečných tělesech je sice v principu jednoduché, ale může zpočátku činit obtíže pro svoji nezvyklost. 3.1.2 Tělesa Z p Příkladem konečných těles jsou tělesa Z p, definovaná následujícím způsobem: pro libovolné prvočíslo p definujme množinu Z p = {0, 1, 2,..., p 1}. 2 Na množině Z p definujeme operace a jako sčítání a násobení modulo p, to znamená, že a b je zbytek po dělení čísla a + b číslem p a a b je zbytek po dělení čísla ab číslem p. Příklad 3.2 (Těleso Z 2 ) Těleso Z 2 má prvky 0 a 1. Operace je obvyklé násobení čísel, protože výsledky všech možných násobení čísel 0 a 1 mezi sebou jsou opět 0 nebo 1, tj. čísla, která jsou menší než 2, a proto se rovnají zbytku po dělení 2. Nyní se podíváme na operaci : 1 + 1 = 2, zbytek po dělení 2/2 je nula, je tedy 1 1 = 0. 2 Kolik má množina Z p prvků? No přece p.

3.1. ALGEBRAICKÁ TĚLESA 25 Výsledky sčítání 0 0 a 0 1 jsou opět 0 a 1. Operace sčítání a násobení v tělese Z 2 jsou přehledně shrnuty v tabulce 3.1. Tabulka 3.1: Sčítání a násobení v tělese Z 2 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 Příklad 3.3 (Těleso Z 3 ) Konstruujeme těleso Z 3 : jeho prvky jsou 0, 1 a 2. Nejprve vytvoříme tabulku pro sčítání: 1 + 1 = 2, je tedy také 1 1 = 2. Dále 1 + 2 = 3, zbytek po dělení 3/3 je nula, proto je 1 2 = 0. Podobně 2 + 2 = 4, zbytek po dělení 4/3 je 1 a tudíž 2 2 = 1. To jsou všechny výsledky operace, které musíme spočítat, protože operace je komutativní a 0 je neutrální prvek, takže ostatní výsledky můžeme do tabulky doplnit automaticky. Vypočtení tabulky pro násobení bude ještě jednodušší, protože všechny násobky nuly jsou nula a jednička je pro násobení neutrálním prvkem. Zbývá nám proto jediný výpočet: 2 2. Protože 2 2 = 4 a zbytek po dělení 4/3 je 1, je 2 2 = 1. Operace sčítání a násobení v tělese Z 3 jsou shrnuty v tabulce 3.2. Tabulka 3.2: Sčítání a násobení v tělese Z 3 0 1 2 0 0 1 2 1 1 2 0 2 2 0 1 0 1 2 0 0 0 0 1 0 1 2 2 0 2 1 Pro ilustraci uvádíme i tabulku pro sčítání a násobení v tělese Z 5. Tabulka 3.3: Sčítání a násobení v tělese Z 5 0 1 2 3 4 0 0 1 2 3 4 1 1 2 3 4 0 2 2 3 4 0 1 3 3 4 0 1 2 4 0 0 1 2 3 0 1 2 3 4 0 0 0 0 0 0 1 0 1 2 3 4 2 0 2 4 1 3 3 0 3 1 4 2 4 0 4 3 2 1 Z těles Z p má pro kódování největší význam těleso Z 2, které slouží ke konstrukci binárních kódů.

26 KAPITOLA 3. ALGEBRA PRO KÓDOVÁNÍ A KRYPTOLOGII Lze dokázat, že pokud p není prvočíslo, není množina Z p tělesem; konkrétně není splněna podmínka (T6) pro některé prvky Z p neexistuje prvek inverzní. Důkaz tohoto tvrzení zde uvádět nebudeme, pro snazší pochopení ukážeme jen strukturu množiny Z 4. Příklad 3.4 (Množina Z 4 ) Pro množinu Z 4 = {0, 1, 2, 3} sestrojíme tabulky pro sčítání a násobení (tabulka 3.4). Vidíme, že prvek 2 způsobuje problém: v příslušném řádku tabulky pro násobení není žádná jednička, (neexistuje žádný prvek, který by po vynásobení 2 dával 1) a pro prvek 2 tedy neexistuje inverzní prvek. Množina Z 4 proto není tělesem. Tabulka 3.4: Sčítání a násobení v množině Z 4 0 1 2 3 0 0 1 2 3 1 1 2 3 0 2 2 3 0 1 3 3 0 1 2 0 1 2 3 0 0 0 0 0 1 0 1 2 3 2 0 2 0 2 3 0 3 2 1 Konečná tělesa o jiném než prvočíselném počtu prvků, při jejichž konstrukci se využívají polynomy, budou zavedena v sekci 3.3. V množinách Z n, kde n není prvočíslo, jsou však splněny všechny ostatní axiomy (T1) (T5) a (T7). Algebraická struktura, která splňuje axiomy (T1) (T5) a (T7) se nazývá okruh. Příklad 3.5 Množina celých čísel Z je okruh: splňuje axiomy (T1) (T5) a (T7). Tato množina není tělesem, protože v ní žádný prvek kromě 1 a 1 nemá inverzní prvek. Každé těleso je okruhem. V sekci 3.2.2 se setkáme s okruhy polynomů, které jsou důležité pro cyklické kódy. 3.1.3 Řád prvku Pomocí operace násobení můžeme v tělese definovat operaci umocňování: a 0 = 1, a r = a} a {{ a}, r = 1, 2, 3,... r krát Prvek a 0 má v tělese T řád r, je-li r > 0 nejmenší kladné číslo, pro které a r = 1. Jestliže takové r neexistuje, má prvek řád. Příklad 3.6 (Reálná čísla) V tělese reálných čísel má prvek 1 řád 1 (protože 1 1 = 1), prvek 1 má řád 2 (protože ( 1) 1 = 1, ( 1) 2 = 1) a všechna ostatní nenulová čísla mají řád.

3.1. ALGEBRAICKÁ TĚLESA 27 V konečném tělese má každý nenulový prvek konečný řád r a prvky 1, a, a 2,..., a r 1 jsou navzájem různé. V n-prvkovém tělese je řád každého nenulového prvku dělitelem čísla n 1. Pro a T, které je řádu r, je a m = 1 právě tehdy, když je m násobkem r. Příklad 3.7 (Těleso Z 5 ) Uvažujme těleso Z 5. Sčítání a násobení v tomto tělese popisuje tabulka 3.3. Řád prvku 1 je v každém tělese 1. Zjistíme řád prvku 2: 2 2 = 4, 2 2 2 = 4 2 = 3, 2 2 2 2 = 3 2 = 1. Řád prvku 2 je tedy 4. Podobně je tomu s prvkem 3: 3 3 = 4, 3 3 3 = 4 3 = 2, 3 3 3 3 = 2 3 = 1, řád prvku 3 je 4. Zbývá prvek 4: 4 4 = 1, řád prvku 4 je 2. *** Řád prvku má praktický význam například při rozkladu polynomu x m 1, který je důležitý pro konstrukci cyklických kódů, jak uvidíme v kapitole 5.1.4. Tento rozklad lze snadno provést pro tělesa, která obsahují prvek řádu m. Lze dokázat, že v n-prvkovém tělese T existuje prvek řádu m, právě když je m dělitelem čísla n 1. 3.1.4 Primitivní prvek Prvek a tělesa T je primitivní, jestliže je každý nenulový prvek tělesa T jeho mocninou. Každé konečné těleso má (alespoň jeden) primitivní prvek. Příklad 3.8 V tělese Z 2 je primitivním prvkem 1, protože je svojí první mocninou a jiné nenulové prvky v tomto tělese nejsou. V tělese Z 3 je primitivní prvek 2: je sám svojí první mocninou a 2 2 = 1; oba nenulové prvky tělesa jsou mocninou prvku 2. *** V n-prvkovém tělese je prvek a primitivní, právě když má řád n 1. Příklad 3.9 (Těleso Z 5 ) V příkladu 3.7 jsme zjistili, že v tělese Z 5 jsou dva prvky řádu n 1 = 4, a to 2 a 3. Skutečně to jsou primitivní prvky: 1 = 2 2 2 2 = 2 4, 2 = 2 1, 3 = 2 2 2 = 2 3, 4 = 2 2 = 2 2 a 1 = 3 3 3 3 = 3 4, 2 = 3 3 3 = 3 3, 3 = 3 1, 4 = 3 3 = 3 2. *** Mocniny primitivního prvku 1, a, a 2,..., a n 2 jsou navzájem různé. Protože těchto mocnin je celkem n 1, stejně jako počet nenulových prvků tělesa, je každý nenulový prvek tělesa jednoznačně určen svojí mocninou primitivního prvku a. Toho se využívá k definování funkce, která je analogická logaritmu.

28 KAPITOLA 3. ALGEBRA PRO KÓDOVÁNÍ A KRYPTOLOGII 3.1.5 Diskrétní logaritmus Nechť je α pevně daný primitivní prvek n-prvkového tělesa T. Diskrétním logaritmem prvku b T, b 0 nazveme takové číslo j {0, 1,..., n 2}, pro které je b = α j ; budeme používat značení dlog: dlog(b) = j právě když b = α j. Takové j je určeno jednoznačně, a dva různé nenulové prvky T mají různé své diskrétní logaritmy (diskrétní logaritmus je prostá funkce). Pro nulu není diskrétní logaritmus definován. Pro každý prvek b T je dlog(b) {0, 1,..., n 2}. Diskrétní logaritmus prvku samozřejmě závisí na konkrétní volbě primitivního prvku. Příklad 3.10 (Těleso Z 5 ) Vraťme se k předchozímu příkladu 3.9. Vybereme-li si v tělese Z 5 primitivní prvek 2, bude dlog1 = 4, dlog2 = 1, dlog3 = 3, dlog4 = 2. Vybereme-li si primitivní prvek 3, bude dlog1 = 4, dlog2 = 3, dlog3 = 1, dlog4 = 2. *** Protože platí α i α j = α i j (zde reprezentuje sčítání modulo n), můžeme diskrétní logaritmus použít pro násobení a dělení prvků tělesa T: dlog(ab) = dlog(a) dlog(b), dlog(a/b) = dlog(a) dlog(b). Operátory a značí sčítání a odčítání modulo n. Platí zde tedy podobná pravidla jako pro logaritmy v tělese reálných čísel. K diskrétnímu logaritmu definujeme i funkci inverzní: pro každé j = 0, 1,..., n 2 položme dlog 1 (j) = α j. Tato funkce je analogií exponenciální funkce. Příklad 3.11 (Těleso Z 3.) V příkladu 3.3 jsme sestrojili těleso Z 3. Sestrojíme pro něj nyní tabulku hodnot diskrétního logaritmu a jeho inverze. Z příkladu 3.8 víme, že 2 je v tělese Z 3 primitivním prvkem. Platí 2 0 = 1, takže je dlog1 = 0. Dále je 2 1 = 2 a proto je dlog2 = 1. Tím jsme vyčerpali všechny nenulové prvky tělesa; pro nulu není diskrétní logaritmus definován. Výsledky přehledně shrneme do tabulky. Tabulku inverzní funkce k diskrétnímu logaritmu sestrojíme obrácením tabulky pro diskrétní logaritmus. b dlogb 0 1 0 2 1 b dlog 1 b 0 1 1 2 2 Vyjádření prvků tělesa jako mocnin primitivního prvku je výhodné při konstrukci Galoisových těles. Diskrétní logaritmus má významné uplatnění při realizaci násobení v těchto tělesech, jak ukážeme v odstavci 3.3.3. Snad ještě významnější uplatnění nalézá diskrétní logaritmus v oblasti šifrování. Doplní J.P.

3.2. POLYNOMY 29 3.1.6 Charakteristika tělesa Při počítání v oboru reálných (nebo přirozených) čísel jsme uvykli tomu, že opakovaným přičítáním jedničky dostáváme pokaždé jiné číslo. V tělesech s konečným počtem prvků to však není možné, protože prvky dojdou. Charakteristikou tělesa T se nazývá nejmenší číslo p takové, že součet p jedniček 1 + 1 +... + 1 je roven nule. Pokud takové číslo neexistuje, má těleso charakteristiku. Například charakteristika tělesa reálných čísel je, charakteristika tělesa Z p je p. Charakteristika každého konečného tělesa je prvočíslo. Příklad 3.12 (Těleso Z 5.) Opět se vrátíme k tělesu Z 5. Sčítáme: 1 1 = 2, 1 1 1 = 3, 1 1 1 1 = 4, 1 1 1 1 1 = 0. Charakteristika tělesa Z 5 je tedy 5. *** V tělese charakteristiky p je řád každého prvku dělitelem čísla p 1. Příklad 3.13 V tělese Z 7 (které má charakteristiku 7), má prvek 1 řád 1, prvek 6 má řád 2, prvky 2 a 4 mají řád 3 a prvky 3 a 5 mají řád 6 (ověřte). *** Dále pak v tělese charakteristiky p platí pro libovolné prvky a, b rovnost (a + b) p = a p + b p. 3.2 Polynomy Polynomy jsou v rámci kódování důležité jednak pro vytváření cyklických kódů a manipulaci s nimi, jednak pro konstrukci konečných těles s jiným než prvočíselným počtem prvků. Polynom proměnné x nad tělesem T je a(x) = a n x n + + a 2 x 2 + a 1 x + a 0, kde každé a i (koeficient u i-té mocniny) je prvek tělesa T. Nad množinou polynomů jsou definovány operace sčítání (resp. odčítání), násobení a dělení všeobecně známým způsobem. Množina všech polynomů jedné proměnné x nad tělesem T spolu s operacemi sčítání a násobení tvoří okruh T[x]. (Okruh je algebraická struktura, kterou jsme definovali v závěru sekce 3.1.2.) Stupeň polynomu st (a(x)) je největší číslo k, pro které je a k 0; stupeň nulového polynomu a(x) = 0 klademe roven 1. Polynom, jehož koeficient u nejvyšší mocniny je roven jedné, se nazývá normovaný polynom.

30 KAPITOLA 3. ALGEBRA PRO KÓDOVÁNÍ A KRYPTOLOGII Obecně v okruhu není zaručena existence inverzního prvku, nemůžeme proto zavést operaci dělení. Je však možné provádět dělení se zbytkem, jak jej popisuje následující věta. Věta 3.1 (O dělení polynomů.) Nechť p(x) (dělenec) a q(x) (dělitel) jsou dva polynomy nezáporného stupně z okruhu T[x]. Pak existují polynomy s(x) (podíl) a r(x) (zbytek) z téhož okruhu, pro které platí p(x) = q(x) s(x) + r(x) a přitom st (r(x)) < st (s(x)). Polynomy s(x) a r(x) jsou určeny jednoznačně. *** Pokud je zbytek (polynom r(x)) roven nule, říkáme, že polynom p(x) je dělitelný polynomem r(x). 3.2.1 Kořeny polynomů Podobně jako má smysl uvažovat komplexní kořeny reálného polynomu, budeme i pro polynomy nad konečným tělesem definovat kořeny z nějaké větší množiny. Jestliže máme dvě množiny T S, které jsou obě tělesy se stejnými operacemi, pak těleso T nazýváme podtělesem tělesa S a těleso S nazveme nadtělesem tělesa T. Nechť je S nadtělesem tělesa T. Kořen polynomu q(x) nad tělesem T v tělese S je takový prvek a S, pro který platí q(a) = 0. Polynom q(x) má kořen a právě tehdy, když je dělitelný polynomem x a (kořenovým činitelem). Buď T těleso charakteristiky p. Jestliže polynom q(x) nad tělesem Z p má v tělese T kořen a, pak jsou i a p, a p2, a p3,... kořeny polynomu q(x). Příklad 3.14 Polynom q(x) je ireducibilní (nerozložitelný) nad tělesem T, pokud nelze zapsat jako součin dvou polynomů a(x) a b(x) nad T, které jsou (oba) nižšího stupně než polynom q(x). Jestliže je polynom stupně vyššího než 1 ireducibilní nad T, pak nemá v T žádné kořeny. Obrácené tvrzení neplatí; polynom nemusí mít žádný kořen a přitom může nebýt ireducibilní: například polynom (x 2 + x + 1)(x 2 + 1) nad tělesem reálných čísel nemá žádné kořeny, ale není ireducibilní. Ireducibilita polynomu se vždy vztahuje ke konkrétnímu tělesu. Například polynom x 2 + 1 je ireducibilní nad tělesem reálných čísel, ale nad tělesem komplexních čísel je rozložitelný: x 2 + 1 = (x + i)(x i). 3.2.2 Modulární okruhy polynomů Modulární okruhy polynomů jsou důležité především pro zavedení Galoisových těles (viz 3.3), tedy těles o konečném neprvočíselném počtu prvků. Buď q(x) polynom stupně n 1 nad tělesem T. Definujeme T q(x) okruh polynomů modulo q(x) následujícím způsobem:

3.3. GALOISOVA TĚLESA 31 Prvky okruhu T q(x) jsou všechny polynomy nad tělesem T stupně menšího, než je stupeň polynomu q(x). Aby nedošlo k záměně s polynomy z okruhu T[x] (které nemají omezený stupeň), budeme je označovat jako polynomy v proměnné z. Operace sčítání v okruhu T q(x) je obvyklé sčítání polynomů v okruhu T[x]: a(z) + b(z) = a(x) + b(x). Odlišně je definováno násobení: a(z) b(z) je zbytek po dělení polynomu a(x)b(x) polynomem q(x). Příklad 3.15 (Komplexní čísla.) Uvažujme okruh R (x 2 +1). Jeho prvky jsou všechny reálné polynomy stupně nejvýše 1. Položíme například a(z) = 3z + 2, b(z) = z + 1. Součet a(z) + b(z) = 2z + 3 vypočítáme běžným způsobem. Součin spočítáme takto: a(z)b(z) = 3z 2 + z + 2; zbytek po dělení ( 3z 2 +z +2) : (z 2 +1) je z +5. Je tedy a(z) b(z) = z +5. Položíme nyní obecně a(z) = a 1 z + a 2, b(z) = b 1 z + b 2. Součet: a(z) + b(z) = (a 1 + b 1 )z + (a 2 + b 2 ). Součin: a(z)b(z) = a 1 b 1 z 2 + (a 1 b 2 + a 2 b 1 )z + a 2 b 2 ; zbytek po dělení (a 1 b 1 z 2 + (a 1 b 2 + a 2 b 1 )z + a 2 b 2 ) : (z 2 + 1) je a(z) b(z) = (a 1 b 2 + a 2 b 1 )z + a 2 b 2 a 1 b 1. Vzpomeneme si, jak funguje násobení komplexních čísel: (x + iy)(q + iw) = xq + i(yq + xw) + i 2 (yw) = xq yw + i(yq + xw). To zcela přesně odpovídá násobení polynomů v okruhu R (x 2 + 1), když místo z píšeme i. Okruh R (x 2 + 1) je tedy izomorfní s okruhem komplexních čísel C; ve skutečnosti je to jeho korektní definice. Příklad 3.16 Uvažujme okruh Z 3 (x 2 + 1). Jeho prvky jsou všechny polynomy nad tělesem Z 3 stupně nejvýše 1. Položme například a(z) = z + 1, b(z) = 2z + 2. Součet a(z) + b(z) = 0, protože v tělese Z 3 je 1 + 2 = 0. Součin vypočteme takto: a(z)b(z) = 2z 2 + z + 2, zbytek po dělení (2z 2 + z + 2) : (z 2 + 1) je z, takže je a(z) b(z) = z. (Nesmíme zapomínat, že všechny aritmetické operace probíhají v tělese Z 3.) 3.3 Galoisova tělesa Zobecněním konečných těles Z p jsou Galoisova tělesa. Jsou speciálním případem okruhu polynomů nad konečným tělesem, totiž případem, kdy má tento okruh také vlastnosti tělesa.

32 KAPITOLA 3. ALGEBRA PRO KÓDOVÁNÍ A KRYPTOLOGII Následující odstavce svým obsahem překračují rámec, který běžně pokrývá výuka algebry na vysokých školách technického směru. Bohužel však vzhledem k rozsahu problematiky není možné věnovat se tomuto tématu hlouběji. Případného zájemce o podrobnější prostudování upozorňuji, že důkazy předkládaných tvrzení nejsou zcela snadné a používají mnohé další algebraické poznatky, které zde nejsou zmíněny. 3.3.1 Definice a základní vlastnosti Pro každý polynom q(x) nad tělesem T, který je nad tímto tělesem ireducibilní, je okruh polynomů T q(x) tělesem. Toto těleso nazýváme algebraickým rozšířením tělesa T. Příklad 3.17 Množina komplexních čísel C, definovaná v příkladu3.15, je těleso a je to algebraické rozšíření tělesa reálných čísel R. *** Buď q(x) ireducibilní polynom stupně n nad tělesem Z p, kde p je prvočíslo. Těleso T q(x) = GF(p n ) se nazývá Galoisovo těleso (Pod vlivem anglického termínu Galois Field se někdy užívá poněkud nepřesné označení Galoisovo pole.) Těleso GF(p n ) má p n prvků. Příklad 3.18 (Těleso GF(2 2 )) Polynom q(x) = x 2 + x + 1 je ireducibilní nad tělesem Z 2 (to můžeme ověřit tak, že jej zkusíme vydělit všemi polynomy stupně 1, které jsou jen dva: x a x + 1), můžeme tedy zkonstruovat těleso GF(2 2 ) jako Z 2 x 2 + x + 1. Nad tělesem Z 2 existují čtyři polynomy stupně menšího než 2, a to polynomy 0, 1, z a z + 1. Jejich sčítání je normální sčítání polynomů nad Z 2. Násobení nulou a jedničkou je snadné, zbývají nám spočítat jen tři násobky: z z = z 2 ; zbytek po dělení z 2 : (z 2 + z + 1) je z + 1, je tedy z z = z + 1. z (z + 1) = z 2 + z; zbytek po dělení (z 2 + z) : (z 2 + z + 1) je 1, je tedy z (z + 1) = 1. (z + 1) (z + 1) = z 2 + 1; zbytek po dělení (z 2 + 1) : (z 2 + z + 1) je z, a máme (z + 1) (z + 1) = z. V tabulce 3.5 pro sčítání a násobení v GF(2 2 ) je číslicí 2 symbolizován polynom z a číslicí 3 polynom z + 1. Porovnejte tabulku 3.5 pro násobení v tělese GF(2 2 ) s tabulkou 3.4 pro násobení v okruhu Z 4, který není tělesem. Pokud by polynom q(x) nebyl nad Z p ireducibilní, netvořil by okruh T q(x) těleso; k některým jeho prvkům by neexistoval inverzní prvek. 3 3 Je to podobná situace jako u okruhů Z p, které jsou tělesem právě když je p prvočíslo. V angličtině je to vyjádřeno zcela zřetelně: prvočíslo je prime nebo prime number a ireducibilní polynom se nazývá prime polynomial.