Seguridad Informática Capítulo 05: Criptografía asimétrica Titulación: Ingeniero en Informática. Curso 5º - Cuatrimestral (2007-2008) Javier Jarauta Sánchez Rafael Palacios Hielscher José María Sierra Tema 11: Criptografía ¾ Introducción y conceptos básicos ¾ Historia de la criptografía asimétrica ¾ Criptografía de clave pública (asimétrica) ¾ Algoritmos asimétricos: Diffie-Hellman, RSA ¾ Aplicaciones: SSL, Firma electrónica 2 Capítulo 11 Historia de la criptografía • Data Encryption Standard (DES) – 1975. IBM Lucifer para NIST • Diffie-Hellman (DH) – 1976. New Directions in Cryptography • Rivest-Shamir-Addleman (RSA) – 1977. Válido para firma y cifrado • Digital Signature Algorithm (DSA) – 1991. Desarrollado por NSA para NIST 3 Capítulo 11 Tipos de algoritmos criptográficos • Asimétricos. Clave Pública – Utiliza dos claves diferentes, una para cifrar y otra para descifrar – Ambas están relacionadas, y de una no puede deducirse la otra – Una se mantiene en secreto y la otra se publica – Se utilizan para cifrado, autenticación y negociación automática de claves 4 Capítulo 11 Algoritmos Asimétricos o de Clave Pública Una Clave para cifrar Texto Claro Algoritmo Criptográfico Cifrar Otra Clave para descifrar Texto Cifrado Algoritmo Criptográfico Texto Descifrado Descifrar • • • • • Utiliza dos claves diferentes matemáticamente relacionadas. Lo que una cifra la otra lo descifra, y viceversa. Conociendo una, no puede deducirse la otra Una de las claves se hace pública y la otra se mantiene privada. Fortaleza: Facilita la gestión de claves, permite firma electónica • Debilidades: Muy lento, ineficiente para grandes cantidades de datos • Ejemplos: DH, RSA, PGP 5 Capítulo 11 Criptografía de Clave Pública (Asimétrica) 6 Capítulo 11 Autenticación con claves públicas Clave Privada Origen Clave Pública Origen Origen Destino Cifrar Descifrar Documento original Documento firmado 7 Capítulo 11 Confidencialidad con claves publicas Clave Pública Destino Clave Privada Destino Origen Destino Cifrar Descifrar 8 Capítulo 11 Algoritmos asimétricos • • RSA: – Diseñado en 1977 por Rivest, Shamir y Adleman – Utiliza claves de 512, 768, 1024 o 2048 (típico 1024) – Basado en la complejidad de factorizar enteros muy grandes – Utilizado mayoritariamente para firmar DH: – Diseñado en 1977 por Diffie y Hellman. – Claves de 512, 1024 – Basado en las propiedades de los logaritmos discretos – Utilizado mayoritariamente para negociar claves – Necesita autenticación adicional (man-in-the-middle) 9 Capítulo 11 Algoritmos Asimétricos • El Gammal: – Diseñado en 1984 por Taher ElGamal – Puede realizar cifrado y firma – Basado en la dificultad de calcular logaritmos discretos • DSA - Digital Standard Algorithm: – Diseñado por el NIST (National Institute of Standards and Techonology) – Inicialmente se utilizaban claves de 512 y posteriormente se incrementó a 1024 para mayor seguridad – Es una variante de Schnorr y ElGamal 10 Capítulo 11 Algoritmos de exponenciación Clave Pub B Generador Par de claves Variable inicial A B Clave Priv B C = M^Pub B (mod p) M = C^Priv B(mod p) Mensaje M Descifrar Cifrar Mensaje M Receptor Transmisor Los algoritmos criptográficos exponenciales cifran y descifran según la siguiente formula: P C=M ub E M =C Priv D mod p mod p M es el texto claro y C el texto cifrado 11 Capítulo 11 Algoritmo RSA C=M Pub D M =C Priv D mod n PubD n=pq mod n Clave Pública del Destinatario Clave Privada del Destinatario Mensaje M Cifrar Transmisor • • • M=C^PrivD(mod n) C=M^PubD(mod n) Descifrar Mensaje M Destinatario Inventado en 1977 por Ronald Rivest, Adi Shamir, y Leonard Adleman. Sistema de clave pública utilizado para cifrar y autenticar. Modulo n está basado en dos números largos, p y q. 12 Capítulo 11 Algoritmo RSA C=M Pub D M =C Donde, M = Mensaje Claro Pub = Clave Pública (Para Cifrar) n =p.q Priv D mod n mod n C = Mensaje Cifrado Priv = Clave Privada (Para Descifrar) Pub . Priv = 1 mod (p-1) (q-1) La clave pública, Pub , y el módulo n se hacen públicos mientras que la clave privada, Priv , se mantiene en secreto. Ejemplo: p = 11, q = 31, n = 11 * 31 = 341 Pub = 53, Priv = 17 and M=2. 53 C = 253 (mod 341) = 8 El cifrado con RSA es muy lento. 17 M = 817 (mod 341) = 2 13 Capítulo 11 Negociación de claves mediante Diffie-Hellman Alicia a, p son enteros largos Priv A = Entero largo aleatorio Pub A = a Priv A (mod p) a y p no tienen que ser secretos PubA PubB Benito a, p son enteros largos Priv B = Entero largo aleatorio Pub B = a Priv B (mod p) Z = Pub B Priv A (mod p) Z ' = Pub A Priv B (mod p) Z = Z’ Z’ = Z El transmisor Alicia y el receptor Benito utilizan Z como la clave de sesión para cifrar el mensaje. 14 Capítulo 11 Ejemplo de intercambio de clave mediante Diffie-Hellman a=12 p= 47 a y p no tienen que ser secretos PrivA= 3 Pub A = 12 3 (mod47) = 36 a= 12 p= 47 PrivB=5 36 14 Pub B = 12 5 (mod47) = 14 Z = 14 3 (mod47) = 18 Z ' = 36 5 (mod47) = 18 18 18 Ambas partes utilizarán 18 como Clave de Sesión para cifrar el mensaje. 15 Capítulo 11 SSL - Secure Sockets Layer Autenticación de servidor: PubServer - Certificado Autenticación de cliente: PubBrowser - Certificado SSL 3 Browser Browser Internet Web Web Web Web Server Server Web Web Server Server Server Server Cifrado de la sesión con algoritmo simétrico 16 Capítulo 11 Aplicación: Firma electrónica Origen Mensaje Transmitido Destino Mensaje Mensaje Mensaje Hash Descifrar Firma Cifrar Clave Privada Firma Clave Pública Hash Hash Hash iguales = Firma verificada + Integridad 17 Capítulo 11