Calcul de Logarithmes Discrets dans Fp par Crible Spécial de Corps

publicité
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
Téléchargement