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
9 10
11 11 12 12 13 13 14 14 14 15 15 15 16
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;
Stream Cipher:
byte).
la cifratura avviene a
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.
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
Li
Ri
sono funzione di
Li+1
Ri+1 .
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.
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
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 ).
Li
Ri+1
a 48 bit, mentre la
Ri
diventa la
Li+1 ,
CAPITOLO 1.
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
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
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.
CAPITOLO 1.
DES
dal blocco PC1. Dopodich la chiave a 56 bit viene divisa nella parti pi e meno signicativa in due blocchi
LS1
LS2
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
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
CAPITOLO 1.
DES
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 :
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
k1 , k2
distinte:
k1 k2
k1 ; k1
per decifrare il mes-
per cui indierentemente utilizzeremo soltanto la chiave rispetto a DES che passa da
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
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 ))
10
CAPITOLO 3.
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 )
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:
con
lunghezza
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.
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 ).
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 ().
(p 1) (q 1);
4. si calocla l'inverso moltiplicativo
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.
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
e con (d',x',y') costruisco (d,x,y) = (d',y',x'-silly(a/b)y'). Dimostriamo che tale procedura corretta. Si osserva che
associativit; identit
CAPITOLO 3.
chiusura Inverso
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
ax = 1 mod(b)
dove se a e n sono relativamente primi tra loro allora essere vista anche come
x esiste ed unica.
euclid(a, n)
Dunque si denisce
(n) = p 1
e valgono dunque i seguenti teoremi.
3.4.1
Teorema di Fermat
a(n) = 1 mod(n)
dove se n primo allora
ap1 = 1 mod(p)
CAPITOLO 3.
3.4.2
Siano
(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
x = a mod(p) x = a mod(q )
per cui
x = a mod(n)
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),
Dunque, una volta ottenuto anche il valore di espansioni modulari del messaggio M
P (M ) = M e mod(n) S (M ) = M d mod(n)
CAPITOLO 3.
3.5.2
Correttezza
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
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.