Multiplieurs parallèles et pipelinés pour le calcul de

publicité
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
Téléchargement