Master 2 Recherche Algèbre Appliquée au Calcul Formel et à la Cryptographie Master de Science de l’Université de Versailles Saint-Quentin Calcul de Logarithmes Discrets dans Fpn par Crible Spécial de Corps de Nombres. Application aux courbes elliptiques bien couplées. Cécile Pierrot Projet de recherche effectué au laboratoire : PRiSM - Parallèlisme, Réseaux, Systèmes et Modélisation Université de Versailles Saint-Quentin Sous l’encadrement de : Antoine Joux Soutenu le 24 Septembre 2013 Résumé L’objet de ce mémoire est d’étendre le crible spécial de corps de nombres, qui ne portait, jusqu’ici, que sur des corps de cardinal premier. Notre nouvel algorithme s’étend sur tout le domaine d’exécution du crible de corps de nombres général, et, en améliore la complexité asymptotique. Il permet le calcul de logarithmes discrets dans des corps finis dont la caractéristique admet une représentation creuse adéquate, ce qui autorise son application sur des corps finis issus de procédés de couplage. Introduction Depuis son introduction, la cryptographie à base de couplage a permis le développement de nombresux protocoles cryptographiques, des primitives basées sur l’identité [BF03, SK03, CC03, Pat02], aux schémas de signature courte [BLS04], en passant par l’échange de clef entre trois individus en un seul tour [Jou04]. Certains de ces protocoles ont d’hors et déjà été déployés sur le marché, comme l’illustre l’utilisation de la primitive de D. Boneh et M. Franklin par l’entreprise Voltage [vol]. En pratique, l’un des défis principaux de la cryptographie basée sur les couplages réside à la fois en la construction de courbes bien couplées qui soient efficaces pour des protocoles asymétriques à haut niveau de sécurité, et, conjointement, en l’estimation précise de la sécurité de ces courbes. Il s’agit là d’un défi compliqué, puisque sa résolution nécessite la mise en place de courbes elliptiques particulières : non contentes d’être adaptées aux procédés de couplage, il faut veiller à équilibrer les différents algorithmes de calcul de logarithmes discrets qui apparaissent dans différentes types de groupes. De nombreux articles se sont attelés à cette tâche, comme [BLS03] ou [KM05]. Pour évaluer la sécurité d’une construction donnée, l’approche classique consiste à équilibrer, d’une part, la complexité d’algorithmes en racine carrée pour résoudre le logarithme discret dans le sous-groupe approprié de la courbe elliptique en question, avec, d’autre part, la complexité du crible de corps de nombres (NFS1 ) sur le corps fini d’arrivée du couplage. La complexité du problème du logarithme discret sur des corps finis dans ce contexte est habituellement estimée à l’aide de tables de taille de clef telles que [Nat03] ou [LV01]. Cette approche fait cependant une hypothèse implicite, celle de considérer que la complexité du NFS dans les corps finis est sensiblement la même que la complexité de la factorisation d’un entier de même taille que le corps. Pour autant que nous puissions le dire, cette hypothèse implicite n’a été vérifiée dans la littérature associée ni à l’un, ni à l’autre de ces deux problèmes. La but de ce mémoire est de présenter les outils et le cheminement qui nous ont permis d’aboutir à l’article The Special Number Field Sieve in Fpn , Application to Pairing-Friendly Constructions [JP13]. Dans celui-ci, notre visée est double. Tout d’abord, nous montrons que pour les paramètres actuels utilisés en cryptographie basée sur les couplages, l’hypothèse implicite est incorrecte : l’algorithme le plus performant pour résoudre le logarithme discret dans cette configuration est la variante de haut degré du crible sur corps de nombres introduit dans l’article [JLSV06], dont la complexité est plus grande que celle de la factorisation. Nous réexaminons ensuite les algorithmes de calcul de logarithme discret pour montrer que, en s’appuyant sur la forme spéciale de la caractéristique du corps de définition des courbes bien couplées qui apparait dans les constructions les plus classiques, comme celle de Barreto-Naehrig [BN05], il est possible de concevoir des algorithmes plus efficaces en généralisant le crible spécial de corps de nombres (SNFS2 ) [Gor93, Sch08]. Pour être plus précis, nous allons au-delà de cet objectif et nous présentons des variations du SNFS qui s’appliquent à toute l’étendue du domaine 1 2 De l’anglais, Number Field Sieve. De l’anglais, Special Number Field Sieve. d’application couvert par NFS, dès lors que la caractéristique du corps en question admet une représentation creuse adéquate. Ce mémoire s’articule comme suit : en première partie nous rappelons très simplement le problème du logarithme discret, les algorithmes classiques généraux, ainsi que le principe du calcul d’indice. Nous exposons ensuite l’algorithme pilier de notre nouveau crible : le crible de corps de nombres général (NFS), qui est un algorithme par calcul d’indice adapté au calcul de logarithmes discrets dans les corps finis. Enfin, nous abordons le problème du logarithme discret dans les corps finis sous un nouvel angle : celui du couplage. Cette étude aboutit à un crible spécial sur corps de nombres (SNFS), dont la complexité asymptotique au cas par cas est meilleure que celle du NFS sur tout l’étendue de son domaine d’application. Le lecteur pressé se dirigera directement au paragraphe 2.4 et en partie 3 où se trouvent les résultats originaux de ce mémoire. 2 Table des matières Table des matières 1 Le problème du logarithme discret 1.1 Algorithmes généraux . . . . . . . . . 1.1.1 Pas de bébé/Pas de géant . . . 1.1.2 ρ de Pollard . . . . . . . . . . 1.1.3 Algorithme de Pohlig-Hellman 1.2 Algorithmes par calcul d’indice . . . . 3 . . . . . 5 7 7 8 9 11 2 Logarithme discret dans les corps finis : le crible de corps de nombres (NFS) 2.1 Outils divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Probabilités de lissité et heuristiques classiques . . . . . . . . . . . . . . . 2.1.3 Algèbre linéaire sur matrice creuse . . . . . . . . . . . . . . . . . . . . . . 2.1.4 Algèbre sur corps de nombres . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Le crible pas à pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Le cas p = LQ (lp , cp ) où 1/3 < lp < 2/3 . . . . . . . . . . . . . . . . . . . 2.2.2 Le cas p = LQ (lp , cp ) où 2/3 6 lp 6 1 . . . . . . . . . . . . . . . . . . . . . 2.3 Mathématiques sous-jacentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Factorisation d’idéaux dans l’anneau des entiers OK . . . . . . . . . . . . 2.3.2 Des idéaux aux éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 NFS étendu : le cas p = LQ (1/3, cp ) . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Complexités asymptotiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 13 14 15 17 24 25 26 27 27 28 31 33 3 Logarithme discret dans les corps finis issus du couplage 3.1 Algorithmes actuels pour la cryptographie à base de couplage 3.1.1 Erreur sur les tailles de clef . . . . . . . . . . . . . . . 3.1.2 Choix correct des paramètres . . . . . . . . . . . . . . 3.2 Crible spécial de corps de nombres (SNFS) . . . . . . . . . . 3.2.1 Structure des corps finis issus de couplage . . . . . . . 3.2.2 Choix des polynômes . . . . . . . . . . . . . . . . . . . 3.3 Complexités asymptotiques du SNFS . . . . . . . . . . . . . 3.3.1 Cas p = LQ (lp , cp ) où 1/3 6 lp < 2/3 . . . . . . . . . . 3.3.2 Le cas p = LQ (2/3, cp ) . . . . . . . . . . . . . . . . . . 3.3.3 Crible pour les grandes caractéristiques . . . . . . . . 3.4 Limites d’application du SNFS . . . . . . . . . . . . . . . . . 37 37 37 38 38 38 39 40 40 42 45 46 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 1 Le problème du logarithme discret Etant donné un groupe cyclique multiplicatif G d’ordre n, g un générateur de G et a un élément de G, le logarithme discret de a en base g est défini comme étant le plus petit entier positif x tel que : a = gx. Remarquons que x peut aussi être défini modulo n. Nous dirons que nous résolvons le problème du logarithme discret dans G lorsque, pour tout élément a du groupe, nous pouvons retrouver l’entier x ainsi défini. En pratique, l’étude de ce problème aborde des groupes aussi variés que possible ; la difficulté qui en découle dépend directement de la nature de ces groupes. Par exemple, pour le groupe additif (Z/pZ, +) avec p premier, la résolution de ce problème est directe : si g est un générateur et a = gx, il suffit de prendre l’inverse de g pour obtenir g −1 a = x et donc le logarithme discret de a en base g. En revanche, pour les sous-groupes cycliques du groupe associé à une courbe elliptique sur un corps fini, nous ne connaissons pas d’algorithme plus efficace que les algorithmes généraux. Le problème du logarithme discret dans les corps finis qui fait l’objet de ce mémoire se situe entre ces deux configurations extrêmes. La sécurité de nombreux cryptosystèmes à clef publique, comme le protocole d’échange de clefs de Diffie-Hellman et les variantes de l’algorithme de signature d’El Gamal, pour ne citer qu’eux, repose sur l’hypothèse que le calcul de logarithmes discrets reste difficile sur certains corps finis bien choisis. De fait, on comprend l’intérêt actuel de la recherche sur ce problème, puisque un algorithme efficace de calcul de logarithmes discrets ébranlerait facilement ces protocoles cryptographiques. Bref historique Les premières méthodes de calcul de logarithmes discrets qui ont été introduites s’appliquent à des groupes généraux. Parmi elles, l’algorithme déterministe Pas de bébé -p Pas de géant de D. Shanks [Odl84] et la méthode ρ de Pollard [Pol78] ont une complexité en O( |G|) où G est le groupe considéré. La méthode de J. Pollard nécessite néanmoins un espace de stockage moindre que celle de D. Shanks, comme nous le verrons au paragraphe 1.1. S’appuyant sur des informations additionnelles à propos du groupe G dont il est question, les algorithmes par calcul d’indice, basés sur une idée de Kraitchik de 1922 [Kra22], entraînent des algorithmes sous-exponentiels en la taille de G. La structure commune de ces algorithmes est détaillée au paragraphe 1.2. Notons simplement que les mécanismes qui s’actionnent possèdent trois phases bien distinctes, dont les deux premières déterminent la complexité finale de l’algorithme en question. En 1976, W. Diffie et M. Hellman publient leur célèbre protocole et relancent la recherche sur le problème du logarithme discret dans les corps finis. R. Merkle et ses collègues redécouvrent alors l’idée de Kraitchik. Les premiers algorithmes de calcul d’indice sur des corps Fp où p est premier abou- tissent à une complexité en Lp (1/2, c), pour une certaine constante c.1 Néanmoins, cette valeur de c trop grande limite l’idée à des algorithmes théoriques sans implantation – dans les années 70 et 80, de nombreuses pistes tentent ainsi de réduire ce paramètre. La méthode du crible linéaire (Linear Sieve Method en anglais) et celle par entier gaussien [COS86] (Gaussian Integer Method), qui propose l’utilisation de corps quadratique imaginaire, obtiennent une valeur de c égale à 1. En 1998, A. Joux et R. Lercier résolvent le logarithme discret sur un nombre premier de 90 décimales. La borne asymptotique Lp (1/2, 1) est resté un record en terme de complexité pendant de longues années. Les améliorations suivantes sont apparues grâce aux avancées de l’algèbre linéaire, et notamment avec l’apparition d’algorithmes astucieux qui permettent la résolution de système d’équations linéaires creux à n inconnues en O(n2 ) étapes (algorithmes de Lanczos et de Wiedemann). Parallèlement, en 1988, J. Pollard propose une nouvelle approche pour la factorisation de certains nombres entiers, complétée ensuite par H. Lenstra : naît alors le crible spécial de corps de nombres qui factorise des entiers n d’une certaine forme avec une complexité en Ln (1/3, (32/9)1/3 ). Avec la collaboration supplémentaire de A. Lenstra et M. Manasse, cette méthode est ensuite étendue pour factoriser des entiers de forme générale : elle aboutit au crible de corps de nombres dont la complexité asymptotique est en Ln (1/3, (64/9)1/3 ). Ce crible pour la factorisation est transporté cinq ans plus tard au problème du logarithme discret par D. Gordon [Gor93], qui propose un algorithme de calcul de logarithmes discrets pour les corps de cardinal premier Fp . Il obtient alors une complexité en Lp (1/3, c) avec c ≈ 2, 0800. L’algorithme est modifié par O. Schirokauer en 1993 qui parvient à abaisser c à (64/9)1/3 ≈ 1, 9229 [Sch93]. Enfin, I. Semaev [Sem02] propose une version de ce crible spécial de corps de nombres d’une complexité de Lp (1/3, (32/9)1/3 ). L’idée même de crible se propage ensuite à tous les corps finis Fpn . Deux sous-familles de corps finis – et donc de cribles – se dégagent alors, selon le rapport de taille entre la caractéristique p et le cardinal du corps pn . Pour un corps fini dont la caractéristique est médiane voire grande par rapport à la taille du corps,2 A. Joux, R. Lercier, N. Smart et F. Vercauteren proposent en 2006 le crible de corps de nombres, qui a une complexité en Lpn (1/3, (128/9)1/3 ) pour les corps de caractéristiques médianes, et Lpn (1/3, (64/9)1/3 ) pour les corps de grandes caractéristiques. L’étude précise de ce crible fait l’objet de toute la partie 2. Pour un corps fini dont la caractéristique est petite par rapport à la taille du corps,3 A. Joux et R. Lercier présentent la même année un autre crible, sur corps de fonction cette fois-ci, dont la complexité est aussi en Lpn (1/3). Il s’agit d’une adaptation du crible sur corps de fonction introduit par L. Adleman en 1993. C’est sur ces corps de petites (voire très petites) caractéristiques que le problème du logarithme discret a vu sa complexité chuter ces derniers mois : de Lpn (1/3), elle est passé à Lpn (1/4 + o(1)) au début de l’année 2013 [Jou13], puis, non sans bruit, à une complexité quasi-polynomiale [BGJT13]. Le dernier record en date concernant la résolution du logarithme discret sur un corps fini concerne le corps F26168 , et a été réalisé en moins de 550 heures CPU. Il a été annoncé par A. Joux le 21 mai 2013 et s’appuie sur l’algorithme en Lpn (1/4 + o(1)) – l’article de R. Barbulescu, P. Gaudry, A. Joux et E. Thomé présentant un résultat théorique non encore appliqué. 1 Le paragraphe 2.1.1 explicite cette notation. Le lecteur non averti peut simplement l’entendre, dans un premier temps, comme une fonction dépendant de deux paramètres qui abaissent chacun la complexité de l’algorithme à mesure qu’ils diminuent. Une baisse du premier paramètre est néanmoins bien plus significative qu’un changement identique du second. 2 C’est-à-dire lorsque l’on peut écrire p = Lpn (l, c) avec 1/3 < l < 2/3 (médiane) ou 2/3 < l < 1 (grande), avec Fpn le corps considéré. 3 C’est-à-dire lorsque l’on peut écrire p = Lpn (l, c) avec l < 1/3. 6 L’historique présentée, nous donnons maintenant plus de détails sur les méthodes classiques que nous utiliserons. Nous présentons dans un premier temps les trois algorithmes génériques qui peuvent être appliqués quelque soit le groupe en question. Nous introduisons ensuite les algorithmes par calcul d’indice, famille d’algorithmes qui permettent notamment de résoudre le problème du logarithme discret dans le cas spécifique des corps finis. 1.1 Algorithmes généraux 1.1.1 Pas de bébé/Pas de géant Soient G un groupe multiplicatif d’ordre n, g un générateur de G et a un élément de G. Pour trouver le logarithme discret x ∈ {0, · · · , n − 1} de a en base g, une méthode naïve consiste à tester successivement si 1, g, g 2 , g 3 , · · · sont égaux à a. Cette énumération demande, certes, peu de stockage (seuls a, g, et la puissance courante g j sont gardés en mémoire) mais elle nécessite x − 1 multiplications et x comparaisons dans G, ce qui est évidemment bien trop coûteux. L’algorithme que propose D. Schanks implique de stocker un certain nombre d’éléments, mais √ le nombre d’opérations à effectuer est en O( n). Procédé √ Posons m = d ne la partie entière supérieure de n. Si l’on note q et r respectivement le reste de la division euclidienne de x par m, i.e. x = qm + r avec 0 6 r < m, il est clair que trouver x revient exactement à identifier la paire (q, r). L’algorithme Pas de bébé - Pas de géant donne cette paire en procédant de la façon suivante. Tout d’abord, nous remarquons que nous avons : (g m )q = (g mq g r )g −r = g mq+r g −r = ag −r . (1.1) Nous calculons l’ensemble suivant : Bébé = {(ag −r , r)|0 6 r < m} que nous appelons l’ensemble des pas de bébé, car le passage d’un élément à un autre demande une multiplication par l’inverse de g. Si, par chance, il existe dans cet ensemble un couple de la 0 forme (1, r0 ), c’est que nous avons obtenu ag −r = 1 et donc r0 est le logarithme discret de a. Si ce n’est pas le cas, nous continuons en calculant successivement les éléments de l’ensemble : Géant = {g m , (g m )2 , (g m )3 , · · · } qui sont cette fois-ci appelés des pas de géant, car le passage d’un élément à un autre demande une multiplication par g m . Notons que la totalité de l’ensemble des pas de géants est rarement calculée : à chaque création d’un nouvel élément (g m )q , on teste s’il existe un (ag −r , r) ∈ Bébé tel que (g m )q = ag −r . Auquel cas, d’après l’équation (1.1), nous avons retrouvé q et r, et donc le logarithme discret x. Complexité en temps et en espace √ √ L’algorithme demande ainsi O( n) multiplications et comparaisons dans G, et stocke O( n) éléments au cours de son exécution. 1.1.2 ρ de Pollard L’algorithme proposé dans ce paragraphe présente le même temps d’exécution que la méthode Pas de bébé - Pas de géant, mais le stockage qu’il nécessite est constant. G, g, a, n et x sont identiques à ceux introduits au paragraphe précédent. Procédé Supposons que l’on puisse décomposer G en trois sous-ensemble deux à deux disjoints : A1 , A2 , A3 tels que A1 ∪ A2 ∪ A3 = G. Nous définissons la fonction f sur les trois sous-ensemble par : f (b) = gb si b ∈ A1 b2 si b ∈ A2 ab si b ∈ A3 Prenons alors un entier aléatoire x0 dans {1, · · · , n} et calculons le terme b0 = g x0 . Nous considérons enfin la suite définie par récurrence bi+1 = f (bi ). Le fonctionnement de l’algorithme repose sur deux faits. D’une part, pour tout i, nous pouvons réécrire un élément bi de la suite sous la forme : bi = g xi ayi (1.2) où les suites (xi )i et (yi )i sont données par le choix de x0 initial, y0 = 0 et : xi+1 = xi + 1 2xi mod n si bi ∈ A1 mod n si bi ∈ A2 xi si bi ∈ A3 et yi+1 = yi si bi ∈ A1 2yi mod n si bi ∈ A2 yi + 1 mod n si bi ∈ A3 D’autre part, puisque nous calculons la suite (infinie) (bi )i sur un groupe fini, il existe (au moins) deux éléments de la suite qui sont égaux : c’est ce que l’on appelle un phénomène de collision. L’existence de deux indices i > 0 et k > 1 tels que bi = bi+k implique, grâce à l’équation (1.2) que nous ayons g xi ayi = g xi+k ayi+k pour ces indices, et donc g xi −xi+k = ayi+k −yi = g x(yi+k −yi ) . Par conséquent, le logarithme discret x de a dans la base g satisfait : xi − xi+k ≡ x(yi+k − yi ) mod n. De deux choses l’une : soit yi+k − yi est inversible modulo n, dans ce cas x ≡ (xi − xi+k )(yi+k − yi )−1 mod n et nous avons retrouvé le logarithme discret de a ; soit yi+k − yi ne l’est pas, et nous relançons alors l’algorithme avec un choix de x0 initial différent du précédent. Complexité en temps et en espace Combien d’éléments bi de la suite faut-il calculer avant de trouver une collision ? Supposons que les bi sont des éléments aléatoires du groupe – c’est bien entendu faux, mais la construction de la suite vise à obtenir une suite quasi-aléatoire. Le paradoxe des anniversaires appliqué au groupe √ G nous indique que O( n) éléments suffisent pour obtenir une collision avec une probabilité supérieure à 1/2. Quel espace de stockage demande l’algorithme ? Jusqu’ici, nous avons considéré que nous √ stockons tous les triplets (bi , xi , yi ), soit O( n) triplets, c’est-à-dire autant d’espace mémoire que l’algorithme de Shanks Pas de bébé - Pas de géant. De fait, garder en mémoire un seul triplet est suffisant. Supposons que l’on connaisse un et un seul triplet (bi , xi , yi ). Nous calculons alors les i triplets (bi+j , xi+j , yi+j ) pour j = 1, · · · , i, que l’on compare un à un au triplet gardé en mémoire : (bi , xi , yi ). S’il y a une collision, c’est gagné. Autrement, nous remplaçons (bi , xi , yi ) par le dernier triplet calculé (b2i , x2i , y2i ), puis nous recommençons le procédé. Notons que seuls 8 les triplets dont l’indice est une puissance de 2 sont finalement stockés. Pour prouver que cet algorithme trouve toujours une collision, nous montrons tout d’abord que la suite (bi )i est périodique après la première correspondance. Si l’on note bi = bi+k cette première correspondance (qui n’est pas nécessairement trouvée par l’algorithme), alors, par récurrence, la construction d’un nouvel élément ne dépendant que de l’élément précédent, nous obtenons bi+l = bi+k+l pour tout l > 0. La suite est bien périodique, c’est ce qui donne son nom à l’algorithme de Pollard. Il est commun d’appeler la pré-période l’ensemble de la suite b0 , · · · , bi−1 jusqu’à la première collision, représentée par la queue de la lettre grecque ρ, et bi , · · · , bi+k sa période de longueur k, représentée par la boucle du ρ. Il reste à prouver qu’un seul triplet (b2j , x2j , y2j ) stocké permet d’exhiber une collision. Si 2j > i le premier indice de collision, alors b2j appartient bien à la période. Si de plus 2j > k la longueur de la période, alors au moins un des éléments calculés est égal à b2j . Il s’agit bien d’une collision ! Le nombre d’éléments de la suite qu’il faut calculer avant qu’une collision ne soit trouvée n’a pas changé : il correspond à la première puissance de 2 directement supérieure à la somme des termes dans la pré-période et dans un premier parcours √ de la boucle de la période, soit O( n) éléments. 1.1.3 Algorithme de Pohlig-Hellman Nous montrons maintenant un résultat simple mais essentiel : Théorème 1.1.1. Le problème du logarithme discret dans un groupe G d’ordre n peut se réduire au problème du logarithme discret dans des groupes cycliques d’ordre premier, dès lors que l’on connait la factorisation de n en produits de nombres premiers. Soient G, g, a, n et x introduits comme au paragraphe 1.1. Nous supposons dans la suite de ce paragraphe que nous connaissons la factorisation de n : Y n= pi ei . pi |n Réduction à une puissance d’ordre premier Pour chaque diviseur premier pi de n, nous posons les trois éléments suivants : ni = n , pi ei gi = g ni et ai = ani . (1.3) e Alors gi pi i = g n = 1 et l’ordre de gi est exactement pi ei . De plus gix = g ni x = ani = ai . L’élément ai appartient donc au sous-groupe engendré par gi : dès lors, nous pouvons parler du logarithme discret de ai dans gi . Notons le xi . A partir de chacun des xi , il est possible de retrouver le logarithme discret x. Ceci provient de la : Proposition 1.1.2. Pour un diviseur pi de n, notons xi le logarithme discret de ai dans la base gi . Si l’on note de plus x modulo n une solution simultanée des congruences x ≡ xi mod pi pour tous les diviseurs premiers pi de n, alors x est le logarithme discret de a dans la base g. Démonstration. Pour tout diviseur premier pi de n, nous avons (g −x a)ni = gi −x ai = gi−xi ai = 1 car xi est le logarithme discret de ai en base gi . Donc l’ordre h de g −x a est un diviseur de ni . Ainsi, pour tout i, h|ni , il divise a fortiori leur pgcd. Or, par définition, les ni sont deux à deux premiers entre-eux. On en déduit que ce pgcd vaut 1, donc h = 1, et enfin a = g x . En déterminant d’abord tous les xi , puis en appliquant le théorème des restes chinois, on obtient déjà un algorithme plus rapide, dès lors que n possède q au moins deux diviseurs premiers : l’algorithme Pas de bébé - Pas de géant donne les xi en O( pei i ), tandis que le temps de calcul d’application du théorème des restes chinois reste négligeable. Réduction à un ordre premier Nous pouvons aller plus loin dans la réduction du calcul : si nous venons de voir qu’il est possible de réduire le cas général au cas d’un sous-groupe de cardinal une puissance d’un nombre premier, nous montrons maintenant comment ramener ce dernier cas au calcul de logarithmes discrets dans des sous-groupes d’ordre premier. Soient G un groupe cyclique de cardinal pe avec p un nombre premier, g un générateur de G et a un élément quelconque de G. Nous souhaitons retrouver le plus petit entier x tel que a = g x . Comme x < pe , nous pouvons considérer son écriture en base p : x= e−1 X xj pj j=0 où 0 6 xj < p pour tout j. Montrons alors que chaque coefficient xj peut être vu comme un logarithme discret dans un certain groupe d’ordre p. Pour commencer, multiplions par pe−1 l’écriture ci-dessus. Nous obtenons pe−1 x = x0 pe−1 + pe e−1 X xj pj−1 . j=1 Or en élevant à lapuissance pe−1 l’équation a = g x , il vient ap Pe−1 j−1 e x p e−1 e−1 p j=1 j ap = g x0 p g . Nous en déduisons : ap e−1 = (g p e−1 e−1 = gp e−1 x et par conséquent )x0 . e−1 Cette dernière équation permet d’interpréter x0 comme le logarithme discret de ap dans le e−1 e−1 sous-groupe d’ordre p engendré par g p – puisque g p est d’ordre p, par définition de g. Nous procédons par récurrence sur les coefficients suivants. Supposons , xi aient été P que x0 , · · · P déterminés comme des logarithmes discrets. Nous écrivons alors ag qui se traduit, une fois élevé à la puissance pe−i−1 par : ag − Pi−1 j=0 xj pj pe−i−1 = gp e−1 xi − i−1 j=0 xj p j =g e−1 j=i xj p j . Ce . Nous pouvons interpréter xi de nouveau comme le logarithme discret d’un élément – ici le e−1 membre de gauche – dans un groupe d’ordre p – ici le sous-groupe généré par g p . Algorithme L’algorithme de Pohlig-Hellman procède alors de la manière suivante. Pour tous les diviseurs premiers pi de n, nous calculons les éléments gi et ai comme définis en (1.3). Nous retrouvons les coefficients xj pour chacun des nombres premiers de la factorisation de n à l’aide de l’algorithme ρ de Pollard, ce qui nous permet de retrouver les logarithmes discrets des ai en base gi . Nous remontons enfin au logarithme discret voulu grâce au théorème des restes chinois. 10 Complexité de l’algorithme Le calcul de gi et ai pour un diviseur premier pi de n demande O(log n) opérations du groupe car il s’agit d’une élévation à une puissance inférieure à n. Le calcul de chaque xj nécessite √ quant à lui O(log n) opérations du groupe pour les puissances puis O( pi ) opérations par ρ de Pollard pour retrouver les logarithmes discrets en question. Comme les xj correspondent aux chiffres des xi en base p, il y a ei tels coefficients à calculer. Le théorème des restes chinois ne demande aucune opérations du groupe. Au final, l’algorithme de Pohlig-Hellman trouve le logarithme discret dans le groupe cyclique G en utilisant O X ei (log |G| + √ pi ) pi | |G| opérations du groupe. 1.2 Algorithmes par calcul d’indice La méthode que nous présentons ici est à la base de deux algorithmes de calcul de logarithmes discrets non pas dans des groupes généraux comme précédemment, mais dans les corps finis. Elle aboutie d’une part au crible de corps de fonctions - utilisé dans les corps finis de petites caractéristiques - dont l’étude ne sera pas détaillée ici, et d’autre part au crible de corps de nombres - pour les corps finis de caractéristiques médianes et grandes. C’est pour éclaircir les mécanismes qui agissent dans le crible de corps de nombres que nous détaillons la méthode dont il est issu : nous présentons d’abord le calcul d’indice en toute généralité, l’étude détaillée du crible pour les logarithmes discrets sera l’objet de la partie 2. Le calcul d’indice constitue un domaine de recherche actif à la frontière entre la théorie des nombres et la cryptographie. Il s’agit d’une technique commune à de nombreuses familles d’algorithmes et aboutissant à des applications variées. Pris sous l’angle de la théorie des nombres, les algorithmes par calcul d’indice permettent ainsi la factorisation de grands nombres entiers, le calcul de logarithmes discrets dans des corps finis, le calcul du nombre de classe de corps de nombres 4 , ou encore le calcul de logarithmes discrets de jacobienne de certaines courbes algébriques. Bien entendu, sous une perspective cryptographique ces applications sont déjà d’un intérêt certain, mais le calcul d’indice a permis conjointement de déterminer la sécurité effective de certains schémas cryptographiques. Avec ces protocoles, comme le problème de l’extraction d’une racine e-ième (RSA) ou le problème de Diffie-Hellman statique5 , un adversaire en connait assez pour résoudre ce problème par lui-même après un certain (grand) nombre de questions qu’il est autorisé à poser à propos d’instances bien choisies de ce problème. Le coût total du calcul d’indice de ces protocoles est inférieur au coût des algorithmes de calcul d’indice qui s’attaquent au problème de théorie des nombres sous-jacents : à savoir la factorisation et le calcul de logarithmes discrets. Appréhender l’étendue importante des algorithmes de calcul d’indice n’est pas chose simple : s’appliquant à des objets mathématiques bien différents les uns des autres, les outils qui entrent en jeu le sont tout autant. Néanmoins, le squelette général à la base de ces algorithmes tient en peu de lignes, et c’est lui que nous détaillons maintenant. Deux idées générales interviennent lorsqu’il s’agit de calcul d’indice : • Lorsque l’on souhaite en connaître d’avantage sur une certaine structure mathématique A, la première idée consiste à désosser cette structure de deux manières différentes - mais 4 5 Voir le paragraphe 2.1 pour une définition de ces notions. Il s’agit d’un cas spécial du problème de Diffie-Hellman classique où l’une des clefs publiques est fixée. compatibles. Plus précisément, nous cherchons à établir un diagramme commutatif de la forme de celui tracé en figure 1.1. Un tel diagramme autorise n’importe quel élément x E Ψ2 Ψ1 E1 E2 Φ1 Φ2 A Figure 1.1: Diagramme commutatif d’un algorithme de calcul d’indice de E à s’envoyer sur A via deux chemins différents, selon que "l’on passe" par E1 ou par E2 . Dans tous les cas, puisque le diagramme commute, nous parvenons au même résultat, c’est-à-dire que nous obtenons l’égalité Φ1 (Ψ1 (x)) = Φ2 (Ψ2 (x)). • La seconde idée porte sur le choix des ensembles intermédiaires E1 et E2 : nous les souhaitons de telle sorte qu’une part non négligeable de leurs éléments puissent s’écrire comme produits d’objets mathématiques appartenant à un sous-ensemble raisonnablement petit. Les valeurs que nous pouvons écrire sous cette forme sont dites lisses. Les petits sousensembles utilisés pour décomposer les éléments en produits sont appelés les bases de lissité respectivement de E1 et de E2 . Combiner ces deux idées implique que, si Ψ1 (x) et Ψ2 (x) peuvent s’écrire tous les deux comme produits d’éléments dans leur base de lissité respectives (ils sont donc lisses), alors nous obtenons une égalité intéressante entre ces deux produits, une fois projetés sur A. Remarquons que pour certains algorithmes de calcul d’indice, certaines des fonctions parmi les Ψi et Φi se réduisent à l’identité ou à des fonctions naturelles comme l’inclusion. La nature même du diagramme ci-dessus en est alors simplifié. Une fois cette mise en place établie, les algorithmes de calcul d’indice procèdent selon une mécanique à plusieurs temps. Ils créent et collectent un grand nombre de ces égalités en ne sélectionnant que les éléments x de E qui imposent à Ψ1 (x) et Ψ2 (x) d’être lisses dans leur base respective. Cette phase est appelée la phase de crible. Elle rappelle en effet les cribles les plus élémentaires, comme le crible d’Eratostène, où il s’agit de discriminer des nombres possédant certains propriétés. Pour Eratostène, il était question de rechercher tous les nombres premiers inférieurs à un certain entier ; pour nous, il s’agit de sélectionner, après test, les éléments de E entrainant des résultats intermédiaires lisses. Une fois ces égalités construites, nous les combinons d’une manière particulière à chaque problème donné. L’algèbre linéaire joue pourtant toujours un rôle important. Dans le crible qui va suivre, il sera question de retrouver le logarithme des éléments de la base de lissité (qui deviennent donc les inconnues de notre système) à l’aide des équations collectées. En dernier lieu, il convient d’étendre la connaissance des logarithmes de certains éléments (ceux liés aux différentes bases de lissité) aux logarithmes du corps d’arrivée tout entier. Cette phase s’appelle celle du calcul des logarithmes individuels. 12 2 Logarithme discret dans les corps finis : le crible de corps de nombres (NFS) L’objet de toute cette partie consiste à préciser - et à rendre rigoureux - le squelette du calcul d’indice présenté plus haut, pour aboutir en détails au crible de corps de nombres et permettre ainsi le calcul de logarithmes discrets dans les corps finis Fpn de caractéristiques médianes à grandes. Nous commençons par mettre en place tous les outils nécessaires à ce travail au paragraphe 2.1. En 2.2, nous déroulons pas à pas le schéma de cet algorithme, dont les détails techniques sont relégués au paragraphe 2.3. Nous proposons ensuite une légère extension du crible en 2.4, issue de l’article [JP13]. Le paragraphe 2.5 conclut sur les complexités asymptotiques obtenues. 2.1 2.1.1 Outils divers Notations Dorénavant, et jusqu’à la fin de ce mémoire, Q représentera la taille du corps fini considéré. Nous notons ainsi Q = pn , avec p la caractéristique du corps de base et n le degré d’extension. Comme dans tout algorithme de calcul d’indice, les diverses complexités seront exprimées à l’aide de la notation suivante : Lq (α, c) = exp c(log q)α (log log q)1−α où α et c sont des constantes telles que 0 < α < 1 et c > 0 tandis que log désigne la fonction logarithmique néperienne. La notation simplifiée Lq (α) sera utilisée lorsque la constante c ne sera pas spécifiée. De plus, pour alléger les notations, nous abrégerons l’expression Lq (α, c + o(1)) en Lq (α, c), où o(1) est pour q → ∞. Ces fonctions proviennent de la probabilité de lissité de certains entiers. Elles découlent plus précisément du théorème de Canfield, Erdös et Pomerance énoncé dans le paragraphe suivant. Deux valeurs de α se démarquent lorsqu’il s’agit de calcul d’indice pour des logarithmes discrets, à savoir 1/3 [JLSV06, JL06] et 1/4 [Jou13]. Il est important de ce fait de noter que le passage d’une complexité en Lq (1/3) à Lq (1/4) est bien plus significatif qu’un changement identique du second paramètre c. En effet, une complexité en Lq (α) devient polynomiale en log q lorsque α tend vers 0, mais exponentielle en log q lorsque α tend vers 1. Entre ces deux valeurs limites que peut prendre α, la complexité est dite sousexponentielle. α contrôle ainsi le passage d’une complexité exponentielle à polynomiale, ce qui a des effets bien plus marqués que la constante c qui, dans le cas polynomial, n’influence que le degré du polynôme en question. Malgré tout, les améliorations en α étant difficiles à obtenir – il aura par exemple fallu près de 15 ans pour passer du premier algorithme en Lq (1/2) pour le logarithme discret au premier algorithme en Lq (1/3) comme en témoigne la brève note historique en début de partie 1 – toute amélioration de la seconde constante est bienvenue. Notre travail s’attache essentiellement à faire diminuer celle-ci dans les corps finis d’une certaine forme, par comparaison avec le cas général. 2.1.2 Probabilités de lissité et heuristiques classiques Nous énonçons dans ce paragraphe deux théorèmes de lissité couramment employés lors de l’évaluation de la complexité d’algorithme par calcul d’indice. Pour rappel, un entier est dit B-lisse si chacun de ses diviseurs premiers est inférieur à l’entier B. Introduisons la quantité ψ(x, y) pour désigner le nombre d’entiers positifs inférieurs à x qui soient y-lisses. Alors log(ψ(x, y)/x) est proche de : log x log x log log y log y − . En particulier, lorsque x et y sont tous les deux donnés comme des expressions en Lq , nous avons le résultat suivant. Théorème 2.1.1 (Canfield, Erdös, Pomerance). Soit C ⊂ R4 un compact tel que pour tout (r, s, γ, δ) ∈ C on ait γ > 0, δ > 0 et 0 < s < r < 1. Si P est la probabilité qu’un entier positif inférieur à Lq (r, γ) se décompose en produits de nombres premiers tous inférieurs à Lq (s, δ), alors nous avons : P = Lq (r − s, −γ(r − s)/δ + o(1)) lorsque q → ∞ uniformément et pour (r, s, γ, δ) appartenant à C. Ce théorème possède un analogue intéressant lorsqu’il s’agit, non pas de la probabilité d’un entier inférieur à x de se décomposer en produits de facteurs premiers inférieurs à y, mais de celle d’un polynôme à coefficients dans un corps fini de degré m de se décomposer en produits de polynômes de degrés inférieurs à n. Bien que non utilisé dans ce mémoire, il s’agit d’un résultat souvent utile lorsque l’on traite de calcul d’indice. Nous l’énonçons donc rapidement sous sa forme simplifiée : Théorème 2.1.2 (Panario, Gourdon, Flajolet [PGF98]). Soit R un polynôme aléatoire de degré m sur un corps fini Fq . Notons P la probabilité que R se décompose en produits de polynômes irréductibles de degrés au plus n. Alors logq P est proche de : m − logq n m n Enfin, nous aurons aussi besoin d’évaluer la probabilité qu’un polynôme aléatoire unitaire de degré n sur un corps fini Fq soit irréductible. Nous avons d’une part q n polynômes unitaires de degré n sur Fq car il y a n coefficients à choisir dans le corps. D’autre part, le nombre de polynôme irréductibles de degré n sur Fq est q n /n quand n tend vers l’infini – cf le paragraphe 15.5 Smoothness probabilities de [Jou09]. En divisant, on en déduit : Proposition 2.1.3. La probabilité qu’un polynôme aléatoire unitaire de degré n dans un corps fini soit irréductible est de l’ordre de 1/n quand n → ∞. Heuristiques classiques Comme il est usuel dans les articles traitant d’algorithmes de calcul d’indice, nous utiliserons la généralisation heuristique du théorème 2.1.1 concernant la probabilité de lissité d’entiers qui ne sont pas sélectionnés uniformément, ou de paire d’entiers x et y qui ne sont pas indépendants. 14 2.1.3 Algèbre linéaire sur matrice creuse L’une des phases du crible sur corps de nombres développée plus loin consiste en la résolution d’un système d’équations linéaires que l’on qualifie de creux, c’est-à-dire que le nombre d’inconnues entrant en jeu dans chacune des équations est sensiblement inférieur au nombre total d’inconnues du système. Nous nous intéressons de ce fait au gain en terme de nombre de calculs qui est apporté par ces matrices creuses lors de la résolution de système d’équations linéaires. Représentation d’une matrice creuse Spécifions tout d’abord notre définition : une matrice creuse est une matrice qui ne contient qu’un petit nombre de coefficients non nuls relativement à la totalité de ceux-ci. Très souvent, elles prennent la forme de matrice dont chacune des lignes (ou des colonnes) ne contient qu’un petit nombre d’entrées non nulles comparativement à la dimension de la matrice. L’intérêt de telles matrices d’un point de vue algorithmique est de pouvoir représenter et garder en mémoire des matrices plus grandes qu’à l’habitude : ceci est possible en conservant conjointement pour chaque ligne (ou colonne) la liste des positions qui contiennent un coefficient non nul, et les valeurs de ces coefficients. Ainsi, nous pouvons garder en mémoire une matrice de taille n × n qui ne contient que m coefficients en moyenne par ligne à l’aide de 2mn nombres – pour chaque ligne, on stocke par exemple la paire (position, coefficient) – au lieu des n2 nombres que demande la représentation classique. Lorsque l’on est face à un système d’équations linéaires creux, utiliser l’élimination gaussienne classique reste le plus souvent une mauvaise idée. En effet, chaque étape de pivot accroît le nombre d’entrées de la matrice, et, de ce fait, en un petit nombre d’étapes seulement, celleci ne présente plus les caractéristiques d’une matrice creuse. Par conséquent, si la dimension initiale de la matrice est importante, l’élimination gaussienne sature rapidement la mémoire disponible. Nous cherchons donc une approche qui n’estompe pas l’avantage d’avoir une matrice creuse. Malheureusement, le fait d’être creux n’est pas une propriété mathématique qui se conserve bien – en particulier, l’inverse d’une matrice creuse n’est pas nécessairement creuse. Certains algorithmes proposent une approche différente de l’élimination gaussienne et de ses variantes : plutôt que de transformer étape par étape la matrice donnée en entrée, ceux-ci cherchent à trouver directement une solution du système linéaire avec l’aide seule de multiplications matrice-vecteur. L’algorithme qui suit fait partie de cette famille. Algorithme de Lanczos pour les matrices creuses réelles L’algorithme que nous présentons maintenant a été proposé par le mathématicien hongrois Cornélius Lanczos ; il a été conçu originellement pour trouver des solutions à un système linéaire composé de nombres réels voire complexes. En effet, il est plus aisé d’en faire la description lorsque nous pouvons utiliser une notion de convergence. Pour détailler les mécanismes de cet algorithme, nous abandonnons donc temporairement nos corps finis – mais nous y reviendrons au paragraphe suivant, pas d’inquiétude ! Nous considérons le système d’équations linéaires sur des réels représentée par : M ~y = ~x (2.1) où M est supposée être une matrice carrée et inversible.1 De plus, sans perte de généralité, nous pouvons supposer que M est aussi symétrique. En effet, multiplier (2.1) par t M la transposée de la matrice donne (t M · M )~y = (t M~x), où t M · M est bien une matrice symétrique et t M~x un vecteur. En tant que matrice symétrique réelle et inversible, M nous permet d’introduire 1 Ce sera effectivement le cas pour la matrice creuse intervenant dans le crible général et le crible spécial. un produit scalaire sur l’espace vectoriel Rn , que l’on note (·|·)M , et qui est défini à partir du produit scalaire usuel par : (~u|~v )M = (~u|M~v ) = (M~u|~v ). Nous en déduisons aussi une nouvelle norme sur les vecteurs définie par : k~ukM = q (~u|~u)M . L’algorithme de Lanczos sur les réels commence par la construction d’une base de Rn orthonormale pour le nouveau produit scalaire, c’est-à-dire qu’il construit une famille de vecteurs e~1 , · · · , e~n tels que pour tout i = 1, · · · , n on ait (~ ei |~ ei )M = 1 et pour tout i 6= j, (~ ei |e~j )M = 0. Il s’agit ensuite de décomposer la solution ~y de l’équation initiale sur la base (e~1 , · · · , e~n ) à l’aide de la formule : n ~y = X (~y |~ ei )M e~i . (2.2) i=1 C’est cette décomposition de ~y qui permet de résoudre le système. En effet, chacun des coefficients (~y |~ ei )M peut être obtenu à partir du vecteur ~x seulement, sans nécessiter d’information préalable sur ~y . Ceci provient du fait que : (~y |~ ei )M = (M ~y |~ ei ) = (~x|~ ei ). La décomposition ne coûte pas trop cher en terme de temps d’exécution puisqu’elle ne demande le calcul que de n produits scalaires – un pour chaque vecteur de la base. Cette méthode conduit donc à un algorithme efficace si et seulement si la base orthonormale a été construite de manière efficace. Nous détaillons ici une manière de procéder. Prenons tout d’abord un vecteur aléatoire v~1 , et posons : e~1 = v~1 kv~1 kM de telle sorte qu’il soit de norme 1. Il s’agit du premier vecteur de notre base orthonormale. Nous construisons ensuite de manière itérative chacun des autres vecteurs. Pour tout i, nous posons v~i = M · ~ei−1 et nous établissons le vecteur e~i comme étant l’orthonormalisé de u~i . Autrement dit, nous posons : u~i = v~i − i−1 X (~ vi |e~k )M e~k k=1 u~i . ku~i kM D’un premier abord, cette orthonormalisation ne semble pas si efficace que cela, puisqu’une implantation naïve entrainerait i calculs de produit scalaire à chaque étape et donc O(n2 ) produits scalaires pour la totalité de l’algorithme. Pourtant, une modification toute simple nous permet de réduire les calculs à deux produits scalaires seulement chacune des étapes. En effet, pour tout i et k nous avons (~ vi |~ek )M = (M~ei−1 |e~k )M = (~ei−1 |M e~k )M = (~ei−1 |~vk+1 )M . De plus, en réécrivant les deux équations ci-dessus, nous remarquons que ~vk+1 appartient à l’espace vectoriel engendré par e~1 , · · · , ~ek+1 . Dès que i − 1 > k + 1, le produit scalaire (~ vi |~ek )M est alors nul. La définition de u~i peut donc être réécrite : et e~i = u~i = v~i − (~ vi |~ei−1 )M · ~ei−1 − (~ vi |~ei−2 )M · ~ei−2 . Le procédé se termine lorsque le dernier vecteur orthogonal obtenu est le vecteur nul. La famille de vecteurs générées e~1 , · · · , ~el est clairement orthonormale, mais est-elle une base de Rn comme souhaité ? C’est le cas dès que la famille est suffisamment grande, et plus précisément dès que l = n. Le choix aléatoire du premier vecteur v1 donne le plus souvent une telle base. 16 Remarque 2.1.4. Avec la plupart des matrices réelles qu’il traite, l’algorithme de Lanczos démontre une propriété de convergence très utile. Une décomposition même partielle obtenue en tronquant la somme de l’équation (2.2) donne rapidement de très bonnes approximations de ~y . Matrices creuses et corps finis De manière étonnante, l’algorithme de Lanczos se soumet très bien au passage à des systèmes linéaires d’équations sur des corps finis. Bien entendu, il n’est plus possible de compter sur des arguments de convergence comme dans la remarque faite plus haut ; il faut donc pousser systématiquement l’algorithme jusqu’au bout de son exécution. Cependant, si les (~ ei ) forment une base de l’espace vectoriel image de M , les objets se comportent bien. Ainsi, l’algorithme de Lanczos s’applique aux corps finis dès lors que la génération des (~ ei ) ne s’achève pas prématurément. Deux raisons principales peuvent conduire à cet échec : • Tout d’abord, comme dans le cas des matrices réelles, il se peut qu’un certain vecteur v~j appartienne déjà à l’espace vectoriel engendré par les (~ ei ) précédemment calculés. Auquel cas, le u~i qui lui est associé est ~0. • Par ailleurs, dans les corps finis, il est aussi possible que la norme ku~i kM s’annule sans que u~i soit égal à ~0. En effet, chaque calcul est mené modulo la caractéristique du corps fini considéré, comme l’illustre l’exemple simple suivant : la norme euclidienne du vecteur ~x = (1, 1, 1) sur les réels est 3, mais sur F3 , sa norme est nulle. Plus la caractéristique est petite et plus ce problème apparait fréquemment – dans ce cas, l’algorithme doit être modifié. Il est possible par exemple de suivre la technique proposée par Peter Montgomery [Mon95] et de commencer avec un bloc de plusieurs vecteurs initiaux aléatoires. Mais nous ne nous attardons pas sur cette configuration, car les cribles que nous présentons s’appliquent à des corps finis de caractéristique p médiane à grande. Lorsque c’est le cas, grâce à l’initialisation aléatoire du vecteur, nous estimons que la probabilité d’obtenir un échec à chaque étape de l’algorithme est de l’ordre de 1/p. Par conséquent, la probabilité totale d’échouer est de l’ordre de n/p. Pour les grandes valeurs de p, cette probabilité est clairement négligeable. Dans tous les cas où il s’applique, la complexité asymptotique de cet algorithme est en O(n2 ) – à comparer avec l’élimination gaussienne naïve qui a une complexité asymptotique en O(n3 ). De fait, il est possible d’obtenir une majoration plus précise, mais nous choisissons cette notation qui suffira amplement à la suite de nos analyses. Pour finir, citons l’algorithme de Wiedemann qui permet de résoudre des systèmes d’équations linéaires creux de taille n en O(n2 λ) où λ désigne le poids du système, c’est-à-dire le nombre d’entrées non nulles de chaque ligne. Il utilise lui aussi des produits de matrices et de vecteurs, mais, plutôt que d’exhiber une famille de vecteurs orthogonaux, il s’attache à reconstruire un polynôme minimal. 2.1.4 Algèbre sur corps de nombres Comme son nom l’indique, le crible de corps de nombres présenté plus loin s’appuie sur la structure particulière des corps de nombres qui permettent de donner deux représentations différentes d’un même corps fini. L’objectif de ce paragraphe est de définir clairement la notion de corps de nombres ainsi que tous les outils algébriques qui s’y rapportent et que nous utiliserons par la suite. Seules les définitions utiles au crible sont reprises dans ce paragraphe. De même, nous ne donnons de démonstrations que lorsqu’elles éclairent la compréhension d’un énoncé ; autrement, le lecteur curieux est invité à trouver de plus amples détails dans le très complet [Coh93]. Nombre algébrique et corps de nombres La notion de corps de nombres appartient au vaste champ des mathématiques qu’est la théorie des nombres. L’une des manière de construire ces corps repose sur les nombres algébriques ; nous commençons donc par cette première définition : Définition 2.1.5. Un nombre complexe α ∈ C est un nombre algébrique s’il existe A ∈ Z[X] un polynôme non nul tel que A(α) = 0. On dit de plus que α est un entier algébrique si A peut être choisi unitaire. Nous noterons Q̄ l’ensemble des nombre algébriques, ZQ̄ l’ensemble des entiers algébriques, et ZL l’ensemble des entiers de L ⊂ C, c’est-à-dire ZL = ZQ̄ ∩ L. Une première propriété sur les nombres algébriques est la suivante. Proposition 2.1.6. Soit α un nombre algébrique et soit A un polynôme à coefficients entiers tel que A(α) = 0 d’une part, et A soit de degré minimal et primitif d’autre part, avec un coefficient strictement positif devant son monôme de plus haut degré. Alors A est unique, irréductible sur Q[X], et pour tout B ∈ Z[X] tel que B(α) = 0, B est un multiple de A. A est appelé le polynôme minimal de α. Par abus de langage, le degré de l’élément α désignera le degré de son polynôme minimal. De plus, la notion de polynôme minimal nous permet de définir celle de conjugaison. Définition 2.1.7. Soient α un nombre algébrique et A son polynôme minimal. Les conjugués de α sont toutes les racines de A dans C. Ils sont au nombre de deg A. Il est important de souligner que les conjugués sont, d’un point de vue algébrique, tout à fait indifférenciables les uns des autres. Ainsi, n’importe quelle identité algébrique entre des nombres algébriques nous donne une collection simultanée √ √ √ d’identités √ conjuguées. Par exemple, l’identité (1 + 2)2 = 3 + 2 2 entraîne aussitôt (1 − 2)2 = 3 − 2 2. Venons-en maintenant à l’objet central de cette partie. Définition 2.1.8. Un corps de nombres K est une extension finie du corps Q. En tant que Q- espace vectoriel, sa dimension est finie. On la note [K : Q] et on l’appelle le degré du corps de nombres K. Par chance, les corps de nombres admettent une représentation très simple, qui nous permet dans la suite de manier cet outils avec plus de facilité que ce que la définition ne laisserait penser. Le théorème suivant est fondamental : Théorème 2.1.9 (Représentation des corps de nombres). Soit K un corps de nombres de degré n. Alors : 1. Il existe θ ∈ K tel que K = Q[θ]. Un tel θ est appelé un élément primitif. Son polynôme minimal est un polynôme irréductible de degré n. 2. Il existe exactement n plongements de corps de K dans C, donnés chacun par θ → θi , où θi est un des conjugués de θ. Ces plongements sont Q-linéaires et leurs images Ki dans C sont appelés les corps conjugués de K, chaque Ki étant isomorphe à K. 3. Pour tout i, les éléments de Ki sont des nombres algébriques de degré divisant n. 18 L’indifférenciabilité des conjugués d’un élément est mis en valeur par ce théorème. En bref, le choix d’un Ki en tant que représentant d’un corps de nombres est arbitraire. Définition 2.1.10. La signature d’un corps de nombres est la paire (r1 , r2 ) d’entiers où r1 désigne le nombre de plongements de K dont l’image est sur le corps des réels, et où 2 r2 reprend le nombre de plongements complexes non réels, c’est-à-dire que r1 + 2 r2 = n.2 Si f est un polynôme irréductible qui défini le corps de nombres K par une de ces racines, la signature de K sera aussi appelée la signature de f . r1 est alors le nombre de racines réelles de f dans C tandis que 2 r2 désigne le nombre de racines complexes non réelles. Lorsque r2 = 0 (respectivement lorsque r1 = 0), on dit que K et f sont totalement réels (respectivement totalement complexes). L’algorithme de Sturm permet de calculer cette signature, en s’aidant des racines de f . De ces notions découle une dernière définition incontournable, bien que non utilisée de manière explicite dans la suite de notre mémoire : Définition 2.1.11. Soit K un corps de nombres de degré n. K est dit Galoisien sur Q (ou simplement Galoisien) si K est globalement invariant par les n plongements de K dans C. L’ensemble de ces plongements est un groupe, appelé le groupe de Galois de K, que l’on note Gal(K/Q). Représentation d’un élément dans un corps de nombres Nous nous intéressons ici à la représentation un nombre algébrique. Il y a essentiellement 4 manières de procéder qui dépendent chacune de la façon dont est présenté le nombre en question. La première manière consiste à donner α ∈ Q̄ via son polynôme minimal – qui existe, et qui est unique, d’après la proposition 2.1.6. Les trois autres supposent que α est lui-même un polynôme à coefficients rationnels d’une certaine variable θ, θ étant un nombre algébrique préalablement fixé. Parmi celles-ci, nous choisirons la représentation dite standard d’un élément, puisque nous seront toujours placés dans la configuration d’un corps de nombres fixé, et qu’il s’agit de la plus intuitive des trois méthodes. Les deux autres s’appuient respectivement sur une représentation matricielle, pratique pour les multiplications d’éléments, et sur une approximation numérique des conjugués de l’élément que l’on souhaite représenter. Représentation standard. Soient K un corps de nombres et (θi )i=1,··· ,n une Q-base de K. Soit α un élément de K. Alors on peut écrire α de manière unique comme : 1 α= d n−1 X ! ai θi+1 i=0 avec d > 0, a0 , · · · , an−1 des entiers et pgdc(a0 , · · · , an−1 , d) = 1. Dans le cas où la base est telle que θi = θi−1 pour θ une racine d’un certain polynôme irréductible unitaire T (X) ∈ Z[X], le (n + 1)-uplet (a0 , · · · , an−1 ) ∈ Zn+1 s’appelle la représentation standard de α dans K. Un des algorithmes présentés dans [Coh93, 4.5 The Subfield Problem and Applications] permet d’obtenir un tel θ, si le corps de nombres n’est pas déjà introduit de cette manière. Norme et borne sur les normes Comme expliqué au paragraphe 1.2, le calcul d’indice sélectionne dans les ensembles intermédiaires E1 et E2 – ici, il s’agira de corps de nombres – des éléments appartenant à un petit 2 Notons que les plongements complexes viennent toujours par paire : en effet, si σ est un tel plongement, σ̄ l’est aussi. La barre désigne ici l’opérateur de conjugaison complexe naturelle. ensemble appelé la base de lissité. L’idée principale consiste à trouver une manière de mesurer les éléments des corps de nombres et de ne conserver dans la base que les éléments de mesure inférieure à un certain réel. De fait, il nous faut alors expliciter la notion de norme sur un corps de nombres. Nous profitons de l’occasion pour donner une définition de la trace d’un élément du corps de nombres et de son polynôme caractéristique, ces notions étant fortement liées les unes aux autres. Lorsque α est un nombre algébrique, la trace (respectivement la norme) de α est défini comme P i étant la somme (respectivement le produit) de tous ces conjugués. Ainsi, si A(X) = m i=0 ai X désigne le polynôme minimal de α, sa trace Tr et sa norme N sont définies par : am−1 a0 Tr(α) = − et N (α) = (−1)m . am am Nous souhaitons obtenir une définition similaire lorsque α est considéré comme un élément d’un corps de nombres K et non pas comme un nombre algébrique. Si, par chance, K = Q(α), la définition ci-dessus tient toujours ; en revanche, si Q(α) ( K, il faut modifier la définition pour que la trace (re)devienne additive et la norme multiplicative. Définition 2.1.12. Soit K un corps de nombres de degré n. Notons σi les n plongements distincts de K dans C. Pour α ∈ K, nous définissons les quantités suivantes : 1. Le polynôme caractéristique Cα de α est : n Y Cα (X) = (X − σi (α)). i=1 2. Si nous écrivons par ailleurs ce polynôme sous la forme : Cα (X) = n X (−1)n−i sn−i (α)X i i=0 alors sk (α) est un nombre rationnel que nous appelons la k-ième fonction symétrique de α dans K. 3. En particulier, s1 (α) est appelée la trace de α. On la note TrK/Q (α). 4. De même, sn (α) est appelée la norme de α dans K. On la note NK/Q (α). Nous veillerons à bien distinguer la norme de α intrinsèque, que nous avons précédemment notée N , de la norme de α dans K, notée NK/Q (α).3 Bien que liées, elles ne sont pourtant pas confondues. Plus précisément, nous avons la proposition suivante : Proposition 2.1.13. Soient K un corps de nombres de degré n, σi les n plongements distincts de K dans C et α ∈ K de degré m (donc m divise n, par le théorème 2.1.9). Alors : 1. Dans un corps de nombres, la trace est additive et la norme est multiplicative. Autrement dit, TrK/Q (α + β) = TrK/Q (α) + TrK/Q (α) et NK/Q (α · β) = NK/Q (α) · NK/Q (β) pour tout β ∈ K. 2. On a les relations suivantes : TrK/Q (α) = et NK/Q (α) = n X i=1 n Y i=1 3 Il en va bien entendu de même pour les traces. 20 σi (α) = n Tr(α) m σi (α) = (N (α))n/m . Nous avons besoin d’effectuer le calcul explicite des normes qui apparaitront. Pour cela, nous nous servons de la proposition suivante, qui permet de calculer le polynôme caractéristique d’un élément du corps de nombres : Proposition 2.1.14. Soit K = Q[θ] un corps de nombres avec θ une racine du polynôme irréductible unitaire T (X) ∈ Z[X] de degré n. Soit par ailleurs α ∈ K un élément du corps de nombres dont la représentation standard est : 1 α= d Posons enfin A(X) = formule suivante : Pn−1 i=0 n−1 X ! ai θ i . i=0 ai X i . Alors le polynôme caractéristique Cα de α est donné par la 1 ResY (T (Y ), d · X − A(Y )) dn où ResY représente le résultant des deux polynômes par rapport à la variable Y . Cα = Cette proposition nous permet de calculer effectivement le polynôme caractéristique d’un élément du corps de nombres, donc les fonctions symétriques qui lui sont associées. En particulier, nous avons : Corollaire 2.1.15. Soient K un corps de nombres et α un élément de K comme dans la proposition 2.1.14. Alors la norme de α dans K est donnée par : NK/Q (α) = 1 Res(T (X), d · A(X)) dn i De nouveau, si α = n−1 i=0 ai θ , alors NK/Q (α) = Res(T (X), A(X)). Rappelons que le résultant Res(f (X), h(X)) de deux polynômes peut s’exprimer comme le déterminant de la matrice de Sylvester M (f, h). Notons D = deg f + deg h et mj,k le coefficient à la j-ième ligne et à la k-ième cologne de M (f, h). Nous avons la formule bien connue : P det M (f, h) = X σj ∈SD sign(σj ) D Y mk,σj (k) . (2.3) k=1 Ainsi, en notant Θ le nombre de permutations de SD qui amènent une contribution non nulle dans le produit de l’équation (2.3), kf k une borne sur les coefficients de f et khk une borne sur les coefficients de h, nous obtenons la borne : | det M (f, h)| 6 Θkf kdeg h khkdeg f . (2.4) En considérant à la fois le corollaire 2.1.15 et la majoration 2.4, nous concluons sur l’inéquation ci-dessous : Corollaire 2.1.16 (Borne sur la norme d’un élément d’un corps de nombres). Soient K = Q[θ] un corps de nombres avec θ une racine du polynôme irréductible unitaire T (X) ∈ Z[X] de degré n. Soit par ailleurs α ∈ K un élément du corps de nombres dont la représentation est P Pn−1 i i α = n−1 i=0 ai θ et posons A(X) = i=0 ai X . Alors la valeur absolue de la norme de α dans K est majorée par : |NK/Q (α)| 6 ΘkT kdeg A kAkdeg T où Θ désigne le nombre de permutations de Sdeg f +deg h qui amènent une contribution non nulle dans le produit de l’équation (2.3). C’est cette majoration sur la norme d’un élément que nous retrouverons plusieurs fois dans la suite de ce mémoire. Idéaux sur les corps de nombres Une remarque toute simple sur les corps de nombres nous indique que les bons objets à considérer pour construire notre base de lissité ne peuvent être simplement les éléments du corps√de nombres eux-mêmes. En effet, plaçons-nous temporairement sur le corps quadratique Q[ −5]. Nous remarquons que nous avons : √ √ 6 = 2 · 3 = (1 + −5) · (1 − −5). √ La décomposition de 6 en éléments irréductibles n’est pas unique sur Q[ −5]. En revanche, si l’on passe aux idéaux, c’est-à-dire si l’on considère l’idéal engendré par 6, on obtient : √ √ √ (6) = (2, 1 + −5)2 · (3, 1 + −5) · (3, 1 − −5). Cette décomposition en produit d’idéaux est unique. Plus précisément, nous avons la proposition suivante : Proposition 2.1.17. L’anneau des entiers d’un corps de nombres est un anneau de Dedekind. Une propriété essentielle des anneaux de Dedekind réside dans le fait que tout idéal non nul se décompose de manière unique en produit d’idéaux premiers. Ce résultat est un substitut au théorème fondamental de l’arithmétique, qui ne s’applique que dans un anneau factoriel. Théorème 2.1.18 (Anneau de Dedekind). Soit A un anneau commutatif unitaire, les propriétés suivantes sont équivalentes : • A est un anneau de Dedekind. • Tout idéal premier non nul de A est inversible. • Tout idéal non nul de A est inversible. • A est intègre et tout idéal non nul de A est produit d’idéaux maximaux. • A est intègre et tout idéal de A est produit d’idéaux premiers. De plus, si A est un anneau de Dedekind, la décomposition de tout idéal non nul en produit d’idéaux premiers est unique à l’ordre près des facteurs. Le fait que l’anneau des entiers d’un corps de nombres K soit un anneau de Dedekind nous permet de contourner l’obstruction précédente, c’est-à-dire l’absence d’unicité de la décomposition des éléments de K. Ceci justifie notamment que nous considérions, dans le crible de corps de nombres, des idéaux de l’anneau des entiers - et non pas des éléments de K. Cette idée demande néanmoins l’établissement de notions supplémentaires que nous détaillons maintenant. Nous donnons tout d’abord le théorème de décomposition sur les nombres premiers et les définitions qui lui sont liées. Proposition 2.1.19. Si p est un idéal premier de K, alors il existe un nombre premier p tel que p ∩ Z = pZ. De plus, si p est un idéal premier de K, et p un nombre premier, alors les conditions suivantes sont équivalentes : • p ⊃ pZ • p ∩ Z = pZ • p ∩ Q = pZ 22 Définition 2.1.20. Si l’un de ces conditions est satisfaite, on dit que p est un idéal au-dessus du nombre p ou, similairement, que p est l’entier sous l’idéal p. Proposition 2.1.21. Soit K un corps de nombres. Pour tout nombre premier p nous avons pZK ∩ Z = pZ. Théorème 2.1.22 (Théorème de décomposition pour des nombres premiers). Soient K un corps de nombres et p un nombre premier. Alors il existe des entiers positifs ei tels que : pZK = g Y pei i i=1 où les pi sont tous les idéaux premiers au-dessus de p. La notion suivante sera aussi utile au paragraphe 2.3 : Définition 2.1.23. L’entier ei du théorème ci-dessus est appelé l’indice de ramification de p en pi . On dit que p est ramifié sur le corps de nombres K s’il existe un indice de ramification au moins égal à 2 ; en d’autres termes, si la factorisation de pZK admet au moins un facteur carré. Le degré fi de l’extension de corps défini par fi = [ZK /pi : Z/pZ] est appelé le degré résiduel de p, ou plus simplement le degré de p. Idéaux principaux et groupe de classe √ Comme le montre l’exemple du corps de nombres Q[ −5], la décomposition des idéaux en produits d’idéaux premiers n’entraîne pas nécessairement que ces idéaux premiers soient aussi principaux. Ceci constitue la deuxième obstruction à notre crible : rien ne dit comme descendre dans Fpn un idéal premier à plusieurs générateurs. En revanche, les idéaux principaux n’étant engendrés, par définition, que par un seul élément, le soucis du choix d’un générateur est alors écarté. Pour se ramener à des idéaux principaux, nous introduisons les définitions d’ordre et d’idéaux fractionnaires, formalisés en 1876 par Dedekind. Définition 2.1.24. Un idéal fractionnaire I d’un ordre R est un sous-module de K non réduit à zéro tel qu’il existe un entier d non nul pour lequel dI soit un idéal de R. Moralement, cela correspond à un idéal sur un anneau intègre où les dénominateurs sont autorisés. Par ailleurs, rappelons au besoin qu’un ordre R sur K est un sous-anneau de K qui est finiment engendré en tant que Z-module, et de rang maximal égal au degré du corps de nombres. Enfin, comme pour un élément d’un corps de nombres, nous pouvons définir la norme d’un idéal : Proposition 2.1.25. Si I est un idéal de R non réduit à zéro, alors il est de rang maximal. R/I étant un anneau fini, on peut noter sa cardinalité N (I). On l’appelle la norme de l’idéal. Une proposition intéressante nous permet de faire le lien entre la norme d’un élément dans un corps de nombres et la norme de l’idéal qu’il engendre. Proposition 2.1.26. Soit α un élément non nul de K un corps de nombres. Alors N (xZK ) = |NK/Q (x)|. C’est cette dernière proposition qui nous permettra de mettre directement en application la formule du corollaire 2.1.16, qui, rappelons-le, porte sur la valeur absolue de la norme d’un élément du corps de nombres. Enfin, pour nous ramener à des idéaux principaux, nous faisons de nouveau appel à une notion introduite par Dedekind. Les idéaux fractionnaires confèrent à l’ensemble des idéaux une structure de groupe abélien dont un sous-groupe est composé des idéaux fractionnaires principaux et permet d’exprimer le théorème fondamental sur la structure des idéaux premiers non principaux. Le groupe quotient des idéaux fractionnaires par les idéaux fractionnaires principaux est fini dans le cas d’une fermeture intégrale d’un corps de nombres algébriques. Ce groupe quotient est appelé groupe des classes d’idéaux. Dedekind démontre ce résultat dans toute sa généralité à la fin du XIXème siècle. Plus précisément, nous avons la définition suivante. Définition 2.1.27. Soit K un corps de nombres. Deux idéaux (fractionnaires) I et J de K sont dits équivalents s’il existe α ∈ K ∗ tel que J = αI. L’ensemble des classes d’équivalences pour cette relation est appelé le groupe de classe de K. Il est noté Cl(K). Le groupe de classe d’un corps de nombres joue un rôle bien particulier lorsqu’il s’agit de se ramener à des idéaux principaux. C’est plus précisément le cardinal de ce groupe qui nous intéresse. Proposition 2.1.28. Pour tout corps de nombres K, le groupe de classe Cl(K) est un groupe abélien fini. Son cardinal est appelé le nombre de classe de K, et est noté h(K). Si l’on note I(K) l’ensemble des idéaux fractionnaires et P (K) l’ensemble des idéaux principaux, alors nous avons la suite exacte : 1 → P (K) → I(K) → Cl(K) → 1. En notant a, b, c et d dans l’ordre les morphismes implicites de la suite exacte, ceci implique que P (K) = Im(b) = Ker(c) et Im(c) = Ker(d) = C(K). Ce qui se traduit, par théorème d’isomorphisme sur c : I(K)/P (K) ≈ Cl(K) Nous en déduisons le résultat : Théorème 2.1.29 (Elévation à la puissance le nombre de classe). Soit I un idéal (fractionnaire) sur un corps de nombres K. Alors Ih(X) est un idéal principal, pour h(X) désignant le nombre de classe de K. 2.2 Le crible pas à pas Le crible sur corps de nombres (NFS) proposé par A. Joux, R. Lercier, N. Smart et F. Vercauteren en 2006 [JLSV06] est un algorithme de calcul de logarithmes discrets pour les corps finis dont le rapport entre les tailles du corps et de la caractéristique satisfont p = LQ (lp , cp ) avec lp variant de 1/3 à 1. Il s’agit donc de corps finis dont la caractéristique est un entier premier que l’on qualifie de moyen à grand - par opposition aux algorithmes de calcul de logarithmes discrets sur des corps finis de petite caractéristique. NFS appartient à les famille des algorithmes de calcul d’indice et peut se comprendre ainsi en détaillant phase après phase sa structure. Par soucis de clarté, nous examinons d’abord en détails l’algorithme dans le cas où la caractéristique peut s’écrire p = LQ (lp , cp ) avec 1/3 < lp < 2/3. Les cas limites ou de grande caractéristique ne sont abordés que succinctement : nous ne soulèverons que les changements nécessaires. 24 Z [X] Q [X] /(f1 (X)) Q [X] /(f2 (X)) X ← θ1 X ← θ2 Fp n Figure 2.1: Diagramme commutatif de l’algorithme présenté dans [JLSV06] 2.2.1 Le cas p = LQ (lp , cp ) où 1/3 < lp < 2/3 Exposons la variante du crible sur corps de nombres proposé dans [JLSV06] qui s’applique pour le cas p = LQ (lp , cp ) avec 1/3 < lp < 2/3. En tant que variante d’un crible par calcul d’indice, elle reprend les trois phases classiques de crible, d’algèbre linéaire et de calcul de logarithmes discrets individuels présentés au paragraphe 1.2 Mise en place préliminaire Paramètres généraux Pour calculer des logarithmes discrets dans un corps fini Fpn , vu comme extension de degré n du corps de base Fp , nous choisissons tout d’abord deux polynômes f1 et f2 dans Z [X] avec une racine commune dans Fpn . En d’autres termes, nous sélectionnons f1 et f2 tels que leur plus grand diviseur commun possède un facteur irréductible de degré n dans Fp . Par conséquent, nous pouvons établir le diagramme commutatif dessiné en figure 2.1. Q [θ1 ] et Q [θ2 ] désignent par la suite respectivement Q [X] /(f1 (X)) et Q [X] /(f2 (X)), les deux corps de nombres définis par f1 et f2 , i.e. θ1 et θ2 sont racines de ces polynômes dans C. Choix des polynômes. Dans [JLSV06], f1 est choisi comme polynôme de degré n, à petits coefficients, et irréductible sur Fp , tandis que f2 est défini comme étant le polynôme f1 + p. Si l’on souhaite équilibrer la taille des normes calculées au cours de l’algorithme, une autre approche est possible. Cette variante s’appuie sur l’utilisation des fractions continues et implique une modification de la sélection des deux polynômes jusqu’à ce que les coefficients de chacun soient de même taille. Par exemple, un choix possible consiste à prendre f1 de telle sorte qu’au √ moins un de ces coefficients, appelons le c, soit de l’ordre de p. Plus précisément, nous prenons f1 = g + c · h où g et h sont des polynômes à petits coefficients. Puisque nous pouvons écrire √ c ≡ a/b (mod p) avec a et b de l’ordre de p également, nous pouvons définir f2 ≡ bf1 (mod p). √ Les coefficients de f2 sont en O( p) plutôt qu’en O(p) comme c’est le cas dans le premier choix évoqué ci-dessus. L’idée clef de notre variante du SNFS présentée plus loin réside de la même manière en la réduction de la taille des coefficients qui apparaissent dans l’écriture de f1 et f2 . Crible Dorénavant, nous notons t − 1 le degré des polynômes sur lesquels nous allons appliquer notre crible.4 Deux bornes sont aussi nécessaires à la mise en place de notre algorithme : A représente alors la borne sur la taille des coefficients des polynômes sur lesquels s’effectue le crible, aussi appelée limite de crible, tandis que B désigne la borne de lissité. Nous considérons tous les 4 Bien qu’étrange de prime abord, cette notation est en réalité confortable dans la suite de nos calculs, puisqu’elle implique un espace de crible de dimension t. t-uplets de la forme (a0 , · · · , at−1 ) tels que les normes de (a0 + · · · + at−1 θ1t−1 ) et (a0 + · · · + at−1 θ2t−1 ) soient toutes deux B-lisses. A la suite d’un procédé délicat décrit dans la partie 2.3, chaque t-uplet ainsi sélectionné entraîne une équation linéaire entre les “logarithmes des idéaux” provenant de chacun des deux corps de nombres et appartenant à la base de lissité. Algèbre linéaire Une fois la phase de crible terminée, nous résolvons le système5 d’équations linéaires modulo pn − 1, la cardinalité de F∗pn , pour retrouver les logarithmes des idéaux de la base de lissité. Plus précisément, cette phase d’algèbre linéaire est effectuée modulo un grand facteur de la cardinalité, tandis que les petits facteurs premiers sont traités séparément, à l’aide d’une combinaison des algorithmes ρ de Pollard et de Pohlig-Hellman. Logarithme discret individuel Lorsque les deux phases de crible et d’algèbre linéaire sont achevées, nous avons maintenant connaissance des logarithmes de tous les idéaux de la base de lissité. Il reste donc à expliquer comment retrouver le logarithme discret d’un élément arbitraire du corps fini - c’est phase est appelée la phase du logarithme discret individuel. L’approche proposée dans [JLSV06] s’appuie sur une technique de descente en “special-q”. Pour résumer, voici comment elle fonctionne. Si l’on souhaite retrouver le logarithme discret d’un élément arbitraire y de Fpn , représenté comme Fp [X] /(f1 (X)), nous cherchons tout d’abord une relation multiplicative de la forme z = y i X j pour certains i, j ∈ N. Nous souhaitons que z satisfasse deux propriétés : si B 0 = LQ (2/3, 1/31/3 ) et z̄ représente z relevé dans le corps de nombres Q [θ1 ], la norme de z̄ doit être à la fois B-lisse et sans facteur carré. Cette seconde contrainte implique que seuls des idéaux premiers de degré un apparaîtrons dans la factorisation de (z̄). Nous avons besoin d’imposer ceci à (z̄) car seul les logarithmes de ces idéaux sont calculés dans les phases précédentes. Ayant trouvé un tel z, nous factorisons l’idéal principal généré par z̄ en idéaux premiers de degré un et de petites normes. Certains d’entre eux ne sont pas dans la base de lissité - ceux dont la norme est bien plus petite que B 0 mais supérieure à B. Pour calculer le logarithme d’un idéal q comme celui-ci, nous commençons une descente en ‘special-q”, c’est-à-dire que nous diminuons progressivement la borne B 0 jusqu’à atteindre B. Finalement, nous remontons jusqu’à retrouver le logarithme de z̄ et, par conséquent, le logarithme de y. 2.2.2 Le cas p = LQ (lp , cp ) où 2/3 6 lp 6 1 Dans ce cas, les phases de mise en place préliminaire et de crible sont modifiées. Tout d’abord, le choix des polynômes proposé précédemment n’est plus adéquat : dans le cas de grande caractéristique dans lequel nous nous situons, la taille des coefficients de f2 est maintenant trop grande. Dans [JLSV06] une alternative plus complexe consiste en la sélection du second polynôme par réduction de réseau. Ceci permet de réduire la taille des coefficients de f2 , au prix d’une élévation de son degré. Nous ne détaillons pas cette possibilité car cela ne concerne pas notre nouvel algorithme présenté en partie 3. Par ailleurs, nous remarquons que nous pouvons récolter suffisamment de relations à l’aide d’un espace de crible plus petit : poser t = 2 est ainsi suffisant. Les phases d’algèbre linéaire et de recherche de logarithme discret individuel restent quant à elles inchangées. 5 Le nombre d’inconnues intervenant dans chacune des équations est sensiblement petit devant le nombre total d’inconnues - les “logarithmes” des idéaux de la base de lissité. Le système résultant de la phase de crible est donc creux. 26 2.3 Mathématiques sous-jacentes Cette partie s’attache à rendre l’algorithme rigoureux en explicitant les mécanismes mathématiques qui agissent en arrière plan. Plaçons-nous dans le corps fini à Q = pn éléments. Etant donné h = g x ∈ F∗Q et l un grand diviseur premier de Q − 1, nous détaillons comment retrouver x modulo l. Nous allons être amenés à travailler dans plusieurs corps de nombres de la forme K = Q[θ] pour θ entier algébrique ayant pour polynôme minimal f (X) ∈ Z[X]. Dans le cas le plus simple où le crible s’effectue sur des polynômes de degré un, tous ces corps de nombres seront de degré n au-dessus de Q de sorte que p reste premier dans l’anneau des entiers OK de K, autrement dit OK /(p) ∼ = FQ . En général, nous utiliserons aussi des corps de nombres de degré m > n, tel qu’il existe un idéal premier I de degré n au-dessus de p, c’est-à-dire tel que OK /I ∼ = FQ . Pour construire un tel corps de nombres, il suffit que f (X) modulo p ait un facteur irréductible de degré n. Notons ϕI le morphisme d’anneaux surjectifs obtenu en quotientant l’anneau des entiers par cet idéal I. Pour tout élément x ∈ OK nous définissons ainsi x̄ = ϕI (x). Pour retrouver le logarithme de h modulo l, il faut détailler deux étapes : comment factoriser les idéaux dans l’anneau des entiers OK dans un premier temps, puis comment passer d’un idéal dans cet anneau à un élément dans le corps FQ . 2.3.1 Factorisation d’idéaux dans l’anneau des entiers OK Nous nous plaçons tout d’abord dans le cas du crible sur des polynômes de degré un, puis nous généralisons au cas du crible sur des polynômes de plus grand degré t − 1. L’idée clef consiste à utiliser le calcul de la norme du polynôme dans le corps de nombres pour factoriser l’idéal engendré par celui-ci. Pour le cas des grandes caractéristiques, nous cherchons des paires (a, b) d’entiers premiers entre-eux tels que l’idéal principal (a − bθ) se factorise en idéaux premiers de petites normes, c’est-à-dire de normes plus petites qu’une certaine borne B préalablement définie. Les idéaux premiers qu’il est possible d’obtenir dans la factorisation de l’idéal (a − bθ) sont donnés par le lemme suivant [Coh93, Lemme 10.5.1] : Lemme 2.3.1. Soient K = Q[θ] et (a, b) une paire d’entiers premiers entre-eux. Alors, pour tout idéal premier p qui divise (a − bθ), on a : • soit p est de degré un. • soit p le nombre premier en-dessous de p divise l’indice fθ = [OK : Z[θ]]. Ainsi, en notant F l’ensemble des idéaux premiers de degré un de normes inférieures à B et les idéaux premiers finiment engendrés qui divisent l’indice fθ , nous souhaitons décomposer l’idéal (a − bθ) en produits d’éléments de F. Chaque idéal premier de degré un peut être généré par (pi , θ−cpi ) avec pi un entier relatif premier inférieur à B, et cpi une racine de f (X) modulo pi . Par ailleurs, expliciter la décomposition de (a − bθ) en produits d’idéaux premiers est tout aussi simple. Nous calculons en premier lieu sa norme NK/Q (a−bθ) = bdeg (f ) f (a/b) puis testons Q si celle-ci est B-lisse. Si c’est le cas, nous notons NK/Q (a − bθ) = i pei i . Il s’agit maintenant de distinguer deux cas : • Pour les nombres premiers qui sont tels que pi - fθ , nous obtenons que l’idéal pi = (pi , θ − cpi ), où cpi est un nombre congru à a/b modulo pi , apparait exactement ei fois dans la décomposition de l’idéal (a − bθ). • Pour les nombres premiers pi | fθ , nous appliquons l’algorithme présenté dans [Coh93, Algorithme 4.8.17] pour retrouver la valuation p-adique de (a − bθ). A la fin de cette étape, nous avons ainsi trouvé plusieurs paires d’entiers premiers entre-eux (a, b) qui donnent une petite norme et dont l’idéal correspondant se décompose de la manière suivante : Y e (a − bθ) = pi i i Pour les caractéristiques médianes, le crible s’effectue sur des t-uplets d’entiers premiers P i entre-eux (a0 , · · · , at−1 ) tels que l’idéal principal engendré par t−1 i=0 ai θ se factorise en idéaux premiers de normes inférieures à B. Le lemme suivant généralise le lemme 2.3.1 : Lemme 2.3.2. Soient K = Q[θ] et (a0 , · · · , at−1 ) un t-uplet d’entiers premiers entre-eux. Alors, P i pour tout idéal premier p qui divise ( t−1 i=0 ai θ ), on a : • soit p est de degré inférieur ou égal à t − 1. • soit p le nombre premier en-dessous de p divise l’indice fθ = [OK : Z[θ]]. i De même, pour retrouver la décomposition de ( t−1 i=0 ai θ ), nous calculons sa norme. Nous Pt−1 P t−1 avons NK/Q ( i=0 ai θi ) = Res( i=0 ai X i , f (X)) où Res désigne le résultant des deux polynômes. De nouveau, deux cas se présentent : P • Pour les nombres premiers qui sont tels que pi - fθ , nous procédons de la manière suivante. P i Chaque facteur irréductible du plus grand commun diviseur de t−1 i=0 ai X et f(X) sur Fpi correspond à un idéal pi au-dessus de pi apparaissant dans la décomposition de l’idéal. De P i plus, si ce pgcd lui-même est irréductible, la valuation pi -adique de ( t−1 i=0 ai θ ) est simple6 ment m/deg pi . Si ce n’est pas le cas, nous utilisons encore une fois l’algorithme [Coh93, Algorithme 4.8.17] pour retrouver la valuation correspondante. • Pour les nombres premiers pi | fθ , nous appliquons directement l’algorithme de [Coh93, Algorithme 4.8.17] comme dans le cas des grandes caractéristiques. 2.3.2 Des idéaux aux éléments Nous montrons dans ce paragraphe comment transformer les relations que nous avons obtenues sur les idéaux en relations multiplicatives sur les éléments du corps finis. Après avoir envoyé ces relations sur F∗Q à l’aide de ϕI et avoir pris leurs logarithmes, nous en déduisons des équations linéaires entre les logarithmes d’éléments de F∗Q modulo le facteur premier l. Dans la suite, nous discutons selon deux cas : selon que le corps de nombres à pour nombre de classe 1 et un groupe des unités calculable, ou non. Nous commençons par le premier cas, que nous appelons le cas simple puis nous expliquons le cas général. Corps de nombres K de nombre de classe 1 et de groupe unitaire calculable Puisque le nombre de classe est égal à 1, chaque idéal J de OK est principal. Il existe donc Q γJ ∈ OK tel que J = (γJ ). La décomposition de l’idéal (a − bθ) = i pei i amène ainsi la relation sur les éléments de OK : Y e a − bθ = u γi i i avec γi = pi et u une unité de OK . Soit (r1 , r2 ) la signature de K, alors le groupe des unités ∗ ∼ µ(K)×Zr1 +r2 −1 , où µ(K) = hu i est un groupe cyclique d’ordre v. En supposant que l’on OK = 0 puisse définir un système d’unités fondamentales u1 , · · · , ur avec r = r1 + r2 − 1, nous pouvons 6 m est le degré du corps de nombres considéré. 28 écrire u = un0 0 un1 1 · · · unr r . Avec ces notations, nous obtenons r + 1 applications logarithmiques, c’est-à-dire r applications λi pour i = 1, · · · , r définies telles que : ∗ λ i : OK u → Z → ni et une application λ0 telle que : ∗ λ 0 : OK u → Z/vZ → n0 La décomposition finale qui en découle est : r Y n Y ei uj j γi . a − bθ = j=0 i En appliquant ϕI puis en prenant les logarithmes en base g de chaque côté, il vient : logg (a − bθ̄) = r X λj (u) logg (u¯j ) + X j=0 ei logg (γ̄i ) mod Q − 1. (2.5) i Corps de nombres général Nous supposons simplement ici que le facteur premier l que l’on considère ne divise pas le nombre de classe h de K - il ne s’agit là que d’une restriction mineure. Pour obtenir une relation entre les éléments il faut d’abord se ramener aux cas d’idéaux principaux. Nous élevons donc chaque Q côté de l’équation (a − bθ) = i pei i à la puissance h pour obtenir : (a − bθ)h = u Y e δi (2.6) i i où u est encore une unité et δi ∈ OK avec (δi ) = phi . Nous attirons l’attention du lecteur sur le fait que le membre de gauche désigne bien la puissance h-ième de l’élément a − bθ - et non pas la puissance de l’idéal. Par ailleurs, bien que nous ne calculions pas l’élément δi , nous avons besoin d’être assurés de son existence. A ce stade, il serait tentant d’appliquer ϕI de chaque côté de l’égalité, de prendre le logarithme en base g comme dans le cas simple, et de noter : h logg (a − bθ̄) ≡ logg (ū) X ei logg (δ¯i ) mod Q − 1. i Malheureusement, ceci ne mène à rien. Le soucis avec cette approche est qu’elle implique de créer, pour chaque équation, des u différents, de telle sorte que logg ū représente une nouvelle inconnue pour chaque équation et qu’il soit par conséquent impossible d’obtenir un système linéaire de rang maximal. Remarquons que dans le cas simple, nous pouvions exprimer u comme produit d’unités fondamentales, ce qui contournait efficacement ce problème. Schirokauer résout cette difficulté en introduisant ce que l’on appelle désormais les applications de Schirokauer (en anglais Schirokauer maps) et qui profite de la remarque suivante. Puisque nous souhaitons calculer les logarithmes discrets modulo l et non pas Q−1, nous n’avons ∗ , mais simplement modulo des pas besoin de travailler sur la totalité du groupe des unités OK ∗ /(O ∗ )l . En effet, pour chaque u ∈ (O ∗ )l , nous puissances l-ièmes de l’unité, c’est-à-dire sur OK K K avons logg ū = 0 modulo l. Ainsi, au lieu de définir des applications logarithmiques sur tout ∗ /(O ∗ )l : ce sont ces restrictions que l’on le groupe des unités, Schirokauer les restreint à OK K appelle les applications de Schirokauer. Pour simplifier notre propos, nous supposons que l n’est pas ramifié sur K. Considérons l’ensemble ΓK = {γ ∈ OK |NK/Q (γ) 6= 0 mod l}. Nous remarquons que les éléments a − bθ sont dans cet ensemble, puisqu’ils sont lisses et donc que l - NK/Q (a − bθ). Par ailleurs, ΓK est un ∗ . Soit maintenant = lD − 1 où D groupe multiplicatif qui contient le groupe des unités OK représente le plus petit commun multiple des facteurs irréductibles de f (X) modulo l. Alors pour tout γ ∈ ΓK , nous avons : γ ≡ 1 mod l. Nous définissons l’application suivante : λ : ΓK γ → lOK /l2 OK → (γ − 1) + l2 OK Puis nous fixons la base {lbi +l2 OK : i = 1, · · · , n} sur lOK /l2 OK avec {lbi +l2 OK : i = 1, · · · , r} ∗ ) et enfin nous définissons les dernières applications λ : Γ une base sur λ(OK i K → Z/lZ via l’équation : (γ − 1) ≡ l n X λi (γ)bi mod l2 i=1 λ(γ.γ 0 ) λ(γ) + λ(γ 0 ) Comme = et de la même manière λi (γ.γ 0 ) = λi (γ) + λi (γ 0 ), ces applications sont toutes logarithmiques sur ΓK . Nous en déduisons que les applications λi sont en réalités des homomorphismes de OK ∗ dans Z/lZ. Considérons maintenant l’homomorphisme : ∗ /(O ∗ )l → λ̄ : OK (Z/lZ)r K u → (λ1 (u), · · · , λr (u)) Un cas spécial du théorème de Schirokauer peut alors s’énoncer sous la forme suivante : ∗ est une puissance Lemme 2.3.3. Supposons que l’application λ̄ soit injective. Alors u ∈ OK l-ième si et seulement si λ̄(u) = 0. ∗ ne contient pas les racines primitives l-ième de l’unité, Si nous supposons par ailleurs que OK ∗ /(O ∗ )l possède lr éléments ; λ̄ définit donc un isomorphisme entre nous obtenons alors que OK K ∗ ∗ l r ∗ tels que λ (u ) = 1 OK /(OK ) et (Z/lZ) . Par conséquent, il existe des unités u1 , · · · , ur ∈ OK i i et λi (uj ) = 0 pour i 6= j. Nous précisons que ces unités ne sont pas uniques, puisqu’elles sont ∗ )l . Ainsi, chaque unité u ∈ O peut s’écrire seulement déterminées modulo (OK K r Y λ (u) u= ui i ξ l (2.7) i=1 avec ξ une autre unité. Reprenons l’équation (2.6) en modifiant les éléments δi comme suit : δi0 = δi r Y −λj (δi ) uj . j=1 C’est-à-dire en multipliant les δi par une unité bien définie, avec λj (δi ) = 0 pour j = 1, · · · , r. Les Q nouveaux δi0 génèrent toujours les idéaux phi . L’équation (2.6) devient alors (a−bθ)h = u0 i (δi0 )ei avec u0 une unité. Construire les δi0 en imposant qu’ils vérifient λj (δi ) = 0 pour j = 1, · · · , r nous permet d’avoir hλj (a − bθ) = λj (u0 ). Enfin, en réécrivant u0 comme dans l’équation (2.7), nous sommes amenés à l’égalité : l (a − bθ)h = ξa,b . r Y (ui )hλi (a−bθ) . i=1 30 (δk0 )ek Y k ∗ . Finalement, en appliquant ϕ comme précédemment, et en prenant le logapour ξa,b ∈ OK I rithme en base g, nous obtenons : logg (a − bθ̄) ≡ r X λi (a − bθ) logg (ūi ) + i=0 X ek h−1 logg (δ¯k0 ) mod l. k Une remarque pour conclure : les éléments h−1 logg (δ¯k0 ) et logg (ūi ) correspondent aux logarithmes virtuels des idéaux et des applications de Schirokauer introduits dans [JL03, Sch05] mais sont maintenant considérés comme les logarithmes de la réduction d’éléments particuliers ∗ . Ces valeurs sont notamment bien définies modulo l. de pi et OK 2.4 NFS étendu : le cas p = LQ (1/3, cp ) L’algorithme 2.2.1 ne traite pas du cas limite où p = LQ (1/3, cp ). Nous verrons pourtant qu’il s’agit, en pratique, d’une configuration centrale lorsque l’on se place dans le cadre de la cryptographie basée sur les couplages. Ceci justifie que nous nous attardions sur ce cas. Nous présentons dans ce paragraphe l’extension du NFS du cas médian p = LQ (lp , cp ) avec 1/3 < lp < 2/3 jusqu’à ce cas particulier ; cette étude est issue de l’article [JP13]. Voici comment nous procédons. L’algorithme 2.2.1 en soit n’est aucunement modifié, c’est-à-dire que nous criblons de nouveau sur des polynômes de degré t − 1 et suivons les trois phases décrites précédemment. En revanche, l’analyse présentée dans [JLSV06] ne peut plus être appliquée directement. Ceci provient du fait que la taille de n augmente à mesure que diminue la constante lp : dans le cas où p = LQ (1/3, cp ), le calcul des normes entraîne un terme en nt tn qui était négligeable dans l’analyse classique, mais ne l’est plus en raison de la taille des paramètres. Nous raffinons la borne sur les normes pour permettre d’étendre le NFS à ce cas limite. Analyse asymptotique du NFS étendu Dans ce paragraphe, nous soulignons uniquement les étapes qui diffèrent de l’analyse classique – une étude plus approfondie des mécanismes mis en jeu sera menée en partie 3 sur des complexités asymptotiques similaires. Rappelons que les différents paramètres de l’algorithme qui interviennent dans l’analyse sont le degré d’extension n, le degré t − 1 des polynômes sur lequel agit le crible, la borne sur les coefficients de ces polynômes A ainsi que la borne de lissité B. Nous supposons par ailleurs que l’on puisse écrire : 1 n= cp log Q log log Q 2/3 , ct t= cp log Q log log Q 1/3 , At = LQ (1/3, ca ct ), B = LQ (1/3, cb ) où ca , cb et ct sont des constantes à déterminer par la suite. Le cas limite diverge du cas médian p = LQ (lp , cp ) avec 1/3 < lp < 2/3 dès le calcul des normes sur les corps de nombres impliqués. Plus précisément, pour chaque polynôme sur lequel le crible opère, chacune des normes dans leur corps de nombres respectif peut être bornée par nt tn An et nt tn An pt respectivement du côté de Q [θ1 ] et du côté de Q [θ2 ]. Lorsque lp > 1/3, le terme en nt tn est négligeable par rapport à An et pt , il disparaît donc dans l’analyse de complexité. En revanche, due à la taille de t et n dans le cas où lp vaut 1/3, le terme en tn n’est plus négligeable. Ceci introduit un terme supplémentaire dans le produit des deux normes et mène a une complexité en LQ (1/3) avec une seconde constante strictement plus grande que (128/9)1/3 . Nous améliorons donc cette borne sur chacune des normes pour restaurer la complexité en LQ (1/3, (128/9)1/3 ), qui, pour rappel, est la complexité obtenue par le NFS détaillé plus haut dans le cas médian où p = LQ (lp , cp ) avec 1/3 < lp < 2/3. Grâce à la majoration du corollaire 2.1.16, nous remarquons que les deux normes sont bornées de la façon suivante. Du côté de Q [θ1 ], la norme issue de h le polynôme de degré t sur lequel s’effectue le crible est bornée par ΘAn car f1 est de degré n et à coefficients de taille négligeable par rapport à A, et h a ses coefficients bornés par A. Pour rappel, Θ désigne le nombre de permutations de Sn+t qui apportent une contribution non nulle dans le calcul du déterminant (2.3). De même, du côté du corps de nombres Q [θ2 ], la norme est bornée par ΘAn pt – puisque le plus grand coefficient de f2 quant à lui est p. Kalkbrener fournit une majoration intéressante de Θ dans le second théorème de [Kal97]. En substituant nos notations à celles de n+t n+t−1 son article, cette majoration devient Θ 6 n · . Enfin, grâce aux inégalités suivantes : t n+t n · n+t−1 t n (n + t)! 2 n + t n!t! n (n + 1) · · · (n + t) 2 n+t t! ! 2 t Y n (n + i) n + t i=1 i = ≤ ≤ t n n Y +1 n + t i=1 i ≤ 2 nous obtenons que Θ 6 (n + 1)2t . Par conséquent, les deux normes sont maintenant bornées respectivement par (n + 1)2t An et (n + 1)2t An pt . En raison de la taille de n et t dans ce cas précis, nous trouvons que le terme (n+1)2t est de l’ordre de LQ (1/3, 4ct /3cp ). Ansi, ce terme est négligeable (quand Q tend vers l’infini) en comparaison avec la contribution en LQ (2/3) apportée par An et pt . De ce fait, nous retrouvons les deux bornes usuelles An et An pt qui apparaissent dans l’analyse du NFS dans le cas médian – cf [JLSV06]. Ceci permet de continuer avec un raisonnement et des calculs identiques, et donc d’aboutir sur une complexité asymptotique pour le cas où lp = 1/3 qui est elle aussi : LQ (1/3, (128/9)1/3 ). Un cas frontière Une fois le NFS étendu, la configuration p = LQ (1/3, cp ) reste pourtant un cas délicat puisqu’il est aussi couvert par un autre algorithme de calcul de logarithmes discrets dans les corps finis : le crible sur corps de fonctions (FFS) présenté la même année que NFS par A. Joux et R. Lercier dans l’article [JL06]. Notons que le sigle FFS provient de l’anglais Function Field Sieve. Brièvement, il s’agit, comme son nom le laisse deviner, d’un crible par calcul d’indice proche du NFS, bien que la recherche de relations s’exécute via des corps de fonctions plutôt que par des corps de nombres. Le domaine d’application de FFS complète celui de NFS : il s’étend de p = LQ (lp , cp ) avec lp variant de 0 à 1/3 inclus, tandis que la complexité asymptotique finale de FFS est elle aussi en LQ (1/3). Bien que l’objet de ce mémoire ne soit pas de développer l’étude de FFS dans ce cas frontière, les protocoles de cryptographie basés sur le couplage demandent malgré tout de savoir quel algorithme donne la meilleure complexité asymptotique en fonction de la constante cp . La figure 2.2 répond à cette nécessité en illustrant comment les complexités varient avec cette constante. Un rapide calcul nous permet de voir que l’égalité entre les deux 32 Figure 2.2: Complexités asymptotiques relatives au cas limite p = LQ (1/3, cp ). La courbe représente la seconde constante c de la complexité LQ (1/3, c) en fonction de cp . D correspond à un paramètre auxiliaire dans FFS qui régit à la fois les degrés des deux polynômes définissant les deux corps de fonctions et le degré des polynômes bivariés sur lesquels s’effectue le crible. Plus D est grand, plus le degré des polynômes du crible augmente. Lorsque D = 1, il s’agit de cribler sur des polynômes de la forme (ax + b)y + (cx + d). approches par FFS d’une part et par NFS d’autre part se produit lorsque cp = κ avec κ = (16/9)1/3 . La courbe indique ainsi quel algorithme choisir dans ce cas particulier : FFS lorsque cp est inférieure à κ, NFS autrement. Cette figure reprend la juxtaposition de deux analyses : celle de NFS étendu détaillée précédemment, ainsi que celle relative au crible FFS que l’on peut trouver dans [JL06]. 2.5 Complexités asymptotiques Puisque nous présentons une étude similaire pour notre nouveau crible, nous ne détaillerons pas ici l’analyse de complexité pour chacun des cas du NFS général. Il sera pourtant utile par la suite de connaître les complexités obtenues par le NFS pour chaque cas. Celles-ci sont reprises dans le tableau suivant. Les complexités de la configuration p = LQ (2/3, cp ) n’étant pas évidentes à interpréter données dans leur forme rigoureuse, la figure 2.3 reprend quant à elle les complexités asymptotiques obtenues dans le cas limite. Elle donne une indication sur l’algorithme à choisir en fonction de la seconde constante cp , ainsi que sur le degré des polynômes de l’espace de crible, lorsqu’il s’agit du NFS dans sa version 2.2.1. Taille de p en fonction de Q Algorithme utilisé Complexité asymptotique p = LQ (1/3, cp ) NFS étendu LQ (1/3, (128/9)1/3 ) p = LQ (lp , cp ) avec 1/3 < lp < 2/3 NFS 2.2.1 LQ (1/3, (128/9)1/3 ) p = LQ (2/3, cp ) NFS 2.2.1 c= p = LQ (2/3, cp ) 2 3 c) avec LQ (1/3, q 2 cp t NFS 2.2.2 9c3 p = LQ (lp , cp ) avec 2/3 < lp NFS 2.2.2 34 + 4 c2p t2 + 3(t − 1)cp LQ (1/3, 2c) avec − c6p c2 + c12 c − 8 = 0 p LQ (1/3, (64/9)1/3 ) Figure 2.3: Seconde constante de la complexité asymptotique LQ (1/3, C(x)) vue comme fonction de x = cp dans le cas p = LQ (2/3, cp ). Le crible de corps de nombres présenté ci-dessus s’applique quelque soit le corps fini, pourvu que le rapport entre sa cardinalité pn et sa caractéristique p soit adéquate, c’est-à-dire que l’on puisse écrire p = LQ (lp , cp ) avec 1/3 6 lp 6 1. Il est naturel de se demander si la forme particulière de certains corps finis ne permettrait pas de leur associer de meilleurs choix de polynômes f1 et f2 – autrement dit, des polynômes dont les coefficients sont de plus petites tailles que ceux choisis dans le cas général. Le crible de corps de nombres (NFS) est appelé crible spécial de corps de nombres (SNFS) lorsqu’il est appliqué à de tels corps. Jusqu’à maintenant, le seul algorithme de type SNFS adapté aux calculs de logarithmes discrets dans les corps finis7 est celui présenté par D. Gordon dans [Gor93] puis amélioré par O. Schirokauer et I. Semaev. Il s’applique aux corps finis Fp de cardinal premier. Nous présentons dans la partie 3 un nouveau crible de type SNFS qui s’applique sur tout le domaine d’application du NFS, contrairement au SNFS de D. Gordon qui ne s’applique que dans le cas limite où le degré d’extension vaut un. Il est construit de telle sorte qu’il s’adapte à tout corps fini dont la caractéristique admet une représentation creuse, et en particulier, aux corps finis issus de procédés de couplage. 7 Les autres SNFS concernent la factorisation d’entiers d’une certaine forme. 3 Logarithme discret dans les corps finis issus du couplage Nous présentons d’abord rapidement les paramètres actuels associés aux courbes elliptiques bien couplées, et notamment les algorithmes de logarithme discret qui s’appliquent dans cette configuration. Il s’agit en particulier de donner une illustration de l’extension du NFS que nous avons obtenue au paragraphe 2.4. Après avoir rappelé la structure des corps finis sur lesquels nous travaillons, nous présentons enfin en détails notre crible spécial de corps de nombres, dont une application directe est la cryptographie à base de couplage. 3.1 Algorithmes actuels pour la cryptographie à base de couplage Construire des courbes elliptiques bien couplées avec un niveau de sécurité élevé nécessite la prise en compte des complexités des différents algorithmes de calcul de logarithmes discrets entrant en jeu. L’approche traditionnelle consiste à équilibrer la complexité d’un algorithme général de logarithme discret dans le sous-groupe en question de la courbe elliptique avec une estimation de la complexité du crible NFS sur le corps fini d’arrivée du couplage. Puisque les algorithmes sur les groupes généraux sont en racine carrée, cela implique de choisir les paramètres de la courbe √ elliptique tels que p = LQ (1/3, c) pour une certaine constante c. De manière équivalente, cela s’écrit : p = LQ (1/3, 2c). (3.1) Il est alors pertinent de remarquer que la contrainte imposée sur la courbe donne une indication sur la forme de la caractéristique p, et que cette forme explicite permet en retour d’estimer la complexité réelle du calcul de logarithmes discrets dans le corps fini considéré. Ainsi, l’équation (3.1) nous montre que nous sommes dans la configuration frontière 2.4 entre les deux algorithmes de crible FFS et NFS. Pour déterminer lequel de ces deux cribles s’applique pour calculer des logarithmes discrets dans FQ le corps d’arrivée du couplage, avec p = LQ (1/3, 2c), nous devons évaluer la constante 2c. 3.1.1 Erreur sur les tailles de clef La complexité du problème du logarithme discret sur des corps finis dans ce contexte est habituellement estimée à l’aide de tables de taille de clef prédéfinies comme celles données par le National Institue of Standards and Technology (NIST) ou A. Lenstra et E. Verheuil [Nat03, LV01]. Par exemple, dans [KM05, p.7, paragraphe 4], N. Koblitz et A. Menezes recommandent de suivre les tables du NIST [Nat03], basées sur la complexité du NFS pour la factorisation. Ils se réfèrent par ailleurs à des des articles traitant de la complexité de la factorisation et non du problème du logarithme discret. S. Galbraith, K. Paterson et N. Smart tentent une approximation similaire dans [GPS08, p.6]. La citation suivante souligne que, puisqu’il est délicat d’obtenir un haut niveau de sécurité pour la construction des courbes, les auteurs simplifient la discussion en égalisant grossièrement la taille des clefs RSA à la taille du corps d’arrivée de la courbe obtenue. We note that in order to achieve a particular level of security, it is necessary that the discrete logarithm problems (DLPs) in G1, G2 and GT be adequately hard. [...] Even this is a complicated question [...] we can simplify the discussion by referring to Table 2, which shows roughly equivalent parameter sizes at a variety of security levels from three different sources, NIST, Lenstra [...] The third column shows the size of RSA keys needed to provide κ bits of security. This can be roughly equated to the size of field needed to attain a given level of security for the DLP in Fqk . Nous retrouvons une idée semblable dans [GPS06] et [Sco05] . Cette approche fait cependant une hypothèse implicite, celle de considérer que la complexité du NFS dans les corps finis est sensiblement la même que la complexité de la factorisation d’un entier de même taille que le corps. Pour autant, cette hypothèse implicite n’a été vérifiée dans la littérature associée ni à l’un, ni à l’autre de ces deux problèmes. Les constructions actuelles sélectionnent donc implicitement les clefs de sécurité comme si la complexité de ce problème dans FQ se trouvait être en LQ (1/3, (64/9)1/3 ) – il s’agit de la complexité du crible de corps de nombres pour la factorisation d’un entier de taille Q. C’est-à-dire, comme si : c = (64/9)1/3 . 3.1.2 Choix correct des paramètres De c = (64/9)1/3 nous déduisons l’évaluation : 2c ≈ 3.845998854. La seconde constante de p dans la notation en LQ étant clairement supérieure au point limite κ, cela signifie que l’algorithme qui convient est le NFS étendu présenté en 2.4. Ainsi, le choix actuel des paramètres relatifs au couplage, et, en particulier, l’hypothèse implicite courante qui consiste à prendre pour valeur c = (64/9)1/3 s’avère trop pessimiste face à l’état de l’art. En effet, l’analyse du paragraphe 2.4 soulève que, s’appuyant sur la meilleure variante connue à ce jour du crible de corps de nombres, il faut choisir : c = (128/9)1/3 . Avec ce choix, nous obtenons de nouveau 2c > κ. L’algorithme qui s’applique est donc encore une fois le NFS étendu du paragraphe 2.4, qui a bien, exactement, une complexité en LQ (1/3, (128/9)1/3 ). 3.2 3.2.1 Crible spécial de corps de nombres (SNFS) Structure des corps finis issus de couplage Plutôt que de procéder comme au paragraphe 2.2 dans le cas de corps finis de forme générale, nous nous intéressons dans cette partie à la spécificité des corps finis obtenus à l’aide de certaines courbes bien couplées. En pratique, les couplages nécessitent l’existence de courbes elliptiques qui sont très simples d’utilisation d’un point de vue calculatoire, et, souvent, faciles à générer. Cet objectif pris en considération, les familles de courbes bien couplées sont très fréquemment caractérisées par trois polynômes simples, et en particulier P , qui, une fois évalué, définit la caractéristique de Fpn où ϕ : E × E → Fp n 38 est le couplage en question, E une courbe de la famille et n son degré de plongement. De nombreuses familles de courbes ont été proposées, comme en témoigne la Taxonomie des courbes elliptiques bien couplées de D. Freeman, M. Scott et E. Teske [FST10], et la plupart d’entre elles ont pour point commun de choisir P comme un polynôme de petit degré et à coefficients constants. C’est par exemple le cas des courbes de Barreto-Naehrig ou de la famille des courbes MNT. Malheureusement, cette structure particulière de P réduit la complexité asymptotique du calcul de logarithmes discrets dans Fpn . A partir de maintenant, nous considérons le cas d’une famille de courbes bien couplées où la caractéristique p du corps d’arrivée du couplage Fpn est obtenue par évaluation d’un polynôme. En d’autres termes, nous étudions une famille de courbes elliptiques où p puisse s’écrire p = P (u), avec P un polynôme de petit degré λ et à petits coefficients, et u petit en comparaison avec p. Arrêtons nous un instant pour souligner le fait que λ est bel et bien fixé en amont, et, par conséquent, ne dépend que de la famille considérée. En particulier, λ ne dépend pas de p. S"il est construit pour s’appliquer aux corps finis issus de procédés de couplage, notre nouveau crible est plus généralement adapté à tout corps fini où p est obtenue de manière similaire. Nous expliquons au paragraphe 3.2.2 comme utiliser cette représentation creuse de la caractéristique pour diminuer la complexité asymptotique heuristique sur tout le domaine d’application de NFS. L’analyse détaillée suit au paragraphe 3.3. 3.2.2 Choix des polynômes Nous développons maintenant comment utiliser la structure particulière des polynômes caractérisant les courbes bien couplées. Le crible que nous proposons ne diffère du NFS qu’en un seul endroit : si les phases de crible à proprement parler, d’algèbre linéaire et de calcul de logarithmes discrets individuels sont identiques, nous réexaminons la mise en place préliminaire, et notamment le choix des polynômes f1 et f2 . Nous choisissons f1 comme étant un polynôme irréductible sur Fp , de degré n et tel que : f1 (X) = X n + R(X) − u avec R(X) un polynôme de petit degré et à coefficients 0, 1 ou −1. Puisque P (u) = p, la taille des coefficients1 de f1 est bornée par p1/λ . Précisons ce que nous entendons en imposant que le degré dR du polynôme R soit petit. f1 est un polynôme de degré n et a par conséquent approximativement une chance sur n d’être irréductible sur le corps fini Fp . Nous devons donc veiller à conserver un degré de liberté suffisant dans le choix des coefficients de f1 pour permettre l’obtention d’un polynôme irréductible. Nous supposons donc que le degré de R vérifie dR = O(log n/ log 3). Ceci autorise 3dr possibilités pour R, et donc autant de f1 distincts, ce qui permet ainsi d’obtenir un polynôme irréductible.2 D’autres possibilités sont compatibles avec notre crible pour le choix du polynôme R, toutes sans influence sur la complexité asymptotique finale que nous obtenons avec le choix énoncé cidessus, où il s’agit de prendre un polynôme à petit degré dépendants de n et à coefficients constants. Inversement, nous pouvons choisir de prendre R comme un polynôme de degré constant dR et à petits coefficients (qui dépendent de n) bornés par O(n1/(dr+1) ). Ceci laisse de nouveau suffisamment de degré de liberté pour obtenir un polynôme irréductible.3 Une configuration intéressante se présente aussi si l’on considère le cas intermédiaire en équilibrant le 1 Lorsque l’on parle de taille de coefficients, il s’agit en réalité d’un abus de langage pour désigner la valeur absolue des coefficients. 2 Puisque 3log n/ log 3 = n. 3 Puisque (n1/(dr+1) )dr +1 = n. degré de R avec la taille de ses coefficients. Ainsi, en forçant les coefficients à être bornés par dr , l’irréductibilité de f1 amène à imposer la condition ddr r ≈ n. Ceci mène à prendre dr = O(log n/ log log n). L’effet de cette configuration intermédiaire est plus forte sur la taille des coefficients de f2 comme nous l’indiquons plus bas, bien que la complexité asymptotique soit identique. Par ailleurs, le second polynôme est défini comme suit : f2 (X) = P (X n + R(X)). f2 a alors pour degré λn tandis que la taille de ses coefficients est bornée par O(log(n)λ ). Cette borne provient du terme R(X)λ apparaissant dans l’écriture de f2 et qui apporte les plus grands coefficients de f2 . En développant R(X)λ = (±X dr ± · · · ± 1)λ à l’aide de coefficients multinomiaux, on remarque que ses coefficients sont bornés par (dR + 1)λ = O(log(n)λ ).4 Enfin, nous avons : f2 (X) = P (f1 (X) + u) ≡ P (u) = p, où ≡ représente l’équivalence modulo f1 (X). Il existe donc un polynôme h tel que f2 (X) − p = h(X)f1 (X), ce qui implique que f2 (X) soit un multiple de f1 (X) modulo p. Puisque le pgcd de f1 (X) et f2 (X) est irréductible sur Fp et de degré n, ces deux polynômes définissent correctement le diagramme commutatif 2.1. L’intérêt principal de ce choix est de conserver des petits degrés tout en forçant un très petit produit des deux tailles de coefficients : f1 et f2 ont ainsi respectivement (n, p1/λ ) et (λn, O(log(n)λ )) comme degré et taille de coefficients. 3.3 Complexités asymptotiques du SNFS Comme pour le crible de corps de nombres présenté plus haut, nous attirons l’attention du lecteur sur le fait que les complexités asymptotiques qui vont suivre sont des complexités heuristiques – cf paragraphe 2.1.2. Pour toute l’étendue d’application de notre algorithme, nous notons les relations entre n le degré d’extension, p la caractéristique et Q = pn sous la forme suivante : 1−lp 1 log Q n= p = exp cp (log Q)lp (log log Q)1−lp , . cp log log Q Les paramètres de notre crible qui apparaissent dans l’analyse sont la borne de lissité B, le degré des éléments de l’espace de crible t − 1 ainsi que la borne de crible A qui concerne les coefficients de ces éléments. Nous rappelons aussi que le degré du polynôme P qui nous donne la caractéristique du corps est notée λ (voir paragraphe 3.2.1). 3.3.1 Cas p = LQ (lp , cp ) où 1/3 6 lp < 2/3 Nous supposons que nous pouvons écrire t, A et B à l’aide des relations : ct t= cp log Q log log Q 2/3−lp , At = LQ (1/3, ca ct ), B = LQ (1/3, cb ) où ca , cb et ct sont à déterminer. 4 Dans la configuration intermédiaire pour le choix de R, les coefficients de f2 deviennent bornés par O((log n/ log log n)λ ) au lieu de O(log(n)λ ). 40 Pour minimiser le temps d’exécution total de l’algorithme, nous cherchons à équilibrer les complexités de la phase de crible et de la phase d’algèbre linéaire – le calcul de logarithme discret individuel ayant un coût négligeable par rapport aux deux autres phases. Puisque l’espace de crible contient At éléments et que la phase d’algèbre linéaire coûte approximativement B 2 opérations (cf paragraphe 2.1.3), nous imposons que t, A et B satisfassent At = B 2 . Cette équation mène à la première condition : cb = ca ct . 2 (3.2) Par ailleurs, il nous faut recueillir autant de bonnes relations durant la phase de crible qu’il y a d’inconnues dans les équations de la phase d’algèbre linéaire, c’est-à-dire approximativement B. Nous souhaitons donc que les différents paramètres vérifient At P ≈ B, où P désigne la probabilité qu’un élément de l’espace de crible conduise à une bonne relation, autrement dit, la probabilité que chacune de ces deux normes dans les deux corps de nombres se décompose en produits d’entiers premiers inférieurs à B. En tenant compte de la remarque précédente, ceci signifie : B ≈ 1/P. (3.3) Notons Ni la norme provenant du polynôme h = at−1 X t−1 + · · · + a0 dans Q [X] /(fi (X)) (où i = 1, 2 en fonction du côté du diagramme que l’on considère). En conservant les notations de 2.4, nous bornons les deux normes comme suit. N1 est inférieur à ΘAn pt/λ , puisque f1 est de degré n et que ses coefficients sont bornés par p1/λ d’une part, et d’autre part h est de degré t−1 et ses coefficients sont bornés par A. De même, nous avons N2 inférieur à ΘAλn log(n)λt . Ainsi, P est la probabilité que le produit Θ2 log(n)λt A(λ+1)n pt/λ se décompose en entiers premiers plus petits5 que B. Détaillons enfin l’estimation des termes A(λ+1)n pt/λ , Θ2 et log(n)λt . log(A(λ+1)n pt/λ ) = (λ + 1)n log(A) + t/λ log(p) 1−lp (λ + 1) log Q log(At ) cp log log Q t 2/3−lp ct cp log Q (log Q)lp (log log Q)1−lp cp λ log log Q = + = ct (log Q)2/3 (log log Q)1/3 λ ca (λ + 1) + On en déduit l’égalité A(λ+1)n pt/λ = LQ (2/3, (λ + 1)ca + ct /λ). Pour ce qui est des termes Θ2 et log(n)λt , nous remarquons que nous avons les majorations grossières Θ2 6 (n + 1)4t et log(n)λt 6 (n + 1)λt . Ils sont donc tous les deux inférieurs à (n + 1)4λt . Or log((n + 1)4λt ) = 4λt log(n + 1) log Q log log Q 2/3−lp ≈ ≈ 4λct (1 − lp ) (log Q)2/3−lp (log log Q)1−(2/3−lp ) cp ≈ log(LQ (2/3 − lp )) 5 (log Q)1−lp cp (log log Q)1−lp 4λct cp Puisque x et y sont B-lisses si et seulement si xy est B-lisse. log ! où les approximations valent pour Q → ∞. Les deux termes Θ2 et log(n)λt sont donc négligeables par rapport à A(λ+1)n pt/λ lorsque Q tend vers l’infini. Le produit des normes devient simplement A(λ+1)n pt/λ . Nous faisons maintenant l’hypothèse heuristique habituelle pour les algorithmes de calcul d’indice et supposons que la probabilité P suit le théorème de Canfield, Erdös et Pomerance énoncé sous la forme suivante : un entier aléatoire inférieur à Lq (r, γ) est Lq (s, δ)lisse avec la probabilité Lq (r − s, −γ(r − s)/δ). Avec les valeurs de notre analyse, cela mène à l’équation : 1 −1 P = LQ , ((λ + 1)ca + ct /λ) . (3.4) 3 3cb Puis, en regroupant (3.3) et (3.4) nous obtenons la seconde condition sur les différentes constantes : 3.c2b = (λ + 1)ca + ct /λ. (3.5) Nous souhaitons minimiser cb sous les deux conditions (3.2) et (3.5) : la complexité deviendra alors B 2 = LQ (1/3, 2.cmin ), où cmin représente naturellement le minimum que nous cherchons. b b Pour ce faire, introduisons deux nouvelles variables µ et x et réécrivons la condition (3.2) : ct = x, ca = µx, cb = µx2 . 2 La condition (3.5) devient alors : µx2 3 2 !2 x = (λ + 1)µx + λ ⇔ 4 x = · 3 3 (λ + 1)µ + 1/λ µ Puisqu’il est équivalent de minimiser 2 cb = µx2 comme (µx2 )3 , nous calculons : 2 3 (µx ) = 2 4 3 ! · (λ + 1)2 µ2 + 1/λ2 + 2µ(λ + 1)/λ . µ Finalement, forcer l’annulation de la dérivée du membre de droite par rapport à µ entraine (λ + 1)2 µ2 − 1/λ2 = 0 puis µ = 1/(λ(λ + 1)). Enfin, nous obtenons (2 cmin )3 = (µx2 )3 = b (64/9) · (λ + 1)/λ. La complexité asymptotique de l’algorithme dans cette configuration est alors : ! 1 64 λ + 1 1/3 LQ , · . 3 9 λ Sitôt que λ > 2, celle-ci est plus basse que la complexité obtenue par le NFS qui, elle, vaut LQ (1/3, (128/9)1/3 ). 3.3.2 Le cas p = LQ (2/3, cp ) Nous considérons dans ce cas une famille d’algorithmes indicée par le degré t − 1 des polynômes sur lesquels nous effectuons notre crible ; nous calculons la complexité asymptotique de chacun de ces algorithmes. La figure 3.1 donne un aperçu du résultat final : elle indique notamment quel crible doit être choisi, en fonction de la constante cp , en vue d’aboutir à la meilleure complexité asymptotique. L’analyse déroulée ici suit exactement les étapes de la précédente, à l’exception de l’arrondi de t − 1 en t qui n’est plus ici possible. Ceci explique que la complexité finale varie avec cp . Nous commençons par l’analyse la plus générale du cas p = LQ (2/3, cp ) tandis que les deux cas extrêmes de degré de polynômes sont explicités plus loin. Lorsque t tend vers l’infini, nous retrouvons la complexité du cas où la caractéristique peut s’écrire p = LQ (lp , cp ) avec 1/3 6 lp < 2/3. Par ailleurs, la complexité asymptotiques est minimale pour les choix de p qui sont compatibles avec un crible sur des polynômes de degré un. Nous calculons donc explicitement cette complexité. 42 Crible sur des polynômes de degré t − 1 Figure 3.1: Complexités asymptotiques LQ (1/3, C(cp )), LQ (1/3, C2 (cp )) et LQ (1/3, C4 (cp )) en fonction de cp avec p = LQ (2/3, cp ). La courbe rouge montre comment varie la seconde constante de la complexité pour le NFS général tandis que les courbes verte et bleue présentent l’amélioration donnée par notre SNFS dans les cas λ = 2 et λ = 4. Le degré t − 1 des éléments de l’espace de crible est indiqué pour la courbe générale. Nous supposons que A et B peuvent s’exprimer de la manière suivante : A = LQ (1/3, ca ) et B = LQ (1/3, cb ). L’espace de crible contient dans ce cas At éléments. Equilibrer la taille de l’espace de crible avec le coût d’exécution de l’algèbre linéaire amène ca = 2cb /t. Avec les mêmes notations que précédemment, et en négligeant de nouveau les termes Θ et log(n)λ , nous écrivons les deux normes N1 = An p(t−1)/λ et N2 = Aλn . Le produit des normes est alors A(λ+1)n p(t−1)/λ qui peut être réécrit comme : ! 2 2(λ + 1)cb (t − 1)cp N1 .N2 = LQ , + . 3 cp t λ Pour obtenir assez de bonnes nous forçons B à être égale à l’inverse de la probabilité relations, (t−1)cp 2(λ+1)cb 1 1 de lissité P, id est B = LQ 3 , 3cb + λ . Ceci conduit à l’équation : cp t 3.c2b = 2(λ + 1)cb (t − 1)cp + . cp t λ Par conséquent, le crible sur des polynômes de degré t − 1 a pour complexité asymptotique LQ (1/3, Cλ (cp )) avec : v !2 u u 2 λ + 1 t λ + 1 3(t − 1)cp Cλ (cp ) = 2.cb = + + . cp t 3 cp t λ (3.6) Cette fonction de cp est à comparer avec celle obtenue dans l’analyse de complexité du crible sur corps de nombres général pour le même cas qui donne LQ (1/3, C(cp )) avec : v u u 2 2 C(cp ) = +t 3 cp t 2 cp t !2 + 3(t − 1)cp . La figure 3.1 reprend les tracés de la constante C(cp ) qui détermine la complexité LQ (1/3, C(cp )) comme une fonction de cp . La courbe rouge représente celle obtenue par le NFS général [JLSV06] tandis que les deux autres montrent l’amélioration obtenue par notre crible pour λ = 2 (courbe verte) et λ = 4 (courbe bleue). Ces valeurs de λ correspondent respectivement à la famille des courbes MNT et à celle des courbes de Barreto-Naehrig. Connecter le cas p = LQ (2/3, cp ) au cas p = LQ (lp , cp ) avec lp < 2/3 Considérons maintenant cp comme une variable pour chercher la valeur de cp qui minimise la complexité LQ (1/3, Cλ (cp )) du paragraphe précédédent 3.3.2. Nous notons de nouveau ce minimum cmin p . Cλ (cp ) est minimal lorsque : −1 −2(λ + 1)2 t−2 c−3 λ+1 p + 3(t − 1)λ r = 2 c2p t 3(t−1)cp λ+1 + 2 cp t λ ⇔ 4(λ + 1)4 λ2 + 12t2 (t − 1)λ(λ + 1)2 c3p = (3(t − 1)t2 c3p − 2λ(λ + 1))2 ⇔ t2 (t − 1)c3p = (8/3)λ(λ + 1)2 . Nous posons donc : cmin p = 8 λ(λ + 1)2 . 3 (t − 1)t2 !1/3 . Assemblée avec (3.6), ces deux équations donnent : 1 t − 1 λ + 1 1/3 . . . 32 t λ Ceci permet de conclure que la complexité minimale pour le crible sur des polynômes de degré t − 1 est : ! 1 64 t − 1 λ + 1 1/3 LQ , . . . (3.7) 3 9 t λ cb = 2 Si p = LQ (2/3, cp ) n’est obtenue qu’en forçant la constante cp à être proche de 0, il est plus judicieux en pratique d’écrire p comme p = LQ (lp , c0p ) avec lp < 2/3 et c0p supérieur à cp , puis d’appliquer ensuite l’algorithme étudié précédemment. Si nous fixons malgré tout p = LQ (2/3, cp ) et que nous faisons tendre cp vers 0, le meilleur choix à faire est de forcer t à tendre vers l’infini (figure 3.1). Théoriquement, il est intéressant de remarquer que ce cas précis où t → ∞ amène la limite attendue : 1 64 λ + 1 , · 3 9 λ LQ 1/3 ! qui est la complexité asymptotique de notre SNFS pour le cas p = LQ (lp , cp ) avec 1/3 6 lp < 2/3. 44 Crible sur des polynômes de degré 1 Revenons à la complexité minimale donnée par l’équation (3.7). La complexité asymptotique obtenue par la variante de NFS proposée dans [JLSV06] pour le même cas est LQ (1/3, (128/9).(t− 1/t)1/3 ). Pour chaque algorithme, notre SNFS multiplie ainsi par λ+1 2λ le cube de la seconde constante de la complexité dans la notation en LQ . Ceci entraine un résultat notable dans le cas particulier du crible sur les polynômes de degré un. En remplaçant t par 2 dans (3.7), nous obtenons une complexité en ! 1 32 λ + 1 1/3 LQ . , . 3 9 λ Elle est à comparer avec la complexité asymptotique du NFS de [JLSV06] dans la même configuration qui est LQ (1/3, (64/9)1/3 ). Comme précédemment, dès lors que λ > 2, notre SNFS est meilleur d’un point de vue asymptotique que le crible appliqué dans le cas général. 3.3.3 Crible pour les grandes caractéristiques Comme pour le NFS présenté plus haut, notre crible dans le cas des grandes caractéristiques suit les trois mêmes phases de crible, d’algèbre linéaire, et de recherche de logarithme discret individuel que dans le cas des caractéristiques médianes, à l’exception de l’espace de crible qui peut être réduit. Poser t = 2 est ainsi suffisant. En revanche, contrairement à la variante proposée dans [JLSV06], le choix des polynômes pour notre crible n’a pas à être modifié. Cas p = LQ (lp , cp ) avec 2/3 < lp < 1 Soient A la borne sur les coefficients des polynômes sur lesquels s’appliquent le crible et B la borne de lissité. De nouveau, nous cherchons à équilibrer l’espace de crible A2 avec le coût de l’algèbre linéaire B 2 , ce qui entraine A = B. Nous supposons que nous pouvons écrire B comme B = LQ (1/3, cb ). Le produit des deux normes est borné comme précédemment par Θ2 log(n)λ B (λ+1)n p1/λ . La taille de n dans ce cas permet encore de dire que les termes Θ2 et log(n)λ sont négligeables par rapport à B (λ+1)n p1/λ . Le logarithme de la nouvelle borne donne log(B (λ+1)n p1/λ ) = n log B + λn log B + (1/λ) log p. Nous remarquons en premier lieu que nous avons n log B = log LQ (4/3 − lp ) = log LQ (l) with l < 2/3. Parallèlement, en posant : λn = cl log Q log log Q 1/3 (3.8) avec cl à déterminer plus tard, nous obtenons λn log B + (1/λ) log p = log(LQ (2/3, cb cl + 1/cl )). B n est ainsi négligeable par rapport à B λn p1/λ . Par ailleurs, B λn p1/λ est minimum6 lorsque : √ cl = 1/ cb . (3.9) √ Le produit des normes est alors borné par LQ (2/3, 2 cb ). La probabilité que ce nombre soit √ B-lisse est donc LQ (1/3, −2/(3 cb )). Comme à l’habitude, nous égalisons la borne de lissité √ avec l’inverse de la probabilité. Ceci entraine cb = 2 cb , puis cb = (4/9)1/3 . En remplaçant cb par cette valeur dans (3.9), nous obtenons cl = (2/3)1/3 . La contrainte sur λ devient quant à elle : 1/3 1 2 log Q λ= . n 3 log log Q 6 Nous minimisons le nombre dont on cherche la probabilité de lissité car, plus ce nombre est petit, plus la probabilité qu’il soit lisse est grande, et plus cette probabilité de trouver de bonnes relations est grande, plus la complexité est petite. La complexité asymptotique que nous trouvons au final pour ce λ particulier est : LQ (1/3, (32/9)1/3 ). Ceci est à mettre en relation avec la complexité du NFS de [JLSV06] dans le même cas qui est LQ (1/3, (64/9)1/3 ). Le cas frontière : lp = 2/3 Lorsque lp = 2/3 l’étude est plus délicate puisque le terme B n n’est plus négligeable par rapport à B λn p1/λ . Le produit des deux normes peut être réécrit LQ (2/3, cb (cl + 1/cp ) + 1/cl ). Il est √ encore minimal lorsque cl = 1/ cb . En revanche, cela donne un produit de normes borné par √ √ LQ (2/3, 2 cb + cb /cp ) et une probabilité de lissité égale à LQ (1/3, −(1/3).(2/ cb ) + 1/cp )). Egaliser cb avec l’opposé de la seconde constante amène (3cb + 1/cp )2 = 4/cb et finalement : 9c3b − 6 2 1 c + cb − 4 = 0. cp b c2p Lorsque cp tend vers l’infini, nous retrouvons une complexité en LQ (1/3, (32/9)1/3 ) qui est la complexité de notre crible pour le cas où p = LQ (lp , cp ) avec 2/3 < lp < 1. Le cas p = LQ (1, cp ) L’analyse dans cette configuration suit exactement celle du cas p = LQ (lp , cp ) avec 2/3 < lp < 1, à l’exception du fait que nous sommes en présence d’une expression simplifiée pour le degré de l’extension qui devient n = 1/cp . En posant de nouveau λ = cp (2 log Q)1/3 (3 log log Q)−1/3 , nous obtenons encore : LQ (1/3, (32/9)1/3 ) pour complexité asymptotique finale. En particulier, cet algorithme s’applique pour les corps finis d’ordre premier qui ont une représentation creuse, puisque n = 1 autorise p à s’écrire p = Lp (1, 1). Nous rappelons que le crible spécial sur corps de nombres s’applique sur de tels corps d’ordre premier, sa complexité est elle aussi en LQ (1/3, (32/9)1/3 ), comme détaillé dans [Sch06, Sch08]. 3.4 Limites d’application du SNFS Par souci de transparence, nous présentons ici les limites de notre résultat. D’une part, il est important de noter que, si la majorité des courbes elliptiques bien couplées sont concernées par notre crible, certaines courbes plus complexes à générer n’utilisent pas le type de construction que nous avons étudié. Les courbes par multiplication complexe, comme les courbes de Sutherland, en sont l’exemple le plus notable. Par ailleurs, le résultat que nous proposons est à considérer comme un résultat théorique, dont nous n’avons pas encore d’exemple implanté à proposer. Nous donnons ici une rapide idée de la difficulté à réaliser un tel calcul de logarithme discret. Commençons par rappeler l’ordre de grandeur des calculs en jeu. Il est important d’avoir en tête que, si 280 représente le nombre d’opérations pour une sécurité minimale, en pratique, 265 opérations est le maximum atteignable pour nos projets. Ceci correspond déjà à 2000 ans CPU. Nous donnons ici une indication du nombre d’opérations qu’il faut effectuer pour résoudre le problème du logarithme discret avec notre crible spécial sur un corps de 890 bits de la forme Fp2 , où p est un nombre premier. 46 Les 890 bits que nous prenons en exemple ne sont par arbitraires ; ils viennent de la remarque suivante. Imaginons que l’on souhaite s’attaquer à une courbe dont le corps associé est Fp2 , donc une courbe couplée avec un degré de plongement égal à 2. Supposons de plus que nous sommes dans le cas où λ = 2. Chercher à se placer dans la meilleure configuration – autrement dit dans la partie où la complexité de notre crible est la plus basse – permet de déterminer la taille de la caractéristique p à choisir. Ainsi, si l’on souhaite obtenir une complexité en : 1 32 λ + 1 , . 3 9 λ LQ 1/3 ! 1 16 , 3 3 = LQ 1/3 ! , il faut choisir un crible sur des objets affines (donc t=2) et tel que p = LQ (2/3, cp ), avec cp = 8·2·32 3·22 1/3 = 121/3 . On obtient alors p = exp(121/3 (log p2 )2/3 (log log p2 )1/3 ) puis : p2 ≈ 890 bits. Ceci nous permet de donner la taille de u, l’antécédent de p par le polynôme de degré 2. Nous avons u2 ≈ p donc u ≈ (2890/2 )1/2 et par conséquent : u ≈ 222 bits. La complexité est en la taille de l’espace de crible, c’est-à-dire, avec les mêmes notations que dans tout ce mémoire : A2 . Supposons que l’on prenne un espace de crible de taille 60 bits, autrement dit, que l’on crible sur des polynômes a + bX avec a et b inférieurs à une borne d’environ 230 . Quelle sera alors la taille des normes obtenues ? f1 est de degré n = 2 et de coefficient de taille 222 bits. La première norme que nous calculons est donc bornée par An u = (230 )2 2222 = 2282 . De même, la deuxième norme est bornée par Aλ2 = (230 )4 = 2120 . Ce que nous pouvons résumer par : N1 ≈ 282 bits N2 ≈ 120 bits. et Si nous posons maintenant pour borne sur les normes B de 35 bits, combien de relations allonsnous tester ? La probabilité P1 qu’un nombre de 120 bits soit B-friable est donnée par : log(2120 ) log P1 = · log log(235 ) log(235 ) log(2120 ) ! d’où, P1 = 35 120 120 35 . On a de même la probabilité que la deuxième norme soit B-friable : P2 = 35 282 282 35 . Ce qui nous donne P1 · P2 ≈ 2−30 , soit 230 relations à tester avant d’en obtenir une friable. La question que l’on se pose maintenant est de savoir combien de bonnes relations il faut obtenir pour pouvoir résoudre le système d’algèbre linéaire associé à notre crible. Nous souhaitons autant de relations que d’inconnues dans les équations, c’est-à-dire autant de relations que de nombres premiers inférieurs à la borne B. En prenant en compte les deux côtés du diagramme, nous 35 en avons 2 · log2 235 = 231 . Résumons. Avec nos choix de paramètres il faut établir 231 relations avec 230 tests de polynômes pour chacune d’entre elles, ce qui nous donne 261 polynômes à cribler et 262 opérations pour la phase d’algèbre linéaire. En plus de ce très lourd calcul, c’est surtout l’algèbre linéaire qui effraie. En effet, l’expérience sur les matrices de type NFS pour le logarithme discret est encore limitée. Pour le logarithme discret, les derniers records de calculs en date traitent de petite caractéristique et sont donc associés au crible FFS, tandis que les implantations sur NFS dans le cadre de la factorisation utilisent des simplifications qui ne sont pas applicables pour le calcul de logarithmes discrets sur des corps finis. 48 Conclusion et perspectives Nous avons retracé ici une étude détaillée du problème du logarithme discret dans le cas particulier des corps finis issus de protocoles de couplage. En particulier, nous avons adapté le crible spécial de corps de nombres pour calculer des logarithmes discrets sur Fpn lorsque p est obtenue par l’évaluation d’un polynôme à petits coefficients. Plus précisément, le crible présenté dans [JP13] permet une amélioration dans chacune des configurations sur lesquelles s’applique le crible de corps de nombres général. Le tableau ci-dessous reprend au cas par cas le gain en complexité qui en résulte. Nous rappelons que λ est le petit degré du polynôme P qui permet d’obtenir la caractéristique p après évaluation. Taille de p Complexité asymptotique NFS Complexité asymptotique SNFS p = LQ (lp , cp ) 1 128 , 3 9 LQ avec 1/3 ! 1 64 λ + 1 , . 3 9 λ LQ 1/3 ! 1/3 6 lp < 2/3 LQ (1/3, c) avec LQ (1/3, c) avec p = LQ (2/3, cp ) (cf figure 3.1) c= 2 3 2 cp t + q 4 c2p t2 + 3(t − 1)cp LQ (1/3, 2c) avec c= 2 3 λ+1 cp t r + (λ+1)2 c2p t2 + 3(t−1)cp λ LQ (1/3, 2c) avec p = LQ (2/3, cp ) 9c3 − 6 2 1 c + 2c − 8 = 0 cp cp 9c3 − 6 2 1 c + 2c − 4 = 0 cp cp p = LQ (lp , cp ) 1 64 , 3 9 avec avec 2/3 < lp LQ 1/3 ! 1 32 , 3 9 LQ 1/3 ! Les questions que soulève le problème du logarithme discret dans les corps finis ne manquent pas. Dans une perspective plus ou moins proche, plusieurs directions de recherche sont à explorer. En petite caractéristique d’une part, la version actuelle de l’algorithme [Jou13] n’atteint la complexité Lpn (1/4 + o(1)) que pour une caractéristique très petite, avec la condition supplémentaire de trouver une représentation du corps fini très particulière. Une première piste consiste à prouver qu’il est effectivement possible de construire les représentations désirées pour des corps arbitraires, en s’émancipant de l’argument heuristique utilisé jusqu’à lors pour prédire l’existence de ces bonnes représentations. Parallèlement, il serait intéressant d’assouplir la contrainte sur la représentation si particulière des corps où l’algorithme s’applique, ainsi que de permettre l’élargissement du spectre des caractéristiques possibles. Dans une autre direction, il faudrait comprendre si une partie des idées entrant en jeu sur les corps de petite caractéristique peuvent s’étendre en caractéristique plus grande. Cette perspective est celle qui présente le plus de difficultés, mais dont les retombées seraient de nature à remettre en cause une grande partie des systèmes de chiffrement à clef publique actuellement existants. Notons qu’historiquement, toutes les avancées du problème en caractéristique petite ont fini par se généraliser, au prix d’une complexité théorique parfois importante, au logarithme discret sur des corps de grande caractéristique et à la factorisation. Remerciements Je remercie l’équipe CRYPTO du PRiSM de l’accueil que j’ai reçu pendant ce stage de master, ainsi qu’Antoine Joux de m’encadrer, pendant ces quelques mois et pour les trois années à venir, sur un aussi joli sujet. Je lui suis reconnaissante aussi bien de son exigence que de sa générosité scientifique. Mais merci surtout, Antoine, pour ton enthousiasme contagieux. 50 Bibliographie [BF03] Dan Boneh and Matthew K. Franklin. Identity-based encryption from the Weil pairing. SIAM J. Comput., 32(3) :586–615, 2003. [BGJT13] Razvan Barbulescu, Pierrick Gaudry, Antoine Joux, and Emmanuel Thomé. A quasipolynomial algorithm for discrete logarithm in finite fields of small characteristic. CoRR, abs/1306.4244, 2013. [BLS03] Paulo S. L. M. Barreto, Ben Lynn, and Michael Scott. On the selection of pairingfriendly groups. In Selected Areas in Cryptography, pages 17–25, 2003. [BLS04] Dan Boneh, Ben Lynn, and Hovav Shacham. Short signatures from the Weil pairing. J. Cryptology, 17(4) :297–319, 2004. [BN05] Paulo S. L. M. Barreto and Michael Naehrig. Pairing-friendly elliptic curves of prime order. In Selected Areas in Cryptography, pages 319–331, 2005. [CC03] Jae Choon Cha and Jung Hee Cheon. An identity-based signature from gap DiffieHellman groups. In Public Key Cryptography, pages 18–30, 2003. [Coh93] Henri Cohen. A Course in Computational Algebraic Number Theory. SpringerVerlag, 1993. [COS86] Don Coppersmith, Andrew M. Odlyzko, and Richard Schroeppel. Discrete logarithms in GF(p). Algorithmica, 1(1) :1–15, 1986. [FST10] David Freeman, Michael Scott, and Edlyn Teske. A taxonomy of pairing-friendly elliptic curves. J. Cryptology, 23(2) :224–280, 2010. [Gor93] Daniel M. Gordon. Discrete logarithms in GF(P) using the number field sieve. SIAM J. Discrete Math., 6(1) :124–138, 1993. [GPS06] Robert Granger, Dan Page, and Nigel P. Smart. High security pairing-based cryptography revisited. In ANTS, pages 480–494, 2006. [GPS08] Steven D. Galbraith, Kenneth G. Paterson, and Nigel P. Smart. Pairings for cryptographers. Discrete Applied Mathematics, 156(16) :3113–3121, 2008. [JL03] Antoine Joux and Reynald Lercier. Improvements to the general number field sieve for discrete logarithms in prime fields. a comparison with the gaussian integer method. Math. Comput., 72(242) :953–967, 2003. [JL06] Antoine Joux and Reynald Lercier. The function field sieve in the medium prime case. In EUROCRYPT, pages 254–270, 2006. [JLSV06] Antoine Joux, Reynald Lercier, Nigel P. Smart, and Frederik Vercauteren. The number field sieve in the medium prime case. In CRYPTO, pages 326–344, 2006. [Jou04] Antoine Joux. A one round protocol for tripartite Diffie-Hellman. J. Cryptology, 17(4) :263–276, 2004. [Jou09] Antoine Joux. Algorithmic Cryptanalysis. CRC Press, 2009. [Jou13] Antoine Joux. A new index calculus algorithm with complexity l(1/4+o(1)) in very small characteristic. IACR Cryptology ePrint Archive, 2013 :95, 2013. [JP13] Antoine Joux and Cécile Pierrot. The special number field sieve in Fpn , Application to pairing-friendly constructions. Cryptology ePrint Archive, Report 2013/582, 2013. [Kal97] Michael Kalkbrener. An upper bound on the number of monomials in determinants of sparse matrices with symbolic entries. In Mathematica Pannonica 8, pages 73–82, 1997. [KM05] Neal Koblitz and Alfred Menezes. Pairing-based cryptography at high security levels. In IMA Int. Conf., pages 13–36, 2005. [Kra22] M Kraïtchik. Théorie des nombres. Gauthier–Villars, 1922. [LV01] Arjen K. Lenstra and Eric R. Verheul. Selecting cryptographic key sizes. J. Cryptology, 14(4) :255–293, 2001. [Mon95] Peter L. Montgomery. A block lanczos algorithm for finding dependencies over gf(2). In EUROCRYPT, pages 106–120, 1995. [Nat03] National Institute of Standards and Technology. Special publication 800-56 : Recommendation on key establishment schemes, Draft 2.0. 2003. [Odl84] Andrew M. Odlyzko. Discrete logarithms in finite fields and their cryptographic significance. In EUROCRYPT, pages 224–314, 1984. [Pat02] Kenneth G. Paterson. Id-based signatures from pairings on elliptic curves. IACR Cryptology ePrint Archive, 2002 :4, 2002. [PGF98] Daniel Panario, Xavier Gourdon, and Philippe Flajolet. An analytic approach to smooth polynominals over finite fields. In ANTS, pages 226–236, 1998. [Pol78] John Pollard. Monte Carlo methods for index computations mod p. In Mathematics of Computation, pages 918–924, 1978. [Sch93] Oliver Schirokauer. Discrete logarithm and local units. Philosophical Transactions of the Royal Society of London, pages 409–423, 1993. [Sch05] Oliver Schirokauer. Virtual logarithms. J. Algorithms, 57(2) :140–147, 2005. [Sch06] Oliver Schirokauer. The number field sieve for integers of low weight. IACR Cryptology ePrint Archive, 2006 :107, 2006. [Sch08] Oliver Schirokauer. The impact of the number field sieve on the discrete logarithm problem in finite fields. Algorithmic Number Theory, 44, 2008. 52 [Sco05] Michael Scott. Scaling security in pairing-based protocols. IACR Cryptology ePrint Archive, 2005 :139, 2005. [Sem02] Igor A. Semaev. Special prime numbers and discrete logs in finite prime fields. Math. Comput., 71(237) :363–377, 2002. [SK03] Ryuichi Sakai and Masao Kasahara. Id based cryptosystems with pairing on elliptic curve. IACR Cryptology ePrint Archive, 2003 :54, 2003. [vol] http ://www.voltage.com/technology/identity-based-encryption/. l’entreprise Voltage, spécialisée en sécurité informatique. Site officiel de