HDDを完全消去したい。
要件としては、
(1)乱数、または、ゼロを書き込む(1回で十分)
(2)途中の経過時間、終了予測時間を表示して欲しい
(3)処理時間が速い事
(1)は1回書込みでは不十分という声があるかもしれないけど、どういう攻撃者を想定しているのかの議論が必要だ。
個人のHDDであり、電子顕微鏡みたいな数千万円するような大掛かりな機器を使って、残留磁気を1ビットづつ解析するような攻撃者を想定していないので、1回で十分とする。
企業の漏洩してはいけない情報や、国家機密、軍事情報等は、十分な回数の消去を行って下さい。
以下、時間を測定しました。
【測定環境】
1.PC Lenovo G580
CPU Intel Celeron B820@1.70GHz
Memory 4096MBytes
2.HDD
Western Digital WD3200BPVT - 24JJ5T0, 320GB, SATA, 内蔵
3.Software
(1)DBAN (乱数又はゼロ); Bootable CD/DVD
メルセンヌ乱数、1回、Verify無し
Quick Erase(ゼロ)、1回、Verify無し
UEFIに対応していないため、最近のPCでは使いづらい
(2)shred (乱数 又は ゼロ) ; Linux (例えば SystemRescueCD)
# shred -v -n 1 /dev/sda (乱数1回、ゼロ上書き無し)
# shred -v -n 0 -z /dev/sda (乱数0回、ゼロ上書き1回)
(3)dd (/dev/urandom 又は /dev/zero) ; Linux標準コマンド
# dd if=/dev/urandom of=/dev/sda bs=64M status=progress
# dd if=/dev/zero of=/dev/sda bs=64M status=progress
(4) fromat ; Windows標準コマンド。formatコマンドでも/p:0でゼロフィルしてくれるようだ。
c:\> format z: /fs:ntfs /p:0
z: ドライブレターを指定する
/fs:ntfs ファイルシステムとしてNTFSを指定する。他に、MO光磁気ディスク /fs:fat32、/fs:fatなど
/P:count ボリュームのすべてのセクターを 0 にします。この処理の後、
ボリュームが、"count" の回数だけ毎回異なる乱数で上書き
されます。"count" が 0 の場合、すべてのセクターを 0 に
した後にそれ以外の上書きは行われません。このスイッチは、
/Q が指定されていない場合は無視されます。
(訳が間違っている? /Q(クイックフォーマット)が指定されている場合は、
/Pオプションは無視されて、クイックフォーマットになります)
(2), (3)はsystemrescuecd を利用しました。ベースはArchLinuxっぽいです。
Windowsのツールも追記しましたが、時間測定までは行っていません。
追記:
format コマンドの他、diskpart clean all や、cipher コマンドでも消去(ゼロフィル、乱数書込み)ができるようだが、
・ドライブ指定を間違えないようにしたい。難しい操作は避けたい。
・消去中の進捗状況(%)が見えないと、進んでるのか、いつまでかかるのかが分からない
ことから、format コマンドで実行するのが良いと思います。
大容量HDDで1晩かかっても終わらなさそうな時は、適当な大きさで、パーティションを分け、パーティション毎にやっています。
4.測定結果
(1)-1 DBAN 乱数1回 91分0秒
(1)-2 DBAN ゼロ1回 82分00秒
(2)-1 shred 乱数1回 110分38秒
(2)-2 shred ゼロ1回 82分02秒
(3)-1 dd 乱数1回 110分56秒
(3)-2 dd ゼロ1回 82分32秒
5. 評価
一番速いのはDBAN。次は、shred ≒dd ほぼ同じ。
乱数とゼロでは、ゼロの方が速いようです。
ゼロ書き 65MBytes/s
乱数書き 58MBytes/s(DBAN), 48MBytes/s(shred/dd)
1TBなら、DBANゼロ書きで、4時間15分位かかる。
HDDの接続インタフェースが速くなったり、PCが高速ならもっと早くできるのだろう。