Politecnico di Milano
Realizzazione di un componente per un
sistema dedicato:
codifica AES a 512 bit
Relatore: Prof. Fabrizio Ferrandi
Correlatore: Ing. Marco Domenico Santambrogio
Davide Pavoni
mat. 654619
Roberto Palazzo
mat. 653365
Sommario
• Cenni alla crittografia
• AES e applicazioni
• FPGA e sistemi dedicati
• Implementazione dell’IP Core
• Risultati Sperimentali
• Conclusioni e sviluppi futuri
22/07/2004
Davide Pavoni, Roberto Palazzo
2
Crittografia
• Algoritmi di Crittografia: tecniche di codifica delle informazioni
che permettono di renderle comprensibili solamente a chi conosce
la chiave.
Mittente
Testo
in chiaro
Cifratura
Chiave [K1]
Destinatario
Testo
cifrato
Decifratura
Testo in
chiaro
Chiave [K2]
• Simmetrici: stessa chiave segreta per cifrare e decifrare (K1=K2)
• Asimmetrici: due chiavi correlate, una pubblica e una privata
(K1≠K2)
22/07/2004
Davide Pavoni, Roberto Palazzo
3
Advanced Encryption Standard
• 1997 - National Institute of Standards and Technology (NIST)
indice una gara pubblica per sostituire il Data Encryption
Standard (DES).
• Requisiti:
• Cifrario a blocchi.
• Lunghezza della chiave tra 128 e 256 bit.
• Efficienza dell’implementazione hardware e software.
• Libero da brevetti.
• 2001 – NIST pubblica la specifica dell’algoritmo di Advanced
Encryption Standard (AES).
• Diventerà probabilmente lo standard de-facto mondiale per
proteggere le comunicazioni nei prossimi decenni.
22/07/2004
Davide Pavoni, Roberto Palazzo
4
Perché usare le FPGA
• L’aspetto negativo delle implementazioni hardware
tradizionali (ASIC) è la mancanza di flessibilità
• I dispositivi hardware programmabili come le Field
Programmable Gate Arrays (FPGA) sono una alternativa
interessante per l’implementazione di algoritmi crittografici
• Potenziali vantaggi utilizzo FPGA:
 Cambiare il tipo di algoritmo durante il funzionamento (es.
negoziazione SSL)
 Upgrade degli algoritmi (es. 802.11i)
 Compromesso tra velocità delle ASIC e implementazioni
software
 Efficienza di costo
22/07/2004
Davide Pavoni, Roberto Palazzo
5
FPGA
• Le FPGA sono dispositivi
hardware le cui funzioni non
sono fissate e possono essere
programmate dall’utente
Linee connessione
orizzontali
CLB
• Architettura ad array
simmetrici - Xilinx
• CLB – elementi funzionali
per costruire la logica
• IOB – interfacce tra i pin
esterni e logica interna
• Interconnessioni
Matrice
interruttori
Linee connessione Linee connessione
verticali
22/07/2004
Davide Pavoni, Roberto Palazzo
6
AES
• Caratteristiche
• Cifrario a blocchi a chiave simmetrica
 Blocchi da 128 bit
 Chiave da 128, 196, 256 bit
• le operazioni internamente sono eseguite su una matrice di 4x4
byte detta Stato
• Lavora iterando gli stessi passi (round)
• Ogni round (tranne l’ultimo) è la composizione di passi elementari
• SubBytes ( sostituzione mediante S-box )
• ShiftRows ( permutazione )
• MixColumns ( sostituzione che usa aritmetica su GF(28) )
• AddRound key ( XOR con chiave espansa )
22/07/2004
Davide Pavoni, Roberto Palazzo
7
AES: Espansione della chiave
KeyExpansion ( byte key[16], word w[44] )
begin
word temp
i=0
while (i<4)
w[i]=word ( key[4*i], key[4*i+1], key[4*i+2], key[4*i+3] )
i=i+1
end while
while (i<44)
temp=w[i-1]
if (i mod 4=0)
temp=SubWord ( RotWord (temp) ) xor Rcon [i/4]
w[i]=w[i-4] xor temp
i=i+1
end while
end
22/07/2004
Davide Pavoni, Roberto Palazzo
8
AES: Algoritmo
22/07/2004
Davide Pavoni, Roberto Palazzo
9
AES: SubBytes()
• SubBytes()
22/07/2004
Davide Pavoni, Roberto Palazzo
10
AES: ShiftRows()
• ShiftRows()
22/07/2004
Davide Pavoni, Roberto Palazzo
11
AES: MixColumns()
• MixColumns()
22/07/2004
Davide Pavoni, Roberto Palazzo
12
AES: AddRoundKey()
• AddRoundKey()
22/07/2004
Davide Pavoni, Roberto Palazzo
13
Macchina a stati AES 512
22/07/2004
Davide Pavoni, Roberto Palazzo
14
Architettura hardware
Bus PLB
(Core Connect)
PowerPC
AES512
Interrupt
Controller
22/07/2004
Davide Pavoni, Roberto Palazzo
15
Scelte Implementative
• La FPGA a disposizione non è in grado di contenere
completamente il componente che effettua la cifratura AES
a 128 bit.
 Soluzione mista hardware / software.
Suddivisione dell’algoritmo AES in 2 parti:
• Espansione della chiave eseguita dal PowerPC.
• Operazione più lenta, ma una tantum.
• Cifratura effettuata in hardware
• in ingresso di blocchi di 128 bit di dati e
chiave espansa.
22/07/2004
Davide Pavoni, Roberto Palazzo
16
Struttura IP Core
22/07/2004
Davide Pavoni, Roberto Palazzo
17
Memory Map
• Registri
user logic
• Registri IPIF
22/07/2004
Davide Pavoni, Roberto Palazzo
18
Driver
• Per utilizzare l’IP Core all’interno dell’architettura hardware è
necessario scrivere del software che lo gestisce.
• L’IP Core è di tipo slave-only quindi è il PowerPc che effettua
operazioni di I/O puntando agli indirizzi di memoria che
corrispondono ai registri dell’IP Core secondo la memory map.
• E’ stato creato un driver di basso livello in linguaggio C:
• Scrittura dei dati in ingresso e chiave espansa.
• Lettura dei dati in uscita.
• Abilitare / disabilitare sollevazione interrupt.
• Routine gestione interrupt (con contatore numero chiamate).
22/07/2004
Davide Pavoni, Roberto Palazzo
19
Risultati Sperimentali
•
Verifica del funzionamento in laboratorio di Micro Architetture
•
Il PowerPC esegue un software di test, appositamente scritto per
testare l’IP Core, articolato in 2 fasi:
1. Interrupt disabilitati per valutare correttezza risultati.
2. Interrupt abilitati per cifrare uno stream di dati e valutazione
prestazioni.
•
Risultati sperimentali:
•
Frequenza di clock del sistema = 100 MHz
Velocità misurata AES512:
14.6 Megabit/s
NOTA: comprende overhead dovuti a lettura / scrittura dei registri.
Dalle simulazioni si è verificato che l’Aes Core lavora a
67 Megabit/s
22/07/2004
Davide Pavoni, Roberto Palazzo
20
Risultati Sperimentali (2)
• Confronto con un’ implementazione software
• Realizzato un software in C tale da implementare
esattamente lo stesso algoritmo implementato in hardware
dall’IP Core.
• Piattaforma di Test: Pentium4 - 2.6Ghz - 512 Mb Ram - Win XP
Velocità Misurata: 878 Kilobit/s
22/07/2004
Davide Pavoni, Roberto Palazzo
21
Conclusioni e Sviluppi futuri
• Disponendo di una FPGA più capiente è possibile incrementare le
prestazioni inserendo nell’AES Core 16 ROM contenenti le SBox.
• SubBytes() eseguita in 1 ciclo di clock contro i 16 attuali.
• La velocità dell’AES Core incrementa di circa 5 volte.
• Prestazione realizzazione Hardware vs. Software
• Utilizzo dell’IP Core come coprocessore crittografico.
• FPGA rappresentano un buon compromesso in termini di
costi/prestazioni.
• La riconfigurabilità delle FPGA favorisce la transizione verso il
nuovo standard AES.
22/07/2004
Davide Pavoni, Roberto Palazzo
22
FINE PRESENTAZIONE
22/07/2004
Davide Pavoni, Roberto Palazzo
23
AES: Cifratura
Blocco in ingresso
Cipher ( byte in[16], byte out[16], word w[44] )
begin
byte state[4, 4]
Blocco in uscita
Chiave espansa
state=in
AddRoundKey ( state, w[0, 3] )
for round=1 step 1 to 9
SubBytes ( state )
ShiftRows ( state )
MixColumns ( state )
AddRoundKey ( state, w[4*round, 4*(round+1)-1] )
end for
SubBytes ( state )
ShiftRows ( state )
AddRoundKey ( state, w[4*round, 4*(round+1)-1] )
out=state
end
22/07/2004
Davide Pavoni, Roberto Palazzo
24
IPIF
• IPIF (IP Interface): interfaccia con il bus PLB che si occupa della
gestione di tutti i vari segnali e protocolli necessari per la
comunicazione.
• L’IPIF ha un’interfaccia con la AES512_userlogic detta IPIC
(IP InterConnect).
• Registri
• MIR (Module Identification Register)
• SW RST (Software Reset Register)
• GIE (Global Interrupt Enable Register)
• IER (IP Interrupt Enable Register)
Gestione Interrupt
• ISR (IP Interrupt Status Register)
22/07/2004
Davide Pavoni, Roberto Palazzo
25
AES512_userlogic
• Realizza le funzioni vere e
proprie dell’IP Core.
• Comunicazione con l’IPIF
attraverso i segnali
dell’interfaccia IPIC.
• Registri
• 16 da 32 bit che contengono i
512 bit in ingresso.
• 16 da 32 bit che contengono i
512 bit in uscita.
• 44 da 32 bit che contengono la
chiave espansa.
• Macchina a stati che comanda
l’AES Core per cifrare i 512 bit di
dati.
22/07/2004
Davide Pavoni, Roberto Palazzo
26
AES Core
• Unità funzionale di base che effettua la cifratura di blocchi di 128 bit di
dati fornendo in ingresso direttamente la chiave espansa.
• La chiave espansa w_in è di 1408 bit (44 x 32 bit)
22/07/2004
Davide Pavoni, Roberto Palazzo
27
Scarica

Diapositiva 1