HTTPS explicado con palomas mensajeras

El cifrado puede ser un tema difícil de entender. Está lleno de pruebas matemáticas. Pero a menos que realmente estés desarrollando sistemas criptográficos, gran parte de esa complejidad no es necesaria para entender lo que está sucediendo en un nivel alto.

Si abriste este artículo con la esperanza de crear el próximo protocolo HTTPS, lamento decir que las palomas no serán suficientes. De lo contrario, prepara un poco de café y disfruta del artículo.

Alice, Bob … ¿y palomas?

Cualquier actividad que realices en Internet (leer este artículo, comprar material en Amazon, subir imágenes de gatos) se reduce a enviar y recibir mensajes desde y hacia un servidor.

Esto puede ser un poco abstracto, así que imaginemos que esos mensajes fueron entregados por palomas mensajeras. Sé que esto puede parecer muy arbitrario, pero créeme, HTTPS funciona de la misma manera, aunque mucho más rápido.

Además, en lugar de hablar sobre servidores, clientes y hackers, hablaremos sobre Alice, Bob y Mallory. Si no es la primera vez que intentas comprender conceptos criptográficos, reconocerás esos nombres, ya que se utilizan ampliamente en la literatura técnica.

Una primera comunicación inocente

Si Alice quiere enviar un mensaje a Bob, adjunta el mensaje en la pata de la paloma mensajera y se lo envía a Bob. Bob recibe el mensaje, lo lee y todo está bien.

Pero, ¿qué pasaría si Mallory interceptara a la paloma de Alice en vuelo y cambiara el mensaje? Bob no tendría forma de saber que el mensaje enviado por Alice se modificó durante el tránsito.

Así es como funciona HTTP. ¿Provoca miedo cierto? No enviaría mis credenciales bancarias a través de HTTP y tú tampoco deberías hacerlo.

Un código secreto

Y ahora, si Alice y Bob son muy astutos. Acuerdan que escribirán sus mensajes usando un código secreto. Ellos cambiarán cada letra por 3 posiciones en el alfabeto. Por ejemplo, D → A, E → B, F → C. El mensaje de texto plano  “secret message” sería “pbzobq jbppxdb”.

Ahora, si Mallory intercepta a la paloma, no podrá cambiar el mensaje por algo significativo ni entender lo que dice, porque no conoce el código. Pero Bob simplemente puede aplicar el código a la inversa y descifrar el mensaje donde A → D, B → E, C → F. El texto cifrado “pbzobq jbppxdb” se descifra de nuevo a “secret message”.

¡Éxito logrado!

Esto se denomina cifrado de clave simétrica, porque si sabes cómo cifrar un mensaje, también sabes cómo descifrarlo.

El código que describí anteriormente se conoce comúnmente como cifrado César. En la vida real, usamos códigos más sofisticados y complejos, pero la idea principal es la misma.

¿Cómo decidimos la clave?

El cifrado de clave simétrica es muy seguro si nadie, aparte del remitente y el destinatario, saben qué clave se utilizó. En el cifrado César, la clave es un desplazamiento de cuántas letras cambiamos cada letra. En nuestro ejemplo usamos un desplazamiento de 3, pero también podríamos haber usado 4 o 12.

El problema es que, si Alice y Bob no se reúnen antes de comenzar a enviar mensajes con la paloma, no tendrían forma de establecer una clave de forma segura. Si envían la clave en el mensaje mismo, Mallory interceptaría el mensaje y descubriría la clave. Esto le permitiría a Mallory leer o cambiar el mensaje como desee antes y después de que Alice y Bob comiencen a cifrar sus mensajes.

Este es el ejemplo típico de un ataque de hombre en el medio (MITM) y la única forma de evitarlo es cambiar el sistema de cifrado por completo.

Palomas cargando cajas

Así que Alice y Bob tienen un sistema aún mejor. Cuando Bob quiera enviarle un mensaje a Alice, ella seguirá el procedimiento a continuación:

  • Bob envía una paloma a Alice sin ningún mensaje.
  • Alice envía a la paloma de vuelta con una caja con una cerradura abierta, pero manteniendo la llave en su poder.
  • Bob pone el mensaje en la caja, cierra la caja y envía la caja a Alice.
  • Alice recibe la caja, la abre con la llave y lee el mensaje.

De esta manera, Mallory no puede cambiar el mensaje interceptando a la paloma, porque no tiene la llave. Se sigue el mismo proceso cuando Alice quiere enviarle un mensaje a Bob.

Alice y Bob solo usaron lo que comúnmente se conoce como cifrado de clave asimétrica. Se llama asimétrico, porque incluso si puedes cifrar un mensaje (cerrar la caja) no puedes descifrarlo (abrir una caja cerrada).
Hablando técnicamente, la caja se conoce como clave pública y la llave para abrirla se conoce como clave privada.

¿Cómo puedo confiar en la caja?

Si prestaste atención, es posible que hayas notado que todavía tenemos un problema. Cuando Bob recibe esa caja abierta, ¿cómo puede estar seguro de que vino de Alice y de que Mallory no interceptó a la paloma y cambió la caja con una a la que ella tiene la llave?

Alice decide que firmará la caja, de esta manera, cuando Bob recibe la caja, él verifica la firma y sabe que fue Alice quien la envió.

Algunos de ustedes pueden estar pensando, ¿cómo identificaría Bob la firma de Alice en primer lugar? Buena pregunta. Alice y Bob también tuvieron este problema, por lo que decidieron que, en lugar de que Alice firmara el cuadro, Ted firmará el cuadro.

¿Quién es Ted? Ted es un chico muy famoso, conocido y confiable. El joven Ted les dio su firma a todos y todos confían en que solo firmará cajas para personas legítimas.

Ted solo firmará una caja de Alice si está seguro de que el que pide la firma es Alice. Entonces, Mallory no puede obtener una caja de Alice firmada por Ted en nombre de ella, ya que Bob sabrá que la caja es un fraude porque Ted solo firma cajas para las personas después de verificar su identidad.

En términos técnicos, a Ted se le conoce comúnmente como una Autoridad de certificación y el navegador con el que estás leyendo este artículo viene con las firmas de varias Autoridades de certificación.

Entonces, cuando te conectas a un sitio web por primera vez, confías en su caja porque confías en lo que dice Ted y Ted te dicen que la caja es legítima.

Las cajas son pesadas

Alice y Bob ahora tienen un sistema confiable para comunicarse, pero se dan cuenta de que las palomas que transportan cajas son más lentas que las que solo llevan el mensaje.

Ellos deciden que usarán el método de la caja (cifrado asimétrico) solo para elegir una clave y para cifrar el mensaje usaran cifrado simétrico (¿recuerdas el código César?).

De esta manera obtienen lo mejor de ambos mundos. La fiabilidad del cifrado asimétrico y la eficiencia del cifrado simétrico.

En el mundo real no hay palomas lentas, pero aun así el cifrado de mensajes usando cifrado asimétrico es más lento que usar cifrado simétrico, por lo que solo lo usamos para intercambiar las claves de cifrado.

Ahora ya sabes cómo funciona HTTPS y tu café también debería estar listo. Ve a disfrutarlo, te lo mereces.