Sei sulla pagina 1di 17

DES e 3DES

Salvatore De Simone Universit degli Studi di Napoli Federico II 28/11/2013

Indice
1 DES
1.1 Meccanismo di cifratura DES . . . . . . . . . . . . . . . . . . . . 1.1.1 1.1.2 1.2 1.3 Round DES . . . . . . . . . . . . . . . . . . . . . . . . . . SBOXes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
4 5 6 6 7

Schedulazione di chiave Robustezza

2 3DES 3 RSA e algoritmi di crittograa a chiave pubblica


3.1 3.2 3.3 Logica di crittograa di un algoritmo generico . . . . . . . . . . . 3.1.1 3.2.1 3.3.1 3.3.2 3.4 3.4.1 3.4.2 3.5 3.5.1 3.5.2 Problematiche . . . . . . . . . . . . . . . . . . . . . . . . Crittograa RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . La funzione EUCLID . . . . . . . . . . . . . . . . . . . . . Gruppo moltiplicativo . . . . . . . . . . . . . . . . . . . . Equazioni modulari e inverso moltiplicativo . . . . . . . . Teorema di Fermat . . . . . . . . . . . . . . . . . . . . . . Teorema cinese del resto . . . . . . . . . . . . . . . . . . Gruppo moltiplicativo e inverso moltiplicativo . . . . . . . . . . .

9 10
11 11 12 12 13 13 14 14 14 15 15 15 16

Teorema di Fermat e Teorema Cinese del Resto . . . . . . . . . .

Dimostrazione della correttezza . . . . . . . . . . . . . . . . . . . Calcolo di e ed d . . . . . . . . . . . . . . . . . . . . . . . Correttezza . . . . . . . . . . . . . . . . . . . . . . . . . .

Introduzione
Un algoritmo a chiave simmetrica un algoritmo che utilizza la stessa chiave sia per la fase di cifratura che per la fase di decifratura. famiglie di algoritmi di cifratura a chiave simmetrica: Ci sono due grandi

Block Cipher:
64 bit;

la cifratura avviene a grandi

blocchi di bit, superiori a

Stream Cipher:
byte).

la cifratura avviene a

singoli bit o byte o a 32 bit (4

Capitolo 1

DES
La struttura di DES il pi famoso block cipher. Un block cipher un modulo diviso in due sottoblocchi: un come mostrato in Fig. 1.2.

schedulatore di chiave e un data path, cosi

Figura 1.1: Struttura di un block cipher

Lo standard di cifratura DES permette di cifrare una chiave da 64 bit dove ogni blocco chiave da 64 in realt formato da: 56 bit eettivi della secret key 8 bit di parit

Tabella 1.1: 64 bit della cifratura In Fig. 1.2 mostrato un round in cui presente una funzione di Feistel. La funzione di Feistel f permette di iterare il round un certo numero di volte in funzione dei parametri forniti alla funzione e non una funzione invertibile.

CAPITOLO 1.

DES

Figura 1.2: Struttura di un round

In questo modo, essendo un round iterato pi volte, si ha che gli ingressi e

Li

Ri

sono funzione di

Li+1

Ri+1 .

Ogni round iterato per 16 volte e prima del

primo stadio viene applicato una trasformazione dei dati iniziali, in particolare si esegue un semplice riarrangiamento dei bit dei dati da cifrare. Prima di mettere in uscita i dati viene prima riapplicata l'inverso della trasformazione iniziale e poi tali dati diventano di uscita.

1.1 Meccanismo di cifratura DES


Un meccanismo di cifratura possibile un meccanismo che opera in due stadi: 1. divisione in blocchi di dimenzione ssa; 2. cifratura con algoritmo (per ex. DES)

Figura 1.3: Cifratura DES In questo caso ogni blocco successivo in dipendenza dal blocco precedente. In DES i dati di ingresso di ogni blocco subiscono una permutazione iniziale di bit prima di essere cifrato. In ogni blocco si modica dunque la chiave iniziale eettuando una serie di trasformazioni per avere una chiave sempre diversa all'interno di ogni blocco.

CAPITOLO 1.

DES

Figura 1.4: Data Path DES

1.1.1

Round DES

Dopo la fase di permutazione iniziale di Fig.1.4 i 64 bit sono inviati al primo round. Un round DES un round molto simile a un round di Feistel. Una volta che il messaggio di 64 bit viene diviso in due blocchi da 32 bit, i due sottoblocchi sono passati al round DES (Li e va a formare bit. In un round DES la funzione f esegue 4 trasformazioni:

Ri ).

La funzione di Feistel in XOR con

Li

Ri+1

a 48 bit, mentre la

Ri

diventa la

Li+1 ,

che per rimane a 32

espansione; key addiction; SBOX; permutazione.

CAPITOLO 1.

DES

Figura 1.5: Operazioni in un round DES

Nel round DES abbiamo un blocco di espansione che permette di espandere blocchi di 32 bit a 48 bit, semplicemente ridondando dei bit che appartengono gi al blocco dei 32 bit. bit Dunque, una volta ottenuti i due blocchi di 48 e 32

Li+1

Ri+1 ,

il blocco

Li+1

subisce l'espansione a 48 bit. Dopo la fase di

espansione si eettua la fae di key addiction, ossia se eettua una XOR tra le due partizioni e i 48 bit ottenuti vengono poi inviate a 8 SBOXes.

1.1.2

SBOXes
La

Una SBOX ha in ingresso 6 dei 48 bit della parola e da in uscita 4 bit.

loro logica stata misteriosa per molto tempo e l'unico modo per astrarne il funzionamento mediante l'uso di lookup table. Infatti mediante lookup table si realizza la logica che mette in uscita solo 4 di 6 bit di ingresso. Inne abbiamo una fase di permutazione dove i 32 bit in uscita dalle 8 SBOXes sono poi ripermutati rispetto alla precedente permutazione per cui nessuno dei 32 bit verr tralasciato. Una ripermutazione nale, inversa della permutazione iniziale, permette di ottenere la chiave di partenza.

1.2 Schedulazione di chiave


La schedulazione di chiave tale in DES che la chiave segreta fornita in ingresso all'algoritmo ottenuta al termine del processo. Il meccanismo di schedulazione di chiave illustrato in Figura 1.6.

CAPITOLO 1.

DES

Figura 1.6: Schedulazione di chiave

La chiave iniziale viene troncata dal blocco PC1 in due parti:

56 bit per la cifratura iniziale; 8 bit per la parit

dal blocco PC1. Dopodich la chiave a 56 bit viene divisa nella parti pi e meno signicativa in due blocchi

LS1

LS2

e inviati ad un blocco PC2 che genera i

48 bit da dare all'inizio del round. Ogni qualvolta il round viene iterato

LS1

LS2

sono shiftati di 1 bit nel caso del round 1,2,9 e 16. Per i rimanenti round

le due sottochiavi sono shiftate di 2 bit.

1.3 Robustezza
La robustezza di DES denita in funzione del tempo necessario per ottenere la chiave di cifratura tra tutte le possibili chiavi.Per capire se DES dunque vulnerabile ad attacchi di tipo brute-force l'esperimento da condurre il seguente:

fornito un testo in chiaro e uno cifrato testare tutte le possibili chiavi che a partire dal testo in chiaro danno quello cifrato.

In questo caso, dato che la chiave una chiave a 56 bit sono necessarie quantomeno

256

prove, che in termini temporali sono 8 giorni se la procedura

CAPITOLO 1.

DES

eseguita da calcolatori in parallelo. brute-force.

Dunque DES vulnerabile ad attacchi Per eettuare tutti i test sono

Tuttavia c' un compromesso di memoria. necessarie

(56 + 64bit) 256 1GB


di memoria per eettuare tutti i confronti.

Capitolo 2

3DES
3DES nasce dall'applicazione dell'algoritmo DES per 3 volte, anche se in realt la fase di encryption realmente attuata soltanto due volte. due approcci: 1. Esistono infatti

E1 E2 E3 : E1 D2 E2 :

dove abbiamo una cifratura con 3 chiavi dierenti e si eseguono

3 diverse operazioni di encryption; 2. dove abbiamo due operazioni di cifratura e una di decifratura

con due chiavi diverse. In 3DES per nasce il seguente problema: dato che si eseguono tre operaszioni di cifratura, tali operazioni sono equivalenti a una sola quarta operazione di cifratura? Purtroppo non si pu aermare in quanto

rispetto l'operazione di cifratura.


amo due chiavi

DES non un gruppo

L'approccio maggiormente utilizzato dunque l'approccio EDE, dove abbi-

k1 , k2

distinte:

k1 k2

per cifrare il messaggio; per decifrare

k1 ; k1
per decifrare il mes-

per cui indierentemente utilizzeremo soltanto la chiave rispetto a DES che passa da

saggio, ma abbiamo aumentato il numero di permutazioni di chiavi da provare

256

2112 .

Tale approccio anche facilmente implementabile, in quanto l'implementazione comprende il riuso di componenti hardware o software che implementano gi DES.

Capitolo 3

RSA e algoritmi di crittograa a chiave pubblica


Un sistema di crittograa a chiave pubblica un sistema di crittograa dove il messaggio viene cifrato e decifrato medinate una chiave pubblica e una chiave privata, che sono generate dai partecipanti che intendono scambiarsi dei messaggi privati. Supponiamo che tali partecipanti siano Alice e Bob. Per avviare il processo di comunicazione vengono create quattro chiavi diverse da parte dei due partecipanti: 1. Chiave pubblica di Alice 2. Chiave privata di Alice 3. Chiave pubblica di Bob 4. Chiave privata di Bob

PA ;

SA ; PB ;

SB .

Le due chiavi pubbliche sono pubblicate, in modo che ognuno ha la conoscenza della chiave pubblica di un qualsiasi altro eventuale partecipante alla comunicazione cifrata. Un aspetto molto importante che, supposto di indicare con D l'insieme di tutti i possibili messaggi di lunghezza nita da cifrare, ad ogni chiave pu essere associata una funzione. Ad esempio la funzione associata alla

PA

una

di Alice. Inoltre

PA () che permette di cifrare un messaggio mediante la chiave pubblica PA () e SA () sono funzioni invertibili, ossia possibile ottenere M = SA (PA (M )) M = PA (SA (M ))

un messaggio M in due possibili modi

10

CAPITOLO 3.

RSA E ALGORITMI DI CRITTOGRAFIA A CHIAVE PUBBLICA11

3.1 Logica di crittograa di un algoritmo generico


La solidit di un algoritmo di crittograa a chiave pubblica basata sulla dicolta da parte di altri partecipanti alla comunicazione nel calcolare, in un tempo signicativamente breve, la chiave privata di un interlocutore a partire dalla sua chiave pubblica. Se questo fosse possibile infatti un interlocutore perderebbe la sua unicit di avere una chiave privata per decifrare i messaggi inviati da altri interlocutori. Analizziamo dunque la logica di funzionamento di un algoritmo di cifratura a chiave pubblica supponendo che Bob voglia inviare un messaggio ad Alice: 1. Bob acquisisce la chiave pubblica di Alice; 2. Bob crea un messaggio cifrato con la chiave pubblica di alice e lo invia ad Alice; 3. Alice riceve il messaggio C e usa la sua chiave segreta per ottenere

C = PA ( M ) M =

SA (C ).
Il terzo punto soddisfatto grazie all'invertibilit delle funzioni di cifratura e decifratura. Alice potrebbe poi risondere a Bob, apponendo una rma digitale. Questo permette ad Alice di farsi riconoscere da Bob e assicurare che la risposta stata univocamente inviata da lei. Per fare questo si eettua come segue: 1. Alice crea un messaggio la coppia (M',); 2. Bob riceve il messaggio di Alice e lo decifra con la sua chiave pubblica e verica se M' = P_A(). Se il controllo fatto da Bob riesce con successo allora il messaggio stao inviato da Alice, altrimenti possibile che si sia vericato che il messaggio sia stato corrotto o falsato da un interlocutore malizioso che intendeva comunicare con Bob.

= SA (M )

con M' messaggio di risposta e invia

3.1.1

Problematiche

Generalmente un meccanismo di cifratura e di rma di questo tipo sono molto onerosi, in quanto si verica un esponenziazione modulare, ossia:

il messaggio viene espanso ad un certo esponente della chiave;

con

lunghezza

viene fatto poi il modulo N del messaggio espanso M =

M modN . O( ).

Si pu dimostrare che, dato che sono eettuate operazioni di moltiplicazione ed elevamento a potenza, un limite superiore per tale procedura un la fase di cifratura e per la cifra digitale: Per ovviare questo problema si possono utilizzare due strategie diverse per

CAPITOLO 3.

RSA E ALGORITMI DI CRITTOGRAFIA A CHIAVE PUBBLICA12

In fase di cifratura si pu cifrare il messaggio con DES mediante una chiave generica k, e la chiave k viene poi cifrata con la chiave pubblica del destinatario (ex.

PB ).

Dunque il destinatario recuperer prima la chiave

con la sua chiave segreta e poi eettuer una decifratura DES.

Per la rma digitale invece si pu usare un algoritmo di hashing per cifrare il messaggio M' di risposta e inviare al prioprio interlocutore la coppia (M',

SA (h(M )). una volta ricevuta la coppia si eettuer prima un recupero di h(M') con PA e poi reverse della funzione di hashing. Sar quindi vericata l'uguaglianza dell'operazione di validazione della rma M = PA ().

3.2 Crittograa RSA


Il meccanismo di crittograa RSA denito generando da parte dei partecipanti una chiave pubblica e una chiave privata come segue: 1. Si deniscono due numeri primi p e q tra loro molto grandi (1024 bit) e diversi tra loro; 2. Si calcola la moltiplicazione n = p*q; 3. Si trova un numero dispari

e piccolo che sia primo con la funzione (n) = d del numero e;

(p 1) (q 1);
4. si calocla l'inverso moltiplicativo

5. Si generano le chiavi pubbliche e private P e S come coppie:

P = (e, n) S = (d, n).


Una volta ottenute le chiavi pubbliche e private la cifratura del messaggio M avviene in questo modo:

P (M ) = M e mod(n) S (M ) = M d mod(n)
In questo modo si agisce sia per la fase di cifratura del messaggio che per la fase di rma.

3.2.1

La funzione EUCLID

Il primo step quello di determinare se due numeri sono primi tra loro. Due numeri si dicono primi tra loro se non hanno divisori in comune. Per determinare se ci sono divisori in comune possiamo utilizzare la funzione EUCLID che trova il massimo comun divisore tra due numeri come segue

CAPITOLO 3.

RSA E ALGORITMI DI CRITTOGRAFIA A CHIAVE PUBBLICA13

Algoritmo 3.1 Codice della funzione Euclid


function euclid (a , b) if b == 0 return else return euclid (b , a mod b ) a

e si pu dimostrare che tale funzione ha un limite asintotico pari a O(lg A). Inoltre il valore d trovato pu essere scritto nella forma:

d = ax + by
e tali valori di x, y e d sono ricercati mediante la funzione EXTENDEDEUCLID

Algoritmo 3.2 Codice della funzione Extended-Euclid


function e x t e n d e d e u c l i d ( a , b ) if b == 0 return else return (d ' , x ' , y ' ) = e x t e n d e d e u c l i d ( b , a mod b ) (a ,1 ,0)

e con (d',x',y') costruisco (d,x,y) = (d',y',x'-silly(a/b)y'). Dimostriamo che tale procedura corretta. Si osserva che

d = bx + [amod(b)]y = bx + [a silly (a/b)y ] = bx + ay silly (a/b)y


che quindi equivale a

ay + b(x silly (a/b)y ) = ax + by

3.3 Gruppo moltiplicativo e inverso moltiplicativo


3.3.1 Gruppo moltiplicativo
Un gruppo rappresenta la coppia (S,+) dove S un insieme e + un operazione binaria e valgono le seguenti propriet:

associativit; identit

CAPITOLO 3.

RSA E ALGORITMI DI CRITTOGRAFIA A CHIAVE PUBBLICA14

chiusura Inverso

Un gruppo particolare il gruppo moltiplicativo. Supposto di voler indicare con

Zn le classi di di congruenza modulo n, allora possiamo denire il gruppo Zn = (Zn , n) ossia a Zn appartengono tutte quelle classi di congruenza relativamente
di numeri primi con n. Il numero di elementi appartenenti ad una classe di congruenza pu essere stimato con la relazione:

1 ) (n) = n (1 p

3.3.2

Equazioni modulari e inverso moltiplicativo

Un equazione modulare un equazione del tipo

ax = 1 mod(b)
dove se a e n sono relativamente primi tra loro allora essere vista anche come

x esiste ed unica.

Inoltre tale relazione coerente con la scrittura d = ax + by e puo duneuq

euclid(a, n)
Dunque si denisce

inverso moltiplicativo x il valore di x


x = a1 mod(b)

3.4 Teorema di Fermat e Teorema Cinese del Resto


Se n primo possiamo dunque scrivere che

(n) = p 1
e valgono dunque i seguenti teoremi.

3.4.1

Teorema di Fermat

Il teorema di fermat ci permette di dimostrare che

a(n) = 1 mod(n)
dove se n primo allora

ap1 = 1 mod(p)

CAPITOLO 3.

RSA E ALGORITMI DI CRITTOGRAFIA A CHIAVE PUBBLICA15

3.4.2
Siano

Teorema cinese del resto


primi tra loro a coppie. Allora se vale che

(n0 , n1 , ...., ni , nj )

x = a mod(ni ) x = a mod(nj )
allora vale che

x = a mod(n)
dove dunque n il prodotto tra Dunque in relazione a RSA, se

ni nj ni = p e nj = q

allora n = pq. e vale che

x = a mod(p) x = a mod(q )
per cui

x = a mod(n)

3.5 Dimostrazione della correttezza


3.5.1 Calcolo di e ed d
Tutti gli strumenti presentati, ossia:

Extended Euclid; Inversi moltiplicativi Esponenziazione modulare

ci permettono di denire come avviene la fase di crittograa e decifratura in RSA. Facendo riferimento al Par. 3.2, una volta calcolati p e q e denita n e

(n),

siamo in grado di denire il valore di

modo tale da calcolare poi l'iverso moltiplicativo = EXTENDED_EUCLID(e,(n)).

e relativamente primo con (n) in d di tale funzione con una d

Dunque, una volta ottenuto anche il valore di espansioni modulari del messaggio M

d dalla funzione di EUCLID

abbiamo ricavato la chiave pubblica e privata con cui possiamo eettuare le

P (M ) = M e mod(n) S (M ) = M d mod(n)

CAPITOLO 3.

RSA E ALGORITMI DI CRITTOGRAFIA A CHIAVE PUBBLICA16

3.5.2

Correttezza

La dimostrazione della correttezza si eettua dimostrando che

M ed = M mod(n)

DIMOSTRAZIONE
Dato che e ed d sono inversi moltiplicativi si puo scrivere che

ed = 1 + k (p 1)(q 1)
per cui sostituendo nella relazione precedente e fattorizzando rispetto a p

M ed = M 1+k(p1)(q1)
e facendone il mod p

M ed = M (M (p1)k(q1) ) mod(p)
ma per il teorema piccolo di Fermat

M p 1 = 1

se M primo per cui

M ed = M (1k(q1) ) mod(p) = M mod(p)


Ripetendo lo stesso ragionamento, ma fattorizzando rispetto a q otteniamo un risultato simile ossia:

M ed = M mod(q )
dunque vale il teorema cinese del resto dato che

M ed = M mod(p) M ed = M mod(q )
dunque

M ed = M mod(n)
che una relazione che vale sia se M uguale a zero, che diverso da zero.