Qué es un certificado SSL
En la lección anterior comprobamos una firma con una clave pública. En el intercambio de claves y al cerrar con una clave pública, debajo de cada paso había la misma suposición: que la clave pública que tenemos en la mano es de verdad de esa persona. Si alguien en medio entrega su propia clave pública como si fuera la de esa persona, tanto el cierre como la verificación de la firma acaban haciéndose con la parte equivocada. ¿Con qué fundamento podemos confiar en la clave pública de un sitio que nunca hemos visto?
Puede colarse una clave pública falsa
Hasta ahora confiábamos sin más en las claves públicas que recibíamos y dábamos por hecho que cada una era de esa persona. Pero la historia cambia si alguien se sitúa entre tú y el otro lado. Si esa persona entrega en silencio su propia clave pública en lugar de la real, tú cierras tu secreto con ella sin saberlo, y ella lo abre con su propia clave privada. Si después lo vuelve a cerrar con la clave pública real y lo pasa, ninguno de los dos lados lo nota.
La clave pública como herramienta no tiene ningún defecto. Lo que se tambalea es una sola cosa: de quién es. Esa es justo la tarea que nos dejó la lección del intercambio de claves.
Elige qué clave pública se envía. Si llega la real intacta, es seguro; si en medio la cambian por una falsa, verás que el secreto se abre en las manos equivocadas.
Puestos lado a lado, la diferencia es clara. Cuando llega la clave real no pasa nada, pero cuando llega una falsa, tu pantalla tampoco muestra más que una clave pública que ha llegado. Una clave pública es solo un número largo sin etiqueta con nombre, así que mirándola no puedes saber quién es su dueño.
Por eso hace falta alguien que garantice, de una forma fiable, que esta clave pública es de verdad de esa persona. Quien asume esa garantía aparece a continuación.
Un organismo de confianza la avala
Aquí aparece un organismo en el que todos han acordado confiar: una autoridad de certificación, o CA para abreviar. Un sitio entrega a la CA su clave pública y su nombre de dominio, y la CA comprueba que quien lo solicita controla de verdad ese dominio.
Cuando termina la comprobación, la CA reúne en un solo documento la clave pública, el nombre de dominio, el emisor y un periodo de validez, y lo firma con su propia clave privada: la misma firma imposible de falsificar de la lección anterior. Un documento con la firma de una CA como este es un certificado. En la práctica, la clave pública lleva ahora un documento de identidad fiable.
Toca los pasos de emisión en orden. El sitio entrega su clave pública, y la CA la comprueba, la firma y lo empaqueta todo en un certificado.
Ahora la clave pública ya no flota sola: la firma de la CA la respalda. Esa firma solo puede hacerse con la clave privada de la CA, así que nadie puede imitarla. Quien recibe el certificado comprueba la firma con la clave pública de la CA y, si encaja, puede confiar en que la clave pública que figura pertenece al dominio que figura.
Un certificado también tiene un periodo de validez, y uno caducado ya no cuenta como garantía. Pero queda una pregunta: ¿con qué fundamento confiamos en la clave pública de esa CA?
La lista de confianza del navegador, PKI
Los fundamentos para confiar en una CA son más sencillos de lo que parece. Los sistemas operativos y los navegadores vienen con una lista de certificados de CA raíz revisados de antemano. Esa lista es el punto de partida de la confianza.
Aun así, las CA raíz no firman directamente cada sitio. La clave privada de una CA raíz suele guardarse desconectada de la red y bajo llave, y la emisión del día a día queda en manos de CA intermedias avaladas por la raíz. Así, el navegador parte del certificado del sitio, sube paso a paso por cada CA que firmó y termina cuando llega a una raíz de su lista de confianza. Toda esta estructura, en la que un aval se enlaza con otro, se llama infraestructura de clave pública, o PKI.
Sube la cadena paso a paso. Partiendo del certificado del sitio y pasando por la CA intermedia, la verificación termina al llegar a una CA raíz de la lista de confianza.
Al final de la cadena encontramos la CA raíz en la que el navegador ya confiaba. Un certificado raíz está firmado por sí mismo, así que la confianza en él nace de que está en la lista. Si la cadena enlaza hasta ahí sin cortarse, hasta la clave pública del sitio de más abajo pasa a ser fiable.
No conoces el sitio en persona, pero confías en él porque la raíz en la que confías avaló a la CA intermedia, y la CA intermedia avaló al sitio. Entonces, cuando llega un certificado real, ¿qué separa el paso de la advertencia?
Un certificado real pasa, uno falso avisa
Cuando un navegador recibe un certificado, comprueba varias cosas por turno: si la cadena llega a una raíz de la lista de confianza, si todas las firmas de la cadena son válidas, si el dominio escrito en el certificado coincide con la dirección que visitas y si el periodo de validez no ha vencido.
Si todo se cumple, pasa y aparece un candado en la barra de direcciones. Si falla aunque sea una cosa, el navegador muestra una gran pantalla de advertencia y detiene la conexión. Esta comprobación es el portero que filtra las claves públicas falsas.
Verifica los dos certificados uno a uno. El real, que llega a la lista de confianza, pasa; el falso, firmado por un lugar en el que nadie confía, muestra una advertencia.
El real pasó en silencio y el falso quedó detenido por una advertencia al instante. Si en la web te encuentras con una pantalla de advertencia así, significa que no debes seguir sin más, porque te está diciendo que la clave pública del sitio no ha sido avalada de forma fiable.
Por otro lado, si se filtra la clave privada de un sitio, el certificado se vuelve peligroso aunque siga siendo válido. Por eso una CA puede revocar ese certificado, y también existen mecanismos para consultar la información de revocación. Ahora resumamos qué protege un certificado.
Resumen
Todo junto, queda así. Para usar una clave pública con seguridad, tienes que poder confiar en que de verdad es de esa persona o de ese sitio, porque existen ataques que entregan una clave pública falsa en medio. Por eso un organismo de confianza, una CA, comprueba primero y después firma un documento con la clave pública, el nombre de dominio y el periodo de validez; ese documento es un certificado.
El navegador tiene de antemano una lista de CA raíz y sigue hacia arriba las firmas de un certificado, como una cadena, para ver si llegan a esa lista. Toda esta red de confianza enlazada es la PKI.
Toca los cuatro puntos clave en orden para repasar: el peligro de una clave pública falsa, la firma y el aval de la CA, la cadena hasta la raíz, y pasar o avisar.
Ahora sabes con qué fundamento confiamos en una clave pública que nunca hemos visto. Una clave pública que flota sola podría ser de cualquiera, pero un certificado con el aval de una CA es fiable. Detrás del candado que ves cada día en la barra de direcciones están justo este certificado y esta cadena de confianza.
Cerrar, firmar y avalar la identidad: ya están todas las piezas. En la próxima lección veremos cómo se mueven juntas dentro de HTTPS en el momento en que te conectas a un sitio.