
저는 루트 파티션을 암호화하고 TPM으로 키를 보호하는 것을 목표로 합니다. 결국에는 암호화 키를 TPM 레지스터 상태로 잠그고 싶습니다. Fedora Workstation 38을 설정했습니다. 설정 마법사 중에 드라이브를 암호화하는 확인란을 선택하고 복구 문구를 제공했습니다. 이는 예상대로 작동했습니다. 부팅 단계에서 LUKS 키 잠금을 해제하기 위한 암호를 입력하라는 메시지가 표시되었습니다. 아래는 의 출력입니다 lsblk -pf
.
lsblk -pf
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
/dev/sr0
/dev/zram0 [SWAP]
/dev/vda
├─/dev/vda1
├─/dev/vda2 ext4 1.0 b8d2cbbf-0f44-4487-bccf-74d9365ec383 647M 27% /boot
└─/dev/vda3 crypto_LUKS 2 08ab0fc7-5a6b-421c-be8a-d6171761a3e6
└─/dev/mapper/luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6
btrfs fedora_localhost-live 09d81602-3093-4a76-8c56-d9562197cdb9 13.2G 27% /home
다음으로 TPM을 등록했습니다.
sudo systemd-cryptenroll --tpm2-device=auto /dev/vda3
New TPM2 token enrolled as key slot 1.
이 시점에는 0 - 비밀번호와 1 - TPM이라는 두 개의 키 슬롯이 있습니다.
다음으로 다음을 업데이트했습니다 /etc/crypttab
.
luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6 UUID=08ab0fc7-5a6b-421c-be8a-d6171761a3e6 - tpm2-device=auto
다음으로 systemd를 다시 로드했습니다 systemctl daemon-reload
. 아래는 업데이트된 서비스 파일입니다.
sudo systemctl cat systemd-cryptsetup@luks\\x2d08ab0fc7\\x2d5a6b\\x2d421c\\x2dbe8a\\x2dd6171761a3e6.service
[Unit]
Description=Cryptography Setup for %I
Documentation=man:crypttab(5) man:systemd-cryptsetup-generator(8) man:[email protected](8)
SourcePath=/etc/crypttab
DefaultDependencies=no
IgnoreOnIsolate=true
After=cryptsetup-pre.target systemd-udevd-kernel.socket
Before=blockdev@dev-mapper-%i.target
Wants=blockdev@dev-mapper-%i.target
Conflicts=umount.target
Before=cryptsetup.target
BindsTo=dev-disk-by\x2duuid-08ab0fc7\x2d5a6b\x2d421c\x2dbe8a\x2dd6171761a3e6.device
After=dev-disk-by\x2duuid-08ab0fc7\x2d5a6b\x2d421c\x2dbe8a\x2dd6171761a3e6.device
Before=umount.target
[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0
KeyringMode=shared
OOMScoreAdjust=500
ExecStart=/usr/lib/systemd/systemd-cryptsetup attach 'luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6' '/dev/disk/by-uuid/08ab0fc7-5a6b-421c-be8a-d6171761a3e6' '-' 'tpm2-device=auto'
ExecStop=/usr/lib/systemd/systemd-cryptsetup detach 'luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6'
시스템을 재부팅했는데 문제가 없었습니다. 예상대로 여전히 비밀번호를 제공했습니다.
다음으로 비밀번호를 지웠습니다.
sudo systemd-cryptenroll --wipe-slot=password /dev/vda3
wiped slot 0.
재부팅하면 다음 오류가 발생합니다(스크린샷은 죄송합니다).
systemd-cryptsetup@luks.. 서비스를 검사했을 때(복구 모드로 부팅한 후) ExecStart
더 이상 TPM 매개변수가 없는 것을 발견했습니다.
ExecStart=/usr/lib/systemd/systemd-cryptsetup attach 'luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6' '/dev/disk/by-uuid/08ab0fc7-5a6b-421c-be8a-d6171761a3e6' '' ''
서비스 에서 systemctl status
다음과 같은 오류 메시지가 생성되었습니다 systemd-cryptsetup[630]; No passphrase or recovery key registered
.
`
문제를 찾았습니다. @u1686_grawity 감사합니다.
TPM 슬롯을 추가한 후 한 단계를 추가해야 했습니다 dracut -f
. 이것은 부팅 프로세스 초기에 TSS 드라이버를 로드한 것 같습니다.
답변1
문제를 찾았습니다. @u1686_grawity 감사합니다.
TPM 슬롯을 추가한 후 한 단계를 추가해야 했습니다 dracut -f
. 이것은 부팅 프로세스 초기에 TSS 드라이버를 로드한 것 같습니다.