Kriptográfia és Információbiztonság 8. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2017
Miről volt szó az elmúlt előadáson? A Crypto++ könyvtárcsomag A OpenSSL könyvtárcsomag Az NTL könyvtárcsomag Nagyszámok kezelése, C# Nagyszámok kezelése, Java Az RSA titkosító rendszer: specifikáció, példa Valószínűségi prímtesztek A kínai maradéktétel Faktorizációhoz kapcsolódó problémák
Miről lesz szó? a Rabin titkosító a diszkrét logaritmus probléma, primitív gyök (generátor elem) meghatározása. diszkrét logaritmus problémán alapuló rendszerek: Diffie-Hellman kulcscsere
A Rabin titkosító rendszer 1979-ben publikálta Michael O. Rabin, azt a lehetőséget vizsgálja, amikor az RSA titkosítás során az e = 2 értéket választjuk ha e = 2, akkor nem létezik inverz, mert phi mindig páros, ezért lnko(e, phi) 1 a visszafejtést más aritmetikai műveletek határozzák meg Gen, a kulcs-generáló algoritmus: (p, q) R Gen(1 k ), ahol p q 3 (mod 4), n = p q, p k = (n), s k = (p, q), Enc (n) a rejtjelező algoritmus: c m 2 Dec (p,q) a visszafejtő algoritmus: m c 1 2 (mod n), (mod n).
A Rabin titkosító, biztonság A visszafejtés nem egyértelmű: 4 lehetséges visszafejtett szöveg közül kell kiválsztani a megfelelőt, a visszafejtés lépéssorozata, alkalmazzuk a kínai maradéktételt: m p = c (p+1)/4 (mod p), m q = c (q+1)/4 (mod q), kiterjesztett Euklideszi algoritmussal meghatározzuk p 1, q 1 -t, jelöljük rendre x, y-al, azaz x p + y q = 1, m 1 = (x p m q + y q m p) (mod n), m 2 = (x p m q y q m p) (mod n) m 1, m 1, m 2, m 2 lesz a 4 megoldás.
A Rabin titkosító rendszer, példa legyen p = 11, és q = 31 n = 341, legyen m = 42, a nyílt-szöveg, titkosítás: c = 42 2 = 59 (mod 341), visszafejtés: 11 = 31 = 3 (mod 4) 59 (11+1)/4 = 9 (mod 11), 59 (31+1)/4 = 20 (mod 31), kiterjesztett Euklideszi algoritmussal: 31 1 = 5, 11 1 = 17, azaz 31 5 + 11 17 = 341, m 1 = (31 31 1 9 + 11 11 1 20) = 20 (mod 341), m 2 = (31 31 1 9 + 11 11 1 20) = 20 (mod 341), m 3 = (31 31 1 9 11 11 1 20) = 42 (mod 341), m 4 = (31 31 1 9 11 11 1 20) = 42 (mod 341),
A Rabin titkosító, biztonság A visszafejtés fenti képletét azért lehet alkalmazni, mert p q 3 (mod 4), sokkal hatékonyabb, mint az RSA, megmutatható, hogy a Rabin rendszer feltörése ugyanolyan nehézségű, mint a fakorizációs probléma, ez nem igaz a textbook RSA-ra, az RSA-nál vett feltörési stratégiák egy része itt is alkalmazható, újabb változata (2001, Boneh) ellenáll a CCA támadásnak (az egyik legerősebb támadási mód), illetve egyértelmű a visszafejtése hasonlóan az RSA-hoz kulcscsere és hitelesítési protokollokban használják.
A diszkrét logaritmus (DL) probléma Számos kriptorendszer biztonsága alapszik a DL problémán. Az egész számok Z p multiplikatív csoportja esetében, ahol p prímszám a DL probléma a következő: az A, g-alapú diszkrét logaritmusa (mod p) szerint azt jelenti, hogy megkeressük azt az a pozitív egész számot, melyre fennáll: g a A (mod p), ahol g primitív gyök (generátor elem), és g, A Z p. A g szám primitív gyök (mod p) szerint, ha g hatványai 1-től, φ(p)-ig, azaz g, g 2, g 3,..., g φ(p), különböző maradékot adnak (mod p) szerint. A primitív gyök egy sajátos esetét jelenti a multiplikatív csoportok generátor elemének.
Adott primitív gyök meghatározása A p > 2 prímszám és g Z p esetében g akkor és csakis akkor primitív gyök (mod p) szerint, ha g (p 1)/q 1 (mod p), bármely q prímszám esetében, ahol q (p 1). Ha ismert a p 1 prímtényezős felbontása, akkor egyszerű meghatározni a primitív gyököt nem hatékony algoritmus. Ha p = 2 q + 1, ahol p, q páratlan prímszámok, akkor g primitív gyök (mod p) szerint, ahol g ±1 (mod p), akkor és csakis akkor, ha g q = p 1 (mod p) hatékony algoritmus.
Adott primitív gyök meghatározása, példa Legyen p = 13, p 1 = 12 = 2 2 3, g = 7 primitív gyök? Igen, mert 7 4 = 9 1 (mod 13) és 7 6 = 12 1 (mod 13). g = 9 primitív gyök? Nem, mert 9 4 = 9 1 (mod 13) és 9 6 = 1 (mod 13). Legyen p = 47, p 1 = 46 = 2 23, g = 13 primitív gyök? Igen, mert 13 23 = 46 (mod 47). g = 3 primitív gyök? Nem, mert 3 23 = 1 (mod 47).
Diffie-Hellman kulcscsere 1976-ban publikálták a szerzők, két távoli egység (számítógép, mobileszköz, stb.) kulcscsere mechanizmusára, hitelesítésére ad megoldást. Feltételezve, hogy a kommunikációban résztvevő két legális fél Alice és Bob, akkor a protokoll a következő: 1. Alice és Bob egy központi szervertől lekéri a p, k-bites prímszámot, és a g primitív gyököt (mod p) szerint, 2. Alice a k, p, g ismeretében meghatározza az a, A értékeket, ahol: a {2,..., p 2} véletlen szám, A = g a (mod p), az a értékét titokban tartja, A-t pedig elküldi Bobnak.
Diffie-Hellman kulcscsere 3. Bob a k, p, g ismeretében meghatározza a b, B értékeket, ahol: b {2,..., p 2} véletlen szám, B = g b (mod p), a b értékét titokban tartja, B-t pedig elküldi Alicenak. 4. Alice a közös K kulcsot a kövekezőképpen határozza meg: K = B a (mod p). 5. Bob a közös K kulcsot a kövekezőképpen határozza meg: Helyesség: K = A b (mod p). K = A b = B a = g ab (mod p).
Diffie-Hellman kulcscsere, példa Legyen p = 47, g = 13, Alice : választja a = 12-t A = g a (mod p) = 9 (mod 47), elküldi Bobnak az A = 9 értéket. Bob: választja b = 34-t B = g b (mod p) = 21 (mod 47), elküldi Alicenak a B = 21 értéket. Alice: K = B a (mod p) = 21 12 = 16 (mod 47), Bob: K = A b (mod p) = 9 34 = 16 (mod 47). a közös kulcs: K = 16.
Diffie-Hellman kulcscsere, biztonság lassú áttérés a (mod p) aritmetikáról az elliptikus görbékre, nem biztonságos egy aktív támadó esetében (man in the meedle): egy C támadó kiadja magát A-nak, mint B, illetve kiadja magát B-nek, mint A, A irányába, a közös kulcs K 1 = g a ˆb, B irányába, a közös kulcs K 2 = g â b,