ファイルを復元できないように削除するにはどうすればよいでしょうか?

ファイルを復元できないように削除するにはどうすればよいでしょうか?

使用中の JVM で利用可能な暗号に依存しない、プラットフォームに依存しない暗号化アプリケーションを作成するために、Java で独自のバージョンの AES 暗号を実装しました。

このアプリケーションは、この暗号を使用してファイルを暗号化し、ハードドライブに保存する必要があります。

問題: 復元できないような方法でファイルを削除する

ユーザーは、暗号化キーを知らなければ復元できないように、元のファイルを安全に削除できる必要があります。そのためには、アプリはランダムなデータでファイルを複数回上書きし、最終的にシステムから削除する必要があります。

しかし、たとえば Windows では、暗号化されたデータを保護するための別の落とし穴があります。Windows Server 2003 以降では、シャドウ コピー テクノロジが使用されています。そのため、削除されたファイルの古いバージョンは、Windows によって依然として隠されている可能性があります。

私の質問は次のとおりです:

  • Mac や Linux Mint/Ubuntu でも同様のテクノロジーが使用されていますか?
  • ファイルを復元できないように削除する (プラットフォームに依存しない) 方法はありますか?

答え1

ディスクへのセクターレベルのアクセスやファイルシステムの知識なしにファイルの復元を確実に防止する唯一の方法は、ファイルを開き、ディスクがいっぱいになるまでランダムなデータを書き込んでからファイルを削除することです。シャドウイングされている場合、これはおそらく役に立ちません。

ユーザーがキーにアクセスできない場合、ファイル内のデータは役に立たないので、削除しても意味がありません。ファイルの長さによって情報が漏れる可能性がある場合は、書き込む前にデータを埋め込んでください。

ファイルの暗号化/復号化に単一のキーのみを使用する場合は、アップストリーム マスター キーから一意のセッション キーを派生させる必要があります。

キー、またはキーを導出するために使用されるものを暗号文と同じ場所に保存している場合、最終的には必ず解読される可能性がある、根本的に壊れたシステムを実装していることに注意してください。

答え2

残念ながら、これを回避する方法はありません。OSに組み込まれたソフトウェアやサードパーティのツールのさまざまな実装は、データを保持するように設計されているため、できる回復できません。アプリケーション内でこれを上書きできるものはありません。ファイルのバージョン管理、シャドウ コピー、バックアップなどにより、ファイルのコピーが作成されます。

唯一できることは、「バックアップ」のないデバイスまたはボリュームにファイルを保存することです。

関連情報