Posso creare una nuova ext4
partizione crittografata con kernel 4.1 su Ubuntu 15.04?
Posso creare una nuova ext4
partizione crittografata con kernel 4.1 su Ubuntu 15.04?
Risposte:
Prima di tutto un disclaimer: non l'ho fatto con Ubuntu, ma su una macchina con Debian "Stretch" installato usando un kernel Linux 4.2.3 personalizzato su cui ho abilitato EXT4_FS_ENCRYPTION
.
Le istruzioni fornite da kmeaw non funzionano per me esattamente come pubblicate. Alcune cose sono state escluse (parametri e passaggi della riga di comando).
e2fsprogs
come mostrato sopraGenera il tuo sale casuale. Ho usato quanto segue per conservarlo in un "luogo sicuro":
head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
Per utilizzare la crittografia ext4 sul file system, il flag "encrypt" deve essere impostato nel superblocco. Questo non è il valore predefinito quando viene creato il file system ext4. Utilizzando l'utilità "tune2fs" da e2fsprogs 1.43 o successive, imposta l'opzione "encrypt":
sudo tune2fs -O encrypt /dev/sda4
Montare o rimontare il file system in modo che il kernel sia a conoscenza del cambiamento (forse è automatico, ma l'ho fatto solo su una partizione separata, quindi non ne sono sicuro.)
Creare una directory sul file system montata con la crittografia abilitata:
sudo mkdir -p /secret/home/$USER
sudo chown $USER:$USER /secret/home/$USER
Crea la chiave nel portachiavi e usala per impostare il criterio per la crittografia della directory (qui il sudo
comando non è necessario):
$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
Enter passphrase (echo disabled):
Added key with descriptor [0132fed69f946c86]
$ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER
Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
Dopo ogni riavvio, è add_key
possibile utilizzare il comando impostare la chiave per la decrittografia della directory e dei suoi discendenti:
$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
Enter passphrase (echo disabled):
Added key with descriptor [0132fed69f946c86]
Immettere la stessa password utilizzata nel passaggio precedente e non è necessario ricordare la stringa esadecimale del descrittore.
Puoi anche usare add_key
direttamente. Questo utilizzerà un salt specifico per il filesystem (quindi tutte le cartelle in quella partizione avranno lo stesso salt)
$ /usr/sbin/e4crypt add_key /secret/home/$USER
Added key with descriptor [0132fed69f946c86]
Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
cp .. /secret/home/$USER/.
ottengo: «cp: impossibile creare il file regolare '/secret/home/alexis/test-top-secret-image.svg': chiave richiesta no disponibile » . Ho appena seguito le tue istruzioni, quindi immagino che qualcosa sia cambiato.
/usr/bin/e4crypt
" manca la "s" in "/ [s] bin".
Linux 4.1 viene fornito con una nuova funzionalità Ext4 per crittografare le directory di un filesystem. Le chiavi di crittografia sono memorizzate nel portachiavi. Per iniziare, assicurati di aver abilitato CONFIG_KEYS
e CONFIG_EXT4_FS_ENCRYPTION
le opzioni del kernel e di avere il kernel 4.1 o successivo.
Prima di tutto, devi aggiornare e2fsprogs almeno alla versione 1.43, che è ancora WIP al momento della scrittura, quindi dobbiamo recuperarlo dal repository git :
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
e4crypt source ha disabilitato una sezione pertinente nel suo codice sorgente, abilitandola modificando misc / e4crypt.c e rimuovendo queste due righe vicino alla linea 714:
printf("arg %s\n", argv[optind]);
exit(0);
Ora costruisci e installa nuovi e2fsprogs:
$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb
Controlla la tua versione ora, dovrebbe essere 1.43-WIP:
# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
Using EXT2FS Library version 1.43-WIP, 18-May-2015
Per lavorare con le chiavi, è necessario installare il keyutils
pacchetto:
$ sudo apt-get install keyutils
Facciamo una directory che crittograferemo. I criteri di crittografia possono essere impostati solo su directory vuote:
$ sudo mkdir -p /encrypted/dir
Innanzitutto genera un valore salato casuale e conservalo in un luogo sicuro:
$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459
Ora genera e aggiungi una nuova chiave nel tuo portachiavi: questo passaggio dovrebbe essere ripetuto ogni volta che scarichi il tuo portachiavi (riavvia)
$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled):
Added key with descriptor [f88747555a6115f5]
Ora conosci un descrittore per la tua chiave. Assicurati di aver aggiunto una chiave al tuo portachiavi:
$ keyctl show
Session Keyring
1021618178 --alswrv 1000 1000 keyring: _ses
176349519 --alsw-v 1000 1000 \_ logon: ext4:f88747555a6115f5
Quasi fatto. Ora imposta un criterio di crittografia per una directory:
$ e4crypt set_policy f88747555a6115f5 /encrypted/dir
È tutto. Se provi ad accedere al disco senza aggiungere una chiave nel portachiavi, i nomi dei file e il loro contenuto verranno visualizzati come incomprensibili crittografati. Fai attenzione a eseguire le vecchie versioni di e2fsck sul tuo filesystem - tratterà i nomi di file crittografati come non validi.