Você deve ter usado um comando errado em algum lugar ... cryptsetup
não cria todos os cabeçalhos LUKS em todo o lugar ... ele só faz o que você diz e geralmente pede confirmação antes de fazer isso.
Exemplo:
# truncate -s 8M luksheader luksdevice
# cryptsetup luksFormat --header luksheader luksdevice
WARNING!
========
This will overwrite data on luksheader irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
# file -s luks*
luksdevice: data
luksheader: LUKS encrypted file, ver 1 [aes, xts-plain64, sha256] UUID: …
Como você pode ver, não há cabeçalho LUKS no luksdevice depois. Se há um, então já estava lá antes.
Você também pode apenas luksFormat
do dispositivo / arquivo externo diretamente sem nunca especificar o "dispositivo criptografado" (que realmente importa apenas em luksOpen
).
Exemplo simplificado:
# cryptsetup luksFormat luksheader
Isso é quase equivalente ao comando mais complicado acima, a única diferença está no Payload offset
que você pode ver em luksDump
. Se o cabeçalho foi criado como cabeçalho externo em primeiro lugar, esse deslocamento deve ser 0
, caso contrário, é algo como 4096
(2 MiB) por aí.
Qualquer cabeçalho LUKS funciona como um cabeçalho externo, se você desejar, e deixar o Payload offset
intact tem suas vantagens. Se você decidir alterar sua configuração, basta colocar o cabeçalho externo de volta no dispositivo original (ou vice-versa, alternar para o cabeçalho externo de um dispositivo existente).