La cifratura a chiave simmetrica utilizza una sola chiave sia per la fase di cifratura che per quella di decifratura dell’informazione. Quindi solo il mittente ed il destinatario devono conoscere entrambi la stessa chiave per potersi scambiare informazioni cifrate, per questo tale metodo è detto anche cifratura a chiave segreta.
Il messaggio viene cifrato dal mittente per mezzo di una chiave ed inviato al destinatario, il quale è in grado di decifrarlo soltanto se è a conoscenza della chiave utilizzata dal mittente (v. fig. 23.2).
Il problema relativo a questo tipo di cifratura, consiste essenzialmente nella modalità di scambio della chiave tra il mittente ed il destinatario. Infatti essa deve necessariamente essere scambiata attraverso un canale sicuro, altrimenti anche il nemico conoscerebbe la chiave potendo così decifrare agevolmente le informazioni cifrate trasmesse dal mittente.
Il più semplice esempio di sistema a cifratura simmetrica è quello a lettere permutate: ogni
lettera dell’alfabeto del messaggio in chiaro viene fatta corrispondere ad un’altra
lettera in modo biunivoco. La chiave è la relazione tra le lettere in chiaro e quelle
permutate. Il sistema può sembrare inespugnabile: la totalità delle chiavi (tutte
le permutazioni possibili di ogni letera) è 26! ovvero circa 4 × 1026. Se il nemico
impiegasse anche soli 1
s per provarne una, provarle tutte vorrebbe dire avere
a disposizione un tempo dell’ordine di 13 × 1012 anni. In realtà il sistema non è
robusto quanto sembra. Infatti, considerando la regolarità statistica delle lettere
della lingua, ad esempio, inglese, si hanno le frequenze di impiego riportate nella
tab. 23.2.
![]()
|
La cifratura simmetrica si distingue anche in base all’applicazione dell’algoritmo sul testo in chiaro. Si parla di cifratura a flusso2 (stream cipher o state cipher) quando l’algoritmo di cifratura viene applicato ad un bit o ad un byte alla volta. Se l’algoritmo viene applicato a gruppi di bit o di byte sempre della stessa dimensione, si parla di cifratura a blocchi (block cipher). La cifratura più utilizzata è quella a blocchi.
Gli algoritmi di cifratura a blocchi si suddividono ulteriormente nelle seguenti categorie
Di seguito sono riportati alcuni tra gli algoritmi più utilizzati per la cifratura a chiave simmetrica.
Si basa su una chiave composta da 64 bit, suddivisa in blocchi da 8 bit (l’ultimo bit di ogni blocco è considerato come codice di controllo ed ignorato durante la fase di cifratura/decifratura).
La cifratura di un messaggio viene effettuata suddividendo lo stesso in blocchi di 64 bit. Se il blocco da cifrare non raggiunge i 64 bit, viene effettuato un padding, considerando i bit mancanti come tutti a 0, oppure ci sono versioni che integrano il blocco di bit con il valore opposto a quello dell’ultima parte del blocco, e versioni che riempiono i bit mancanti con valori casuali, inserendo nell’ultimo byte il numero di bit casuali aggiunti.
Un blocco da cifrare viene innanzitutto permutato, ovvero viene cambiata la posizione dei bit che lo compongono, quindi suddiviso in due sottoblocchi di 32 bit. Dopodiché ad ogni sottoblocco viene applicata una serie di 16 passi (round) che operano in cascata, ognuno dei quali esegue le seguenti operazioni:
La subkey SBk è generata considerando 56 bit della chiave (1 bit ogni 8 viene escluso ed eventualmente utilizzato come bit di parità) e suddividendola in 2 parti da 28 bit che subiscono 16 rotazioni a sinistra (di 1 o 2 bit). Per ogni rotazione si selezionano quindi 24 bit da ognuno dei due blocchi da 28 bit, ottenendo così una subkey da 48 bit.
L’intero meccanismo precedentemente descritto detto schema di Feistel4 che permette di ottenere un meccanismo di decifratura molto simile a quello di cifratura (cambia soltanto l’ordine di applicazione delle subkey).
Infine il blocco viene permutato nuovamente con un’operazione inversa alla prima (le permutazioni iniziale e finale non producono nessun effetto sul meccanismo di cifratura ma sono rimasugli della gestione dei blocchi di informazioni dei sistemi degli anni ’70).
Maggiori dettagli sui meccanismi di cifratura e decifratura DES sono reperibili da ftp://ftp.ox.ac.uk/pub/crypto/DES/des-how-to.txt.
Il DES offre una protezione relativamente facile da eludere a causa del fatto che la chiave è piuttosto piccola - i bit effettivamente utilizzati come chiave sono 56 - (v. “Cracking DES: Secrets of Encryption Research, Wiretap Politics, and Chip Design”, O’Reilly).
Per le chiavi, lo standard ANSI X9.52 prevede tre opzioni possibili
Lo studio sul 3DES, indica che la cifratura DES ripetuta più volte non fornisce comunque un sostanziale aumento della sicurezza delle informazioni cifrate.
Utilizzando una chiave a 128 bit, si basa, come RC5, sulle rotazioni dei dati, che lo rende un algoritmo di cifratura piuttosto veloce.
La cifratura avviene, analogamante a quella del DES, suddividendo il messaggio da cifrare in blocchi di 64 bit e suddividendolo successivamente in 4 sottoblocchi di 16 bit. Ogni sottoblocco viene sottoposto ad 8 passi nei quali sono coinvolte 52 sottochiavi diverse ottenute dalla chiave a 128 bit.
IDEA è al momento sistema di cifratura a chiave simmetrica più utilizzato dai software commerciali di crittografia per la sua velocità di codifica/decodifica e l’elevata sicurezza offerta.
Si tratta di un software più veloce di DES ed IDEA, libero e gratuitamente disponibile per chiunque.
L’AES supporta chiavi di lunghezza 128, 192 e 256 bit.
Gli algoritmi di cifratura a chiave simmetrica hanno la caratteristica di essere molto veloci nelle fasi di cifratura e decifratura.
[da completare ...]