Raspberry-Pi

LUKS用密鑰文件自動解密失敗,請幫我調試

  • December 26, 2020

我有一個 Raspberry Pi,通過 USB 連接了 Orico 機箱內的 HDD 驅動器,並帶有單獨的電源。我用以下命令加密了這個驅動器:

cryptsetup luksFormat /dev/sda

然後,我使用命令創建了密鑰文件:

dd if=/dev/random bs=32 count=1 of=/home/ubuntu/luks/luks.key

使用命令將此文件添加為第二個鍵:

cryptsetup luksAddKey /dev/sda /home/ubuntu/luks/luks.key

並將這一行添加到/etc/crypttab

vault /dev/sda none

我認為我已盡一切努力使該驅動器在系統啟動期間自動解密,但這並沒有發生。每次重啟後我都必須手動完成。困擾我的另一件事是從cryptsetup luksDump /dev/sda. 我希望兩個插槽處於“啟用”狀態,但我在輸出中看不到它:

ubuntu@ubuntu:~$ sudo cryptsetup luksDump /dev/sda
sudo: unable to resolve host ubuntu: Temporary failure in name resolution
LUKS header information
Version:        2
Epoch:          4
Metadata area:  16384 [bytes]
Keyslots area:  16744448 [bytes]
UUID:           ab24c6e5-9286-4e6d-a874-29755338afa1
Label:          (no label)
Subsystem:      (no subsystem)
Flags:          (no flags)

Data segments:
 0: crypt
   offset: 16777216 [bytes]
   length: (whole device)
   cipher: aes-xts-plain64
   sector: 512 [bytes]

Keyslots:
 0: luks2
   Key:        512 bits
   Priority:   normal
   Cipher:     aes-xts-plain64
   Cipher key: 512 bits
   PBKDF:      argon2i
   Time cost:  4
   Memory:     270573
   Threads:    4
   Salt:       b8 50 50 6c b2 54 45 ea 36 45 66 1d 61 d1 e9 94 
               87 7c 67 d3 a8 f3 3b 54 04 b6 46 7b 25 0d d2 89 
   AF stripes: 4000
   AF hash:    sha256
   Area offset:32768 [bytes]
   Area length:258048 [bytes]
   Digest ID:  0
 1: luks2
   Key:        512 bits
   Priority:   normal
   Cipher:     aes-xts-plain64
   Cipher key: 512 bits
   PBKDF:      argon2i
   Time cost:  4
   Memory:     268825
   Threads:    4
   Salt:       55 e6 be a8 55 45 61 3c 1b 6e 6d 7a b3 70 40 32 
               fc 4f 95 71 f0 13 52 c7 a1 69 cb 73 66 0b a9 6f 
   AF stripes: 4000
   AF hash:    sha256
   Area offset:290816 [bytes]
   Area length:258048 [bytes]
   Digest ID:  0
Tokens:
Digests:
 0: pbkdf2
   Hash:       sha256
   Iterations: 39527
   Salt:       62 9b 83 b6 04 f3 b0 aa 36 21 bc bf 28 aa 1d 3c 
               ad 89 8a 5c 0d 7a d2 f4 0f 6e d4 09 b2 33 0b d4 
   Digest:     45 42 fc 30 22 95 12 26 3f 78 8c 56 d7 b0 c3 d9 
               10 4e 32 99 93 3c 10 48 a3 df ab 89 77 89 14 1f 

您是否認為此問題可能與 HDD 作為 USB 驅動器連接的事實有關?如前所述,手動打開此 LUKS 卷可以正常工作。請幫我調試這個問題。

您需要在 中指定密鑰文件/etc/crypttab,如果放在none那裡,它將被解釋為“詢問密碼”。

來自man crypttab

第三個欄位指定加密密碼。如果該欄位不存在或密碼設置為“無”或“-”,則必須在系統引導期間手動輸入密碼。否則,該欄位將被解釋為包含加密密碼的文件的絕對路徑。

請注意,luksAddKey這並不意味著您正在向 LUKS 設備添加新的無密碼密鑰槽,您正在添加一個受新密碼保護的新密鑰槽,或者在您的情況下是從文件中讀取的密碼/home/ubuntu/luks/luks.key- 這不是 LUKS 使用的密鑰/dm-crypt,它只是一個“二進制密碼”,在解鎖/打開 LUKS 設備時仍然需要提供它。

將您的 crypttab 條目更改為

vault /dev/sda /home/ubuntu/luks/luks.key

應該做的伎倆。

輸出沒問題,luksDump它隨著 LUKS 版本 2 發生了變化,它不再列印該Key Slot X: ENABLED/DISABLED行(對於 LUKS 2,它仍然為 LUKS 1 列印它)。

引用自:https://unix.stackexchange.com/questions/626122