Um arquivo nada mais é do que uma sequência de dados distribuída no disco. Para resolver a bagunça os arquivos são relacionados em uma tabela, este é o trabalho fundamental dosistema de arquivos. Quando você manda um arquivo para a lixeira ele é simplesmente movido da pasta de origem para uma pasta chamada lixeira. Quando excluímos um arquivo a sua referência na tabela é eliminada, deixando os blocos que ele ocupa "órfãos", prontos para serem preenchidos com qualquer outro conteúdo assim que possível. Imagine um livro que é removido do índice da biblioteca, mas continua na estante, mesmo que ninguém a princípio vá localizá-lo.
Por isso é relativamente simples recuperar um arquivo. Um software especial varre todo o disco procurando por sequências que façam sentido, revelando qualquer informação solta por ali. Quanto mais tempo decorrido após a exclusão, mais provável é que o sistema tenha reutilizado o espaço e "passado por cima" do conteúdo anterior. Uma boa ferramenta livre para o trabalho é o TestDisk.
Se você tem algum arquivo que não deseja que seja recuperado tão facilmente, você deveapagar este arquivo com segurança. A técnica é simples. Antes de apagar o arquivo (remover da tabela de alocação do sistema de arquivos) o documento é sobrescrito várias vezes com dados aleatórios, e em seguida removido.
No Windows não há ferramenta nativa para isso. Você pode baixar o pacote do SysInternals Suite e usar o utilitário Sdelete. Se você não conhece o SysInternals leia este artigo. Copie o executável do Sdelete para a pasta "C:\Windows\system32" e você já pode usá-lo como um comando qualquer. Para apagar um arquivo use:
sdelete -p 5 arquivo.txt
Consulte opções adicionais com o parâmetro "/?".
sdelete /?
O AVG Anti Vírus 2014 veio com a opção de "triturar" arquivos integrada no menu de contexto. Se você usa o AVG, mesmo o Free, você pode simplesmente clicar com o botão direito no arquivo e triturá-lo.
Resolvendo o problema no Linux ou um LiveCD
O Linux tem uma ferramenta nativa para o serviço, o shred. O uso é bem simples:
shred -n 5 arquivo.txt
Você pode comprovar a ação exibindo o conteúdo do arquivo logo em seguida. Verá que o conteúdo foi sobrescrito por dados ininteligíveis. A opção "-n 5" especifica a quantidade de vezes que o arquivo será sobrescrito.
Existe ainda a opção "-u" que remove o arquivo em seguida. O padrão é apenas "picotar" o arquivo sem apagá-lo, já que você poderia estar usando o mesmo comando em arquivos especiais como partições, que não podem ser apagados. Então para picotar e apagar o arquivo seria:
shred -u -n 5 arquivo.txt
Outro método interessante é dar boot no sistema com um live CD e apagar partições ou mesmo discos inteiros usando o shred. Imagine que você tem um HD com infirmações sigilosas da empresa que não será mais utilizado.
shred -n 5 /dev/sda
Lembre que ele percorrerá todo o disco, então se você definir um número muito alto de escritas pode levar muito tempo. Usando um live CD também é válido usar do dd para realizar a tarefa, e destruir o conteúdo de um disco. Por exemplo:
dd if=/dev/zero of=/dev/sda # Preenche o disco com Zeros
dd if=/dev/random of=/dev/sda # Preenche o disco com dados aleatórios
Outra opção interessante é usar os atributos para definir aquivos que devem ser apagados com segurança. Os atributos oferecem uma série de funcionalidade no sistema de arquivos, um dele é o atributo "s" (minúsculo) que informa que os blocos devem ser preenchidos com zeros antes que o arquivo seja apagado. Para definir o atributo "s" em um arquivo use o comando chattr. Alguns atributos só podem ser definidos pelo root, então considere dar uma lida na documentação antes de usar os recursos:
# chattr +s arquivo.txt # Adiciona o atributo "s" ao arquivo
$ lsattr arquivo.txt # exibe os atributos do arquivo
Por fim você deve lembrar que os sistemas de arquivos modernos podem possuir cópias dos dados temporariamente devido ao uso do journaling. Ou mesmo em locais onde há snapshots das alterações das pastas, backups automáticos etc. Você pode consultar a documentação e este artigo AQUI para se orientar. O mais indicado mesmo é executar a limpeza em todo o HD (ou pendrive) no caso de prevenção de vazamento de informações. Mas se você está realmente preocupado com o conteúdo deste arquivo nunca pare de alimentar a sua paranoia.