AES (advanced encryption standard) è una tecnica di cifratura a blocchi, conosciuta anche come Rijndael.
È veloce, semplice da implementare e offre un buon livello di sicurezza.
Nell' AES il blocco è di dimensione fissa (128 bit) e la chiave può essere di 128, 192 o 256 bit.
AES opera utilizzando matrici di 4×4 byte chiamate stati (states). Funzionamento:
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.
Si divide il numero di bit del blocco in input per 32 e il quoziente specifica il numero di colonne.
A causa di ritardi al progetto e della presenza in secondo piano della cifratura AES, utilizzata solamente come ulteriore livello di sicurezza oltre alla cifratura RSA + ASCII Art, il gruppo ha optato per utilizzare la classe AES di sistema.
Durante la fase di documentazione è inoltre emerso che una implementazione AES in C# avrebbe condotto a tempi di elaborazione eccessivi. In molti casi, infatti, AES è implementata con librerie scritte in linguaggio assembly per diminuire al minimo i tempi di elaborazione.
Nel progetto è stato combinato ad RSA perchè avendo una chiave di lunghezza fissa (128bit) risulta più semplice da codificare rispettando le limitazioni di RSA.
La classe predefinita di C# per l'utilizzo di AES è System.Security.Cryptography.Aes che, data in input le 2 chiavi random generate di lunghezza fissa (di solito 128bit) ed il messaggio in byte, restituisce un array di byte contenente i dati cifrati.
La classe AES Chiper, utilizza la classe di sistema ma presenta 2 metodi, Encrypt che genera le chiavi e cifra il messaggio in input restituendo un jagged-array contenente le 2 chiavi ed il messaggio cifrato.
Decrypt invece si affida alla funzione di decifratura standard di AES.
Sottoscriviti a questo Blog via RSS.
Sito 1
Programmazione (2) Organizzazione (1) Connessioni (2) Interfaccia (1) Crittografia (3) Sito (1)