Tanto en el nivel de e-mail, navegando por la web, como en otras cosas en Internet, enviamos información; desde el punto de partida esa información para llegar al destino pasa por muchos puntos: sale de nuestro ordenador u otro dispositivo digital, pasa por algún router (router de red de la empresa, wiko de casa o de bar...), luego llega al proveedor de Internet y de ahí todavía pasará muchos otros nodos hasta el destino. Quien ejerza el control de cualquiera de estos puntos intermedios, ya sea el informático de la empresa, el propietario del bar o la policía que se encuentre en contacto con el proveedor de Internet --o, en el caso de la wifi, incluso cualquiera que tenga un ordenador con wifi cero-, puede acceder fácilmente a la información.
Gran parte de las comunicaciones de la red (la mayor parte de la navegación en la web, muchos envíos y recepciones de correo) van en abierto y accesibles para cualquier persona. Pero Internet tiene mecanismos para transportar información sensible como contraseñas, datos de tarjetas de crédito o correos electrónicos secretos de forma segura y confidencial. Para ello utiliza la criptografía, es decir, encriptando (codificando o cifrando) los mensajes se convierten en incomprensibles para cualquier persona que no sea el destinatario. En concreto, se utiliza en Internet un tipo especial de criptografía: criptografía de clave pública o criptografía asimétrica.
Los sistemas de encriptación de mensajes han sido muy utilizados a lo largo de la historia, especialmente para comunicaciones importantes entre reyes, generales y otras autoridades, pero también para mensajes secretos de amor entre amantes. Los métodos que inicialmente eran simples se han ido haciendo cada vez más complejos a medida que la tecnología lo permite y se han ido descubriendo técnicas de ruptura de sistemas anteriores. Entre los métodos de encriptación más conocidos y utilizados de la historia podemos citar la cifra de César, la cifra de Vigène y las máquinas de rotor como Lorenz o Enigma.
Básicamente, todos estos sistemas de encriptación se basan en el mismo principio: el mensaje se transforma mediante una función, utilizando una clave, y el receptor aplica posteriormente la función inversa para obtener el mensaje original con la misma clave. En el ejemplo más simple, la función puede ser la resta y la clave el número 1. De esta forma, el mensaje "IBM" pasaría a ser "HAL" si aplicamos a cada letra la función "-1" que sustituimos por la letra anterior, y el destinatario, conociendo la clave (número 1), aplicando la función "+1" al mensaje cifrado, volvería a obtener "IBM". A esto se le llama criptografía simétrica porque utiliza la misma clave para encriptar y desencriptar.
Estos sistemas se han vuelto cada vez más frágiles al complicar la función de cifrado con la ayuda de la tecnología de cada época. En la actualidad, la criptografía se realiza a través de ordenadores que permiten que estas funciones sean muy complejas y que las claves sean largas para desarrollar sistemas totalmente inquebrantables. Así, el cifrado AES (Advanced Encryption Standard) utilizado por el Gobierno de EEUU (entre otros muchos) es un sistema de criptografía simétrica.
Pero este tipo de sistemas tienen un problema a la hora de navegar por internet, comprar online o enviar emails privados: ambas partes deben conocer la clave y nadie más. Por lo tanto, no siempre se puede utilizar la misma clave, se necesita una clave diferente para cada destinatario y remitente, y para que nadie sepa esa clave, no se puede enviar por Internet, como se ha dicho anteriormente, ya que se puede detectar. Así, en algunos casos, como los de los gobiernos, ¿se puede enviar la clave por mensajero a cada organización que se quiere comunicar, pero para las comunicaciones en Internet? Por cada tienda y cliente, por sitio web y visitante, por cada remitente y destinatario del correo electrónico, es imposible en la práctica tener que compartir previamente una clave o enviarla por mensajero: sería muy caro y no seguro (los mensajeros pueden estar corruptos o nos pueden robar la clave en el camino).
Si el comercio electrónico y el envío de información comprometida a través de Internet han evolucionado, es porque en la década de 1970 se inventó un nuevo sistema de cifrado totalmente diferente y rompedor a los sistemas existentes, totalmente opuesto a la intuición y a la vez muy seguro: criptografía de clave pública o criptografía asimétrica.
En la criptografía por clave pública se utiliza una función de cifrado y una clave, pero esta función no es inversa (denominadas funciones unidireccionales), por lo que aun sabiendo la clave no se puede descifrar el mensaje, sino que se necesita otra función de descifrado y otra clave (por eso se llama criptografía asimétrica). Entonces, si alguien quiere permitir a otros comunicarse de forma privada con él (por ejemplo, el vendedor a los compradores para que éstos puedan enviar los datos de la tarjeta de crédito), hace pública la clave de encriptación. Cualquier persona podrá utilizar esta clave pública para enviarle un mensaje cifrado, pero aun conociendo esa clave pública todo el mundo, el mensaje sólo puede descifrarlo, ya que sólo él conoce la clave de descifrar (denominada clave privada).
Para que este sistema funcione es necesario que exista una función según una clave que no sea invertida, que la inversión se obtenga mediante otra función y otra clave y que no pueda calcularse conociendo la segunda clave. La existencia de este tipo de funciones y claves es totalmente opuesta a la intuición, pero existen gracias a la aritmética modular, los números primos y la factorización. Investigadores del prestigioso MIT (Massachusetts Institute of Technology) encontraron los primeros en 1977.
Se ha comentado que una de las condiciones de funcionamiento del sistema es que la clave de descifrado no se puede basar en la clave de cifrado. Sin embargo, como es lógico, ambas están relacionadas y se puede calcular la segunda a partir de la primera: es simplemente una factorización, es decir, la extracción de los divisores de este número. La cuestión es que para poder hacerlo no hay fórmulas rápidas, sólo se puede hacer probando todos los números. Por lo tanto, si estos números son relativamente grandes (y se utilizan cientos de dígitos), la factorización se convierte en un problema imposible con la tecnología actual, y el sistema de cifrado es prácticamente inviolable. El método, denominado RSA, en homenaje a los inventores, fue inventado posteriormente por personal de Clifford Cocks GCHQ (Government Communications Headquerosarters, o el Servicio de Inteligencia Británico) en 1973, es decir, cuatro años antes, pero toda la información de esta organización era secreta y no se comunicó hasta 1997.
Tras el RSA se han inventado otros sistemas de criptografía con clave pública como DSA o ElGamal.
Las comunicaciones a Internet están organizadas a nivel según el modelo OSI, tal y como os contamos en el número anterior. Y para garantizar la confidencialidad de estas comunicaciones se ha definido un protocolo TLS (Transport Layer Security) para el nivel de transporte (anteriormente conocido como SSL o Secure Sockets Layer). En este caso, tanto el remitente como el receptor utilizan criptografía por clave pública (RSA normalmente, pero puede ser otra si ambas tienen implementada) para consensuar otra clave (aleatoria) y posteriormente la comunicación real se realiza con dicha clave y con un método de criptografía simétrica (AES por ejemplo), ya que computacionalmente no es tan costosa y de seguridad equivalente.
Para cada protocolo de nivel de aplicación de Internet (HTTP para web, SMTP para correo e IMAP, FTP para subir ficheros, Telnet para abrir sesiones en ordenadores remotos, etc.) se han creado sus versiones seguras (HTTPS, SMTPS, IMAPS, SFTP y SSH respectivamente). Algunas de ellas, como HTTPS, SMTPS o IMAPS, se limitan a añadir TLS al protocolo original en el nivel de transporte y a asignar otro puerto al nuevo protocolo (ahora, a través del nuevo protocolo STARTTLS, las aplicaciones pueden utilizar el mismo puerto para conexiones seguras en los casos en que ambas partes lo tengan implementado). Otros, como SFTP y SSH, tienen la misma función pero son protocolos diferentes que utilizan encriptación mediante clave pública. Cuando se utilicen estos protocolos, podemos considerar garantizada la confidencialidad de nuestras comunicaciones. ¿Y cómo sabemos si estamos usando estos protocolos?
Cuando estamos navegando por la web, si vemos un candado en la dirección y al principio del mismo "https://", significa que estamos usando el protocolo HTTPS y por tanto la comunicación es segura. Al pagar en sitios de comercio electrónico, se utiliza habitualmente en servicios como correo web y en otros muchos sitios.
En el caso de los programas de correo, tendremos que revisar en los ajustes de nuestra cuenta qué protocolos aprueba para enviar y recibir correo. En cualquier caso, aunque el programa de correo utilice los protocolos SMTPS e IMAPS, significa que nadie podrá leer la comunicación entre nosotros y nuestro proveedor de correo, pero que en las fases posteriores al envío nadie más leerá. Si queremos evitarlo, podemos integrar en nuestro programa de correo el programa PGP (Pretty Good Privacy) (creado por Phil Zimmermann en 1991 y que se ha convertido en muy conocido y utilizado) o su versión libre GPG (GNU Privacy Guard), que cifran la información utilizando la clave pública del destinatario final y por tanto sólo podrá leerla.
Para abrir sesiones o subir archivos en ordenadores remotos, deberemos asegurarnos de que se utilizan protocolos SSH o SFTP si queremos mantener la confidencialidad. En otros programas (VNC, VPN o Redes Privadas Virtuales, etc.) deberemos comprobar si utilizan protocolos con encriptación o sistemas de encriptación. Si tenemos en cuenta estas cuestiones, nuestra información privada seguirá siendo así incluso a través de Internet.