Criptografía de clave pública Índice Criptografía Clave Pública Características Comparativa cifrado simétrico vs. asimétrico RSA Operaciones de Cifrado y Descifrado Generación de Claves Firma Digital Funciones Hash 1 Criptografía Texto Claro Cifrado Simétrico Clave Compartida Texto Claro Texto Cifrado Canal Cifrado Asimétrico Criptografía simétrica. Resumen La criptografía simétrica usa una única clave Clave compartida por emisor y por receptor Si se revela la clave, las comunicaciones o los mensajes cifrados se verán comprometidos Se dice simétrica porque las partes son iguales De ahí que no es posible proteger al emisor de que el receptor falsifique el mensaje y diga que fue enviado por el emisor 2 Criptografía asimétrica Dos claves: pública Conocida por todo el mundo Usada para cifrar mensajes y verificar la firma de un mensaje privada (KUa) (KRA) Conocida únicamente por el propietario U d para descifrar Usada d if mensajes j y para firmar fi mensajes j asimétrica: las partes no son iguales Funcionamiento basado la Teoría de Números Criptografía asimétrica Desarrollada para tratar dos problemas clave Firma digital: como verificar que un mensaje llega intacto del que afirma ser su emisor Distribución de claves: cómo poder establecer comunicaciones seguras sin tener que confiar una clave privada a un Centro de Distribución de Claves (Key Distribution Center o KDC) El invento se debe a Whitfield Diffie & Martin Hellman. Universidad de Stanford. 1976. 3 Criptografía asimétrica Criptografía asimétrica. Características Características de las claves Es fácil computacionalmente cifrar/descifrar mensajes cuando se conoce la clave de cifrado/descifrado respectivamente No es posible computacionalmente encontrar la clave de descifrado únicamente a partir del algoritmo y la clave de cifrado Usan las funciones unidireccionales con trampa Son reversibles. Cualquiera de las dos claves pueden usarse para cifrar y descifrar. Todo lo que se cifre con la clave pública puede ser descifrado con la clave privada y viceversa. M = DKRb [ EKUb ( M )] = DKUb [ EKRb ( M )] 4 Funciones unidireccionales con trampa Funciones matemáticas de un sólo sentido (one-way functions) Permiten usar la función en sentido directo [cálculo sencillo] para cifrar y descifrar (usuarios legítimos) Fuerzan el sentido inverso [cálculo complejo] para el ataque o criptoanálisis de la cifra f (M) = C es siempre fácil. f -1(C) = M es difícil salvo que se tenga la trampa. Funciones con trampa más usadas Problema de la factorización Cálculo directo: producto de dos primos grandes Cálculo inverso: factorización de número grande p·q = n n = p·q Problema del logaritmo discreto Cál l di Cálculo directo: t exponenciación i ió di discreta t αx mod n = β Cálculo inverso: logaritmo discreto x = logαβ mod n 5 Cifrado asimétrico. Posibilidades de Cifrado Clave pública destino (KUdest d t – KRdest d t) Clave pública de origen (KUorig – KRorig) Clave p privada de origen g ((KRorig – KUorig) Clave privada de destino (¿?) Cifrado con clave pública de destino Sólo destinatario p podrá descifrar el mensaje j ((KRdest) Proporciona: confidencialidad integridad si el mensaje es alterado no se podrá descifrar No proporciona p p autenticidad del emisor no repudio Cualquiera pudo haber generado el mensaje cifrado El emisor puede negar que ha sido el quien cifró el mensaje 6 Cifrado con clave pública de destino A puede enviar un mensaje cifrado a B utilizando la clave pública de B, KUb C = EKUb (M) B puede descifrar el mensaje utilizando su clave l privada, i d KRb b M = DKRb (C) = DKRb (EKUb (M)) Cifrado con clave pública de origen Si en vez de utilizar la clave pública de destino, el emisor usa su propia clave pública, la cifra no tiene sentido bajo el punto de vista de sistemas de clave pública ya que sólo él o ella sería capaz de descifrar el criptograma (deshacer la operación de cifra) con su propia clave privada. Podría P d í usarse para cifrar if un mensaje j que sólo ól ell propio i emisor pueda descifrar. Sin embargo, para este uso es más adecuado el cifrado simétrico ya que es más eficiente. 7 Cifrado con clave privada de origen Cualquier usuario podrá descifrar el mensaje (KUorig) No proporciona confidencialidad Sí proporciona: integridad Sólo el emisor puede haber cifrado el mensaje con su clave privada ya que sólo el tiene esa clave privada, no repudio si el mensaje es alterado no se podrá descifrar autenticidad del emisor. el emisor no puede negar que ha sido el quien cifró el mensaje ¡Es el mecanismo que hace posible la firma digital! Criptografía asimétrica: Confidencialidad y autenticación 8 Cifrado con clave privada de origen A puede enviar un mensaje cifrado a B utilizando la clave su privada, KRa. C = EKRa (M) B puede descifrar el mensaje utilizando la clave pública de A, KUa M = DKUa (C) = DKUa (EKRa (M)) Criptografía asimétrica: Confidencialidad y autenticación 9 Criptografía asimétrica. Aplicaciones Aplicaciones principales: Cifrado: proporciona confidencialidad Firma digital: proporciona autenticación (además de integridad y no repudio) Intercambio de claves: útil para intercambiar claves de sesión Al Algunos algoritmos l i son adecuados d d para todos d los usos, mientras que otros son específicos de un uso concreto Seguridad de los criptosistemas de clave pública Ataques de búsqueda exhaustiva por fuerza bruta posibles Defensa Longitud de las claves ( >1024 bits) Funciones trampa: en la enorme diferencia de dificultad entre los problemas fáciles (cifrar/descifrar) y los difíciles (criptoanálisis) Normalmente, el problema difícil se conoce, pero es lo suficientemente complejo como para no ser viable resolverlo Problemas Se necesita usar números muy grandes Lentitud 10 Comparativa: autenticación Cifrado simétrico No permite autenticación del emisor No permite por lo tanto no repudio Únicamente Ú permite garantizar la integridad del mensaje Cifrado asimétrico Permite autenticación Permite no repudio del emisor Permite garantizar la integridad del mensaje Comparativa: gestión de claves Cifrado simétrico Para n participantes, entran en juego Cifrado asimétrico Para n participantes, entran en juego n * (n-1) / 2 claves 2 * n claves EJEMPLO Para n = 100 (100 participantes) ─ Simétrico: 100x99/2 = 4950 claves. ─ Asimétrico: 2x100 = 200 claves 11 Comparativa Cifrado simétrico Espacio Cifrado asimétrico Espacio de Claves >= 128 bits Vida Vida de las claves Muy corta (seg. o min.) Claves de sesión de Claves >= 1024 bits de las Claves Larga (meses o años) Comparativa Cifrado simétrico Velocidad de Firma Cifrado asimétrico Muy alta Del orden de 100 a 1000 veces más rápidos Velocidad de Firma Muy baja Usos Seguridad Reside en la seguridad de la propia clave claves sesión firma digital (f. hash) Seguridad Reside en la dificultad computacional de encontrar la clave privada a partir de la clave pública. 12 Principales algoritmos Diffie-Hellman Diffie-Hellman. ElGammal T. 1976. ElGammal. 1985. RSA Ronald Rivest, Adi Shamir y Leonard Adleman.1976 RSA Diseñado por Rivest, Shamir & Adleman del Massachusetts Institute of Technology (MIT) en 1977 Es el algoritmo de clave pública más conocido y usado Basado en exponenciación La exponenciación conlleva O((log n)3) operaciones (fácil) Usa enteros grandes (1024 bits) Seguridad g Basada en el coste de factorizar números grandes La factorización conlleva O(e log n log log n) operaciones (difícil) 13 RSA Cifrado C Descifrado M = Me mod n = Cd mod n = (Me)d mod n = Med mod n Requisitos ∃ e, d, n / Med mod n = M ∀ M < n (Me mod n) y (Cd mod n) sean fáciles de calcular Conocidos e y n sea imposible calcular d Generación de claves RSA Seleccionar dos números primos grandes: p, q Calcular módulo de su grupo de trabajo n = p·q Seleccionar clave de cifrado e Obtener clave de descifrado d nota ø(n)=(p-1)(q-1) 1<e<ø(n), mcd(e,ø(n))=1 e·d=1 mod ø(n) y 0≤d≤n Si d es inversa de e entonces e·d = 1+k·ø(n) para algún k Clave Pública Clave Privada PU={e,n} PR={d,n} Guardar en secreto o destruir p, q y ø(n) 14 Generación de claves RSA Ejemplo Se seleccionan dos primos: p=5 & q=11 Se calcula n = p·q Se calcula ø(n)=(p–1)·(q-1) Se selecciona e con la condición de que cumpla mcd(e,40)=1 Se determina d a partir de la relación d·e = 1 mod 40 y d < 40 n = 5 x 11 = 55 ø(n)= 4 x 10 = 40 se elige e=3 El valor es d=27 ya que 27x3 = 81 = 40x2 + 1 RSA: Cifrado y Descifrado Para cifrar un mensaje M M, el emisor: Obtiene la clave pública del receptor PU={e,n} Calcula: C = Me mod n, dónde 0≤M<n Para descifrar el criptograma C, el propietario: Usa su clave privada PR={d,n} Calcula: M = Cd mod n El mensaje M debe ser menor que el módulo n (se parte en bloques si es necesario) 15 RSA: Cifrado y Descifrado Ejemplo Dado un mensaje M = 36 (36 < 55) Cifrado: C = 363 mod 55 = 16 Descifrado: M = 1627 mod 55 = 36 Seguridad en RSA Aproximaciones para atacar el algoritmo RSA: Búsqueda de la clave por fuerza bruta (no es factible computacionalmente debido al tamaño de los números) Ataques matemáticos (basados en la dificultad de calcular ø(n), factorizando el módulo n) Timing attacks (durante el descifrado) Chosen Ciphertext Attack (explotando las propiedades de RSA) 16 Firma Digital Garantiza que un documento proviene de quién lo ha firmado Documento se cifra con KRorig Proporciona Autenticación, Integridad y no Repudio Sólo el poseedor de la clave privada puede haberlo hecho KUorig permite comprobar la validez del documento Problema: ineficiencia cifrado No se firma el documento completo, sino un resumen Funciones unidireccionales de resumen : funciones hash Funciones Hash A partir de un mensaje M, una función hash o resumen H(M), genera un resumen del mismo. Ejemplo: M = La reunión es a las 20:30 H(M) = 03fgi8 Se puede usar para garantizar la integridad de un mensaje o archivo. Su utilidad más extendida es la firma digital digital. En realidad lo que se firma digitalmente no es el mensaje completo sino un hash o resumen del mismo. 17 Funciones Hash: Ejemplo Agrupación de texto en bloques Función matemática sobre elementos del bloque Tamaño bloque: 3 (A – B) * C Primer Bloque: (69 – 110) * 32 = -1312 Valor Hash a partir de valores parciales Ejemplo: suma de todos los resultados intermedios E n u n r i n c ó n 69 110 32 117 110 32 114 105 110 99 243 110 -1312 1312 224 990 -15840 15840 l a 32 108 97 -7372 u y o 117 121 111 -444 d e 32 100 101 -6868 6868 -22806 22806 M a n c h a 77 97 110 99 104 97 -4365 1144 d e 32 100 101 6500 32 n o m b r e 32 110 111 109 98 114 101 -8658 1254 n o 32 110 111 7590 q 32 113 8927 32 c 99 6831 2738 8669 -11399 Funciones Hash: Ejemplo Cualquier q cambio mínimo en el texto p produce un cambio radical en el resultado de la función Hash E Así, si cambiamos rincón por rincon, el valor de la función Hash pasa de -11.399 a 3.121 n u n r i n c o n 69 110 32 117 110 32 114 105 110 99 111 110 -1312 224 990 -1320 l a 32 108 97 -7372 u y o 117 121 111 -444 d e 32 100 101 -6868 M a n c h a 77 97 110 99 104 97 -4365 1144 d e 32 100 101 6500 32 n o m b r e 32 110 111 109 98 114 101 -8658 1254 n o 32 110 111 7590 q 32 113 8927 32 -8286 c 99 6831 2738 8669 3121 18 F. Hash: Propiedades (I) H(M) será segura si tiene las siguientes características: Unidireccionalidad: conocido un resumen H(M), debe ser computacionalmente imposible encontrar M a partir de dicho resumen. 2. Compresión: a partir de un mensaje de cualquier longitud, el resumen H(M) debe tener una longitud fija. Lo normal es que la longitud de H(M) sea menor que el mensaje M. 3. Facilidad de cálculo: debe ser fácil calcular H(M) a partir de un mensaje M. 4. Difusión: el resumen H(M) debe ser una función compleja de todos los bit del bits d l mensaje j M, M de d tal t l forma f que simplemente i l t modificando difi d un solo l bit del mensaje M, el hash H(M) debería cambiar radicalmente (al menos la mitad de sus bits). 1. F. Hash: Propiedades (II) 5. 6. Colisión simple: p conocido M,, será computacionalmente imposible encontrar otro M’ tal que H(M) = H(M’). Esto se conoce como resistencia débil a las colisiones. Colisión fuerte: será computacionalmente imposible encontrar un par (M, M’) de forma que H(M) = H(M’). Esto se conoce como resistencia fuerte a las colisiones. ataque por la paradoja del cumpleaños. 19 F. Hash: Algoritmos comunes MD5: Ron Rivest 1992. Mejoras al MD4 y MD2 (1990), es más lento, pero con mayor nivel i ld de seguridad. id d G Genera un resumen d de 128 bit bits. SHA-1: National Institute of Standards and Technology (NIST), 1994. Similar a MD5, pero con resumen de 160 bits. Existen otras propuestas conocidas como SHA-256 y SHA-512, posibles estándares. RIPEMD: Comunidad Europea, RACE, 1992. Resumen de 160 bits. N-Hash: Nippon Telephone and Telegraph, 1990. Resumen: 128 bits. Snefru: Ralph Merkle, 190. Resúmenes entre 128 y 256 bits. Ha sido criptoanalizado y es lento. Tiger: Ross Anderson, Eli Biham, 1996, Resúmenes de hasta 192 bits. Optimizado para máquinas de 64 bits (Alpha) (Alpha). Panama: John Daemen, Craig Clapp, 1998. Resúmenes de 256 bits de longitud. Trabaja en modo función hash o como cifrador de flujo. Haval: Yuliang Zheng, Josef Pieprzyk y Jennifer Seberry, 1992. Admite 15 configuraciones diferentes. Hasta 256 bits. Message Digest 5 (MD5) Obsoleto desde mediados de 2005. No obstante, es interesante su estudio dada la sencillez del algoritmo y su generalidad. Algoritmo básico de Message Digest 5: Dado un mensaje M, se convierte en un bloque múltiplo de 512 bits, añadiendo bits al final si es necesario. Existen cuatro vectores iniciales: A, B, C y D, de 32 bits cada uno (32x4=128 bits). Se realizan diversas operaciones lógicas entre estos vectores y el primer bloque de 512 bits del mensaje. Esta operación da como resultado un nuevo conjunto de vectores A’, B’, C’ y D’. Se realiza la misma función con el segundo bloque de 512 bits del mensaje. Al terminar, el algoritmo entrega un resumen que corresponde a los últimos 128 bits de estas operaciones. 20 Herramientas (I) MD5Summer Disponible en: http://www.md5summer.org/about.html Windows Permite calcular o verificar MD5 de un fichero Herramientas (II) digestIT 2004 Disponible en: http://digestit.kennethballard.com/ Windows Permite calcular o verificar MD5/SHA-1 de un fichero Integrado con el Explorador de Windows 21 Herramientas (III) Hyper Hasher Disponible en: http://www.cyberdogtech.com/projects/hyper_hasher Windows Permite calcular el valor checksum (o resumen) de cualquier fichero o cadena de caracteres Soporte para una veintena de algoritmos distintos Integrado con el Explorador de Windows Firma Digital: pasos protocolo Generar resumen del documento (método G ( é conocido por todos)) Cifrar resumen con clave privada emisor Enviar documento junto resumen firmado al receptor Receptor genera un resumen del documento recibido, usando la misma función unidireccional de resumen. Después descifra con la clave pública del origen el resumen firmado Si el resumen firmado coincide con el resumen que él ha generado la firma es válida generado, 22 Firma Digital Se ofrecen conjuntamente los servicios de: No rechazo, ya que nadie excepto A podría haber firmado el documento Autenticación, ya que si el documento viene firmado por A, podemos estar seguros de su identidad, dado que sólo él ha podido firmarlo Integridad del documento, ya que en caso de ser modificado, resultaría imposible hacerlo de forma tal que se generase la misma función de resumen que había sido firmada. No privacidad!!!! 23