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
Scarica

ThesisVailati_2004_IT