LUKS 암호화를 제거하는 방법은 무엇입니까?

LUKS 암호화를 제거하는 방법은 무엇입니까?

다음 명령을 사용하여 홈 디렉터리에서 LUKS 암호화를 제거해 보았습니다.

cryptsetup luksRemoveKey /dev/mapper/luks-3fd5-235-26-2625-2456f-4353fgdgd

하지만 오류가 발생합니다.

장치 /dev/mapper/luks-3fd5-235-26-2625-2456f-4353fgdgd는 유효한 LUKS 장치가 아닙니다.

매우 혼란스러워서 다음을 시도했습니다.

cryptsetup status luks-3fd5-235-26-2625-2456f-4353fgdgd

그것은 말한다:

/dev/mapper/luks-3fd5-235-26-2625-2456f-4353fgdgd is active and is in use.
type: LUKS1
cipher: ...

암호화 장치가 활성화된 것으로 보이지만 유효하지 않습니다. 여기서 무엇이 잘못될 수 있나요?

답변1

2013년 답변 - 즐거운 시간에 대한 다른 답변 보기

  • 지원
  • 재포맷
  • 다시 덮다

cryptsetup luksRemoveKey암호화 키는 여러 개의 암호화 키가 있는 경우에만 삭제됩니다. 암호화는 아직 존재합니다.

페도라 모자설치 설명서섹션 C.5.3에서는 luksRemoveKey이것이 어떻게 작동하는지 설명합니다.

콘텐츠를 유지하면서 암호화를 제거하는 것은 "불가능"합니다. 이는 단지 경험에 근거한 추측일 뿐입니다. 나는 이것을 두 가지에 근거합니다.

  • LUKS 컨테이너에는 파일 시스템이나 LVM 또는어느가장 중요한 것은 단순히 암호화 계층을 제거하는 것만으로도 이해가 필요하다는 것입니다.중요성데이터가 저장된 데이터는 단순히 사용할 수 없습니다. 또한 한 가지 요구 사항은 나머지 LUKS 콘텐츠를 파괴하지 않고 LUKS 볼륨의 일부를 해독된 복사본으로 덮어쓰는 것입니다. 이것이 가능한지는 확실하지 않습니다.
  • 이를 구현하면 LUKS의 목적과 크게 동떨어진 문제가 해결될 것이며, 더 "의미 있는" 일 대신 이를 수행하는 데 시간을 소비할 사람은 거의 없을 것입니다.

답변2

키홈을 제거하는 것은 비밀번호를 잊어버리는 것과 같으며 파일 시스템을 이동하여 LUKS 장치를 교체하는 것과는 아무 관련이 없습니다.

백업, 재포맷, 복원 없이 장치에서 LUKS 암호화를 비파괴적으로 제거할 수 있습니다. cryptsetup이 기능은 2012년 출시된 버전 1.5.0부터 지원되었습니다.

LUKS 장치의 암호를 성공적으로 해독한 후 해당 장치 내의 파일 시스템을 운영 체제에서 사용할 수 있으며 직접 탑재할 수 있습니다.

경고하다:위험합니다. 먼저 모든 데이터를 백업하세요.

LUKS1의 경우:

  1. USB 플래시 드라이브에서 부팅
  2. 사용
    cryptsetup-reencrypt --decrypt <device_path>
    

LUKS2의 경우:

  1. USB 플래시 드라이브에서 부팅
  2. LUKS1 호환 매개변수를 사용하도록 모든 키홈을 변환합니다.
    cryptsetup luksChangeKey  --pbkdf pbkdf2 <device_path>
    
  3. LUKS2 장치를 LUKS1 장치로 변환하려면 다음 명령을 사용하십시오.
    cryptsetup convert --type luks1 <device_path>
    
  4. 다음을 사용하여 암호 해독을 수행합니다.
    cryptsetup-reencrypt --decrypt <device_path>
    

나는 이 두 가지를 모두 테스트했고 작동했습니다.


현재 버전은 cryptsetupLUKS2 장치의 직접 암호 해독을 지원한다고 주장합니다. 명령은

cryptsetup --reencrypt --decrypt --header HEADER_FILE <device_path>

--header이 명령은 장치가 분리된 헤더를 사용한다고 가정하기 때문에 이 매개변수가 필요합니다. 이렇게 하면 작동하고 온라인에서도 암호가 해독됩니다. 분리된 헤더(매우 일반적임)를 사용하지 않고 헤더 덤프를 제공하거나 블록 장치 자체를 값으로 전달하려고 하면 자동으로 계속 --header되고 cryptsetup완료되면 키웨이 장치 없이 LUKS2로 끝납니다. 데이터가 사라집니다.

이는 버전 2.3.3(2020) 기준이며 향후 버전에서 변경될 수 있습니다.

내 제안은 보다 안전한 경로 LUKS2->LUKS1->Decrypt를 사용하는 것입니다. 이 경로가 작업을 수행하는지 확인할 수 있습니다.

답변3

먼저, LUKS 파티션에서 비밀번호를 제거할 때 비밀번호가 있는 디스크 파티션을 지정해야 합니다. 예를 들면 다음과 같습니다.

cryptsetup luksRemoveKey /dev/sda2

LUKS 암호화 장치의 상태가 필요할 때 LUKS 이름을 그대로 인용해야 합니다.

그러나 luksRemoveKey는 비밀번호 중 하나만 제거합니다(마지막 비밀번호 아님). 영구적인 암호 해독을 원할 경우 cryptsetup-reencrypt를 사용해야 합니다.

cryptsetup-reencrypt --decrypt /dev/sda2

답변4

에 추가하다첸 그녀의 대답, Ubuntu18.04의 기본 cryptsetup패키지는 2.0.2입니다. 버그가 있습니다. Luks 형식 장치의 첫 번째 활성 키 슬롯이 0이 아닌 경우 암호 해독 명령이 종료되고 코드 1이 반환됩니다.(여기 참고)하지만 첨부된 포럼 링크의 다음 댓글에서 언급했듯이 패치되었습니다.

따라서 다음과 같이 시작해야 할 수도 있습니다.gitlab의 소스암호화 시스템과 함께 작동하도록 합니다. 버전 2.6.0부터 장치 암호 해독 명령이 다음과 같이 변경되었습니다.cryptsetup reencrypt <device-name> --decrypt

관련 정보