Аппаратное шифрование SSD Samsung 850 Evo

Один из лучших способов сделать это - использовать смарт-карту с криптографическим ключом на ней, чтобы разблокировать ключи для ваших зашифрованных блочных устройств. Вам нужно будет только один раз ввести кодовую фразу (называемую инструментами «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 .

Вы можете использовать Yubikey 4 или Yubikey NEO для этой цели.

Замечания по реализации : Эта функция имеет шероховатости и, по-видимому, не работает из коробки, поэтому YMMV. В последний раз, когда мне это удалось, мне пришлось добавить следующие хаки:

  • Отключить systemd , потому что он катастрофически пытается взять на себя весь процесс настройки зашифрованных устройств из / etc / crypttab , но он ничего не знает о keycript , что приводит к большой FAIL. К счастью, в Debian вы все еще можете отказаться от systemd .
  • Установите этот верхний скрипт исправления как / etc / initramfs-tools / hooks / yubipin , потому что встроенная функция не установила достаточно поддержки, чтобы Yubikey можно было использовать из initramfs. Возможно, вам придется отрегулировать это.

     #! / Bin / sh 
     
    PREREQ = cryptroot 
     
    prereqs () 
     {
    echo "$ PREREQ "
    } 
     
    case $ 1 in 
    prereqs) 
    prereqs 
    exit 0 
     ;; {{1 }} esac 
     
     # / scripts / local-top / cryptopensc вызывает pcscd с неправильным путем 
    ln -s ../usr/sbin/pcscd $ {DESTDIR} / sbin / pcscd 
    mkdir -p "$ {DESTDIR} / usr / lib / x86_64-linux-gnu" 
     # opensc-tool требует это динамически, copy_exec не знает, что 
    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 "
     # без этого pcscd прерывается с ошибкой pthread_cancel 
    cp -pL /lib/x86_64-linux-gnu/libgcc_s.so.1 "$ {DESTDIR} /lib/x86_64-linux-gnu/libgcc_s.so.1" 
     # это копируется как висящая символическая ссылка, исправьте это 
    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 "
     # p cscd это необходимо, чтобы открыть программу чтения, как только она ее обнаружит 
    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 {1 }} 
    set -e 
     
    PREREQ = cryptopensc 
     
    prereqs () 
     {
    echo "$ PREREQ "
    } 
     
    case $ 1 in 
    prereqs) 
    prereqs 
    exit 0 
     ;; {{ 1}} esac 
     
     # потому что cryptopensc не делает это должным образом 
    killall pcscd 
     

6
22.08.2015, 22:03
0 ответов

Теги

Похожие вопросы