Crittografia simmetrica
Con crittografia simmetrica (o crittografia a chiave privata) si intende una tecnica di cifratura. Rappresenta un metodo semplice per cifrare testo in chiaro dove la chiave di crittazione è la stessa chiave di decrittazione, rendendo l'algoritmo di cifratura molto performante e semplice da…
Con crittografia simmetrica (o crittografia a chiave privata) si intende una tecnica di cifratura. Rappresenta un metodo semplice per cifrare testo in chiaro dove la chiave di crittazione è la stessa chiave di decrittazione, rendendo l'algoritmo di cifratura molto performante e semplice da implementare. Gli algoritmi a chiave simmetrica sono algoritmi di crittografia che utilizzano le stesse chiavi crittografiche sia per la crittografia del testo in chiaro (plain text) che per la decrittografia del testo cifrato. Le chiavi possono essere identiche, oppure può esserci una semplice trasformazione per passare da una chiave all'altra. Le chiavi, in pratica, rappresentano un segreto condiviso tra due o più parti, che può essere utilizzato per mantenere un collegamento privato, di informazioni. Il requisito che entrambe le parti abbiano accesso alla chiave segreta è uno dei principali svantaggi della crittografia a chiave simmetrica, rispetto alla crittografia a chiave pubblica (nota anche come crittografia asimmetrica). Tuttavia, gli algoritmi di crittografia simmetrica sono di solito migliori per la crittografia di massa. Hanno una dimensione minore della chiave, il che significa meno spazio di archiviazione e una trasmissione più veloce. Per questo motivo, la crittografia a chiave asimmetrica viene spesso utilizzata per scambiare la chiave segreta della crittografia a chiave simmetrica.
La crittografia simmetrica presuppone che le due parti siano già in possesso delle chiavi, richiesta che non rende possibile uno scambio di chiavi con questo genere di algoritmi. Lo scambio avviene attraverso algoritmi a chiave asimmetrica o pubblica, generalmente più complessi sia da implementare che da eseguire, ma che permettono questo scambio in modo sicuro. Dopodiché la comunicazione verrà crittata usando solo algoritmi a chiave simmetrica per garantire una comunicazione sicura, ma veloce.
Funzionamento
In questo genere di algoritmi si suppone che entrambe le parti conoscano già la chiave con cui crittare e decrittare il messaggio. Il mittente ha un messaggio P (plaintext o testo in chiaro). Il mittente critta il messaggio P con la chiave k usando un algoritmo di crittografia simmetrica chiamato S. Il messaggio risultante sarà C (cyphertext o messaggio cifrato). In formule diventa:
S(P,k)=C.
A questo punto al destinatario arriva un messaggio cifrato che riesce a decrittare poiché è in possesso della chiave privata. Ora il ricevente applica l'algoritmo di decrittazione D con la stessa chiave che ha usato il mittente per crittare il testo. Diventa:
D(C,k)=P.
Se un attaccante ha intercettato il messaggio lungo il mezzo di comunicazione, avrà il messaggio crittato ma non la chiave che è stata scambiata in modo sicuro dai due interlocutori. Se l'attaccante vorrà leggere il messaggio crittato potrà solo usare metodi di decrittazione che richiedono elevate capacità di calcolo.
Nel caso di una comunicazione reale, questo colloquio viene criptato tramite un algoritmo a chiave pubblica, più complesso ma che non richiede nessuna trasmissione della chiave sul mezzo di comunicazione.
Componenti comuni nelle varie implementazioni
Tra i vari algoritmi di crittazione possiamo trovare alcune operazioni comuni, poiché aggiungono generalmente maggior sicurezza nel testo cifrato e sono operazioni rapide per la macchina.
Spesso una stessa operazione viene ripetuta più volte, riferendosi a questi passaggi come cicli o round. Ad esempio in AES la stessa routine viene ripetuta dieci volte. In DES il testo in chiaro subisce sedici volte la crittazione insieme alla chiave prima di terminare. Una volta disegnato l'algoritmo viene molto facile ripeterlo, rendendo più complesso un lavoro di decrittazione forzata tramite il metodo forza bruta. Se l'algoritmo di decrittazione è ben disegnato e non si riescono ad avere informazioni sulla chiave, questo è l'unico metodo attraverso cui è possibile la decrittazione del messaggio cifrato.
Tra i vari algoritmi simmetrici possiamo riconoscere alcuni parametri standard come la lunghezza della chiave e la dimensione del blocco.
La lunghezza della chiave è misurata in bit e ha valori che oscillano tra 32 bit e 512 bit. Generalmente la lunghezza della chiave è un valore fisso nonostante esistano alcuni algoritmi come AES che impiegano lunghezze variabili.
Ogni algoritmo generalmente cerca di crittare una stringa di bit attraverso una chiave in un'altra stringa di bit della medesima lunghezza. La lunghezza di questa stringa è uguale alla dimensione del blocco. Algoritmi più datati avevano questo valore pari a 64 bit in media. Oggi si preferisce adottare dimensioni di 128 bit.
Un problema che affligge la dimensione del blocco è il paradosso del compleanno che rilascia informazioni sulla chiave ogni volta che avviene una collisione. Possiamo ritenere sicura solo la radice quadrata di tutte le combinazioni possibili. Per esempio con una dimensione di 64 bit, che genererebbe 264 possibili combinazioni, potremo impiegarne solo 232 prima di cominciare a rivelare informazioni sulla chiave.
L'attacco di un computer quantistico dimezza la forza dell'algoritmo a cifratura simmetrica. In altre parole, l'attacco di un computer quantistico ha un algoritmo di tipo AES a 256 bit lo fa funzionare come se la lunghezza della chiave fosse 128 bit. Per per prevenire tale eventualità, senza modificare l'algoritmo della cifratura a chiave simmetrica, si è soliti raddoppiare la lunghezza della chiave di cifratura.
MCMX