하드 드라이브 암호화를 연구하세요. 해결책은 비밀번호에 dm-crypt 및 LUKS를 사용하는 것 같습니다. 읽기를 위해 디스크 풀에 설치된 여러 개의 독립 하드 드라이브를 사용합니다. 이 경우 비밀번호를 여러 번 입력해야 합니다.
키 파일로 하드 드라이브를 암호화하거나 USB 드라이브에 저장하고 필요할 때 연결할 수 있는 방법이 있습니까?
답변1
이를 달성하는 가장 좋은 방법 중 하나는 암호화 블록 장치의 키를 잠금 해제하는 암호화 키가 있는 스마트 카드를 사용하는 것입니다. 비밀번호(도구에서는 이를 "PIN"이라고 부르지만 실제로는 비밀번호임)를 한 번만 입력하면 나중에 캐시됩니다. 이는 귀하가 가지고 있는 것(개인 키를 추출할 수 없는 스마트 카드 자체)과 알고 있는 것(비밀번호)을 사용하여 암호화된 데이터를 보호할 수 있다는 추가적인 이점을 제공합니다.
/etc/crypttab
다음과 같이 형식을 지정하세요.
mapper-name /dev/disk/raw-device /var/lib/filename-containing-encrypted-key \
luks,keyscript=/lib/cryptsetup/scripts/decrypt_opensc
Debian 및 그 파생 제품에서 initramfs-tools는 키스크립트를 확인하고 스마트 카드에 액세스하는 데 필요한 모든 도구와 데몬을 initramfs에 자동으로 복사합니다.
스마트 카드 설정 및 키 생성(및 암호화)에 대한 정보는 에서 확인할 수 있습니다 /usr/share/doc/cryptsetup/README.opensc.gz
.
당신은 그것을 사용할 수 있습니다유빅 4또는유빅 네오무엇보다도 이러한 목적을 위해.
구현 노트: 이 기능은 가장자리가 거칠고 기본적으로 작동하지 않으므로 YMMV입니다. 지난번에 성공적으로 구현했을 때 다음 트릭을 추가해야 했습니다.
systemd
암호화된 장치를 설정하는 전체 프로세스를 치명적으로 인계하려고 시도하지만/etc/crypttab
심각한 오류의 원인이 무엇인지 알 수 없기 때문에 비활성화되었습니다 .keyscript
다행히 데비안에서는 여전히 옵트아웃할 수 있습니다systemd
./etc/initramfs-tools/hooks/yubipin
내장 기능이 initramfs에서 Yubikey를 사용할 수 있도록 지원하는 기능이 충분하지 않기 때문에 이 수정 사항의 상위 스크립트가 설치됩니다 . 이를 조정해야 할 수도 있습니다.#!/bin/sh PREREQ=cryptroot prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac # /scripts/local-top/cryptopensc calls pcscd with the wrong path ln -s ../usr/sbin/pcscd ${DESTDIR}/sbin/pcscd mkdir -p "${DESTDIR}/usr/lib/x86_64-linux-gnu" # opensc-tool wants this dynamically, copy_exec doesn't know that cp -pL /usr/lib/x86_64-linux-gnu/libpcsclite.so.1 "${DESTDIR}/usr/lib/x86_64-linux-gnu/libpcsclite.so.1" mkdir -p "${DESTDIR}/lib/x86_64-linux-gnu" # without this, pcscd aborts with a pthread_cancel error cp -pL /lib/x86_64-linux-gnu/libgcc_s.so.1 "${DESTDIR}/lib/x86_64-linux-gnu/libgcc_s.so.1" # this gets copied as a dangling symlink, fix it rm "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist" cp -pL /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist" # pcscd needs this to open the reader once it has found it cp -pL /lib/x86_64-linux-gnu/libusb-1.0.so.0 "${DESTDIR}/lib/x86_64-linux-gnu/libusb-1.0.so.0"
정리할 다른 스크립트를 설치하십시오
/etc/initramfs-tools/scripts/local-bottom/killpcscd
.#!/bin/sh set -e PREREQ=cryptopensc prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac # because cryptopensc does not do it properly killall pcscd
답변2
간단히 luks 비밀번호를 파일에 저장할 수 있습니다.
나는 이것을 내 집 컴퓨터에서 사용합니다. 루트 파일 시스템은 부팅 시 비밀번호로 잠금을 해제하는 일반 luks 볼륨에 있습니다. 연결된 드라이브에는 생성된 비밀번호가 있는 luks 볼륨이 포함되어 있습니다.
연결된 볼륨은 암호화된 루트 파일 시스템에 있는 비밀번호 파일에 의해 잠금 해제됩니다. 루트 파일 시스템이 잠금 해제되면 부팅 중에 자동으로 잠금이 해제됩니다.
내 /etc/crypttab
모습은 다음과 같습니다.
crypt-root UUID=c5a2cf25-0aae-457e-874f-fca7ea3d5742 none luks
crypt-data UUID=96d79323-246d-49e0-9149-ec3a4cfc1c1e /etc/crypt-data.key luks
none
세 번째 필드는 루트 파일 시스템에는 사용되지만 /etc/crypt-data.key
데이터 파일 시스템에는 사용되지 않는 키 파일입니다 . /etc/crypt-data.key
luks 비밀번호가 포함되어 있습니다:
Tm90IHJlYWxseSBteSBwYXNzd29yZC4K
줄 바꿈이나 기타 공백은 비밀번호의 일부로 간주됩니다! 이 파일을 생성할 때 후행 줄 바꿈을 생성하지 않도록 주의하십시오. 또한 엄격한 권한이 있는지 확인하세요.
-rw------- 1 root root 59 Sep 14 23:57 /etc/crypt-data.key
이 방법을 여러 볼륨에 복제할 수 있어야 합니다(다른 비밀번호 또는 공유 비밀번호 사용).