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
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
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.
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
DES, AES Alice Bob DES DES-1 Cryptographie à clé secrète Alice Bob DES DES-1
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é
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
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
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
Détails de AES Transformations : Sbox ShiftRows MixColumns AddRoundKeys
Détails de AES Transformations : Sbox ShiftRows MixColumns AddRoundKeys
Détails de AES Transformations : Sbox ShiftRows MixColumns AddRoundKeys
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 47AB9979 443FB7ED 1C193D06 773333BA 7876094F Hash sum
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é
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
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
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
Architecture de Celator
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
Construisons un Processing Element array Data matrix Systolic Processor Network
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
PE Array, Controller, CRAM Reconfigurabilité donnée par : Réseau systolique de Processing Elements CRAM PE Array CRAM
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
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
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
Exemple d’exécution Remplissage de la CRAM Lecture des micro-instructions AES Shift Rows
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
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
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
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
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
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
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
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
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
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
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
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
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
AES Shift Rows
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
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
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
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
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
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
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
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
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
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
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
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
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
FPGA Validation
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
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
AES (ECB et CBC modes) : Lena 128 128 ECB mode AES-1 128 128 AES 128 128 CBC mode AES-1 128 128
DES (ECB et CBC modes) : Lena 64 64 ECB mode DES-1 64 64 DES 64 64 CBC mode DES-1 64 64
SHA Lena originale Condensé : D0E309A7 88BE2E1B 255BEE42 B18B0675 174E1E05 69063F30 D748EEF4 F236D21D Lena: un pixel a été modifié Condensé : 38F26C9A B2DC15A3 845E6AAD 6B94495C 9747FE14 86E513D1 D2FD2CE7 BDA331C3
Résultats ASIC
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
Algorithmes exécutés par Celator
100% reconfigurable (HW sbox) DES 0% reconf. x% reconf. FPGA 100% reconfigurable (HW sbox)
SHA Celator est 0% reconf. 0% reconf. 0% reconf. x% reconf.
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
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 + 20% DES + 20% SHA + 40% Taille totale estimée : + 5%
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
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
Merci pour votre attention