Op´ erations sur les corps finis
Journ´ ee S´ ecurit´ e Num´ erique du GDR SoC-SiP
JC Bajard - LIP6 UPMC (Paris 6) France
16 Nov. 2011
Contexte
I
Koblitz en 1987 [Kob87] introduit l’utilisation des courbes elliptiques sur des corps finis en cryptographie.
I
Groupe des Points d’une courbe ` a coordonn´ ees dans un corps finis
I
Addition : Intersection d’une droite passant par deux points de la courbe avec la courbe
I
Op´ erations sur les corps finis : addition, multiplication,
division.
Contenu
Repr´ esentations sur les Corps Finis La multiplication dans GF (p )
Retour sur la multiplication de deux entiers R´ eduction modulaire sur les entiers
Pour des moduli particuliers Algorithmes g´en´eraux
Multiplication dans GF (2
n) Approches polynomiales Approches li´ ees aux bases Inversion dans un corps fini
Another Approach: Residue Systems Introduction to Residue Systems Modular reduction in Residue Systems Applications to Cryptography
Annexes
R´ ef´ erences
Repr´ esentations sur les Corps Finis
Des g´ en´ eralit´ es [LN85]
Un corps fini F (+, ×) est un ensemble fini F muni de deux lois internes
I
F (+) est un groupe ab´ elien
I
F (+, ×) est un anneau o` u tout ´ el´ ement (sauf 0 pour ×) admet un inverse
Les corps finis les plus ´ el´ ementaires sont ceux dont le cardinal est un nombre premier p.
Le repr´ esentant le plus connu est le corps Z /p Z Z /p Z = {0, 1, 2, ..., p − 1}
Le calcul sur ces corps utilise l’arithm´ etique modulaire classique.
Extension de corps finis
Les autres corps finis sont de la forme GF (p
m) avec p premier. p est la caract´ eristique, si u ∈ GF (p
m) alors p × u = 0.
I
soit l’ensemble des restes des polynˆ omes ` a coefficients dans GF (p) modulo un polynˆ ome irr´ eductible P (X ) de degr´ e m (op´ erations modulaires sur les polynˆ omes)
I
soit l’ensemble des puissances d’un ´ el´ ement primitif g , GF (p
m) = {0, g
0, g
1, ..., g
pm−2}
I
soit l’ensemble des combinaisons lin´ eaires d’une base : canonique {1, α, α
2, ..., α
m−1} ou normale {α, α
p, α
p2..., α
pm−1}
o` u α racine du polynˆ ome irr´ eductible
Un ´ el´ ement de GF (p
m) est donc souvent repr´ esent´ e par un
m−uplet d’´ el´ ements de GF (p).
Exemple dans GF (4)
(AttentionGF(4)6=Z/4Z)I
Repr´ esentation polynomiale ` a coefficient dans GF (2) : 0, 1, X , 1 + X .
I
L’addition se fait simplement sur GF (2) : 1 + (1 + X ) = X .
I
Par contre pour le produit nous devons faire une r´ eduction li´ ee au polynˆ ome irr´ eductible utilis´ e pour la repr´ esentation des
´
el´ ements du corps.
I X2+X+ 1 est irr´eductible surGF(2), GF(4) peut ˆetre assimil´e `aGF(2)[X]/X2+X+ 1.
I multiplication modulo le polynˆome irr´eductibleX2+X+ 1, exemple :
X∗(1 +X) = (X+X2) mod (X2+X+ 1) = 1
I Le choix du polynˆome irr´eductible n’est donc pas sans cons´equence sur la complexit´e de la multiplication.
La multiplication dans GF (p)
Multiplication de deux entiers
Produit de deux nombres
via les polynˆomes
I
Soient A =
k−1
X
i=0
a
iβ
iet B =
k−1
X
i=0
b
iβ
ideux nombres en base β
I
Soient A(X ) =
k−1
X
i=0
a
iX
iet B (X ) =
k−1
X
i=0
b
iX
iles polynˆ omes associ´ es
I
Calcul du produit P = A × B :
1. Evaluation du produit polynomial : P(X) =A(X)×B(X) 2. Evaluation de la valeur: P(β) =A(β)×B(β)
Produit de deux nombres
via les polynˆomes : remarques
I
A l’´ etape 1, les coefficients p
iobtenus sont inf´ erieurs ` a k × β
2I
A l’´ etape 2, le calcul de P (β) revient ` a r´ eduire les p
ien
propageant des retenues.
Repr´ esentation d’un polynˆ ome
I
Un polynˆ ome de degr´ e k − 1 peut ˆ etre d´ efini par la donn´ ee :
I desesk coefficientsai
A(X) =
k−1
X
i=0
aiXi
I deses valeurs en k points diff´erentsei
pour,i= 0,k−1 : A(ei) =
k−1
X
j=0
ajeij
lesei sont choisis suivant deux crit`eres : un calcul simple des A(ei) et une taille respectable desA(ei).
Produit de polynˆ omes
d´efinis par leurs coefficients
I
P (X ) = A(X ) × B (X ) = (
k−1
X
i=0
a
iX
i) × (
k−1
X
i=0
b
iX
i) =
2k−2
X
i=0
p
iX
i
p0
p1 ... pk−1
... p2k−3 p2k−2
=
a0 0 0 . . . 0
a1 a0 0 . . . 0
... ... . . . ...
ak−1 ak−2 ak−3 . . . a0
0 ak−1 ak−2 . . . a1
... ... . . . ...
0 0 . . . 0 ak−1
b0 b1 ... bk−2
bk−1
Soit k
2produits.
Produit de polynˆ omes
d´efinis par leurs valeurs en des points
I
P (X ) = A(X ) × B (X ) = (
k−1
X
i=0
a
iX
i) × (
k−1
X
i=0
b
iX
i) =
2k−2
X
i=0
p
iX
iest ´ evalu´ e en 2k − 1 diff´ erents points :
P (e
0) = A(e
0) × B(e
0) P (e
1) = A(e
1) × B(e
1)
.. .
P (e
2k−3) = A(e
2k−3) × B(e
2k−3) P (e
2k−2) = A(e
2k−2) × B(e
2k−2)
Soit 2k − 1 produits.
Reconstruction des coefficients
M´ethode de Lagrange
I
La construction passe par une somme de k polynˆ omes tels que le i−i` eme vaut P (e
i) en e
iet 0 pour tous les autres e
j, j 6= i .
P (X ) =
k−1
X
i=0
P (e
i) Q
j6=i
(X − e
j) Q
j6=i
(e
i− e
j)
Reconstruction des coefficients
M´ethode de Newton
I
L’id´ ee est d’´ ecrire le polynˆ ome comme dans un syst` eme de num´ eration en augmentant le degr´ e des polynˆ omes somm´ es.
P(X) =
k−1
X
i=0
ˆ pi
i−1
Y
j=0
(X−ej) = ˆp0+ ˆp1(X−e0) + ˆp2(X−e0)(X−e1) +. . .
ˆ p0=p00 ˆ
p1= (p10 −pˆ0)/(e1−e0) . . .
ˆ
pi = (. . .(pi0−pˆ0)/(ei−e0)−pˆ1)/(ei−e1)−. . .−pˆi−1)/(ei−ei−1) . . .
ˆ
pk−1= (. . .(p0k−1−pˆ0)/(ek−1−e0)−pˆ1)/(ek−1−e1). . .−pˆk−2)/(ek−1−ek−2)
O` u, p
0i= P(e
i)
Produit de deux nombres
Algorithme Karatsuba (1)
I
Choix des points e
0= 0, e
1= −1 et e
2= ∞
I
Nous avons :
A=k−1
X
i=0
aiβi = (
k/2−1
X
i=0
ak/2+iβi)βk/2+
k./2−1
X
i=0
aiβi=A1βk/2+A0
I
Point de vue polynomial : A(X ) = A
1X + A
0
A(0) = A
0A(−1) = A
0− A
1A(∞) = lim
X→∞
A
1X
Produit de deux nombres
Algorithme Karatsuba (2)
I
Valeurs du polynˆ ome produit
P(0) =A0B0
P(−1) = (A0−A1)(B0−B1) P(∞) = lim
X→∞A1B1X2
I
Application de Newton
ˆ
p0=P(0) =A0B0 ˆ
p1= (P(−1)−pˆ0)/(−1) = (A1−A0)(B0−B1) +A0B0 ˆ
p∞= lim
X→∞((P(∞)−pˆ0)/X −pˆ1)/(X+ 1) =A1B1
Produit de deux nombres
Algorithme Karatsuba (3)
I
Reconstruction
P(X) = pˆ0+ ˆp1X + ˆp∞X (X+ 1)
= A0B0
+((A1−A0)(B0−B1) +A0B0+A1B1)X +A1B1X2
I
Calcul
P(βk/2) = A0B0
+((A1−A0)(B0−B1) +A0B0+A1B1)βk/2 +A1B1βk
Produit de deux nombres
Algorithme Karatsuba (4) : Complexit´e
I
On note K (k ) le nombre d’op´ erations ´ el´ ementaires
I
On a la formule de r´ ecurrence K (k) = 3K (k/2) + αk en supposant les additions lin´ eaires
I
Nous obtenons, K (k) = O(k
log2(3))
Produit de deux nombres
Algorithme Toom Cook (1)
L’approche de Karatsuba se g´ en´ eralise, par exemple avec une d´ ecoupe en trois et donc 5 points diff´ erents
I
Choix des points e
0= 0, e
1= −1 , e
2= 1, e
3= 2 et e
4= ∞
I
Nous avons :
A=A2β2k/3+A1βk/3+A0
I
Point de vue polynomial : A(X ) = A
2X
2+ A
1X + A
0
A(0) = A
0A(−1) = A
2− A
1+ A
0A(1) = A
2+ A
1+ A
0A(2) = 4A
2+ 2A
1+ A
0A(∞) = lim
X→∞
A
2X
2Produit de deux nombres
Algorithme Toom Cook (2)
I
Comme pour Karatsuba nous appliquons Newton...
ˆ
p0=P(0) =A0B0 ˆ
p1= (P(−1)−pˆ0)/(−1) ˆ
p2= ((P(1)−pˆ0)/(1)−pˆ1)/(2) ˆ
p3= (((P(2)−pˆ0)/(2)−pˆ1)/(3)−pˆ2)/(1) ˆ
p4= lim
X→∞((((P(∞)−pˆ0)/X−pˆ1)/(X+ 1)−pˆ2)/(X−1)−pˆ3)/(X−2)
=A2B2
I
Ici nous remarquons une division par 3 qui montre un peu les limites de cette approche lorsque l’on g´ en´ eralise
I
Reconstruction en calculant P (β
k/3) avec :
P(X) = ˆp0+X( ˆp1+ (X+ 1)( ˆp2+ (X−1)( ˆp3+ ˆp4(X−2))))
Produit de deux nombres
Algorithme Toom Cook (3)
I
On note T
3(k) le nombre d’op´ erations ´ el´ ementaires
I
On a la formule de r´ ecurrence T
3(k ) = 5T
3(k/3) + αk en supposant les additions lin´ eaires
I
Nous obtenons, T
3(k) = O(k
log3(5))
Produit de deux nombres
Algorithme Toom Cook (4)
I
On g´ en´ eralise en d´ ecoupant en n
I
On note T
n(k ) le nombre d’op´ erations ´ el´ ementaires
I
On a la formule de r´ ecurrence T
n(k ) = (2n − 1)T
n(k /n) + αk en supposant les additions lin´ eaires
I
Nous obtenons, T
n(k ) = O(k
logn(2n−1))
I
Nous pouvons donc dire que la multiplication peut se faire
pour tout en O(k
1+)
Transform´ ee de Fourier (Annexe 118)
Complexit´e Algorithme FFT
I
Les points consid´ er´ es sont des racines nieme de l’unit´e : ω
n= 1, ω racine primitive.
I
Soit F (n) le nombre d’op´ erations ´ el´ ementaires pour une FFT de dimension n
I
Nous avons la r´ ecurrence : F (n) = 2F (n/2) + αn
I
D’o` u, F (n) = O(n log
2n)
La multiplication dans GF (p)
R´ eduction modulaire sur les entiers
R´ eduction modulaire
pfix´e
Deux options :
I
p est choisi de fa¸con ` a rendre la r´ eduction simple p = β
n− ξ avec ξ < β
n/2I
p quelconque, choisi sur d’autres crit` eres, algorithmes
g´ en´ eraux
R´ eduction modulaire
p=βn−ξ avec 0≤ξ < βn/2etξ2≤βn−2βn/2+ 1
Nous avons C = A × B ≤ (p − 1)
2I
On peut ´ ecrire C = C
1β
n+ C
0I doncC=C1βn+C0≤(p−1)2=βn(βn−2(ξ+ 1)) + (ξ+ 1)2
I comme 0≤ξ < βn/2 nous avonsC1≤βn−2 et C0≤βn−1
I
Premi` ere passe de r´ eduction : C ≡ C
1ξ + C
0(mod p)
I C0 =C1ξ+C0≤(βn−2)ξ+ (βn−1)≤βnξ+ (βn−1)
I doncC0=C10βn+C00 avecC10 ≤ξetC00 ≤βn−1
I
Seconde passe de r´ eduction : C
0≡ C
10ξ + C
00(mod p)
I C” =C10ξ+C00 ≤ξ2+ (βn−1) =βn+ (ξ2−1)
I nous avonsC” +ξ < βn+p
I
Derni` ere passe : si C ” + ξ ≥ β
nalors R = C ” + ξ − β
nsinon
R = C ”
R´ eduction modulaire
p=βn−ξ avec 0≤ξ < βn/2
I
Cette r´ eduction effectue deux produits par ξ, pour r´ eduire le coˆ ut nous avons deux options
I Choisirξtr`es petit par exempleξ < β pour avoir des produits chiffre×nombre
I Choisirξtr`es creux (peu de chiffres non nul et ´egaux `a un) pour remplacer les produits par des additions et des d´ecalages
I
On peut prendre ξ > β
n/2mais dans ce cas le nombre de passes de r´ eduction augmente
I
On peut inclure une partie de la r´ eduction dans le produit
initial
R´ eduction modulaire
pfix´e de la formeβn−1
Le produit du point de vue matriciel le produit C = A × B s’´ ecrit :
1, β, β2, . . . β2n−2
a0 0 0 . . . 0
a1 a0 0 . . . 0
..
. ... . . . ...
an−1 an−2 an−3 . . . a0
0 an−1 an−2 . . . a1
..
. ... . . . ...
0 0 . . . 0 an−1
b0
b1
.. . bn−2
bn−1
C≡ 1, β, β2, . . . βn−1 .M.
b0
b1
.. . bn−2
bn−1
(modp)
avec β
n≡ 1 (mod p)
R´ eduction modulaire
pfix´e de la formeβn−1
Le produit du point de vue matriciel avec β
n≡ 1 (mod p), on a :
M=
a0 0 . . . 0 0
a1 a0 . . . 0 0
... ... . . . ...
an−2 an−3 . . . a0 0
an−1 an−2 . . . a1 a0
+
0 an−1 an−2 . . . a1
0 0 an−1 . . . a2
... ... . . . ...
0 0 . . . 0 an−1
0 0 0 . . . 0
M =
a0 an−1 an−2 . . . a1
a1 a0 an−1 . . . a2
... ... . . . ...
an−2 an−3 . . . a0 an−1
an−1 an−2 . . . a1 a0
R´ eduction modulaire
pfix´e de la formeβn−1
I
Le point de vue matricielle pour
p = β
n− 1 = (β − 1)(1 + ... + β
n−1), donne un r´ esultat C < p × n × (β − 1) pour le coˆ ut d’un produit en O (n
2)
I
On reprend la r´ eduction faite avec ξ = 1
I nous avonsC =C1βn+C0avecC1<n(β−1) etC0≤βn−1
I on poseC0 =C1+C0< βn+n(β−1)−1
I siC0+ 1≥βnalorsR=C0+ 1−βnsinonR=C0
R´ eduction modulaire
pfix´e de la formeβn−βt−1
Le produit du point de vue matriciel avec β
n≡ β
t+ 1 (mod p) Si t < n/2 alors la construction de M revient ` a une addition de deux matrices.
M=
a0 an−1 an−2 . . . a1
a1 a0 an−1 . . . a2
.. .
..
. . . .
.. . ..
. ..
. . . .
.. .
an−2 an−3 . . . a0 an−1
an−1 an−2 . . . a1 a0
+
0 0 0 . . . 0
.. .
..
. . . .
.. .
0 0 0 . . . 0
0 an−1 an−2 . . . a1
.. .
..
. . . .
.. .
0 . . . an−1 . . . an−t
+
0 . . . an−1 . . . an−t+1
.. .
..
. . . .
.. .
0 0 . . . 0 an−1
0 0 0 . . . 0
.. .
..
. . . .
.. .
0 0 0 . . . 0
+
0 0 0 . . . 0
.. .
..
. . . .
.. .
0 0 0 . . . 0
0 . . . an−1 . . . an−t+1
.. .
..
. . . .
.. .
0 0 . . . 0 an−1
R´ eduction modulaire
pfix´e de la formeβn−βt−1
I
L’approche matricielle pour p = β
n− β
t− 1, donne un r´ esultat C < 2p × n(β − 1)
2pour le coˆ ut d’un produit en O(n
2)
I
On reprend la r´ eduction faite avec ξ = β
t+ 1
I C=C1βn+C0avecC1<2n(β−1)2 etC0≤βn−1
I on poseC0 =C1(βt+ 1) +C0< βn+n(β−1)2(βt+ 1)−1
I siC0+ 1 +βt ≥βnalorsR=C0+ 1 +βt−βnsinonR=C0
Ces approches s’inspirent de celles d´evelopp´ees pour GF(2k)dans la Th`ese de E. Mastrovito ”VLSI Architectures for Computation in Galois Fields.” PhD thesis, Linkoping University, Dept. Electr. Eng., 1991.
La multiplication dans GF (p)
R´ eduction modulaire sur les entiers
Cas plus g´ en´ eral
R´ eduction modulaire
Algorithme de P.Barrett
Nous d´ esirons r´ eduire A modulo P en ´ evaluant une approximation du quotient.
I
Conditions : β
n−1≤ P < β
net A < P
2< β
2nI
On peut ´ ecrire que : A − P ×
AP= 0 Ainsi, β
u+vA − P ×
βn+uP×
βn−vA= 0
I βu+vA−P× bβn+uP c × b A βn−vc= P
bβn+uP cf( A βn−v) +b A
βn−vcf(βn+uP ) +f( A βn−1)f(βP2n)
<P(βu+1+ (βn+v−1) + 1) o`uf(.) la partie fractionnaire
SIu≥n+ 1 etv≥2 alors (βu+1+βn+v)/βu+v<1
I
On en d´ eduit que A − P ×
$
bβ2n+1P c×b A
βn−2c βn+3
%
< 2P
R´ eduction modulaire
Algorithme de P.Barrett
Barrett(A P )
Entr´ ees β
n−1≤ P < β
net A < P
2< β
2nSortie , R = A (mod P) et Q = b
APc Corps Q ←
$
bβ2n+1P c×b A
βn−2c βn+3
%
R ← A − Q × P
Si R ≥ P Alors R ← R − P et Q ← Q + 1
Complexit´ e : 2 produits sur n + 1 chiffres
R´ eduction modulaire
Algorithme de P. Montgomery
Nous d´ esirons r´ eduire A modulo P .
I
Conditions : β
n−1≤ P < β
net A < P β
nI
Le principe de cette approche est d’ajouter ` a A un multiple de P tel que le r´ esultat soit un multiple de β
nI
Ainsi, ce r´ esultat est divisible par β
nqui repr´ esente dans la base β un simple d´ ecalage.
I
Cet algorithme donne en sortie A × β
−nmod P
R´ eduction modulaire
Algorithme de P. Montgomery
Montgomery(A P)
Entr´ ees β
n−1≤ P < β
net A < P β
n< β
2nSortie , R = A × β
−nmod P
Corps Q ← A × | − P
−1|
βnmod β
nR ← (A + Q × P)
R est un multiple deβnR ← R ÷ β
n la division parβnest un simple d´ecalage, on a(R<2P)Si R ≥ P Alors R ← R − P
(op´eration facultative)Complexit´ e : 2 produits sur n chiffres (en fait deux demi-produits)
R´ eduction modulaire
Notation de P. Montgomery
I
Pour ´ eviter l’accumulation de facteurs β
−nmod P , nous utilisons la notation : A e = A × β
nmod P
I
Elle s’obtient par A e = Montgomery(A × |β
2n|
P, P)
I
Elle est stable pour l’addition et la multiplication r´ eduite par Montgomery :
A e + B e = A ^ + B et AB f = Montgomery( A e × B e , P )
I
Retour ` a la notation standard : A = Montgomery( A, e P )
I
C’est l’algorithme le plus utilis´ e en cryptographie.
Multiplication modulaire interlac´ ee
Algorithme de P. Montgomery
Montgomery(A , B, P )
Entr´ ees β
n−1≤ P < β
net AB < P β
n< β
2net
B=n−1
X
i=0
biβi
Sortie , R = A × B × β
−nmod P avec (R < 2P ) Corps R ← 0
Pour i = 0 ` a i = n − 1 faire R ← (R + b
i× A)
q
i← r
0× | − p
−10|
βmod β R ← (R + q
i× P )
multiple deβR ← R ÷ β
on a(R<2P)en fin de boucleSi R ≥ P Alors R ← R − P
(op´eration facultative)Multiplication modulaire interlac´ ee en base deux
Algorithme de P. Montgomery
Montgomery(A , B, P )
Entr´ ees 2
n−1≤ P < 2
net AB < 2
nP < 2
2net
B=n−1
X
i=0
bi2i
Sortie , R = A × B × 2
−nmod P Corps R ← 0
Pour i = 0 ` a i = n − 1 faire R ← (R + b
i• A)
q
i← r
0 En fait| −p0−1|2= 1si P impairR ← (R + q
i• P )
multiple de2R ← R >> 1
on a(R<2P)en fin de boucleSi R ≥ P Alors R ← R − P
(op´eration facultative)Multiplication modulaire Bipartite
M. Kaihara et N. Takagi 2007 IEEETC
I
Cet algorithme est bas´ e sur la remarque suivante :
On d´ efinit ∗ comme : X ∗ Y = (X × Y ) × R
−1mod P On d´ ecompose Y = Y
h× R + Y
l par exemple R=βn/2donc X ∗ Y = (X × Y
hmod P + X × Y
l× R
−1mod P) mod P
I
X × Y
hmod P est calcul´ e via par exemple Barret.
I
X × Y
l× R
−1mod P est calcul´ e via Montgomery.
I
Ces deux calculs peuvent ˆ etre faits en parall` ele.
Multiplication dans GF (2
n)
La multiplication dans GF (2
m)
Dans la pratique la grande majorit´ e des implantations utilisent des corps de la forme GF (2
m) o` u les op´ erations sur le corps de base GF (2) se r´ eduisent ` a des “et” et des “ou exclusif”.
Le produit sur un corps fini comprend une r´ eduction modulaire qui donne lieu ` a plusieurs types d’approches :
I
celles qui ne d´ ependent pas du corps choisi
I
celles qui au contraire exploitent les particularit´ es de ce dernier
I
celles utilisant des bases non canoniques...
Multiplication dans GF (2
n)
Approches polynomiales
La multiplication dans GF (2
m)
Le calcul de C (X ) = A(X ) × B(X ) mod P (X ) peut se faire en deux temps :
1. un produit de polynˆ omes C
0(X ) = A(X ) × B (X ),
c00 c10 ...
cm−10
cm0
...
c2m−20
=
a0 0 ... 0 0
a1 a0 0 0 0
....
am−1 a1 a0
0 am−1 a1
...
0 0 0 am−1
×
b0
b1
...
bm−1
2. une r´ eduction modulo P (X ) : C (X ) = C
0(X ) mod P(X )
Algorithme de Montgomery
I
Nous voulons le produit A(X ) ∗ B(X ) dans GF (2
m) d´ efinie par P (X ) un polynˆ ome irr´ eductible de degr´ e m,
I
L’algorithme de Montgomery ´ evalue
A(X ) ∗ B(X ) ∗ R
−1(X )modP(X ) o` u R(X ) est un ´ el´ ement fix´ e et R
−1(X ) repr´ esente son inverse modP (X ).
Connaissant R(X), comme P(X)est irr´eductible il est possible de d´eterminer par avance R−1(X)et P0(X)tels que :
R−1(X)∗R(X) +P0(X)∗P(X) = 1
Algorithme de Montgomery (cas g´ en´ eral)
Entr´ ees : A(X ) et B(X ) deux polynˆ omes de degr´ es inf´ erieurs ` a m R´ esultat : T (X ) = A(X ) ∗ B(X ) ∗ R
−1(X ) mod P(X )
Connues : P
0(X ), R(X )
Produit : C (X ) = A(X ) ∗ B(X )
R´ eduction : Q(X ) = −C (X ) ∗ P
0(X ) mod R(X ) T (X ) = C (X ) + Q(X ) ∗ P (X )
div R(X)
I La complexit´e de cet algorithme est due aux trois produits.
I La r´eduction moduloR(X) et la division par R(X) sont tr`es simples si R(X) =Xm.
Algorithme de Montgomery (d´ etails d’ex´ ecution)
I
Nous consid´ erons les repr´ esentations polynomiales,
A(X) = a0+a1X +a2X2+...+am−1Xm−1 B(X) = b0+b1X +b2X2+...+bm−1Xm−1 P(X) = p0+p1X +p2X2+...+pm−1Xm−1+Xm P0(X) = p00+p01X +p20X2+...+pm−10 Xm−1 I
Nous d´ ecomposons le calcul en calcul matriciel avec
I pour les parties basses, le calcul deQ(X)
I pour les parties hautes, le calcul du r´esultatT(X)
Algorithme de Montgomery (d´ etails d’ex´ ecution)
D´ ecomposition du calcul de Q(X ) :
(on int`egre la partie basse du produit)Q(X) =−
p00 0 ... 0 0
p01 p00 ... 0 0
p0m−2 p0m−3 ... p00 0 p0m−1 p0m−2 ... p01 p00
a0 0 ... 0 0
a1 a0 ... 0 0
am−2 am−3 ... a0 0 am−1 am−2 ... a1 a0
b0 b1 ...
bm−2 bm−1
D´ ecomposition du calcul de T (X ) :
(on int`egre la partie haute du produit)
0 am−1 ... a2 a1
0 0 ... a2 a1
0 0 ... am−1 am−2
0 0 ... 0 am−1
0 0 ... 0 0
b0 b1 ...
bm−3 bm−2 bm−1
+
1 pm−1 ... p2 p1
0 1 ... p2 p1
0 0 ... pm−1 pm−2
0 0 ... 1 pm−1
0 0 ... 0 1
q0 q1 ...
qm−3 qm−2 qm−1
Algorithme de Montgomery (complexit´ e du cas g´ en´ eral)
I
Complexit´ e en nombre d’op´ erations ´ el´ ementaires sur GF (2):
I m2+ (m−1)2multiplications (AND)
I (m−1)2+ (m−2)2+madditions (XOR).
I
Cet algorithme s’utilise g´ en´ eralement en repr´ esentation de Montgomery : A(X e ) = A(X ) × R(X ) (mod P )(X )
I
Cet algorithme se g´ en´ eralise facilement ` a GF (p
k)
Montgomery it´ eratif dans GF (2
m) avec R(X ) = X
mEntr´ ees : A(X ) et B (X )
deux polynˆomes de degr´es inf´erieurs `a mR´ esultat : T (X ) = A(X ) ∗ B(X ) ∗ R
−1(X ) mod P (X ) Connues : P
0(X ), R(X )
Initialisation T (X ) = 0
Boucle pour i = 0 ` a m − 1
T (X ) = T (X ) + a
i∗ B(X )
T (X ) = (T (X ) + t
0∗ P (X ))/X
Montgomery it´ eratif dans GF (2 ) avec R(X ) = X
I
A chaque it´ eration r´ eduction par X d’o` u au final r´ eduction par R(X ) = X
m.
I
De plus, P(X ) est irr´ eductible donc son terme de degr´ e 0 vaut 1, idem pour P
0(X ).
I
La complexit´ e en nombre de portes logiques :
I 2m2XOR(pour les sommes)
I et2m2AND(pour les produits)
M´ ethode de Mastrovito
Principe de l’approche
I GF(2m) est d´efinie par une racineαd’un polynˆome irr´eductibleP(X) de degr´em.
I Les ´el´ements deGF(2m) sont ´ecrit dans labase canonique
{1, α, α2, ..., αm−1}: A=
m−1
X
i=0
aiαi et B=
m−1
X
i=0
biαi.
I Le produitA×B dansGF(2m) est not´eC=
m−1
X
i=0
ciαi.
Mastrovito propose de construire Z , une matrice carr´ ee m × m d´ ependant de A, telle que :
C = Z × B
M´ ethode de Mastrovito
Construction de l’approche
Mastrovito donne un algorithme de construction de Z :
1. on construit la matrice (m−1)×m,Qcorrespondant `a l’´ecriture desXk pourk≥mmoduloP(X):
Xm Xm+1 ...
X2m−2
=Q×
X0 X1 ...
Xm−1
2. puis la matriceZ o`u :
zi,j=
ai pourj= 0, i= 0. . .m−1 u(i−j)∗ai−j+Pj−1
t=0qj−1−t,i∗am−1−t, sinon, o`uu(t) =
1 sit≥0 0 sinon
M´ ethode de Mastrovito
Coˆut de l’approche
I
La complexit´ e de cette m´ ethode vient en partie de la
construction de la matrice Z qui peut n´ ecessiter m
3/2 And et Xor , le choix du polynˆ ome est donc fondamental.
I
Avec des polynˆ omes de la forme X
m+ X + 1 le produit peut se faire avec m
2− 1 XOR et m
2AND.
I
Il existe des variantes pour des polynˆ omes
I compos´es que de 1 (all-one polynomial)
P(X) = 1 +X +X2+...+Xm,dans ce cas Xm+1≡1 (modP(X))
I ou encore r´eguli`erement espac´es
P(X) = 1 +X∆+X2∆+...+Xk∆=m, iciX(k+1)∆≡1 (modP(X)).
M´ ethode de Mastrovito I
Exemple avec un trinˆome
Consid´ erons GF (2
7) muni d’une base canonique {1, α, α
2, ..., α
6} o` u α est une racine du polynˆ ome irr´ eductible P(X ) = X
7+ X + 1.
Ainsi,
α7 =α+ 1 → (1,1,0,0,0,0,0) α8 =α2+α → (0,1,1,0,0,0,0) α9 =α3+α2 → (0,0,1,1,0,0,0) α10 =α4+α3 → (0,0,0,1,1,0,0) α11 =α5+α4 → (0,0,0,0,1,1,0) α11 =α6+α5 → (0,0,0,0,0,1,1)
Q=
1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
et
M´ ethode de Mastrovito II
Exemple avec un trinˆome
Z =
a0 a6 a5 a4 a3 a2 a1
a1 a0+a6 a6+a5 a5+a4 a4+a3 a3+a2 a2+a1
a2 a1 a0+a6 a6+a5 a5+a4 a4+a3 a3+a2
a3 a2 a1 a0+a6 a6+a5 a5+a4 a4+a3
a4 a3 a2 a1 a0+a6 a6+a5 a5+a4
a5 a4 a3 a2 a1 a0+a6 a6+a5
a6 a5 a4 a3 a2 a1 a0+a6
M´ ethode de Mastrovito
Exemple avec un All-One
Pour P (X ) = 1 + X + X
2+ ... + X
mla matrice Z peut se d´ ecomposer sous la forme Z = Z
1+ Z
2avec :
Z1=
a0 0 am−1 . . . a3 a2
a1 a0 0 am−1 a4 a3
. . . . . .
am−2 am−3 a0 0
am−1 am−2 a1 a0
et
Z2=
0 am−1 am−2 a1
0 am−1 am−2 a1
. . . 0 am−1 am−2 a1
(ie ligneXm)