Debian 기반 GNU/Linux에서 분리된 LUKS 헤더

Debian 기반 GNU/Linux에서 분리된 LUKS 헤더

LUKS 암호화 디스크의 분리 헤더를 설정하는 방법에 대한 정보는 Stack Exchange에 분산되어 있습니다. Google을 사용하여 웹을 검색하여 제한된 정보를 찾았습니다. 내가 찾은 최고의 정보 중 일부는 질문 하단에 링크되어 있습니다. 그 중 일부는 나 같은 초보자에게도 도움이 됩니다. 그러나 일부는 불완전해 보이기 때문에 이 글을 쓰게 된 동기가 있습니다. 다음 문제를 해결하여 문제를 완료하고 제대로 작동할 수 있는지 확인하세요.

나는 독자가 lsblk헤더 드라이브를 분리하여 sdb다른 드라이브에 저장 해야 한다는 것을 발견했다고 가정합니다 sda.


방법 1: 헤더를 파티션으로 만들기

  1. 헤더의 크기를 확인하고 파티션을 올바른 크기로 설정하십시오. 다음 명령은 많은 정보를 제공합니다. offset아래 숫자 옆에 숫자를 적어주세요Data segments:

    $ cryptsetup luksDump /dev/sdb
    ...
    Data segments:
      0: crypt
        offset: 16777216 [bytes]
        length: (whole device)
        cipher: aes-xts-plain64
        sector: 512 [bytes]
    ...
    

    실행 fdisk(사용할 수 없는 경우 설치) $ fdisk /dev/sda.

    명령을 내리고 nEnter를 누르십시오. 기본 파티션 번호를 사용하여 기본 파티션을 만듭니다.엑스. 기본 첫 번째 섹터 값을 선택하고 기록해 둡니다.중간 사이즈). 마지막 섹터를 묻는 메시지가 표시됩니다.케이. 올바른 번호 찾기케이입력(섹터 크기를 512바이트로 가정), 계산케이 = 중간 사이즈 + 오프셋/512;어디에서오프셋luksDump위의 명령을 사용하여 찾은 숫자입니다 cryptsetup. luks-header와 정확히 동일한 크기의 파티션을 생성합니다. 마지막으로 w. 이제 luks-header를 내보내고 ~/some/file/path/header.img생성한 파티션에 씁니다.

    $ cryptsetup luksHeaderBackup /dev/sdb --header-backup-file ~/some/file/path/header.img
    $ dd if=~/some/file/path/header.img of=/dev/sda엑스개수 =케이bs=512 상태=진행
    

    어디엑스그리고케이위에서 선택한 번호입니다 fdisk. 이제 헤더가 저장되어 있으며 재미를 위해 프로그램을 열고(필요한 경우 설치) gparted가 작은 LUKS 암호화 파티션이라고 생각하는 것을 볼 수 있습니다! 표시되는 UUID는 의 UUID와 동일합니다. 따라서 새 UUID를 생성해야 합니다(Google에서 "uuid 생성기" 검색). 새로 생성된 UUID가 다음과 같다고 가정합니다.sdaXgpartedsdaXlsblk -f/dev/sda1/dev/sdb1새 UID 생성;그러면 바꿔보세요

    $ cryptsetup luksUUID /dev/sda1 --uuid새 UID 생성
  2. 이제 이 정보를 에 입력해야 합니다 /etc/crypttab. 텍스트 편집기를 사용하여 파일을 열고 sdb네 번째 열에 옵션을 추가합니다.header=/dev/sdaX

    header=/dev/disk/by-uuid/UUID를 설정하여 이를 더 잘 수행하는 방법에 대한 Frostschutz의 답변을 참조하세요. 반드시 수정하고 답변에 투표하세요.

    그런 다음 $ update-initramfs -u -k all. 오류가 없다면 괜찮다고 생각합니다.


방법 2: 헤더를 파일 시스템의 파일로 만들기

문서 및 기타 소스에서는 헤더를 파일 시스템에 복사하고 거기에서 참조하는 것이 가능해야 함을 나타냅니다 sda. 파티션의 파일 시스템이 다음과 같다고 가정합니다 sda1.

UUID=###########-############-####-########

와 관련하여 sda1헤더는 /some/path/header.img.then 에 있습니다.비밀번호 테이블(5)네 번째 열에 /etc/crypttab내가 써야 한다고 나와 있어

header=/some/path/header.img:UUID=###########-############-####-########

그런데 이렇게 하면 update-initramfs헤더를 찾을 수 없다고 불평합니다.

Q: 그것을 보고 당신이 쓰려고 하는 내용을 인용해 주실 수 있나요? DEBIAN을 새로 설치했는데 안타깝게도 제대로 작동하지 않습니다.


마지막에는 를 사용하여 기존 헤더에서 정보를 제거할 수 있습니다 cryptsetup luksErase /dev/sdb. 암호화된 파티션에 대한 정보에 액세스하기 위해 cryptsetup을 적용하려면 이제 --header /dev/sdax- 옵션을 전달해야 합니다. 나는 모든 것이 정확하고 상세하게 작성되었는지 확인하기 위해 최선을 다했습니다. 하지만 버그가 있을 수 있습니다. 자유롭게 편집하시기 바랍니다. 물론, 데이터가 손실되거나 무언가가 손상된 경우에는 보증이 무효화됩니다.

출처/추가 읽기:

답변1

헤더 분리는 특별한 사용 사례입니다. 소수의 사람들이 사용하기 때문에 일부 장소에서는 지원이 부족할 수도 있습니다. 그래서 나는 그것들을 사용하지 않는 것이 좋습니다. 또한 파티션 테이블이 없는 드라이브를 사용하지 않는 것이 좋습니다. 이 설정에는 함정이 너무 많습니다.


header=UUID=x작동하지 않으면 시도해 보십시오 header=/dev/disk/by-uuid/x.

의 경우 header=/some/path/file:UUID=x경로는 지정된 파일 시스템을 기준으로 합니다. 그래서 당신이 이면 mount UUID=x /mnt/somewhere그것은 을 찾을 것입니다 /mnt/somewhere/some/path/file.

정보 luksErase(또는 luksRemoveKey 또는 luksKillSlot을 통해 모든 키 제거). 남은 키 홈이 없는 LUKS 헤더는 더 이상 열 수 없습니다. (분리된 헤더를 사용해야 합니다) 하지만 암호화된 장치를 식별할 수 있도록 UUID를 제공합니다.

분리된 헤더도 파티션에 있고 동일한 UUID를 갖는 경우 충돌이 발생합니다. UUID로 헤더와 암호화 장치를 식별할 수 있으려면 luksUUID를 사용하여 이들 중 하나를 변경해야 합니다. LUKS2의 경우 라벨을 설정할 수도 있습니다.

또는 GPT 파티션을 사용하는 경우 PARTUUID 또는 PARTLABEL을 사용하여 식별할 수 있습니다.

답변2

initramfs-tools나 Debian의 다른 구성을 사용하여 후크나 매개변수를 구성할 필요가 없나요?

Arch Linux에서는 LUKS 디스크를 해독하고 LVM에 파일 시스템을 마운트하도록 initramfs를 구성하려면 mkinitcpio 구성 후크 스크립트가 필요합니다. 다른 커널 매개변수도 /etc/default/grub의 grub 구성을 통해 전달됩니다(이 부트로더를 사용하는 경우).

*아치 리눅스 참조:

https://wiki.archlinux.org/title/Dm-crypt/Specialties#Encrypted_system_using_a_detached_LUKS_header

관련 정보