Cifratura AES

Cifratura AES

Nov 25, 2014. | Da: Guglielmetti Kevin

Concetti Generali

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.

Operazioni


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

SubBytes
Ogni byte della matrice viene modificato tramite la S-box (tabelle fisse utilizzate per oscurare le relazioni tra testo in chiaro e testo cifrato) a 8 bit. Questa operazione provvede a fornire la non linearità all'algoritmo.

ShiftRows
Trasla verso sinistra le righe della matrice di un parametro dipendente dal numero di riga. La prima riga resta invariata, la seconda viene spostata di un posto, la terza di due posti e così via. L’ ultima colonna dei dati in ingresso andrà a formare la diagonale della matrice in uscita.

MixColumns
Prende i quattro byte di ogni colonna e li combina utilizzando una trasformazione lineare invertibile. Ogni colonna è trattata come un polinomio in GF() e viene moltiplicata modulo   per un polinomio fisso.

AddRoundKey
Combina con uno XOR la chiave di sessione con la matrice ottenuta dai passaggi precedenti (State).

Implementazione nel Progetto

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.

Sottoscrizione

Sottoscriviti a questo Blog via RSS.

Categorie

Programmazione 2

Organizzazione 1

Connessioni 2

Interfaccia 1

Crittografia 3

Sito 1

Posts Recenti

Tags Popolari

Programmazione (2) Organizzazione (1) Connessioni (2) Interfaccia (1) Crittografia (3) Sito (1)

Chi Siamo

Il gruppo è stato formato per una serie di progetti scolastici di cui Crypthat è il primo. Sebbene le disuguaglianze interne cerca costantemente di rendere al meglio rispettando tempi e consegne previste.

Dove Siamo

ISII Marconi, via IV Novembre,
29122, Piacenza,
Italy.