politecnico di milano implementazione di un architettura sicura per laes 27 luglio 2006 milano motta...
TRANSCRIPT
Politecnico di MilanoPolitecnico di Milano
Implementazione di un Architettura Sicura per l’AES
27 Luglio 200627 Luglio 2006MilanoMilano
Motta Francesco 653571Nazzari Davide 652171
Relatore: Luca Breveglieri
- - 22 - -
SommarioSommario
ObiettiviAESArchitetturaRilevazione D’AttaccoOccupazione FPGARisultatiConclusioni e Sviluppi Futuri
- - 33 - -
ObiettiviObiettivi
Proporre l’implementazione di un’architettura per l’AES capace di riconfigurasi in caso di attacco esterno, riscontrato tramite l’utilizzo della rilevazione d’errore.
- - 44 - -
Cos’è l’AESCos’è l’AES
L’AES:Algortimo di crittografia a chiave simmetrica Algoritmo a blocchiChiavi da 128, 192 e 256 bitDal 2001 nuovo standard per la crittografia
Operazioni:SubByteShiftRow MixColumnAddRoundKey
s00 s01 s02 s03
s10 s11 s12 s13
s20 s21 s22 s23
s30 s31 s32 s33
Matrice STATE
Algoritmo di Codifica
- - 55 - -
AES: Le operazioniAES: Le operazioni
SubByteSubByte MixColumnMixColumn
ShiftRowShiftRow AddRoundKeyAddRoundKey
Matrice Substitution Box
ac(x) = (ac,r) · x3 + (ac,r) · x2 + (ac,r) · x + (ac,r)
c(x) = {03}h · x3 + {01}h · x2 + {01}h · x + {02}h
b(x) = [ac(x) · c(x)] mod (x4-1)
a2,2 = {68}h
b2,2 = {45}h
- - 66 - -
ControlUnit
DataUnit
KeyUnit
ArchitetturaArchitettura
- - 77 - -
Architettura DataUnit: due possibili Architettura DataUnit: due possibili implementazioniimplementazioni
Sono necessari 64 cicli per i 10 round. In ogni round 5 cicli servono per eseguire SubByte e ShiftRow. Utilizza il 43% in meno di spazio.
Per eseguire i 10 round sono necessari 34 cicli di clock. 3 cicli per ogni round: uno per la SubByte, uno per la ShiftRow e uno per MixColumn e AddRoundKey.
DataUnit ad Alte Prestazioni DataUnit Standard
- - 88 - -
AttacchiAttacchi
Ad oggi non è stato ancora violato Esistono nuovi tipi di attacco potenzialmente pericolosiESISTONO NUOVI TIPI DI ATTACCHI POTENZIALMENTE PERICOLOSI
Optical Attack
- - 99 - -
Rilevazione d’attacchiRilevazione d’attacchi
Gli attacchi si traducono in errori in (de)codificaCome rilevarli:
Metodi EDC (Error Detecting Code)
p00 p01 p02 p03
p10 p11 p12 p13
p20 p21 p22 p23
p30 p31 p32 p33
s00 s01 s02 s03
s10 s11 s12 s13
s20 s21 s22 s23
s30 s31 s32 s33
Matrice STATE
Per alcune operazioni è molto facileAddRoundKeyShiftRow
Altre invece richiedono funzioni appositamente studiatePer la SubByte si crea una nuova unità la Parity_SBoxIn uscita dalla MixColumn la parità dipende dai byte della stessa colonna e dal bit di parità:
Matrice Delle Parità
Parità Predetta
Operazione AESPredittore
Comparatore
Input
Calcolo Parità
Parità
- - 1010 - -
Parità come UsarlaParità come Usarla
Il metodo è molto efficace ed efficiente Poco spazio occupato Copertura totale (100% nel caso di un solo bit errato
o un numero dispari di bit, 99.9% nel caso di errore multiplo pari)
Uno volta rilevato l’attacco si possono utilizzare stratagemmi per proseguire in modo corretto la crittografia
Nel caso di ASIC si possono usare DataCell di Backup Costose in termini di spazio
Con le FPGA è possibile sfruttare la riconfigurazione
- - 1111 - -
RiconfigurazioneRiconfigurazione
Riconfigurazione TotaleEquivale a “resettare” il dispositivo e riprogrammarlo
Riconfigurazione ParzialeRiconfiguro il solo componente soggetto all’attacco (la Dataunit)
- - 1212 - -
Riconfigurazione ParzialeRiconfigurazione Parziale
- - 1313 - -
Occupazione su FPGA xc3s200: le Occupazione su FPGA xc3s200: le DataUnit a confrontoDataUnit a confronto
Alte Prestazioni
Architettura Standard
Total # Slice Registers(384
0)855(22%) 696(18%)
# of 4 input LUTs(3,840)
4627(120%) 2953(76%)
# of occupied Slices(1920)
2319(120%) 1699(88%)
Total # of 4 input
LUTs(3,840)4627(120%) 2957(77%)
# of bonded IOBs(141)
233(165%) 202(143%)
Architettura Standard
Total # Slice Registers(3840)
827(21%)
# of 4 input LUTs(3,840)
3254(84%)
# of occupied Slices(1920)
1893(98%)
Total # of 4 input LUTs(3,840)
3254(84%)
# of bonded IOBs(141)
106(75%)
- - 1414 - -
Riconfigurazione Parziale Riconfigurazione Parziale Occupazione sulla xcv1000Occupazione sulla xcv1000
Parte fissa Parte riconfigurabile
Total # Slice Registers(24.576)
447(1%) 564(1%)
# of 4 input LUTs(24.576) 827(3%) 3.944(16%)
# of occupied Slices(12.288)
574(4%) 2.054(16%)
Total # of 4 input LUTs(3,840)
836(3%)3.944(16%)
# of bonded IOBs(404) 361(89%) 223(55%)
- - 1515 - -
Risultati ottenutiRisultati ottenuti
La riconfigurazione parziale implica un ulteriore modifica della struttura
attualmente tra parte fissa e parte riconfigurabile sono necessari ben 227 bit di comunicazione, spezzarli in blocchi e inviarli uno alla volta porterebbe a diminuire le prestazioni
E’ necessario quindi utilizzare la riconfigurazione totale
- - 1616 - -
Futuri sviluppiFuturi sviluppi
L’utilizzo delle FPGA per la realizzazione di architetture sicure è comunque conveniente perché farlo su ASIC o circuiti dedicati comporta un notevole costo in termini di spazio occupato
Implementare una nuova DataUnit da 192 e 256 bitStudiare una nuova Architettura che permetta di ridurre il numero di segnali