Algorithme de Schoof

De testwiki
Version datée du 9 mars 2024 à 01:33 par imported>Isurus88 (Link)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

LModèle:'algorithme de Schoof est un algorithme efficace pour compter les points de courbes elliptiques sur les corps finis. Il a des applications en cryptographie sur les courbes elliptiques, où il est utilisé pour construire des courbes elliptiques ayant un cardinal divisible par un grand nombre premier.

L'algorithme a été publié par René Schoof en 1985, ce qui a constitué une avancée majeure, s'agissant du premier algorithme déterministe polynomial pour le comptage de points. Avant cet algorithme, seules des méthodes de complexité exponentielle étaient connues pour ce problème, tels l'algorithme naïf et l'algorithme pas de bébé pas de géant.

Introduction

Soit E une courbe elliptique définie sur le corps fini 𝔽q, où q=pn avec p un nombre premier et n un entier 1. Supposant p2,3, une courbe elliptique peut être exprimée par l'équation de Weierstrass (simplifiée)

y2=x3+Ax+B

avec A,B𝔽q. L'ensemble E(𝔽q) des points définis sur 𝔽q est formé par les solutions (a,b)𝔽q2 qui satisfont l'équation de Weierstrass, et un point à l'infini O. La loi de groupe de E restreinte à cet ensemble donne une structure de groupe abélien à E(𝔽q), avec O pour élément neutre. Le problème du comptage des points consiste à calculer la cardinalité de E(𝔽q). L'algorithme de Schoof's pour calculer la cardinalité E(𝔽q) combine le théorème de Hasse sur les courbes elliptiques avec le théorème des restes chinois et les polynômes de division.

Théorème de Hasse

Modèle:Article général Soit E/𝔽q une courbe elliptique définie sur le corps fini 𝔽q, son groupe de points E(𝔽q) satisfait

q+1E(𝔽q)2q.

Ce résultat, énoncé par Helmut Hasse en 1934, restreint l'espace de recherche à un ensemble fini, bien que large, de possibilités. En définissant t=q+1E(𝔽q), et en faisant appel à ce théorème, calculer la valeur de t modulo N avec N>4q suffit à déterminer t, et ainsi E(𝔽q). Bien qu'on ne connaisse pas de méthode efficace pour calculer t(modN) directement pour un N quelconque, il est possible de calculer t(mod) pour un petit premier efficacement. En choisissant un ensemble de nombres premiers S={1,2,...,r} tels que i=N>4q, et en calculant t(modi) pour tout iS, le théorème des restes chinois permet de calculer t(modN).

Pour calculer t(mod) pour un nombre premier p, l'algorithme s'appuie sur les propriétés de l'endomorphisme de Frobenius ϕ et des polynômes de division.

Endomorphisme de Frobenius

Soit E définie sur 𝔽q, on considère les points de E dans la clôture algébrique 𝔽¯q de 𝔽q, c'est-à-dire les points à coordonnées dans 𝔽¯q. L'automorphisme de Frobenius de 𝔽¯q sur 𝔽q s'étend en un endomorphisme de la courbe elliptique par ϕ:(x,y)(xq,yq) et ϕ:OO. Ce morphisme agit comme l'identité sur E(𝔽q), et on vérifie qu'il est un morphisme de groupes de E(𝔽q¯) vers lui-même. L'endomorphisme de Frobenius satisfait un polynôme quadratique, lié à la cardinalité de E(𝔽q) par le théorème suivant:

Modèle:Théorème

Par conséquent, pour tout P=(x,y)E on a (xq2,yq2)+q(x,y)=t(xq,yq), où on a noté + l'addition de la courbe elliptique et q(x,y) et t(xq,yq) la multiplication scalaire de (x,y) par q et de (xq,yq) par t.

On pourrait imaginer de calculer (xq2,yq2), (xq,yq) et q(x,y) comme des fonctions dans l'anneau des coordonnées 𝔽q[x,y]/(y2x3AxB) de E, et ensuite de chercher la valeur t qui satisfait l'équation, mais la croissance des degrés des polynômes en jeu donnerait un algorithme de complexité exponentielle. L'idée de Schoof consiste à faire ce même calcul en se restreignant aux points d'ordre pour plusieurs petits premiers .

Pour un premier fixé, différent de 2 et p, il faut donc déterminer la valeur de t(mod). Soit (x,y) un point appartenant au groupe de -torsion E[]={PE(𝔽q¯)P=O}, alors qP=q¯P, où q¯ est le seul entier tel que qq¯(mod) et q¯</2. Puisque ϕ est un morphisme de groupes injectif, ϕ(P) à le même ordre que P, alors pour (x,y) dans E[], on a aussi t(xq,yq)=t¯(xq,yq) si tt¯(mod). Le problème se réduit alors à résoudre l'équation

(xq2,yq2)+q¯(x,y)t¯(xq,yq),

t¯ et q¯ sont des entiers dans l'intervalle [(l1)/2,(l1)/2].

Calcul modulo un petit premier

Par définition, le -ième polynôme de division ψ a pour racines les abscisses des points d'ordre . Alors calculer le polynôme (xq2,yq2)+q¯(x,y) restreint aux points de -torsion revient à faire les calculs dans l'anneau des coordonnées de E modulo le -ième polynôme de division, c'est-à-dire dans l'anneau 𝔽q[x,y]/(y2x3AxB,ψ). En particulier, le degré de X et Y dans (X(x,y),Y(x,y)):=(xq2,yq2)+q¯(x,y) est au plus 1 en y et au plus (23)/2 en x.

La multiplication scalaire q¯(x,y) se calcule soit par exponentiation rapide, soit par la formule suivante

q¯(x,y)=(xq¯,yq¯)=(xψq¯1ψq¯+1ψq¯2,ψ2q¯2ψq¯4)

ψn est le n-ième polynôme de division. On remarque que yq¯/y est une fonction en x uniquement, et on la note θ(x).

Il y a alors deux cas: soit (xq2,yq2)±q¯(x,y), soit (xq2,yq2)=±q¯(x,y). On rappelle que ces égalités sont calculées modulo ψ.

Premier cas Modèle:Math

Par la loi de groupe de E(𝔽q) on a:

X(x,y)=(yq2yq¯xq2xq¯)2xq2xq¯.

L'équation sur l'abscisse x permet alors de restreindre le choix à deux possibilités pour t¯, l'une l'opposée de l'autre. Ensuite l'ordonnée y permet de conclure.

On commence par montrer que X est une fonction du seul x. On considère (yq2yq¯)2=y2(yq21yq¯/y)2, puisque q21 est pair, remplacer y2 par x3+Ax+B donne

(x3+Ax+B)((x3+Ax+B)q212θ(x))

et on conclut que

X(x)(x3+Ax+B)((x3+Ax+B)q212θ(x))modψ(x).

Maintenant, si Xxt¯qmodψl(x) pour un t¯[0,(1)/2], alors t¯ satisfait

ϕ2(P)t¯ϕ(P)+q¯P=O

pour tous les points P de -torsion.

Comme dit auparavant, les valeurs de Y et yt¯q permettent de conclure lequel parmi t¯ et t¯ vérifie l'équation, donnant ainsi la valeur de tt¯(mod).

Deuxième cas Modèle:Math

On commence par le cas (xq2,yq2)=q¯(x,y). Puisque est impair, on ne peut pas avoir q¯(x,y)=q¯(x,y), et donc t¯0. L'équation caractéristique donne t¯ϕ(P)=2q¯P, par conséquent t¯2q¯(2q)2(mod). Ceci implique que q est un carré modulo . Soit qw2(mod), il suffit maintenant de calculer wϕ(x,y) dans 𝔽q[x,y]/(y2x3AxB,ψ) et de vérifier que q¯(x,y)=wϕ(x,y). Dans ce cas t est égal à ±2w(mod) selon la valeur de l'ordonnée.

Si q n'est pas un carré modulo , ou si l'équation n'est vérifiée ni pour w, ni pour w, l'hypothèse (xq2,yq2)=+q¯(x,y) est fausse, et donc (xq2,yq2)=q¯(x,y). L'équation caractéristique permet alors de conclure que t=0.

Cas additionnel Modèle:Math

L'exposition qui précède avait exclu le cas =2, qui doit être traité à part. Puisqu'on suppose que q est impair, q+1tt(mod2) et en particulier, t20(mod2) si et seulement si E(𝔽q) a un point d'ordre 2. Par définition, tout élément d'ordre 2 est de la forme (x0,0). Alors t20(mod2) si et seulement si x3+Ax+B a une racine dans 𝔽q, si et seulement si gcd(xqx,x3+Ax+B)1.

Algorithme

(1) Choisir un ensemble de premiers S, ne contenant pas p tel que N=S>4q.
(2) Poser t2=0 si gcd(xqx,x3+Ax+B)1, sinon poser t2=1.
(4) Pour tout S:
(a) Calculer le polynôme de division ψ. Tous les calculs qui suivent se font dans l'anneau 𝔽q[x,y]/(y2x3AxB,ψ).
(b) Soit q¯ le seul entier tel que qq¯(mod) et q¯</2.
(c) Calculer (xq,yq), (xq2,yq2) et (xq¯,yq¯) .
(d) si xq2xq¯ alors
(i) Calculer (X,Y).
(ii) Pour tout 1t¯(1)/2:
(iii) si X=xt¯q alors
(iv) si Y=yt¯q alors t=t¯; sinon t=t¯.
(e) sinon, si q est un carré modulo alors
(i) calculer w tel que qw2(mod)
(ii) calculer w(xq,yq)
(iii) si w(xq,yq)=(xq2,yq2) alors t=2w
(iv) sinon, si w(xq,yq)=(xq2,yq2) alors t=2w
(v) sinon t=0
(f) sinon t=0
(5) Utiliser le Théorème des restes chinois pour calculer t modulo N.

On remarque que, puisque S a été choisi tel que N>4q, le théorème de Hasse permet de déduire t et E(𝔽q)=q+1t.

Complexité

Le calcul le plus coûteux est l'évaluation de ϕ(P) et ϕ2(P), pour chaque premier , c'est-à-dire le calcul de xq, yq, xq2, yq2 pour tout . Ceci requiert des exponentiations dans l'anneau R=𝔽q[x,y]/(y2x3AxB,ψ) et demande O(logq) multiplications. Comme le degré de ψ est 212, chaque élément de l'anneau est un polynôme de degré O(2). Par le théorème des nombres premiers, il y a environ O(logq) premiers de taille O(logq), ce qui implique que tous les sont dans O(logq) et donc O(2)=O(log2q). Par conséquent chaque multiplication dans l'anneau R demande O(log4q) multiplications dans 𝔽q, chaque multiplication nécessitant de O(log2q) opérations. Au total, le nombre d'opérations binaires pour chaque premier est O(log7q). Puisqu'il faut répéter ce calcul pour chacun des O(logq) premiers, la complexité de l'algorithme de Schoof est de O(log8q) opérations binaires. Les techniques de multiplication rapide d'entiers et de polynômes réduit cette complexité à O~(log5q).

Améliorations de l'algorithme de Schoof

Dans les années '90, A. O. L. Atkin et puis Noam Elkies, ont proposé des améliorations à l'algorithme original de Schoof en restreignant l'ensemble S={1,,s} de premiers pris en considération. Ces premiers ont par la suite été appelés respectivement premiers de Atkin et de Elkies. Un premier est dit d'Elkies si l'équation caractéristique du Frobenius ϕ2tϕ+q=0 se scinde dans 𝔽, il est dit un premier d'Atkin sinon. Atkin a montré comment combiner l'information obtenue par les premiers d'Atkin avec celle obtenue par ceux d'Elkies afin de concevoir un algorithme efficace, appelé algorithme de Schoof–Elkies–Atkin (ou SEA). Le premier problème dans cet algorithme consiste à déterminer si un premier donné et d'Elkies ou d'Atkin. À cette fin, on étudie les propriétés de factorisation du polynôme modulaire, un objet dérivé de la théorie des formes modulaires et des courbes elliptiques sur les complexes.

Une fois déterminé le type de premier, la complexité optimale pour l'algorithme SEA est obtenue en travaillant uniquement avec les premiers d'Elkies. Dans ce cas, en effet, il est possible de remplacer les polynômes de division par des polynômes de degré plus petit: O() plutôt que O(2). Pour une réalisation efficace, il est nécessaire d'utiliser des algorithmes probabilistes pour la factorisation de polynômes, ce qui fait de l'algorithme SEA un algorithme de Las Vegas. Sous l'hypothèse heuristique qu'environ la moitié des nombres premiers jusqu'à une borne de O(logq) sont des premiers d'Elkies, ceci donne un algorithme plus efficace que l'algorithme de Schoof, d'une complexité moyenne de O(log6q) en utilisant une arithmétique naïve, ou de O~(log4q) avec une arithmétique rapide.

Implémentations

Il existe des nombreuses implémentations de l'algorithme de Schoof et de SEA.

  • Le logiciel de calcul formel PARI/GP contient une implémentation de SEA pour les corps premiers[1].
  • Le logiciel Magma (logiciel) contient une implémentation de SEA pour tout corps fini[2].
  • Mike Scott a mis dans le domaine public une implémentation en C++ [3] de l'algorithme de Schoof sur les corps premiers et les corps quadratiques. Le logiciel dépend de la bibliothèque MIRACL, distribuée sous la licence AGPLv3.

Voir aussi

Références

Modèle:Références Modèle:Traduction/Référence

  • R. Schoof: Elliptic Curves over Finite Fields and the Computation of Square Roots mod p. Math. Comp., 44(170):483–494, 1985. Available at http://www.mat.uniroma2.it/~schoof/ctpts.pdf
  • R. Schoof: Counting Points on Elliptic Curves over Finite Fields. J. Theor. Nombres Bordeaux 7:219–254, 1995. Available at http://www.mat.uniroma2.it/~schoof/ctg.pdf
  • G. Musiker: Schoof's Algorithm for Counting Points on E(𝔽q). Available at http://www.math.umn.edu/~musiker/schoof.pdf
  • V. Müller : Die Berechnung der Punktanzahl von elliptischen kurven über endlichen Primkörpern. Master's Thesis. Universität des Saarlandes, Saarbrücken, 1991. Available at http://lecturer.ukdw.ac.id/vmueller/publications.php
  • A. Enge: Elliptic Curves and their Applications to Cryptography: An Introduction. Kluwer Academic Publishers, Dordrecht, 1999.
  • L. C. Washington: Elliptic Curves: Number Theory and Cryptography. Chapman & Hall/CRC, New York, 2003.
  • N. Koblitz: A Course in Number Theory and Cryptography, Graduate Texts in Math. No. 114, Springer-Verlag, 1987. Second edition, 1994

Modèle:Portail