Evolución de la criptografía, desde el Cifrado César hasta el TLS (Transport Layer Security)
Publicado el día

Protocolo criptográfico y seguridad en Internet
¿Alguna vez os habéis preguntado que significa este candado?

Sí el candado que aparece en los navegadores cuando acedemos a una web de forma segura. Para entender su significado, debemos retroceder en el tiempo varios milenios.
Desde los inicios de la comunicación escrita, el ser humano se ha enfrentado a uno de los mayores problemas en este ámbito. ¿Cómo podemos mantener una comunicación privada? Este es un problema que se ha extendido durante los pasados siglos, y que como veremos, su solución actual se quedará obsoleta antes de lo que pensábamos.
¿De qué manera podemos convertir un mensaje en algo indescifrable por un extraño, pero a la misma vez manteniendo su sentido original para el destinatario?
Los primeros criptógrafos – Criptografía simétrica
Los primeros indicios de criptografía se remontan al imperio romano, cuándo el emperador Julio César mandó crear un método para mantener los mensajes seguros en caso que un enemigo los interceptara. Este método, llamado Cifrado César, consiste en desplazar las letras del abecedario un número determinado de veces.

El número de veces que desplazamos una letra es la clave o llave, ya que cualquier persona que conozca esta llave puede descifrar el mensaje. En estos casos, cuando la llave usada para encriptar un mensaje es la misma que se usa para el proceso de desencriptación, hablamos de criptografía simétrica.
Esta misma propiedad implica un gran problema, ya que debemos enviar la clave que vamos a usar al destinatario antes de enviar el mensaje. Si durante la transmisión de la clave esta es robada, la encriptación ya no nos va a servir de nada.
Otro de los grandes problemas son los llamados ataques de fuerza bruta. Aún que una persona no conozca la llave, si conoce el algoritmo usado para la encriptación del mensaje puede probar todas las llaves posibles hasta encontrar con la correcta. En el Cifrado César las claves posibles son 26, haciéndolo así un algoritmo vulnerable a este tipo de ataques.
Actualmente los algoritmos usados para la encriptación simétrica de datos son mucho más complicados que el Cifrado César, volviendo los ataques por fuerza bruta completamente inviables. Uno de los algoritmos más conocidos es: AES que tiene una clave que oscila entre los 128 y 256 bits.
La solución a la criptografía simétrica – Criptografía asimétrica
La solución a los problemas de la criptografía simétrica la aporta la criptografía asimétrica. Esta tiene dos claves: la clave pública y la clave privada. Las dos se encuentran relacionadas por propiedades matemáticas y se generan simultáneamente, por eso también se llaman keypair o par de claves.
Los keypairs tienen unas propiedades muy especiales que solucionan muchos de los problemas de la criptografía simétrica:
- La clave pública puede encriptar mensajes, pero no puede desencriptarlos.
- La clave privada puede desencriptar mensajes encriptados usando la clave pública de su keypair.
- Es casi imposible obtener la clave privada a partir de la clave pública.
Esta última propiedad se basa en uno de los problemas matemáticos sin solución en la actualidad: la descomposición de un número en la multiplicación de números primos. Por ejemplo, si alguien nos pide descomponer el número 21 en sus números primos, fácilmente sabremos ver a prueba y error que:
7 * 3 = 21
Donde 7 y 3 son números primos. Pero si el número a descomponer es uno mucho más grande, nos daremos cuenta de que no existe un método definido para encontrar sus números primos. Cómo más grande el número más difícil es encontrar la solución, hasta llegar a un punto dónde los ordenadores contemporáneos tampoco son capaces de encontrar la solución a prueba y error.
Si queremos mandar un mensaje seguro usando criptografía asimétrica va a ocurrir lo siguiente:
- Notificamos al destinatario que le queremos enviar un mensaje.
- El destinatario genera un keypair y nos manda su clave pública.
- Encriptaremos el mensaje con la clave pública y se lo enviaremos.
- El destinatario desencriptará el mensaje con su clave privada.
- Si el destinatario quiere responder, nos pedirá que generemos un keypair y que le enviemos nuestra clave pública.

¿Parece todo perfecto, no? Pues, este sería el método de encriptación definitivo actual si no fuera por una grande limitación del mismo.
El algoritmo de criptografía asimétrica más usado y conocido es el RSA y tiene una clave de 2048 bits en la mayoría de casos. El problema se encuentra en el mismo algoritmo, que provoca que por cada bloque de datos que encriptamos, este aumente su tamaño en un bit. Al mismo tiempo RSA es muy poco eficiente para la desencriptación de mensajes muy grandes. Un mensaje grande provocaría un aumento de los datos tan significativo que haría inviable el hecho de descifrarlo legalmente, debido a las ineficiencias del algoritmo.
En una sociedad dónde los datos ya se distribuyen en millones de bytes por segundo, la encriptación mediante RSA es una mala solución.
¿Qué pasa cuando aparece el candado?
Entonces, ¿qué solución se usa para encriptar las comunicaciones del siglo XXI? Se llama TLS (Transport Layer Security) y la conocemos por el candado que aparece en los navegadores de internet.
Esta solución es una combinación de las dos tecnologías explicadas: la criptografía simétrica y la criptografía asimétrica. Principalmente se usa una clave simétrica (AES, por ejemplo) para encriptar y desencriptar los datos. Por el otro lado se usa criptografía asimétrica (RSA, por ejemplo) para transmitir la clave simétrica de forma segura, ya que la misma tiene un tamaño muy pequeño (menos de 1KB). La creación de una conexión mediante TLS se ejecuta de la siguiente manera (proceso simplificado):
- El servidor genera un keypair RSA-2048 y envía la clave pública al navegador.
- El navegador genera una clave simétrica AES-256, y la envía al servidor encriptada con la clave pública que este mismo le ha mandado.
- El servidor desencripta el mensaje que contiene la clave simétrica AES-256 generada por el navegador, mediante la clave privada del keypair.
Una vez llegados a este punto, los mensajes son encriptados y desencriptados con la clave simétrica que se ha transferido con seguridad del navegador al servidor, generando un canal de comunicaciones totalmente seguro.
El futuro de la encriptación
Como indicábamos en el principio de este artículo, en un futuro no muy lejano, este tipo de protocolo se quedará obsoleto. La causa: la aparición de los ordenadores cuánticos. Ordenadores con una capacidad de computación tan elevada que hará posible factorizar los números en su multiplicación de números primos de manera muy rápida. De esta forma se puede obtener acceso a las claves privadas de un keypair teniendo solo la clave pública del mismo. Por consecuencia, los ordenadores cuánticos pueden desencriptar la clave simétrica de una conexión y posteriormente los mensajes de la misma.
Pero, por ahora, la siguiente vez que veías el candado pensad en toda la ingeniería, matemáticas y esfuerzo, de miles de personas, necesarios para que nuestras conexiones sean seguras y se queden fuera del alcance de ojos desconocidos.