Mattioli Alessandro 5H

LA CRITTOGRAFIA

Tesi di maturità 2016/2017

"Crittografia, messaggi segreti? Non segreti. È questo il bello.
Messaggi che tu puoi vedere, ma che non potrai mai capire, se non hai la chiave." -The Imitation Game

Crittografia Moderna

La crittografia moderna si differenzia notevolmente dalla crittografia classica; l’avvento dei computer ha infatti rivoluzionato profondamente sia i sistemi crittografici che il modo di vedere e utilizzare la crittografia. Molti sistemi crittografici utilizzati in precedenza (Cifrario di cesare, Enigma, Bastone di Scitala, ecc..) e considerati inviolabili fino al XX secolo, possono oggi essere forzati in tempi brevissimi grazie alla velocità di elaborazione dei computer. Inoltre possono essere ora utilizzati sistemi crittografici molto complessi e che, un tempo, avrebbero richiesto tempi di cifratura troppo lunghi. La crittografia moderna può essere divisa in due grosse ramificazioni:
--Crittografia Simmetrica, viene utilizzata una sola chiave sia per cifrare che per decifrare il messaggio;
--Crittografia Asimmetrica, vengono utilizzate due chiavi le quali possono sia cifrare che decifrare il messaggio.

Crittografia Simmetrica

Gli algoritmi a chiave simmetrica (per esempio AES) sono algoritmi per la crittografia che utilizzano la stessa chiave crittografica sia per cifrare che per decifrare il messaggio. Questo rappresenta un metodo semplice per cifrare un testo rendendo l'algoritmo molto performante e semplice da implementare. Questo algoritmo tuttavia presuppone che le due parti siano già in possesso della chiave perchè esso non rende possibile lo scambio della stessa.

Crittografia Asimmetrica

Gli algoritmi a chiave asimmetrica a differenza di quelli con chiave simmetrica utlizzano 2 chiavi, una privata che è segreta e resta al mittente e una pubblica che viene spedita a tutti. Questo algoritmo può essere utilizzato sia nell’ambito della firma digitale quando, per cifrare il messaggio viene usata la chiave privata e, successivamente, la chiave pubblica per decifrarlo, che per spedire messaggi contenenti dati sensibili cifrando il messaggio con la chiave pubblica per poi decifrarlo con la chiave privata del destinatario.

Advanced Encryption Standard

Nel 1999 si presentarono vari algoritmi candidati a diventare lo standard di crittografia simmetrica. Questi candidati furono MARS proposto dalla IBM, RC6, Serpent, Twofish e Rijndael. Tutti questi algoritmi furono testati per efficienza e sicurezza su varie architetture, sia hardware che software. Tra questi ricevette un feedback positivo Rijndael che nel 2000 divenne il nuovo standard con il nome di AES. Esso opera utilizzando matrici di 4×4 byte chiamate stati (states). Quando l'algoritmo ha blocchi di 128 bit in input, la matrice State ha 4 righe e 4 colonne; se il numero di blocchi in input diventa di 32 bit più lungo, viene aggiunta una colonna allo State, e così via fino a 256 bit.

Come avviene la cifratura con AES?

La fase di cifratura con AES avviene nella seguente maniera (il passaggio n°1 avviene una sola volta):

1) AddRoundKey – Ogni byte della tabella viene combinato con la chiave di sessione, la chiave di sessione viene calcolata dal gestore delle chiavi.

Successivamente per cifrare sono previsti diversi round o cicli di processamento, ogni round consiste dei seguenti quattro passaggi:

2) SubBytes – Sostituzione non lineare di tutti i byte che vengono rimpiazzati secondo una specifica tabella.

3) ShiftRows – Spostamento dei byte di un certo numero di posizioni dipendente dalla riga di appartenenza

4) MixColumns – Combinazione dei byte con un'operazione lineare, i byte vengono trattati una colonna per volta.

5) AddRoundKey – Ogni byte della tabella viene combinato con la chiave di sessione, la chiave di sessione viene calcolata dal gestore delle chiavi.

Il numero dei round dipende dalla lunghezza della chiave ed inoltre l'ultimo round salta il passaggio MixColumns.