皆さんは、パソコンを処分するとき、どのようにして処分していますか?

最近のHDD値下がりに伴い、いくつか不要になったHDDを処分しようと思います。その際、HDDを廃棄するにあたって、必ずデータ消去をしておく必要があります。

実は、パソコン内のHDDはフォーマットしただけではデータは完全に消えてはおらず、見かけ上消えているように見えているだけで、データは残っています。

ファイルをゴミ箱に入れて、ゴミ箱を空にしてファイルを消しただけでは、データとしてはHDDに残ったままとなるので、廃棄したあとにHDDが悪意あるユーザの手に渡った場合、データが復元されてしまう可能性があります。

自分の意に反して、個人情報や秘密のデータが漏洩しないために、ファイルを完全に消去する必要があり、こちらのページでHDDの廃棄方法について、「一般社団法人パソコン3R推進協議会」のWebサイトの情報を元に、1.専用ソフトウェアでデータを消去する、2.専用装置でデータを消去する、3.HDDを物理的に破壊する、の3つの方法があり、その中で、1.専用ソフトウェアでデータを消去する方法ではさらに、市販のソフトウェアを利用する方法と、コマンドを使ってHDDの内容を消去する方法がある、というお話をしました。

今回はコマンドを使ってHDDの内容を完全に消去する方法のコマンド、WindowsのcipherコマンドとLinuxのshredコマンドを紹介します。

HDD内の記録情報構造

説明の前に、ハードディスクの構造を簡単にお話ししましょう。知っている方はこの節は読み飛ばして下さい。

ハードディスク内の記録情報構造は、「ファイル管理領域」と「実データ領域」に分けて記録されています。

ファイル管理領域には実データのファイル名や実データがどこに記録されているのかの位置情報、ディレクトリ名、作成日等の情報が格納されています。イメージはインデックス・目次のようなものです。一方、実データ領域には実際のデータが記録されています。

例えば何かのデータを取りに行きたい、となったとき、ハードディスク内では最初に実データへは飛ばずに、まずファイル管理領域にアクセスし、ファイル管理領域内を探して見つけたその情報を基に、実データ領域に飛んで、目的のデータを読み取るという仕組みになっています。

ちなみに、ハードディスク内の円盤(ディスク)のことをプラッタといい、データはプラッタに書き込まれています。

cipherコマンドとは

cipherコマンドは、Windowsのコマンドラインツールで、暗号化ファイルシステムを使用して暗号化されたデータを管理するために使用するコマンドです。cipherコマンド参考

市販のソフトウェアでも一般のウェブサイトで公開されているフリーソフトでもなく、Windowsに元から標準で用意されている機能になります。ですので無料です。

cipherコマンドは、もとは暗号化のためのコマンドでしたが、付加機能としてディスクを削除する機能が新たについたそうです。

cipherコマンドは、ある特定のパターンのデータを3回ファイルに書き込みます、1回目は0を書き込み、2回目は1を書き込み、そして最後にランダムなデータを書き込んで消去するコマンドです。

【取り扱い注意】当たり前ですが、実行した後はファイルを戻すことはできません。誤って削除したくないファイルを削除してしまったとしても、実行は自己責任でお願いします。

cipherコマンドを使うための前提条件・環境

cipherコマンドを使ってHDDの完全消去ができるのかを検証してゆくわけですが、その前にcipherコマンドを使うために用意する物、事の確認です。

・cipherコマンドを使えるようにするためには、ファイルシステムがNTFSであることが必要条件です。
・検証のための復元ソフトはRecuva.exeを使います。すでにインストールしてあります。
・ファイルを置く場所はどこでもいいのですが、検証用に「C:\gomibako」フォルダ内とします。
・ファイルは約1Gのzipファイルを使います。

cipherコマンドを実行してみる

まず、ファイルが残っているか確認です。Recuvaでスキャンしてみます。

ゴミ箱

ゴミ箱を右クリックし、削除されたファイルのスキャンをクリックするか、ゴミ箱を選択するかします。結果は

Recuva

何もありません。次に約1Gのファイルを置きます。

エクスプローラー

このファイルをゴミ箱へ削除して、ファイルを完全に削除します。ファイルを消すときのいつもの手順です。

エクスプローラー

もう一度スキャンしてみます。ゴミ箱を右クリックし、スキャンするをクリック。

RecuvaRecuva

ファイル名が変わっていますが、復元できています。これはファイルが完全に削除されていないからでした。cipherコマンドを使って完全削除をしてみましょう。

コマンドプロンプトを立ち上げ、管理者として実行します。

コマンドプロンプト

コマンド「cipher /w:C:」と入力し、リターンキーを押します。

コマンドプロンプト

コマンドプロンプト実行中。かなり時間がかかります。ドット「.」が進行度合いに応じて増えていくようです。

コマンドプロンプトコマンドプロンプト

終了しました。ちゃんと消去されているか確認します。ゴミ箱を右クリックして、スキャンするをクリック。

Recuva

表示されていません。復元ソフトでも復元できなかったということは、cipherコマンドでファイルは完全に削除されたことになります。

cipherコマンドを使ってみた感想

cipherコマンドはキチンとディスク上の実データ領域を消去してくれました。

所要時間は約3Gで2時間半かかりました。長いです。2TのHDDなら何時間かかるのか。

これからは知られたくないファイルも完全に消すことができるので、安心してあの動画も観れます←(??)

cipherコマンドは実データ領域の空いているところ、言い換えればHDDの空き領域のみを対象に削除しているようです。通常のファイルや、重要なOSのファイルは消去対象にならず残っていました。

HDDの空き領域全体を削除対象にしているので、やや使い勝手が悪いです。どうせならファイル単体やフォルダ内の範囲の指定した箇所のみを、ピンポイントで消去してくれるようにしてほしいです。

shredコマンドとは

続いてshredコマンドです。shredコマンドもcipherコマンドと同じ機能のコマンドで、HDDを上書きして消去するという、同様の結果になります。ですのでcipherコマンドで事足りるという方は、この先は読み進めなくても大丈夫です。cipherコマンドを使用してください。

shredコマンドは、ファイルを特別なパターンで上書きすることにより、データの復旧をより困難にするツールで、GNU core utilsに含まれています。無料です。Linuxでファイルを完全に消去する場合には、shredコマンドを使うのが一般的です。shredコマンド参考

shredコマンドはLinuxの標準コマンドになります。Windowsにはついていないので、Linuxを使える環境が必要です。しかし、すこし難易度が高いですが、Windows10上にLinuxを使える環境を設定することで、Windows10上でshredコマンドを使ってHDDを消去することができます。

shredコマンドを使うための前提条件・環境

・OSはWindows10のWSL(Ubuntu)上で行います。インストールしてあります。
・検証のための復元ソフトはRecuva.exeを使います。すでにインストールしています。
・ファイルを置く場所はどこでもいいのですが、検証用に「C:\gomibako」フォルダ内とします。
・ファイルは約1Gのzipファイルを使います。

shredコマンドの使い方

shred - 指定されたファイルに対して上書きを繰り返し、非常に高価な機械でさえもデータ復元の為の調査を行うことが非常に困難となるようにします。

-n  N回上書きを繰り返す(デフォルト3回)
-u  上書き後にファイルを切り詰めと削除を行う
-v  進行状況を表示する
-z  shredを行ったことを隠すために最後に0で上書きする
shredコマンド参考より

shredコマンドを使うにはオプションを見た限り「shred -u /mnt/c/<ファイル名>」と入力すればよさそうです。<ファイル名>は、自分が消去したいファイル名を入力します。

消去をより強力にしたければ「shred -n 35 -u /mnt/c/<ファイル名>」とオプションで、数字を追加入力すればいいと思います。

shredコマンドを実行してみる

まず、ファイルが残っているか確認です。Recuvaでスキャンしてみます。ゴミ箱を選択します。

ゴミ箱

ゴミ箱を右クリックし、削除されたファイルのスキャンをクリックするか、最初の設定からゴミ箱を選択するかします。

RecuvaRecuva

結果は何もありません。次に約1Gのファイルを置きます。

このファイルをゴミ箱へ削除して、「ファイルをゴミ箱から完全に削除」を選択します。ファイルを消すときのいつもの手順です。もう一度スキャンしてみます。ゴミ箱を右クリックし、スキャンするをクリック。

Recuva

ファイル名が変わっていますが、残っています。これはファイルが完全に削除されていないからでした。

次はshredコマンドを使って削除されているか試してみます。コマンドプロンプトを立ち上げるために、Ubuntuを実行します。

スタート画面

ウインドウが立ちあがったら、コマンド「shred -u /mnt/c/<ファイル名>」と入力し、リターンキーを押します。

cipherコマンドと違い、<ファイル名>でファイルを選択することができます。これは便利。

コマンドプロンプト

リターンキーを押すと、何か処理をしているようなので少し待ちます。1Gファイルを処理するのに30秒くらいでした。早いです。復元ソフトRecuva.exeで「C:\gomibako」フォルダ内を確認します。

RecuvaRecuva

復元できませんでした。shredコマンドでも完全削除ができるようです。念のため全体スキャンをしてみます。

Recuva

それらしいファイルは見当たりませんでした。shredコマンドでも完全消去ができたことになります。

shredコマンドを使ってみた感想

shredコマンドはcipherコマンドと同じく、ディスク上の実データ領域を消去してくれました。shredコマンドはファイルをピンポイントで消去してくれる -u オプションがあるため、かなり使い勝手がいいです。もちろんディスク全体を完全消去することもできます。これであの動画が(略)

反面、使い勝手が良すぎて調子に乗って、間違えて消さなくていいファイルも消してしまったりと、取り扱い注意なコマンドではないでしょうか。

shredコマンドで消去したファイルは2度と復元できません。ほんとに消去したいマシン以外で試さないようにして下さい。コマンドを実行する場合は自己責任でお願いします。

以上、cipher、shredコマンドを使ってハードディスクの内容を完全消去するでした。

【cipher】【shred】コマンドを使ってハードディスクの内容を完全消去する