Sistemas de ficheros cifrados con Debian GNU/Linux
Una funcionalidad muy útil para asegurar la confidencialidad de nuestros datos es poder cifrar un sistema de ficheros completo.
En este breve artículo describo cómo hacerlo en Linux (Debian Etch, para ser más exactos). El procedimiento es similar para otras distribuciones...
En realidad, adapto aquí -con permiso de su autor- un mensaje incluido en la lista de correo de Debian (desarrolladores)...
Descripción general
La funcionalidad que deseamos utilizar viene dada por los siguientes paquetes:
loop-aes-utils
loop-aes-modules-2.6.18-4-686 (o el que corresponda para nuestra versión del kernel).
Básicamente se trata de un módulo para el núcleo -con sus utilidades de gestión correspondientes- que permite trabajar con sistemas de ficheros cifrados. Los paquetes anteriores instalan una versión especializada del típico "mount", que nos pedirá una contraseña cuando intentemos montar el sistema cifrado en cuestión.
Para trabajar con estas herramientes es conveniente también instalar los siguientes paquetes, si no los tenemos:
pwgen
gnupg
Mini "cómo"
A continuación mostraremos un ejemplo de uso: crearemos un sistema de ficheros dentro de un fichero regular (a un usuario de Windows a lo mejor esto le sorprendería), lo montaremos en modo "cifrado", lo "formatearemos" y escribiremos datos dentro.
1) Instalamos los paquetes necesarios:
# apt-get install ...
2) Creamos un fichero que almacenará un sistema de ficheros en su interior (de 100MB, para probar). Podemos usar la ubicación y nombre que más nos gusten (en nuestro caso /mnt/testfs):
# dd if=/dev/zero of=/mnt/testfs bs=1k count=102400
3) Creamos un fichero (cifrado con gnupg) de contraseñas para acceder al sistema de ficheros cifrado:
# pwgen -cns 30 65 | gpg -aco /mnt/testkey
(gpg nos pedirá introducir una clave, que utilizaremos posteriormente para acceder al sistema de ficheros)
4) Asociamos un "loop device" a nuestro sistema de ficheros y establecemos el tipo de cifrado. Es recomendable la versión más potente de AES (existen otros tipos de cifrado descritos en la documentación del paquete).
# losetup -e AES256 -K /mnt/testkey /dev/loop0 /mnt/testfs
5) Creamos la estructura del sistema de ficheros (lo "formateamos"). Elegimos un sistema habitual en Linux: ext3.
# mkfs -t ext3 /dev/loop0
6) Creamos el directorio de montaje:
# mkdir /mnt/test
7) Deshacemos la asociación entre el "loop device" /dev/loop0 y nuestro sistema de ficheros:
# losetup -d /dev/loop0
8) Añadimos al fichero /etc/fstab una entrada como la siguiente: (a continuación se muestra la línea a añadir; aunque aquí pueda aparecer partida, es una sola línea)
/mnt/testfs /mnt/test ext3 defaults,rw,user,noauto,loop=/dev/loop0,encryption=AES256,gpgkey=/mnt/testkey 0 0
9) Ahora podremos montar nuestro sistema de ficheros cifrado, incluso como usuario normal:
$ mount /mnt/testfs Contraseña:
Nos pedirá la contraseña que habíamos introducido en el punto 3). Si la introducimos bien, volverá a establecer la asociación entre el "loop device" y el sistema de ficheros, y podremos acceder a este último. A partir de ahora, todos los datos que escribamos en el sistema de ficheros se guardarán cifrados.
Podemos acceder y ver lo que tiene (inicialmente vacío):
$ cd /mnt/testfs $ ls -l total 12 drwx------ 2 root root 12288 2007-01-31 17:38 lost+found $
Para poner a buen recaudo el sistema de ficheros, después de trabajar con él, simplemente lo desmontamos:
$ umount /mnt/testfs
Obviamente, también podemos cifrar una partición "real" como /dev/hda1, /dev/hda5, etc.
Para más información, consultar la documentación oficial del paquete en cuestión. La página oficial es: http://loop-aes.sourceforge.net.
Un saludo ;)

- 4164 lecturas
Twitter

Este fin de semana
Comprobaré si se pueden seguir los mismos pasos para ubuntu 6.10. Si detecto algún problema posteare aquí lo que descubra, pero debería funcionar del mismo modo.
Esto es un coñazo...
Todo eso me lo he chupado yo repetidas veces y funciona como una escopeta de feria: esto es, a veces no y otras veces tampoco; y es un poco complicado, se olvidan pasos de una vez para otra, tal módulo no se ha cargado automáticamente... Además, hay que ser administrador para activar los "loop" y todo eso.
Yo prefiero las utilidades basadas en FUSE (sistema de ficheros a nivel de usuario) como "encfs", que fue comentado en algún artículo de Kriptópolis hace algún tiempo. Funciona de una forma más sencilla y transparente y, lo que es más importante, no hace falta pasar a modo administrador en ningún momento.
SKS, criptografía de curva elíptica de bolsillo
http://sks.merseine.nu
SKS, criptografía de curva elíptica de bolsillo
http://sks.anarres.tk
La alternativa EncFS
Vale
El "artículo" comenta un ejemplo.
En realidad, la idea que subyace (que también se describe en la documentación del paquete) es tener una partición pequeña de arranque, y tener cifrado TODO lo demás.
Es más, yo habitualmente utilizo un sistema todavía más sencillo:
$ gpg -e -o salida fichero
Es un "coñazo", o "cojonudo", según se mire.
Un saludo :-P
Mucho más cómodo dm-crypt
Basado en el device mapper del kernel linux, y con LUKS puedes tener múltiples usuarios y cambiar la password. Algunos enlaces:
No es por desanimar a nadie..
..pero desde que me pasó esto yo no me fío de soluciones de este tipo.
:-(
-- Por lo menos yo voté que NO.
.
--
Por lo menos yo voté que NO.
Por curiosidad...
¿qué sistema de ficheros utilizabas? Porque con cryptoloop no es recomendable usar sistemas de ficheros con journaling (aún así yo estuve usando bastante intensivamente Ext3 en una partición cifrada así durante casi tres años y no tuve problema).
Sinceramente..
..¡No me acuerdo! :)
En serio: por la fecha del suceso es muy posible que fuera Ext2. Pero el problema no estuvo nunca en el sistema de ficheros. El problema se presentó después de una actualización de software un poco extraña.
-- Por lo menos yo voté que NO.
.
--
Por lo menos yo voté que NO.
alternativa
yo utilizo truecrypt para crearme sistemas de ficheros cifrados y ccrypt como cifrador de archivos.
nunca me han dado ningún problema y ambos estás tanto para Linux como para Windows.
:)