Kriptográfia és Információbiztonság 2 előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@mssapientiaro 2016
Miről volt szó az elmúlt előadáson? Félévi áttekintő Könyvészet Történelmi háttér Klasszikus kriptográfiai rendszerek: Eltolásos rejtjelezések: Caesar-titkosító, Keyword Caesar
Miről lesz szó? Klasszikus kriptográfiai rendszerek, matematikai modell Helyettesítéses rejtjelezés: affin-titkosító, Mátrixos rejtjelezés: Hill módszere az NTL könyvtárcsomag
A klasszikus titkosítás matematikai modellje Legyen M a nyílt-szövegek egy véges halmaza, C a rejtjelezett-szövegek egy véges halmaza, K a kulcsok egy véges halmaza Három algoritmust értelmezünk: Gen, a kulcs-generáló algoritmus, meghatározza a key kulcsot, Enc key a rejtjelező algoritmus, a key kulcs alapján, meghatározza az m M nyílt-szöveg rejtjelezett értékét: c Enc key (m), Dec key a visszafejtő algoritmus, a key kulcs alapján visszafejti a c rejtjelezett-szöveget: m Dec key (c) A rendszer helyessége érdekében megköveteljük: Dec key (Enc key (m)) m, minden m M esetében Számos klasszikus titkosítási rendszer létezik: Caesar, Vigenere, Palyfair, Hill, stb
Az Affin rejtjelezés helyettesítéses, monoalfabetikus rejtjelezés, M C {0, 1,, 25} Z 26, K {(a, b) Z 26, gcd(a, 26) 1}, key (a, b): Enc(m) (a m + b) (mod 26), Dec(c) a 1 (c b) (mod 26) Megjegyzés: 1 a 1, az a multiplikatív inverze (mod 26) szerint: Feltörési módszerek: a a 1 1 (mod 26) 1 gyakoriság vizsgálat, 2 az összes lehetséges kulcs kipróbálása, kulcsok száma: 312, 3 ismert nyílt-szöveg támadás: ha rendelkezünk két betű rejtjelezett értékével
Az Affin rejtjelezés - példa Ha a kulcs (5, 2) és a nyílt-szöveg a következő: akkor a titkosított-szöveg: AMATHEMATICIAN, CKCTLWKCTQMQCP, ahol a titkosított-szöveg első 6 karakterét a következőképpen határoztuk meg: A > C : (5 0 + 2) 2 (mod 26) M > K : (5 12 + 2) 10 (mod 26) A > C : (5 0 + 2) 2 (mod 26) T > T : (5 19 + 2) 19 (mod 26) H > L : (5 7 + 2) 11 (mod 26) E > W : (5 4 + 2) 22 (mod 26) A visszafejtéshez szükséges kulcs: (21, 2), mert 5 21 105 1 (mod 26), azaz, 5 multiplikatív inverze (mod 26) szerint 21
Az Affin rejtjelezés - ismert nyílt-szöveg támadás Ha ismertek az m 1, m 2, c 1, c 2, akkor a következő kongruencia-rendszer megoldásával, megállapítható a titkosításhoz használt (a, b) kulcs: m 1 a + b c 1 (mod 26) m 2 a + b c 2 (mod 26) (m 1 m 2 ) a (c 1 c 2 ) (mod 26) a (m 1 m 2 ) 1 (c 1 c 2 ) (mod 26) b (c 1 m 1 a) (mod 26) vagy b (c 2 m 2 a) (mod 26) Ha létezik multiplikatív inverz, akkor az meghatározható : a kiterjesztett Euklideszi algoritmussal, az összes érték kipróbálásával (26 szorzás szükséges)
Hill módszere, példa, titkosítás 1929-ben publikálta Lester S Hill, polialfabetikus rendszer, az első blokk titkosítók egyike Legyen d 2, az egyszerre titkosítható szimbólumok száma, M C Z 2 26, és ( ) 3 3 key, 2 1 ha a nyílt szöveg: AM AT HE MA TI CI AN, akkor a titkosított szöveg: KM FT HQ KC DW EE NN, az első két betű-tömb titkosítása: ( ) ( ) ( 3 3 A 3 3 2 1 M 2 1 ( 3 3 2 1 ) ( A T ) ( 3 3 2 1 ) ( 0 12 ) ( 0 19 ) ( 10 12 ) ( 5 19 ) ( K M ) ( F T ), )
Hill módszere, példa, visszafejtés a visszafejtéshez meg kell határoznunk a kulcs inverz értékét, azaz a determináns, majd az inverz mátrix értékét ( ) 3 3 key esetében (det key) 1 3 ( 2) 3 9, 2 1 gcd(9, 26) 1 (det key)-nek létezik inverze, ahol (det key) 1 3, mert 9 3 1 (mod 26) ( ) 1 3 az adjungált mátrix: (adj key) 2 3 az inverz mátrix: key 1 (det key) 1 (adj key) 3 az első két betű-tömb visszafejtése: ( ) ( ) ( 3 9 K 3 9 6 9 M 6 9 ( 3 9 6 9 ) ( F T ) ( 3 9 6 9 ( 1 3 2 3 ) ( 10 12 ) ( 5 19 ) ( 3 9 6 9 ) ( 0 12 ) ( 0 19 ) ) ( A M ) ( A T ), )
Hill módszere, általános esetben M C Z d 256, a key egy d d-es mátrix, melynek elemei Z 256, jelöljük a mátrix i, j elemét k i,j -vel, legyen m (m 1, m 2, m d ) M a nyílt szöveg egy d hosszúságú blokkja, melyet egy lépésben fogunk titkosítani, a titkosítás során meghatározzuk a nyílt szöveg egy lineáris transzformációját: c (c 1, c 2, c d )-t,
Hill módszere Enc key (m) : c key m (c 1, c 2, c d ) k 1,1 k 1,2 k 1,d k 2,1 k 2,2 k 2,d k d,1 k d,2 k d,d m 1 m 2 m d Dec key (c) key 1 c key 1 létezik, ha (det key) (det key) 1 1 (mod 256), key 1 (det key) 1 (adj key) (mod 256), ahol (adj key) az adjungált mátrix ha d 2, akkor egyszerűen meghatározható az inverz mátrix ( ) ( ) k1,1 k key 1,2 és key k 2,1 k 1 (det key) 1 k2,2 k 1,2 2,2 k 2,1 k 1,1 általános esetben több algoritmus is létezik C++ alatt lehet használni Shoup NTL könyvtárcsomagját
Az NTL könyvtárcsomag Victor Shoup: NTL könyvtárcsomag (Windows és Linux disztribuciók) A statikus könyvtár létrehozása (Win): töltsük le és csomagoljuk ki a, pl a WinNTL mappába: http://wwwshoupnet/ntl/downloadhtml hozzunk létre egy új projektet: New Project Win32 ConsoleApplication, adjunk egy nevet a projektnek, legyen ez NTLLib, jelöljük be a Static library opciót ne legyen bejelölve a Precompiled header opció, a Source Files-hoz az Add Existing Item menüpont segítségével adjuk hozzá a WinNTL\src mappából az összes állományt, a Project/NTLLib/Properties menüpontnál az Additional Include Directories-nél adjuk meg a header állományok elérési útvonalát: \WinNTL\include a Build\Bulid\Solution parancs megadásával létrejön a NTLLib\Debug mappában a statikus könyvtár
Az NTL könyvtárcsomag, használat Hozzunk létre egy új projektet: New Project Win32 Console Application, adjunk egy nevet a projektnek, legyen ez Labor6, jelöljük be a Empty project opciót a Labor6 project-hez az Add Existing Item menüpont segítségével adjuk hozzá az NTLLib Debug mappából a létrehozott statikus könyvtárat, a Project/NTLLib/Properties menüpontnál az Additional Include Directories-nél adjuk meg a header állományok elérési útvonalát: \WinNTL\include
Az NTL könyvtárcsomag, használat a forráskódba: #ifndef _ZZ_ #define _ZZ_ #include <NTL/ZZh> #include <NTL/matrixh> #include <NTL/mat_ZZh> #endif NTL_CLIENT ZZ d; a nagy számok kezelésére szolgáló típus, Mat<ZZ> A; mátrix kezelésére alkalmas típus, ASetDims(n, n); az A mátrix méretének a beálĺıtása, ANumRows(); sorméret lekérdezés, ANumCols(); oszlopméret lekérdezés, inv(d, inva, A, 0); meghatározza az A mátrix determinánsát, a d változóba illetve azt az inva mátrixot, amelyre teljesül: (A * inva) / d I
Hill módszere - ismert nyílt-szöveg támadás, d 2 Ha ismertek az m, ˆm, c, ĉ, tömb-párok értékei, ahol az m rejtjelezett értéke c és az ˆm) rejtjelezett értéke ĉ), akkor a következő rendszer megoldásával, megállapítható a titkosításhoz használt key kulcs, ( ) ( ) ( ) ( ) m1 c1 ˆm1 ĉ1 legyen m, c, ˆm, ĉ, m 2 c 2 ˆm 2 ĉ 2 feĺırható: ( ) ( ) m1 ˆm key 1 c1 ĉ 1 m 2 ˆm 2 c 2 ĉ 2 ( ) ( ) 1 c1 ĉ key 1 m1 ˆm 1 c 2 ĉ 2 m 2 ˆm 2 hasonló támadási stratégia alkalmazható nagyobb blokk méret esetében