HDDのデータ消去方法いろいろ

作成:

Linuxを用いたHDDのデータ完全消去法に絡み、 よくある対策についてその効果など私の見解を一通り書いておく。

ここで対策として意味があるとしているのは、 誰でもできるような方法で読み出すことができなくなっているという意味であり、 いかなる方法であってもほんの僅かのデータも漏らす可能性がない、という意味ではない。 どの方法についても、いかなる抜け道もないほどの完璧な方法とは言い切れないのだ。 極端な話、物理的にプラッタを破壊したとしても、 残骸を慎重に解析すれば何らかの情報が読み出せる可能性は否定出来ない。

個人かつ現実的なコストで、となるとある程度の妥協は必要だろう。 現実的にはデータの抜き出しによって得られる利益を、 解析にかかるコストが十分に上回ることを持ってよしとするしかない。 ほんの僅かなデータに何億円もの価値を見出している。 という外敵を想定しなければならないような特殊な事情のある方は本稿の想定外である。

このサイトについての免責事項にある通り、 本稿の内容について完全性や正確性を保証するものではなく、 読者が何らかの損害が生じても責任を負うことはできない。自己責任のもと読んで欲しい。

ファイルの削除

通常のオペレーションでファイルの削除を行っても、 ファイルシステムからそのファイルの属性情報を削除するだけにすぎず、 ファイルの中身自体はそのまま保持されている。 ファイル属性情報もポインタが切断されただけで残っている可能性もある。 この状態では一般に流通している復元ツールで簡単にファイルの内容を読み出されてしまう。 何もしないよりはましだが、 解析に対しては意味が無い。

パーティションの削除

パーティションの情報は MBR (Master Boot Record) という領域に格納されている。 パーティションの削除は、この MBR の情報を消去し、 どこからどこまでが一つのパーティションかという情報を削除したに過ぎない。 パーティション情報以外はファイルシステムを含めてすべてそのままのため、 再度パーティションを同じように切り直せば、 ツールを使うまでもなくそのまま読み出せる状態だ。 解析すればパーティションを切られていた位置さえもわかってしまう。 ファイルの削除以上に容易に復元できる。 何もしないよりはましだが、 解析に対しては意味が無い。

フォーマット

これを実行すれば完璧であると思ってしまう人が多いのではないかと思う。 しかし、通常のフォーマットはファイルシステムの管理領域を初期化しているに過ぎない。 初期化時に書き込まれる情報は僅かであり、それ以外の領域のデータはそのまま残されている状態だ。 これもまた、比較的容易に解析されてしまう状態になる。 何もしないよりはましだが、 解析に対しては意味が無い。

フォーマット(Windows、クイックでない)

Windows でのクイックフォーマットではないフォーマットについては、 Windows Vista 以降と、それまで( Windows XP 以前)のバージョンで挙動が異なるため注意が必要だ。

クイックでないフォーマットは非常に長い時間がかかるため、全領域の消去が発生していると思われがちだが、 Windows XP までのフォーマットは不良セクタのスキャンを行っているだけで、書き込みは発生していない。 データの消去という観点ではクイックフォーマットと同じで解析に対しては意味が無い。

Windows Vista 以降はこの動作が変更され、全領域へのゼロ書き込みを行う動作に変更されている。 Change in the behavior of the format command in Windows Vista and later versions.

全体へのゼロ書き込みが行われると、その領域に以前書き込まれていた情報を読みだすことは、少なくとも通常の方法ではできなくなる。 Windows Vista 以降の Windows を使用している場合は、 クイックフォーマットのチェックを外してフォーマットを行えば、完全な消去を行うことができると考えて良いだろう。

BitLocker や暗号化パーティションの利用

予め HDD を適切な鍵で暗号化しておけば、特に何もしなくても比較的安全といえるだろう。 もちろん安易に推測可能なパスフレーズを設定していればすぐに解析されてしまう可能性があるし、 非常に長い時間をかければ複雑なパスフレーズであっても解析される可能性はある。

ただし、BitLocker は TPM(Trusted Platform Module)を利用して暗号化を行っており、 別の PC では復号できないし、同一 PC でもプラットホームの完全性チェックが行われるため、 OS などに問題がある場合は復号できない。 TPM を利用しない暗号化パーティションでもパスフレーズ以外にソルト値が使われる。 ソルト値がわからなくなれば解析の困難度が一気に上る。

つまり、OS やソルト値が書かれた領域を書き潰しておけば、 パスフレーズが分かったとしても解析が非現実的な難易度になるため、 これら追加の対策を取るようにすればなおよいだろう。

市販の消去ツールを利用する

次項目の全領域への書き込みと同じのため、省略。

全領域への書き込み

Linuxを用いたHDDのデータ完全消去法で紹介している方法だ。 市販の消去ツールでもやっていることは同じだ。 HDD への低レベルなアクセス方法を利用し、全領域への書き込みを行う。 これを実行すれば、少なくとも通常の方法では以前書かれていた情報を読みだすことは不可能になる。

Windows 環境では専用のツールを導入する必要があるが、 Linux 環境であればデフォルトのツールを使用して容易に行うことができる。

完全消去についての規格では、0/1/乱数を複数回上書きするような方法が定められている。 これは、一度書き込んだだけでは残留磁気などから読み出される可能性を考えてのことであるが、 フロッピーディスクなどの低容量磁気ディスクを扱っていた時代のことである。 現在のHDDの場合、記録密度が非常に高いため、 一度別のデータが書き込まれてしまうと、 残留磁気から元のデータを読みだすことは不可能という意見もある。

仮に読み出せるとしても、プラッタを取り出し、 専用の読み出し機器を使う必要があるはずで、コストが高すぎてやるメリットがない。 そのため、一度のゼロフィルでも十分だと思う。

SSDの場合

SSDの場合でも同じ方法で消去できるにはできるが、少し事情が異なる。

なぜなら、SSD の場合は SSD コントローラが介在してウェアレベリングを始めとした最適化処理が行われており、 SSD の外部からはどのメモリ素子が使用されるかを指示することができないためだ。 コントローラを経由する限り、データの書き込み命令では確実に全メモリ素子のデータを上書きすることはできない。

完全に消去したとは言えず、何らかの形でデータは残っている可能性が高い状態となる。 では、同方法が意味が無いかと言われればまた別で、読み出しは現実的には非常に困難である。

SSD コントローラを経由した読み出しでは、 書き換えられずに残ったメモリ素子のデータを読みだすことはできない。 コントローラ的には未使用の領域だからだ。 メモリチップを剥がして直接読みだすことはできるかもしれないが、 アドレスレベルでの書き散らしに加え、複数のチップへの分散書き込みが行われるのが通常である。 SSD コントローラのアルゴリズムは非開示であるし、 分かったとしても管理情報が残っていなければ復元することは容易ではないだろう。

ウェアレベリングとは?

フラッシュメモリは HDD に比べて書き換え耐性が低く、素子の寿命に配慮する必要がある。 また、書き込みを行えるのは消去済みのブロックのみのため、 同一素子へのデータ上書きは、読み出し、消去、書き込み、を行う必要がある。 そのまま上書きするよりは、予め消去状態のブロックを用意しておき、そこへ書き込んだほうが効率が良い。 という事情がある。 これを行うのがウェアレベリングだ。 ウェアレベリングは組み込み系ではファイルシステムなどのソフトウェアで行われる場合もあるが、 SSDではSSDのコントローラが独自のアルゴリズムで実行している。

全領域への書き込みよりも有益なのが、TRIM 命令という未使用領域を SSD コントローラに伝える方法だ。 未使用と通知された領域は予め消去状態にされる。実際にいつ消去するかは SSD コントローラ次第だが、 一度消去状態と通知されたブロックからの読み出しは空データ(通常0)が返される。 全領域に書き込むより圧倒的に早く終る。 書き込みが発生しないため、メモリ素子の寿命の観点からもこちらのほうが良いだろう。

SSD のメーカによってはユーティリティソフトを提供しており、 そこにセキュアな消去方法が用意されている場合も多い。 当然この方法が一番確実なので、まずはユーティリティソフトを探してみよう。

強磁気破壊

再利用はできなくなる。 専用の機材を使って強力な磁場を照射し、磁気記録データを一気に吹き飛ばす方式。 HDD として動作しない状態であっても確実に消去できるし、短時間で確実に処理できる。 破壊装置の不良などの可能性を除けば、最も確実な消去方法といえるだろう。 ある程度の規模の組織で定期的に大量に HDD を廃棄しなければならない場合は、 こういう機材を導入するというのもありだろう。

この機材の見た目は電子レンジに近いが、 本当の電子レンジにHDDを入れても強磁気破壊は起こらない上、大変危険である。 絶対に電子レンジには入れないように。

物理的な破壊

当然、再利用はできなくなる。 データセンターなど日々大量のHDDを廃棄する必要のある場所では、専用の工具で穴を開けて廃棄したりする。 同様の破壊方法を一般個人が行うには電動ドリルなどそれなりに危険な工具を使うことになり、あまりおすすめできない。

HDD 筐体は工具さえあれば簡単に開けられるので、開けてからプラッタを破砕すれば良い。 プラッタ自体はデリケートな部品なので比較的簡単に破壊できる。

HDD 筐体に使用されているビスは少々特殊な形状で、トルクスドライバー(T-8)という工具が必要になる。 特殊と言っても種類さえ分かっていれば工具の入手は簡単で、 電子機器用の精密ドライバーセットなどを買えば入っている場合が多いし、 単品で100円ショップに売られている場合もあるぐらいで、容易に入手可能だ。

HDD driver
HDDのビスに対応したトルクスドライバー

金属筐体の何処かに穴があり、それを塞ぐシールが貼られているだけの箇所がある。 基盤の下などに隠れている場合もあり、常に簡単にできるとは限らないが、 このシールを剥がし、中にドライバーなどを差し込むことでも破壊することができる。

いずれにせよ、それなりに危険を伴うので実践する場合は怪我をしないように注意して欲しい。