비밀번호 자동화 cryptsetup-luksAddKey를 사용하는 방법은 무엇입니까?

비밀번호 자동화 cryptsetup-luksAddKey를 사용하는 방법은 무엇입니까?

컨텍스트: 부팅 시 표시되는 비밀번호를 USB 동글에 저장된 키 파일로 바꿨습니다.내 질문에는 다음 단계가 포함됩니다 # cryptsetup luksAddKey /path/to/mykeyfile.

내가 생성한 추가 키는 다음과 같이 생성되었습니다 dd if=/dev/urandom of=mykeyfile bs=512 count=4.

**내 목표는 bash에서 실행하는 것입니다(작동합니다...).나가암호 프롬프트가 표시되고 마지막으로 프롬프트가 0이 됩니다. ** 내 질문:

  • 비슷한 일을 할 수 있나요 cryptsetup luksAddKey -passphrase "Hello, my name is Jolly Roger" /path/to/mykeyfile?
  • 아니면 적어도 스크립트 호출에 매개변수로 비밀번호를 전달할 수 있나요?# sh myscript.sh -passphrase "Jolly..."

이는 SSH에 존재합니다 sshpass.

/etc/crypttab보안 참고 사항: 비밀번호는 키 파일로 대체되므로 스크립트에 비밀번호를 쓰는 것에 전혀 신경 쓰지 않습니다 . 또한 기밀 내부 구성원도 스크립트를 사용할 수 있습니다. 이것은 비공개입니다.

답변1

키에 개행 문자가 포함되어 있지 않으면 간단히 파이프로 연결할 수 있습니다.

# cryptsetup luksFormat foobar.img originalkey

WARNING!
========
This will overwrite data on foobar.img irrevocably.

Are you sure? (Type uppercase yes): YES

# cryptsetup luksAddKey foobar.img newkey < originalkey

불행하게도 cryptsetup키 파일을 처리하는 데는 여러 가지 모드가 있으며 개행 문자 등은 해당 모드에 따라 다르게 처리됩니다. 특수 문자 키의 경우 파이프가 작동하지 않습니다.

# cryptsetup luksAddKey foobar.img newkey < originalkey
No key available with this passphrase.

이 경우 keyfile 옵션이 필요합니다:

# cryptsetup luksAddKey --key-file=originalkey foobar.img newkey

또는 여전히 파이프를 사용하고 싶다면,

# cryptsetup luksAddKey --key-file=- foobar.img newkey < originalkey

혼란스럽죠? 512자 이하의 ASCII 전용 키를 사용하고 인쇄할 수 없는 문자를 포함하지 않는 경우 모호성을 피할 수 있으므로 핀치로 수동으로 입력할 수 있습니다.

가능하다면 이와 같은 일은 피해야 합니다 --password=xyz. 이 정보는 공개되며 프로세스 목록, 쉘 기록 및 기타 장소에 귀하의 비밀번호가 공개될 수 있습니다. 항상 적절하게 제한된 읽기 권한이 있는 파이프나 파일을 사용하십시오.

답변2

귀하의 질문에 대답하려면 stdin다음을 수행하십시오.

zenity --password | cryptsetup luksAddKey /dev/mydevice /path/to/my/keyfile

자세한 내용을 보려면 --key-file파일을 장치 잠금 해제 키로 지정할 수 있습니다. --key-file=-을 사용하여 표준 입력의 정보를 사용할 수 있습니다. 하지만 이 파일은 키 파일이어야 합니다. 귀하의 비밀번호가 포함된 파일이 아닙니다.

예:

cat /tmp/fileContainingPassword | cryptsetup luksAddKey /dev/mydevice /path/to/my/new/keyfile

그리고

cat /path/to/keyfile | cryptsetup luksAddKey --key-file=- /dev/mydevice /path/to/my/new/keyfile

은 다르다. 첫 번째는 장치의 잠금을 해제하기 위해 암호를 읽습니다 stdin.
두 번째는 장치 잠금을 해제하기 위해 키 파일을 읽습니다 stdin.

cryptsetup은 키 파일과 비밀번호를 다르게 처리합니다.

기타 정보: 이 --key-file옵션은 장치 잠금을 해제하고 새 키를 추가하기 위해 장치에 할당된 키 파일만 읽습니다. 새 키를 할당하려면 파일만 가리킬 수 있습니다. -읽기 옵션이 없습니다 stdin. 파일 시스템에 아무 것도 남기고 싶지 않지만 프롬프트에 아무 것도 입력하지 않은 경우(잠금 해제 비밀번호나 새 비밀번호 모두) 명명된 파이프를 사용해야 합니다.

mkfifo /tmp/mytmpkey
# Here we put the process in the background with &,
# otherwise, it would block until
# cryptsetup read the value from /tmp/mytmpkey
dd if=/dev/urandom of=/tmp/mytmpkey bs=512 count=4 & 
cryptsetup luksAddKey --key-file /path/to/unlockKey /tmp/mytmpkey
rm /tmp/mytmpkey 

관련 정보