博士の愛したHDD
データ消去に関する私見。
はじめに
残暑厳しき折、皆様におかれましては、記憶媒体を破棄する際はいかがされておりますでしょうか。
え?重要なファイルはごみ箱に入れて消した?もうメルカリで売っちゃいました?
それはそれは...ボトルメールとは粋な趣味ですね。
データを消去する、ということ
一度生まれたものは、そう簡単には死にません。
データも同じで、この世から復元不可能な形で確実に葬り去る、というのはなかなか骨が折れます。
紙に書いた文字を消すということをイメージするなら、ビリビリに破いて捨ててもそれを誰かが漁ってつなぎ合わせる可能性は残りますよね。やるなら水に溶かしたり、炎で燃やしたりのほうがいいでしょう。
とはいえ、データを記録したHDDに同じことをするのはなかなか難しいです。水には溶けませんし、炎で燃やしても完全に灰になってしまうわけではありませんからね。
ではどうすればよいか?大きくは2パターンです。
- 記録されたデータを消去する
- 記録媒体を破壊する
本記事では、それぞれについてざっくり説明します。
記録されたデータを消去する
データ消去には、どこまで復元を困難にするか、という考え方があります。
NIST SP 800-88 Rev.2 では、大きく Clear、Purge、Destroy という3つの基準が定義されています。
Clear は、普通のソフトウェアや機器から簡単に復元できない状態にするものです。個人で使っていたHDDを処分するとか、それほど重要ではないデータなら、このあたりでも十分でしょう。
もう少し重要な情報を扱っていて、専門的な設備や技術を使った復元が怖いなら Purge です。媒体を再利用できる状態のまま、現代の研究所レベルの技術でも復元困難な状態を目指します。
それでも心配だったり、もう再利用する必要がないのであれば Destroy です。記録媒体そのものを使えない状態まで破壊し、現代の最高水準の研究所レベルの技術でも復元困難な状態にします。
どこまでやるべきかは保存していたデータ次第です。本記事ではもう少し噛み砕いて説明しますが、そういう概念があるんだな、ということを頭の片隅に置いておいていただければ。
1. ファイルの削除
みなさんが普段使うパソコンでいらないファイルをポチっと消したり、Linuxなら rm hoge.txt のようにファイルを消したりしますよね。これは何をしているかというと、ファイルシステム が管理している単位から除去するということです。処理速度は一瞬。
本でいうなら、目次の該当項目に横線を引いているレベルで、何があったかという管理情報は断片的に残っていますし、実体が残っていれば復元も可能です。
このレベルの復元は適当なフリーソフトでもできますし、フォレンジックの分野では FTK Imager などがよく使われていますね。
ちなみに、Windowsでいうゴミ箱にファイル入れる行為は削除ではなく移動なので何も消えてません。
2. フォーマット
USBメモリとか使うとき、フォーマットして下さいとか言われてはいはい言ってますよね。これはファイルシステムの管理情報を消して新たに作り直すということです。Windowsでいうクイックフォーマットが当てはまります。処理速度はそこそこ速い。
本でいうなら、目次のページを丸ごと破いてまっさらな目次を付け足している感じかな。破いたのは目次のページだけなので、それ以降の実体が記録されたページはそのままです。もちろん実体が残っていれば復元も可能。
この場合、ファイルシステムの管理情報が失われているのでファイルがHDDのどの領域に記録されているのかはわかりません。なので、先頭から順に舐めていってファイルっぽいものを全部掘り起こすCarvingという手法を使います。有名なツールでいうと PhotoRec とか、 bulk_extractor とかかな。
3. データの上書き
ここからは一般ピープルはあまり関係ない話になってきます。
1~2の方式ではファイルの実体が丸々残っているので比較的簡単に復元できてしまいますが、じゃあそれを消せばいいだろとなりますよね。具体的には、HDDを先頭から末尾まで0で上書きして埋め尽くせば(俗にゼロフィルという)そこにあるデータは全部消えます。有名なのはLinuxなら dd、Windowsなら diskpart clean all, SDelete とか。処理速度はディスクの容量によりますが、まぁまぁかかります。書き込み実測値が100MB/secなら1TBのHDDを埋め尽くすのに3時間くらいっすね。
論理的にはこれで十分なはずなのですが、物理的にはちょっと違ってきます。HDDは中に入っているプラッタ表面の磁性体をN極にしたりS極にしたりすることで情報を記録しているので、ゼロフィルする前の磁気がほんのり残っている可能性があります。
かつては、この上書き前の磁気的痕跡を特殊な装置で読み取れるのではないか、という懸念から、もっとガチャガチャに書き込んでわからなくしてやろうという考えが主流でした。
たとえば、ランダムデータを書き込んだあとにゼロフィルするとか。それを複数回やるとか。このあたりは気になるならDoD方式とか、Gutmann方式とかでググればよろしい。
ところが、、現代のHDDではアクセス可能なデータ領域への書き込み1回で実用上十分であり、複数回上書きする必要性はほぼ否定されています。
個人的には、複数回上書きするのは「自宅を出る前に鍵をかけたあとドアノブをガチャガチャする」程度の追加要素かなと。
4. 不可視領域の扱い
HDDの先頭から末尾まで0で埋めてふう安心、と思いたいところですが、これまた物理的には違ってきます。
HDDというのは長く使っていると書き込みに失敗する領域(不良セクタ)が出てきてしまうので、あらかじめ予備の代替領域があります。また、隣接する記録トラックを瓦のように一部重ねて記録するSMR(Shingled Magnetic Recording)方式のディスクでは、余剰領域をかなり多く(公称スペックの数%から数十%)持っている場合 があったり、device-managed SMRのように、LBAと実際の物理配置の対応をHDD内部のファームウェアが管理する方式もあります。
このように、通常のOSからユーザーがアクセスできる論理アドレス空間だけでは触れられない物理領域が存在する場合があります。
これを消すには、HDDのメーカ側がファームウェアレベルで実装している消去機能を使うことになります。たとえば、ATA Secure EraseのEnhancedモード、ATA SanitizeのOverwriteなど。
ただし、これはあくまで消去機能が正しく実装され、実行され、検証された場合のみです。実際にはうまく消えてない、あるいはHDDが故障寸前で正しく実行されないなどの問題も起こり得ます。そしてそれが完全にできましたというのを証明するのは非常に困難です*1。
*1... デジタルフォレンジック研究会が公開している 日本のPCリユースにおけるデータ消去について では、Secure Eraseを実行しても期待通りの動作結果が得られなかったという報告もあります。
5. 暗号化消去
これはちょっと毛色が違うんですが、データそのものを消さずに読めなくする、という方法です。ディスクに書き込むデータをあらかじめ全部暗号化しておいて、その暗号を復号するための鍵だけを破棄します。
これは暗号がちゃんと実装されていればかなり強力です。これまでに紹介した安全性の高い消去方法のように、HDDを何TBも先頭から末尾まで上書きする必要がなく、鍵を破棄するだけなので処理も一瞬で終わります。
が、この方式の安全性は鍵やデータの管理にかなり依存します。
本当にすべてのデータが最初から暗号化されていたのか?復号に使える鍵が別の場所に残存していないか?どこかに穴があると、ディスク上のデータはそのまま残っているので、鍵さえ手に入れば復号できてしまいます。
他にも気にしなければならないことはたくさんあります。
例えば、復号ロジックのバイパスリスクです。最近では YellowKey が話題になりましたよね。
昔からMicrosoftはBitLockerのマスターキーを持っているのでは?という都市伝説的な噂があり、暗号化消去を信頼していなかった人も多買ったのではないかと思います。
他にも、MicrosoftアカウントにBitLockerの回復キーが保存されていたり、自分の把握していないところで複製がとられている可能性は大いにあります。
あとは、HNDL(Harvest Now, Decrypt Later)といって、現在は解読できない暗号データを収集しておき、将来の技術的なブレイクスルーを待って解読するという考え方もあります。
現在わかりやすい脅威として挙げられるのは量子コンピュータで、Shorのアルゴリズム によってRSAやECCなどの公開鍵暗号が大きな影響を受けるとされています。一方、BitLockerで使われるAESのような共通鍵暗号が同じように簡単に破られる、という話ではありません。
とはいえ、暗号化されたデータそのものを残しておく以上、将来にわたって現在の暗号や実装が安全であり続けることに賭けることになります。わざわざ勝率の読めない方にベットする必要もないでしょう。
記憶媒体を破壊する
セクションタイトル通り、HDD自体を破壊します。
方法は色々ありますが、よく使われるのは油圧でプラッタ部分に穴を空ける方式です。電子回路っぽい基板部分をぶっ壊すだけだと、同型のコントローラを移植してデータ読み込みできる場合があるので注意。あとは、壊れたHDDとかは物理破壊せざるを得ないよね。
秋葉原最終処分場 のWebサイトが写真・動画つきでイメージつきやすい。
油圧でぶっ壊す機器は誰でも持っているわけじゃないので、マイナスドライバーを差し込んでプラッタ表面に傷をつけている人もいる。これだけでも個人レベルで復元できるようなものではなくなる。
ちなみに、上記のような穴あけ、傷つけといった部分的破壊では、傷ついていない領域から部分的にデータをサルベージできる可能性がある。とはいえ町医者レベルでできるようなものではなく、専門の機材とノウハウを持った人員が作業をする必要があるが。
世界を揺るがすような鬼ヤバデータであれば、NIST SP 800-88 で定めるDestroyを満たすような破壊をすれば、少なくとも現代の最高水準の研究所レベルの技術をもっても復元ができない状態に持っていける。
たとえば、粉々に裁断・粉砕する*2、焼却・溶融させる...とかね。
*2...NIST SP 800-88 Rev.2 では、現代の高密度媒体については最低レベルのセキュリティカテゴリ以外では避けるべきとされている。
復元する側の視点に立つということ
データ消去をどの程度念入りに行うか、というのは記録されている情報の重要度に比例する。
たとえば、あなたがインターネットからダウンロードしてきた動画や音楽であれば重要度は低い。0フィルすれば十分だし、なんならフォーマットでも構わない。
しかし、あなたが国家の命令で動く凄腕スパイであれば、情報を引き出すために湯水の如くコストをかけられるでしょう。
要は、復元する側がどれだけの復元コストを許容するか。復元する側にどれだけコストを押し付けるか、という話です。
おわりに
あなたが一般ピープルで個人で使っているものなら、ゼロフィルすればよろしい。
CIAやFBIにマークされているなら、HDDを粉末状にして海にながすか月に敷き詰めればよいんじゃないかな。
ちなみに、CDとかDVDを破壊するのと同じ感覚で電子レンジに入れて破壊せよと主張する人(だいたい2ch出身のおじさま)もいるが、電子レンジでは記録されてる磁気はとばないらしい。コントローラのチップとかは壊れるかもしれないが。あぶないのでやめましょう。
おわり