Kriptográfia I Szimmetrikus kulcsú titkosítás Kriptorendszerek Nyíltszöveg üzenettér: M Titkosított üzenettér: C Kulcs tér: K, K Kulcsgeneráló algoritmus: Titkosító algoritmus: Visszafejt algoritmus: Titkosítás és visszafejtés: c = E ke (m) m = Dkd (c) G:"KK' E :M "K C D : C " K# M Dkd (E ke (c)) = m Szimmetrikus és aszimmetrikus kulcsú kriptorendszerek: ke " K, kd " K#, ke = kd ill. ke $ kd 2
Kriptorendszerek (folyt.) Nyílt szöveg Titkosítás Titkosított szöveg Visszafejtés Nyílt szöveg kd ke Kulcsgenerálás 3 Elvárások, tulajdonságok E,D algoritmusok nem tartalmaznak titkos részeket E egyenletesen teríti szét az üzeneteket a titkosított üzenettérben (esetleg véletlen elosztással) lim F n R = $ n "# n A megfelel kulccsal E, D hatékonyan üzemeltethet A visszafejtés nehézségét a kulcs mérete (s) határozza meg, ideje p(s)-nél rosszabb 4
Helyettesítéses titkosítás E k (m) Helyettesít függvény ":M C Dk (c) Fordított helyettesít függvény " #1 : C M Például: M=C="26 Kulcstér mérete 26=4*1026 A=0, B=1,...Z=25 E k (m) " 0 1 2... 25% $ ' #21 12 25... 6 & Dk (c) " 0 1 2... 25% $ ' 2& #24 21 15 Gyenge titkosítás: term. nyelvek frekvencia analízésével megfejthet 5 Eltolásos titkosítás K = M =C N :=# M $ E k (m) " m + k (mod N) % & Dk (c) " c # k (mod N) Caesar titkosítás: k=3 Ha lnko(k,n)=1, akkor minden m<n-re km (mod N) lefedi N-t $ E k (m) " k1m + k 2 (mod N) % #1 & Dk (c) " k1 (c - k 2 ) (mod N) $ E k (m) " km (mod N) % #1 & Dk (c) " k c (mod N) 6
Polialfabetikus titkosítás A nyílt szöveg elemek több titkosított üzenettér elemre képzdnek le Vigenère titkosítás blokkokra m hosszúságú kulcs nyílt szöveg felosztása m hosszúságú eltolásos titkosítás blokkonként (eltolások a kulcs alapján) 7 Vernam titkosítás m = b 1 b 2...b n " { 0,1} n k = k 1 k 2...k n " U { 0,1} n c i = b i # k i Helyettesítéses titkosítás speciális esete M = C = K = { 0,1} * Egyszer használt kulccsal információ-elméletileg ers titkosítás. 8
Transzpozíciós titkosítás Permutációs titkosítás üzenet elemeinek átrendezése " = (" (1), " (2),..." (b)) kulcs: ) = (x, x titkosás: "e (x(",(i))x,...x = i,i = 1,2,...b visszafejtés: " 1 2 b " (1) " (2),...x " (b ) ) #1 d" (y1, y 2,...y b ) = (y " #1 (1), y " #1 (2),...y " #1 (b ) ) 9 A Feistel architektúra Üzenet blokkok Kulcs (adott mérettel) Számítási menetek (rögzített szám) alkulcsok gyorsan elvégezhet m"veletek Blokk Kulcs Mvelet Mvelet... Mvelet Titkosított blokk 10
A DES Data Encryption Standard - United States National Bureau of Standards 1977 Blokk titkosítás M = C = {0,1} K = {0,1} 3 lépéses m"ködés permutáció kezdeti (L,R ) " IP(InputBlock) (i = 1,2,...16) 16 menet L "R 56 64 0 i 0 ki menet kulcs 48 bit f: S-box i#1 Ri " Li#1 $ f (Ri#1,k i ) végs permutáció OutputBlock " IP #1 (R16,L16 ) 11 A DES (folyt.) Kezdeti permutáció Round 1 Round 2 56-bit kulcs Round 16 Vég permutáció 12
A DES egy lépése 13 A DES biztonsága Az S-box nem-lineáris m"ködése fontos, a di#erenciális kriptoanalízis megelzésére Rövid kulcshossz brute force támadás Deep Crack 1998 56 óra Triple DES séma Nyílt szöveg DES titkosítás Kulcs 1 DES visszafejtés Kulcs 2 DES titkosítás Kulcs 3 Titkos szöveg 14
Az AES Advanced Encription Standard - NIST 2000 Rijndael algoritmus Változtatható blokk és kulcsméret (128,192,256 bit) 15 A Rijndael titkosítás 128 bites blokkok InputBlock = m 0 m 1...m 15 InputKey = k 0 k 1...k 15 10 menet Round(State,RoundKey){ SubBytes(State); ShiftRows(State); MixColumns(State); AddRoundKey(State,RoundKey); } Invertálható transzformáció a visszafejtéshez " m 0 m 4 m 8 m 12 % $ ' m InputBlock = $ 1 m 5 m 9 m 13 ' $ m 2 m 6 m 10 m 14 ' $ ' # m 3 m 7 m 11 m 15 & 16
A Rijndael titkosítás (folyt.) Bels függvények véges test felett m"ködnek RijndaelField(2 8 ) SubBytes x " (F ShiftRows 2 8 ) * y = Ax "1 + b transzpozíció MixColumns 4 oszlopra polialfabetikus helyettesítés AddRoundKey bitenkénti XOR a kulccsal key schedule séma szerint 17 Rijndael jellemzk Gyors implementáció lehetsége véges test feletti m"veletekhez logaritmus lookup táblázatok timing analízis kizárása Származtatott jól használható hash függvények 18
Blokk titkosítások biztonságának javítása Elektronikus kódkönyv mód (ECB) kódolása Kódblokk láncolás mód (CBC) Kimenet visszacsatolás (OFB) blokk titkosítás kimenetének üzenet szegmensek egymástól független blokk kódolása függ az elz blokkoktól Titkosított blokk visszacsatolás (CFB) elz titkosított blokk visszacsatolása visszacsatolása 19 CBC C 0 " IV C i " E(P i # C i$1 ) P1 P2 P3 IV + + + E E E C1 C2 C3 20
CFB I 1 " IV Shift left I i " LSB n#s (I i#1 ) C i#1 O i " E(I i ) C i " P i $ MSB s (O i ) /n E /n /s Select MSB s /s P /s + /s C 21 OFB I 1 " IV I i " O i#1 O i " E(I i ) C i " P i $ O i Shift left /n E /n /n P /n + /n C 22
Kulcscsatornák Hagyományos technikák Nyílvános kulcsú technikák 23