Apakah mungkin mengenkripsi hard disk dengan file kunci, bukan kata sandi?


14

Melihat ke enkripsi hard disk. solusi menuju ke tampaknya dm-crypt dengan LUKS menggunakan kata sandi. Saya bekerja dengan banyak hard disk independen yang dipasang ke kolam disk untuk membaca. Dalam hal ini, saya harus mengetikkan kata sandi beberapa kali.

Apakah ada cara bagi saya untuk mengenkripsi hard disk dengan file kunci, mungkin meletakkannya di USB drive dan cukup tancapkan ketika diperlukan ??

Jawaban:


11

Salah satu cara terbaik untuk melakukan ini adalah dengan menggunakan kartu pintar dengan kunci kripto untuk membuka kunci tombol untuk perangkat blok terenkripsi Anda. Anda hanya perlu memasukkan frasa sandi (disebut "PIN" oleh alat tapi itu benar-benar frasa sandi) sekali, setelah itu akan di-cache. Ini memiliki keuntungan tambahan untuk melindungi data yang dienkripsi dengan sesuatu yang Anda miliki (kartu pintar itu sendiri, di mana kunci pribadi tidak dapat diekstraksi) dan sesuatu yang Anda ketahui (frasa sandi).

Format /etc/crypttabseperti ini:

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

Dalam Debian dan turunannya, alat-alat initramfs akan memperhatikan naskah kunci dan menyalin semua alat dan daemon yang diperlukan untuk mengakses kartu pintar ke initramfs secara otomatis.

Informasi tentang pengaturan kartu pintar dan membuat (dan mengenkripsi) kunci ditemukan di /usr/share/doc/cryptsetup/README.opensc.gz.

Anda dapat menggunakan NEO Yubikey 4 atau Yubikey antara lain untuk tujuan ini.

Catatan implementasi : Fitur ini memiliki tepi yang kasar dan tampaknya tidak berfungsi di luar kotak, jadi YMMV. Terakhir kali saya berhasil mencapainya, saya harus menambahkan retasan berikut:

  • Nonaktifkan systemdkarena bencana mencoba mengambil alih seluruh proses pengaturan perangkat terenkripsi dari /etc/crypttabtetapi tidak tahu apa-apa tentang keyscriptyang mengarah ke GAGAL besar. Untungnya, di Debian, Anda masih dapat memilih keluar systemd.
  • Instal skrip fixer-upper ini /etc/initramfs-tools/hooks/yubipinkarena fitur bawaan tidak menginstal cukup dukungan untuk membuat Yubikey dapat digunakan dari initramfs. Anda mungkin perlu menyesuaikan ini.

    #!/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"
    
  • Instal skrip lain /etc/initramfs-tools/scripts/local-bottom/killpcscduntuk membersihkan:

    #!/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
Insentif yang sangat bagus untuk menggunakan kartu pintar dan pujian untuk mencapai itu, tetapi saya akan mengatakan metode distribusi khusus yang melibatkan perubahan sistem init dan skrip hack pihak ketiga yang dimasukkan ke direktori sistem dengan jalur yang tidak dapat dibaca tidak dapat dianggap sebagai jawaban untuk bagaimana untuk menggunakan pertanyaan file passkey. Menyoroti kekacauan luar biasa dari perangkat lunak ini.
dbanet

@banban, saya sepenuhnya setuju dan saya berharap bahwa orang lain akan datang dan menambahkan jawaban yang menjelaskan bagaimana melakukan ini dengan cara lain yang lebih sederhana. Maka OP dapat memilih favorit mereka.
Celada

dbanet dan @Celada, persis menurut saya. Ini terlalu rumit dan bahkan jika saya berhasil melakukan ini, miliknya, berarti vendor lain akan memiliki metode lain. :(
Nithin

3

Dimungkinkan untuk hanya menyimpan kata sandi luks dalam file.

Saya menggunakan ini di komputer rumah saya; Sistem file root hidup dengan volume luks biasa yang saya buka dengan frasa sandi saya saat boot. Drive tambahan berisi volume luks dengan kata sandi yang dihasilkan.

Volume tambahan ini dibuka oleh file kata sandi yang hidup pada sistem file root terenkripsi. Secara otomatis tidak terkunci selama boot jika sistem file root tidak terkunci.

/etc/crypttabPenampilan saya seperti ini:

crypt-root UUID=c5a2cf25-0aae-457e-874f-fca7ea3d5742 none luks
crypt-data UUID=96d79323-246d-49e0-9149-ec3a4cfc1c1e /etc/crypt-data.key luks

Bidang ketiga adalah keyfile, noneuntuk sistem file root, tetapi /etc/crypt-data.keyuntuk sistem file data. /etc/crypt-data.keyberisi kata sandi luks:

Tm90IHJlYWxseSBteSBwYXNzd29yZC4K

Catatan, baris baru atau spasi putih lainnya akan diambil sebagai bagian dari kata sandi! Berhati-hatilah untuk menghasilkan file ini tanpa tertinggal baris baru. Juga, pastikan ia memiliki izin ketat:

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

Anda harus dapat menggandakan pendekatan ini untuk beberapa volume (baik dengan kata sandi berbeda atau satu kata sandi bersama, pilihan Anda).


dapatkah Anda juga menyebutkan cara mengkonfigurasi LUKS untuk menggunakan keyfile daripada kata sandi?
Nithin

@ Nithin Keyfile adalah bidang ketiga dalam contoh saya /etc/crypttab. Saya menambahkan sedikit teks tambahan untuk membuatnya lebih jelas.
marcelm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.