segunda-feira, 4 de fevereiro de 2008

Apagando arquivos com segurança no Ubuntu

Free Image Hosting at www.ImageShack.us
Exemplo de exclusão segura do arquivo
"Meu plano para conquistar o Mundo."

Usuários normais, iniciantes, apagam um arquivo pressionando a tecla Del, o que faz com que o arquivo seja movido para lixeira. Usuários um pouco mais experientes usam a combinação Shift+Del, que remove o link para o arquivo da tabela da MBR, disponibilizando o espaço do arquivo para ser sobrescrito por outros arquivos ou dados gerados pelo computador. Usuários mais experientes e ligados em segurança apagam seus arquivos usando um shredder ou wiper, que sobrescreve um mínimo de 7 vezes o arquivo a ser apagado, com dados aleatórios.
O problema do procedimento de remoção segura de arquivos é que ele causa um desgaste maior no disco-rígido. Não é o tipo da coisa que uma pessoa normal, com recursos financeiros limitados, vai querer fazer todos os dias, para todos os arquivos.
Além disso, até alguns minutos atrás, eu imaginava que fazer um wiping era um exagero. Para a maioria dos casos, a simples utilização do computador durante algum tempo, especialmente em ambientes Windows, era o suficiente para sobrescrever o arquivo apagado, o mesmo valendo para procedimentos normais de manutenção naquele sistema, como desfragmentação e as famigeradas formatações e reinstalações do sistema operacional. Pensava assim porque eu mesmo já havia tentado recuperar arquivos apagados acidentalmente e sabia que não era a coisa mais fácil do mundo.
Mas hoje em dia os tempos são outros, a tecnologia evoluiu, se tornou mais eficiente e acessível, e o conhecimento técnico também. Então são necessários cuidados mais rigorosos em relação aos arquivos que são apagados do disco e que apagados devem permanecer.
Comecei a perceber isso lendo o artigo Data remanence da Wikipédia, após uma discussão no Fórum Ubuntu BR. Alguns trechos deste artigo me chamaram a atenção, tais como:
"One challenge with an overwrite is that some areas of the disk may be inaccessible, due to media degradation or other errors. Software overwrite may also be problematic in high-security environments which require stronger controls on data commingling than can be provided by the software in use. The use of advanced storage technologies may also make file-based overwrite ineffective."
Em português: "Uma das dificuldades em sobrescrever é que algumas áreas do disco podem estar inacessíveis, devido à degradação e outros erros. Sobrescrever por software também pode ser problemático em ambientes de alta-segurança que necessitam (utilizam) controles mais fortes dos dados e misturas de dados podem então ser causadas pelo software em uso. O uso de tecnologias avançadas de armazenamento também pode fazer a sobrescrita de arquivos individuais ineficaz."
Isso me fez pensar sobre o sistema de Journaling do ext3 do Linux, formato base da minha instalação, embora criptografada, e sistemas RAID, que obviamente não uso no meu notebook popular.
Em 1996, quando Gutmann afirmou ser possível recuperar dados sobrescritos de um HDD, muitas pessoas criticaram, retrucando que os métodos não eram práticos e os resultados eram duvidosos. Em grande parte essas pessoas tinham razão, mas a tecnologia não é estática.
Lendo nos arquivos do site oficial do Ubuntu sobre um dos pacotes de remoção segura dos arquivos, vi um comentário afirmando que atualmente um Microscópio de Força Magnética (MFM) não é economicamente inacessível para um inimigo determinado ou que dispusesse de recursos financeiros básicos:
"Recovery of supposedly erased data from magnetic media is easier than what many people would like to believe. A technique called Magnetic Force Microscopy (MFM) allows any moderately funded opponent to recover the last two or three layers of data written to disk."
Resolvi ver o quanto era verdadeira essa afirmação e comecei a pesquisar no Google quanto dinheiro seria necessário gastar para adquirir ou montar um desses microscópios. Primeiro encontrei o valor de algumas peças que são necessárias para fazê-lo funcionar, peças que custam na faixa de US$ 290.00 aproximadamente. Depois, em uma página da Universidade de Auckland que fala especificamente sobre o procedimento para a recuperação dos arquivos, encontrei o seguinte:
"If commercially-available SPM's are considered too expensive, it is possible to build a reasonably capable SPM for about US$1400, using a PC as a controller."
Em português: "Se SPMs (Magnetic Force Scanning Tunneling Microscopies - versões atualmente usadas do MFM) são consideradas caras demais, é possível construir um SPM razoavelmente funcional por cerca de US$ 1400, usando um PC como controlador."
Juntando A com B, deu para perceber que realmente tal tecnologia não pode mais ser considerada inacessível, e provavelmente já está mais eficiente do que era a dez anos atrás.
Voltando à Wikipedia, temos a seguinte notícia:
"As of Nov 2007, overwriting is no longer a DoD-acceptable sanitization method for magnetic media. Only degaussing or physical destruction is acceptable."
Em português: "Em novembro de 2007, sobrescrever não é mais um método aceitável, pelos padrões do DoD, de limpeza para mídias magnéticas. Apenas a desmagnetização ou a destruição física (agora) são aceitáveis."
E, de volta à página do Departamento de Ciência da Computação da Universidade de Auckland, temos que é verdade, que a cada layer de informação que é sobrescrito em uma mídia, mais difícil é recuperar a informação original. Mas a medida que a tecnologia evolui, a recuperação de informações com apenas dois um pouco mais de dois layers sobrescritos, se tornou bastante fácil e comum.
Um contra-argumento que encontrei na Wikipédia é que os meios normais de sobrescrever ainda são bastante seguros, e que na verdade o DoD é que se deu conta que seus operadores (humanos) podem ser descuidados o suficiente para não executar o procedimento da maneira correta. Tal argumento não deixa de ser bastante forte, mas ainda assim, considero o argumento de Auckland, de que parte dos procedimentos de limpeza do disco são propositalmente omitidos pelas autoridades, mais relevante.
Após ler uma boa quantidade de parágrafos altamente técnicos sobre como os arquivos são gravados na mídia magnética e como eles, neste processo físico de gravação, deixam traços ao serem sobrescritos, julgo que o método de sobrescrever com informação aleatória, mais de sete vezes, um arquivo ainda é razoavelmente seguro, mas não mais do que isso. Para informações realmente sensíveis ou discos-rígidos que serão "passados adiante", creio que vale a pena tentar aplicar o método Gutmann que usa 22 passes (layers) de arquivos aleatórios mas codificados de maneira a causar mais "sujeira" magnética no disco, tornando a recuperação consideravelmente mais difícil (e o desgaste do disco-rígido também é bem maior).
Outro fator que me diz que ainda é possível confiar no método de sobrescrita, é que, segundo a Wikipédia (sem citação), empresas especializadas em recuperação de dados não oferecem o serviço de recuperação de dados sobrescritos. Uma rápida busca no Google por essas empresas e os serviços por elas oferecidos, parece confirmar tal afirmação.
Então, como apagar seguramente os dados de um sistema Ubuntu?
Bom, a primeira coisa a fazer é encontrar um pacote que ofereça um comando de sobrescrita compatível com o método Gutmann. Cruzei com um desses pacotes casualmente quando pesquisava sobre o assunto num escopo mais amplo, no caso o pacote chama-se simplesmente Wipe. Ele promete apagar um arquivo do disco utilizando os padrões e codificações dos passes para o método Gutmann, é opensource e disponível no repositório universe do Ubuntu. Nada mal.
Outro pacote também disponível, criado por um grupo de hackers extremamente famosos, é o secure-delete. Segundo as informações no site dos autores, este pacote possui ferramentas adicionais que limpam a memória e outros lugares do disco-rígido que podem conter informações residuais dos arquivos. E é justamente isso que eu tinha em mente.
O Linux é um sistema com mentalidade e segurança de nível industrial, e isso é bem verdade quando se trata de manter a integridade dos dados armazenados. Tamanha segurança, torna com que seja mais complicado se livrar por completo dos dados indesejáveis.
Minha escolha foi o secure-delete, embora o wipe tenha me parecido muito bom também. Minha idéia era descobrir até onde iam essas ferramentas adicionais do grupo THC.
Usando o comando info, comecei a ler sobre os comandos disponíveis:
# info srm
Retorna, entre outras informações, o seguinte:
Que o arquivo é sobrescrito mais de 27 vezes, usando o método Gutmann, e que opções adicionais de segurança, como abrir o arquivo no modo 0_SYNC (ainda não sei exatamente o que isso significa).
Um comando típico seria: # sudo srm -v [nome do arquivo]
A opção -v é para ativar o modo de verbose, permitindo que seja mais fácil acompanhar o que está acontecendo. Fiz o teste abaixo:
user@user:~/temp$ sudo srm -v draw01c.svg~
Using /dev/urandom for random input.
Wipe mode is secure (38 special passes)
Wiping draw01c.svg~ ************************************** Removed file draw01c.svg~ ... Done
Obs.: não demorou nem 1 segundo a operação, seria interessante testar também em um arquivo maior.
Tudo transcorreu normalmente. Ainda no info, existe o alerta para a permanência de arquivos no /tmp, no swap e na memória RAM, e também para a possibilidade de algum arquivo sigiloso ter sido apagado por meios normais e sobrescrito com algum arquivo em uso ou do sistema. Neste último caso, parafraseando o THC, "nenhuma ferramenta conhecida poderá ajuda-lo." O que é bem verdade. Só formatando o disco, fazendo um fill seguro e reinstalando o sistema... Mas dificilmente isso seria uma opção, né? Eu, pelo menos, não tenho tanta paciência e tempo para fazer uma imagem, formatar e restaurar. E, a bem dizer da verdade, nem necessidade disso...
Acrescento, aos "poréns" do info do THC, justante, os arquivos "*~", cópias de segurança de arquivos modificados geradas automaticamente pelo sistema.

Outra ferramenta do pacote é o sfill.
# info sfill
Basicamente ele faz, no espaço livre do disco-rígido, o que o srm faz com os arquivos. Não testei o comando pois não há necessidade de desgastar meus disco-rígido sobrescrevendo com 38 passes 43.3 GB. O.o

Também há o smem:
# info smem
Neste comando encontrei dois avisos, um que não entendi muito bem, outro que deu para entender. No primeiro estava escrito o seguinte, no parágrafo que fala sobre para que serve o smem: "Note that with the new SDRAMs, data will not wither away but will be kept static - it is easy to extract the necessary information!"
Em português: "Note que com as novas SDRAMs, os dados não irão desaparecer, mas ficarão guardados estáticos - é fácil extrair a informação necessária!" Acredito que isso não queria dizer que o programa não é capaz de realizar o trabalho, mas sim que a tecnologia SDRAM armazena melhor os dados quando computador está desligado do que as tecnologias anteriores. Isso faz sentido num cenário de computadores cada vez mais capazes de hibernar e suspender, economizando energia... O que não faria sentido seria incluir esse comando se ele não fosse capaz de fazer o que promete fazer.
A outra informação é uma recomendação para utilizar o comando no modo rápido, menos seguro, devido a demora de execução do mesmo na memória RAM. Embora possa parecer um contra-senso ele ser mais demorado na RAM do que no disco, é preciso lembrar que o sistema estará, obviamente, ligado durante a execução. O comando sugerido fica assim: # sudo -ll smem
Sendo que os dois "l" são para que apenas um passo de 0x00 seja feito. Isso faz sentido pois a memória RAM é tecnicamente muito diferente dos discos-rígidos. Não testei este comando, ainda, na minha máquina.

At last but not least:
# info sswap
Esse faz o que o sfill e o srm fazem, só que no swap. Primeiro é necessário desmontar o swap com o comando # sudo swapoff - limpar o swap com ele montado é pedir por um crash no sistema. Acredito que esse tipo de ferramenta seja melhor utilizada no modo texto, fora do X.org
Depois de desmontar o disco # sudo -v sswap nele.
Também não testei esse comando, pelo mesmo motivo anteriormente apontado.

Então é isso. O que descobri, até o momento, é que no Linux é preciso considerar o arquivo a ser apagado, cópias de segurança do arquivo feitas automaticamente pelo sistema (*~), o swap, o /tmp, o espaço livre, a memória RAM e, em casos extremos, aquilo que já foi normalmente sobrescrito pelo sistema e demais arquivos.
Vale lembrar que também existe um Bug aberto no Launchpad (embora eu não tenha conseguido achar o endereço agora) que diz que ainda não estão completamente esgotados os estudos sobre a remanescência de dados no Ubuntu. Logo, os procedimentos acima são tão seguros enquanto e quanto não provarem o contrário.
Agora para terminar, se você realmente está determinado a eliminar os arquivos do disco-rígido, uma das melhores opções - comercialmente - disponíveis é o PD-8700: The Hard Drive Degausser and Physical Destroyer... Uma solução que a Skynet aprovaria. Pelo módico preço de US$ 26,000.oo!! Bom, eu prefiro ir de Conan O Bárbaro e recorrer à marreta e a uma fogueira neste caso... Fala sério! (:

E jamais se esqueça: "o componente mais inseguro do computador encontra-se entre o teclado e a cadeira."

Nenhum comentário: