Windows標準コマンドによるハードディスク情報消去
ハードディスク(HDD)を廃棄する際に、情報漏洩(復元)の可能性を低減するために内容を消去しますが、消去をWindows標準コマンドで実施する際の参考手順です。
なおSSDの場合は、より適切な方法があると思いますので、別途御確認ください。
免責事項
当記事の文章・情報等に基づいて被ったいかなる損害(誤操作で必要な情報を削除、情報漏洩など)についても、一切責任を負いかねます。
手順概要
- cipherコマンド
- cipher /W:<ドライブレター>
- diskpartコマンド
- diskpart
- list disk (ディスク番号確認)
- select disk <ディスク番号>
- list disk (ディスク選択確認)
- list partition (パーティションによる対象ディスク確認)
- clean all
- list partition (パーティション消去確認)
- list disk (空き容量による管理情報消去確認)
- exit
- diskpart
いずれも管理者コマンドプロンプト(またはPowerShell)で実施します。
ディスク容量にもよりますが、数時間の単位で時間がかかりますので、余裕をもって実施しましょう。
cipherコマンド
cipherコマンドは、ファイルシステムNTFSに対して各種の暗号化機能を実行するものです。機能のひとつとして/Wオプションによるファイルシステムワイプ(消去)機能があります。
消去方法として、バイト単位で「0x00」→「0xFF」→(乱数)を書き込み、と 一般的なハードディスク消去ソフトウェアで採用されている米国国防総省(DoD)方式に沿っている方式になります(現在ではトップシークレット級情報に対する処置としては不十分のようですが、民生用途では現在でもリファレンスとなっているようです)。
対象はNTFSであるため、NTFSでフォーマットされていること、またOSからハードディスクがドライブ割り当て等でファイルシステムとしてアクセス可能であることが必要になります。また「空き領域」がワイプ対象となるため、存在しているファイルはあらかじめ削除しておくことが必要になります。
/Wオプションによるコマンドラインは一般的に以下の形式になります。
cipher /W:<対象領域>
<対象領域>はフォルダ等を指定します。ハードディスク全体を対象とするならば、ドライブを指定します。たとえばEドライブを対象とするならば以下のようなコマンドラインになります。
cipher /W:E:
以下は実行例になります。
PS C:\WINDOWS\system32> cipher /w:e:
できるだけ多くのデータを削除するために、CIPHER /W の実行中
はほかのアプリケーションをすべて終了してください。
0x00 に書き込み中
.........................................................................................................
0xFF に書き込み中
.........................................................................................................
乱数 に書き込み中
.........................................................................................................
diskpartコマンド
diskpartコマンドは、ディスクの管理情報(パーティション)を表示・編集するものです。機能のひとつとしてclean allサブコマンドによるディスク全体の管理情報消去機能があります。
cleanサブコマンドでは、ディスクの先頭と末尾の1MB相当の領域に「0x00」を書き込みます。clean allサブコマンドでは、ディスク全体に「0x00」を書き込みます。
diskpartコマンドは、実行するとサブシェルが起動してサブコマンドの入力待ちになります。目的とする機能をバッチ的に一括実行する方法もありますが、ここではサブシェルで逐次サブコマンドを入力する方法を記します。
コマンドプロンプト(PowerShell)でdiskpartコマンドを実行すると、以下のようにサブシェルが起動します。
PS C:\WINDOWS\system32> diskpart
Microsoft DiskPart バージョン 10.0.18362.1
Copyright (C) Microsoft Corporation.
コンピューター: XXXXXXXX
DISKPART>
以下の説明において、「DISKPART>」の部分は自分で入力するのではなく、あらかじめ表示されているサブシェルのプロンプトです。
list diskサブコマンドで、パソコンに接続されているディスクの一覧を表示します。日本語化での影響のためか、見出しと明細がずれていることがあるようです。
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン xxx GB xxx B *
ディスク 1 オンライン 152 GB 5120 KB
サイズなどから対象のディスクを特定し、そのディスクをselect diskサブコマンドで選択します。以下は「ディスク 1」を選択する場合の例です。
DISKPART> select disk 1
ディスク 1 が選択されました。
対象のディスクが正しく選択されていることをlist diskサブコマンドで確認します。選択したディスクの行の先頭に「*」が表示されます。
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン XXX GB XXX B *
* ディスク 1 オンライン 152 GB 5120 KB
対象のディスクが正しく選択されていることをlist partitionサブコマンドで(現在選択されているディスク内の)パーティション情報を出力して確認します。
DISKPART> list partition
Partition ### Type Size Offset
------------- ------------------ ------- -------
Partition 1 プライマリ 152 GB 31 KB
clean allサブコマンドで、ディスク情報を消去します。
DISKPART> clean all
DiskPart はディスクを正常にクリーンな状態にしました。
list partitionサブコマンドで、パーティション情報が消去されていることを確認します。
DISKPART> list partition
このディスクには表示するパーティションがありません。
list diskサブコマンドで「空き」が「サイズ」と同じになっていること(パーティションが全て消去されていること)を確認します。
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン XXX GB XXX B *
* ディスク 1 オンライン 152 GB 152 GB
exitサブコマンドでdiskpartコマンドのサブシェルを終了します。
DISKPART> exit
DiskPart を終了しています...