Blo kovske šifre

Preview:

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Blokovske šifre

(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 šifra se 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 runde a Ki je podključ• Š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 runde a Ki je podključ• 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

L R

expand shiftshift

key

key

S-boxes

compress

L R

2828

2828

2828

48

32

48

32

32

32

32

JednarundaDES-a

48

32

Ki

P box

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 bita31 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-boks preslikava 6 bita u 4 bita• S-boks broj 1ulazni 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 011101 | 0000 1111 0111 0100 1110 0010 1101 0001 1010 0110 1100 1011 1001 0101 0011 100010 | 0100 0001 1110 1000 1101 0110 0010 1011 1111 1100 1001 0111 0011 1010 0101 000011 | 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 bita15 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 2316 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 1912 5 53 46 39 32 2518 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 Ki je LK bita13 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 Ki je RK bita12 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 ri je 1, a za sve ostale runde ri je 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 permutacija daje 48 bita podključa Ki iz 56 bita LK i RK

• Key schedule generiše podključ

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 DES ili 3DES (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č K2 izrsč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”

Prva 4bita ulaza

Poslednja 4 bita ulaza

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 sa key 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 EncryptionAssuming 32 rounds:

(K[0],K[1],K[2],K[3]) = 128 bit key(L,R) = plaintext (64-bit block)delta = 0x9e3779b9sum = 0for 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 iciphertext = (L,R)

TEA DecryptionAssuming 32 rounds:

(K[0],K[1],K[2],K[3]) = 128 bit key(L,R) = ciphertext (64-bit block)delta = 0x9e3779b9sum = delta << 5for 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 = deltanext iplaintext = (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