Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
TD4 2022TD4 2022 Agenda 2 ▪ Introducción a la seguridad en redes ▪ Criptografía • Simétrica: DES, AES • De clave pública: RSA ▪ Autenticación e integridad • Firmas digitales • Funciones de hash criptográficas • Certificados ▪ El protocolo TLS ▪ El protocolo IPsec ▪ Firewalls e IDSs/IPSs TD4 2022TD4 2022 3 Autenticación TD4 2022TD4 2022 4 nonce: valor numérico utilizado una única vez (R) “Soy Alice!” Bob sabe que Alice está activa y que del otro lado está ella (sólo comparte la clave con ella) Autenticación: cuarto intento Objetivo: evitar ataques de replay Protocolo ap4.0: Bob envía a Alice un nonce R; Alice debe devolver R cifrado con una clave compartida KAB(R) R TD4 2022TD4 2022 5 El protocolo anterior emplea una clave compartida.¿Podemos lograr autenticación utilizando criptografía de clave pública? ap5.0: uso de nonces y claves públicas Autenticación: cuarto intento mejorado “Soy Alice!” KA - (R) R ¿pub key? KA + Bob calcula KA +(KA -(R)) = R y, sabiendo que sólo Alice posee la clave privada KA -, concluye que se trata de Alice TD4 2022TD4 2022 6 Integridad TD4 2022TD4 2022 Firmas digitales 7 Mecanismo criptográfico análogo a las firmas de puño y letra ▪ El emisor firma digitalmente un documento de su autoría ▪ Verificable y no falsificable: el receptor puede probar que sólo el emisor del documento produjo la firma que lo acompaña ▪ Esquema básico: firmar el mensaje m cifrándolo con la clave privada K - Algoritmo de cifrado de clave pública Clave privada de Emma, KE - Mensaje m (Emma) Lucio: Tomemos firmas digitales en el parcial. Acá te dejo el link al ejercicio. Emma Lucio: Tomemos firmas digitales en el parcial. Acá te dejo el link al ejercicio. Emma KE -(m) m, KE -(m) TD4 2022TD4 2022 Resúmenes de mensajes (digests) 8 Algunas propiedades de las funciones de hash criptográficas: ▪ No son inyectivas (“muchos a uno”) ▪ Produce una salida (digest) de longitud fija (e.g. 256 bits) ▪ Dado un digest x, es computacionalmente inviable encontrar un m tal que H(m) = x (i.e. resistente a la preimagen) mensaje largo m función de hash H H(m) Es computacionalmente costoso cifrar mensajes largos con criptografía de clave pública Objetivo: obtener resúmenes de nuestros mensajes que sean de longitud fija y fáciles de computar ▪ Para calcular estos digests de mensajes, utilizamos funciones de hash criptográficas: TD4 2022TD4 2022 Algunas funciones de hash populares 9 ▪ MD5 (RFC 1321) • Calcula digests de 128 bits en un proceso de cuatro rounds • Si bien es vulnerable, continúa en uso (por ejemplo para verificar integridad en las transferencias de archivos) • En 2013 se descubrió un ataque para generar colisiones de MD5 que corre en menos de un segundo en una computadora estándar ▪ SHA-1 es otra popular (también vulnerable) • Estandarizada en EEUU por el NIST • Produce digests de 160 bits • SHA-2 y SHA-3 (sus sucesoras) se consideran seguras al día de hoy TD4 2022TD4 2022 Retomando el protocolo ap5.0 10 ▪ Para corregir el protocolo ap5.0, necesitamos certificar las claves públicas ▪ Si Bob pudiera comprobar que la clave pública de Alice es auténtica, el ataque man-in-the-middle de Trudy no surtiría efecto ¿pub key? ¿pub key? Bob comprueba que la clave no está debidamente certificada y descarta la comunicación . . . . . . KA + KT + TD4 2022TD4 2022 Autoridades de Certificación (CAs) 11 ▪ Las autoridades de certificación (CAs) vinculan una clave pública con una entidad (persona física, sitio web, router, etc.) ▪ Cuando una entidad E desea certificar su clave pública, la CA debe verificar la identidad de dicha entidad solicitante • La CA genera un certificado vinculando la identidad de E con su clave pública • Dicho certificado está firmado digitalmente por la CA certificado para la clave pública de Bob (firmado por la CA) firma digital (cifrado) clave pública de Bob KB + Datos de la identidad de Bob clave privada de la CA KCA - TD4 2022TD4 2022 Autoridades de Certificación (CAs) 12 ▪ Cuando Alice quiere utilizar la clave pública de Bob, ■ Obtiene el certificado de Bob ■ Utiliza la clave pública de la CA para validar el certificado ■ Extrae del certificado la clave pública de Bob firma digital (descifrado) clave pública de BobKB + clave pública de la CA KCA + certificado de Bob TD4 2022TD4 2022 Certificados en Internet 13 ▪ En los protocolos de Internet, los certificados de clave pública siguen el estándar X.509 de la ITU (International Telecommunication Union) ■ Describe el formato de los certificados y el mecanismo de autenticación para utilizarlos ■ Incluye datos de identidad de la entidad dueña del certificado, el período de validez del mismo, los algoritmos criptográficos utilizados y la firma digital de la CA, entre otros campos ▪ Dos tipos de certificados: certificado de CA y certificado de entidad final ■ Los certificados de CA se pueden usar para firmar otros certificados ■ Al certificado al comienzo de la cadena de certificación se lo conoce como certificado root ▪ Los navegadores suelen traer una lista de certificados root de las CAs más importantes (e.g. IdenTrust, DigiCert, Let’s Encrypt, etc.) ▪ Los servidores web envían la cadena completa de certificados intermedios para que los navegadores puedan realizar las validaciones correspondientes TD4 2022TD4 2022 14 Protocolos seguros en Internet TLS TD4 2022TD4 2022 Transport Layer Security (TLS) 15 ▪ Protocolo seguro que opera sobre la capa de transporte del stack TCP/IP ▪ Soportado por prácticamente todos los navegadores y servidores web: HTTPS (puerto 443) ▪ Ofrece: • Confidencialidad: vía cifrado simétrico • Integridad: vía hashes criptográficos • Autenticación: vía criptografía de clave pública ▪ Historia: • Orígenes en los ‘80 (investigaciones iniciales sobre APIs seguras similares a los sockets) • Netscape introdujo el protocolo SSL (Secure Sockets Layer) en la década del ‘90 (SSL 3.0 se deprecó en 2015) • SSL evolucionó a TLS (la versión actual 1.3 data de 2018; RFC 8846) TD4 2022TD4 2022 Motivación: t-tls 16 ▪ Handshaking: los interlocutores emplean sus certificados y claves privadas para autenticarse mutuamente; luego intercambian o generan un secreto compartido por ambos ▪ Derivación de claves: los interlocutores generan una serie de claves a partir del secreto compartido ▪ Transferencia de datos: el stream de datos se divide en registros (records) acompañados de digests y posteriormente encriptados ▪ Cierre de conexión: mensajes de control especiales para cerrar de forma segura la conexión ▪ Veamos qué necesitamos en el protocolo mediante una simplificación del mismo: t-tls (Toy TLS) ▪ Ya estudiamos las distintas componentes: TD4 2022TD4 2022 request reply t-tls hello certificado EMS = KA +(MS) TCP SYN TCP SYN+ACK TCP ACK Handshake de t-tls Handshake de t-tls: ▪ Bob establece una conexión TCP con Alice ▪ Bob comprueba la identidad de Alice mediante su certificado ▪ Bob genera un secreto (Master Secret, MS) y se lo envía a Alice cifrado con su clave pública (de aquí se derivarán luego todas las claves de sesión) ▪ Se necesitan 3 RTTs antes de que los interlocutores puedan intercambiar datos 17 Desencripta EMS usando KA - TD4 2022TD4 2022 Claves de sesión 18 ▪ Se generan claves distintas para cada propósito: dos para cifrado de datos y dos para los mecanismos de integridad • Es más seguro que tener una única clave Kc : clave de cifrado de datos cliente → servidor Mc : clave HMAC para datos cliente → servidor Ks : clave de cifrado de datos servidor → cliente Ms : clave HMAC para datos servidor → cliente ▪ HMAC (Hash-based Message Authentication Code, RFC 2104) es un digest calculado a partir de una función de hash y una clave ▪ Estas claves se generan mediante la función KDF (Key Derivation Function) • Utiliza el master secret y datos aleatorios TD4 2022TD4 2022 Cifradode datos 19 ▪ TCP ofrece un stream de bytes a los protocolos de aplicación ▪ Si quisiéramos encriptar datos del stream a medida que se inyectan en el socket, • ¿Dónde iría el HMAC? Si se calcula al final, no tendríamos control de integridad hasta no recibir todos los datos • Por esta razón se fragmenta el stream en una secuencia de registros (records) • Cada registro incluye un HMAC (calculado a partir de la clave de sesión M) datos HMAClongitud ▪ Cada registro se cifra con la clave simétrica K y luego se entrega al socket TCP subyacente: )K( TD4 2022TD4 2022 Cifrado de datos 20 ▪ ¿Es posible ejecutar ataques sobre el stream de datos? • Reordenamiento: intercepción de segmentos TCP (vía man-in middle) y reordenamiento de los mismos (cambiando los #SEQs en los headers TCP sin cifrar) • Replay: reenviar paquetes previamente observados ▪ No es posible: TLS emplea números de secuencia y nonces • Los números de secuencia son “implícitos” • Los interlocutores mantienen cuentas separadas de los mensajes transmitidos y recibidos; ese valor se incorpora dentro del cálculo del HMAC • Los nonces son valores aleatorios elegidos durante el handshake que impactan en la derivación de claves de sesión TD4 2022TD4 2022 Cierre de conexión TLS 21 ▪ ¿Qué ocurriría si un atacante falsificara un segmento TCP para cerrar la conexión subyacente a una sesión TLS legítima? (ataque de truncamiento) ▪ TLS contempla tipos de registro e incluye uno para notificar el cierre de la sesión ▪ Si bien el tipo va en texto plano, queda protegida su integridad por el HMAC del registro datos HMAClongitudtipo cifrado con la clave de sesión K TD4 2022TD4 2022 TLS desde la óptica de HTTP 22 IP TCP TLS HTTP/2 IP UDP QUIC HTTP/3 red transporte aplicación IP TCP HTTP/1.0 HTTP/1.0 sobre TCP ▪ TLS expone una API utilizable por cualquier protocolo de aplicación ▪ Desde la vista de HTTP, HTTP/2 sobre TLS HTTP/3 sobre QUIC (que incorpora TLS) TD4 2022TD4 2022 ▪ Surgió con el objetivo de mejorar la performance y la seguridad de las versiones anteriores ▪ Recorta considerablemente la suite de cifrado (cipher suite), dejando sólo 5 opciones respecto de las 37 de TLS 1.2 • La cipher suite es una paleta de algoritmos criptográficos para generar claves, cifrar datos y calcular MACs • En el handshake se llega a un acuerdo de cuáles de estos utilizar ▪ Sólo permite el uso de Diffie-Hellman (DH) para generar claves, dejando de lado la opción de RSA • Es muy difícil implementar RSA correctamente (ej. ataque de Bleichenbacher) • DH es un algoritmo criptográfico que permite que los interlocutores generen una clave compartida sin conocimiento previo mutuo • El uso de DH permite, además, comprimir el handshake a 1 RTT TLS 1.3 23 TD4 2022TD4 2022 Handshake de TLS 1.3 24 Hello: ▪ Cipher suites ▪ Cálculos de DH anticipados 1 Hello: ▪ Cipher suite ▪ Cálculos de DH ▪ Certificado ▪ Finished 2 3 cliente servidor Hello del cliente ▪ Indica qué algoritmos criptográficos soporta ▪ “Adivina” la parametrización de DH del servidor y envía sus cálculos 1 Hello del servidor ▪ Cipher suite seleccionada ▪ Cálculos de DH ▪ Certificado ▪ Finished: hash encriptado de todo el handshake 2 El cliente: ▪ Verifica el certificado ▪ Genera claves ▪ Envía su Finished ▪ Puede enviar datos de aplicación 3 TD4 2022TD4 2022 Handshake de TLS 1.3: resumir en 0-RTT 25 ▪ initial hello message contains encrypted application data! • “resuming” earlier connection between client and server • application data encrypted using “resumption master secret” from earlier connection ▪ vulnerable to replay attacks! • maybe OK for get HTTP GET or client requests not modifying server state ▪ Optimización adicional inspirada por QUIC ▪ Permite que los clientes envíen datos cifrados en su primer mensaje (elimina delays adicionales) ▪ Se da cuando el cliente se conecta a un servidor con el que ya intercambió datos • Ambos generan un secreto (resumption main secret) con el que posteriormente se pueden encriptar datos en futuras sesiones ▪ Vulnerable a ataques de replay • Puede ser útil en casos de requests sin efectos en el servidor (e.g. GETs de HTTP)
Compartir