Hace unos días, leí un artículo tan interesante y fácil de entender que me propuse traducirlo para acercarlo al público español.
El autor original es Andrea Zanin y lo publicó en inglés en el artículo HTTPS explained with carrier pigeons. Sin duda una explicación clara sencilla de entender para cualquiera.
Espero que os guste.
La Criptografía puede ser un término difícil de entender. Está llena de conceptos matemáticos pero salvo que estés desarrollando sistemas criptográficos, la mayor parte de esa complejidad no es necesaria para entender cómo funciona a un alto nivel.
Si tu has abierto este artículo esperando poder crear el próximo protocolo HTTPS, lo siento, hay que decir que utilizar palomas no será suficiente, pero si no es el caso, prepara algo de café y disfruta del siguiente artículo.
Alice, Bob y … palomas?
Cualquier actividad que hagas en internet (leer este artículo, comprar cualquier cosa en Amazon, subir fotos de gatitos) se basa en enviar y recibir mensajes desde y hacia un servidor.
Esto puede ser un poco abstracto así que vamos a imaginar que esos mensajes fuesen enviados por palomas mensajeras. Yo sé que esto puede parecer un poco extraño, pero confía en mí ya que HTTPS funciona de la misma manera, aunque un poco más rápido.
También en lugar de hablar sobre servidores, clientes y hackers, vamos a hablar sobre Alice, Bob, y Mallory. Si esta no es la primera vez que intentas entender conceptos criptográficos, quizá reconozcas estos nombres, ya que son ampliamente utilizados en literatura técnica.
Una inocente primera comunicación
Si Alice quiere enviar un mensaje a Bob, acopla el mensaje a una pata de una paloma mensajera y se la envía a Bob. Bob recibe el mensaje, lo lee y todo está bien.
Pero qué ocurriría si Mallory intercepta la paloma de Alice durante el vuelo y cambia el mensaje? Bob no tendría manera de saber que el mensaje enviado por Alice fue modificado.
Así es como funciona HTTP. Asusta ¿verdad?. Yo no mandaría mi usuario y contraseña bancaria sobre HTTP.
Un código secreto.
Ahora que Alice y Bob son más temerosos, se han puesto de acuerdo en escribir un mensaje utilizando un código secreto. Ellos escribirán la letra desplazándola 3 posiciones en el alfabeto. Por ejemplo D → A, E → B, F → C. El mensaje original «mensaje secreto» podría ser «jbkpxgc pbzobql».
Ahora, si Mallory intercepta la paloma, no será capaz de cambiar este mensaje en algo con significado ni entenderá lo que dice, porque no conoce el código. Pero Bob puede simplemente utilizar el código al revés y descifrar el mensaje usando la técnica contraria: A → D, B → E, C → F, … El texto cifrado «jbkpxgc pbzobql» sería descifrado a «mensaje secreto».
Bien!!!
Esto es lo que se conoce como «clave simétrica» porque si tu sabes como cifrar un mensaje, también puedes descifrarlo.
Este código es también conocido como «cifrado Cesar». En la vida real se utilizan códigos mucho más complejos, pero la idea principal es la misma.
¿Cómo se decide la clave?
La criptografía por «clave simétrica» es muy segura si nadie más (además del emisor y el receptor) saben la clave que se fue usada. En el cifrado Cesar la clave es un desplazamiento de un número de letras por cada letra que queremos cifrar. En nuestro ejemplo, utilizamos un desplazamiento de 3, pero podríamos haber utilizado 4 o bien 12.
El problema es si Alice y Bob no se han visto previamente antes de enviarse mensajes con la paloma, ellos no han tenido la oportunidad de establecer una clave de forma segura. Si ellos envía una clave en un mensaje, Mallory podría interceptar ese primer mensaje y descubrir la clave. Esto permitiría a Mallory leer y cambiar el mensaje antes de que Alice y Bob empiecen a cifrar sus mensajes.
Esto es un ejemplo típico de ataque «Man in the Middle» y la única manera de evitarlo es cambiar la clave de cifrado de golpe
Palomas llevando cajas
Alice y bob tienen un sistema mejor. Cuando Bob quiera enviar un mensaje a Alice, se hará lo siguiente:
- Bob envía una paloma a Alice sin ningún mensaje.
- Alice envía de vuelta a Bob una paloma con una caja con un candado abierto pero conservando la llave de ese candado.
- Bob pone el mensaje en la caja, cierra el candado y envía la caja a Alice.
- Alice recibe la caja, la abre utilizando su llave y lee el mensaje.
De esta manera, Mallory no puede cambiar el mensaje interceptando la paloma, porque no tiene la llave. El mismo proceso se utiliza cuando Alice quiera enviar un mensaje a Bob.
Alice y Bob acaban de usar un sistema conocido como criptografía de clave asimétrica. Se llama asimétrica porque incluso si tu pudieras cifrar un mensaje (cerrar el candado) no podría descifrarlo (ya que no podrías abrir la caja con el candado).
En términos técnicos, la caja se conoce como «clave pública» y la llave que la abre se conoce como «clave privada«.
¿Cómo puedo confiar en la caja?
Si prestas atención, puedes haber notado que todavía existe un problema. Cuando Bob recibe esa primera caja abierta ¿puede estar seguro que viene de Alice y que Mallory no interceptó la paloma y cambió la caja por una que sí tuviera un candado con su llave? Alice decide que ella firmará la caja, de esta manera cuando Bob reciba la caja, comprobará la firma y sabrá si es Alice quien le envió la caja.
Podrías estar pensando ¿cómo Bob podría identificar la firma de Alice en la primera caja? Buena pregunta. Alice y Bob también tuvieron este problema, así que ellos decidieron que, en lugar de que Alice firmara la caja lo hiciera Ted.
¿Conoces a Ted?
Ted es una persona famosa, un chico honrado y de confianza. Ted firma todas las cajas y todos confían que únicamente firmará cajas de personas legítimas.
Ted solo firmará una caja a nombre de Alice si quien le pide que la firme es Alice. Así que Mallory no puede hacer una caja de Alice firmada por Ted en su nombre, ya que Bob sabrá que la caja es falsa porque Ted sólo firma cajas para personas después de verificar su identidad.
Ted en términos técnicos es lo que se conoce como Autoridad Certificadora y el navegador en el que tú estás leyendo este artículo viene en cajas con la firma de una Autoridad Certificadora conocida.
Así cuando te conectes a una web por primera vez, tu confiarás en la caja porque confías en Ted y Ted te dice que la caja es legítima.
Las cajas son pesadas
Alice y Bob ahora tienen ahora un sistema para comunicarse de forma segura pero se han dado cuenta que cuando las palomas transportan cajas son mucho más lentas que cuando solo llevan el mensaje.
Deciden que van a utilizar el método criptografía asimétrica únicamente para elegir la clave para cifrar el mensaje y después utilizarán criptografía simétrica (recuerdas el cifrado Cesar?).
De esta manera se aprovecha lo mejor de ambos mundos. La seguridad de una criptografía asimétrica y la eficiencia de una criptografía simétrica.
En el mundo real no hay palomas lentas, pero cifrar mensajes utilizando criptografía asimétrica es mucho más lento que con criptografía simétrica, así que solo usamos la asimétrica para intercambiar las claves de cifrado.
Ahora tu sabes cómo funciona HTTPS y seguramente el café debería estar listo. Ve a bebértelo que te lo mereces! 😉