"cryptsetup luksOpen"의 데이터 손실 보안" 일시정지와 재개 사이

"cryptsetup luksOpen"의 데이터 손실 보안" 일시정지와 재개 사이

2021.12.x Arch Linux 설치에서 디스크 일시 중지 및 재개를 설정하고 있습니다. 내 질문은 복원 시 파티션 잠금을 안전하게(데이터 손실 없이) 잠금 해제하는 것에 관한 것입니다.

이것이 내 구성입니다. 부트로더는 grub 2.06이고 저는 busybox 기반 initramfs를 사용하고 있습니다. 관련 파티션은 다음과 같습니다. 저는 LVM을 사용하지 않습니다.

# partition  encrypted   mountpoint     decrypted volume name
- ---------  ---------   ----------     ---------------------
...
3 root           luks2   /              cryptroot
4 swap           luks2   [SWAP]         cryptswap
...

나는 /etc/mkinitcpio.conf이러한 후크를 구성했습니다.

HOOKS=(base udev ... openswap openroot ... resume ... filesystems fsck)

내장된 기능을 사용하지 않습니다.암호화훅. 하나의 장치(일반적으로 커널 매개변수에 지정된 루트 장치만)만 잠금 해제할 수 있지만 cryptdevice암호화된 스왑 장치도 잠금 해제해야 합니다. 따라서 저는 암호화 후크 대신 두 개의 사용자 정의 후크인 openswap과 openroot를 사용했습니다. openswap 후크는 기본적으로 실행됩니다. cryptsetup luksOpen <swap device> cryptswap 비밀번호를 묻는 메시지를 표시합니다. openroot 후크는 루트 파티션 장치에서 동일한 작업을 수행합니다 cryptsetup luksOpen <root device> cryptroot.

다음으로 내장된 이력서 후크스위칭 장치의 메이저 및 마이너 장치 번호를 쓰십시오./sys/power/resume.

printf "$devmajor:$devminor" >/sys/power/resume

이때 상황은 두 가지입니다.

사례 1: 완전 종료 후 시작하는 경우

완전히 종료한 후 컴퓨터를 시작하면 잠금 해제된 스왑 파티션에 최대 절전 모드 이미지가 없습니다. 복구할 내용이 없으므로 정상적인 부팅이 이루어집니다. 이 시점에서 루트 파티션은 openroot 후크를 통해 잠금 해제되므로 부팅이 올바르게 진행됩니다.

이 경우 보안 문제는 없습니다.

사례 2: 디스크에 정지 후 부팅하는 경우

이전에는 디스크 일시 중지를 부팅하면 루트 파티션이 잠금 해제되고 마운트된 상태가 되었으며 최대 절전 모드 이미지는 이 상태를 그대로 캡처했습니다. 이제 이 최대 절전 모드 이미지를 사용하여 커널을 복원한 후 시스템은 (이미) 잠금 해제/마운트된 루트 파티션 장치를 계속 사용합니다.

내 문제가 발생하는 곳은 다음과 같습니다.

나는 이것이 좋지 않다는 것을 안다.mount일시 중지와 재개 사이의 장치입니다. 예를 들어,kernel.org 라고: "일시중단과 재개 사이에 디스크의 어떤 부분이라도 건드리면... ...데이터에 작별을 고하세요. 내 구성에서는 이 작업이 수행되지 않습니다."

cryptsetup luksOpen일시 중지와 재개 사이에 있는 장치에도 이것이 나쁜가요? 이것이 cryptsetup luksOpen디스크를 건드리는 것(위의 Kernel.org 용어)에 해당합니까? initramfs openroot 후크는 cryptsetup luksOpen <root device> cryptroot일시 중지와 재개 사이에서 실행된다는 점을 기억하세요.

그렇다면 어떻게 대처해야 할까요?

답변1

그 자체로는 cryptsetup luksOpen순전히 읽기 전용 작업입니다. 그러나 블록 장치를 잠금 해제하는 간단한 작업은 udev 규칙과 같은 종속성을 트리거하여 자동 조립(raid 및 lvm 장치의 경우)을 트리거할 수 있으며, 이는 차례로 더 많은 블록 장치를 생성하고 더 많은 udev 규칙 등을 트리거할 수 있습니다.

따라서 올바른 순서로 후크를 실행하여 전체 난제를 피하는 것이 좋습니다.

resume후크에 스왑 파티션만 필요한 경우 (즉, 다른 스왑 장치나 스왑 파일이 관련되지 않은 경우) resume바로 뒤에, 전에 실행해야 합니다.openswapopenroot

그렇지 않으면 복구에 전혀 필요하지 않은 루트 암호화 비밀번호를 요구하여 설정에서 잘못된 보안 감각을 제공하고 결국 이력서에서 삭제됩니다.

실행을 중지하는 코드가 없으면 정지된 시스템에서는 resume후크에 대해 잘못된 비밀번호를 반복적으로 입력하더라도 후크가 성공해야 합니다 openroot. 따라서 이는 후크 순서를 변경하기 전에 이론을 테스트하는 쉬운 방법입니다.

관련 정보