Segurança total é algo impossível, e mesmo tendo os melhores recursos de segurança na configuração de firewalls ou permissões de acesso, os usuários não estão livres do roubo físico dos seus dados. Criptografar o sistema de arquivos da máquina é uma forma efetiva de proteger-se de roubo de dados.
O kernel usado durante os testes foi o 2.6.6. Para implementar a solução de criptografia abordada são necessárias as seguintes funcionalidades, como módulos ou integradas ao kernel:
cryptoloop, permite loopback com encriptação;
loop, permite o loopback;
blowfish, algoritmo de encriptação usado. Poderia ser usado outro em seu lugar, como twofish, DES, AES, etc.
A seguir uma lista dos módulos que foram compilados no kernel produzido para os testes. O leitor deve notar que não é necessário criar todos os módulos de criptografia, mas isso permite que depois escolha-se o algoritmo desejado, e como são módulos não ocuparão memória se não estiverem sendo usados. Assim, não há motivo para criar apenas o módulo do algoritmo blowfish.
#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_TEST is not set
Se o kernel do usuário já apresenta esses ítens, pode-se passar à próxima seção. O autor do texto optou por compilar um novo kernel, mas isso não é necessário e pode ser usado um kernel padrão de qualquer distribuição, mesmo da série 2.4, desde que tenha os módulos citados. A distribuição SUSE[8] apresenta essas facilidades desde pelo menos a versão 7.2[9], facilitando a implementação de criptografia no sistema de arquivos no momento da instalação.
Para saber se o seu kernel suporta encriptação nativa, o leitor deve ler o manual da sua distribuição. Não havendo manual, pode-se procurar os módulos diretamente em /lib/modules/2.4.x ou /lib/modules/2.6.x e carregá-los com o comando "modprobe [módulo]". Ou ainda o usuário pode usar a versão do kernel que desejar e aplicar os patches necessários no código fonte para ter criptografia nativa. Em último caso o usuário pode tentar realizar os procedimentos descritos, para o caso das funcionalidades necessárias já estarem compiladas diretamente no próprio kernel.
[4] Comentário enviado por androle em 01/10/2004 - 20:00h
Levei um puxão de orelha do meu orientador por não comentar o motivo de ter escrito esse artigo.
Artigo desenvolvido para a disciplina de "Segurança Computacional", do curso ARL - Administração em Redes Linux. (http://ginux.comp.ufla.br/arl), cujo tutor foi o professor Joaquim Quinteiro Uchôa.
[6] Comentário enviado por engos em 05/10/2004 - 13:43h
Parabéns pelo artigo, nem sabia que isso é possível... é inacreditável o que se pode fazer com o Linux!
Só uma pergunta, não consegui entender direito como os dados ficam armazenados. Significa que se a partição ou o arquivo estiverem criptografados, mesmo que eu entre (boot) com um rescue disk e monte a partição como praxe, não conseguirei acesso aos dados?
[7] Comentário enviado por androle em 05/10/2004 - 23:41h
Olá. Obrigado.
Sim, é isso mesmo! Eu testei isso aqui. Se vc não tiver os módulos cryptoloop, loop e blowfish (ou o que vc tiver usado para criptografar), e também a senha correta, os dados ficam inacessíveis. Não tem jeito.
Basta colocar a senha errada e vc não monta a partição ou arquivo. No meu notebook eu coloquei no script uma mensagem dizendo: "Tecle ENTER agora" no momento de pedir a senha. Assim, o sistema inicializa com o /home desmontado :)
Para poder montar a partição criptografada vc precisa da senha, senão o losetup associa a partilção/arquivo ao /dev/loop(0-7), mas o mount não consegue ler a partição e não monta nada. Os teus arquivos estão lá, mas não podem ser lidos, nem pelo root nem por ninguém.
O interessante é que se vc quiser pode montar um arquivo de, digamos, 150KB, como dispositivo de bloco, gravar informações nele e enviá-lo a alguém. Ai, se a pessoa sabe a senha ela pode montá-lo normalmente. Desse modo vc pode ter pacotes criptografados enviados por email sem ter de usar gpg ou outra ferramenta do tipo. E não é muito difícil fazer um pequeno script para enviar junto com o arquivo para facilitar a montagem e extração dos dados. Claro, a senha vc tem de combinar antes com a pessoa através de algum meio seguro de comunicação.