2012年7月6日金曜日

BitLocker/Bitlocker To Goの自動ロック解除についてちょっと研究

BitLockerを常用するなら自動ロック解除は必須
Windows 7やWindows Server 2008には内蔵ドライブを暗号化するBitLockerと、外付ドライブ(HDD/USBメモリ)を暗号化するBitLocker To Goの2つの機能が備わっている(ただし、Windows7ではEnterprise EditionとUltimate Editionのみ)。
BitLockerでは、暗号化したドライブはロック状態になり、ロックを解除しなければ読み書きできない仕様であるが、PCを起動するたびにいちいち手動でロックを解除するのは猛烈に面倒なので、自動的にロックが解除されてシームレスに利用できることが望ましい。
幸いにも(?)、BitLockerには、そのままずばり「自動ロック解除」という名前の機能がある。こいつの挙動について色々調べたのでまとめてみた。
なお、本稿はVistaのBitLockerは対象外である。
保護機能とは何か。
まず予備知識から。
BitLockerに関するドキュメントには「保護方法」というキーワードが出てくる。とても分かりにくい言葉だが、噛み砕いて言うと「ロックを解除する方法」である。
BitLocker/BitLocker To Goの保護機能には以下の種類が存在する。
保護機能 説明
TPM(Trusted Platform Module)チップ PCのマザーボードに搭載されているセキュリティチップにロック解除用の鍵を記録する。
TPMチップは主にビジネス用モデルに搭載されており、コンシューマ向けモデルには載っていないことが多い。
パスワード 任意の桁数の英数字記号。ユーザが自由に設定できる。
回復パスワード(数字パスワード) 数字のみ48桁のパスワード。システムで自動生成され、自分で決めることはできない。
※以下、本稿では「回復パスワード」で統一する
外部キー(回復キー) 256bitのバイナリデータであり、通常は*.BEKというファイルに保存される。
※以下、本稿では「外部キー」で統一する。
OSボリューム(Cドライブ)に設定した外部キーのことを特別に「スタートアップキー」と呼ぶ。

1つのドライブに保護機能を複数追加することが可能である。複数の保護機能を設定するのは保険のためであり、「パスワードを忘れても、回復パスワードか外部キーが残っていれば、そちらを使ってロック解除できる」という具合だ。ただし、ドライブの種類によって適用できる保護機能は異なる。下表の通りだ。

TPM…TPM PW…パスワード RP…回復パスワード RK…外部キー(OSボリュームの場合、スタートアップキー)

ドライブ TPM PW RP RK 説明
OSボリューム(Cドライブ)
※1
 ※2
×
※1
※2
基本的にはTPMとなる。
TPM+PINコード、TPM+スタートアップキー※1、TPM+PINコード+スタートアップキーという設定も可能。この場合、どれか1つではなく全部揃わないとロック解除されない。
TPM非搭載PCの場合は、グループポリシーを変更することにより、スタートアップキーのみでロック解除することも可能。※2
TPMがイカレた時やスタートアップキーを紛失した時のために、回復パスワードを追加で設定しておくことができる。
回復パスワードを設定した後、TPMの保護機能やスタートアップキーの保護機能を削除すると、「回復パスワードのみが設定されたCドライブ」を作ることができる。…が、この状態で使う意味は無いと思われる(自動ロック解除できず、PC起動時に毎回48桁の数字を入れなければならないため!)。
内蔵HDDデータボリューム(C以外のDドライブとかEドライブとか) 複数の保護機能を設定した場合、どれを使ってもロック解除可能。
エクスプローラの右クリックメニューからBitLockerを有効にすると、自動的にパスワードの保護機能が設定される。自分の好きなように保護機能を設定するなら、manage-bde -onやmanage-bde -protectors -addコマンドを使う必要がある。
BitLocker To Go(外付ドライブ) ×外付ドライブは、抜き差しする関係でTPMは使えない(あたりまえ)。
複数の保護機能を設定した場合、どれを使ってもロック解除可能。
 エクスプローラの右クリックメニューからBitLockerを有効にすると、自動的にパスワードの保護機能が設定される。自分の好きなように保護機能を設定するなら、manage-bde -onやmanage-bde -protectors -addコマンドを使う必要がある。
なお、本稿では保護機能の設定手順については省略させていただく。
自動ロック解除とは。
BitLockerの自動ロック解除の動作は、OSボリューム(Cドライブ)とデータボリューム(C以外のDドライブとかEドライブとか)とで動作が異なる。
また、BitLockerとBitLocker To Goの動作も異なる。下表に簡単にまとめてみた。

保護機能 ドライブ 動作
BitLocker OSボリューム TPMに記録された鍵かスタートアップキーを使って、PC起動時に自動ロック解除される。
スタートアップキーは、OSボリューム以外に保存されていればよい。MicrosoftのドキュメントではUSBメモリとされているが、別にフロッピーディスクでも、内蔵ドライブ(Cドライブ以外)でもよい。セキュリティ的には内蔵ドライブに保存するのはよくないが…。
データボリューム データボリュームに自動ロック解除の設定を行うには、予めOSボリュームもBitLockerで暗号化しておく必要がある(OSボリュームを暗号化せずデータボリュームだけ暗号化した場合、自動ロック解除は利用できない)。
自動ロック解除を有効にすると、勝手に回復キー(外部キー)の保護機能が設定される。通常、外部キーは*.BEKというファイルに保存されるが、自動ロック解除の場合はレジストリに記録される。
BitLocker To Go OSボリュームが暗号化されていなくてもOK。
自動ロック解除を有効にすると、勝手に回復キー(外部キー)の保護機能が設定されるが、外部キーはBEKファイルではなく「そのユーザのレジストリ(HKEY_USERS配下)に記録される。つまり、自動ロック解除の設定はユーザアカウント別に行われる。PC起動直後はロックは解除されておらず、「自動ロック解除を有効にしたユーザ」がログオンしたタイミングで初めてロック解除される。

BitLocker To Goのこの挙動は、ググってもぜんぜん出てこない。結構重要なことなので、Microsoftはもっと情報を広めたほうがよいのではないか。
BitLocker To Goのロックをむりやり(?)解除する
繰り返すと、BitLocker To Goを自動ロック解除しようと思ったら、ユーザアカウント毎に自動ロック解除の設定をしなくてはならない。1人で使うPCならば別にいいが、複数人で共有するPCの場合、全員が自動ロック解除設定をする必要があり、めんどくさい。(別に誰か1アカウントだけに設定してもいいのだが、その設定したアカウントがログオンするまで他の人がドライブにアクセスできず不便)。

ではどうするか、なのだが。
manage-bde -unlockと言うロック解除用コマンドがあり、この引数には回復パスワードまたは外部キーを与えることができる。つまり、このコマンドをPC起動時に自動実行させてやれば、誰でログオンしようが自動的にロック解除されるようになる。
※パスワードを引数で与えることはできないので、必ず回復パスワードか外部キーのどちらかの保護機能を追加しておく必要がある。

回復パスワードを使うのであれば、以下の手順を踏む。

1. 下記のバッチファイルを作る。
manage-bde -unlock E: -rp 012345-678901-234567-890123-456789-012345-678901-234567
(012345-678901-234567-890123-456789-012345-678901-234567は回復パスワード)
2. gpedit.mscでBitLockerAutoUnlockByRP.batをスタートアップスクリプトに設定するか、%ALLUSERSPROFILE%のスタートアップに入れる。

外部キーを使うのであれば、下記のようになる。

1. 下記のバッチファイルを作る。
manage-bde -unlock E: -rk C:\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.BEK
(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.BEKは外部キーのファイル名)
2. gpedit.mscでBitLockerAutoUnlockByRK.batをスタートアップスクリプトに設定するか、%ALLUSERSPROFILE%のスタートアップに入れる。

前者の方式は、バッチファイルの中に回復パスワードをベタ書きすることになるので、セキュリティ的には最低な気がしなくもないが…。
いずれの方式にせよ、バッチファイルは管理者しかアクセスできないフォルダに入れておくのがいいだろう。

0 コメント:

コメントを投稿