読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

ハードディスクのデータを完全削除

セキュリティ
HDDを廃棄するとき、単にクイックフォーマットするだけでは復元ソフトで復元できてしまいます。 ※とは言っても現在のHDDの記録密度は非常に高いので、一度上書きしたデータはほぼ復元不可能と考えていいです。17回とか30回上書きしないとダメ、というのは昔の話。 今回は復元ソフトでは回復できないレベルまで消去する方法について。使うコマンドは ・shred ・dd です。また今回のHDDのデバイス名を hda とします。Linux でしたら大抵は sdx (x = a, b ,c, ...) と認識されますけど。 また消去方法には ①ゼロフィル(全領域に0を書き込む) ②乱数を上書きする の2通りがあります。どちらのコマンドでもこの2通りの手法が使えます。 ◆shred shred は特別なパターンで繰り返し上書きしデータの復旧がより困難にするデータ消去に特化したコマンドです。主に②乱数を上書きする手法を使用したい時に使います。幾つかコマンド例を書いていきます。v オプションはよくある進行状況表示用。 1) 3回乱数で上書き(米国コンピュータセキュリティセンター(NCSC)方式) # shred -n 3 -v /dev/hda 2) 25回乱数で上書き # shred -z -v /dev/hda 3) 2回乱数で上書き後、ゼロフィル。※回数指定しないと z オプションは上記の25回乱数になるので注意 # shred -n 2 -z /dev/hda ちなみにデバイスでなく普通のファイルを削除するときは $ shred --remove foo.txt のように remove オプションをつけます。 ◆dd dd はダミーデータでの埋め尽くしに使用します。元々ddはファイルからデバイス、デバイスからファイル、デバイス からデバイスへのコピーが可能なため、ディスクのバックアップやダンプで使用されたりします。ここで入力にダミーデータを使うことで、HDDのデータを消去するという手法です。 1) ゼロフィル # dd if=/dev/zero of=/dev/hda 2) 乱数上書き # dd if=/dev/urandom of=/dev/hda ただブロックサイズはデフォルトの512Byteだと小さすぎるので、読み込み→書き込みのループのオーバーヘッドで必要以上に時間がかかるかもしれません。その場合は # dd if=/dev/zero of=/dev/hda bs=10MB とブロックサイズを指定するといいです。最低でもHDDの標準的なアロケーションユニットサイズが4kなのでそれ以上にすべきかと。解説サイトによっては少なくともHDDのキャッシュより大きい方がいいとのこと。 dd で進行状況を確認したい時は別ターミナルで # killall -USR1 dd とすると確認できます。 ソース: Linuxでハードディスクのデータを完全消去 ファイルを完全に消去するには Linuxを用いたHDDのデータ完全消去法 dd でディスクをコピーするよく使う例