Como posso extrair o valor de hash de um dispositivo LUKS?

1

Para dispositivos LUKS, sei que os hashes são armazenados de alguma forma no cabeçalho da partição (não sei realmente o que isso significa). Mas não sei como imprimir o valor de hash nesse caso.

Por exemplo, em um sistema unix padrão, os hashes de senha do usuário são armazenados em /etc/shadow . Se eu quiser ver um hash de uma senha, posso simplesmente abrir esse arquivo e vê-lo.

Então, como posso extrair o valor de hash de um dispositivo LUKS?

    
por student 15.11.2013 / 22:25

2 respostas

4

Se for sobre informações genéricas sobre o cabeçalho LUKS, tente luksDump .

# cryptsetup luksDump /dev/loop0
LUKS header information for /dev/loop0

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha1
Payload offset: 4096
MK bits:        256
MK digest:      67 77 17 e9 43 cf b2 e1 f3 a0 e2 0b 7a a9 fa a1 cf d8 e0 76 
MK salt:        f1 6a 09 51 55 e8 af d2 11 b2 73 1c cc ae b5 15 
                9e e9 dc 84 a5 22 aa b1 b3 0c 7c db 23 59 9a 14 
MK iterations:  77625
UUID:           ec59d9ad-39f1-4d5c-af9e-b35f34847561

Key Slot 0: ENABLED
    Iterations:             311434
    Salt:                   ed 69 d7 9d 7a 39 1a 23 3f 38 64 15 3f 38 dd 5f 
                            90 1e ea 9f 5b 9f c3 59 f3 18 49 2f 9a 3f 4e c6 
    Key material offset:    8
    AF stripes:             4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

Se você estiver procurando pela chave real, quando você luksOpen ela, dmsetup mostrará.

# dmsetup table --showkeys
luksthing: 0 209711104 crypt aes-xts-plain64 c2349e71e00186c784a1d83917778fcaacb87382ea508aa41f6324f1e2f056eb 0 7:0 4096

Isso não é tanto um hash quanto a chave real para abrir o dispositivo. Se você tiver isso, a senha do LUKS não é mais necessária:

# cryptsetup luksClose luksthing
# echo 0 209711104 crypt aes-xts-plain64 c2349e71e00186c784a1d83917778fcaacb87382ea508aa41f6324f1e2f056eb 0 7:0 4096 \
| dmsetup create luksthing
# file -s -L /dev/mapper/luksthing
/dev/mapper/luksthing: Linux rev 1.0 ext2 filesystem data, UUID=34fadafe-31cf-467d-84c0-c2d50bbcfcde (large files)

É por isso que você precisa reinstalar / criptografar novamente se o seu sistema já estiver comprometido. Eles têm suas chaves de criptografia, independentemente da senha do LUKS.

    
por 15.11.2013 / 22:39
0

Não é possível extrair o valor de hash porque não está lá .

Quando um usuário efetua login, o sistema operacional precisa ter uma cópia de referência de sua senha para comparar com a senha que o usuário digita. Isso é o que é armazenado em /etc/shadow . Se a senha digitada for idêntica à senha de referência, a autenticação será bem-sucedida. Para dificultar a recuperação de senha, o sistema não armazena a senha, mas um hash dela (um hash lento e salgado para fazer tentativas de adivinhar a senha com mais força).

A criptografia funciona de maneira diferente. O objetivo é proteger contra um invasor que tenha acesso ao armazenamento, portanto, não deve ser possível extrair a chave de criptografia do que está armazenado no dispositivo sozinho. Portanto, a chave não é armazenada no dispositivo, mas é construída a partir de informações armazenadas no dispositivo combinadas com informações fornecidas pelo usuário. Normalmente, a chave é gerada a partir de um sal armazenado no dispositivo combinado com uma senha fornecida pelo usuário. Novamente, para desacelerar as tentativas de força bruta, o processo para combinar esses valores deve ser lento, e o processo usa um valor por dispositivo (o salt) além da senha do usuário para que o uso da mesma senha não leve para a mesma chave. O que você tem no dispositivo é basicamente apenas um sal, para ser combinado com a senha para gerar a chave.

    
por 18.11.2013 / 01:39

Tags