- OSの「削除」はファイル管理テーブルのフラグを変えるだけで、データ本体はストレージに残り続けます。
- そのため、廃棄する前に、HDDは全領域の上書き、SSDは、メーカーツールによる消去が大事です。
- ただ、PCを使用しているときにBitLockerで全ディスクを暗号化しておけば、処分時はOS初期化だけでも残存データは読めない状態にできます。
1. ファイルシステムと「削除」
「古いパソコンのデータを削除したけれど、処分するのが心配」という相談があります。
たしかに、データが復元できる状態のまま、パソコンが人手に渡っては困ります。
これは、OSの「削除」は、ストレージの中身をすぐに消す操作ではないからです。
まずは、OSとファイルシステムの話を考えます。
一般的に、ファイルのデータをドライブの中に記録するときには、先頭にファイルの位置を記録する管理テーブルを用意して、探しやすくしています1。
1.1. 削除という印
よく「ゴミ箱を空」にしたり、「完全に削除」をすれば戻せない、と考えますが、実際にはOSから見えなくなるだけです。
というのも、ファイルシステムの通常の「削除」は、管理するテーブルの該当エントリに「この領域は空き」という印を付けるだけだからです。
通常、OSが「ファイルを削除」をしたときでも、データ領域にある本体はそのまま残っています2。
別のデータでその領域が上書きされるまでは、中身は読み出せる状態のまま。
復元ソフトは、ディスク内を順番に見て元のファイルの痕跡を見つけ出して「復元」します3。
ディスクを「まっさら」にするフォーマットも同様です。
「クイックフォーマット」はテーブルを初期化するだけで、データ本体には触れません。
通常のフォーマットでも、OSによっては全領域を上書きしないケースがあります。
1.2. データ領域を消せばよい
つまり、データの抹消とは、「空き領域」の印を付けるのではなく、「なんらかのデータを全てのデータ領域に上書きすれば解決」となります。
そのような専用ソフトウェアの代表的なものには、 Eraser(Windows)や nwipe(Linux)があります4。


もちろん、完全を期すなら物理破壊が確実で、ドリルで複数箇所に穴を開けたり、専門業者に溶解処分を依頼したりすることもあります。
1.3. 暗号化を先にかけておく方法
ところで、データ漏洩を防ぐ方法は、データ抹消だけではありません。
もう一つの有効な方法が「データ暗号化」です。
データを消すのでは、そもそも使用中から全ディスクを暗号化しておくという考え方。
WindowsのBitLockerやmacOSのFileVaultを有効にしていれば、処分時にOSを初期化するだけで十分です。
なぜなら、ドライブ内に残ったデータは暗号化されたままです。
暗号キーという「長い暗証番号」なしで暗号データを解読するには、スーパーコンピューターを用いても数百兆年かかると言われるほどだからです5。
2. さらに奥にある物理的特性の話
だいたいのファイル復元は、全領域の上書きで十分です。
しかし、この問題にはもう1つの深い層があります。
かなり特殊な条件では、抹消したデータでも復元できることがあるのです。
それは、ファイルシステムの下にあるストレージの物理構造の特性によって、上書きだけでは完全に消えないケースがあるからです。
一応、知識としては抑えておきましょう。
2.1. HDDの残留磁化
HDDは、簡単に言えば、磁気ディスクにN極とS極のパターン(磁化方向の変化)を記録し、データとしての 0 と 1 と対応させています。
この仕組みでは、新しいデータを書き込んでも、直前の磁気状態がわずかに磁性体に残ります。
そのため、磁力顕微鏡を使うと、この残留パターンを「残留磁化(remanence)」として読み取れる場合があるのです6。
「プロは復元できる」という話の起源は、ここにあります。
実際、2001年以前、米国国防総省はデータ消去は「7回上書き」という基準を採用していました。
しかし、現在はそのような基準はいらなくなっています。
それは、当時のディスクが低密度でしたが、現代の高密度HDDでは残留磁化を読み取ることは困難だからです7。
つまり、HDDの残留磁化でデータを復元するのは、理論的には可能でも、実際にはほぼ不可能。
そのため、現在では、機密情報のデータ削除の国際基準として、1回上書きして復元できるか検証する、という方法が推奨されています。
2.2. SSDのウェアレベリングと予備領域
SSDのデータ削除には、HDDとはまた違った特性があります。
SSDは、NANDフラッシュと呼ばれる素子にデータを記録します。
ただし、データの書き込みが、特定のセルだけに集中すると早く劣化する性質があります8。
そこて、このデータの書き込み先は、SSDのコントローラーが自動で決める仕組みになっています。
これを「ウェアレベリング(Wear Leveling)」といい、データの書き込みを全セルに分散させることで、SSDの素子の書き換え寿命をのばす工夫をしています。
ウェアレベリングで分散したデータを読み込めるように、SSDにもFTL(Flash Translation Layer)と呼ばれるアドレス変換層があります。
ここにも、いわば「データの地図」があり、SSDのデータは物理的に分散しているのに、システムにとっては一本のドライブとして見えるわけです。
これが、データ消去という点では問題になります。
というのも、OSから「削除して上書き」という操作をしても、コントローラーは物理的な書き込み先を変えてしまいます。
すると、古いデータが残ったセルは、別の場所に新しいデータが書かれるだけで消えません。
OSから見えない予備領域にも古いデータが残ることがあり、ここへはソフトウェアからの上書きが届きません。
3. では、SSDのデータは本当に復元できるのか?
「プロなら復元できる」という話は、SSDにも当てはまるのでしょうか?
答えは、削除して時間が経っているかどうかなど、条件次第です。
通常の復元ソフトがうまくいくには、SSDが「一本のドライブ」として読み出せる必要があります。
これには「SSD内の地図」である FTL が必要です。
OSは、SSDに対して「このデータはもう要らない」というときに、SSD固有のTRIM(トリム、切り落とす)というコマンドを使います。
TRIMされたデータ領域は、都合の良いタイミングで FTL から古いデータの所在が消去され、ソフトウェアからは見つけられなくなります。
Windows 7以降ではTRIMがデフォルトで有効です。
なので、普通に使っていれば、ほとんどデータは復元できません。
3.1. USBメモリーの場合

でも、以前にUSBメモリーのファイルを誤って消してしまったけど、復元ソフトで戻せたよ。
これは、どうして見つけられたの?
これは、USBメモリーには内蔵SSDと違う事情があるからです。
内蔵SSDと違い、USBメモリーは、USB接続でつながっています。
ここで TRIM のような機能を使うには、「対応した経路」が必要です。
しかし、一般的なUSBメモリーや安価なUSB-SATA変換では、この経路がない、または不完全なことがあります。
つまり、USBメモリーに、TRIMに相当する削除予約をしても、実際に物理消去されていないこともあるのです。
そこで、USBメモリーの場合は、廃棄するときは物理的に破壊するか、暗号化して使う必要があります。
3.2. チップオフ解析とハードウェア暗号化
もし、いわゆる「プロ」が、FTLが不完全なSSDからデータを復元するとなると、「チップオフ解析」という面倒な手順が必要になります。
実際にNANDチップを基板から取り外し、生データをダンプし、コントローラー独自のFTLアルゴリズムを逆算して(リバースエンジニアリング)、分散したデータブロックを手作業で再構築するという工程で、4チップのSSDでも2週間以上かかる作業で、おいそれとできるものではありません。
しかも、現代のSSDの多くでは「チップオフ解析」をしてもうまくいかないかもしれません。
それは、AppleのT2チップ搭載機やSamsung 980/990 Proなど現行世代のNVMe SSDは、ハードウェア暗号化を内蔵しているからです。
暗号鍵をコントローラーのセキュアエンクレーブに格納しているので、チップを取り出しても読めるのはAES-256で暗号化されたデータだけ。
暗号の鍵は、コントローラー内に閉じ込められたまま消えます。
つまり「TRIMが走る前、かつハードウェア暗号化がない」という二条件が揃わない限り、SSDの復元は不可能です。
3.3. SSDの正しいデータ消去
データの正しい消去方法は、ストレージの特性に合わせて選ぶ必要があります。
| ストレージ | 推奨する消去方法 |
|---|---|
| HDD | 全ての領域を上書き(1回)または物理破壊 |
| SSD | ATA Secure Erase または物理破壊 |
| どちらも | 使用中から全ディスク暗号化しておくと処分が楽になる |
OSの「ファイル削除」や「初期化」だけでは不十分なことがあります。
そこで、HDDなら全領域上書き、SSDならドライブが対応する消去方法(ATA Secure Erase、NVMe Format/Sanitizeなど)を実行してから処分するのが基本になります。
HDDの場合は、全セクタをランダムデータか固定値で1回上書きすれば、実用上は十分です。
しかし、SSDの場合は、ちゃんとTRIMによってFTLを削除されているかも大事です。
日常使用中にデータを消す目的であれば、TRIMは十分機能しています。
ただし「これから廃棄するパソコンのデータを完全に消したい」という用途には、TRIMだけでは不十分かもしれません。
というのも、TRIMは「OSがSSDに通知する」仕組みなので、SSDが実行までにはタイムラグがあります。
削除した瞬間に物理消去されるわけではないので、削除直後に第三者がドライブを取り出せば、まだ読める状態のことがあるからです。

また、さらにSSDのメーカーやファームウェアの設計による部分です。
廃棄前提であれば、ATA Secure Eraseなど、ストレージ自身のコントローラーに消去を実行させる命令を使います。
これは、製造元が提供するツール(Samsung MagicianやCrucial Storage Executiveなど)から実行できます9。
これなら、予備領域を含む全セルを消去できます10。
ややこしければ、結局は物理破壊がより確実な手段ではあります。
- ファイルシステムごとに管理構造は異なり、FAT(File Allocation Table)、MFT(Master File Table: NTFSの管理情報)、inode(アイノード: Unix系の管理情報)などがあります。
- Windowsが採用するNTFSでは、ファイル削除時にMFT(マスターファイルテーブル)の該当エントリに削除フラグを立てるだけで、データ本体は上書きされない。このためRecuvaやTestDiskといったソフトウェアで容易に復元できる。 – NTFSのファイル削除の仕組み(Microsoft Docs)
- 実際には管理情報の残骸を見る方法と、ファイル署名を探すファイルカービング(file carving: 断片から復元する手法)の両方があります。
- nwipeはDBANの後継として開発されたオープンソースのデータ消去ツールで、NIST SP800-88準拠の消去方式をサポートする。EraserはWindows向けの無償ツールで、スケジュール消去にも対応している。いずれもOSからアクセス可能な全セクタを上書きするが、HDDのHPAやDCOと呼ばれる隠し領域には届かない点に注意が必要。 – 推奨する消去方式(DiskDeleter)
- BitLockerはWindows 10バージョン1511以降でXTS-AES(128bitまたは256bit)を採用している。AES-256の総当たり攻撃による解読にはスーパーコンピューターを用いても数百兆年かかるとされており、鍵を持たない第三者が暗号化済みデータを解読することは現実的でない。macOSのFileVaultも同じくAES-256を使用する。 – BitLocker(Wikipedia日本語版)
- 残留磁気の読み取りは理論的には可能だが、現代の高密度HDDでは記録トラックが極めて狭く、隣接トラックの残留パターンをラボレベルの機器で識別することは実用上ほぼ不可能とされている。2006年にNISTが発表したSP800-88でも「1回の上書きで研究所レベルの読み出し方法を試みてもデータ復元は不可能」と明記している。 – NIST SP 800-88 Guidelines for Media Sanitization(IPA日本語訳)
- 「7回上書き」はDoD 5220.22-M ECEと呼ばれる拡張方式で、1995年のNISPOM(国家産業保全計画運用マニュアル)に端を発する。2001年の改訂で3回上書き規定は削除され、2007年以降の版では上書きパターン自体が規定されなくなった。現在の国際標準はNIST SP800-88 Rev.1(2014年)で、1回上書き+検証を推奨している。 – DoD 5220.22-Mの消去基準について(Blancco)
- SSDのNANDフラッシュは書き込み回数に上限があり、同じセルへの集中書き込みを避けるためコントローラーが書き込み先を動的に分散させる。一般的なSSDはユーザーが使える容量の7〜28%程度をOver-Provisioning(予備領域)として確保しており、OSからは不可視のこの領域にも過去のデータが残存しうる。 – SSDのデータを完全消去する方法(株式会社創朋)
- メーカー製ツールはファームウェアを介してSecure Eraseを実行するため、ファームウェアのバグにより消去が正常に完了しない事例が報告されている。実行後はツールの完了ログを確認し、可能であれば別途書き込み検証を行うことが望ましい。 – SSDの安全な廃棄のために使用すべき機能(HAGIWARA Solutions)
- ATA Secure EraseはANSIが2001年に規格化したATAコマンド「SECURITY ERASE UNIT」に基づく。ただし多くのPCは起動時にドライブへ「Security Freeze Lock」を送信するため、通常起動した状態ではこのコマンドを実行できない。Linuxで実行する場合はドライブの電源を一度切って再投入しFrozen状態を解除する手順が必要になる。 – 比較的簡単にHDD/SSDのSecure Eraseをする(ITログ)