HTTPS explicado con palomas mensajeras.

La criptografía puede ser un tema difícil de entender. Está lleno de conceptos matemáticos. Pero a menos que estés desarrollando un sistema criptográfico, no es necesario entender gran parte de esta complejidad.
Si has abierto este post esperando ser el creador del próximo protocolo HTTPS, siento decirte que las palomas no serán suficiente. Pero si no, enciende la máquina de café y disfruta del artículo.

Alicia, Bob… y las palomas.

Cualquier actividad que hagas en internet (leer este artículo, comprar cualquier cosa en Amazon e incluso actualizar fotos de gatitos) se dan gracias a que enviamos y recibimos mensajes hacia y desde un servidor.
Esto puede sonar un poco abstracto, así que imaginemos que esos mensajes los lleva y los trae una paloma mensajera. Puede sonar un poco raro, pero no difiere mucho de cómo funciona el HTTPS, aunque tal vez sea un poco más lento.

También, en vez de hablar de servidores, clientes y hackers, hablaremos de Alicia, Bob y Mallory (el nombre es raro, pero intentamos seguir el patrón de nombres usados para este tipo de explicaciones técnicas).

Una primera comunicación inocente.

Si Alicia quiere enviarle un mensaje a Bob, le ata el mensaje a la paloma y se lo envía. Bob recibe el mensaje, lo lee y todo está bien.

¿Pero qué pasa si Mallory intercepta a la paloma con el mensaje de Alicia y le cambia el mensaje? Bob no tiene forma de saber que el mensaje ha sido cambiado durante el viaje de la paloma.

Así es como funciona el http. ¿Asusta, no? No enviaríamos datos de la cuenta del banco a través de código http, y nadie debería hacerlo.

Un código secreto.

Digamos que Alicia y Bob son muy astutos. Acuerdan que usarán un código secreto entre ellos. Cambiarán cada letra que escriban por la tercera posición del alfabeto. Por ejemplo, la D la escribiremos como la A, la E como la B, y la F como la C. Es decir, el texto cifrado “ZMAFDM” se descodificaría como la palabra “CÓDIGO”.

¡Hurra!

A esto se le llama criptografía de claves simétricas, porque si sabes como encriptarlo, también sabes como desencriptarlo.

El código descrito anteriormente es conocido como cifrado del César. En la vida real, usamos códigos más sofisticados y complejos, pero la idea principal es la misma.

Cómo decidimos qué clave usar.

La criptografía de claves simétricas es muy segura, siempre que solo la conozcan quienes envían y reciben. En el cifrado César, la clave se basa en cuantas letras contamos al decidir cambiar. En nuestro ejemplo contamos 3, pero puede ser cualquiera, 4, 12…

La cuestión es que si Alicia y Bob no quedan antes de empezar con los mensajes voladores para acordar ese número de saltos, no tienen forma de establecer una clave segura. Si mandasen la clave con la paloma, Mallory puede interceptar el mensaje y descubrir la clave. Eso le permitiría leer o cambiar el mensaje antes y después de que Alicia y Bob empiecen a encriptarlos.

Este es el clásico ejemplo de Ataque de intermediario y la única manera de evitarlo es cambiar el sistema de encriptado todos juntos.

Palomas llevando cajas.

Ahora Alicia y Bob dan con un sistema incluso mejor. Cuando Bob quiera mandar un mensaje a Alicia, ella seguirá el siguiente procedimiento:

  • Bob le manda una caja sin mensaje a Alicia.
  • Alicia le manda la caja de vuelta con un candado abierto pero se queda la llave con ella.
  • Bob pone dentro de la caja el mensaje y cierra el candado.
  • Alicia recibe la caja, la abre con la llave y lee el mensaje.

De esta manera, Mallory no puede interceptar a la paloma y cambiar el mensaje, porque no tiene la llave para abrir el candado. Alice sigue el mismo proceso cuando quiere mandarle un mensaje a Bob.

Alicia y Bob están usando lo que es comúnmente conocido como criptografía de claves asimétricas. Se dicen asimétricas, porque aunque puedas encriptar un mensaje (cerrar la caja) no lo puedes desencriptar (abrir la caja). En lenguaje técnico, la caja es conocida como la clave pública, y la llave es conocida como la clave privada.

¿Cómo confiamos en la caja?

Si has prestado atención te habrás dado cuenta de que aún tenemos un problema. Cuando Bob recibe la caja abierta, ¿cómo sabemos que Mallory no ha cambiado la caja por otra a la cuál si que tiene acceso con su propia llave?

Alicia decide que firmará la caja que le mande a Bob. Así él puede saber que la caja que recibe es de Alicia, chequeando la firma.

¿Y cómo identifica Bob la firma de Alicia? Buena pregunta. Como Alicia y Bob tienen la misma duda, harán que Ted firme la caja.

¿Quién es Ted? Ted es un hombre muy famoso, de buena reputación y además es de fiar. Ted le da su firma a cualquiera y todos saben que si Ted te da su firma es porque eres alguien legal.

Ted firmará la caja de Alicia cuando se asegure de que la que realmente quiere la firma es ella. Así que Mallory no tiene forma de firmar la caja con el nombre de Alicia.

Ted, en términos técnicos, es reconocido como Autoridad de Certificación, y el navegador con el que estás leyendo este articulo viene con la firma de varios.

Así que cuando te conectas a un sitio web por primera vez, confías en su caja porque te fías de Ted, y Ted te dice que la caja es legal.

Las cajas pesan.

Alicia y Bob tienen ahora un sistema de comunicación fiable, pero se dan cuenta de que las palomas que transportan cajas van más lentas que las que transportan solo mensajes.

Así que deciden que usaran el método de la caja, solo que usando como clave la criptografía de claves simétricas (cifrado César de antes).

De esta manera, obtienen lo mejor de ambos métodos. La confianza de la criptografía de claves asimétricas, y la eficacia de las claves simétricas.

En la vida real no hay palomas lentas, sin embargo, encriptar mensajes usando criptografía asimétrica es mas lento que la criptografía simétrica, así que solo la usamos para intercambiar las claves encriptadas.

Ahora ya sabes como funciona el código HTTPS y tu café debería estar listo. Ve a tomártelo, te lo has ganado.

 

*Este artículo es original de Andrea Zanin, y fue publicado en Medium el 11 de enero de este año.

https://medium.freecodecamp.org/https-explained-with-carrier-pigeons-7029d2193351