Exponentiation modulaire

From Wikipedia, the free encyclopedia

En mathématiques, plus précisément en arithmétique modulaire, l’exponentiation modulaire est un type d'élévation à la puissance (exponentiation) réalisée sur des entiers modulo un entier. Elle est particulièrement utilisée en informatique, spécialement dans le domaine de la cryptologie.

Etant donnés une base b, un exposant e et un entier non nul m, l'exponentiation modulaire consiste à calculer c tel que :

Par exemple, si b = 5, e = 3, et m = 13, le calcul de c donne 8.

Calculer l'exponentiation modulaire est considéré comme facile, même lorsque les nombres en jeu sont énormes. Au contraire, calculer le logarithme discret (trouver e à partir de b, c et m) est reconnu comme difficile. Ce comportement de fonction à sens unique fait de l'exponentiation modulaire une bonne candidate pour être utilisée dans les algorithmes de cryptologie.

Le calcul naïf de l'exponentielle modulaire est le suivant : on multiplie e fois le nombre b par lui-même, et une fois l'entier be obtenu, on calcule son reste modulo m via l'algorithme de division euclidienne. Cette méthode souffre de deux défauts :

  • d'une part, le nombre de multiplications peut facilement être réduit, par la méthode générale d'exponentiation rapide : il n'y aura plus que log(e) multiplications à effectuer.
  • d'autre part, on ne profite pas de la structure d'anneau commutatif du domaine dans lequel on travaille : les entiers modulo m. Or, cette structure autorise que les calculs soient faits directement dans cet anneau, sans passage au préalable par les entiers. Pour mettre en œuvre cette idée, il faut en pratique, à chaque nouvelle multiplication effectuée, calculer un nouveau reste modulo m. On rajoute ainsi de nouvelles opérations (pour chaque multiplication, une division euclidienne), mais on gagne par ailleurs du fait que la taille des données à manipuler est limitée par celle de m.

La suite de l'article décrit ces différentes adaptations et discute leur efficacité en fonction notamment de la taille des données.

Méthode directe

La méthode la plus directe pour calculer un exposant modulaire est de calculer be directement, puis de prendre ce nombre modulo m. Essayons de calculer c, avec b = 4, e = 13, et m = 497 :

Utilisons une calculatrice pour calculer 413, on obtient la valeur 67 108 864. Prenons celle-ci modulo 497, le résultat c obtenu est 445. Bien que b n'ait qu'un chiffre et e deux, la valeur be atteint une longueur de 8 chiffres.

En cryptologie forte, b a souvent au moins 256 chiffres binaires (77 chiffres décimaux). Prenons b = 5 × 1076 et e = 17, deux valeurs parfaitement raisonnables. Dans cet exemple, b a 77 chiffres décimaux et e deux, mais be a 1 304 chiffres. Ce genre de calculs est possible sur les ordinateurs modernes, mais l'énormité de ce genre de nombre ralentit considérablement la vitesse des calculs. A mesure que la taille de b et e augmente pour améliorer la sécurité du chiffrement, la valeur de be devient ingérable.

Le temps requis pour réaliser l'exponentiation dépend de l'environnement opératoire et du processeur. Le calcul de l'exponentiation par une série de multiplications requiert un temps O(e).

Méthode utilisant moins de mémoire

La méthode la plus efficace

Notes et références

Related Articles

Wikiwand AI