Windowsでディスクの内容を完全に消去するTech TIPS

ディスクを破棄したり、譲渡したりする場合には、あらかじめディスクの内容を消去しておかないと情報が漏えいする危険性がある。ファイルをごみ箱に捨てても、インデックスが削除されるだけで、データ本体を消去するわけではない。そのためファイルを復活させることもできる。データを完全に消去するためには、ディスク全体に渡ってデータを完全に上書きする必要がある。このためにはcipher /wコマンドを実行すればよい。

» 2011年06月27日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows XP/Windows Vista/Windows 7/Windows Server 2003/Windows Server 2008/Windows Server 2008 R2



解説

 コンピュータ・システムやハードディスクを破棄したり、人に譲渡したりする場合は、内部のデータを完全に消去しておかなければならないことは、改めていうまでもないだろう。中古で購入したシステムやディスクの中に、重要な(社内の機密)情報や顧客情報などが残っていて、それらが悪用されたり、インターネットなどで公開されたりするという事件もたびたび起こっているからだ。

 このような事態が発生するそもそもの原因は、ディスクの内容を「完全に消去」することが簡単なようで、実はそうではないからであろう。ファイルやフォルダをごみ箱にドロップして、ごみ箱を空にしたり、ディスクのパーティションを削除したりするだけではディスクの内容を「完全に消去」したことにはならない。これらは本にたとえれば、目次を消しただけで、本文に相当する部分のデータはまだそのままディスク上に残っているという状態である。操作を間違えてファイルを消してしまった場合のために、消去したファイルを復活させるソフトウェアがあることからも分かるように(TIPS「誤って削除してしまったファイルを復元する」参照)、このような方法だけではディスクの内容を完全に消去することはできない。

 本当にディスクの内容を消去するためには、ディスク上のすべてのセクタに渡って何らかのデータを上書きしなければならない。このような操作は、「ディスク・ワイプ(wipe=ふき取る)」とか「ディスク・ホワイトニング(whitening=まっ白にする)」と呼ばれ、市販のツールもいくつか販売されているし(例:株式会社アイ・オー・データ機器の「DiskRefresher」など)、そのような操作を専門に請け負う事業者も存在する。また社団法人電子情報技術産業協会(JEITA)から、パソコンを破棄する場合のデータ消去に関するガイドライン「パソコンの廃棄・譲渡時におけるハードディスク上のデータ消去に関する留意事項」も発表されている。

 ディスクの内容を完全に消去するには、ディスク全体に対してある特定のデータを書き込み、もとのデータを完全に上書きしてしまえばよい。その方法についてはTIPS「diskpartのcleanコマンドでディスクの内容を消去する」を参照のこと。市販のディスク・ワイプ・ツールなどもこのような方法でディスクの内容を消去している。これ以外にも、物理的にディスク内のプラッタを破壊するという方法がいちばん確実だが、これについては特に触れない。

操作方法

 Windows OSには、cipher.exeというコマンド・プロンプト上で使用するツールがある。これはNTFSの暗号化機能を制御するツールであるが、付加機能として、ディスク・ワイプを行うオプション(/w)が用意されている。ただしWindows 2000の場合はSP3以降が適用されている必要がある(詳細についてはマイクロソフトのサポート技術情報の「暗号化ファイル システム用 Cipher.exe セキュリティ ツール」「[HOW TO] Windows で Cipher.exe を使用して削除済みのデータを上書きする方法」を参照のこと)。この機能が利用できるかどうかを調べるには、とりあえずコマンド・プロンプト上で「cipher /?」(cipherコマンドのヘルプを表示させる)を実行してみればよい。そこに「/w」オプションの説明が含まれていれば、ワイプ機能を利用することができる。

 /w オプションを付けて実行すると、cipherは、ディスクの空き領域いっぱいになるように、ある特定のパターンのデータを3回ファイルに書き込み、最後にそれを消去する。最初の1回はオール0(バイト・データとしては0x00)を書き込み、次はオール1(バイト・データとしては0xff)を書き込み、そして最後にランダムなデータを書き込む。3回書き込むのは、(磁気記録メディアにおける)残留磁気などの影響をなくすためであり、米国防総省(DOD)などで決められた消去手順である。例えば1回だけ0を書き込むとすると、それ以前の磁気データのパターン(1か0)に応じて、どうしてもわずかながらもゆらぎが生じる(もちろんこれはアナログ的なミクロの視点で見た場合の磁気データ・パターンの話であり、デジタル的には正しく0になっている)。また、メディアの記録方式によっては、常に同じ位置に書き込まれるわけではなく、多少の位置のずれが生じ、以前のデータがわずかながらも残っている可能性がある。このような影響を極力除くため、最初にデータを1回書き込み、次はその反転データを書き込み、さらにランダムなデータを書き込むようにしている。実用上はこれで十分であろう。これよりも確実性を求めるなら、さらに何度か繰り返すとか、ディスクを物理的に破壊するしかない。

 cipherのワイプ・オプションでは、ディスクの空き領域いっぱいにファイルを書き込むことによってディスクの内容を消去している。そのため、このコマンドを実行する場合にはなるべくたくさんのディスク領域を空けておく必要がある。コマンドを実行すると、空き領域を増やすために「ほかのアプリケーションをすべて終了してください」というメッセージが表示される。現実的には、OS自身がインストールされているドライブを消去するのではなく(使用中の領域は当然ながら消去できないので)、2台目以降のディスクとしてシステムに増設し、空のNTFSパーティションを新規作成して、そこを消去対象とするべきであろう。

 利用方法は非常に簡単で、まずはディスク内のすべてのファイルを削除し、cipherコマンドに/w オプションとドライブ名を付けて実行するだけである。以下では、D:ドライブの内容を消去している。指定したドライブにEFSTMPWPというフォルダが作成され、その中にファイルが作成される。

C:\>cipher /w:d:
できるだけ多くのデータを削除するために、CIPHER /W の実行中
はほかのアプリケーションをすべて終了してください。
0x00 に書き込み中 ……※1
...................... (中略) .............……※2
0xFF に書き込み中
...................... (中略) .............
乱数 に書き込み中
...................... (中略) .............
C:\>

※1 英語モードではこれらのメッセージは「Writing 0x00」となっているので、正しくは「0x00 を書き込み中」と訳されるべきだろう。単純なミスであるので、特に気にしなくてもよい。
※2 作業の進行中は、このように「.(ピリオド)」が少しずつ表示されるので、動作していることが確認できる。



 ディスク全体にファイルを3回も書き込むので、かなり時間がかかることは覚悟しておいていただきたい。例えば手元の20Gbytesのディスクでは(20Gbytesの空のNTFSパーティションを用意した)、全部終了するまでに1時間程度かかっている(この場合のディスクの書き込み速度は20Mbytes/sec弱になる)。

 このように、OSの標準機能としてこのワイプ機能が含まれているのは非常にありがたいといいたいところだが、パッケージ販売されているような製品と比べると、次に述べるようにかなり制約が多いので、その制限や結果について十分理解してから利用していただきたい。

注意

○空き領域だけしかワイプできない――これはその動作原理を考えれば当然だが、現在OSシステムが入っているパーティションを完全に消去したいというような用途では使いにくいし(別システムにディスクを接続して操作したりしなければならない)、ユーザー・プロファイルだけを全部削除する、といったことはできない。

○NTFSのみが対象――ファイルを作成してデータを書き込むというコマンドなので、必ずNTFSパーティションを用意しなければならない。パーティションを切っていないディスクを直接消去できない。

○FATパーティションは原則利用できない――FATファイル・システム上で実行すると、作成できるファイル・サイズが4Gbytesまでなので(「TIPS―ファイル・システムの制限(2G/4GBytes超のファイルに注意)」参照)、4Gbytes以上の領域を消去することができない。4Gbytes以上のFATパーティションでも単に1つしかファイルを作成してくれず、しかもこのことについて一切警告をしてくれない。そのため、一見すると正常終了したように見えるが、実は4Gbytes分しか消去されていない。素早く終了した場合は、問題がないかどうかをよく確認する必要がある。

○消去の確認は不可能――完全に消去されたかどうかを確認する方法が提供されていないので、ほんとうに消去されたかどうかを確実に知る方法はない(ディスクの内容を直接ダンプするコマンドなどを使えば可能だが)。どのくらいの時間で終わったかなども報告してくれないので、やや不安が残るかもしれない。


 以上のような制約などがあるので、可能ならば市販のディスク・ワイプ・ツールを使ったり、ディスク全体を消去してよいのなら、TIPS「diskpartのcleanコマンドでディスクの内容を消去する」の方法なども併用するとよいだろう。

■更新履歴

【2011/06/27】Windows XP〜Windows 7およびWindows Server 2003〜Windows Server 2008 R2を対象OSに加え、記述を一部修正しました。

【2003/03/01】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。