Kriptográfia 3 Integritásvédelem Autentikáció Adat integritásvédelem Manipuláció detektáló kód és kódverifikálás MDC " f (K e,data) $ True, with probability 1 g(k v,data,mdc) = if MDC = f(k e,data) % & False, with an overwhelming probability if MDC # f(k e,data) Üzenet forrás Forrás transzformáció Data, MDC Verifikáció Üzenet vev Üzenet csatorna Ke Kv Kulcs csatorna Kulcs generálás 2
Integritásvédelmi technikák Titkos kulcsú technikák: K e=kv MDC -> MAC Nyílvános kulcsú technikák: K ekv Hash érték képzés kulccsal Hash érték blokk titkosítva MAC létrehozása az üzenet kivonatból 3 Hash függvény h=h(x) Kriptográfiai hash függvények h(.), hash érték h, hash érték hossza: h Kever" transzformáció h(x) nem különböztethet" meg random bináris [0,2 h )-beli stringekt"l Ütközés állóság nehéz találni xy inputokat, hogy h(x)=h(y) El"-kép állóság nehéz találni x inputot adott h-hoz, hogy Gyakorlati hatékonyság adott x-hez hatékonyan számolható h(x) 4
Hash függvények alkalmazása Üzenet lenyomatok, kivonatok el"állítása Titkos szöveg helyesség-ellen"rzés Használat pszeudo-véletlen függvényként 5 Születésnap támadás Ütközések 0 < " <1 x1, x 2...x k #U X Prob[ f (x i ) = f (x j )] $ " i % j k =? n különböz kimenetre : k & 2n log 2 h = 2 h /2 (m1,h(m1 )),(m2,h(m2 )),... m, m" m # m",h(m) = h( m") 1 1' " " = 1/2 k & 1.1774 n 6
Az MD5 üzenetlenyomat Ron Rivest 1991, 128 bites (32 hexa jegy) Nem ütközés álló túl rövid, hogy nehezen lehessen ütközést okozó bemeneteket találni SSL (X509) tanúsítványokhoz nem biztonságos Felhasználás nagy fájlok letöltésekor integritás ellen"rzésre megfelel" sózással jelszavak tárolására 7 Üzenet autentikáció MAC képzés M üzenethez MAC=h(k M) HMAC=h(k M k) Blokk titkosítás felhasználása M=m 1m2...ml C i#ek(mici-1), i=1,2...l CBC-MAC: (IV,C l) 8
Digitális aláírás Nyílvános kulcsú megoldás titkosítás privát kulccsal verifikálás nyílvános kulccsal =>digitális aláírás letagadhatatlanság biztosítás 9 Digitális aláírás (folyt.) Digitális aláírás séma nyíltszöveg üzenettér: M aláírás tér: S aláíró kulcstér: K verifikáló kulcstér: K kulcs generáló alg.: G:"KK' aláíró alg.: Sign: MxKS verifikáló alg.: Verify: MxSxK {True,False} s " Sign sk (m) # True, with probability 1 if s " Sign sk (m) Verify pk (m,s) = $ %False, with an overwhelming probability if s " Signsk (m) 10
Egzisztenciális hamisítás (Sign sk, Verifypk) egyirányú függvénypár Verify pk(s,m) s->m irányban könny$ érvényes üzenet-aláírás párt hamisítani m véletlenszer$, értelmetlen megel"zhet" felismerhet" üzenet redundancia biztosításával m = M I m = h(m) 11 RSA aláírás Kulcs felépítés, setup mint az RSA kriptorendszernél Aláírás s=sign d(m)#m d (mod N) Aláírás verifikálás Verify (N,e)(m,s)=True if m"s e (mod N) 12
Adatintegritás forrásazonosítás nélkül Digitális aláírás K privát kulcs, K nyílvános =>feladó identitása ellen"rizhet" Adatintegritás ellen"rzés forrás azonosítás nélkül K nyílvános, K privát =>bárki küldhet nehezen módosítható e v e v üzenetet 13 Optimal Asymmetric Encrytion Padding Kulcs paraméterek,k ) (N,e,d,G,H,n,k N = k = n + k + k,n = m 0 0 k 1 1 G : {0,1} 0 {0,1} k"k0,h : {0,1} k"k0 k {0,1} 0 Titkosítás 1. r " {0,1} ;s " (m 0 ) # G(r);t " r # H(s) k0 k1 U 2. if (s t $ N) go to 1; 3. c " (s t) e (mod N). Visszafejtés ( ) 1. s t " c d (mod N), s = n + k1 = k # k 0, t = k 0 ; 2. u " t $ H(s); v " s $ G(u); %m if v = m 0 k1 3. output : & ' REJECT otherwise 14
Autentikációs technikák Meggy"z"dés másik entitás sajátosságairól adatforrás autentikáció (üzenet autentikáció) entitás autentikáció autentikált kulcs beállítás Üzenet frissesség és felek él"sége Kölcsönös és egyoldalú autentikáció Autentikáció harmadik fél bevonásával 15 Entitás autentikáció Hoszt-hoszt típusú platformok Tag-klub típusú elosztott rendszerek csomópontjai, Felhasználó-hoszt típusú login, pénzügyi tranzakció Folyamat-hoszt típusú folyamat jogosultság kezeléshez felhasználó-hoszt típus generalizálása 16
Kihívás-válasz mechanizmus Szimmetrikus kulcsú technika 1. Bob " Alice : N B 2. Alice " Bob : E K AB (M,N B ) #accept if he sees N B 3. Bob $ %rejects otherwise. integritási technika Üzenet 1. Bob " Alice : N B 2. Alice " Bob : M, MDC(K AB, M,N B ) #accepts if two MDCs are identical 3. Bob $ %rejects otherwise. Nyílvános kulcsú technika 1. Bob " Alice : N B 2. Alice " Bob : sig A (M,N B ) #accepts if signature verification passes 3. Bob $ %rejects otherwise. 17 Idbélyeg mechanizmus Frissesség azonosító 1. Alice " Bob : E K AB (M,TA ) #accept if TA is deemed valid 2. Bob $ %rejects otherwise. 1. Alice " Bob : M, TA, MCD(K AB, M,TA ) #accepts if two MDCs are identical and TA is deemed valid 2. Bob $ %rejects otherwise. 1. Alice " Bob : sig A (M,TA ) #accepts if signature verification passes and TA is deemed valid 2. Bob $ %rejects otherwise. 18
Kölcsönös autentikáció ISO Public key Three-pass Mutual Authentication Protocol 1. Bob " Alice : R B 2. Alice " Bob : Cert A,TokenAB 3. Bob " Alice : Cert B,TokenBA TokenAB = RA RB B siga (RA RB B) TokenBA = RB RA A sigb (RB RA A) Canadian Attack Megel"zés: RB állapotának kezelésével 1. Malice(Bob) " Alice : 2. Alice " Malice(Bob) : 3. Malice(Alice) " Bob : 4. Bob " Malice(Alice) : 5. Malice(Bob) " Alice : RB Cert A,TokenAB RA Cert B,TokenBA (R'B...) Cert B,TokenBA (R' B...) 19 Jelszavas autentikáció Felhasználó-hoszt típusú autentikáció leggyakoribb eszköze 1. U " H : IDU 2. H " U : "Password?" 3. U " H : PU 4. H finds (IDU,PU ) from its archive, Access granted if PU matches the archive. Problémák nincs frisseség ellen"rzés dedikált vonalakkal m$ködik jelszófájl sérülékenysége 20
Jelszavas autentikáció (folyt.) Jelszófájl védelme egyirányú (hash) függvénnyel kódolt jelszó tárolás 1. U " H : IDU 2. H " U : "Password?" 3. U " H : PU 4. H applies f on PU finds (IDU, f (PU )) from its archive, Access granted if computed f(pu ) matches the archive. 21 Egyszerhasználatos jelszavak Jelszó lehallgatás elleni megoldás f n (PU ) = f (...( "#f (PU ))...) n 1. U " H : IDU 2. H " U : "Password?" 3. U " H : Q = f c#1 (PU ) 4. H finds (IDU, f c (PU ),c) from its archive, Access granted if f (Q) = f c (PU ), password entry updated to (IDU,Q,c -1). 22
Kripto alg. kipróbálása SAGE: nyílt forrású komputer algebrai csomag bc: UNIX, Linux tetsz"leges pontosságú számológép Java BigInteger osztály: nagy egészek, moduló aritmetika 23