FreeBSDのcamcontrolでSSDをセキュアイレース(Secure Erase)する
試した環境
手順
今回はUSB接続としたため、secure erase対象のデバイスはda0となっている。ここは適宜読み替えのこと。
デバイスの状態の確認
まずはデバイスがセキュアイレースに対応しているかどうか調べる。
# camcontrol security da0
pass9: <C400-MTFDDAK128MAM 08TH> ACS-2 ATA SATA 3.x device
pass9: 400.000MB/s transfers
Security Option Value
supported yes
enabled no
drive locked no
security config frozen no
count expired no
security level high
enhanced erase supported yes
erase time 2 min
enhanced erase time 2 min
master password rev fffe
特に重要なのは、supported, security config frozen, enhanced erase supportedの項目で、意味は以下のとおり。
supported
security config frozen
デバイスが凍結状態か否かを表す。yesだと凍結状態なのでセキュアイレースができない。
悪意のあるソフトなどからの意図しないセキュアイレースを防ぐため、通常はPC起動時のPOSTの段階でfrozenされるようになっている。
凍結状態を解除するには、BIOSを抜けた後にデバイスを挿す、ないしマシンをスリープさせ、その間にデバイスの電源ケーブルを抜き差しする必要がある。
enhanced erase supported
Secure Eraseの実行
以下のコマンドでセキュアイレースが実行できる。
# camcontrol security da0 -U user -s password -e password
パラメータの意味は以下のとおり。
実際に実行してみた結果が以下のとおり。
# camcontrol security da0 -U user -s password -e password
pass9: <C400-MTFDDAK128MAM 08TH> ACS-2 ATA SATA 3.x device
pass9: 400.000MB/s transfers
You are about to ERASE ALL DATA from the following device:
pass9,da0: <C400-MTFDDAK128MAM 08TH> ACS-2 ATA SATA 3.x device
Are you SURE you want to ERASE ALL DATA? (yes/no) yes
Issuing SECURITY_SET_PASSWORD password='erase', user='user', mode='high'
Issuing SECURITY_ERASE_PREPARE
Issuing SECURITY_ERASE_UNIT password='erase', user='user'
camcontrol: ATA SECURITY_ERASE_UNIT via pass_16 failed
最後にfailedしてるのは、コマンドがタイムアウトしたためらしい。
camcontrolはデバイスが返すerase time/enhanced erase timeの時間を見てタイムアウト時間を決めているそうだが、割と高確率でタイムアウトが発生する。
Enhanced Secure Eraseの実行
以下のコマンドで拡張セキュアイレースが実行できる。
# camcontrol security da0 -U user -s password -h password
パラメータの意味は割愛。セキュアイレースと違うのは-eが-hになっただけ。
# camcontrol security da0 -U user -s erase -h erase
pass9: <C400-MTFDDAK128MAM 08TH> ACS-2 ATA SATA 3.x device
pass9: 400.000MB/s transfers
You are about to ERASE ALL DATA from the following device:
pass9,da0: <C400-MTFDDAK128MAM 08TH> ACS-2 ATA SATA 3.x device
Are you SURE you want to ERASE ALL DATA? (yes/no) yes
Issuing SECURITY_SET_PASSWORD password='erase', user='user', mode='high'
Issuing SECURITY_ERASE_PREPARE
Issuing SECURITY_ERASE_UNIT password='erase', user='user'
Erase Complete
なぜかこちらはタイムアウトすることなく、すぐに終了。対象のデバイスによっても挙動が違うかも?
で、本当に消去できてるの?
本当にSecure Erase出来てるかは、正直なところ良くわからない。
デバイスごとに結構挙動が違うようで、今回のRealSSD C400+CSDRU3B6Gの場合、Secure Eraseコマンド発行後はアクセスランプが点滅し何かしら動いてそうではあるが、一晩経っても点滅しっぱなしだった。一方でEnhanced Secure Eraseの方は特に点滅することもなくすぐ終わるし。
ついでにハマったのが、gpart
コマンドの挙動。消去できたかの確認でgpart show da0
してたんだけど、なぜか一旦デバイスを外さないと情報が更新されなかった。
とりあえずデバイスの先頭1GiBが0になってるのは確認できたので、一応消去はされてるっぽい。
# hd -n 1073741824 /dev/da0
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
40000000
参考サイト