Cabeçalho de LUKS - 30kB misteriosamente ausente

1

Eu tenho um disco contendo (apenas) um volume criptografado LUKS. Isso foi criado em uma unidade sem tabela de partições usando o 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 é exatamente 2MB. Quando eu voltar o cabeçalho, por outro lado, usando:

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

Eu recebo um arquivo que é 30kB menor que 2MB. Usando dd para despejar os primeiros 2MB do disco e compará-lo ao cabeçalho do backup, vejo que o 30KB está ausente no final e contém todos os 0s. Estranhamente, eu tenho backups de vários (outros) cabeçalhos LUKS usando o cryptsetup 1.4.1 e 1.4.3, e eles são todos exatamente 2MB. Isso é consistente com a seção 6.2 da FAQ do cryptsetup , que diz o cabeçalho o tamanho deve ser 2MB.

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

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

E existe uma maneira melhor de substituir o cabeçalho do que usar o 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 ao offset da chave mestra.

    
por Diagon 12.10.2015 / 13:29

1 resposta

2

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

Usando a saída payloadOffset de cryptsetup luksDump (um número de 512B setores), é possível ver o deslocamento onde o volume criptografado começa; então você pode limpar manualmente até lá. Ou, desde cryptsetup 1.6.4, você pode usar cryptsetup luksErase para sobrescrever todos os keylots ativos. O cabeçalho visível restante com os metadados é o primeiro 4KB do disco, pelo que teria de ser limpo manualmente.

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

    
por 08.01.2016 / 23:14

Tags