Determinar em qual slot luks uma senha está

Determinar em qual slot luks uma senha está

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 luksDumppara 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 0e 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 --verboseopçã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 :)

informação relacionada