HDD/SSDの廃棄と譲渡 ― セキュアとか危ないとか最初に言い出したのは誰なのかしら

Twitterのタイムラインに、HDDの廃棄を安全にするにはどうしたらいいかという話題がありました。これはLinuxをある程度使いこなしている人にとってはとても簡単なことなのですが、普通のユーザーには敷居が高い話です。
さて、最近の動向に追いつくためにも少し周辺事情を調べてみましたのでここにまとめておきます。

HDD廃棄用のゼロフィル・ツールがある

あまりPCに詳しくないならば、HDDをゼロフィルしてくれるツールを使うことで、HDDの中の大事なデータを完全破壊できます。たとえば、フリーのツールならDarik's Boot and Nukeがあります。英語のドキュメントが苦手なら、日本語の解説もありますので検索してみてください。このツールならそれほど難しくありません。もちろん、有料のツールを買えばさらに高機能なものもあります。

LinuxならHDDの廃棄はddコマンドで済む

Linuxなら話は簡単です。まず作業用のLinuxシステムを用意しましょう。Unetbootinを使ってUbuntu 12.04 LTSのisoディスクイメージからブート可能なUSBメモリを作ります。1GBあればおつりが来ます。
このUSBメモリUbuntuで起動し、HDDのデバイス名をgpartedで調べます。仮にデバイス名を/dev/sdaとするならば、以下のコマンドで一発ゼロフィル完了です。

$ sudo dd if=/dev/zero of=/dev/sda bs=1M

これでHDDの中身は真っ白です。
「これじゃだめだ!専門のツールを持っているやつなら読み取るぞ!」
と言う人がいるようです。私にはCIAに敵はいませんが、中国あたりに売られたHDDがどうなるかを考えると、根拠は別として正直少し躊躇するのも事実です。そういう人はこのコマンドなら安心です。

$ sudo dd if=/dev/random of=/dev/sda bs=1M

ゼロでなくランダムなビット列でハードディスクを埋めますので、残留磁気の検出はまず間違いなく不可能です。これでも心配ならこのコマンドを好きなだけ繰り返してください。

SSDはTrimを使えばいい

SSDの廃棄、譲渡に関しては、HDDと同じ方法が使えます。しかし、もっとスマートな方法があります。Windows 7/8のユーザーならば、SSDの全領域をフォーマットするだけでいいのです。この方法はtrimコマンドを発行しますので全領域がSSDファームウェアによって完全消去されます。心配性な方はフォーマット後に2時間ほど寝かせてファームウェアに実際のメモリ内容の消去の時間を与えればいいでしょう。私はそこまで神経質ではありませんのでtrimの発行だけで良しとします。今のハードディスクはtrimが発行された領域を読み込んでも、意味のあるデータを返さないはずです。
なお、フォーマットは、クイック・フォーマットを使わないほうがいいでしょう。この点は調べてもグレーのままでした。

bitlockerをかけていれば安心

HDDやSSDにbitlockerをかけているならば、HDDをそのまま譲渡しても大丈夫です。ただし、使用していたPCと渡すと安全性が低下します。なぜなら、ブートパスワードを突破されれば全部丸見えだからです。HDDを暗号化したTPM付きPCから切り離すと、中を読むためには48文字(桁ではない)の回復キーが必要になります。総当たりで解読される恐れは無視してかまいません。
不安な人はゼロフィルなりフォーマットなりしてください。

SSDとbitlocker

以下、余談です。
以前から「bitlockerでディスクを全面暗号化すると、trimが使えなくなるんじゃないか」と思って調べましたが、そんなことはありませんでした。Microsoftによる以下の文書がその点について説明しています。

BitLocker がパーティション上で最初に構成されるとき、パーティション全体が読み取られ、暗号化され、書き直されます。これが終わると、NTFS ファイル システムは、SSD が動作を最適化できるように Trim コマンドを発行します。

つまり、言外にですが、使用していない領域にはtrimを送るということです。これは暗号の専門家ならば眉をひそめるかもしれません。暗号の基本は重要だろうが重要でなかろうが暗号化することで、「敵」の労力を引き上げることが重要だからです。
しかしながら、データの量が10GBを超える現代では、空き領域は暗号化しなくてもいいだろうと思われます。なお、上記の説明に続く以下の一文は誤訳です。

SSD を含むドライブ上で BitLocker を有効にする場合、データ プライバシーと保護に十分ご注意ください。

原文ではこうなっています。

We do encourage users concerned about their data privacy and protection to enable Bitlocker on their drives, including SSDs

「データプライバシーと保護に関心のあるユーザーは、SSDを含めたドライブのBitlockerを有効にすることを奨めます」ですね。

/* -----codeの行番号----- */