
我有一個 luks 加密分割區,受密碼和金鑰檔案保護。密鑰檔案用於日常訪問,密碼位於密封信封中以備緊急情況使用。五月過去了,我不小心粉碎了金鑰文件,所以我使用信封中的密碼恢復了。現在我想知道,我有兩個活動密鑰槽,但我不知道哪個包含無用的密鑰檔案密碼,哪個包含我的緊急密碼。顯然,如果我刪除了錯誤的一個,我將丟失磁碟機上的所有資料。
#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
答案1
正如您所發現的,您可以使用cryptsetup luksDump
來查看哪些鑰匙槽有鑰匙。
您可以使用以下命令檢查特定插槽的密碼
cryptsetup luksOpen --test-passphrase --key-slot 0 /dev/sda2 && echo correct
如果您為密鑰槽 0 輸入正確的密碼,則此操作會成功,否則會失敗(包括密碼對於其他某個密鑰槽而言是否正確)。
如果您忘記了其中一個密碼,那麼您只能透過消除來找到它所在的位置,而如果您忘記了其中兩個密碼,則無法區分哪個是哪個(否則密碼雜湊將被破壞)。
要刪除您忘記的密碼,您可以安全地運行cryptsetup luksKillSlot /dev/sda2 0
並輸入您記住的密碼。要擦除密鑰槽,cryptsetup
需要不同密鑰槽的密碼,至少當它不以批次模式運行時(即 no--batch-mode
或--key-file=-
等效選項)。
答案2
一種更簡單的方法(現在?)是使用帶有選項的命令--verbose
,但不指定--key-slot
選項:
# cryptsetup --verbose open --test-passphrase /dev/sda2
Enter passphrase for /dev/sda2:
Key slot 4 unlocked.
它會自動為您檢查正確的插槽,而無需您循環尋找合適的插槽:)