• Aucun résultat trouvé

Algorithmes Parallèles de Multiplication Scalaire Optimisée sur Courbes Elliptiques Binaires

N/A
N/A
Protected

Academic year: 2021

Partager "Algorithmes Parallèles de Multiplication Scalaire Optimisée sur Courbes Elliptiques Binaires"

Copied!
84
0
0

Texte intégral

(1)

HAL Id: lirmm-01121960

https://hal-lirmm.ccsd.cnrs.fr/lirmm-01121960

Submitted on 15 Apr 2015

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Algorithmes Parallèles de Multiplication Scalaire

Optimisée sur Courbes Elliptiques Binaires

Jean-Marc Robert

To cite this version:

Jean-Marc Robert. Algorithmes Parallèles de Multiplication Scalaire Optimisée sur Courbes Ellip-tiques Binaires. C2: Journées Codage et Cryptographie, GT-C2, Mar 2014, Les Sept-Laux, France. �lirmm-01121960�

(2)

Approches Parallèles de Multiplication Scalaire

sur Courbe Elliptique Binaire

Jean-Marc ROBERT

Team DALI/LIRMM, Université de Perpignan, France

le 3 mars 2014

(3)

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann Opérations entre points de courbe elliptique Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left Algorithme parallèle Halving/Doubling Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle Synthèse sur ces algorithmes

(4)

Problématique Un exemple : l’échange de clé de Diffie-Hellmann

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann

Opérations entre points de courbe elliptique Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left Algorithme parallèle Halving/Doubling Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle Synthèse sur ces algorithmes

(5)

Problématique Un exemple : l’échange de clé de Diffie-Hellmann

Échange de clé de Diffie-Hellmann

Alice et Bob s’accordent sur un groupe mathématique (G , +, O) et un générateur de ce groupe P.

Bob Alice

a ← random() b ← random()

calcule A = a · P



envoie B calcule B = b · P envoie A



calcule K = a · B calcule K = b · A

clé secrète partagée K = a · b · P

→La multiplication scalaire est la principale opération

effectuée a · P.

(6)

Problématique Un exemple : l’échange de clé de Diffie-Hellmann

Échange de clé de Diffie-Hellmann

Alice et Bob s’accordent sur un groupe mathématique (G , +, O) et un générateur de ce groupe P. Bob Alice a ← random() b ← random() calcule A = a · P calcule B = b · P



envoie B envoie A



calcule K = a · B calcule K = b · A clé secrète partagée K = a · b · P

→La multiplication scalaire est la principale opération

effectuée a · P.

(7)

Problématique Un exemple : l’échange de clé de Diffie-Hellmann

Échange de clé de Diffie-Hellmann

Alice et Bob s’accordent sur un groupe mathématique (G , +, O) et un générateur de ce groupe P.

Bob Alice

a ← random() b ← random() calcule A = a · P



envoie B calcule B = b · P

envoie A



calcule K = a · B calcule K = b · A

clé secrète partagée K = a · b · P

→La multiplication scalaire est la principale opération

effectuée a · P.

(8)

Problématique Un exemple : l’échange de clé de Diffie-Hellmann

Échange de clé de Diffie-Hellmann

Alice et Bob s’accordent sur un groupe mathématique (G , +, O) et un générateur de ce groupe P.

Bob Alice

a ← random() b ← random() calcule A = a · P



envoie B calcule B = b · P

envoie A



calcule K = a · B calcule K = b · A

clé secrète partagée K = a · b · P

→La multiplication scalaire est la principale opération

effectuée a · P.

(9)

Problématique Un exemple : l’échange de clé de Diffie-Hellmann

Échange de clé de Diffie-Hellmann

Alice et Bob s’accordent sur un groupe mathématique (G , +, O) et un générateur de ce groupe P.

Bob Alice

a ← random() b ← random() calcule A = a · P



envoie B calcule B = b · P

envoie A



calcule K = a · B calcule K = b · A

clé secrète partagée K = a · b · P

→La multiplication scalaire est la principale opération

effectuée a · P.

(10)

Problématique Un exemple : l’échange de clé de Diffie-Hellmann

Notre groupe : Courbe Elliptique

(11)

Problématique Un exemple : l’échange de clé de Diffie-Hellmann

Notre groupe : Courbe Elliptique

(12)

Problématique Un exemple : l’échange de clé de Diffie-Hellmann

Notre groupe : Courbe Elliptique

Notre courbe est sur F2m (et non R) :

E : Y2+ XY = X3+ aX2+ b, a, b ∈ F2m.

Les coordonnées des points appartiennent à F2m = F2[x ]/(f (x ) · F2[x ])

Soit A =Pm−1 i =0 ai · xi et B = Pm−1 i =0 bi · xi, ai, bi ∈ {0, 1} alors : A + B = m−1 X i =0 (ai + bi) · xi, et : A × B = A · B mod f .

(13)

Problématique Opérations entre points de courbe elliptique

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann

Opérations entre points de courbe elliptique

Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left Algorithme parallèle Halving/Doubling Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle Synthèse sur ces algorithmes

(14)

Problématique Opérations entre points de courbe elliptique

Opérations entre points de courbe elliptique

Les formules pour le doublement et l’addition sont :

 x3 = λ2+ λ + x1+ x2+ a y3 = (x1+ x3)λ + x3+ y1 avec    λ = y1+y2 x1+x2 if P16= P2 λ = y1 x1 + x1 if P1 = P2

Un doublementnécessite 1 inversion, 2 multiplications, 1 élévation au carré , et 8 additions de polynômes ;

Uneadditionnécessite 1 inversion, 2 multiplications, 1 élévation au carré , et 9 additions de polynômes ;

(15)

Problématique Opérations entre points de courbe elliptique

Opérations entre points de courbe elliptique

Les formules pour le doublement et l’addition sont :

 x3 = λ2+ λ + x1+ x2+ a y3 = (x1+ x3)λ + x3+ y1 avec    λ = y1+y2 x1+x2 if P16= P2 λ = y1 x1 + x1 if P1 = P2

Un doublementnécessite 1 inversion, 2 multiplications, 1 élévation au carré , et 8 additions de polynômes ;

Uneadditionnécessite 1 inversion, 2 multiplications, 1 élévation au carré , et 9 additions de polynômes ;

(16)

Problématique Opérations entre points de courbe elliptique

Points de Courbes Elliptiques : Coordonnées Projectives

Lopez-Dahab ont montré l’intérêt des coordonnées "projectives" . Un point en coordonnées affines est transformé comme suit :

P = (x , y ) devient (X : Y : Z ) avec (

x =XZ y =ZY2

Maintenant, on effectue le doublement de la façon suivante :

2.(X : Y : Z ) = (X1: Y1: Z1) avec    X1= X4+ b · Z4 Y1= bZ4· Z1+ X1· (aZ1+ Y2+ bZ4) Z1= X2· Z2

Operation Affine Lopez-Dahab

Doublement 2M + 1S + 1I 4M + 4S

Addition 2M + 1S + 1I 13M + 4S

Addition - 9M + 5S

(17)

Problématique Opérations entre points de courbe elliptique

Points de Courbes Elliptiques : Coordonnées Projectives

Lopez-Dahab ont montré l’intérêt des coordonnées "projectives" . Un point en coordonnées affines est transformé comme suit :

P = (x , y ) devient (X : Y : Z ) avec (

x =XZ y =ZY2

Maintenant, on effectue le doublement de la façon suivante :

2.(X : Y : Z ) = (X1: Y1: Z1) avec    X1= X4+ b · Z4 Y1= bZ4· Z1+ X1· (aZ1+ Y2+ bZ4) Z1= X2· Z2

Operation Affine Lopez-Dahab

Doublement 2M + 1S + 1I 4M + 4S

Addition 2M + 1S + 1I 13M + 4S

Addition - 9M + 5S

(18)

Problématique Opérations entre points de courbe elliptique

Points de Courbes Elliptiques : Coordonnées Projectives

Lopez-Dahab ont montré l’intérêt des coordonnées "projectives" . Un point en coordonnées affines est transformé comme suit :

P = (x , y ) devient (X : Y : Z ) avec (

x =XZ y =ZY2

Maintenant, on effectue le doublement de la façon suivante :

2.(X : Y : Z ) = (X1: Y1: Z1) avec    X1= X4+ b · Z4 Y1= bZ4· Z1+ X1· (aZ1+ Y2+ bZ4) Z1= X2· Z2

Operation Affine Lopez-Dahab

Doublement 2M + 1S + 1I 4M + 4S

Addition 2M + 1S + 1I 13M + 4S

Addition - 9M + 5S

(19)

Problématique Le Produit scalaire de points

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann Opérations entre points de courbe elliptique

Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left Algorithme parallèle Halving/Doubling Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle Synthèse sur ces algorithmes

(20)

Problématique Le Produit scalaire de points

L’Algorithme de Produit Scalaire : Double-and-add

Soit k = (kt−1, ..., k1, k0)2∈ N, P ∈ E (F2m) k · P = (Pt−1 i =02 ik i) · P = ((. . . ((kt−1· 2 + kt−2) · 2 + kt−3) · 2 . . . + k1) · 2 + k0) · P = ((. . . ((kt−1· P · 2 + kt−2· P) · 2 + kt−3· P) · 2 . . . + k1· P) · 2 + k0· P)

On traduit cela dans l’algorithme suivant :

Left-to-Right double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require: k = (kt−1, . . . , k1, k0), P ∈ E (F2m) Ensure: Q = k · P

1: Q ← O

2: for i from t − 1 downto 0 do

3: Q ← 2 · Q 4: if ki = 1then 5: Q ← Q + P 6: end if 7: end for 8: return (Q)

(21)

Problématique Le Produit scalaire de points

L’Algorithme de Produit Scalaire : Double-and-add

Soit k = (kt−1, ..., k1, k0)2∈ N, P ∈ E (F2m) k · P = (Pt−1 i =02 ik i) · P = ((. . . ((kt−1· 2 + kt−2) · 2 + kt−3) · 2 . . . + k1) · 2 + k0) · P = ((. . . ((kt−1· P · 2 + kt−2· P) · 2 + kt−3· P) · 2 . . . + k1· P) · 2 + k0· P)

On traduit cela dans l’algorithme suivant :

Left-to-Right double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require: k = (kt−1, . . . , k1, k0), P ∈ E (F2m) Ensure: Q = k · P

1: Q ← O

2: for i from t − 1 downto 0 do

3: Q ← 2 · Q 4: if ki = 1then 5: Q ← Q + P 6: end if 7: end for 8: return (Q)

(22)

Problématique Le Produit scalaire de points

L’Algorithme de Produit Scalaire : Double-and-add

Soit k = (kt−1, ..., k1, k0)2∈ N, P ∈ E (F2m) k · P = (Pt−1 i =02 ik i) · P = ((. . . ((kt−1· 2 + kt−2) · 2 + kt−3) · 2 . . . + k1) · 2 + k0) · P = ((. . . ((kt−1· P · 2 + kt−2· P) · 2 + kt−3· P) · 2 . . . + k1· P) · 2 + k0· P)

On traduit cela dans l’algorithme suivant :

Left-to-Right double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require: k = (kt−1, . . . , k1, k0), P ∈ E (F2m) Ensure: Q = k · P

1: Q ← O

2: for i from t − 1 downto 0 do

3: Q ← 2 · Q 4: if ki = 1then 5: Q ← Q + P 6: end if 7: end for 8: return (Q)

(23)

Problématique Le Produit scalaire de points

Amélioration de Double-and-add : NAF et W-NAF.

NAF remplace les séquences de 1 consecutifs : soit k ∈ N tel que k = 2i− 1, alors

(k)2= 111...1

| {z } i fois

et on peut écrire : (k)NAF = 100...00 − 1

| {z }

i+1 chiffres .

⇒ Nombre moyen de chiffres non nuls : den/2 à n/3.

W-NAF réduit davantage encore le nombre moyen de chiffres non nuls à

n/(w + 1)en utilisant :

{−2w −1+ 1, ..., −5, −3, −1, 0, 1, 3, 5, ..., 2w −1− 1}. Bilan sur la complexité du produit scalaire sur E (F2m) :

nb. de doublements nb. d’additions

Double-and-add n n/2

NAF Double-and-add n n/3

(24)

Problématique Le Produit scalaire de points

Amélioration de Double-and-add : NAF et W-NAF.

NAF remplace les séquences de 1 consecutifs : soit k ∈ N tel que k = 2i− 1, alors

(k)2= 111...1

| {z } i fois

et on peut écrire : (k)NAF = 100...00 − 1

| {z }

i+1 chiffres .

⇒ Nombre moyen de chiffres non nuls : den/2 à n/3.

W-NAF réduit davantage encore le nombre moyen de chiffres non nuls à

n/(w + 1)en utilisant :

{−2w −1+ 1, ..., −5, −3, −1, 0, 1, 3, 5, ..., 2w −1− 1}.

Bilan sur la complexité du produit scalaire sur E (F2m) :

nb. de doublements nb. d’additions

Double-and-add n n/2

NAF Double-and-add n n/3

(25)

Parallélisation Right-to-left Comparaison Left-to-right/Right-to-left

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann Opérations entre points de courbe elliptique Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left

Algorithme parallèle Halving/Doubling Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle Synthèse sur ces algorithmes

(26)

Parallélisation Right-to-left Comparaison Left-to-right/Right-to-left

Comparaison Left-to-right/Right-to-left

Left-to-Right double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require: k = (kt−1, . . . , k1, k0), P ∈

E (F2m) Ensure: Q = k · P

1: Q ← O

2: for i from t − 1 downto 0 do

3: Q ← 2 · Q 4: if ki = 1then 5: Q ← Q + P 6: end if 7: end for 8: return (Q) Right-to-Left double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require: k = (kt−1, . . . , k1, k0), P ∈ E (F2m) Ensure: Q = k · P 1: Q ← O 2: for i from 0 to t − 1 do 3: if ki= 1then 4: Q ← Q + P 5: end if 6: P ← 2 · P 7: end for 8: return (Q) ⇑ ⇑

"mixed coordinates addition" "general addition" L’algorithme Left-to-right est plus performant ("mixed coordinates addition")

(27)

Parallélisation Right-to-left Comparaison Left-to-right/Right-to-left

Comparaison Left-to-right/Right-to-left

Left-to-Right double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require: k = (kt−1, . . . , k1, k0), P ∈

E (F2m) Ensure: Q = k · P

1: Q ← O

2: for i from t − 1 downto 0 do

3: Q ← 2 · Q 4: if ki = 1then 5: Q ← Q + P 6: end if 7: end for 8: return (Q) Right-to-Left double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require: k = (kt−1, . . . , k1, k0), P ∈ E (F2m) Ensure: Q = k · P 1: Q ← O 2: for i from 0 to t − 1 do 3: if ki= 1then 4: Q ← Q + P 5: end if 6: P ← 2 · P 7: end for 8: return (Q) ⇑ ⇑

"mixed coordinates addition" "general addition"

L’algorithme Left-to-right est plus performant ("mixed coordinates addition")

(28)

Parallélisation Right-to-left Comparaison Left-to-right/Right-to-left

Comparaison Left-to-right/Right-to-left

Left-to-Right double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require: k = (kt−1, . . . , k1, k0), P ∈

E (F2m) Ensure: Q = k · P

1: Q ← O

2: for i from t − 1 downto 0 do

3: Q ← 2 · Q 4: if ki = 1then 5: Q ← Q + P 6: end if 7: end for 8: return (Q) Right-to-Left double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require: k = (kt−1, . . . , k1, k0), P ∈ E (F2m) Ensure: Q = k · P 1: Q ← O 2: for i from 0 to t − 1 do 3: if ki= 1then 4: Q ← Q + P 5: end if 6: P ← 2 · P 7: end for 8: return (Q) ⇑ ⇑

"mixed coordinates addition" "general addition" L’algorithme Left-to-right est plus performant ("mixed coordinates addition")

(29)

Parallélisation Right-to-left Comparaison Left-to-right/Right-to-left

Double-and-add parallèle

Require: scalar k, P ∈ F2m. Ensure: kP. (Barrier) Compute Doublings 1: D[0] ← P 2: for i = 1 to 21 do 3: //Doubling LD projective D[i ] ← D[i − 1] × 2 4: end for

5: signal to thread addition 6: for i = 22 to M − 1 do 7: //Doubling LD projective D[i ] ← D[i − 1] × 2 8: end for Compute Additions 9: Q ← O

10: Wait for signal from thread Doubling 11: for i = 0 to M − 1 do

12: if ki= 1then

13: //Full LD projective addition Q ← Q + D[i ]

14: end if 15: end for

(Barrier) 16: return Q

(30)

Parallélisation Right-to-left Comparaison Left-to-right/Right-to-left

Rappel sur le Halving

Si Q est un point de la courbe d’ordre impair, il appartient à un sous groupe au sein duquel le halving de Q(u, v ) est l’unique point P(x, y ) tel que P = Q/2.

(u, v ) = 2 · (x, y )

λ = x + y /x, (1)

u = λ2+ λ + a, (2)

v = x2+ u(λ + 1). (3)

Pour effectuer le calcul de P :

on résoud l’équation (2): λ2+ λ = u + a → λ (Quadratic Solver); on résoud l’équation (3): x2 = v + u(λ + 1) → x (Square Root); on calcule y (1): y = λx + x2.

→ un halving nécessite : 1 Quadratic Solver, 1 Square Root, 1 M et 1 S.

(31)

Parallélisation Right-to-left Comparaison Left-to-right/Right-to-left

Rappel sur le Halving

Si Q est un point de la courbe d’ordre impair, il appartient à un sous groupe au sein duquel le halving de Q(u, v ) est l’unique point P(x, y ) tel que P = Q/2.

(u, v ) = 2 · (x, y )

λ = x + y /x, (1)

u = λ2+ λ + a, (2)

v = x2+ u(λ + 1). (3)

Pour effectuer le calcul de P :

on résoud l’équation (2): λ2+ λ = u + a → λ (Quadratic Solver); on résoud l’équation (3): x2 = v + u(λ + 1) → x (Square Root); on calcule y (1): y = λx + x2.

→ un halving nécessite : 1 Quadratic Solver, 1 Square Root, 1 M et 1 S.

(32)

Parallélisation Right-to-left Comparaison Left-to-right/Right-to-left

Rappel sur le Halving

Si Q est un point de la courbe d’ordre impair, il appartient à un sous groupe au sein duquel le halving de Q(u, v ) est l’unique point P(x, y ) tel que P = Q/2.

(u, v ) = 2 · (x, y )

λ = x + y /x, (1)

u = λ2+ λ + a, (2)

v = x2+ u(λ + 1). (3)

Pour effectuer le calcul de P :

on résoud l’équation (2): λ2+ λ = u + a → λ (Quadratic Solver); on résoud l’équation (3): x2 = v + u(λ + 1) → x (Square Root); on calcule y (1): y = λx + x2.

→ un halving nécessite : 1 Quadratic Solver, 1 Square Root, 1 M et 1 S.

(33)

Parallélisation Right-to-left Comparaison Left-to-right/Right-to-left

Halve-and-add parallèle

Require: scalar k, P ∈ F2m of odd order r .

Ensure: kP.

1: Recode: k0= k · 2m mod r .

2: Compute NAFk0, NAF representation of k0(Barrier)

Compute Halvings 3: H[M − 1] ← P 4: H[M − 2] ← P/2 5: for i = M − 2 downto M − 11 do 6: //Halving H[i ] ← H[i + 1]/2 7: end for

8: signal to thread addition 9: for i = M − 12 downto 0 do 10: H[i ] ← H[i + 1]/2 // 11: end for

Compute Additions

12: Wait for signal from thread halving 13: Q ← O

14: for i = M − 1 downto 0 do 15: if NAFk0

i = 1then

16: Q ← Q + H[i ] //mixed addition

projective-affine 17: end if

18: if NAFk0

i = −1then

19: Q ← Q − H[i ] //mixed addition

projective-affine 20: end if

21: end for

(Barrier) 22: return Q

(34)

Parallélisation Right-to-left Algorithme parallèle Halving/Doubling

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann Opérations entre points de courbe elliptique Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left

Algorithme parallèle Halving/Doubling

Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle Synthèse sur ces algorithmes

(35)

Parallélisation Right-to-left Algorithme parallèle Halving/Doubling

Algorithme parallèle

Le scalaire k est recodé en k0 = k · 2`−1 mod #< P > :

k = k02−(`−1) = ( m−1 X i =0 ki02i)2−(`−1)= `−1 X i =0 ki02i −(`−1) | {z } ≤0 powers of2 + m−1 X i =` ki02i −(`−1) | {z } >0powers of2

On en déduit l’algorithme suivant :

Recode k

k is split in two subkeys (> 0 powers of 2, and ≤ 0 powers of 2).

. & Double-and-add // (2 threads) ComputePm−1 i =` k 0 i2 i −(`−1)· P. Halve-and-add // (2 threads) ComputeP`−1 i =0k 0 i2 i −(`−1)· P. thread 1 Compute doublings of P thread 2 Compute additions thread 3 Compute halvings of P thread 4 Compute additions & . Final reconstruction Q = k · P.

(36)

Parallélisation Right-to-left Algorithme parallèle Halving/Doubling

Algorithme parallèle

On en déduit l’algorithme suivant :

Recode k

k is split in two subkeys (> 0 powers of 2, and ≤ 0 powers of 2).

. & Double-and-add // (2 threads) ComputePm−1 i =` ki02i −(`−1)· P. Halve-and-add // (2 threads) ComputeP`−1 i =0ki02i −(`−1)· P. thread 1 Compute doublings of P thread 2 Compute additions thread 3 Compute halvings of P thread 4 Compute additions & . Final reconstruction Q = k · P.

(37)

Parallélisation Right-to-left Algorithme parallèle Halving/Doubling

Algorithme parallèle

On en déduit l’algorithme suivant :

Recode k

k is split in two subkeys (> 0 powers of 2, and ≤ 0 powers of 2).

. & Double-and-add ComputePm−1 i =` k 0 i2 i −(`−1)· P. Halve-and-add ComputeP`−1 i =0k 0 i2 i −(`−1)· P. . & Double-and-add // (2 threads) ComputePm−1 i =` k 0 i2 i −(`−1)· P. Halve-and-add // (2 threads) ComputeP`−1 i =0k 0 i2 i −(`−1)· P. thread 1 Compute doublings of P thread 2 Compute additions thread 3 Compute halvings of P thread 4 Compute additions & . Final reconstruction Q = k · P.

(38)

Parallélisation Right-to-left Algorithme parallèle Halving/Doubling

Algorithme parallèle

On en déduit l’algorithme suivant :

Recode k

k is split in two subkeys (> 0 powers of 2, and ≤ 0 powers of 2).

. & Double-and-add ComputePm−1 i =` k 0 i2 i −(`−1)· P. Halve-and-add ComputeP`−1 i =0k 0 i2 i −(`−1)· P. & . Final reconstruction Q = k · P. . & Double-and-add // (2 threads) ComputePm−1 i =` ki02i −(`−1)· P. Halve-and-add // (2 threads) ComputeP`−1 i =0ki02i −(`−1)· P. thread 1 Compute doublings of P thread 2 Compute additions thread 3 Compute halvings of P thread 4 Compute additions & . Final reconstruction Q = k · P.

(39)

Parallélisation Right-to-left Algorithme parallèle Halving/Doubling

Algorithme parallèle

On en déduit l’algorithme suivant :

Recode k

k is split in two subkeys (> 0 powers of 2, and ≤ 0 powers of 2).

. & Double-and-add ComputePm−1 i =` k 0 i2 i −(`−1)· P. Halve-and-add ComputeP`−1 i =0k 0 i2 i −(`−1)· P. & . Final reconstruction Q = k · P.

Cet algorithme lance donc 2 threads (référence) !

.

&

Double-and-add //

(2 threads)

Compute

Pm−1

i =`

k

i0

2

i −(`−1)

·P.

Halve-and-add

//

(2 threads)

Compute

P`−1

i =0

k

i0

2

i −(`−1)

· P.

thread 1

Compute

doublings

of P

thread 2

Compute

additions

thread 3

Compute

halvings

of P

thread 4

Compute

additions

&

.

Final

recon-struction

Q = k · P.

(40)

Parallélisation Right-to-left Algorithme parallèle Halving/Doubling

Algorithme parallèle

On en déduit l’algorithme suivant :

Recode k

k is split in two subkeys (> 0 powers of 2, and ≤ 0 powers of 2).

. & Double-and-add // (2 threads) ComputePm−1 i =` ki02i −(`−1)· P. Halve-and-add // (2 threads) ComputeP`−1 i =0ki02i −(`−1)· P. thread 1 Compute doublings of P thread 2 Compute additions thread 3 Compute halvings of P thread 4 Compute additions & . Final reconstruction Q = k · P.

(41)

Parallélisation Right-to-left Algorithme parallèle Halving/Doubling

Algorithme parallèle

On en déduit l’algorithme suivant :

Recode k

k is split in two subkeys (> 0 powers of 2, and ≤ 0 powers of 2).

. & Double-and-add // (2 threads) ComputePm−1 i =` ki02i −(`−1)· P. Halve-and-add // (2 threads) ComputeP`−1 i =0ki02i −(`−1)· P. thread 1 Compute doublings of P thread 2 Compute additions thread 3 Compute halvings of P thread 4 Compute additions & . Final reconstruction Q = k · P.

(42)

Parallélisation Right-to-left Synthèse sur ces algorithmes

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann Opérations entre points de courbe elliptique Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left Algorithme parallèle Halving/Doubling

Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle Synthèse sur ces algorithmes

(43)

Parallélisation Right-to-left Synthèse sur ces algorithmes

Synthèse sur ces algorithmes

Stratégies d’implémentation : langage C ;

utilisation du jeux d’instructions SSE2/AVX (processeur Intel core i7, multiplication PCLMULQDQ, 128 bits) ;

compilateur gcc 4.6.3, option -O3 ; bibliothèque PThread ;

optimisations de l’état de l’art (opérations combinées, lazy reduction...) ;

courbes elliptiques sur F2m : NIST B233 et B409.

Algorithmes parallèles

courbe NIST Double-and-add Halve-and-add Parallel R-L WNAF R-L WNAF R-L WNAF L-R 2 threads L-R seq. 2 threads L-R seq. 4 threads 2 threads B233 130696 159000 98872 135000 104492 98000

(-18,6 %) (-26,7 %) (+6,6 %) B409 615328 706000 407772 539000 326436 347000

(-12,8 %) (-24,3 %) (-5,9 %)

Nombre de cycles (minimum sur 2000 exécutions, implémentations en C, Optiplex 990, Intel core i7, TurboMode et hyperthreading désactivés)

(44)

Parallélisation Right-to-left Synthèse sur ces algorithmes

Synthèse sur ces algorithmes

Résultats (performances) :

Algorithmes parallèles

courbe NIST Double-and-add Halve-and-add Parallel R-L WNAF R-L WNAF R-L WNAF L-R 2 threads L-R seq. 2 threads L-R seq. 4 threads 2 threads

B233 130696 159000 98872 135000 104492 98000

(-18,6 %) (-26,7 %) (+6,6 %)

B409 615328 706000 407772 539000 326436 347000

(-12,8 %) (-24,3 %) (-5,9 %)

Nombre de cycles (minimum sur 2000 exécutions, implémentations en C, Optiplex 990, Intel core i7, TurboMode et hyperthreading désactivés)

Algorithmes parallèles

courbe NIST Double-and-add Halve-and-add Parallel R-L WNAF R-L WNAF R-L WNAF L-R 2 threads L-R seq. 2 threads L-R seq. 4 threads 2 threads B233 130696 159000 98872 135000 104492 98000

(-18,6 %) (-26,7 %) (+6,6 %) B409 615328 706000 407772 539000 326436 347000

(-12,8 %) (-24,3 %) (-5,9 %)

Nombre de cycles (minimum sur 2000 exécutions, implémentations en C, Optiplex 990, Intel core i7, TurboMode et hyperthreading désactivés)

(45)

Parallélisation Right-to-left Synthèse sur ces algorithmes

Synthèse sur ces algorithmes

Algorithmes parallèles

courbe NIST Double-and-add Halve-and-add Parallel R-L WNAF R-L WNAF R-L WNAF L-R 2 threads L-R seq. 2 threads L-R seq. 4 threads 2 threads B233 130696 159000 98872 135000 104492 98000

(-18,6 %) (-26,7 %) (+6,6 %) B409 615328 706000 407772 539000 326436 347000

(-12,8 %) (-24,3 %) (-5,9 %)

Nombre de cycles (minimum sur 2000 exécutions, implémentations en C, Optiplex 990, Intel core i7, TurboMode et hyperthreading désactivés)

(46)

Montgomery parallèle Une attaque : Simple Power Analysis

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann Opérations entre points de courbe elliptique Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left Algorithme parallèle Halving/Doubling Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle Synthèse sur ces algorithmes

(47)

Montgomery parallèle Une attaque : Simple Power Analysis

ECSM vulnérable : cas Double-And-Add

Left-to-Right double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require:k = (kt−1, . . . , k1, k0), P ∈ E (F2m) Ensure:Q = k · P

1:Q ← O

2:fori from t − 1 downto 0 do

3: Q ← 2 · Q 4: ifki= 1 then 5: Q ← Q + P 6: end if 7:end for 8:return (Q)

→ Vulnérable : pas de régularité des opérations

(48)

Montgomery parallèle Une attaque : Simple Power Analysis

ECSM vulnérable : cas Double-And-Add

Left-to-Right double-and-add

Elliptic Curve Scalar Multiplication (ECSM)

Require:k = (kt−1, . . . , k1, k0), P ∈ E (F2m) Ensure:Q = k · P

1:Q ← O

2:fori from t − 1 downto 0 do

3: Q ← 2 · Q 4: ifki= 1 then 5: Q ← Q + P 6: end if 7:end for 8:return (Q)

→ Vulnérable : pas de régularité des opérations

(49)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann Opérations entre points de courbe elliptique Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left Algorithme parallèle Halving/Doubling Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle Synthèse sur ces algorithmes

(50)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Une contre mesure à l’attaque précédente : Montgomery

Montgomery

Require: k = (kt−1, . . . , k1, k0) with kt−1= 1, P ∈ E (Fq)

Ensure: Q = k · P

1: Q0 ← P, Q1← 2P

2: for i from t − 2 downto 0 do

3: if (ki = 0) then 4: Q1← Q0+ Q1, Q0← 2 · Q0 5: else 6: Q0← Q0+ Q1, Q1← 2 · Q1 7: end if 8: end for 9: return (Q0)

(51)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

(52)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

(53)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

(54)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

(55)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

→ Q

0

= 45P

Double : Q0← 2 · Q0 (Q1← Q0+ Q1= 2 · Q0+ P d’où Q1− Q0= P)

(56)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

→ Q

0

= 45P

Double-and-add : Q0← Q0+ Q1= 2 · Q0+ P (Q1← 2 · (Q0+ P) d’où Q1− Q0= P)

(57)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

(58)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

→ Q

0

= 45P

Double-and-add : Q0← Q0+ Q1= 2 · Q0+ P (Q1← 2 · (Q0+ P) d’où Q1− Q0= P)

(59)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

(60)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

(61)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

→ Q

0

= 45P

Double : Q0← 2 · Q0 (Q1← Q0+ Q1= 2 · Q0+ P d’où Q1− Q0= P)

(62)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

→ Q

0

= 45P

Double-and-add : Q0← Q0+ Q1= 2 · Q0+ P (Q1← 2 · (Q0+ P) d’où Q1− Q0= P)

(63)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

(64)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Comment cet algorithme fonctionne-t-il ?

Exemple : k = 4510= 0x 2D = [1, 0, 1, 1, 0, 1]2 On initialise : Q0 = P; Q1 = 2P. 1: if (ki = 0) then 2: Q1 ← Q0+ Q1,Q0← 2 · Q0 3: else 4: Q0 ← Q0+ Q1,Q1← 2 · Q1 5: end if i init 4 3 2 1 0 ki 1 0 1 1 0 1 Q0 P 2P 5P 11P 22P 45P Q1 2P 3P 6P 12P 23P 46P

Valeur retournée par l’algorithme :

(65)

Montgomery parallèle Une contre mesure à l’attaque SPA : Montgomery

Résultats de performances

Résultats des implémentations, multiplication scalaire de point de courbe elliptique.

Comparaison

Algorithmes Montgomery’s WNAF Halve-and-add Binary Ladder

B233

157307

135000

B409

734256

539000

Nombre de cycles (minimum sur 2000 exécutions, implémentations en C, Optiplex 990, Intel core i7, TurboMode et hyperthreading désactivés)

(66)

Montgomery parallèle Variantes : Montgomery-Halving et Montgomery parallèle

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann Opérations entre points de courbe elliptique Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left Algorithme parallèle Halving/Doubling Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle

Synthèse sur ces algorithmes

(67)

Montgomery parallèle Variantes : Montgomery-Halving et Montgomery parallèle

Construction avec Halving

Comme pour l’algorithme de Montgomery classique (avec doublings), on recherche :

la régularité des opérations ;

la différence constante entre les deux points Q0 et Q1 calculés au long

de la multiplication scalaire.

Pour un algorithme Montgomery-Halving, on est contraint à un recodage du scalaire k comme suit :

(68)

Montgomery parallèle Variantes : Montgomery-Halving et Montgomery parallèle

Construction avec Halving

Comme pour l’algorithme de Montgomery classique (avec doublings), on recherche :

la régularité des opérations ;

la différence constante entre les deux points Q0 et Q1 calculés au long

de la multiplication scalaire.

Pour un algorithme Montgomery-Halving, on est contraint à un recodage du scalaire k comme suit :

(69)

Montgomery parallèle Variantes : Montgomery-Halving et Montgomery parallèle

Construction avec Halving

Comme pour l’algorithme de Montgomery classique (avec doublings), on recherche :

la régularité des opérations ;

la différence constante entre les deux points Q0 et Q1 calculés au long

de la multiplication scalaire.

Pour un algorithme Montgomery-Halving, on est contraint à un recodage du scalaire k comme suit :

(70)

Montgomery parallèle Variantes : Montgomery-Halving et Montgomery parallèle

Construction avec Halving

Comme pour l’algorithme de Montgomery classique (avec doublings), on recherche :

la régularité des opérations ;

la différence constante entre les deux points Q0 et Q1 calculés au long

de la multiplication scalaire.

Pour un algorithme Montgomery-Halving, on est contraint à un recodage du scalaire k comme suit :

(71)

Montgomery parallèle Variantes : Montgomery-Halving et Montgomery parallèle

Algorithme Montgomery Halving

Montgomery Halving Require: k = Pt−1 i =0ki · 2 i = Pm i =0 ki0 2i mod n, ki0 ∈ {0, 1} = (kt−10 , . . . , k10, k00) with kt−10 = 1, P ∈ E (Fq) Ensure: Q = k · P 1: Q0← P, Q1← −P

2: for i from t − 2 downto 0 do 3: if (ki0= 0)then 4: T ← Q0/2, Q0← T , Q1← Q1− T 5: else 6: T ← Q1/2, Q1← T , Q0← Q0− T 7: end if 8: end for 9: return (Q0)

Les deux critères recherchés sont maintenant bien remplis :

la régularité recherchée est bien obtenue, de 1H + 1A à chaque itération ; maintenant, on a Q1,j− Q0,j = −2 · P à chaque itération ;

(72)

Montgomery parallèle Variantes : Montgomery-Halving et Montgomery parallèle

Algorithme parallèle

Le scalaire k est recoded en k0= k · 2`−1 mod #< P > , et on a dans ce cas :

k = k02−(`−1)= ( m−1 X i =0 ki02i)2−(`−1)= `−1 X i =0 ki02i −(`−1) | {z } ≤0powers of2 + m−1 X i =` ki02i −(`−1) | {z } >0powers of2

Parallel Montgomery Halving/Doubling

Require: scalar k, P ∈ F2mof odd order r , constant `.

Ensure: kP.

1: Recode: k0= 2`−1k mod r . (Barrier)

2: Compute

Montgomery Doubling ECSM QD← [(kt0, . . . , k`0)] · P

3: Compute

Montgomery Halving ECSM QH← [(k`−10 , . . . , k

0 0)/2`] · P

(Barrier)

(73)

Montgomery parallèle Variantes : Montgomery-Halving et Montgomery parallèle

Algorithme parallèle

Le scalaire k est recoded en k0= k · 2`−1 mod #< P > , et on a dans ce cas :

k = k02−(`−1)= ( m−1 X i =0 ki02i)2−(`−1)= `−1 X i =0 ki02i −(`−1) | {z } ≤0powers of2 + m−1 X i =` ki02i −(`−1) | {z } >0powers of2

Parallel Montgomery Halving/Doubling

Require: scalar k, P ∈ F2mof odd order r , constant `.

Ensure: kP.

1: Recode: k0= 2`−1k mod r . (Barrier)

2: Compute

Montgomery Doubling ECSM QD← [(kt0, . . . , k`0)] · P

3: Compute

Montgomery Halving ECSM QH← [(k`−10 , . . . , k

0 0)/2`] · P

(Barrier)

(74)

Montgomery parallèle Synthèse sur ces algorithmes

Table des matières

1 Problématique

Un exemple : l’échange de clé de Diffie-Hellmann Opérations entre points de courbe elliptique Le Produit scalaire de points

2 Parallélisation Right-to-left

Comparaison Left-to-right/Right-to-left Algorithme parallèle Halving/Doubling Synthèse sur ces algorithmes

3 Montgomery parallèle

Une attaque : Simple Power Analysis

Une contre mesure à l’attaque SPA : Montgomery

Variantes : Montgomery-Halving et Montgomery parallèle

Synthèse sur ces algorithmes

(75)

Montgomery parallèle Synthèse sur ces algorithmes

Synthèse sur ces algorithmes

Algorithmes Montgomery’s Binary Ladder

B233 Doubling Halving Parallel Gain (//-Doubling) 157307 707385 149117 5,09 % B409 Doubling Halving Parallel Gain (//-Doubling)

734256 4212043 659460 10.5%

Nombre de cycles (minimum sur 2000 exécutions, implémentations en C, Optiplex 990, Intel core i7, TurboMode et hyperthreading désactivés)

(76)

Montgomery parallèle Synthèse sur ces algorithmes

Synthèse sur ces algorithmes

Algorithmes Montgomery’s Binary Ladder

B233 Doubling Halving Parallel Gain (//-Doubling) 157307 707385 149117 5,09 % B409 Doubling Halving Parallel Gain (//-Doubling)

734256 4212043 659460 10.5%

Nombre de cycles (minimum sur 2000 exécutions, implémentations en C, Optiplex 990, Intel core i7, TurboMode et hyperthreading désactivés)

(77)

Conclusion et travaux en cours

Conclusion et Travaux en cours

Nous avons passé en revue les deux principales approches sur lesquelles nous travaillons, et conclu sur des résultats d’implémentation.

Travaux en cours :

débuts d’implémentation hardware (VHDL) en collaboration avec l’équipe CAIRN à l’IRISA (Lannion) ;

implémentation sur Fp ;

gestion des threads ;

Conclusion :

les performances de tous ces algorithmes restent perfectibles ; l’évaluation de la robustesse aux attaques reste théorique ; on n’en est qu’au début !

(78)

Conclusion et travaux en cours

Conclusion et Travaux en cours

Nous avons passé en revue les deux principales approches sur lesquelles nous travaillons, et conclu sur des résultats d’implémentation.

Travaux en cours :

débuts d’implémentation hardware (VHDL) en collaboration avec l’équipe CAIRN à l’IRISA (Lannion) ;

implémentation sur Fp ;

gestion des threads ;

Conclusion :

les performances de tous ces algorithmes restent perfectibles ; l’évaluation de la robustesse aux attaques reste théorique ; on n’en est qu’au début !

(79)

Conclusion et travaux en cours

Conclusion et Travaux en cours

Nous avons passé en revue les deux principales approches sur lesquelles nous travaillons, et conclu sur des résultats d’implémentation.

Travaux en cours :

débuts d’implémentation hardware (VHDL) en collaboration avec l’équipe CAIRN à l’IRISA (Lannion) ;

implémentation sur Fp ;

gestion des threads ;

Conclusion :

les performances de tous ces algorithmes restent perfectibles ; l’évaluation de la robustesse aux attaques reste théorique ; on n’en est qu’au début !

(80)

Conclusion et travaux en cours

Conclusion et Travaux en cours

Nous avons passé en revue les deux principales approches sur lesquelles nous travaillons, et conclu sur des résultats d’implémentation.

Travaux en cours :

débuts d’implémentation hardware (VHDL) en collaboration avec l’équipe CAIRN à l’IRISA (Lannion) ;

implémentation sur Fp ;

gestion des threads ; Conclusion :

les performances de tous ces algorithmes restent perfectibles ; l’évaluation de la robustesse aux attaques reste théorique ; on n’en est qu’au début !

(81)

Conclusion et travaux en cours

Conclusion et Travaux en cours

Nous avons passé en revue les deux principales approches sur lesquelles nous travaillons, et conclu sur des résultats d’implémentation.

Travaux en cours :

débuts d’implémentation hardware (VHDL) en collaboration avec l’équipe CAIRN à l’IRISA (Lannion) ;

implémentation sur Fp ;

gestion des threads ; Conclusion :

les performances de tous ces algorithmes restent perfectibles ;

l’évaluation de la robustesse aux attaques reste théorique ; on n’en est qu’au début !

(82)

Conclusion et travaux en cours

Conclusion et Travaux en cours

Nous avons passé en revue les deux principales approches sur lesquelles nous travaillons, et conclu sur des résultats d’implémentation.

Travaux en cours :

débuts d’implémentation hardware (VHDL) en collaboration avec l’équipe CAIRN à l’IRISA (Lannion) ;

implémentation sur Fp ;

gestion des threads ; Conclusion :

les performances de tous ces algorithmes restent perfectibles ; l’évaluation de la robustesse aux attaques reste théorique ;

(83)

Conclusion et travaux en cours

Conclusion et Travaux en cours

Nous avons passé en revue les deux principales approches sur lesquelles nous travaillons, et conclu sur des résultats d’implémentation.

Travaux en cours :

débuts d’implémentation hardware (VHDL) en collaboration avec l’équipe CAIRN à l’IRISA (Lannion) ;

implémentation sur Fp ;

gestion des threads ; Conclusion :

les performances de tous ces algorithmes restent perfectibles ; l’évaluation de la robustesse aux attaques reste théorique ; on n’en est qu’au début !

(84)

Conclusion et travaux en cours

Je vous remercie de votre attention,

Références

Documents relatifs

Les points · et ¸ sont en général assez faciles à établir (on peut noter que si ϕ est linéaire à gauche et symétrique, alors elle est bilinéaire)..

*Les exercices en italique sont destinés à approfondir les notions et/ou consolider les acquis.. Niveau

[r]

On peut d´efinir de plusieurs mani`eres le produit scalaire, selon le contexte on utilisera l’une de ces expressions. Th´ eor` eme 3 D´ efinitions ´

Méthode : Calculer un produit scalaire par projection Vidéo https://youtu.be/2eTsaa2vVnI.

Produit scalaire dans un repère orthonormé Le plan est muni d'un repère

Dans un losange dont les diagonales mesurent 12 cm et 7 cm, calcule le produit scalaire des deux vecteurs formant deux côtés consécutifs?. Un enfant tire son cheval à roulettes sur

L’intérêt de la projection orthogonale réside dans le fait qu’on obtient des vecteurs colinéaires pour lesquels le calcul du produit scalaire est beaucoup plus simple en