La configuración de clave unificada de Linux ( LUKS ) es una especificación de cifrado de disco creada por Clemens Fruhwirth en 2004 y originalmente pensada para Linux .
LUKS implementa un formato estándar en disco independiente de la plataforma para su uso en diversas herramientas. Esto facilita la compatibilidad e interoperabilidad entre diferentes programas y sistemas operativos, y garantiza que todos implementen la gestión de contraseñas de manera segura y documentada. [1]
LUKS se utiliza para cifrar un dispositivo de bloques . El contenido del dispositivo cifrado es arbitrario y, por lo tanto, se puede cifrar cualquier sistema de archivos, incluidas las particiones de intercambio . [2] Hay un encabezado sin cifrar al comienzo de un volumen cifrado, que permite almacenar hasta 8 (LUKS1) o 32 (LUKS2) claves de cifrado junto con parámetros de cifrado como el tipo de cifrado y el tamaño de la clave. [3] [4]
La presencia de este encabezado es una diferencia importante entre LUKS y dm-crypt , ya que el encabezado permite utilizar varias frases de contraseña diferentes, con la posibilidad de cambiarlas y eliminarlas. Si el encabezado se pierde o se corrompe, el dispositivo ya no podrá descifrarse. [5]
El cifrado se realiza con un enfoque de múltiples capas. Primero, el dispositivo de bloque se cifra utilizando una clave maestra. Esta clave maestra se cifra con cada clave de usuario activa . [6] Las claves de usuario se derivan de frases de contraseña, claves de seguridad FIDO2 , TPM o tarjetas inteligentes . [7] [8] El enfoque de múltiples capas permite a los usuarios cambiar su frase de contraseña sin volver a cifrar todo el dispositivo de bloque. Las ranuras de clave pueden contener información para verificar las frases de contraseña del usuario u otros tipos de claves.
Existen dos versiones de LUKS: LUKS2 presenta resistencia a la corrupción de encabezados y utiliza la función de derivación de claves Argon2 de manera predeterminada, mientras que LUKS1 utiliza PBKDF2 . [9] La conversión entre ambas versiones de LUKS es posible en ciertas situaciones, pero algunas funciones pueden no estar disponibles con LUKS1, como Argon2. [3] LUKS2 utiliza JSON como formato de metadatos. [3] [10]
Los algoritmos criptográficos disponibles dependen del soporte del kernel individual del host. Libgcrypt se puede utilizar como backend para el hash, que admite todos sus algoritmos. [11] Depende del proveedor del sistema operativo elegir el algoritmo predeterminado. [12] LUKS1 utiliza una técnica anti-forense llamada AFsplitter, que permite el borrado y la protección seguros de los datos. [13]
La gestión de volúmenes lógicos se puede utilizar junto con LUKS. [14]
Un uso común de LUKS es proporcionar cifrado de disco completo , lo que implica cifrar la partición raíz de una instalación de sistema operativo, lo que protege los archivos del sistema operativo de ser alterados o leídos por partes no autorizadas . [14]
En un sistema Linux, la partición de arranque ( /boot
) puede estar cifrada si el propio gestor de arranque admite LUKS (por ejemplo, GRUB ). Esto se hace para evitar la manipulación del núcleo de Linux . Sin embargo, el gestor de arranque de primera etapa o una partición del sistema EFI no se pueden cifrar (consulte Cifrado de disco completo n.º El problema de la clave de arranque ). [14]
En sistemas Linux móviles, postmarketOS ha desarrollado osk-sdl para permitir que un sistema con disco completo cifrado se desbloquee mediante una pantalla táctil.
Para los sistemas que ejecutan systemd , el systemd-homed
componente se puede utilizar para cifrar directorios de inicio individuales . [17]
La implementación de referencia para LUKS opera en Linux y se basa en una versión mejorada de cryptsetup , que utiliza dm-crypt como backend de cifrado de disco. En Microsoft Windows , los discos cifrados con LUKS se pueden utilizar a través del Subsistema de Windows para Linux . [18] (Anteriormente, esto era posible con LibreCrypt, [19] que actualmente tiene agujeros de seguridad fundamentales, [20] [21] y que sucedió a FreeOTFE , anteriormente DoxBox).
DragonFly BSD admite LUKS. [22]
Varias distribuciones de Linux permiten cifrar el dispositivo raíz al instalar el sistema operativo. Estos instaladores incluyen Calamares , [23] Ubiquity , [24] Debian-Installer , [25] y más.
Los encabezados LUKS son compatibles con versiones anteriores; las versiones más nuevas de LUKS pueden leer encabezados de versiones anteriores. [26]
Los dispositivos LUKS2 comienzan con un encabezado binario destinado a permitir el reconocimiento y la detección rápida por parte de blkid , que también contiene información como sumas de comprobación . Todas las cadenas utilizadas en un encabezado LUKS2 son cadenas terminadas en nulo . Directamente después del encabezado binario viene el área JSON, que contiene los objetos config
(configuración), keyslots
, digests
, segments
(describe áreas cifradas en el disco) y tokens
contiene metadatos adicionales. [10]
El formato binario de luks2
las ranuras de claves regulares es en su mayor parte similar al de su predecesor, con la adición de diferentes algoritmos por ranura de clave. Existe otro tipo de clave para permitir redundancia en caso de que se interrumpa un proceso de reencriptación. [10]
Cryptsetup es la implementación de referencia del frontend LUKS.
Para cifrar un dispositivo con la ruta /dev/sda1
:
# cryptsetup luksFormat /dev/sda1
Para desbloquear un dispositivo cifrado, ¿dónde name
está el nombre del dispositivo asignado ?
# cryptsetup abre /dev/sda1 nombre
La recodificación de un contenedor LUKS se puede realizar con la cryptsetup
propia herramienta o con una herramienta heredada llamada cryptsetup-reencrypt
. Estas herramientas también se pueden utilizar para agregar codificación a un sistema de archivos no codificado existente o eliminar la codificación de un dispositivo de bloque. [11] [27]
Ambos métodos tienen una sintaxis similar:
# cryptsetup vuelve a cifrar /dev/sda1
# cryptsetup-reencrypt /dev/sda1
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )