前: rm invocation, 上: Basic operations


11.6 shred: より安全なファイルの削除

shredは,非常に高価なハードウェアを用いてもデータの復活を妨 げるように,デバイスやファイルを上書きします.

通常,ファイルを削除するとき(see rm invocation),データは実際には 破壊されません.ファイルが保存されている場所をリストアップしている索引 のみ破壊し,記憶装置は再利用可能になります.索引の再構築を試み,その部 分が再利用されていない場合,ファイルを元に戻すことが可能なアンデリート ユーティリティがあります.

ほとんど満タンのドライブを使用している忙しいシステムでは,スペースは数 秒で再利用可能になります.しかし,それが確実であることを知る方法はあり ません.機密データがあり,機密でないデータでファイルを実際に上書きする ことでリカバリが不可能だということを確かめたいかもしれません.

しかし,そうした後でも,研究所へディスクを持っていき,上書きされたデー タの下の元データのかすかな“残響”を探すために感度の高い(そして高価な) 多くの機器を使用することが可能です.データが一度上書きされただけでは, それはさほど難しくありません.

取り返しができないように何かを削除する最前の方法は,メディアに酸をかけ て破壊する,溶かしてしまう,またはそれに似たことをすることです.フロッ ピーディスクのような,安い着脱可能なメディアに対しては,これは好ましい 方法です.しかし,ハードドライブは高価で,溶かすのが難しいため, shredユーティリティでは破壊することなく類似の効果を達成しよ うとします.

これは,古いデータに対するダメージを最大にするように選ばれたデータパター ンで,上書き動作を何回も使用します.これがフロッピーディスクで動作して いても,パターンはハードドライブで最適な効果があるように設計されている ものになります.詳細は,ソースコードと,Sixth USENIX Security Symposium (San Jose, California, 22–25 July, 1996)の予稿から,Peter Gutmannの論文Secure Deletion of Data from Magnetic and Solid-State Memoryを参照してください.論文は http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.htmlで,オ ンラインでも利用可能です.

shredは非常に重要な仮定に依存していることに注意して ください.それは,ファイルシステムがその場所のデータを上書きするとい うことです.これは伝統的な方法ですが,現代の多くのファイルシステムはこ の仮定を満足するように設計されていません.例外は以下を含みます.

ファイルシステムがどのように動作しているかよく分からない場合,その場所 に上書きされないと仮定すべきで,それは,そのファイルシステムの通常のファ イルで,shredが信頼できる動作を行うことができないことを意味 します.

一般的に言って,上記の手法で設計されたファイルシステムの問題をバイパス するため,ファイルではなくデバイスにshredするとより信頼でき ます.しかし,デバイスをshredしてさえ,常に完全に信頼するこ とはできません.例えば,ほとんどのディスクは,不良セクタがアプリケーショ ンに見えないようにをマッピングします.不良セクタが機密データを含む場合, shredではそれを破壊することは不可能です.

shredは,バックアップについて何もしないように,これらの問題 の検出も報告も試みません.しかし,ファイルではなくデバイスに shredする方がより信頼できるので,shredはデフォルト で出力ファイルを切り詰めたり削除したりしません.このデフォルトはデバイ スに対しより適していて,それは通常切り詰めもできませんし,削除もすべき ではありません.

最後に,バックアップとミラーの危険性を検討します.ファイルシステムのバッ クアップとリモートのミラーには,削除不可能なファイルのコピーが含まれ, それでshredしたファイルを後に復活させることが可能です.その ため,その後shredを使用して破壊したいデータを保持している場 合,バックアップやミラーが無いことを確かめて下さい.

     shred [option]... file[...]

プログラムは以下のオプションも受け入れます.Common optionsも参照 してください.

`-f'
`--force'
上書き可能が必要な場合,ファイルの許可に優先させます.
`-NUMBER'
`-n NUMBER'
`--iterations=NUMBER'
デフォルトで,shredは25回の上書きを使用します.これで,少な くとも一回の使用で使用される有用な上書きパターンの全てに対して十分にな ります.時間の節約のため減らしたり,時間の無駄遣いをする場合に増やすこ とが可能です.
`-s BYTES'
`--size=BYTES'
ファイルの最初のBYTESバイトをshredします.デフォルトは ファイル全体をshredします.BYTESは乗数を指定するために, `k',`M',または`G'のようなサイズ指定を続けることができ ます.See Block size.
`-u'
`--remove'
ファイルをshredした後,(可能な場合は)それを切り詰め,そして 削除します.ファイルが複数のリンクを持つ場合,指名されたリンクのみ削除 されます.
`-v'
`--verbose'
バイ菌の増殖のようにステータスの表示を更新します.
`-x'
`--exact'
デフォルトで,shredは,ファイルの最後のブロックまで完全に消 去するため,通常のファイルのサイズをファイルシステムのブロックサイズの 次の乗数まで切り上げます.その動作を抑制するため,--exactを使 用して下さい.このため,デフォルトでは,512バイトのブロックを持つファ イルシステム上の,10バイトの通常のファイルをshredする場合, 結果としてファイルは512バイトになります.このオプションを用いると, shredはファイルのサイズを増加させません.
`-z'
`--zero'
通常,shredの書き込みの最終動作は,ランダムデータの作成です. これが(例えば,暗号化されたデータのように見えるため)ハードディスク上で 目立つ場合や,より整然とさせたいと考える場合,--zeroオプショ ンで全てをゼロビットを用いて上書きする動作を追加します.これは, --iterationsオプションで指定した動作数に追加されます.
`-'
標準出力をshredします.

この引数はオプションと見なされます.一般的な`--'オプションはコマ ンドラインのオプションの終りを示すために使用されますが,`-'は普通 のファイルとして解釈されます.

この使用目的は,削除された一時ファイルをshredすることです. 例です.

          i=`tempfile -m 0600`
          exec 3<>"$i"
          rm -- "$i"
          echo "Hello, world" >&3
          shred - >&3
          exec 3>-
     

シェルコマンド`shred - >file'は,shredの呼び出しの前に, それがfileを切り詰めるため,fileの内容を`shred'しない ことに注意してください.コマンド`shred file',または(Bourne互換シェ ルを使用している場合は)コマンド`shred - 1<>file'を代わりに使用し てください.

最初のドライブのフロッピーディスクに作成されたファイルシステムの,全て の記録を消去するために,以下のコマンドを使用するかもしれません.そのコ マンドは,1.44MBフロッピーを消去するために約20分かかります.

     shred --verbose /dev/fd0

同様に,ハードディスクの選択されたパーティションの全てのデータを消去す るために,以下のようなコマンドを与えることが可能です.

     shred --verbose /dev/sda5

終了ステータスのゼロは成功を示し,ゼロ以外の値は失敗を示します.