360 likes | 589 Views
Blo kovske šifre. (Iter acione ) Blo kovske šifre. Otvoreni tekst i šifrat se sastoje od blokova fiksne dužine Šifrat se dobija na osnovu otvorenog teksta iterativnom primenom fun kcije runde Ulaz u funkciju runde je ključ i izlaz prethodne runde Po pravilu, implementacija je softverska.
E N D
(Iteracione) Blokovske šifre • Otvoreni tekst i šifrat se sastoje od blokova fiksne dužine • Šifrat se dobija na osnovu otvorenog teksta iterativnom primenom funkcije runde • Ulaz u funkciju runde je ključ i izlaz prethodne runde • Po pravilu, implementacija je softverska
Feistel šifra • Feistel šifrase odnosi na vrstu dizajna blokovskih šifrara, a ne na neku specifičnu šifru • Podeliti otvoreni tekst na levu i desnu polovinu: O.tekst = (L0,R0) • Za svaku rundu i=1,2,...,n, izračunati Li= Ri1 Ri= Li1 F(Ri1,Ki) gde je F funkcija rundea Kijepodključ • Šifrat = (Ln,Rn)
Feistel šifra • Dešifrovanje: Šifrat = (Ln,Rn) • Za svaku rundu i=n,n1,…,1, izračunati Ri1 = Li Li1 = Ri F(Ri1,Ki) gde je F funkcija rundea Kijepodključ • O.tekst = (L0,R0) • Formula “radi” za bilo koju funkciju F • Ali sigurno samo za neke funkcije F
Data Encryption Standard • DES je razvijen 1970 tih godina • Zasniva se na IBM Lucifer šifri • Predstavlja standard Američke vlade • Razvoj DES-a su pratile kontraverze • NSA je bila tajno umešana u posao oko DES • Proces dizajniranja ove šifre nije bio javan • Dužina ključa je redukovana • Sadrži suptilne promene u odnosu na Lucifer algoritam
DES Numerologija • DES je Feistel šifra • 64 bita dužina blokova • 56 bita dužina ključa • 16 roundi • 48 bita ključa se koristi u svakoj rundi (podključ) • Svaka runda je jednostavna (za blokovske šifre) • Snaga šifre zavisi primarno od “S-boksova” • Svaki S-boks preslikava 6 bita u 4 bita
key L R 32 28 28 expand shift shift 48 28 28 32 Ki Jedna runda DES-a compress 48 48 S-boxes 28 28 32 P box 32 32 32 key L R
DES Ekspanziona permutacija • Ulaz 32 bita 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 • Izlaz 48 bita 31 0 1 2 3 4 3 4 5 6 7 8 7 8 9 10 11 12 11 12 13 14 15 16 15 16 17 18 19 20 19 20 21 22 23 24 23 24 25 26 27 28 27 28 29 30 31 0
DES S-boks • 8 “supstitucionih boksova” ili S-boksova • Svaki S-bokspreslikava 6 bitau 4 bita • S-boks broj 1 ulazni biti (0,5) ulazni biti (1,2,3,4) | 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 ------------------------------------------------------------------------------------ 00 | 1110 0100 1101 0001 0010 1111 1011 1000 0011 1010 0110 1100 0101 1001 0000 0111 01 | 0000 1111 0111 0100 1110 0010 1101 0001 1010 0110 1100 1011 1001 0101 0011 1000 10 | 0100 0001 1110 1000 1101 0110 0010 1011 1111 1100 1001 0111 0011 1010 0101 0000 11 | 1111 1100 1000 0010 0100 1001 0001 0111 0101 1011 0011 1110 1010 0000 0110 1101
DES P-boks • Ulaz 32 bita 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 • Izlaz 32 bita 15 6 19 20 28 11 27 16 0 14 22 25 4 17 30 9 1 7 23 13 31 26 2 8 18 12 29 5 21 10 3 24
DES podključ • 56 bitni DES ključ, numerisan sa 0,1,2,…,55 • Leva polovina bita ključa, LK 49 42 35 28 21 14 7 0 50 43 36 29 22 15 8 1 51 44 37 30 23 16 9 2 52 45 38 31 • Desna polovina bita ključa, RK 55 48 41 34 27 20 13 6 54 47 40 33 26 19 12 5 53 46 39 32 25 18 11 4 24 17 10 3
DES podključ • Za runde i=1,2,...,16 • Neka je LK = (LK circularnišift u levo za ri) • Neka je RK = (RK circularnišift u levo za ri) • Leva polovina podključa Kije LK bita 13 16 10 23 0 4 2 27 14 5 20 9 22 18 11 3 25 7 15 6 26 19 12 1 • Desna polovina podključa Kije RK bita 12 23 2 8 18 26 1 11 22 16 4 19 15 20 10 27 5 24 17 13 21 7 0 3
DES podključ • Za runde 1, 2, 9 i 16 šift rije 1, a za sve ostale runde rije 2 • Bitovi 8,17,21,24 iz LK se izostavljaju u svakoj rundi • Bitovi 6,9,14,25 iz RK se izostavljaju u svakoj rundi • Kompresiona permutacijadaje 48 bitapodključa Kiiz 56 bita LK i RK • Key schedulegenerišepodključ
DES završne napomene • Inicijalna permutacija P pre prve runde • Polovina zamenjuje mesta nakon poslednje runde • Finalna permutacija (inverzna u odnosu na P) se primenjuje na (R16,L16) dajući šifrat • Ništa od ovih operacija ne doprinosi jačini šifre
Bezbednost DES • Jačina DES zavisi dominantno od S-boksova • Sve ostalo u DES je linearno • Trideset godina intezivne kriptoanalize nije otkrilo nikakve propuste tipa “back door” • Savremeni napadi na DES koriste potpunu pretragu ključeva • Nezaobilazan zaključak • Dizajneri DES su znali šta rade • Dizajneri DES su bili ispred svog vremena
Notacija u blok šiframa • P = blok otvorenog teksta • C = blok šifrata • Šifrovanje P sa ključem K u cilju dobijanja šifrata C • C = E(P, K) • Dešifrovanje C sa ključem K u cilju dobijanja otvorenog teksta P • P = D(C, K) • Primetimo da je • P = D(E(P, K), K) i C = E(D(C, K), K)
Trostruki DES • Danas je DES sa ključem od 56 bita isuviše slab • Ali DES je sveprisutan: Šta da se radi? • Trostruki DESili3DES (112 bita ključa) • C = E(D(E(P,K1),K2),K1) • P = D(E(D(C,K1),K2),K1) • Zašto se koristi Šifrovanje-Dešifrovanje-Šifrovanje (EDE) sa 2 ključa? • Kompatibilnost unazad: E(D(E(P,K),K),K) = E(P,K) • Ključ od 112 bita je dovoljno jak
3DES • Zašto ne C = E(E(P,K),K) ? • Još uvek je ključ 56 bita • Zašto ne C = E(E(P,K1),K2) ? • (semi-praktičan) napad na osnovu poznatog otvorenog teksta • Iyračunati tabelu E(P,K1) za svaki mogući K1 (resultujuća tabla ima 256 elemenata) • Zatim se za svaki mogući ključ K2izrsčuns D(C,K2) sve dok se ne desi poklapanje u tabeli • Kada se detektuje poklapanje, važi E(P,K1) = D(C,K2) • Resultat je ključ: C = E(E(P,K1),K2)
Advanced Encryption Standard • Zamena za DES • AES takmičenje (krajem 90 tih godina) • NSA je javno bila umešana u ovu stvar • Proces izbora je bio transparentan • Predložen je veliki broj jakih algoritama • Na kraju je izabran Rijndael algoritam • izgovara se slično kao i “Rain Doll” or “Rhine Doll” • Iterativna blokovska šifra (kao i DES) • Nije Feistel šifra (za razliku od DES)
AES osnovni podaci • Dužina blokova: 128, 192 or 256 bits • Dužina ključa: 128, 192 or 256 bits (nezavisno od dužine ključa) • 10 do14 rundi (u zavisnosti od dužine ključa) • Svaka runda koristi 4 funkcije (u 3 “sloja”) • ByteSub (nelinearni sloj) • ShiftRow (sloj linearnog mešanja) • MixColumn (nelinearan sloj) • AddRoundKey (dodstni sloj ključa)
AES ByteSub • ByteSub je AES’s “S-boks” • Može se posmatrati kao nelinearna (ali invertibilna) kompozicija dve matematičke operacije • Predpostavlja se da je dužina bloka 192, 4x6 bytova
AES “S-boks” Poslednja 4 bita ulaza Prva 4 bitaulaza
AES ShiftRow • Ciklično pomeranje kolona
AES MixColumn • Implementira se kao velika tabela • Nonlinearna, invertibilna operacija koja se primenjuje na svaku kolonu
AES dodavanje ključa runde • RoundKey (podključ) je odredjen sakey schedule algorimom • XOR podključa sa blokom Blok Podključ
AES dešifrovanje • Da bi dšifrovanje bilo moguće, proces mora biti invertibilan • Inverzija MixAddRoundKey je laka, budući da je istovremeno sopstvena inverzija • MixColumn je invertibina (inverzija se implementira kao tabela) • Inverzija ShiftRow je ciklični šift u suprotnom pravcu • ByteSub je invertibilan i implementira se kao tabela
JOŠ NEKE BLOKOVSKE ŠIFRE • … • IDEA • Blowfish • RC6 • … • TEA
IDEA • Invented by James Massey • One of the giants of modern crypto • IDEA has 64-bit block, 128-bit key • IDEA uses mixed-mode arithmetic • Combine different math operations • IDEA the first to use this approach • Frequently used today
Blowfish • Blowfish encrypts 64-bit blocks • Key is variable length, up to 448 bits • Invented by Bruce Schneier • Almost a Feistel cipher Ri = Li1 Ki Li = Ri1 F(Li1 Ki) • The round function F uses 4 S-boxes • Each S-box maps 8 bits to 32 bits • Key-dependent S-boxes • S-boxes determined by the key
RC6 • Invented by Ron Rivest • Variables • Block size • Key size • Number of rounds • An AES finalist • Uses data dependent rotations • Unusual to rely on data as part of algorithm
Tiny Encryption Algorithm • 64 bit block, 128 bit key • Assumes 32-bit arithmetic • Number of rounds is variable (32 is considered secure) • Uses “weak” round function, so large number rounds required
TEA Encryption Assuming 32 rounds: (K[0],K[1],K[2],K[3]) = 128 bit key (L,R) = plaintext (64-bit block) delta = 0x9e3779b9 sum = 0 for i = 1 to 32 sum += delta L += ((R<<4)+K[0])^(R+sum)^((R>>5)+K[1]) R += ((L<<4)+K[2])^(L+sum)^((L>>5)+K[3]) next i ciphertext = (L,R)
TEA Decryption Assuming 32 rounds: (K[0],K[1],K[2],K[3]) = 128 bit key (L,R) = ciphertext (64-bit block) delta = 0x9e3779b9 sum = delta << 5 for i = 1 to 32 R = ((L<<4)+K[2])^(L+sum)^((L>>5)+K[3]) L = ((R<<4)+K[0])^(R+sum)^((R>>5)+K[1]) sum = delta next i plaintext = (L,R)
TEA comments • Almost a Feistel cipher • Uses + and - instead of (XOR) • Simple, easy to implement, fast, low memory requirement, etc. • Possibly a related key attack • eXtended TEA (XTEA) eliminates related key attack (slightly more complex) • Simplified TEA (STEA) insecure version used as an example for cryptanalysis