비밀번호를 모르고 LUKS 파일 시스템에서 비밀번호 변경

비밀번호를 모르고 LUKS 파일 시스템에서 비밀번호 변경

암호화된 드라이브로 한동안 실행되고 있는 Debian Wheezy 서버가 있습니다. /dev/sda5암호화된 비밀번호 파일이 손상되어 암호화된 드라이브( )의 비밀번호가 손실되었습니다.

이 서버를 재부팅하고 싶지만 물론 해당 비밀번호가 필요합니다. 드라이브는 분명히 복호화된 상태인데, 이전 비밀번호를 모르고 비밀번호를 변경할 수 있는 방법이 있나요?

cryptsetup luksChangeKey /dev/sda5볼륨의 비밀번호가 필요합니다.

물론 rsync모든 것을 끄고 재구축할 수도 있지만 그런 일은 피하고 싶습니다. 기억( )을 뒤져보았지만 #cat /dev/mem | less찾을 수 없었습니다(아주 좋은 일이네요!).

답변1

예, 볼륨이 해독되는 동안 마스터 키에 액세스하면 됩니다.

새 암호를 추가하는 빠르고 더러운 방법:

device=/dev/sda5
volume_name=foo
cryptsetup luksAddKey $device --master-key-file <(dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p)

device그리고 volume_name적절하게 설정해야 합니다.
volume_name에 표시되는 암호 해독된 볼륨의 이름입니다 /dev/mapper.


설명:

LUKS 볼륨은 마스터 키로 데이터를 암호화합니다. 추가하는 각 암호는 해당 암호로 암호화된 마스터 키의 복사본을 저장하기만 하면 됩니다. 따라서 마스터 키가 있으면 새 키 슬롯에 사용하기만 하면 됩니다.

위의 명령을 분해해 보겠습니다.

$ dmsetup table --showkeys $volume_name

이는 적극적으로 해독된 볼륨에 대한 많은 정보를 덤프합니다. 출력은 다음과 같습니다.

0 200704 crypt aes-xts-plain64 53bb7da1f26e2a032cc9e70d6162980440bd69bb31cb64d2a4012362eeaad0ac 0 7:2 4096

필드 #5는 마스터 키입니다.

 

$ dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p

이진 데이터이므로 출력을 표시하지는 않지만 볼륨의 마스터 키를 가져온 다음 나중에 필요한 원시 이진 데이터로 변환합니다.

 

$ cryptsetup luksAddKey $device --master-key-file <(...)

이는 cryptsetup이 볼륨에 새 키를 추가하도록 지시하는 것입니다. 일반적으로 이 작업에는 기존 키가 필요하지만 --master-key-file대신 마스터 키를 사용하고 싶다고 알리는 데 사용됩니다.
is <(...)쉘 명령 대체 및 리디렉션입니다. 기본적으로 내부의 모든 것을 실행하고 출력을 파이프로 보낸 다음 를 <(...)해당 파이프의 경로로 대체합니다.

 

따라서 전체 명령은 여러 작업을 압축하는 하나의 라이너일 뿐입니다.

관련 정보