Politecnico di Milano Realizzazione di un’architettura di cifratura simmetrica AES su FPGA Relatore: Prof. Fabrizio Ferrandi Correlatore: Ing. Marco Domenico Santambrogio Alain Vailati matr.#654434 Sommario • Presentazione dello standard AES; • Introduzione all’architettura; • l’FPGA; • Flusso del lavoro; • Implementazione dell’IP Core; • Test effettuati; • Conclusioni e sviluppi futuri; Alain Vailati 2 Presentazione dello standard AES Standard di crittografia introdotto dal NIST nel 2001 per sostituire il vecchio standard DES ormai “bucabile” in pochi secondi. • Caratteristiche dell’AES: • Algoritmo di crittografia simmetrica successore dell’DES; • Si basa sull’algoritmo Rijndael, un cifrario a blocchi, simmetrico; • Introduce l’utilizzo di chiavi e blocchi da 128, 192 e 256 bit; • Sfrutta essenzialmente due operazioni che operano sullo stato: • Sostituzione; • Permutazione; • Sostanzialmente costituito da due blocchi: • Blocco Key Expander; • Blocco Cipher; Alain Vailati 3 Presentazione dello standard AES 01011,01011 stato Operazione di permutazione Sostituzione RotWord() e ShiftRows() SubBytes() e SubWord() Alain Vailati 4 Flusso di crittazione Testo in chiaro Chiave Key Expansion Chiave espansa Cipher Alain Vailati Testo cifrato 5 Introduzione all’architettura: l’FPGA Field-Programmable Gate Array, FPGA, e un dispositivo costituito da una rete di blocchi logici configurabili connessi a una struttura a matrice. Alain Vailati 6 Introduzione all’architettura: il sistema dedicato Immagine pbd di EDK Alain Vailati 7 Flusso di lavoro • Traduzione delle specifiche in VHDL: • Definizione delle interfaccie e delle funzioni; • Descrizione dei due blocchi; • Verifica del funzionamento tramite testbench; • Adattamento del codice per il funzionamento sull’FPGA: • Interfacciamento con il bus; • Sintesi del codice: • Eventuali correzioni e quindi nuova verifica della funzionalità; • Verifica finale del lavoro. Alain Vailati 8 Implementazione IP Core: il VHDL Il sistema è stato inizialmente implementato tramite tre file: Util • Util: il package contentente le funzioni utilizzate e le costanti. • KeyExpander: realizza le funzionalità del blocco di espansione della chiave. KeyExpander Cipher • Cipher: descrive il blocco cifratore. Lo stile utilizzato per la descrizione è behavioural sfruttando i process. Alain Vailati 9 Implementazione dell’IP Core A causa della interpretazione dei cicli for come logica da eseguire in parallelo, l’utilizzo delle risorse è massimo. Utilizzo della macchina a stati: costituita da un segnale che memorizza lo stato in esecuzione. Il ciclo for lo si ottiene ritornando nuovamente allo stato appena eseguito. Alain Vailati 10 Implementazione dell’IP Core: interfacciamento al bus IP Core Kver pselect: interfaccia con bus. pselect BUS kver_core Due processi: write e read da registro. 0 4 8 write_toRegister C 10 read_formRegister 14 18 Registro di blocco Registro di chiave Registro di interrupt 1C 20 Alain Vailati 11 Test: il VHDL Per testare il VHDL si è utilizzata un generico testbench: • Simulazione di ogni singola funzione. • Simulazione di tutto l’architettura. Alain Vailati Con Modelsim se ne è simulato il funzionamento e si è osservato l’andamento dei segnali. 12 Implementazione dell’IP Core: sintesi e ottimizzazzioni Timing summary: --------------Timing errors: 0 Score: 0 Constraints cover 191893 paths, 0 nets, and 11906 connections Design statistics: Minimum period: 19.096ns (Maximum frequency: 52.367MHz)) Alain Vailati 13 Conclusioni e possibili sviluppi futuri • Possibili ottimizzazioni date da: • Flusso di calcolo non distribuito uniformemente sulla logica. • Utilizzo di un softcore. • Descrizione dell’architettura ad alto livello. • Soluzioni: • Realizzazione del blocco di espansione via software. • Descrivere l’algoritmo con un livello di astrazione più basso. Alain Vailati 14 Fine presentazione Alain Vailati 15 Introduzione allo standard AES Alain Vailati 16 Presentazione dello standard AES Alain Vailati 17 Alain Vailati 18 Presentazione dello standard AES stato Operazione di 0 1 0 1permutazione 1,01011 RotWord() e ShiftRows() Alain Vailati Sostituzione SubBytes() e SubWord() 19 Slice Switch Matrix CLB Alain Vailati 20