PhD Defence

Post on 16-Apr-2017

749 views 0 download

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