• Aucun résultat trouvé

1.6.1 Introduction

L’un des buts de cette section est de comprendre pourquoi la preuve for-melle de l’existence de fonctions `a sens unique impliquerait P 6= NP , la c´el`ebre conjecture en th´eorie de la complexit´e. De plus les liens entre crypto-graphie et complexit´e sont ´etroits et souvent `a l’origine de nouvelles classes de complexit´e comme la classe RP issue de l’algorithme de Miller-Rabin.

Nous allons donner maintenant une description tr`es informelle mais que nous esp´erons suggestive de diverses classes de complexit´e. Mais avant cela, pre-nons trois types de probl`emes repr´esentatifs des difficult´es rencontr´ees. Les deux probl`emes peuvent se traiter par des algorithmes, le dernier ne peut pas se traiter par un algorithme.

Satisfaisabilit´e des formules bool´eennes La donn´ee (on parle aussi d’ins-tance) est un entier n et F une fonction bool´eenne de n variables bool´eennes (xi ∈ {0,1},i= 1, ..., n)

(x1, ..., xn)7→F(x1, ..., xn)∈ {0,1}.

o`uF est construite avec des expressions faisant intervenir les op´erateurs logiques usuels (et, ou et n´egation). La question est : existe-t-il un (x1, ..., xn) tel que F(x1, ..., xn)) = 1.

V´eracit´e des formules bool´eennes quantifi´ees La donn´ee est un entier n, F une fonction bool´eenne de n variables bool´eennes (xi ∈ {0,1}, i= 1, ..., n) et la formule avec quantificateurs

∀xi,∃xj, .... F(x1, ..., xn).

La question est alors : cette formule est-elle vraie ?

1.6. COMPLEXIT ´E 19 Dixi`eme probl`eme de Hilbert La donn´ee est un entiernet un polynˆome

`

a coefficients entiers den variablesP(x1, ..., xn). La question est alors : l’´equation dite diophantienneP(x1, ..., xn) = 0 admet-elle une solution enti`ere (x1, ..., xn)∈Zn.

En 1971, Matjacevic a montr´e qu’il n’existe pas d’algorithme (dans toutes les d´efinitions actuelles de cette notion) qui d´ecide si une ´equation diophan-tienne admet une solution enti`ere. Cela veut dire que ce probl`eme est inac-cessible `a l’algorithmique.

En revanche les deux autres probl`emes sont accessibles `a l’algorithmique.

Pour r´esoudre le premier probl`eme, il suffit de calculer F pour tous les n-uples possibles (x1, ...xn). Si F est identiquement nulle la r´eponse est non et oui sinon. Pour r´esoudre le second, il suffit aussi de faire l’inventaire de toutes les possibilit´es. Nous voyons bien que, pour le troisi`eme probl`eme, il n’est pas possible d’explorer toutes les possibilit´es car l’ensemble des entiers

´etant infini, nous avons une infinit´e de cas `a traiter.

Le premier probl`eme est repr´esentatif de la classe des probl`emes dits de compl´exit´eNPcar c’est un probl`eme de difficult´e maximale dans cette classe (probl`eme dit NP -complet). Un probl`eme est dit NP si l’on peut certifier ces instances positives en temps polynˆomial en log(n) par un oracle. Nous verrons plus loin `a quoi correspond un oracle.

Le second probl`eme est repr´esentatif de la classe des probl`emes dits de compl´exit´e PSPACE car c’est un probl`eme de difficult´e maximale dans cette classe. Nous n’aborderons pas cette classe de probl`emes qui admettent un algorithme n´ecessitant un espace m´emoire polynˆomial en log(n).

Nous allons maintenant consid´erer les probl`emes de d´ecision, i.e. dont la r´eponse est oui ou non, en connexion directe avec les algorithmes que nous avons vus pr´ec´edemment. Nous noterons formellement x les donn´ees d’un probl`eme P. Nous ne parlerons pas de machine de Turing. Aussi, les d´efinitions qui suivent ne sont pas rigoureuses. Nous y avons remplac´e la notion de Machine de Turing et de calculabilt´e par un autre terme que nous n’avons pas d´efini, celui d’algorithme, terme qui correspond plus `a l’intuition.

Pour un expos´e rigoureux, nous renvoyons le lecteur `a [4, 18].

1.6.2 Classe P

Le probl`emeP sera dit de classePs’il existe un algorithme polynˆomial en temps qui le r´esout. Par polynˆomial, nous entendons polynˆomial par rapport

`

a l’espace n´ecessaire pour coder les donn´ees x. Pour se faire une id´ee plus pr´ecise, prenons trois exemples.

Le premier probl`eme est : les entiers m et n sont-ils premiers entre eux ?

20 CHAPITRE 1. CRYPTOGRAPHIE CLASSIQUE Nous savons par l’algorithme d’Euclide calculer le pgcd. Ce calcul n´ecessite au plusE

log(n) log

1+ 5 2

divisions pour m≤n (voir le chapitre suivant).

Le second probl`eme est plus instructif. Il montre l’´equivalence entre le calcul en temps polynˆomial d’une famille de fonctions (fn)n∈N de {1, ...n}

dans lui mˆeme et le probl`eme de d´ecision suivant. Les donn´ees sont l’entier n et deux autres entiers x et t plus petits que n. La question est : A-t-on fn(x)≤t?

En effet si fn(x) se calcule en temps polynˆomial par rapport `a log(n), ce probl`eme est de fa¸con ´evidente dans P . Supposons maintenant que ce probl`eme est dansP. Prenonsnetxentiers avec 1≤x≤n, voyons comment calculerfn(x) en temps polynˆomial. Pour cela, nous pouvons savoir en temps polynˆomial sifn(x)∈[1, n/2] ou fn(x)∈[n/2, n]. Sifn(x)∈[1, n/2] on peut savoir en temps polynˆomial si fn(x) ∈ [1, n/4] ou fn(x) ∈ [n/4, n/2]. Si fn(x) ∈ [n/2, n] on peut savoir en temps polynˆomial si fn(x) ∈ [n/2,3n/4]

ou fn(x) ∈ [3n/4, n]. On voit bien qu’avec de telles dichotomies, on sait en faisant appel s-fois `a l’algorithme polynˆomial si fn(x) est dans un intervalle de longueur au plusn/2s. Il suffit maintenant de prendres= 1 +E(log2(n)) pour avoir la valeur exacte defn(x) puisque c’est un entier. On aura obtenu ainsi la valeur de fn(x) en r´esolvant un nombre polynˆomial de probl`emes polynˆomiaux. Donc le calcul de fn(x) est polynˆomial en log(n).

Le troisi`eme probl`eme est : n est-il un nombre premier ? L’algorithme AKS r´epond `a la question avec un temps en O(log12(n)).

1.6.3 Classe NP

Le probl`eme de d´ecision P est dit calculable par un algorithme non d´eterministe et polynˆomial en temps, si et seulement si, il existe un algo-rithme ayant comme donn´ees de d´epart x et aussi y (fini et correspondant

`

a l’oracle ´evoqu´e dans l’introduction de cette section), tel que pour toute instance x v´erifiant P(x) vrai alors il existe un certificat y(x) tel que cet algorithme ayant x et y(x) comme donn´ees calcule P(x) vrai en temps po-lynˆomial par rapport `ax.

Cette d´efinition peut paraˆıtre obscure. Elle ne dit rien du comportement de cet algorithme quand on le lance avec un x et y arbitraire. Il peut tr`es bien ne pas s’arrˆeter ou s’arrˆeter mais apr`es un temps gigantesque. Tout ce que nous demandons est que si l’on part d’une instance positivex et si l’on choisit bien le compl´ement y(x) des donn´ees de d´epart, l’algorithme montre queP(x) est vrai en temps polynˆomial. Le temps est polynˆomial par rapport aux donn´ees brutes x, celles que l’on connaˆıt en excluant les autres donn´ees y(x) dont nous connaissons l’existence mais que nous sommes a priori bien

in-1.6. COMPLEXIT ´E 21 capables de calculer. C’est pourquoi on parle d’algorithme non-d´eterministe car le bon certificat y(x) associ´e l’instance positive x du probl`eme n’en fait pas partie. La classe NP est l’ensemble des probl`emes de d´ecision calcu-lables par un algorithme non-d´eterministe polynˆomial en temps. A cause de la disym´etrie entre P(x) vraie etP(x) faux, on d´efiniecoNP l’ensemble des probl`emes P donc le compl´ementaire est dans NP (on remplace instances positives par instances n´egatives dans la d´efinition). Nous allons maintenant prendre deux exemples qui montrent bien que cette d´efinition un peu obscure provient en fait de probl`emes algorithmiques concrets.

Montrons que le probl`eme de la factorisation est dans NP . Pour cela nous le traduisons en un probl`eme de d´ecision : les donn´ees sont deux entiers n et M < n. La question est : existe-t-il un diviseur de n plus petit que M et>1.

Par dichotomie successive, on voit que si l’on sait r´esoudre ce probl`eme en temps polynˆomial, disons en p(log(n)) avec p polynˆome, on sait trouver un diviseur de n en temps polynˆomial. On part de M = E(n/2), un pre-mier calcul donne la position du diviseur ´eventuel soit dans [2, E(n/2)[ ou [E(n/2), n[, i.e. dans un intervalle de longueur au plus n/2. Un second calcul va le localiser dans un intervalle de longueur au plus n/4. Apr`ess calculs on a localis´e le diviseur dans un intervalle de longueur au plusn/2s. Ainsi avec s= 1 +E(log2(n)) on aura localis´e le diviseur dans un intervalle de longueur au plus de 1, i.e. on aura donc le diviseur au bout du tempsp(log(n)) log2(n).

Montrons que notre probl`eme de d´ecision est dans NP . En effet, il suffit pour les instancesx= (n, M) positives (i.e., telles qu’il existe un diviseur de n plus petit que M) de prendre un diviseur de n plus petit que M que nous noterons y(n, M). L’algorithme de v´erification consiste simplement `a diviser npary(n, M) et ainsi on v´erifie quena bien un diviseur non trivial plus petit queM. Montrons aussi que ce probl`eme est dans coNP . C’est un peu plus compliqu´e car on s’int´eresse `ax= (n, M) tel qu’il n’existe pas de diviseur de n plus petit que M. Pour cela, la structure de y est plus lourde. En effet, il faut queycomporte les donn´ees suivantes : la d´ecomposition denen facteurs premiers n = Qk

i=1pνkk. Avec ces donn´ees suppl´ementaires y = (pi, νi)i=1,...,k nous pouvons proposer l’algorithme suivant : v´erification via AKS que les k nombres pi sont bien des nombres premiers ; v´erification que chaque pi est bien plus grand que M. On laisse au lecteur le soin de montrer que notre algorithme est en temps polynˆomial par rapport `a log(n).

On peut utiliser la mˆeme d´emarche pour montrer que le logarithme discret est dans NP et aussi dans coNP . Pour p premier, α primitif modulo-p et

22 CHAPITRE 1. CRYPTOGRAPHIE CLASSIQUE n < pon d´efinit la fonction log ainsi

(p, α, n)7→log(p, α, n) =









m sip est premier, α primitif modulo-p etm l’unique entier tel que

0< m < p etαm =n mod (p) 0 sinon.

et le probl`eme de d´ecision suivant : les donn´ees sontp et les nombresα,n et t plus petits que p; la question est ” A-t-on log(p, α, n)< t? ”

1.6.4 Classe RP

Il s’agit de probl`emes pouvant ˆetre r´esolus par des algorithmes probabi-listes polynˆomiaux (ne pas confondre probabiliste avec non-d´eterministe, ici).

Un probl`emeP est dansRP , si et seulement si, il existe des polynˆomes p(n) etq(n) o`un la taille des donn´ees3 x et un algorithme ayant comme donn´ees de d´epart x ety (certificat) telles que

– les instancesxn´egatives deP (P(x) faux) sont caract´eris´ees par le fait que pour touty de taille plus petite que p(n), l’algorithme partant de xet y donne en un temps plus petit que q(n) la r´eponse P(x) faux.

– si x est une instance positive de P (P(x) vrai) alors pour au moins la moiti´e des certificats y de taille plus petite que p(n), l’algorithme fournit la r´eponse vraie en un temps inf´erieur `a q(n).

Notons d’abord que RP est contenu dansNP . Ensuite, cette d´efinition est faite sur mesure pour le test de Miller-Rabin de primalit´e.

D´etaillons un peu ce probl`eme. La question est : l’entierxest-il compos´e ? Les variablesy correspondent ici `a un entier entre 2 et x, donc le polynˆome p(n) o`u n = log(x) n’est autre que l’identit´e : on ne fait que doubler au plus la taille des donn´ees en rajoutant le certificat y. Le fait que x ne soit pas compos´e, c’est `a dire que x soit premier, est ´equivalent au fait que x soit fortement premier pour toutes les bases y entre 2 et x− 1. De plus, l’algorithme qui teste si x est fortement premier en base y n’est autre que le test de Miller-Rabin, il est de complexit´e polynˆomiale en la taille de x, le polynˆome q correspond donc `a la complexit´e du test de Miller-Rabin. Ainsi le premier point de la d´efinition est v´erifi´e. Le second point d´ecoule du fait que si x est compos´e alors pour au moins les 3/4 des y entre 2 et x−1, x n’est pas fortement premier en base y.

3. Sixest entier,ncorrespond donc `a log(x).

1.6. COMPLEXIT ´E 23

1.6.5 Fonctions ` a sens unique et la conjecture P 6=NP

L’existence de fonctions `a sens unique est une conjecture aussi difficile que P 6=NP . En effet reprenons la d´efinition de la section 1.1 o`u nous supposerons que chaque fn est une bijection de An = {1, ..., n} dans Bn = {1, ..., n}. On consid`ere alors la famille (fn)n∈N. Le fait que lesfnsoient faciles

`

a calculer se formalise alors via le probl`eme not´eF suivant : les donn´ees sont un entiern et deux autres entiersxettentre 1 etn. La question est : A-t-on fn(x) ≤t? Si pour chaque n le calcul de fn(x) est polynˆomial, le probl`eme F est trivialement dans P . Supposons donc F dans P .

De mˆeme, le calcul de l’inverse desfnest associ´e au probl`eme de d´ecision suivant not´e F−1 : les donn´ees sont un entier n et deux autres entiers x ett entre 1 etn; la question est : a-t-on fn−1(x)≤t?

Clairement, F−1 est dans NP . En effet, il suffit de prendre comme cer-tificat y = fn−1(x). Le fait que le probl`eme F−1 soit difficile, i.e., que les fn soient `a sens unique, se traduit donc par le fait que F−1 n’est pas dans P (car sinon le calcul de fn−1 serait polynˆomial, voir le second probl`eme de la section 1.6.2 ). Comme F−1 est n´ecessairement dans NP , on voit que l’existence d’une fonction `a sens unique implique P 6=NP .

24 CHAPITRE 1. CRYPTOGRAPHIE CLASSIQUE

Chapitre 2

Th´ eorie des nombres

Nous reprenons ici certains r´esultats qui interviennent dans le chapitre sur la cryptographie. Les deux premi`eres sections s’appuient en partie sur le premier chapitre de [29]. Les autres sections abordent la th´eorie analytique des nombres et la distribution des nombres premiers. Pour le r´ediger nous nous sommes souvent inspir´es des cours de Jean-Benoˆıt Bost sur les s´eries de Dirichlet et les nombres premiers [8, 9].

En compl´ement le “Que sais-je” sur les nombres premiers [28] donne en derni`ere partie un ´eclairage probabiliste ainsi qu’une preuve ´el´ementaire mais assez difficile du th´eor`eme des nombres premiers. Nous recommandons aussi l’excellent livre de vulgarisation de Jean-Paul Delahaye sur les nombres pre-miers [13] qui inclut un chapitre entier sur la cryptographie. On pourra aussi consulter l’Encyclopeadia Universalis qui comportent d’excellents articles sur des sujets connexes. Enfin un lecteur voulant vraiment approfondir le sujet pourra consulter le livre classique dˆu `a Hardy et Wright [20].

2.1 PGCD

2.1.1 Z

n

et Z

n

Deux entiers a et b sont congrus modulo un entier n, si et seulement si, leur diff´erence a−b est un multiple de n. On note alors : a = b mod (n).

La relation de congruence modulo n est une relation d’´equivalence. On note Zn = Z/nZ l’ensemble des classes modulo n. Il y en a n (#Zn = n) et on identifieZn`a l’ensemble{0,1, ..., n−1}.Znest muni d’une structure naturelle d’anneau pour l’addition et la multiplication. En particulier Zn muni de l’addition + est un groupe commutatif (on dit aussi ab´elien). En revanche Zn n’est pas en g´en´eral un groupe pour la multiplication (le produit de 3 par

25

26 CHAPITRE 2. TH ´EORIE DES NOMBRES 2 dans Z6 donne 0). On note Zn l’ensemble des ´el´ements inversibles de Zn pour la multiplication. Nous allons voir que, si n est premier, Zn =Zn/{0}, etZn est un corps.

Soit k inversible modulo n, i.e.,k ∈Zn. Supposons quek etn admettent un diviseur non trivial a > 1. On pose k = pa et n =qa avec p et q entier.

Alors, kq = paq = pn = 0 mod (n). Ce qui n’est pas possible car k est inversible et donc n´ecessairement q= 0 mod (n). Ainsi, tout ´el´ement deZn

est un entier premier avecn (un entier n’ayant pas de diviseur commun avec n, ou encore un entier dont le pgcd avec n est 1). La r´eciproque est vraie : Zn correspond exactement `a l’ensemble des entiers entre 1 et n−1 premiers avec n, i.e., qui n’admettent pas de diviseur commun avec n autre que 1.

La preuve de ce r´esultat repose sur l’algorithme d’Euclide et l’identit´e de Bezout.

2.1.2 Algorithme d’Euclide

L’algorithme d’Euclide permet de calculer efficacement les inverses mo-dulonvia la relation de Bezout. Soient donc deux entiers strictement positifs k < n. L’agorithme de division d’Euclide est compos´e des divisions succes-sives suivantes :

n =kq0+r0, r0 < k k =r0q1+r1, r1 < r0 r0 =r1q2+r2, r2 < r1

...

rm−2 =rm−1qm+rm, rm < rm−1 rm−1 =rmqm+1+rm+1, 0 =rm+1 < rm

o`u la suite (n, k, r0, r1, ..., rm, rm+1) est strictement d´ecroissante et arrive `a z´ero avec rm+1 = 0 (ce qui d´efinit l’indice m). Il est facile de voir que le pgcd est rm. En effet si p divise n et k alors il divise r0 (premi`ere divi-sion), mais aussi r1 (seconde division), ..., et enfin rm (avant derni`ere divi-sion). Commerm diviserm−1 (derni`ere division),rm divise aussi rm−2 (avant derni`ere division), ..., en enfin k (seconde division) et n (premi`ere division).

L’algorithme d’Euclide calcule donc le pgcd.

Il donne aussi l’inverse dek modulon. Il donne mˆeme plus avecl’identit´e de Bezout : pour tout 1< k < n, il existe u etv dans Z tels que

un+vk= pgcd (n, k).

2.1. PGCD 27 Il suffit de r´esoudre le syst`eme form´e par les m+ 1 premi`eres divisions par rapport auxm+ 1 restes ri,i= 0, ..., m. Il s’agit d’un syst`eme lin´eaire de la

o`u la matriceA est `a coefficients entiers, triangulaire inf´erieure et avec 1 sur la diagonale. Donc son inverse est aussi une matrice `a coefficients entiers (on appelle ce type de matrices, des matrices uni-modulaires, on les retrouve tr`es souvent et elles jouent un rˆole fort important dans de nombreux domaines, ....). Donc chaqueri est combinaison lin´eaire `a coefficients dans Zdek et de n et en particulier rm = pgcd (n, k) = un+vk avecu et v dans Z.

Si n et k sont premiers entre eux, alors il existe u et v dans Z tels que un+vk = 1, ce qui s’´ecrit aussi vk = 1 mod (n) donc v est l’inverse de k pour la multiplication dans Zn, et donc k ∈Zn.

2.1.3 Complexit´ e de l’algorithme d’Euclide

Evaluons le nombre D de divisions de l’algorithme d’Euclide en fonction de la taille de n. L’algorithme sera le plus long lorsque chaque quotient qi vaut 1 avec rm= 1 et rm+1 = 0. Ainsi, on a

ri =ri+1+ri+2, i= 0, ..., m−2 et

k =r0+r1, n =k+r0

En prenant la r´ecurrence pr´ec´edente en sens r´etrograde avec lesid´ecroissants, on voit que n correspond au (m+ 4)-i`eme nombre de la suite

Fj =Fj−1+Fj−2

avec comme d´epart de la r´ecurrence,F0 = 0 etF1 = 1. Il s’agit de la suite de Fibonacci o`u apparaˆıt le nombre d’or φ= (1 +√

5)/2. En effet, on sait (faire une transform´ee en Z, classique en contrˆole lin´eaire) que la solution g´en´erale d’une r´ecurrence lin´eaire est obtenue par combinaison lin´eaire des puissances des racines de l’´equation caract´eristique

Z2 =Z+ 1.

28 CHAPITRE 2. TH ´EORIE DES NOMBRES Les racines sont le nombre d’or φ et ψ = 1−φ. Aussi Fj =aφj +bψj o`u a etb sont d´etermin´es par les conditions initiales F0 et F1. Ainsi

Fj = (φj−ψj)/√ 5.

CommeFm+4 =n dans le cas le plus d´efavorable, le nombre D =m+ 2 de divisions effectives est reli´e `an via l’in´equation

n≥FD+2 = (φD+2−ψD+2)/√ 5

Un petit calcul montre que D ≤ logφ(n). Ainsi, l’algorithme d’Euclide est polynˆomial. L’estimation pr´ec´edente est due `a Lam´e (1845).