ebook img

Cryptographie et primalité [Lecture notes] PDF

8 Pages·2015·0.36 MB·French
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Cryptographie et primalité [Lecture notes]

Préparation à l’agrégation ENS Rennes - Année 2014–2015 Cryptographie et primalité Romain Basson Cryptographie et primalité Table des matières 1 Cryptographie asymétrique [Zém00] 1 1.1 Le concept de fonctions à sens unique . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 L’exponentiation modulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Le système RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Tests de primalité [Zém00, Hin08] 3 2.1 Le test de Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Le test de Solovay-Strassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Le test de Miller-Rabin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.4 Le théorème de Lucas-Lehmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 Remarques finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3 Exercices 8 Références [Dem09] Michel Demazure. Cours d’algèbre. Cassini, 2009. [Hin08] Marc Hindry. Arithmétique. Calvage & Mounet, 2008. [Zém00] Gilles Zémor. Cours de cryptographie. Cassini, 2000. 1 Cryptographie asymétrique [Zém00] 1.1 Le concept de fonctions à sens unique Le concept de fonctions à sens unique est informellement le suivant : Définition 1.1 Une fonction f : E −→ F,x (cid:55)−→ f(x) est dite à sens unique lorsque 1. il est possible de calculer simplement f(x), pour tout x ∈ E (i.e. il existe un algorithme qui, pour tout x ∈ E, calcule f(x) en un temps polynomial en la taille de x); 2. pour la plupart des y ∈ f(E), il est impossible de trouver x ∈ E tel que f(x) = y, à moins d’effectuer un nombre prohibitif de calculs ou d’avoir une chance déraisonnable. Nousneformaliseronspasplusceconcept,toutefoisnotonsquel’ensembleE doitêtresuffisamment vaste pour rendre dérisoire une recherche exhaustive d’un antécédent. Il existe plusieurs exemples concrets de telles fonctions, dont les deux plus célèbres, très largement utilisées en cryptographie, sont présentées dans les deux sections suivantes. 1 Préparation à l’agrégation ENS Rennes - Année 2014–2015 Cryptographie et primalité Romain Basson 1.2 L’exponentiation modulaire Il s’agit de la fonction f : F∗ −→ F∗,x (cid:55)−→ αx, pour α un générateur de F∗, qui se calcule p p p aisément via l’algorithme d’exponentiation rapide. En revanche, les meilleurs algorithmes génériques connuspourinversercettefonction(i.e.résoudreleproblèmedulogarithmediscret)ontunecomplexité √ sous-exponentielle O(e(logp)1/2(loglogp)1/2) = O(cid:101)( p). Pour définir concrètement une telle fonction, il est donc nécessaire de savoir générer un grand nombre premier p et un générateur α de F∗. Signalons qu’on ne connaît pas d’algorithme polynomial p permettant de déterminer un tel α, mais que, modulo la connaissance de la factorisation de p−1, on peut tester si α est un générateur en l’élevant à toutes les puissances d, pour d diviseurs de p−1, ce φ(p−1) qui permet d’aboutir, dans la mesure où le rapport n’est pas trop petit devant 1 (cf. section 2.4 p−1 pour la génération de tels nombres premiers). Le protocole de Diffie-Hellman (New directions in cryptography, 1976) : ceprotocolerésout le problème du partage d’un secret via un canal non sécurisé de la façon suivante : 1. Alice et Bob s’accordent publiquement (i.e. via le canal) sur un grand nombre premier p et sur un générateur α de F∗; p 2. Alice (resp. Bob) choisit secrètement un nombre aléatoire a (resp. b) et transmet à Bob (resp. Alice) αa (resp. αb); 3. Alice et Bob dispose du secret commun αab = (αa)b = (αb)a. La sécurité de ce protocole repose sur le fait qu’avec une puissance de calcul et un temps limités, on ne sait ni résoudre le logarithme discret ni retrouver αab à partir de α, p, αa et αb. 1.3 Le système RSA Il s’agit du premier système à clé publique solide, inventé en 1977 par Rivest, Shamir et Adleman. Il est fondé sur la difficulté de factoriser de grands entiers et la fonction à sens unique utilisée est une fonction puissance. Précisément, la clé secrète est constituée de deux grands nombres premiers p et q tandis que la clé publique est n = pq et un entier e inversible modulo ϕ(n). Le chiffrement d’un message représenté par un entier M modulo n se fait alors par la transformation : f : M (cid:55)−→ Me mod n. Proposition 1.2 La fonction réciproque de f est M (cid:55)−→ Md mod n, où d est l’inverse de e modulo ϕ(n). Démonstration. — Si (M,n) = 1, alors Mϕ(n) ≡ 1 mod n, d’après le théorème de Lagrange, ainsi (Me)d ≡ Med ≡ M mod n. — Si M ≡ 0 mod p et (M,q) = 1, alors, puisque ϕ(n) = ϕ(p)ϕ(q), Mϕ(n) ≡ 0 mod p et Mϕ(q) ≡ Mϕ(n) ≡ 1 mod q. Ainsi Mde ≡ 0 ≡ M mod p et Mde ≡ M mod q, d’où le résultat, d’après le théorème Chinois. — Les autres cas sont analogues. QED 2 Préparation à l’agrégation ENS Rennes - Année 2014–2015 Cryptographie et primalité Romain Basson Remarque 1.3 1. Les paramètres de sécurité actuels préconisés pour RSA sont de prendre un entier n de taille 1024 bits, i.e. de l’ordre de 10300, ce qui légitime la nécessité du développement d’algorithme de calcul rapide (DFT, FFT, ...). 2. Connaissant ϕ(n) il est aisé de déterminer d à partir de e (algorithme d’Euclide). 3. La connaissance de ϕ(n) est équivalente à celle de p et q (i.e. la factorisation de n), dans la mesure où ϕ(n) = (p−1)(q−1) = n−(p+q)+1. 4. Savoirdétermineruninversededmoduloϕ(n)revientàsavoirfactorisern(cf.ex.4.1de[Zém00]). 5. En revanche, on ne sait pas prouver formellement qu’inverser la fonction M (cid:55)−→ Me mod n revient à savoir factoriser n. 6. La complexité du meilleur algorithme de factorisation (Number Field Sieve) est : (cid:32)(cid:32)(cid:114) (cid:33) (cid:33) 64 exp 3 +o(1) (logn)1/3(loglogn)2/3 . 9 2 Tests de primalité [Zém00, Hin08] La mise en œuvre concrète des deux exemples de fonctions à sens unique présentées précédemment repose notamment sur la capacité à générer de grands nombres premiers (typiquement de plusieurs centaines de chiffres binaires). Le procédé le plus répandu pour réaliser ce dernier point consiste à choisir au hasard de grands entiers et à tester leur primalité, jusqu’à obtenir satisfaction. L’efficience de cette méthode est justifiée par le théorème des nombres premiers, qui énonce Théorème 2.1 - Théorème des nombres premiers, J. Hadamard et C.-J. de La Vallée Poussin, 1896. x π(x) ∼ x→+∞ lnx où π(x) désigne le nombre de nombres premiers inférieurs à x. En outre, cet équivalent est approché rapidement, ainsi, pour des nombres de 1024 bits, la proba- bilité de tirer un nombre premier est de l’ordre d’une chance sur 700. Dans ce qui suit, nous présentons divers tests de primalité. On s’intéresse plus particulièrement aux tests de primalité probabilistes. Formellement, il s’agit de la donnée d’un critère de non-primalité P(n,a),pourunentiernaturelnimpair,quiutiliseuntémoin0 < a < n,etquisatisfaitauxconditions suivantes, pour un α ∈ [0,1[ : 1. si n est premier, alors P(n,a) est vrai pour tout a ∈ [[1,n−1]]; 2. si n est composé, alors, sur les n−1 entiers a compris entre 1 et n−1, il y en a au plus α(n−1) pour lesquels P(n,a) est vrai; 3. le test P(n,a) est rapide, i.e. polynomial en logn. Ainsi un entier n composé survit au test P(n,.) k fois avec une probabilité inférieure à αk. 3 Préparation à l’agrégation ENS Rennes - Année 2014–2015 Cryptographie et primalité Romain Basson 2.1 Le test de Fermat Test de Fermat : choisir au hasard a (cid:54)≡ 0 mod n et calculer an−1 mod n. L’entier n satisfait au test si an−1 ≡ 1 mod n. Ce test est naturellement inspiré du petit théorème de Fermat qui énonce que : si n est un nombre premier, alors, pour tout entier a premier à n, an−1 ≡ 1 mod n. Ainsi, pour un nombre n donné, dont on souhaite tester la primalité, s’il existe un entier a (cid:54)≡ 0 mod n tel que an−1 (cid:54)≡ 1 mod n, alors n est composé. La réciproque est toutefois fausse, puisque, pour un a donné, la relation an−1 ≡ 1 mod n peut subsister alors que n est composé, un tel n étant alors dit pseudo-premier en base a. Cependant, si ces contre-exemples sont rares, on peut envisager d’utiliser ce critère comme test probabiliste. Plutôt que d’entrer dans le détail de ces questions, soulignons qu’il existe des nombres composés pseudo-premier en toute base : les nombres de Carmichael. Carmichael exhiba un tel nombre en 1910, à savoir 561 = 3×11×17; plus généralement ces nombres sont caractérisés par le critère suivant (cf. exercice 3.3) : Proposition 2.2 - Critère de Korselt, 1899. n divise an −a, pour tout entier a, si et seulement si n est sans facteur carré et p−1 divise n−1, pour tout diviseur premier p de n. Pour conclure sur ce point, signalons le résultat suivant, qui énonce en particulier qu’il existe une infinité de nombres de Carmichael : Théorème 2.3 - Alford, Granville, Pomerance, 1994. Pour tout x suffisamment grand, il existe au moins x2/7 nombres de Carmichael inférieurs à x. Ainsi, le principal défaut du test de Fermat réside en l’absence, pour tout n composé, d’une pro- portion, indépendante de n, du choix de l’aléa a pour lequel la réponse au test soit négative. Il ne constitue donc pas un test probabiliste de primalité. Ce qui rend notamment ce test inutilisable pour tester la primalité d’entier dont on ne connaît pas l’origine. 2.2 Le test de Solovay-Strassen Sanspertedegénéralité,ilestloisibledesupposerquel’entiern,dontonsouhaitetesterlaprimalité, est impair, ce que nous supposons toujours par la suite. Le test suivant repose sur le fait que la formule d’Euler pour les résidus quadratiques ne s’étend pas au symbole de Jacobi. Test de Solovay-Strassen : choisir a ∈ [[1,n−1]] au hasard, premier à n, et calculer a(n−1)/2 mod n et (cid:0)a(cid:1). L’entier n satisfait au test si n (cid:16)a(cid:17) a(n−1)/2 ≡ mod n n Si n est premier, alors il satisfait au test pour tout a (cid:54)≡ 0 mod n, d’après le théorème 3.8 du cours sur les corps finis. En outre, contrairement au test de Fermat, on peut énoncer une réciproque : Proposition 2.4 Si n est composé, alors, pour a choisi aléatoirement dans (Z/nZ)(cid:63), la probabilité que n satisfasse le test de Solovay-Strassen est inférieure à 1/2. 4 Préparation à l’agrégation ENS Rennes - Année 2014–2015 Cryptographie et primalité Romain Basson Lemme 2.5 Soit H = {a ∈ (Z/nZ)(cid:63) / a(n−1)/2 ≡ (cid:0)a(cid:1) mod n}, alors H = (Z/nZ)(cid:63) si et seulement n si n est premier. Démonstration. Le sens réciproque est déjà énoncé dans le théorème 3.8 du cours sur les corps finis. Pour le sens direct, commençons par établir que n est sans facteur carré. En effet, si p2, p premier impair,divisen,alorsilexistead’ordrep(p−1)dans(Z/nZ)(cid:63) (cf.lethéorèmedestructuredesgroupes (Z/nZ)(cid:63) et le théorème Chinois), or p ne divise pas n−1, donc an−1 (cid:54)= 1, ce qui est exclu. Ainsi, si n est composé, il est de la forme n = p ...p , avec r (cid:62) 2. Considérons alors a ∈ (Z/nZ)(cid:63) tel que a est 1 r non résidu quadratique modulo p et congru à 1 modulo p ...p , ce qui est loisible d’après le théorème 1 2 r (cid:16) (cid:17)(cid:16) (cid:17) Chinois.Alors,(cid:0)a(cid:1) = a a = −1,ora ≡ 1 mod p ...p ,cequiexclua(n−1)/2 ≡ −1 mod n, n p1 p2...pr 2 r d’où une contradiction. QED Démonstration.[Proposition] Dans l’énoncé du lemme précédent, H est clairement un sous-groupe de (Z/nZ)(cid:63), ainsi, d’après le lemme, dès que n est composé, [(Z/nZ)(cid:63) : H] (cid:62) 2, d’où le résultat. QED On obtient ainsi un test probabiliste polynomial1 de primalité (le calcul de a(n−1)/2 mod n étant aisé via l’algorithme d’exponentiation rapide et celui de (cid:0)a(cid:1) de même via la loi de réciprocité quadra- n tique), de paramètre α = 1/2. 2.3 Le test de Miller-Rabin Test de Miller-Rabin : choisir a ∈ [[1,n−1]] au hasard, premier à n, et écrire n−1 = 2st, avec t impair. L’entier n satisfait au test si at ≡ 1 mod n ou s’il existe 0 (cid:54) r (cid:54) s−1, tel que a2rt ≡ −1 mod n. Ce test constitue, comme l’énonce la proposition suivante, un test probabiliste polynomial de pri- malité de paramètre α = 1/4, qui est un raffinement du test de Solovay-Strassen : Proposition 2.6 1. Si n est premier, alors il satisfait au test de Miller-Rabin; 2. Si n est composé et distinct de 9, alors, pour a choisi aléatoirement dans (Z/nZ)(cid:63), la probabilité que n satisfasse au test de Miller-Rabin est inférieure à 1/4; 3. SinsatisfaitautestdeMiller-Rabinpouruntémoina,alorsilsatisfaitautestdeSolovay-Strassen pour ce même témoin a. Lemme 2.7 Soit n = 1+2st = pα11...pαkk, avec t impair, et u ∈ N. Posons pi −1 = 2siti, avec ti impair, s(cid:48) = min(u,s ) et d = pgcd(t,t ). On a alors i i i i Card{a ∈ (Z/nZ)(cid:63) / a2ut = 1} = 2s(cid:48)1+···+s(cid:48)kd1...dk 1. Le test de Solovay-Strassen est déterministe polynomial sous l’hypothèse de Riemann généralisée (cf. [Hin08] p. 42). Précisément, pour n composé, il existe a(cid:54)2(logn)2, (cid:0)a(cid:1)(cid:54)=a(n−1)/2 mod n. n 5 Préparation à l’agrégation ENS Rennes - Année 2014–2015 Cryptographie et primalité Romain Basson (cid:26) 0 si u (cid:62) min(s ) Card{a ∈ (Z/nZ)(cid:63) / a2ut = −1} = i 2ukd ...d sinon 1 k Démonstration. n étant impair, chaque p l’est, ainsi, dans le groupe cyclique (Z/pαiZ)(cid:63) d’ordre i i pαi−1(p −1), le nombre de solutions de l’équation a2ut ≡ 1 mod pαi est pgcd(2ut,pαi−1(p −1)) = i i i i i pgcd(2ut,2siti) = 2s(cid:48)idi. D’après le théorème Chinois, le nombre de solutions modulo n est alors le produit de ces nombres, comme annoncé. Pour la deuxième équation, soit il n’existe aucune solution, soit, s’il en existe une, les solutions sont en bijection avec les précédentes. Or la congruence a2ut ≡ −1 mod pαi admet une solution si et i seulement si 2u+1 | pαi−1(p −1), i.e. u+1 (cid:54) s . i i i QED Démonstration.[Proposition 2.6] 1. Notons 2rt(cid:48), avec 0 (cid:54) r (cid:54) s et t(cid:48) | t, l’ordre de a dans (Z/nZ)(cid:63). Si r = 0, alors at(cid:48) = 1, donc at = 1. Si r (cid:62) 1, alors, puisque n est premier, a2r−1t(cid:48) = −1, donc a2r−1t = −1. 2. On reprend les notations du lemme, en supposant s (cid:54) ··· (cid:54) s , et on note S l’ensemble des 1 k éléments de (Z/nZ)(cid:63) passant le test de Miller-Rabin, S l’ensemble de ceux tels que at = 1 et T 0 j l’ensemble de ceux tels que a2jt = −1, pour 0 (cid:54) j (cid:54) s −1. Alors, d’après le lemme, 1 (cid:88) 2ks1 +2k −2 CardS = CardS + CardT = d ...d (1+1+2k +···+2k(s1−1)) = d ...d 0 j 1 k 1 k 2k −1 La proportion de a ∈ (Z/nZ)(cid:63) passant le test de Miller-Rabin est donc CardS = d1...dk 2−(s1+···+sk) 2ks1 +2k −2 (cid:54) d1...dk 21−k ϕ(n) t1...tk pα11−1...pαkk−1 2k −1 t1...tk pα11−1...pαkk−1 d 1 1 — si k = 1, la proportion est 1 (cid:54) (cid:54) , sauf pour n = 9, où on trouve 1/3; t pα1−1 pα1−1 5 1 1 1 — sik = 2,alorssoitundest estdistinctd’und ,auquelcaslaproportionestinférieureà1/6, i i soitt1 = d1ett2 = d2,auquelcast1 = t2ets1 < s2et2−s1−s222s31+2 = 2s1−s21+213−2s1 (cid:54) 1/4. — Si k (cid:62) 3, la proportion est inférieure 21−k (cid:54) 1/4. (cid:16) (cid:17) 3. Supposons d’abord que at ≡ 1 mod n, alors (cid:0)a(cid:1) = (cid:0)a(cid:1)t = at = 1 et a(n−1)/2 ≡ a2s−1t ≡ 1 n n n mod n. Supposons dorénavant qu’il existe r ∈ [[0,s−1]], tel que a2rt ≡ −1 mod n, il s’agit alors de prouver que (cid:0)a(cid:1) = 1 ou −1 selon que r < s−1 ou r = s−1. Pour p un diviseur premier de n n, posons p−1 = 2uv, avec v impair. Du fait de la parité de t et v, on a alors a2rtv ≡ −1 mod p (cid:16) (cid:17) (cid:16) (cid:17) et a2u−1vt ≡ a mod p, ce qui implique u (cid:62) r+1. Précisément, si u > r+1, alors a = 1 et p p (cid:16) (cid:17) p ≡ 1 mod 2r+2, si u = r+1, alors a = −1 et p ≡ 1+2r+1 mod 2r+2. Soit k le nombre de p diviseurs premiers (comptés avec multiplicité) de n pour lesquels l’entier u correspondant vaut r+1, alors d’une part (cid:0)a(cid:1) = (−1)k, d’autre part n ≡ (1+2r+1)k ≡ 1+k2r+1 mod 2r+2. Ainsi, n k est pair ou impair selon que s > r+1 ou s = r+1, soit le résultat escompté. QED 6 Préparation à l’agrégation ENS Rennes - Année 2014–2015 Cryptographie et primalité Romain Basson 2.4 Le théorème de Lucas-Lehmer Uneautreapprochepourobtenirdegrandsnombrespremiersconsisteàlesconstruirerécursivement sous la forme n = 1+pα1...pαk, où les p sont des nombres premiers préalablement connus et les α 1 k i i des entiers naturels non nuls. Pour certifier la primalité de n, on applique le théorème de Lucas-Lehmer : Théorème 2.8 - Lucas-Lehmer. Le nombre n est premier si et seulement s’il existe α ∈ (Z/nZ)(cid:63) tel que αn−1 = 1 et α(n−1)/p (cid:54)= 1, pour tout diviseur premier p de n−1. Démonstration. Le sens direct est clair, (Z/nZ)(cid:63) étant cyclique. Réciproquement, s’il existe un tel α, alors il est d’ordre n−1. Or tout élément de (Z/nZ)(cid:63) est d’ordre un diviseur de ϕ(n) et ϕ(n) (cid:54) n−1, par conséquent ϕ(n) = n−1, i.e. n est premier. QED En pratique, on teste pour quelques α choisis au hasard si les conditions du théorème sont remplies (ce qui est aisé, puisqu’on connait la factorisation de n−1). Si on n’obtient pas satisfaction, on change de n. Cette approche est particulièrement adaptée pour l’exponentiation modulaire, puisqu’elle fournit à la fois un nombre premier et un élément primitif. En revanche, elle l’est moins pour RSA, dans la mesure où on ne maitrise plus le caractère aléatoire des nombres premiers ainsi construits, ce dont un cryptanalyste pourrait potentiellement tirer avantage. 2.5 Remarques finales Pour tester la primalité d’un nombre entier n, on a omis de rappeler jusque’à présent le test naïf consistant à essayer de diviser n par tous les entiers compris entre 2 et n−1; test pour lequel on peut √ naturellement se restreindre au sous-ensemble des entiers impairs inférieurs à n lorsque n est impair. Cette omission résulte du mauvais gout de ce test à être de complexité sous-exponentielle en la taille de n et donc inutilisable en pratique pour des entiers de taille «cryptographique». Dans la classe des tests de primalité probabilistes, mentionnons le test ECCP basé sur les courbes elliptiques, que nous n’abordons donc pas dans ces notes. Enfin, en 2002, Agrawal, Kayal et Saxena ont proposé le premier test de primalité déterministe polynomial(sansutiliserl’hypothèsedeRiemann),dittestdeprimalitéAKS;autrementditleproblème décisionnel de la primalité est dans la classe de complexité P. Ce test repose également sur une généralisation du petit théorème de Fermat : n (cid:62) 2 est premier si et seulement si, pour tout a ∈ N,(X +a)n ≡ Xn+a mod n. Pour de plus amples détails à ce sujet, voir [Dem09, §5.4.4]. 7 Préparation à l’agrégation ENS Rennes - Année 2014–2015 Cryptographie et primalité Romain Basson 3 Exercices Exercice 3.1 - Clé RSA. Calculer la clé privé RSA associé à la clef publique (d,n) = (3,69). Exercice 3.2 - Protocole de Diffie-Hellman. Alice et bob décident d’utiliser le protocole de Diffie- Hellman. Ils rendent public le couple (L,α) où L = F∗[X]/(X3−X −1) et α = 2X. 3 1. Vérifier que L est un corps et α un générateur de L(cid:63). 2. Alice choisit a = 9 et transmet α9 à Bob. Ce dernier choisit un entier b et lui renvoie l’élément αb = 1−α+α2. Quelle est la clé secrète d’Alice et Bob? Exercice 3.3 - Critère de Korselt pour les nombres de Carmichael. On rappelle qu’un nombre de Carmichael est un entier naturel n composé qui vérifie le petit théorème de Fermat : an−1 = 1,∀a ∈ (Z/nZ)(cid:63). 1. Rappeler la structure de (Z/nZ)(cid:63), pour n (cid:62) 2. 2. Déterminer l’exposant de ce groupe (i.e. l’entier min{k ∈ N / ∀a ∈ (Z/nZ)(cid:63),ak = 1}). (cid:63) 3. En déduire que s’équivalent : (a) n est un nombre de Carmichael; (b) n est composé, impair, sans facteur carré et, pour tout diviseur premier p de n, p−1 divise n−1. 4. Montrer que tout nombre de Carmichael possède au moins trois facteurs premiers. 5. Montrer que 561 est le plus petit nombre de Carmichael. 8

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.