암호 대신 키 파일로 하드 디스크를 암호화 할 수 있습니까? 인 것처럼 보입니다. 읽기 위해

하드 디스크 암호화를 조사합니다. 해결책은 암호를 사용하여 LUKS로 dm-crypt 인 것처럼 보입니다. 읽기 위해 디스크 풀에 마운트 된 여러 개의 독립 하드 디스크로 작업합니다. 이 경우 비밀번호를 여러 번 입력해야합니다.

키 파일로 하드 디스크를 암호화하고 USB 드라이브에 넣고 필요할 때 연결하는 방법이 있습니까?



답변

이를 수행하는 가장 좋은 방법 중 하나는 암호화 키가있는 스마트 카드를 사용하여 암호화 된 블록 장치의 키를 잠금 해제하는 것입니다. 비밀번호 문구 (도구에서 “PIN”이라고 함)를 한 번만 입력하면 캐시됩니다. 이것은 사용자가 가지고있는 것 (개인 키를 추출 할 수없는 스마트 카드 자체)과 알 수있는 것 (암호)으로 암호화 된 데이터를 보호하는 이점이 있습니다.

다음 /etc/crypttab과 같이 형식을 지정하십시오 .

mapper-name /dev/disk/raw-device /var/lib/filename-containing-encrypted-key \
    luks,keyscript=/lib/cryptsetup/scripts/decrypt_opensc

데비안과 파생어에서 initramfs-tools는 키 스크립트를 인식하고 스마트 카드에 자동으로 액세스하는 데 필요한 모든 도구와 데몬을 자동으로 복사합니다.

스마트 카드 설정 및 키 생성 (및 암호화)에 대한 정보는에서 찾을 수 있습니다 /usr/share/doc/cryptsetup/README.opensc.gz.

이 목적 으로 Yubikey 4 또는 Yubikey NEO 를 다른 용도로 사용할 수 있습니다 .

구현 노트 :이 기능은 가장자리가 거칠고 YMMV와 같이 즉시 작동하지 않습니다. 마지막으로 성공했을 때 다음 해킹을 추가해야했습니다.

  • systemd암호화 된 장치를 설정하는 전체 프로세스를 비참하게 시도하기 때문에 비활성화 /etc/crypttab하지만 keyscript큰 실패로 이어지는 것은 무엇인지 알 수 없습니다 . 운 좋게도 데비안에서는 여전히을 선택 해제 할 수 있습니다 systemd.
  • /etc/initramfs-tools/hooks/yubipin내장 기능이 Yubikey를 initramfs에서 사용할 수 있도록 충분한 지원을 설치하지 않았으므로이 Fixer -Upper 스크립트를 설치하십시오. 이것을 조정해야 할 수도 있습니다.

    #!/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
    

답변

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.keyluks 비밀번호를 포함합니다.

Tm90IHJlYWxseSBteSBwYXNzd29yZC4K

줄 바꿈 또는 기타 공백은 암호의 일부로 사용됩니다! 줄 바꿈없이이 파일을 생성하도록주의하십시오. 또한 엄격한 권한이 있는지 확인하십시오.

-rw------- 1 root root 59 Sep 14 23:57 /etc/crypt-data.key

여러 볼륨에 대해이 접근 방식을 복제 할 수 있어야합니다 (별개의 비밀번호 또는 하나의 공유 비밀번호를 사용하여 선택).


답변