Arithmétique

Fermat, Euler et les restes chinois

Calculer modulo n, c'est calculer sur une horloge à n heures. Sur ces horloges, les puissances finissent toujours par revenir à 1, chaque nombre premier avec n a un inverse, et plusieurs petites horloges valent une grande. Trois théorèmes vieux de plusieurs siècles, ceux de Fermat, d'Euler et des restes chinois, qui font aujourd'hui tourner la cryptographie de nos cartes bancaires. Cinq planches pour les voir, les comprendre et s'en servir.

Vue d'ensemble

On écrit a ≡ b (mod n) lorsque a et b ont le même reste dans la division par n. Les congruences se manipulent comme des égalités : on peut les additionner et les multiplier. Trois théorèmes structurent ce calcul :

ThéorèmeÉnoncéCe qu'il permet
Fermat (1640)si p est premier et ne divise pas a, alors aᵖ⁻¹ ≡ 1 (mod p)réduire les exposants, tester la primalité
Euler (1763)si a est premier avec n, alors aφ(n) ≡ 1 (mod n)étendre Fermat à tout n, construire RSA
Wilson (1770)p est premier si et seulement si (p − 1)! ≡ −1 (mod p)caractériser les nombres premiers
Restes chinoissi m et n sont premiers entre eux, connaître x mod m et x mod n, c'est connaître x mod mndécouper un grand calcul en petits
Les tables de multiplication sur une horloge. Chaque heure x est reliée à k·x (mod n) : la figure se transforme quand le multiplicateur k varie (cardioïde pour k = 2, néphroïde pour k = 3). À droite, les puissances successives de 3 modulo 17 font le tour de toutes les heures sauf 0 avant de revenir à 1 : 3 est une « racine primitive » modulo 17.
1

Le petit théorème de Fermat : les puissances tournent en rond

Que deviennent a, a², a³… quand on ne garde que leur reste modulo un nombre premier p ?

Il n'y a que p − 1 restes non nuls possibles, donc la suite des puissances finit par se répéter. Elle revient toujours à 1. Le plus petit exposant k tel que aᵏ ≡ 1 est l'ordre de a, et il divise toujours p − 1 (c'est le théorème de Lagrange sur les groupes). En particulier aᵖ⁻¹ ≡ 1 (mod p) : c'est le petit théorème de Fermat, énoncé en 1640 dans une lettre à Frénicle, sans démonstration.

L'horloge modulo p : les puissances a¹, a², a³… de la base choisie, reliées dans l'ordre. Le cycle se referme en 1, après un nombre de pas égal à l'ordre de a.
La table des puissances aᵏ mod p (ligne a, colonne k). La dernière colonne, k = p − 1, est entièrement faite de 1 : c'est le théorème de Fermat, lu d'un coup d'œil.
Puissances de a modulo p
Ordre de a · divise p − 1 ?
Nombre de bases de chaque ordre d, comparé à φ(d)
aᵖ⁻¹ mod p pour toutes les bases
Les racines primitives. Certaines bases ont l'ordre maximal p − 1 : leurs puissances passent par tous les restes non nuls. Gauss a démontré qu'il en existe toujours modulo un nombre premier, et qu'il y en a exactement φ(p − 1). Le contrôle ci-dessus le vérifie pour chaque ordre d : le nombre de bases d'ordre d est φ(d).
2

L'indicatrice d'Euler : Fermat pour tous les modules

Et si le module n'est pas premier ?

Modulo 12, la base 2 ne revient jamais à 1 : ses puissances valent 2, 4, 8, 4, 8… Seuls les nombres premiers avec n se comportent bien. Euler compte ces nombres : φ(n) est le nombre d'entiers de 1 à n premiers avec n, et aφ(n) ≡ 1 (mod n) pour tout a premier avec n. La preuve est une belle idée : multiplier par a permute les φ(n) nombres premiers avec n. Leur produit P ne change donc pas, d'où aφ(n)·P ≡ P, et l'on simplifie par P.

L'horloge modulo n : les nombres premiers avec n sont en bleu. Les flèches envoient x sur a·x mod n. Si a est premier avec n, elles permutent les points bleus entre eux ; sinon, plusieurs points tombent au même endroit.
φ(n) pour n de 1 à 200. Les nombres premiers forment la ligne du haut, φ(p) = p − 1. Le point noir est le n choisi.
φ(n) compté · par la formule n∏(1 − 1/p)
Multiplication par a : permutation ?
Produit P des inversibles · aφ(n) mod n
Σ φ(d) pour d divisant n (identité de Gauss)
Calculer φ(n). Si n = p₁e₁…pkek, alors φ(n) = n(1 − 1/p₁)…(1 − 1/pk). Par exemple φ(12) = 12 × ½ × ⅔ = 4 : ce sont 1, 5, 7 et 11. La formule est facile si l'on connaît la factorisation de n, et pratiquement impossible à obtenir sans elle quand n a des centaines de chiffres. Toute la sécurité de RSA repose sur cette différence.
3

Les inverses modulo n et le théorème de Wilson

Peut-on diviser sur une horloge ?

Diviser par a, c'est multiplier par un nombre b tel que ab ≡ 1 (mod n). Un tel inverse existe exactement quand a est premier avec n, et la relation de Bézout le fournit : l'algorithme d'Euclide étendu trouve u et v avec au + nv = 1, donc au ≡ 1. Modulo un nombre premier p, tous les restes non nuls ont un inverse. Rangés en paires {x, x⁻¹}, ils se simplifient deux à deux dans le produit (p − 1)!. Seuls 1 et p − 1 sont leur propre inverse, d'où le théorème de Wilson : (p − 1)! ≡ −1 (mod p).

Chaque nombre inversible est relié à son inverse. Les arcs se forment un par un ; les points cerclés sont leur propre inverse (x² ≡ 1). Les nombres non inversibles sont en gris.
(n − 1)! mod n pour n de 2 à 40 : la barre atteint n − 1 (c'est-à-dire −1) exactement pour les nombres premiers (en bleu), et vaut 0 pour les composés, sauf n = 4.
Euclide étendu : divisions successives et inverse de a
Contrôle : inverse cherché parmi tous les restes
(n − 1)! mod n
Un critère parfait mais inutilisable. Le théorème de Wilson caractérise exactement les nombres premiers, mais (n − 1)! a des milliards de chiffres dès que n dépasse quelques milliers : c'est une curiosité théorique, pas un test pratique. Les vrais tests de primalité partent de Fermat (planche 5).
4

Le théorème des restes chinois : plusieurs petites horloges en valent une grande

« Un nombre laisse 2 quand on le divise par 3, 3 par 5, et 2 par 7. Quel est-il ? »

Ce problème vient du Sunzi suanjing, un manuel chinois des IIIᵉ–Vᵉ siècles. Si les modules sont premiers entre eux deux à deux, il y a exactement une solution modulo leur produit, et on la construit : x = Σ rᵢMᵢyᵢ, où Mᵢ est le produit des autres modules et yᵢ l'inverse de Mᵢ modulo mᵢ (planche 3). Vu autrement : compter k = 0, 1, 2… sur deux horloges à la fois, c'est avancer en diagonale sur une grille. Si les deux tailles sont premières entre elles, la diagonale passe par toutes les cases avant de revenir au départ.

À gauche, k sur l'horloge à m₁m₂ heures ; à droite, le couple (k mod m₁, k mod m₂) sur la grille m₁ × m₂. Quand pgcd(m₁, m₂) > 1, certaines cases ne sont jamais atteintes : la correspondance n'est plus une bijection.
pgcd(m₁, m₂) · cases atteintes

Le problème de Sunzi, avec vos restes

Les nombres de 0 à 104 : ceux qui ont le bon reste modulo 3 (ligne rouge), 5 (verte) et 7 (bleue). Un seul est sur les trois lignes.
Construction x = Σ rᵢ Mᵢ yᵢ mod 105
Contrôle par recherche des 105 nombres
La version algébrique. Le théorème dit que l'anneau ℤ/mnℤ « est » l'anneau ℤ/mℤ × ℤ/nℤ quand pgcd(m, n) = 1 : additionner ou multiplier deux nombres revient à le faire séparément sur chaque petite horloge. On en déduit que φ(mn) = φ(m)φ(n), et c'est ainsi que les ordinateurs accélèrent le calcul RSA (planche 5).
5

Signature : RSA, les nombres de Carmichael et la puissance rapide

Les trois théorèmes réunis protègent les communications du monde entier, et permettent de reconnaître un nombre premier de mille chiffres en une fraction de seconde.

On choisit deux nombres premiers p et q, on publie n = pq et un exposant e premier avec φ(n) = (p − 1)(q − 1). On garde secret l'inverse d de e modulo φ(n). Chiffrer un message m (un nombre inférieur à n), c'est calculer c = mᵉ mod n ; déchiffrer, c'est calculer cd mod n. Le théorème d'Euler garantit que l'on retrouve m. Pour trouver d, il faut φ(n), donc p et q : connaître n ne suffit pas tant qu'on ne sait pas le factoriser.

Chaque lettre devient un nombre m (A = 1, B = 2…), chiffré en c = mᵉ mod n (ligne du milieu), puis déchiffré en cd mod n (ligne du bas).
Clé publique (n, e) · clé secrète d
Déchiffrement de tous les messages m de 0 à n − 1
Déchiffrement accéléré par les restes chinois

Fermat donne un test : si an−1 ≢ 1 (mod n) pour une base a, alors n n'est certainement pas premier. Mais la réciproque est fausse. Certains nombres composés, les nombres de Carmichael (1910), passent le test pour toutes les bases premières avec eux. Le plus petit est 561 = 3 × 11 × 17. Le test de Miller-Rabin (1976-1980) affine Fermat en examinant aussi les racines carrées de 1 : un nombre composé le passe pour au plus un quart des bases, si bien que vingt bases au hasard suffisent en pratique.

Chaque case est une base a de 1 à n − 1. Gris : a n'est pas premier avec n. Orange : a trompe le test de Fermat. Rouge : a trompe aussi Miller-Rabin. Bleu : a démasque n.
Factorisation
Bases qui trompent Fermat (parmi les inversibles)
Bases qui trompent Miller-Rabin · borne 1/4
Nombres de Carmichael : critère de Korselt jusqu'à 20 000, et recherche exhaustive (toutes les bases de tous les composés impairs) jusqu'à 3 000

Calculer ae mod n en multipliant e fois par a serait impossible pour les exposants de RSA, qui ont des centaines de chiffres. L'exponentiation rapide lit l'exposant en binaire : on élève au carré à chaque chiffre, et l'on multiplie par a quand le chiffre vaut 1. Le nombre d'opérations ne croît que comme le nombre de chiffres de e : environ 2 log₂ e multiplications au lieu de e.

L'exposant en binaire, lu de gauche à droite : chaque chiffre provoque une élévation au carré, et chaque 1 une multiplication par a. Les valeurs intermédiaires restent toujours inférieures à n.
Résultat · nombre de multiplications
Contrôle par multiplications successives
À grande échelle : 21 000 000 mod 1 000 003, puis le contrôle de Fermat

Une brève histoire

IIIᵉ–Vᵉ s.Le Sunzi suanjing pose le problème des restes ; Qin Jiushao en donne une méthode générale en 1247.
1640Pierre de Fermat énonce son « petit » théorème dans une lettre à Frénicle de Bessy, sans démonstration.
1736Leonhard Euler publie la première démonstration ; Leibniz en avait trouvé une vers 1683 sans la publier.
1763Euler introduit la fonction qui compte les nombres premiers avec n (Gauss la notera φ) et généralise le théorème à tout module.
1770–1771Edward Waring publie le théorème de son élève John Wilson ; Lagrange le démontre.
1801Gauss, dans les Disquisitiones arithmeticae, invente la notation ≡ et prouve l'existence des racines primitives.
1910Robert Carmichael étudie les nombres composés qui trompent le test de Fermat.
1977Rivest, Shamir et Adleman inventent RSA, fondé sur le théorème d'Euler (publié en 1978).
1994Alford, Granville et Pomerance démontrent qu'il existe une infinité de nombres de Carmichael.

En résumé

Les puissances reviennent à 1

Modulo p premier, aᵖ⁻¹ ≡ 1 ; modulo n quelconque, aφ(n) ≡ 1 si a est premier avec n. L'ordre de a divise toujours φ(n).

Diviser sur une horloge

a est inversible modulo n exactement quand pgcd(a, n) = 1, et Euclide étendu calcule l'inverse. Modulo p, (p − 1)! ≡ −1 : c'est Wilson.

Découper pour régner

Si les modules sont premiers entre eux, plusieurs petites horloges valent une grande. RSA, les tests de primalité et l'exponentiation rapide reposent sur ces trois idées.

Pour aller plus loin

Une preuve par les colliers. Avec a couleurs, il y a aᵖ colliers de p perles. Les a colliers unicolores mis à part, les autres se regroupent par paquets de p rotations distinctes (p premier). Donc p divise aᵖ − a : c'est le théorème de Fermat.

Logarithme discret. Retrouver k à partir de aᵏ mod p est très difficile. C'est la base de l'échange de clés de Diffie et Hellman (1976).

Liens. PGCD et relation de Bézout, congruences, nombres premiers de Mersenne (test de Lucas-Lehmer), encryptage et chiffrement, structures algébriques (le groupe des inversibles modulo n), modules sur un anneau (les restes chinois).