ddコマンドを使った以下の方法で抹消できるのは、ディスク全体かパーティション全体だ。ディスクの空き領域(削除済みファイル)のみ、または特定のファイルを抹消する目的には使えない。
ddコマンドは、多くのLinuxディストリビューションで、ブートフロッピーに含まれている。PCを廃棄したり売ったりするとき、適当な抹消ツールがなければ、LinuxのブートフロッピーでPCを起動し、ddコマンドを抹消ツールの代りに使うことができる。
例1
PCの内蔵ハードディスクが1台の場合、そのハードディスク全体にゼロを書き込む
# dd if=/dev/zero of=/dev/hda
"/dev/hda"は、IDEプライマリハードディスクを示す。内蔵ハードディスクが1台の場合は、「内蔵ハードディスク全体=IDEプライマリハードディスク=/dev/hda」になる。
2台めの内蔵IDEハードディスク全体へのゼロ書き込みなら、
# dd if=/dev/zero of=/dev/hdb
になる。
IDEではなくSCSIであれば、上の例はそれぞれ
# dd if=/dev/zero of=/dev/sda
# dd if=/dev/zero of=/dev/sdb
になる。
例2
Windowsの起動パーティション(Cドライブとして表示されるパーティション)全体にゼロを書き込む
# dd if=/dev/zero of=/dev/hda1
WindowsからCドライブとして表示される領域は、プライマリハードディスクの第1パーティション=/dev/hda1だ。
SCSIハードディスクの第1パーティションなら、
# dd if=/dev/zero of=/dev/sda1
になる。
例3
抹消の対象は例1、2と同じで、ゼロではなく乱数を書き込む
乱数の書き込みには、/dev/zeroに替えて/dev/uramdomを使う。
# dd if=/dev/urandom of=/dev/hda (プライマリハードディスク全体)
# dd if=/dev/urandom of=/dev/hdb (セカンダリハードディスク全体)
# dd if=/dev/urandom of=/dev/sda (1番目のSCSIハードディスク全体)
# dd if=/dev/urandom of=/dev/sdb (2番目のSCSIハードディスク全体)
# dd if=/dev/urandom of=/dev/hda1 (プライマリハードディスクの第1パーティション)
# dd if=/dev/urandom of=/dev/sda1 (1番目のSCSIハードディスクの第1パーティション)
/dev/uramdomが、どのLinuxディストリビューションのブートフロッピーにもあるとは限らない。
/deb/urandomを使う場合は、ハードディスクを上書きの対象にすると、処理が完了するまで「数時間」の単位の時間がかかると考えた方がよい。
ddコマンドで抹消したフロッピーを、データ復元ツールで解析してみる。
「フリーのデータ抹消ツール vs. 商用のデータ復元ツール」のテストと同様に、未使用かつFATフォーマットのフロッピーに、本サイトのファイルを書き込んだものを抹消し、ファイナルデータDX 試供版で解析してみることにした。
しかし、ddで先頭セクタから上書きされたディスクは、Windowsから未フォーマットと認識され、そのままではファイナルデータで処理できない。そのため、一度FAT形式でクイックフォーマットしてからファイナルデータで解析することになった。通常のフォーマットでは、フロッピーは物理フォーマットされてしまうため、ファイナルデータで解析できなくなる。
それぞれの所要時間は、CPU:Pentium III(550MHz), RAM:128MBのPCで実行した結果である。
実験1
# dd if=/dev/zero of=/dev/fd0
所要時間:48秒
ファイナルデータによる解析結果
何も表示されない。
ディスクのダンプツール(ファイナルデータとは別)を使って見てみると、全域にゼロが書き込まれていることがわかる。
実験2
# dd if=/dev/urandom of=/dev/fd0
所要時間:49秒
ファイナルデータによる解析結果
実験1と同じで、何も表示されない。
ディスクのダンプツールを使って見てみると、全域に乱数が書き込まれていることがわかる。
実験3
# dd if=/dev/urandom of=/dev/fd0 ; dd if=/dev/urandom of=/dev/fd0 ; dd if=/dev/zero of=/dev/fd0
乱数→乱数→ゼロの書き込みであり、「NSA方式」の抹消と一応同じになる。
所要時間:計146秒
ファイナルデータによる解析結果
実験1と同じで、何も表示されない。
ディスクのダンプツールを使って見てみると、全域にゼロが書き込まれていることがわかる。
まとめ
ddコマンドでゼロや乱数を上書きしたフロッピーは、ファイナルデータで復元できない。上書きにかかる時間は、「フリーのデータ抹消ツール vs. 商用のデータ復元ツール」で実験したどのツールよりも短い。
Linuxには、乱数を生成する仮想デバイスとして"/dev/random"と"/dev/urandom"がある。両者の違いは以下のとおり。
/dev/random
十分なビット数のランダムデータがない場合、デバイスドライバやその他の源からの環境ノイズが蓄積されるまで、乱数の生成を行わない。
/dev/urandom
十分なビット数のランダムデータがない場合、現在保持している値の、暗号学的に強いハッシュ値を返す。つまりいつでも乱数を読み込める。
# dd if=/dev/urandom of=/dev/fd0
の代わりに
# dd if=/dev/random of=/dev/fd0
とした場合、後者ではランダムデータが不十分であれば乱数の生成が停止するため、一定の速度で上書きができない可能性がある。
Copyright (C) Cybernetic Survival Network. All Rights Reserved.