• Aucun résultat trouvé

Tab. 2.2: Implantation de l’algorithme de Montgomery sur différentes cibles technologiques Architecture Fréquence Taille des mots Cycles Temps

GPP (UltraSparc) 1000MHz 1024 1.048.576 1.048,58µs

DSP (TMS320C62) 300MHz 32 21.409 71,35µs

Asic (CMOS 0,35µm) 50MHz 16 2.364 47,28µs

FPGA (Badrignans et al.) [5] 32,6MHz 32 1164 35,71µs

Nedjah et al. [72] 25MHz 16 2051 82,04µs

Örs et al. [75] 95,41MHz 32 3076 32,24µs

McIvor et al. [57] 71,04MHz 32 1025 14,43µs

Daly et al. [27] 54,61MHz 32 1083 19,83µs

Deschamps et al. [35] 24,4MHz 32 1024 41,97µs

2.8

Leak Resistant Arithmetic

Le but de la Leak Resistant Arithmetic (LRA) [7] est de protéger les circuits cryptographiques des attaques du genre Side Channel, qui sont expliqués dans le Chapitre 3, Section 3.1.1. La LRA fait usage du RNS et de l’algorithme de Montgomery pour implanter de manière sure l’exponen- tiation modulaire. De plus, grâce au parallélisme intrinsèque de cet approche, la LRA permet une implantation matérielle rapide et avec une bonne modularité pour supporter la croissance des tailles de clés cryptographiques, comme il est montré dans le Chapitre 4

L’une des bases du LRA c’est l’adaptation de l’algorithme de Montgomery à la notation RNS. Dans la version RNS de la multiplication, la valeur :

M1 = k

Y

i=1

mi (2.18)

est choisie comme la constante de Montgomery, au lieu de βkde la représentation classique. Alors,

la multiplication produit :

R =£A · B · M−1 1

¤

N (2.19)

où R, A, B et N sont représentés en RNS à partir d’une base β1pré-definie. Comme dans la version

classique, il faut trouver un Q tel que (A · B + Q · N) soit multiple de M1. Ensuite la division

résultante (A·B+Q·N)M1 est exacte, mais la multiplication par M−1

1 ne peut pas être réalisée dans la

base β1. Il est donc nécessaire d’utiliser une deuxième base, dite β2, contenant d’autres moduli

premiers entre eux. Les valeurs intermédiaires du calcul sont alors étendues vers la base β2, et

la multiplication par M−1

1 est calculée dans cette nouvelle base. Dans le cadre de ce document,

les deux bases β1 et β2 ont une taille k. Pour la suite des calculs, il faut définir β1 = (m1, ...mk)

et β2 = (mk+1, ...m2·k), avec M2 = Qki=1mk+i et pgcd(M1, M2) = 1. Par la suite, pour calculer

66 Introduction à la Cryptographie

Q = [−A · +B · N−1]M1, ce qui implique :

qi =£−ai· bi· n−1i

¤

mi (2.20)

Comme résultat la valeur Q < Mi a été calculée de tel forme que Q = [−A · +B · N−1]M1. Comme mentionné précédemment, (A · B + Q · N) est calculé dans la base β2. Avant de pouvoir

évaluer (A·B+Q·N), il est primordial connaître la valeur de A·B dans la base β2, et étendre Q, qui

vient d’être calculé dans la base β1, en utilisant 2.20 en β2. Ensuite se calcule R = (A·B+Q·N)·M1−1

aussi dans la base β2. Le résultat doit être étendu vers β1 pour être utilisé dans le prochain appel

à la procédure de multiplication. L’algorithme 8 décrit les calculs de la multiplication modulaire de Montgomery en RNS. L’issue de la fonction c’est le produit £A · B · M−1

1

¤

N.

Algorithme 8: Montgomery pour la Multiplication Modulaire en RNS Entrée: β1, β2; N dans les deux bases tel que 0 < 4 · N < M1, M2 et

P GCD(N, M1) = 1 ; A, B dans les deux bases, tel que A · B < M1· N

Sortie: R tel que R ≡ £A · B · M−1 1 ¤ N MMMRNS(A, B, M) 1: T ← A ⊗rnsB in β1∪ β2 2: Q ← T ⊗rns(−N1−1) in β1 3: Etendre Q de β1 vers β2 4: R ← (T ⊕rnsQ ⊗rnsN ) ⊗rns(M1−1) in β2 5: Etendre R de β2 vers β1

Les étapes 1, 2 et 4 sont des opérations parallélisables, grâce la représentation RNS, car dans le RNS il n’existe pas de dépendance de données explicite. Par conséquent, la complexité de l’al- gorithme réside essentiellement dans l’extension de base.

Extension de base La méthode adoptée pour réaliser l’extension de base dans le cadre de la LRA est celle proposée par Garner en [40], en utilisant un système à racine mixte (MRS - Mixed Radix System). En considérant l’étape 3 de l’algorithme 8, où la valeur de Q en RNS est étendue de β1 vers β2, alors pour chaque mj en β2 il est évalué :

|q|m j = |t1+ t2m1+ ... + tkm1...mk−1|mj (2.21) où t1 = |q|m1= q1 t2 = ¯ ¯ ¯ ¯ ¯|(q2− t1)|m1 ¯ ¯−1 m2 ¯ ¯ ¯m 2 ... tk= ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯... (qk− t1) |m1| −1 mk − ... − tk−1 ¯ ¯ ¯m k−1 ¯ ¯ ¯ ¯ −1 mk ¯ ¯ ¯ ¯ ¯ mk

2.8. Leak Resistant Arithmetic 67

Dans ce cas, les valeurs pré-calculées sont les |mi|−1mj pour j > i, ce que signifie que il y a

k(k−1)

2

valeurs à stocker. Une fois les calculs des titerminés, l’équation 2.21 peut être évaluée sans d’autres

pré-calculs :

|q|mj = |t1+ m1[t2+ m2(t3+ ... + mk−1tk)...)|mj (2.22)

Le nombre de multiplications où additions requises est donc de k(k−1)2 + k(k − 1). Certaines améliorations sont envisageables ; par exemple, il est possible de définir des bases RNS telles que la taille de |mi− mj| soit plus petite que la moitié de la taille de mi pour tous les i, j. Cela signifie

que le coût de 2.22 équivaut à k(2-˛1) multiplications pour chaque mj, ce qui entraîne une complexité

égale à k(k − 1) multiplications pour une extension de base MRS.

Un exemple de cet algorithme, l’extension de base incluse, avec le source code en Maple, se trouve dans l’Annexe E.

Exponentiation modulaire. Considérant l’usage de la multiplication modulaire de Montgo- mery en RNS (algorithme 8, il est envisageable de l’utiliser pour réaliser l’exponentiation modu- laire. Comme tout algorithme d’exponentiation modulaire basé sur l’algorithme de Montgomery, le premier pas pour le calculer est l’évaluation de [XE]

N, ce qui implique de transformer X vers la

forme de représentation de Montgomery : [X′= X · M

1]N. X′ est aussi appelé N-résidue de x par

rapport à M1. Cela est réalisé à l’aide de l’algorithme 8 ayant comme entrées X et [M12]N. Cette

représentation a l’avantage de rester stable pour toute la multiplication de Montgomery :

M M RN S(X′, Y, N, β

1, β2) ≡ [XY M1]N

A la fin de l’exponentiation, la valeur [Z′ = XE]

N est convertie vers le résultat espéré Z =

[XE]

N à travers d’un appel à la multiplication de Montgomery, en passant comme paramètres

d’entrées Z′ et 1.

En guise d’exemple l’algorithme 9 calcule l’exponentiation modulaire avec la méthode de mul- tiplication et élévation au carré.

68 Introduction à la Cryptographie

Algorithme 9: Exponentiation Modulaire de Montgomery en RNS

Entrée: β1, β2; N dans les deux bases tel que 0 < 4 · N < M1, M2 et

P GCD(N, M1) = 1 ; la valeur pré-calculée [M12]N aussi dans les deux bases ; un

exposant positif représenté en binaire E = Pl−1 i=0eiS

Sortie: un entier positif Z = [XE] N MMERNS(β1, β2, N, [M12]N) 1: U0 ← M M M RN S(1, [M12]N, N, β1, β2) 2: U1 ← M M M RN S(X, [M12]N, N, β1, β2) 3: for i = l − 1 to 0 4: b ← ¯ei 5: Ub ← M M M RN S(Ub, Uei, N, β1, β2) 6: Uei ← M M M RN S(Uei, Uei, N, β1, β2) 7: return Z ← MMMRNS(U0, 1, N, β1, β2)

Il est possible de vérifier que dans une étape i il se rencontrent les calculs U0 = [XEiM1]N et

U1 = [XEi+1M1]N, avec Ei=Pl−1t=iet· 2t−1.

Comparaisons. Cet approche peut être comparée à celle de Kawamura [50], qui a lui même démontré être plus efficace que la solution proposée para Posch [77]. Les algorithmes proposés différent essentiellement dans la multiplication modulaire, plus particulièrement en ce qui concerne l’extension de base. Donc, les auteurs de la LRA comparent les deux méthodes dans le papier [6], dont les résultats sont montrés au Tableau 2.3.

Tab.2.3: Deux différentes méthodes d’implantation de l’exponentiation modulaire en RNS Bajard et al. Kawamura et al.

Lignes 1 et 3 (Alg. 9) 5 · k 5 · k

1re extension de base k2+ k 2 · k2+ 2 · k

2me extension de base k2+ 2 · k 2 · k2+ 2 · k

Total 2 · k2+ 8 · k 4 · k2+ 9 · k

Clé de 1024-bits 2584k 4930k

Même si les valeurs rapportées dans le Tableau 2.3 ne prennent pas en compte que des opéra- tions élémentaires, telles que les multiplications modulaires à simple précision, elles peuvent être calculés en parallèle, la méthode proposée par Bajard est visiblement plus efficace, réalisant la même opération de multiplication modulaire avec approximativement la moitié d’itérations em- ployées par la méthode de Kawamura. Une autre constatation tirée du Tableau 2.3 c’est que la complexité de l’exponentiation modulaires réalisée au travers du RNS réside fondamentalement dans les extensions de base. L’intérêt dans la réalisation de l’extension de base c’est le changement