700 likes | 835 Views
Design and development of a reconfigurable cryptographic co-processor. Daniele Fronte. Superviseur industriel : Eric Payrat. Directeur de thèse : Annie Pérez. Soutenance de thèse Marseille, 8 Juillet 2008. Sommaire. Introduction Cahier des charges et objectifs Choix des algorithmes
E N D
Design and development of areconfigurable cryptographic co-processor Daniele Fronte Superviseur industriel : Eric Payrat Directeur de thèse : Annie Pérez Soutenance de thèse Marseille, 8 Juillet 2008
Sommaire • Introduction • 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
Choix • Cryptographie • Clé secrète? • Clé publique? • Multi-algorithmes • Algorithmes standards/propriétaires • Multi-algorithmes • Quel degré de reconfigurabilité? • FPGA ou pas de FPGA? • Systèmes embarqués • Taille • Performances • Sécurité • Attaques latérales de canal: SPA, DPA…
DES DES, AES • Cryptographie à clé secrète Alice Bob DES-1
DES Message en clair L R 32 32 • Taille du bloc données : 64 bits • Taille initiale de la clé : 56 bits • Permutation Initiale • 16 boucles : • Fonction F • Ou exclusif • Permutation finale IP L0 R0 F F 16 boucles F F L16 R16 32 32 FP Message encrypté
Détails de DES Fonction F : • Expansion E • Ou exclusif • Sbox • Permutation P R Clé 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
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
Détails de AES Transformations : • Sbox • ShiftRows • MixColumns • AddRoundKeys
SHA • Fonction de Hachage input 000 001 010 SHA SHA SHA 8AEFB06C 426E07A0 A671A1E2 588B4858 D694A730 E193A01E CF8D30AD 0AFFEFD3 32CE934E 32FFCE72 47AB9979 443FB7ED 1C193D06 773333BA 7876094F Hash sum
Utilisation de SHA Message 517F3AB6 Alice Condensé 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
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
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 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 PE PE PE Processing Element PE PE PE PE Controller
PE Array, Controller, CRAM Reconfigurabilité donnée par : • Réseau systolique de Processing Elements • CRAM Controller PE Array CRAM
Vue générale du système Celator ARM 7 TDMI AHB CRAM PE Array Programs and Data IF Controller 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 Data/controls From/to Controller Control reg Status reg interrupt CPU_clock Celator_clock
PE array northern data I/O PE array 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 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 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 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 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 Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller AES-2 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 Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller AES-3 AES-2 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 Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM HADDR 12 Address CPU 12 Address Controller AES-4 AES-3 AES-2 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 Di Controller Di CPU CPU 32 32 Split Address reg 32 CRAM DATA-3 HADDR 12 DATA-2 Address CPU 12 DATA-1 AES-7 Address Controller AES-6 AES-5 CRAM AES-4 AES-3 AES-2 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
Démarrage de Celator interface 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
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 12 Data 3 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 CRAM Data 4 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 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 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X
AES Shift Rows interface 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 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 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X
AES Shift Rows interface 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 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X
AES Shift Rows interface 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 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X
AES Shift Rows interface 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 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 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X
AES Shift Rows interface 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 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X
AES Shift Rows interface 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 status out Status in Control out Control in PE out 32 Controller Reg Y Reg X
AES Shift Rows interface 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