Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Multiplieurs parallèles et pipelinés pour le calcul de couplage en caractéristiques 2 et 3 Nicolas Estibals Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur 6 novembre Performance du coprocesseur complet Conclusion ECOLE NORMALE SUPERIEURE DE LYON Introduction(i/ii) Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Calcul de couplage I Thématique : I I I Cryptographie sur courbes elliptiques (couplages) Arithmétique des corps finis Matériel I Étude des algorithmes de multiplication sur Fpm I Implémentation matérielle sur FPGA Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Introduction (ii/ii) I Travaux réalisés durant mon stage de Master 1 : I I I I au LCIS (Laboratory of Cryptography and Information Security) à l’université de Tsukuba, Japon sous l’encadrement de Jean-Luc Beuchat Travaux réalisés en collaboration avec : Jean-Luc Beuchat LCIS, Université de Tsukuba, Japon Nidia Cortez-Duarte CSD, IPN, Mexico, Mexique Jérémie Detrey Équipe CACAO, INRIA Nancy - Grand Est, France Eiji Okamoto LCIS, Université de Tsukuba, Japon Francisco CSD, IPN, Mexico, Mexique Rodríguez-Henríquez Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Plan de l’exposé Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Contexte Calcul de couplage Calcul de couplage Algorithmes de multiplication sur Fpm Architecture et implémentation du multiplieur Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Contexte Nicolas Estibals Contexte Calcul de couplage Calcul de couplage Algorithmes de multiplication sur F pm Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Cryptosystèmes à clef publique I RSA : I I I I Nicolas Estibals Rivest, Shamir et Adleman en 1977 Basé sur l’arithmétique des entiers modulo Problème associé : factorisation de grands entiers ECC : I I I I Elliptic Curve Cryptography Neal Koblitz et Victor Miller en 1985 Basé sur le groupe des points d’une courbe elliptique Problème associé : logarithme discret AES 80 bits 112 bits 128 bits 256 bits RSA 1024 bits 2048 bits 3072 bits 15360 bits ECC 160 bits 224 bits 256 bits 521 bits Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Couplage Nicolas Estibals I I I 1993 : Menezes, Okamoto et Vanstone, attaque contre le logarithme discret sur les courbes elliptiques Contexte 2000 : Joux, système cryptographique utilisant les couplages Architecture et implémentation du multiplieur Permet de nombreux protocoles cryptographiques originaux (signature basée sur l’identité, . . .) Calcul de couplage Algorithmes de multiplication sur Fp m Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Couplage Nicolas Estibals I I Couplage I 010110010110 · · · 1011 1993 : Menezes, Okamoto et Vanstone, attaque contre le logarithme discret sur les courbes elliptiques Contexte 2000 : Joux, système cryptographique utilisant les couplages Architecture et implémentation du multiplieur Permet de nombreux protocoles cryptographiques originaux (signature basée sur l’identité, . . .) Calcul de couplage Algorithmes de multiplication sur Fp m Performance du coprocesseur complet Conclusion Définition formelle d’un couplage Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Définition (Couplage) Un couplage est une application bilinéaire ê : G1 × G1 → G2 où G1 et G2 sont des groupes cycliques de même cardinal : Calcul de couplage Algorithmes de multiplication sur Fp m ∀P, Q ∈ G1 , ∀a, b ∈ Z, ê(aP, bQ) = ê(P, Q)ab Architecture et implémentation du multiplieur ∀P ∈ G1∗ , ê(P, P) 6= 1 Performance du coprocesseur complet G1 est un sous-groupe des points d’une courbe elliptique sur Fp m , G2 un sous-groupe d’une extension de Fpm . Conclusion Les couplages en matériel Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Calcul d’un couplage : Contexte I exigeant en ressources Calcul de couplage I arithmétique spécifique I processeurs généralistes non-adaptés (petite caractéristique) ⇒ implémentations logicielles peu performantes Algorithmes de multiplication sur Fp m Développer du matériel pour : I FPGA I systèmes embarqués (carte à puce, tag RFID, . . .) Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Motivations Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Coprocesseur calculant un couplage : I Architecture et algorithme adaptables : I I I Caractéristiques 2 et 3 Différents niveaux de sécurité Rapide Multiplieur performant : I Beaucoup de produits dans le calcul d’un couplage I Parallèle I Pipeliné Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Contexte Nicolas Estibals Contexte Calcul de couplage Calcul de couplage Algorithmes de multiplication sur F pm Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Algorithmes de couplage Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals I I Weil(1940), Tate(1966) : définitions mais calcul exponentiel Miller(1986) : premier algorithme efficace, une boucle avec : I I Additions, Frobenius sur Fpm (facile) Multiplications sur Fpm (difficile) I Nombreuses variations et améliorations par la suite I ηT meilleur moyen de calculer un couplage de Tate I Quel multiplieur pour quelles performances ? I Problème : s’assurer que le pipeline reste plein Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Un ordonnancement serré (caractéristique 2) F (0) ← F (−1) · G (0) Time t = 10 t = 11 t = 12 t = 13 t = 14 t = 15 t = 16 t = 17 Inputs of the pipelined Karatsuba-Ofman multiplier (−1) (−1) (0) (−1) (−1) (0) M0 u (1) f0 f1 a1 f2 f3 a2 (0) (0) (0) (0) (0) (0) M1 v (1) g0 g1 a0 g0 g1 a0 v Content of the pipeline (0) (0) (0) (0) 1st stage u (1) · v (1) m0 m1 m4 m2 (0) (0) (0) u (1) · v (1) m0 2nd stage m1 m4 (0) (0) 3rd stage u (1) · v (1) m0 m1 (0) u (1) · v (1) m0 4th stage 5th stage u (1) · v (1) (0) m5 (0) m3 (0) m2 (0) m4 (0) m1 Inputs of the 4-operand adder A0 A1 A2 A3 Output of the 4-operand adder Nicolas Estibals F (1) ← F (0) · G (1) (0) m3 (0) m2 (0) m4 (0) m1 (0) m0 t = 18 (0) u (2) (2) (0) m1 (0) m0 0 (−1) f3 (0) f0 t = 19 u t = 20 (0) t = 21 (1) (0) f0 f1 a1 f2 (1) g0 (1) g1 (1) a0 (1) g0 (2) ·v (2) (0) m5 (0) u (1) m0 (2) (2) ·v (0) m3 m5 (0) m2 (0) m4 (0) m3 (0) m2 (0) m4 (0) m0 (−1) f2 (−1) f3 (0) f1 u (1) m1 (1) m0 (2) (2) ·v (0) m5 (0) m3 (0) m3 (0) m2 (−1) f2 (−1) f0 (0) f2 u (1) m4 (1) m1 (1) m0 (2) (2) ·v Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur (0) m5 (0) m5 (0) m2 (−1) f3 (−1) f1 (0) f3 ⇒ Avec un multiplieur en 5 cycles le pipeline reste rempli Performance du coprocesseur complet Conclusion Design du coprocesseur (caractéristique 2) gj(i) c0 Nicolas Estibals c5 c1 Reset (1) c2 Enable c6 Reset (0) c7 Enable 01 10 c13 Contexte 1 0 Calcul de couplage c11 Algorithmes de multiplication sur Fp m v (i+1) u(i+1) 00 c4 c3 00 Multiplieurs parallèles pipelinés sur corps fini 01 10 Parallel multiplier c9 c8 c17 c16 (5 pipeline stages) c10 c18 Architecture et implémentation du multiplieur 1 0 c14 1 0 c12 c15 Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Contexte Nicolas Estibals Contexte Calcul de couplage Calcul de couplage Algorithmes de multiplication sur F pm Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion De Fpm à Fp [X ] Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte I Représentation des éléments de Fpm ⇒ Polynômes sur Fp modulo un polynôme irréductible I Représentation canonique ⇒ Polynôme de degré m − 1 au plus Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion De Fpm à Fp [X ] Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte I Représentation des éléments de Fpm ⇒ Polynômes sur Fp modulo un polynôme irréductible I Représentation canonique ⇒ Polynôme de degré m − 1 au plus I Multiplier deux polynômes de degré m − 1 donne un polynôme de degré 2m − 2 au plus Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion De Fpm à Fp [X ] Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte I Représentation des éléments de Fpm ⇒ Polynômes sur Fp modulo un polynôme irréductible I Représentation canonique ⇒ Polynôme de degré m − 1 au plus I Multiplier deux polynômes de degré m − 1 donne un polynôme de degré 2m − 2 au plus I Choix du polynôme irréductible déterminant I Polynôme le plus creux possible ⇒ Réduction modulaire plus simple Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Algorithme naïf Nicolas Estibals 1 2 1 0 0 2 I L’algorithme appris en primaire (paper-and-pencil, schoolbook) × 2 1 2 1 0 1 1 2 1 1 2 1 2 1 2 0 1 0 1 0 0 1 0 2 2 0 0 2 0 0 0 2 1 0 0 2 0 0 0 0 2 1 I Calculer le produit de tous les coefficients I Le sommer correctement (X 5 + 2X 4 + X 3 + 2) I Pas de retenue ×(2X 5 + X 4 + 2X 3 + X 2 + 1) I Complexité en O(m2 ) 2 2 0 0 1 0 1 2 2 0 2 = 2X 10 + 2X 9 + X 6 + X 4 + 2X 3 +2X 2 + 2 Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman Nicolas Estibals A B Contexte Calcul de couplage A·B Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman Approche divide-and-conquer AH A AL Nicolas Estibals BH B BL Contexte Calcul de couplage AH BH X 2n + (AHA BL ·+B AL BH )X n + AL BL Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman Approche divide-and-conquer AH A AL Nicolas Estibals BH B BL Contexte Calcul de couplage AH BH X 2n + (AHA BL ·+B AL BH )X n + AL BL ab0 + a0b = (a + a0)(b + b0) − ab − a0b0 Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion AH BH X 2n + ((AH + AL )(BH + BL ) − AH BH − AL BL )X n + AL BL Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman Approche divide-and-conquer AH A AL Nicolas Estibals BH B BL Contexte Calcul de couplage AH BH X 2n + (AHA BL ·+B AL BH )X n + AL BL ab0 + a0b = (a + a0)(b + b0) − ab − a0b0 Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion AH BH X 2n + ((AH + AL )(BH + BL ) − AH BH − AL BL )X n + AL BL Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman Approche divide-and-conquer AH A AL Nicolas Estibals BH B BL Contexte Calcul de couplage AH BH X 2n + (AHA BL ·+B AL BH )X n + AL BL ab0 + a0b = (a + a0)(b + b0) − ab − a0b0 Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion AH BH X 2n + ((AH + AL )(BH + BL ) − AH BH − AL BL )X n + AL BL Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman Approche divide-and-conquer AH A AL Nicolas Estibals BH B BL Contexte Calcul de couplage AH BH X 2n + (AHA BL ·+B AL BH )X n + AL BL ab0 + a0b = (a + a0)(b + b0) − ab − a0b0 Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion AH BH X 2n + ((AH + AL )(BH + BL ) − AH BH − AL BL )X n + AL BL A·B Complexité en Θ(n1.58 ) Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman sans recouvrement Nicolas Estibals A B Contexte Calcul de couplage Algorithmes de multiplication sur Fp m A·B Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman sans recouvrement Nicolas Estibals ... A ... B Contexte Calcul de couplage AO AE BO ·B (A0 BO X 2 + AE BA E ) + X(AO BE + AE BO ) BE Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman sans recouvrement Nicolas Estibals ... A ... B Contexte Calcul de couplage AO AE BO BE ·B (A0 BO X 2 + AE BA E ) + X(AO BE + AE BO ) Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion ab0 + a0b = (a + a0)(b + b0) − ab − a0b0 (A0 BO X 2 + AE BE ) + X((AO + AE )(BO + BE ) − AO BO − AE BE ) Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman sans recouvrement Nicolas Estibals ... A ... B Contexte Calcul de couplage AO AE BO BE ·B (A0 BO X 2 + AE BA E ) + X(AO BE + AE BO ) Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion ab0 + a0b = (a + a0)(b + b0) − ab − a0b0 (A0 BO X 2 + AE BE ) + X((AO + AE )(BO + BE ) − AO BO − AE BE ) Multiplieurs parallèles pipelinés sur corps fini Algorithme de Karatsuba-Offman sans recouvrement Nicolas Estibals ... A ... B Contexte Calcul de couplage AO AE BO BE ·B (A0 BO X 2 + AE BA E ) + X(AO BE + AE BO ) ... Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet ... Conclusion 0 0 0 ab + a b = (a +. a. . )(b + b0) − ab − a0b0 ... ... (A0 BO X 2 + AE BE ) + X((AO + AE )(BO + BE ) − AO BO − AE BE ) A·B D’autres variations Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Calcul de couplage I Karatsuba-Offman : découpe des opérandes en 3, 5, . . . parties Algorithmes de multiplication sur Fp m I Toom-Cook : schéma en évaluation-interpolation Architecture et implémentation du multiplieur I Formule de Montgomery, . . . I Encore à explorer Performance du coprocesseur complet Conclusion Une approche mixte Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Calcul de couplage I Utiliser différents algorithmes selon le degré ⇒ selon l’étage de récursion I L’algorithme naïf est le meilleur pour les petits degrés I Karatsuba est meilleur dès que m grandit I Et quand m grandit encore ? I Éviter l’ajout de zéros non significatifs Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Contexte Nicolas Estibals Contexte Calcul de couplage Calcul de couplage Algorithmes de multiplication sur F pm Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Architecture du multiplieur Registres d’entrée m m × m−1 Reducer Nicolas Estibals Contexte Multiplieur pipeliné Calcul de couplage Étage de pipeline optionnel Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur 2m − 1 m Performance du coprocesseur complet ... Conclusion ... m Registre de sortie Architecture d’un étage de récursion pour le multiplieur Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte × Calcul de couplage m m Algorithmes de multiplication sur Fp m Splitter n n n × n × Architecture et implémentation du multiplieur Performance du coprocesseur complet ... Conclusion 2n − 1 2n − 1 Recomposer 2m − 1 Un générateur d’architecture (i/ii) Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte I Besoin d’implémentation en caractéristique 2 et 3, pour différentes tailles I Tester différentes implémentations I Tester différents niveaux de pipeline I Tester différents compromis temps-surface ⇒ Générateur d’architecture Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Un générateur d’architecture (ii/ii) Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals I Générateur écrit en Python I Description des architectures en VHDL I Génère des tests I Choix de l’algorithme pour chaque étage de la récursion I Choix de la place des registres Outils pour l’implémentation rapide de nouveaux algorithmes : I I I I Modèle du VHDL, Représentation formelle des signaux (indépendante de la caractéristique), Traduction automatique des sommes, . . . Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Implémentation sur FPGA (Virtex II pro) Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals I F2 représenté par un bit I F3 représenté sur deux bits (borrow-save) Contexte Calcul de couplage Algorithmes de multiplication sur Fp m LUT Architecture et implémentation du multiplieur bascule Performance du coprocesseur complet Conclusion Sur FPGA, brique de base → LUT I Toutes les portes à 4 entrées 1 sortie I Même coût pour additionner 2,3 ou 4 éléments de F2 I Deux LUT pour sommer deux éléments de F3 Multiplieurs parallèles pipelinés sur corps fini Performance des architectures générées en caractéristique 2 Nicolas Estibals Algorithme Fp m F2239 Temps (ns) 7.477 Fréquence (MHz) 134 Surface (slices) 9028 Produit tempssurface (µs·slices) 67.5 K2,239 , K2,120 , K2,60 , K2,30 , K2,15 , Naïf K0 2,239 , K0 2,120 , 0 0 K 2,60 , K 2,30 , K0 2,15 , Naïf K2,239 , K2,120 , K2,60 , K2,30 , Naïf K3,239 , K2,80 , K2,40 , K2,20 , Naïf K0 3,239 , K2,80 , K2,40 , K2,20 , Naïf K2,313 , K2,157 , K2,79 , K2,40 , K2,20 , Naïf K0 3,313 , K2,105 , K2,53 , K2,27 , K2,14 , Naïf F2239 7.533 133 10897 82.1 F2239 6.783 147 11792 80.0 F2239 6.801 147 9237 62.8 F2239 6.798 147 9218 62.7 F2313 8.143 123 13708 112 F2313 8.882 113 14567 129 Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Pipeliné sur 5 étages Multiplieurs parallèles pipelinés sur corps fini Performance des architectures générées en caractéristique 3 Nicolas Estibals Contexte Algorithme Fp m F397 Temps (ns) 7.987 Fréquence (MHz) 125 Surface (slices) 10403 Produit tempssurface (µs·slices) 83,1 K2,97 , K2,49 , K2,25 , K2,13 , K2,7 , Naïf K0 2,97 , K0 2,49 , K0 2,25 , K0 2,13 , K0 2,7 , Naïf K0 3,97 , K0 2,33 , K0 2,17 , K0 2,9 , K0 2,5 , Naïf K0 2,167 , K0 2,84 , K0 2,42 , K0 2,21 , K0 2,11 , K0 2,6 , Naïf K0 3,167 , K0 2,56 , K0 2,28 , K0 2,14 , K0 2,7 , Naïf F397 7.705 130 10316 79.5 Algorithmes de multiplication sur Fp m F397 7.299 137 11357 82.9 Architecture et implémentation du multiplieur F3167 8.999 111 27099 244 F3167 10.05 100 26313 264 Calcul de couplage Performance du coprocesseur complet Conclusion Pipeliné sur 7 étages Multiplieurs parallèles pipelinés sur corps fini Comparaison avec d’autres multiplieurs de la littérature Nicolas Estibals Contexte Calcul de couplage Temps (ns) 74.15 Fréq. (MHz) 94 Surface (slices) 3561 A·T (µs·slices) 264 Cyclone II 221.5 149 700 155 Virtex II pro 7.705 130 10316 79.5 Algorithme Fpm FPGA G. Bertoni et al. (2003) J.-L. Beuchat et al. (2007) K0 2,97 , K0 2,49 , K0 2,25 , K0 2,13 , 0 K 2,7 , Naïf F397 Virtex II pro F397 F397 Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Contexte Nicolas Estibals Contexte Calcul de couplage Calcul de couplage Algorithmes de multiplication sur F pm Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Comparaison avec la littérature Nicolas Estibals Virtex II pro Temps (µs) 127 Surface (slices) 2736 A·T (ms·slices) 347 Virtex II pro Virtex II pro 41 5.2 25287 15799 1040 82.2 Algorithme Fp m FPGA Beuchat et al. (2007) Shu et al. (2006) Notre approche F2239 F2239 F2239 Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Comparaison avec la littérature Nicolas Estibals Virtex II pro Temps (µs) 127 Surface (slices) 2736 A·T (ms·slices) 347 F2239 F2239 F2313 Virtex II pro Virtex II pro Virtex II pro 41 5.2 124 25287 15799 41078 1040 82.2 5090 F2313 Virtex II pro 213 3731 794 F2313 Virtex II pro 7.8 22356 174 Algorithme Fp m FPGA Beuchat et al. (2007) Shu et al. (2006) Notre approche Ronan et al. (2006) Beuchat et al. (2008) Notre approche F2239 Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Comparaison avec la littérature Nicolas Estibals Virtex II pro Temps (µs) 127 Surface (slices) 2736 A·T (ms·slices) 347 F2239 F2239 F2313 Virtex II pro Virtex II pro Virtex II pro 41 5.2 124 25287 15799 41078 1040 82.2 5090 F2313 Virtex II pro 213 3731 794 F2313 F397 F397 F397 Virtex Virtex Virtex Virtex II pro 4 4 II pro 7.8 21 4.25 117 22356 74105 18360 2711 174 1560 78 317 F397 Virtex II pro 8.5 18360 156 Algorithme Fp m FPGA Beuchat et al. (2007) Shu et al. (2006) Notre approche Ronan et al. (2006) Beuchat et al. (2008) Notre approche Jiang (2007) Notre approche Beuchat et al. (2008) Notre approche F2239 Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Contexte Nicolas Estibals Contexte Calcul de couplage Calcul de couplage Algorithmes de multiplication sur F pm Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Conclusion (i/ii) Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Calcul de couplage I Faire le pari de la parallélisation I Adapter le calcul de couplage I Étude d’algorithmes de multiplication parallèle I Implémentation matérielle pipelinée I Générateur de multiplieurs en caractéristiques 2 et 3 Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Conclusion (ii/ii) Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Ces travaux m’ont beaucoup apporté : Calcul de couplage I Arithmétique des corps finis I Elliptic Curve Cryptography Algorithmes de multiplication sur Fp m I Conception d’architectures FPGA : Architecture et implémentation du multiplieur I I I programmation en VHDL outils de synthèse et de simulation I Génération de code I Sushi, tempura ! ! ! Performance du coprocesseur complet Conclusion Perspectives Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Calcul de couplage I D’autres algorithmes de multiplication : I I I Toom-Cook Formules de Montgomery ... I Étude sur des extensions plus grandes I Arithmétique en caractéristique p Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Merci pour votre attention Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Des Questions ? Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Algorithme ηT en caractéristique 2 Entrée: P = (xP , yP ), Q = (xQ , yQ ) ∈ E (F2m )[`]. Sortie: ηT (P, Q)M ∈ F∗24m . (0) (0) xP ← xP ; yP ← yP + δ̄ ; (0) (0) xQ ← xQ ; yQ ← yQ ; (0) (0) (0) (0) ← yP + yQ + β ; (0) (0) (0) g0 ← u · v + w (0) ; (0) (0) g1 ← u (0) + v (0) + α ; g2 (0) 2 xP ; w (0) ← v (0) + q q (0) (1) (0) xP ; yP ← yP ; 2 (0) (1) (0) 2 ← xQ ; yQ ← yQ ; xP ← (1) xQ (1) ← xP + α ; v (1) ← (1) (1) w (1) ← yP + yQ + β ; u (1) (1) xQ + α; (0) (0) (0) F (−1) ← g0 + g2 + g1 + 1 s + t; Choix de l’algorithme Contexte m−1 2 do (i) (i) (i) G ← g0 + g1 s + F (i) ← F (i−1) · G (i) ; for i = 0 to u (0) ← xP + α ; v (0) ← xQ + α ; (1) Nicolas Estibals Calcul de couplage t; Algorithmes de multiplication sur g0 ← u (i+1) · v (i+1) + w (i+1) ; Fp m (i+1) (i+1) (i+1) g1 ←u +v + α; Architecture et q q (i+2) (i+1) (i+2) (i+1) implémentation xP ← xP ; yP ← yP ; du multiplieur (i+2) (i+1) 2 (i+2) (i+1) 2 Performance du xQ ← xQ ; yQ ← yQ ; (i+1) (i+2) u (i+2) ← xP (i+2) w (i+2) ← yP end for (i+2) + α ; v (i+2) ← xQ (i+2) + yQ Return F ((m−1)/2) M ; +β; coprocesseur +complet α; Conclusion Algorithme ηT en caractéristique 3 Entrée: P = (xP , yP ), Q = (xQ , yQ ) ∈ E (F3m )[`]. Sortie: ηT (P, Q)M ∈ F∗36m . (0) (0) xP ← xp − νb ; yp ← −µbyP ; (0) (0) 2. xQ ← xQ ; yQ ← −λyQ ; 1. 3. (0) (0) (0) (0) 4. R (−1) ← 5. for i = 0 to (m − 1)/2 do 2 (i) (i) S (i) ← − t (i) + yP yQ σ − t (i) ρ − ρ2 ; R (i) ← R (i−1) · S (i) ; q q 3 3 (i+1) (i) (i+1) (i) xP ← xP ; yP ← yP ; 3 3 (i+1) (i) (i+1) (i) xQ ← xQ ; yQ ← yQ ; 6. 7. 8. 9. · t (0) − λyQ σ − λyP ; (i) (i) t (i+1) ← xP + xQ ; 11. end for M 12. Return R ((m−1)/2) ; 10. Choix de l’algorithme Nicolas Estibals Contexte Calcul de couplage t (0) ← xP + xQ ; (0) λyP Multiplieurs parallèles pipelinés sur corps fini Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Multiplieurs parallèles pipelinés sur corps fini Algorithmes de Karatsuba-Offman Nicolas Estibals Algorithme K2,m K3,m Séparation A → AL + X dm/2e AH B → BL + X dm/2e BH AM ← AH + AL BM ← BH + BL +X dm/3e A A → A0 X 2dm/3e A2 B → B0 X dm/3e B1 X 2dm/3e B2 AS0 ← A1 + A2 AS1 ← A0 + A2 AS2 ← A1 + A0 BS0 ← B1 + B2 BS1 ← B0 + B2 BS2 ← B1 + B0 1+ + + Appels récursifs pH ← AH ∗ BH pM ← AM ∗BM pL ← AL ∗ BL p0 p1 p2 p00 p10 p20 ← A0 ∗ B 0 ← A1 ∗ B 1 ← A2 ∗ B 2 ← AS0 ∗ BS0 ← AS1 ∗ BS1 ← AS2 ∗ BS2 Reconstruction S ← pH X 2dm/2e + (pM − pH − pL )X dm/2e + pL X 4dm/3e S ← p2 + (p00 − p1 − p2 )X 3dm/3e + (p10 − p0 + p1 − p2 )X 2dm/3e + (p20 − p1 − p0 )X dm/3e + p0 Contexte Calcul de couplage Algorithmes de multiplication sur Fp m Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion Algorithmes de Karatsuba-Offman sans recouvrement Multiplieurs parallèles pipelinés sur corps fini Nicolas Estibals Algorithme K0 2,(m) K0 3,(m) Séparation A → AE (X 2 ) + XAO (X 2 ) B → BE (X 2 ) + XBO (X 2 ) AM ← AO + AE BM ← BO + BE (X 3 ) A → A0 + XA1 (X 3 )+X 2 A2 (X 3 ) B → B0 (X 3 ) + XB1 (X 3 )+X 2 B2 (X 3 ) AS0 ← A1 + A2 AS1 ← A0 + A2 AS2 ← A1 + A0 BS0 ← B1 + B2 BS1 ← B0 + B2 BS2 ← B1 + B0 Appels récursifs pO ← AO ∗ BO pM ← AM ∗BM pE ← AE ∗ BE p0 p1 p2 p00 p10 p20 ← A0 ∗ B 0 ← A1 ∗ B 1 ← A2 ∗ B 2 ← AS0 ∗ BS0 ← AS1 ∗ BS1 ← AS2 ∗ BS2 Reconstruction S ← (pE + XpO )(X 2 ) + X (pM − pE − pO )(X 2 ) Contexte Calcul de couplage Algorithmes de multiplication sur Fp m S ← (p0 +X (p00 −p1 −p2 ))(X 3 ) + X (p20 − p0 − p1 + Xp2 )(X 3 ) + X 2 (p1 + p10 − p2 − p0 )(X 3 ) Architecture et implémentation du multiplieur Performance du coprocesseur complet Conclusion