ハードディスクのデータ完全消去ツール

 コンピュータを長い間使い続けていくと、やがては不要になったディスクドライブを廃棄するという日が訪れるはずだ。そうした際には第三者への情報漏洩を防止する観点から、廃棄するドライブのデータを事前に消去しておくべきである。しかしながら、通常の操作によりすべてのファイルを削除して再フォーマットを施すという措置だけでは不充分なのであって、表面上はドライブから消えていたはずのデータも、実はある程度の手間をかければ抽出できる状態で残されているのだ。そのような復活の余地なくデータを完全消去したいという場合に私がお勧めするのが、本稿で紹介する wipe というツールである。

 こうした完全消去という作業をわざわざ行わなくてはならない背景には、そもそもコンピュータにおけるファイルの“削除”という処理ではデータとしての存在が実際に消去されている訳ではないという事実が存在している。つまり、Linuxおよびext2ファイルシステムという組み合わせも含めた大多数のオペレーティングシステムが行うファイルの削除とは、各ファイルへの“ポインタ”を削除しているだけなのであって、そのデータ本体はドライブ上に残されたままになっているのだ。後者が実際に取り除かれるのは、それらが占有していたドライブ上の領域をその後何か別のデータによってすべて上書きされた段階ということになる。ただしこうした上書きがされた後であっても高度な物理的な解析手法をドライブに施すことによって消え去っていたはずのデータを再現することができる場合もあり、実際にそうした解析を行うのは簡単ではないものの、その危険性を完全に否定することもできないのだ。つまり廃棄するドライブを火にくべて溶かすようなことでもしない限り、実質的な意味でデータを完全消去させるには、ランダムなデータによるドライブ全体の上書きを何度か繰り返すしかないのである。

 ファイルやドライブを完全消去するためのLinux用ユーティリティは複数存在しており、そこで用いられる手法も基本的にはすべて共通している。これらの中でも今回特にwipeを取り上げた理由は、特定パーティション上にある1つのブロックだけを消去するなど、実行時に指定可能なオプションが他のツールよりも豊富に装備されているからである。

 現在運用中のシステムに内蔵された状態のドライブに対してこうした処理を施したい場合、一番簡単な選択肢は、適当なLinuxライブCDを用意してそこからwipeを実行することである。例えば、ライブ版Linuxディストリビューションの草分け的存在であるKnoppixにはwipeが実行可能な状態で同梱されている。具体的な手順としては、Knoppixの最新バージョンをダウンロードしてCDに焼き込み、これを処理対象のマシンのCDドライブに挿入してシステムをブートさせればいい。特に問題がなければKnoppixが起動してKDEインタフェースが表示されるはずだ。

その他のユーティリティ
 ファイルやディスクドライブの完全消去用ユーティリティは、本文中で取り上げたwipe以外にも各種存在している。例えばwipeで可能な処理はshredというツールでもすべて実行することができる。またsecure-deleteも同様のツールであるが、これはsrm、smem、sfill、sswapという4つの独立したプログラムにて構成されたスイート型ユーティリティであり、各プログラムはそれぞれ下記の機能を果たすよう作られている。
  • srm:ファイルおよびディレクトリの消去
  • smem:メモリ領域の清掃
  • sfill:ドライブ上の空き領域の清掃
  • sswap:スワップ領域の清掃
 実際にどの消去ユーティリティを利用するにせよ、行われる処理は実質的にすべて同じであり、いずれも所定の目的を果たしてくれるはずだ。

 次に画面下部のツールバーにあるアイコンをクリックしてKDEの端末エミュレータであるKonsoleを起動し、/devディレクトリにおけるすべてのディスクデバイスを一覧させ、消去対象のハードドライブに存在するパーティション名を確認する。そのためのコマンドとしては、IDEドライブの場合は「ls /dev/hd*」を、SCSIドライブの場合は(SATAドライブの場合も)「ls /dev/sd*」を入力すればいい。こうしたコマンドを実行すると画面に複数の項目が出力されると思うが、通常は/dev/hdaあるいは/dev/sdaとされているのがプライマリドライブであり、デバイス上の各パーティションごとに1つの項目が表示されているはずである。

 改めて言うまでもないだろうが、wipeを実行すると処理対象のファイルシステムに格納されていたすべてが完全に消去されてしまう。つまりここでの処理をひとたび実行してしまうと復旧は不可能になるのであり、重要なデータは必ず事前にバックアップしておかなくてはならない。

 wipeの開発陣からは1度に1つのパーティションのみを消去することが推奨されているので、それに従うとスワップパーティションを含めたすべてのパーティションに対して、「sudo wipe /dev/partition 」というコマンドを個別に実行することになる。ここでsudoコマンドを用いているのは、パーミッション関連のエラーを回避するためである。またwipeによる処理プロセスの完了までには、中程度のサイズのハードドライブであっても数時間を要すことになるが、この時間を短縮させるには、上書きプロセスの繰り返し数を-Qオプションで変更できるので、ここにデフォルト設定の4より小さい値を指定すればいい。ただし理屈上は、プロセスの繰り返し数は多ければ多いほど安全性は高くなるはずである。

 処理対象のドライブが現在運用中のシステムに内蔵されたものでない場合は、必要に応じて外付け用ケースに収めるなどの措置をした上で、USB経由でLinuxマシンに接続すればいい。ただしウィンドウマネージャの多くは、外付け式ストレージデバイスがUSBコネクタに接続された段階でこれらを自動マウントするようになっているので、wipeの実行前にはドライブのアンマウントをしておく必要がある。またこれから新規にwipeをインストールするというユーザの場合は、各自のディストリビューションのパッケージマネージャを確認して頂きたい。後は先の手順と同様、ターミナルセッションにてデバイスの確認を行い、個々のパーティションごとにwipeを実行していくだけであり、その際に使用するコマンドについても特に変更はない。

 残念ながら、本稿で紹介したwipeを用いて完全に消去したはずのドライブであっても、何らかの方法によってデータを再現されることは絶対にあり得ないとまでは保証できないのだが、そうした試みをより困難にすることだけは確かである。

Chad Filesは、10年以上のアプリケーション構築経験を有するソフトウェア開発者兼ライターであり、現在は様々なオープンソース系プロジェクトに開発者として参加している。

Linux.com 原文