암호 대신 키 파일로 하드 디스크를 암호화 할 수 있습니까?


14

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

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

답변:


11

이를 수행하는 가장 좋은 방법 중 하나는 암호화 키가있는 스마트 카드를 사용하여 암호화 된 블록 장치의 키를 잠금 해제하는 것입니다. 비밀번호 문구 (도구에서 "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
    

1
그것을 달성하기 위해 스마트 카드와 kudos를 사용하는 것은 매우 좋은 인센티브이지만 읽을 수없는 경로로 시스템 디렉토리에 입력 된 init 시스템 및 타사 해킹 스크립트를 변경하는 배포 관련 방법은 방법에 대한 답변으로 간주 될 수 없습니다 암호 키 파일 질문을 사용합니다. 이 소프트웨어가 가진 놀라운 혼란을 강조합니다.
dbanet

@ dbanet, 나는 전적으로 동의하며 다른 누군가가 와서 더 간단한 방법으로 이것을 수행하는 방법을 설명하는 답변을 추가하기를 바랍니다. 그런 다음 OP는 자신이 좋아하는 것을 선택할 수 있습니다.
Celada

dbanet과 @Celada, 정확히 내 생각. 이것은 너무 복잡하며 독점적 인 방법으로 다른 벤더가 다른 방법을 사용할 수 있음을 의미합니다. :(
Nithin

3

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

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


암호 대신 키 파일을 사용하도록 LUKS를 구성하는 방법도 언급 할 수 있습니까?
Nithin

@Nithin 키 파일은 예제에서 세 번째 필드입니다 /etc/crypttab. 더 명확하게하기 위해 약간의 텍스트를 추가했습니다.
marcelm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.