Dm-crypt/es

dm-crypt es un sistema de cifrado de discos que utiliza el marco API de cifrado del núcleo y el subsistema mapeador de dispositivos. Con dm-crypt, los administradores no solo pueden cifrar discos enteros, volúmenes lógicos o particiones, sino también ficheros individuales.

El subsistema de dm-crypt da soporte a la estructura Linux Unified Key Setup (LUKS), lo que permite usar múltiples claves para acceder a los datos cifrados, así como manipular las claves (esto es, cambiar las claves, añadir frases de acceso adicionales, etc.). A pesar de que dm-crypt soporta configuraciones no solo para LUKS, este artículo se centrará en la funcionalidad de LUKS, sobre todo debido a su flexibilidad, capacidad de gestión, así como por su amplio apoyo por parte de la comunidad.

Configuración
Hay dos requisitos previos antes de poder comenzar a usar dm-crypt:


 * 1) Configurar el núcleo de Línux.
 * 2) Instalar el paquete.

Configurar el núcleo
Para usar dm-crypt hay una serie de entradas de configuración que deben quedar definidas.

En primer lugar, se debe incluir soporte para la infraestructura del mapeador de dispositivos así como para el objetivo a cifrar:

Luego, el núcleo de Línux necesita tener soporte para el conjunto de las API criptográficas que el administrador desee utilizar para el cifrado. Este se puede encontrar en la sección Cryptographic API:

Si se ha cifrado el sistema de ficheros root, entonces se debe crear un sistema de ficheros RAM inicial en el que el sistema de ficheros root sea descifrado antes de montarlo. Por lo tanto, esto requiere soporte para initramfs:

Instalar cryptsetup
El paquete proporciona la orden , que se utiliza para abrir o cerrar el soporte que sirve de almacenamiento cifrado, así como para gestionar las frases de acceso o claves asociadas con él.

Fichero de claves o frase de acceso
Para comenzar con el almacenamiento cifrado, el administrador tendrá que decidir qué método utilizar para la clave de cifrado. Con  la elección consistirá en una frase de acceso o en un fichero de claves. En el caso de un fichero de claves, este puede ser cualquier fichero, pero se recomienda utilizar un fichero con datos aleatorios que esté protegido adecuadamente (teniendo en cuenta que el acceso a este fichero de claves permitirá tener acceso a todos los datos cifrados).

Para crear un fichero de claves, se puede utilizar la orden :

En las siguientes secciones, mostraremos todas las órdenes para ambas situaciones —frase de acceso y fichero de claves—. Por supuesto, solo un método es necesario.

Crear una plataforma de almacenamiento encriptada
Con el fin de crear una plataforma de almacenamiento cifrada (que puede ser un disco, partición, fichero, ...) utilice la orden  con la opción luksFormat .

Por ejemplo, para tener como medio de almacenamiento para albergar los datos cifrados:

Para utilizar un fichero de claves, en lugar de una frase de acceso:

El parámetro  le dice a   qué longitud de clave (KeyLength) utilizar para la clave de cifrado vigente (a diferencia de la frase de acceso o fichero de claves, que se utilizan para tener acceso a esta clave de cifrado actual).

Abrir el almacenamiento encriptado
Con el fin de abrir el almacenamiento cifrado (es decir, que los datos reales sean accesibles a través del descifrado transparente), utilice la orden luksOpen.

Si se utiliza un fichero de claves, la orden se vería así:

Cuando la orden termina con éxito, a continuación, un fichero de dispositivo nuevo, llamado, estará disponible. Este fichero de dispositivo puede ser montado como una ubicación de almacenamiento normal:

Cerrar el almacenamiento encriptado
Con el fin de cerrar el almacenamiento cifrado (es decir, asegurarse de que los datos reales ya no son accesibles a través del descifrado transparente), utilice la orden  luksClose :

Por supuesto, asegúrese de que el dispositivo ya no está en uso.

Manipular las claves de LUKS
Las claves de LUKS se utilizan para acceder a la clave de cifrado real. Se almacenan en ranuras (slots) en la cabecera de la de partición (cifrada), disco o fichero.

Listar los slots
With the luksDump command, information about the encrypted partition, disk or file can be shown. This includes the slots:

In the above example, two slots are used. Note that luksDump does not give away anything sensitive - it is merely displaying the LUKS header content. No decryption key has to be provided in order to call luksDump.

Adding a keyfile or passphrase
In order to add an additional keyfile or passphrase to access the encrypted storage, use the luksAddKey option:

To use a keyfile to unlock the key (but still add in a passphrase):

If a keyfile is to be added (say :

Or, to use the first keyfile to unlock the main key:

Removing a keyfile or passphrase
With the luksRemoveKey a keyfile or passphrase can be removed (so they can no longer be used to decrypt the storage):

Or to remove a keyfile:

Make sure that at least one method for accessing the data is still available. Once a passphrase or keyfile is removed for use, this cannot be recovered again.

Emptying a slot
Suppose the passphrase or keyfile is no longer known, then the slot can be freed. Of course, this does require prior knowledge of which slot that the passphrase or keyfile was stored in.

For instance, to empty out slot 2 (which is the third slot as slots are numbered starting from 0):

This command will ask for a valid passphrase before continuing. Or one can pass on the keyfile to use:

Additional resources

 * DM-Crypt LUKS on the Gentoo Wiki provides a more elaborate approach on using encrypted file systems for Gentoo Linux installations