Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
1 Teoría de los números Seguridad en Internet Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Índice Aritmética Modular: Operador Módulo. Congruencia, Clases de Equivalencia. Algoritmo de Euclides: cálculo de mcd(a,b). Cálculo de Inversa aplicando aritmética modular: Condición de existencia de inversa. Función de Euler: nº de residuos de un número. Función de Euclides: cálculo de inversa conociendo F. Euler. Algoritmo extendido de Euclides: cálculo de inversa sin conocer F. Euler. Teorema de Resto Chino: operar con números grandes. Exponenciación y logaritmos discretos. Factorización y números primos. Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Aritmética modular Operador módulo Congruencia Algoritmo de Euclides Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Operador módulo Resto: Dados dos enteros m y n, donde n > 0. Resto R de dividir m entre n es el menor entero no negativo que difiere de m y un múltiplo de n. R=m-kn Resto = m mod n (mod significa módulo) Operaciones: Con la suma y producto se puede aplicar la operación ordinaria y después aplicar mod n al resultado Suma: a+b mod n = (a+b) mod n = (a mod n + b mod n) mod n Producto: a*b mod n = (a*b) mod n = (a mod n * b mod n) mod n Con la exponenciación el exponente no es mod n ab mod n = (ab) mod n = (a mod n) b mod n La aritmética modular facilita los cálculos en aplicaciones de cifrado ya que se pueden operar con números grandes con resultados intermedios de las operaciones limitados (mod n) Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Congruencia Dos números a y b son congruentes módulo n cuando difieren un múltiplo de n: a, b, n ∈ N; a ≡ b mod n si a = b + kn; k ∈ Z a mod n = r ⇒ a ≡ r mod n. Lo contrario no es cierto. Dos números congruentes mod n tienen el mismo residuo (0..n-1). Ejemplos: -7≡ 3 mod 10 y -7≡ 13 mod 10. Tanto -7 como 3 y 13 tienen R = 3. 0 K=0 10 K=1-10K=-1 133-7 R R R Un número n induce n clases de equivalencia: nº congruentes con 0, 1...n-1 mod n Ejem: para n=3 hay clases de 0 (0, 3, 6…) de 1 (1, 4, 7…) y de 2 (2,5,8… ) Operaciones suma y producto en el conjunto de clases de equivalencia: a + b ≡ c mod n ⇔ a + b = c + kn k ∈ Z a * b ≡ c mod n ⇔ a * b = c + kn k ∈ Z Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Algoritmo de Euclides (I) Permite calcular el máximo común divisor (mcd) m de dos números a y n. Utilizaremos n|a para indicar que n divide a a, es decir a es múltiplo de n. Se aplica la propiedad: m|a ∧ m|n ⇒ m|(a-kn) con k ∈ Z ⇒ m|(a mod n) Donde m es un divisor común Si llamamos c a a mod n podemos aplicar la propiedad de nuevo: m|n ∧ m|c ⇒ m|(n mod c) Aplicando sucesivamente la propiedad, m divide a todos los restos. Paramos cuando obtengamos el valor de resto 0. El mcd entre a y n es el penúltimo valor obtenido. Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Algoritmo de Euclides (II) Invariante: mi+1=mi-1mod mi. Valores iniciales: m0=a; m1=n int mcd(int a, int n) { int i=1; m[0]=a; m[1]=n; while(m[i]!=0) { m[i+1]=m[i-1]%m[i]; i++;} return(m[i-1]);} Ejemplos: •mcd(55,22) = mcd(22,55mod22)= mcd(22,11)=mcd(11, 22mod11)=mcd(11,0)=11 • mcd(18,12) = mcd(12,18mod12)= mcd(12,6)=mcd(6, 12mod6)=mcd(6,0)=6 Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Cálculo de inversas en aritmética modular La aritmética modular permite, al contrario que la aritmética entera convencional, calcular el inverso multiplicativo: Dado un entero a en el rango (0, n-1) Es posible encontrar un entero x en el rango (0, n-1) que cumpla: a*x mod n = 1 Analizaremos el problema en los siguientes apartados: Primero veremos la condición de existencia de inversa Calculo de inversa mediante la función de Euler Algoritmo extendidos de Euclides para calculo de inversa Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Condición de existencia de inversa Elemento simétrico del producto: inversa en un conjunto finito. Lema: Dados a, n ∈ N; mcd(a,n) = 1 ⇒ a*i ≠ a*j (mod n) ∀ i ≠ j 0 < i, j < n Conclusión: si a*i ≠ a*j (mod n) ∀ i ≠ j; si multiplicamos a (mod n) por todos los elementos del grupo finito modulo n (0,1,2…n-1), obtenemos una permutación de los elementos del grupo (excepto 0), por lo que debe existir un elemento (inversa) que al multiplicarlo por a nos de 1. Teorema: Si mcd(a,n) = 1, a tiene inversa módulo n. Ejemplo: a=9, n=7. mcd(9,7) = mcd(7,2)=mcd(2,1)=mcd(1,0)=1 existe inversa. 9*1 mod 7 = 2 9*2 mod 7 = 4 9*3 mod 7 = 6 9*4 mod 7 = 1 9*5 mod 7 = 3 9*6 mod 7 = 5 La inversa de 9 es 4. Corolario: si n es primo, el grupo finito que genera (0..n-1) tiene estructura de Cuerpo. Es decir, todos los elementos (excepto el 0) tienen inversa para el producto. (Cuerpos o Campos de Galois GFn) Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Función de Euler Conjunto reducido de residuos módulo n es el conjunto de números primos relativos con n (todos los números que tienen inversa mod n: mcd(a,n)=1). Ejemplos: Residuos de 10 (no primo) son {1, 3, 7, 9}. Residuos de 7 (primo) son {1,2,3,4,5,6} El cardinal del conjunto de residuos viene dado: Donde pi son los factores primos de n y ei su multiplicidad Φ(n) es la función de Euler sobre n Ejemplos: Φ(10)=(2-1)(5-1)=4; Φ(7)=(7-1)=6 Si n es producto de dos números primos n=p*q entonces: Φ(n)=(p-1)(q-1) )1()( 1 1 −=Φ ∏ = − i n i e i ppn i Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Teoremas de Euler y Fermat Teorema de Euler: si mcd(a,n)=1 ⇒ aΦ(n)≡1(mod n) ó aΦ(n) mod n=1 Teorema de Fermat: Aplicando el teorema anterior, si p es primo Φ(p)=p-1; ap-1≡1(mod p) ó ap-1mod p = 1 Corolario de T. Euler: Dados dos primos p y q Un entero n = pq, y m con 0 < m < n Se cumple: mkΦ(n)+1 = m k(p-1)(q-1)+1 ≡ m mod n Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Cálculo de inversa aplicando Euler Podemos emplear el teorema de Euler para el cálculo de inversa mod n resolviendo la siguiente ecuación: aΦ(n) mod n = 1 aaΦ(n)-1 mod n=1 Llamemos x a la inversa = a-1 mod n x = aΦ(n)-1 mod n Si n es primo Φ(n)=n-1 y queda: x = an-2 mod n Ejemplo: n = 7 y a = 11 (primo) La inversa de 11 será x = 117-2 mod 7= 115 mod 7 = 2 Comprobación: 2*11 mod 7 = 1 Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Algoritmo extendido de Euclides (I) Utilizado para calcular inversas cuando desconocemos Φ(n). Si a y n son relativamente primos ∃ u, v / n*u + a*v = 1 ó a*v = 1 mod n Aclaración: mcd(a,n)=1; v*a=1 mod n; v*a = 1 + kn; v*a+(-k)n=1; u=-k Aplicamos algoritmo de Euclides para resolver la ecuación mcd(a,n)=1 Cuando encontremos mcd, el valor de v es la inversa de a (inversa única). Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Algoritmo extendido de Euclides (II) Algoritmo: Invariante: mi=nui+avi. Valores iniciales: m0=n, m1=a; v0=0, v1=1; u0=1, u1=0; Cuando mi=0, mi-1=mcd(a,n)=1 y vi-1 es entonces la inversa de a. int inversa(int a, int n) { int i=1; int cociente; m[0]=n; m[1]=a; u[0]=1; u[1]=0; v[0]=0; v[1]=1; while(m[i]!=0) { cociente=m[i-1]/m[i]; m[i+1]=m[i-1]%m[i]; // mcd u[i+1]=u[i-1]-cociente*u[i]; v[i+1]=v[i-1]-cociente*v[i];i++;} return(v[i-1]%n);} Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Ejemplo Inversa de 797 mod 1047 Ecuación de la última línea: 1047*373 + 797*(-490) = 1 Por lo tanto: 797-1 = -490 mod 1047 = 557 - - 0 - - 6 7 1 -490 373 5 3 125 67 -51 4 5 15 -21 16 3 3 47 4 -3 2 1 250 -1 1 1 797a 1 0 0 1047n 0 1 i cociente mi vi ui mi = vi*a + ui * n 0 1047-1047 -490 557 Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Teorema del resto chino Este teorema básicamente dice que es posible reconstruir un entero en un cierto rango a partir de los residuos de una pareja de factores del entero relativamente primos. De esta forma se obtiene una representación distinta del número en forma de números más cortos. Aporta una forma sencilla de manipular número módulo M muy largos (M > 150 dígitos) en forma de tuplas de números menores. Ejemplo: dado el número 10, podemos reconstruir cualquier elemento de Z10(0..9) a partir de los residuos de 2 y 5 (factores de 10 relativamente primos dado que mcd(2,5) = 1). 1 mod 2 = 1; 1 mod 5 = 1; 2 mod 2 = 0, 2 mod 5 = 2; 3 mod 2 = 1, 3 mod 5 = 3… 1 → (1,1) 2 → (0,2) 3 → (1,3) 4 → (0,4) 5 → (1,0) 6 → (0,1) 7 → (1,2) 8 → (0,3) 9 → (1,4) Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Formalización Si mi son parejas de números relativamente primos: mcd(mi,mj) = 1 para 1≤i,j≤k e i≠ j Podemos representar cualquier entero en ZM por una k-tupla en Zmi, usando la siguiente correspondencia: A↔(a1, a2, …, ak) Donde: A ∈ZM (0 ≤ A < M); ai ∈Zmi (0 ≤ ai < mi) y ai=A mod Zmi para 1 ≤ i ≤ k Propiedades: La relación entre A y (a1, a2, …, ak) es uno a uno en ambos sentidos. La transformación es por lo tanto única. Operaciones implementadas en los elementos de ZM son equivalentes a realizarlas sobre cada elemento de la k-tupla: Si A↔(a1, a2, …, ak) y B↔(b1, b2, …, bk). Representa ⊗ el operador +, - ó *. (A ⊗ B) mod M ↔ ((a1 ⊗ b1) mod m1, (a2 ⊗ b2) mod m2,…, (ak ⊗ bk) mod mk) ∏ = = k i imM 1 Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Cálculos A ⇒ (a1, a2, …, ak) ai = A mod mi ∀ 1 ≤ i ≤ k A ⇐ (a1, a2, …, ak) Hacemos Mi=M/mi para 1 ≤ i ≤ k, es decir, Mi=m1*m2*…*mi- 1*mi+1*…*mk Así se cumple que Mi ≡ 0 (mod mj) ∀ j ≠ i Hacemos ci = Mi * (Ii mod mi) para 1 ≤ i ≤ k, donde Ii es el inverso de Mi Por definición Mi es relativamente primo de mi y por lo tanto tiene un único inverso multiplicativo mod mi. Entonces ci es único. mcd(Mi, mi)=1 Podemos calcular: Para comprobar que A es correcto podemos calcular ai = A mod mi ∀ 1 ≤ i ≤ k Note que cj ≡ Mj ≡ 0 (mod mi) si j ≠ i y que ci ≡ 1 (mod mi) MmiIMaMmicaA k i iii k i ii mod)mod(mod)mod( 11 ⎟⎠ ⎞⎜⎝ ⎛⎯→⎯⎟⎠ ⎞⎜⎝ ⎛≡ ∑∑ == Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Ejemplo de aplicación Representar: A=973 mod 1813, como par de números mod 37 y 49 Tomando los residuos módulo 37 y 49 la representación de 973 es (11, 42): 973 mod 37 = 11 973 mod 49 = 42 Hacemos m1=37, m2=49, M = 1813 Calculamos: M1= 49, M2=37. Usando el algoritmo extendido de Euclides calculamos inversas de M1 y M2 resultando respectivamente: I1 = 34 mod 37 e I2 = 4 mod 49 Operaciones: Suma: 678 + 973 Calculamos (678 mod 37, 678 mod 49) = (12, 41) Sumamos: (12 + 11 mod 37, 41 + 42mod 49) = (23, 34) Verificación, vemos si coinciden: (23, 34) ↔ a1M1I1+ a2M2I2mod M=[(23)(49)(34)+(34)(37)(4)] mod 1813=1651 (973 + 678) mod 1813 = 1651 Multiplicación: 73*1651(mod 1813); 73 equivale a (36,24) Por lo tanto: (23 *36 mod 37, 34*24 mod 49)=(14, 32) Verificación, vemos si coinciden: (14, 32) ↔ [(14)(49)(34) + (32)(37)(4)] mod 1813 = 865 1651*73 mod 1813 = 865 Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Exponenciación. Logaritmos discretos. Campo de aplicación de la exponenciación Algoritmo de exponenciación rápida Problema de los logaritmos discretos Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Campo de aplicación de la exponenciación Muchos algoritmos de clave pública utilizan exponenciación dentro de grupos finitos (aritmética modular) para codificar mensajes. Bases y exponentes son números muy grandes (miles de bits). Realizar exponenciaciones mediante multiplicación de la base por si misma tantas veces como indique el exponente es inviable para números grandes. Es necesario buscar algoritmos de exponenciación eficientes. El logaritmo discreto es operación inversa y en ella se basa la resistencia de los algoritmos de cifrado. Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Algoritmo de exponenciación rápida Dados a, b ∈ N. Queremos calcular ab. Representación binaria de b: b= 20b0+ 21b1+ 22b2+ 23b3+ 24b4+….+ 2nbn Expresamos ab como: bi sólo puede valer 0 ó 1, sólo se consideran los términos en los que vale 1 También debemos considerar que: por lo que partiendo de a podemos ir calculando sucesivamente los distintos valores elevando el anterior al cuadrado. ∏ = +++ == n i bbnbbb i in aaa 0 22...22 1 1 0 0 222 )( 1−= ii aa Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Algoritmo de exponenciación rápida int expon_rapida(int a, int b) { int x, y, resultado; y=b; // va obteniendo el bit menos significativo de b x=a; // valores sucesivos de resultado = 1; while(y >0) { if (y%2==1) // bit menos significativo vale 1 resultado= resultado * x; // ¿mod n? x=x*x; // ¿mod n? y=y/2; //desplaza a la derecha para buscar siguiente bit } return(resultado)} i a2 Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Problema de los logaritmos discretos Dados dos números a y b y el módulo n. Se define logaritmo discreto de a en base b de módulo n: c=logb(a)(mod n) ⇔ a ≡ bc (mod n) La resistencia de los algoritmos basados en la exponenciación se basa en que no existen actualmente algoritmos de logaritmos eficaces para realizar estos cálculos en tiempo razonable. Existe una relación entre este problema y el de la factorización: si se calcula un logaritmo se puede factorizar fácilmente (el recíproco no se ha demostrado). Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Factorización. Números primos Método de Lehmann Método de Rabin-Miller Generación de números primos. Primos fuertes Factorización Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Problema de factorización Para aumentar la dificultad en el cálculo de logaritmos discretos los algoritmos utilizan operaciones de exponenciación en grupos finitos. Propiedades del valor del módulo n que define el grupo finito: Valor muy grande. Pocos factores: normalmente dos. Se debe hacer público n y sus factores se deben mantener secretos. Problema inverso. Factorización: Dado n descomponer producto de factores. Para que la solución sea única los factores deben ser primos. Cálculo de n: Obtener dos números primos grandes (p y q). n=p*q (p y q son los factores secretos) Son necesarios mecanismos de obtención de números primos grandes. No existen algoritmos eficientes para el cálculo de factores de n si se eligen estos adecuadamente. Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Cálculo de primos grandes: para obtenerp y q. Se puede aplicar un algoritmo de factorización: inviable para números grandes. Existen algoritmos probabilísticos rápidos que permiten predecir con un alto grado de certeza si un número grande es primo o compuesto. ¿Existen suficientes números primos grandes para no repetirlos? El conjunto es suficientemente grande para no repetirlos, se estima que existen 10151 primos de hasta 512 bits. ¿Se podría calcular previamente los 10151 primos y almacenarlos para utilizarlos en un algoritmo de factorización rápido? La unidad de almacenamiento sería inviable, tendría un volumen de 10130 m3 y masa de 10135 kg. Métodos más comunes que permiten saber si un número es primo: Método de Lehmann. Método de Rabin-Miller. Números primos Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Método de Lehmann Pasos: c Elige un número aleatorio a < p d Calcula b = a(p-1)/2(mod p) e Si b ≠ 1 (mod p) y b ≠ -1 (mod p), p no es primo f Si b ≡ 1 (mod p) ó b ≡ -1 (mod p). La probabilidad de que p sea primo es ≥ 50%. Nivel de confianza: Repitiendo el algoritmo n veces, la probabilidad de que p supere el test y no sea primo será 1/ 2n. Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Método de Rabin-Miller Sea p el número a comprobar Se calcula b: número de veces que 2 divide a (p-1) Se calcula m que cumple p = 1 + 2b * m Pasos: c Elegir un número aleatorio a < p d Sea j = 0 y z = am(mod p) e Si z = 1 ó z = p-1, p pasa el test y puede ser primo f Si j > 0 y z = 1, p no es primo g Sea j = j+1. Si j = b y z ≠ p-1, p no es primo h Si j < b y z ≠ p-1, z = z2(mod p). Volver al paso 4 i Si j < b y z = p-1, p pasa el test y puede ser primo (75%) j p no es primo Nivel de confianza: La probabilidad de que un número compuesto pase este algoritmo para un valor de a, es del 25%. Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Generación de números primos El algoritmo generalmente empleado en la práctica es: c Generar un número aleatorio p de n bits. d Poner a 1 los bits: De mayor peso para hacer que sea de n bits. De menor peso para hacerlo impar (los primos son impares). e Intentar dividir p por una tabla de primos precalculados (normalmente los primeros 2000 primos). El 99.8 % de los números impares no primos es divisible por algún primo menor de 2000. f Ejecutar el test de Rabin-Miller como mínimo 5 veces. Tema 4. Teoría de los Números Seguridad en Internet B. Alarcos, E. de la Hoz Primos fuertes Aunque p y q sean primos grandes, hay casos en los que es sencillo factorizar n = p*q. Los primos fuertes cumplen condiciones que hacen difícil factorizar n: mcd((p-1),(q-1)) debe ser pequeño. p-1 y q-1 deben tener algún factor primo grande p’ y q’. Tanto p’-1 como q’-1 deben tener factores primos grandes. Tanto p’+1 como q’+1 deben tener factores primos grandes. Las dos primeras condiciones se cumplen si tanto (p-1)/2 como (q- 1)/2 son primos.
Compartir