
Eu tenho uma partição criptografada com luks que foi protegida por uma senha e um arquivo de chave. O arquivo da chave era para acesso de rotina e a senha estava em um envelope lacrado para emergências. Maio meses se passaram e eu acidentalmente destruí o arquivo da chave, então me recuperei usando a senha do envelope. Agora eu quero saber, tenho dois slots de chave ativos, mas não sei qual contém a frase secreta do arquivo de chave inútil e qual contém minha senha de emergência. Obviamente, se eu remover o errado, perderei todos os dados da unidade.
#cryptsetup luksDump /dev/sda2
LUKS header information for /dev/sda2
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha256
Payload offset: 4096
MK bits: 256
MK digest: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
MK salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
MK iterations: 371000
UUID: 28c39f66-dcc3-4488-bd54-11ba239f7e68
Key Slot 0: ENABLED
Iterations: 2968115
Salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
Key material offset: 8
AF stripes: 4000
Key Slot 1: ENABLED
Iterations: 2968115
Salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
Key material offset: 264
AF stripes: 4000
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
Responder1
Como você descobriu, você pode usar cryptsetup luksDump
para ver quais slots de chave possuem chaves.
Você pode verificar a senha de um slot específico com
cryptsetup luksOpen --test-passphrase --key-slot 0 /dev/sda2 && echo correct
Isso será bem-sucedido se você inserir a senha correta para o slot de chave 0 e falhar caso contrário (inclusive se a senha estiver correta para algum outro slot de chave).
Se você esqueceu uma das senhas, só poderá descobrir em qual slot ela está por eliminação, e se você esqueceu duas das senhas, não há como saber qual é qual (caso contrário, o hash da senha seria quebrado).
Para remover a senha que você esqueceu, você pode executar com segurança cryptsetup luksKillSlot /dev/sda2 0
e inserir a senha que você lembra. Para limpar um slot de chave, cryptsetup
é necessária a senha de um slot de chave diferente, pelo menos quando não estiver sendo executado no modo em lote (ou seja, no --batch-mode
, --key-file=-
ou opção equivalente).
Responder2
Uma forma mais simples (agora?) é usar o comando com a --verbose
opção mas sem especificar aquela --key-slot
:
# cryptsetup --verbose open --test-passphrase /dev/sda2
Enter passphrase for /dev/sda2:
Key slot 4 unlocked.
Ele verificará automaticamente o slot certo para você, sem que você precise ficar procurando o slot certo :)