비밀번호를 모르고 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마스터 키를 사용하고 싶다고 말합니다.
이것이 <(...)쉘 명령 대체 및 리디렉션입니다. 기본적으로 내부의 모든 것을 실행하고 출력을 파이프로 보낸 다음 <(...)해당 파이프의 경로로 바꿉니다.

 

따라서 전체 명령은 여러 작업을 압축한 하나의 문장입니다.

관련 정보