¿Qué es LUKS y cómo funciona?

Al almacenar información confidencial en cualquier equipo informático, se deben tomar ciertas medidas para protegerla de las miradas indiscretas. Y en lugar de protegerla únicamente con una contraseña promedia, se puede convertir estos datos en un texto ilegible, de modo que sólo una persona autorizada pueda descifrarlo y leer el contenido original. Este método de protección de datos es ampliamente conocido como cifrado. En caso de Linux, se puede usar LUKS, la opción estándar del núcleo que sirve para cifrar discos completos. Examinemos más de cerca esta tecnología y sus principios de funcionamiento.

Última actualización:
el 02 de junio, 2023

Tiempo de lectura: 5 min

¿Qué es LUKS?

LUKS (del inglés Linux Unified Key Setup, Configuración de clave unificada de Linux) es, con mucho, el medio más común de cifrado de dispositivos de bloque que se utiliza en varios sistemas basados en Linux. Es completamente de código abierto, opera a nivel de núcleo y emplea el subsistema device mapper a través del módulo dm-crypt. La primera versión de LUKS, que más tarde se denominó LUKS1, se lanzó en 2005. En 2018, se mejoró con algunas funciones adicionales, y esta versión mejorada se suele llamar LUKS2.

Al cifrar la información almacenada en una unidad de disco interna de una computadora de escritorio/portátil o cualquier dispositivo de almacenamiento USB portátil, LUKS impide que se acceda a menos que el usuario ingrese las credenciales de autenticación correctas. Esta también es una opción popular para la protección de dispositivos NAS, especialmente los producidos por QNAP.

Se puede usar LUKS para cifrar cualquier partición que puede abarcar no sólo una única unidad, sino que también un arreglo RAID de varias unidades o incluso un volumen LVM. Para esto, se ofrecen varias combinaciones de algoritmos de cifrado (incluidos AES, Serpent, Twofish), modos de cifrado (ECB; CBC, XTS) y funciones hash (SHA-1, SHA-256, SHA-512, RIPEMD160, etc.). La configuración estándar es AES en el modo de operación XTS, con una clave de 512 bits de tamaño. Sin embargo, los desarrolladores de diferentes distribuciones de Linux y los fabricantes de hardware basado en Linux pueden optar por sus propios valores de cifrado predeterminados.

Todas las particiones cifradas con LUKS tienen un diseño similar. La información más crucial relacionada con el cifrado, como el algoritmo empleado y las claves, está en el encabezado LUKS, un área especial ubicada al comienzo del dispositivo cifrado. Como alternativa, también es posible crear un encabezado LUKS "separado" y colocarlo en una ubicación completamente diferente, por ejemplo, en una unidad de memoria flash USB extraíble. El encabezado es un elemento estructural esencial de una partición cifrada con LUKS. Si se corrompe, por ejemplo, debido a la re-creación inapropiada de particiones, los datos no se pueden descifrar y se pierden de forma irreversible. Es por eso que crear sus copias de seguridad es una práctica sensata.

A continuación, vienen el área denominada "material clave" y los propios datos de usuario cifrados. La clave principal utilizada para realizar el cifrado (también conocida como Clave maestra, Master Key) es generada de manera aleatoria por el sistema. Esta clave, a su vez, se cifra con la ayuda de una clave de usuario o con varias claves, en caso de que haya más usuarios válidos que tengan acceso al almacenamiento. Estas variantes cifradas de la Clave maestra se almacenan en ranuras de claves especiales del área de "material clave". Puede haber hasta ocho ranuras de claves, cada una de las cuales se desbloquea con una clave de un usuario en particular. Las claves de usuario en sí están protegidas por los algoritmos hash criptográficos (como PBKDF2), mientras que la Clave maestra se separa en franjas "anti-forense".

La clave de usuario que descifra la Clave maestra y, en consecuencia, desbloquea el almacenamiento, puede tener forma de:

  • una frase de contraseña – una secuencia de 512 caracteres de longitud como máximo que es proporcionada por el usuario y que se solicita durante el inicio del sistema o al acceder a un dispositivo externo cifrado mediante LUKS;
  • un archivo clave – un archivo cuyo contenido se puede usar como frase de contraseña para desbloquear el volumen cifrado con LUKS. Cuando el archivo se almacena en un dispositivo extraíble, como una memoria USB, el medio sirve de una clave física, por lo que es posible realizar el descifrado siempre que dicho medio esté conectado a la computadora. Este archivo puede incluir una frase de contraseña simple, un bloque de caracteres aleatorios o incluso datos binarios, como una imagen, una pista de música o un vídeo.

¿Cómo se activa en un dispositivo?

Dado que la función de cifrado LUKS está integrada directamente en el núcleo de Linux, habilitarla en cualquier distribución de Linux es bastante fácil:

  • LUKS se puede activar durante la instalación/reinstalación del sistema al marcar la opción correspondiente. Este método es óptimo, ya que implica el cifrado de todas las particiones, incluido el espacio de intercambio (swap), y por lo tanto, permite asegurar la máxima protección. No obstante, la partición /boot junto con GRUB no se cifra. Se coloca en una partición separada para dejar iniciar el sistema después de su instalación.
  • El cifrado se puede realizar sobre la base de partición con la ayuda de cryptsetup, una utilidad de línea de comandos para configurar sistemas de archivos cifrados mediante Device Mapper y el objetivo dm-crypt.
  • En los dispositivos NAS compatibles, el volumen de NAS se puede cifrar en el momento de su creación, siempre que el usuario marque la casilla de verificación correspondiente.

LUKS en QNAP NAS

La mayoría de los almacenamiento conectados a la red fabricados por QNAP tienen la función de cifrado de disco completo. Se puede crear una partición cifrada en una unidad individual, una configuración JBOD o un arreglo RAID sobre la base del mecanismo de configuración de cifrado proporcionado por LUKS y el algoritmo AES de 256 bits en el modo CBC. Sin embargo, esta implementación de LUKS tiene una diferencia notable de la variante estándar de Linux.

Si un usuario elige activar el cifrado, se le solicita que defina una frase de contraseña de 8 a 32 caracteres de longitud. Esta frase de contraseña está destinada al cifrado de la Clave maestra de LUKS y primero se transforma por una utilidad de QNAP llamada storage_util que aplica la función hash MD5 con salt YCCaQNAP a ella.

La clave de cifrado resultante se puede guardar en un archivo de 256 bytes con la extensión *.key durante o después del procedimiento.

Para desbloquear un volumen como este, el usuario debe ingresar la frase de contraseña original o cargar el archivo *.key exportado.

Los siguientes productos de software permiten acceder y recuperar datos de los almacenamientos que emplean la tecnología antes descrita: