Sabit diski parola yerine anahtar dosyasıyla şifrelemek mümkün mü?


14

Sabit disk şifrelemesine bakıyorum. çözüme gitmek bir şifre kullanarak LUKS ile dm-crypt gibi görünüyor. Okuma için bir disk havuzuna monte edilmiş birden fazla bağımsız sabit diskle çalışıyorum. Bu durumda, birden çok kez bir parola yazmam gerekiyor.

Sabit diskleri bir anahtar dosyasıyla şifrelememin bir yolu var mı, belki de bir USB sürücüsüne koyun ve gerektiğinde takın.

Yanıtlar:


11

Bunu yapmanın en iyi yollarından biri, şifreli blok cihazlarınızın anahtarlarının kilidini açmak için üzerinde kripto anahtarı olan bir akıllı kart kullanmaktır. Parolayı yalnızca bir kez girmeniz gerekir (araçlar tarafından "PIN" olarak adlandırılır, ancak gerçekten bir paroladır), daha sonra önbelleğe alınır. Bu, şifrelenmiş verileri sahip olduğunuz bir şeyle (özel anahtarın çıkarılamadığı akıllı kartın kendisi) ve bildiğiniz bir şeyle (parola) korumanın ek avantajına sahiptir.

Şeklinizi şu şekilde biçimlendirin /etc/crypttab:

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

Debian ve türevlerinde, initramfs-tools anahtar kodunu fark edecek ve akıllı karta initramflere otomatik olarak erişmek için gerekli tüm araç ve cinleri kopyalayacaktır.

Akıllı kartı ayarlama ve anahtarları oluşturma (ve şifreleme) hakkında bilgi bulunur /usr/share/doc/cryptsetup/README.opensc.gz.

Bunun için bir Yubikey 4 veya Yubikey NEO kullanabilirsiniz .

Uygulama notları : Bu özelliğin pürüzlü kenarları vardır ve görünüşe göre kutunun dışında çalışmaz, bu yüzden YMMV. En son başarıyla gerçekleştirdiğimde, aşağıdaki saldırıları eklemek zorunda kaldım:

  • Devre dışı bırak, systemdçünkü şifreli cihazların kurulum sürecini felaketle devralmaya çalışır, /etc/crypttabancak keyscripthangisinin büyük bir BAŞARISIZlığa yol açacağı hakkında hiçbir şey bilmez . Neyse ki, Debian'da hala vazgeçebilirsiniz systemd.
  • /etc/initramfs-tools/hooks/yubipinYerleşik özellik Yubikey'i initramfs'den kullanılabilir hale getirmek için yeterince destek yüklemediğinden bu fixer-üst komut dosyasını yükleyin. Bunu ayarlamanız gerekebilir.

    #!/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/killpcscdTemizlemek için başka bir komut dosyası yükleyin :

    #!/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
Bunu başarmak için akıllı kartları ve kudosları kullanmak için çok güzel bir teşvik, ancak init sistemini değiştirmeyi içeren, dağıtıma özgü bir yöntem ve okunamayan yollarla sistem dizinlerine aktarılan üçüncü taraf hack komut dosyalarını içeren bir yöntem olduğunu söyleyebilirim. şifre dosyaları sorusunu kullanmak için. Bu yazılımın inanılmaz karmaşasını vurgular tho.
dbanet

@dbanet, tamamen katılıyorum ve umarım bir başkası gelir ve bunu daha basit bir şekilde nasıl yapacağınızı açıklayan bir cevap ekler. Sonra OP onların favori seçebilirsiniz.
Celada

dbanet ve @Celada, tam olarak düşüncelerim. Bu çok karmaşıktır ve bunu yapmayı başarabilsem bile, bu, başka bir satıcının başka bir yöntemi olacağı anlamına gelir. :(
Nithin

3

Luks şifresini bir dosyada saklamak mümkündür.

Bunu ev bilgisayarımda kullanıyorum; Kök dosya sistemi, açılışta parolamla kilidini açtığım düzenli bir luks biriminde yaşıyor. Ek bir sürücü, oluşturulan bir parola ile bir luks birimi içerir.

Bu ek birimin kilidi, şifrelenmiş kök dosya sisteminde yaşayan bir parola dosyası ile açılır. Kök dosya sisteminin kilidi açılırsa, önyükleme sırasında otomatik olarak açılır.

Benim /etc/crypttabşöyle görünüyor:

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

Üçüncü alan, nonekök dosya sistemi için, ancak /etc/crypt-data.keyveri dosya sistemi için anahtar dosyasıdır . /etc/crypt-data.keyluks şifresini içerir:

Tm90IHJlYWxseSBteSBwYXNzd29yZC4K

Unutmayın, şifrenin bir parçası olarak bir yeni satır veya başka bir beyaz alan alınacaktır! Yeni dosyayı takip etmeden bu dosyayı oluşturmaya özen gösterin. Ayrıca, katı izinlere sahip olduğundan emin olun:

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

Bu yaklaşımı birden fazla birim için çoğaltabilmeniz gerekir (farklı şifreler veya bir paylaşılan şifreyle seçiminiz).


LUKS'un parola yerine anahtar dosyasını kullanacak şekilde nasıl yapılandırıldığından da bahsedebilir misiniz?
Nithin

@Nithin Anahtar dosya, örneğimdeki üçüncü alandır /etc/crypttab. Bunu daha net hale getirmek için biraz fazladan metin ekledim.
marcelm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.