luks에 대해 cryptsetup이 열렸습니다: --key-file 매개변수의 잘못된 처리

luks에 대해 cryptsetup이 열렸습니다: --key-file 매개변수의 잘못된 처리

관련 질문은 다음과 같습니다.luksOpen은 --key-file 인수가 제공되지 않는 한 암호 해독을 위해 키 파일을 사용하지 않습니다.

그러나 Ubuntu bionic에서는 cryptsetup 2.0.2다음과 같은 문제가 발생합니다.

파일에 포함된 비밀번호를 사용하여 Luks 암호화 장치를 열 때좋은 결과직접 전화:

cat mypass.txt | sudo cryptsetup open --type luks /dev/sda1 enc-store

--key-file=-문서화된 인수를 사용해 보십시오 .동일한 동작이 발생해야 합니다.

cat mypass.txt | sudo cryptsetup open --type luks --key-file=- /dev/sda1 enc-store

지연된 메시지만 생성합니다.

이 비밀번호에 사용할 수 있는 키가 없습니다.

이는 위 메시지를 세 번 생성하는 cryptdisks_start enc-store이 옵션을 사용하는 스크립트를 사용하려고 할 때 특히 문제가 됩니다.--key-file=-

이것은 삶을 덜 즐겁게 만듭니다.

여기서 뭔가 빠졌나요?

-감사해요!

답변1

에 설명된 대로 이 두 명령 사이에는 차이점이 있습니다.man cryptsetup:

--key-file, -d name
파일에서 비밀번호를 읽습니다.

주어진 이름이 "-"이면 표준 입력에서 비밀번호를 읽습니다.이 경우 읽기는 개행 문자에서 멈추지 않습니다.

echo즉, makefile을 사용하거나 복사/붙여넣으면 vi끝에 개행 문자가 포함될 가능성이 높습니다. 일반 표준 입력(옵션 없음)으로 사용되면 --key-file마지막 줄 바꿈을 무시하지만 인수로 사용되면 --key-file동일한 표준 입력( )이더라도--key-file=- 비밀번호에 이 줄 바꿈을 포함합니다. 새 비밀번호가 되는 것은 유효하지 않습니다.

이를 확인하려면:

cat mypass.txt | tr -d '\r\n' | sudo cryptsetup open --type luks --key-file=- /dev/sda1 enc-store

예상대로 작동해야 합니다(CR도 제거하는 경우를 대비해).

이것이 원인이라면 다음 줄 바꿈을 제거하세요.

mv -i mypass.txt mypass.old && tr -d '\r\n' < mypass.old > mypass.txt

어쨌든, 아마도 당신이 해야 할 일은 순전히 난수로 새 비밀번호를 생성하고 이를 안전한 파일에 넣은 다음 별도의 LUKS 슬롯에 포함시키는 것입니다.

관련 정보