È possibile crittografare un disco rigido con un file chiave anziché una password?


14

Esaminare la crittografia del disco rigido. la soluzione per andare sembra essere dm-crypt con LUKS usando una password. Lavoro con più dischi rigidi indipendenti montati in un pool di dischi per la lettura. In questo caso, devo digitare una password più volte.

C'è un modo per crittografare i dischi rigidi con un file chiave, magari metterlo su un'unità USB e collegarlo quando necessario ??

Risposte:


11

Uno dei modi migliori per farlo è utilizzare una smart card con una chiave crittografica su di essa per sbloccare le chiavi per i dispositivi a blocchi crittografati. Dovrai solo inserire la passphrase (chiamata "PIN" dagli strumenti ma è davvero una passphrase) una volta, dopodiché verrà memorizzata nella cache. Ciò ha l'ulteriore vantaggio di proteggere i dati crittografati con qualcosa che hai (la smart card stessa, dalla quale non è possibile estrarre la chiave privata) e qualcosa che conosci (la passphrase).

Formatta il tuo in /etc/crypttabquesto modo:

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

In Debian e derivati, initramfs-tools noterà lo script e copierà tutti gli strumenti e i demoni necessari per accedere automaticamente alla smart card in initramfs.

Informazioni sulla configurazione della smart card e sulla creazione (e crittografia) delle chiavi sono disponibili in /usr/share/doc/cryptsetup/README.opensc.gz.

A tale scopo, è possibile utilizzare uno Yubikey 4 o Yubikey NEO .

Note di implementazione : questa funzione ha bordi irregolari e apparentemente non funziona immediatamente, quindi YMMV. L'ultima volta che l'ho raggiunto con successo, ho dovuto aggiungere i seguenti hack:

  • Disabilita systemdperché tenta in modo disastroso di assumere l'intero processo di configurazione dei dispositivi crittografati, /etc/crypttabma non sa nulla di ciò keyscriptche porta a un grande GUASTO. Fortunatamente, in Debian, puoi ancora rinunciare systemd.
  • Installa questo script fixer-top come /etc/initramfs-tools/hooks/yubipinperché la funzione integrata non ha installato abbastanza supporto per rendere Yubikey utilizzabile da initramfs. Potrebbe essere necessario modificarlo.

    #!/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"
    
  • Installa un altro script /etc/initramfs-tools/scripts/local-bottom/killpcscdper ripulire:

    #!/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
Un ottimo incentivo per usare smart card e complimenti per raggiungere questo obiettivo, ma direi che un metodo specifico per la distribuzione che prevede la modifica del sistema init e script di hacking di terze parti inseriti in directory di sistema con percorsi illeggibili non può essere considerato una risposta a come per utilizzare la domanda dei file passkey. Sottolinea l'incredibile pasticcio di questi software, comunque.
dbanet,

@dbanet, sono pienamente d'accordo e spero che arrivi qualcun altro e aggiunga una risposta che descriva come farlo in un altro modo più semplice. Quindi l'OP può scegliere il loro preferito.
Celada,

dbanet e @Celada, esattamente i miei pensieri. Questo è troppo complicato e anche se riesco a farlo, è proprietario, il che significa che un altro fornitore avrebbe un altro metodo. :(
Nithin,

3

È possibile semplicemente archiviare la password luks in un file.

Lo uso sul mio computer di casa; Il file system di root vive su un normale volume luks che sblocco con la mia passphrase all'avvio. Un'unità aggiuntiva contiene un volume luks con una password generata.

Questo volume aggiuntivo è sbloccato da un file di password che risiede nel file system radice crittografato. Viene automaticamente sbloccato durante l'avvio se il file system di root è sbloccato.

Il mio /etc/crypttabassomiglia a questo:

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

Il terzo campo è il file di chiavi, noneper il filesystem di root, ma /etc/crypt-data.keyper il filesystem di dati. /etc/crypt-data.keycontiene la password luks:

Tm90IHJlYWxseSBteSBwYXNzd29yZC4K

Nota, una nuova riga o qualsiasi altro spazio bianco verrà preso come parte della password! Fare attenzione a generare questo file senza trascinare newline. Inoltre, assicurati che disponga di autorizzazioni rigorose:

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

Dovresti essere in grado di duplicare questo approccio per più volumi (con password distinte o una password condivisa, a tua scelta).


puoi anche menzionare come configurare LUKS per utilizzare il file di chiavi anziché la password?
Nithin,

@Nithin Il file di chiavi è il terzo campo nel mio esempio /etc/crypttab. Ho aggiunto un po 'di testo in più per renderlo più chiaro.
marcelm,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.