• Aucun résultat trouvé

1.3 La représentation modulaire des nombres (RNS)

1.3.3 Adaptation RNS de l’algorithme de Montgomery

L’algorithme de l’état de l’art de réduction modulaire en RNS est basé sur l’algorithme de Montgomery, présenté à la section 1.2.2. La première adaptation RNS a été proposée dans [99] et optimisée notamment dans [6,48,64]. L’algorithme 15 décrit l’algorithme dans sa version initiale, avec une généralisation sur les conditions sur les entrées de l’algorithme grâce à un paramètre α, proposée par Guillermin dans [52].

Algorithme 15: Réduction de Montgomery RNS (MR) [99]. Entrées : (−−→Xa,−→Xb ) avec X < αP2, Ma> αP et Mb > 2P Pré-calculs : (−→Pa,−→Pb), −−−−−−→ (−P−1)a,−−−−−→(Ma−1)b Sortie : −→S =−−−−−−−−−→ X|M−1| P P + δ −→ P avec δ ∈ {0, 1} in Ba and Bb

1 −→Qa ←−−→Xa ×−−−−−−→(−P−1)a /* Commentaire : réduction par Ma implicite */

2 −→Qb ← BE−→Qa, Ba, Bb  3 −→Rb ←−→Xb +−→Qb ×−→Pb 4 −→Sb ←−→Rb ×−−−−−→(M−1 a )b 5 −→Sa ← BE−→Sb, Bb, Ba  6 retourner (−→Sa,−→Sb )

Les lignes 1, 3 et 4 correspondent aux 3 lignes de l’algorithme 8 où R = Ma, plutôt qu’à une puissance de 2. Dans l’algorithme original de Montgomery, on utilise le fait que les réductions modulo 2w et les divisions par 2w sont très faciles. Ici, grâce au CRT, calculer dans Ba opère une réduction implicite du produit Xa× (−P−1)a par Ma. Par contre, pour pouvoir effectuer une division par Ma, il nous faut passer par une seconde base RNS Bb (première avec la base Ba), pour laquelle la division exacte par Ma devient triviale comme expliqué au début de la section 1.3. Dans chacune des bases, une seule des 2 opérations est facile, on doit donc avoir recours à des extensions de base pour pouvoir passer de l’une à l’autre.

Dans l’algorithme 8, la sortie de l’algorithme est inférieure à 2P et l’entrée pouvait aller jusqu’à 4P2. Les travaux présentés dans [52] permettent de généraliser la condition sur l’entrée grâce à un paramètre α. Grâce à cette généralisation, on peut utiliser la tech- nique de réduction paresseuse (ou lazy reduction), où on effectue une seule réduction pour calculer par exemple (AB + CD) mod P , et plus généralement une somme de produits ré- duite modulo P . Les multiplications et additions étant bien plus efficaces que les réductions en RNS, cette technique est utilisée par exemple en [8] pour proposer des formules ECC adaptées au RNS. En utilisant les mêmes arguments que pour l’algorithme 8, la taille de la sortie est majorée par 2P (voir [52] pour la démonstration).

Quelques remarques avant de discuter des améliorations de cet algorithme qui ont été proposées dans la littérature. Tout d’abord, l’algorithme est toujours utilisé dans le cas na = nb = n. En effet, son cadre classique d’utilisation est la réduction après un produit de valeurs de FP (ou alors d’une somme de produits). L’entrée est de taille de 2 log2P , il nous faut donc déjà 2n moduli pour la représenter (impliquant une seconde base Bb). De plus, pour obtenir un résultat de taille log2P (ou plutôt log2P + ǫ), il faut que notre première base soit composée d’au moins n moduli (on a Ma > αP ). C’est pourquoi on a toujours na = nb = n. Ensuite, il faut bien noter que le coût global de l’algorithme est largement dominé par les extensions de base. En effet 2 sont requises, et si on utilise une extension de base de type CRT, on a besoin de nanb+ na EMMsinon via le MRS on obtient

na(na−1)

2 + nanb EMM. Ces coûts sont donc bien plus élevés que les na ou nb EMM requises pour faire les lignes 1, 3 et 4.

Il y a d’abord un choix à faire au niveau des algorithmes d’extension de base. Si nous nous considérons sur une architecture parallèle, nous excluons l’extension de base via MRS pour son manque de parallélisme. Ensuite, nous pouvons remarquer qu’il est impossible d’utiliser l’extension de Posch et Posch [98] pour la première extension de base de manière efficace. Cela vient du fait que l’on ne peut pas calculer |X × (−P−1)|

Ma

ma,n+1 effica- cement dans le modulo supplémentaire, puisqu’il ne divise pas Ma. On ne peut donc pas évaluer q dans ce cas. Par contre, la seconde extension de base n’inclut pas de réduction implicite, en effet, les calculs lignes 3 et 4 sont faits de telle sorte que le résultat soit borné par 2P et comme Mb > 2P , aucune réduction n’est opérée. S peut donc bien être calculé dans notre canal supplémentaire, ce qui nous permet d’utiliser l’extension avec extra mo- dulo.

L’extension de base de Kawamura et al. [64] peut, elle, être utilisée pour l’extension de base ligne 1 et celle ligne 5. En fait, en ligne 1, on va utiliser le théorème 5 car puisque Q est une valeur prise modulo Ma, on ne peut pas assurer qu’elle soit plus petite que (1 − σ0)Ma avec σ0 > 0 (on peut avoir Q = Ma−1 par exemple). Le résultat de l’extension de base−→Qb

est alors soit Q soit Q + Madans la seconde base. Il se trouve que cela ne va pas changer le résultat modulo P car on calcule (ligne 3)−→Qb ×−→Pb . L’impact de l’erreur d’approximation se retrouve dans la taille de S avec une borne S < 3P au lieu de S < 2P (il suffit de choisir la base Bb pour un Mb un peu plus grand). Par contre ligne 5, on se retrouve dans le cas d’utilisation du théorème 4 sans erreur d’approximation, car puisque l’on peut borner S suivant P , on peut choisir Bb et σ0 pour obtenir le bon résultat. Il est d’ailleurs nécessaire que cette extension de base soit exacte, car elle mène au résultat final (il n’y a pas l’effet de la multiplication par P comme après la première extension de base).

Enfin, une méthode a été proposée par Bajard et al. [7] remarquant que, puisque l’er- reur de l’approximation de l’extension de base de Kawamura et al. effectuée en ligne 1 n’a comme effet que de fournir une sortie S < 3P au lieu de S < 2P , alors ils ont proposé de ne même pas calculer q de l’équation 1.13. Ainsi, le résultat obtenu en base Bb est, au pire, Q + nMa menant à une sortie S < nP . La valeur n étant assez réduite même pour un RSA 2048 (par exemple si w = 32 alors n = 65) on peut considérer que ce surplus est acceptable. La sortie a donc quelques bits supplémentaires (on devra augmenter la taille de Ma). Par contre, on voit que cette méthode ne s’accorde pas très bien avec la technique de réduction paresseuse car si on calcule par exemple (AB + CD + EF ) mod P alors la sortie sera de taille S < 3nP . Cette technique ne peut-être utilisée que sur la première extension de base, la seconde devant être exacte, elle est souvent combinée à la réduction de Posch et Posch [98] qui elle s’applique dans l’autre extension (voir par exemple [48]).

Le coût de l’algorithme 15 est directement lié au choix des extensions de base. Nous n’allons pas considérer ici le cas d’une extension de base via MRS, pour les raisons déjà évoquées plus tôt. Nous allons utiliser une extension de base via le CRT. On va considérer une configuration avec deux extensions de base BE de Kawamura et al. [64] (que l’on notera KBE) et une autre avec la combinaison BE de Bajard et al. [7]/Posch et BE de Posch [98] (notée BPBE). En comptant les multiplications, et en négligeant la multiplication qMa (considérée comme des additions), on obtient un algorithme avec un coût de 2n2+ 5n EMM (n2+ n par extension de base, plus les lignes 1,3,4). Si on compte la multiplication qM

a,

on obtient 2n2+ 7n pour KBE et 2n2+ 6n pour BPBE.

Dans leurs travaux (indépendants), Guillermin [52] et Gandino et al. [48] ont réduit le coût de l’algorithme MR en factorisant les calculs dans les extensions de base pour y intégrer directement les lignes 1, 3 et 4. Ainsi, la multiplication ligne 1 de l’algo- rithme 14−−→Xa ×

−−−−−→

Ta−1a peut se combiner avec la multiplication ligne 1 de l’algorithme 15, −−→

Xa ×

−−−−−−→

(−P−1)a en calculant directement−−→Xa ×

−−−−−−−−−→

−P−1Ta−1 a. Il faut pour cela pré-calculer −−−−−−−−−→

−P−1Ta−1 a. En fait, on peut faire de même pour la seconde extension de base, en pré- calculant −−−−−−−−−→Ma−1Tb−1b . On peut appliquer cette méthode pour KBE et BPBE pour un gain de 2n EMM. En plus de ces gains, Gandino et al. ont prouvé que nous pouvions facto- riser encore plus pour la seconde extension de base. En effet, ils proposent de modifier la représentation dans la seconde base en gardant les valeurs multipliées par −−−−−→Tb−1b , ce qui permet ensuite de fusionner les lignes 3, 4 et de directement les intégrer dans la ligne 7 de l’algorithme d’extension de base 14. La modification de la représentation requiert encore quelques pré-calculs. Dans les travaux [48] sont présentés les résultats pour KBE et BPBE. Nous obtenons finalement que le coût de l’algorithme 15 est 2n2+ 2n EMM pour KBE et pour BPBE si on compte qMa comme q additions. Sinon on obtient 2n2+ 4n EMM pour

KBE et 2n2+ 3n EMM pour BPBE.