MathQuest

Congruences modulaires

⏱ ~12 min·+30 XP
💡

Pourquoi apprendre ça ?

L'arithmétique modulaire est l'arithmétique "des restes". Deux entiers sont congrus modulo nn s'ils ont le même reste dans la division par nn. Une horloge fonctionne modulo 12 : 13h ≡ 1h (mod 12). Cette idée simple, formalisée par Gauss, est fondamentale en cryptographie (RSA), en informatique et en mathématiques pures. Le théorème chinois des restes permet de résoudre simultanément plusieurs congruences — outil essentiel de la cryptographie moderne.

🎯

Analogie

L'arithmétique modulo nn est comme une piste circulaire à nn cases. Quand on dépasse la case nn, on revient à 0. Les jours de la semaine sont modulo 7 : dans 100 jours, c'est quel jour ? Il suffit de calculer 100mod7=2100 \bmod 7 = 2 — deux jours après aujourd'hui. Et le théorème chinois des restes, c'est comme reconstituer l'heure exacte à partir de plusieurs horloges incomplètes, chacune montrant un reste différent.

Définition, propriétés et Z/nZ

📐

Théorie

On dit que aa est congru à bb modulo nn, noté ab(modn)a \equiv b \pmod{n}, si n(ab)n \mid (a - b).

Compatibilité avec les opérations : si aaa \equiv a' et bb(modn)b \equiv b' \pmod{n}, alors : a+ba+b(modn)a×ba×b(modn)akak(modn)a + b \equiv a' + b' \pmod{n} \qquad a \times b \equiv a' \times b' \pmod{n} \qquad a^k \equiv a'^k \pmod{n}

Anneau Z/nZ\mathbb{Z}/n\mathbb{Z} : les classes {[0],[1],,[n1]}\{[0],[1],\ldots,[n-1]\} forment un anneau avec addition et multiplication modulo nn.

Inversibilité : [a][a] est inversible dans Z/nZ\mathbb{Z}/n\mathbb{Z} si et seulement si gcd(a,n)=1\gcd(a,n) = 1.

Si n=pn = p est premier, tous les éléments non nuls sont inversibles : Z/pZ\mathbb{Z}/p\mathbb{Z} est un corps.

Petit théorème de Fermat : si pp premier et gcd(a,p)=1\gcd(a,p) = 1, alors ap11(modp)a^{p-1} \equiv 1 \pmod{p}.

Théorème d'Euler : si gcd(a,n)=1\gcd(a,n) = 1, alors aϕ(n)1(modn)a^{\phi(n)} \equiv 1 \pmod{n}, avec ϕ(pq)=(p1)(q1)\phi(pq) = (p-1)(q-1) pour p,qp, q premiers distincts.

Inverse via Fermat (si pp premier) : a1ap2(modp)a^{-1} \equiv a^{p-2} \pmod{p}.

📝

Arithmétique modulo 7 et Fermat

3100mod73^{100} \bmod 7 : par Fermat, 361(mod7)3^6 \equiv 1 \pmod 7. Or 100=6×16+4100 = 6 \times 16 + 4, donc : 3100=(36)16341818111×7=4(mod7)3^{100} = (3^6)^{16} \cdot 3^4 \equiv 1 \cdot 81 \equiv 81 - 11 \times 7 = 4 \pmod{7}

Inverse : 3135=2435(mod7)3^{-1} \equiv 3^{5} = 243 \equiv 5 \pmod 7 (car 3×5=1513 \times 5 = 15 \equiv 1).

Résoudre 2x3(mod5)2x \equiv 3 \pmod 5 : 213(mod5)2^{-1} \equiv 3 \pmod 5 (car 2×3=612 \times 3 = 6 \equiv 1), donc x3×3=94(mod5)x \equiv 3 \times 3 = 9 \equiv 4 \pmod 5.

🧩

Checkpoint

Quel est le reste de dans la division par 7 ?

Théorème chinois des restes (CRT)

📐

Théorie

Théorème chinois des restes (CRT) : Si n1,,nkn_1, \ldots, n_k sont deux à deux premiers entre eux, alors le système : {xa1(modn1)xak(modnk)\begin{cases} x \equiv a_1 \pmod{n_1} \\ \vdots \\ x \equiv a_k \pmod{n_k} \end{cases} admet une solution unique modulo N=n1nkN = n_1 \cdots n_k.

Construction : Pour chaque ii, on pose Ni=N/niN_i = N/n_i et Mi=Ni1modniM_i = N_i^{-1} \bmod n_i. La solution est : xi=1kaiNiMi(modN)x \equiv \sum_{i=1}^k a_i N_i M_i \pmod{N}

Interprétation algébrique : Le CRT établit l'isomorphisme : Z/NZZ/n1Z××Z/nkZ\mathbb{Z}/N\mathbb{Z} \cong \mathbb{Z}/n_1\mathbb{Z} \times \cdots \times \mathbb{Z}/n_k\mathbb{Z}

Un entier est entièrement déterminé par ses restes modulo des modules premiers entre eux.

📝

Application du CRT — deux congruences

Résoudre : {x2(mod3)x3(mod5)\begin{cases} x \equiv 2 \pmod{3} \\ x \equiv 3 \pmod{5} \end{cases}

N=15N = 15, N1=5N_1 = 5, N2=3N_2 = 3.

M1=51mod3M_1 = 5^{-1} \bmod 3 : 52(mod3)5 \equiv 2 \pmod 3, 2×2=41(mod3)2 \times 2 = 4 \equiv 1 \pmod 3, donc M1=2M_1 = 2.

M2=31mod5M_2 = 3^{-1} \bmod 5 : 3×2=61(mod5)3 \times 2 = 6 \equiv 1 \pmod 5, donc M2=2M_2 = 2.

x2×5×2+3×3×2=20+18=38382×15=8(mod15)x \equiv 2 \times 5 \times 2 + 3 \times 3 \times 2 = 20 + 18 = 38 \equiv 38 - 2 \times 15 = 8 \pmod{15}

Vérification : 82(mod3)8 \equiv 2 \pmod 3 ✓ et 83(mod5)8 \equiv 3 \pmod 5

RSA — cryptographie basée sur les congruences

📐

Théorie

Génération des clés RSA :

  1. Choisir deux grands premiers pp et qq, poser n=pqn = pq
  2. Calculer ϕ(n)=(p1)(q1)\phi(n) = (p-1)(q-1)
  3. Choisir ee tel que gcd(e,ϕ(n))=1\gcd(e, \phi(n)) = 1 (souvent e=65537e = 65537)
  4. Calculer d=e1modϕ(n)d = e^{-1} \bmod \phi(n) via l'algorithme d'Euclide étendu

Chiffrement : cme(modn)c \equiv m^e \pmod{n}Déchiffrement : mcd(modn)m \equiv c^d \pmod{n}

Pourquoi ça marche : ed1(modϕ(n))ed \equiv 1 \pmod{\phi(n)}, donc cd=med=m1+kϕ(n)m(mϕ(n))km(modn)c^d = m^{ed} = m^{1+k\phi(n)} \equiv m \cdot (m^{\phi(n)})^k \equiv m \pmod n par Euler.

Sécurité : repose sur la difficulté de factoriser n=pqn = pq pour des grands premiers (2048 bits en pratique). Sans pp et qq, impossible de calculer ϕ(n)\phi(n) et donc dd.

Tests de primalité :

  • Test de Fermat : si an1≢1(modn)a^{n-1} \not\equiv 1 \pmod n, alors nn est composé. Si 1\equiv 1, probablement premier. Faille : nombres de Carmichael (ex. 561=3×11×17561 = 3 \times 11 \times 17) passent le test mais sont composés.
  • Test de Miller-Rabin : variante probabiliste plus robuste, utilisée en pratique.
  • Test AKS (2002) : premier test déterministe polynomial en temps.
📝

RSA miniature

p=11p = 11, q=13q = 13, n=143n = 143, ϕ(n)=10×12=120\phi(n) = 10 \times 12 = 120.

Choisir e=7e = 7 (car gcd(7,120)=1\gcd(7,120) = 1). Trouver dd : 7d1(mod120)7d \equiv 1 \pmod{120}.

7×103=721=6×120+17 \times 103 = 721 = 6 \times 120 + 1, donc d=103d = 103.

Chiffrer m=2m = 2 : c27=128(mod143)c \equiv 2^7 = 128 \pmod{143}. Comme 128<143128 < 143, c=128c = 128.

Déchiffrer : 128103mod143=2128^{103} \bmod 143 = 2 (par exponentiation rapide et théorème d'Euler) ✓

⚠️

Piège : la réciproque du petit théorème de Fermat est fausse

Des entiers composés peuvent satisfaire an11(modn)a^{n-1} \equiv 1 \pmod n — ce sont les nombres de Carmichael (ex. 561=3×11×17561 = 3 \times 11 \times 17). Le test de Fermat peut être trompé par eux. En pratique, RSA utilise le test de Miller-Rabin (probabiliste, très fiable) ou l'algorithme AKS (déterministe) pour générer des nombres premiers.

🧩

Checkpoint

Par le petit théorème de Fermat, quelle est la valeur de ?

🧩

Checkpoint

Le système et admet comme solution unique modulo 6 :

🧩

Checkpoint

Dans RSA avec , , , , quelle est la clé privée telle que ?

Ordre d'un élément et critères de divisibilité

📐

Théorie

Ordre d'un élément modulo nn :

L'ordre de aa dans (Z/nZ)(\mathbb{Z}/n\mathbb{Z})^* est le plus petit entier k1k \geq 1 tel que ak1(modn)a^k \equiv 1 \pmod{n}, noté ordn(a)\text{ord}_n(a).

L'ordre divise toujours ϕ(n)\phi(n) (conséquence du théorème de Lagrange).

Si ordn(a)=ϕ(n)\text{ord}_n(a) = \phi(n), alors aa est un générateur (racine primitive) de (Z/nZ)(\mathbb{Z}/n\mathbb{Z})^*.

Critères de divisibilité via congruences :

| Diviseur | Condition | Raison (10?(modd)10 \equiv ? \pmod{d}) | |---|---|---| | 22 | Dernier chiffre pair | 100(mod2)10 \equiv 0 \pmod 2 | | 55 | Dernier chiffre {0,5}\in \{0,5\} | 100(mod5)10 \equiv 0 \pmod 5 | | 33 | Somme des chiffres 0(mod3)\equiv 0 \pmod 3 | 101(mod3)10 \equiv 1 \pmod 3 | | 99 | Somme des chiffres 0(mod9)\equiv 0 \pmod 9 | 101(mod9)10 \equiv 1 \pmod 9 | | 1111 | Somme alternée 0(mod11)\equiv 0 \pmod{11} | 101(mod11)10 \equiv -1 \pmod{11} |

Preuve du critère pour 3 : si N=ak10k++a110+a0N = a_k 10^k + \cdots + a_1 10 + a_0, alors comme 101(mod3)10 \equiv 1 \pmod 3, on a 10i1(mod3)10^i \equiv 1 \pmod 3 pour tout ii, donc Nak++a0(mod3)N \equiv a_k + \cdots + a_0 \pmod 3.

Critère pour 11 : comme 101(mod11)10 \equiv -1 \pmod{11}, on a 10i(1)i(mod11)10^i \equiv (-1)^i \pmod{11}, d'où Na0a1+a2a3+(mod11)N \equiv a_0 - a_1 + a_2 - a_3 + \cdots \pmod{11}.

Application en hachage : dans une table de hachage de taille nn première, l'indice de clé kk est kmodnk \bmod n. Choisir nn premier garantit que l'ordre de chaque base est maximal, minimisant les collisions par sondage linéaire.

📝

Ordre d'un élément et critère de divisibilité par 11

Ordre de 22 modulo 77 : 21=2,22=4,23=81(mod7)2^1 = 2,\quad 2^2 = 4,\quad 2^3 = 8 \equiv 1 \pmod 7 Donc ord7(2)=3\text{ord}_7(2) = 3. Vérification : 3ϕ(7)=63 \mid \phi(7) = 6

Ordre de 33 modulo 77 : 31=3, 32=2, 33=6, 34=4, 35=5, 36=1(mod7)3^1=3,\ 3^2=2,\ 3^3=6,\ 3^4=4,\ 3^5=5,\ 3^6=1 \pmod 7. Donc ord7(3)=6=ϕ(7)\text{ord}_7(3) = 6 = \phi(7) : 33 est une racine primitive modulo 77.

Critère de divisibilité par 11 pour N=4719N = 4\,719 : 47+19=110(mod11)4 - 7 + 1 - 9 = -11 \equiv 0 \pmod{11} Donc 47194\,719 est divisible par 1111 (en effet 4719=11×4294\,719 = 11 \times 429) ✓

🧩

Checkpoint

Quel est l'ordre de modulo ?

🧩

Checkpoint

Le nombre est-il divisible par 9 ?

À retenir

  • Congruence : ab(modn)a \equiv b \pmod n ssi n(ab)n \mid (a-b) — compatible avec ++, ×\times et les puissances
  • Fermat : ap11(modp)a^{p-1} \equiv 1 \pmod p pour pp premier et gcd(a,p)=1\gcd(a,p)=1 ; inverse : a1ap2a^{-1} \equiv a^{p-2}
  • CRT : système à modules premiers entre eux \Rightarrow solution unique modulo N=niN = \prod n_i
  • Ordre de aa modulo nn : plus petit k1k \geq 1 tel que ak1a^k \equiv 1 — divise toujours ϕ(n)\phi(n)
  • Critères de divisibilité : par 3 et 9 via somme des chiffres, par 11 via somme alternée (conséquence de 10±110 \equiv \pm 1)
  • RSA : chiffrement cme(modn)c \equiv m^e \pmod n, déchiffrement mcd(modn)m \equiv c^d \pmod n — sécurité fondée sur la factorisation
Passer aux exercices →