Logo Studenta

Slides TD IV - clases (13)

¡Este material tiene más páginas!

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)

Continuar navegando