LoginSignup
1
2

More than 1 year has passed since last update.

古いサーバや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:\>
  1. Solaris8とか・・メモした時代が伺えます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2