ディスクドライブのデータ完全消去ツールLeverage OSS

世に数あるデータ完全消去ツールのうち、今回wipeを取り上げるのは、特定パーティーション上にある1つのブロックだけを消去するなど、実行時に指定可能なオプションがほかのツールよりも豊富に装備されているからである。

» 2008年06月03日 00時00分 公開
[Chad-Files,Open Tech Press]
SourceForge.JP Magazine

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

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

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

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

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

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

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

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

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

そのほかのユーティリティ

 ファイルやディスクドライブの完全消去用ユーティリティは、本文中で取り上げたwipe以外にも各種存在している。例えばwipeで可能な処理はshredというツールでもすべて実行できる。またsecure-deleteも同様のツールだが、これはsrm、smem、sfill、sswapという4つの独立したプログラムにて構成されたスイート型ユーティリティであり、各プログラムはそれぞれ後記の機能を果たすよう作られている。

  • srm:ファイルおよびディレクトリの消去
  • smem:メモリ領域の清掃
  • sfill:ドライブ上の空き領域の清掃
  • sswap:スワップ領域の清掃

 実際にどの消去ユーティリティを利用するにせよ、行われる処理は実質的にすべて同じであり、いずれも所定の目的を果たしてくれるはずだ。


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


Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ