Arithmétique modulaire, nombres rationnels et cryptographie

Dimension: px
Commencer à balayer dès la page:

Download "Arithmétique modulaire, nombres rationnels et cryptographie"

Transcription

1 Arithmétique modulaire, nombres rationnels et cryptographie Jacques Printems Module libre sciences «Mathématiques Expérimentales» Licence 2, Université de Paris 2, Fig. Ils [les rationnels] sont parmi les nombres réels comme des étoiles dans le ciel pour illuminer le mystère du continu. (Émile Borel)

2 Nombres de Fibonnacci et l algorithme d Euclide Une histoire de lapins... C est à l occasion de recherches sur la prolifération des lapins que Fibonacci (mathématicien italien, connu aussi sous le nom de Léonard de Pise, né vers 80 et mort en 250) fit l hypothèse que chaque couple de lapins donne naissance d abord à un unique couple de lapins à la première génération puis à un unique couple de lapins à la deuxième génération. On note F n le nombre de couples de lapins à la n e génération. On a donc 0 si n = 0 F n = si n = F n + F n 2 si n 2. Comment se comporte F n lorsque n tend vers l infini? A priori, F n est de plus en plus grand et semble tendre vers l infini. À quelle vitesse? Lorsque n est grand, y-a-t-il un moyen d estimer F n? L équation du second degré x 2 = x+ possède deux racines ϕ = (+ 5)/2 = et ϕ = ( 5)/2. La racine positive ϕ est le nombre d or. On montre par récurrence que F n ϕ n 2. En effet, on a pour n 2, F n+ = F n + F n ϕ n 2 + ϕ n 3 = ϕ n 3 (ϕ + ) = ϕ n 3 ϕ 2 = ϕ n. Le nombre de couple de lapins croît donc au moins exponentiellement... Algorithme d Euclide La suite précédente a un lien avec l algorithme d Euclide. Qu est-ce que l algorithme d Euclide? Soit a > b > 0 deux entiers. l algorithme d Euclide définit les deux suites telles que 0 = r n+ < r n < < r = b < r 0 = a, q 2, q 3, q 4, q n+, () r i = q i+ r i + r i+, i =,..., n, où on effectue les divisions euclidiennes successives de r i par r i. Concrètement, on commence par faire la division euclidienne de a par b, puis de b par le reste obtenu, ainsi de suite : a = b q 2 + r 2 b = r 2 q 3 + r 3, r 2 = r 3 q 4 + r 4, La suite des restes {r i } est strictement décroissante et donc s annulle à un rang n+ fini. Le dernier reste non nul obtenu r n = pgcd(a, b). 2

3 Pourquoi? En fait, la quantité pgcd(r i, r i ) est conservée au cours de l algorithme. Ainsi pgcd(a, b) = pgcd(b, r 2 ) = pgcd(r 2, r 3 ) = = pgcd(r n, r n+ = 0) = r n. L algorithme d Euclide sert donc à déterminer le pgcd de deux nombres. Mais il fait mieux... Relation de Bezout L algorithme d Euclide fournit également des entiers α et β tels que αa + βb = r n. En effet, on construit des suites {u i } et {v i } telles que u i r 0 + v i r = r i pour i = 0,..., n. On initialise les deux suites comme : i = 0 : r r = r 0 = a i = : 0 r 0 + r = r = b On pose donc u 0 = v = et u = v 0 = 0. On suppose ensuite connues les valeurs de u i, u i, v i, v i et on utilise la relation () pour déterminer u i+ et v i+ r i+ = r i q i+ r i = (u i r 0 + v i r ) q i+ (u i r 0 + v i r ) = (u i q i u i ) r 0 + (v i q i v i ) r. On pose u i+ = u i q i u i et v i+ = v i q i v i. On récapitule l algorithme ci-dessous (2) u 0 =, u = 0, v 0 = 0, v =, u i+ = u i q i u i, i, v i+ = v i q i v i, i. Ainsi pour i = n, on a u n r 0 + v n r = r n = pgcd(a, b), soit en posant α = u n et β = v n : (3) αa + βb = pgcd(a, b). Exemple. Effectuons l algorithme d Euclide pour déterminer pgcd(2, 7) : 2 = = = = On a donc pgcd(2, 7) = et = = (7 5) = (7 (2 7)), soit = ( 5). 3

4 Lien avec la suite de Fibonacci La suite de Fibonacci permet d évaluer la complexité de l algorithme d Euclide. On va voir qu il a une complexité logarithmique en fonction de la taille des données : a et b. On montre d abord que r i F n+ i par une récurrence descendante sur i = n +,..., 0 qui utilise () : r i = q i+ r i + r i+ q i+ F n+i + F n i F n+i + F n i = F n i+, et r n+ = 0 F 0 = 0, r n = pgcd(a, b) F =. Donc en particulier, a = r 0 F n+ ϕ n où on rappelle que n est la nombre d étapes dans l algorithme. Ainsi, on a démontré le Théorème.2 Soit N un entier. Alors pour toute paire d entiers a et b inférieurs ou égales à N, le nombre d étapes dans l algorithme d Euclide est au plus + E(ln(N)/ ln(ϕ)) où E désigne la partie entière. Remarque.3 On remarque que le nombre d étapes pour calculer pgcd(f n+, F n ) est exactement n. En fait, la relation F n+ = F n + F n est la division euclidienne de F n+ par F n! (quotient et reste F n ). On en déduit en particulier que deux nombres de Fibonacci consécutifs sont premiers entre eux. La suite de Fibonacci est celle pour laquelle la complexité de l algorithme d Euclide utilisé pour calculer le pgcd de deux nombres consécutifs de cette suite (à savoir ) est maximale. On retrouvera ce comportement plus tard au 4 dans un tout autre contexte. Montrer que F pgcd(m,n) = pgcd(f m, F n ) 2 Congruences 2. Congruence Soit a et b deux entiers. On note a b pour signifier que a divise b, c.-à-d. il existe un entier k tel que b = ka. On dit que les entiers a et b sont congrus modulo un entier m, et l on note a b mod m, si on a m (a b). Un nombre x est souvent caractérisé par ses résidus modulo un entier ou plusieurs entiers : x mod m ou bien Pourquoi? (x mod m, x mod m 2,... ). 4

5 dans certains cas, la valeur d un nombre x modulo m nous importe plus que la valeur de x elle-même. Par exemple, il nous importe souvent plus de savoir quel jour de la semaine nous sommes que de connaître exactement le nombre de jours écoulés depuis le premier janvier. Connaître un grand nombre x modulo un entier m plus petit permet de travailler avec des nombres plus petit. Cela permet d organiser la vie à l échelle humaine par exemple (problème de calendrier). Cela permet aussi de retenir un nombre avec un jeu de nombres tous plus petits (problème de compression ou de partage de secret (cf. 3)). Un exemple de calcul modulo 3 : le triangle de Pascal. C k n = 0 si k > n, si k = 0 ou k = n, n(n ) (n k + ) k(k ) 2 si k n On représente dans la figure 2, le coefficient binomial modulo 2. Règles de calcul On considère les m premiers entiers 0,, 2,..., m que l on munit des opérations + et définies modulo m. On appelle Z m cet ensemble. On montre dans les tables et 2 des exemples pour m = 6 et m =. Techniquement, l ensemble Z m est une réunion de classes d équivalence. En effet, la relation mod m est clairement réflexive, symétrique et transitive : c est donc une relation d équivalence sur Z. Pour chaque entier a, on note a la classe d équivalence de a modulo m. a = {a + km, k Z}. Pour chaque m, il y a exactement m classes d équivalence modulo m, c.-à-d. 0,,..., m. on note Z m = {0,,..., m } l ensemble de toutes les classes d équivalence modulo m. On munit Z m des opérations + (addition) et (multiplication) comme ceci : a + b est la classe d équivalence de a + b et a b, la classe d équivalence de ab. En pratique, afin d éviter des notations compliquées, on a pris l habitude de désigner une classe d équivalence par un de ses représentants quelconque. On fera de même ici. Ainsi, le même symbole sera utiliser pour désigner un entier a et a sa classe d équivalence modulo m. On note Z m l ensemble des éléments de Z m inversible pour la multiplication. Notons pour finir que (Z m, +) et (Z m, ) sont des groupes commutatifs. Nous allons nous intéresser surtout aux propriétés de la multiplication modulo m. La proriété fondamentale de celle-ci peut se résumer par (x mod m) (y mod m) (x y) mod m, pour toutes valeurs entières de x et y. On dit que la multiplication est compatible avec la relation modulo. La démonstration est immédiate et utilise seulement la définition de la congruence. 5

6 Fig. 2 n {0,..., 256} en abscisse et k {0,..., 256} en ordonnée. Ici un carré noir en (n, k) si Ck n est un multiple de 3 et un carré blance sinon. 6

7 C est bien sûr aussi vrai pour l addition. En fait, cela permet de définir une opération (toujours notée ) sur les classes d équivalences. Exemples d applications : la «preuve par 9». Repose sur 0 mod 9. On remplace donc 0 par dans les puissances de 0, puisque 0 n (0 mod 9) n mod 9. Pour connaître un nombre modulo 9, il suffit donc d additionner ses chiffres. Ex : = mod 9 vaut +2+3 = 6 et 32 mod 9 vaut 3+2 = 5. Donc nécessairement, le résultat de l opération doit valoir 5 6 mod 9, soit 3. Effectivement, = 2 3 mod Éléments inversibles On s intéresse maintenant aux éléments de Z m qui sont «inversibles» modulo m. On remarque dans la table que 2, 3 et 4 ne sont pas inversibles modulo 6 : quelque soit leur produit modulo m avec un autre élément, le résultat est toujours différent de. Par contre, dans la table 2, on remarque que tout élément différent de 0 admet un (unique) inverse modulo. Ex : 8 7 mod. Tab. Tables d addition et de multiplication modulo Pour m quelconque, on notera Z m l ensemble des éléments de Z m qui sont inversibles pour la multiplication modulo m. Ainsi, dans les exemples précédents, on a Z 6 = {, 5} qui n a que deux éléments et Z = Z \{0} qui contient tous les éléments sauf 0. Pourquoi donc s intéresse-t-on aux éléments inversibles? On va voir dans l exemple suivant qu ils permettent de dévoiler une information cachée. Exemple 2. Une personne est née le jour j du mois m. On suppose j {,..., 3} et m {,..., 2}. Elle effectue l opération 2j + 3m et communique le résultat : 38. Comment retrouver j et m? Il s agit de résoudre l équation à deux inconnues 2j + 3m = 38. Modulo 3, cela donne : 2j 38 8 mod 3. Il s agit donc de résoudre une équation congruentielle linéaire à une inconnue (j). On remarque dans le tableau 3 que 2 3 mod 3. On multiplie donc notre relation par 3, on obtient : 3 2j 3 8 = 04 mod 3. 7

8 Tab. 2 Table de multiplication modulo et modulo Ainsi, j mod 3 mais comme il s agit de jour j =. Tab. 3 Calcul de 2 k modulo 3 pour k =,..., 30. k k mod k k mod Revenons à Z m. Combien y-a-t-il d éléments dans Z m en général et comment les caractériser? On voit dans les tables 2 que Z 2 = {, 5, 7, }. Or ces nombres n ont pas de facteurs communs avec 2 : il s agit des nombres entre et qui sont premiers avec 2. Est-ce vrai dans le cas général et peut-on le démontrer? La réponse nous est donnée par l algorithme d Euclide vu au paragraphe précédent. En effet, soit a un entier compris entre et m et premier avec m. Par définition, pgcd(a, m) = et donc, on sait qu il existe des entiers α et β tels que αa + βm =. Prenons, cette relation modulo m. On obtient αa mod m. Ainsi a est inversible et son inverse est α. Réciproquement, si a est inversible modulo m, alors il existe un entier b tel que ab mod m. Donc par définition, m (ab ). Il existe donc k tel que ab = mk. Soit alors d le pgcd de a et m, par définition du pgcd, d divise m, a donc également ab mk, c.-à-d.. Donc d =. On vient de démontrer le Théorème 2.2 Soit m. Un entier a est inversible modulo m si et seulement si pgcd(a, m) =. Ainsi le nombre d entiers compris entre et m inversibles modulo m est le nombre d entiers parmi {,..., m } qui sont premiers avec m. On note cette valeur ϕ(m). La fonction ϕ est appelée fonction d Euler. Calculons sa valeur pour quelques valeurs de 8

9 Fig. 3 On représente m en abscisses et ϕ(m) en ordonnée. m : ϕ(2) =, ϕ(3) = 2, ϕ(4) = 2, ϕ(5) = 4, ϕ(6) = 2,..., ϕ(2) = 4,... On remarque que si m est un nombre premier alors tout les entiers positifs qui le précèdent sont premiers avec lui. Donc dans ce cas, ϕ(m) = m. Mais de façon générale, il n y a pas de formules «explicite» pour ϕ(m). On représente dans la figure 3 les 000 premières valeurs de ϕ. On distingue des droites passant par 0 (en particulier la droite y = x qui correspond au cas où x est premier). Le théorème qui suit est très important (au cœur du système RSA par exemple, voir section 5) et est une conséquence de tout ce qui précède : Théorème 2.3 (Euler) Pour tout a élément de Z m (c.-à-d. premier avec m), on a la relation a ϕ(m) mod m. Soit a un entier premier avec m et soit x, x 2,..., x ϕ(m) une énumération des éléments de Z m (on sait qu il y en a ϕ(m)). Alors a x, a x 2,..., a x ϕ(m) est aussi une énumération de tous les éléments de Z m (car comme a est inversible, les éléments de la forme a x i sont tous distincts entre eux et il y en a le bon nombre ϕ(m)). On fait le produit P (modulo m) de tous les éléments. Il y a donc deux façons de l écrire, soit P = x x ϕ(m), soit P = ax ax ϕ(m), c.-à-d. P x x ϕ(m) a ϕ(m) x x ϕ(m) a ϕ(m) P mod m. 9

10 On conclut en multipliant par l inverse de P (qui est inversible puisque produit d éléments inversibles). En particulier, ce théorème fournit un inverse de a modulo m, à savoir, a ϕ(m). D autres propriétés de ϕ seront nécessaires par la suite : Proposition 2.4 Si m et n sont premiers entre eux alors Démonstration On considère le tableau suivant : ϕ(mn) = ϕ(m)ϕ(n) 2 3 m m + m + 2 m + 3 2m 2m + 2m + 2 2m + 3 3m.... (n )m + (n )m + 2 (n )m + 3 mn On effectue les opérations suivantes : (a) On élimine les colonnes commençant par un nombre non premier avec m. Il en reste par définition ϕ(m). (b) Maintenant, les colonnes i et i + k se correspondent par la bijection x x + k mod n. Chaque colonne non rayée contient donc le même nombre ϕ(n) de termes premiers avec n. On raye les autres. Au total, les ϕ(m)ϕ(n) éléments non rayés sont premiers avec m (phase (a)) et avec n (phase (b)), donc avec mn (puisque pgcd(m, n) = ). 3 Résolution d équations de congruence, théorème chinois et partage du secret. 3. Équation de congruence linéaire On appelle équation de congruence (modulo m), toute relation f(x) 0 mod m. On dit que l équation est résoluble s il existe un entier x qui satisfait l équation. On ne sait pas en général résoudre ces équations (pour f quelconque) et la possibilité de les résoudre ou non fait parti des questions les plus importantes en théorie des nombres. On a vu dans l exemple 2. que la résolution de certaines de ces équations (2x 8 0 mod 3) pouvait être très simple quand a et m sont premiers entre eux (2 et 3) car il suffit alors de trouver un inverse de a modulo m. Dans le cas général, où f(x) = ax b pour a et b entiers, a non nécessairement premier avec m, on sait répondre complètement (Théorème 3.2). Auparavant, on a besoin du lemme suivant. Lemme 3. (Lemme de Gauss) Soit a, b, c trois entiers tels que a divise le produit bc et a premier avec b, alors a divise c. 0

11 Démonstration Par Bezout, on sait qu il existe α et β entiers tels que aα + bβ =. En multipliant cette relation par c, on obtient que aαc + bβc = c. Donc si a divise bc alors a divise aussi bcβ et donc a divise aαc + bβc, à savoir c. On peut maintenant énoncer le Théorème 3.2 L équation de congruence linéaire ax b mod m admet une solution si et seulement si le pgcd(a, m) divise b. Plus précisément, si x 0 désigne une solution de ax b mod m alors toutes les solutions s écrivent sous la forme : m x k = x 0 + k, k = 0,..., pgcd(a, m). pgcd(a, m) Il y en a exactement (modulo m) pgcd(a, m). Démonstration On note g = pgcd(a, m). Comme g divise a et m, on a m = gm et a = ga avec a et m premiers entre eux. On peut voir ce dernier point en utilisant la relation de Bezout entre a et m : il existe α et β tels que αa + β = g, soit αga + βgm = g. En simplifiant par g, on obtient αa + βm =. Soit a et m premiers entre eux. Supposons qu il existe un x 0 tel que ax 0 b mod m. Alors m ax 0 b. On a g m, g a, donc g b puisque b = ax 0 km pour un certain entier k. Réciproquement, si g b alors il existe k tel que b = gk. Or il existe α et β tel que αa + βm = g. En multipliant par k, on obtient αak + βmk = gk = b. Alors x = kα est solution. On vient de montrer qu il existait des solutions si et seulement si g b. De plus, soit c solution alors c est de la forme proposée dans l énoncé. En effet, ac = ax mod m donc m a(c x). Il existe donc k tel que a(c x) = mk ou encore en simplifiant par g, a (c x) = m k. Donc m (c x) car m est premier avec a (lemme de Gauss). Donc c est de la forme proposée dans l énoncé. Enfin, il y a exactement g solutions. En effet, supposons qu il existe 0 k k g tels que x k x k mod m. Alors, on aurait km k m mod m, soit km = k m + lm. En simplifiant par m, on obtient k k = l g g puisque k k. Impossible puisque k et k sont compris entre 0 et g. 3.2 Système d équations de congruence linéaire Lorsque l on réunit plusieurs équations de congruences linéaires, le système d équations obtenu peut ne pas avoir de solutions même si chacune des équations en ont. Par exemple, le système x 0 mod 3 et x mod 6 n a pas de solutions. Cependant, lorsque les modules sont premiers deux à deux, le système a toujours une solution. Exemple : 23 est solution du système suivant : x 2 mod 3, x 3 mod 5, x 2 mod 7. Le t héorème suivant se place dans un cadre plus général :

12 Théorème 3.3 (Théorème chinois) Le système a i x b i mod m i pour i =,..., k a exactement une solution modulo m = m m 2 m k pourvu que m, m 2,...,m k soient premiers entre deux à deux et que pgcd(a, m ) = = pgcd(a k, m k ) =. Remarquons que l on s est placé dans un cas où les a i sont premiers avec les modules m i (contrairement au cas précédent). Sachons que l on peut relaxer l hypothèse selon laquelle les m i sont premiers entre eux deux à deux. La démonstration qui suit de ce théorème est importante parce qu elle nous donne un moyen de construire la solution. Démonstration On montre d abord l unicité de la solution modulo le produit m. Soit x et x deux solutions du système d équations de congruences a i x b i mod m i. On sait donc que a i x b i a i x mod m i, donc m i divise a i (x x ). Comme pgcd(a i, m i ) =, m i divise donc x x (lemme de Gauss 3.). Maintenant, comme les m i sont premiers entre eux deux à deux et que chacun divise x x, leur produit m aussi. Ainsi m x x et donc x x mod m. On montre maintenant l existence de solutions. On trouve d abord k entiers c i tels que a i c i mod m i, i k (il s agit des inverses de a i modulo m i, on sait qu ils existent par le théorème 2.2). On note n i les quotients respectifs de m par m i. Il est facile de voir que n i et m i sont premiers entre eux. En effet, comme m i et m j sont premiers entre eux si j i alors m i est premier avec le produit des m j pour j i. Il suffit de faire le produit des relations de Bezout par exemple pour le voir. Il existe donc u i et v i entiers tels que u i m i + v i n i =. On pose alors e i = v i n i. On a e i { mod mi, 0 mod m j, si j i. Une solution du système d équations est par conséquent En effet, on a pour tout i : c = e c b + + e k c k b k. a i c = a i c e b + a i c k e k b k a i c i b i b i mod m i. 3.3 Partage du secret Une application intéressante du théorème chinois 3.3 est la construction de schéma de partage (k, n). C est un concept lié à la sécurité de la transmission des messages. Définition 3.4 (Schéma de partage) Un schéma de partage (k, n) consiste en n personnes P,..., P n partageant un secret S de telle façon que : chaque P i possède une information I i ; 2

13 la connaissance de k informations parmi les {I,..., I n } permet de trouver S facilement ; connaître strictement moins que k d entre elles ne permet pas de trouver du moins facilement S. Nous allons construire un tel schéma dans le contexte des entiers (le secret S et les informations I i sont des nombres). Soit m < m 2 < m n une suite finie croissante d entiers premiers entre eux deux à deux telle que (4) m m 2 m k > m n m n m n k+2, cad que le produit des k premiers est strictement plus grand que le produit des k derniers. On pose M = m n m n k+2 et N = m m k. Soit S le secret tel que N S M et soit l information I i définie comme I i S mod m i, i =,..., n. Nous allons montrer que S et les informations {I,..., I n } forment un schéma de partage (k, n). Soit donc {I i,..., I ik } un sous-ensemble quelconque de k informations parmi l ensemble des n informations. D après le théorème chinois, le système d équations de congruences linéaires x I i mod m i, i {i,..., i k }, possède exactement une solution S donnée par (voir la démonstration du théorème) S e i I i + + e ik I ik mod (m i m ik ), où e i mod m i et 0 sinon. Comme S M = m m k et que la suite des m i est croissante alors S m i m ik ) et donc S = e i I i + + e ik I ik. Supposons maintenant que l on ne connaisse que k informations, soit {I i,..., I ik }. De même que précédemment, la théorème chinois nous donne une unique solution modulo m i m ik : S e i I i + + e ik I ik mod (m i m ik ). Par ailleurs, on sait que m i m ik m n k+2 m n = N S. Donc connaître S modulo le produit m i m ik ne suffit clairement pas. Combien y-a-t-il encore de valeurs possibles pour S sachant que N S M? Au moins (M N)/N. Il reste à construire de telles suites de sorte que M N N soit très grand. Cela rendra difficile le calcul de S ne connaissant que k informations. Nous ne donnons ici qu un exemple (voir TPs). Exemple 3.5 Soit S un numéro de téléphone que l on désire faire partager à n = 5 personnes de sorte que trois d entre elles mettant en commun leurs informations pourront le retrouver. On utilise les nombres (premiers) m = 253, m 2 = 26, m 3 = 279, m 4 = 2203, m 5 =

14 L information donnée à chacun en cachette des autres est I = 324, I 2 = 258, I 3 = 38, I 4 = 564, I 5 = 86. Les personnes P, P 2 et P 3 mettent leurs informations en communs. Quel numéro obtiennent elles? Et si P 3 n avait pas collaboré, quels numéros possibles aurait il fallu tester? 4

15 4 L arbre de Stern Brocot 4. Une construction amusante de Q + Il existe une manière astucieuse de construire l ensemble de tous les rationnels positifs. Découverte indépendemment par Moritz A. Stern, un mathématicien allemand et Achille Brocot 2, un horloger français il y a 50 ans. Comment? Partir de { 0, 0 } et de répéter l opération : insérer m + m n + n entre m n et m n. Deux questions se posent :. Pourquoi les fractions apparaissent elles toujours sous forme irréductible? 2. Est-on sûr d obtenir toutes les fractions? Réponse au premier point : Si m n < m n sont deux fractions consécutives à une étape alors m n mn =. On le voit par récurrence. En effet, cela est vrai initialement puisque 0 0 =. On insère maintenant (m + m )/(n + n ) entre les deux fractions m m n et n. Il faut vérifier : (n + m )n m(n + n ) = m n mn =, et m (n + n ) (m + m )n = m n mn =. Über eine zahlentheoretische Funktion, Journal für die reine und angewandte Mathematik 55, (858). 2 Calcul des rouages par approximation, nouvelle méthode, Revue chronométrique, 3, (86). 5

16 Donc la propriété est vraie tout au long de la construction de l arbre. En particulier, on voit que m et n sont premiers entre eux (Bezout) et donc que toute fraction qui apparaît est sous forme irréductible. Réponse au deuxième point : Soit a b une fraction telle que pgcd(a, b) =. Supposons que l on ait à une étape (5) m n < a b < m n. Alors à l étape d après, on a soit a b = m+m n+n et c est terminé, soit a b m+m n+n et alors on itère. Combien de fois? En fait, qu un nombre fini de fois comme le montre le raisonnement qui suit. Les inégalités (5) entraînent (6) an bm, bm an, soit, en multipliant par m + n la première, (m + n) la deuxième et en additionnant : (an bm)(m + n ) + (bm an )(m + n) m + n + m + n. En développant, on obtient a + b m + n + m + n, et comme m, n, m et n croissent à chaque étape, on doit atteindre a + b en un nombre fini d étapes. 4.2 Suites de Farey On note maintenant F N = {0 pq, q N }, c.-à-d. l ensemble des fractions rationnelles de l intervalle [0, ] mises sous forme irréductibles et dont le dénominateur vaut au plus N. Un tel ensemble est appelé suite de Farey d ordre N. Les considérations précédentes sur l arbre de Stern Brocot nous permettent de conclure que Théorème 4. Soit N. Alors les trois assertions suivantes sont vraies. (i) Si p q et r s sont consécutives dans F N alors p q r s = qs ou encore ps qr = 6

17 (ii) Si p q et r s sont consécutives dans F N alors elles le restent dans F M tant que N M < q + s mais sont séparées dans F q+s par leur médiane dite de Farey p + r q + s (iii) F N est un sous-arbre 3 de l arbre de Stern Brocot. On obtient F N de F N en insérant une fraction m+m N entre deux fractions m n de F N telles que n + n = N. et m n On retrouve le fait que si pgcd(m, n) = alors il existe a et b entiers tels que ma nb =. Il suffit pour cela de prendre la fraction qui précède m n dans F n. Procédure récursive pour afficher F N Algorithme récursif pour afficher le sous arbre de racine toutes les fractions de la suite de Farey d ordre N : m+n m +n donnée contenant faray=procedure(m,n,mp,np,n) si max(m+mp,n+np)<=n alors farey(m,n,m+mp,n+np,n) ; afficher (m+mp)/(n+np) ; farey(m+mp,n+np,mp,np,n) ; fin procedure Codage binaire de Q + On peut associer de façon unique à chaque fraction m n un chemin dans l arbre depuis la «racine» en utilisant les lettres G (pour un mouvement à gauche en descendant) et D (pour un mouvement à droite en descendant). Ex : GDDG représente la fraction c.-à-d. un sous-ensemble connexe par arc contenant la racine (ici ). 7

18 Questions :. Quel chemin pour une fraction donnée. 2. Quelle fraction pour un chemin donné Du chemin vers la fraction On répond d abord à la dernière question. On veut construire la fonction f : C f(c) où C désigne un chemin et f(c) la fraction associée. Les matrices 2 2 vont nous être d une aide précieuse. Rappelons au préalable les règles de calculs dans l ensemble des matrices 2 2 : [ a b c d ] [ x z y t ] [ ] ax + by az + bt = cx + dy cz + dt Soit C un chemin représentant la fraction m+m n+n. On représente cette fraction par la matrice [ ] n n M(C) = m m. Remarquons que lorsque l on se déplace à droite dans l arbre, n m+m et n n+n tandis que n et n restent inchangés. On doit donc avoir [ n + n n ] [ n n M(CD) = m + m m = m m ] [ 0 Lorsque l on se déplace à gauche n n + n et m m + m. On doit donc avoir aussi Ainsi, on pose [ ] [ n n + n n n M(CG) = m m + m = m m I = [ 0 0 ] [ 0, D = ] [ 0 ] [, et G = 0 et si on identifie C à M(C), les produits matriciels précédents nous permettent de retrouver m n à l aide de ces deux fractions adjacentes dans F n en itérant à partir de I (qui correspond à... ), les multiplications. Ex : [ ] [ ] [ ] [ ] [ ] GDDG M(GDDG) = = Ainsi, f(gddg) = = 5 7 et les fractions adjacentes à 5 7 dans F 7 sont 2 3 et 3 4. ]. ]. ] Coder une fraction par une suite de lettres Examinons maintenant la première question posée au début de cette section. Regardons d abord l effet d une multiplication à gauche par D. On a f(dc) = + f(c). 8

19 En effet, [ 0 ] [ n n m m ] [ = n n m + n m + n et m + n + m + n n + n = m + m n + n +. Ainsi, l effet d un mouvement à droite dans l arbre est neutralisé par la soustraction d une unité : f(c) = f(dc). Soit donc une fraction m n, mise sous forme irréductible, et telle que m > n. La fraction se situe donc dans la partie droite de l arbre. La première lettre de son chemin est donc D. Gardant en mémoire cette lettre, on est alors ramené à la situation initiale en remplaçant m par m n et en gardant inchangé n. Ainsi la nouvelle fraction m n n = m n est l ancienne retranché de. De même, si m < n, la fraction se situe dans la partie gauche de l arbre. Donc son inverse n m est dans la partie droite de l arbre. Donc neutraliser un mouvement à gauche dans l arbre revient à neutraliser un mouvement à droite du chemin inverse (ou D est remplacé par G et vice-versa). On garde donc en mémoire la lettre G et le même raisonnement que plus haut nous ramène à la situation initiale en remplaçant n par n m et en gardant inchangé m. Enfin, si m = n, le chemin est vide. L algorithme se lit donc comme Initialiser C à la chaîne vide "" ; Faire tant que m n, si m > n alors concaténer C CD ; m m n ; sinon concaténer C CG ; n n m ; ] 4.4 Lien avec l algorithme d Euclide Observons le chemin associé à 2 7 : DGDDG = D G D 2 G. On peut y lire les quotients q = {,, 2, } successifs dans l algorithme d Euclide utilisé pour déterminer le pgcd(2, 7) p. 3. En effet, une succession de direction vers la droite correspond à de multiples soustraction m m = m n d après l algorithme précédent, jusqu à ce que m < n ou m = n. Ce dernier cas correspond à celui où m aurait été initialement un multiple de n et donc un nombre entier de soustractions plus tard m = n. Le premier cas correspond à celui où m n est pas initialement un mutiple de n et alors les soustractions successives correspondent à une division euclidienne où l on obtient finalement après E(m/n) étapes, m = m E(m/n)n. Alors E(m/n) désigne le quotient et m le reste dans la division euclidienne de l entier initial m par n. Ensuite les rôles s échangent entre n et 9

20 m. Les mouvements à gauche vont correspondre à n = n E(n/m)m et ainsi de suite... On voit se dessiner successivement les différentes étapes de l algorithme d Euclide appliqué à m et n. Les longueurs des chemins successivement à droite, à gauche donnent les quotients dans les étapes de l algorithme d Euclide. Par exemple, le chemin correspondant à la fraction F n+ /F n où F n désigne le n e nombre de Fibonacci est donc une chaîne de longueur n qui vaut DGDG DG DGDG DGD si n est impair si n est pair. 4.5 Approximation des réels par des rationnels fractions continues Si on remplace m n par un irrationnel x dans l algorithme précédent, celui ne converge pas (en un nombre fini d étapes). Il peut fournir nénamoins des approximations rationnelles par défaut et par excès de x pour une tolérance ε > 0 donnée. La mise à jour de (m m n, n n) est remplacé par x x et (m m, n n m) est remplacé par x x/( x). Ainsi, on a Initialiser C à la chaîne vide "" ; Faire tant que x > ε, si x > alors concaténer C CD ; x x ; sinon concaténer C CG ; x x/( x) ; On peut rapprocher le développement d un irrationnel par un chemin infini dans l arbre de Stern Brocot à son approximation par réduites dans le contexte des fractions continues. En effet, reprenons l exemple des nombres de Fibonacci. Le quotient de deux nombres successifs de la suite font (7) F n+ F n Ce processus peut s itérer et on obtient = + F n = + F F n n. F n F n+ = + F n On sait que le rapport F n+ /F n converge vers le nombre d or ϕ comme on peut s en convaincre en passant à la limite dans (7). Ainsi, le nombre d or admet formellement un développement infini sous forme de fractions continues : ϕ =

21 On appelle n e réduite de ϕ la fraction rationnelle F n+ /F n. Elle correspond à une troncature dans l écriture pr ecédente de ϕ. Plus généralement, l algorithme d Euclide tel que décrit p. 2 construit une suite de restes {r i } et de quotient {q i } où i = 2,..., n + à partir de a = r 0 et b = r tel que a b = q 2 + = q 2 + b/r 2 q 3 + r 3 /r 2 = q 2 + q 3 + q 4 + +q n+ Grâce à la remarque fait au paragraphe précédent, on peut lire dans le développement d un rationnel par son chemin dans l arbre de Stern Brocot, les quotients obtenus successivement dans l algorithme d Euclide comme les «exposants» des lettres D et G. On en déduit formellement 4 le développement en fractions continues des irrationnels en considérant leur chemin infini dans l arbre. Une fraction réduite ou plus simplement une réduite correspondra à un changement de direction dans l arbre. Exemple (voir le tableau 4) : DG 2 D 2 G n est pas une réduite de 2 mais DG 2 D 2 en est une. À titre d exemple, on a calculé dans le tableau 4 quelques début de chemin pour quelques irrationnels et leurs développement en fractions continues correspondant (quand c est possible). On remarque que si les nombres algébriques (ceux racines de polynômes à coefficients dans Q) comme 2, 3, ϕ (le nombre d or) ont un codage périodique, les nombres irrationnels transcendants (c.-à-d. tous les autres) n ont pas de structures régulières dans leur développement à l exception de e dont le développement est quasipériodique. Enfin quelques approximations rationnels : m x n Chemin Précision Réduite e 9/7 D 2 GD 2 G oui 93/7 D 2 GD 2 GDG 4 D oui 878/323 D 2 GD 2 GDG 4 DGD non 272/00 D 2 GD 2 GDG 4 DGD 6 G 0 7 oui 497/8089 D 2 GD 2 GDG 4 DGD 6 GDG 8 D oui π 22/7 D 3 G oui 355/3 D 3 G 7 D 5 G oui 4 Il reste à passer à la limite... 2

22 Tab. 4 Codage de quelques irrationnels 2 DG 2 D 2 G 2 D 2 G 2 D DGD 2 GD 2 GD 2 GD ϕ = DGDGDGDGDGDGDG e D 2 GD 2 GDG 4 DGD 6 GDG 8 DGD 0 GDG 2 DG π D 3 G 7 D 5 GD 292 GDGD 2 GD (a) ϕ (le nombre d or) (b) e (c) π Fig. 4 Logarithmes en base 0 des erreurs par excès (en noir) et par défaut (en bleu) des encadrements de différents irrationnels obtenus en parcourant l arbre de Stern Brocot en fonction de la longueur du chemin. 22

23 5 Cryptage RSA RSA : acronyme pour Rivest, Shamir, Adleman, les auteurs de l article fondateur 5. Cryptage : transformation d un message en clair en un message codé compréhensible seulement par le destinataire. Forme générale d un système cryptographique : soit M un ensemble fini de messages en clair et M un ensemble de cryptogrammes. Un algorithme de chiffrement correspond à une fonction f : M M : au message en clair m M est associé le cryptogramme f(m). Pour pouvoir déchiffrer, c.-à-d. déterminer m connaissant f(m), il est nécessaire que f soit injective, ce que l on suppose par la suite et quitte à remplacer M par l image de f, on peut considérer que f est bijective. L algorithme de déchiffrement correspond donc à la fonction réciproque f : M M de f. 5. Exemples de procédés conventionnels 5.. Le chiffre de César (-50 av. J.C.) Ici A = {0,, 2,..., 25} représente l alphabet en utilisant la correspondance (par exemple) A, 2 B,..., 0 Z On prend M = M = A : l unité de chiffrement est la lettre { { A A A A Exemple : f : x x + 3 mod 26 et f : x x 3 mod 26. Ici f doit rester secrète (connue seulement de l expéditeur et du destinataire). Généralisation : f(x) = (αx + β) mod 26 où α, β Z et pgcd(α, 26) = Exercice : Montrer que f est bijective et expliciter f (voir Théorème 3.2, p. ) Méthode de Vigenère (diplomate français ( )) On prend M = M = A b où b N : l unité de chiffrement est le bloc de b lettres. et Exemple : { A b A b f : (a,... a b ) (a + mod 26,..., a b + b mod 26) { A f b A b : (a,... a b ) (a mod 26,..., a b b mod 26) Généralisation : on utilise une clef K = (k,..., k b ) A b et on choisit { A b A b f K : (a,... a b ) (a + k mod 26,..., a b + k b mod 26) 5 R. Rivest, A. Shamir, L. Adleman, A Method for Obtaining Digital Signatures and Public-Key Cryptosystems, Communications of the ACM 2 (2), (978). 23

24 Exemple : on veut crypter le texte ON A GAGNE avec la clef K =MATH, c.-à-d. b = 4 et K = (3,, 20, 8). On regroupe les lettres par 4 : ONAG AGNE, puis on applique f K. On obtient BOUO NHHM. Ici encore f, c.-à-d. K doit rester secrète. 5.2 Un système à clef publique : le système RSA Dans la méthode RSA, la fonction f : M M est connue de tous et s évalue «facilement» mais par contre le calcul de f (m ) pour m M est «très difficile» même connaissant f (fonction «one way»). De plus, la connaissance d une information supplémentaire (qui elle est gardée secrète) permet d évaluer facilement f. Description du procédé. Alice souhaite pouvoir recevoir des messages confidentiels. Elle choisit deux nombres premiers p et q distincts et «grands» et calcule leur produit n = pq. Puis elle choisit un entier e {, 2,..., (p )(q )} tel que pgcd(e, (p )(q )) =. Elle peut alors déterminer d {, 2,..., (p )(q )} tel que de mod (p )(q ) (voir Théorème 2.2, p. 8). Finalement, Alice rend public le couple (n, e) (dans un annuaire) et garde secret d (ainsi que p et q). 2. Bob souhaite transmettre un message à Alice. Pour ce faire, le protocole est le suivant : Bob consulte l annuaire et trouve le couple (n, e) correspondant à Alice ; Bob fait en sorte que son message corresponde à un entier m Z n selon une procédure connue de tous ; Bob envoie à Alice m = m e mod n. Alice déchiffre en calculant (m ) d mod n = m. Pourquoi cela fonctionne-t-il? La justification est donnée par le théorème suivant Théorème 5. Si (n, e, d) sont tels que décrits plus haut, alors la fonction f : Z n Z n m m e mod n est bien définie et bijective, de bijection réciproque f : Z n Z n m (m ) d mod n. Quelques remarques : Pour un usage commercial, l entier n est choisi à 300 chiffres décimaux environ (28 bytes = 024 bits en base 2) 24

25 Comment calculer d à partir de p, q et e? Réponse : algorithme d Euclide. e et d ont typiquement plusieurs dizaines de chiffres dans leur développement décimal. Comment calculer rapidement m e mod n et (m ) d mod n? Voir le paragraphe 5.4. Pourquoi est-ce que f est difficile à évaluer connaissant n et e seulement? Car d un point de vue pratique, on est ramené à déterminer p et q c.-à-d. à factoriser n ce qui est (toujours d un point de vue pratique) un problème difficile. Record actuel : un entier n de 52 bits (55 chiffres décimales) factorisé en août Démonstration du théorème 5. Soient p et q deux nombres premiers distincts. On pose n = pq et on choisit e {,..., (p )(q )} premier avec (p )(q ). Soit m Z n donné et m m e mod n. Soit alors d un inverse de e modulo (p )(q ). Il existe donc k entier tel que de = + k(p )(q ). Mais alors (m ) d m ed m +k(p )(q ) m (m (p )(q )) k mod n. Or ϕ(n) = ϕ(p)ϕ(q) = (p )(q ) (Voir propriétés de ϕ dans la proposition 2.4). On obtient donc d après le théorème 2.3 (théorème d Euler) m (p )(q ) mod n et donc (m ) d m mod n. 5.4 Calcul rapide de puissance On a besoin de calculer f(m) = m e mod n. Méthode naïve : m e = m m m (m fois) modulo n. Ce qui n est pas utilisable lorsque e est très grand. Idée Si e = 2 p, on peut écrire m e = (((m 2 ) 2 )... ) 2, où on a effectué p mises au carré successives (en prenant modulo n à chaque fois). Dans ce cas, m e mod n se calcule en effectuant p multiplications dans Z n où p = ln(e)/ ln(2) e si e est grand. Généralisation : On effectue la division euclidienne de e par 2 : e = 2e + ɛ où ɛ = 0 ou et 0 e e/2 (e entier). On a m e = m ɛ (m 2 ) e. Or m ɛ est très simple à calculer puisque m ɛ = m si ɛ = ou si ɛ = 0. 6 à actualiser... 25

26 On est donc ramené à évaluer la puissance (m 2 ) e où l exposant est au moins deux fois plus petit que e. Si e = 0, on a terminé car m e = m ɛ. Si e =, m e = m ɛ m 2. Si e 2, on effectue la division euclidienne de e par 2 : e = 2e 2 + ɛ 2 avec ɛ 2 = 0 ou et 0 e 2 e /2. Alors (m 2 ) e = (m 2 ) ɛ 2 ((m 2 ) 2 ) e 2. Si e 2 {0, }, c est terminé. Sinon, on effectue la division euclidienne de e 2 par 2... Plus précisement, on démontre le résultat suivant : la suite {e i } i 0 définie par e 0 = e et pour i 0, e i = 2e i+ + ɛ i+ avec ɛ i+ {0, }, est décroissante et nulle à partir d un certain rang. Soit alors p = min{i 0, e i = 0} (de sorte que e 0 > e > e p > 0 et e p+ = 0). De plus, on définit une suite {x i } comme x m mod n et x i+ = x 2 i, i p. On a m e x ɛ xɛ 2 2 xɛ p+ p+ mod n m e mod n se calcule donc avec p + + p multiplications et en outre, car ɛ p+ =. Donc p ln(e)/ ln(2). e = ɛ + 2ɛ ɛ p ɛ p+ 2 p, Finalement, l algorithme de calcul rapide de puissance s écrit Initialiser q ; Faire tant que e 0, si e mod 2 = alors q mq mod n ; e E(e/2) ; m m 2 mod n. Retourner q. Références [] Ronald L. Graham, Donald E. Knuth, Oren Patashnik, Concrete Mathematics, Addison Wesley publishing company, 995. [2] Evangelos Kranakis, Primality and Cryptography, Wiley Teubner Series in Computer Science, John Wiley & Sons, 986. [3] Gilles Dubertret, Initiation à la cryptographie, Vuibert, [4] Bruno Schneier, Cryptographie appliquée, Vuibert,