Diszkrét matematika 2. A szakirány 11. előadás Ligeti Péter turul@cs.elte.hu www.cs.elte.hu/ turul
Nagy hálózatok Nagy hálózatok jellemzése Internet, kapcsolati hálók, biológiai hálózatok,... globális jellemzés esélytelen lokális tulajdonságok mérése modellezés Vizsgált jellemzők maximális komponens mérete, maximális teljes részgráf (klikk) mérete,... fokszámeloszlás: p k = P (deg(v) = k) átlagos úthossz klaszterezettség: egy csúcs szomszédai milyen gyakran vannak összekötve centralitás mértékek: mik a fontos csúcsok
Erdős-Rényi modell Konstrukció G(n, p) gráf n csúcson minden lehetséges élet p valószínűséggel behúzunk a többitől függetlenül Tulajdonságok np < 1 : nagy valószínűséggel log n méretűnél nagyobb komponens np = 1 : maximális komponens mérete n 2/3 np > 1 : van óriás komponens ( cn méretű), a többi log n-es fokszámeloszlás: p k = ( n 1) k p k (1 p n 1 k ) átlagos úthossz: log n klaszterezettség: 1 n
Watts-Strogatz kis-világ modell Konstrukció n csúcs, V = {v 1,..., v n}, K átlagos fokszám, n K log n, p valószínűség 1. v i -t összekötünk k szomszédjával (fele előtte, fele utána) 2. v i, (v i, v j ) élt i < j esetén p valószínűséggel kicseréljük véletlen (v i, v l ) élre Tulajdonságok p = 0 : szabályos gyűrű-gráf, p = 1 : Erdős-Rényi gráf, 0 < p < 1 az érdekes fokszámeloszlás: p k = f(k,k) i=0 CK/2 i (1 p)i p K/2 i (pk/2) k K/2 i e (k K/2 i)! pk/2 átlagos úthossz: < log n kis-világ tulajdonság: lokálisan klaszterezett, klaszterezettség: 3(k 2) (1 p)3 4(k 1)
Barabási-Albert modell Konstrukció 1. kiindulunk egy összefüggő gráfból V = {v 1,..., v n} csúcsokon 2. hozzáadunk új csúcsokat, mindet m n korábbi csúcshoz kötünk, v i -hez deg(v i )-vel arányos valószínűséggel Tulajdonságok növekedés és preferenciális kapcsolódás fokszámeloszlás: p k k γ valamely γ R + értékre átlagos úthossz: klaszterezettség: log n log log n 1 n 0.75 néhány γ érték: INTERNET: 2.1, hivatkozások: 3, USA elektromos hálózat: 4
Diszkrét logaritmus Emlékeztető Legyen (G, ) csoport és K G. A K halmaz generátuma K = H G,K H H. Ha g G : G = g, akkor a csoport ciklikus és g a generátora. Ekkor G = n N + esetén G = {g, g 2, g 3,..., g n 1, g n = s} Definíció Legyen G = g, G = n N +. A h G elem diszkrét logaritmusa az a {0, 1,..., n 1} : g a = h. Példák G = {..., 0.001, 0.01, 0.1, 1, 10, 100, 1000,... }, a csoport (G, ) = 10. 10000 G diszkrét logaritmusa 4. (Z, +) = 1 csoportban k Z diszkrét logaritmusa k (Z 5, ) is ciklikus. 3 Z 5 diszkrét logaritmusa 4. (Z 17, )-ben 13 diszkrét logaritmusa 4 (Z 2 21701, )-ben 13 diszkrét logaritmusa... 1
Diszkrét logaritmus Diszkrét logaritmus probléma Legyen adott G = g, G = n N + nyilvános paraméterek. Feladat: adott h G elemnek számítsuk ki a diszkrét logaritmusát. Megjegyzés speciális esetekben könnyű kiszámítani általános, hatékony algoritmus nem ismert bizonyos csoportokban a legrosszabb eset, sőt az átlagos eset is nehéz... nehéz probléma kriptográfiai alkalmazások Példák, ahol nehéz (Z p, ), ahol p nagy prím (néhány-ezer bit elég) véges test feletti elliptikus görbék ciklikus részcsoportjai: rögzített a, b F p véges test feletti y 2 = x 3 + ax + b egyenlet megoldásai egy görbét határoznak meg, megfelelő művelettel csoport lesz
Diffie-Hellman-Merkle kulcscsere protokoll Kulcscserélés probléma Aliz és Bob egy nyilvános (nem-biztonságos) csatornán keresztül szeretnének egy közös titkos kulcsban megállapodni. Alapötlet: Protokoll: 1 Aliz és Bob megegyeznek a nyilvános paraméterekben (G = g, n = G, g) 2 Aliz választ egy véletlen titkos indexet: a {1,..., n} és elküldi Bobnak key a = g a -t 3 Bob választ egy véletlen titkos indexet: b {1,..., n} és elküldi Aliznak key b = g b -t 4 közös kulcs: key b a = keya b = gab Állítás Ha G-ben megoldható a diszkrét logaritmus probléma, akkor a nyilvános információkból ki lehet számítani a közös kulcsot. Alkalmazások https, SSL, TLS (p 2048 bit) VPN IPsec (p 2048 bit)
AES titkosítás Szimmetrikus kulcsú titkosítás Feladat: Aliz és Bob közötti kommunikáció titkosítása egy közös, véletlenszerű titkos kulcs segítségével úgy, hogy egy adott üzenet eltitkosításához és visszafejtéséhez ugyanazt a kulcsot használják. One-time pad s {0, 1} n közös titkos kulcs, m {0, 1} n üzenet eltitkosítás: c = m s (bitenkénti mod 2 összeadás) visszafejtés: c s = (m s) s = m Blokktitkosítók s {0, 1} n közös titkos kulcs, m {0, 1} üzenet, k N + blokkméret enc : {0, 1} n+k {0, 1} k titkosító fv, dec : {0, 1} n+k {0, 1} k visszafejtő fv. eltitkosítás/visszafejtés blokkonként: m = (m 1, m 2,... ), m i {0, 1} k eltitkosítás: ENC(s, m) = (enc(s, m 1 ), enc(s, m 2 ),... ) = (c 1, c 2,... ) = c visszafejtés: DEC(s, c) = (dec(s, c 1 ), dec(s, c 2 ),... ) = (m 1, m 2,... ) = m
AES titkosítás Emlékeztető Legyen (R, +, ) gyűrű és I R. Ekkor ({a + I : a R},, ) is gyűrű. Ezt faktorgyűrűnek nevezzük, jele röviden R/I. Állítás Legyen F test, f F [x] irreducibilis főpolinom. Ekkor az F/ f faktorgyűrű test. AES Advanced Encryption Standard Daemen és Rijmen által kidolgozott blokktitkosító algoritmus speciális esete 2001 óta az USA standard blokktitkosító blokkméret 128 bit, kulcsméret 128, 192 v 256 bit x 8 + x 4 + x 3 + x + 1 polinom irreducibilis Z 2 feletti Z 2 / x 8 + x 4 + x 3 + x + 1 egy 256-elemű test, ezt (is) használja az AES gyors, szoft/hardverben is jól implementálható nem ismert általános hatékony támadás
Titokmegosztás Emlékeztető (R, +, ) egységelemes integritási tartomány, ha f, g R[x], deg(f), deg(g) n polinomoknak n + 1 különböző helyen megegyezik a helyettesítési értéke, akkor f = g. Tétel (Lagrange-interpoláció) Legyen (R, +, ) test, c 0, c 1,..., c n, d 0, d 1,..., d n R : i j c i c j. Ekkor!f R[x] : deg(f) n, f(c i ) = d i, i = 0, 1,..., n. Bizonyítás f(x) = n i=0 d il i (x) jó lesz, amennyiben l i (x) = j i (x c j) j i (c i c j ).
Titokmegosztás k-küszöb titokmegosztás Legyen k, n N +, k n és S véges halmaz. Feladat: s F titkot szétosztani s 1, s 2,..., s n titokrészekre úgy, hogy (i) bármely k különböző s i ismeretében s hatékonyan kiszámítható (ii) k-nál kevesebb s i ismeretében semmi ne derüljön ki s-ről Shamir-féle titokmegosztás Legyen S = F, F = p véges test, ahol n p. válasszunk f F[x], deg(f) = k 1 polinomot véletlenül, amelyre f(0) = s. az i-edik titokrész legyen s i = f(i) (i) teljesül (Lagrange-interpoláció) (ii) is teljesül (véletlen választás + interpoláció) Alkalmazások kulcsok, indító kódok, banki hozzáférések elosztása cloud-computing, szenzor-hálózatok komplex kriptográfiai rendszerek alapvető építőköve
Nyelvek entrópiái Emlékeztető Egy k tagú eloszlás egy p 1,..., p k sorozat, ha p i R +, k i=1 p k = 1. Ennek az eloszlásnak az entrópiája H r(p 1,..., p k ) = k i=1 p i log r p i. Az entrópiára általános felső korlát: H r(p 1,..., p k ) log r k. Élő nyelvek entrópiái Nyelv abc méret Entrópia Entrópia/korlát izlandi 32 4.502 0.9005 angol 26 4.169 0.887 magyar 37 4.5238 0.8684 dán 29 4.2142 0.8675 norvég 29 4.202 0.865 eszperantó 28 4.1535 0.864 német 30 4.1915 0.8542 spanyol 27 4.7549 0.8482 finn 29 4.0665 0.8371 olasz 33 4.061 0.805 francia 42 3.9864 0.7393
CRC kódok Emlékeztető Legyen F véges test, F = q. Ekkor az F n elemei az egy n-dimenziós lineáris teret alkotnak. Ennek a térnek egy tetszőleges K altere egy lineáris kód, dim(k) = k. Definíció A K F n egyenletes kód ciklikus (vagy CRC) kód, ha u = (u 0, u 1,..., u n 1 ) F n (u K (u 1, u 2,..., u n 1, u 0 ) K) Megjegyzés K ciklikus K lineáris. (f 0, f 1,..., f n 1 ) f(x) = f 0 + f 1 x + + f n 1 x n 1 izomorfizmus F n és a legfeljebb n 1-ed fokú F[x]-beli polinomok között. (kódszavak polinomok) Tétel Legyen K egy lineáris ciklikus kód a fenti paraméterekkel és g K minimális fokú főpolinom. Ekkor g egyértelmű és deg(g) = n k h F n (h K g(x) h(x))
Lineáris CRC kódok Definíció A g(x) polinomot a K kód generátorpolinomjának nevezzük. Egy g(x) generátorpolinomú lineáris, ciklikus kód esetén a h(x) = xn 1 g(x) polinomot paritásellenőrző polinomnak nevezzük. Megjegyzés egyszerű dekódolás, sokféle generálás c(x) kódszópolinom (c(x)h(x) = 0 mod (x n 1) deg c n 1) g xg generátormátrix: G =. x k 1 g hardverben könnyen megvalósítható, gyors alkalmazási terület: hibajelzés
Bináris CRC kódok Generálás F = 2, K F n, dim(k) = k g(x) = g 0 + g 1 x + + g n k 1 x n k 1 + x n k m F k üzenet(polinom) segítségével végezzünk egy maradékos osztást: x n k m(x) = g(x)q(x) + r(x) a kódpolinom: c(x) = x n k m(x) r(x) F 2 [x] eulkideszi gyűrű, az euklideszi algoritmus hardverben hatékonyan implementálható CRC standardok Név Polinom Alkalmazás CRC-1 x + 1 paritásbit CRC-3 x 3 + x + 1 GSM (hang) CRC-5 x 5 + x 2 + 1 USB tokenek CRC-8 x 8 + x 2 + x + 1 ATM header CCITT-16 x 16 + x 12 + x 5 + 1 HDLC, XMODEM, 3GPP CCITT-32 x 32 +x 26 +x 23 +x 22 +x 16 +x 12 +x 11 + IEEE 802, ATM, ARJ, x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1 RAR, PKZip ISO-64 x 64 + x 4 + x + 3 + x + 1 HDLC ISO 3309