340 likes | 518 Views
AES SU CUDA. Corso di Protocolli e Sistemi di Sicurezza in R ete. Studente Ledda Francesco A18/65. Docente Prof. Rak Massimiliano. Sommario. Introduzione alla crittografia L’algoritmo AES Implementazione su GPU Confronto tra CPU e GPU Conclusioni.
E N D
AES SU CUDA Corsodi Protocollie Sistemidi Sicurezzain Rete Studente Ledda Francesco A18/65 Docente Prof. RakMassimiliano
Sommario • Introduzione alla crittografia • L’algoritmo AES • Implementazione su GPU • Confronto tra CPU e GPU • Conclusioni
Introduzione alla Crittografia (1/2) La crittografia tratta i metodi che proteggono un messaggio trasformandolo in un formato non leggibile in modo tale da permettere la riconversione soltanto a chi è autorizzato a leggerlo L’idea è quella di applicare una serie di operazioni sul testo in chiaro sulla base di una chiave In generale, in una comunicazione crittografata si può garantire: • Confidenzialità • Integrità • Identità
Introduzione alla Crittografia (2/2) Gli algoritmi di crittografia si classificano in base a: • Tipo di operazioni fatte sul plaintext: sostituzioni, trasposizioni, prodotti … • Numero di chiavi usate: a chiave privata, c’è una sola chiave segreta conosciuta solo dai comunicanti; a chiave pubblica, ogni comunicante possiede una chiave privata conosciuta solo da lui ed una pubblica nota a tutti • Il modo in cui il plaintext è processato: a blocchi di n bit o a flusso di bit
AES • È un algoritmo di crittografia a blocchi a chiaveprivata • Si basasulcifrario di Rijndael • Adottato come Standard crittografico dal governo USA nel 26 maggio 2002 • Lavorasublocchi di 128 bit • Prevedel’utilizzo di chiavi a 128, 192 e 256 bit • Il blocco è visto come 4 colonne di 4 byte (stato) • Lo stato passa attraverso 10 iterazioni (128 bit), 12 iterazioni (192 bit) o 14 iterazioni (256 bit)
Cifrario AES – Rijndael • In generale il cifrario Rijndael • Divide il blocco di b bit in ingresso in Nb blocchi da 32 bit (word) • Divide la chiave di k bit in Nk blocchi da 32 bit • Applica Nr round allo stato a seconda di Nk • In AES si ha: • Nb = 4 • Nk = 4, 6 o 8 • Nr = 10, 12 o 14 rispettivamente
Crittazione in AES Le fasi della crittazione sono: • Key Expansion • Round preliminare • Nr-1 Round • 1 Round finale
Key Expansion • Espande una chiave di Nk word in una da Nb*(Nr+1) word • 128 bit 1408 bit • 192 bit 1664 bit • 256 bit 1920 bit • 1 primi Nk*32 bit sono identici alla chiave, i restanti bit sono ottenuti applicando combinazioni di operazioni di Shift, XOR ed S-box sulla chiave a seconda della sua dimensione
Round preliminare Consiste semplicemente nella XOR logica tra i 128 bit del blocco in ingresso e i primi 128 bit della chiave estesa (Operazione AddRoundKey) Blocco da crittare[0:127] Stato [0:127] Chiave Estesa[0:127]
Round Ogni round applica allo stato 4 operazioni • SubBytes • ShiftRows • MixColumns • AddRoundKey
SubBytes - Sostituisce ogni byte a seconda del suo valore tramite una S-box.
ShiftRows - Shifta ciclicamente la i-esima riga dello stato di i-1 posti verso sinistra
MixColumns - Applica una trasformazione lineare invertibile a ciascuna colonna dello stato
AddRoundKey - Al round i applica la XOR logica tra i 128 bit dello stato e gli i-esimi 128 bit della chiave estesa
Round finale Non applica l’operazione MixColumns: • SubBytes • ShiftRows • AddRoundKey
Decrittazione AES (1/2) La decrittazione applica le operazioni inverse a quelle viste finora, partendo però dagli ultimi 128 bit della chiave estesa fino ad arrivare ai primi Le fasi della decrittazione sono: • Key Expansion • Round preliminare • Nr-1 Round inversi • 1 Round inverso finale
Decrittazione AES (2/2) La sequenza di operazioni dei round inversi è: • InvShiftRows • InvSubBytes • AddRoundKey • InvMixColums Per il round finale si elimina InvMixColums • InvShiftRows • InvSubBytes • AddRoundKey
Modalità di cifratura (1/2) Per i cifrari a blocchi esistono varie modalità di cifratura: • EBC: codifica ogni blocco in ingresso in maniera indipendente dagli altri • CBC: L’ingresso del blocco i è messo in XOR con l’uscita del blocco i-1 • CFB: il byte da inviare è messo in XOR con il byte più significativo di un blocco ottenuto applicando l’AES sugli ultimi 128 bit inviati • CTR: il blocco i è messo in XOR con un blocco ottenuto applicando l’AES su un vettore nonce di 128 bit a cui è stato aggiunto i
Modalità di cifratura (2/2) Ogni modalità garantisce requisiti differenti • L’EBC è il più semplice, data una chiave equivale ad un cifrario a sostituzione a 128 bit • CBC e CFB tengono conto della storia passata per cifrare ciascun blocco. Questo però impedisce la lettura random • CTR migliora l’EBC ma hanno il problema dei nonce da generare in maniera casuale • EBC e CTR permettono una implementazione parallela spinta
Implementazione su GPU • Bisogna considerare una modalità di cifratura che permetta di cifrare i blocchi in maniera indipendente, ad esempio EBC • Per ogni blocco di 128 bit da crittare si può lanciare un thread su GPU. • L’espansione della chiave non presenta codice parallelizzabile, ed il tempo di esecuzione di questa fase è trascurabile rispetto alle altre
Implementazione su GPU - Crittazione • Creazione casuale di plaintext e chiave • Avvia timer crittazione • Calcolo chiave estesa • Copia di plaintext e chiave estesa su GPU • Ogni thread su GPU cripta un blocco di 128 bit • Copia di ciphertext su CPU • Ferma timer crittazione
Implementazione su GPU- Decrittazione • Avvio timer Decrittazione • Calcolo chiave estesa • Copia di ciphertext e chiave estesa su GPU • Ogni thread decritta un blocco di 128 bit • Copia del testo decrittato su CPU • Ferma timer decrittazione • Controllo di coerenza tra testo decrittato e plaintext
Implementazione su GPU - Memorie Host S-Boxes Constant Memory Plaintext & Key Global Memory Ciphertext 128bits 128bits 128bits 128bits 128bits 128bits Local Local Local Thread 1 Thread 2 Thread N Access to the S-Boxes
Metodologia di Benchmark • Si parte con un plaintext di 16 byte e si raddoppia di volta in volta la dimensione fino ad arrivare a 32 MB • Per ciascuna dimensione del plaintext i tempi sono valutati come media su 100 esecuzioni con plaintext e chiavi casuali • I tempi misurati comprendono anche i tempi di trasferimento dei dati GPU ad host • I tempi di creazione di plaintext e chiave ed i tempi di controllo di coerenza tra plaintext e testo decrittati sono esclusi dal conteggio
Macchine del Benchmark • Intel Q8200, @2.4 GHz • Intel i5-2410M, @2.3 GHz • Nvidia GeForce GTX 460, 336 Cuda Core, CC 2.1 • Nvidia GeForce GT 520 MX, 48 Cuda Core, CC 2.1
Tempi di Esecuzione GTX460 vs i5 Inizialmente l’overhead dovuto al trasferimento dei dati non rende vantaggioso l’utilizzo della GPU
Speed-UP GTX460 vs i5 Lo speed-UP aumenta esponenzialmente fino ad una certa dimensione del plaintext, dopo aumenta lentamente
GTX460 vs GT520MX Le 2 GPU viaggiano sugli stessi tempi fin quando quella con meno core non satura
Speed-UP Crittazione Le crittazioni a 128 e 192 bit fanno dei round in meno per cui c’è uno speed-Up minore
Speed-UP decrittazione In generale la decrittazione è più lenta il che porta ad uno speed-up maggiore
Conclusioni • La GPU si mostra un’ottima alternativa alla CPU per l’algoritmo AES • Il tempo di esecuzione su CPU aumenta linearmente con la dimensione del plaintext, per la GPU aumenta lentamente all’inizio e linearmente una volta saturato l’hardware • Aumentare il numero di core della GPU, permette un aumento significativo dello speed-up per plaintext di grandi dimensioni