残留磁気のことまで考えると、これ1回では心配かもしれませんが、これを行ったディスクからデータを復旧させるのは相当な技術力と設備が必要です。cube さんがどの程度までを求められるかにもよりますけれど、一番簡単でそこそこ安心な方法かと思います。
例)
# mediainit /dev/rdsk/cXtYdZ
あとは、dd(1) コマンドで適当なパターンで上書きすることですね。
例)bs は default の 1024 だと時間がかかります。
# dd if=/dev/zero of=/dev/rdsk/cXtYdZ bs=1024k
Windowsでは。
C:\>cipher /w:d:
できるだけ多くのデータを削除するために、CIPHER /W の実行中
はほかのアプリケーションをすべて終了してください。
0x00 に書き込み中 ……※1
........................... (中略) .............……※2
0xFF に書き込み中
........................... (中略) .............
乱数 に書き込み中
........................... (中略) .............
C:\>
※1 英語モードではこれらのメッセージは「Writing 0x00」となっているので、正しくは「0x00 を書き込み中」と訳されるべきだろう。単純なミスであるので、特に気にしなくてもよい。
※2 作業の進行中は、このように「.(ピリオド)」が少しずつ表示されるので、動作していることが確認できる。
Linuxだと。。
- shredで消去する
shredはファイルを上書きするためのプログラムです。GNU fileutilsに含まれ
ているため、多くのLinuxにも含まれています。デフォルトでは乱数で25回
の上書きを行います。shredの詳細についてはオンラインマニュアルを参照し
てください。なおshredやLinuxが古いと消去サイズを指定する必要があったり
2GBの制限に引っかかったりする場合がありますので、shredが入っていれば何
でもいいというわけではありません。
KNOPPIX 日本語版のCD-ROMでbootして /dev/hda を消去する例を以下に示しま
す。機能限定のレスキュー用Linuxではないのでシェルなども使いやすいです。
DMAにも対応していますし日本語106キーボードにも対応しています。
もちろんHDDの消去程度でしたら英語版KNOPPIXでも不自由しないと思います。
(1) KNOPPIXのCD-ROMからbootします。(Runlevel 2, Textmode only)
HDD消去にGUIは不要なのでbootプロンプトでは knoppix dma 2 とします。
# dmaというブートオプションがないKNOPPIXでは knoppix 2 で構いません。
なおPCの構成によっては素直にTextmodeで起動できない場合もあります。
重要なのは消したいHDDをswapとして使わない事とrootである事の二点です。
(2) shred -n 2 -v -z /dev/hda
この例では 乱数 → 乱数 → 0x00 という3回の上書きが行われます。-v を
指定すると処理の進み具合がわかり便利です。なお私は乱数の品質については
調査していません。
- badblocksで消去する
badblocksはデバイス上に不良ブロックがあるかを検査するプログラムです。
多くのlinuxのレスキューディスク(またはインストールディスクのレスキュー
モード)で使用できます。デフォルトではread-onlyで検査しますが、-w を指
定すると 0xaa → 0x55 → 0xff → 0x00 と4回の書き込みを行います。
badblocksの詳細についてはオンラインマニュアルを参照してください。なお
元々検査用のコマンドであるため4回の書き込みに対して毎回読み出しを行っ
てしまいます。このためshredにくらべ無駄に時間がかかります。また物によっ
てはコマンドラインオプションで block count を指定しなければならないタ
イプのbadblocksもあります。
Red Hat Linux 7.2のDisc1でbootして /dev/hda を消去する例を以下に示しま
す。恐らく7.3以降でも簡単だと思います。
(1) Disc1というCD-ROMからbootします。
ブートの種類を選ぶ所では linux rescue を選択します。
言語は英語を選択します。
キーボードの種類を選択します。
ContinueとSkipでContinueを選択します。
以上でレスキューモードのシェルが起動します。
(2) badblocks -vw -c 1024 /dev/hda
- ddで消去する
広く知られている通り、ddでもHDDを消去できます。
dd if=/dev/zero of=/dev/hda
を実行すると /dev/hda 全域を 0x00 で1回上書きします。大きなブロックサ
イズを指定する事により時間短縮できる場合があります。厳密には 0x00 の全
面書き込み1回だけでは不十分と言われる事もあるので、必要に応じて色々と
工夫してみた方がよいかも知れません。
Solarisです。
Solaris 上でディスクのデータを完全に消去する方法
最近「セキュリティー」というキーワードが、以前よりかなり熱くなっている気がしますが、 セキュリティーを確保するために「ディスクのデータを完全に消去する」というのは 重要かと思います。
私も 5 年前は「/dev/zero で上書きしておけば問題ない」と思いこんでいたのですが、 調べてみれば、ディスク内の磁気情報を利用した解析修復ツールであれば、書き込む直前の 状態、例えば 0 の上に書かれた 0 なのか、1 の上に書かれた 0 なのかを区別できて しまいます。なので /dev/zero での上書きだと完全では無いですね。。。 そこで RANDOM にいろいろ書き込んで以前のデータが修復出来ない状態にしないと いけないのですが、どうすれば良いでしょう?
一度に大量のデータ消去作業を伴う場合は、何らかの有償サービスを受けるのが手間が掛からなくて良いと思いますが、 自分の Workstation のみディスクを捨てたいような場合は、自分で行った方が簡単ですね。 そこで Solaris の format コマンドを使用することにより、ディスクのデータを 完全に消去することも可能です。
以下の手順です。
1. format -> defect -> primary -> quit2. analyze -> purge -> quit
3. defect -> both -> quit -> analyze -> purge -> quit -> quit
結構?かなり?時間がかかりますが、これで完全に消去できます。
以下の URL に技術的な詳細が書かれていますので勉強になります。 "The format command overwrites the available disk sectors with patterns that comply with the Department of Defense declassification regulations for data remanence. " とのこと。ざっくり訳すと「format コマンドは米国国防総省機密解除規則に従うパターンで 利用可能なディスクセクターを上書きします。」となります。 Trusted Solaris の資料ですが、一番下の部分に Solaris でも同じとの記述があるので Solaris でも同様の手順です。
Trusted Solaris Operating System - Technical FAQs
>> How do I remove sensitive information from a disk?
>> http://www.sun.com/software/solaris/trustedsolaris/ts_tech_faq/faqs/purge.xml