- Dm-crypt
-
Dm-crypt
Dm-crypt es un device-mapper[1] tal que provee cifrado transparente de dispositivos de bloque utilizando la nueva cryptoapi de Linux 2.6. Las escrituras a este dispositivo serán cifradas y las lecturas descifradas. Se podrá montar un sistema de archivos en el mismo de la manera habitual, pero no se podrán acceder los datos sin la clave.
Básicamente realiza lo mismo que cryptoloop, con la diferencia que tiene un código mucho más limpio, es más adecuado para satisfacer la necesidad de un dispositivo de bloque, y tiene una interfaz de configuración más flexible. El formato on-disk también es compatible.
En Microsoft Windows, los discos cifrados con dm-crypt pueden ser utilizados con FreeOTFE.
Contenido
Configuración del núcleo
Las imágenes estándar del núcleo 2.6 parecen funcionar correctamente. En caso de estar compilando uno propio, estas son las opciones a tomar:
Code maturity level options ---> * on: Prompt for development and/or incomplete code/drivers General setup ---> * on: Support for hot-pluggable devices Device Drivers > Multi-device support (RAID and LVM). * on: Device mapper support * on: Crypt target support Cryptographic options ---> * on: AES cipher algorithms
Los controladores de desarrollo deben estar activados, o no se podrá habilitar el soporte de crypt target para el device-mapper. Habilitar el soporte para dispositivos hot-pluggable construye "udev" en el núcleo, lo cual facilita las tareas. Si se habilita udev, se debe asegurar de no habilitar devfs.
Para asegurarse de que el device-mapper existe, se debe ejecutar la siguiente línea de comando:
ls -L /dev/mapper/control
Si no está el dispositivo mapeado, el mismo será creado al instalar el paquete dmsetup (ver Instalación de Herramientas).
También se debe verificar que se tiene soporte para AES (o cualquiera sea el cifrado que se utilice):
cat /proc/crypto
que debería devolver:
name : aes module : aes type : cipher blocksize : 16 min keysize : 16 max keysize : 32
Si se está corriendo crypto como módulos, entonces no se verá nada cuando se haga "cat /proc/crypto" hasta que ese módulo sea cargado. cryptsetup es responsable de cargar los módulos necesarios para su ejecución. Si se desea cargar un módulo manualmente, se utiliza el comando:
insmod /lib/modules/2.6.7-1-386/kernel/crypto/aes.ko
o simplemente:
modprobe aes
Instalación de Herramientas
dmsetup
Ejecutar el comando:
apt-get install dmsetup
La instalación de este paquete creará los dispositivos de mapeo si es que no existen.
Verificar que "crypt target" esté soportado:
dmsetup targets crypt v1.0.0 striped v1.0.1 linear v1.0.1 error v1.0.1
Si se utiliza un núcleo basado en módulos, será cargado cuando sea necesario.
cryptsetup
cryptsetup es una herramienta que facilita el uso de dm-crypt, eliminando las llamadas directas a dmsetup.
apt-get install cryptsetup
Cifrar una partición
Las siguientes instrucciones describen cómo utilizar dm-crypt para crear un sistema de archivos en una partición.
Para crear la partición cifrada, se deben ejecutar los siguientes pasos:
- Ejecutar cryptsetup en la partición, lo cual crea un dispositivo de mapeo con target crypt.
- Crear el sistema de archivos en el nuevo dispositivo.
- Montar del nuevo dispositivo.
En el siguiente ejemplo se transformará el volumen físico
/dev/sda3z
en el volumen lógico (cifrado) en/dev/mapper/privado
(en este caso "privado" es la etiqueta del dispositivo descifrado) y se montará en/var/privado
.Para crear el volumen lógico con la librería cryptsetup:
cryptsetup -y create privado /dev/sda3
El parámetro "-y" fuerza al usuario a ingresar dos veces la clave a utilizar.
O crear el volumen lógico con el script cryptsetup que incluye en Debian el paquete hashalot http://packages.debian.org/unstable/utils/hashalot .
cryptsetup -c aes -h ripemd160 -s 32 create privado /dev/sda3
Para confirmar que se haya ejecutado correctamente:
dmsetup ls privado (254, 0)
Crear el sistema de archivos:
mkfs.ext3 /dev/mapper/privado
Montar el sistema de archivos:
mount /dev/mapper/privado /var/privado
Uso diario
Cada vez que se reinicie el sistema operativo, se deberá re-ejecutar el comando cryptsetup e ingresar la misma clave. Si se ingresa una clave incorrecta, el dispositivo cifrado no podrá montarse y tendremos que destruirlo y crearlo otra vez. No hay que preocuparse ya que mientras no se formatee el dispositivo creado con la contraseña incorrecta, no se perderán datos.
Para que el montaje se realice en el booteo, se debe editar el fstab para tener /dev/mapper/privado montado en /var/privado. Esto solo funcionará si cryptsetup es ejecutado antes que las particiones sean leídas de fstab.
/etc/init.d/cryptinit: if [ -b /dev/mapper/privado ]; then /usr/bin/cryptsetup remove privado fi /usr/bin/cryptsetup create privado /dev/sda3 cd/etc/rcS.d ln -s../init.d/cryptinit S08cryptinit
Para hacer el montaje manualmente, se puede ejecutar el siguiente script:
if [ -b /dev/mapper/privado ]; then /usr/bin/cryptsetup remove privado fi /usr/bin/cryptsetup create privado /dev/sda3 mount /dev/mapper/privado /var/privado
Notas
- ↑ Device-mapper (mapeo de dispositivos) es una nueva infraestructura en el núcleo Linux 2.6, la cual provee una manera genérica de crear capas virtuales de dispositivos de bloques que puedan realizar diferentes tareas sobre dispositivos de bloques reales, como ser stripping, concatenación, espejado, etc. El device-mapper es utilizado por las herramientas LVM2 y EVMS 2.x.
Véase también
Enlaces externos
Categorías: Núcleo Linux | Criptografía | Seguridad informática
Wikimedia foundation. 2010.