web-dev-qa-db-ja.com

パーティションでrmとそれに続くzerofreeを使用したデータ削除はどの程度安全ですか?

srmwipe、またはshredを使用する代わりに、ファイルのリンクを解除して、関連するパーティションでzerofreeを実行することができます。

mount /dev/sda1 /mnt
rm /mnt/confidential_file
umount /mnt
zerofree /dev/sda1

このメソッドは、srmwipe、およびshredと比較してどの程度安全ですか?

PS:ファイルのリンクを解除して、ファイルのシュレッダーをスケジュールする方法も探しています。

4
user207114

単一ファイルのshredは、そのファイルの他のコピーが作成されていないことを保証できる限り、安全であるという希望しかありません。これは、非常に大きなファイル(映画)ではうまく機能する可能性があります。これらを再エンコードしないと仮定すると、小さなファイル、ドキュメント、および実際に操作するすべてのものではまったくうまく機能しません。

[保存]をクリックするたびに、別のコピーがあります。保存すると、ファイルが0バイトに切り捨てられ、新しいファイルが書き込まれるためです。通常は、物理的に異なる場所にあります。ファイルシステムでさえ古いコピーがどこにあるかをもはや知らないので、shredまたは他のユーティリティでそれを削除する方法はありません。

そのため、代わりにすべての空き領域を上書きすることになります。これは単一のファイルを細断処理す​​るよりもはるかに優れていますが、独自の落とし穴があります...ルートリザーブも上書きするにはrootである必要があり、ファイルシステムは完全にいっぱいになることを嫌います—他の書き込みが同時に行われる時間は失敗するため、プロセスで実際のデータが失われることになります。

したがって、この方法のように:

truncate -s 1E sparsefile
shred -v -n 1 sparsefile
sync # other programs will lose data at this point
rm sparsefile

SSDを使用すると、組み込み機能としてゼロフリーを取得できます。fstrim/ discardはまさにそれを実行し、空き領域をすばやく簡単に取り除きます。基本的にSSDでは、トリムが発生した後、削除されたファイルを復元することはできません。

安全ですか?それはファイルシステムとあなたが取り除きたいファイルのサイズに依存します。一部のファイルシステムには、1つのブロックを共有する複数の小さなファイルのように隅々まであり、ランダムなデータでいっぱいの1つの大きなファイルを作成するときに、そのスペースが上書きされることはありません。また、ディレクトリエントリにファイル名が残っているなど、他のトレースが残っている可能性もあります。

デバイス全体を一度上書きするのに勝るものはありません。

# backup everything
blkdiscard /dev/sda    # SSD
shred -v -n 1 /dev/sda # HDD
# create partitions, filesystems, restore backup
3
frostschutz