Número primo de la forma que permite una rápida reducción modular.
En matemáticas , un primo de Solinas, o primo de Mersenne generalizado , es un número primo que tiene la forma , donde es un polinomio de bajo grado con coeficientes enteros pequeños . [1] [2] Estos números primos permiten algoritmos de reducción modular rápidos y se utilizan ampliamente en criptografía . Llevan el nombre de Jerónimo Solinas.
Esta clase de números abarca algunas otras categorías de números primos:
- Primos de Mersenne , que tienen la forma ,
- Primos de Crandall o pseudo-Mersenne, que tienen la forma de impares pequeños . [3]
Algoritmo de reducción modular
Sea un polinomio mónico de grado con coeficientes en y supongamos que es un primo de Solinas. Dado un número con hasta bits, queremos encontrar un número congruente con mod solo con tantos bits como , es decir, con como máximo bits.
Primero, representa en base :
A continuación, genere una matriz por pasos multiplicando por el registro de desplazamiento de retroalimentación lineal definido por el polinomio : comenzando con el registro entero , desplace una posición hacia la derecha, inyectando a la izquierda y sumando (por componentes) el valor de salida multiplicado por el vector en cada paso (ver [1] para más detalles). Sea el número entero en el registro ésimo en el paso ésimo y tenga en cuenta que la primera fila de está dada por . Entonces si denotamos por el vector entero dado por:
- ,
se puede comprobar fácilmente que:
- .
Por tanto, representa un número entero de bits congruente con .
Para elecciones juiciosas (nuevamente, ver [1]), este algoritmo implica solo un número relativamente pequeño de sumas y restas (¡y ninguna división!), por lo que puede ser mucho más eficiente que el ingenuo algoritmo de reducción modular ( ).
Ejemplos
Cuatro de los números primos recomendados en el documento del NIST "Curvas elípticas recomendadas para uso del gobierno federal" son primos de Solinas:
- p-192
- p-224
- p-256
- p-384
Curve448 utiliza la prima de Solinas
Ver también
Referencias
- ^ Solinas, Jerome A. (1999). Números generalizados de Mersenne (PDF) (Informe técnico). Centro de Investigación Criptográfica Aplicada, Universidad de Waterloo. CORR-99-39.
- ^ Solinas, Jerome A. (2011). "Mersenne Prime generalizado". En Tilborg, furgoneta Henk CA; Jajodia, Sushil (eds.). Enciclopedia de Criptografía y Seguridad . Springer Estados Unidos. págs. 509–510. doi :10.1007/978-1-4419-5906-5_32. ISBN 978-1-4419-5905-8.
- ^ Patente estadounidense 5159632, Richard E. Crandall, "Método y aparato para el intercambio de claves públicas en un sistema criptográfico", emitida el 27 de octubre de 1992, asignada a NeXT Computer, Inc.