Ubuntu でデータ消去(USBメモリ,ディスク,SSDなど)

このページのコマンドは,指定したデバイス上の全データを消去する。デバイス名を誤って指定すると,OS が入ったディスクや他のデータも失われる。次の「デバイス名の確認」の手順で対象を特定してから実行する。

デバイス名の確認

消去対象のデバイス名(例: /dev/sda, /dev/sdb, /dev/nvme0n1)を,次のコマンドで確認する。

lsblk -o NAME,SIZE,MODEL,SERIAL,MOUNTPOINTS

表示された容量,モデル名,シリアル番号を,消去したい実機の表示と照合する。同容量のディスクが複数ある場合は,シリアル番号での照合が確実である。GUI 環境では「ディスク」ユーティリティ(sudo gnome-disks)でも同じ情報を確認できる。

MOUNTPOINTS 欄に //boot が表示されるデバイスは,稼働中の OS が入っているディスクである。これは消去対象にしない。対象デバイスがマウントされている場合は,先にアンマウントする。

sudo umount /dev/<デバイス名>*

HDD のデータ消去: shred

HDD(ハードディスクドライブ)では,shred コマンドでデバイス全体を上書きする。

sudo shred -n 1 -v -z /dev/<デバイス名>

各オプションの意味は次の通りである。

数百 GB 以上のディスクでは,完了までに数時間を要する。

SSD・USBメモリでの shred の限界

SSD や USB メモリなどのフラッシュメモリ製品では,shred の効果は限定的である。内部のコントローラ(FTL: Flash Translation Layer)が行うウェアレベリング(書き込み位置の分散)やガベージコレクションにより,OS からの上書き命令が元データの物理ブロックに適用される保証がないためである。予備領域に古いデータが残ることがある。

SSD では,次に示すファームウェアレベルで動作する専用コマンドを用いる。

SATA SSD: Secure Erase (hdparm)

まず,対象 SSD が Secure Erase に対応しているか,およびセキュリティ状態を確認する。

sudo hdparm -I /dev/sdX

出力の Security 欄に supported: enhanced erase などの記載があれば対応している。frozen と表示されている場合,BIOS/UEFI がセキュリティ機能をロックしているため,コマンドは失敗する。サスペンド(スリープ)からの復帰でロックが解除されることが多い。

sudo systemctl suspend

復帰後に sudo hdparm -I /dev/sdX を再実行し,not frozen になったことを確認してから次に進む。

Secure Erase は,ユーザーパスワードを設定した状態でのみ実行できる。パスワードを設定し,続けて消去を実行する。/dev/sdX は対象の SATA SSD のデバイス名(例: /dev/sda)に置き換える。

sudo hdparm --user-master u --security-set-pass password /dev/sdX
sudo hdparm --user-master u --security-erase password /dev/sdX

消去が正常に終わると,設定したパスワードは自動的に解除される。処理途中で電源が切れると,パスワードが設定されたままドライブが使用不能になる場合があるため,実行中は電源を切らない。

NVMe SSD: nvme-cli (format / sanitize)

NVMe 接続の SSD では nvme-cli を使う。インストールは次の通りである。

sudo apt install nvme-cli

対象デバイスと対応機能を確認する。

sudo nvme list
sudo nvme id-ctrl -H /dev/nvmeXnY

id-ctrl の出力にある sanicap 欄で,Block Erase や Crypto Erase への対応を確認できる。/dev/nvmeXnY は対象デバイス名(例: /dev/nvme0n1)に置き換える。

方法1: NVMe Format(ユーザーデータ領域の消去)

sudo nvme format /dev/nvmeXnY -s 1

-s 1 はユーザーデータ消去,-s 2 は暗号化消去(Crypto Erase)を指定する。実行時に確認プロンプトが表示される場合があり,--force を付けると省略できる。

方法2: NVMe Sanitize(ブロック消去)

sudo nvme sanitize /dev/nvmeXnY -a 2

-a 2 はブロック消去,-a 3 は上書き,-a 4 は暗号化消去を指定する。Sanitize は非同期で実行されるため,進行状況は次のコマンドで確認する。

sudo nvme sanitize-log /dev/nvmeXnY

各オプションの詳細は man nvme-formatman nvme-sanitize で確認できる。

その他の手段・事前対策