下記リンクにてSSDのデータ消去に関してまとめたPDF資料がご覧いただけますので、当記事をご覧いただくのと合わせて、ぜひダウンロードください。
近年、パソコンやサーバーに使われるストレージはHDDからSSDへと大きく移行しています。SSDは高速で静音、耐衝撃性にも優れていますが、データの消去方法に関してはHDDとは大きく異なる注意点があります。従来の「上書き消去」では十分にデータを消せず、残存リスクが残ってしまうケースも少なくありません。
本記事では、SSD特有の構造上の課題を踏まえた上で、実務で利用できる「コマンド消去」を中心とした安全なデータ消去の方法を解説します。廃棄や譲渡、再利用の前にぜひ参考にしてください。
SSDとHDDのデータ消去の違い
構造的な違い
- HDD:磁気ディスク上にデータを書き込み、上書きすれば確実に以前のデータは読めなくなります。
- SSD :フラッシュメモリを使っており、寿命を延ばすために「ウェアレベリング」という技術で書き込み場所を分散させます。
そのため「同じアドレスに上書きしたつもりでも、実際には別のセルに保存され、古いデータが残る」という状況が発生します。
消去における課題
- HDDでは一般的な「ゼロ書き込み」や「shredコマンド」によるデータ上書きの方法では、SSD特有のゴミ箱領域(ガーベジコレクション)やリマップ領域に古いデータが残存し不完全になる可能性が極めて高いため不適切。
- SSDのゴミ箱領域やリマップ領域は端末(PCやサーバ)からではアクセスできないLBAのアドレス外となる領域にあるため、データを消去するにはアドレス外の領域をアクセスできる「SSD内部のコントローラ」による処理が必要です。
- SSD内部のコントローラに目的の処理を行わせるには「コマンド」を用いて伝達する必要があります。
結論:SSDには「コマンド」を用いたデータ消去方法である「消去コマンドの使用」が必要です。
消去コマンドによる正しいSSDのデータ消去方法
SSDの消去方法は多様に存在しますが、どれも一長一短があります。特に「メーカー提供ツール」と「汎用コマンド」では使いやすさや対応環境が異なります。普段のOS環境で実行できる方法を選ぶのか、あるいはより確実性を優先してLinuxツールを使うのか――状況に応じた判断が重要です。
SSDでは上でご紹介したように、HDDと同じデータ消去の方法では「消し漏らし」が発生してしまう可能性が高いことです。下記の図で中央の下の方にあるように「アドレス外のアクセス不可領域」をどのようにして消すのかが最大の要点です。
方法別比較表
比較表を見ると分かる通り、最も信頼性が高いのは「Enhanced Secure Erase」と「SANITIZE BLOCK ERASE」で、次点がUNIX環境でのみ利用できる「blkdiscard」です。ただし、いずれもSSD側がこの消去コマンドに対応して、処理が行えるのが条件となります。 一方で、Windows環境でのみ利用できる「DiskPart clean all」や、cipherとshredはSSDに依存しない(内部コマンドではない)ため便利ではあるものの、消去されていない領域が残存してしまう「消去漏れ」が発生する可能性が高いため、補助的な方法として考えるべきです。
つまり、廃棄や譲渡前の完全消去には、必ずSSD内部で処理を行う方式の、接続方式の種類に応じた消去コマンドや、その消去コマンドに対応している専門ツールを使うのが望ましく、その他の簡易的な方法はあくまで日常的な安全対策に限定するのが現実的な運用といえます。
| 方法 | 信頼性 | 所要時間 | 特徴 |
|---|---|---|---|
| 1. (Enhanced) Secure Erase | ◎ | 数分 | 最も推奨。 但しATA(SATA)接続ドライブに限定される。Enhancedなら消去対象外領域も発生せず万全。 |
| 2. DiskPart clean all | △ | 数時間(容量依存) | Windowsでのみ使用可能。ゼロを上書きする方式のため時間がかかり、消去対象外領域が発生する可能性が高いので、消去が不完全となるリスク有。 |
| 3. cipher /w | × | 中程度 | 空き領域のみが対象のため、既存のデータを消去する目的は達成できないため避けるのが無難。 |
| 4. blkdiscard | ○ | 数分 | Linuxでのみ使用可能。高速だが、このコマンドに対応するSSDしか通用しない。 (Secure Erase同様) |
| 5. shred | △ | 容量依存 | 単純なゼロ上書きのため、DiskPart同様に不完全となる可能性が高い。 |
| 6. SANITIZE BLOCK ERASE | ◎ | 数分 | 最も推奨。 SATA、SAS、NVMeと主流の接続方式全般に使用可能で、消去対象外領域も発生せず万全。 但し実行できる環境や条件が限られる。 |

SSD内部で処理する消去用コマンドで消去を実行すると上図の例3のように完全なデータ消去が実現できますが、ゼロを上書きするだけのような一般的なコマンドの場合は上図の例2ように一部の領域が残ったままとなってしまい、SSD特有の処理(ゴミ箱領域やリマップ領域がウェアレベリング等によりアクセス可能領域に戻ってくる状態)になるとデータが読み取れてしまうようになるため避けるべきです。
消去用コマンドを使用し、実行することを強く推奨します。
なお、消去用コマンドを実行するとドライブ(SSD)内部で処理が実行され、全ての処理が完了するまで端末(PCやサーバ等)では使用できなくなってしまいます。途中で電源を切ってしまうなど処理が中断した場合は、利用できないSSDとなってしまうリスクがありますので、処理時間を考慮して安全に行える状況下で行うことを推奨します。
1. ATA Secure Erase / Enhanced Secure Erase
特徴
- SSDメーカーが公式に用意している「ファームウェア組み込みの消去コマンド」。
- 数分程度でSSD全体を完全に初期化できる。
- Enhanced版ではさらに残留データも確実に無効化。
ATAの接続規格で規定されているコマンドのため、ATA(SATA含む)以外の接続では対応しません。
SASの場合は「SANITIZE」(下記)、NVMeの場合は「Format NVM」で代用ください。
実行例(Linux + hdparm)
# 対象SSDを確認
sudo hdparm -I /dev/sdX
# セキュリティ状態確認(frozenならスリープ→復帰で解除)
sudo hdparm -I /dev/sdX | grep frozen
# 一時パスワード設定
sudo hdparm --user-master u --security-set-pass p /dev/sdX
# セキュアイレース実行
sudo hdparm --user-master u --security-erase p /dev/sdX
※ 注意
- 実行後はSSD内の全データが瞬時に消去され復元不可能。
- PCの場合は「frozen」状態解除のために一度サスペンドする必要があるケースが多い。
なお、データ消去専用装置「JetEraser」ではPCからSSDを取り外した状態で処理をするためfrozenの解除をする必要なくSecure Eraseコマンドによる消去が行えます。
2. Windows DiskPart コマンド
特徴
- Windows標準搭載で追加ソフト不要。
clean→ パーティション情報のみ削除。clean all→ ディスク全セクタを「0」で上書き。
実行例
diskpart
list disk
select disk X
clean all
※注意
- SSDでは上書き回数が寿命に影響するため頻繁な使用は避ける。
- 容量が大きいと時間が数時間かかることもある。
3. Windows cipher コマンド(空き領域の消去)
特徴
- 「削除済みファイルの痕跡」を消すために有効。
cipher /w:ドライブ文字:で、空き領域を 0 → 1 → ランダム の順で3回上書き。
実行例
cipher /w:D:
※ 注意
- 使用領域には作用しないため、完全な消去には向かない。
- 廃棄・譲渡前の「とりあえずの対策」には有効。
4. Linux blkdiscard コマンド
特徴
- SSDに対して「TRIM相当」の命令を全領域に送信し、未使用領域を破棄。
--secureオプションで一部SSDではセキュアイレース相当の効果。※データ消去目的では使用必須
実行例
sudo blkdiscard --secure /dev/sdX
※注意
- SSDが対応していない場合はエラーになる。
- secureオプションを使わない場合はデータが残ってしまうので要注意。
- USB接続では無効になることも多い。
5. Unix shred コマンド
特徴
shredはファイルまたはデバイスを複数回ランダム上書きするツール。
実行例
shred -n 3 -z /dev/sdX
※注意
- HDDでは有効だが、SSDでは「ウェアレベリング」で実際の物理領域に反映されない可能性がある。
- 補助的な用途にとどめるのが現実的。
6. SANITIZE BLOCK ERASE コマンド
特徴
- ドライブの完全データ消去(サニタイズ)における世界標準規格となっている「NIST SP 800-88 rev.1」や、最新規格「IEEE 2883-2022」において、研究所のように高い技術を持っていてもデータを復元することができない状態にできると規定されている「Purge(除去)」レベルを達成するためのコマンド。
最高レベルの消去が行え、かつ、SAS/SATA/NVMe等様々な規格で使用できる汎用性がある最上級の消去コマンドだが、使用できる状況が限られ、高度なコマンドであるためSSD側が対応していない場合がある。
実行例
データ消去装置やデータ消去ソフトの、SANITIZEコマンドに対応するプロフェッショナルグレードの製品を使用する。
実務でのおすすめフロー
- まずはSSDメーカー公式ツールまたはSecure EraseまたはSANITIZE BLOCK Eraseが対応するかを確認
(Intel SSD Toolbox、Samsung Magician など)
プロフェッショナル向けのデータ消去ソフトや専用装置であればSecure EraseまたはSANITIZE BLOCK Eraseが実行可能 - 対応していなければ、Linuxのhdparmやblkdiscardを検討 ※消去漏れが発生していないか要注意
- Windows環境しかない場合は DiskPart → clean all を利用 ※消去漏れ発生の可能性が高いため要注意
- 不安な場合や重要データの場合は外部の代行業者に依頼
※特に機密情報を扱う企業では、確実な消去技術を有する業者が行っているサービスの利用が望ましい。
まとめ
- SSDはHDDと違い、単純な「上書き」ではデータが残る可能性がある。
- 最も確実なのは ATA Secure Erase。
- Windows標準でもDiskPartやcipherで一定の効果があるが、万能ではない。
- Linuxユーザーは
hdparmやblkdiscardを積極活用できる。 - 機密性の高いデータは、物理破壊や専門業者による証明付き消去が安心。
