stringtranslate.com

algoritmo de Schoof

El algoritmo de Schoof es un algoritmo eficiente para contar puntos en curvas elípticas sobre campos finitos . El algoritmo tiene aplicaciones en criptografía de curva elíptica donde es importante conocer el número de puntos para juzgar la dificultad de resolver el problema de logaritmos discretos en el grupo de puntos de una curva elíptica.

El algoritmo fue publicado por René Schoof en 1985 y supuso un avance teórico, ya que fue el primer algoritmo de tiempo polinómico determinista para contar puntos en curvas elípticas . Antes del algoritmo de Schoof, los enfoques para contar puntos en curvas elípticas, como los algoritmos ingenuos y de pasos gigantes, eran, en su mayor parte, tediosos y tenían un tiempo de ejecución exponencial.

Este artículo explica el enfoque de Schoof, poniendo énfasis en las ideas matemáticas subyacentes a la estructura del algoritmo.

Introducción

Sea una curva elíptica definida sobre el campo finito , donde para un número primo y un número entero . Sobre un campo de características, se puede dar una curva elíptica mediante una ecuación (corta) de Weierstrass.

con . El conjunto de puntos definido consta de las soluciones que satisfacen la ecuación de la curva y un punto en el infinito . Usando la ley de grupo sobre curvas elípticas restringida a este conjunto, se puede ver que este conjunto forma un grupo abeliano , actuando como elemento cero. Para contar puntos en una curva elíptica, calculamos la cardinalidad de . El enfoque de Schoof para calcular la cardinalidad hace uso del teorema de Hasse en curvas elípticas junto con el teorema del resto chino y los polinomios de división .

teorema de hasse

El teorema de Hasse establece que si es una curva elíptica sobre el campo finito , entonces satisface

Este poderoso resultado, proporcionado por Hasse en 1934, simplifica nuestro problema al reducirlo a un conjunto finito (aunque grande) de posibilidades. Definiendo ser y haciendo uso de este resultado, ahora tenemos que calcular el valor del módulo donde es suficiente para determinar y por lo tanto . Si bien no existe una forma eficiente de calcular directamente para general , es posible calcular para un primo pequeño, de manera bastante eficiente. Elegimos ser un conjunto de primos distintos tales que . Dado para todos , el teorema chino del resto nos permite calcular .

Para calcular un número primo , utilizamos la teoría del endomorfismo de Frobenius y la división de polinomios . Tenga en cuenta que considerar números primos no supone ninguna pérdida, ya que siempre podemos elegir un número primo más grande para que ocupe su lugar y garantizar que el producto sea lo suficientemente grande. En cualquier caso, el algoritmo de Schoof se utiliza con mayor frecuencia para abordar el caso, ya que existen algoritmos más eficientes, los llamados algoritmos ádicos, para campos de características pequeñas.

El endomorfismo de Frobenius

Dada la curva elíptica definida sobre consideramos puntos sobre , el cierre algebraico de ; es decir, permitimos puntos con coordenadas en . El endomorfismo de Frobenius de over se extiende a la curva elíptica por .

Este mapa es la identidad y se puede extender hasta el punto del infinito , convirtiéndolo en un morfismo de grupo desde hacia sí mismo.

El endomorfismo de Frobenius satisface un polinomio cuadrático que está vinculado a la cardinalidad de mediante el siguiente teorema:

Teorema: El endomorfismo de Frobenius dado por satisface la ecuación característica

dónde

Así tenemos para todo eso , donde + denota suma en la curva elíptica y y denota multiplicación escalar de por y de por .

Se podría intentar calcular simbólicamente estos puntos y como funciones en el anillo de coordenadas de y luego buscar un valor que satisfaga la ecuación. Sin embargo, los grados se hacen muy grandes y este enfoque no es práctico.

La idea de Schoof era realizar este cálculo restringido a cuestiones de orden para varios números primos pequeños . Fijando un número primo impar , pasamos ahora a resolver el problema de determinar , definido como , para un número primo dado . Si un punto está en el subgrupo de torsión , entonces ¿dónde está el número entero único tal que y ? Tenga en cuenta eso y eso para cualquier número entero que tengamos . Por lo tanto tendrá el mismo orden que . Así, para pertenecer a , también tenemos if . Por lo tanto hemos reducido nuestro problema a resolver la ecuación

donde y tienen valores enteros en .

Primos de módulo de cálculo

El polinomio de división l es tal que sus raíces son precisamente las coordenadas x de puntos de orden l . Por lo tanto, restringir el cálculo de a los l -puntos de torsión significa calcular estas expresiones como funciones en el anillo de coordenadas de E y módulo del polinomio de división l . Es decir, estamos trabajando en . Esto significa en particular que el grado de X e Y definido mediante es como máximo 1 en y y como máximo en x .

La multiplicación escalar se puede realizar mediante métodos de duplicación y suma o utilizando el polinomio de división enésima. El último enfoque da:

¿ Dónde está el polinomio de n- ésima división? Tenga en cuenta que es una función solo en x y denotela por .

Debemos dividir el problema en dos casos: el caso en el que y el caso en el que . Tenga en cuenta que estas igualdades se verifican módulo .

Caso 1: ( x q 2 , y q 2 ) ≠ ± q ¯ ( x , y ) {\displaystyle (x^{q^{2}},y^{q^{2}})\neq \pm {\bar {q}}(x,y)}

Usando la fórmula de suma para el grupo obtenemos:

Tenga en cuenta que este cálculo falla en caso de que el supuesto de desigualdad fuera incorrecto.

Ahora podemos usar la coordenada x para reducir la elección a dos posibilidades, es decir, el caso positivo y el negativo. Usando la coordenada y se determina posteriormente cuál de los dos casos se cumple.

Primero demostramos que X es una función sólo en x . Considerar . Como es par, reemplazando por , reescribimos la expresión como

y tener eso

Aquí, parece que no está bien, ¿lo tiramos ?

Ahora si para uno entonces satisface.

para todos l -puntos de torsión P .

Como se mencionó anteriormente, usando Y y ahora podemos determinar cuál de los dos valores de ( o ) funciona. Esto da el valor de . El algoritmo de Schoof almacena los valores de en una variable para cada l primo considerado.

Caso 2: ( x q 2 , y q 2 ) = ± q ¯ ( x , y ) {\displaystyle (x^{q^{2}},y^{q^{2}})=\pm {\bar {q}}(x,y)}

Comenzamos con el supuesto de que . Dado que l es un número primo impar, no puede serlo y por lo tanto . La ecuación característica produce eso . Y en consecuencia eso . Esto implica que q es un módulo cuadrado l . Dejar . Calcule y verifique si . Si es así, depende de la coordenada y.

Si q resulta no ser un módulo cuadrado l o si la ecuación no se cumple para ninguno de w y , nuestra suposición es falsa, por lo tanto . La ecuación característica da .

Caso adicional l = 2 {\displaystyle l=2}

Si recuerda, nuestras consideraciones iniciales omiten el caso de . Dado que asumimos que q es impar y, en particular, si y solo si tiene un elemento de orden 2. Por definición de suma en el grupo, cualquier elemento de orden 2 debe ser de la forma . Por tanto , si y sólo si el polinomio tiene raíz en , si y sólo si .

el algoritmo

 Aporte: 1. Una curva elíptica . 2. Un número entero q para un campo finito con . Producción: El número de puntos de E sobre . Elija un conjunto de números primos impares S que no contengan p  tal que  Put  if , else .     Calcula el polinomio de división . Todos los cálculos en el bucle siguiente se realizan en el anillo  For  do :   Sea el número entero único  tal que y .  Calcular y .​  si  entonces   Calcular .  para  hacer :   si  entonces   si  entonces   ; demás . de lo contrario, si q es un módulo cuadrado l, entonces calcule w con calcule si, entonces , de lo contrario, si, de lo contrario, utilice el teorema del resto chino para calcular t módulo N a partir de las ecuaciones , donde .                    Producción .

Complejidad

La mayor parte del cálculo se realiza mediante la evaluación de y , para cada primo , es decir, calculando ,,, para cada primo . Esto implica exponenciación en el anillo y requiere multiplicaciones. Como el grado de es , cada elemento del anillo es un polinomio de grado . Según el teorema de los números primos , hay alrededor de primos de tamaño , dando eso es y obtenemos eso . Por lo tanto, cada multiplicación en el anillo requiere multiplicaciones que a su vez requieren operaciones de bits. En total, el número de operaciones de bits para cada primo es . Dado que este cálculo debe realizarse para cada uno de los números primos, la complejidad total del algoritmo de Schoof resulta ser . El uso de aritmética rápida de polinomios y enteros reduce esto a .

Mejoras al algoritmo de Schoof

En la década de 1990, Noam Elkies , seguido de AOL Atkin , idearon mejoras al algoritmo básico de Schoof restringiendo el conjunto de números primos considerados antes a números primos de un determinado tipo. Estos pasaron a denominarse primos de Elkies y primos de Atkin, respectivamente. Un primo se llama primo de Elkies si la ecuación característica: se divide , mientras que un primo de Atkin es un primo que no es un primo de Elkies. Atkin mostró cómo combinar la información obtenida de los primos de Atkin con la información obtenida de los primos de Elkies para producir un algoritmo eficiente, que llegó a conocerse como algoritmo de Schoof-Elkies-Atkin . El primer problema a abordar es determinar si un número primo dado es Elkies o Atkin. Para ello utilizamos polinomios modulares, que provienen del estudio de formas modulares y de la interpretación de curvas elípticas sobre números complejos como retículos. Una vez que hemos determinado en qué caso estamos, en lugar de usar polinomios de división , podemos trabajar con un polinomio que tenga menor grado que el polinomio de división correspondiente: en lugar de . Para una implementación eficiente, se utilizan algoritmos probabilísticos de búsqueda de raíces, lo que lo convierte en un algoritmo de Las Vegas en lugar de un algoritmo determinista. Bajo el supuesto heurístico de que aproximadamente la mitad de los números primos hasta un límite son primos de Elkies, esto produce un algoritmo que es más eficiente que el de Schoof, con un tiempo de ejecución esperado de uso de aritmética ingenua y aritmética rápida. Aunque se sabe que esta suposición heurística se cumple para la mayoría de las curvas elípticas, no se sabe que se cumpla en todos los casos, incluso bajo el GRH .

Implementaciones

Mike Scott implementó varios algoritmos en C++ y están disponibles con el código fuente. Las implementaciones son gratuitas (sin términos ni condiciones) y utilizan la biblioteca MIRACL que se distribuye bajo AGPLv3 .

Ver también

Referencias