ARITHMETIQUE MODULAIRE Pr BELKHIR Abdelkader USTHB En cryptographie on fait un usage intensif de l’arithmétique modulo n. Celle-ci permet de restreindre la taille de tous les résultats intermédiaires et de la valeur finale. C’est indispensable, par exemple, pour le calcul de logarithmes discrets ou de racines carrées qui sont des opérations très coûteuses en ressources de calcul. 1 Diviseurs Soient a, b et m N. b( 0) divise a si a = mb On dit que b est un diviseur de a. Exemple : les diviseurs de 24 sont 1,2,3,4,6,8,12,24. 1.1 Propriétés : – Si a|1 alors a = ±1 – Si a|b et b|a alors a = ±b – Tout b différent de 0 divise 0 – Si b|g et b|h alors b|(mg + nh) pour m et n arbitraires – Si a = 0 mod n alors n|a 1.2 Quelques critères de divisibilité : – n est divisible par 2 s’il se termine par 0,2,4,6,8. – n est divisible par 3 si la somme de ses chiffres est divisible par 3. – n est divisible par 4 si ses deux derniers chiffres forment un multiple de 4 (ex : 256628). – n est divisible par 5 s’il se termine par 0 ou 5. – n est divisible par 8 si ses 3 derniers chiffres forment un multiple de 8 (ex : 176072). – n est divisible par 9 si la somme de ses chiffres est un multiple de 9 (ex : 37521=3+7+5+2+1=18=2*9). – n est divisible par 11 si la différence (1erchiffre + 3ièmechiffre + 5ièmechiffre + ...) (2ièmechiffre + 4ièmechiffre + 6ièmechiffre + ...) est divisible par 11. Par exemple, 1485 est divisible par 11, car (1+8)-(4+5)=0 est divisible par 11. 2 Congruence Soit n, un entier non nul (dans Z), et a, b des entiers. a et b sont dits congruents modulo n si : (a mod n) = (b mod n) ce qui s’écrit a = b mod n. Exemples : 73 = 4 mod 23, 21 = 1 mod 10 Deux entiers a et b sont égaux (ou congrus) modulo n si n|a − b. 2.1 Propriétés : 1. a = b mod n ssi n|a − b 2. a = b mod n ←→ ca = cb mod (cn) 3. a = b mod n ←→ ac = bc mod n 4. a = b mod m ←→ b = a mod m 5. a = b mod netb = c mod n → a = c mod n 6. ((a mod n) + (b mod n)) mod n = (a + b) mod n 7. ((a mod n) − (b mod n)) mod n = (a − b) mod n 8. ((a mod n) * (b mod n)) mod n = (a * b) mod n Propriété 1 : 23 = 8(mod5) car 23 − 8 = 15 = 5 * 3 −11 = 5(mod8) car − 11 − 5 = −16 = 8 * (−2) Propriété 6 : [(11 mod 8) + (15 mod 8)] mod 8 = (3 + 7) mod 8 = 2 (11 + 15) mod 8 = 26 mod 8 = 2 Propriété 7 : [(11 mod 8) − (15 mod 8)] mod 8 = (−4) mod 8 = 4 (11 − 15) mod 8 = (−4) mod 8 = 4 Propriété 8 : [(11 mod 8) * (15 mod 8)] mod 8 = (3 * 7) mod 8 = 5 (11 * 15) mod 8 = 165 mod 8 = 5 Il existe une autre technique pour la propriété n°8 : la décomposition par facteurs plus simples. Exemple : Pour trouver 117 mod 13, on peut procéder comme suit 112 = 121 = 4 mod 13 114 = (112)2 = 42 = 3 mod 13 117 = 11 * 114 * 112 = (11 * 3 * 4) = 132 = 2 mod 13 3 L’ensemble Zn Soit Zn l’ensemble des entiers, Zn = {0, 1, ..., (n − 1)}. Zn représente l’ensemble des résidus ou classes de résidu modulo n (chaque entier dans Zn est une classe de résidu). On peut écrire ces classes [0], [1], ..., [n − 1] où [r] = {a : a Z et a = r mod n} Exemple : Classes de résidu modulo 4 : 0 = {..., -8, -4,0,4,8,...} 1 = {...,-7,-3,1,5,9,...} 2 = {...,-6,-2,2,6,10,...} 3 = {...,-5,-1,3,7,11,...} De tous les nombres entiers dans une classe de résidu, le plus petit nombre entier non négatif est celui habituellement utilisé pour représenter la classe de résidu. Trouver le plus petit nombre entier non négatif pour lequel k est congruent modulo n s’appelle la réduction de k modulo n. 4. Le PGCD Il s’agit du Plus Grand Commun Diviseur (c) de a et b et tel que c est un diviseur de a et de b. Par cette définition, il vient que tout diviseur de a et b sera un diviseur de c. – gcd(a, b) = max[k : k|a et k|b] – gcd(a, b) = gcd(|a|, |b|) – gcd(a, 0) = |a| 5 Nombres premiers Théorème 1 (Nombres premiers) Tout nombre naturel n ≥ 1 peut s’écrire comme un produit de nombres premiers, et cette représentation est unique, à part l’ordre dans lequel les facteurs premiers sont disposés. On dit qu’un nombre est premier si les deux seuls diviseurs positifs qu’il admet sont 1 et luimême. Deux entiers sont relativement premiers si leur unique facteur commun positif est 1. On note lorsque a et c sont relativement premiers : (a, c) = 1 ou gcd(a, c) = 1 6. Autres propriétés de Zn 6.1 Propriété de l’addition (a + b) = (a + c) mod n→ b = c mod n Exemple : (5 + 23) = (5 + 7) mod 8 → 23 = 7 mod 8 6.2 Propriété de la multiplication Si (a, n) = 1 alors (a * b) = (a * c) mod nb = c mod n La condition doit absolument être vérifiée. En effet, si par exemple (a = 6, n = 8) 6= 1 → 6 * 3= 2 mod 8 et 6 * 7 = 2 mod 8 or 3 7 mod 8. Explications : Avec a = 6 et n = 8, on obtient le résultat de la figure 1.2. Z8 0 1 2 3 4 5 6 Multiplié par 6 0 6 12 18 24 30 36 résidu 0 6 4 6 0 6 4 Fig. 1.2 – Ensemble incomplet de résidus 7 42 2 7. Algorithme d’Euclide 7.1 Algorithme d’Euclide simple L’objectif est de permettre de déterminer le PGCD de deux nombres entiers positifs sans avoir besoin de faire leur décomposition en facteurs premiers. Théorème (Principe d’Euclide) Si a et b N et a ≥ b, si b > 0, a = r mod b, alors gcd(a, b) = gcd(b, r). Tout repose ici sur le fait que si a et b N, a ≥ 0 et b > 0, alors gcd(a, b) = gcd(b, a mod b) Exemple : gcd(55, 22) = gcd(22, 55 mod 22) = gcd(22, 11) = 11. Exemple : Soit le calcul de pgcd(1970,1066). Il vient 1970 = 1 * 1066 + 904 gcd(1066, 904) 1066 = 1 * 904 + 162 gcd(904, 162) 904 = 5 * 162 + 94 gcd(162, 94) 162 = 1 * 94 + 68 gcd(94, 68) 94 = 1 * 68 + 26 gcd(68, 26) 68 = 2 * 26 + 16 gcd(26, 16) 26 = 1 * 16 + 10 gcd(16, 10) 10 = 1 * 6 + 4 gcd(6, 4) 6 = 1 * 4 + 2 gcd(4, 2) 4 = 2 * 2 + 0 gcd(2, 0) 7.2 Algorithme d’Euclide étendu Remarques – représente le nombre directement inférieur ou égal au nombre entre crochets – Si la condition du point 3 est remplie, alors b n’a pas d’inverse modulo m – Si la condition du point 4 est remplie, alors le pgcd vaut 1 et b−1 mod m = B2 Exemple d’exécution de l’algorithme : Soit gcd(550, 1759) = 1, l’inverse multiplicatif de 550 est 355. En effet, (550 * 355) = 1 mod 1759 Exemple d’exécution manuelle : Soit le problème suivant : trouver (43)−1 mod 26[= (17)−1 mod 26]. Il vient 9 = 26 − 1 * 17 8 = 17 − 1 * 9 → 17 − 1 * (26 − 1 * 17) = 2 * 17 − 1 * 26 1 = 9 − 1 * 8 → 26 − 1 * 17 − 1 * (2 * 17 − 1 *∗ 26) = 2 * 26 − 3 * 17 Donc, (−3) mod 26 = 23 mod 26 : l’inverse modulo 26 de 43 est 23.