Algoritmo de Shuf

El algoritmo de Schuf  es un algoritmo eficiente [1] para contar el número de puntos en una curva elíptica sobre un campo finito . El algoritmo tiene aplicaciones en criptografía elíptica , donde es importante conocer el número de puntos para juzgar la dificultad de resolver un problema de logaritmo discreto sobre un grupo de puntos en una curva elíptica.

El algoritmo fue publicado en 1985 por René Chouf y fue un gran avance teórico ya que fue el primer algoritmo de tiempo polinomial determinista para contar puntos en una curva elíptica . Antes del algoritmo de Schuf, los enfoques para contar puntos en curvas elípticas, como el algoritmo simple de pasos pequeños y grandes , eran en su mayor parte laboriosos y requerían un tiempo de ejecución exponencial.

Este artículo explica el enfoque de Schuf, centrándose en las ideas matemáticas detrás del algoritmo.

Introducción

Sea  una curva elíptica definida sobre un campo finito , donde para primo y entero . Sobre un campo con característica , se puede dar (brevemente) una curva elíptica mediante la ecuación de Weierstrass

con _ El conjunto de puntos definidos sobre consiste en soluciones que satisfacen la ecuación de la curva y el punto en el infinito . Si uno usa la ley de grupo sobre curvas elípticas en este conjunto, puede ver que este conjunto forma un grupo abeliano , en el que actúa como el elemento cero. Para contar puntos en una curva elíptica, calculamos la cardinalidad del conjunto . El enfoque de Schuf utiliza el teorema de la curva elíptica de Hasse , junto con el teorema del resto chino y los polinomios de división para calcular la cardinalidad .

Teorema de Hasse

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

Este fuerte resultado, obtenido por Hasse en 1934, simplifica nuestra tarea reduciéndola a un conjunto finito (aunque grande) de posibilidades. Si determinamos cómo y usamos este resultado, obtenemos que el cálculo del módulo de potencia , donde , es suficiente para calcular , y por lo tanto para obtener . Aunque no existe una forma eficiente de calcular directamente números generales, es posible calcular con bastante eficiencia un número primo pequeño . Elegimos como un conjunto de diferentes números primos, tal que . Si se da para todos , el teorema chino del resto le permite calcular .

Para calcular primos , usamos la teoría del endomorfismo de Frobenius y los polinomios de división . Tenga en cuenta que considerar números primos no genera problemas, ya que siempre podemos elegir un número primo mayor para garantizar que el producto sea lo suficientemente grande. En cualquier caso, el algoritmo de Schuf se usa con mayor frecuencia para el caso , ya que existen algoritmos más eficientes, los llamados -ádicos, para campos con características pequeñas.

Endomorfismo de Frobenius

Dada una curva elíptica definida sobre , consideramos los puntos sobre sobre , la clausura algebraica del campo . Es decir, permitimos que los puntos tengan coordenadas en . El endomorfismo de Frobenius sobre extiende una curva elíptica con un mapeo .

Este mapa es idéntico y se puede extender por un punto hasta el infinito , lo que lo convierte en un morfismo de grupo sobre sí mismo.

El endomorfismo de Frobenius satisface una ecuación cuadrática relacionada con la potencia por el siguiente teorema:

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

, dónde

Entonces, para todo lo que tenemos , donde + significa la suma de una curva elíptica, y y significa el producto escalar de un punto en y un punto en [2] .

Puede intentar calcular estos puntos en forma simbólica y como funciones en el anillo de coordenadas en la curva y luego buscar un valor que satisfaga la ecuación. Sin embargo, los grados resultan ser muy grandes y este enfoque no tiene valor práctico.

La idea de Schuf era realizar este tipo de cálculos, limitándose a los puntos de orden de varios números primos pequeños . Fijando un número primo impar, se procede a resolver el problema de determinar , definido como , para un primo dado . Si el punto está en el subgrupo -torsión de , entonces , donde es el único entero tal que y . Tenga en cuenta que y que para cualquier número entero tenemos . Por lo tanto, tiene el mismo orden que . Entonces para , que pertenece a , también tenemos si . En consecuencia, hemos reducido nuestro problema a resolver la ecuación

donde y se encuentran en el intervalo .

Módulo de cálculos

El polinomio de división con índice l  es un polinomio tal que sus raíces son exactamente lascoordenadas x de los puntos de orden l . Entonces la restricción del cálculoa los l -puntos de torsión significa el cálculo de estas expresiones como funciones del anillo de coordenadas E y del módulo del polinomio de l -ésima división. Es decir, trabajamos en. Esto significa, en particular, que el grado de X e Y definido porno excede de 1 con respecto a la variable y ycon respecto a la variable x .

El producto escalar se puede hacer con el método de duplicar y sumar , o con el polinomio de división th. El segundo enfoque da:

,

donde  es el polinomio de la n-ésima división. Tenga en cuenta que es una función solo de x , denotemos esta función por .

Debemos dividir el problema en dos casos: el caso en que , y el caso en que .

Caso 1:

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

Tenga en cuenta que este cálculo es imposible si falla el supuesto de desigualdad.

Ahora podemos reducir la elección de la coordenada x para dos posibilidades, a saber, los casos positivo y negativo. Usando la coordenada y , determinamos cuál de los dos casos ocurre.

Primero mostramos que X es una función de x solamente . Considere . Como es par, reemplazando con , reescribimos la expresión como

y tenemos

Ahora, si para , entonces la igualdad es cierta para

para todos los puntos de P l -torsión.

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

Caso 2:

Supongamos que . Como l es un número primo impar, es imposible que , y por lo tanto . De la ecuación característica se sigue que , y por lo tanto que . Se sigue que q es un módulo cuadrado l . deja _ Calcular y comprobar si . Si es así, entonces es , dependiendo de la coordenada y.

Si q no es cuadrado módulo l , o si la igualdad falla para alguna w y , nuestra suposición es incorrecta, entonces . La ecuación característica da .

Caso adicional

Recuerde, nuestros acuerdos iniciales no consideran el caso . Ya que asumimos que q es impar, y, en particular, si y sólo si tiene un elemento de orden 2. Por la definición de suma en un grupo, cualquier elemento de orden 2 debe tener la forma . Por lo tanto, si y solo si el polinomio tiene una raíz en , si y solo si mcd .

Algoritmo

Aporte: 1. Curva elíptica . 2. Un número entero q para un campo finito con . Conclusión: Número de puntos E sobre . Elegimos un conjunto de primos impares S , que no contenga p , tales que Aceptamos si mcd , de lo contrario aceptamos . Calculamos el polinomio de división . Todos los cálculos en el bucle de abajo se llevan a cabo en el anillo . Para ejecutamos : Sea el único entero tal que y . Calculamos , y . Si entonces Calcula . para hacer : si entonces si entonces ; de lo contrario de lo contrario, si q es un cuadrado módulo l , entonces calcule w con calcule si entonces de lo contrario si entonces de otro modo de lo contrario Use el teorema del resto chino para calcular t módulo N a partir de la ecuación donde . Derivamos .

Dificultad

La mayoría de los cálculos implican calcular y , para cada número primo , es decir , calcular , , para cada número primo . Los cálculos involucran exponenciación en el anillo y requieren multiplicaciones. Como el grado es , cada elemento del anillo es un polinomio de grado . Por el teorema de los números primos, hay aproximadamente números primos de tamaño , lo que da , y obtenemos . Por lo tanto, cada multiplicación en el anillo requiere multiplicaciones en , lo que a su vez requiere operaciones bit a bit. En total, el número de operaciones de bits para cada número primo es . Suponiendo que este cálculo debe realizarse para cada uno de los números primos, la complejidad total del algoritmo de Schuf se convierte en . El uso de operaciones polinómicas rápidas y aritmética de enteros reduce este tiempo a .

Mejoras al algoritmo de Schuf

En la década de 1990, Noam Elkis y luego A. O. L. Atkin propusieron mejoras al algoritmo básico de Schuf al restringir el conjunto de números primos a números de cierto tipo. Estos números se conocieron como primos de Elkis y primos de Atkin, respectivamente. Un número primo se llama primo de Elkis si la igualdad característica es descomponible en , y los números primos de Atkin son números primos que no son números primos de Elkis. Atkin mostró cómo combinar la información obtenida de los números primos de Atkin con la información obtenida de los números primos de Elkis para obtener un algoritmo eficiente, que se denominó " Algoritmo Schoof-Elkis-Atkin . La primera tarea es determinar si un número primo dado es un número primo de Elkis o de Atkin. Para conseguir esto, utilizamos polinomios modulares, que surgen al estudiar formas modulares e interpretar curvas elípticas sobre el campo de números complejos como redes. Una vez que determinamos qué caso tenemos, en lugar de usar polinomios de división , podemos trabajar con polinomios que tienen grados más bajos que los polinomios de división: en lugar de . Para una implementación eficiente, se utilizan algoritmos probabilísticos de búsqueda de raíces, lo que hace que el algoritmo sea un algoritmo de Las Vegas , en lugar de un algoritmo determinista. Bajo la suposición heurística de que aproximadamente la mitad de los números primos menores o iguales son números primos de Elkis, esto produce un algoritmo que es más eficiente que el algoritmo de Schoof, y el tiempo de ejecución esperado de este algoritmo es , si se usa aritmética ordinaria, y , si se usa aritmética rápida. Cabe señalar que esta suposición heurística es cierta para la mayoría de las curvas elípticas, pero no se conoce para el caso general, incluso si la hipótesis de Riemann generalizada es cierta .

Implementaciones

Algunos de los algoritmos han sido implementados en C++ por Mike Scott y están disponibles en código fuente . La implementación es absolutamente gratuita (sin condiciones, sin restricciones), pero utiliza la biblioteca MIRACL , que se distribuye bajo la licencia AGPLv3 .

Véase también

Notas

  1. Aunque, el artículo de ECDSA dice lo siguiente: el algoritmo de Skoof es bastante ineficiente en la práctica para valores de p que son realmente de interés, es decir, p > 2 160 .
  2. El punto mP, igual a la suma m-veces del punto P en el grupo aditivo de puntos de una curva elíptica, se llama producto escalar del punto y el número m , y los puntos mP mismos se llaman múltiplos escalares de el punto ( Rybolovlev 2004 ). En el libro de Tiborg ( van Tilborg 2006 ) el mismo concepto se denomina múltiplo escalar.

Literatura