Data Encryption Standard Monica Bianchini monica@ing.unisi.it Dipartimento di Ingegneria...

Click here to load reader

  • date post

    01-May-2015
  • Category

    Documents

  • view

    218
  • download

    3

Embed Size (px)

Transcript of Data Encryption Standard Monica Bianchini monica@ing.unisi.it Dipartimento di Ingegneria...

  • Slide 1
  • Data Encryption Standard Monica Bianchini monica@ing.unisi.it Dipartimento di Ingegneria dellInformazione Universit di Siena
  • Slide 2
  • Introduzione Il 15 Maggio 1973, il National Bureau of Standards (NBS) pubblic un invito, nel Registro Federale, per lemissione di un crittosistema standardIl 15 Maggio 1973, il National Bureau of Standards (NBS) pubblic un invito, nel Registro Federale, per lemissione di un crittosistema standard nasce DES Data Encryption Standard, che divenuto il crittosistema pi usato nel mondo nasce DES Data Encryption Standard, che divenuto il crittosistema pi usato nel mondo DES fu sviluppato alla IBM, come evoluzione di un crittosistema pi antico, LUCIFER, e fu pubblicato sul Registro Federale il 17 Marzo 1975DES fu sviluppato alla IBM, come evoluzione di un crittosistema pi antico, LUCIFER, e fu pubblicato sul Registro Federale il 17 Marzo 1975 La definizione di DES riportata nel Federal Information Processing Standards Publication 46, del 15 Gennaio 1977La definizione di DES riportata nel Federal Information Processing Standards Publication 46, del 15 Gennaio 1977 DES viene revisionato con frequenza quinquennale da NBSDES viene revisionato con frequenza quinquennale da NBS
  • Slide 3
  • DES 1 DES codifica una stringa di plaintext, x, di 64 bit, utilizzando una chiave k di 56 bit, ed ottenendo un testo cifrato rappresentato da una stringa di 64 bitDES codifica una stringa di plaintext, x, di 64 bit, utilizzando una chiave k di 56 bit, ed ottenendo un testo cifrato rappresentato da una stringa di 64 bit Lalgoritmo si compone di tre passi:Lalgoritmo si compone di tre passi: 1.Dato il plaintext x, si costruisce la stringa x 0, permutando i bit di x secondo una permutazione iniziale (fissata) IP. In particolare, x 0 =IP(x)=L 0 R 0, dove L 0 comprende i primi 32 bit di x 0 e R 0 gli ultimi 32 2.L i R i, per 1 i 16, viene calcolato come L i =R i-1 R i =L i-1 (R i-1,k i ) dove loperatore di XOR, una funzione che verr descritta nel seguito, e k 1,k 2,,k 16 sono stringhe di 48 bit calcolate in funzione di k. k 1,k 2,,k 16 formano il key schedule dove loperatore di XOR, una funzione che verr descritta nel seguito, e k 1,k 2,,k 16 sono stringhe di 48 bit calcolate in funzione di k. k 1,k 2,,k 16 formano il key schedule 3.Si applica la permutazione inversa IP -1 alla stringa di bit R 16 L 16, ottenendo il testo cifrato y, cio y=IP -1 (R 16 L 16 )
  • Slide 4
  • DES 2 L i-1 R i-1 RiRiRiRi kikikiki LiLiLiLi Un passo di codifica di DES
  • Slide 5
  • La funzione ha come primo argomento la stringa A di 32 bit, come secondo argomento la stringa J di 48 bit, e produce in output una stringa di bit di lunghezza 32 La funzione ha come primo argomento la stringa A di 32 bit, come secondo argomento la stringa J di 48 bit, e produce in output una stringa di bit di lunghezza 32 A viene espanso in una stringa di 48 bit in base ad una funzione di espansione E(A) fissata. E(A) consiste dei 32 bit di A permutati, 16 dei quali compaiono due volteA viene espanso in una stringa di 48 bit in base ad una funzione di espansione E(A) fissata. E(A) consiste dei 32 bit di A permutati, 16 dei quali compaiono due volte Si calcola E(A) J e si scrive il risultato come la concatenazione di otto stringhe di 6 bit B=B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8Si calcola E(A) J e si scrive il risultato come la concatenazione di otto stringhe di 6 bit B=B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 Si utllizzano gli S i, 1 i 8, che sono array 4 16 i cui elementi sono interi compresi fra 0 e 15. Data una stringa di 6 bit B j =b 1 b 2 b 3 b 4 b 5 b 6, S j (B j ) viene calcolata come segue: i due bit b 1 e b 6 determinano la rappresentazione binaria di una riga r di S j (0 r 3), ed i quattro bit b 2 b 3 b 4 b 5 determinano la rappresentazione binaria di una colonna c di S j (0 c 15). Pertanto S j (B j ) lelemento S j (r,c), scritto in binario sotto forma di stringa di 4 bit C j =S j (B j ), 1 j 8Si utllizzano gli S i, 1 i 8, che sono array 4 16 i cui elementi sono interi compresi fra 0 e 15. Data una stringa di 6 bit B j =b 1 b 2 b 3 b 4 b 5 b 6, S j (B j ) viene calcolata come segue: i due bit b 1 e b 6 determinano la rappresentazione binaria di una riga r di S j (0 r 3), ed i quattro bit b 2 b 3 b 4 b 5 determinano la rappresentazione binaria di una colonna c di S j (0 c 15). Pertanto S j (B j ) lelemento S j (r,c), scritto in binario sotto forma di stringa di 4 bit C j =S j (B j ), 1 j 8 La stringa di 32 bit C= C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 viene permutata in accordo ad una permutazione P fissata. La stringa risultante P(C) (A,J )La stringa di 32 bit C= C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 viene permutata in accordo ad una permutazione P fissata. La stringa risultante P(C) (A,J ) DES 3
  • Slide 6
  • DES 4 J E(A ) A P C1C1C1C1 C2C2C2C2 C3C3C3C3 C4C4C4C4 C5C5C5C5 C6C6C6C6 C8C8C8C8 B8B8B8B8 S8S8S8S8 S1S1S1S1 S2S2S2S2 S3S3S3S3 S4S4S4S4 S5S5S5S5 S6S6S6S6 S7S7S7S7 B1B1B1B1 B2B2B2B2 B3B3B3B3 B4B4B4B4 B5B5B5B5 B6B6B6B6 B7B7B7B7 C7C7C7C7 E (A,J ) (A,J ) Realizzazione della funzione in DES
  • Slide 7
  • Le funzioni utilizzate in DES sonoLe funzioni utilizzate in DES sono ci significa, ad esempio, che il 58-esimo bit di x il primo bit di IP(x), il 50-esimo bit di x il secondo di IP(x), etc. ci significa, ad esempio, che il 58-esimo bit di x il primo bit di IP(x), il 50-esimo bit di x il secondo di IP(x), etc. DES 5 IP -1 IP E bit-selection table
  • Slide 8
  • InoltreInoltre DES 6 S4S4S4S4 S1S1S1S1 S2S2S2S2 S3S3S3S3
  • Slide 9
  • DES 7 S8S8S8S8 S5S5S5S5 S6S6S6S6 S7S7S7S7 P
  • Slide 10
  • Infine, occorre descrivere il calcolo della succesione di chiavi, a partire dalla chiave kInfine, occorre descrivere il calcolo della succesione di chiavi, a partire dalla chiave k k una stringa di 64 bit, di cui 56 costituiscono la chiave vera e propria, mentre i rimanenti 8 sono bit di parit (per il rilevamento di errori)k una stringa di 64 bit, di cui 56 costituiscono la chiave vera e propria, mentre i rimanenti 8 sono bit di parit (per il rilevamento di errori) I bit di parit occupano le posizioni 8,16,,64 ed assumono valore tale che ogni byte abbia un numero dispari di bit a 1. Il bit di parit pu servire a rilevare errori su un singolo bit del byte relativoI bit di parit occupano le posizioni 8,16,,64 ed assumono valore tale che ogni byte abbia un numero dispari di bit a 1. Il bit di parit pu servire a rilevare errori su un singolo bit del byte relativo I bit di parit non vengono utilizzati nel calcolo del key scheduleI bit di parit non vengono utilizzati nel calcolo del key schedule DES 8
  • Slide 11
  • Calcolo della succesione di chiavi k i, 1 i 16Calcolo della succesione di chiavi k i, 1 i 16 1.Data la chiave k a 64 bit, si tralasciano i bit di parit, mentre si permutano i rimanenti 56 bit, in base alla permutazione PC 1, fissata a priori. Sia PC 1 (k)=C 0 D 0, dove C 0 comprende i primi 28 bit di PC 1 (k) e D 0 gli ultimi 28 2.Per i compreso fra 1 e 16 si calcolano C i =LS i (C i-1 ) D i =LS i (D i-1 ) e k i =PC 2 (C i D i ). LS i uno shift ciclico a sinistra, di una o due posizioni in funzione del valore di i: si scorre di una posizione per i=1,2,9,16, di due in tutti gli altri casi. PC 2 una permutazione fissata e k i =PC 2 (C i D i ). LS i uno shift ciclico a sinistra, di una o due posizioni in funzione del valore di i: si scorre di una posizione per i=1,2,9,16, di due in tutti gli altri casi. PC 2 una permutazione fissata DES 9 PC 1 PC 2
  • Slide 12
  • DES 10 Il calcolo della successione di chiavi viene effettuato secondo il seguente schemaIl calcolo della successione di chiavi viene effettuato secondo il seguente schema PC 2 k1k1k1k1 PC 1 C1C1C1C1 LS 1 C0C0C0C0 C 16 D0D0D0D0 D1D1D1D1 D 16 k k2k2k2k2 PC 2 LS 1 LS 2 LS 16
  • Slide 13
  • Mostriamo adesso come viene generata la serie delle chiavi utilizzate nelle 16 iterate di DES. Gli elementi nelle tabelle seguenti indicano i bit di k che vengono utilizzati ai vari passiMostriamo adesso come viene generata la serie delle chiavi utilizzate nelle 16 iterate di DES. Gli elementi nelle tabelle seguenti indicano i bit di k che vengono utilizzati ai vari passi DES 11 Passo 6 Passo 8 Passo 5 Passo 7 Passo 2 Passo 4 Passo 1 Passo 3
  • Slide 14
  • DES 12 Passo 14 Passo 16 Passo 13 Passo 15 Passo 10 Passo 12 Passo 9 Passo 11 La fase di decodifica viene realizzata utilizzando lo stesso algoritmo, con y per input, e key schedule k 16,k 15,,k 1. Loutput il plaintext xLa fase di decodifica viene realizzata utilizzando lo stesso algoritmo, con y per input, e key schedule k 16,k 15,,k 1. Loutput il plaintext x
  • Slide 15
  • Supponiamo di voler codificare il plaintext esadecimaleSupponiamo di voler codificare il plaintext esadecimale 0123456789ABCDEF 0123456789ABCDEF0000000100100011010001010110011110001001101010111100110111101111 utilizzando la chiave esadecimale utilizzando la chiave esadecimale133457799BBCDFF1 La corrispondente chiave binaria, senza bit di parit, La corrispondente chiave binaria, senza bit di parit, 00010010011010010101101111001001101101111011011111111000 Applicando IP si ottengono L 0 ed R 0, comeApplicando IP si ottengono L 0 ed R 0, come L 0 =11001100000000001100110011111111 L 1 =R 0 =11110000101010101111000010101010 Un esempio di codifica con DES 1
  • Slide 16
  • Un esempio di codifica con DES 2 I 16 passi della codifica calcolanoI 16 passi della codifica calcolano E(R 1 )=011101011110101001010100001100001010101000001001 E(R 1 )=011101011110101001010100001100001010101000001001 k 2 =011110011010111011011001110110111100100111100101