비밀번호 대신 키 파일로 하드 디스크를 암호화할 수 있나요?

비밀번호 대신 키 파일로 하드 디스크를 암호화할 수 있나요?

하드디스크 암호화에 대해 알아봅니다. 솔루션으로 이동하는 것은 비밀번호를 사용하여 LUKS를 사용하는 dm-crypt인 것 같습니다. 나는 읽기를 위해 디스크 풀에 마운트된 여러 개의 독립 하드 디스크를 사용하여 작업합니다. 이 경우 비밀번호를 여러 번 입력해야 합니다.

키 파일로 하드 디스크를 암호화할 수 있는 방법이 있습니까? 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암호화된 장치를 설정하는 전체 프로세스를 비참하게 인계받으려고 시도 하지만 어떤 것이 큰 FAIL로 이어지는지 /etc/crypttab전혀 모르기 때문에 비활성화합니다 . keyscript다행히 데비안에서는 여전히 systemd.
  • /etc/initramfs-tools/hooks/yubipin내장 기능이 initramfs에서 Yubikey를 사용할 수 있을 만큼 충분한 지원을 설치하지 않았기 때문에 이 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
    

답변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.keyluks 비밀번호가 포함되어 있습니다:

Tm90IHJlYWxseSBteSBwYXNzd29yZC4K

줄 바꿈이나 기타 공백은 비밀번호의 일부로 간주됩니다! 줄 바꿈 없이 이 파일을 생성하도록 주의하세요. 또한 엄격한 권한이 있는지 확인하세요.

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

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

관련 정보