Post on 16-Apr-2017
transcript
Université de Provence
Design and development of areconfigurable cryptographic
co-processor
Daniele Fronte
Soutenance de thèse Marseille, 8 Juillet 2008
Superviseur industriel : Eric PayratDirecteur de thèse : Annie Pérez
2
Daniele Fronte ®
Sommaire1)1) IntroductionIntroduction
Cahier des charges et objectifsCahier des charges et objectifs Choix des algorithmesChoix des algorithmes
2)2) CoprocesseurCoprocesseur ArchitectureArchitecture Exécution de micro-instructionsExécution de micro-instructions
3)3) Résultats Résultats Validation FPGAValidation FPGA Synthèse ASICSynthèse ASIC
4)4) ConclusionsConclusions
3
Daniele Fronte ®
Cahier des charges du Coprocesseur1)1) Cryptographie Cryptographie
2)2) Multi-algorithmesMulti-algorithmes
3)3) Systèmes embarquésSystèmes embarqués
4)4) Sécurité Sécurité
5)5) Cellules standards d’AtmelCellules standards d’Atmel
6)6) Puces - Lecteurs de cartes à pucePuces - Lecteurs de cartes à puce
4
Daniele Fronte ®
Choix1)1) CryptographieCryptographie
Clé secrète?Clé secrète?
Clé publique?Clé publique?
2)2) Multi-algorithmesMulti-algorithmes Algorithmes standards/propriétairesAlgorithmes standards/propriétaires
Multi-algorithmesMulti-algorithmes
Quel degré de reconfigurabilité? Quel degré de reconfigurabilité?
FPGA ou pas de FPGA? FPGA ou pas de FPGA?
3)3) Systèmes embarquésSystèmes embarqués TailleTaille
PerformancesPerformances
4)4) Sécurité Sécurité Attaques latérales de canal: SPA, DPA…Attaques latérales de canal: SPA, DPA…
5
Daniele Fronte ®
DES, AES
Cryptographie à clé secrèteCryptographie à clé secrète
Alice Bob
DES DES-1
6
Daniele Fronte ®
DES
Taille du bloc données : 64 bits Taille initiale de la clé : 56 bits
1. Permutation Initiale2. 16 boucles :
Fonction F Ou exclusif
3. Permutation finale
Message en clair
L
Message encrypté
R
L0 R0
L16 R16
16 boucles
IP
FP
F
F
F
F
32 32
32 32
7
Daniele Fronte ®
Détails de DES
Fonction F :1. Expansion E2. Ou exclusif3. Sbox4. Permutation P
E
S1 S2 S3 S4 S5 S6 S7 S8
P
R Clé4832
48
32
32
8
Daniele Fronte ®
AES
Taille du blocs données : 128 bits Taille initiale de la clé : 128, 192, 256 bits
10 boucles, dont 8 avec :1. Sbox2. ShiftRows3. MixColumns4. AddRoundKeys
9
Daniele Fronte ®
Détails de AES
Transformations :1. Sbox2. ShiftRows3. MixColumns4. AddRoundKeys
10
Daniele Fronte ®
Détails de AES
Transformations :1. Sbox2. ShiftRows3. MixColumns4. AddRoundKeys
11
Daniele Fronte ®
Détails de AES
Transformations :1. Sbox2. ShiftRows3. MixColumns4. AddRoundKeys
12
Daniele Fronte ®
Détails de AES
Transformations :1. Sbox2. ShiftRows3. MixColumns4. AddRoundKeys
13
Daniele Fronte ®
SHA
Fonction de HachageFonction de Hachage
SHA
000
8AEFB06C 426E07A0 A671A1E2 588B4858D694A730
input
Hash sum
SHA
001
E193A01E CF8D30AD0AFFEFD3 32CE934E32FFCE72
SHA
010
47AB9979 443FB7ED1C193D06 773333BA7876094F
14
Daniele Fronte ®
Utilisation de SHA
Message SHA
517F3AB6
Condensé
Alice
Bob
Si oui, le message est authentique et intègre
Message, condensé
Message SHA
517F3AB6
Condensé
=?
15
Daniele Fronte ®
Détails de SHA-256 Taille du blocs données : (multiple de) 512 bits Taille du condensé : 256 bits
64 boucles : 8 variables: A, B, … , H 4 Fonctions: Ch, Maj, Σ0, Σ1
64 valeurs temporaires Wt
Ou exclusif
Ch
Σ1
Σ0
Maj
Wt
Kt
16
Daniele Fronte ®
Opérations requisesSbox Look up table 8 bitsShift Rows Rotation à droite 8 bitsMix Columns xtime, Ou exclusif 8 bitsAdd Round Key Ou exclusif 8 bits
Ou exclusif Ou exclusif 32 bitsRotation Rotation 1 bitIP, IP-1, PC1, PC2, E Permutations Bit à bitSBox Look up table Bit à bit
Ou exclusif Ou exclusif 32 bitsAddition Addition 32 bitsDécalage Décalage 32 bitsRotation Rotation 32 bits
AES
DES
SHA
17
Daniele Fronte ®
Coprocesseur Cryptographique Reconfigurable
krypton, encrypt, crypto etc. déjà utilisés !
Cryptographie en grecque : Kriptós = cacher Gràfo = écrire
Cryptographie en latin Celare = cacher
= Celator
18
Daniele Fronte ®
Architecture de Celator
19
Daniele Fronte ®
Réseaux systoliques de processeurs
PE PE PE PE
PE PE PE PE
PE PE PE PE
PE PE PE PE
Input data streams
Input data streams
Inpu
t dat
a st
ream
s
Inpu
t dat
a st
ream
s
Processing Elements : Grain fin Grain gros 1D, 2D, 3D
20
Daniele Fronte ®
Construisons un Processing Element array
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Systolic Processor Network Data matrix
21
Daniele Fronte ®
PE Array, Controller
PE PE PEPE
PE PE PEPE
PE PE PEPE
PE PE PEPE
Controller
Data Bus
Processing Element
Control Bus
22
Daniele Fronte ®
PE Array, Controller, CRAM
PEArray
CRAM
Controller Reconfigurabilité donnée par : Réseau systolique de
Processing Elements CRAM
23
Daniele Fronte ®
IF
MainMemory
ARM 7TDMI
PEArray
Controller
Celator
CRAM
Programs
and
Data
Vue générale du système
OtherPeripherals
AHB
24
Daniele Fronte ®
Interface Advanced High-performance Bus (AHB)
HSEL_RAM
HWRITE
HWDATA [31:0]
HRDATA [31:0]
HSEL_REG
HADDR [ 11: 0]
interruptStatus reg
Control reg
Split Address regData/controls
From/to CRAM
Data/controls
From/to Controller
CPU_clock Celator_clock
25
Daniele Fronte ®
PE array
PE00 PE01 PE02 PE03
PE10 PE11 PE12 PE13
PE20 PE21 PE22 PE23
PE30 PE31 PE32 PE33
PE array northern data I/O
PE array southern data I/O32-bits
32-bits
32-bits32-bits
PE array eastern data I/OPE a
rray
wes
tern
dat
a I/O
MUX_N
MUX_EMUX_W
MUX_S
26
Daniele Fronte ®
Exemple d’exécution
• Remplissage de la CRAM
• Lecture des micro-instructions
• AES Shift Rows
27
Système
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do ControllerPE in 32
Reg XReg Y
28
Remplissage de la CRAM
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do ControllerPE in 32
Reg XReg Y
29
Remplissage de la CRAM
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do ControllerPE in 32
Reg XReg Y
AES-1
30
Remplissage de la CRAM
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do ControllerPE in 32
Reg XReg Y
AES-1AES-2
31
Remplissage de la CRAM
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do ControllerPE in 32
Reg XReg Y
AES-2AES-3
AES-1
32
Remplissage de la CRAM
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do ControllerPE in 32
Reg XReg Y
AES-3AES-4
AES-1AES-2
33
CRAMAES-6
Remplissage de la CRAM
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do ControllerPE in 32
Reg XReg Y
AES-3AES-4
AES-1AES-2
AES-7
AES-5
DATA-3
DATA-1DATA-2
CRAM
34
Démarrage de Celator
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do ControllerPE in 32
Reg XReg Y
35
Lecture des micro-instructions
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do ControllerPE in 32
Reg XReg Y
AES-1
36
Chargement des données dans le PE array
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do Controller32PE in
Reg XReg Y
Data 1
37
Chargement des données dans le PE array
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do Controller32PE in
Reg XReg Y
Data 2
38
Chargement des données dans le PE array
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do Controller32PE in
Reg XReg Y
Data 3
39
Chargement des données dans le PE array
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do Controller32PE in
Reg XReg Y
Data 4
40
AES Shift Rows
41
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
PE in 32
Reg XReg Y
42
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do Controller32PE in
Reg XReg Y
43
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
32PE in
Reg XReg Y
44
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
32PE in
Reg XReg Y
45
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
PE in 32
Reg XReg Y
46
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do Controller32PE in
Reg XReg Y
47
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
32PE in
Reg XReg Y
48
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
32PE in
Reg XReg Y
49
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
PE in 32
Reg XReg Y
50
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
PE Array
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU
CRAM
32 Do Controller32PE in
Reg XReg Y
51
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
32PE in
Reg XReg Y
52
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
32PE in
Reg XReg Y
53
AES Shift Rows
CPU
32
interface
32
Di CPU Di Controller
Address Controller
12Address CPU 12
Con
trol
in
Con
trol
out
6 6
Stat
us in
stat
us o
ut
6 6
32
32
32 HRDATA
HWDATA
HADDR
Status reg
Control reg
Split Address reg
Controller
32
32
PE out
32Do CPU 32 Do Controller
CRAM
PE in 32
Reg XReg Y
54
Daniele Fronte ®
FPGA Validation
55
Daniele Fronte ®
FPGA ValidationCelator a été : Ecrit en RTL Verilog HDL Simulé par Mentor Modelsim Synthétisé (FPGA) par Mentor Precision RTL Placé et routé par Xilinx ISE Téléchargé dans une carte FPGA Xilinx Virtex II
Les tests sur FPGA ont été faits à l’aide de la suite ARM developper
56
Daniele Fronte ®
FPGA Validation
AESDESSHA
012345678901
ppm filejpg file
DCD 0x0123DCD 0x4567DCD 0x8901
dcd file
0x92670x23010x4805
926723014805
ppm file
Celator (FPGA)
jpg file
AES-1
DES-1
012345678901
ppm filejpg file
DCD 0x0123DCD 0x4567DCD 0x8901
dcd file Celator (FPGA)
0x45D5BA3
57
Daniele Fronte ®
AES (ECB et CBC modes) : Lena
AES-1
CBC mode
AES128 128
128 128
AES128 128
AES-1
128 128
ECB mode
58
Daniele Fronte ®
DES (ECB et CBC modes) : Lena
DES-1
CBC mode
DES64 64
64 64
DES64 64
DES-1
64 64
ECB mode
59
Daniele Fronte ®
SHA
Condensé :D0E309A7 88BE2E1B 255BEE42 B18B0675174E1E05 69063F30 D748EEF4 F236D21D
Lena originale
Lena: un pixel a été modifié
Condensé : 38F26C9A B2DC15A3 845E6AAD 6B94495C9747FE14 86E513D1 D2FD2CE7 BDA331C3
60
Daniele Fronte ®
Résultats ASIC
61
Daniele Fronte ®
Résultats de synthèse ASIC
Celator a été : Ecrit en RTL Verilog HDL Simulé par Mentor Modelsim Synthétisé (ASIC) par Synopsys Design Compiler Placé et routé par Cadence Encounter
62
Daniele Fronte ®
Algorithmes exécutés par Celator
0
1000
2000
3000
4000
5000
6000
Cycles
DES AES SHA
Keys schedulingEncryptionDecryptionHashing
63
Daniele Fronte ®
DES
0% reconf. FPGA 100% reconfigurable (HW sbox)x% reconf.
0
100
200
300
400
500
600
700
Atmel Celator Saquib Ebiham 1 Ebiham 2
Cycles Bitrate (Mbps)
64
Daniele Fronte ®
SHA
1
10
100
1000
10000
Rchaves Iahmad Cadence Celator
Cycles Bit-Rate
0% reconf. x% reconf.0% reconf. 0% reconf.
65
Daniele Fronte ®
Tailles et performances (pour AES)
0% reconf. 100% reconf.x% reconf. 100% reconf.Technologie 130nm
(*) Les mémoires ne sont pas comptées
1
10
100
1000
10000
Atmel HW Macro Celator µ ARM 7 TDMI µ AVR
Cycles Bit-rate (Mbps)
66
Daniele Fronte ®
Conclusions sur Celator
1)1) Coprocesseur multi-algorithmesCoprocesseur multi-algorithmes
2)2) Algorithmes Standards exécutés : AES, DES, SHA Algorithmes Standards exécutés : AES, DES, SHA
3)3) Possibilité d’implémenter des algorithmes propriétairesPossibilité d’implémenter des algorithmes propriétaires
4)4) Performances : Performances : AES 47 MbpsAES 47 Mbps
DES 24 MbpsDES 24 Mbps
SHA 5 MbpsSHA 5 Mbps
Améliorations récentes :
• AES + 20%
• DES + 20%
• SHA + 40%
Taille totale estimée : + 5%
67
Daniele Fronte ®
Prévision à court terme
1)1) Intégration dans la nouvelle génération de Intégration dans la nouvelle génération de lecteurs de cartes à puces lecteurs de cartes à puces
2)2) Marché cible : télé à la demandeMarché cible : télé à la demande
3)3) Certification de sécurité (EAL5+)Certification de sécurité (EAL5+)
4)4) Exécution d’autres algorithmesExécution d’autres algorithmes
68
Daniele Fronte ®
Celator Team Eric PAYRATAtmel
Annie PEREZIM2NP
Daniele FRONTEAtmel & IM2NP
Vincent MOLLETPolytech’Marseille
Celine HUYNH VAN THIENGPolytech’Marseille
®
69
Daniele Fronte ®
Merci pour votre attention