= セキュアイレース(Secure Erase) = <> == 目的 == * 手持ちのSSD/HDDでセキュアイレース(Secure Erase)してみた。 * セキュアイレースによる効果は以下の通り。 * HDD/SSDの「サニタイズ」で指定されてる「消去」(「除去」)方法の適用。 * 実装にもよるが、全領域を未使用状態にリセットすることで、ウェアレベリング処理への負担軽減(≒速度回復)を図る。 * クリアされることの確認(ダンプしてオールゼロになること)および実施に当たっての注意点(実行上の注意)を探る。 * サニタイズ(Sanitize)は今回の検証範囲外とする(検証した全ての機種で実行不可能であることを確認)。 == 検証環境 == * [[https://www.FreeBSD.org/|FreeBSD]] 11.2-R * 以下の機器を使用して動作確認した。 * GROOVY [[http://groovy.ne.jp/products/hddset/ud_3000sa.html|UD-3000SA]] USB3・SATA変換器 * UGREEN [[https://www.ugreen.com/products/sata-to-usb-3-0-adapter-cable?lang=ja|SATA USB 3.0 変換アダプタ 2.5/3.5インチHDD/SSD 電源アダプタ付き 50cm]] ([[https://www.asmedia.com.tw/product/7B6yQ54sX7YiFhGD/d1Eyq85QN8GhBwRC|ASMedia ASM1153Eチップセット]]) * 本検証環境ではUSB・SATA変換器に接続したSSDがUSBドライブ(/dev/da0)として見えるものとする。 * もちろん直接SATA接続した上でSATAドライブ(/dev/ada''n'')として見えてもよい。 * デバイス接続時のデバイス名(da1 や ada0 などのケース)に注意して da0 を読み替えること。 === 動作確認 === * [[http://www.sandisk-jp.com/ssd/extreme-pro/|SanDisk Extreme PRO SSD 240GB]](SDSSDXPS-240G) * [[https://ark.intel.com/ja/products/86195/Intel-SSD-DC-S3510-Series-240GB-2-5in-SATA-6Gb-s-16nm-MLC-|Intel SSD DC S3510 240GB]](SSDSC2BB240G601) * [[https://ark.intel.com/ja/products/71915/Intel-SSD-DC-S3700-Series-400GB-2-5in-SATA-6Gb-s-25nm-MLC-|Intel SSD DC S3700 400GB]](SSDSC2BA400G3) * [[https://www.seagate.com/www-content/product-content/ssd-fam/600-pro-ssd/ja/docs/600-pro-ssd-data-sheet-ds1790-3-1310jp.pdf|Seagate 600 Pro SSD 400GB]](ST400FP0021) * HP SSD 60GB(MK0060EAVDR)※ただしセキュアイレース未対応なのを確認 * [[https://www.wd.com/ja-jp/products/internal-storage/wd-red.html|Western Digital Red 1.0GB]](WDC WD10EFRX) === デバイス接続時のカーネルメッセージ(GROOVY) === {{{ ugen0.2: at usbus0 umass0 on uhub0 umass0: on usbus0 umass0: SCSI over Bulk-Only; quirks = 0x8100 umass0:2:0: Attached to scbus2 da0 at umass-sim0 bus 0 scbus2 target 0 lun 0 da0: Fixed Direct Access SPC-4 SCSI device da0: Serial Number 20150331008EF da0: 400.000MB/s transfers da0: 228936MB (468862128 512 byte sectors) da0: quirks=0x2 }}} * umass に「UD-3000SA」の文字列があること。 * da0 に「UD3000SA」の文字列があること。 ※SATA接続の場合、ada''n'' に直接SSDの文字列が表示される。下記のように、同一デバイスにおける接続形態によりメッセージが異なる。 {{{ ada0 at ahcich0 bus 0 scbus0 target 0 lun 0 ada0: ACS-2 ATA SATA 3.x device ada0: Serial Number 160845400358 ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes) ada0: Command Queueing enabled ada0: 228936MB (468862128 512 byte sectors) }}} === デバイス接続時のカーネルメッセージ(UGREEN) === {{{ ugen0.3: at usbus0 umass0 on uhub0 umass0: on usbus0 umass0: SCSI over Bulk-Only; quirks = 0x0100 umass0:2:0: Attached to scbus2 da0 at umass-sim0 bus 0 scbus2 target 0 lun 0 da0: Fixed Direct Access SPC-4 SCSI device da0: Serial Number 000004003FD2 da0: 400.000MB/s transfers da0: 953869MB (1953525168 512 byte sectors) da0: quirks=0xa }}} * umass に「Ugreen Storage Device」の文字列があること。 * da0 は元のメディアの文字列が表示される。 = とにかくセキュアイレースしよう = しゃらくせぃ!さっさとコピペで実行できるコマンド教えやがれ、という自分の心の安寧のための章につき詳細は後述。 {{{#!highlight shell numbers=disable camcontrol security da0 | grep -e frozen -e enhanced camcontrol security da0 -U user -s secure99 -e secure99 -y; date camcontrol security da0 -U user -s secure99 -h secure99 -y; date camcontrol security da0 camcontrol security da0 -U user -k secure99 camcontrol security da0 -U user -d secure99 }}} * frozen かどうか(yes/no)確認する。「yes」ならこれ以上の対応はできない。 * 拡張セキュアイレースに対応しているかどうか(yes/no)確認する。対応してるなら「-h」オプション。対応してないなら「-e」オプションのコマンドを実行。 * セキュアイレースが完了した時間を見計らってステータス確認(応答が正常に返ることを確認する)。 * 完了したらドライブロックを解除(drive locked yes の時、しなくても良い機種もある) * 更にセキュリティモードからの脱出(enabled yes の時、しなくても良い機種もある) = セキュアイレースの実行のロジック = == コマンド実行 == 「{{{camcontrol security da0 -U user -e パスワード}}}」を実行するだけ!(嘘) {{{#!highlight console numbers=disable # camcontrol security da0 -U user -e パスワード pass0: ACS-2 ATA SATA 3.x device pass0: 400.000MB/s transfers camcontrol: Can't secure erase (security is disabled) }}} * 上記コマンドを無条件で実行した場合「security is disabled」であるためセキュアイレースの実行に失敗する(というメッセージが出る)。 * 「security is enabled」にするために確認および事前手順を実施する必要がある。 そもそも論として、以下のコマンドを実行して(ステータス表示)セキュアイレースできるか確認する。 {{{#!highlight shell numbers=disable camcontrol security da0 }}} たとえば !SanDisk ExtremePRO SSD(SDSSDXPS-240G)の場合、以下の結果が得られる。 {{{#!highlight console numbers=disable # camcontrol security da0 pass0: ACS-2 ATA SATA 3.x device pass0: 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 18 min master password rev fffd }}} 上記結果から「enabled no」「security config frozen no」であることが確認できる。 「enabled yes」「security config frozen no」の時、セキュアイレースできるので、本ケースの場合、以下のコマンドで「enabled yes」に変更する。 なお「security config frozen yes」の時はコマンドによる無効化の方法は存在しないので、デバイスの電源をいったん切るしかない。 一応デバイスの電源が入る時は「security config frozen no」になってるはずだが、 BIOS(UEFI)やOS等により「security config frozen yes」にしてしまうモノがあるので注意。 想像してみれば分かると思うが、OSの起動ディスクを簡単にセキュアイレースされてしまうと問題なのが分かると思う。 その場合、BIOSの設定を変更するか、接続を変える(SATA接続→USB接続など)等で対応する。 {{{#!highlight console numbers=disable # camcontrol security da0 -U user -s パスワード pass0: ACS-2 ATA SATA 3.x device pass0: 400.000MB/s transfers Issuing SECURITY_SET_PASSWORD password='パスワード', user='user', mode='high' }}} この結果、ステータス表示結果が以下のように変わる。 {{{#!highlight console numbers=disable # camcontrol security da0 pass0: ACS-2 ATA SATA 3.x device pass0: 400.000MB/s transfers Security Option Value supported yes enabled yes drive locked no security config frozen no count expired no security level high enhanced erase supported yes erase time 2 min enhanced erase time 18 min master password rev fffd }}} 上記状態で再度セキュアイレースを実行すると、以下のように成功する。 {{{#!highlight console numbers=disable # camcontrol security da0 -U user -e パスワード pass0: ACS-2 ATA SATA 3.x device pass0: 400.000MB/s transfers Issuing SECURITY_ERASE_PREPARE Issuing SECURITY_ERASE_UNIT password='パスワード', user='user' Erase Complete }}} == つまりコマンド実行するなら == 「-s」オプションと「-e」オプションは同時に指定できるので、まとめて指定してしまえる。 この時のパスワードはもちろん同一である(当然「-s」オプションの指定が正である)。 {{{#!highlight console numbers=disable # camcontrol security da0 -U user -s パスワード -e パスワード pass0: ACS-2 ATA SATA 3.x device pass0: 400.000MB/s transfers You are about to ERASE ALL DATA from the following device: pass0,da0: ACS-2 ATA SATA 3.x device Are you SURE you want to ERASE ALL DATA? (yes/no) yes Issuing SECURITY_SET_PASSWORD password='パスワード', user='user', mode='high' Issuing SECURITY_ERASE_PREPARE Issuing SECURITY_ERASE_UNIT password='パスワード', user='user' Erase Complete }}} 見てのように、全てのデータを消して(ERASE ALL DATA)いいのか「yes」「no」を聞いてくるので、確認不要(バッチモード)なら「-y」オプションを加えるとよい。 {{{#!highlight console numbers=disable # camcontrol security da0 -U user -s パスワード -e パスワード -y pass0: ACS-2 ATA SATA 3.x device pass0: 400.000MB/s transfers Issuing SECURITY_SET_PASSWORD password='パスワード', user='user', mode='high' Issuing SECURITY_ERASE_PREPARE Issuing SECURITY_ERASE_UNIT password='パスワード', user='user' Erase Complete }}} 「-s」「-e」「-y」のオプション指定の順番に制限は無い。好きな順序で指定してかまわない。 なお「Erase Complete」が表示されず「camcontrol: ATA ATAPI_IDENTIFY via pass_16 failed」 が表示される場合、それなりに処理に時間がかかっているので、「erase time 2 min」 の表示を参考に、とりあえず2分程度待ってみる。 なおセキュアイレース中に何度も「camcontrol security da0」を実行すると、処理が中断することがある。 実行に成功して「drive locked yes」と表示された場合は、途中で中断しているので対処が必要(詳細は後述)。 == 拡張セキュアイレースするなら == 本例のデバイスは「enhanced erase supported yes」であるため、拡張セキュアイレース(Enhanced Secure Erase)を実行することができる。 拡張でないセキュアイレースとの違いは「'''ソフトウェアでアクセスできない不良セクタや代替セクタを含めたセキュアアイレースの実行'''」にある。 実行方法は先に実施した「-e」オプションでの指定を「-h」の指定に変えるだけでよい。 もちろん合わせて「-s」「-y」オプションの使用は可能だ。ここではエッセンシャルな部分だけ説明する。 {{{#!highlight console numbers=disable # camcontrol security da0 -U user -h パスワード pass0: ACS-2 ATA SATA 3.x device pass0: 400.000MB/s transfers Issuing SECURITY_ERASE_PREPARE Issuing SECURITY_ERASE_UNIT password='パスワード', user='user' camcontrol: ATA SECURITY_ERASE_UNIT via pass_16 failed }}} セキュアアイレースの実行と違い、「Erase Complete」ではなくエラー(failed)になっている。 ATAコマンド発行後の応答に時間がかかったためであるが、 以後しばらくアクセスできなくなる(全てエラーになる)。 この事は致命的では無いが安心はできないので、「enhanced erase time 18 min」 により指定された時間(この例では18分)待って、「camcontrol security da0」 を実行して終了を確認すること。 「drive locked yes」と表示される場合は中断したと見てよいし、「drive locked no」 なら完了したと判断して問題無い。 なお !SanDisk ExtremePRO SSD の場合、拡張セキュアイレースが完了するとデバイスが切断(デタッチ)された。 一般的な振る舞いかどうかは不明だが、そういう風に振る舞うデバイスもある、ということで。 == 途中で止まってるケース・止めたケース == セキュアイレース中にドライブの電源を落した、必要以上に時間(10倍とか)がかかってる、 {{{camcontrol security da0}}} を何度も叩いてて中断した可能性がある、という場合、 セキュアイレースが中断している可能性がある。 特に「{{{camcontrol security da0}}}」を実行して応答が返る、かつ「{{{drive locked yes}}}」の時はセキュアイレースが中断している。 {{{#!highlight console numbers=disable # camcontrol security da0 pass0: ACS-2 ATA SATA 3.x device pass0: 400.000MB/s transfers Security Option Value supported yes enabled yes drive locked yes security config frozen no count expired no security level high enhanced erase supported yes erase time 152 min enhanced erase time 152 min master password rev fffd }}} その場合、下記のようにして「drive locked」を解除(yes → no)する。 {{{#!highlight shell numbers=disable camcontrol security da0 -k パスワード }}} また続いて、「enabled」を解除(yes → no)する。 {{{#!hightlight shell numbers=disabled camcontrol security da0 -d パスワード }}} もちろん「enabled no」にせずに再度セキュアイレースを実行するのも問題無い。 いきなり「-d」オプションを指定して「drive unlock」することも可能だが、 「-k」オプションと「-d」オプションを同時に指定して、解除することはできない。 = よくある質問とその答え = == Q.パスワードは何を設定すればいいですか? == A.結論を言えばてきとー。どれくらいてきとーかと言うと、[[https://kb-jp.sandisk.com/app/answers/detail/a_id/18580/~/sandisk-ssdがseccure-erase後にドライブパスワードを求めてくる|SanDisk曰く]]「!SanDisk SSD Dashboard」では「sandisk123」を設定している。 A.一般論としては、 * パスワードを設定して「セキュリティ機能を有効化」→「セキュアイレース」後は、内部で、セキュアイレースが完了すると「セキュリティ機能の無効化」が自動で行われることがあります(そうでない機種もある)。 * 最初から「セキュリティ機能を有効化」されてるデバイスがあるかは不明。ただし、設定したまま放置されることはありうる。 * あと、勝手に設定するソフトウェアがあるのでこの手のツールを使用するときは注意。 * 「{{{camcontrol security}}}」は「この手のツール」ではあるが、パスワードを常に要求するので意識すること。 == Q.パスワード毎回設定するなら覚えなくていいのでは? == A.大丈夫だ。問題無い・・・わけでもなく、正常に処理された場合は覚えてなくてもなんとかなるけど、 処理に失敗した場合や手動で解除する必要がある場合では、後でパスワードが必要となるので、覚えておく必要がある。 == Q.セキュアイレース時でもエラーメッセージが表示されました。大丈夫ですか? == A.大丈夫だ。問題無い・・・はず。検証した中に Intel SSD DC S3510 でその振る舞いをがあった。 しばらく放っておいたら回復したので、とどつまりATAコマンド応答に時間がかかったものと思われる。 もちろん拡張セキュアイレースでも同じメッセージは表示されたので、ATAコマンドに対する 応答が早い機種と遅い機種があるものと推測される。 ■問題無いエラーメッセージ {{{ camcontrol: ATA SECURITY_ERASE_UNIT via pass_16 failed }}} == Q.-U user や -U master とオプションがあるようですが何なのですか? == A.[[http://www.t13.org/documents/uploadeddocuments/docs2008/d1699r6a-ata8-acs.pdf|参考文献]]の「4.20.2 Passwords」によれば、 * パスワードは「User」と「Master」の二種類ある。 * 「User」パスワードはユーザーデータ(ストレージ内データ)へのアクセスをロックするするためのパスワードとなります。 * 「Master」パスワードは「User」パスワードを紛失した場合や管理者がアクセスを要求した際に、アンロックするためのパスワードになります。 * セキュアイレースは「User」でも「Master」でもどちらのパスワードでもかまわない、とある。 よって指定しないといけないが、どちらを選んでもいい話ではあるが、 敢えて `-U user` を指定し、もしもの時は「Master」パスワードによるリカバリ(本動作は未確認)を期待すべきであると考える。 == Q.サニタイズ処理に対応してるドライブが少ないということは推奨されている「サニタイズ」処理はどうすればいいのでしょうか? == A.「サニタイズ言うなー」。 A.経済産業省から出てる[[http://www.meti.go.jp/policy/netsecurity/secdoc/contents/seccontents_000104.html|媒体のサニタイズに関するガイドライン]]によれば、「サニタイズ」「サニタイズ」言うてるけど、実際の内容を読むと「セキュアイレースしろ」だった。 な…何を言っているのか、わからねーと思うが、おれも何を言われたのかわからなかった。 頭がどうにかなりそうだった…。読み違いとか(以下略。 == Q.GROOVYとUGREENとどっちがいいですか? == A.気持ちGROOVYかな。でもUGREENも捨てがたいです。 GROOVYのを使用してみた感としては、以下の点が気に入ってます。 * セキュアイレース中にLEDが点滅してる気がする(確証ありません)。 * スイッチのオンオフによる安全なホットスワップ(コールドスワップだろ?というツッコミは…)が可能。 UGREENはなんと言ってもドライブの素性をレポートしてくれること。残念なのはスイッチが無いこと、かな。 両者とも変換器としては癖は無く、その点では使い勝手が良かったです。 なお性能といった観点からは評価していません:-)。 = 付録 = 検証したドライブに対して {{{camcontrol identify}}} および {{{camcontrol security}}} を実行した結果についての記録。 * [[FreeBSD/camcontrol/Intel SSD DC S3510|Intel SSD DC S3510]] * [[FreeBSD/camcontrol/Intel SSD DC S3700|Intel SSD DC S3700]] * [[FreeBSD/camcontrol/SanDisk Extreme PRO SSD|SanDisk Extreme PRO SSD]] * [[FreeBSD/camcontrol/Seagate 600 Pro SSD|Seagate 600 Pro SSD]] * [[FreeBSD/camcontrol/HP MK0060EAVDR|HP MK0060EAVDR]] * [[FreeBSD/camcontrol/WDC Red HDD|WDC Red HDD]] = 参考文献 = * [[http://www.t13.org/documents/uploadeddocuments/docs2008/d1699r6a-ata8-acs.pdf|AT Attachment 8 - ATA/ATAPI Command Set]](ドラフト Rev.6a) * [[http://www.meti.go.jp/policy/netsecurity/secdoc/contents/seccontents_000104.html|媒体のサニタイズに関するガイドライン(SP 800-88)]] * [[https://kb-jp.sandisk.com/app/answers/detail/a_id/18580/|SanDisk SSDがSeccure Erase後にドライブパスワードを求めてくる]] * [[https://www.texim.jp/limitation.html#txbenchcable|TxBENCH 各機能の制限事項 - 動作を確認したUSB変換ケーブル]] * [[http://chocs.hatenablog.com/entry/2006/10/10/060104|HDDパスワード]] * [[http://www.kirala21.com/veg/manual/gppro/cur/erase/secureerase.html|消去方法について- セキュア消去について]] * [[https://qiita.com/mzaki/items/446e081ef5e4e58cc196|FreeBSDでNVMeディスクを低レベルフォーマットする]] * [[http://ch.nicovideo.jp/lunaorbit/blomaga/ar1498687|セキュアイレース(Secure Erase)に TxBENCH は絶対に使うな【ATA Password】]] * [[https://qiita.com/nvsofts/items/f46c8a1b3541894ad382|SSDをSecure Erase機能で安全に消去する]] * [[https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase|ATA Secure Erase]] * [[http://decomo.info/wiki/freebsd/freebsd_secure_erase_with_camcontrol|FreeBSDのcamcontrolでSecure Eraseする]]