Blog :: articulos Explicando HTTPS con palomas mensajeras

Explicando HTTPS con palomas mensajeras

Aclaremos algo: no vas a encontrar información técnica para crear el próximo estandar de seguridad, mucho menos para sentarte frente a un profesor y dar tu tesis sobre seguridad informática. Es una historia de palomas y de personas intercambiando mensajes. No esperes mucho más. Disfruta el articulo.

Alciia, Pedro, y Chico Malo ¿y las palomas?

Cualquier cosa que hagas e Internet, desde leer por ejemplo este artículo, comprar algo, enviar un email, un mensaje, se reduce a enviar y recibir mensajes de un punto a otro (computadora - servidor, computadora - computadora, smartphone - servidor, etc.). Todo esto, o casi todo esto, gracias a un protocolo llamado HTTP.

A los efectos prácticos y para no meternos en las entrañas de la red, imaginemos que estos mensajes son llevados por simpáticas palomas mensajeras. De todas formas, en Internet, digamos que es más o menos parecido, solo que muchísimo más rápido.

También, para no pensar en computadoras, servidores y hackers, vamos a hablar de Alicia, Pedro y Chico Malo.

Primera comunicación inocente.

Alicia quiere enviar un mensaje a Pedro. Ella lo escribe y lo adjunta en la pata de la paloma y se lo envía a Pedro. Pedro lo recibe, lo lee y hasta quí todo bien.

Pero, ¿qué pasaría si Chico Malo atrapa la paloma? Puede leerlo, incluso peor: podrían modificarlo y/o cambiarlo por otro.. Pedro, no tendría forma de saberlo, porque la paloma no sabe hablar, simplemente sabe llegar a destino... ni siquiera tiene idea de lo que lleva consigo!

Así es como funciona el protocolo HTTP. Tan potente y tan frágil al mismo tiempo, da un poco de terror.

Un código secreto

Alicia y Pedro, ahora conscientes de este peligro, deciden intercambiar los mensajes utilizan un código secreto. Este se basa en cambiar las letras desplazándolas tres veces del alfabeto. Así, la A se escribirá como D, la B como E, la C como F. El mensaje secreto "¿cuándo nos vemos?" será escrito y enviado como "¿zrxkam kmp sbjmp?".

Si estaa vez Chico Malo atrapa la paloma, no podrá saber que dice en el mensaje ni tampoco alterarlo ya que no conoce el mecanismo para decodificarlo. Pedro, al recibirlo, simplemente aplica el código al revés y ya tiene el mensaje que puede leer: Aplicando la técnica inversa, el mensaje "¿zrxkam kmp sbjmp?" pasaría a "'¿cuándo nos vemos?".

¡Éxito!

Este mecanismo se conoce como criptografía de clave simétrica, porque si sabe como encriptar un mensaje, se sabe como desencriptarlo. El método de encriptación que hablamos recién se conoce como cifrado César.

Este es un mecanismo básico, pero puede ser muy seguro si ambos saben la clave con la cuál codifica y decodifcar el mensaje.

El problema es que, si Alicia y Pedro no se encuentran antes de enviar el mensaje, no podrán ponerse de acuerdo en cuál sería el mecanismo y/o método para encriptar y posteriormente desencriptar el mensaje. Podríamos pensar que, antes de hablar, intercambian el método secreto... pero ¿qué pasaría si Chico Malo intercepta la paloma y se guarda para sí el código secreto?. Los mensajes podrían ser leídos y alterados tal como sucedió al principio.

Este es un típico caso de ataque de "hombre en el medio".

Palomas llevando cajas

Alicia y Pedro crean un sistema mucho mejor. Cuando Pedro quiera enviar un mensaje a Alicia, ella seguirá el siguiente procedimiento:

  1. Pedro envía una paloma a Alicia sin ningún mensaje.
  2. Alicia devuelve la paloma llevando una caja con un candado abierto, pero se queda con la llave.
  3. Pedro pone el mensaje en la caja, cierra el candado y envía la paloma.
  4. Alicia, recibe la paloma, abre la caja con su llave y lee el mensaje.

Ahora, Chico Malo, no puede cambiar el mensaje si intercepta la paloma. Y el mismo proceso sigue Alicia cuando quiere enviar un mensaje a Pedro.

Este mecanismo se conoce como criptografía de clave asimétrica. Esto se llama así porque si se sabe como encriptar el mensaje, no se puede desencriptarlo con la misma clave. En el ambiente técnico, esto se conoce como clave pública y clave privada.

Si prestas atención, todavía tenemos un problema. Cuando Pedro recibe esa caja abierta, ¿cómo puede estar seguro de que fue enviada por Alicia y de que Chico Malo no la ha interceptado y ha cambiado la caja con una que tiene la llave?

Problema de confianza

Alicia decide ahora que va a firmar la caja, de esta manera, cuando Pedro la reciba, podrá comprobar la firma y saber que fué Alicia quién la envió.

Pero... ¿cómo podría Pedro identificar la firma de Alicia en primer lugar?. Ambos también se hicieron la misma pregunta, así que decidieron que quién firmaría la caja sería otra persona: Lucía.

¿pero quién es Lucía?

Lucía es una chica muy famosa, muy conocido y muy, muy confiable. Lucía dió su firma a todos, todos la conocen y todos saben que firmará las cajas solo de personas legítimas.

Pedro sabe muy bien que Lucia solo firmará la caja de Alicia solo si está segura de que la que está pidiendo la firma es Lucía. Por lo tanto, Chico Malo no puede obtener una caja firmada por Lucía haciéndose pasar por Alicia.

En términos técnicos, Lucía se conoce como Autoridad de Certificación. En tu navegador web, de hecho el que estás usando ahora, viene con varias firmas de Autoridades de Verificación.

Las cajas se volvieron muy pesadas

Alicia y Pedro ahora tienen un sistema confiable a través del cuál comunicarse, pero se han dado cuenta de que las palomas que llevan la caja van demasiado lento que las palomas que solo llevan el mensaje.

Así que deciden que usarán el método de la caja (criptografía asimétrica) solo para elegir una clave para encriptar el mensaje usando criptografía simétrica (¿recuerdan el método de cifrado César que hablamos más arriba?)

De esta forma, obtienen lo mejor de los dos mundos: la fiabilidad de la criptografía asimétrica y la eficiencia de la criptografía simétrica.

Bajando al mundo real, en el plano técnico, no hay palomas lentas, no obstante sabemos que cifrar mensajes con criptografía asimétrica es más lento que usar criptografía simétrica, por lo que solo lo usamos para intercambiar las claves de cifrado.

Artículo basado en el original: HTTPS explained with carrier pigeons.