Intro. DH RSA ElGamal Criptografı́a asimétrica o de clave pública F. J. Martı́nez Zaldı́var Departamento de Comunicaciones ETSI Telecomunicación Universidad Politécnica de Valencia Comunicación de Datos II ECC Intro. DH RSA ElGamal Índice 1 2 3 4 5 Introducción Introducción a la Teorı́a de Números Funciones unidireccionales Intercambio de claves Diffie y Hellman Descripción DH Algoritmo RSA (Rivest-Shamir-Adelman) Descripción RSA Fortaleza de RSA Claves múltiples de descifrado Mensajes no cifrables Alternativas de descifrado RSA RSA multiprimo Relleno (padding) Método ElGamal Otros criptosistemas asimétricos: ECC ECC Intro. DH RSA ElGamal Criptografı́a asimétrica o de clave pública Objetivo: evitar el problema de la distribución de claves necesaria en un criptosistema simétrico (o de clave secreta). Primer documento: intercambio de claves de Diffie y Hellman (1976). Posteriormente otros criptosistemas asimétricos: RSA, ElGamal, curvas elı́pticas, . . . Asimétrica : distinta clave para cifrar que para descifrar. Pública : de las claves es pública; la otra privada. Conceptos previos necesarios: Teorı́a de Números ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Definición: divisor Si a, b ∈ Z, entonces a divide a b, o a es divisor de b si ∃n ∈ Z : b = an a|b denota que a divide a b Ejemplo 4|12, ya que 12 = 4 · 3 Corolario: divisores del cero Cualquier n ∈ Z, n 6= 0, divide a 0: 0 = n · 0 ⇒ n|0 ECC Intro. DH RSA Introducción a la Teorı́a de Números Teorema: transitividad Si a, b, c ∈ Z, con a|b y b|c, entonces a|c Ejemplo Si 4|8 y 8|16, entonces 4|16 ElGamal ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema: divisor de combinacion lineal Si a, b, m, n ∈ Z y c|a y c|b, entonces c|(ma + nb) Ejemplo 3|6 y 3|9, entonces 3|(m · 6 + n · 9). Si, por ejemplo, m = 2 y n = −4, entonces 3|(2 · 6 + (−4) · 9) −→ 3|(12 + (−36)) −→ 3|(−24) ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema: algoritmo de la división Si a, b ∈ Z, b > 0, entonces ∃q, r ∈ Z únicos, : a = q · b + r , con 0 ≤ r < b cona q= a jak b , y r =a−q·b donde ⌊ yx ⌋ con x, y ∈ Z es la operación denominada “redondeo hacia −∞”: entero más próximo a yx del intervalo ] − ∞, yx ] ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema (cont.) Ejemplo: a = 43, b = 5 q= 43 5 = ⌊8, 6⌋ = 8, y r = 43 − 8 · 5 = 3 por tanto: 43 = 8 · 5 + 3, con 0 ≤ r = 3 < b = 5 Ejemplo: a = −43, b = 5 q= −43 5 = ⌊−8, 6⌋ = −9, y r = −43 − (−9) · 5 = 2 por tanto: −43 = (−9) · 5 + 2, con 0 ≤ r = 2 < b = 5 ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Definición: cociente y resto Los valores q y r del Algoritmo de la División se denominan cociente y resto respectivamente. Definición: números primos y compuestos Un número primo es un número entero positivo mayor que 1 que sólo es divisible por 1 y por sı́ mismo. Un número compuesto es todo entero positivo mayor que uno que no es primo. ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema: divisores primos Todo entero positivo mayor que 1 tiene al menos un divisor primo. Definición: máximo común divisor Sean a, b ∈ Z, con a, b 6= 0, el máximo común divisor de a y b denotado como mcd(a, b) es el mayor entero que divide tanto a a como a b. Definición: números relativamente primos Dos enteros a y b son relativamente primos si mcd(a, b)=1. Ya que los divisores de a lo son también de −a, mcd(a, b)=mcd(|a|, |b|) ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario: máximo común divisor con cero mcd(n, 0) = n, ∀n ∈ Z, n 6= 0 Teorema: algoritmo de Euclides (cálculo del mcd) Sean r0 y r1 dos enteros no negativos con r1 6= 0, la aplicación iterativa del Algoritmo de la División de la forma rj = qj+1 rj+1 + rj+2 , j ≥ 0 hace que mcd(r0 , r1 ) = rn , (el último resto no nulo) ECC Intro. DH Introducción a la Teorı́a de Números Teorema (cont.) RSA ElGamal ECC Intro. DH RSA Introducción a la Teorı́a de Números Teorema (cont.) Ejemplo: r0 = 250 y r1 = 110 luego mcd(250,110)=10. 250 = 110 = 2 · 110 + 30 30 = 1 · 20 + 10 20 = 2 · 10 + 0 3 · 30 + 20 ElGamal ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario Si a, b ∈ Z, y a = qb + r , entonces mcd(a, b)=mcd(b, r ). Teorema: mcd y la menor combinación lineal positiva Si a, b ∈ Z, con a, b 6= 0, entonces mcd(a, b) es el menor entero positivo resultante de cualquier combinación lineal de a y b. Ejemplo: mcd(28,8)=4 28 · 1 − 8 · 3 = 28 − 24 = 4 Cualquier otra combinación lineal es: Bien mayor o igual que 4 Bien negativa Teorema Si a, b, c ∈ Z, a, b, c > 0, mcd(a, b) = 1 y a|bc, entonces a|c. ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Definición: congruencia Si a, b, n ∈ Z y n 6= 0, entonces, si n|(a − b) se dice que a es congruente con b módulo n, y se denota como a ≡ b (mód n). Corolario Si a ≡ b (mód n), entonces a mód n = b mód n Ejemplo: 18 ≡ 6 (mód 4) Es decir, 4|(18 − 6), entonces 18 mód 4 = 2 = 6 mód 4 ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario Cualquier entero es congruente módulo n con algún entero del conjunto {0, 1, . . . , n − 1}. Ejemplo: n = 4 ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario: propiedad reflexiva a≡a (mód n) Corolario: propiedad simétrica a≡b (mód n) ⇔ b≡a (mód n) Ejemplo 3 7 11 4 ≡ 7 ≡ −3 ≡ 6≡ 3 −4 (mód 2) ⇒ 2|(3 − 7) ⇒ 2|(−4) (mód 2) ⇒ 2|(7 − 3) ⇒ 2|4 (mód 7) ⇒ 7|(11 − (−3)) ⇒ 7|14 (mód 7) ⇒ 7 6 | (4 − (−4)) ⇒ 7 6 | (−8) ECC Intro. DH RSA ElGamal ECC Introducción a la Teorı́a de Números Corolario: propiedad transitiva a≡b (mód n), b≡c (mód n) ⇔ Ejemplo si 27 ≡ 3 (mód 6), y 3 ≡ 21 (mód 6), entonces 27 ≡ 21 . (mód 6) a≡c (mód n) Intro. DH RSA ElGamal Introducción a la Teorı́a de Números ¡¡¡Confusión!!! Resto: a = b mód n (por el Algoritmo de la división: b = qn + a) Congruencia: a ≡ b (mód n) Entonces a = b mód n ⇒ a ≡ b a≡b (mód n) (mód n) 6⇒ a = b mód n Ejemplo: 21 ≡ 3 (mód 18) . . . , pero 21 6= 3 mód 18 Por lo tanto, lo demostrable para el resto es aplicable para la congruencia, pero no al revés. ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema Sea a, b, n, i ∈ Z, con n, i > 0, entonces (ani + b) mód n = b mód n o bien (ani + b) ≡ b (mód n) Ejemplo: a = 3, n = 4, i = 2 y b = 7 (3 · 42 + 7) mód 4 = 55 mód 4 = 3 = 7 mód 4 ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema Si a, b, n ∈ Z, con n 6= 0 entonces: (a + b) mód n = {(a mód n) + (b mód n)} mód n (ab) mód n = {(a mód n)(b mód n)} mód n Ejemplo (8 + 9) mód 3 = 17 mód 3 = 2 8 mód 3 = 2 9 mód 3 = 0 ((8 mód 3) + (9 mód 3)) mód 3 = (2 + 0) mód 3 = 2 ECC Intro. DH RSA ElGamal ECC Introducción a la Teorı́a de Números Corolario ab mód n = {(a mód n)b } mód n Ejemplo: ¿4225 mód 500? Creación de tabla: 41 42 44 48 mód mód mód mód 500 500 500 500 = = = = 4 16 256 36 416 432 464 4128 mód mód mód mód 500 500 500 500 = = = = 296 116 456 436 Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Ejemplo (cont) N = 4225 mód 500 = 4128+64+32+1 mód 500 = {(4128 mód 500)(464 mód 500)(432 mód 500) · ·(41 mód 500)} mód 500 = {436 · 456 · 116 · 4} mód 500 = {(198 816 mód 500)(464 mód 500)} mód 500 = (316 · 464) mód 500 = 124 ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Definición La función de Euler, φ(n) (Euler totient function) es la cantidad de enteros positivos menores que n que son relativamente primos con n. Ejemplo: n = 6 φ(6) = card{1, 5} = 2 Ejemplo: n primo → φ(n) = n − 1 φ(7) = card{1, 2, 3, 4, 5, 6} = 6 Teorema Si p y q son primos y n = pq, entonces φ(n) = (p − 1)(q − 1). ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema Sea {r1 , r2 , . . . , rφ(n) } con 0 < ri < n y mcd(ri , n)=1, ∀1 ≤ i ≤ φ(n). Si a > 0 y mcd(a, n)=1, entonces {ar1 mód n, ar2 mód n, . . . arφ(n) mód n} es una permutación de {r1 , r2 , . . . , rφ(n) } Ejemplo: φ(5) = card{1, 2, 3, 4} = 4, a = 7, mcd(7,5)=1 {7 · 1 mód 5, 7 · 2 mód 5, 7 · 3 mód 5, 7 · 4 mód 5} = {2, 4, 1, 3} ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Lema Si a, b, n ∈ Z, n > 0, mcd(b, n)=1 y ab ≡ b a ≡ 1 (mód n). (mód n), entonces Demostración Ya que ab ≡ b (mód n), entonces n|(ab − b) ó n|b(a − 1) Ya que mcd(b, n)=1, —y que si a, b, c ∈ Z, a, b, c > 0, mcd(a, b) = 1 y a|bc, entonces a|c—, entonces n|(a − 1) → a ≡ 1 (mód n) ECC Intro. DH RSA ElGamal ECC Introducción a la Teorı́a de Números Teorema Teorema de Euler: si a, n ∈ Z, n > 0 y mcd(a, n)=1, entonces: aφ(n) ≡ 1 (mód n) Demostración Sea {r1 , r2 , . . . , rφ(n) } : 0 < ri < n, mcd(ri , n) = 1, 1 ≤ i ≤ φ(n). Según el Teorema 22: φ(n) Y i=1 ri mód n = φ(n) Y i=1 (ari mód n) mód n = aφ(n) por lo tanto φ(n) φ(n) aφ(n) Y i=1 ri ≡ Según el lema anterior, aφ(n) ≡ 1 Y ri i=1 (mód n). (mód n) φ(n) Y i=1 ri mód n Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario: Teorema de Euler para inversos modulares aa−1 ≡ 1 (mód n) con mcd(a, n)=1 (en caso contrario, dicho inverso no existe). Solución: a−1 ≡ aφ(n)−1 (mód n) ya que aa−1 ≡ aaφ(n)−1 ≡ a φ(n) (mód n) (mód n) ≡ 1 (mód n) ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario: Algoritmo de Euclides (extendido) —mcd— para inversos modulares Si a y n son relativamente primos: 1 = mcd(a, n) = i ·a+j ·n 1 mód n = (i · a + j · n) mód n 1 mód n = i · a mód n 1 ≡ i ·a (mód n) −1 (mód n) i ≡ a Necesitamos conocer la combinación lineal i ·a+j ·n mediante el desarrollo del algoritmo de Euclides ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario (cont.) Ejemplo: a = 32, n = 4927, con mcd(32,4927)=1 4927 32 31 = = = 1 153 · 32 + 31 1 · 31 + 1 ⇒ 31 · 1 154 (154 · 32 pero también, −1 ≡ 4927−1 −1 −1 (31 · 4927 ≡ = 32−1 = = = = 32 − 1 · 31 32 − 1 · (4927 − 153 · 32) 154 · 32 − 1 · 4927 i ·a+j ·n (mód 4927) 4928 = 1 · 4927 + 1) (mód 32), o equivalentemente: = ≡ = −1 · 32 + 31 31 ≡ 4927−1 (mód 32) 152 737 = 4773 · 32 + 1) ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema: teorema de Fermat Sea p, a ∈ Z, con p primo, y mcd(a,p)=1, entonces ap−1 ≡ 1 (mód p) Demostración Es un caso particular del teorema de Euler, ya que φ(p) = p − 1, por ser p primo. ECC Intro. DH RSA ElGamal ECC Introducción a la Teorı́a de Números Corolario Sea p, a ∈ Z, con p primo, entonces ap−1 a ≡ a (mód p) Demostración: dos posibilidades Si mcd(p, a) = 1, entonces según el teorema de Fermat, ap−1 ≡ 1 (mód p), es decir, p|(ap−1 − 1) ⇒ p|(ap−1 − 1)a ⇒ ap−1 a ≡ a (mód p) Si mcd(p, a) 6= 1, entonces a = kp (p es primo), es decir p|a ⇒ p|(ap−1 − 1)a ⇒ ap−1 a ≡ a (mód p) Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario Sea p, a ∈ Z, con p primo, entonces ak (p−1) a ≡ a (mód p) El razonamiento es análogo al anterior. ECC Intro. DH RSA ElGamal ECC Introducción a la Teorı́a de Números Corolario Sea p, a, b ∈ Z, con p primo, entonces ab ≡ ab mód (p−1) (mód p) Demostración Sea b = k(p − 1) + r , con r = b mód (p − 1) (algoritmo de la división), entonces ab ≡ ak (p−1)+r ≡ ak (p−1) ar ≡ ar ≡ ab mód (p−1) (mód p) Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema: teorema chino de los restos congruentes (CRT —Chinese Remainder Theorem—) Sean x1 , x2 , . . . xr ∈ Z y p1 , p2 , . . . pr ∈ Z con mcd(pi , pj )=1, ∀i 6= j y N = p1 p2 . . . pr . Sistema de ecuaciones de congruencias: x ≡ x1 (mód p1 ) x ≡ x2 (mód p2 ) .. . x ≡ xr (mód pr ) Solución única en [0, N − 1] (algoritmo de Gauss): " # ! r −1 X N N (mód N) (mód pi ) xi x≡ pi pi i=1 ECC Intro. DH RSA ElGamal ECC Introducción a la Teorı́a de Números Teorema (cont.) Ejemplo: r = 2, x1 = 124, x2 = 8, p1 = 7, p2 = 13 x x ≡ ≡ 124 8 (mód 7) (mód 13) con mcd(p1 , p2 ) = mcd(7,13) = 1, y N = 13 · 7 = 91, entonces x ≡ ≡ " 91 7 ≡ 91 7 (mód 7) · 124 + (mód 91) h i h 13 13−1 (mód 7) · 124 + 7 7−1 (13 · [6] · 124 + 7 · [2] · 8) ≡ (9672 + 112) ≡ 47 ≡ # −1 9784 (mód 91) (mód 91) (mód 91) 91 13 (mód 91) " 91 13 −1 # ! (mód 13) · 8 i (mód 13) · 8 (mód 91) Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Teorema (cont.) Ejemplo (cont.) Por tanto, 47 es el único número en el intervalo [0, 7 · 13 − 1] = [0, 90] que cumple que ≡ 47 124 ≡ 47 8 (mód 7) (mód 13) Efectivamente ya que: 124 = 17 · 7 + 5 47 = 6·7+ 5 8 = 0 · 13 + 8 47 = 3 · 13 + 8 ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario Si N = p1 p2 · · · pr , con mcd(pi , pj )=1 ∀i x ≡ x ≡ x ≡ a (mód N) ⇔ .. . x ≡ 6= j, entonces a a (mód p1 ) (mód p2 ) a (mód pr ) Si en un sistema de ecuaciones de congruencias, xi = a, ∀1 ≤ i ≤ r , entonces la solución es x ≡ a (mód N) ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Corolario (cont.) Ejemplo: a = 176, p1 = 7, p2 = 13, N = 7 · 13 = 91 x ≡ 176 (mód 91) ⇔ x x ≡ ≡ 176 176 La solución en el intervalo [0, 90] es x ≡ 85 ≡ 176 (mód 91) con 176 = 1 · 91 + 85 . Efectivamente: 176 = 25 · 7 + 1 85 = 12 · 7 + 1 176 = 13 · 13 + 7 85 = 6 · 13 + 7 (mód 7) (mód 13) ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Algoritmo: algoritmo de Garner Resuelve sistemas de ecuaciones congruentes, evitando operaciones (mód N), con un sustancioso ahorro en el tiempo de cálculo. Entrada: vectores pi y xi (i = 1 . . . r ) Salida: x for i = 2 : r Ci = 1 for j = 1 : i − 1 u = pj−1 mód pi Ci = uCi mód pi end end x = x1 mód p1 for i = 2 : r u = (xi − x)Ci mód pi Q x = x + u i−1 p j=1 j end return x ECC Intro. DH RSA ElGamal Introducción a la Teorı́a de Números Ejemplo: traza del algoritmo de Garner con r = 2, p1 = 7, p2 = 13, x1 = 124, x2 = 8 Entrada: vectores pi y xi (i = 1 . . . 2) Salida: x for i = 2 : 2 Ci = 1, (⇒ C2 = 1) for j = 1 : 1 u = pj−1 mód pi , (⇒ u = p1−1 mód p2 , ⇒ u = 7−1 mód 13 = 2) Ci = uCi mód pi , (⇒ C2 = uC2 mód p2 , ⇒ C2 = 2 · 1 mód 13 = 2) end end x = x1 mód p1 , (⇒ x = 124 mód 7 = 5) for i = 2 : 2 u = (xi − x)Ci mód pi , (⇒ u = (x2 − x)C2 mód p2 , ⇒ u = (8 − 5)2 mód 13 = 6) Q x = x + u i−1 p , (⇒ x = x + up1 , ⇒ x = 5 + 6 · 7 = 47) j=1 j end return x (⇒ x = 47) h i x = x1 mód p1 + (x2 − x1 mód p1 )p1−1 mód p2 p1 ECC Intro. DH RSA ElGamal Funciones unidireccionales Definición y = f (x) fácilmente calculable, pero x = f −1 (y) es intratable computacionalmente Ejemplo: y ≡ g x grande (mód p), con y, g, p ∈ Z, y p primo La función inversa x ≡ logg y (mód p) —problema del logaritmo √ discreto— requiere O(e log(p) log log(p) ) operaciones de cómputo elementales. Si p tiene del orden de 512 dı́gitos binarios, y los logaritmos son en base 2, entonces, son necesarias e √ 512·9 = e67,8 = 2, 8 · 1029 operaciones Si nuestro sistema es capaz de realizar 64 Giga-operaciones/s, se tardarı́a: 2, 8 · 1029 = 4, 4 · 1018 s = 1, 4 · 1011 a 64 · 109 ECC Intro. DH RSA ElGamal Descripción DH Parámetros Sea p un número primo grande g un generador del grupo multiplicativo Zp : sus potencias generan todos los elementos del grupo Zp = {1, 2, . . . p − 1} p y g son públicos ECC Intro. DH RSA ElGamal Descripción DH Modus operandi A B Acuerdo en pyg 1 < xa < p − 1: xa secreto ya ≡ g xa (mód p) ya zba ≡ ybxa ≡ g xb xa (mód p) ⇐⇒ 1 < xb < p − 1: xb secreto yb ≡ g xb (mód p) yb zab ≡ yaxb ≡ g xa xb (mód p) zab = zba : secreto compartido Ruptura: problema del logaritmo discreto, inviable computacionalmente. Único problema: ataque en el medio (autenticación por otros medios). ECC Intro. DH RSA ElGamal Descripción RSA Parámetros Sean p y q dos números primos grandes y N = pq, entonces: φ(N) = (p − 1)(q − 1) Sea e un entero aleatorio, 1 < e < N, con mcd(e, φ(N))=1 Sea d otro entero que verifica: ed d ≡ 1 (mód φ(N)) ≡ e−1 (mód φ(n)) es decir, ed = kφ(N) + 1 ECC Intro. DH RSA ElGamal Descripción RSA Modus operandi Mensaje M: entero 0 ≤ M < N Cifrado C: C ≡ Me (mód N) Descifrado: M ≡ C d ≡ (M e )d ≡ M ed (mód N) Clave de cifrado —pública—: (N, e) Clave de descifrado —privada—: (N, d) ECC Intro. DH RSA ElGamal Descripción RSA Ejemplo p = 11 q = 7 N = pq = 11 · 7 φ(N) = 77 (p − 1)(q − 1) 10 · 6 = 60 e = 17 d ≡ e−1 ≡ 53 ≡ 23 ≡ Me ≡ 141050039560662968926103 ≡ 67 ≡ Cd M′ ≡ (mód 60) −1 17 = C ≡ = = M ≡ (mód N) 2317 (mód 77) (mód 77) (mód 77) (Alg. de exponenciación eficiente) (mód N) 6753 (mód 77) 60529145527220195918987 11030314941034235684285 86509554343742858342336 (mód 60) 00865328511929839774350 (mód 60) 55987 ≡ 23 (mód 77) (mód 77) ECC Intro. DH RSA ElGamal Descripción RSA Comprobación: M ≡ M ed (mód N) Si N = pq, con p y q primos, por el Teorema chino de los restos congruentes: X ≡ M ed (mód p) ed X ≡M (mód N) y X ≡ M ed (mód q) Podremos calcular X . Recordemos que ed = kφ(N) + 1 luego X ≡ M k φ(N)+1 (mód p) X k φ(N)+1 (mód q) ≡ M ECC Intro. DH RSA ElGamal ECC Descripción RSA Comprobación: M ≡ M ed X X (mód N) ≡ M k(p−1)(q−1)+1 ≡ M k(p−1)(q−1) M ≡ M k1 (p−1) M ≡ M k(p−1)(q−1)+1 ≡ M k(p−1)(q−1) M ≡ M k2 (q−1) M (mód p) (mód q) con k1 = k(q − 1) y k2 = k(p − 1). Como p como q son primos: X X ≡ M ≡ M k1 (p−1) M ≡ M ≡ M k2 (q−1) M (mód p) (mód q) ⇐⇒ X ≡ M ≡ M ed (mód N) Intro. DH RSA ElGamal Fortaleza de RSA Fundamentos A partir de la clave pública no puede deducirse nada respecto a la clave privada Problema del logaritmo discreto: inversión de c ≡ me (mód N) Problema de la factorización de N = pq Problema del cálculo de la función de Euler φ(N) . . . de un número —N— de valor extremadamente grande ECC Intro. DH RSA ElGamal Claves múltiples de descifrado ¿Cuántas? Sean λ = mcm(p − 1, q − 1) dλ ≡ e−1 (mód λ) entonces, di = dλ + iλ, son las l N−dλ λ m N − dλ i = 0, . . . −1 λ claves de descifrado RSA válidas. ECC Intro. DH RSA ElGamal Claves múltiples de descifrado Ejemplo: p = 43, q = 71 N = pq = 43 · 71 = 3053 λ = mcm(p − 1, q − 1) = mcm(42, 70) = 210 Elegimos aleatoriamente e = 157, con tal de que mcd(e, λ)=1. Calculamos dλ ≡ e−1 ≡ 157−1 ≡ 103 (mód 210) ECC Intro. DH RSA ElGamal Claves múltiples de descifrado Ejemplo (cont.) Las posibles claves de descifrado di parejas de e = 157 son: di = dλ + iλ = 103 + i · 210 con 0≤i≤ N − dλ λ 0 ≤ i ≤ 14 −1≤ 3053 − 103 210 − 1 ≤ ⌈14, 04⌉ − 1 ≤ 15 − 1 Por lo tanto: di = {103, 313, 523, 733, 943, 1153, 1363, 1573, 1783, 1993, 2203, 2413, 2623, 2833, 3043} ECC Intro. DH RSA ElGamal Claves múltiples de descifrado Número mı́nimo posible de claves válidas: 2. Para conseguirlas: p y q son números primos fuertes: p = 2p′ + 1 q = 2q ′ + 1 siendo p′ y q ′ dos números primos Se escoge una clave de cifrado aleatoria e, tal que, siendo dλ ≡ e−1 (mód λ), se cumpla que dλ > N − 2λ ECC Intro. DH RSA ElGamal Claves múltiples de descifrado Ejemplo: p = 11 = 2p′ + 1, p′ = 5; q = 23 = 2q ′ + 1, q ′ = 11 N = pq = 11 · 23 = 253 λ = mcm(p − 1, q − 1) = mcm(10, 22) = 110 Se elije e aleatoriamente para que mcd(e, λ)=1, e = 31, siendo dλ ≡ 31−1 ≡ 71 (mód 110) siendo dλ = 71 > N − 2λ = 253 − 2 · 110 = 33. En este caso, las claves di parejas de e = 31 son: di = 71 + i · 110, 253 − 71 N − dλ −1= − 1 = ⌈1, 65⌉ − 1 = 2 − 1 = 1 0≤i≤ λ 110 = {71, 181} ECC Intro. DH RSA ElGamal ECC Mensajes no cifrables Definición: mensaje no cifrable Me ≡ M (mód N) La cantidad de mensajes no cifrables σN es σN = (1 + mcd(e − 1, p − 1))(1 + mcd(e − 1, q − 1)) (1) Intro. DH RSA ElGamal Mensajes no cifrables Mı́nima cantidad Teorema: mı́nimo número de mensajes no cifrables p primo ⇒ p impar ⇒ p − 1 par q primo ⇒ q impar ⇒ q − 1 par φ(N) = (p − 1)(q − 1) par mcd(e, φ(N))=1 ⇒ e impar (luego 2 < e < N)⇒ e − 1 par El valor mı́nimo de la ecuación (1) se obtiene cuando mcd(e − 1, p − 1) = 2 mcd(e − 1, q − 1) = 2 En cuyo caso σN = (1 + 2)(1 + 2) = 9 mensajes no cifrables. ECC Intro. DH RSA ElGamal Mensajes no cifrables Corolario: obtención del mı́nimo de mensajes no cifrables p = 2p′ + 1 Si p y q son números primos fuertes q = 2q ′ + 1 mcd(e − 1, p − 1) = mcd(e − 1, 2p′ ) = 2 ó 2p′ mcd(e − 1, q − 1) = mcd(e − 1, 2q ′ ) = 2 ó 2q ′ Si mcd(e − 1, p′ ) = mcd(e − 1, q ′ ) = 1 entonces como e − 1 es par: mcd(e − 1, 2p′ ) = mcd(e − 1, 2q ′ ) = 2 consiguiendo el mı́nimo de 9 mensajes no cifrables. ECC Intro. DH RSA ElGamal Mensajes no cifrables Ejemplo: N del orden de 1024 bits En una situación práctica, si por ejemplo, N se codifica con 1024 bits, la probabilidad de que un mensaje sea no cifrable es: Casos favorables 9 = 1024 ≈ 5 · 10−308 Casos posibles 2 ECC Intro. DH RSA ElGamal Alternativas de descifrado RSA Concepciones convencionales m ≡ cd (mód N) Resolver el sistema x ≡ cd (mód p) x ≡ cd (mód q) con N = pq, siendo la solución m ≡ x (mód N) ECC Intro. DH RSA ElGamal ECC Alternativas de descifrado RSA Concepción alternativa x x ≡ ≡ cd cd (mód p) (mód q) ⇒ x x ≡ ≡ c dP c dQ (mód p) (mód q) siendo dP ≡ e−1 (mód p − 1) ⇒ dP e ≡ 1 (mód p − 1) ⇒ dP e = kp (p − 1) + 1 dQ ≡ e−1 (mód q − 1) ⇒ dQ e ≡ 1 (mód q − 1) ⇒ dQ e = kq (q − 1) + 1 entonces x x ≡ ≡ c dP c dQ ≡ ≡ medP medQ ≡ ≡ ⇒x ≡m mkp (p−1)+1 mkq (q−1)+1 (mód N) ≡ ≡ m m (mód p) (mód q) Intro. DH RSA ElGamal ECC Alternativas de descifrado RSA Para resolver cualquiera de los sistemas planteados puede emplearse el algoritmo de Gauss para el CRT " i=k −1 X N N x≡ ri ri # (mód ri ) ai i=1 ≡ q(q −1 ≡q p−1 d ≡ q(q (mód p))c d + p(p−1 c +p −1 q−1 cd (mód p))c ≡ q p−1 c dP + pq−1 c dQ (mód N) (mód q))c d (mód N) (mód N) dP + p(p−1 (mód N) (mód q))c dQ (mód N) Intro. DH RSA ElGamal Alternativas de descifrado RSA O bien el algoritmo de Garner, que particularizado al problema RSA (k = 2, a1 = c dP , a2 = c dQ , r1 = p, r2 = q) x = c dP mód p1 + [(c dQ − c dP mód p1 )p−1 (mód q)]p En PKCS#1 se intercambian los papeles de a1 y a2 , y de r1 y r2 ECC Intro. DH RSA ElGamal RSA multiprimo Sistema RSA en el que N = r1 r2 · · · ru , con u > 2, entonces λ = mcm(r1 − 1, r2 − 1, . . . , ru − 1) Se elige 2 < e < N aleatorio, tal que mcd(e, λ)=1 Para cifrar: c ≡ me (mód N) ECC Intro. DH RSA ElGamal RSA multiprimo Para descifrar, alternativas: m ≡ cd (mód N), donde d ≡ e−1 (mód λ) Se plantea el siguiente sistemas de ecuaciones congruenciales: m ≡ c d1 (mód r1 ) d2 (mód r2 ) m ≡ c du (mód ru ) m≡c .. . donde di ≡ e−1 (mód ri − 1), i = 1, . . . u resolviéndolo tı́picamente con el algoritmo de Garner. Números primos implicados son más pequeños (menos costosos computacionalmente de tratar y conseguir). Desventaja: sistema menos robusto. ECC Intro. DH RSA ElGamal Relleno (padding) Documento PKCS#1 PKCS#1-v1 5: si k es la longitud en octetos del módulo N, y l la del mensaje sólo se pueden cifrar mensajes de longitud l ≤ k − 11 Se cifra m′ = 00||02||PS||00||m donde PS es una secuencia aleatoria de k − l − 3 octetos, sin ningún octeto a cero. OAEP: Optimal Asymmetric Encryption Padding. ECC Intro. DH RSA ElGamal Sean p: número primo grande (varios centenares de dı́gitos decimales) g: generador del grupo Zp (sus potencias generan todos los elementos del grupo {1, . . . p − 1}). x: número entero aleatorio secreto y ≡ gx (mód p) Clave secreta: (p, g, x) Clave pública: (p, g, y) ECC Intro. DH RSA ElGamal Cifrado: Acceso a clave pública (p, g, y) Generación de número aleatorio secreto k, con 1 < k < p − 1 y mcd(k, p − 1)=1. Un mensaje M, con 1 < M < p se cifra como C = (r , s) r ≡ gk s ≡ My k (mód p) (mód p) ECC Intro. DH RSA ElGamal Descifrado: Acceso a su clave privada (p, g, x) Mensaje M recuperado a partir de C = (r , s): M ≡ s (r x ) −1 (mód p) Comprobación: −1 s (r x ) ≡ My k gk x −1 (mód p) k −1 ≡ My k (g x ) (mód p) −1 ≡ My k y k (mód p) ≡M (mód p) ECC Intro. DH RSA ElGamal Ventajas: el mismo mensaje no tiene porqué tener el mismo texto cifrado, debido a k Inconvenientes: el cifrado es expansivo (longitud del texo cifrado es el doble que el texto llano) Fortaleza: logaritmo discreto ECC Intro. DH RSA ElGamal ECC Ejemplo: (p, g, x) = (107, 32, 74) siendo la clave pública ElGamal (p, g, y ), con y ≡ 3274 ≡ 53 (mód 107) por tanto (p, g, y ) = (107, 32, 53) Si alguien desea enviar un mensaje cifrado al propietario de esta clave debe: Conseguir la clave pública (p, g, y ) = (107, 32, 53) Generar un número aleatorio k , con mcd(k , p − 1)=1, por ejemplo 49 Cifrar el mensaje M con 1 < M < p, por ejemplo M = 82: r ≡ s≡ C= gk My k (mód p) ≡ (mód p) ≡ (r , s) = 3249 82 · 5349 (mód 107) ≡ 58 (mód 107) (mód 107) ≡ 28 (mód 107) (58, 28) Intro. DH RSA ElGamal Ejemplo (cont.) El propietario de la clave podrá descifrar el mensaje haciendo: −1 (mód p) M ≡ s rx −1 ≡ 28 5874 (mód 107) ≡ 28 · 16−1 ≡ 82 (mód 107) (mód 107) ECC Intro. DH RSA ElGamal ECC: Elliptic Curve Cryptography (criptografı́a de curvas elı́pticas) ECC