Una conexión HTTPS / TLS no quiere decir "confía en mí". Quiere decir "nadie más puede acceder". Podrías estar recibiendo la llamada de un atacante, y que fuese privada.
Scott Hanselman
Hemos cambiado el problema de
cómo compartir claves simétricas
por el de
cómo compartir claves públicas (asimétricas)
Gestión de claves públicas
Certificados electrónicos
Ataque man in the middle
El problema de la confianza
¿Cómo conseguimos la clave pública de los demás?
Sistema central de distribución: base de datos de claves públicas compartida. Idea original de Diffie y Hellman el 1976
Gestión manual: guardamos una lista de claves públicas. Ejemplo: SSH
Certificados
PGP: gestión descentralizada (Web of trust)
PKI/X.509: gestión centralizada
Gestión manual: SSH
El cliente guarda cifrada la clave privada y la lista de claves públicas de los servidores en que confía
El servidor guarda en claro la clave privada (del servicio sshd) y las claves públicas de los usuarios
CA raíz: sólo emite certificados para CA subordinadas y "revocaciones"
está activa en momentos puntuales (off-line)
en caso de compromiso no hay protocolo definido
CA subordinada: emite certificados finalistas (usuarios, servidores)
está en línea constantemente, ya sea por red pública o privada
en caso de compromiso se sigue el procedimiento de revocación de CA
Autoridades de certificación raíz
Instaladas con el sistema operativo o el navegador
En la imagen, Root CAs instaladas en mi Firefox
Revocación
Los certificados tienen una validez limitada en el tiempo, pero es posible que su contenido deje de ser válido antes
Si esto pasa, hace falta comunicarlo a la RA (Autoridad de Registro) siguiendo los procedimientos que dictamine la Política de Certificación (o la Declaración de Prácticas de Certificación derivada)
¿Cómo sabemos si un certificado ha sido revocado?
se publica una CRL: Certificate Revocation List
se publica en un servidor OCSP
Resumen y referencias
Resumen
Hemos reducido el problema de la seguridad en un problema de gestión de claves públicas
Tres soluciones:
SSH: claves públicas gestinadas manualmente
PGP: claves públicas proporcionadas por amigos
PKI (certificados): claves públicas proporcionadas por terceras partes de confianza y firmadas digitalmente
TLS / HTTPS:
Primera parte: negocia la seguridad de un servidor con una clave pública y PKI
Recordatorio de cómo funciona el cifrado asimétrico:
- Todo el mundo tiene dos claves:
- una privada, que solo conoce la persona
- una pública, que se asume que cualquier persona puede conocer
- A partir de la pública no se puede sacar la privada. Cuidado: quizá necesites un algoritmo ligeramente diferente.
- Lo que cifras con una lo puedes descifrar con la otra
- Envío con confidencialidad: cifra la información con la clave pública de la otra persona
- Solo la otra persona puede descifrarla, porque solo ella tiene la clave privada
- Pero también funciona al revés: una persona puede cifrar un mensaje con su clave privada y lanzarlo al mundo
- Cualquier persona pueda descifrar el mensaje, ya que solo se necesita la clave pública de quien cifró. Es decir, este esquema NO OFRECE CONFIDENCIALIDAD
- PERO: dado que el mensaje podemos descifrarlo con una clave pública específica, sabemos que solo la persona que tenga la clave privada podría haber enviado ese mensaje: estamos acercándonos a la **autenticidad**: probar quién ha enviado un mensaje
Es decir: Alice y Bob firma los parámtros A y B y, si la firma verifica, Bob sabe que está hablando con Alice y al revés.
Durante un ataque man in the middle, un atacante se pone en medio de las comunicaciones. Cada una de las partes establece una conexión segura con el atacante: nadie de fuera sabe qué es está diciendo, pero no estamos hablando con quien queremos hablar.
El atacante dejará pasar la mayoría de las comunicaciones, solo está interesado en participar una vez, cambiando la cuenta bancaria en la que se realiza un pago.
Fíjate: no hemos decrito ningún protocolo que nos proteja ante este tipo de ataque!
- No hemos dado autenticación: no sabemos con quién estamos hablando
- No hemos dado integridad: un atacante podría cambiar el mensaje sin que nos enteremos
(aún así, en los protocolos descritos, es muy poco probable que el atacante pueda cambiar el contenido de un mensaje por otro CON SENTIDO. Pero algunos protocolos son muy sensibles al cambio: hashes, repeticiones...)
La identidad de Alice pueden ser muchas cosas:
- Su nombre, DNI, dirección de correo electrónico...
- La URL de una página web, en el caso de servidores
La clave privada de un TTP es muy delicada: se protege en grandes edificios con una enorme seguridad física, en PCs desconoctados de Internet y dentro de cajas fuertes.
Por eso los certificados de usuarios no suelen estar firmados por una TTP final (llamada "Root CA") sino por otras terceras partes intermedias con capacidad para firmas certificados de usuarios. El certificados de estos intermediarios sí que está firmado por la Autoridad raíz
Esto es el ejemplo de una cadena de certificados de campus.viu.es, que aparece al pinchar "en el candado" de la barra de direcciones.
La transparencia está solo para ocupar el espacio, veremos los detalles durante la clase
Fíjate:
- Identidades del certificado de la web
- Certificados intermedios
- Certificado raíz
- Lista de revocación
Prueba también con otras páginas web