Arithmétique - Licence 1

890 390 370KB

French Pages [29] Year 2015

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Arithmétique - Licence 1

  • Commentary
  • Downloaded from https://www.math.univ-paris13.fr/~hoffbeck/Arith/poly-L1.pdf

Table of contents :
Introduction : Un peu de cryptographie
I. Division euclidienne et congruences
I.1. Division euclidienne
I.2. Divisibilité
I.3. Définition de la relation de congruence (Rappel)
I.4. Congruences et opérations
I.5. Application : les carrés itérés
II. Plus grand commun diviseur
II.1. Définition
II.2. Algorithme d'Euclide
II.3. Théorèmes de Bézout
II.4. Applications
III. Le théorème d'Euler
III.1. Rappels et notations
III.2. Fonction indicatrice d'Euler
III.3. Le théorème d'Euler
IV. Le système RSA
IV.1. Préliminaires arithmétiques
IV.2. Les fonctions de cryptage et de décryptage
IV.3. Clé publique et clé secrète
IV.4. Sécurité du système RSA

Citation preview

ARITHMÉTIQUE - LICENCE 1 ERIC HOFFBECK Résumé. Ce premier chapitre, rédigé par Anne Quéguiner-Mathieu qui faisait ce cours précédemment, est largement inspiré du début du livre de Lauritzen dont le titre ’Concrete Abstract Algebra’ pourrait être traduit en français par ’Un point de vue concret sur l’algèbre abstraite’. Il s’agit en effet d’algèbre, mais le sujet est abordé de façon très concrète, à partir de l’étude des nombres entiers et à travers de nombreux exemples. Parmi les références utilisées pour préparer le cours, il nous faut aussi mentionner le livre de Daniel Perrin ’Mathématiques d’école’ (éditions Cassini).

Chapitre 1 : Arithmétique élémentaire Table des matières Introduction : Un peu de cryptographie I. Division euclidienne et congruences I.1. Division euclidienne I.2. Divisibilité I.3. Définition de la relation de congruence (Rappel) I.4. Congruences et opérations I.5. Application : les carrés itérés II. Plus grand commun diviseur II.1. Définition II.2. Algorithme d’Euclide II.3. Théorèmes de Bézout II.4. Applications III. Le théorème d’Euler III.1. Rappels et notations III.2. Fonction indicatrice d’Euler III.3. Le théorème d’Euler IV. Le système RSA IV.1. Préliminaires arithmétiques IV.2. Les fonctions de cryptage et de décryptage IV.3. Clé publique et clé secrète IV.4. Sécurité du système RSA 1

2 3 3 5 7 8 10 11 11 12 14 15 18 18 20 22 24 24 26 27 29

2

ERIC HOFFBECK

Introduction : Un peu de cryptographie Le mot cryptographie vient des mots grecs – kruptos = caché – graphein = écrire La cryptographie est la science des messages secrets. Elle remonte à l’antiquité puisque Jules César l’a employée pour coder ses messages militaires. Il utilisait le système dit des alphabets décalés, d’un ou plusieurs crans. Par exemple, si on décale d’un cran, on remplace chaque lettre par la lettre suivante dans l’alphabet. Ainsi peut-on penser qu’il envoya au Sénat, après sa victoire sur Pharnace le message suivant : Y HQL Y LGL Y LF L Saurez-vous le déchiffrer ? De combien est le décalage ? Il existe aujourd’hui des méthodes beaucoup plus sophistiquées, qui reposent sur différents domaines des mathématiques. Ces méthodes sont utilisées en permanence pour la transmission de données confidentielles, numéro de carte bleue pour un achat sur le web par exemple. Une initiation à la cryptographie sera faite en TD, comme application des résultats d’arithmétique que l’on va voir (ou revoir).

ARITHMÉTIQUE - LICENCE 1

3

I. Division euclidienne et congruences On rappelle la proposition suivante, qui va être utile pour démontrer le théorème de division euclidienne : Proposition 1. (1) Toute partie non vide de l’ensemble N des entiers naturels possède un plus petit élément. (2) Toute partie non vide et majorée de N possède un plus grand élément. On utilisera aussi le raisonnement par récurrence, qui a été étudié au premier semestre, et dont on rappelle l’énoncé : Proposition 2. Etant donnée une proposition P(n), dépendant d’un entier naturel n, si (1) P(0) est vraie, et (2) ∀n ∈ N, l’implication P(n) ⇒ P(n + 1) est vraie, alors P(n) est vraie pour tout n ∈ N. On utilisera également la récurrence forte, c’est-à-dire : Proposition 3. Etant donnée une proposition P(n), dépendant d’un entier naturel n, si (1) P(0) est vraie, et (2) ∀n ∈ N, si P(k) est vraie pour tout k ≤ n alors P(n + 1) est vraie, alors P(n) est vraie pour tout n ∈ N. Autrement dit, quand on fait une démonstration par récurrence, dans la partie hérédité de la preuve, pour montrer que la propriété étudiée est vraie au rang n+1, on peut supposer qu’elle est vraie non seulement au rang n, mais aussi pour tous les rangs qui précèdent. I.1. Division euclidienne. Dans ce paragraphe et les suivants, les lettres a, b, c... désignent des nombres entiers relatifs. C’est le principe de la division euclidienne, dont voici l’énoncé : Théorème 4. Soient a, b ∈ Z deux entiers relatifs, avec b 6= 0. Il existe un unique couple (q, r) ∈ Z × N tel que  a = bq + r, 0 ≤ r < |b|.

4

ERIC HOFFBECK

(Le nombre bq est un multiple de b ; comme r ≥ 0, il est à gauche de a = bq + r ; comme r < |b|, le multiple suivant, qui est bq + |b|, est strictement à droite de a. Le nombre bq est donc le plus grand multiple de b inférieur ou égal à a et r est le nombre de pas qui séparent l’entier a du multiple de b qui se trouve immédiatement à sa gauche.) Définition 5. Trouver q et r, c’est effectuer la division euclidienne de a par b. Les nombres q et r sont respectivement appelés le quotient et le reste de la division. Exemple 6. 15 = 4 × 3 + 3 ; 16 = 4 × 4 + 0 ; −10 = −1 × 17 + 7. Cette division est celle que l’on apprend à l’école primaire, quand on effectue des divisions posées de nombre entiers, avec reste. Notation 7. Dans ce cours, on notera souvent [a]b le reste de la division euclidienne de a par b. Ainsi, [a]b ∈ {0, 1, . . . , b − 1}. De plus, il existe un unique q ∈ Z tel que a = bq + [a]b . Remarque 8. Attention ! Si on enlève la condition 0 ≤ r < |b|, alors il existe une infinité de couples (q, r) tels que a = bq + r. A chaque fois qu’on en a un, on peut en fabriquer un nouveau en remplaçant q par q + 1 et r par r − b par exemple. En revanche, du fait de l’unicité du quotient et du reste, dès qu’on a une égalité a = bq + r avec 0 ≤ r < |b|, on peut affirmer que q et r sont le quotient et le reste de la division euclidienne de a par b. Démonstration du Théorème 4. Etant donnés a et b, avec b 6= 0, on doit démontrer l’existence et l’unicité du couple (q, r). On commence par l’unicité. Pour cela, supposons que a = bq + r = bq 0 + r0 sont deux solutions au problème. On a alors b(q − q 0 ) = r0 − r, de sorte que r0 − r est un multiple de b. Or, vues les inégalités, on a −|b| < −r ≤ 0, et on en déduit −|b| < r0 − r < |b|. Le seul multiple de b vérifiant cet encadrement est 0. On en déduit que r = r0 , et il en découle que q = q 0 . Il nous reste à montrer l’existence. On va procéder par disjonction des cas. – Supposons que a ≥ 0 et b > 0. Parmi les multiples de b qui sont plus petits que a, on cherche le plus grand. Pour cela, considérons l’ensemble A = {k ∈ N, kb ≤ a} ⊂ N. Comme 0 ∈ A, A est une partie non vide de N. Soit k > a un entier naturel. Comme b > 0, on a kb > ab. De plus, b ≥ 1, donc ab ≥ a. Ainsi, si k > a, alors kb > a et k 6∈ A. Par contraposée, on en déduit que pour tout k ∈ A, k ≤ a. On vient de montrer que A est une partie non vide et majorée de N. Par la proposition 1, elle admet un plus grand élément que l’on

ARITHMÉTIQUE - LICENCE 1

5

note q. Par définition du plus grand élément, q ∈ A et q + 1 6∈ A. On a donc qb ≤ a < (q + 1)b, c’est-à-dire 0 ≤ a − bq < b. Posons r = a − bq ; le couple (q, r) ainsi défini vérifie bien les conditions requises. – Supposons maintenant que a < 0 et b > 0. Par le cas précédent, il existe un couple (q1 , r1 ) d’entiers naturels tels que −a = bq1 + r1 , avec 0 ≤ r1 < b. On a donc a = −bq1 − r1 = b × (−q1 ) + (−r1 ). Si r1 = 0, alors le couple (q1 , r1 ) vérifie bien les conditions requises, et on a terminé dans ce cas. Sinon, r1 est non nul, et il vérifie −b < −r1 < 0 de sorte que 0 < b − r1 < b. On a donc a = b × (−q1 ) − b + b − r1 = b × (−q1 − 1) + (b − r1 ). Ainsi, le couple (q, r) défini par q = −q1 − 1 et r = b − r1 vérifie les conditions requises. – Supposons finalement que b < 0, et a de signe quelconque. Par les deux cas qui précèdent, on peut effectuer la division euclidienne de a par −b. Il existe donc un couple (q1 , r1 ) vérifiant les conditions a = (−b) × q1 + r1 = b × (−q1 ) + r1 et 0 ≤ r1 < −b = |b|. Ainsi, le couple (q, r) défini par q = −q1 et r = r1 vérifie les conditions requises. Comme on a traité successivement tous les cas possibles, on a donc bien montré l’existence d’un couple (q, r) et ceci termine la démonstration.  I.2. Divisibilité. La relation de divisibilité des entiers naturels est définie comme suit : Définition 9. On dit que b divise a, ou encore que a est multiple de b, si il existe q ∈ Z tel que a = bq. Notation 10. "b divise a" se note b|a. Exemple 11. Tout entier est divisible par 1 et par −1. Un entier est divisible par 2 si et seulement si il est pair. Remarque 12. Dans le cas particulier b = 0, on trouve que a = 0 est le seul multiple de 0. Proposition 13. La relation de divisibilité est une relation d’ordre sur l’ensemble des entiers naturels. Démonstration. Il découle directement de la définition que c’est une relation réflexive et transitive. (Vérifiez-le !) Il nous reste à montrer qu’elle est antisymétrique. Supposons donc que a|b et b|a. Si a = 0, et que a|b, alors b = 0. Donc l’antisymétrie vaut dans ce cas. Supposons maintenant que a 6= 0. Par hypothèse, il existe k, ` ∈ Z tels que a = bk

6

ERIC HOFFBECK

et b = `a. D’où a = ak`, et en divisant par a (ce qu’on peut toujours faire, quitte à se placer dans Q), on obtient k` = 1. Comme k et ` sont des entiers naturels, les seules solutions sont k = ` = 1 ou k = ` = −1. Comme a et b sont des entiers naturels, donc tous deux positifs, on a ici k = ` = 1, et a = b.  Remarque 14. La relation de divisibilité n’est pas une relation d’ordre sur l’ensemble des entiers relatifs. Expliquez pourquoi. Proposition 15. Soient a, b et c des entiers relatifs. Si c divise a et b, alors c divise l’entier ka + `b quels que soient les entiers relatifs k, ` ∈ Z. Remarque 16. En particulier, c divise la somme a + b, la différence a − b, tout multiple ka de a et tout multiple `b de b. Démonstration. Par hypothèse, il existe des entiers relatifs a0 et b0 tels que a = ca0 et b = cb0 . On a donc ka + `b = c(ka0 + `b0 ), ce qui prouve que c divise ka + `b.  Le lemme qui suit explique le lien entre la relation de divisibilité et la division euclidienne : Lemme 17. Soient a et b deux entiers, avec b 6= 0 ; b divise a si et seulement si le reste de la division euclidienne de a par b est nul. Démonstration. Si b|a, il existe q ∈ Z tel que a = bq = bq + 0. Comme de plus 0 ≤ 0 < |b|, par unicité du quotient et du reste de la division euclidienne, on a alors [a]b = 0. Réciproquement, si [a]b = 0, alors a = bq + [a]b = bq, et b|a.  Dans la suite du cours, on utilisera régulièrement le résultat suivant : Lemme 18. Soient a et a0 deux entiers, qui diffèrent d’un multiple de b. Alors b|a si et seulement si b|a0 . Démonstration. Par hypothèse, il existe k ∈ Z tel que a0 = a + bk. Supposons que b|a, c’est-à-dire qu’il existe ` ∈ Z tel que a = b`. Alors a0 = a + kb = `b + kb = (` + k)b, donc b|a0 . Comme a = a0 − bk = a0 + b × (−k), le même raisonnement montre que si b|a0 , alors b|a. 

ARITHMÉTIQUE - LICENCE 1

7

I.3. Définition de la relation de congruence (Rappel). Cette notion a été introduite par le mathématicien allemand Gauss, et déjà étudiée au premier semestre. Comme on va le rappeler, il s’agit d’organiser les entiers en fonction de leurs restes quand on divise par un entier fixé. Dans toute cette partie, c désigne un entier naturel non nul. Définition 19. Soient a et b deux entiers relatifs. On dit que a et b sont congrus modulo c si c divise la différence a − b. Notation 20. On note a ≡ b mod c, ou encore a ≡ b[c]. Proposition 21. La relation de congruence est une relation d’équivalence sur l’ensemble des entiers relatifs. En effet, elle est réflexive, symétrique et transitive. Ceci a été vu au premier semestre dans le cours ’Introduction aux structures mathématiques’. Exemple 22. −2 ≡ 7 mod 3 car la distance qui les sépare est multiple de 3. Exemple 23. Soit n ∈ Z un entier relatif. On a n est impair ⇔ il existe k ∈ Z tel que n = 2k + 1 ⇔ il existe k ∈ Z tel que n − 1 = 2k ⇔ 2|n − 1 ⇔ n ≡ 1 mod 2. On montre de même que n est pair si et seulement si il est congru à 0 modulo 2. Remarque 24. Les entiers pairs (respectivement impairs) sont les entiers congrus à 0 (respectivement 1) modulo 2. Tout entier naturel est soit pair soit impair ; aucun entier n’est à la fois pair et impair. On a ainsi formé une partition de l’ensemble des entiers naturels en deux sous-ensembles, les pairs et les impairs. Le lien entre les congruences et les divisions euclidiennes apparaît clairement dans la proposition qui suit : Proposition 25. Soit c un entier naturel non nul. (1) Tout entier est congru modulo c au reste de sa division euclidienne par c. (2) Deux entiers sont congrus modulo c si et seulement si ils ont le même reste dans la division euclidienne par c.

8

ERIC HOFFBECK

Avec la notation [a]c et [b]c pour les restes des divisions euclidiennes de a et b par c, cela donne a ≡ [a]c

mod c,

et a ≡ b mod c ⇔ [a]c = [b]c Démonstration. (1) Effectuons la division euclidienne de a par c, a = cq + [a]c . On a bien q|a − [a]c donc a ≡ [a]c mod c. (2) Effectuons de même b = cq 0 +[b]c . On a a−b = c(q−q 0 )+[a]c −[b]c . Par le lemme 18, on en déduit que c|a − b ⇔ c|[a]c − [b]c . Or comme 0 ≤ [a]c < c et 0 ≤ [b]c < c, la différence des restes vérifie −c < [a]c − [b]c < c. Le seul multiple de c vérifiant cette inégalité est 0. Donc c|[a]c − [b]c ⇔ [a]c = [b]c .  Exemple 26. 24 = 4 × 5 + 4 ; donc 24 ≡ 4 mod 5. 14 = 2 × 5 + 4 ; donc 14 ≡ 4 mod 5. D’où 24 ≡ 14 mod 5. On peut aussi le vérifier directement : 5|(24 − 14). I.4. Congruences et opérations. La propriété qui suit est une propriété remarquable des congruences, très utile pour faire des calculs : Proposition 27 (Opérations et congruences). Soient x1 , x2 , y1 et y2 des entiers relatifs. Si x1 ≡ y1 mod c et x2 ≡ y2 mod c, alors (i) x1 + x2 ≡ y1 + y2 mod c (ii) x1 − x2 ≡ y1 − y2 mod c (iii) x1 x2 ≡ y1 y2 mod c (iv) ∀k ∈ N, xk1 ≡ y1k mod c Exemple 28. On a donc pour tout k ∈ N, 10k ≡ 1 mod 9 et  1 mod 11 si k est pair, k k 10 ≡ (−1) mod 11 ≡ −1 mod 11 si k est impair. Démonstration. La preuve repose sur la proposition 15. Par hypothèse, c|x1 − y1 et c|x2 − y2 . Par la proposition 15, on a donc c|(x1 − y1 ) + (x2 − y2 ) = (x1 + x2 ) − (y1 + y2 ), et c|(x1 − y1 ) − (x2 − y2 ) = (x1 − x2 ) − (y1 − y2 ). Pour le produit, il suffit de remarquer que x1 x2 − y1 y2 = x1 x2 − y1 x2 + y1 x2 − y1 y2 = (x1 − y1 )x2 + y1 (x2 − y2 )

ARITHMÉTIQUE - LICENCE 1

9

Or c divise x1 − y1 et x2 − y2 . Il divise donc également, toujours par la proposition 15, (x1 − y1 )x2 + y1 (x2 − y2 ) = x1 y1 − x2 y2 . Enfin, l’assertion (iv) se démontre par récurrence sur k ∈ N : – Si k = 0, on a x01 = 1 = y10 , donc x01 ≡ y10 mod c. – Supposons au rang k que xk1 ≡ y1k mod c. Comme on a aussi, par hypothèse, x1 ≡ y1 mod c, la compatibilité des congruences et du produit (propriété (iii)) donne xk+1 ≡ y1k+1 mod c. 1 – Par récurrence, le résultat est donc vrai pour tout k ∈ N.  Remarque 29. Attention, la proposition précédente ne signifie pas pour autant que l’on peut faire avec les congruences tout ce que l’on fait habituellement avec l’égalité. Par exemple, un produit de deux nombres (entiers ou même réels) est nul si et seulement si l’un des facteurs est nul. Avec les congruences, on a en revanche 4×3≡0

mod 6, cependant 4 6≡ 0

mod 6 et 3 6≡ 0

mod 6.

Exemple 30. Que peut-on dire du produit et de la somme de deux nombres pairs ou impairs ? Si n et m sont deux entiers pairs, ils vérifient  n + m ≡ 0 + 0 mod 2 nm ≡ 0 mod 2 Donc le produit et la somme de deux nombres pairs sont encore des nombres pairs. Si maintenant n et m sont impairs, on a  n + m ≡ 1 + 1 mod 2 nm ≡ 1 mod 2 0r 2 ≡ 0 mod 2. La somme de deux nombres impairs est donc paire, tandis que le produit est impair. Exemple 31. Quel est le reste de la division euclidienne de 132016 par 4 ? Pour répondre à cette question, il suffit de trouver un entier compris entre 0 et 3 auquel 132016 est congru modulo 4. Commençons par calculer 13 mod 4. Comme 13 = 4 × 3 + 1, on a 13 ≡ 1 mod 4. Donc 132016 ≡ 12016 mod 4 ≡ 1 mod 4 Le nombre trouvé étant plus petit que 4, c’est bien le reste de la division euclidienne de 132016 par 4 ; autrement dit [132016 ]4 = [1]4 = 1.

10

ERIC HOFFBECK

I.5. Application : les carrés itérés. En cryptographie (et notamment quand on utilise le système RSA, que l’on verra en TD), on a parfois besoin de calculer le reste de la division euclidienne d’une grande puissance d’un nombre entier. On dispose pour cela d’une méthode très efficace, appelée la méthode des carrés itérés. Supposons par exemple que l’on souhaite calculer [1211 ]21 . On peut procéder comme suit : – Ecrire 11 en base 2. On a 11 = 2 × 5 + 1 = 2 × (2 × 2 + 1) + 1 = 23 + 2 + 1 11 = 1 × 23 + 0 × 22 + 1 × 2 + 1. 2

En écriture positionnelle, cela donne donc 11 = 1011 . – Effectuer le calcul en utilisant les règles de la proposition 27 (Opérations et congruences) ci-dessus. On cherche la valeur modulo 21 3 3 du nombre 1211 = 122 +2+1 = 122 × 122 × 12 = 128 × 122 × 12. On calcule donc les carrés successifs, modulo 21 : 122 = 144 = 21 × 6 + 18, donc 122 ≡ 18 mod 21. 124 = (122 )2 , donc 124 ≡ 182 mod 21. Comme 182 = 21×15+9, 124 ≡ 9 mod 21. Enfin, 128 = (124 )2 . Donc 128 ≡ 92 mod 21. Comme 81 = 21 × 3 + 18, 124 = 18 mod 21. Ainsi, 1211 ≡ 18 × 18 × 12 mod 21. Là encore, on peut faire le calcul en deux temps : 18 × 18 ≡ 9 mod 21, et 9 × 12 ≡ 3 mod 21. Ainsi, 1211 ≡ 3 mod 21. Comme 3 est compris entre 0 et 20, c’est bien le reste de la division euclidienne de 1211 par 21 : [1211 ]21 = 3. Le procédé peut paraître fastidieux mais il est beaucoup moins coûteux en calculs que le calcul direct. On cherche le reste de la division par 21 de 1211 = 743 008 370 688, et on s’est contenté de calculer ceux de 144, 324 et 81. Le procédé est basé sur le fait suivant : n

n−1

[a2 ]N = [(a2

)2 ]N = [[a2

n−1

]2N ]N . n−1

Or un reste modulo N est toujours plus petit que N ; le carré [a2 ]2N est donc majoré par N 2 . Ainsi, quelle que soit la valeur de l’exposant e, à partir de la décomposition de e en base 2, on peut calculer [ae ]N en ne calculant que des restes de nombres majorés par N 2 . Quand e est très grand, cette méthode se révèle très efficace.

ARITHMÉTIQUE - LICENCE 1

11

II. Plus grand commun diviseur II.1. Définition. Soit n ∈ Z. On note div(n) = {d ∈ N, d|n}. Exemple 32. div(0) = N ; Pour tout n ∈ Z, 1 ∈ div(n) ; div(−n) = div(n) ; div(n) ⊂ {0, 1, . . . , |n|} ; div(18) = {1, 2, 3, 6, 9, 18} ; div(24) = {1, 2, 3, 4, 6, 8, 12, 24} ; div(35) = {1, 5, 7, 35} ; div(36) = {1, 2, 3, 4, 6, 9, 12, 18, 36}. Comme div(n) = div(−n), on peut oublier le signe quand on étudie l’ensemble des diviseurs d’un entier relatif. Dans toute la suite, on suppose donc que a et b sont des entiers naturels, et l’un des deux au moins est non nul. Définition 33. On note div(a, b) l’ensemble des diviseurs communs à a et à b, c’est-à-dire l’intersection div(a, b) = div(a) ∩ div(b). Cet ensemble est une partie de N, et elle est non vide car elle contient au moins l’élément 1. De plus elle est majorée par a si a 6= 0 et par b si b 6= 0. En effet, supposons par exemple que a 6= 0 ; alors div(a) et majoré par a. Donc div(a, b) ⊂ div(a) est aussi majoré par a. Ainsi, par la proposition 1, l’ensemble div(a, b) des diviseurs communs à a et b possède un plus grand élément. Ceci nous conduit à la définition suivante : Définition 34. On appelle pgcd de a et de b, et on note pgcd(a, b) ou a ∧ b, le plus grand entier naturel d qui divise a et b. Autrement dit, a ∧ b est le plus grand élément de div(a, b). Définition 35. On peut étendre cette définition aux entiers relatifs en posant pgcd(a, b) = pgcd(|a|, |b|). Les propriétés étudiées ci-dessous seront démontrées pour les entiers naturels, mais s’étendent sans difficulté aux entiers relatifs. T ExempleT36. div(24) div(18) = {1, 2, 3, 6} ; donc 24 ∧ 18 = 6. div(24) T div(36) = {1, 2, 3, 4, 6, 12}, donc 24 ∧ 36 = 12. div(24) div(35) = {1}, donc 24 ∧ 35 = 1. T Remarque 37. En fait, on a div(24) div(36) = div(12). Autrement dit, pour tout k ∈ N, on a (k|24 et k|36) ⇔ k|(24 ∧ 36).

12

ERIC HOFFBECK

Il s’agit là d’une propriété générale fondamentale du pgcd, que l’on va démontrer plus loin. Définition 38. Les entiers a et b sont dits premiers entre eux si leur pgcd vaut 1. Remarque 39. Ainsi, les entiers a et b sont premiers entre eux si leurs seuls diviseurs communs sont 1 et −1, ou encore, de manière équivalente, si div(a, b) = {1}. Exemple 40. Les entiers 24 et 35 sont premiers entre eux. Proposition 41. On suppose que a 6= 0. Si a|b, alors a ∧ b = a. En particulier, on a a ∧ 0 = a. Démonstration. Comme a|b, pour tout entier naturel k, si k|a, alors k|b, par transitivité de la relation de divisibilité. Donc div(a) ⊂ div(b). Il en découle que l’ensemble des diviseurs communs est div(a, b) = div(a) ∩ div(b) = div(a). Le pgcd est donc le plus grand élément de div(a), à savoir a.  II.2. Algorithme d’Euclide. La méthode utilisée ci-dessus pour calculer le pgcd de 24 et 36 n’est pas très performante, puisqu’elle nécessite le calcul de tous les diviseurs de chacun des deux nombres. On va maintenant rappeler l’algorithme d’Euclide, qui fournit une méthode beaucoup plus efficace, basée sur la division euclidienne. On commence par énoncer un lemme fondamental pour comprendre cet algorithme. Lemme 42 (Lemme d’Euclide). Pour tout ` ∈ N, on a div(a, b) = div(a − `b, b). En particulier, pgcd(a, b) = pgcd(a − `b, b). Démonstration. Pour montrer que les ensembles de diviseurs communs div(a, b) et div(a − `b, b) sont égaux, on procède par double inclusion. Soit k ∈ N. Si k est un diviseur commun à a et b, alors par la propriété 15, on a k|a−`b. Ainsi, k est un diviseur commun à a−`b et b. Réciproquement, si k divise a − `b et b, alors, toujours par la propriété 15, k divise 1 × (a − `b) + `b = a. Ainsi, c’est un diviseur commun à a et b. Ceci montre donc que div(a, b) = div(a−`b, b). En particulier, ils ont le même plus grand élément ; on a donc pgcd(a, b) = pgcd(a − `b, b).  Nous allons maintenant voir comment utiliser cet algorithme pour effectuer un calcul de pgcd. Commençons par des exemples. Exemple 43. Comme 36 = 24 + 12, par le lemme 42, on a 36 ∧ 24 = 24 ∧ 12. Comme 12|24, la proposition 41 donne 24 ∧ 12 = 12. D’où 36 ∧ 24 = 12.

ARITHMÉTIQUE - LICENCE 1

13

Exemple 44. Pour calculer 223 ∧ 141, on effectue des divisions euclidiennes, et on applique le lemme d’Euclide comme suit : 223 = 141 + 82, donc 223 ∧ 141 = 141 ∧ 82 ; 141 = 82 + 59, donc 141 ∧ 82 = 82 ∧ 59 ; 82 = 59 + 23, donc 82 ∧ 59 = 59 ∧ 23 ; 59 = 23 × 2 + 13, donc 59 ∧ 23 = 23 ∧ 13 ; 23 = 13 + 10, donc 23 ∧ 13 = 13 ∧ 10 ; 13 = 10 + 3, donc 13 ∧ 10 = 10 ∧ 3 ; 10 = 3 × 3 + 1, donc 10 ∧ 3 = 3 ∧ 1 = 1. Ainsi, le plus grand diviseur commun à 223 et 141 est 1 ; autrement dit, les seuls diviseurs communs à ces deux nombres sont 1 et −1. Algorithme d’Euclide Soient a et b deux entiers naturels non nuls. Pour calculer leur pgcd, on procède de la manière suivante : – On pose a = r0 et b = r1 . – On effectue la division euclidienne de r0 par r1 , r0 = r1 q2 + r2 . – Par le lemme d’Euclide, on a donc r0 ∧ r1 = r1 ∧ r2 . – Deux cas peuvent alors se produire : – Si r2 = 0, alors a ∧ b = r0 ∧ r1 = r1 ∧ r2 = r1 ∧ 0 = r1 = b ; – Sinon, r2 6= 0 et on peut effectuer la division euclidienne de b = r1 par r2 : on obtient r1 = r2 q3 +r3 . On a donc a∧b = r2 ∧r3 par le lemme d’Euclide. – Tant que l’on obtient des restes non nuls, on renouvelle le procédé ci-dessus. On construit ainsi des entiers naturels r0 , r1 , . . . , rk tels que a ∧ b = r0 ∧ r1 = r1 ∧ r2 = · · · = rk−1 ∧ rk . – Pour k ≥ 2, l’entier rk est le reste de la division euclidienne de rk−2 par rk−1 , rk−2 = rk−1 qk + rk . On a donc 0 ≤ rk < rk−1 < · · · < r1 . On obtient donc nécessairement un reste nul au bout d’au plus r1 itérations. – Notons rn le dernier reste non nul. On a a∧b = rn ∧rn+1 = rn ∧0 = rn . Ainsi, le pgcd de a et b est le dernier reste non nul dans cet algorithme. Cet algorithme est une méthode très efficace de calcul du pgcd de deux entiers naturels. On verra dans la suite qu’il permet également de démontrer des propriétés du pgcd.

14

ERIC HOFFBECK

II.3. Théorèmes de Bézout. Les deux théorèmes présentés dans ce paragraphe sont tous deux connus sous le nom de théorème de Bézout. Théorème 45. Soient a et b deux entiers naturels, dont l’un au moins est non nul, et notons d = a ∧ b. Il existe des entiers relatifs u et v tels que d = au + bv. Définition 46. Trouver u et v dans Z tels que d = au + bv, c’est trouver une écriture de Bézout du pgcd d = a ∧ b. Exemple 47. On a vu au paragraphe précédent que 24 ∧ 36 = 12 ; 12 = 36 − 24 = 36 × 1 + 24 × (−1) est une écriture de Bézout. Ce n’est pas la seule ! Par exemple, on a aussi 12 = 36+72−72−24 = 3 × 36 − 4 × 24. Pour obtenir une nouvelle écriture, il suffit d’ajouter et de soustraire un multiple commun aux deux nombres 24 et 36. On a vu aussi que 24 ∧ 35 = 1 ; 1 = (−16) × 24 + 11 × 35 est une écriture de Bézout. Démonstration. On peut démontrer ce théorème en s’appuyant sur l’algorithme d’Euclide. Supposons donc que l’on a calculé le pgcd d = a ∧ b avec cet algorithme, et notons, comme au paragraphe précédent, r1 , . . . , rn les restes successifs, où rn désigne le dernier reste non nul, et rn+1 = 0. On va montrer par récurrence sur k, avec 0 ≤ k ≤ n, qu’il existe uk , vk ∈ Z tels que rk = auk + bvk . Pour k = 0 ou 1, on a r0 = a = a × 1 + b × 0 et r1 = b = a × 0 + b × 1. Supposons que rk = auk + bvk pour tout k < k0 ≤ n. En particulier, rk0 −1 = auk0 −1 + bvk0 −1 et rk0 −2 = auk0 −2 + bvk0 −2 . De plus, rk0 est défini par rk0 = rk0 −2 − rk0 −1 qk0 . Il vérifie donc rk0 = (auk0 −2 + bvk0 −2 ) − (auk0 −1 + bvk0 −1 )qk0 = a × (uk0 −2 − qk0 uk0 −1 ) + b × (vk0 −2 − qk0 vk0 −1 ) En itérant ce raisonnement, on obtient que ceci est vrai pour tout k tel que 0 ≤ k ≤ n. En particulier, on a rn = a ∧ b = aun + bvn .  Remarque 48. (1) Dans le raisonnement ci-dessus, pour montrer que la propriété est vraie au rang k0 , on utilise la définition du reste rk0 = rk0 −2 − rk0 −1 qk0 ; ceci n’est vrai que si 1 < k0 ≤ n. C’est pourquoi le raisonnement ci-dessus montre la propriété pour 0 ≤ k ≤ n et non pas pour tout entier naturel k. (2) Comme annoncé, on n’a démontré ce théorème que si a et b sont des entiers naturels, mais il est également vrai pour des entiers relatifs. En effet, si d = a ∧ b = |a| ∧ |b|, alors il existe des entiers relatifs u et v tels que d = |a|u + |b|v. Il suffit alors de remplacer u par u0 défini par u0 = u si a > 0 et u0 = −u si a < 0 pour

ARITHMÉTIQUE - LICENCE 1

15

avoir |a|u = au0 . On procède de même avec le second membre, et on obtient au0 + bv 0 = |a|u + |b|v = d. Par le premier théorème de Bézout, Thm. 45, que l’on vient de voir, pour des valeurs bien choisies des entiers relatifs u et v, le nombre au + bv est égal au pgcd de a et b. En général, quelles que soient les valeurs de u et v, le nombre au + bv est toujours un multiple du pgcd : Lemme 49. Soient a et b deux entiers naturels, et u et v deux entiers relatifs ; l’entier m = au + bv est un multiple du pgcd a ∧ b de a et b. Démonstration. Notons d = a ∧ b ce pgcd. Par définition, d|a et d|b, donc par la proposition 15, d divise au + bv quels que soient les entiers relatifs u, v ∈ Z.  Théorème 50. Les entiers a et b sont premiers entre eux si et seulement si il existe des entiers relatifs u et v tels que au + bv = 1. Démonstration. Pour montrer cette équivalence, on procède par double implication. Supposons tout d’abord que a et b sont premiers entre eux, c’est-àdire a ∧ b = 1. Alors par le théorème 45, il existe u ∈ Z et v ∈ Z tels que au + bv = 1. Supposons réciproquement qu’il existe u ∈ Z et v ∈ Z tels que au + bv = 1. Alors par le lemme qui précède, 1 est un multiple de a ∧ b. D’où a ∧ b = 1.  II.4. Applications. Le théorème de Bézout a de nombreuses conséquences, que nous allons maintenant étudier. II.4.1. Propriété fondamentale du pgcd. Il s’agit du résultat suivant, que nous avons déjà observé sur des exemples : Théorème 51. Les diviseurs communs aux deux entiers a et b sont exactement les diviseurs de leur pgcd. Autrement dit, on a l’équivalence suivante ∀k ∈ N, (k|a ∧ b) ⇔ (k|a et k|b). Démonstration. Par définition, le pgcd d = a ∧ b divise a et b. Par transitivité de la relation de divisibilité, on en déduit que si k|d, alors k|a et k|b. La réciproque se déduit du premier théorème de Bézout, Thm 45, grâce à la proposition 15. En effet, on considère une écriture de Bézout d = au + bv. Si k|a et k|b, alors k divise au + bv = d. 

16

ERIC HOFFBECK

II.4.2. Propriétés des entiers premiers entre eux. Un entier premier à deux entiers est également premier à leur produit, autrement dit : Corollaire 52. Si a ∧ b = 1 et a ∧ c = 1, alors a ∧ bc = 1. Démonstration. Par hypothèse, il existe des entiers relatifs u, v, w, x tels que au + bv = 1 et aw + cx = 1. En multipliant ces deux égalités, on obtient : 1 = (au + bv)(aw + cx) = a(auw + cux + bvw) + bc × vx, ce qui prouve que a ∧ bc = 1.  II.4.3. Le lemme de Gauss. Le théorème qui suit, appelé le Lemme de Gauss, est très utile en arithmétique. Théorème 53 (Lemme de Gauss). Soient a, b, c ∈ Z.  a|bc ⇒ a|c. a∧b=1 Démonstration. Par le théorème de Bézout, il existe u et v ∈ Z tels que au+bv = 1. En multipliant cette égalité par c, on obtient auc+bvc = c. Or, a|a et par hypothèse, a|bc. Donc a divise a × (uc) + bc × v = c.  Corollaire 54. On suppose que a et b sont premiers entre eux. Si a|c et b|c, alors ab|c. Autrement dit, si deux entiers premiers entre eux divisent un même nombre, alors leur produit divise également ce nombre. Remarque 55. Attention, la propriété n’est plus vraie si a et b ne sont pas premiers entre eux ! Par exemple, 4|36 et 6|36, mais 4 × 6 = 24 ne divise pas 36. Démonstration. Comme a|c, il existe a0 ∈ Z tel que c = aa0 . Comme b|c et c = aa0 , on a b|aa0 . Or a ∧ b = 1. Donc, par le lemme de Gauss, b|a0 , c’est-à-dire qu’il existe b0 ∈ Z tel que a0 = bb0 . On obtient ainsi c = aa0 = abb0 , ce qui prouve que ab divise c.  Corollaire 56. Soient a et b deux entiers naturels premiers entre eux. Les entiers relatifs n et m sont congrus modulo le produit ab si et seulement si ils sont congrus modulo a et modulo b. Autrement dit, Si a ∧ b = 1, alors ∀m, n ∈ Z, m ≡ n mod (ab) ⇔ (m ≡ n mod a et m ≡ n mod b).

ARITHMÉTIQUE - LICENCE 1

17

Démonstration. On procède par double implication. Par définition, les entiers n et m sont congrus modulo le produit ab si et seulement si ab|(n − m). Dans ce cas, par transitivité de la relation de divisibilité, on a aussi a|(n − m) et b|(n − m). Donc n et m sont congrus modulo a et modulo b. Réciproquement, si n et m sont congrus modulo a et modulo b, alors la différence n − m est divisible par a et par b. Or a et b sont premiers entre eux. Donc, par le corollaire 54, ab|(n − m), ce qui prouve que n ≡ m mod (ab).  Remarque 57. (1) L’implication directe est vraie sans aucune hypothèse sur les entiers a et b : m ≡ n mod (ab) ⇒ (m ≡ n mod a et m ≡ n mod b). Pour s’en convaincre, il suffit de regarder la première partie de la preuve : on n’utilise pas le fait que a et b sont premiers entre eux. (2) La réciproque, en revanche, n’est plus vraie si on ne suppose pas que a et b sont premiers entre eux. Par exemple, les entiers 24 et 36 sont congrus modulo 4 et modulo 6, puisque 36 − 24 = 12 = 4 × 3 = 6 × 2. Mais ils ne sont pas congrus modulo 24.

18

ERIC HOFFBECK

III. Le théorème d’Euler Dans ce paragraphe, nous allons énoncer et démontrer un théorème dû à Euler. On verra que ce théorème joue un rôle important dans le système de cryptographie RSA. III.1. Rappels et notations. III.1.1. Nombres premiers. Tout entier naturel n > 1 possède au moins deux diviseurs positifs, à savoir 1 et lui-même. Définition 58. Un entier naturel n > 1 est dit premier s’il n’a pas d’autres diviseurs positifs que 1 et lui-même. Ainsi, un entier naturel n > 1 est premier si et seulement si il ne s’écrit pas comme produit de deux nombres entiers strictement plus petits que n. Exemple 59. Les entiers 2, 3, 5, 7, 11, 13, 17, 19, 23 . . . sont des nombres premiers. En revanche, 4 = 2 × 2 et 6 = 2 × 3 ne sont pas premiers. Parmi les nombres entiers, les nombres premiers sont donc ceux qui ont le moins de diviseurs. Ceci rend les calculs de pgcd particulièrement faciles : Théorème 60. Soient k ∈ N et p un nombre premier. (1) Si p|k, alors p ∧ k = p ; (2) Sinon, p et k sont premiers entre eux. Démonstration. La première affirmation est vraie même si l’entier p n’est pas premier, et a déjà été démontrée : c’est la proposition 41. Supposons maintenant que p ne divise pas k. Alors p 6∈ div(p, k). Comme p est premier, le seul autre diviseur positif de p est 1. On obtient donc p ∧ k = 1.  Rappelons également le théorème fondamental de l’arithmétique : Théorème 61. Tout entier naturel n > 1 se décompose en un produit de nombres premiers. Démonstration. On démontre l’existence d’une décomposition par récurrence forte sur n > 1. Initialisation : L’entier 2 est premier ; il admet donc bien une décomposition, avec un seul facteur 2 = 2. Hérédité : Soit n > 2 un entier naturel. On suppose que tout entier k vérifiant 1 < k < n admet une décomposition. Deux cas sont alors à distinguer :

ARITHMÉTIQUE - LICENCE 1

19

– Si n est premier, alors n = n est une décomposition de n (avec un seul facteur) ; – Sinon, il existe a et b ∈ N, tous deux strictement compris entre 1 et n, et tels que n = ab. Par l’hypothèse de récurrence, a et b se décomposent en un produit de nombres premiers, et ceci fournit une décomposition pour n = ab. Conclusion : Par récurrence forte, on en déduit qu’une décomposition existe pour tout entier n > 2.  Remarque 62. On peut également démontrer que cette décomposition est unique, à l’ordre des facteurs près. Ce résultat ne jouant pas un rôle fondamental dans la suite du cours, on ne le démontre pas. Mais il pourra être utilisé dans les exercices. En s’appuyant sur ce théorème, on montre facilement : Théorème 63. Il existe une infinité de nombres premiers. Démonstration. On raisonne par l’absurde. Supposons donc qu’il existe un nombre fini de nombres premiers. On peut alors en dresser la liste, rangée par ordre croissant : p1 , p2 , . . . , pN . Considérons l’entier naturel A = 1 + p1 p2 . . . pN . Comme A est strictement plus grand que pN , il ne peut pas être égal à l’un des pi ; donc A n’est pas un nombre premier. Par le théorème fondamental de l’arithmétique, il admet une décomposition en un produit de nombres premiers. Soit k tel que pk est l’un des facteurs dans cette décomposition. Comme, pk |A, on a la congruence A ≡ 0 mod pk . D’un autre côté, A = 1 + p1 . . . pN montre que A ≡ 1 mod pk . On aboutit donc à une contradiction. Ainsi, l’hypothèse de départ du raisonnement est fausse, et il existe une infinité de nombres premiers.  III.1.2. L’ensemble Za . Pour tout entier naturel non nul a, on note Za = {k ∈ N, 0 ≤ k < a} = {0, 1, 2, . . . , a − 1}. C’est un ensemble fini, dont le cardinal vaut a. Pour tout n ∈ Z, il découle de la définition de la division euclidienne que le reste de la division de n par a vérifie [n]a ∈ Za . De plus, par la proposition 25, ∀k, ` ∈ Za , k ≡ `

mod a ⇔ k = `.

En particulier, un entier n est congru modulo a à un élément de Za et un seul, à savoir [n]a .

20

ERIC HOFFBECK

III.1.3. Ensembles finis et applications bijectives. Dans cette partie, on va également utiliser les résultats suivants concernant les ensembles finis : Théorème 64. Soient A et B deux ensembles finis. (1) Si A et B ont le même cardinal, alors pour toute application f : A → B, on a équivalence entre : (a) f est injective ; (b) f est surjective ; (c) f est bijective. (2) A et B ont le même cardinal si et seulement si il existe une application bijective f : A → B. III.2. Fonction indicatrice d’Euler. La fonction indicatrice d’Euler est une fonction qui compte, parmi les entiers compris entre 0 et a − 1, combien sont premiers à a. Définition 65. Pour tout entier naturel non nul a, on note Za? ⊂ Za l’ensemble des éléments de Za qui sont premiers à a, i.e. Za? = {k ∈ Za , k ∧ a = 1} = {k ∈ N, 0 ≤ k < a et k ∧ a = 1}. On appelle fonction indicatrice d’Euler l’application ϕ : N → N définie par ϕ(0) = 0 et pour tout entier a ∈ N? , ϕ(a) = card(Za? ). Exemple 66. Z1? = {0}, donc ϕ(1) = 1 ; Z2? = {1}, donc ϕ(2) = 1 ; Z3? = {1, 2}, donc ϕ(3) = 2 ; Z4? = {1, 3}, donc ϕ(4) = 2 ; Z7? = {1, 2, 3, 4, 5, 6}, donc ϕ(7) = 6 ; Z8? = {1, 3, 5, 7}, donc ϕ(8) = 4 ; Z9? = {1, 2, 4, 5, 7, 8}, donc ϕ(9) = 6. Si p est un nombre premier, alors Zp? = {1, 2, . . . p − 1}, donc ϕ(p) = p − 1. Pour calculer des valeurs de ϕ, on peut aussi utiliser la proposition suivante : Proposition 67. Soient a et b deux entiers naturels non nuls. Si a et b sont premiers entre eux, alors ϕ(ab) = ϕ(a)ϕ(b). Exemple 68. Par cette proposition et les calculs de l’exemple précédent, on obtient par exemple ϕ(56) = 24. Remarquons cependant que la formule est fausse si a et b ne sont pas premiers entre eux : ϕ(8) = ϕ(4 × 2) 6= ϕ(4) × ϕ(2).

ARITHMÉTIQUE - LICENCE 1

21

Démonstration. Le produit ϕ(a)ϕ(b) vaut ϕ(a)ϕ(b) = card(Za? ) × card(Zb? ) = card(Za? × Zb? ). ? On souhaite donc montrer que les ensembles Zab et Za? ×Zb? ont le même cardinal. Pour cela, nous allons montrer qu’il existe une application bijective ? f : Zab → Za? × Zb? . On commence par montrer le lemme suivant :

Lemme 69. L’application g : Zab → Za × Zb , qui à tout entier k ∈ Zab associe le couple ([k]a , [k]b ) ∈ Za × Zb est bijective. Démonstration. Montrons que l’application g est injective. Pour cela, on considère k ∈ Zab et ` ∈ Zab , et on suppose que g(k) = g(`). Par définition de g, cela signifie que [k]a = [`]a et [k]b = [`]b . Donc k ≡ ` mod a et k ≡ ` mod b. Comme a et b sont premiers entre eux, par le corollaire 54, on en déduit que k ≡ ` mod ab, et comme k et ` sont dans Zab , il en découle que k = `. Ceci prouve que l’application g est injective. Pour terminer la démonstration, on compare les cardinaux de l’ensemble de départ et l’ensemble d’arrivée : card(Zab ) = ab = card(Za ) × card(Zb ) = card(Za × Zb ). Donc, l’application g étant injective, et les deux ensembles ayant le même cardinal, g est bijective.  On va maintenant utiliser ce lemme pour démontrer la proposition. ? Soit k ∈ Zab . Par définition, ceci signifie que k ∈ Zab et k ∧ ab = 1. Son image par l’application g est g(k) = ([k]a , [k]b ) ∈ Za × Zb . On va montrer que g(k) ∈ Za? × Zb? . On souhaite donc montrer que [k]a et a sont premiers entre eux. Or par le lemme d’Euclide 42, pgcd([k]a , a) = pgcd(k, a). Considérons donc un diviseur commun d aux deux entiers k et a, c’est aussi un diviseur de ab. Comme k et ab sont premiers entre eux, on a donc d ∈ {−1, 1} et ceci prouve que pgcd(k, a) = 1. D’où [k]a ∈ Za? . Le même raisonnement montre que si k est premier au produit ab, alors [k]b ∈ Zb? . Ainsi, l’application g induit une application f : ? f : Zab → Za? × Zb? , k 7→ ([k]a , [k]b ). ? Comme g est injective, f l’est aussi. En effet, pour tous k ∈ Zab ⊂ Zab ? et ` ∈ Zab ⊂ Zab , si f (k) = f (`), alors g(k) = g(`) et donc k = `. Montrons maintenant que f est surjective. Considérons donc un couple (p, q) ∈ Za? × Zb? ⊂ Za × Zb . Comme g est surjective, il existe

22

ERIC HOFFBECK

k ∈ Zab tel que f (k) = (p, q), i.e. [k]a = p et [k]b = q. De plus, par hypothèse, on a [k]a ∧ a = 1 et [k]b ∧ b = 1. En appliquant à nouveau le lemme d’Euclide, on en déduit que k ∧ a = 1 et k ∧ b = 1. Le corollaire 52 du théorème de Bézout montre alors que k ∧ ab = 1. Donc ? k ∈ Zab et f (k) = g(k) = (p, q). Ceci prouve que f est surjective. L’application f est à la fois injective et surjective. Elle est donc ? et Za? × Zb? ont le même bijective. Ceci prouve que les ensembles Zab cardinal, d’où ϕ(ab) = ϕ(a)ϕ(b).  La proposition 67 permet également de calculer la valeur de ϕ pour tout entier naturel qui est le produit de deux nombres premiers distincts : Corollaire 70. Soit n un entier naturel. On suppose que n = pq, où p et q sont deux nombres premiers distincts. Alors ϕ(n) = (p − 1)(q − 1). Démonstration. Comme p et q sont premiers, on a ϕ(p) = p − 1 et ϕ(q) = q − 1. Comme de plus ils sont distincts, ils sont premiers entre eux. En effet, div(p, q) = {1, p}∩{1, q} = {1}. Le résultat découle alors de la proposition 67.  III.3. Le théorème d’Euler. Le théorème d’Euler, que l’on va maintenant démontrer, est le point de départ du système de cryptographie RSA. Théorème 71 (Euler). Soient a ∈ Z et n ∈ N∗ deux entiers. Si a et n sont premiers entre eux, alors aϕ(n) ≡ 1

mod n.

Dans le cas particulier où n est un nombre premier, ce résultat est connu sous le nom de petit théorème de Fermat. Comme ϕ(p) = p − 1 pour tout nombre premier p, et que a est premier à p si et seulement si il n’est pas multiple de p par le théorème 60, le résultat s’énonce comme suit : Corollaire 72 (Petit théorème de Fermat). Pour tout nombre premier p, et tout entier naturel a non multiple de p, on a ap−1 ≡ 1

mod p.

Démonstration du théorème d’Euler. Considérons les éléments de Zn? ⊂ Zn , rangés par ordre croissant. On les note r1 , . . . , rϕ(n) . Pour tout i, on a donc 0 ≤ ri < n et ri ∧ n = 1.

ARITHMÉTIQUE - LICENCE 1

23

On considère maintenant les éléments suivants, qui sont les restes de la division euclidienne par n des produits des entiers r1 , . . . , rϕ(n) par a: [ar1 ]n , . . . [ar2 ]n , . . . , [arϕ(n) ]n . On va montrer que ce sont des éléments de Zn? , et qu’ils sont deux à deux distincts. – Par définition de la division euclidienne, on a [ari ]n ∈ Zn . De plus, comme a ∧ n = 1 et ri ∧ n = 1, par le corollaire du théorème de Bézout (Corollaire 52), ari ∧ n = 1. En appliquant le lemme d’Euclide (Lemme 42), on en déduit que [ari ]n ∧ n = 1. Donc, [ari ]n est bien un élément de Zn? . – Supposons que [ari ]n = [arj ]n . Alors ari ≡ arj mod n. Autrement dit, l’entier n divise la différence ari −arj = a(ri −rj ). Or n∧a = 1. Donc par le lemme de Gauss, n|(ri −rj ). On a donc ri ≡ rj mod n. Comme ri et rj sont des éléments de Zn , ceci implique ri = rj , c’est-à-dire i = j. Par contraposée, on en déduit que si i 6= j, alors [ari ]n 6= [arj ]n . Ainsi, les éléments [ar1 ]n , . . . , [arϕ(n) ]n sont ϕ(n) éléments deux à deux distincts de Zn? . Autrement dit, on vient en fait de montrer l’égalité d’ensembles : {[ar1 ]n , [ar2 ]n , . . . , [arϕ(n) ]n } = Zn? = {r1 , . . . , rϕ(n) }. En faisant le produit de tous les éléments de cet ensemble, on obtient : r1 . . . rϕ(n) = [ar1 ]n . . . [arϕ(n) ]n . A fortiori, ces deux produits sont congrus modulo n : r1 . . . rϕ(n) ≡ [ar1 ]n . . . [arϕ(n) ]n

mod n.

D’autre part, par compatibilité de la congruence et de la multiplication, comme [ari ]n ≡ ari mod n pour tout i, on a [ar1 ]n . . . [arϕ(n) ]n ≡ ar1 ar2 . . . arϕ(n)

mod n.

D’où finalement r1 . . . rϕ(n) ≡ aϕ(n) r1 . . . rϕ(n) mod n. L’entier n divise donc la différence r1 . . . rϕ(n) − aϕ(n) r1 . . . rϕ(n) = (1 − aϕ(n) )r1 . . . rϕ(n) . Comme il est premier à chacun des entiers r1 , . . . rϕ(n) , en appliquant ϕ(n) fois le lemme de Gauss 53, on en déduit que n divise aϕ(n) − 1, ce qui démontre le théorème. 

24

ERIC HOFFBECK

IV. Le système RSA Deux interlocuteurs, disons Alice et Bob, souhaitent échanger des informations confidentielles. Pour commencer, ils conviennent de transformer ces informations en données chiffrées, par exemple en associant à chaque lettre son rang dans l’alphabet, ou bien en utilisant le code ASCII. Les informations à échanger sont donc maintenant des listes de nombres. Pour éviter qu’un intermédiaire indiscret ne puisse lire leurs communications, Bob et Alice vont crypter leurs messages, c’est-à dire transformer cette liste de nombres. Ils disposent pour cela de différentes méthodes. L’une d’entre elles a été étudiée en TD. Il s’agit du chiffrement affine. Outre les fragilités statistiques, également étudiées en TD, cette méthode nécessite l’échange au préalable d’une clé secrète. Toute personne qui parviendrait, d’une façon ou d’une autre, à se procurer cette clé secrète, par exemple au moment où Bob la transmet à Alice, pourrait ensuite déchiffrer tous les messages interceptés. Le système RSA, qui tient son nom de ses concepteurs (Rivest, Shamir et Adleman), et que nous allons maintenant décrire, est un système à clé publique. L’une de ses caractéristiques est qu’il ne nécessite pas d’échange préalable d’information. Bob va choisir et diffuser une clé publique, qui permet à toute personne souhaitant lui envoyer un message, en l’occurrence à Alice, de crypter ce message. Bob dispose également d’une clé secrète qui va lui permettre de décoder le message. Mais cette clé n’a pas besoin d’être transmise ; il sera donc beaucoup plus difficile à un intermédiaire indiscret de se la procurer. De plus, elle ne peut pas se calculer à partir de la clé publique. Donc, une personne interceptant le message ne pourra pas le décoder, même si elle connait la clé publique. IV.1. Préliminaires arithmétiques. Le système RSA repose sur le résultat suivant, que l’on va maintenant démontrer : Proposition 73. Soient p et q deux nombres premiers distincts, et N = pq. Soit e > 0 un entier naturel premier à ϕ(N ) = (p − 1)(q − 1). Alors (1) Il existe un entier naturel d > 0 tel que ed ≡ 1 mod ϕ(N ). (2) Pour tout x ∈ Z, on a xed ≡ x mod N . Avant de démontrer ce résultat, mettons le en oeuvre dans deux cas particuliers. Exemple 74. On considère l’entier N = 10 = 2 × 5. On a ϕ(N ) = 1 × 4 = 4, et 3 ∧ 4 = 1. Posons e = 3. L’écriture de Bézout 1 = 4 − 3

ARITHMÉTIQUE - LICENCE 1

25

montre que (−1) × 3 ≡ 1 mod 4. Pour avoir un coefficient d > 0, il suffit d’ajouter 4 à −1. En effet, −1 ≡ 3 mod 4, donc (−1) × 3 ≡ 3 × 3 mod 4, et on peut prendre d = 3. Le produit ed vaut alors 9, et le théorème affirme que pour tout entier relatif x, x9 ≡ x mod 10. Grâce à la compatibilité entre congruences et opérations, il suffit de le vérifier pour x ∈ Z10 . Saurez-vous le faire à l’aide de votre calculatrice ? Exemple 75. On considère maintenant N = 29 × 37 = 1073. On a ϕ(N ) = 28 × 36 = 1008. Posons e = 5. L’algorithme d’Euclide conduit à l’écriture de Bézout 2 × 1008 − 403 × 5 = 1. Donc 5 × (−403) ≡ 1

mod 1008.

Comme −403 + 1008 = 605 ≡ −403 mod 1008, on en déduit que 5 × 605 ≡ 1 mod 1008. Le théorème affirme donc que pour tout x ∈ Z, x3025 ≡ x mod 1073. Attention, les chiffres sont maintenant trop grands pour le vérifier directement à la machine. Heureusement, on dispose de l’algorithme des carrés itérés, qui permet justement de calculer la valeur modulo 1073 d’une grande puissance de x ! Démonstration de la proposition 73. (1) Comme e est premier à l’entier ϕ(N ), par le théorème de Bézout, il existe des entiers relatifs u et v tels que eu + vϕ(N ) = 1. On a donc eu ≡ 1 mod ϕ(N ). Posons d = [u]ϕ(N ) . On a u ≡ d mod ϕ(N ). Donc, par compatibilité de la congruence et des opérations, ed ≡ 1 mod ϕ(N ). De plus, puisque d est le reste d’une division euclidienne, d ≥ 0. Enfin, si d = 0, alors ed ≡ 0 mod ϕ(N ), ce qui est impossible. Donc d > 0. (2) Par (1), ed ≡ 1 mod ϕ(N ). Donc il existe k ∈ Z tel que ed = 1 + kϕ(N ) = 1 + k(p − 1)(q − 1). Comme p et q sont deux nombres premiers distincts, ils sont premiers entre eux. Donc par le corollaire 56, il suffit de vérifier que xk(p−1)(q−1)+1 est congru à x modulo p et modulo q. Pour cela, on distingue deux cas. – Supposons tout d’abord que p|x ; alors x ≡ 0 mod p. Donc par compatibilité de la congruence et des puissances, xk(p−1)(q−1)+1 ≡ 0

mod p,

d’où xk(p−1)(q−1)+1 ≡ x mod p. – Supposons maintenant que p ne divise pas x. On a alors, par le petit théorème de Fermat (Corollaire 72), la relation xp−1 ≡ 1 mod p. Toujours en utilisant la compatibilité de la congruence et

26

ERIC HOFFBECK

des opérations, on en déduit xk(p−1)(q−1) ≡ 1

mod p,

et xk(p−1)(q−1)+1 ≡ x mod p. Le même raisonnement par disjonction des cas suivant si q divise ou ne divise pas x permet de montrer que xk(p−1)(q−1)+1 ≡ x mod q, et la proposition en découle par le corollaire 56.  Remarque 76. Si x est premier à N , la congruence xed ≡ x mod N découle du théorème d’Euler, puisque ed ≡ 1 mod ϕ(N ). Cette partie de la proposition 73 est donc vraie sans aucune hypothèse sur l’entier N . En revanche, la congruence xϕ(N )+1 ≡ x mod N n’est pas vraie en général, pour x non premier à N . Par exemple, si N = 9 = 32 , alors ϕ(N ) + 1 = 6 + 1 = 7, et 37 6≡ 3 mod 9. Il est donc nécessaire, dans la proposition 73, de supposer que N est le produit de deux nombres premiers distincts. IV.2. Les fonctions de cryptage et de décryptage. Soit N = pq un produit de deux nombres premiers distincts. On se donne deux entiers naturels positifs e et d tels que ed ≡ 1 mod ϕ(N ). On sait que de tels entiers existent grâce à la proposition 73. On considère alors les fonctions suivantes : f : ZN → ZN x 7→ [xe ]N

g : ZN → ZN x 7→ [xd ]N .

et

Lemme 77. Ces deux fonctions sont des bijections réciproques l’une de l’autre. Exemple 78. Si l’on prend p = 2 et q = 11, on a N = 2 × 11 = 22 et ϕ(N ) = 1 × 10 = 10. On peut donc choisir e = 3, et on vérifie que f = 7 convient comme clé secrète puisque 3 × 7 = 21 ≡ 1 mod 10. On obtient les tableaux de valeurs suivants pour les fonctions f (x) = [x3 ]22 et g(x) = [x7 ]22 , qui montrent bien que ces deux applications sont bijectives et réciproques l’une de l’autre : x f (x)

0 0

1 1

2 8

x g(x)

0 0

1 1

2 18

3 5 3 9

4 20 4 16

5 15 5 3

6 18 6 8

7 13 7 17

8 6 8 2

9 3

10 10

11 11

12 12

13 19

14 16

15 9

16 4

17 7

18 2

19 17

20 14

21 21

9 15

10 10

11 11

12 12

13 7

14 20

15 5

16 14

17 19

18 6

19 13

20 4

21 21

ARITHMÉTIQUE - LICENCE 1

27

Démonstration du lemme 77. Il suffit de montrer que les applications composées f ◦ g et g ◦ f sont égales à l’application identité de ZN . Soit donc x ∈ ZN . Par définition, f ◦ g(x) = f ([xd ]N ) = [([xd ]N )e ]N . Or xd ≡ [xd ]N mod N . Donc, par compatibilité de la congruence et des opérations, ([xd ]N )e ≡ xde mod N . Ces deux nombres étant congrus modulo N , ils ont le même reste dans la division euclidienne par N . Donc, f ◦ g(x) = [xde ]N . Or, par la proposition 73, xde ≡ x mod N . Donc [xde ]N = [x]N ; de plus, comme x ∈ ZN , [x]N = x. On obtient donc finalement f ◦ g(x) = x. Le même argument permet de montrer que g ◦ f (x) = x  IV.3. Clé publique et clé secrète. Nous sommes maintenant en mesure de décrire le principe du système RSA. Bob, qui doit recevoir des messages confidentiels, choisit deux nombres premiers distincts p et q. Il pose N = pq, et calcule ϕ(N ) = (p − 1)(q − 1). Il choisit ensuite un entier e premier à ϕ(N ), et à l’aide d’une écriture de Bézout, trouve un entier d tel que ed ≡ 1 mod ϕ(N ), comme dans la proposition 73. Une fois ces calculs faits, Bob diffuse le couple d’entier (N, e). C’est sa clé publique. Ce couple détermine la fonction de cryptage du lemme 77, et permet donc à Alice de coder son message, en lui appliquant f . Quand il reçoit le message d’Alice, Bob n’a plus qu’à lui appliquer la fonction de décryptage g pour décoder le message. En effet, comme g ◦ f = IdZN , en appliquant g au caractère codé f (x) qu’il a reçu, Bob obtient g ◦f (x) = x, qui est bien le caractère initial du message d’Alice. Exemple 79. Etape 1 : les clés. Supposons par exemple que Bob choisit les nombres premiers p = 29 et q = 37. On a donc N = 29 × 37 = 1073. Bob peut aussi calculer ϕ(N ) = 28 × 36 = 1008. Il choisit e = 5, qui est clairement premier à 1008 ; les calculs faits dans l’exemple 75 montrent que d = 605 est la clé secrète correspondant à ce choix. Bob dispose donc de la clé publique (N = 1073, e = 5) qu’il envoie à Alice, et de la clé secrète d = 605 qu’il garde pour lui. Etape 2 : le codage. Alice veut envoyer le message ’Bonjour’ à Bob. Supposons ici que les lettres soient codées par leur rang dans l’alphabet, de 1 pour la lettre A à 26 pour la lettre Z. Le message d’Alice correspond donc à la suite de nombres (02, 15, 14, 10, 15, 21, 18), qui donne le nombre 02151410152118, qu’elle redécoupe en tranches (021, 514, 101, 521, 118). Elle obtient une nouvelle liste de nombres qui sont bien dans Z1073 puisqu’ils n’ont que trois chiffres. Utilisant la clé publique fournie par Bob, elle remplace alors chacun des nombres x de cette liste par [x5 ]1073 .

28

ERIC HOFFBECK

Remarquons que le premier nombre de la liste peut être calculé directement à la machine, tandis que pour les suivants, il faut utiliser un tableur, ou bien l’algorithme des carrés itérés ! Elle obtient la nouvelle liste (263, 234, 48, 724, 786), qu’elle transmet à Bob. Etape 3 : le décodage. Il ne reste plus à Bob qu’à remplacer chacun des nombres y du message reçu par [y 605 ]1073 . L’exposant est maintenant trop grand pour utiliser directement la calculatrice. Mais on peut faire appel à l’algorithme des carrés itérés. Celui-ci peut-être mis en oeuvre par exemple sur une feuille de calcul. On obtient le tableau suivant : A B k 1 0 0 1 1 2 1 3 1 4 0 5 1 6 0 7 0 8 1 9

C 263 497 219 749 895 567 662 460 219 749

D 1 263 263 728 188 872 872 1063 1063 1063 21

La première colonne donne les coefficients de l’écriture de 605 en base 2. En combinant avec la colonne suivante, on lit 605 = 1 + 22 + 23 + k 24 + 26 + 29 . La colonne suivante calcule les valeurs de 2632 modulo 1073 par la méthode des carrés itérés. On initialise avec 263 en case C2 , et on définit Ci+1 = mod (Ci2 ; 1073). Enfin, la dernière colonne sert à calculer 2

3

4

6

9

263605 = 263 × 2632 × 2632 × 2632 × 2632 × 2632 . Pour cela on utilise une instruction conditionnelle. On initialise D1 = 1. Puis on pose Di+1 = Di ou mod (Di × Ci+1 ; 1073) suivant que la puissance de 2 correspondant à cette ligne de calcul intervient ou non dans l’écriture de 605. La dernière case de la colonne D donne la valeur modulo 1073 de 265605 . On obtient bien le nombre 21 du message initial d’Alice !

ARITHMÉTIQUE - LICENCE 1

29

IV.4. Sécurité du système RSA. Imaginons qu’un intermédiaire indiscret capte le message codé d’Alice. Il connait aussi la clé publique (N, e). Si N est petit, il lui suffit d’écrire toutes les valeurs de la fonction f pour avoir la fonction réciproque, comme on l’a fait précédemment dans l’exemple 78. Mais dans la pratique, l’entier N est trop grand pour que cette stratégie soit réalisable. S’il veut maintenant utiliser la même méthode que Bob pour décrypter le message, il lui suffit de trouver un entier d > 0 tel que ed ≡ 1 mod ϕ(N ). Comme on l’a vu dans la démonstration de la proposition 73, ceci peut se faire très simplement à l’aide d’une écriture de Bézout ! Mais pour cela, il est indispensable de connaître l’entier ϕ(N ) = (p − 1)(q − 1). Bien entendu, si N = 1073, il est très facile de retrouver les deux facteurs premiers p et q, et de calculer ϕ(N ). Mais pour un N assez grand, ce n’est plus le cas. Le système RSA fonctionne donc grâce aux faits suivants : – On dispose d’algorithmes produisant des nombres premiers très grands ; – On ne dispose pas d’algorithme permettant de calculer ϕ(N ) sans passer par la factorisation de N ; – On ne dispose pas d’algorithme permettant de factoriser N en temps fini si N est assez grand. Les records en matière de factorisation de très grands nombres sont assez impressionnants : on a déjà factorisé un nombre de 232 chiffres ! Mais cela nécessite le travail des meilleurs spécialistes mondiaux, ainsi que l’utilisation d’un grand nombre d’ordinateurs pendant plusieurs mois, voire plusieurs années...