La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Design and development of a reconfigurable cryptographic co-processor

Présentations similaires


Présentation au sujet: "Design and development of a reconfigurable cryptographic co-processor"— Transcription de la présentation:

1 Design and development of a reconfigurable cryptographic co-processor
Daniele Fronte Directeur de thèse : Annie Pérez Superviseur industriel : Eric Payrat Soutenance de thèse Marseille, 8 Juillet 2008

2 Sommaire Introduction Coprocesseur Résultats Conclusions
Cahier des charges et objectifs Choix des algorithmes Coprocesseur Architecture Exécution de micro-instructions Résultats Validation FPGA Synthèse ASIC Conclusions

3 Cahier des charges du Coprocesseur
Cryptographie Multi-algorithmes Systèmes embarqués Sécurité Cellules standards d’Atmel Puces - Lecteurs de cartes à puce Notre objectif est la réalisation d’un coprocesseur pour des produits sécurisés. Le cahier des charges de ce coprocesseur reflet les besoins du labo de recherche IM2NP et de la société Atmel en terme de produits sécurisés. Les produits sécurisés permettent la confidentialité de certaines transactions de données sensibles, et assurent l’authenticité et l’intégrité d’un message. Par conséquent ils doivent exécuter des fonctions cryptographiques. Il est aussi demandé que ces produits sécurisés, et donc notre coprocesseur aussi, soient reconfigurables, car ils doivent fournir des services et des fonctions flexibles. Le coprocesseur doit être intégré dans un système embarqué. Il doit être protégé contre les attaques. Il doit être réalisé par des cellules standards d’Atmel. Les marchés cible sont les puces et les lecteurs de cartes à puce.

4 Choix Cryptographie Multi-algorithmes Systèmes embarqués Sécurité
Clé secrète? Clé publique? Multi-algorithmes Algorithmes standards/propriétaires Quel degré de reconfigurabilité? FPGA ou pas de FPGA? Systèmes embarqués Taille Performances Sécurité Attaques latérales de canal: SPA, DPA… Que l’utilisateur puisse modifier les standards *** Clés différentes Parler des autres circuits : HW / SW qui seront développés dans la discussion des résultats

5 DES, AES Alice Bob DES DES-1
Cryptographie à clé secrète Alice Bob DES DES-1

6 DES Taille du bloc données : 64 bits
Message en clair L 32 32 R IP L0 R0 Taille du bloc données : 64 bits Taille initiale de la clé : 56 bits Permutation Initiale 16 boucles : Fonction F Ou exclusif Permutation finale F F 16 boucles F Le mot est divisé entre la partie gauche L (left) et la partie droite R (right) L est laissé telle quelle R est transformé par la fonction F (détaillée plus tard) Ces 2 résultats sont combinés par un ou exclusif F L16 32 32 R16 FP Message encrypté

7 Détails de DES Fonction F : Expansion E Ou exclusif Sbox Permutation P
32 48 E 48 S1 S2 S3 S4 S5 S6 S7 S8 32 P 32

8 AES Taille du blocs données : 128 bits
Taille initiale de la clé : 128, 192, 256 bits 10 boucles, dont 8 avec : Sbox ShiftRows MixColumns AddRoundKeys La 1ère et la 2ème boucle sont différentes

9 Détails de AES Transformations : Sbox ShiftRows MixColumns
AddRoundKeys Les données sous format matricielle. Chaque élément de la matrice contient 1 octet du mot d’état S

10 Détails de AES Transformations : Sbox ShiftRows MixColumns
AddRoundKeys

11 Détails de AES Transformations : Sbox ShiftRows MixColumns
AddRoundKeys

12 Détails de AES Transformations : Sbox ShiftRows MixColumns
AddRoundKeys

13 SHA SHA SHA SHA Fonction de Hachage input 000 001 010 Hash sum
J’ai pris un exemple très simple de 3 message qui ne varient que d’un bit 000, 001, 010 En appliquant SHA on obtient les 3 condensés sur fond rouge complètement différents les uns des autres. Il se trouve que dans ces cas particuliers le condensé est plus long que le message initial. A quoi sert un fonction de hachage? 8AEFB06C 426E07A0 A671A1E2 588B4858 D694A730 E193A01E CF8D30AD 0AFFEFD3 32CE934E 32FFCE72 47AB FB7ED 1C193D BA F Hash sum

14 Utilisation de SHA =? Alice Bob
517F3AB6 Alice Condensé Message SHA Si oui, le message est authentique et intègre =? Message, condensé 517F3AB6 Bob Message SHA Condensé

15 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 Wt Ch Kt Σ1 Maj Σ0

16 Opérations requises AES DES SHA Sbox Look up table 8 bits Shift Rows
Rotation à droite Mix Columns xtime, Ou exclusif Add Round Key Ou exclusif AES Ou exclusif 32 bits Rotation 1 bit IP, IP-1, PC1, PC2, E Permutations Bit à bit SBox Look up table DES Dans la 3eme colonne, le format des opérandes de l’algo Rajouter un transparent pour montrer l’implémentation dans Celator Ce trasparent va apres l’introduction, dans la description des algo au debut. D’ou on pose la problematique. Riprendere questa slide dopo aver presentato l’architettura In questa slide, parlare degli algoritmi, dimensione della chiave etc. Ou exclusif 32 bits Addition Décalage Rotation SHA

17 Coprocesseur Cryptographique Reconfigurable
= Celator krypton, encrypt, crypto etc.  déjà utilisés ! Cryptographie en grecque : Kriptós = cacher Gràfo = écrire Cryptographie en latin Celare = cacher Le rôle de Celator est d’encrypter, de cacher l’information contenue dans un message

18 Architecture de Celator

19 Réseaux systoliques de processeurs
Input data streams Processing Elements : Grain fin Grain gros 1D, 2D, 3D PE PE PE PE PE PE PE PE Input data streams Input data streams PE PE PE PE Les réseaux de PE peuvent à 1D, 2D, 3D… Plan superposés PE PE PE PE Input data streams

20 Construisons un Processing Element array
Data matrix Systolic Processor Network

21 PE Array, Controller PE PE PE PE Data Bus Control Bus PE PE PE PE PE
Processing Element Voici l’architecture que nous avons choisi: un réseau 2D à maille carrée, de 4x4 PE, travaillant chacun sur des données de 8 bits, commandé par un contrôleur que nous allons détailler par la suite et qui est connecté aussi à une RAM appelée CRAM (pour Celator RAM) où sont stockées les micro-instructions… PE PE PE PE Controller

22 PE Array, Controller, CRAM
Reconfigurabilité donnée par : Réseau systolique de Processing Elements CRAM PE Array CRAM

23 Vue générale du système
Celator ARM 7 TDMI AHB CRAM PE Array Programs and Data IF Controller Contient CPU+Celator, qui a besoin d’un CPU, c’est pour cette raison que c’est un coprocesseur Main Memory Other Peripherals

24 Interface Advanced High-performance Bus (AHB)
HSEL_RAM HWRITE HWDATA [31:0] HRDATA [31:0] HSEL_REG HADDR [ 11: 0] Split Address reg Data/controls From/to CRAM From/to Controller Control reg Status reg interrupt L’interface IF contient Qui peuvent fonctionner à des fréquences f différentes CPU_clock Celator_clock

25 PE array PE array northern data I/O MUX_N PE array western data I/O
32-bits MUX_N PE00 PE01 PE02 PE03 PE10 PE11 PE12 PE13 PE array western data I/O 32-bits 32-bits PE array eastern data I/O PE20 PE21 PE22 PE23 Granularité 8-bits: Directement utilisable pour des data 8-bits Facile pour les data 32-bits (PE concaténées), et 1-bit PE30 PE31 PE32 PE33 MUX_E MUX_W MUX_S 32-bits PE array southern data I/O

26 Exemple d’exécution Remplissage de la CRAM
Lecture des micro-instructions AES Shift Rows

27 Système interface CPU CRAM PE Array Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

28 Remplissage de la CRAM interface CPU CRAM PE Array Controller
Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

29 Remplissage de la CRAM interface CPU CRAM PE Array Controller
Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA AES-1 Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

30 Remplissage de la CRAM interface CPU CRAM PE Array Controller
Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA AES-2 AES-1 Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

31 Remplissage de la CRAM interface CPU CRAM PE Array Controller
Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller AES-3 32 HRDATA AES-2 AES-1 Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

32 Remplissage de la CRAM interface CPU CRAM PE Array Controller
Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller AES-4 AES-3 32 HRDATA AES-2 AES-1 Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

33 Remplissage de la CRAM interface CPU CRAM CRAM PE Array Controller
Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM DATA-3 HADDR DATA-2 12 Address CPU 12 DATA-1 AES-7 AES-6 Address Controller CRAM AES-5 AES-4 AES-3 32 HRDATA AES-2 AES-1 Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

34 Démarrage de Celator interface CPU CRAM PE Array Controller
Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array A partir de là Celator fonctionne de façon autonome status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

35 Lecture des micro-instructions
interface Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA AES-1 Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

36 Chargement des données dans le PE array
interface Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Data 1 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

37 Chargement des données dans le PE array
interface Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Data 2 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

38 Chargement des données dans le PE array
interface Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR Data 3 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

39 Chargement des données dans le PE array
interface Di Controller Di CPU CPU 32 32 Split Address reg 32 Data 4 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

40 AES Shift Rows

41 AES Shift Rows interface CPU CRAM Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

42 AES Shift Rows interface CPU CRAM PE Array Controller Di Controller
Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

43 AES Shift Rows interface CPU CRAM Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

44 AES Shift Rows interface CPU CRAM Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

45 AES Shift Rows interface CPU CRAM Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

46 AES Shift Rows interface CPU CRAM PE Array Controller Di Controller
Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

47 AES Shift Rows interface CPU CRAM Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

48 AES Shift Rows interface CPU CRAM Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

49 AES Shift Rows interface CPU CRAM Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

50 AES Shift Rows interface CPU CRAM PE Array Controller Di Controller
Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 PE Array status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

51 AES Shift Rows interface CPU CRAM Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

52 AES Shift Rows interface CPU CRAM Controller Di Controller Di CPU 32
Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

53 AES Shift Rows interface CPU CRAM Controller
Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller 32 HRDATA Do CPU 32 32 Control reg Do Controller HWDATA 32 PE in 32 Status reg 32 6 6 6 6 S’il faut une LUT, la table est dans la CRAM status out Status in Control out Control in PE out 32 Controller Reg Y Reg X

54 FPGA Validation

55 FPGA Validation Celator 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 FPGA Validation 0x45D5BA3 jpg file ppm file dcd file Celator (FPGA)
0123 4567 8901 DCD 0x0123 DCD 0x4567 DCD 0x8901 0x9267 0x2301 0x4805 AES DES SHA jpg file ppm file 9267 2301 4805 0x45D5BA3 jpg file ppm file dcd file Celator (FPGA) 0123 4567 8901 DCD 0x0123 DCD 0x4567 DCD 0x8901 AES-1 DES-1

57 AES (ECB et CBC modes) : Lena
128 128 ECB mode AES-1 128 128 AES 128 128 CBC mode AES-1 128 128

58 DES (ECB et CBC modes) : Lena
64 64 ECB mode DES-1 64 64 DES 64 64 CBC mode DES-1 64 64

59 SHA Lena originale Condensé : D0E309A7 88BE2E1B 255BEE42 B18B0675
174E1E F30 D748EEF4 F236D21D Lena: un pixel a été modifié Condensé : 38F26C9A B2DC15A3 845E6AAD 6B94495C 9747FE14 86E513D1 D2FD2CE7 BDA331C3

60 Résultats ASIC

61 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 Algorithmes exécutés par Celator

63 100% reconfigurable (HW sbox)
DES 0% reconf. x% reconf. FPGA 100% reconfigurable (HW sbox)

64 SHA Celator est 0% reconf. 0% reconf. 0% reconf. x% reconf.

65 Tailles et performances (pour AES)
L’exécution de Celator demande 0% reconf. x% reconf. 100% reconf. 100% reconf. Technologie 130nm (*) Les mémoires ne sont pas comptées

66 Conclusions sur Celator
Coprocesseur multi-algorithmes Algorithmes Standards exécutés : AES, DES, SHA Possibilité d’implémenter des algorithmes propriétaires Performances : AES 47 Mbps DES 24 Mbps SHA 5 Mbps Améliorations récentes : AES % DES % SHA % Taille totale estimée : + 5%

67 Prévision à court terme
Intégration dans la nouvelle génération de lecteurs de cartes à puces Marché cible : télé à la demande Certification de sécurité (EAL5+) Exécution d’autres algorithmes

68 Celator Team Eric PAYRAT Annie PEREZ Daniele FRONTE
Atmel Annie PEREZ IM2NP Daniele FRONTE Atmel & IM2NP Celine HUYNH VAN THIENG Polytech’Marseille Vincent MOLLET Polytech’Marseille

69 Merci pour votre attention


Télécharger ppt "Design and development of a reconfigurable cryptographic co-processor"

Présentations similaires


Annonces Google