HTTPS y TLS
De SSL a TLS y qué versiones siguen vivas, las tres propiedades que asegura, qué protocolos se apoyan en él, por qué el esquema es híbrido y cómo está organizado por dentro.
De SSL a TLS: qué versión está viva
SSL, Secure Sockets Layer, lo creó Netscape a mediados de los años noventa. Cuando su desarrollo pasó al IETF, el protocolo se renombró TLS, Transport Layer Security. No son dos protocolos rivales: TLS es la continuación de SSL con otro nombre, aunque en el lenguaje corriente y en los productos se sigan escribiendo juntos.
| Versión | Año | Estado actual |
|---|---|---|
| SSL 2.0 | 1995 | Prohibido. Roto desde hace décadas |
| SSL 3.0 | 1996 | Prohibido. Es el que rompió el ataque POODLE |
| TLS 1.0 | 1999 | Desaconsejado y prohibido por el RFC 8996 (2021) |
| TLS 1.1 | 2006 | Desaconsejado y prohibido por el mismo RFC |
| TLS 1.2 | 2008 | Vigente. Es todavía el más extendido |
| TLS 1.3 | 2018 | Vigente y recomendado. Más rápido y con menos algoritmos |
Solo hay dos versiones admisibles hoy: TLS 1.2 y TLS 1.3. Cualquier opción de examen que dé por buena SSL 3.0 o TLS 1.0 está mal.
Para el examen
Obsoletos: SSL entero y TLS 1.0 y 1.1
Seguros: TLS 1.2 y TLS 1.3
Decir «SSL»: es un uso coloquial
Qué garantiza TLS y qué no
La criptografía se aplica a un activo de información para asegurar tres propiedades, y TLS las cubre las tres a la vez sobre el canal de comunicación.
| Propiedad | Qué asegura | Con qué se consigue en TLS |
|---|---|---|
| Confidencialidad | Que nadie más pueda leer lo que se transmite | Cifrado simétrico del canal, con la clave acordada en el saludo |
| Integridad | Que nadie haya alterado los datos por el camino, aunque no diga si el contenido es bueno | Códigos de autenticación de mensaje sobre cada registro |
| Autenticidad | Que quien está al otro lado es quien dice ser | El certificado del servidor, firmado por una autoridad de certificación |
Conviene saber también qué queda fuera. TLS no aporta disponibilidad: un servidor con el mejor certificado del mundo se cae igual. Y protege el canal, no el contenido almacenado: lo que llega cifrado al servidor se guarda allí en claro salvo que alguien lo cifre aparte.
Para el examen
Qué da TLS: confidencialidad, integridad y autenticación del servidor
Lo que NO garantiza: que el sitio sea honrado: un sitio fraudulento también puede tener candado
HTTPS y los demás protocolos sobre TLS
TLS no es exclusivo de la web: es una capa genérica que se intercala entre el transporte y la aplicación, de modo que cualquier protocolo de aplicación puede apoyarse en él sin cambiar. HTTPS es sencillamente HTTP hablado dentro de un canal TLS, en el puerto 443 en vez del 80.
| Protocolo | En claro | Sobre TLS |
|---|---|---|
| Web | HTTP, puerto 80 | HTTPS, puerto 443 |
| Directorio | LDAP, puerto 389 | LDAPS, puerto 636 |
| Correo de entrada | IMAP 143 y POP3 110 | IMAPS 993 y POP3S 995 |
| Correo de salida | SMTP, puerto 25 | SMTPS, puerto 465 |
| Transferencia de ficheros | FTP, puertos 20 y 21 | FTPS, puerto 990 |
Hay dos formas de llegar a ese canal cifrado. Una es el puerto dedicado, como el 443: la conexión nace cifrada. La otra es STARTTLS, en la que se conecta al puerto de siempre en claro y se pide elevar la conexión a cifrada con una orden del propio protocolo, cosa habitual en correo. Cómo se aplica esto a cada servicio de correo corresponde a su tema de este mismo bloque.
Para el examen
HTTPS: 443
SMTPS e IMAPS: 465 y 993
POP3S y LDAPS: 995 y 636
Por qué el esquema es híbrido
Las dos familias de cifrado tienen defectos complementarios. El simétrico usa una sola clave para cifrar y descifrar, es muy rápido y sirve para volúmenes grandes, pero exige que las dos partes compartan ya esa clave, y hacérsela llegar a un desconocido por una red pública es justamente el problema. El asimétrico usa un par de claves, de forma que lo que se cifra con una solo se deshace con la otra, y no necesita compartir ningún secreto previo, pero es lento y no sirve para cifrar un canal entero.
TLS combina las dos y por eso se le llama sistema híbrido, igual que PGP. Se usa el cifrado asimétrico una sola vez, al principio, para acordar una clave simétrica, que es pequeña y por tanto barata de proteger así. A partir de ese momento todo el tráfico va con esa clave simétrica, que es lo único que aguanta el volumen de una conexión real.
| Familia | Papel en TLS | Algoritmos |
|---|---|---|
| Simétrica | Cifrar el canal una vez acordada la clave | AES, 3DES, RC5, IDEA |
| Asimétrica | Acordar la clave de sesión y autenticar al servidor | RSA, DSA, DH y ECDH, curva elíptica |
| Resumen y MAC | Comprobar que nadie ha alterado los datos | SHA-2, SHA-3, HMAC |
Cómo funcionan por dentro el resumen, el cifrado asimétrico y la firma electrónica se estudia en el tema de administración electrónica del Bloque I, donde también está la diferencia entre MIC y HMAC y la tabla de codificaciones del certificado. Aquí basta con saber qué papel juega cada pieza dentro de la conexión. En la práctica nada de esto se programa a mano: se usan las bibliotecas del sistema, con OpenSSL como herramienta de referencia, o bibliotecas de terceros como BouncyCastle cuando la plataforma no trae lo necesario.
Asimétrico para acordar la clave, simétrico para cifrar el canal. Invertir esos dos papeles es el error más repetido del tema.
Para el examen
Qué hace la asimétrica: acordar la clave y autenticar
Qué hace la simétrica: cifrar los datos de la sesión
Por qué se reparten: la simétrica es mucho más rápida
Cómo está organizado TLS por dentro
TLS se coloca entre el transporte y la aplicación: por debajo tiene TCP e IP, y por encima el protocolo que quiera protegerse, HTTP en el caso de HTTPS. Internamente se divide en dos niveles.
El nivel de abajo es el protocolo de registro, o TLS Record Protocol. Es el que hace el trabajo material sobre cada bloque de datos: lo trocea, lo cifra y le añade el código de autenticación que garantiza la integridad. La compresión que también contemplaba se retiró por los ataques que aprovechaban precisamente comprimir antes de cifrar.
Por encima corren cuatro subprotocolos, y cada registro lleva un identificador que dice cuál de ellos transporta. Esos números caen literales.
| Código | Subprotocolo | Para qué |
|---|---|---|
| 20 | Change Cipher Spec | Avisa de que a partir del siguiente mensaje se cifra con lo acordado |
| 21 | Alert | Comunica errores y avisos, incluido el cierre ordenado de la sesión |
| 22 | Handshake | El saludo: negociación de parámetros y acuerdo de la clave |
| 23 | Application Data | Los datos de la aplicación ya cifrados, es decir, el HTTP de dentro |
Para el examen
Protocolo de registro: el que transporta
Encima van: saludo, cambio de cifrado, alerta y datos de aplicación