Certificados digitales Autoridades Certificación LSI 2013-2014 Contenidos Conceptos de cifrado Cifrado simétrico Cifrado asimétrico Firma Digital Certificados digitales Autoridades de certificación Ejemplos de protocolos seguros 2 Cifrado Criptografía: Kriptos (secreto) y Graphos (escritura) Forma de escribir ocultando el significado Caracterización sistemas de cifrado ¿Cuántas claves se usan para el cifrado/descifrado? Cifrado Simétrico Misma clave se usa para el cifrado y descifrado Cifrado Asimétrico Claves diferentes para el cifrado y el descifrado 3 Cifrado simétrico Texto Claro Cifrado Simétrico Clave Compartida Texto Claro Texto Cifrado Canal 4 Criptografía clásica: escítala Siglo V a.C. Pueblo griego de los lacedemonios. Consistía en un bastón en el que se enrollaba una cinta de cuero y luego se escribía en ella el mensaje de forma longitudinal. Cifrado por transposición: Al desenrollar la cinta, las letras aparecerán desordenadas. Para descifrar el criptograma y recuperar el mensaje en claro habrá que enrollar dicha cinta en un bastón con el mismo diámetro que el usado en el extremo emisor y leer el mensaje de forma longitudinal. La clave del sistema se encuentra en el diámetro del bastón. M = ASI CIFRABAN CON LA ESCITALA C = AAC SIN ICT COA INL FLA RA AE BS 5 Criptografía clásica: César Siglo I a.C. Desplazamiento de tres espacios (k=3) hacia la derecha de M Es un cifrador por sustitución en el que las operaciones se realizan módulo n, (n = al número de elementos de M) M = a b c d e f g h i j k l m n o p q r s t u v w x y z C = D E F G H I J K L M N O P Q R S T U V W X Y Z A B C Ejemplo: M = BOMBA C = ERPED Problema: cada letra se cifra siempre igual Criptoanálisis usando estadísticas de M 6 Cifrado simétrico Operaciones de cifrado Sustitución Monoalfabeto César, Polybios, Playfair, etc. Polialfabeto Vigenere Máquinas de rotor Transposición Rail Fence Transposición de columnas Etc. Producto (sustituciones x transposiciones) Ejemplos de algoritmos simétricos son DES, 3DES, RC5, AES, Blowfish e IDEA. 7 Cifrado simétrico Cifradores simétricos El principal inconveniente es la fase de intercambio de claves ¿Cómo se intercambian de manera segura a través de un medio de comunicación inseguro? Centro de Distribución de Claves Cifrado asimétrico 8 Centro de distribución de claves Problema: conocer clave simétrica de forma segura Key Distribution Center, KDC: servidor comparte diferentes claves con cada usuario registrado Cada usuario tiene una clave para la comunicación segura con el KDC: KA-KDC , KB-KDC KDC KA-KDC KP-KDC KP-KDC KB-KDC KA-KDC KX-KDC KY-KDC KB-KDC KZ-KDC 9 Centro de distribución de claves Problema: ¿Cómo permite KDC a los usuarios (UA, UB) determinar la contraseña compartida para su comunicación? KDC genera R1 KA-KDC(A,B) Alice recibe R1 y reenvía KB-KDC(A,R1) ) KA-KDC(R1, KB-KDC(A,R1) ) KB-KDC(A,R1) Bob sabe que debe usar R1 para comunicarse con A (Alice) Comunicación entre Alice y Bob mediante clave de sesión R1 para cifrado simétrico 10 Comparativa: gestión de claves Cifrado simétrico Para n participantes, entran en juego Cifrado asimétrico n * (n-1) / 2 claves Para n participantes, entran en juego 2 * n claves EJEMPLO Para n = 100 (100 participantes) ─ Simétrico: 100x99/2 = 4950 claves. ─ Asimétrico: 2x100 = 200 claves 11 CIFRADO ASIMÉTRICO 12 Cifrado asimétrico Dos claves: Pública (KUa) Conocida por todo el mundo Usada para cifrar mensajes y verificar la firma de un mensaje Privada (KRA) Conocida únicamente por el propietario Usada para descifrar mensajes y para firmar mensajes Asimétrica: las partes no son iguales Funcionamiento basado la Teoría de Números 13 Cifrado asimétrico 14 Cifrado con clave pública de destino Sólo destinatario podrá descifrar el mensaje (KRdest) Proporciona: confidencialidad integridad si el mensaje es alterado no se podrá descifrar No proporciona autenticidad del emisor Cualquiera pudo haber generado el mensaje cifrado no repudio El emisor puede negar que ha sido el quien cifró el mensaje 15 Cifrado con clave privada de origen Cualquier usuario podrá descifrar el mensaje (KUorig) No proporciona confidencialidad Sí proporciona: integridad autenticidad del emisor Sólo el emisor puede haber cifrado el mensaje con su clave privada, ya que sólo el tiene esa clave no repudio si el mensaje es alterado no se podrá descifrar el emisor no puede negar que ha sido el quien cifró el mensaje ¡Es el mecanismo que hace posible la firma digital! 16 Cifrado asimétrico: confidencialidad y autenticación 17 El algoritmo de clave pública RSA Desarrollado por Rivest, Shamir & Adleman en el MIT en 1977. Se publicó en 1978. Ha sido desde entonces el enfoque más aceptado e implementado para el cifrado de clave pública. Es un cifrado de bloque en el que el texto claro y el texto cifrado son enteros entre 0 y n-1 para algún n. Basado en exponenciación. La exponenciación conlleva O((log n)3) operaciones (fácil) Seguridad Basada en el coste de factorizar números grandes. La factorización conlleva O(e log n log log n) operaciones (difícil). 18 El algoritmo de clave pública RSA Cifrado C = Me mod n Descifrado M = 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 19 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 1<e<ø(n), mcd(e,ø(n))=1 Obtener clave de descifrado d 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 nota ø(n)=(p-1)(q-1) PU={e,n} Clave Privada PR={d,n} Guardar en secreto o destruir p, q y ø(n) 20 Intercambio de claves Diffie-Hellman Primer algoritmo de clave pública publicado (Diffie & Hellman, 1976) Muchos productos comerciales utilizan este algoritmo El propósito del algoritmo es permitir a dos usuarios intercambiar una clave secreta de forma segura que luego pueda ser usada para el cifrado posterior de mensajes. Se usa en protocolos como SSH, SSL, TLS, … Su seguridad radica en la extrema dificultad (conjeturada, no demostrada) de calcular logaritmos discretos en un cuerpo finito 21 Diffie-Hellman Origen) A = g^x (mod p) Envía al destino A y el valor de g escogido. Se almacena x en secreto Destino) B = g^y (mod p) Cálculo de la clave de sesión: Origen: B^x (mod p) Destino: A^y (mod p) Ningún intermediario puede conocer la clave de sesión Envía al origen B Desconoce x e y ¿Porqué funciona? B^x (mod p) = g^y^x (mod p) = g^(yx) (mod p) = g^(xy) (mod p) = = g^x^y (mod p) = A^y (mod p) 22 Funciones hash Una función hash acepta un mensaje de tamaño variable, M, como entrada y produce un resumen del mensaje de tamaño fijo H(M) como salida. Usos: Autenticación de mensaje Integridad de archivos Contraseñas 23 Autenticación de mensajes con función hash Autenticación de mensajes con función hash (Stallings, 2004) 24 Autenticación de mensajes con función hash Autenticación de mensajes con función hash (Stallings, 2004) 25 Funciones Hash. Una aproximación Agrupación de texto en bloques Representación de cada carácter por su código ASCII Tamaño bloque: 3 Función matemática sobre elementos del bloque (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 224 990 -15840 d e 32 100 101 -6868 -22806 l a 32 108 97 -7372 M a n c h a 32 77 97 110 99 104 97 -4365 1144 d e 32 100 101 6500 c 32 u y o 117 121 111 -444 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 99 6831 2738 8669 -11399 26 Funciones Hash. Una aproximación Cualquier cambio mínimo en el texto 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 d e 32 100 101 -6868 l a 32 108 97 -7372 M a n c h a 32 77 97 110 99 104 97 -4365 1144 d e 32 100 101 6500 32 u y o 117 121 111 -444 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 -8286 c 99 6831 2738 8669 3121 27 Una función hash simple Para generar un hash de n bits, se puede dividir el archivo a procesar en m bloques de n bits cada uno y calcular el XOR de dichos bloques. El resultado será el hash del archivo. Función hash simple mediante XOR bit a bit (Stallings, 2004) 28 Requisitos de las funciones hash Para que resulte útil a la autenticación de mensajes, una función hash H debe poseer las siguientes propiedades (Stallings, 2004): H puede aplicarse aun bloque de datos de cualquier tamaño H produce una salida de tamaño fijo H(x) es relativamente fácil de computar para cualquier x dado Para cualquier valor h dado, es imposible desde el punto de vista computacional encontrar x tal que H(x)=h (propiedad unidireccional) Para cualquier bloque dado x, es imposible desde el punto de vista computacional, encontrar y ≠ x con H(y) = H(x) (resistencia débil a la colisión) Es imposible desde el punto de vista computacional encontrar un par (x, y) tal que H(x) = H(y) (resistencia fuerte a la colisión) 29 Funciones hash 30 Firma Digital Garantiza que un documento proviene de quién lo ha firmado Proporciona Autenticación, Integridad y no Repudio Documento se cifra con KRorig Sólo el poseedor de la clave privada puede haberlo hecho KUorig permite comprobar la validez del documento Problema: ineficiencia cifrado (cifrado asimétrico tiene un coste computacional muy alto) No se firma el documento completo, sino un resumen 31 Firma Digital Protocolo Generar resumen del documento (método 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 32 Firma Digital Protocolo 33 Firma Digital Se ofrecen conjuntamente los servicios de: No repudio, 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 ofrece privacidad! 34 CERTIFICADOS DIGITALES 35 Certificados digitales Una de las funciones principales del cifrado de clave pública es la de tratar el problema de la distribución de claves. Un usuario puede enviar su clave pública a otro o difundirla a través de Internet. Problema: cualquiera puede falsificar la clave pública. Solución: certificado de clave pública. 36 Certificados digitales Un certificado digital, básicamente contiene: Clave pública Identificador o nombre de usuario del dueño de la clave Todo esto firmado digitalmente por una tercera parte confiable La tercera parte confiable suele ser una Autoridad de Certificación (CA, Certificate Authority) en la que confía la comunidad de usuarios 37 Certificado X.509 El formato utilizado actualmente es el X.509v3 Los certificados X.509v3 se utilizan en multitud de aplicaciones (SSL, SSH, S/MIME, Seguridad IP, …) 38 Certificado X.509 Los certificados tienen un período de validez. Si dejan de ser válidos dentro de ese período, es necesario revocarlos. Razones para la revocación: Se sospecha que la clave privada del usuario está comprometida. El usuario ya no está certificado por esa AC. Se sospecha que el certificado de la AC está comprometido. 39 AUTORIDADES DE CERTIFICACIÓN 40 Autoridades de Certificación Un usuario puede presentar su clave pública ante una CA, para obtener un certificado y luego publicarlo. Así, cualquiera que necesite la clave pública de este usuario puede obtener el certificado y verificar que es válida por medio de la firma adjunta. 41 Autoridades de Certificación Obtención del certificado. Clave pública Identificación Personal + KB digital signature (encrypt) CA clave privada K- CA + KB certificado de clave pública, firmado por CA 42 Autoridades de certificación Comprobación del certificado. Obtención del certificado (propio usuario, repositorio, etc.) Verificar la firma del certificado, usando la clave pública de la CA + KB digital signature (decrypt) CA public key Bob’s public + key KB + K CA 43 Autoridades de certificación Características: Cualquier usuario con acceso a la clave pública de la AC puede verificar la clave pública del usuario que fue certificada. Sólo la AC puede modificar el certificado sin que esto se detecte. Evita la necesidad de un repositorio de acceso común. 44 Ejemplos de Autoridades de Certificación VeriSign Thawte GeoTrust FNMT … 45 PROTOCOLOS SEGUROS: SSL Y SSH 46 Secure Socket Layer (SSL) Es un protocolo de seguridad que permite establecer conexiones seguras a través de redes inseguras, como Internet Diseñado por Netscape en 1993 Está principalmente orientado al Web, aunque está disponible para cualquier aplicación TCP 47 Secure Socket Layer (SSL) Objetivos: Permitir transacciones electrónicas. Cifrado. Normalmente, no se cifra toda la comunicación, sino el tráfico que contiene datos sensibles (envío de una contraseña, envío de un número de tarjeta de crédito). La mejora en el rendimiento de las máquinas, hace que muchos sitios utilicen SSL durante toda la comunicación (e.g. Gmail). Autenticación del servidor. Autenticación del cliente (opcional). 48 Secure Socket Layer (SSL) Proporciona: Autenticación del servidor. El servidor debe disponer de un certificado digital emitido por una AC reconocida (que figure en la lista de ACs del cliente) Cifrado. Cliente y Servidor utilizan técnicas de cifrado asimétrico para intercambiar claves compartidas. Se utilizan dichas claves compartidas para cifrar y descifrar la comunicación. Integridad. Se utilizan hash para garantizar que los mensajes no son alterados en tránsito Autenticación del cliente (opcional). Usualmente, el cliente se autentica ante el servidor mediante un nombre de usuario y una contraseña, aunque también podría hacerlo mediante un certificado digital (algunos bancos y administraciones públicas ofrecen esta posibilidad) 49 Secure Sockets Layer Autenticación del servidor Los navegadores actuales incluyen soporte para SSL, así como las claves públicas de las Autoridades de Certificación de confianza. El navegador solicita al servidor que le envíe su certificado. Este certificado debe ser emitido por una AC de confianza. El navegador utiliza la clave pública de la AC para verificar que el certificado del servidor es válido. En el navegador se pueden ver las Autoridades de Certificación de confianza 50 Secure Sockets Layer SSL HandShake (versión simplificada) Cliente Servidor Cliente emite solicitud de session segura (https://www.server.com) Servidor envía un certificado digital X.509 que contiene su clave pública Cliente comprueba certificado contra su lista de ACs conocidas. Si la AC es desconocida, el navegador puede dar al usuario la opción de aceptar el certificado (a riesgo suyo) Cliente genera una clave simétrica aleatoria y la cifra usando la clave pública del servidor Cliente y servidor conocen ahora la clave simétrica y la usan para cifrar la comunicación … 51 Secure Sockets Layer SSL HandShake Extraído de: http://technet.microsoft.com/es-es/library/cc785811(WS.10).aspx 52 Secure Sockets Layer Algoritmos utilizados: Cifrado simétrico: DES – Data Encryption Standard: block 3DES – Triple strength: block RC2 – Rivest Cipher 2: block RC4 – Rivest Cipher 4: stream Cifrado asimétrico: RSA Intercambio de claves: RSA Diffie-Hellman 53 Secure Sockets Layer Algunos puertos utilizados: https: 443 smtps: 465 ldaps: 636 imaps: 993 pop3s: 995 ftps: 989&990 … 54 SSH Desarrollado en 1995 por Tatu Ylönen. Es un protocolo de red que permite establecer un canal seguro entre dos dispositivos de red. Diseñado para ofrecer una alternativa segura a Telnet y FTP. También soporta tunneling (port forwarding y X forwarding) 55 SSH Provee las siguientes garantías de seguridad: Autenticación: El cliente puede verificar que se está conectando al servidor al que indicó. Confidencialidad: Los datos intercambiados se transmiten usando cifrado. Integridad: Se verifica la integridad de los datos intercambiados mediante hash. 56 SSH Secuencia de eventos conexión SSH Intercambio de clave simétrica entre cliente y servidor. Diffie-Hellman Cifrado capa transporte entre cliente y servidor. Autenticación de servidor Interacción cliente-servidor sobre conexión cifrada 57 SSH Directorio /etc/ssh/: moduli: Contiene grupos Diffie-Hellman usados para el intercambio de la clave DiffieHellman que es imprescindible para la construcción de una capa de transporte seguro. Cuando se intercambian las claves al inicio de una sesión SSH, se crea un valor secreto y compartido que no puede ser determinado por ninguna de las partes individualmente. Este valor se usa para proporcionar la autenticación del host ssh_config: Archivo de configuración del sistema cliente SSH por defecto que se sobreescribe si hay alguno ya presente en el directorio principal del usuario (~/.ssh/config) sshd_config: Archivo de configuración para el demonio sshd ssh_host_dsa_key: Clave privada DSA usada por el demonio sshd ssh_host_dsa_key.pub: Clave pública DSA usada por el demonio sshd ssh_host_key: Clave privada RSA usada por el demonio sshd para SSH v1 ssh_host_key.pub: Clave pública RSA usada por el demonio sshd para SSH v1 ssh_host_rsa_key: Clave privada RSA usada por el demonio sshd para SSH v2 ssh_host_rsa_key.pub: Clave pública RSA usada por el demonio sshd para SSH 58 SSH Directorio principal del usuario ~/.ssh/: authorized_keys: Lista de claves públicas "autorizadas". Cuando un cliente se conecta al servidor, el servidor valida al cliente chequeando su clave pública firmada almacenada dentro de este archivo id_dsa: Clave privada DSA del usuario id_dsa.pub: Clave pública DSA del usuario id_rsa: Clave RSA privada usada por ssh para SSH v2 id_rsa.pub: La clave pública RSA usada por ssh para SSH v2 identity: La clave privada RSA usada por ssh para SSH v1 identity.pub: La clave pública RSA usada por ssh para SSH v1 known_hosts: Claves de host DSA de los servidores SSH accedidos por el usuario. Este archivo es muy importante para asegurarse de que el cliente SHH está conectado al servidor SSH correcto 59 SSH. Tunneling Permite asegurar accesos por medio de servicios inseguros telnet rsh rlogin ftp, vsftpd … Fases Apertura tunel ssh Mapeado de un puerto local a un puerto remoto del servidor Opciones Redirección puerto local Eg. ssh –L localPort:serverName:remotePort username@serverName Redirección puerto remoto Envío de tráfico a través del túnel 60 SSH. Tunneling (Barrett et. al., 2005) 61 SSH. Tunneling Comprobar el correo del servidor usando POP a través de una conexión cifrada: ssh -L 1100:mail.example.com:110 mail.example.com Una vez que el canal de reenvío de puerto está entre la máquina cliente y el servidor de correo, puede direccionar su cliente de correo POP para usar el puerto 1100 en su host local para comprobar el nuevo correo. Cualquier petición enviada al puerto 1100 en el sistema cliente será dirigida de manera segura al servidor mail.example.com 110 1100 cliente mail.example.com 62 SSH. Herramientas SCP (Secure Copy Protocol) Permite transmitir ficheros entre máquinas sobre una conexión cifrada y segura scp [options] u1@src:dir1/filename1 u2@dst:dir2/filename2 SFTP (SSH File Transfer Protocol) Permite abrir una conexión segura interactiva de ftp sftp usuario@ftpServer ssh-keygen Generación de claves DSA y/o RSA Autenticación basada en clave pública/privada y no en user/password ~/.ssh/authorized_keys ssh –I privateKey 63 Bibliografía recomendada Stallings, W. (2004). Fundamentos de Seguridad en Redes. Aplicaciones y estándares. (2ª ed.): Pearson. Santos del Riego, A (2013). Legislación [Protección] y Seguridad de la Información. Disponible en: http://psi-udc.blogspot.com. 64 Bibliografía complementaria / Sitios de interés Daniel J. Barrett, Richard E. Silverman, Robert G. Byrnes. (2005). SSH, the secure shell: the definitive guide. 2nd Edition. O'Reilly. Gluck, Y., Harris, N., & Prado, A. (2013). Breach: Reviving The Crime Attack. Disponible en: http://breachattack.com/resources/BREACH%20%20SSL,%20gone%20in%2030%20seconds.pdf 65