Cryptographie a clef publique - math.univ-lille1.fr

33
Cryptographie ` a clef publique ecile Schryve - Laurent Gajny 24 mai 2010 1

Transcript of Cryptographie a clef publique - math.univ-lille1.fr

Page 1: Cryptographie a clef publique - math.univ-lille1.fr

Cryptographie a clef publique

Cecile Schryve - Laurent Gajny

24 mai 2010

1

Page 2: Cryptographie a clef publique - math.univ-lille1.fr

Table des matieres

1 Clef secrete, clef publique 31.1 Cryptographie a clef secrete . . . . . . . . . . . . . . . . . . . 3

1.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1.2 Quelques exemples . . . . . . . . . . . . . . . . . . . . 5

1.2 Cryptographie a clef publique . . . . . . . . . . . . . . . . . . 61.3 Clef publique contre Clef privee . . . . . . . . . . . . . . . . . 7

2 Elements d’Algebre 92.1 Le petit theoreme de Fermat . . . . . . . . . . . . . . . . . . . 92.2 Le groupe multiplicatif . . . . . . . . . . . . . . . . . . . . . . 102.3 La fonction ϕ d’Euler . . . . . . . . . . . . . . . . . . . . . . . 10

3 Diffie-Hellman et RSA 113.1 Echange de clef Diffie-Hellman . . . . . . . . . . . . . . . . . . 11

3.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . 113.1.2 Outils mathematiques et algorithmes . . . . . . . . . . 12

3.2 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2.1 Avantages et inconvenients du cryptosysteme . . . . . 163.2.2 Le protocole RSA . . . . . . . . . . . . . . . . . . . . . 163.2.3 Le theoreme du RSA . . . . . . . . . . . . . . . . . . . 173.2.4 La signature dans RSA . . . . . . . . . . . . . . . . . . 18

4 Tests de primalite 184.1 Un premier test base sur le petit theoreme de Fermat . . . . . 194.2 Test de Solovay-Strassen . . . . . . . . . . . . . . . . . . . . . 214.3 Test de Miller-Rabin . . . . . . . . . . . . . . . . . . . . . . . 23

5 Programmation 265.1 Tests de primalite . . . . . . . . . . . . . . . . . . . . . . . . . 275.2 Le protocole RSA . . . . . . . . . . . . . . . . . . . . . . . . . 29

2

Page 3: Cryptographie a clef publique - math.univ-lille1.fr

Depuis longtemps, les hommes ont eu le souci de pouvoir se commu-niquer des donnees de maniere confidentielle, que ce soit pour s’echangerdes messages personnels aussi bien que des messages militaires. Pour cela,les hommes ont invente la cryptologie. Elle existe depuis l’Antiquite maispendant longtemps, elle fut consideree comme de l’art et c’est a partir duXVIIIeme siecle qu’elle devint reellement une science. Dans notre expose,nous allons nous pencher plus particulierement sur une partie de la cryp-tologie : la cryptographie. Elle fait donc partie, avec la cryptanalyse, de lacryptologie, qui est la science englobant le chiffrement et le dechiffrement demessages codes, messages codes que l’on appelle egalement cryptogrammes.Plus precisement, la cryptographie est la discipline de la cryptologie qui apour objectif d’assurer la securite lors de la transmission de messages. Parsecurite, nous entendons la confidentialite mais egalement l’authenticite del’expediteur et du destinataire. Pour se faire, les cryptogrammes utilisentdes clefs pour chiffrer les messages. La cryptographie traditionnelle est doncune science traitant de la transmission confidentielle de donnees et etudiantles differentes methodes permettant la transmission de messages sous formedeguisee tel que seul le destinataire soit capable de les lire. Meme si nousavons des applications concretes de la cryptographie, il ne faut pas oublierqu’il y a un aspect mathematique qui se cache derriere tout ca. De plus, nouspouvons dire que l’evolution de la cryptographie est liee a l’evolution desmathematiques mais aussi de l’informatique car c’est grace a l’informatiquequ’elle connu un essor important. De nos jours, la cryptographie peut etreutilisee dans les domaines militaire, commercial mais aussi pour la protectionde la vie privee.

1 Clef secrete, clef publique

1.1 Cryptographie a clef secrete

1.1.1 Principe

La cryptographie a clef secrete est utilisee depuis bien longtemps. Elle per-met a deux personnes possedant un secret commun de communiquer confi-dentiellement. En effet, on a le probleme suivant : Alice veut envoyer unmessage a Bob (par la suite, Alice et Bob pourront etre representes par Aet B) mais ne veut pas que les autres soient au courant. Pour cela, elle vad’abord se mettre d’accord avec Bob sur un secret commun qui va leur per-mettre de chiffrer et de dechiffrer les messages. Maintenant, nous allons vouspresenter la procedure :

3

Page 4: Cryptographie a clef publique - math.univ-lille1.fr

Figure 1 – Modelisation d’une communication confidentielle entre A et Ben presence de O.

– Alice va donc ecrire son message en clair puis le chiffrer grace au secretcommun.

– Ensuite, Alice va envoyer son message a Bob et il pourra le dechiffrerfacilement car il est le seul a connaıtre le secret, hormis Alice.

Le secret commun d’Alice et Bob s’appelle la clef, que l’on note en generalK, et on s’apercoit que si une troisieme personne Oscar (represente par Odans la suite) ne possede pas K alors elle ne peut pas dechiffrer le message.

Grace au schema ci-apres, nous pouvons voir qu’Oscar ne peut pas dechiffrerle message s’il ne possede pas la clef mais il pourrait tres bien essayer un cer-tain nombre de possibilites et par chance, tomber rapidement sur la solution.Alice et Bob ne peuvent donc pas choisir n’importe comment leur cle. Ce-pendant, s’ils font attention aux differents principes suivants :

– La securite repose sur le secret de la clef et non sur le secret de l’algo-rithme.

– Le dechiffrement sans la clef doit etre impossible (en temps raison-nable).

– Trouver la clef a partir du clair et du chiffre est impossible (en tempsraisonnable).

Alors theoriquement, Oscar ne pourra pas casser le systeme. Les principesenonces font partis des principes de Kerckhoffs.

4

Page 5: Cryptographie a clef publique - math.univ-lille1.fr

1.1.2 Quelques exemples

Le chiffrement de Jules Cesar

Le chiffrement par decalage est aussi appele chiffrement de Jules Cesarcar il a ete considere comme le createur de cette methode. En effet, meme sion a retrouve des traces de messages chiffres grace a une clef qui decale leslettres chez les Grecs, on sait que Jules Cesar n’a eu aucun contact avec cesmessages et on peut considerer qu’il a reinvente le fait de chiffrer les messages.Pour son epoque, ce fut revolutionnaire car jamais personne n’y avait pense,et surtout, si le message etait intercepte, il etait illisible pour les ennemis.D’ailleurs, on retrouve dans des ecrits de personnes de l’epoque que Cesarecrivait des messages incomprehensibles en n’alternant pas necessairement lesvoyelles et les consonnes comme ils le connaissaient pour faire des phrases.Cesar a donc surpris, innove et mis au point une strategie militaire que sesennemis ne pouvaient pas contrer car ils ne connaissaient pas le moyen dedechiffrer et ils ne connaissaient donc pas la clef. Mais en quoi consiste cechiffrement plus precisement ?

Ce chiffrement consiste donc a decaler les lettres d’un certain nombre derangs. Pour cela, il faut ecrire l’alphabet et chaque lettre sera remplace parla lettre que l’on obtient lorsque l’on se decale du nombre de lettres vouluesvers la droite. Mais regardons le sur des exemples :

– JULES CESAR deviendra OZQJX HJXFW si on decale de 5 rangsc’est-a-dire si on remplace A par F , E par J , . . .

– ALEA JACTA EST sera remplace par DOHD MDFWD HVW si ondecale de 3 rangs, si on remplace A par D, B par E,. . . , Z par C.

La clef secrete, que connaıt donc Cesar et son interlocuteur, est donc F oualors 5, qui correspond au nombre de lettres a passer avant d’arriver a cellesouhaitee pour le premier cas et pour le deuxieme, la cle sera D ou 3.

Pour chiffrer son message, Cesar va donc tout d’abord l’ecrire en clair,c’est-a-dire en latin. Puis, pour le chiffrer, il va decaler les lettres en utili-sant la cle secrete (qui lui indique donc le nombre de rang ou la lettre quiremplace A), Cesar, lui, decale les lettres vers la droite mais lorsque le des-tinataire recoit le message, pour le dechiffrer, il doit decaler les lettres, dumeme nombre de rang, mais vers la gauche. Ainsi, il va decouvrir le messageen clair emis par Cesar.Cela peut se faire avec n’importe quelle lettre puisque lorsque l’on arrive ala lettre Z, on repart au debut, c’est-a-dire a A. Selon l’histoire, Jules Cesarutilisait principalement la clef de chiffrement 3, ou encore D.

5

Page 6: Cryptographie a clef publique - math.univ-lille1.fr

On se rend compte qu’avec nos moyens actuels il serait tres facile de ledechiffrer mais pour l’epoque c’etait incomprehensible. Cependant, cela n’apas empeche ce systeme de se developper puisqu’il existe plusieurs variantes,avec des chiffres par exemple, ce systeme s’appelle aussi le chiffrement parsubstitution. Ce systeme nous montre cependant la limite d’un chiffrement aclef secrete.

Le chiffrement par substitution

On considerera ici l’exemple le plus basique qui soit.

A B C . . . Z01 02 03 . . . 26

Voici des citations de Jules Cesar que nous allons coder avec cette cle dechiffrement :

VENI VIDI VICI −→ 220514092209040922090309

TU QUOQUE MI FILI −→ 2021172115172105130906091209

ALEA JACTA EST −→ 011205011001032001051920

Pour dechiffrer les messages, il suffit de regrouper les chiffres 2 par 2 et d’uti-liser la clef pour leur attribuer la lettre correspondante. Une fois finie, le texteclair apparaıt et le message est dechiffre.

On peut se rendre que ces systemes sont peu resistants. En effet, pourrendre la tache du cryptanaliste difficile, il est important de concevoir dessystemes tels que le texte chiffre ait un aspect aleatoire sinon il serait tropsimple a dechiffrer. Pour cette raison, ainsi que pour le probleme de la confi-dentialite dans l’echange de donnees, une cryptographie a cle publique, oucryptographie asymetrique a vu le jour.

1.2 Cryptographie a clef publique

Etant donne que la cryptographie a clef secrete etait peu resistante , lacryptographie moderne a evolue pour devenir ce qu’on appelle maintenant lacryptographie a cle publique ou asymetrique. Cependant, cette cryptographieest apparue tres tardivement, en 1976 avec Diffie et Hellman, c’est donc unescience tres recente. La cryptographie a clef publique repose sur la notion defonction a sens unique dont nous allons donner la definition.

6

Page 7: Cryptographie a clef publique - math.univ-lille1.fr

Definition 1. Une fonction f : E → F est dite a sens unique si :– Il est possible de calculer simplement f(x) a partir de n’importe quelx

– Pour la plupart des y ∈ f(E) , il n’est pas possible de trouver un x telque f(x) = y, sauf en faisant un nombre prohibitif d’operations ou enayant une chance sur laquelle il est deraisonnable de compter.

En realite, on peut donc dire que les fonctions a sens unique sont des fonc-tions qu’il est difficile d’inverser, voire meme impossible sauf si on connaıt laclef privee. Il faut cependant preciser qu’il faut prendre E suffisamment grandpour empecher ou rendre derisoire une recherche exhaustive parmi tous lesantecedents possibles.

1.3 Clef publique contre Clef privee

La clef secrete a longtemps ete utilisee mais un dilemme s’est toujourspose : pour etablir un canal sur, on utilise la cryptographie mais la crypto-graphie a clef privee necessite un canal sur. La clef publique, elle, repond ace dilemme. En effet, lorsque l’on utilise une clef asymetrique, nous n’avonsplus besoin d’avoir un canal sur pour s’echanger des donnees puisqu’il y en acertaines qui sont publiques. De plus, l’expediteur et le destinataire n’ont pasbesoin des memes clefs pour chiffrer et dechiffrer les messages et ne doiventdonc pas s’echanger la clef. En contrepartie, tout le challenge consiste a s’as-surer que la clef publique que l’on possede est bien celle de la personne aqui on veut envoyer un message ou de qui on veut recevoir un message, maisnous en reparlerons un peu plus tard.

La cryptographie asymetrique repond donc a un besoin majeur de lacryptographie symetrique cependant c’est le mecanisme symetrique qui estle moins couteux en temps de calcul. En effet, pour les codes symetriques, lesclefs sont beaucoup plus petites et le chiffrement ainsi que le dechiffrementsont donc beaucoup plus rapides,ils travaillent de 100 a 1000 fois plus vite,ce qui n’est pas negligeable.

Les systemes actuels, utilisant la cryptographie, sont donc formes ainsi :ils utilisent la cryptographie asymetrique seulement au debut, c’est-a-direpour s’echanger les clefs, qui, elles, seront secretes, puis ensuite, ces clefssecretes prendront le relais. Parmi les systemes actuels, il y a par exempleInternet ou encore les cartes bancaires.

7

Page 8: Cryptographie a clef publique - math.univ-lille1.fr

Figure 2 – Attaque de l’homme du milieu lors d’une conversation entreAlice et Bob

Le dernier inconvenient que l’on pourrait encore presenter pour le chif-frement a clef publique a deja ete effleure au dessus, il s’agit du problemed’authentification. En effet, avec un chiffrement a clef publique, commentsavoir si le message que l’on envoie arrive a la personne souhaitee et quele message que l’on recoit provient de la bonne personne. Pour cela, desmecanismes d’authentification ont ete crees. Comme exemple d’interceptiondes messages lors d’un echange utilisant une clef publique, il y a l’attaquede l’homme du milieu. Supposons qu’Alice et Bob communiquent sur un ca-nal non sur grace a une cle publique, cette attaque consiste alors a placer unhomme au ”milieu” du canal (Oscar), c’est-a-dire qu’il va pouvoir intercepterles donnees entre Alice et Bob. Le but n’est pas de dechiffrer ce qu’ils vonts’envoyer mais d’intercepter les informations qu’ils s’echangent par rapport aleur clef et de transmettre a l’un et a l’autre des donnees erronees. En realite,lorsque Alice va envoyer des informations a Bob, l’homme du milieu va l’in-tercepter et renvoyer son information a lui et vice versa lorsque c’est Bob quitransmet des informations a Alice. De ce fait, lorsqu’Alice et Bob commu-niquent, ils croient se parler l’un a l’autre mais en realite ils communiquenttous les deux avec la tierce personne que l’on nomme l’homme du milieu ajuste titre. Contrairement au premier schema, nous pouvons nous apercevoirque l’homme du milieu n’a pas besoin de la clef pour gener la transmissionentre Alice et Bob. Le but n’est donc pas de dechiffrer les messages mais deles intercepter pour les modifier.

Pour eviter ce genre d’attaque, nous pouvons integrer dans les mes-sages codes un mecanisme d’authentification permettant de garantir la pro-venance du message chiffre. Pour etre sur de l’expediteur, on parle de si-

8

Page 9: Cryptographie a clef publique - math.univ-lille1.fr

gnature electronique et pour etre sur du destinataire, on parle de certificatelectronique.

Avant de voir plus en details des exemples de cryptosystemes a clef pu-blique, il nous faut rappeler quelques resultats d’algebre qui sont a la basede nos futurs exemples.

2 Elements d’Algebre

Ce qui fait sans doute le charme des cryptosystemes dont on parleraplus tard, est l’apparente simplicite des elements mathematiques auxquels ilsfont appel. Nous travaillerons toujours dans un ensemble du type Z/nZ. Onsupposera acquis les deux theoremes fondamentaux suivants.

Theoreme 1 (Theoreme de Gauss). Soient (a, b, c) ∈ Z3.{a|bca ∧ b = 1

⇒ a|c

Theoreme 2 (Theoreme de Bezout). Soient (a, b) ∈ Z2.

a ∧ b = 1⇔ ∃(u, v) ∈ Z2 : au+ bv = 1

2.1 Le petit theoreme de Fermat

Theoreme 3 (Petit theoreme de Fermat). Soit p un nombre premier et aun entier naturel premier avec p alors :

ap−1 ≡ 1 (mod p) (1)

Demonstration. Supposons dans un premier temps que p divise l’un destermes de la suite a, 2a, . . . , (p−1)a disons le terme ka. Comme a et p sont pre-miers entre eux, par le theoreme de Gauss p divise k. Ceci est absurde puisque1 < k < p. Donc p ne divise aucun nombre de la suite a, 2a, . . . , (p− 1)a.

On montre maintenant que les restes des divisions de a, 2a, . . . , (p−1)a par psont tous differents. En effet, supposons qu’on ait un reste identique pour kaet k′a avec k > k′, ceci impliquerait que p divise (k− k′)a et c’est impossiblepar le point precedent. Donc a l’ordre des facteurs pres, les restes des divisionsde a, 2a, . . . , (p− 1)a par p est 1, 2, . . . , p− 1.

⇒ a× 2a× · · · × (p− 1)a ≡ 1× 2× · · · × (p− 1) (mod p)

⇒ ap−1 ≡ 1 (mod p)

9

Page 10: Cryptographie a clef publique - math.univ-lille1.fr

On peut alors prouver un corollaire tres utile.

Corollaire 1. Soit p un nombre premier et a un entier quelconque alorsap ≡ a (mod p)

Demonstration. – Si a ∧ p = 1, par le theoreme 1, ap−1 ≡ 1 (mod p).– Sinon, comme p est premier, a ∧ p = p et alors a ≡ 0 (mod p)Dans les 2 cas, a(ap−1 − 1) ≡ 0 (mod p) d’ou la conclusion.

2.2 Le groupe multiplicatif

Definition 2. Soit n ∈ N. On appelle groupe multiplicatif et on note (Z/nZ)×

l’ensemble des elements inversibles de Z/nZ.

On peut caracteriser les elements de ce groupe, la proposition suivante bienconnue nous le permet.

Proposition 1.

(Z/nZ)× = {m ∈ Z/nZ : m ∧ n = 1}

Demonstration.

m ∈ (Z/nZ)× ⇔ ∃m′ ∈ Z/nZ : mm′ ≡ 1 (mod n)

⇔ ∃k ∈ Z : mm′ + kn = 1

⇔ m ∧ n = 1 par le theoreme de Bezout

Ce resultat sera particulierement utile dans le protocole RSA.

2.3 La fonction ϕ d’Euler

Definition 3. On appelle fonction ϕ d’Euler ou indicatrice d’Euler la fonc-tion qui a un entier n associe le nombre d’entiers a premiers a n verifiant1 ≤ a ≤ n.

La fonction ϕ permet donc d’evaluer le cardinal du groupe multiplicatif(Z/nZ)×. Pour un nombre premier p, ϕ(p) = p− 1.On va enoncer un resultat primordial dans le protocole RSA.

10

Page 11: Cryptographie a clef publique - math.univ-lille1.fr

Proposition 2. Soient p et q deux nombres premiers distincts alors :

varphi(pq) = (p− 1)(q − 1)

Demonstration. ϕ(pq) est par definition le nombre d’entiers a : 1 ≤ a ≤ pqpremiers a pq. Ces entiers a sont les multiples de p et q. Or, il y a p multiplesde q dans l’ensemble {1, . . . , pq} et egalement q multiples de p. Dans cedenombrement, on a compte deux fois le terme pq. D’ou finalement :

ϕ(pq) = pq − (p+ q − 1) = (p− 1)(q − 1)

3 Diffie-Hellman et RSA

3.1 Echange de clef Diffie-Hellman

3.1.1 Principe

L’analogie avec le coffre fort

Le principe est assez simple. Alice (A) et Bob (B) veulent se commu-niquer un message confidentiellement. Pour cela, Alice va choisir un coffrefort pour lequel elle possede la clef et l’envoie a Bob tout en le laissant ou-vert. Bob va y mettre le message, le refermer et le renvoyer a Alice. AinsiAlice recevra le coffre fort qu’elle pourra ouvrir puisqu’elle possede la clemais toutes les personnes intermediaires ayant transporte le coffre n’aurontpas pu intercepter le message. Dans cet exemple, nous voyons bien pourquoices systemes sont egalement appeles des systemes asymetriques. En effet, onremarque que Alice et Bob n’ont pas besoin des memes informations tous lesdeux pour pouvoir s’echanger des messages codes.

Leur but est donc de trouver S qui leur servira de cle pour un chiffrementtraditionnel sans transmettre d’informations sur le canal qui pourraient per-mettre a des pirates de deviner S.

Nous obtenons donc le protocole suivant :– Alice et Bob se mettent d’accord publiquement sur un tres grand nombre

premier p et sur une racine primitive modulo p que l’on nommera α.– Alice choisit un nombre a tel que a < p mais qu’elle garde secret et elle

transmet a Bob αa (mod p).– Bob choisit un nombre b < p qu’il garde secret aussi et transmet a Aliceαb (mod p).

11

Page 12: Cryptographie a clef publique - math.univ-lille1.fr

– Leur secret commun sera donc αab (mod p). A va donc acceder a S enelevant alphab a la puissance a et B , en elevant αa a la puissance b.

3.1.2 Outils mathematiques et algorithmes

Le protocole de Diffie-Hellman utilise comme fonction a sens unique l’ex-ponentiation modulaire qui est impossible du point de vue computationnel ainverser pour des nombres tres grands. Cependant, il repose aussi sur d’autresaspects mathematiques comme le choix du groupe. En effet, c’est le groupeF∗p qui est utilise et il a pour propriete d’etre commutatif, ce qui est impor-tant ici puisque cela nous permet de dire que αab = αba, ce qui fait que Aet B obtienne la meme clef secrete. Il faut donc que le groupe de depart soitbien choisi et que les nombres utilises suffisamment grands pour eviter uneattaque par recherche exhaustive. Aujourd’hui, si on a un nombre premier pde l’ordre de 300 chiffres et si a et b sont de l’ordre de 100 chiffres, alors ilest quasiment impossible a casser.

Exponentiation modulaire et logarithme discret

Comme son nom l’indique, l’exponentiation modulaire permet de calcu-ler un nombre eleve a une certaine puissance et reduit modulo un autrenombre. Il est inconcevable pour des grands nombres de calculer dans unpremier temps ce nombre a la puissance voulue, puis le reduire modulo unautre grand nombre. Ceci serait tres couteux en temps de calcul et en espacememoire. Il existe des algorithmes nous permettant d’eviter ces problemes decout, un algorithme sera decrit ulterieurement. L’inverse de l’exponentiationmodulaire est appelee logarithme discret.

Le probleme du logarithme discret est le suivant : il est facile de calculerbx assez rapidement mais si on nous donne bx = y, avec x inconnue, commentpouvons nous calculer x = logby ? Resoudre le probleme du logarithme discrets’avere tres difficile dans un groupe fini.

Exemple : (avec de petits nombres)

On pose G = (Z/19Z)∗, b = 2, y = 7.On veut trouver x tel que 7 = 2x carcela correspond au logarithme discret de 7 en base 2 (si b, y ∈ G avec y unepuissance de b, alors le logarithme discret de y en base b est x tel que bx = y).La reponse est x = 6 car : 26 = 64 = 19 × 3 + 7. Comme on travaille sur(Z/19Z)∗, on regarde le reste de la division par 19 qui correspond, dans notrecas, a 7 qui est ce que l’on recherchait.

12

Page 13: Cryptographie a clef publique - math.univ-lille1.fr

Nous pouvons donc trouver le logarithme discret lorsque nous travaillonssur (Z/qZ)∗ et que la condition suivante est respectee : tous les nombres pre-miers qui divisent q− 1 sont petits. Avec ces conditions, il y a un algorithmepour trouver le logarithme discret d’un element y ∈ (Z/qZ)∗ avec la base b.Pour simplifier, nous supposerons que b est un generateur de (Z/qZ)∗. Nousdevons cet algorithme a Silver, Pohlig et Hellman.

Premiere etape :

Tout d’abord, il faut calculer les racines piemes de l’unite pour chaque ppremier divisant q − 1. Notons ces racines de la maniere suivante :

rp,j = bj(q−1)/p) pour j = 0, . . . , p− 1

Avec les rp,j, nous pouvons ecrire une sorte de table qui va nous permettre decalculer le logarithme discret de n’importe quel y ∈ (Z/qZ)∗. Il faut rappelerque l’objectif est le suivant : trouver x, 0 ≤ x ≤ q − 1 tel que bx = y.

On sait que si q−1 =∏

p pα est la factorisation en nombres premiers de q−1,

alors il suffit de trouver x (mod pα) pour chaque p divisant q − 1. Ensuite,on peut appliquer le theoreme des restes chinois pour trouver x et conclure.

Deuxieme etape :

Maintenant, on va fixer un nombre premier p divisant q− 1 et on va montrercomment determiner x (mod pα). On suppose que :

x ≡ x0 + x1p+ x2p2 + · · ·+ xα−1p

α−1 (mod pα) avec 0 ≤ xi < p

Pour trouver x0, on calcule y(q−1)/p, on obtient ainsi une puissance pieme de1 car yq−1 = 1. En effet , comme b est un generateur de (Z/qZ)∗ :

bq = b⇒ bq−1 = 1

⇒ b(q−1)x = 1

Comme bx = y , on obtient donc yq−1 = 1. Il s’en suit que y(q−1)/p =bx(q−1)/p = bx0(q−1)/p. En effet, si on remplace x par la formule donnee audebut, on obtient :

13

Page 14: Cryptographie a clef publique - math.univ-lille1.fr

bx(q−1)/p = b(x0+x1p+···+xα−1pα−1)(q−1)/p

= bx0(q−1)/pbx1(q−1)bx2p(q−1) . . . bxα−1pα−2(q−1)

= bx0(q−1)/p

= rp,x0

= (b(q−1)/p)x0

= y(q−1)/p

Troisieme etape :

Finalement, on compare y(q−1)/p avec la table des {rp,j} pour j comprisentre 0 et p (strictement plus petit que p), puis lorsque l’on a trouve la va-leur correspondant a y(q−1)/p dans la table, on prend x0 egal a la valeur de jpour laquelle y(q−1)/p = rp,j. On trouve cette valeur grace a la table que nousavons pu construire au debut en calculant les racines piemes. Nous avons donctrouver la valeur de x0, il nous reste a trouver les valeurs de tous les xi.

Maintenant, il faut reiterer les etapes pour tous les xi.

Pour trouver x1, on va pratiquer de la meme maniere sauf que l’on rem-place y par y1 avec :

y1 = y/bx0 = bx/bx0 = bx−x0 .

De ce fait, y1 a pour logarithme discret x − x0, comme x0 est maintenantconnu, on va calculer x1 avec la formule x−x0 ≡ x1p+x2p

2 + · · ·+xα−1pα−1

(mod pα). On a y(q−1)/p = 1 et on va calculer y(q−1)/p2 :

y(q−1)/p2 = b(x−x0)(q−1)/p2

= b(x1p+x2p2+···+xα−1pα−1)(q−1)/p2

= bx1(q−1)/pbx2(q−1)bx3p(q−1) . . . bxα−1pα−3(q−1)

= bx1(q−1)/p

= rp,x1

Par la suite, on va donc comparer y(q−1)/p2

1 avec les valeurs de la table des

rp,j et x1 sera egal a la valeur de j pour laquelle y(q−1)/p2

1 = rp,j. On procedede la meme maniere pour trouver x2, x3, . . . , xα−1. Travaillons au rang i :Pour tout i = 1, . . . , p− 1, on pose : yi = y

bx0+x1p+···+xi−1pi−1 . D’ou :

yi = bx−x0−x1p−x2p2−···−xi−1p

i−1

14

Page 15: Cryptographie a clef publique - math.univ-lille1.fr

Et y a pour logarithme discret :

x− x0 − x1p− x2p2 − · · · − xi−1p

i−1 ≡ xipi + · · ·+ xα−1p

α−1 (mod pα)

De ce fait, on calcule :

y(q−1)/pi+1

i = b(x−x0−x1p−x2p2−···−xi−1pi−1)(q−1)/pi+1)

= b(xipi+···+xα−1)p

α−1)(q−1)/pi+1

= bxi(q−1)pbxi+1(q−1)bxi+2p(q−1) . . .

= bxi(q−1)p

= rp,xi

Comme auparavant, on regarde dans la table a quelle valeur correspond

y(q−1)/pi+1

i et on pose xi egal a la valeur de j pour laquelle y(q−1)/pi+1

i = rp,j.

Derniere etape :

Lorsque l’on a effectue cela jusqu’au rang p − 1, on obtient donc x(mod pα). Apres avoir fait cela pour chaque p divisant q − 1, nous obtenonsun systeme de la forme :

x ≡ α1 (mod p1)

x ≡ α2 (mod p2) avec ∀i 6= j, pi ∧ pj = 1

...

x ≡ αr (mod pr)

Or le theoreme des restes chinois nous dit que pour un tel systeme, il existeune solution repondant a toutes les congruences et elle est unique modulo Pavec P = p1p2 . . . pr. De ce fait, nous pouvons conclure et trouver ainsi x.

Conclusion : Nous pouvons nous rendre compte que cet algorithme fonctionnebien quand tous les diviseurs premiers de q − 1 sont petits, mais il est clair

que le calcul de la table des rp,j et la comparaison des y(q−1)/pi+1

i avec cettetable est beaucoup plus longue si q − 1 est divisible par un nombre premierbeaucoup plus grand, de l’ordre de 20 chiffres minimum. C’est pour cela queles chiffres utilises lors d’echanges de messages utilisant une clef publique eten particulier les nombres premiers sont tres grands et que cette technique abesoin de plus de temps qu’un systeme a clef privee.

15

Page 16: Cryptographie a clef publique - math.univ-lille1.fr

3.2 RSA

Le systeme de cryptage RSA a ete invente en 1977 par Ron Rivest, AdiShamir et Len Adleman. C’est un essayant de demontrer que l’idee de systemea clef publique introduit par Diffie et Hellman etait une incoherence que lestrois auteurs, devant leur echec, decouvrirent ce systeme qui devint rapide-ment une reference. Encore aujourd’hui le cryptosyteme RSA est partout,dans les cartes a puces de cartes bancaires, dans les messageries . . .

3.2.1 Avantages et inconvenients du cryptosysteme

L’inconvenient majeur de RSA est le temps de calcul plus long que chezles algorithmes a une seule clef. En effet, dans ce cryptosyteme la clef decodage est differente de la clef de decodage, c’est un systeme ”asymetrique”.

L’atout majeur de RSA est sa securite. Celle-ci repose sur la facilite, pourles deux personnes voulant echanger des messages, de creer un grand nombrea partir du produit de deux grands nombres premiers (par des algorithmesprobabilistes) et sur l’immense difficulte pour un intercepteur malveillant deretrouver la factorisation en deux nombres premiers pour le grand nombreainsi genere et donc casser le systeme.

Le cryptosysteme RSA est base sur des resultats mathematiques tressimples, connus depuis le XVIIIeme siecle. Enfin, un atout propre aux crypto-systemes a clef publique est de ne pas avoir besoin d’un canal securise pourechanger une clef.

3.2.2 Le protocole RSA

Nous appellerons dans cette partie Alice l’emetteur du message et Bob ladestinataire.

– Bob genere deux grands nombres premiers p et q par des algorithmesprobabilistes. Il calcule n = pq. Il determine un entier e tel que e ∧ϕ(n) = 1 (on rappelle que ϕ(n) = ϕ(pq) = (p − 1)(q − 1)). Bob enprofite pour determiner d tel que :

ed ≡ 1 (mod ϕ(n))

.– Bob envoie (n, e) a Alice, ce sera sa clef de codage (publique). (n, d)

sera la clef de decodage de Bob (secrete).– Alice code son message chiffre M en calculant via l’exponentiation mo-

dulaire : M e (mod n) et elle envoie son resultat C a Bob.

16

Page 17: Cryptographie a clef publique - math.univ-lille1.fr

– Bob decode le message en calculant Cd (mod n)

En effectuant ce dernier calcul, Bob retombera bien sur le message initial.Ceci est garanti par le resultat suivant communement appele theoreme duRSA.

3.2.3 Le theoreme du RSA

Theoreme 4 (Le theoreme du RSA). Soient p et q deux nombres premiers, on pose n = pq. Si le nombre e est un entier premier avec le nombreϕ(n) = (p − 1)(q − 1) alors il existe un entier d positif tel que ed ≡ 1(mod ϕ(n)) et pour cet entier d et un entier A quelconque on a :

Aed ≡ A (mod n)

Demonstration. On sait que e ∧ (p− 1)(q − 1) = 1. Ceci implique que e estinversible dans Z/(p−1)(q−1)Z. D’ou l’existence et meme l’unicite d’un tel d.

Posons B ≡ Ae (mod n). On a alors Bd ≡ Aed (mod n).

ed ≡ 1 (mod (p− 1)(q − 1))⇒ ∃k : ed = k(p− 1)(q − 1) + 1

D’ou :

Aed = Ak(p−1)(q−1)+1

= (Ap)(q−1)kA1−(q−1)k

Or, on sait par le corollaire 1 page 10 que Ap ≡ A (mod p).

Aed ≡ A(q−1)k+1−(q−1)k (mod p)

≡ A (mod p)

De meme,Aed ≡ A (mod q)

On en deduit alors qu’il existe l et l′

tel que Aed = lp + A = l′q + A et

donc lp = l′q. Cette derniere quantite s’ecrit egalement l

′′pq pour un certain

l′′

car p et q sont des nombres premiers. Ainsi Aed ≡ A (mod pq)

On a donc pour le moment decrit et justifie la methode RSA, Alice et Bobpeuvent donc s’echanger des messages de maniere sure grace a ce protocole,mais un probleme se pose imaginons que Oscar intercepte la clef publique queBob envoie a Alice, il peut alors tres bien crypter un message en se faisantpasser pour Alice. Il est donc indispensable d’avoir une facon de savoir si lapersonne qui nous envoie un message est bel et bien celle dont on attend lemessage.

17

Page 18: Cryptographie a clef publique - math.univ-lille1.fr

3.2.4 La signature dans RSA

Il parait raisonnable de penser qu’Alice et Bob auront plusieurs messagesa s’echanger. Desormais, on considerera donc qu’Alice et Bob possedent cha-cun une clef privee et une clef publique. Autrement dit avec les notationsprecedentes, la clef privee de Bob est (n, d), la clef publique associee destineea Alice est (n, e). De son cote, Alice a procede de la meme maniere que Bobpour creer le triplet (n′, e′, d′) ou n′ = p′ × q′ est le produit de deux nombrespremiers, e′ ∧ ϕ(n′) = 1 et e′d′ ≡ 1 (mod ϕ(n′)). Sa clef privee est (n′, d′) etla clef publique destinee a Bob est (n′, e′). Pour resumer :

Alice BobClef publique (n, e) (n′, e′)Clef privee (n′, d′) (n, d)

Pour signer son message, Alice crypte sa signature M grace a sa clef privee(n′, d′), elle obtient M ′, puis elle crypte M ′ grace a la clef publique (n, e),elle obtient M ′′ et elle l’envoie avec son message a Bob.

Bob decrypte M ′′ grace a sa clef privee (n, d), par le theoreme du RSA,il tombe sur M ′, puis il utilise sa clef publique (n′, e′) pour retomber sur Mtoujours en vertu du meme theoreme.

Ainsi par un procede tres simple et qui n’utilise rien de plus que le pro-tocole en lui meme, Alice est certaine que le message qu’elle recoit vient deBob.

4 Tests de primalite

Pour faire fonctionner un algorithme de cryptage/decryptage type RSA,on a besoin de grands nombres premiers. Des nombres premiers trop petitsrepresenteraient un danger pour la securite du systeme.

Theoreme 5 (Theoreme des nombres premiers). Le nombre de nombrespremiers inferieurs ou egaux a x note π(x) verifie

π(x) ∼ x

lnx

Ce theoreme nous donne le nombre moyen de tirages qu’il faut effectuerpour avoir un nombre premier. Si p est choisi au hasard, la probabilite qu’ilsoit premier est 1

ln p.

18

Page 19: Cryptographie a clef publique - math.univ-lille1.fr

Il faut donc utiliser des algorithmes ”probabilistes” pour un tester si lenombre tire est non premier ou probablement premier. Ces algorithmes nenous procurerons pas la certitude integrale que p est premier. Si p passe letest on dira qu’il est premier avec forte probabilite.

On pourra se proposer de tester des nombres impairs a la structure bienparticuliere comme par exemple les nombres de Mersenne.

Definition 4. Un nombre de Mersenne est un nombre du type 2n − 1 oun ∈ N

Pour tester la primalite, on a besoin d’un critere de primalite. Si le nombrea tester n0 passe ce critere avec succes dans un cas particulier, il est peut-etrepremier. Si n0 passe avec succes le critere dans tous les cas, il est premieravec forte probabilite. Sinon il est compose.

En general, trouver une factorisation pour montrer qu’un nombre estcompose est tres gourmand en temps de calcul. Le premier test auquel onpourrait penser serait a partir de n0 a tester, de prendre m 6= 1 au hasard ettester si m divise n0. Si ce n’est pas le cas, on choisit un autre m et ainsi desuite. Evidemment, ceci est laborieux pour de grands nombres !

4.1 Un premier test base sur le petit theoreme de Fer-mat

Definition 5. Soit n est un entier impair compose et b un entier tel que bsoit premier avec n. Si bn−1 ≡ 1 (mod n) alors n est appele pseudo-premier

Par exemple, 91 est un pseudo-premier dans la base 3.

Proposition 3. Soit n un entier impair compose.

1. Les propositions suivantes sont equivalentes :– n est pseudo-premier dans la base b ou b ∧ n = 1– Ord(b) dans (Z/nZ)∗ divise n− 1

2. Si n est premier dans les bases b1 et b2 alors il l’est dans les bases b1b2

et b1b−12

3. Si n echoue a ce test pour b ∈ (Z/nZ)∗ alors n echoue aussi pour aumoins la moitie des bases b ∈ (Z/nZ)∗ possibles.

Demonstration. 1. La premiere proposition est une evidence.

19

Page 20: Cryptographie a clef publique - math.univ-lille1.fr

2. On a :bn−1

1 ≡ 1 (mod n)

bn−12 ≡ 1 (mod n)

⇒ bn−11 bn−1

2 ≡ 1 (mod n)⇒ (b1b2)n−1 ≡ 1 (mod n)

Donc n est pseudo-premier dans la base b1b2

De plus :

bn−12 ≡ 1 (mod n)⇒ (bn−1

2 )−1 dans (Z/nZ)∗

Ainsi :

bn−11 ×1 ≡ 1 (mod 1)⇒ bn−1

1 ×(bn−12 )−1 ≡ 1 (mod n)⇒ (b1b

−12 )n−1 ≡ 1 (mod n)

Donc n est pseudo-premier dans la base b1b−12

3. Soient b1, . . . , bs toutes les bases pour lesquelles n est pseudo-premier.Soit b une base pour laquelle b n’est pas pseudo-premier. Si n estpseudo-premier pour chaque bbi alors par la proposition precedente(bbi)b

−1i = b est une base pour laquelle n est pseudo premier. Contra-

diction.Ainsi, pour bb1, . . . , bbs, n echoue au test.Donc pour b choisi au hasard, il y a au moins 50% de chance d’echec.

Description du test : (donnee n)– Choix aleatoire de b : 0 < b < n.– Calcul de d = b ∧ n par l’algorithme d’Euclide.– On distingue 2 cas :

– Si d > 1, n n’est pas premier.– Si d = 1, calcul de bn−1 (mod n) par l’algorithme d’exponentiation

modulaire. Si on a 1 alors n passe le test et on passe a un autre b.Sinon n est compose.

Si on applique ce test k fois et que n passe le test avec succes dans tousles cas, alors n est probablement premier. Par la proposition 3, la probabiliteque n soit compose malgre tout est d’au plus 1

2k.

Definition 6. Un nombre de Carmichael est un entier compose n tel que∀b ∈ (Z/nZ)∗ :

bn−1 ≡ 1 (mod n)

Ces nombres particuliers revelent une faille dans notre methode.

20

Page 21: Cryptographie a clef publique - math.univ-lille1.fr

4.2 Test de Solovay-Strassen

Afin de comprendre ce test, nous devons definir certaines notions tellesque residu quadratique, symbole de Legendre et de Jacobi.

Definition 7. – Soit p ∈ N un nombre premier, n 6= 2 et x ∈ N tel que1 ≤ x ≤ p − 1. On dit que x est un residu quadratique modulo p si lacongruence y2 ≡ x (mod p) a une solution y ∈ Z/pZ.

– Soit a un entier et p > 2 un nombre premier. On definit le symbole deLegendre comme suit :

( bn

)=

0 si p divise a1 si a est un residu quadratique modulo p−1 sinon

– Soit a un entier, et soit n un entier positif impair. Soit n = pα11 , . . . , p

αrr

la decomposition en facteurs premiers de n. On definit le symbole deJacobi ( a

n) comme le produit des symboles de Legendre pour les facteurs

premiers de n : (an

)=( ap1

)α1

. . .( apr

)αrLe test est inspire de la proposition suivante.

Proposition 4. Si n est premier alors pour tout entier b ;

bn−12 ≡

( bn

)(mod n) (2)

Ici bien sur, les symboles de Jacobi et de Legendre coincident.

Demonstration. – Si n divise b, d’une part ( bn) = 0, d’autre part n divise

bn−12 et donc b

n−12 ≡ 0 (mod n). La congruence est donc vrai dans ce

cas.– Si n ne divise pas b, on applique le petit theoreme de Fermat :

bn−1 ≡ 1 (mod n)

⇒ bn−12 ≡ ±1 (mod n)

Soit g un generateur de (Z/nZ)∗, pour un certain j on a b = gj.Si j est pair, il existe i tel que j = 2i, et alors b = g2i = (gi)2, donc best residu quadratique modulo n, il s’en suit ( b

n) = 1.

21

Page 22: Cryptographie a clef publique - math.univ-lille1.fr

Reciproquement, si b est un residu quadratique modulo n, il existe atel que a2 = b, ainsi si b = gj et a = gi, on a j = 2i, d’ou j est pair.

D’autre part, bn−12 = (g

j2 )p−1

≡ 1 (mod n) si et seulement si j/2 ∈ N par Fermat

≡ 1 (mod n) si et seulement si j est pair

Ceci conclut la preuve.

Grace a cette proposition, on peut definir une notion de pseudo-premierpropre a ce test.

Definition 8. Soit n est un entier compose impair, soit b tel que b ∧ n = 1tel que (2) soit verifiee alors on dit que n est un pseudo-premier d’Euler dansla base b.

Description du test : (donnee n)– Choisir b tel que 0 < b < n– Calculer b

n−12 (mod n) et ( b

n) (mod n)

– Si il n’y a pas egalite, n est compose, et on s’arrete.– Si il y a egalite, n passe le test, et on choisit un autre b.

Si au bout de k iterations, l’egalite est verifiee a chaque fois, alors n estprobablement premier. Si on teste tous les b possibles, et que l’egalite restevraie, alors n est premier avec forte probabilite. On peut s’interesser main-tenant a la fiabilite du test.

Proposition 5. Si n est un entier compose impair alors n est un pseudo-premier d’Euler pour au plus 50% des bases b possibles.

Demonstration. On construit dans un premier temps une base b telle que (2)ne soit pas satisfaite. Supposons qu’il existe p premier tel que p2 divise n,on choisit b = 1 + n/p alors ( b

n) = 1 mais la partie gauche de (2) n’est pas

congrue a 1 (mod n) comme p ne divise pas (n−1)/2. Supposons maintenantque n est le produit de nombres premiers distincts avec p l’un d’entre eux.On choisit s un non-residu quadratique modulo p et soit b : 1 ≤ b < nsatisfaisant aux congruences :

b ≡ s (mod p)

b ≡ 1 (mod n/p)

22

Page 23: Cryptographie a clef publique - math.univ-lille1.fr

Un tel b est trouve par le theoreme des restes chinois. Alors ( bn) = −1 mais,

b(n−1)/2 ≡ 1 (mod n/p) et b(n−1)/2 6= −1 (mod n)

On a alors construit une base b telle que (2) n’est pas satisfaite. Soient bi :1 ≤ i ≤ t tous les entiers verifiant (2), avec toujours la condition ∀i, bi∧n = 1.Posons ui = bbi (mod n). Ils sont tous distincts et verifient ui ∧ n = 1. Sil’un des ui satisfaisait (2), on aurait :

b(n−1)/2b(n−1)/2i ≡

( bn

)(bin

)(mod n)

Comme les bi verifient (2), on en deduit :

b(n−1)/2 ≡( bn

)(mod n)

Ceci est faux par construction de b. Ainsi aucun des ui ne verifie (2) et alorsil y a au moins autant de bases qui ne verifient pas la relation qu’il y en apour lesquelles la relation est satisfaite.

Grace a cette proposition, on prouve que pour k iterations, la probabiliteque n passe le test tout en etant compose est d’au plus 1

2k. Ce test est donc

aussi fiable que le precedent, nous allons maintenant voir un dernier test plusraffine.

4.3 Test de Miller-Rabin

L’idee du critere decoule de la conclusion du petit theoreme de Fermat. Sion extrait successivement les racines carrees de chaque cote, si n est premieralors la premiere classe autre que 1 qu’on peut avoir est -1 car ±1 sont lesseules racines carrees de 1 modulo un nombre premier.En pratique, on extrait pas des racines carrees mais on fait l’inverse, apresavoir compile bt (mod n) ou t impair est tel que n − 1 = 2st, on eleverasuccessivement au carre.

Comme dans les tests precedents, on definit une notion de pseudo-premier.

Definition 9. Soit n un entier positif, compose et impair. On pose n−1 = 2stavec t impair. Soit b ∈ (Z/nZ)∗. Si n et b verifient :

bt ≡ 1 (mod n)ou∃r : 0 ≤ r < s tel que b2rt ≡ −1 (mod n)

(3)

alors s est appele pseudo-premier fort.

23

Page 24: Cryptographie a clef publique - math.univ-lille1.fr

Description du test : (donnee n)– Mettre n− 1 sous la forme 2st ou t est impair.– Choisir au hasard b tel que 0 < b < n.– Calculer bt (mod n)– Si on obtient 1 ou −1, n passe le test avec succes et on passe a un autre

choix de b.– Sinon, elever au carre successivement jusqu’a obtenir −1 (s iterations

au maximum)– Si ceci se produit, n passe le test avec succes et on passe a un autreb.

– Sinon, n est compose.

Il est legitime de se demander si ce test est meilleur que les tests precedents.Nous avons un tel resultat, mais avant cela nous devons enoncer 3 lemmes 1.

Lemme 1. Si n est pseudo-premier fort dans la base b alors n est un pseudo-premier d’Euler et par suite n est pseudo-premier

Lemme 2. Soit d = k ∧ m, alors il existe exactement d elements dans legroupe {g, g2, . . . , gm = 1} qui verifient xk = 1.

Lemme 3. Soit p un nombre premier ≥ 3, on pose p−1 = 2s′t′ ou t′ impair.

Le nombre de x ∈ (Z/pZ)∗ qui verifient x2rt ≡ −1 (mod p) (ou t est impair)est egal a 0 si r ≥ s′ et egal a 2r(t ∧ t′) si r < s′.

Proposition 6. Si n est un entier compose impair alors il est pseudo-premierfort dans la base b pour au plus 25% des b tels que 0 < b < n.

Demonstration. On distinguera 3 cas.

1. Supposons qu’il existe p premier tel que p2 divise n. On pose n−1 = 2stavec t impair.Supposons que n soit pseudo-premier dans la base b, alors bn−1 ≡ 1(mod n).Dans ce cas, bn−1 ≡ 1 (mod p2).Notons que (Z/p2Z)∗ est un groupe cyclique. Autrement dit, ∃g tel que(Z/p2Z)∗ = {g, g2, . . . , gp(p−1) = 1}D’apres le lemme 2, bn−1 ≡ 1 (mod p2) arrive exactement d fois oud = n− 1 ∧ p(p− 1).On sait que p divise n donc p ne divise pas n − 1 et alors p ne divisepas d. Donc le d maximal envisageable est p− 1.

1. Les demonstrations sont donnees dans A course in number theory and cryptographyde Niel Koblitz

24

Page 25: Cryptographie a clef publique - math.univ-lille1.fr

Donc la probabilite que bn−1 ≡ 1 (mod p2) se produise sera inferieurea p−1p2−1

= 1p+1

et 1p+1≤ 1

4.

En particulier par le lemme 1, le resultat est vrai pour les pseudo-premiers forts.

2. Supposons que n = pq ou p et q sont des nombres des premiers.Posons p − 1 = 2s

′t′ et q − 1 = 2s

′′t′′, et s′ ≤ s′′. Sous ces conditions,

n est pseudo-premier fort dans la base b si l’une des deux proprietessuivantes est verifiee :

– bt ≡ 1 (mod p) et bt ≡ 1 (mod q)– ∃r : 0 ≤ r < s tel que : b2rt ≡ −1 (mod p) et b2rt ≡ −1 (mod q)Par le lemme 2, le nombre de possibilites pour la premiere propositionest (t∧ t′)(t∧ t′′) < t′t′′. Par le lemme 3, le nombre de possibilites pourla seconde proposition est 2r(t ∧ t′)× 2r(t ∧ t′′) < 4rt′t′′.Comme n − 1 > φ(n) = (p − 1)(q − 1) = 2s

′+s′′t′t′′, voici un majorantde la proportion des b pour lesquelles n est un pseudo-premier fort :

M =t′t′′ + t′t′′ + 4t′t′′ + · · ·+ 4s

′−1t′t′′

2s′+s′′t′t′′= 2−s

′−s′′ × (1 +4s′ − 1

4− 1)

= 2−s′−s′′ × (1 +

4s′ − 1

3)

Si s′′ > s′,

M ≤ 2−2s′−1 × (2

3+

4s′

3) = 2−2s′−1 × 2

3+

1

6

≤ 2−3 × (2

3+

1

6) =

1

4

Si s” = s′, on prouve que l’une des 2 inegalites t ∧ t′ ≤ t′ et t ∧ t′′ ≤ t′′

doit etre stricte. En effet, supposons t′ divise t et t′′ divise t, on an− 1 = 2st ≡ 0 (mod t′) mais :

n− 1 = pq − 1

= (p− 1)(q − 1) + (q − 1)

≡ q − 1 (mod t′)

On en deduit alors que t′ divise q − 1 = 2s′t′′ et alors t′ divise t′′. De

meme t′′ divise t′. Ceci implique t′ = t′′ et alors p = q, contradiction.

25

Page 26: Cryptographie a clef publique - math.univ-lille1.fr

Supposons par exemple que t ∧ t′ < t′, comme on travaille sur desnombres impairs, on reecrit cette condition ainsi : t ∧ t′ ≤ 1

3t′ et dans

ce cas :

M =1

3

t′t′′ + t′t′′ + 4t′t′′ + · · ·+ 4s′−1t′t′′

2s′+s′′t′t′′

=1

32−2s′(

2

3+

4s′

3) ≤ 1

18+

1

9=

1

6<

1

4

Ceci conclut la preuve pour le cas 2.

3. On suppose enfin que n se decompose en un nombre quelconque denombres premiers : n = p1p2 . . . pk pour k ≥ 3. On decompose les fac-teurs premiers comme precedemment pj − 1 = 2sj tj ou tj est impair.On va appliquer la meme methode que dans le cas 2.

Quitte a reordonner les termes on peut supposer ∀j ≤ k : s1 ≤ sj. Onpeut, en utilisant ce qui a ete fait auparavant determiner un majorantde la proportion des bases b possibles pour lesquelles n est un pseudo-premier fort :

2−s1−s2−···−sk(1 +2ks1 − 1

2k − 1) ≤ 2−ks1(

2k − 2

2k − 1+

2ks1

2k − 1) = 2−ks1

2k − 2

2k − 1+

1

2k − 1

≤ 2−k2k − 2

2k − 1+

1

2k − 1=

2− 21−k

2k − 1= 21−k

≤ 1

4

Cette proposition assure que si on teste avec succes k fois un nombre gracea ce test, la probabilite qu’il soit pseudo-premier fort est d’au plus 1/4k. Cecien fait un test plus fiable que les 2 tests precedents.

5 Programmation

Il est evident que l’interet de la cryptographie n’est pas theorique, on sepropose donc de mettre en application certains protocoles enonce sous scilab.

26

Page 27: Cryptographie a clef publique - math.univ-lille1.fr

5.1 Tests de primalite

On va tester dans cette partie des nombres de Mersenne qu’on genereaisement ainsi :

function[M]=mersenne(n)format(25) ;M = 2n − 1 ;endfunction ;

Test base sur le petit theoreme de Fermat

L’algorithme pour le premier test que nous avons etudie et pour uneiteration est le suivant :

function[P1]=test1(n,b)temp=0 ;P1=0 ;d=euclide(b,n) ;if d > 1 then ;P1=0 ; end ;if d==1 then ;temp=expmod(b,n-1,n) ; end ;if temp==1 then ;P1=1 ; end ;endfunction ;

Et pour k iterations :

function[P]=testprim(n,k)P=0Vect=int((n-1)*rand(1,k)+ones(1,k)) ;VectP=zeros(1,k) ;for i=1 :k ;VectP(i)=test1(n,Vect(i)) ;end ;if norm(VectP,1)==k then ;P=1 ; end ;endfunction ;

27

Page 28: Cryptographie a clef publique - math.univ-lille1.fr

Ce programme nous permet de verifier la primalite de nombres tels quemersenne(7) = 127 et mersenne(19) = 524287 qu’on utilisera par la suite,mais les nombres de Carmichael mettent en echec ce test, on va donc coderun test plus sur.

Test de Miller-Rabin

function[Res]=millerrabin(n,p)s = 1 ;P = zeros(p, 1) ;Res = 0;while int((n− 1)/2s) == (n− 1)/2s

s = s+ 1 ; ends = s− 1t = (n− 1)/2s

for i = 1 : pb = int(((n− 2) ∗ rand(1) + 1)) ;a = expmod(b, t, n)if a == 1 then ;P (i) = 1 ; end ;if a == n− 1 then ;P (i) = 1 ; end ;if a < n− 1 and a > 1 then ;iter = 0while expmod(a, 2, n) < n− 1 and iter < s− 1 ;a = expmod(a, 2, n)iter = iter + 1end ;if iter < s− 1 then ;P (i) = 1end ;end ;end ;if norm(P, 1) == length(P ) then ;Res = 1end ;endfunction

28

Page 29: Cryptographie a clef publique - math.univ-lille1.fr

5.2 Le protocole RSA

Nous avons tout d’abord besoin de l’algorithme d’Euclide.

function[pgcd]=euclide(a,b)r=modulo(a,b)while r>0a=b ;b=r ;r=modulo(a,b) ;endpgcd=bendfunction

Le protocole repose sur l’algorithme d’exponentiation modulaire, dont ondonne une version par la methode binaire. Un premier programme nous per-met de determiner la puissance de 2 maximale dans un nombre.

function[p]=binaire1(n)temp = ni = 0while 2i ≥ tempi = i+ 1endp = i− 1endfunction

Voici maintenant un programme qui convertit un nombre en version binaire.

function[p]=binaire(n)j=1temp=nwhile temp > 0 ;[P (j)] = binaire1(temp) ; temp = temp− 2P (j) ; j = j + 1 ;end ;p = zeros(1, P (1) + 1);fori = 1 : length(P );p(P (i) + 1) = 1 ; end ;endfunction

function[C]=expmod(M,e,N)

29

Page 30: Cryptographie a clef publique - math.univ-lille1.fr

C = ME = binaire(e)k = length(E)for i = k − 1 : −1 : 1C=modulo(C*C,N)if E(i)==1 then ;C=modulo(C*M,N)end ;end ;endfunction ;

Il nous faut egalement un algorithme permettant de calculer l’inverse mo-dulaire d’un nombre. C’est une variante de l’algorithme d’Euclide etendu 2.

function[c]=inversemod(n,b)c = 0b0 = bn0 = nt0 = 0t = 1q = int(n0/b0)r = n0− q ∗ b0while r > 0temp = t0− q ∗ tif temp ≥ 0 then temp=modulo(temp,n) ; endif temp < 0 then temp=n-modulo(-temp,n) ; endt0 = tt = tempn0 = b0b0 = rq = int(n0/b0)r = n0− q ∗ b0end ;c=modulo(t,n)endfunction

Desormais, nous somme en mesure de demarrer la procedure. Admet-tons que Bob ait determine p et q. Il determine l’exposant e premier avec

2. L’algorithme non modifie provient de Cryptography : Theory and practice de DouglasR. Stinson

30

Page 31: Cryptographie a clef publique - math.univ-lille1.fr

(p− 1)(q − 1) grace a l’algorithme suivant :

function[e]=detexpo(p,q)e=int(((p-1)*(q-1)-3)*rand(1)+2) ;while euclide(e, (p− 1) ∗ (q − 1)) > 1 ;e=e+1 ;end ;endfunction

Alice, lorsqu’elle a recu la clef publique peut coder son message grace al’exponentiation modulaire. Elle utilisera le code ASCII pour transcrire leslettres en chiffres. On recupera un vecteur de taille le nombre de caractere dumessage. On ”accolera” alors les termes de ce vecteur 2 par 2 afin de creerun nouveau vecteur dont les composantes sont d’au plus 6 decimales, et c’esta ces composantes qu’on appliquera l’exponentiation modulaire.

function[M2]=cryptRSA(M1,e,n)format(25)temp=ascii(M1)if length(temp)/2 > int(length(temp)/2) then ;temp=[temp,0]end ;temp2=matrix(temp,2,length(temp)/2)’temp3 = temp2(:, 2) + temp2(:, 1) ∗ 103

for i=1 :length(temp3)M2(i)=expmod(temp3(i),e,n)end ;endfunction

Bob calcule l’inverse de d via l’inversion modulaire et decrypte avec l’ex-ponentiation modulaire.

function[M]=decryptRSA(p,q,e,M2)d=inversemod((p-1)*(q-1),e) ;for i=1 :length(M2)M3(i)=expmod(M2(i),d,p*q) ;end ;M4 = int(M3/103)M5 = M3−M4 ∗ 103

M6=[M4,M5]M=[]

31

Page 32: Cryptographie a clef publique - math.univ-lille1.fr

for i=1 :size(M6,1)M=[M,M6(i, :)]end ;M=ascii(M)endfunction ;

Exemple

Supposons que Alice veuille faire decouvrir a Bob Demain des l’aube... deVictor Hugo. Voici les deux premiers vers :

Demain, des l’aube, a l’heure ou blanchit la campagne,Je partirai. Vois-tu,je sais que tu m’attends

Bob de son cote a choisi p = 27 − 1 = 127 et q = 219 − 1 = 524287 ainsin = pq = 66584449 et le e determine aleatoirement est cette fois 13960129.Alice donne ce test au programme de cryptage sous la forme :

”demaindeslaubealheureoublanchitlacampagnejepartiraivoistujesaisquetumattends”

Voici un extrait de ce que recoit Bob :(il recoit en fait un vecteur a 38 com-posantes.)

1630860355846476109578291630860362983730

Grace au programme de decryptage, Bob retombe bien sur le messaged’Alice.

La fonction tic() ;. . . ; toc() nous permet d’evaluer le temps de calcul. Lecryptage prend aux alentours de 2 secondes, et le decryptage est lui dansce cas tres rapide soit environ 0,2 seconde. Ceci peut paraıtre assez rapide,mais il faut se rendre compte qu’on a pris un n tres petit par rapport aux ngeneralement choisis.

32

Page 33: Cryptographie a clef publique - math.univ-lille1.fr

Conclusion

La cryptographie a clef publique et particulierement RSA ont encore debeaux jours devant eux. Malgre les attaques de plus en plus subtiles et lesrecords de factorisation de plus en plus impressionnants, la securite de RSAn’est toujours pas remise en question et il est raisonnable de penser que siune attaque mettait a defaut le cryptosysteme, elle resterait secrete encorede longues annees ! Cependant, il ne faut pas croire que RSA est considerecomme le cryptosysteme ultime, on a cru un temps que les cryptosystemesbases sur le bien connu probleme du sac a dos remplaceraient tres vite RSA.Aujourd’hui, ils ont tous (a l’exception d’OTU 3) ete casses. Pourquoi donccela n’arriverait-il jamais pour RSA ? L’utilisation des courbes elliptiquessemble etre l’avenir proche de la cryptographie a clef publique. Pour casserun tel systeme, il faudrait resoudre le probleme du logarithme discret sur unecourbe elliptique ! Dans un avenir plus lointain, beaucoup s’accorde a dire quela cryptographie mathematique sera mise en echec par des ordinateurs quan-tiques qui sont encore aujourd’hui pure science-fiction. Alors la cryptographiedevra evoluer et reposera sur des principes de physique fondamentale.

Bibliographie

– Neal Koblitz. A course in number theory and cryptography

– Gilles Zemor. Cours de Cryptographie

– Douglas R. Stinson. Cryptography : Theory and Practice

– Arto Salomaa. Public-Key Cryptography

– Jean-Guillaume Dumas, Jean-Louis Roch, Eric Tannier, Sebastien Va-rette. Theorie des codes : Compression, cryptage, correction

3. Okamoto, Tanaka, Uchiyama

33