나는 똑같은 일을하지만, 여러 가지 이유로 완전히 맞춤형 Initramfs을 사용했기 때문에 대답이 만족스럽지 않을까 두려워 합니다.
대신 GnuPG
에 포함되어야하는 별도의 바이너리 인 initramfs에 (그리고의 경우 GnuPG-2
다소 복잡 하나,), 단순히 이미 무엇을 사용했다. 그리고 그것은 분명히 dm-crypt/LUKS
입니다.
따라서가 있다고 가정합니다 keyfile
. 임의의 데이터를 갖는 것이 바람직하다.
# dd if=/dev/urandom of=keyfile count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000189802 s, 2.7 MB/s
LUKS로 암호화를 추가하십시오 (선택한 암호 설정을 자유롭게 추가하십시오).
# truncate -s 2M keyfile.luks
# cryptsetup luksFormat keyfile --header keyfile.luks
WARNING!
========
This will overwrite data on keyfile.luks irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase: bananas
Verify passphrase: bananas
이제 키 파일 (512 바이트)과 keyfile.luks (2MB, 어떤 이유로 cryptsetup이 192k LUKS 헤더를 작성해야 함)가 있습니다. Initramfs는 어쨌든 압축되므로 너무 나쁘지는 않습니다 (여전히 작습니다 GnuPG
).
이제 키 파일을 해독 할 수 있습니다 :
# cryptsetup luksOpen keyfile --header keyfile.luks lukskey
Enter passphrase for keyfile: bananas
그리고에 512 바이트의 랜덤 데이터가 /dev/mapper/lukskey
있습니다. (변경하려는 경우 파일에 쓸 수 있으므로 파일을 0으로 일찍 초기화 할 수 있습니다.)
# blockdev --getsize64 /dev/mapper/lukskey
512
Initramfs 에서는 init
실제 LUKS 볼륨을 열 수 있습니다 (키를 먼저 추가했다고 가정).
cryptsetup --key-file=/dev/mapper/lukskey luksOpen /dev/yourdisk luksyourdisk
cryptsetup luksClose lukskey # clean up
이러한 접근 방식은 GnuPG를 완전히 불필요한 것으로 만들며, 키의 암호, 선택한 암호 등의 모든 LUKS 이점을 얻습니다. 여러 번 재 시도하는 멋진 (대부분 규칙적인) 비밀번호 프롬프트는 말할 것도 없습니다.
/usr/share/doc/cryptsetup/README.gnupg
. 외부 미디어의 키 파일을 사용하도록 시간을 변경하려고합니다.