Criptografar seus dados com LUKSFS e GOCRYPTFS

https://imgs.xkcd.com/comics/security.png

Se você possui um conjunto de informações e dados (imposto de renda, dados bancários, fotos, documentos importantes ou sigilosos, etc) que não deveriam parar na mão de terceiros (um ladrão, um técnico de informática mal intencionado, um “amigo” querendo lhe prejudicar, etc), então você precisa criptografar seus dados.

Será o acesso aos seus dados e a utilização dos mesmos de modo que, por mais criativo que sejas, não terás ideia do que farão.

Terão os seguintes custos:

  • O tempo dedicado para configuração da criptografia em si (seja instalando a primeira vez ou reconfigurando);
  • Atraso na hora de ligar ou acessar os dados por ter de digitar a senha;
  • Perda de desempenho no computador, por ter de usar o processador para criptografar todos os dados.

Você nunca, jamais, em hipótese alguma, deve deixar sua senha anotada em algum lugar ou revelá-la para estranhos.

Quem viveu esse problema na pele, sabe como é.

Não use a mesma senha para tudo e nem tenha padrões de senha que mudam uma palavra ou detalhe conforme o serviço usado!!

https://imgs.xkcd.com/comics/how_hacking_works.png

A criptografia é a nível de sistema de arquivos, sendo em cada diretório e arquivo.

Isso permite a sincronização de apenas arquivos modificados com o armazenamento em núvem, mantendo tudo criptografado.

É acessível a data de criação e modificação do arquivo, além do tamanho deste.

Usando estas informações, é possível sugerir o tipo de arquivo que possa estar criptografado.

Com gocryptfs!!

O Debian utiliza uma versão anterior (1.8.0) mas pode-se pegar a versão mais recente no github releases page. Vem o binário no arquivo compactado.

Crie as pastas criptografada, que possui o conteúdo encriptado, e plana, com conteúdo legível.

1
mkdir criptografada plana

Inicialize a pasta criptografada.

1
gocryptfs -init criptografada

Monte a pasta criptografada para ter o seu conteúdo legível em plana

1
gocryptfs criptografada plana

Parabéns, você criou uma pasta criptografada com gocryptfs.

Para desmontar, basta executar umount plana

Caso seu equipamento seja roubado ou acessado indevidamente, será impossível o acesso a seus dados por não ter acesso nem ao sistema operacional ou ao ponto de partição de sua home, enquanto liga o computador.

Se criar um container para enviar os dados via Dropbox/Google Drive/One Drive/iCloud/pCloud/NextCloud/etc com tudo criptografado, sempre que houver uma mudança, terás que enviar tudo de novo.

Imaginando que é um container de 1GB e foi alterado 10MB. Será necessário enviar 1GB novamente para seu serviço de armazenamento em núvem.

Com LUKSFS!!

Não precisa instalar o LUKFS pois já vem por padrão no linux, chamado como cryptsetup.

Para usá-lo, criptografando seu sistema operacional, é interessante fazer (ou ter feito) a escolha da opção de particionamento com criptografia na hora de instalar sua distribuição.

Depois de feito, antes de iniciar o sistema operacional sempre será solicitada a senha para descriptar a partição. 😀

Para adicionar um novo disco ou partição criptografada, faça o seguintes passos.

Atenção: possível perda de dados
Iremos apagar o disco. Tomara que você tenha feito backup.

Com o dispositivo de armazenamento conectado, verifique qual o nome deste com:

1
fdisk -l

No nosso exemplo, é o /dev/sdb e é um disco de 200GB.

Como root, execute:

1
fdisk /dev/sdb
E se tiver partições criadas?
Depois de executar o fdisk /dev/sdb escolha o comando d para apagar cada partição, até não sobrar nenhuma e daí prossiga para os próximos passos.

Após, siga com o procedimento de criação da partição que deixarei o que foi feito:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Disk model: Virtual disk    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x462ca812

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-419430399, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-419430399, default 419430399): 

Created a new partition 1 of type 'Linux' and of size 200 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Partição criada com sucesso.

Basicamente, execute como root:

1
cryptsetup luksFormat /dev/sdb1

Depois disso, será mostrado um alerta e pedirá que você digite YES, maiúsculo mesmo.

Será pedido a senha que será usada para a partição.

1
2
3
4
5
6
7
WARNING!
========
This will overwrite data on /dev/sdb1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/sdb1:
Verify passphrase:

Feito!

Para montar a partição, será necessário definir um nome para o ponto de montagem.

Chamarei de coisassecretas.

Execute o seguinte comando de montagem para que seja feito no caminho /dev/mapper/coisassecretas.

1
cryptsetup open --type luks /dev/sdb1 coisassecretas 

Agora o caminho /dev/mapper/coisassecretas está criado e ativo.

Nesta parte você pode criar o sistema de LVM se desejar fazer várias partições e quiser a liberdade de aumentar o tamanho conforme a necessidade.

Ou… usar tudo em um ext4 (é o que farei).

Se liga!
Não vá se confundir. Nessa etapa é para criar a partição no /dev/mapper/coisassecretas e NÃO no /dev/sdb1.

Execute como root:

1
mkfs.ext4 /dev/mapper/coisassecretas

Sistema de arquivos feito!

Agora é a parte de montar em uma pasta que desejar.

No exemplo, colocarei em /mnt/coisassecretas.

1
2
3
mkdir /mnt/coisassecretas

mount /dev/mapper/coisassecretas /mnt/coisassecretas

Imaginando que o que tinha de ser editado ou visto já finalizou, vamos desmontar o sistema de arquivos e fechar o sistema de arquivos criptografado.

Como root:

1
2
3
umount /mnt/coisassecretas

cryptsetup close /dev/mapper/coisassecretas

Adicione a seguinte linha ao /etc/fstab

1
/dev/mapper/coisassecretas /mnt/coisassecretas        ext4 defaults     0       0

E adicione isso ao /etc/crypttab

1
coisassecretas /dev/sdb1 none

Feito, agora sempre será solicitado uma senha quando ligar seu computador para desencriptar e montar a partição de seu disco.

Mas caso não queira digitar mais de uma vez a senha, siga para a próxima seção.

O LUKS permite guardar até 8 chaves por disco encriptado.

No caso, você precisará de uma além da que você já usava.

Como a chave será resgatada automaticamente pelo sistema, faça o seguinte procedimento.

  1. Crie uma chave aleatória com dd, no exemplo, a chave será colocada na pasta /root.
1
dd if=/dev/random bs=32 count=1 of=/root/chavealeatoria
  1. Adicione a chave criada como mais uma das chaves do LUKS. Será solicitada a senha do sistema de arquivos criptografado LUKS.
1
cryptsetup luksAddKey /dev/sdb1 /root/chavealeatoria 
  1. Adicione as modificações nos devidos arquivos para montagem automática.

Acrescente as seguintes informações no arquivo /etc/crypttab.

1
coisassecretas /dev/sdb1 /root/chavealeatoria

Agora é só reiniciar. Se sua partição / estiver criptografada com o LUKS, só será requisitada a senha uma única vez e a segunda partição criptografada será montada automaticamente!🙂

Caso deseje checar os espaços de chaves que o LUKS possui e alguns outros detalhes, execute:

1
cryptsetup luksDump /dev/sdb1