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 luksErase
para 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!]