Como criar uma partição criptografada em ext4 no Ubuntu 15.04 com o novo kernel 4.1?

8

Posso criar uma nova partição ext4 criptografada com o kernel 4.1 no Ubuntu 15.04?

    
por Oto_Shan 02.07.2015 / 15:11

2 respostas

8

Primeiro, uma declaração: Eu não fiz isso com o Ubuntu, mas em uma máquina com o Debian "Stretch" instalado usando um kernel personalizado do Linux 4.2.3 que eu habilitei EXT4_FS_ENCRYPTION on.

As instruções dadas por kmeaw não funcionam para mim exatamente como postadas. Algumas coisas foram deixadas de fora (parâmetros de linha de comando e etapas).

  • Atualize e2fsprogs como mostrado acima
  • Gere seu sal aleatório. Eu usei o seguinte para armazená-lo em um "lugar 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 "encriptar" deve ser definido no super-bloco. 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 a mudança (talvez seja automático, mas eu fiz isso apenas 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 para o diretório a ser criptografado (o comando sudo 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 comando add_key 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 no passo anterior, e você não precisa se lembrar da string hexadecimal do descritor.

  • Você também pode usar add_key diretamente. Isto irá usar um sal específico do sistema de arquivos (Então, todas as pastas sob essa 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.
    
por Daniel Glasser 23.10.2015 / 20:49
2

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 as opções CONFIG_KEYS e CONFIG_EXT4_FS_ENCRYPTION kernel e você tem 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 escrevo, então precisamos buscá-lo no repositório git :

$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

A fonte e4crypt desabilitou 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 crie e instale o novo 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 pacote keyutils :

$ sudo apt-get install keyutils

Vamos criar um diretório que iremos criptografar. A política de criptografia pode ser definida apenas 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 em seu chaveiro: este passo deve ser repetido toda vez que você liberar seu chaveiro (reinicialização)

$ 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 ao keychain, os nomes de arquivos e seus conteúdos serão vistos como mensagens criptografadas. Tenha cuidado ao executar versões antigas do e2fsck em seu sistema de arquivos - ele tratará nomes de arquivos criptografados como inválidos.

    
por kmeaw 08.07.2015 / 19:14