ファイルが削除されても、他のファイルで明示的に上書きされない限り、その内容はファイルシステムに残ったままになります。 wipe
コマンドはファイルを安全に消去できますが、どのファイルにも使用されていない空きディスク領域を消去することはできません。
これを達成するために何を使うべきですか?
警告:最近のディスク/ SSDハードウェアや最近のファイルシステムでは、削除できない場所でデータが流れてしまうことがあります。このプロセスではまだディスクにデータが残っている可能性があります。データを消去する唯一の安全な方法は、ATA Secure Eraseコマンド(正しく実装されている場合)、または物理的な破壊です。 も参照してください。ハードドライブ上のすべての情報を確実に消去するにはどうすればよいですか?
Secure-deleteと呼ばれる一連のツールを使用できます。
Sudo apt-get install secure-delete
これには4つのツールがあります。
srm
- 既存のファイルを安全に削除するsmem
- ramから安全にファイルの痕跡を削除するsfill
- ハードドライブの空き領域としてマークされているスペースをすべて消去しますsswap
- スワップスペースからすべてのデータを消去します。
srm
のmanページから
srmは泥棒、法執行機関または他の脅威によって回復することができない安全な方法でメディア上のデータを削除するように設計されています。このワイプアルゴリズムは、第6回Usenixセキュリティシンポジウムで発表された、有力な民間暗号技術者の一人であるPeter Gutmannによる論文「磁気および固体メモリからのデータの安全な削除」に基づいています。
Srmの安全なデータ削除プロセスは次のようになります。
- 0xffで1回パス
- 5回のランダムパス。
/dev/urandom
は利用可能なら安全なRNGに使われます。- ピーターグットマンによって定義された特別な値で27回のパス。
- 5回のランダムパス。
/dev/urandom
は利用可能なら安全なRNGに使われます。- ファイルをランダムな値に変更します
- ファイルを切り捨てる
セキュリティの追加手段として、ファイルはO_SYNCモードで開かれ、それぞれのパスの後に
fsync()
呼び出しが行われます。srm
はスピードのために32kブロックを書き込み、ディスクキャッシュのバッファをいっぱいにしてファイルに属する古いデータをフラッシュし上書きするように強制します。
最も簡単な方法は、シングルパスだけが必要で、すべてをゼロに置き換えたい場合、次のとおりです。
cat /dev/zero > zero.file
sync
rm zero.file
(ワイプしたいファイルシステム上のディレクトリから実行します)
(sync
コマンドは、すべてのデータがディスクに書き込まれるようにするためのパラノイア対策です。インテリジェントキャッシュマネージャは、ファイルがリンク解除されたときに保留中のブロックの書き込みをキャンセルできることを解決する可能性があります)
この操作の間、ファイルシステム上に空きスペースがまったくなくなる時間があります。結果のファイルが大きく断片化されている場合、削除にはしばらく時間がかかります。空き領域が完全にゼロになるまでの時間を短縮するには
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
cat /dev/zero > zero.file
sync
rm zero.small.file
rm zero.file
高価なフォレンジック操作をせずに、誰かが古いファイルの内容を読むのを防ぐのに十分なはずです。もう少し安全な、しかし遅い、変種のためには/dev/zero
を/dev/urandom
に置き換えてください。もっとパラノイアをするには/dev/urandom
で複数のステップを実行しますが、それほどの努力が必要な場合はcoreutilsパッケージのshred
ユーティリティを使うのがいいでしょう:
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
shred -z zero.small.file
cat /dev/zero > zero.file
sync
rm zero.small.file
shred -z zero.file
sync
rm zero.file
上の例では、小さい方のファイルは大きい方のファイルを作成する前にシュレッドされているので、大きい方のファイルが完成するとすぐに削除できます。シュレッドプロセスは大きなファイルに長い時間をかけ、NSAから何かを隠そうとしているのでなければ、本当に必要なIMOではありません。
上記のすべてはどのファイルシステムでも動作するはずです。
ファイルサイズ制限:
DanMouldingが以下のコメントで指摘しているように、これはいくつかのファイルシステムでファイルサイズの制限に問題があるかもしれません。
FAT32では、2GiBのファイル制限のため、間違いなくが問題になるでしょう。最近では、ほとんどのボリュームがこれよりも大きくなっています(8TiBがボリュームサイズの上限IIRCです)。これを回避するには、大きいcat /dev/zero
出力をsplit
を介してパイプ処理し、複数の小さいファイルを生成し、それに応じてシュレッドステージと削除ステージを調整します。
Ext2/3/4ではそれほど気にする必要はありません。デフォルトの/ common 4Kブロックではファイルサイズの上限は2TBなので、これには巨大なボリュームが必要です。問題(これらの条件下での最大ボリュームサイズは16TB)。
(まだ実験的な)btrfsを使用すると、最大ファイルサイズとボリュームサイズの両方が16EiBになります。
NTFSでは、最大ファイル長が最大ボリューム長よりも大きい場合があります。
詳細情報の出発点:
http://ja.wikipedia.org/wiki/Ext3#Size_limits
http://ja.wikipedia.org/wiki/Btrfs
http://ja.wikipedia.org/wiki/Ntfs#Scalability
仮想デバイス
最近のコメントで言及されているように、仮想デバイスに関する追加の考慮事項があります。
まばらに割り当てられた仮想ディスクの場合、zerofree
で使用されるような他の方法がより高速になります(cat
やdd
とは異なり、これはほとんどすべてのunix-like OSで利用できることを信頼できる標準的なツールではありません)。
スパース仮想デバイス上のブロックをゼロにしても、基礎となる物理デバイス上のブロックは消去されない可能性があることに注意してください。 managerはそのブロックをもう使用されていないものとして作成するので、後で別のものに割り当てることができます。
固定サイズの仮想デバイスであっても、デバイスの物理的な場所を制御できないため、いつでも現在の場所を移動したり新しい物理ディスクのセットに移動したりできます。ブロックが過去に存在した可能性のある以前の場所。
仮想デバイス上の上記の問題の場合:ホストを制御し、その後VM内のディスクを消去した後、または仮想デバイスを移動したりして、未割り当て領域を安全に消去できない限り、何もできません。事後にこれについて行うことができます。唯一の頼みは、最初から完全ディスク暗号化を使うことです。暗号化されていないものはすべてそもそも物理メディアに書き込まれません。もちろんVM内で空き領域の消去を要求することもできます。仮想化層ではどのブロックが未使用であるかを実際に確認できないため、FDEはスパース仮想デバイスの有用性を大幅に低下させる可能性があります。 OSのファイルシステム層が仮想デバイスにトリムコマンドを送信し(仮想ディスクがSSDであるかのように)、仮想コントローラがこれらを解釈する場合、これで解決する可能性があります。それについての議論は別のところで問題になっています(私達は最初の質問のために話題から外れることにすでに近づいています、従ってこれがあなたの興味を刺激したならいくつかの実験および/またはフォローアップの質問は順番になるでしょう).
拭き取った後でも、ディスクからいくつのファイル photocc を取り出せるかにショックを受けました。
「空き領域」を0x00で1回だけ、または異なる秘密主義の基準で38回だけ埋めることにセキュリティがあるかどうかは、学術的な議論の多くです。シュレッディングに関する1996年のセミナーの論文の執筆者は自分自身で エピローグ を書いています - これは時代遅れで現代のハードウェアには必要ないと言っています。データが物理的にゼロに置き換えられ、その後回復されるという文書化されたケースはありません。
この手順の真の脆弱リンクは、ファイルシステムです。いくつかのファイルシステムは特別な用途のためにスペースを予約しています、そしてそれは "空きスペース"として利用可能にされていません。 しかしあなたのデータはそこにあるかもしれません。それには写真、個人的な平文の電子メールなどが含まれます。予約されたスペース+ ext4をグーグルしたところ、私のhome
パーティションの5%が予約されていることがわかりました。私はこれがphotorec
が私のものの多くを見つけたところであると思います。結論:シュレッディング方法は最も重要ではありません。マルチパス方法でもデータはそのまま残ります。
マウントする前に# tune2fs -m 0 /dev/sdn0
を試すことができます。 (再起動後にこれがルートパーティションになる場合は、アンマウントした後に-m 5
または-m 1
を実行してください。).
それでも、何らかの形で、いくらかのスペースが残っているかもしれません。
本当に安全な唯一の方法は、パーティション全体を一掃し、ファイルシステムを再作成してから、バックアップからファイルを復元することです。
素早い方法(推奨)
消去したいファイルシステム上のディレクトリから実行します。
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file
注:小さなファイルの目的は、空き容量が完全にゼロになる時間を減らすことです。同期の目的は、データが実際に書き込まれていることを確認することです。
ほとんどの人にとってこれで十分なはずです。
遅い道(妄想)
上記のクリーニング後にデータが回復されるという文書化された事例はありません。可能であれば、それは高価でリソースを必要とするでしょう。
それでも、あなたがあなたのファイルを回復するために秘密機関が多くのリソースを使うであろうと考える理由があるならば、これは十分であるべきです:
dd if=/dev/urandom of=random.small.file bs=1024 count=102400
dd if=/dev/urandom of=random.file bs=1024
sync ; sleep 60 ; sync
rm random.small.file
rm random.file
ずっと時間がかかります。
警告。あなたが妄想的な方法を選んだならば、これ以降あなたはまだ速い拭き取りをしたいであろう、そしてそれは妄想ではない。純粋にランダムなデータの存在は検出が簡単で安価であり、それが実際に暗号化されたデータであるという疑いを投げかけます。あなたは復号化鍵を明らかにしないことで拷問で死ぬかもしれません。
とても遅い道(クレイジーパラノイド)
1996年のシュレッダーに関する論文の著者でさえ、これは時代遅れで現代のハードウェアには不要なものであるというエピローグを書いています。
しかし、まだ空き時間があり、ディスクをたくさん上書きしても構わない場合は、次のようになります。
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sync ; sleep 60 ; sync
shred -z zero.small.file
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
shred -z zero.file
sync ; sleep 60 ; sync
rm zero.file
注:これは、本質的にsecure-deleteツールを使用することと同等です。
編集前は、この投稿はDavid Spillettのものを書き直したものです。 "cat"コマンドはエラーメッセージを出しますが、他の人の投稿にコメントを書くことはできません。
少なくともUbuntuにはzerofreeユーティリティがあります。
http://manpages.ubuntu.com/manpages/natty/man8/zerofree.8.html
zerofree — zero free blocks from ext2/3 file-systems
zerofree finds the unallocated, non-zeroed blocks in an ext2 or ext3
filesystem (e.g. /dev/hda1) and fills them with zeroes. This is useful
if the device on which this file-system resides is a disk image. In
this case, depending on the type of disk image, a secondary utility may
be able to reduce the size of the disk image after zerofree has been
run.
The usual way to achieve the same result (zeroing the unallocated
blocks) is to run dd (1) to create a file full of zeroes that takes up
the entire free space on the drive, and then delete this file. This has
many disadvantages, which zerofree alleviates:
· it is slow;
· it makes the disk image (temporarily) grow to its maximal extent;
· it (temporarily) uses all free space on the disk, so other
concurrent write actions may fail.
filesystem has to be unmounted or mounted read-only for zerofree to
work. It will exit with an error message if the filesystem is mounted
writable. To remount the root file-system readonly, you can first
switch to single user runlevel (telinit 1) then use mount -o remount,ro
filesystem.
また、zerofreeについてのこのリンクをチェックしてください。 ファイルシステムイメージをまばらに保つ - それは作者からのものです - Ron Yorston(2012年8月9日)
これはGUIでそれを行う方法です。
BleachBitがddよりも優れている(そうでなければとてもいいです)ディスクが最終的にいっぱいになると、BleachBitはiノード(ファイル名などのメタデータを含む)を消去するための小さなファイルを作成します。
あなたは安全な削除パッケージを使用してあなたの空き領域を拭くことができます。
そのパッケージの中には、sfill
ツールがあります。これは、泥棒、法執行機関、その他の脅威によって回復することができない安全な方法で、メディア上の使用可能なディスクスペースにあるデータを削除するように設計されています。
安全な削除パッケージをLinux(Ubuntu)にインストールするには、次のコマンドでそれをインストールします。
$ Sudo apt-get install secure-delete
それからあなたのデータの空きスペースを消去するには、次のコマンドを試してください。
sfill -f -v -ll /YOUR_MOUNTPOINT/OR_DIRECTORY
/ YOUR_MOUNTPOINT/OR_DIRECTORYは、空き領域を消去するためのマウントポイント(df -h
、mount
)またはディレクトリです。
マニュアルを読む http://manpages.ubuntu.com/manpages/hardy/man1/sfill.1.html
ドライブを最高速度で拭きます。
今日のドライブを暗号化するための典型的な指示は、最初にドライブをWIPEするように指示します。
以下のコマンドはあなたのドライブをAES暗号文で埋めます。
メインブートドライブを拭く必要がある場合は、ライブCDを使用してください。
端末を開いて特権を昇格させます。
Sudo bash
安全のためにシステム上のすべてのドライブをリストしましょう。
cat /proc/partitions
注:/dev/sd{x}
を消去したいデバイスに置き換えます。
警告:これはアマチュア向けではありません!あなたのシステムを起動不能にすることができます。
Sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > /dev/sd{x}
私はこれがどれくらい速いかに驚いています。
私はdd
を使って空き領域を埋めるために1つ以上の大きなファイルを割り当て、それから安全な削除ユーティリティを使います。
Ddでファイルを割り当てるには:
dd if=/dev/zero of=delete_me bs=1024 count=102400
これにより、サイズが100 MBのdelete_me
という名前のファイルが生成されます。 (ここでbs
は1kに設定された「ブロックサイズ」で、count
は割り当てるブロック数です。)
その後、作成したファイルに対して、お気に入りの安全な削除ユーティリティ( shred
を使用しています)を使用します。
しかし、注意:バッファリングは、ディスク全体を実行しても意味がありません。
あなたはおそらくすでに GNU coreutilsパッケージ をあなたのシステムにインストールしているでしょう。それはコマンド シュレッド を提供します。
より簡単な方法は scrub を使うことです。
scrub -X dump
これにより、現在の場所にdump
フォルダが作成され、ディスクがいっぱいになるまでファイルが作成されます。 -p
オプション(nnsa|dod|bsi|old|fastold|gutmann
)でパターンを選ぶことができます。
スクラブをインストールするのは簡単ではありません( これについてはUbuntuフォーラムを参照してください )。インストールが完了すれば、本当に簡単で効率的なツールになります。君の手に。
私はLinuxとMacOSで動く簡単な解決策を見つけました。ディスクのルートフォルダに移動して次のコマンドを起動します。
for i in $(seq 1 //DISKSPACE//); do dd if=/dev/zero of=emptyfile${i} bs=1024 count=1048576; done; rm emptyfile*;
// DISKSPACE //はハードディスクのサイズ(GB)です。
ddを使用して空き容量をゼロにするだけです。それは神話のデータが何度も上書きされる必要があり(ちょうどpeter guntmannに尋ねる)ランダムなデータであり、1が0の場合は不自然な活動を意味します。その結果、書き込み時間が短縮されたクリーンドライブになります。それに加えて、安全な削除プログラムは、彼らが現代のファイルシステム(ジャーナルされた)の上に本物のファイルさえ上書きすることさえ保証できません。あなた自身を支持してphotoscを取得し、混乱を見るためにあなたのドライブをスキャンし、それをそのままに見えるようにするために1で、必要に応じてゼロでそれを拭いてください。 photoccがまだ何かを見つけたら、それが利用可能なすべてをスキャンしていることを覚えているので、再びrootユーザーでこれを慎重にしてください。
覚えておいて、cia/fbi/nsaはあなたの磁気メディアビットの実際の状態を読むことができる派手なマシンを持っていません。それはすべて昔に書かれた単なる論文でした。 「what-if」です。あなたは一度だけ拭く必要があります。
これが私が使っている "sdelete.sh"スクリプトです。詳細はコメントを見てください。
# Install the secure-delete package (sfill command).
# To see progress type in new terminal:
# watch -n 1 df -hm
# Assuming that there is one partition (/dev/sda1). sfill writes to /.
# The second pass writes in current directory and synchronizes data.
# If you have a swap partition then disable it by editing /etc/fstab
# and use "sswap" or similar to wipe it out.
# Some filesystems such as ext4 reserve 5% of disk space
# for special use, for example for the /home directory.
# In such case sfill won't wipe out that free space. You
# can remove that reserved space with the tune2fs command.
# See http://superuser.com/a/150757
# and https://www.google.com/search?q=reserved+space+ext4+sfill
Sudo tune2fs -m 0 /dev/sda1
Sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'
Sudo sfill -vfllz /
# sfill with the -f (fast) option won't synchronize the data to
# make sure that all was actually written. Without the fast option
# it is way too slow, so doing another pass in some other way with
# synchronization. Unfortunately this does not seem to be perfect,
# as I've watched free space by running the "watch -n 1 df -hm"
# command and I could see that there was still some available space
# left (tested on a SSD drive).
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file
Sudo tune2fs -m 5 /dev/sda1
Sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'
これは答えではありません!pv
...を使いたい人のための単なるコメントです。
Linux Mint 17.3では、pv
(pipe view)を使用して、執筆を進めることができます。例えば:
# Install pv (pipe view)
Sudo apt-get install pv
# Write huge file of approximate size of /dev/sdb, using urandom data:
pv --timer --average-rate --progress --numeric --eta --interval 5 --size "$(blockdev --getsize64 /dev/sda )" /dev/urandom >Rand.file
ここでの利点は、プログレスバー、ETA、そして継続的に更新されるデータレートが得られることです。デメリットは、これが1行に書き込まれ、ディスクがいっぱいになると(エラーを返す)、消えることです。この非常に長い操作が行われている間、OSはディスクを使用する可能性があるため、特にOSボリュームではフルサイズが概算であるため、これが発生します。
非常に古いHDでは、/dev/urandom
を使用して約13 MB/s、約70 MBのデータ転送速度が得られます。 /dev/zero
を使用する場合は/ s。生のdd
またはcat
を使用し、pv
を使用しない場合、これはおそらくさらに改善するでしょう。
私は時々このbashワンライナーを使用します。
while :; do cat /dev/zero > zero.$RANDOM; done
ディスクがいっぱいになったと言ったら、ただ押すだけです。 Ctrl+C 作成したzero.*
ファイルを削除します。
ファイルサイズの制限にかかわらず、どのシステムでも動作します。cat: write error: File too large
エラーを無視します。