Este documento compara diferentes algoritmos para generar números primos fuertes para criptografía. Explica que los números primos fuertes son aquellos con un tamaño de bits grande y cuyos mayores factores también son grandes. Luego describe algoritmos como el método original de RSA, el de Williams/Schmid y el de Gordon, realizando comparativas de tiempo de generación. Concluye recomendando el uso de generadores de primos fuertes como Williams/Schmid para mayor seguridad, siendo este más eficiente que otros métodos.
Generación de números primos fuertes para criptografía
1. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Generaci´on de n´umeros primos fuertes para
criptograf´ıa
Juan Alfredo Salas Santillana
Escuela de Ciencia de la Computaci´on
Universidad Cat´olica San Pablo
4 de julio de 2014
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
2. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Outline
1 Introducci´on
2 Generadores de primos fuertes
El metodo original del rsa
Algoritmo de Williams/Schmid
Algoritmo de Gordon
3 Comparativas
4 Conclusiones
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
3. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Algunas definiciones
N´umero primo: Es un entero mayor que 1 que tiene
´unicamente dos divisores distintos: ´el mismo y el 1
|Q| es el tama˜no en bits de Q.
Criba de Erat´ostenes: Algoritmo que permite hallar todos los
n´umeros primos menores que un n´umero natural dado n
Test de primalidad: Algoritmo que, dado un n´umero de
entrada n, no consigue verificar la hip´otesis de un teorema
cuya conclusi´on es que n es compuesto.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
4. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Qu´e es un primo fuerte
Un n´umero primo fuerte es aquel que cumple las siguientes
caracter´ısticas:
|P| debe ser grande (Actualmente se propone 2048 bits o
m´as).
El mayor factor de P − 1, llamado P debe cumplir que |P |
sea grande.
El mayor factor de P − 1, llamado P debe cumplir que |P |
sea grande.
El mayor factor de P + 1, llamado P+ debe cumplir que |P+|
sea grande.
Estas definiciones pueden variar en la diversa literatura, segun el
autor.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
5. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Espiral de Ulam
La espiral de Ulam, descrita por el matem´atico
polaco-estadounidense Stanislaw Marcin Ulam (1909-1984), es una
forma de representaci´on gr´afica de n´umeros primos que muestra un
patr´on.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
6. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Test de primalidad Miller-Rabin
Dado n un primo mayor a 1 impar del cual queremos saber si es
primo o no. Sea m un valor impar tal que n − 1 = 2km y a tal que
2 ≤ a ≤ n − 2, Cuando se cumple:
am
≡ ±1 m´od n
o
a2r m
≡ −1 m´od n
Para al menos un r entero tal que 1 ≤ r ≤ k − 1, se considera que
n es un probable primo; en caso contrario n no puede ser primo.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
7. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Generador de primos aleatorios
Este algoritmo es una implementaci´on propia y hace uso del
generador de aleatorios URAND del sistema operativo GNU/Linux.
1 Parsear a un entero el valor aleatorio obtenido de /dev/urand
y almacenarlo en A.
2 Calcular
(A m´od (END − START)) + START
donde END y START es el mayor y menor numero que se
almacena en la cantidad de bits indicada.
3 Sumar en una unidad A.
4 Enviar A al test de primalidad de Miller-Rabin.
5 Si A es compuesto regresar al paso 3.
6 Retornar A.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
8. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Pollard P-1
El algoritmo fue desarollado por J. M. Pollard en los 70, el
m´etodo basicamente usa alguna informaci´on acerca del orden
de un elemento en el grupo Zp para encontrar un factor p de
N
El Algoritmo hace uso del Teorema de Fermat el cual indica,
Dado un primo p y un a ∈ Z tal que p a entonces ap−1 ≡ 1
m´od p.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
9. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Pollard P-1
1 Seleccionar un limite superior para B (Usualmente 105 y 106)
2 Calcular m = lcm(B), Puede ser calculado mediante la
multiplicatoria de los primos generados mediante la Criba de
Erat´ostenes.
3 Seleccionar un entero aleatorio positivo entre 1 y n
4 Calcular d = gcd(a, n).
Si d = 1, retornar d. (Este es un factor no trivial de n)
5 Calcular am m´od n
6 Calcular e = gcd(am − 1, n)
Si e = 1, ir a 1 e incrementar B.
Si e = n, ir a 3 y cambiar a.
Si e = 1 y e = n, retornar d. (Este es un factor no trivial de n)
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
10. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
El metodo original del rsa
Algoritmo de Williams/Schmid
Algoritmo de Gordon
Descripci´on
El algoritmo planteado en el articulo original de RSA, tiene la
caracteristica de encontrar un numero P primo el cual ser´a el
menor factor de (P − 1) que ser´a el menor factor de (P − 1).
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
11. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
El metodo original del rsa
Algoritmo de Williams/Schmid
Algoritmo de Gordon
Algoritmo
1 Encontrar un primo P con un tama˜no de bits elegido.
2 Calcular P = A P + 1
Para alg´un entero A , el cual debe ser encontrado probando
los valores {2, 4, 6, 8, ...}.
3 Calcular P = A P + 1
A se obtiene de manera similar a A .
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
12. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
El metodo original del rsa
Algoritmo de Williams/Schmid
Algoritmo de Gordon
Descripci´on
En 1979, Williams y Schmid propusieron el siguiente algoritmo, es
efectivo y altamente recomendado para generar primos fuertes.
Este tambien calcula P+
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
13. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
El metodo original del rsa
Algoritmo de Williams/Schmid
Algoritmo de Gordon
Algoritmo
1 Encontrar dos primos P y P+ del tama˜no de bits elegido.
2 Calcular R = −(P )−1 m´od P+
Por tanto 0 < R < P+, La inversa de P en modulo P+ puede
ser calculada mediante el algoritmo extendido de Euclides.
3 Encontrar el menor A tal que
P = 2AP P+
+ 2RP + 1, y
P = 4AP P+
+ 4RP + 3
O encontrado P
P = 2P + 1
Hasta que sean primos.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
14. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
El metodo original del rsa
Algoritmo de Williams/Schmid
Algoritmo de Gordon
Descripci´on
En 1984, John Gordon propuso un nuevo algoritmo para generar
primos fuertes, este es un poco m´as eficiente que el de
Williams/Schmid, debido a que no necesita calcular un P fuerte.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
15. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
El metodo original del rsa
Algoritmo de Williams/Schmid
Algoritmo de Gordon
Algoritmo
1 Encontrar dos primos P y P+ del tama˜no de bits elegido.
2 Calcular el menor primo de la forma P = A P + 1 para
algun entero A
3 Dejar
P0 = ((P+
)P −1
− (P )P+−1
)(P P+
)
Notar que esto por el teorema de Fermat implicaria que
P0 ≡ 1 (m´od P ) y P0 ≡ −1 (m´od p+)
4 Calcular el menor primo P de la siguiente manera
P = P0 + AP P+
para algun entero A.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
16. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Hardware usado
CPU: AMD A8-5545M APU with Radeon(tm) HD Graphics
N´umero de nucleos: 4
Velocidad del reloj: 1.7 GHz (Sin Overclocking)
Cache L2: 4 MB
Memoria Ram: 6GB
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
17. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Metodologia usada
Es importante mencionar que el proceso se realiz´o en un solo
nucleo y no de manera paralela.
Los c´alculos se realizaron generando n´umeros de diferentes
tama˜nos de bits: 64, 128, 256, 512, 1024, 2048.
Para tener una mayor precision en el c´alculo, se gener´o 100
n´umeros por cada generador y tama˜no de bits, luego de esto
se calcul´o la media aritmetica del tiempo total.
Para obtener una medida m´as exacta el m´etodo de evaluaci´on
se utilizar´a la funci´on gettimeofday() que en Linux brinda la
precisi´on de 10µs.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
18. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Tabla de tiempo de generaci´on
N. Bits No fuerte A. en RSA Williams Gordon’s
64b 0.0359229 0.161156 0.175932 0.118902
128b 0.112868 0.238891 0.339435 0.282909
256b 0.225215 0.535283 0.553583 0.515051
512b 0.261919 0.881877 0.937849 0.907238
1024b 1.03088 2.69978 2.39081 4.00394
2048b 2.13455 12.6628 20.5621 17.402
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
19. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Grafica de tiempo de generaci´on
5
6
7
8
9
10
11
Time
Bits2x
No fuerte
RSA Method
Williams/Schmid
Gordon’s
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa
20. Introducci´on
Generadores de primos fuertes
Comparativas
Conclusiones
Conclusiones
Debido a que de la fortaleza de los primos escogidos depende
una mayor seguridad del sistema criptogr´afico usado, es
altamente recomendable la utilizaci´on de alguno de los
m´etodos de generaci´on de primos indicados anteriormente.
Como se observa en las comparativas la generaci´on de primos
no fuertes es mucho mas rapida, pero no cuentan con las
fortalezas indicadas. Tambien se observa que el Algoritmo de
Williams/Schmid es m´as eficiente que el de Gordon y que
cuenta con una fortaleza mayor que los otros algoritmos
expuestos.
Juan Alfredo Salas Santillana Generaci´on de n´umeros primos fuertes para criptograf´ıa