2015/04/05(Sun)Symantec Encryption Desktop - Whole Disk Encryptionで暗号化されたシステムディスクをリカバリ/メンテする方法

2015/04/05 18:37 Software::Windows
Symantec Encryption Desktop(PGP Desktop)という製品のなかに、ドライブ全体を暗号化するWhole Disk Encryptionという機能がある。
これはWindowsのブートストラップに認証プロセスを追加し、ローレベルのドライバーを噛ませることで、ドライブ全体の暗号化を実現している。

通常は、Windows上にインストールしたアプリケーションから、自身のシステムドライブを使用しながら暗号化/復号化するという器用なことをやってのけるが、Windowsが起動できなくなってしまうとこの方法は使えない。
よって、Windowsが起動出来なくなってしまったとき、OSのインストールDVD等を用いて修復作業を行うことができないという問題がある。(暗号化パーティションは単なるNTFSではないので、認識出来ない。)

これを打開する方法のメモ。
注意:間違えるとディスクを壊しかねないので、細心の注意を払って実行すること

打開策1 -- お手軽だが時間がかかる

用意されているリカバリーメディアを使い、一旦全て復号化してしまうというやり方。

C:\Program Files (x86)\PGP Corporation\PGP Desktop\bootg.isoをCDメディアなどに焼き、これでブートする。すると、復号化のみが行えるリカバリー環境が起動する。
  • 通常通り、認証パスワードを入力してEnter
  • その後'D'キーを押すと、数時間ののちドライブの暗号化が復号される。
注意として、処理中はACアダプタを必ず繋げておくこと。
Windowsでは電源接続状態でないと処理が進まないが、こちらはバッテリーモードでも処理が続いてしまう。バッテリーが無くなりそうでも処理を続けてしまい、そのままぶちっと切れてしまう。次回起動時に復号化を再開することはできるが、電源断時に処理していた一部が中途半端な状態で復号化されてしまうため、その領域に書き込まれていたデータが破損する。(経験談)

また、感覚的にWindows上で暗号化/復号化するよりも時間がかかる。
おそらく高速にアクセスするための拡張ドライバー類が組み込まれていないのだろう。

打開策2 -- 準備が面倒だが、柔軟

Windows PE環境を利用すると、通常Windowsを起動するのと同様に、暗号化を一時的に外しHDDをアクセス可能状態にする。
この環境の上なら、全体を復号化せずブートストラップやレジストリを修復することが出来る。

作成方法は以下にも書いてあるが、少々分かりづらいので補足する。
Enterprise Support - Symantec Corp. - Windows PE & BartPE Tools for Symantec Encryption Desktop 10.3.0

また、この環境を作成するために、現在Symantec Encryption Desktopを起動可能なシステムが必要となるので注意。(同じライセンスを使用している別のPCや、インストールDVD等から抽出する)

Windows PE環境の作成

まずはWindows PE 3.0環境を、Windows 7のWindows PE 3.0環境を作成するの手順に従って作成する。
リカバリ対象のOSがWindows 7 64bitのため、copype.cmdにはamd64を指定し、64bitのWinPE環境を作成すること。
C:\>copype amd64 C:\winpe64
その後、マウント等は行わずに次のステップに進む。

Windows PE環境のカスタマイズ

Symantec Encryption Desktopがインストール済みの環境から、以下のファイルを取り出し、C:\wdeなどにコピーしておく。
  • C:\Program Files (x86)\PGP Corporation\PGP Desktop\pgpbootb.bin
  • C:\Program Files (x86)\PGP Corporation\PGP Desktop\pgpbootg.bin
  • C:\Program Files (x86)\PGP Corporation\PGP Desktop\Stage1
  • C:\Windows\system32\SHFOLDER.dll
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPsdk.dll
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\pgpsdknl.dll
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPwd.dll
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPcl.dll
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPiconv.dll
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPsdkUI.dll
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPwdesdk.dll
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPwde.exe
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPwded.sys
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPsdk.sys
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPPE.exe
  • C:\Program Files\PGP Corporation\PGP Desktop\WinPE\PGPStart.exe
PGP Desktop 10.3.0.9307 MP3 for x64の場合は以下のようなハッシュとなった。
Name           SHA1                                      Bytes
-------------  ----------------------------------------  ---------
pgpbootb.bin   93209C01D726B785900E117B995971709854B881      8,192
pgpbootg.bin   9F08270A09D267137C77002DFADA35C2AF6D123D  1,048,576
PGPcl.dll      BAD55B4CF041959303020F0830007F97ADF06754  9,817,216
PGPiconv.dll   182CEE63ED9193D528E1018122BA8D627D98A9E3  1,027,160
pgppe.exe      B110AEFA6A730C6E2B15E521AB814B58CCB3656B    196,504
PGPsdk.dll     2D745A77028A01D2F1A66DEEE17A39C32C619B8D  2,422,376
PGPsdk.sys     611440A5373976D4CF3EC1F35120089C069FD1F8     52,328
PGPsdkNL.dll   C4EE9FFF8E74A23F86B491DC0F980AF916CE01DF    499,824
PGPsdkUI.dll   C94AC088FF399547BB540C9E3C0691D334C5C04C    435,464
pgpstart.exe   6BCCCAEB1977872901A62366CA68B169E38A5BE9    147,576
PGPwd.dll      CBFB85E4B4FF32A54E23A3C0136B9F0D917750FA    728,520
PGPwde.exe     24D632DBD34F23C1A9B0CC85B27CFB6D89B7DC2C    923,184
PGPwded.sys    7E5DE744C56802AE1EE0D6C21887A8E3D407FE6F    379,344
PGPwdesdk.dll  DA90E7CB0AC84B31691C932D92946B790AE5DBDE  1,352,688
shfolder.dll   B098D9A6F551F764098E5F543F89B8F13A1772D0     10,240
stage1         B219B5A772746AA91B29C31AD631E2A5CAB6EBB6        512
------------------------------------------------------------------
Total  16 Files  19,049,704 Bytes
その後、pgppeコマンドを使用して、WinPE環境に組み込む。2-3分かかるので気長に待つこと。
C:\>cd c:\wde

C:\wde\>pgppe /winpe c:\winpe64 c:\wde

Successfully installed the WDE driver and tools into winpe.
winpe.wimが更新されるので、これをboot.wimという名前でISO\sourcesにコピーする。(それ以外のパス、名前では失敗するので注意)
C:\wde\>cd C:\winpe64

C:\winpe64\>move winpe.wim iso\sources\boot.wim

        1 個のファイルを移動しました。

CD/DVDメディアの作成

最後に、これをISO形式に変換し、CD/DVDメディアに焼く
C:\winpe64\>oscdimg -n -bC:\winpe64\etfsboot.com c:\winpe64\iso c:\winpe64\pgp_winpe.iso


OSCDIMG 2.55 CD-ROM and DVD-ROM Premastering Utility
Copyright (C) Microsoft, 1993-2007. All rights reserved.
Licensed only for producing Microsoft authorized content.


Scanning source tree
Scanning source tree complete (21 files in 9 directories)

Computing directory information complete

Image file is 195057664 bytes

Writing 21 files in 9 directories to c:\winpe64\pgp_winpe.iso

100% complete

Final image file is 195057664 bytes

Done.

USBメモリの作成

CD/DVDドライブが無い場合などは、こちらの方法と同じやりかたでUSBメモリに作成する。
FAT32でパーティションをフォーマットした後、
C:\winpe64\>xcopy iso\*.* /s /e e:\

iso\bootmgr
iso\bootmgr.efi
iso\boot\bcd
iso\boot\boot.sdi
iso\boot\bootfix.bin
iso\boot\efisys.bin
iso\boot\efisys_noprompt.bin
iso\boot\etfsboot.com
iso\boot\fonts\chs_boot.ttf
iso\boot\fonts\cht_boot.ttf
iso\boot\fonts\jpn_boot.ttf
iso\boot\fonts\kor_boot.ttf
iso\boot\fonts\wgl4_boot.ttf
iso\EFI\boot\bootx64.efi
iso\EFI\microsoft\boot\bcd
iso\EFI\microsoft\boot\fonts\chs_boot.ttf
iso\EFI\microsoft\boot\fonts\cht_boot.ttf
iso\EFI\microsoft\boot\fonts\jpn_boot.ttf
iso\EFI\microsoft\boot\fonts\kor_boot.ttf
iso\EFI\microsoft\boot\fonts\wgl4_boot.ttf
iso\sources\boot.wim
21 個のファイルをコピーしました

起動

Windows PE環境を起動すると、既にPGP機能が組み込まれた状態になっている。
USBメモリ経由でブート出来ない場合は、USB 3.0ポートでなくUSB 2.0ポートを使用する、FATではなくFAT32でフォーマットされていることを確認すること。

pgpwdeコマンドを利用して、ディスクの状態を確認してみる。
ここでエラーが発生した場合、Windows PEとコピーしたPGPファイルのOSアーキテクチャが一致していない可能性がある。
X:\windows\system32>wpeinit

X:\windows\system32>pgpwde --enum

Total number of installed fixed/removable storage
device (excluding floppy and CDROM): 1
Managed disks:
  Disk Group xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:
    Disk 0 has 0 online volumes:
Request sent to Enumerate disks was successfull

X:\windows\system32>pgpwde --disk 0 --status

Disk 0 is instrumented by bootguard.
  Current key is valid.
Drive encrypted
  Total sectors: 125044736 highwatermark: 125044734 reserved start sectors: 2
  Authentication needed to decode disk session key.
Request sent to Disk status was successful
当然のことながら、Cドライブは見えない。
X:\windows\system32>dir c:

このボリュームは認識可能なファイル システムではありません。
必要なファイル システム ドライバーがすべて読み込まれているか、ボリュームが壊れて
いないか確認してください。
上記が確認できたら、一時的に復号化してマウントしてみる。
X:\windows\system32>pgpwde --disk 0 --auth -p 認証パスワード

Request sent to Authenticate disk was successful

X:\windows\system32>pgpwde --enum

Total number of installed fixed/removable storage
device (excluding floppy and CDROM): 1
Managed disks:
  Disk Group xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:
    Disk 0 has 2 online volumes:

      volume C:\ Request sent to Enumerate disks was successful

Request sent to Enumerate disks was successfull
すると……
X:\windows\system32>dir c:

  ドライブ C のボリューム ラベルは システムで予約済み です
  ボリューム シリアル番号は xxxx-xxxx です

 C:\ のディレクトリ
 
ファイルが見つかりません
という具合に、アクセス可能となる。
dir例は省略するが、この場合DドライブがWindowsやMy Documentsが含まれるディスクなので、それに対してブート領域の修復、あるいはデータの救出などを行えばよい。

このメンテナンス用USBメモリーは時間のあるときに1本作っておくと、ブート障害が起こったときの強い味方となるのでお勧め。