小飼弾です。ブロマガでお届けいたします。「ブロマガを」でなくて「ブロマガで」なのは、はじめは404 Blog Not Foundの方に書こうと思ったから。

しかしつっこみを入れたい元記事「大掃除でHDDを破棄するときは「初期化の方法」に気をつけて」がニコニコニュースということもあり、同じ会社がやってるメディアに掲載した方がいいかなと思い、ブロマガにしました。そういう経緯なので今回(は|も)無料です。

200 Any Questions OK

Q. ディスクを安全に処分する方法

弾さんこんにちわ。来年結婚します。結婚にあたって独身時代の黒歴史も一緒に処分したいのですが、下取りに出すパソコンのディスクはどうしたらよろしいのでしょうか。さまざまな記事にあるように繰り返しゼロ書込みするべきなのでしょうか?それともやはり小渕先生のようにドリルで破壊するべきなのでしょうか?そうするだけの時間も螺旋力もないんですが…

A. ディスクは消すな、暗号化せよ

結論から言えば、こうなります。

生半可な破壊だとコロンビア号のHDDが復元された事例もあるし、ディスク暗号化が正解。復号キーは「忘れる」。SSDでもおk <捜索前、PC機器を破壊 資金問題で小渕氏の関係先(朝日新聞デジタル) - Y!ニュース http://t.co/0kwSlRS0jW

― Dan Kogai (@dankogai) December 19, 2014

なぜそうなのかを理解するためには、パソコンやデバイスがどのようにデータを保存しているかをざっくり理解しておく必要があります。

ファイルはどう削除されるか

およそ現代のOSでは、パソコンであれタブレットであれスマフォであれ、プログラムはファイルというものにデータをセーブし、そのファイルを上書きすることでデータを上書きし、そしてそのファイルを削除することでデータを削除しています。折り目(ドッグイヤー)のついた紙のアイコンでおなじみのアレですね。

しかしこれはOSがあなたに見せている幻想です。HDDやSSDといったストレージにこういうものが転がっているわけではありません。ストレージにあるのは、512バイトとか4096バイトとかの生データをひとまとめにした「ブロック」(block)というもの。OSはそのブロックに「このブロックにはこのファイルのこの部分の情報を保存している」という情報を管理することで、生のブロックではなくフォルダーとファイルからなるファイルシステムをユーザーに見せているわけです。

このファイルを消す時、OSは対応するブロックを消したりはしません。OSは「もうこのブロックは使われていません」というマークをつけるだけ。(もうすこし厳密には、「このブロックを参照しているファイル数」を一つ減らします。0になったら未使用)。実際にそのブロックに書いた内容が消えるのは、次にOSがそのブロックに書き込んだとき。それがいつ起きるかは、OSのみぞ知るというわけです。だからエキスパートが根気よくストレージを見聞すれば、消したはずのデータを回収できたりするのです。

だからこそ、およそほとんどすべてのディスク管理ソフトには(ファイルシステムをバイパスして)全てのブロックの内容にゼロやランダムな値を複数回書き込むという「完全消去」のオプションがあり、ストレージを破棄したり譲渡したりする際に、(OSからは見えなくなっても実はまだそこに残っている)データまで譲渡する羽目を避けられるようになっています。

しかし、これには以下の問題があります。

(ゼロ|ランダム)書込みには時間がかかる

元記事では3回ゼロを書き込むよう勧めていますが、ここで問題です。1TBのHDDを消去するのにかかる時間はどれくらいでしょう?

8時間(80MB/s)から10時間(80MB/s)かかります。最近出回りはじめた8TBのディスクであれば、80時間、なんと3日を超えます。「油を売る」という古いことわざを「ストレージを完全消去する」に置き換えたいぐらいです。

壊れたストレージはお手上げ

ストレージの視点では、普通のファイル読み書きも完全消去も、ブロックにデータを書き込むという点で同じ作業です。つまり完全消去できるストレージは普段の使用に耐えるのと同じぐらい健康でなければならないということです。壊れたストレージはどうすればよいのでしょう?やはりドリるしかないのでしょうか?

中古HDDだってゼロ円ではない

ムーアの法則の優等生だったHDDも、タイの洪水あたりで踊り場を迎えました。最近またSMRという技術の実用化で再び動き出した感がありますが、しかし読み書き速度が100MB/sという数字はあいかわらずで、容量以外の性能は大して変わっていません。

つまり中古市場が成立するぐらい進歩がゆっくりになってきているのですが、実際2TBのHDDなら3500円ぐらいで売れます。同等の新品が9000円弱であることを考えるとこれは驚くべきことです。

ドリるにはもったいないと思いませんか?お金に困ってなさそうな小渕先生の事務所ならとにかく。

SSDの完全消去は未確立

SSDはその仕組み上、データの「上書き」は上書きではなく新たなブロックに新しい内容を「書き写す」というやり方をしています。またよく知られているように、書き込み回数にも限界があります。そのこともあって、公表されている容量以外の記憶領域をどのSSDも持っているのですが、それがどれだけあるのかはSSDヴェンダー各社とも未公表です。完全消去のためにはその領域も消去しなければなりませんが、現在のディスク管理ソフトはHDDを前提としたものばかりで、Intelの"Secure Erase"など、ヴェンダー各社が独自に出しているユーティリティーを使う方法はありますが、HDDのようにSSDを問わずOKという手法は未だ確立されていません。

完全消去できないなら、はじめから自分以外の誰も読めないようにすればいいじゃない!

そもそもストレージの完全消去はなんのために行うのでしょう?自分以外の誰も読めないようにするためですよね!

だとしたら、はじめから自分以外の誰にも読めないようにしておけばいいではないですか。

暗号化は、完全消去にまつわる問題を根こそぎ解決してくれます。それを理解するために、ざっくりファイルとストレージの抽象化階層を回想してみましょう。

ディスク ↔︎ ボリューム ↔︎ ファイルシステム ↔︎ ファイル

この ↔︎ のところにデバイスドライバーなどのプログラムがはさまるのですが、このいずれかの段階で生データではなくそれを暗号化してしまえば、自分、正確には復号キーを持っている人しか読めなくなるわけです。つまり、もう何も消さなくてもいい。

完全消去の欠点を裏返すとそのまま暗号化の利点になりますが、念のために振り返っておきましょう。

時間ゼロ

暗号化されたストレージは、面倒ならそのまま人に譲ることができます。譲渡された人にわかるのは、せいぜいそれが暗号化されていたことぐらいで、復号キーまで譲渡でもしない限りそのまま初期化して使うぐらいしかできません。暗号化されていたことさえ知られたくないのであれば、普通に初期化で十分です。

壊れたストレージも安全

そのまま燃えないゴミに出せます。

壊れていなければそのまま下取りに出せる

新オーナーがあなたの秘密を発掘することはありえないのですから。

SSDでもOK

完全消去と違って新たに何もする必要がないのですから、これまた至極当然です。余計な書き込みが減る分、寿命を無駄にすることもありません。

欠点はないの?

強いて言えば、3つ。

復号キーの紛失

ストレージに限らず暗号化に関する最大のリスクは、復号キーの紛失。これをなくしては正当なオーナーもデータにアクセスできなくなってしまいます。ストレージ暗号化は、暗号化の要不要を問わず何もかも根こそぎ暗号化するため、それをなくしたときのダメージはファイル暗号化などと比較してずっと大きくなります。

これを防ぐため、ストレージ暗号化をサポートするOSのベンダー各社は、復号キーのバックアップを保管する手段を用意しています。例えば OS X のFileVaultでは、後述するように iCloud に復号キーをバックアップできます(もちろんそのバックアップ自体暗号化されています)。

OS Xに限らず、近年のコンシューマーOSはログインするにもパスワードが必要なものばかりなので、復号キー紛失リスクは暗号化しない場合と実はそれほど変わりません。である以上、この「欠点」は暗号化を躊躇する理由にはならないと私は考えます。

速度低下

ストレージ暗号化は、ストレージに保存するすべてのデータを暗号化するわけですから、すべての書き込みには暗号化、すべての読み込みには復号化という余計な仕事が発生するわけです。当然その分速度低下するのではという懸念がありますが、これはすでにハードウェアで対策されています。モダンなCPUには、暗号化専用命令がすでに入っているのです(例えばIntelならば、AES-NI)。

Wikipediaには「3.5サイクル/バイト」とありますが、これは3.5GHzのCPUであれば1コアあたり1GBpsで暗号/復号できることを意味します。最速のコンシューマーSSDよりも速い。実際2011年の段階で、FileVaultはユーザーに速度低下を気づかせないほど速かったのです。

OS依存

OS X のFileVaultにせよWindowsのBitlockerにせよ、それぞれのOSごとの実装であり、現状ではOSをまたいだストレージ暗号化は実現されていません。

しかしネットでいくらでもファイル共有ができ、クラウドストレージも充実しまくっている現代では、マスストレージを介したデータ交換自体、前時代的なやり方ではないでしょうか。むしろ政治資金のような、公表されるべきデータはクラウドストレージの使用を義務付けるところまで踏み込んでもいいかも。

ストレージ暗号化の現状

ストレージ暗号化の利点と欠点(の少なさ)がわかったところで、現状を見てみましょう。

iOS

利用形態を考えればある意味当然とも言えますが、ストレージ暗号化は、パソコンよりもむしろモバイルデバイスで進んでいます。

現在発売されているiPhoneやiPadはストレージははじめから暗号化されていてそもそも非暗号化ストレージというオプション自体が存在しませんし、iOS 8以降ではApple自身を含めた第三者が復号する手段自体封じられています。

Windows Tablets

Windows Tabletsのストレージもはじめから暗号化されています。私のmiix 2 8もはじめからBitLockerがかかっていました。

ただしUSBメモリーやSDカードなどの外付けストレージに関してはその限りではありません。

Android

5.0 Lollipop からサポートされるようになりました。新規端末に関してははじめからiPhone同様暗号化されているようです。ただし旧端末の暗号化はこんな感じでちょっと怖い。

「開始する前に完全に充電し、暗号化が完了する携帯電話を電源に接続しておく必要」がある上、「中断すると一部またはすべてのデータが失われ」るのでは躊躇する人も少なくなさそうです。

Windows

ディスク暗号化技術であるBitLockerはもうVistaから搭載されているのですが、すべてのエディションでサポートされているわけでもなく、使用できる条件もまちまちで私にはまとめきれません。詳しい方が誰か包括的な記事を書いてくれることを期待します。

OS X

OS X には v10.7 Lion からストレージ暗号化技術、FileVaultから搭載されていたのですが、v10.10 Yosemite搭載のMacから、ついにFileVaultがデフォルトでオンになるようになりました。それ以前と一番変わったのは、復元キーの保管の仕方で、以前は自分でメモるかAppleに大げさなやり方で保管してもらうかしなければならなかったのが、iCloudが使えるようになりました。

YosemiteにアップグレードしただけではFileVaultはオンにならないのですが、後からオンにするのも簡単です。環境設定のSecurity & PrivacyからFileVaultを選んで、アンロックしてオンにするだけ。それ以外の設定は、iCloudアカウントでディスクをアンロックできるようするか(デフォルト)、今までどおり自分で復元キーを保管するかを選ぶだけ。あとはシステム起動時にふつうにログインするだけ。暗号化している最中も普段どおり使えます。

ibrEiDJsM4vBpI.png

外付けストレージも簡単に暗号化できます。ディスクのアイコンを二本指クリック(別名右クリック)して、メニューから暗号化を選ぶだけ。

ielVORBVpw0rG.png

一度パスワードを設定したら、次にマウントするときにパスワードをたずねてきます。このときにキーチェーンにパスワードを保存するようにしておくと、次からは暗号化していないときのようにふつうにマウントしてくれますし、さらにキーチェーンをiCloudで同期していれば、別のMacに接続した際も自動でマウントしてくれます。

ibyLHbA9sUq9s6.png

余談ですが、暗号化の途中でもふつうにアンマウントできます。この場合、次にマウントした際に暗号化が再開されます。

ここまで敷居を下げられまたら、むしろ上がらない方が失礼というものでしょう、というぐらい無痛です。少なくとも3年以内の、Core i(5|7)の入ったMacをお使いの方には、"FileVaultいつOnにするの?今でしょ!」と申し上げておきます。

Time Capsuleがフルバックを当たり前にしたのと同様に、Yosemite(以降)のFileVaultがストレージ暗号化を当たり前にすることを期待しています。

OpenZFS

現代最高のファイルシステムといえば、ZFSにとどめをさします。単に高性能で高機能であるにとどまらず、OpenZFSのおかげで複数OSがサポートされているのもありがたい。FreeBSDで作ったディスクアレイ(ディスクじゃなくて!)がそのままOS XやLinuxで使えたのには感動を禁じ得ませんでした。

そのZFSで私が一番欲しいのが、データセット暗号化。OpenではないOracleのZFSにはすでにある機能なのですが、OpenZFSでは長らくTodoになっています。データセットではなくディスクデバイスの暗号化であれば、Linux(dm-crypt)もFreeBSD(eli)もOS Xも対応しているので暗号化したディスクでプールを構成すれば暗号化自体は達成できますし、zvol(仮想ディスクデバイス)をユーザー側で暗号化することも可能ではあるのですが、前述のとおり現状ではOS非依存のストレージ暗号化は存在しませんし、FileVaultやBitLockerのように既存の非暗号化ストレージを暗号化しなおすこともできません。

もっとも、ZFSに限らずディスクアレイはそれぞれのディスクを別々に処分してしまえばデータを抜き取られることもないので、その意味では秘匿性は担保できるのではありますが。

まとめ

ディスクをドリるのはグンマー人にまかせて、それ以外の文明人はストレージを暗号化しましょう!

100 Mail Magazine Continues

それでは、次号でまたお会いしましょう。

Dan the Programmer