Cabeçalho LUKS - 30kB faltando misteriosamente

Cabeçalho LUKS - 30kB faltando misteriosamente

Eu tenho um disco contendo (apenas) um volume criptografado LUKS. Isso foi criado em uma unidade vazia sem tabela de partição usando cryptsetup v.1.6.1. Quando desbloqueado, posso verificar o tamanho do volume descriptografado, compará-lo com o disco inteiro e ver que a diferença é de exatamente 2 MB. Por outro lado, quando faço backup do cabeçalho, usando:

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

Recebo um arquivo com 30 KB menor que 2 MB. Usando dd para despejar os primeiros 2 MB do disco e comparando-o com o cabeçalho do backup, vejo que faltam 30 KB no final e contém todos os 0's. Estranhamente, tenho backups de vários (outros) cabeçalhos LUKS usando cryptsetup 1.4.1 e 1.4.3, e todos eles têm exatamente 2 MB. Isto é consistente comseção 6.2 do FAQ do cryptsetup, que indica que o tamanho do cabeçalho deve ser de 2 MB.

Alguém poderia me ajudar a entender o que são esses 30 KB? (Gostaria de substituir o cabeçalho por dados aleatórios, pois o coloquei em um dispositivo separado e quero ter certeza de que sei o que estou fazendo.)

Também como uma questão mais geral, existe uma maneira mais fácil/automatizada, talvez usando a saída de luksDump, de saber exatamente onde o cabeçalho está localizado em um disco? (Deslocamento e tamanho.) Eu li o FAQ do cryptsetup, mas o resultado certamente não desaparece.

E existe uma maneira melhor de substituir o cabeçalho do que usar dd?

cryptsetup luksHeaderRestore <file_with_random_data>

não funciona, porque o cryptsetup faz algumas verificações idiotas para ver se algum cabeçalho já presente corresponde ao tamanho e deslocamento da chave mestra.

Responder1

Acontece que 30k é espaço não utilizado, mas os dados do cabeçalho foram alinhados a 1MB. Todos os 2 MB foram incluídos ao fazer backup com versões anteriores do cryptsetup, mas versões posteriores o deixam de fora.

Usando a saída payloadOffset de cryptsetup luksDump(vários setores de 512B), é possível ver o deslocamento onde o volume criptografado começa; para que você possa limpar manualmente até lá. Ou, desde o cryptsetup 1.6.4, você pode usar cryptsetup luksErasepara substituir todos os keylots ativos. O cabeçalho visível restante com metadados são os primeiros 4 KB do disco, portanto, teriam que ser apagados manualmente.

[Obrigado a Milan, um dos desenvolvedores do cryptsetup, no cryptlab!]

informação relacionada