Ubuntu를 사용하여 기존 전체 디스크 암호화 장치(USB)에 대한 LUKS 헤더 분리

Ubuntu를 사용하여 기존 전체 디스크 암호화 장치(USB)에 대한 LUKS 헤더 분리

이미 USB 스틱에 파티션이 있고 컴퓨터에 LUKS 파티션이 있습니다. 이는 Ubuntu 21의 전체 디스크 암호화 체계에 해당합니다. LUKS 파티션의 헤더를 USB(해당 파티션이나 다른 파티션) /boot에 넣고 싶습니다. /boot새 파티션에) 내 USB에)

부팅 파티션(장치에 있다고 가정) cryptsetup luksHeaderBackup에 헤더( 포함)를 배치한 다음 파일을 사용하여 다음 옵션을 시도했습니다 .boot_header.luks/dev/sda3crypttabheader=

  • /boot/boot_header.luks
  • /dev/sda3/boot_header.luks
  • /dev/sda3:/boot_header.luks그리고 /boot_header.luks:/dev/sda3(물론)

uuid와 동일 /dev/sda3하고 또한 동일합니다./dev/disk/by-uuid/[uuid]

sda3그래서 문서에 따라 장치가 설치되지 않은 것 같습니다.비밀번호 테이블(제 이해가 맞다면)

선택적으로 [헤더가 포함된 파일] 경로 뒤에 ":" 및 /etc/fstab 장치 사양이 올 수 있습니다(예: "UUID=" 또는 이와 유사한 것으로 시작). 이 경우 경로는 장치 파일에 상대적입니다. 시스템은 루트입니다. 장치는 LUKS 장치 활성화 중에만 자동으로 설치됩니다.

그래서 실행하기 전에 설치 부팅 파티션을 찾아봤습니다.숨겨진 루트local-bottom그리고 사용자 정의 스크립트가 포함된 스크립트 init-bottom. 또한 추천대로여기헤더를 initramfs에 병합해 보았습니다.답변

그러나 시작 시 결과는 항상 동일합니다.

"제목" 옵션의 값이 잘못되었습니다.

나는 이것이 꽤 가능하다고 생각했다아치하지만 Ubuntu에서 (cryptroot와 같은 기존 스크립트를 수정하지 않고) 동일한 작업을 수행할 수 있는 방법이 있습니까?

답변1

댓글에서 지적했듯이@AB해결책은 파티션 내의 헤더 파일 대신 헤더가 있는 원시 파티션입니다(파일 시스템을 먼저 마운트해야 하기 때문에 번거롭습니다).

헤더(LUKS2는 ~16MB)를 파티션( /dev/sdb헤더 크기보다 큼)에 복사하는 데는 두 가지 옵션이 있습니다.

  • 첫 번째는 원본 헤더를 복사하는 것입니다 dd.

먼저 데이터의 오프셋을 찾아야 합니다(왜냐하면헤더는 항상 0에서 시작합니다.). LUKS 장치의 경우 ligne를 /dev/sda4사용 cryptsetup luksDump /dev/sda4하고 찾으십시오.오프셋이 섹션의데이터 세그먼트. 그런 다음 파일 시스템 블록 크기 찾기를 사용하십시오 stat -fc %s /dev/sda4. 마침내,dd if=/dev/sda4 of=/dev/sdb bs=<fs_block_size> count=<data_offset>

  • 두 번째는 모든 헤더 데이터를 파티션에 복사할 백업 파일로 압축하는 것입니다 /dev/sdb.

파일을 백업하면 일부 문제가 발생할 수 있으므로보안 질문암호화된 디스크에 저장되더라도 해당 파일에 대한 가상 디스크를 생성하는 것이 가장 좋습니다.

mkdir /tmp/header_backup
mount -t tmpfs -o size=512m tmpfs /tmp/header_backup
cryptsetup luksHeaderBackup /dev/sda4 --header-backup-file /tmp/header_backup/header.luks
dd if=/tmp/header_backup/header.luks of=/dev/sdb
umount /tmp/header_backup

그런 다음 해당 줄에 /etc/crypttab옵션을 추가합니다 header=/dev/sdb(예 sda4_crypt [UUID] none luks,discard,header=/dev/sdb: ).

이전 LUKS 헤더를 지우려면: cryptsetup luksErase /dev/sda4. 이렇게 하면 키홈만 지워지고 모든 메타데이터는 유지됩니다. 헤더를 완전히 지우려면(필수는 아님) 파티션에 UUID를 유지하기 위해 그 위에 다른 파일 시스템 헤더가 있어야 합니다. 하지만 저장 장치(SSD 또는 HDD)에 따라 LUKS 헤더를 완전히 삭제해도 보안 삭제가 이루어지지 않을 수 있습니다.SSD의 경우삭제된 블록은 장치가 더 많은 공간을 할당해야 할 때까지 대기열에 남아 있을 수 있습니다.

그렇지 않은 경우 헤더를 지우려면: 파일 시스템 블록 크기( <fs_block_size>) stat -fc %s /dev/sda4, LUKS 데이터 오프셋( <luks_data_offset>) cryptsetup luksDump /dev/sdb, 파티션의 UUID /dev/sda4( <uuid_sda4>)를 가져온 다음:

dd if=/dev/urandom of=/dev/sda4 bs=<fs_block_size> count=<luks_data_offset>
mkfs.ext4 fs.img
tune2fs -U <uuid_sda4> fs.img
dd if=fs.img of=/dev/sda4

파티션은 /dev/sdbLUKS와 동일한 UUID를 가지게 되는데, 이는 문제가 될 수 있습니다. LUKS 프로세스를 중단하지 않고 변경할 수 있습니다.cryptsetup luksUUID /dev/sdb --uuid $(uuidgen)

마지막으로 업데이트된 initramfsupdate-initramfs -u -k all

관련 정보