LUKS는 비밀번호와 키 파일을 모두 요구할 수 있나요?

LUKS는 비밀번호와 키 파일을 모두 요구할 수 있나요?

내 목표는 잠재적인 컨설턴트가 시스템의 올바른 비밀번호를 알고 있더라도 긴급 상황에서 키 파일이 포함된 미디어를 쉽게 파괴하고 시스템을 부팅할 수 없도록 만드는 것입니다. 이 키 파일을 안전한 곳에 보관했다가 긴급 상황이 발생한 후에 복원하겠습니다. 명령을 사용하여 키 파일을 추가하려고 시도했지만 # cryptsetup luksAddKey /dev/<device>원하는 결과를 얻지 못했습니다. cryptsetup에서 키 파일과 비밀번호를 요구하고 제공된 경우 시스템을 부팅하지 않기를 원합니다. cryptsetup에서 이를 어떻게 달성할 수 있나요?

답변1

당신은 만들 수 있습니다탁월한LUKS 헤더: LUKS 헤더 메타데이터, 즉분리이 데이터 이전이 아닌 LUKS로 보호된 데이터에서. USB 키와 같은 외부 장치에 연결하기만 하면 됩니다. 외부 장치가 손상된 경우(사용 가능한 백업이 없는 경우) 키웨이 비밀번호를 알고 있더라도 데이터를 복구할 방법이 없습니다.

~에서럭스 확장:

분리된 헤더를 지정하기 위해 이 --header매개변수는 모든 LUKS 명령에서 사용될 수 있으며 항상 위치 매개변수보다 우선합니다.

명백한 치명적인 오류를 방지하려면 이 장치(예: : )를 직접 참조하는 대신 항상 일부 감지된 메타데이터(아래 참조)를 사용해야 합니다 /dev/sdb(데이터 부분은 동일할 수 있음). 예를 들어, 연결 시 다음과 같이 식별되고 표시되는 USB 키가 있다고 가정합니다 ls.

lrwxrwxrwx. 1 root root  9 Feb 17 10:46 /dev/disk/by-id/usb-SomeBrand_SOMESERIAL -> ../../sdb

다음과 같이 헤더가 분리된 LUKS 파티션을 생성합니다.

cryptsetup luksFormat /dev/datadevice --header /dev/disk/by-id/usb-SomeBrand_SOMESERIAL --verify-passphrase

메타데이터(비밀번호로 보호된 마스터 키 포함)는 USB 장치에 저장됩니다. 물론 USB 플래시 드라이브의 파일 시스템을 분할하고 포맷하고 헤더를 해당 파일 시스템에 파일로 포함하도록 선택할 수 있습니다. 나는 이 예제의 종속성을 최소화하려고 노력하고 있습니다. 어떤 설치 프로그램에서도 지원하지 않을 수 있으므로 설치 중에 수동으로 이 작업을 수행해야 할 수도 있습니다.

이제 최소한 한 가지 차이점이 있습니다. 이 경우 기본적으로 데이터 앞에 더 이상 공간이 없으므로 /dev/datadeviceLUKS로 전혀 감지할 수도 없습니다. 이는 좋거나(스텔스) 나쁠 수 있습니다(자동 스크립트는 어려움을 겪게 됩니다) 잠금을 해제하기 위해 열심히 노력 중입니다.) 매개변수를 입력하여 일반적인 여백( --align-payload 4096일반적으로 cryptsetup luksDump /dev/... | grep ^Payload일반 LUKS에서 사용될 때 표시됨)을 얻은 다음 먼저 탐지 목적으로 가짜(나중에 사용되지 않음) LUKS 헤더를 생성할 수 있습니다(정말로 원하는 경우).

그런 다음 해당 정보를 다음 위치에 넣을 수 있습니다 /etc/crypttab.

myluksprotecteddata /dev/somedevice none luks,header=/dev/disk/by-id/usb-SomeBrand_SOMESERIAL

및/또는 cryptsetup 명령을 직접 사용하여 --header=/dev/disk/by-id/usb-SomeBrand_SOMESERIAL옵션을 잠금 해제(추가만 하면 됩니다)합니다.

경고: systemd와의 호환성, 특히 시작은 보장되지 않습니다.

관련 정보