Qué es un certificado SSL y por que es importante.

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.

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.

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 lasautoridades 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.

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 Superfishera 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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *