Como crio um sistema de arquivos criptografado dentro de um arquivo?

16

Encontrei este tutorial interessante no blog flossstuff .

Explica como criar um arquivo vazio, formatá-lo como ext4 e montá-lo como um dispositivo.

Gostaria de saber se ele pode ser criado como um sistema de arquivos ext4 criptografado.

Tentei usar o palimpsest (o utilitário de disco encontrado no menu Sistema) para formatar o sistema de arquivos já criado, mas ele não funciona, pois detecta o sistema de arquivos que está sendo usado.

Se eu tentar desmontar o sistema de arquivos, isso também não funcionará porque não detecta o dispositivo (já que não é um dispositivo real, como um disco rígido ou uma unidade USB).

Então, minha pergunta é: existe uma opção para criar o sistema de arquivos criptografado desde o início? Eu usei estes comandos:

Crie um tamanho de 200Mb de arquivo vazio:

dd if=/dev/zero of=/path/to/file bs=1M count=200

Faça ext4:

mkfs -t ext4 file

Monte-o em uma pasta dentro da minha casa:

sudo mount -o loop file /path/to/mount_point

Existe alguma maneira de o mkfscomando criar um sistema de arquivos ext4 criptografado solicitando uma senha de descriptografia?

Estou planejando usar isso como uma maneira de criptografar arquivos dentro do Dropbox.

animaletdesequia
fonte
Se você deseja criptografia adequada ao fazer backup de arquivos, considere o SpiderOak. Mais segurança e menos barulho.
landroni

Respostas:

8

Você pode usar cryptmountpara criptografar um sistema de arquivos, também se o sistema estiver em um arquivo.

A cryptmountpágina de manual tem uma explicação muito simples e detalhada que eu relato (modificada) aqui, e menciona explicitamente um sistema de arquivos baseado em arquivo.

  • Etapa 1
    Adicione uma entrada /etc/cryptmount/cmtab, da seguinte maneira:

    mycrypt {
        dev=/media/data/mycrypt dir=/home/enzotib/mycrypt
        fstype=ext4 mountoptions=defaults cipher=twofish
        keyfile=/etc/cryptmount/mycrypt.key
        keyformat=builtin
    }
    

    onde /media/data/mycrypté o arquivo de suporte criado por dde /home/enzotib/mycrypté o ponto de montagem desejado.

  • Etapa 2
    Gere uma chave de descriptografia secreta

    sudo cryptmount --generate-key 32 mycrypt
    
  • Etapa 3
    Execute o seguinte comando

    sudo cryptmount --prepare mycrypt
    

    você será solicitado a senha usada ao configurar a chave

  • Etapa 4
    Crie o sistema de arquivos

    sudo mkfs.ext4 /dev/mapper/mycrypt
    
  • Etapa 5
    Executar

    sudo cryptmount --release mycrypt
    
  • Etapa 6
    Agora monte o sistema de arquivos

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    então desmonte

    cryptmount -u mycrypt
    

Além disso, se você precisar criptografar um diretório, encfsvale a pena levar em consideração.

enzotib
fonte
Obrigado pela sua resposta, criei o sistema de arquivos, criptografado e enviado para o Dropbox. Mais tarde vou tentar montar esse arquivo no outro pc. Apenas uma coisa, isso pode ser feito sem o sudo? Se eu quiser manter o arquivo e o sistema de arquivos montados dentro de minha casa (não em mídias como usb ou hardrive), os comandos seriam os mesmos sem o sudo ou o cryptmount sempre precisará de privilégios de root?
animaletdesequia
11
@dent: parece que o comando precisa de privilégios de root apenas na configuração do sistema de arquivos, mas montar / desmontar é uma ação do usuário, desde que o arquivo de imagem e o ponto de montagem sejam de propriedade do usuário. Para configurar o mesmo arquivo de imagem em outra máquina, suponho que você deve copiar /etc/cryptmount/mycrypt.keye pular a --generate-keyetapa.
enzotib 28/08
Eu recebo este erro na última etapa: $ sudo cryptmount -m encriptat Digite a senha para o destino "encriptat": e2fsck 1.41.14 (22-dez-2010) fsck.ext4: Súperbloc no vàlid, antes dos blocos de segurança de segurança. .. fsck.ext4: Mau número mágico no super-bloco, em intentar obrir / dev / mapper / encriptat
animaletdesequia
11
@ Darent: você criou o sistema de arquivos como mostrado na etapa 4? você foi consistente na substituição do nome "mycrypt" por "encriptat"?
enzotib 28/08
Desculpe, o erro ocorreu porque, em vez de (sudo mkfs.ext4 / dev / mapper / mycrypt) eu estava digitando (sudo mkfs.ext4 mycript). Eu estava escrevendo diretamente para o arquivo, não para o dispositivo. Agora funciona perfeito. E desculpe pelo formato desta mensagem, não sei por que não consigo separar as linhas (se eu pressionar enter, ele publica o comentário em vez de criar uma nova linha, talvez uma falha do firefox ...) Felicidades! EDIT: agora eu li a sua resposta, o nome do encriptat não foi um problema (apenas adaptou sua postagem e coloque os arquivos com nomes catalães, mas tudo é consistente). Everithing está trabalhando ok agora, graças novamente :)
animaletdesequia
7

Siga as próximas etapas para criar um arquivo criptografado com o sistema de arquivos dentro:

1. A maneira mais rápida de criar arquivos de determinado tamanho é:

fallocate -l 128M /path/to/file

2. Crie a partição LUKS (Linux Unified Key Setup) dentro do arquivo usando as ferramentas dm-crypt :

cryptsetup -y luksFormat /path/to/file

Você pode verificar se o arquivo é contêiner criptografado:

/path/to/file: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 7e2af5a1-3fab-43ea-a073-3b9cc6073f00

3. Abra o contêiner criptografado:

cryptsetup luksOpen /path/to/file data

dataé o nome do volume do mapeador de dispositivos. Você pode escolher outro nome.

Isso abre o dispositivo LUKS e o mapeia para um nome que fornecemos, no nosso caso, criando um arquivo em /dev/mapper/data.

4. Crie um ext4sistema de arquivos neste dispositivo:

mkfs.ext4 /dev/mapper/data

5. Em seguida, crie o ponto de montagem:

mkdir /path/to/mount

6. E monte o dispositivo lá:

mount /dev/mapper/data /path/to/mount

7. Para desmontar o sistema de arquivos e fechar o dispositivo LUKS:

umount /path/to/mount
cryptsetup luksClose data

Agora você criptografou o recipiente LUKS com o sistema de arquivos ext4 dentro. Quando você quiser usá-lo, repita as etapas 3 e 6. Quando terminar, chame a etapa 7.

Este artigo foi muito útil para mim.

Também um dia seu contêiner ficará sem espaço. Suponha que o tamanho do arquivo de contêiner criptografado seja de 128 MB e que queremos aumentar seu tamanho para 512 MB. Para aumentar sua capacidade, siga estas etapas:

1. Desmonte e feche o dispositivo LUKS (consulte a etapa 7 na lista acima).

2. Aumente o tamanho do arquivo do contêiner:

 dd if=/dev/zero of=/path/to/file bs=384M count=1 oflag=append conv=notrunc

3. Abra o dispositivo LUKS.

cryptsetup luksOpen /path/to/file data

4. Redimensione o dispositivo LUKS para corresponder ao tamanho do arquivo do contêiner. Na página do manual:

Se --size (em setores) não for especificado, o tamanho do dispositivo de bloco subjacente será usado.

Então você pode apenas:

cryptsetup resize data

5. Em seguida, redimensione o sistema de arquivos ext4:

e2fsck -f /dev/mapper/data
resize2fs /dev/mapper/data

6. Agora você pode montar o sistema de arquivos de volta:

mount /dev/mapper/data /path/to/mount
mixel
fonte
11
Eu acho que essa resposta é a melhor e mais atualizada. Deve ser selecionado como a resposta correta!
precisa saber é o seguinte