Posso criar uma nova ext4
partição criptografada com kernel 4.1 no Ubuntu 15.04?
Responder1
Primeiro, um aviso: não fiz isso com o Ubuntu, mas em uma máquina com o Debian "Stretch" instalado usando um kernel Linux 4.2.3 personalizado que eu habilitei EXT4_FS_ENCRYPTION
.
As instruções dadas porkmeawnão funciona para mim exatamente como postado. Algumas coisas foram deixadas de fora (parâmetros e etapas da linha de comando).
- Atualize
e2fsprogs
conforme mostrado acima Gere seu sal aleatório. Usei o seguinte para armazená-lo em um "local seguro":
head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
Para usar a criptografia ext4 no sistema de arquivos, o sinalizador "encrypt" deve ser definido no superbloco. Este não é o padrão quando o sistema de arquivos ext4 é criado. Usando o utilitário "tune2fs" do e2fsprogs 1.43 ou posterior, defina a opção "encrypt":
sudo tune2fs -O encrypt /dev/sda4
Monte ou remonte o sistema de arquivos para que o kernel saiba sobre a mudança (talvez seja automático, mas só fiz isso em uma partição separada, então não tenho certeza).
Crie um diretório no sistema de arquivos montado com a criptografia ativada:
sudo mkdir -p /secret/home/$USER sudo chown $USER:$USER /secret/home/$USER
Crie a chave no chaveiro e use-a para definir a política do diretório a ser criptografado (o
sudo
comando não é necessário aqui):$ /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.
Após cada reinicialização, o
add_key
comando pode ser usado para definir a chave para descriptografar o diretório e seus descendentes:$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt` Enter passphrase (echo disabled): Added key with descriptor [0132fed69f946c86]
Digite a mesma senha usada na etapa anterior e você não precisará se lembrar da string hexadecimal do descritor.
Você também pode usar
add_key
diretamente. Isso usará um sal específico do sistema de arquivos (portanto, todas as pastas nessa partição terão o mesmo sal)$ /usr/sbin/e4crypt add_key /secret/home/$USER Added key with descriptor [0132fed69f946c86] Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
Responder2
O Linux 4.1 vem com um novo recurso Ext4 para criptografar diretórios de um sistema de arquivos. As chaves de criptografia são armazenadas no chaveiro. Para começar, certifique-se de ter ativado CONFIG_KEYS
as CONFIG_EXT4_FS_ENCRYPTION
opções do kernel e de ter o kernel 4.1 ou superior.
Primeiro de tudo, você precisa atualizar o e2fsprogs para pelo menos a versão 1.43, que ainda é WIP no momento em que este artigo foi escrito, então precisamos buscá-lo norepositório git:
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
A fonte e4crypt desativou uma seção relevante em seu código-fonte, habilite-a editando misc/e4crypt.c e removendo estas duas linhas perto da linha 714:
printf("arg %s\n", argv[optind]);
exit(0);
Agora construa e instale novos e2fsprogs:
$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb
Verifique sua versão agora, deve ser 1.43-WIP:
# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
Using EXT2FS Library version 1.43-WIP, 18-May-2015
Para trabalhar com chaves, precisamos instalar o keyutils
pacote:
$ sudo apt-get install keyutils
Vamos criar um diretório que iremos criptografar. A política de criptografia só pode ser definida em diretórios vazios:
$ sudo mkdir -p /encrypted/dir
Primeiro gere um valor de sal aleatório e armazene-o em um local seguro:
$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459
Agora gere e adicione uma nova chave ao seu chaveiro: esta etapa deve ser repetida toda vez que você liberar seu chaveiro (reiniciar)
$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled):
Added key with descriptor [f88747555a6115f5]
Agora você conhece um descritor para sua chave. Certifique-se de ter adicionado uma chave ao seu chaveiro:
$ keyctl show
Session Keyring
1021618178 --alswrv 1000 1000 keyring: _ses
176349519 --alsw-v 1000 1000 \_ logon: ext4:f88747555a6115f5
Quase pronto. Agora defina uma política de criptografia para um diretório:
$ e4crypt set_policy f88747555a6115f5 /encrypted/dir
Isso é tudo. Se você tentar acessar o disco sem adicionar uma chave às chaves, os nomes dos arquivos e seus conteúdos serão vistos como algo sem sentido criptografado. Tenha cuidado ao executar versões antigas do e2fsck em seu sistema de arquivos - isso tratará nomes de arquivos criptografados como inválidos.