古いサーバやPCなどを処分する際に、HDDのデータを復旧できない状態にしないと、情報漏洩等の危険があります。
※普通にファイル等を削除しただけでは、ツールを使ってデータを復旧できる事があります。
物理的に壊す事で対応できますが、それもなかなか難しい場合があるので、その際にはHDD全体にデータを上書きすることなどによって元々あったデータを復旧できなくする事が出来ます。それならHDD/SSDの再利用が出来るので良いですね。
データ消去には諸説あったり最近のトレンドもあると思います。
この記事はかなり古いメモですので予めご了承下さい。
hdparmを使用したSSDのSecure Erase@Linux
Ubuntuでやってみた例です。
状態の確認
# hdparm -I /dev/sdb
Security:
Master password revision code = 12345
supported
not enabled
not locked
frozen
not expired: security count
supported: enhanced erase
2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
最初は上記のようになっていることが多いと思います。
- not enabled:セキュリティ機能がOFF
- not locked:パスワードロックされていない
- frozen:Secure Eraseが実行できないように保護されている
frozen状態を変えるためにマシンを一度サスペンドする
# systemctl suspend
※サスペンドしたら電源ボタンを押すなどして復帰する
※SSDの電源をOFF/ONすることで対応している人もいるようです。環境によりけりなのかな。
状態確認
再びhdparm -I /dev/sdbを実行し,not frozenとなっていることを確認
# hdparm -I /dev/sdb
Security:
Master password revision code = 12345
supported
not enabled
not locked
not frozen
not expired: security count
supported: enhanced erase
2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
SSDにパスワードを設定する
通常はSecure Erase実行後に自動的にパスワード設定も消えます。
# hdparm --user-master u --security-set-pass pass /dev/sdb
Secure Eraseの実行
# hdparm --user-master u --security-erase pass /dev/sdb
もしSecure Erase後もロックされたままになってしまったら
以下のコマンドでロックを解除します。
# hdparm --user-master u --security-unlock pass /dev/sdb
# hdparm --user-master u --security-disable pass /dev/sdb
shred を使用した方法@Linux
KNOPPIXでやってみた例です。
GNU の Coreutils に含まれている shred というツールを使用し、ランダムなデータを何度も書き込む事でデータを完全消去します。実行には長い時間がかかります。(数時間〜数日以上)
http://www.gnu.org/software/coreutils/
書式
shred [オプション] FILE
米国コンピュータセキュリティセンター(NCSC)方式(NCSC-TG-025)水準
ランダムな書き込みを3回繰り返します。
# shred -n 3 -v /dev/hda
※/dev/hda は対象のデバイス名(環境に合わせて変更すること)
米国空軍方式(AFSSI5020,AFI33-202)水準
ランダムな書き込みを25回行います。最後に0で上書きします。
# shred -z -v /dev/hda
※/dev/hda は対象のデバイス名(環境に合わせて変更すること)
オプション
- -n : 回数指定
- -v : 進捗状況のメッセージを表示する
- -z : 最後にNUL(0)で上書きする
dd を使用した方法@Linux
ddを使ってHDD全体を0で上書きします。
if で指定したファイルから1ブロック(何も指定しない場合512byte)読み込み、 of で指定したファイル(消去したいHDDデバイス)に読み込んだデータをそのまま書き込むという動作をエラーがでるまで繰り返します。 /dev/zero というのは仮想デバイスで、読み込むと常に 0 を返すデバイスです。 それを、 HDD 全体を示すファイルに書き込むというわけです。 HDDの先頭から書き込み始め、終端まで書き込むとエラーを出して終了します。
# dd if=/dev/zero of=/dev/hda
※0消去を行った場合でも、残留磁気を調査する事で、データを読み出せる可能性があるようなので、国防レベルを求めるのであれば shred を使うべきでしょう。
2011追記
Solarisっぽくしながら追記
# dd if=/dev/random of=/dev/rdsk/c1t0d0s2
上記には、/dev/zeroと記載していましたが、
/dev/randomで書きこめば、それなりに上書きデータもランダムになるはずです。そうすれば、shredが無いSolarisでもランダムにできるかと。
※/dev/randomはSolaris9から標準搭載ということで、
Solaris8の場合はRecommendedパッチの適用具合で
有無が変わっていたはずです。 1
cipher を使用した方法@Windows
Windowsではcipherコマンドを利用できます。
ただし、コマンドの仕組みとして、空き領域しかワイプされないので注意が必要です。
システムドライブなどの削除には向きません。
※指定したドライブにEFSTMPWPというフォルダが作成され、その中にファイルが作成されます。
Dドライブの消去例。/w:
オプションにDドライブd:
を指定。
C:\>cipher /w:d:
できるだけ多くのデータを削除するために、CIPHER /W の実行中
はほかのアプリケーションをすべて終了してください。
0x00 に書き込み中
......................
0xFF に書き込み中
......................
乱数 に書き込み中
......................
C:\>
-
Solaris8とか・・メモした時代が伺えます。 ↩