![]() |
|||||||||||||||||||||||||
Sorry, this site is Japanese only.
当サイトはFireFoxの普及を 応援しています。 |
Linux Workstation
Linuxを用いたHDDのデータ完全消去法PC を他人に譲ったり,売る,または廃棄するとき. その HDD に格納されているデータは大丈夫だろうか? って,ちょっと前にそういうネタがはやったような気がします.
まぁさすがに, HDD 内のデータをそのままでって人はいないでしょうけど,
パーティションを消したり, HDD を一度フォーマットするっていう程度で安心している人が結構多いと思います.
しかし,これでは HDD 内のデータを完全に消去したとはいえないのです.
ひょっとしたら,クレジットカード番号が漏れて悪用されるなんてことも起こかもしれません. 能書きさて,なぜパーティションを消したりフォーマットを書けるだけではいけないのかといいますと, まず,パーティション,こいつは HDD の先頭にある MBR(Master Boot Record)と呼ばれるところで, どこからどこまでを1パーティションとするかが書かれているわけです. パーティションを削除するってのは,この先頭部分を書き換えただけな訳で, 実際のパーティションの中身はそのまま残っている訳です. MBR を復旧すれば元通り使えてしまいます. Linux を使うと元通りパーティションを切るだけで,そのまま使えたりします.
フォーマットすれば大丈夫と思っている人は多いと思います.かく言う私もそうでした.
フォーマットっていうのはそれぞれのファイルがどこに書き込まれているかという
ファイルシステムの情報を消す(初期化する)だけなので,
これまたファイルシステムを経由せず HDD に直接アクセスするソフトを使えば簡単にデータを読み出すことができるんですね.
実際に売られている消してしまったファイルを復活させるソフトはこういう仕組みを利用していたりします. Knoppixを使ってHDDのデータを完全消去
と能書きをたれましたが早い話,データの場所の情報だけではなく,
実データ部分を含め, HDD の全領域に上書きしてやればいいわけです.
まずは注意書き. Knoppix の起動 CD-ROM の作成
では Knoppix をダウンロードしましょう.
ダウンロードするのはKnoppix 日本語版
の「ダウンロード」にある CD[ISO]版というやつです.
http://unit.aist.go.jp/itri/knoppix/iso/index.html 以下,コマンドの出力例とか出してますが,実機でやるのがめんどくさかったので Virtual PC で実行した結果を表示しています. 起動まず起動してみましょう(この後 PC を数時間放置プレイすることになるので必要のないパーツははずしておこう,電気は大切に). 最初の画面で Enter キーを押せば起動しますが, それではうまくいかない場合はいろいろと起動オプションを選択します. この作業を行う上では XWindowSystem は必要ないので起動の際コンソールのみで起動するように RunLevel をしてすれば, グラフィックボードを認識しない場合でも使えますし,起動の時間を短縮できます. boot オプションは起動画面がでている間に F2 や F3 を押すとヘルプが表示されるので, 詳しくはそちらを参照してください. コンソールログインでの RunLevelは一般的な Linux の 3 と違って 2 です. 起動ラベルは knoppix なので, boot: knoppix 2
とします.
Knoppixの場合コンソールでもフレームバッファを使っているため,
グラフィカルログインはOKだけど,コンソールログインは表示できないとかってことも起こりえます.
ここは,状況に合わせて臨機応変に Tips上で紹介した Knoppix は日本語版なので,日本語化がされているわけですが, コンソールでは日本語表示ができない模様,文字化けで訳わからん.そんなときは # export LANG=C
とすれば,メッセージが英語で表示されるようになり,
文字化け解消(はじめから英語版使えとかつっこまない). # kbdconfig でキーマップを適切なやつに変更すれば万事OK.(英語キーボードは us) HDDの確認では,起動後グラフィカルログインした場合,ターミナルを立ち上げます. コンソールの場合そのまま. そして,とりあえず root になります(コンソールログインでははじめから root の可能性あり). パスワードは空なので su
だけで,OK
# dmesg | grep hd
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:DMA, hdd:pio
hda: Virtual HD, ATA DISK drive
hdc: Virtual CD, ATAPI CD/DVD-ROM drive
hda: attached ide-disk driver.
hda 33554304 sectors (17180 MB) w/64KiB Cache, CHS=2088/255/63
hda: hda1 hda2 hda3 < hda5 hda6 >
hdc: attached ide-scsi driver.
として,HDDがどのように認識されているかを確認します. hda: hda1 hda2 hda3 < hda5 hda6 >
この行は HDD のパーティション情報です.
<> で囲まれたところは拡張パーティションの論理パーティションを表しています. DMAが有効かどうかは,以下のようにしても確かめられます. # hdparm -d /dev/hda /dev/hda: using_dma = 1 (on) DMA が効いていない場合,HDDの書き込みにすさまじい時間がかかってしまいます. もし,offと表示された場合,以下のようにHDDの情報を表示して設定可能な転送モードを確認します.
# hdparm -i /dev/hda
/dev/hda:
Model=MVirtual HD, FwRev=1. 1, SerialNo=
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=32256, SectSize=512, ECCbytes=0
BuffType=DualPortCache, BuffSize=64kB, MaxMultSect=128, MultSect=128
CurCHS=33288/16/63, CurSects=33554304, LBA=yes, LBAsects=33554304
IORDY=on/off, tPIO={min:333,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: sdma0 sdma1 sdma2 mdma0 mdma1 *mdma2
AdvancedPM=no
* signifies the current active mode
DMAモードが選択可能であるのに off になっている場合は # hdparm -d1 /dev/hda /dev/hda: setting using_dma to 1 (on) using_dma = 1 (on) として, DMA を有効にします. 設定できないのに DMA を強制的に有効にしようとすると, ハードウェア的に不具合がでる可能性もあるので気をつけましょう. 比較的新しいDMAコントローラなどの場合ドライバが無いため DMA が有効にできない場合もあります. その場合,カーネルを変えてみる. それでもだめなら,新しいバージョンがでるまで待つか,数日間かけても実行するか,他の比較的新しいLinuxを使うかってところですかね・・・ では,全領域に対する書き込みなんていう すさまじいデータ量の書き込みをやるのにどれぐらいの時間がかかるかですが, 先ほど使った hdparm というコマンドを使ってHDDのベンチマークがとれます. # hdparm -t /dev/hda /dev/hda: Timing buffered disk reads: 212 MB in 3.02 seconds = 70.20 MB/sec
70.20 MB/sec とでました(VirtualHD なのでめちゃ速い).
(DMA が有効になっていない場合,この数字が一桁だったりします.) 完全消去
では,やっとこさ肝心の消去作業に入ります. ここで使うコマンドは dd です. 消去対象の HDD のデバイス名を hda とすると, # dd if=/dev/zero of=/dev/hda
あとは,終わるのをひたすら待つのみ. サンプルで示したコマンドはブロックサイズは指定していませんが,デフォルトのサイズは小さすぎるので, 読み込み→書き込みのループのオーバーヘッドで必要以上に時間がかかるかもしれません. # dd if=/dev/zero of=/dev/hda bs=10MB 等と大きめのサイズを指定すると(少なくともHDDのキャッシュより大きい方がいいのかな?),早く終わるかもしれません. 国家レベルの諜報機関にも情報を漏らしたくない人はちなみに,先に述べたような残留磁気を使った読み出しにまで対処する場合, shred というコマンドが役に立つでしょう # shred -n 2 -z /dev/hda
とすると,乱数を2回書き込んだ後,ゼロフィルを行ってくれます.
(nを指定しない場合,25回も乱数を繰り返し書き込むので注意) Linuxを用いたHDDのデータ完全消去法 作業要約
| ||||||||||||||||||||||||
| 碧色工房-blue studio- Copyright ©2001-2007 大前良介(OHMAE Ryosuke) All rights reserved. | |||||||||||||||||||||||||