web-dev-qa-db-ja.com

基本的なUnix / Linuxコマンドラインツールを使用して、ワイプやシュレッドなどのツールなしで、自分でファイルを安全に消去することはできますか?

タイトルのとおり、これは可能ですか?

myfile.datという名前のファイルがあるとしましょう。rmは機能しません。wipeshredなどのツールをインストールできない場合は、このファイルを自分で安全に消去できます「?

8
user285444

このようなツールを使用しても、このような安全な消去方法が機能するかどうかは、基盤となるファイルシステムに依存します。

最新のコピーオンライトベースのファイルシステムを使用している場合、これらのツールはファイルで使用されている以前のブロックに書き込みを行わないため、まったく機能しません。

安全な消去を行う場合は、ファイルシステムに組み込まれたその機能のサポートが必要か、ファイルシステムがファイルのディスクブロック番号を取得できるインターフェイスを実装する必要があります。ただし、後者の方法はセキュリティ上のリスクがあり、特権ユーザーのみがサポートできます。

12
schily

実際にファイルレベルの消去がうまく機能するかどうかは、基盤となるファイルシステムとドライブハードウェアに大きく依存することに注意してください。 ext4などの最新のコピーオンライト(ジャーナリング)ファイルシステムは、元の場所のファイルデータを「上書き」しないため、shredwipeなどのほとんどのファイル指向の消去ツールが作成されます。何年も前に比べてはるかに有用ではありません。 SSDはブロックレベルでも同様の特性を備えています。詳細は https://www.howtogeek.com/234683/why-you-cant-securely-delete-a-file-and-what-to-do-instead/

したがって、これを旧式の磁気ハードドライブとジャーナル化されていない非COWファイルシステムで行うと想定する必要があります。 1990年代にはおそらく許容できる仮定ですが、2020年には現実的でしょうか?

すると、「基本的なUnix/linux cmmand line tools」は曖昧に思えます。 shredはcoreutilsの一部であり、is「基本的なUnix/Linuxコマンドラインツール」のセットです。したがって、1つのレベルでshredを使用すると、要件を満たします。

shred -zu FILENAME

それ以外の場合は、既存のファイルの内容を(おそらく繰り返し)上書きし、「自分で」削除する方法を求めているようです。 ddを使用してファイルにゼロをコピーすることもできますが、ddもcoreutilsの一部であるため、実際にshredを使用するよりも「自分で」行うのはなぜですか。議論の余地があります。

「自分で」とは、shまたはbashの内部コマンドのみを使用することを意味しますか?

6

通常、この問題は重要であるため、ソリューションがどの程度歪んでいるかは関係ありません。

はい、ファイルを安全に削除できます

原理で。

しかし、それが重要な場合、これは実際に実用的な解決策になる可能性があります。

ファイルを安全に削除するツールが存在する場合、実際にはファイルシステムを知る必要があります。したがって、これを一般的に実行できるツールは実際には存在できません。

ただし、ファイルシステムについて想定する必要はありません。

ファイルシステム全体を削除できます!

通常のrmコマンドを使用して、ファイルシステムレベルで、完全に忘れたいファイルを削除することから始めます。

$ rm -f myfile.dat

現在、ファイルシステムには存在しません。ただし、削除には時間がかかるため、コンテンツはファイルシステムの下のストレージにまだ存在していることがわかっています。また、ファイルシステム自体がまだどこにあるかについての情報を持っていることもよくあります。

ファイルの痕跡が残っていないファイルシステムが必要です。そしてファイルシステムの表面から見ると、すでに痕跡は残っていません!

次に、適切な新しい空のファイルシステムを別の場所に作成します。

次に、古いファイルシステムのコピーをファイルレベルで作成します。このファイルシステムは既にクリーンです。

ファイルからの情報がどこにあるかについてはまだよくわかりませんが、古いファイルシステムの下のストレージにあることがわかります。古いファイルシステムがまだ存在することを無視し、/dev/urandomからそれに疑似ランダムバイトを書き込んでストレージをクリーンアップします。

データを削除するにはそれで十分です。
それがなくなったとまだ確信がない場合は、/dev/randomから実際の乱数を書き込もうとしないでください。そこから読み取ることができるランダム性はそれほど多くなく、他のソフトウェアもランダム性を必要とします。

リラックスするまで、/dev/urandomの疑似乱数で上書きすることを繰り返します。

次に、新しいファイルシステム全体を元の保管場所に移動できます。できました。

0
Volker Siegel