dm-crypt (Español)/Drive preparation (Español)

From ArchWiki

Esta traducción de dm-crypt/Drive preparation fue revisada el 2019-09-18. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Antes de cifrar una unidad, es recomendable realizar un borrado seguro del disco, sobrescribiendo toda la unidad con datos aleatorios. Para evitar ataques criptográficos o recuperación de archivos no deseados, lo ideal es que estos datos sean indistinguibles de los datos escritos posteriormente por dm-crypt. Para comprender mejor el tema vea Disk encryption (Español)#Preparar el disco.

Borrar de forma segura la unidad de disco duro

Al decidir qué método utilizar para el borrado seguro de una unidad de disco duro, recuerde que esto solo se debe realizar una vez antes de que la unidad sea utilizada como una unidad cifrada.

Advertencia: Haga copias de seguridad apropiadas de aquellos datos importantes antes de comenzar.
Nota: Cuando se trate de limpiar gran cantidad de datos, el proceso tardará varias horas o varios días en completarse.
Sugerencia:
  • El proceso de llenado de una unidad cifrada puede tomar más de un día para completarse en un disco de varios terabytes. Para no dejar la máquina inutilizable durante la operación, puede valer la pena hacerlo desde un sistema ya instalado en otra unidad, en lugar de hacerlo desde el sistema de instalación live de Arch.
  • Para discos SSD, a fin de rentabilizar la operación y minimizar los residuos de caché de la memoria flash, considere realizar un borrado de las celdas de la memoria SSD antes de seguir las instrucciones siguientes.

Métodos genéricos

Para obtener instrucciones detalladas sobre cómo borrar y preparar una unidad, consulte Securely wipe disk.

Métodos específicos de dm-crypt

Los dos métodos siguientes son específicos para dm-crypt y se mencionan porque son muy rápidos y se pueden realizar después de configurar la partición también.

Las FAQ de cryptsetup (elemento 2.19 «¿Cómo puedo limpiar un dispositivo con aleatoriedad criptográfica?») mencionan un procedimiento muy sencillo para usar en un volumen existente de dm-crypt para limpiar todo el espacio libre accesible en el bloque subyacente del dispositivo con datos aleatorios al actuar como un simple generador de números pseudoaleatorios. También se afirma que protege contra la divulgación de patrones de uso. Esto se debe a que los datos cifrados son prácticamente indistinguibles de los aleatorios.

Limpiar un disco o partición vacíos con dm-crypt

En primer lugar, cree un contenedor temporal cifrado en la partición (sdXY) o en el disco completo (sdX), que va a ser cifrado:

# cryptsetup open --type plain -d /dev/urandom /dev/<dispositivo_de_bloque> para_ser_borrado

En segundo lugar, compruebe que existe:

# lsblk
NAME                 MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                    8:0    0  1.8T  0 disk
└─para_ser_borrado   252:0    0  1.8T  0 crypt

Limpie el contenedor con ceros. Un uso de if=/dev/urandom no es necesario ya que el cifrado de encriptación se utiliza para enfarruyar.

# dd if=/dev/zero of=/dev/mapper/para_ser_borrado status=progress
dd: writing to ‘/dev/mapper/para_ser_borrado’: No space left on device
Sugerencia:
  • La utilización de dd con la opción bs=, por ejemplo bs=1M, se utiliza con frecuencia para aumentar el rendimiento del disco de la operación.
  • Para realizar una comprobación de la operación, llene de ceros la partición antes de crear el contenedor de limpieza. Después se puede usar la orden de borrado blockdev --getsize64 /dev/mapper/container para obtener el tamaño exacto del contenedor como root. Ahora se puede usar 'od' para ver como el borrado sobrescribe los sectores puestos a cero, por ejemplo od -j containersize - blocksize para ver el borrado completo hasta el final.

Finalmente, cierre el contenedor temporal:

# cryptsetup close para_ser_borrado

Al cifrar un sistema completo, el siguiente paso es #Particionar. Si acaba de cifrar una partición, continúe en Dm-crypt/Encrypting a non-root file system (Español)#Partición.

Limpiar espacio libre con dm-crypt después de la instalación

Los usuarios que no tuvieron tiempo para realizar el borrado antes de la instalación, pueden lograr un efecto similar una vez que se arranque el sistema cifrado y se monten los sistemas de archivos. Sin embargo, considere la posibilidad de que el sistema de archivos afectado haya establecido un espacio reservado, por ejemplo para el usuario root u otro mecanismo de cuota de disco, que puede limitar el borrado, incluso cuando se realiza por el usuario root: en esos casos, es posible que algunas partes del dispositivo de bloque subyacente no se escriban en absoluto.

Para ejecutar el borrado, llene temporalmente el espacio libre restante de la partición escribiendo en un archivo presente en el contenedor cifrado:

# dd if=/dev/zero of=/archivo/en/contenedor status=progress
dd: writing to ‘/archivo/en/contenedor’: No space left on device

Sincronice el caché del disco y luego elimine el archivo para reclamar el espacio libre.

# sync
# rm /archivo/en/contenedor

El proceso anterior debe repetirse para cada partición creada y su sistema de archivos de cada dispositivo de bloque. Por ejemplo, la instalación de LVM sobre LUKS, el proceso debe realizarse para cada volumen lógico.

Limpiar el encabezado LUKS

Las particiones formateadas con dm-crypt/LUKS contienen un encabezado con las opciones de cifrado y claves utilizadas, al que se remite dm-mod al abrir el dispositivo de bloque. Después del encabezado comienza la aleatoriedad real de los datos de la partición. Por lo tanto, al reinstalar en una unidad ya cifrada, o desarmar una (por ejemplo, la venta de PC, el cambio de unidades, etc.) «puede» ser suficiente limpiar el encabezado de la partición, en lugar de sobrescribir la unidad entera, que puede ser un proceso largo.

Al borrar el encabezado LUKS se borrará la clave maestra cifrada PBKDF2 (AES), las sal, y así sucesivamente.

Nota: Es importante escribir en la partición cifrada con LUKS (/dev/sda1 en este ejemplo) y no directamente a los nodos de las particiones del disco. Configuraciones con cifrado como una capa de asignación de dispositivos encima de otras, por ejemplo LVM sobre LUKS sobre RAID debería escribir en RAID, respectivamente.

En un encabezado LUKS1 con un único valor predeterminado de 256 bits, el tamaño de la clave ocupa 1024 KiB. Se aconseja también sobrescribir los primeros 4 KiB escritos por dm-crypt, de modo que se deben borrar los primeros 1028 KiB. Esto es 1052672 bytes.

Para poner a cero el encabezado, utilice:

# head -c 1052672 /dev/urandom > /dev/sdX1; sync

Para una longitud de clave de 512 bits (por ejemplo, para aes-xts-plain con clave de 512 bits) el encabezado le dedica 2 MiB. El encabezado LUKS2 será de 4 MiB si se creó con cryptsetup < 2.1 o 16 MiB si se creó con cryptsetup ≥ 2.1.

En caso de duda, basta con ser generoso y sobrescribir los primeros 20 MB o menos.

# dd if=/dev/urandom of=/dev/sdX1 bs=512 count=40960

O utilice shred. Por ejemplo, para sobrescribir los primeros 20 MiB por 20 veces:

 # shred -v -z -s 20MiB -n 20 /dev/sdX1
Nota: Con una copia de seguridad de los datos de cabecera se puede rescatar el sistema, pero el sistema de archivos estará probablemente dañado, dado que los primeros sectores cifrados habrán sido sobrescritos. Vea otras secciones sobre cómo hacer una copia de seguridad de los bloques de cabecera cruciales.

Al limpiar el encabezado con datos aleatorios, todo lo que queda en el dispositivo son datos cifrados. Una excepción a esto puede ocurrir con un disco SSD, debido a los bloques de caché utilizados por los SSD. En teoría, puede suceder que el encabezado se haya almacenado en caché durante un tiempo y que, por consiguiente, la copia puede estar disponible después de limpiar el encabezado original. Para evitar problemas de seguridad serios, debe realizarse un borrado ATA seguro del SSD (proceda consultando la página de cryptsetup FAQ 5.19).

Particionar

Esta sección solo se aplica cuando se cifra un sistema completo. Después de que se haya sobrescrito de forma segura la unidad o los discos, se tendrá que elegir adecuadamente un esquema de particionado, teniendo en cuenta los requisitos de dm-crypt y los efectos que tendrán las diversas opciones en la gestión del sistema resultante.

Es importante tener en cuenta que en casi todos los casos debe haber una partición separada para /boot que debe permanecer sin cifrar, ya que el gestor de arranque necesita acceder al directorio /boot donde se cargarán los módulos de encriptación y de initramfs necesarios para iniciar el resto del sistema (vea mkinitcpio (Español) para más detalles). Si esto plantea problemas de seguridad, vea dm-crypt (Español)/Specialties (Español)#Asegurar la partición de arranque no cifrada.

Otro factor importante a tener en cuenta es cómo se manejarán el espacio de swap y la suspensión del sistema, vea dm-crypt (Español)/Swap encryption (Español).

Particiones físicas

En el caso más simple, las capas cifradas pueden hacerse directamente sobre las particiones físicas; vea Partitioning (Español) para ver los métodos para crearlas. Al igual que en un sistema sin cifrar, será suficiente con una partición raíz, además de otra para /boot, como se indicó anteriormente. Este método permite decidir qué particiones cifrar y cuáles dejar sin cifrar, y funciona igual, independientemente del número de discos implicados. También será posible añadir o eliminar particiones en el futuro, pero el tamaño de una partición estará limitado por el tamaño del disco que lo aloja. Por último, tenga en cuenta que para abrir cada partición encriptada se necesitarán claves o frases de acceso separadas, aunque esto se puede automatizar durante el arranque usando el archivo crypttab, vea Dm-crypt (Español)/System configuration (Español)#crypttab.

Dispositivos de bloques apilados

Sin embargo, si se necesita más flexibilidad, dm-crypt puede coexistir con otros dispositivos de bloque apilados como LVM (Español) y RAID (Español). Los contenedores cifrados pueden residir por debajo o por encima de otros dispositivos de bloque apilados:

  • Si los dispositivos LVM/RAID se crean encima de la capa cifrada, será posible agregar, quitar y cambiar el tamaño de los sistemas de archivos de la misma partición cifrada libremente, y solo se necesitará una clave o frase de acceso para todos ellos. Dado que la capa cifrada reside en una partición física, no será posible, sin embargo, explotar la capacidad de LVM y RAID para abarcar varios discos.
  • Si la capa cifrada se crea en la parte superior de los dispositivos LVM/RAID, todavía será posible reorganizar los sistemas de archivos en el futuro, pero con mayor complejidad, ya que las capas de cifrado tendrán que ser ajustadas en consecuencia. Además, se requerirán frases secretas o claves separadas para abrir cada dispositivo encriptado. Esta, sin embargo, es la única opción para sistemas que necesitan sistemas de archivos cifrados que abarquen múltiples discos.

Subvolúmenes Btrfs

Las características de subvolumes integradas en el sistema de archivos Btrfs se pueden usar con dm-crypt, reemplazando completamente la necesidad de LVM si no se requieren otros sistemas de archivos. Sin embargo, tenga en cuenta que los archivos de intercambio no son soportados por brtrfs antes de Linux 5.0, por lo que es necesaria una partición de intercambio cifrada si se desea un espacio de intercambio en Linux <5.0 (por ejemplo linux-lts). Vea también Dm-crypt (Español)/Encrypting an entire system (Español)#Subvolúmenes btrfs con espacio de intercambio.

Partición de arranque (GRUB)

Véase dm-crypt (Español)/Encrypting an entire system (Español)#Cifrar partición de arranque (GRUB).