Configuración de clave unificada de Linux

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

La configuración de clave unificada de Linux (LUKS) es una especificación de cifrado de disco creada por Clemens Fruhwirth en 2004 y pensada originalmente 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.

Descripción

LUKS se utiliza para cifrar un dispositivo de bloque. El contenido del dispositivo cifrado es arbitrario y, por lo tanto, se puede cifrar cualquier sistema de archivos, incluidas las particiones de intercambio. Hay un encabezado sin cifrar al principio 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.

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.

El cifrado se realiza con un enfoque de múltiples capas. En primer lugar, el dispositivo de bloque se cifra utilizando una clave maestra. Esta clave maestra se cifra con cada clave de usuario activa. Las claves de usuario se derivan de frases de contraseña, claves de seguridad FIDO2, TPM o tarjetas inteligentes. 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 de 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 forma predeterminada, mientras que LUKS1 utiliza PBKDF2. La conversión entre ambas versiones de LUKS es posible en ciertas situaciones, pero es posible que algunas funciones no estén disponibles con LUKS1, como Argon2. LUKS2 utiliza JSON como formato de metadatos.

Los algoritmos criptográficos disponibles dependen de la compatibilidad del kernel individual del host. Libgcrypt se puede utilizar como backend para el hash, que admite todos sus algoritmos. Depende del proveedor del sistema operativo elegir el algoritmo predeterminado. LUKS1 utiliza una técnica antiforense llamada AFsplitter, que permite el borrado y la protección seguros de los datos.

LUKS con LVM

La gestión de volúmenes lógicos se puede utilizar junto con LUKS.

LVM en LUKS
Cuando LVM se utiliza en un contenedor LUKS desbloqueado, todas las particiones subyacentes (que son volúmenes lógicos LVM) se pueden encriptar con una sola llave. Esto es similar a dividir un contenedor LUKS en múltiples particiones. La estructura LVM no es visible hasta que el disco se descifra.
LUKS en LVM
Cuando LUKS se utiliza para encriptar volúmenes lógicos LVM, un volumen cifrado puede abarcar varios dispositivos. El grupo de volumen LVM subyacente es visible sin descifrar los volúmenes cifrados.

Cifrado completo de disco

Debian-Installer muestra una opción para la partición automatizada con LVM en LUKS

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 contra la manipulación o lectura por parte de terceros no autorizados.

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#El problema de la clave de arranque).

En los sistemas Linux móviles, postmarketOS ha desarrollado osk-sdl para permitir que un sistema con disco encriptado completo se desbloquee mediante una pantalla táctil.

Para los sistemas que ejecutan systemd, se puede utilizar el componente systemd-homed para cifrar directorios de inicio individuales.

Apoyo al sistema operativo

La implementación de referencia para LUKS funciona 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. (Anteriormente, esto era posible con LibreCrypt, que actualmente tiene agujeros de seguridad fundamentales y que sucedió a FreeOTFE, anteriormente DoxBox).

DragonFly BSD es compatible con LUKS.

Soporte de instalación

Varias distribuciones de Linux permiten cifrar el dispositivo raíz al instalar el sistema operativo. Entre estos instaladores se incluyen Calamares, Ubiquity, Debian-Installer y otros.

Formato en disco

Los encabezados LUKS son compatibles con versiones anteriores; las versiones más nuevas de LUKS pueden leer encabezados de versiones anteriores.

LUKS1

LUKS1 Header
OffsetTipo de datosDescripción
000000Hexchar[6]Número mágico {'L', 'U', 'K', 'S', 0xBA, 0xBE }
006006Hexuint16_tVersión LUKS (0x0001 para LUKS1)
008008Hexchar[32]Algoritmo Cipher (por ejemplo, "dos peces", "aes")
040028Hexchar[32]Modo Cipher (por ejemplo, "cbc-essiv:sha256")
072048Hexchar[32]Función de hash crioptográfica (por ejemplo "sha1", "ripemd160")
104068Hexuint32_toffset de carga (posición de datos cifrados) en 512 offsets de byte
10806CHexuint32_tNúmero de bytes clave
112070Hexchar[20]PBKDF2 master key checksum
132084Hexchar[32]PBKDF2 parámetro de sal clave principal
1640A4Hexuint32_tPBKDF2 master key iterations (Default: 10)
1680A8Hexchar[40]UUID de la partición (por ejemplo, "504c9fa7-d080-4acf-a829-73227b48fb89")
2080D0Hex(48 Bytes)Keyslot 1
...
544220Hex(48 Bytes)Keyslot 8
592 Bytes total
Formato de cada keylot
OffsetTipo de datosDescripción
00uint32_tEstado de keylot: Active=0x00AC71F3; Disabled=0x0000DEAD
04uint32_tParámetro de iteración PBKDF2
08char[32]Parámetro de sal PBKDF2
40uint32_tSector de inicio de clave
44uint32_tNúmero de rayas antiforenses (por defecto: 4000)
48 Bytes total

LUKS2

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. Inmediatamente 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 que contienen metadatos adicionales.

El formato binario de las ranuras de clave luks2 normales es en su mayoría 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.

Ejemplos

Cryptsetup es la implementación de referencia de la interfaz LUKS.

Para cifrar un dispositivo con la ruta /dev/sda1:

# cryptsetup luks Formato /dev/sda1

Para desbloquear un dispositivo cifrado, donde name es el nombre del dispositivo asignado:

# cryptsetup abierto /dev/sda1 Nombre

Re-encriptación

Se puede volver a cifrar un contenedor LUKS con la herramienta cryptsetup o con una herramienta heredada llamada cryptsetup-reencrypt. Estas herramientas también se pueden utilizar para agregar cifrado a un sistema de archivos no cifrado existente o eliminar el cifrado de un dispositivo de bloque.

Ambos métodos tienen una sintaxis similar:

# cryptsetup reencriptado /dev/sda1
# cryptsetup-reencrypt /dev/sda1

Véase también

  • Comparación del software de encriptación de disco

Referencias

  1. ^ Fruhwirth, Clemens (2018-01-20). "LUKS On-Disk Format Specification Version 1.2.3" (PDF). Retrieved 2021-09-23.
  2. ^ "Encrypting drives using LUKS". Fedora Docs. Retrieved 6 de mayo 2022.
  3. ^ a b c "Capítulo 12. Encrypting block devices using LUKS". Portal de clientes de Red Hat.
  4. ^ "Cómo cifrar disco duro (partición) usando LUKS en Linux". 27 febrero 2019.
  5. ^ "Cómo cifrar sus datos con la dm-crypt". Linode22 de noviembre de 2022.
  6. ^ Bossi, Simone; Visconti, Andrea (2015). "Lo que los usuarios deben saber sobre cifrado completo de disco basado en LUKS" (PDF). {{cite journal}}: Cite journal requires |journal= (Ayuda)
  7. ^ "Sisted-cryptenroll - ArchWiki". wiki.archlinux.org. Retrieved 2023-11-22.
  8. ^ "Cómo encriptar un contenedor LUKS usando una tarjeta inteligente o token". 20 de abril de 2014.
  9. ^ "Cómo LUKS trabaja con Full Disk Encryption en Linux". 25 septiembre 2021.
  10. ^ a b c "on-disk-format-luks2.pdf" (PDF)7 de marzo de 2024.
  11. ^ a b cryptsetup(8) – Linux Administración y Privileged Commands Manual
  12. ^ "Breaking LUKS Encryption". eForensics21 de agosto de 2020.
  13. ^ "AFsplitter".
  14. ^ a b c "dm-crypt/Encrypting an entire system". Retrieved 6 de mayo 2022.
  15. ^ "Arch with LVM on LUKS".
  16. ^ "LUKS on LVM: encrypted logical volumes and secure backups". 12 de septiembre de 2014.
  17. ^ "Home Directories". sistematizado.
  18. ^ "Servicing the Windows Subsystem for Linux (WSL) 2 Linux Kernel". Blogs de Microsoft Developer16 de abril de 2021.
  19. ^ "LibreCrypt". GitHub27 de julio de 2022.
  20. ^ "La ley en el conductor permite la escalada de privilegios. Comentario buscado · Edición #38 · t-d-k/LibreCrypt". GitHub30 de septiembre de 2015.
  21. ^ "Driver permite escribir a dispositivos arbitrarios · Edición #39 · t-d-k/LibreCrypt". GitHub7 de octubre de 2015.
  22. ^ "La lista de características principales de DragónFly". Retrieved 6 de mayo 2022.
  23. ^ Michael Larabel (8 de mayo de 2016). "Calamares Installer agrega soporte de encriptación LUKS". Phoronix.
  24. ^ "Cómo cifrar tu disco duro en Ubuntu". Hacer Tech más fácil13 de enero de 2017.
  25. ^ "PartmanCrypto". Debian. Retrieved 6 de mayo 2022.
  26. ^ a b "LUKS On-Disk Format Specification" (PDF).
  27. ^ "CRYPTSETUP-REENCRYPT(8) Man page". man7.org.
  • Sitio oficial
  • Preguntas frecuentes (FAQ)
  • LibreCrypt: Implementación para Windows
  • Especificación LUKS1
  • Especificación LUKS2
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save