如何提取 LUKS 设备的哈希值?

如何提取 LUKS 设备的哈希值?

对于 LUKS 设备,我知道哈希值以某种方式存储在分区标头中(我真的不知道这意味着什么)。但我不知道在这种情况下如何打印哈希值。

例如,在标准 UNIX 系统中,用户密码哈希值存储在/etc/shadow.如果我想查看密码的哈希值,我可以打开该文件并查看它。

那么,如何提取LUKS设备的哈希值呢?

答案1

如果它是关于 LUKS 标头的通用信息,请尝试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

如果您正在寻找实际的密钥,当您打开它时,dmsetup将会显示它。

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

这与其说是哈希值,不如说是打开设备的实际密钥。如果您有此密码,则不再需要 LUKS 密码:

# 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)

这就是为什么如果您的系统受到威胁,您必须​​重新安装/重新加密。无论您的 LUKS 密码是什么,他们都有您的加密密钥。

答案2

您无法提取哈希值,因为它不在那里

当用户登录时,操作系统需要有其密码的参考副本,以便与用户输入的密码进行比较。这就是存储在 中的内容/etc/shadow。如果输入的密码与参考密码相同,则认证成功。为了使密码恢复变得困难,系统不存储密码,而是存储密码的哈希值(一种缓慢的加盐哈希值,使暴力尝试猜测密码变得更加困难)。

加密的工作方式有所不同。目的是防止有权访问存储的攻击者,因此不能仅从设备上存储的内容中提取加密密钥。因此,密钥不存储在设备上,而是根据存储在设备上的信息与用户提供的信息相结合来构造。通常,密钥是根据设备上存储的盐与用户提供的密码结合生成的。同样,为了减慢暴力尝试,组合这些值的过程必须很慢,并且除了用户密码之外,该过程还使用每个设备的值(盐),这样使用相同的密码就不会导致到同一个键。您在设备上拥有的基本上只是一个盐,与密码结合生成密钥。

相关内容