SEGURIDAD Y PROTECCIÓN DE LA INFORMACIÓN PRÁCTICA 1: GENERACIÓN NÚMEROS PRIMOS FUERTES
Como sabe, el algoritmo de clave pública RSA basa su fortaleza en la dificultad de factorizar un numero n que es producto de dos primos p y q fuertes. En esta práctica se trata de hallar dos primos fuertes de 100 dígitos aproximadamente, utilizando el programa Mathematica pero sin hacer uso de las funciones RANDOM ni PRIMEQ, teniendo en cuenta lo siguiente: 1. Los valores primos deben elegirse apropiadamente para RSA: a) p y q deben diferir en unos pocos dígitos. b) p y q no deben ser primos muy cercanos, c) Longitud mínima de p y q: 250 bits. d) Valores de (p-l) y (q-1) del Indicador de Euler deben tener factores primos grandes. e) El mcd entre p-l y q-1 debe ser pequeño. 2. Primos seguros: se elige r un primo grande de modo que: p = 2*r+l y q= 2*p+l también sean primos Test de primalidad 3.Teorema del Número Primo (Tchebycheff): lim ∏(n) n->∞ n/ln(n)
=1 (∏(n) es el número de primos igual o menores que n)
Los modernos test de primalidad se apoyan en una generalización del teorema de Fermat: Si m primo, entonces dado b / 2<=b<m b(m-1)mod m=1 , b, o lo que es lo mismo, si b, 1<=b<m / b(m-1) mod m # 1 m no es primo 4.Teorema Si b ,2<=b<m-2 siendo m impar / b((m-1)/2)mod m # 1 y (m-1)/2) b mod m # m-1 m no es primo
5. Test de Millar Si b ,2<=b<m-1 siendo m-1= 2sQ y Q impar / b(Q) mod m # 1 y b (Q)modm#m-1 y b (2Q)mod m # m-l . . (s-1) b (2 Q)mod m # m-1 m no es primo Los tests que ha utilizado para encontrar dichos primos son la base para los algoritmos probabilistas tipo Montecarlo para determinar si un número es primo o no. Cuando el número es muy grande, no podemos tener la absoluta certeza de que sea primo; Por ello, una vez encontrados dos ‘supuestos’ primos, aplíquele la función PRIMEQ para poder incrementar nuestra confianza en la primalidad del número.