1 / 34

AES SU CUDA

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.

gomer
Download Presentation

AES SU CUDA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AES SU CUDA Corsodi Protocollie Sistemidi Sicurezzain Rete Studente Ledda Francesco A18/65 Docente Prof. RakMassimiliano

  2. Sommario • Introduzione alla crittografia • L’algoritmo AES • Implementazione su GPU • Confronto tra CPU e GPU • Conclusioni

  3. 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à

  4. 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

  5. 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)

  6. 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

  7. Crittazione in AES Le fasi della crittazione sono: • Key Expansion • Round preliminare • Nr-1 Round • 1 Round finale

  8. 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

  9. 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]

  10. Round Ogni round applica allo stato 4 operazioni • SubBytes • ShiftRows • MixColumns • AddRoundKey

  11. SubBytes - Sostituisce ogni byte a seconda del suo valore tramite una S-box.

  12. ShiftRows - Shifta ciclicamente la i-esima riga dello stato di i-1 posti verso sinistra

  13. MixColumns - Applica una trasformazione lineare invertibile a ciascuna colonna dello stato

  14. AddRoundKey - Al round i applica la XOR logica tra i 128 bit dello stato e gli i-esimi 128 bit della chiave estesa

  15. Round finale Non applica l’operazione MixColumns: • SubBytes • ShiftRows • AddRoundKey

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. Tempi di esecuzione – AES 256 bit

  27. Tempi di esecuzione GTX460 vs. i5

  28. Tempi di Esecuzione GTX460 vs i5 Inizialmente l’overhead dovuto al trasferimento dei dati non rende vantaggioso l’utilizzo della GPU

  29. Speed-UP GTX460 vs i5 Lo speed-UP aumenta esponenzialmente fino ad una certa dimensione del plaintext, dopo aumenta lentamente

  30. GTX460 vs GT520MX Le 2 GPU viaggiano sugli stessi tempi fin quando quella con meno core non satura

  31. Speed-UP Crittazione Le crittazioni a 128 e 192 bit fanno dei round in meno per cui c’è uno speed-Up minore

  32. Speed-UP decrittazione In generale la decrittazione è più lenta il che porta ad uno speed-up maggiore

  33. 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

  34. GRAZIE PER L’ATTENZIONE !

More Related