La morte di DES
- Dopo molti anni di utilizzo di DES, negli anni 90 si scopre che è possibile sconfiggerlo e romperlo tramite tre tipologie di attacchi:
- Macchina Dedicata
- Attacco distribuito
- Mix tra 1 e 2
- nel 1997 infatti RSA Security Company lancia una sfida che consisteva nel pagare 10K il primo in grado di rompere DES.
- Ci provano in molti ma un certo Verser ci riuscì “fregando il sistema”, ovvero scrivendo un codice di forza bruta e rendendolo pubblico, invitando centinaia di persone ad utilizzarlo usando chiavi diverse. Ci vollero 6 mesi, ma si riuscì a sconfiggere DES.
- RSA allora decise di lanciare un’altra sfida, e Verser rifece questo gioco ma con ancora piu persone, e in un dolo mese venne trovata la chiave.
- Venne costruita in seguito la DES-Cracker per 200k $
Advanced Encryption Structure (AES)
Struttura Generale
- AES ha una struttura abbastanza complessa, il cifrario prende in input un plaintext un blocco di 128 bits
- La chiave può essere di diverse dimensioni:128
- il blocco di 128 bits, viene definito da una matrice 4x4 (bytes) e questo blocco viene copiato nell’array Stato, il quale viene modificato ad ogni iterazione di cifratura o decifratura
- Dopo l’ultimo passaggio, l’array stato viene copiato in una nuova matrice 4x4
- anche la chiave viene rappresentata come una matrice, e come per il plaintext viene poi srotolata in un array
Rounds
- il cifrario consiste in N round, dove il numero di round dipende dalla lunghezza della chiave
- 10 round per una chiave di 16 byte
- 12 round per una chiave di 24 byte
- 14 round per una chiave di 32 byte
- i primi N-1 Round consistono in 4 diverse funzioni di transizione:
- SubBytes
- ShiftRows
- MixColumns
- AddRoundKey
- l’ultimo round consiste solo in tre trasformazioni
<aside>
💡 NB: prima del primo round, si effettua una operazione di AddRoundKey, considerata spesso round 0
</aside>
Matrici
- ogni trasformazione prende in input una o piu matrici 4x4 e produce in output una matrice 4x4
- l’output di ogni round è sempre una matrice 4x4, l’output dell’ultimo round invece è il crittotesto ovviamente
- la funzione di espansione della chiave genera N+1 RoundKey ognuno dei quali è una matrice 4x4
- ogni RoundKey fa da input all’ AddRoundKey in ogni round
Struttura Dettagliata
- una cosa importante da dire è che AES non utilizza una funzione feistel, quindi è invertibile e soprattutto non utilizza solo un pezzo del plaintext per cifrarlo.
- Ora si descrivono le fasi principali di AES:
SubBytes
ShiftRows