¿VeraCrypt →((🔑 senhas ∧ 🔑 keyfiles) ⊃ RAM)?
Este post consiste de um resumo do artigo a seguir:
ANÁLISE DA MEMÓRIA DE ACESSO RANDÔMICO: ARQUIVOS MAPEADOS PELO VERACRYPT - Anderson Luís Moreira
Universidade Católica de Brasília - 2015
O artigo visa analisar se é possível pegar as chaves criptográficas dos containers criados pelo VeraCrypt enquanto este programa está em execução, afinal, a memória RAM (memória temporária volátil) é o único local onde não há criptografia dos dados manipulados pelo programa enquanto ele está em execução. Após ser finalizado, os dados que estavam na RAM podem ser apagados (aleatoriamente) e aí restariam apenas os dados criptografados no disco rígido. Em outros termos, a memória RAM parece ser o ponto mais fraco de todo o processo.
Para copiar a memória RAM do computador periciado, foi usado o programa DumpIt (para Windows), e para copiar uma imagem do disco, o software dcfldd (para UNIX e similares) - criado pelo Laboratório de Forênsica Computacional do Departamento de Defesa dos EUA. Para analisar a memória RAM, foi usado o programa forense código-aberto Volatility. O processo foi feito 4 vezes, para garantir um padrão no funcionamento do VeraCrypt.
De forma relativamente simples, as keyfiles do volume criptografado foram encontradas, com base em comparação de datas de acesso a arquivos e execução de programas - lembrando que isso apenas porquê esses registros foram tirados diretamente da memória RAM - . As keyfiles, conforme a documentação própria do VeraCrypt, são arquivos que, usados em combinação com as senhas, provêem mais segurança à criptografia, pois sem os arquivos certos não é possível montar o volume. Tendo o realizador do estudo encontrado as keyfiles, pôde montar o volume.
Porém, para de fato acessar o volume, é preciso saber também a senha! A senha não é guardada em forma pura, como texto simples, mas como hash. Ou seja, estão codificadas de uma maneira "praticamente impossível" de reverter, só sendo usável se o usuário digitar a mesma senha no programa, este gerar o mesmo hash, comparar com o hash guardado e eles coincidirem. O desenvolvedor do estudo tentou encontrá-la na memória RAM, onde ficaria armazenada, mas observou que o VeraCrypt em particular tem o devido cuidado de sobrescrever esses dados, impedindo que a senha pura ou os hashes sejam encontráveis nesse tipo de análise posterior.
A única alternativa a encontrar a senha ou hash seria quebrá-la na força bruta (tentativas sucessivas exaustivas), mas o uso de derivação de chaves torna isso imprático... se o usuário seguiu a boa prática de usar senha adequada. Se a senha for fraca, ainda pode ser possível! Mas é tema para outros estudos...
O texto deste post de Anders Bateva está licenciado com uma Licença Creative Commons - Atribuição 4.0 Internacional. |