Reduction de Montgomery

Reduction de Montgomery

Réduction de Montgomery

La réduction de Montgomery est un algorithme efficace pour la multiplication en arithmétique modulaire introduite en 1985 par Peter L. Montgomery. Plus concrètement, c'est une méthode pour calculer:

a\ \times\ b\ (mod\ n)

La méthode est surtout efficace lorsque qu'un grand nombre de multiplications modulaires avec un même n doivent être effectuées car le calcul nécessite des étapes de normalisation. Elle est donc particulièrement adaptée au calcul d'Exponentiation modulaire.

a^b\ (mod\ n)

Elle est maintenant très utilisée en cryptologie.

Enoncé formel

Soit n est un nombre entier positif, et soit R et T des entiers tels que R > n, pgcd(n,R) = 1 et 0 \le T<nR. La réduction de Montgomery de T modulo n qui préserve R est défini comme la valeur

TR^{-1} \pmod{n}\,

R − 1 est l'inverse modulaire de R et mod désigne la congruence sur les entiers. La fonction de réduction peut être décrite à l'aide du pseudo-code suivant:

fonction reduction(T,N,R) {
 
  /* Calcul du nombre de multiples à ajouter pour que */
  /* T + m*N soit divisible par R                     */
  ni = R-ModInverse(N,R);
  m = ((T mod R) * ni) mod R;  
  /* Ajout des multiples et décalage */
  x = (T + m*N) / R;           
  if (x < N)  return x;
  else        return x - N;
 
}

ou ModInverse(N,R) désigne l'inverse modulaire de N (mod R). Si on choisit R = 2k et que ni peut être pré-calculé alors la fonction ci-dessus se réduit à 2 multiplications (en négligeant le temps pris par les autres opérations moins couteuses).

Multiplication de Montgomery

L'algorithme de la multiplication de Montgomery est très simple. Il suffit à chaque pas (ligne) d'une multiplication classique d'ajouter un multiple de n bien choisi de façon à faire apparaître des 0 dans le résultat. Le modulo n se réduit alors à un simple décalage des digits. Cette opération d'ajout de multiples de n est autorisée puisque l'on travaille modulo n. Un choix de R classique en base 2 consiste à prendre: R = 2^k (mod\ n),\ 2^k\ >\ n et k multiple de 32. L'algorithme calcule  a.b.R^{-1}\ (mod\ n) . Attention, dans certain cas, l'algorithme retourne un résultat compris entre n et 2n. Il faut alors retrancher n au résultat.

Exemple en base 10

Soit à calculer 234*167 (mod 293), on choisit R=106 (mod 293)=284 pour 6 digits, il suffit de multiplier a ou b par R pour obtenir  a.b.R.R^{-1}\ (mod\ n) = a.b\ (mod\ n) . En choisissant a ou b égal à 1, on obtient une réduction modulo n simple. R (ici réduit mod n) étant inférieur à n, la condition a.b<R (non réduit) est suffisante pour éviter un dépassement.

   066456  (234*284)
 x 000167
   ------
1) 465192
  +  1758  (6x293)
   466950
   ------
2) 445431  (398736+466950/10)
  +   879  (3x293)
   446310  
   ------
3) 111087  (66456+446310/10)
  +   293  (1x293)
   111380  
   ------
4)  11138
  +  1172  (4x293)
    12310  
   ------
5)   1231
  +   879  (3x293)
     2110  
   ------
6)    211
  +   879  (3x293)
     1090
   ------
  =   109

On obtient bien le résultat, néanmoins il faut effectuer la normalisation (*284),ce qui coûte une multiplication supplémentaire et un nombre de digits plus grand mais ce procédé peut être adapté en fonction du besoin de façon à minimiser le nombre de multiplications ainsi que le nombre de digits nécessaires. Le calcul du nombre de multiples à ajouter à chaque ligne requiert l'inversion modulaire d'un seul digit, ici le 3 de 293 (voir ci-dessous). A noter, qu'en base 10, n ne peut pas se terminer par 0,2,4,5,6,8. L'utilisation d'une base 2p est beaucoup plus pratique.

Exemple pour l'étape 1) , On a 3 − 1 = 7 (mod 10), on veut trouver b tel que 2 + 3.b = 0\ (mod\ 10).

       2 + b*3 = 0        (mod 10)
       b*3     = -2       (mod 10) = 8  (mod 10)
       b       = 8 * 3^-1 (mod 10)
       b       = 8 * 7    (mod 10) = 56 (mod 10) = 6
Ce document provient de « R%C3%A9duction de Montgomery ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Reduction de Montgomery de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Réduction de montgomery — La réduction de Montgomery est un algorithme efficace pour la multiplication en arithmétique modulaire introduite en 1985 par Peter L. Montgomery. Plus concrètement, c est une méthode pour calculer: La méthode est surtout efficace lorsque qu un… …   Wikipédia en Français

  • Réduction de Montgomery — La réduction de Montgomery est un algorithme efficace pour la multiplication en arithmétique modulaire introduite en 1985 par Peter L. Montgomery. Plus concrètement, c est une méthode pour calculer : La méthode est surtout efficace lorsque… …   Wikipédia en Français

  • Montgomery — or Montgomerie may refer to: Contents 1 People 2 Places 2.1 In Australia …   Wikipedia

  • Montgomery reduction — In arithmetic computation, Montgomery reduction is an algorithm introduced in 1985 by Peter Montgomery that allows modular arithmetic to be performed efficiently when the modulus is large (typically several hundred bits). A single application of… …   Wikipedia

  • Cheltenham Township, Montgomery County, Pennsylvania — Coordinates: 40°04′00″N 75°06′59″W / 40.0666667°N 75.11639°W / 40.0666667; 75.11639 …   Wikipedia

  • Lloyd Montgomery Pidgeon — Lloyd Montgomery Pidgeon, O.C., M.B.E., Ph.D., LL.D. (December 3 1903 ndash; December 9 1999) was a Canadian chemist who developed the Pidgeon process, one of the methods of magnesium metal production, via a silicothermic reduction. He is… …   Wikipedia

  • Liste Des Matières De La Théorie Des Nombres — Article détaillé : cryptologie. . Sommaire 1 Facteur (mathématiques) 2 Fractions 3 Arithmétique modulaire 4 …   Wikipédia en Français

  • Liste des matieres de la theorie des nombres — Liste des matières de la théorie des nombres Article détaillé : cryptologie. . Sommaire 1 Facteur (mathématiques) 2 Fractions 3 Arithmétique modulaire 4 …   Wikipédia en Français

  • Liste des matières de la théorie des nombres — Article détaillé : cryptologie. . Sommaire 1 Facteur (mathématiques) 2 Fractions 3 Arithmétique modulaire 4 Test de primalité e …   Wikipédia en Français

  • World War II — the war between the Axis and the Allies, beginning on September 1, 1939, with the German invasion of Poland and ending with the surrender of Germany on May 8, 1945, and of Japan on August 14, 1945. Abbr.: WWII * * * or Second World War (1939–45)… …   Universalium

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”