Qué es un certificado SSL y por qué debería importarte

Qué es un certificado SSL y por qué debería importarte
24 comentarios Facebook Twitter Flipboard E-mail

"Comprometida una autoridad certificadora, todos sus certificados revocados". Suena mal, ¿verdad? Es probable que hayáis leído algo parecido a esto durante los últimos días a raíz de un descubrimiento de Google, o incluso con lo del desastre de Superfish y Lenovo. La cuestión es, ¿qué significa eso? ¿Qué es un certificado? ¿Qué es una autoridad certificadora (o CA)?

Desde luego, son cosas que no necesitas saber para vivir un día más. Pero igual que la mayoría sabréis qué es un troyano o qué hace un antivirus, saber qué es un certificado viene bien: al fin y al cabo, es una de las cosas que evita que alguien pueda ver qué páginas visitas y tus datos personales. Así que hoy nos vamos a dedicar a explicar qué son los certificados SSL.

"Hola, ¿quién eres?"

Supongamos que estás buscando a Pepe Pérez para contarle algo privado. No parece difícil, pero no sabes quién es Pepe. No sabes siquiera cómo es, si es un anciano, si es rubio... sólo sabes dónde está. Así que vas a donde suele estar, y ves a un hombre. Puedes preguntarle si él es Pepe Pérez, pero sería un poco ingenuo fiarse de lo que te dice un desconocido por la calle. Igual no es Pepe. Una forma de asegurarse de que es realmente él sería pedirle un documento, algo que certifique que esa persona se llama Pepe Pérez. En la vida real (pasando por alto lo poco real de esta situación) le pedirías su DNI, por ejemplo.

450 1000
Necesitamos un DNI, pero para servidores de Internet.

Pues bien, en Internet pasa lo mismo. Necesitas un "DNI" para los servidores, un documento "oficial" que te asegure que ese servidor es el de Google y no un impostor. La cuestión es cómo lo hacemos oficial: necesitamos una autoridad de la que nos fiemos (como en el ejemplo de Pepe Pérez nos fiamos del Estado para expedir DNIs).

La solución a este problema son los certificados SSL, que más que un documento como el DNI son sellos. Tienen una parte privada, que se queda el servidor, con la que "sella" y deja una firma en las comunicaciones. El sello contiene el nombre de dominio y acredita que efectivamente te estás comunicando con Google. Además, nadie más puede replicarlo: no puedes coger un documento, recortar el sello y pegarlo en otro documento. De la misma forma, un intruso no puede interceptar una petición a un servidor, modificarla y reenviártela porque entonces el "sello" (firma) no sería válido.

Las CA aseguran que nadie tiene un certificado para un dominio que no es suyo (o al menos lo intentan)

La cuestión es que el proceso para hacer certificados SSL es público. Igual que puedes hacerte un sello que ponga "Presidente del Gobierno", puedes hacerte tú un certificado SSL para _google.com_. Para solucionar este fallo, los certificados SSL vienen firmados por las autoridades certificadoras (CA), o terceros de confianza. Estas autoridades se encargan de expedir los certificados, y sólo lo hacen si la organización o persona que los pide puede probar que efectivamente es propietario del dominio. En otras palabras: si vas a la autoridad certificadora a pedir un dominio para _google.com_ se van a reír de ti y te vas a quedar con las manos en los bolsillos.

Los navegadores y sistemas operativos se guardan las claves públicas de las autoridades certificadoras en sus almacenes. Con esas claves públicas, son capaces de verificar las firmas y comprobar que los certificados SSL de los servidores a los que te conectas son válidos y que por lo tanto no te estás conectando con un impostor.

Una vez que te has asegurado de que el servidor es quien dice ser, ya se puede establecer la comunicación cifrada con HTTPS (que ya vimos cómo funcionaba) y empezar a intercambiar datos privados sin que nadie más los vea.

Cuando el sistema falla

6999839463 72718314fb K
Sabemos que este hombre es un hacker porque lleva pasamontañas y un palo. Los hackers siempre llevan un palo.

Las autoridades certificadoras o CA no son más que empresas gestionadas por personas. Y las personas fallan (fallamos). A veces, esos fallos se convierten en fallos de seguridad enormes. Por ejemplo, en 2011, un _hacker_ entró en DigiNotar, una CA holandesa, y consiguió las claves privadas para firmar certificados SSL.

¿Qué se puede hacer con esas claves? Pues firmar certificados SSL, obviamente. El _quid_ de la cuestión está en que si la clave la tiene un _hacker_, lo más posible es que decida firmar certificados SSL para dominios que no tiene. Es decir, que puede hacerle creer a tu ordenador que su servidor "malvado" es el de Google y le engañe para que le envíe tu correo y contraseña (por poner un ejemplo). Divertido, ¿verdad?

En algún otro caso, directamente son las autoridades certificadoras las que hacen lo que no deben. En el caso del lunes, una CA estaba usando su certificado raíz para interceptar las comunicaciones seguras de sus empleados con Google. La polémica con Lenovo y Superfish era similar. La diferencia es que Superfish no era una CA, sino que instalaba su certificado raíz en los almacenes de los ordenadores para que la considerasen como tal y confiasen en sus certificados falsos.

Cuando esto ocurre, cuando las CA son comprometidas, hay varias formas de mitigar el impacto. Una de ellas son los certificados fijos (_certificate pinning_). Con ella, los últimos navegadores no sólo piden un certificado SSL válido para conectarse a ciertos sitios como Google sino un certificado con una huella concreta. De esta forma, forma aunque una CA confiable firme un certificado nuevo, no lo tomarán como válido. El problema es que sólo se pueden usar certificados fijos para los sitios más conocidos: sería absurdo guardar las huellas de todos los certificados de todas las páginas web seguras de Internet.

Por otra parte, también hay métodos para revocar certificados. Periódicamente, los navegadores y sistemas se conectan a los servidores de actualización y recuperan listas de certificados que han dejado de ser válidos, y van manteniendo el almacén actualizado y sin certificados comprometidos. Además, tú puedes acceder a tu almacén de certificados del navegador/sistema y quitar CA que no te gusten (aunque es posible que algunos sitios dejen de funcionar bien).

En definitiva, los certificados son lo que te permite confiar en que tus conexiones seguras son seguras de verdad y no estás hablando con impostores. Así, ya sabréis por qué frases como las que encabezan el artículo suenan realmente mal.

Imagen | devdsp

Comentarios cerrados
Inicio