05. Criptografía de clave pública Criptografía 5º Curso de Ingeniería Informática Escuela Técnica Superior de Ingeniería Informática Universidad de Sevilla
Contenido Cifrado con clave pública Ventajas e inconvenientes RSA ElGamal clásico ElGamal elíptico Comparativa
Cifrado con clave pública Primeramente propuesto por Diffie y Hellman en 1.976. Algoritmos basados en funciones matemáticas y no en operaciones sobre patrones de bits. Es asimétrica, implica el uso de dos claves. Éste hecho posee importantes consecuencias en los ámbitos de la confidencialidad, distribución de claves y la autentificación. Concepto de función de un solo sentido.
Intercambio Diffie-Hellman Problema del Logaritmo Discreto (PLD) x y g (mod p) x log y(mod p) Dado hallar Para que PLD sea difícil de resolver: g debe dar lugar a muchas potencias distintas p debe ser un número primo fuerte Intercambio de clave, conocido (p,g): xa A toma 1<x a <p-1 y envía a B y g (mod p) g a B toma 1<x b <p-1 y envía a A y b g xb (mod p) Clave común: y x b a y x a b g x a x b (mod p)
Intercambio Diffie-Hellman p 71, g 21, x a 46, x b 57 y y a b 9(mod 71) 61(mod 71) 46 21 46 57 61 9 57 21 16(mod 71) Intercambio de clave, conocido (p,g): xa A toma 1<x a <p-1 y envía a B y g (mod p) a B toma 1<x b <p-1 y envía a A y b g xb (mod p) Clave común: y x b a y x a b g x a x b (mod p)
Intercambio Diffie-Hellman Problema del Logaritmo Discreto (PLD) x y g (mod p) x log y(mod p) Dado hallar Para que PLD sea difícil de resolver: g debe dar lugar a muchas potencias distintas p debe ser un número primo fuerte Un elemento g se denomina primitivo o generador de un grupo (G, ) si sus potencias generan todo el grupo Un primo p se dice fuerte si es de la forma p 1 r r 1 s p 1 t Para ciertos primos grandes r, s y t g
Búsqueda de generadores Método de selección de elementos primitivos Entrada: p primo, con * Elegir al azar enz p {1,2,, p 1} Para i desde 1 hasta t hacer si Fin para Salida: elemento primitivo 0 { p1 p i 2 1,,,, r p 1 p1 1 p1 1(mod p) entonces empezar de nuevo p2 } Z * p r t {1,2,, p 1}
Búsqueda de generadores 2 3 2 18,18} {1,2, },,, 1, { * 19 17 2 0 Z,18} {1,2,, 19 * 19 p Z 11 1 1 11 7 11 7 7 1 1 18 1 1 1 1 18 18 1 9 8 7 6 5 4 3 2 1 6 9 x x 1 7 7 11 7 11 1 1 11 18 1 1 18 18 18 18 1 18 18 17 16 15 14 13 12 11 10 6 9 x x
Búsqueda de números primos Test de Miller-Rabin: probables primos s Entrada: n impar, con n 2 r 1 para r impar Elegir 1<a<n al azar si a r j 2 1(mod n) ó a r 1(mod n),0 j s 1 entonces n es primo con una 3 probabilidad mayor o igual que en otro caso n es compuesto 4 Aplicar el test k veces aumenta la probabilidad a En adelante, primo significará probable primo según Miller-Rabin 1 1 k 4
Búsqueda de primos fuertes Test de Gordon: probables primos fuertes Entrada: s y t primos Elegir el primer primo r de la forma 2it+1 para i i 0 Salida: primo fuerte, consistente en el primer primo de la forma 2 2s r (mod r) s 1 2 jrs, para j j0 Requiere un 19% más de tiempo que Miller-Rabin
Funciones de un solo sentido f() es una función de un solo sentido si: 1. Dado cualquier y es computacionalmente imposible hallar x tal que f(x)=y. Se traduce en que descifrar resulta imposible... 2. Existe una función h y una información secreta s tal que conocidos s e y: es fácil de calcular h(s, y). f(h(s, y)) = y....si no se conoce la puerta trasera La información s se denomina puerta trasera. Tras un criptosistema asimétrico siempre hay una función de un solo sentido con puerta trasera
Clave pública: cifrado ingenuo Es débil por suplantación 1. Cada usuario genera una pareja de claves para el cifrado y el descifrado de mensajes. 2. Cada usuario da a conocer su clave pública. 3. Si un usuario A quiere enviar un mensaje a B, cifra el mensaje usando la clave pública de B. 4. Cuando B recibe el mensaje, lo descifra usando su clave privada. Ningún otro receptor puede descifrar el mensaje pues sólo B conoce su clave privada.
Clave pública: cifrado ingenuo E KU O (M ) O E KU B (M ') A B C E (M ) M E (C) KU B KR B
4. B descifra el mensaje usando primero su clave privada y después la pública de A. Ningún otro receptor puede descifrar el mensaje pues sólo B conoce su clave privada. El mensaje procede de A: lo autentifica el uso de su clave pública. Cifrado con autentificación Cifrado con autenticación 1. Cada usuario genera una pareja de claves para el cifrado y el descifrado de mensajes. 2. Cada usuario da a conocer su clave pública. 3. Si un usuario A quiere enviar un mensaje a B, cifra el mensaje doblemente, primero usando su clave privada y después la pública de B.
Cifrado con autentificación A B B A C E ( E ( M )) KU B KR A M E ( E ( C)) KU A KR B
Ventajas e inconvenientes Ventajas Versátiles: resuelven muchos problemas. Seguros. No tienen problemas para la distribución de claves. Inconvenientes Lentos. Suelen necesitar soportes especiales: aritméticas de grandes números y otras. Difíciles de implementar en hardware.
RSA Generación de claves 1. Se eligen dos números primos suficientemente grandes p, q. Se hace n = p q, Φ = (p-1) (q-1) 2. Se elige e primo con Φ y se calcula d, un número tal que el resto de dividir d e entre Φ sea 1. 3. Clave pública: (n, e). Clave privada: d. n pq e ( n) ( p 1)( q 1) d e 1 (mod ( n))
Cifrado y descifrado RSA Los mensajes se dividen en bloques de bits y cada bloque se representa con un número entre 0 y n. Si un bloque es x el cifrado es y, el resto de dividir x e e entre n. y x (mod n) Si se recibe y, se obtiene x calculando el resto de dividir y d d (mod p1) entre n. y x y d (mod (mod p) n) d (mod q1 y ) (mod q) y d x de x 1k ( n) x ( n) k x x(mod n)
RSA Método de la potencia rápida Entrada: b,n,e=(c k-1,...,c 0 ) 2 t=1 Para j desde k-1 hasta 0 hacer t=t 2 (mod n) si c j =1 entonces t=b t (mod n) Fin para Salida: t=b e (mod n) e c k1 0 k12 c0 2 b e k1 c 2 2 0 k1 c0 b b
RSA n 2867 pq 6147 ( n) ( p 1)( q 1) 6046 2760 e 247 d M 1575 C 247 C 2085 M 1 1575 2085 (mod 2760) 247 2503 2503 (mod 2867) (mod 2867) 2085 1575 TCR 43 2503 11 (mod 61) 50 M 2085 (mod 2867) 19 Euler17 (mod 47) 24 Bezout 61 47 6110 4713 1 M 504713 2461( 10) 1575
Seguridad de RSA p y q deben ser primos no próximos entre sí para evitar la factorización de n El mínimo común múltiplo de p-1 y q-1 ha de ser grande para disminuir el número de claves privadas útiles d i para descifrar el cifrado con e Las elecciones de n y de e deben evitar la proliferación de mensajes que no se cifren
Seguridad de RSA p y q deben ser primos no próximos entre sí para evitar la factorización de n Factorización de Fermat n pq x 2 2 p q p q n y, para Idea: buscar (x,y) con x 2 -n=y 2 para x 2 >n n 121879, n x 349.112 2 2 x 350 x n 3 69 x 351 x n 1322 2 x 352 x n 45 p 397, q 307 2, y 2
Seguridad de RSA El mínimo común múltiplo de p-1 y q-1 ha de ser grande para disminuir el número de claves privadas útiles d i para descifrar el cifrado con e Sea mcm( p 1, q 1), y sea d e 1 (mod ) Es evidente que <(n), pues p-1 y q-1 son ambos pares, por lo que d diferirá en general de d. Pero Euler ed d M (mod p) M C (mod n) Euler M (mod n) ed M (mod q) M n d Lo mismo para d i d i, 0 i
Seguridad de RSA e El mínimo común múltiplo de p-1 y q-1 ha de ser grande para disminuir el número de claves privadas útiles d i para descifrar el cifrado con e Sea n 3053, p 157 (3053) 71, q 43, e 157 210 d 157 Claves válidas de descifrado : d i 2940 d 157 mcm(70,42) 3053103 103 210i,0 i 14 210 103,313,523,733,943,1153,1363,1573, 1 1 (mod 2940) (mod 210) 1783,1993,2203,2413,2623,2833,3043 210 103 1573
Seguridad de RSA Las elecciones de n y de e deben evitar la proliferación de mensajes que no se cifren M M e e(mod p1) (mod M M (mod p) n) e(mod q1 M M ) (mod q) Se puede probar que la ecuación x e =x (mod p) tiene exactamente 1+mcd(e-1,p-1) soluciones, para p primo e M M para [1 mcd( e 1, p 1)] [1 mcd( e 1, q 1)] mensajes diferentes M
Seguridad de RSA Las elecciones de n y de e deben evitar la proliferación de mensajes que no se cifren Sea n 551, p 29, q 19, e 13 13 13 M M (mod 29) M M (mod 551) 13 M M (mod19) La primera ecuación tiene 1+mcd(12,28)=5 soluciones 13 M M (mod 29) M {0,1,12,17,28} La segunda ecuación tiene 1+mcd(12,18)=7 soluciones 13 M M (mod19) M {0,1,7,8,11,12,18} La ecuación primigenia tiene 5 7=35 soluciones {0,1,12,30,46,57,58,75,87,88,115,133,144,145,191,202,220,273,278, 331,349,360,406,407,418,436,463,464,476,493,494,505,521,539,550}
Ataques a RSA Cíclico: elevar reiteradamente el mensaje cifrado a la clave pública e hasta que se obtenga el mensaje cifrado original Factorización de n Merkle-Hellman: buscar exponentes i y j tales que M i =M j (mod n)
ElGamal clásico ElGamal Clásico Taher ElGamal propone en 1985 un algoritmo de cifra que hace uso del problema del logaritmo discreto PLD Generar un primo fuerte p para definir el grupo Z p * Tomar g un elemento generador de Z p * Cada usuario elige un número aleatorio 1<x<p El valor x será la clave privada Cada usuario calcula g x mod p Los valores g x mod p, g y p serán la clave pública Seguridad del sistema Para descubrir la clave privada, el atacante deberá enfrentarse al problema del logaritmo discreto.
Cifrado con ElGamal Cifrado con ElGamal Los mensajes se dividen en bloques de bits y cada bloque se representa con un número entre 1 y p-1. Cifrado: A cifra un número M que envía a B El usuario B ha elegido su clave privada x, (1<x<p-1) El usuario B ha hecho pública su clave, g, p e y=g x mod p El emisor A genera un número aleatorio k de sesión (1<k<p-1) y envía a B C=[g k mod p, M*y k mod p]
Descifrado con ElGamal Descifrado con ElGamal Descifrado: B descifra el criptograma C que envía a A El usuario B recibe C=[g k mod p, M*y k mod p] B toma el valor g k mod p y calcula [(g k ) x ] -1 mod p B descifra el criptograma C D(C)= M*y k * [(g k ) x ] -1 mod p=m y k * [(g k ) x ] -1 mod p=(g x ) k * [(g k ) x ] -1 mod p=1
Ejemplo: ElGamal ElGamal clásico Ejemplo: Benito toma p=2579, g=2 (elemento generador de Z * 2579) y x=765 (valor aleatorio) y calcula y=2 765 mod 2579=949. Clave pública: (p,g,y) Clave privada: x.alicia envía el mensaje M=1299 cifrado a Benito. Toma k=853 aleatoriamente C=E(M)=[2 853 mod 2579, 1299 * 949 853 mod 2579]=[435, 2399] M=D(C)=2396 * (435 765 ) -1 mod 2579= 1299
Observaciones: ElGamal Clásico ElGamal clásico Un mismo mensaje M puede cifrase de distinta manera si se elige distintos valores de k. El tamano del criptograma C es el doble del mensaje M. En la práctica estos sistemas sólo se úsan para cifrar claves de sesión o resúmenes. Por tanto, M= números de centenas de bits mientras que p (en ElGamal) y n (RSA) números de miles de bits.
Curvas elípticas
Curvas elípticas
Suma de puntos
Suma de puntos
Sobre un cuerpo finito
ECC
ECC
Cifrado ECC
Descifrado ECC
Tamaños de claves