Encabezado LUKS: 30 kB faltan misteriosamente

Encabezado LUKS: 30 kB faltan misteriosamente

Tengo un disco que contiene (solo) un volumen cifrado LUKS. Se creó en una unidad básica sin tabla de particiones usando cryptsetup v.1.6.1. Cuando lo desbloqueo, puedo verificar el tamaño del volumen descifrado, compararlo con todo el disco y ver que la diferencia es exactamente 2 MB. Por otro lado, cuando hago una copia de seguridad del encabezado, uso:

cryptsetup luksHeaderBackup /dev/sda --header-backup-file <filename>

Obtengo un archivo de 30kB menos de 2MB. Al usar dd para volcar los primeros 2 MB del disco y compararlos con el encabezado respaldado, veo que faltan 30 KB del final y contienen todos 0. Curiosamente, tengo copias de seguridad de varios (otros) encabezados LUKS usando cryptsetup 1.4.1 y 1.4.3, y todos tienen exactamente 2 MB. Esto es consistente consección 6.2 de las preguntas frecuentes sobre cryptsetup, que dice que el tamaño del encabezado debe ser de 2 MB.

¿Alguien podría ayudarme a entender qué son estos 30 KB? (Me gustaría sobrescribir el encabezado con datos aleatorios, ya que lo puse en un dispositivo separado y quiero asegurarme de saber lo que estoy haciendo).

Además, como cuestión más general, ¿existe una forma más fácil/automatizada, utilizando quizás la salida de luksDump, para saber exactamente dónde se encuentra el encabezado en un disco? (Tanto el desplazamiento como el tamaño). He leído las preguntas frecuentes sobre cryptsetup, pero el resultado ciertamente no desaparece.

Y, ¿hay una mejor manera de sobrescribir el encabezado que usar dd?

cryptsetup luksHeaderRestore <file_with_random_data>

no funciona, porque cryptsetup realiza algunas comprobaciones idiotas para ver si algún encabezado ya presente coincide en el tamaño y el desplazamiento de la clave maestra.

Respuesta1

Resulta que los 30k son espacio no utilizado, pero los datos del encabezado se han alineado a 1 MB. Los 2 MB completos se incluyeron al realizar la copia de seguridad con versiones anteriores de cryptsetup, pero las versiones posteriores los omiten.

Al utilizar la salida payloadOffset de cryptsetup luksDump(varios sectores de 512 B), es posible ver el desplazamiento donde comienza el volumen cifrado; para que puedas limpiar manualmente hasta allí. O, desde cryptsetup 1.6.4, puede usarlo cryptsetup luksErasepara sobrescribir todas las ranuras de claves activas. El encabezado visible restante con metadatos son los primeros 4 KB del disco, por lo que tendría que borrarse manualmente.

[¡Gracias a Milan, uno de los desarrolladores de cryptsetup, en cryptlab!]

información relacionada