MI-MPI, Přednáška č. 3 Karel Klouda karel.klouda@fit.cvut.cz c KTI, FIT, ČVUT v Praze 28. února, letní semestr 2010/2011
Množiny s jednou binární operací Neprázdná množina M s binární operací (resp. + při aditivním zápisu). (M, ) resp. (M, +) grupoid pologrupa monoid grupa Abelovská grupa asociativita neutrální prvek inverzní prvky komutativita
Množiny s dvěma binárními operacemi Pro většinu operací s čísly potřebujeme jak sčítat tak násobit. K aditivní grupě (M, +) přidáme ještě operaci násobení. (M, +, ) okruh / ring obor integrity / integral domain těleso / field
Definice okruhu Definice (Okruh / Ring) Bud te M neprázdná množina a + a binární operace. Řekneme, že R = (M, +, ) je okruh, pokud platí: (M, +) je Abelovská grupa, (M, ) je grupoid, platí (levý a pravý) distributivní zákon: ( a, b, c M) (a(b + c) = ab + ac (b + c)a = ba + ca). Dodržujeme standardní konvenci, že násobení má vyšší prioritu než sčítání.
Názvosloví Bud R = (M, +, ) okruh. Je-li asociativní, je R asociativní okruh, Je-li komutativní, je R komutativní okruh, (M, +) se nazývá aditivní grupa okruhu R, (M, ) se nazývá multiplikativní grupoid okruhu R, neutrální prvek grupy (M, +) se nazývá nulový prvek a značí se 0, inverzní prvek k a M pak značíme a, v okruhu můžeme definovat odečítání předpisem a b := a + ( b).
Příklady (N, +, ) není okruh, neb (N, +) není grupa, (Z, +, ) je okruh, triviální okruh je ({0}, +, ) (platí-li 0 0 = 0), množina (R n,n, +, ) čtvercových reálných matic se sčítáním po složkách a maticovým násobením je okruh, nulový prvek je nulová matice, množina všech polynomů (s komplexními / reálnými / celočíselnými koeficienty) je okruh, nulový prvek je nulový polynom p(x) = 0.
Základní vlastnosti okruhu V libovolném okruhu (M, +, ) platí levý i pravý distributivní zákon pro odečítání, tj. vskutku: c(b a) = cb ca. ca + c(b a) = c(a + b a) = cb c(b a) = cb ca. že násobení nulovým prvkem dává opět nulový prvek, tj. ( a M)(a 0 = 0 0 a = 0). vskutku: a 0 = a(a a) = aa aa = 0.
Obor integrity Definice (dělitelé nuly) Bud R = (M, +, ) okruh. Libovolné nenulové prvky a, b M takové, že a b = 0, se nazývají dělitelé nuly. Definice (obor integrity / integral domain) Asociativní a komutativní okruh bez dělitelů nuly se nazývá obor integrity.
Příklady oborů integrity (Z, +, ) je obor integrity, každý číselný okruh (M, +, ), kde M C a + a jsou klasické, je obor integrity, okruh (R n,n, +, ) není oborem integrity pro n 2, nebot např. ( ) ( ) ( ) 1 0 0 0 0 0 = 1 0 1 1 0 0
Definice tělesa Definice (těleso / field) Okruh T = (M, +, ) se nazývá těleso, jestliže (M \ {0}, ) je grupa. Tuto grupu nazýváme multiplikativní grupou tělesa T.
Definice tělesa Definice (těleso / field) Okruh T = (M, +, ) se nazývá těleso, jestliže (M \ {0}, ) je grupa. Tuto grupu nazýváme multiplikativní grupou tělesa T. Proč musíme vyjmout nulový prvek? Protože k nule neexistuje inverzní prvek, tj. nelze dělit nulou: 0 1 =?!. Všemi jinými prvky tělesa dělit umíme! dělení = násobení inverzním prvkem a b := a b 1 pro b 0.
Příklady těles Okruh celých čísel (Z, +, ) není těleso, neb v (Z \ {0}, ) chybí inverzní prvky. Okruh racionálních čísel (Q, +, ) je těleso. Dokonce nejmenší číselné těleso (s obvyklými aritmetickými operacemi). Nejmenší těleso je tzv. triviální těleso ({0, 1}, +, ) s operacemi danými násl. tabulkami: + 0 1 0 0 1 1 1 0 a 0 1 0 0 0 1 0 1 První tabulka odpovídá bitové operaci XOR a druhá AND, nebo také sčítání a násobení modulo 2.
Některé vlastnosti V každém tělese máme definované všechny obvyklé aritmetické operace: sčítání, odčítání, násobení, dělení a všechny z nich odvozené, jako mocnění, odmocňování, logaritmování,... Triviální těleso nám tyto všechny operace definuje nad jedním bitem. Později si ukážeme, jak je rozšířit nad libovolný počet bitů.
Některé vlastnosti V každém tělese máme definované všechny obvyklé aritmetické operace: sčítání, odčítání, násobení, dělení a všechny z nich odvozené, jako mocnění, odmocňování, logaritmování,... Triviální těleso nám tyto všechny operace definuje nad jedním bitem. Později si ukážeme, jak je rozšířit nad libovolný počet bitů. Věta Každé těleso je obor integrity. Důkaz. Jelikož je multiplikativní grupa tělesa (M \ {0}, ) uzavřená vůči násobení, platí pro všechna nenulová a, b, že jejich součin a b M \ {0} je opět nenulový.
Homomorfismus a izomorfismus Definice Zobrazení h z okruhu (resp. tělesa) R 1 do okruhu (resp. tělesa) R 2 je homomorfismus, jestliže je h homomorfismem příslušných aditivních a multiplikativních grupoidů (resp. grup). Je-li navíc h bijekce (prosté a na ), jedná se o izomorfismus. Izomorfní tělesa jsou v podstatě totožná.
Konečná tělesa / finite fields Těleso, které má konečný počet prvků, se nazývá konečné. Základní příklad konečného tělesa je množina (zbytkových tříd modulo p) Z p = {0, 1,..., p 1} s operacemi modulo prvočíslo p (viz minulá přednáška). Např. pro p = 5 dostáváme těleso s násl. operacemi + 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 4 0 1 2 3 a 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
Aditivní grupa (Z p, +) Řád aditivní grupy (Z p, +) je prvočíslo p. (Rozmyslet!) Každý nenulový prvek je generátor a má tedy řád p (to platí pro všechny grupy s prvočíselným řádem). (Z p, +) je grupou i pro p, které není prvočíslo.
Multiplikativní grupa (Z p \ {0}, ) Multiplikativní grupu (Z p \ {0}, ) značíme Z p. Řád grupy Z p je p 1 a to není nikdy prvočíslo! Počet generátorů závisí na p 1, jak uvidíme dále. Z p je grupou pouze pro prvočíselné p, jinak obsahuje dělitele nuly.
Příklad: p = 13 Existuje generátor? Zkusme dvojku... (mod 13) 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 4 8 3 6 12 11 9 5 10 7 1
Příklad: p = 13 Existuje generátor? Zkusme dvojku... (mod 13) 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 4 8 3 6 12 11 9 5 10 7 1 podgrupy: {1, 3, 4, 9, 10, 12},
Příklad: p = 13 Existuje generátor? Zkusme dvojku... (mod 13) 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 4 8 3 6 12 11 9 5 10 7 1 podgrupy: {1, 3, 4, 9, 10, 12}, {1, 5, 8, 12},
Příklad: p = 13 Existuje generátor? Zkusme dvojku... (mod 13) 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 4 8 3 6 12 11 9 5 10 7 1 podgrupy: {1, 3, 4, 9, 10, 12}, {1, 5, 8, 12}, {1, 3, 9}
Příklad: p = 13 Existuje generátor? Zkusme dvojku... (mod 13) 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 4 8 3 6 12 11 9 5 10 7 1 podgrupy: {1, 3, 4, 9, 10, 12}, {1, 5, 8, 12}, {1, 3, 9} {1, 12}
Příklad: p = 13 Existuje generátor? Zkusme dvojku... (mod 13) 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 4 8 3 6 12 11 9 5 10 7 1 podgrupy: {1, 3, 4, 9, 10, 12}, {1, 5, 8, 12}, {1, 3, 9} {1, 12} generátory: 2, 6, 11, 7
Vlastnosti Z p Věta Pro každé prvočíslo p platí: Z p je cyklická (tj. existuje v ní generátor), je-li a generátor, pak a k je také generátor, právě když gcd(k, p 1) = 1 (tj. k a p 1 jsou nesoudělná) důkaz na cvičení, počet generátorů je roven počtu čísel nesoudělných s p 1, tedy ϕ(p 1), kde ϕ je Eulerova funkce, necht k < p dělí p 1, pak v Z p existuje podgrupa řádu k a obsahuje právě ty prvky, pro které a k = 1. Tato věta platí pro libovolnou konečnou cyklickou grupu i neprvočíselného řádu.
Tělesa kterých řádů existují? Zatím jsme si ukázali pouze konstrukci konečných těles řádu p, kde p je prvočíslo. Existují tělesa libovolného řádu? Věta Existují pouze konečná tělesa řádu p n, kde p je prvočíslo a n je přirozené číslo. Prvočíslo p se nazývá charakteristika. Důsledek: neexistuje těleso s 6, 10, 12, 14,... prvky. Vezmeme-li p = 2 a n = 8, získáme těleso umožňující nám počítat v rámci jednoho bytu!
Problém diskrétního logaritmu Definice (problém diskrétního logaritmu v Z p ) Bud Z p grupa řádu p 1, α nějaký její generátor a β její prvek. Řešit problém diskrétního logaritmu znamená najít celé číslo 1 x p 1 takové, že α x β mod p Klasický logaritmus (o základu a) čísla b je řešení rovnice a x = b v tělese (R, +, ).
Výpočet diskrétního logaritmu? Není známý žádný rozumně rychlý algoritmus, řešící problém diskr. logaritmu, ale mocnit v Z p umíme rychle (viz dále). Rychlost známých algoritmů je zhruba úměrná p, což pro p délky 1024 bitů dává cca 2 512 operací. Získáváme tedy jednosměrnou / one-way funkci, kterou lze použít pro asymetrickou šifru: najít β α x mod p je lehké, známe-li x, α a p, najít x, známe-li β, α a p je velmi obtížné Pro konstrukci RSA byla použita jednosměrná funkce násobení prvočísel : násobit prvočísla je lehké a rychlé, hledat prvočíselný rozklad výsledku je složité.
Diffie-Hellman Key Exchange Inicializace: Alice si najde veliké prvočíslo p a nějaký generátor α grupy Z p. Zveřejní p a α. (najít velké prvočíslo a generátor nejsou lehké úkoly!) Alice zvolí soukromý klíč a {2,..., p 2} spočte veřejný klíč A α a mod p Bob zvolí soukromý klíč b {2,..., p 2} spočte veřejný klíč B α b mod p výměna veřejných klíču A a B spočítá k AB B a mod p spočítá k AB A b mod p
Princip Diffie-Hellman Key Exchange stojí na následujících faktech: Mocnění v Z p je komutativní a tedy vypočtené k AB je pro Alici i Boba stejné: k AB (α b ) a α ab mod p k AB (α a ) b α ab mod p, mocnění není výpočetně náročné, inverzní operace k mocnění, tedy diskrétní logaritmus, je výpočetně velmi náročné.
Efektivní mocnění Úkol: umocněte x na 50, tj. x 50 =? Hrubá síla: 50-krát vynásobím x, při mocnění obrovskými čísly nepoužitelné. Chytřeji: pouze 8 kroků 1 nás. 1 x sqr. & 1 nás. x 3 sqr. x 6 sqr. x 12 sqr. & nás. x 25 0 0 1 sqr. 0 x 50
Efektivní mocnění Úkol: umocněte x na 50, tj. x 50 =? Hrubá síla: 50-krát vynásobím x, při mocnění obrovskými čísly nepoužitelné. Chytřeji: pouze 8 kroků 1 nás. 1 x sqr. & 1 nás. x 3 sqr. x 6 sqr. x 12 sqr. & nás. x 25 0 0 1 sqr. 0 x 50 50 = 110010 2, tj. 110010 je zápis čísla 50 ve dvojkové soustavě a počet operací počet bitů ( 1, 5).
Square-and-multiply algorithm příklad Chci spočítat x 110010 2. krok 0: spočítám r = x 1 2 (tj. x) krok 1a: spočítám r = r 2 = x 10 2 (druhá mocnina = posunutí bitů doleva) krok 1b: spočítám r = r x = x 11 2 (nás. x = změna posl. bitu na 1) krok 2a: spočítám r = r 2 = x 110 2 krok 2b: nedělám nic, třetí bit je nula krok 4a: spočítám r = r 2 = x 110010 2 krok 4b: nedělám nic, poslední pátý bit je nula.
Square-and-multiply algorithm v Z p Input: mocněnec x, exponent H = (h t h t 1 h 1 h 0 ) 2 a modul p Output: x H mod p Inicializace: r = x Algoritmus: 1. FOR i = t 1, t 2,..., 1, 0 1.1 r r 2 mod p IF h i = 1 1.2 r r x mod p 2 RETURN r (průměrný) počet operací: t-krát krok 1.1 a (průměrně) (0, 5 t)-krát krok 1.2
Hledání inverzního prvku v Z p EEA Věta Bud te r 0 a r 1 přirozená čísla. Potom existují celá čísla s a t taková, že gcd(r 0, r 1 ) = sr 0 + tr 1. Speciálně, jsou-li r 0 a r 1 nesoudělná, platí 1 = gcd(r 0, r 1 ) = sr 0 + tr 1. Čísla s, t a gcd(r 0, r 1 ) lze najít pomocí rozšířeného Euklidova algoritmu / extended Euclidean algorithm (EEA). Nastudovat si a pochopit EEA je Váš domácí úkol! (viz Internet). EEA má plynomiální složitost.
Hledání inverzního prvku v Z p Úkol: najděte inverzní prvek k prvku r v grupě Z p Řešení: pomocí EEA najdu s a t tak, že sp + tr = 1. To jistě lze, neb prvočíslo p a r < p jsou nesoudělná čísla. Platí, že t je inverzní k r: sp + tr tr 1 mod p.
Symetrické šifrování Při kódované výměně delšího textu, jsou asymetrické šifry (RSA, Diffie-Hellman a spol.) neefektivní. Proto se používá symetrické šifrování, kde se předpokládá, že Alice a Bob znají nějaký společný soukromý klíč, který nikdo jiný nezná a který šifrování výrazně usnadní. Asymetrické šifry se použijí pouze k výměně tohoto společného soukromého klíče. Nejpoužívanější metoda je bloková cifra (block cipher) zvaná Advanced Encryption Standard (AES). Zde se seznámíme s matematickým podhoubím této metody.
Bloková šifra AES Kódovaný text si rozdělíme na bloky o (např.) 8 bitech. Ty zašifrujeme pomocí klíče tak, že dešifrování lze snadno provést pouze se znalostí toho samého klíče. Toto šifrování v AES je založeno na tom, že operace s n = 8 bity lze chápat jako aritmetické operace v konečném tělese s 2 n prvky pro n = 8. Tělesa s 2 n prvky zveme binární tělesa a značíme GF(2 n ) (jako Galois Fields). Ukážeme si, jak v takovýchto tělesech zavést operace sčítání a násobení.
Kudy cesta nevede Uvažujme těleso GF(2 8 ). Každý prvek lze reprezentovat jako 8 bitů, tedy např. 11010110, 01100011, atd. Sčítání: sčítání lze zavést po složkách modulo 2. Tj. 11010110 + 01100011 = (1 + 0 mod 2)(1 + 1 mod 2) (0 + 1 mod 2) = 10010101.
Kudy cesta nevede Uvažujme těleso GF(2 8 ). Každý prvek lze reprezentovat jako 8 bitů, tedy např. 11010110, 01100011, atd. Sčítání: sčítání lze zavést po složkách modulo 2. Tj. 11010110 + 01100011 = (1 + 0 mod 2)(1 + 1 mod 2) (0 + 1 mod 2) = 10010101. Neutrální (nulový) prvek je 0000000 a každý prvek je sám sobě inverzní: máme aditivní grupu. Násobení: násobení po složkách zavést nelze. V takovém případě by musel být jednotkový prvek roven 11111111 a neexistovala by inverze např. k 11111110. Násobení musíme definovat jinak!
Ireducibilní polynom Definice Bud P(x) polynom s celočíselnými koeficienty stupně alespoň 1. Řekneme, že P(x) je ireducibilní, jestliže pro každé dva polynomy A(x) a B(x) platí A(x) B(x) = P(x) (stupeň A(x) = 0 stupeň B(x) = 0). Ireducibilní polynomy jsou prvočísla mezi polynomy! Také jsou naprosto analogicky definovány a mají stejné vlastnosti. Příklad: x 2 + 1 je ireducibilní, x 2 1 = (x + 1)(x 1) není. Poznámka: x 2 + 1 je ireducibilní nad tělesem Q, ale není ireducibilní nad tělesem Z 2, kde se koeficienty počítají modulo 2! Nebot x 2 + 1 = (x + 1)(x + 1) = x 2 + 2x + 1.
Ireducibilní polynom jako modul Zavedeme počítání modulo polynom takto: A(x) mod P(x) = zbytek po dělení A(x) polynomem P(x). Výsledek je tedy polynom stupně ostře menšího než je stupeň modulu P(x). Příklad: pro A(x) = x 3 a P(x) = x 2 + 1 máme A(x) = x(x 2 + 1) + ( x) a tedy x 3 x mod x 2 + 1. Je-li je P(x) ireducibilní (s ohledem na těleso, ze kterého bereme koeficienty), tvoří zbytky po dělění P(x) grupu (pokud opět vyjmeme nulový polynom)
Těleso GF(2 4 ) Prvky GF(2 4 ) reprezentujeme jako polynomy stupně nanejvýš 3 s koeficienty h i z tělesa Z 2 : h 3 x 3 + h 2 x 2 + h 1 x + h 0 (h 3 h 2 h 1 h 0 ) 2. Sčítání po složkách modulo 2: (x 3 + x + 1) + (x 2 + x + 1) = x 3 + x 2.
Těleso GF(2 4 ) násobení Násobení modulo zvolený ireducibilní polynom, např. x 4 + x + 1. Příklad: násobení A(x) B(x) pro A(x) = x 3 + x 2 + 1 a B(x) = x 2 + x 1. krok vynásobím A(x) B(x) klasicky a koeficienty výsledku přepočtu modulo 2: A(x) B(x) = x 5 +2x 4 +x 3 +x 2 +x = {koef. mod 2} = x 5 +x 3 +x 2 +x 2. krok najdu zbytek po dělení P(x). Jelikož x 5 = x(x 4 +x+1)+(x 2 +x), platí x 5 x 2 +x mod x 4 +x+1 z čehož dostáváme x 5 +x 3 +x 2 +x (x 2 +x)+(x 3 +x 2 +x) x 3 mod x 4 +x +1. Neboli jsme spočítali, že 1101 0110 = 1000.
AES v tělese GF(2 8 ) Dle specifikace AES se násobení počítá modulo x 8 + x 4 + x 3 + x + 1. K reprezentaci prvků se tedy používá 8 (= stupeň polynomu výše) bitů.
Bonusové přednáškové body Spočítejte 69 999632 mod 113. Najděte inverzi k x 7 + x 6 + x 4 + x 2 + 1 při počítání v GF(2 8 ) s modulem x 8 + x 4 + x 3 + x + 1. Řešení i s výpočtem (či podrobným popisem toho jak jste se k výsledku dostali), mi pošlete na email karel.klouda@fit.cvut.cz Oceňuji kvalitu řešení, ale i rychlost bod(y) dostane pouze prvních cca 10 řešitelů. Aktuální stav řešení problému najdete na www.kloudak.eu/mpi.
Literatura J. Mareš, Algebra, skriptum FJFI více o okruzích, oborech integrity a tělesech Ch. Paar a J. Pelzl, Understanding Cryptography vše o Diffie-Hellmanovi a AES a mnohé o konečných tělesech R. Montowani, P. Raghavan, Randomized algorithms pravděpodobnostní algoritmy řešící některé dnes zmíněné problémy