dm-crypt es un subsistema de cifrado de dispositivos de bloques transparente en las versiones 2.6 y posteriores del kernel de Linux y en DragonFly BSD . Es parte de la infraestructura del mapeador de dispositivos (dm) y utiliza rutinas criptográficas de la API Crypto del kernel . A diferencia de su predecesor cryptoloop , dm-crypt fue diseñado para soportar modos avanzados de operación, como XTS , LRW y ESSIV , para evitar ataques de marca de agua . [1] Además de eso, dm-crypt soluciona algunos problemas de confiabilidad de cryptoloop. [2]
dm-crypt se implementa como un objetivo de mapeo de dispositivos y se puede apilar sobre otras transformaciones de mapeo de dispositivos. De esta manera, puede cifrar discos completos (incluidos medios extraíbles ), particiones , volúmenes RAID de software , volúmenes lógicos y archivos . Aparece como un dispositivo de bloque, que se puede utilizar para respaldar sistemas de archivos , intercambio o como un volumen físico LVM .
Algunas distribuciones de Linux admiten el uso de dm-crypt en el sistema de archivos raíz. Estas distribuciones utilizan initrd para solicitar al usuario que introduzca una frase de contraseña en la consola o que inserte una tarjeta inteligente antes del proceso de arranque normal. [3]
El objetivo del mapeador de dispositivos dm-crypt reside completamente en el espacio del núcleo y solo se ocupa del cifrado del dispositivo de bloque ; no interpreta ningún dato por sí mismo. Se basa en interfaces de usuario para crear y activar volúmenes cifrados y administrar la autenticación. Actualmente hay disponibles al menos dos interfaces: y .cryptsetup
cryptmount
La cryptsetup
interfaz de línea de comandos, de manera predeterminada, no escribe ningún encabezado en el volumen cifrado y, por lo tanto, solo proporciona lo esencial: las configuraciones de cifrado se deben proporcionar cada vez que se monta el disco (aunque generalmente se emplean con scripts automatizados) y solo se puede usar una clave por volumen; la clave de cifrado simétrico se deriva directamente de la frase de contraseña suministrada .
Debido a que carece de una " sal ", el uso de cryptsetup es menos seguro en este modo que en el caso de Linux Unified Key Setup (LUKS). [9] Sin embargo, la simplicidad de cryptsetup lo hace útil cuando se combina con software de terceros, por ejemplo, con autenticación de tarjeta inteligente .
cryptsetup
También proporciona comandos para manejar el formato LUKS en disco. Este formato proporciona funciones adicionales como administración de claves y ampliación de claves (mediante PBKDF2 ), y recuerda la configuración del volumen cifrado después de reiniciar. [3] [10]
La cryptmount
interfaz es una alternativa a la herramienta "cryptsetup" que permite a cualquier usuario montar y desmontar un sistema de archivos dm-crypt cuando sea necesario, sin necesidad de privilegios de superusuario después de que el dispositivo haya sido configurado por un superusuario.
El hecho de que el software de cifrado de discos (cifrado de volúmenes) como dm-crypt solo se ocupe del cifrado transparente de dispositivos de bloques abstractos le otorga mucha flexibilidad. Esto significa que se puede utilizar para cifrar cualquier sistema de archivos respaldado por discos compatible con el sistema operativo , así como el espacio de intercambio ; se conservan las barreras de escritura implementadas por los sistemas de archivos. [11] [12] Los volúmenes cifrados se pueden almacenar en particiones de disco , volúmenes lógicos , discos completos, así como imágenes de disco respaldadas por archivos (a través del uso de dispositivos de bucle con la utilidad losetup). dm-crypt también se puede configurar para cifrar volúmenes RAID y volúmenes físicos LVM .
dm-crypt también se puede configurar para proporcionar autenticación previa al arranque a través de un initrd , cifrando así todos los datos de una computadora, excepto el gestor de arranque, el kernel y la propia imagen initrd. [3]
Al utilizar el modo de operación de encadenamiento de bloques de cifrado (CBC) con vectores de inicialización predecibles como otro software de cifrado de disco, el disco es vulnerable a ataques de marca de agua . Esto significa que un atacante puede detectar la presencia de datos especialmente diseñados en el disco. Para abordar este problema en sus predecesores, dm-crypt incluyó disposiciones para modos de operación más elaborados y específicos del cifrado de disco. [1] El soporte para ESSIV (vector de inicialización de sector de sal cifrado) se introdujo en la versión 2.6.10 del kernel de Linux, LRW en 2.6.20 y XTS en 2.6.24. Un algoritmo de cifrado de disco de bloque ancho , Adiantum , se agregó en 5.0, y su primo basado en AES HCTR2 en 6.0.
La API de Linux Crypto incluye soporte para los cifrados de bloque y funciones hash más populares , todos ellos utilizables con dm-crypt.
El soporte de sistemas de archivos cifrados incluye volúmenes LUKS (versiones 1 y 2), loop-AES, TrueCrypt / VeraCrypt (desde el kernel de Linux 3.13), [13] [14] [15] y NTFS cifrado con BitLocker (desde cryptsetup 2.3.0). [16] El soporte de TrueCrypt/VeraCrypt (TCRYPT) y BitLocker (BITLK) requiere la API de cifrado del espacio de usuario del kernel. [17]
Se puede acceder y utilizar discos cifrados con dm-crypt y LUKS en MS Windows mediante el ahora extinto FreeOTFE (anteriormente DoxBox, LibreCrypt), siempre que el sistema de archivos utilizado sea compatible con Windows (por ejemplo, FAT /FAT32/ NTFS ). Los sistemas de archivos cifrados ext2 y ext3 son compatibles mediante Ext2Fsd o el denominado "Sistema de archivos instalable Ext2 para Windows"; [18] FreeOTFE también los admite.
Cryptsetup/LUKS y la infraestructura necesaria también se han implementado en el sistema operativo DragonFly BSD. [19]