domingo, 13 de mayo de 2012

usando la nube con sentido común y aespipe

Con el reciente auge de los servicios de almacenamiento "gratuítos" en la nube, dropbox, skydrive, google drive... Aparecen unas posibilidades de uso interesantes. Una de ellas es la de usarlos para guardar pequeños backups o utilidades a las que poder acceder desde cualquier sitio con conexión a internet.

Llegados a este punto, deberíamos reflexionar sobre qué información almacenar en este tipo de servicios. Si la información es de carácter crítico, almacenarla en un servicio de este tipo, no es buena idea. En este caso sería más conveniente utilizar un servicio de almacenamiento de pago, o contratar los servicios de una empresa de backuping, con unos términos de uso claros y definidos que garanticen que nuestra información no será accedida por ninguna persona, OCR, bot...

Una vez decidida la información que queremos almacenar en la nube, no todo lo que subamos va a tener el mismo nivel de relevancia o privacidad. Deberíamos clasificar la información, y definir unas políticas de seguridad claras en base a cada tipo. Es decir, no es lo mismo subir unos ebooks, subir unos ficheros de configuración, subir algún proyecto personal o subir una lista de passwords. Por eso habrá que separar la información, básicamente en dos grupos, la que nos da igual que se vea o sea indexada, y la que queremos que permanezca totalmente privada.

Para evitar miradas ajenas sobre la información que queremos que se mantenga privada, tenemos varias alternativas. Entre ellas:

  • Subir el contenido comprimido con contraseña (y confiar en que no se van a realizar ataques de fuerza bruta).
  • Cifrar, cifrar y cifrar

Como la segunda es más segura que la primera, para este punto, tendremos varias posibilidades:

  1. Truecrypt: Todo un clásico y un indispensable en nuestros ordenadores, está claro. La parte mala de usar truecrypt es que requiere crear volúmenes/contenedores de datos, y por pequeños que sean, suponen una gran descarga de datos adicional. Es decir, si el fichero que nos queremos bajar es de 500Kb, por pequeño que sea el contenedor de truecrypt (50Mb, 10Mb?),descargarse el contenedor entero, supone una descarga de datos inmensa en relación con el tamaño del fichero.
  2. GPG: Otro clásico. Una buena elección para cifrar fichero por fichero, siempre que seas ordenado, y guardes y exportes correctamente tus claves gpg. (No es mi caso ;))
  3. Aespipe: Aespipe es una utilidad para cifrar fichero a fichero. Crea ficheros .tar o .cpio cifrados. Lo mejor de usarlo, es que los ficheros mantienen su tamaño original. Aespipe puede trabajar usando claves gpg, aunque no voy a centrarme en este caso, por lo comentado en el punto anterior.

Si escogemos aespipe, éste trabaja, por defecto, en su modo recomendado multi-key-v3, que requiere una clave con una longitud mínima de 20 caractereres. Llegados a este punto, podemos optar por usar una clave del tipo "googlemecagontostusmuertosnomiresloqueguardo", o escoger una clave (segura) que usemos habitualmente, que no llegue a los 20 caracteres y cifrarla, por ejemplo con un SHA.

$ echo -n nuestrapass | sha512sum
c9087d475d0307f2e4130f0d919084366c4572eb2ef88df62d560ba01d40a3d8ddf1c9186662903d3d27e164b6cf4acf5e1400095d3814716ac5176a756f84fe -

Con esto conseguimos una clave que supera ampliamente los 20 caracteres, y que podremos generar en cualquier equipo que utilicemos, recordando, simplemente, nuestra clave y el algoritmo de cifrado.

Si vamos a cifrar un solo fichero, copiar y pegar la pass es suficiente. Pero si vamos a cifrar varios ficheros, podemos guardar la contraseña en un fichero que almacenaremos de forma temporal y que le pasárselo a aespipe como parámetro:

  1. Exportar la clave al fichero:
    $ echo -n nuestrapass | sha512sum | cut -d " " -f1 >> passParaLaNube.txt
  2. Pasarle el fichero con la clave a aespipe como parámetro:
    $ aespipe -e aes256 -P passParaLaNube.txt ficheroCifrado.tgz
  3. Descifrar el fichero:
    $ aespipe -e aes256 -d -P passParaLaNube.txt fichero

Si vamos a cifrar una cantidad considerable de ficheros, podemos automatizar la tarea con un pequeño script en bash:

#!/bin/bash
for i in *;
do 
   if [ $i != script -a $i != passParaLaNube.txt ];
   then
      aespipe -e aes256 -P passParaLaNube.txt <$i >$i.tgz
   fi;
done;

*script es el nombre del script

*passParaLaNube.txt es el nombre del fichero con la contraseña para aespipe

*Si lo que queremos es comprimir con contraseña, el script se puede adaptar cambiando la línea de aespipe por el comando que queramos ejecutar. Por ejemplo, para comprimir con contraseña usando p7zip y header encryption (mhe=on):
7z a -r -mhe=on -pCONTRASEÑA $i.7z $i
(También habría que quitar -a $i != passParaLaNube.txt de la condición de evaluación del if ;) )

(Segunda parte) usando la nube con sentido común y p7zip

No hay comentarios:

Publicar un comentario