Telemat Lab's home page


Copyright © 1986 Università di Firenze.All rights reserved.

Free license available.

MIDDLE

di Cecconi Alessia e Gallileo Giovanni

Revisori: Franco Pirri e Maurizio Lunghi


crittografia simmetrica

home pageIndicePrec.Succ.

PRINCIPALI ALGORITMI DI CRITTOGRAFIA SIMMETRICA


crittografia simmetrica

DES


crittografia simmetrica

COME E' NATO?

Il DES (Data Encrytion Standard) viene adottato dal governo degli Stati Uniti nel 1977 come standard federale. Il DES deriva dall'algoritmo Lucifer inventato dall'IBM nei primi anni '70. Mentre Lucifer era ancora in via di sviluppo il National Bureau of Standard (NBS), diventato poi il NIST, sollecitò l'industria americana alla creazione di un nuovo standard crittografico per la protezione di dati riservati ma non classificati come "segreti militari" o di "stato".
L'NBS non fu accontentato molto presto forse perché il governo degli Stati Uniti non ha mai incoraggiato ricerche in questo campo, comunque nel 1974 l'IBM propose un Lucifer modificato a cui fu dato il nome di DES. Nonostante che la validità di questo software doveva essere 5-10 anni, oggi è ancora lo standard ufficiale.


crittografia simmetrica

COME E' STRUTTURATO?



Blocchi e PAD

Il DES è un codice cifrato a blocchi che può essere usato in tutti i modelli ECB, CBC, CFB e OFB. La chiave usata per crittografare è un blocco di 64 bits suddivisa in 8 sottoblocchi di 8 bits ciascuno; l'ultimo bit di ogni sottoblocco è di controllo, di conseguenza i bit liberi sono 56.
Il testo da cifrare viene suddiviso in blocchi di 64 bits ciascuno e vengono cifrati uno dopo l'altro in successione con uguale procedimento se viene usato il modello ECB altrimenti vengono incatenati fra loro secondo i metodi CBC, CFB e OFB.
Ci sono diversi sistemi utilizzati per completare un messaggio, se esso non raggiunge la lunghezza desiderata di 64 bit (procedimento detto "pad"): un metodo aggiunge zeri fino alla lunghezza stabilita mentre un altro, se i dati sono binari, integra il blocco con bits che sono l'opposto degli ultimi bit del messaggio. Nel caso di dati ASCII si usano invece byte random (casuali) specificando nell'ultimo byte il carattere ASCII corrispondente al numero di byte aggiunti. Infine un'ultima tecnica, in parte equivalente alla precedente, usa sempre bits random ma fornisce, negli ultimi tre bits, il numero di byte non padding cioè originali. In tal caso se il blocco è già di 64 bits si dovrà aggiungere un'altra stringa di 64 bits con 61 bits random e gli ultimi 3 nulli dato che indicano il numero di byte validi.



Operazioni da eseguire


Durante la cifratura un blocco di testo normale viene per prima cosa trasposto (o permutato), che significa che ogni bits cambia di posizione con un altro mediante un modulo di trasposizione. Poi il blocco di 64 bits viene diviso in una metà destra e una metà sinistra di 32 bits. In seguito vengono applicate 16 passate (round) tramite una funzione che opera sia trasposizioni che sostituzioni ad ogni metà mediante sottochiavi. Durante ogni round l'output della metà sinistra diventa l'input della destra e viceversa.
Dopo il completamento di tutti i round i due sottoblocchi vengono riuniti e il risultato permutato per invertire la trasposizione iniziale. Precisamente: indichiamo con T(i) il risultato della i-esima iterazione, con S(i) il semiblocco sinistro, con D(i) il semiblocco destro e con K(i) la sottochiave. In base all'algoritmo avremo che:

T(i)=S(i)D(i)      blocco di testo chiaro (plaintext)
S(i)=D(i-1)
D(i)=S(i-1) XOR f[D(i-1),K(i)]

Vediamo come opera la funzione "f":

  1. il blocco D(i-1) viene espanso da 32 bits a 48 con un modulo di espansione E. Indichiamo il blocco espanso con E[D(i-1)];
  2. si calcola E[D(i-1)] XOR K(i);
  3. il risultato precedente viene spezzato in 8 blocchi di 6 bits ciascuno: B(1),B(2)...B(8) contenenti rispettivamente i bits da 1-6, da 7-12 etc...
  4. ciascun blocchetto B viene usato come ingresso ad una funzione Z che restituisce stringhe di 4 bits indicate Z[B(i)]. La funzione Z opera in questo modo:
    preleva da ogni matrice fissata S-box i 4 bits del nuovo blocchetto S(i)=Z[B(i)] posizionati in base alle righe e colonne specificate dai 6 bits del corrispondente B(i);
  5. una volta concatenati gli 8 blocchetti S(1), S(2)...S(8) verranno permutati ottendo finalmente P[S(1),..S(8)]=f [D(i-1), K(i)].



Creazione di sottochiavi

La chiave è una stringa di 64 bits con 8 bits di controllo che vengono ignorati durante la cifratura/decifratura. Essa viene spezzata in due blocchi di 28 bits, supponiamo di chiamarli L(0) e R(0), dopodichè per 16 volte i semiblocchi vengono shiftati a sinistra ottenendo L(1), R(1), L(2), R(2) ... L(16),R(16) (per maggiori informazioni clicca quì).
Quindi al primo round l'algoritmo utilizzerà la sottochiave K(1)=P[L(1)R(1)] dove P al solito indica una permutazione, al secondo K(2)=P[L(2)R(2)] e al 16° round K(16)=P[L(16)L(16)] (si noti che tutte le operazioni effettuate producono sottochiavi K(i) di 48 bits).



Decifratura


Per la decifratura il procedimento è lo stesso salvo che al 1° passo verrà utilizzata K(16)=P[L(16)L(16)], al secondo K(15)=P[L(15)L(15)] etc.
In termini di equazione avremo:

T(i)=S(i)D(i)     blocco di testo cifrato (ciphertext)
D(i-1)=S(i)
S(i-1)=D(i) XOR f[S(i),K(i)]


crittografia simmetrica

QUANTO E' SICURO DES?

Questo algoritmo che potrebbe sembrare molto cavilloso in realtà sfrutta operazioni molto semplici come trasposizione, sostituzione e XOR.
Nonostante la sua semplicità il DES con i suoi 16 round sopravvive da due decenni alla crittoanalisi. Tuttavia appartiene alla classe dei cifrari utilizzati per la crittografia commerciale cioè messaggi relativamente importanti in quanto non è invincibile anche se non ancora violato.
DES è un cifrario standard dove quello che varia è solo la chiave. Se questo da una parte porta a dei vantaggi economici e di contabilità dall'altra comporta degli ovvi svantaggi: quello più evidente è che se un domani, non troppo lontano, verrà forzato tutti coloro che ne fanno uso dovranno cambiare il cifrario con una spesa enorme.
Inoltre il difetto più importante è la sua limitata Keyspace (spazio delle chiavi) pari a 2^56 ormai non più sufficiente, infatti alla fine degli anni '70 è stato stimato che una macchina in grado violare una Key-des in meno di un giorno sarebbe costata 20.000.000$. In 5 anni potrebbe essere però uno strumento che anche le masse si potranno permettere.
Per far fronte a questi problemi sono nate proposte diverse tra cui l'utilizzo di chiavi più lunghe o di cifratura tripla (TDES).
Sono nate ultimamente delle perplessità riguardo per esempio il rifiuto della IBM di rendere pubbliche le ragioni della scelta di specifiche S-box nel cifrario o anche la riduzione della chiave da 128 bits a 64 fatta dalla NSA (National Security Agency) che rendono dubbia la sicurezza di DES ma è inutile indagare dato che nel 1997 il vecchio DES verrà sostituito da un nuovo standard denominato Skipjack.


crittografia simmetrica

TDES

Un evoluzione del DES può essere considerata il triplo-DES così denominato perché usa due o tre chiavi indipendenti in tre passaggi.
Ci sono molte varianti del TDES: una di queste usa due chiavi, K¹ e K², che raddoppiano l'effettiva lunghezza della chiave portandola a 112 bits, incrementando il Key-space di un fattore 2^56 e aumentando notevolmente la sua resistenza agli attacchi.
Ogni blocco di 64 bits viene prima criptato con la chiave K¹ poi decriptato con K² quindi nuovamente criptato con K¹.
Questa tecnica di cifrare-decifrare-cifrare è molto più difficile da violare rispetto al metodo classico di encriptamento singolo del DES. Inoltre se K¹=K² il TDES ha lo stesso risultato del DES così che l'implementazione dell'hardware del TDES può funzionare tranquillamente anche come DES.
Un'altra versione sfrutta 3 chiavi da 56 bits, con un effettivo Key-space di 168 bits, e prevede 3 operazioni di criptamento. Nonostante sia molto dispendioso è più sicuro rispetto a quello appena descritto o al classico DES.

Bibliografia e sorgenti d'informazione



Telemat Lab's home page
home pageIndicePrec.Succ.


Explore the TELEMAT Site !!!

Ultimo aggiornamento: 24/1/97