Jump to content
From ArchWiki
< Dm-crypt (Português)

Status de tradução: Esse artigo é uma tradução de Dm-crypt/Encrypting a non-root file system. Data da última tradução: 2020-05-25. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Os seguintes exemplos são para criptografar um sistema de arquivos secundário, não raiz, com dm-crypt.

## Visão geral

Criptografar um sistema de arquivos secundário normalmente protege somente dados sensíveis, enquanto deixa o sistema operacional e programas sem encriptação. Isto é somente útil para dispositivos removíveis, como um USB, para então este ser usado em outros computadores com segurança. Também, é possível criptografar conjuntos separados de dados de acordo com quem possui acesso.

Devido ao dm-crypt ser uma camada de encriptação a nível de blocos, ele somente criptografa os dispositivos, partições e dispositivos de loop. Para criptografar arquivos indíviduais é necessário uma camada de encriptação a nível de sistema de arquivos, como eCryptfs or EncFS. Veja Criptografia de dados em repouso para informações gerais sobre como proteger dados privados.

## Partição

Este exemplo detalha a encriptação da partição `/home`, mas pode ser aplicado para qualquer outra partição similar, não raiz, que contém dados do usuário.

Dica: Você pode ter o diretório `/home`, em uma partição, único para um usuário, ou criar uma partição `/home` compartilhada para todos os diretórios dos usuários.

Primeiro tenha certeza que a partição está vazia (sem sistema de arquivos). Delete a partição e crie uma nova se ela possui um sistema de arquivos. Então apague com segurança, veja apagando o disco com segurança.

Crie a partição que vai conter o container criptografado.

Então configure o cabeçalho LUKS com:

    # cryptsetup opções luksFormat dispositivo

Mude `dispositivo` para a nova partição. Veja Opções de encriptação para o modo LUKS para detalhes tais como as `opções` disponíveis.

Para acessar a partição criptografada, desbloqueie ela com o mapeador de dispositivos, usando:

    # cryptsetup open dispositivo nome

Depois de desbloquear a partição, ela estará disponível em `/dev/mapper/nome`. Agora crie um sistema de arquivos de sua escolha com:

    # mkfs.tipo_do_sistema_de_arquivos /dev/mapper/nome

Monte o sistema de arquivos em `/home`, ou se deve ser somente acessível a um usuário em `/home/nome do usuário`, veja #Montando e desmontando manualmente.

Dica: Desmonte e monte uma vez para verificar se o mapeamento está funcionando como desejado.

### Montando e desmontando manualmente

Para montar a partição:

    # cryptsetup open dispositivo nome
    # mount -t tipo_do_sistema_de_arquivos /dev/mapper/nome /mnt/home

Para desmontar:

    # umount /mnt/home
    # cryptsetup close nome

Dica: GVFS tambem pode montar partições criptografadas. Você pode usar um gerenciador de arquivos com suporte ao gvfs (exemplo Thunar) para montar a partição, e a caixa de diálogo pedindo a senha aparecerá. Para outros desktops, zulucryptAUR também oferece uma GUI.

### Desbloqueio e montagem automatizados

Existem três diferentes soluções para automaticamente desbloquear a partição e montar seu sistema de arquivos.

#### Na inicialização do sistema

Usando o arquivo de configuração `/etc/crypttab`, o desbloqueio ocorre no momento de inicialização fazendo uso do parsing automático do systemd. Esta é a solução recomendada se você deseja usar uma partição home comum para os diretórios de todos os usuários ou automaticamente montar outro dispositivo de bloco encriptado.

Veja Dm-crypt/Configuração do sistema#crypttab para referências e Montando na inicialização do sistema para um exemplo prático.

#### No login do usuário

Usando pam_exec é possível desbloquear (cryptsetup open) a partição no login do usuário: esta é a solução recomendada se deseja um diretório home de somente um usuário em uma partição. Veja dm-crypt/Montagem no login.

O desbloqueio no login do usuário também é possível com pam_mount.

## Dispositivo de loop

Existem dois métodos para usar um dispositivo de loop como um container criptografado, um usando `losetup` diretamente e outro não.

### Sem losetup

Usar diretamente o losetup pode ser evitado completamente ao fazer o seguinte[1]:

    $ dd if=/dev/urandom of=grande_segredo.img bs=100M count=1 iflag=fullblock
    $ cryptsetup luksFormat grande_segredo.img

Neste caso cryptsetup vai encontrar um dispositivo de loop livre, adicionar o arquivo para ele, e também desanexá-lo quando `cryptsetup close` for invocado.

Tenha certeza de não omitir a opção `iflag=fullblock`, de outro modo dd pode retornar uma leitura parcial. Veja dd#Leitura parcial para detalhes.

Antes de executar `cryptsetup`, veja Opções de encriptação para o modo LUKS e cifras criptográficas e modos de operação primeiro para selecionar configurações adicionais do seu interesse.

As instruções para abrir o dispositivo e criar o sistema de arquivos são do mesmo jeito que em #Partição.

Nota: Se criar um arquivo menor que o cabeçalho do LUKS (16 MiB) vai receber um erro `Requested offset is beyond real size of device grande_segredo.img` quando tentar abrir o dispositivo.

O procedimento de montagem e desmontagem manual é igual a #Montando e desmontando manualmente.

### Com losetup

Um dispositivo de loop permite mapear um dispositivo de bloco para um arquivo com a ferramenta padrão do util-linux `losetup`. O arquivo pode então conter um sistema de arquivos, que pode ser usado como qualquer outro. Vários usuários conhecem TrueCrypt como uma ferramenta para criar containers criptografados. É possível conseguir essa mesma funcionalidade com um sistema de arquivos de looback criptografado com LUKS, como é mostrado no exemplo a seguir.

Primeiro, crie um container criptografado com dd, usando um gerador de números aleatórios apropriado:

    # dd if=/dev/urandom of=grande_segredo.img bs=100M count=1 iflag=fullblock

O arquivo `grande_segredo.img` vai ser criado com o tamanho de 100 mebibytes.

Nota: Evite redimensionar o container, crie ele maior do que a soma do tamanho de todos os arquivos que serão criptografados, de modo que consiga hospedar a metadata associada utilizada pelo sistema de arquivos interno. Se pretende usar o modo LUKS, o cabeçalho de metadata dele sozinho vai ocupar mais de 16 mebibytes.

Depois, crie um dispositivo de nó, agora podemos montar/usar nosso container:

    # losetup /dev/loop0 grande_segredo.img

Nota: Se você receber um erro `/dev/loop0: No such file or directory`, você precisa carregar o módulo do kernel `modprobe loop` comoo superusuário. Nestes dias (kernel 3.2) dispositivos de loop são criados em demanda. Solicite um novo com `losetup -f` como superusuário.

A partir de agora, o procedimento é o mesmo que o especificado em #Partição, exceto pelo fato que o container já está com dados aleatórios e não será necessário apagar com segurança.

Dica: Containers com dm-crypt podem ser muito flexíveis. Veja as funcionalidades e documentação de Tomb. Ele oferece um script para um manuseio rápido e flexível do dm-crypt.

#### Montando e desmontando manualmente

Para desmontar o container:

    # umount /mnt/segredo
    # cryptsetup close segredo
    # losetup -d /dev/loop0

Para montar o container novamente:

    # losetup /dev/loop0 grande_segredo.img
    # cryptsetup open /dev/loop0 segredo
    # mount -t ext4 /dev/mapper/segredo /mnt/segredo

Category:

- Data-at-rest encryption (Português)