A criptografia permite guardar a informação de uma forma totalmente desconfigurada para quem não possua a chave correta de sua visualização. Já foram feitos posts de como criptografar um disco inteiro usando TrueCrypt e também uma opção usando eCryptFS e interface gráfica. Neste, será apresentado como criptografar um diretório usando o sistema de arquivos do tipo eCryptFS (no nível do sistema de arquivos) no Linux.
O pacote poder ser instalado a partir do repositório usando o comando “sudo apt install ecryptfs-utils”. Considerando um diretório no mesmo nível de execução do comando, ele pode ser criptografado usando “ecryptfs” montando-o sobre si mesmo. No entanto, fica mais claro trabalhar usando dois diretórios da seguinte forma:
- dir_origem – diretório que contém os arquivos criptogrfados;
- dir_destino – diretório de trabalho que exibe os arquivos descriptografados ao montar e fica vazio ao desmontar – também deve ficar vazio sempre antes de montar.
Para montar esse sistema acima descrito, siga os passos:
1) Crie os diretórios vazios (somente para o primeiro uso):
mkdir dir_origem dir_destino
2) Montar o diretório de origem no diretório de destino usando criptografia (a primeira linha exige especificar algumas opções, já a segunda contém todos os parâmetros padrão, especificados mais adiante no texto):
sudo mount -t ecryptfs dir_origem dir_destino sudo mount -t ecryptfs -o key=passphrase,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes,ecryptfs_fnek_sig=54ee4c829da3e354 dir_origem dir_destino
Atente-se para que o diretório de destino esteja vazio antes de executar o comando!
3) Copiar (ou criar) os arquivos a serem criptografados para a pasta de destino, por exemplo:
echo "Monolito Nimbus!" > dir_destino/teste.txt
Você consegue visualizar o conteúdo do arquivo “dir_destino/teste.txt” mas não do arquivo “dir_origem/teste.txt”. Se tiver escolhido a opção por criptografar o nome do arquivo, ele deve estar invisível ou com um nome indicando que está criptografado.
4) Desmontar o diretório de destino:
sudo umount dir_destino
Ao realizar a montagem (passo 2), algumas perguntas serão feitas no terminal interativo:
- “Select key type to use for newly created files” – selecionar tipo de chave, geralmente opta-se por “passphrase” (senha tradicional).
- “Select cipher” – escolher o tipo de encriptação. A opção padrão é mostrada entre colchetes, então se você não tiver certeza do que selecionar, basta pressionar Enter para selecionar o padrão (a AES é uma boa escolha).
- “Select key bytes” – selecionar o tamanho da chave, em bytes.
- “Enable plaintext passthrough” – selecionar “yes” se quiser usar um arquivo não criptografado dentro de sua pasta.
- “Enable filename encryption” – ativar criptografia de nome de arquivo (isso é importante para reduzir risco de ataques dirigidos a arquivos específicos).
- “Filename Encryption Key (FNEK) Signature” – caso opte por ativar criptografia de nome de arquivo, você deverá escolher uma das opções (pode usar a padrão apenas dando ENTER).
- “Would you like to proceed with the mount” – confirmar o prosseguimento da montagem (aviso aparece quando detecta que você nunca montou com essa chave antes, o que pode significar que você digitou sua senha errada).
- “Would you like to append sig (…) in order to avoid this warning in the future” – responder se deseja adicionar a assinatura ao arquivo sig-cache.txt, para evitar o warning de montagem no futuro.
Caso opte pela segunda linha do passo 2 (comando recebendo opções via argumentos) para trabalhar com os arquivos, só precisa digitar a senha para descriptografar. Somente trabalhe com o diretório estando descriptografado/montado, e não quando estiver criptografado/montado.
Caso digite a frase senha ERRADA, o sistema mostrará um alerta e você deve escolher “no”. Se prosseguir com “yes”, não conseguirá visualizar ou abrir os arquivos – mesmo caso de montar com parâmetros diferentes dos originalmente usados. O sistema de criptografia garante privacidade nos arquivos, mas eles podem ser removidos por qualquer usuário do sistema permissões apropriadas. Você pode subir diretório criptografado para a nuvem, e quando baixá-lo, basta executar o mesmo procedimento descrito para trabalhar com os arquivos e então subir novamente para atualizar no servidor remoto.
Para facilitar a execução dos comandos, você pode usar o script a seguir. Salvando o código como um arquivo de nome “mount_umount.sh”, basta executá-lo com os parâmetros “mount” ou “umount”, por exemplo: bash mount_umount.sh mount. Salve o arquivo na mesma pasta dos diretórios e não esqueça de atualizar os nomes utilizados por você como “dir_origem” e “dir_destino”.
#!/bin/bash # Script para montar/desmontar diretório criptografado option=$1 dir_origem='cripto_files' dir_destino='cripto_work' if [[ $option == 'mount' ]]; then echo 'Montando diretório:' $dir_origem 'em' $dir_destino sudo mount -t ecryptfs -o key=passphrase,\ ecryptfs_cipher=aes,\ ecryptfs_key_bytes=16,\ ecryptfs_passthrough=no,\ ecryptfs_enable_filename_crypto=yes,\ ecryptfs_fnek_sig=54ee4c829da3e354 $dir_origem $dir_destino caja $dir_destino elif [[ $option == 'umount' ]]; then echo 'Desmontando diretório:' $dir_destino sudo umount $dir_destino else echo 'Digite o parâmetro mount ou umount ao executar o script' fi
Note que existe uma linha para chamar o gerenciador de arquivos e abri-lo no diretório destino automaticamente, sem travar o terminal nele – altere o comando ou comente-o caso não queira essa opção. Quando for desmontar o diretório, feche o gerenciador de arquivos e desmonte via terminal, já que precisa ser super usuário para isso.
Fontes