Como deletar arquivos de forma que não possam ser restaurados?

Como deletar arquivos de forma que não possam ser restaurados?

Implementei minha própria versão de uma cifra aes em java para ter um aplicativo de criptografia independente de plataforma que não dependa das cifras disponíveis na jvm em uso.

Este aplicativo deve usar esta cifra para criptografar um arquivo e armazená-lo no disco rígido.

.

O problema: excluir arquivos de forma que não possam ser restaurados

O usuário agora precisa ser capaz de excluir com segurança seu arquivo original, para que ele não possa ser restaurado sem conhecer a chave de criptografia. Para fazer isso, o aplicativo teria que sobrescrever o arquivo várias vezes com dados aleatórios e, finalmente, excluí-lo do sistema.

Mas o Windows, por exemplo, me atrapalha com outra armadilha para proteger os dados criptografados. A partir do Windows Server 2003, a tecnologia Shadow Copy está em uso. Portanto, versões mais antigas do arquivo excluído ainda podem ser ocultadas pelo Windows.

Minhas perguntas agora são:

  • Existem tecnologias semelhantes em uso para Mac ou Linux Mint/Ubuntu?
  • Existe alguma maneira (independente da plataforma) de excluir arquivos sem possibilidade de restaurá-los?

Responder1

A única maneira de evitar de forma verificável a recuperação de arquivos sem acesso em nível de setor ao disco e conhecimento do sistema de arquivos é abrir um arquivo, gravar dados aleatórios nele até que o disco esteja cheio e, em seguida, excluir o arquivo. E se as coisas estão sendo obscurecidas, isso provavelmente não ajuda.

Se o usuário não conseguir acessar a chave, os dados do arquivo serão inúteis e você não poderá se preocupar em excluí-los. Se o tamanho do arquivo puder fornecer informações, preencha seus dados antes de escrever.

Se você deseja que apenas uma única chave funcione na criptografia/descriptografia desse arquivo, será necessário derivar chaves de sessão exclusivas de uma chave mestra upstream.

Observe que se você estiver armazenando chaves, ou coisas que são usadas para derivar chaves, no mesmo lugar que o texto cifrado, você está implementando um sistema fundamentalmente quebrado que sempre pode ser quebrado eventualmente.

Responder2

Infelizmente, não há como contornar isso. Várias implementações de software de sistema operacional integrado ou ferramentas de terceiros são projetadas para reter dados para quepodeser recuperado. Não há nada que você possa fazer em seu aplicativo que possa substituir isso. O versionamento de arquivos, cópias de sombra, backups, etc. farão cópias do seu arquivo.

A única coisa que você pode fazer é armazenar os arquivos em um dispositivo ou volume que não possua “backups”.

informação relacionada