“Este mensaje se auto-destruirá en cinco segundos”: hace tiempo que esta frase de película ha pasado a ser una realidad gracias a algunos servicios de comunicación, cuyos mensajes sólo pueden ser leídos una vez.

Uno de ellos es Privnote, una web en la que guardamos un mensaje, se genera un link, y al ser abierto por el receptor se muestra el mensaje a la vez que se destruye y el link es dado de baja. Aquí tenéis una breve explicación técnica de cómo funciona, escrita por el autor.

Sin quitarle méritos a tan genial idea, para usarlo tenemos que depositar nuestra confianza en el servicio de un tercero que no sabemos qué tan serio es, y que, si pensamos de una forma un poco escéptica, podría estar aprovechándose de alguna manera.

Este modelo de web trabaja de la siguiente forma:

  1. La nota es subida por el usuario.
  2. Se genera un ID único de 25 caracteres alfanuméricos.
  3. Se genera una clave de cifrado de 32 caracteres alfanuméricos que mezcla mayúsculas y minúsculas.
  4. La nota se cifra con la clave usando Rijndael de 256 bits en modo CBC y se almacena en un fichero del servidor.
  5. Se guarda el ID y la clave en una base de datos. Antes de almacenarse, la clave se cifra con un doble SHA1.
  6. Se le proporciona al cliente un link que contiene el ID y la clave.
  7. Cuando el receptor visita el link se hace un doble SHA1 de la clave y se comprueban ID y clave en la base de datos.
  8. Si coinciden se descifra, muestra y elimina el mensaje, además de eliminar ID y clave de la base de datos.

¿Cuáles son las ventajas de este modelo?

  • El administrador del sitio no puede ver las notas, ya que la clave de cifrado está almacenada con un doble SHA1.
  • Si se comprometiera la base de datos, las notas seguirían a salvo ya que se encuentran en el servidor web. En caso de comprometerse el servidor web o ambos, todo seguiría a salvo, ya que un atacante no puede recuperar las claves de cifrado, al igual que el administrador del sitio.
  • En caso de realizar fuerza bruta sobre la clave, tiene 32 caracteres alfanuméricos que mezclan mayúsculas / minúsculas en doble SHA1 por lo que es (aún) demasiado compleja como para romperla en un tiempo razonable.

El problema es que volvemos a lo de siempre, ¿podemos fiarnos de un desconocido?

Fuente: Security by Default