PC内のデータを完全消去する方法

あとからデータを復旧されないために、データを完全消去する方法について調べてみました。

※基本的にArchWikiの記事に書いてあることを抜き出しただけです。
ディスクの完全消去 - ArchWiki
ソリッドステートドライブ/メモリセルの消去 - ArchWiki

最初に

USBブートなどで外部ディスクからOSを起動し、データ消去の対象となるデバイスをマウントします。
(当たり前ですが、内部ディスクを使って起動したOSからでは内部ディスクを完全消去はできません)
ここでは、Linux系のOSを使うことを前提にします。

lsblk

などのコマンドで、対象とするデバイス名を確認。(サイズを確認すればだいたい分かるはず)

HDDの場合

shredコマンドを使うのが分かりやすいでしょう。

shred -v -n 3 -z /dev/sdX

/dev/sdXの部分は、消したいデバイス名に変えてください。

上のコマンドで、

  1. ランダムデータをディスク全体に書き込む(3回)
  2. 最後にすべてゼロで上書きする

を実行します。
-nのあとの数字を変えれば、ランダムデータを書き込む回数を変えることができます。回数を増やすほど時間がかかりますが、安全度は増すはず。

SSDの場合

SSDは内部構造が違うため、上記の方法で上書きするのは有効でない可能性があるそうです。よって別の方法を使います。
SATA接続の場合の手順。NVMeの場合はまた別の方法になるようです。

1.ドライブのセキュリティをnot frozenにする

hdparm -I /dev/sdX | grep frozen

これでnot frozenと表示されたらOKです。
frozenと表示された場合、なんとかしてロック解除してnot frozenに変える必要があります。サスペンド→復帰を繰り返すとうまくいったりするらしいです。

2.ドライブにパスワードを設定する

hdparm --user-master u --security-set-pass PasSWorD /dev/sdX

PasSWorDの部分は設定したいパスワードに変えてください(次の作業で一時的に使うだけなので何でもいい)

3.Secure Eraseの実行

hdparm --user-master u --security-erase-enhanced PasSWorD /dev/sdX

もしくは

 hdparm --user-master u --security-erase PasSWorD /dev/sdX

を実行します。security-erase-enhancedのほうがより入念に削除するようなので、基本的にそちらを選べばいいでしょう(デバイス側が対応していなかったらsecurity-eraseを選ぶ)。これで終了です。