VISITAS:

miércoles, 13 de junio de 2018

HTTPS explicado con palomas


Cualquier comunicación en internet (leer un artículo, comprar en amazon, subir fotos, etc) implica enviar y recibir mensajes a y desde un servidor.
Imaginemos que estos mensajes son entregados por palomas. Y en lugar de hablar de clientes, servidores y hackers, hablaremos de Alice (cliente), Bob (servidor) y Mallory (hacker).

Comunicación básica

Si Alice quiere enviar un mensaje a Bob, pone el mensaje en la pata de la paloma y lo envía a Bob. La paloma llega a Bob y éste lee el mensaje. Todo es OK
Pero, ¿qué ocurre si Mallory intercepta la paloma de Alice en vuelo y cambia el mensaje? Bob no tiene forma de descubrir que el mensaje que ha recibido es el original o si ha sido modificado durante el vuelo. Tampoco tiene forma de saber si alguien ha podido leer este mensaje durante el trayecto.
Así trabaja HTTP. Como se puede intuir, es bastante peligroso. No es muy adecuado para enviar los datos de una cuenta bancaria por este mecanismo, por ejemplo.

Código secreto

Pero Alice y Bob son muy astutos. Ellos acuerdan que enviarán sus mensajes utilizando un código secreto: desplazarán cada letra 3 posiciones a la izquierda en el alfabeto (por ejemplo, D -- A, E -- B, .. B -- X, A -- Z). Así ,el texto "mensaje secreto", quedaría como "jbkpxgb pbzobql".
Ahora, si Mallory intercepta a la paloma, no será capaz de cambiar el mensaje por algo que tenga sentido, ya que Mallory no conoce el código secreto. Tampoco Mallory será capaz de leer el mensaje, porque está cifrado.
Sin embargo, Bob aplica el código al revés (desplazando cada letra 3 posiciones a la derecha) y obtiene el mensaje original.
Este mecanismo se conoce criptografía de clave simétrica, porque si sabes cómo encriptar el mensaje, también sabes cómo desencriptarlo.
NOTA: este mecanismo de desplazar letras es muy sencillo (se conoce como método "Caesar") y en la práctica se utilizan métodos mucho más complejos de desencriptar, pero la idea es la misma.

¿Cómo se decide la clave?

La criptografía simétrica es muy segura, siempre y cuando sólo el emisor y el receptor conozcan la clave utilizada. En el método Caesar, la clave sería el desplazamiento (3 en nuestro ejemplo, pero podríamos utilizar 4, ó 20, o cualquier otra "clave").
El problema es que si Alice y Bob no acuerdan la clave antes de empezar a enviar mensajes con la paloma, no serán capaces de entenderse.
Podrían enviar la clave en un mensaje previo, pero entonces Mallory podría interceptar ese mensaje previo y descubrir la clave. De esta forma, Mallory podría interceptar los mensajes posteriores y cambiarlos a su conveniencia.
Este es un ejemplo de ataque conocido como "man in the middle" y la única forma de evitarlo es cambiando el sistema de encriptación.

Palomas que llevan cajas

Alice y Bob deciden un sistema más seguro:
  1. Alice envía la paloma a Bob pero con una caja vacía abierta (con un candado abierto). Alice tiene la llave del candado
  2. Bob mete el mensaje en la caja y cierra el candado. Bobo envía la paloma a Alice.
  3. Alice recibe la paloma con la caja cerrada, abre el candado y saca el mensaje.
De esta forma, Mallory no puede cambiar el mensaje interceptando la paloma, porque Mallory no tiene la llave. Tampoco puede leer el mensaje.
Este mismo procedimiento se repite cuando Alice quiere enviar un mensaje a Bob.
Alice y Bob están usando lo que se conoce como criptografía asimétrica. Se llama asimétrica porque incluso aunque Bob puede encriptar un mensaje (meterlo en la caja y cerrar el candado), Bob no puede desencriptarlo (sacarlo de la caja).
En términos técnicos, la caja con candado es la clave pública de Alice, y la llave del candado es la clave privada de Alice.

¿Cómo confiamos en la caja?

Todavía hay un problema en la solución de Alice y Bob: Cuando Bob recibe la caja abierta (con el candado abierto), ¿cómo puede estar seguro de que esa caja viene de Alice? ¿puede ser que Mallory haya interceptado la paloma y haya puesto una caja suya de la cual tiene llave?
Alice decide firmar la caja cuando la envía a Bob, de esta forma, cuando Bob recibe la caja, sabe que viene de Alice porque conoce su firma.
Pero aun así, podemos pensar: ¿cómo hace Bob para identificar la firma de Alice la primera vez que se comunican? Entonces deciden que en lugar de que Alice firme la caja, la firme un tercero: Ted.
Pero, ¿quién es Ted? Ted es alguien muy famoso, y además, una persona de confianza. Ted dio su firma a todo el mundo hace tiempo y todo el mundo confía en que él sólo firma cajas cuando son de personas legítimas. Es decir, Ted firma la caja de Alice cuando está seguro de que esa caja es de Alice.
De esta forma, Mallory no puede coger la caja de Alice, firmada por Ted y cambiarla. Porque Mallory no puede conseguir que Ted firme la caja de Mallory en nombre de Alice.
En términos técnicos, Ted es una autoridad de confianza (CA) y el navegador viene de serie con las firmas de varios CAs.
Así, cuando nos conectemos a un sitio por primera vez, podemos confiar en su caja (vacía y abierta), porque está firmada por Ted y Ted es una persona de confianza que sólo firma cajas que son legítimas.

Las cajas son pesadas

Alice y Bob tienen ahora un sistema de comunicación fiable, pero se dan cuenta de las palomas llevando cajas vuelan muy despacio, porque las cajas pesan mucho. Las palomas vuelan mucho más rápido si llevan sólo el mensaje.
Entonces deciden que utilizarán el método de las cajas (criptografía asimétrica) únicamente para decidir cuál es la clave que utilizarán para encriptar el resto de mensajes (con criptografía simétrica). Por ejemplo, método Caesar.
De esta forma, consiguen lo mejor de los dos mundos. La seguridad de la criptografía asimétrica y la velocidad de la criptografía simétrica.
En el mundo real, la criptografía asimétrica requiere de algoritmos muy complejos que tardan bastante en procesarse. Sin embargo los métodos de criptografía simétrica son mucho más eficientes.

Dedicado a Cecilia