Windows10のBitLockerを使ってみる
以前、フリーアプリのVeraCryptでOSディスクを暗号化しましたが、今回はWindows10のProバージョンに付属している同様のツールBitLockerがテーマです。このためだけにProバージョンにする必要もないのかもしれませんが、あればありがたいツールです。
ただ、通常のディスクは取り出して別のPCに接続すればたいていはそのまま読みだせるのですが、暗号化するとパスワードなしではそのようなことができなくなります。なのでPCが故障したけれどディスクは無事だという時、本当に中身を復元できるのかというところが不安の種です。この時WindowsだけでなくLinuxからも暗号化ディスクを読めるとなお安心です。
ここではそのようなことも含めて、BitLockerの運用環境とはどのようなものかを調べてみたいと思います。
USBメモリ
いきなりシステムディスクであるCドライブを暗号化してしまうのは怖いので、まずはUSBメモリから試してみることにします。
先に言っておくほうがわかりやすいと思いますのでここで説明しますが、BitLockerにはデフォルトで2つのパスワードが存在します。ひとつは通常運用時にディスクの暗号化を解除するためのもの。もうひとつはいざという時の為に暗号化を解除するためのものです。前者はパスワード以外にUSBやスマートカード等に代替できます。後者のパスワードは「回復キー」と呼ばれ、Micorsoftアカウントに保存したり、ファイルとして別のUSBなどに保存したり、印刷したりして、いざという時のために保管しておきます。どちらのパスワードでも暗号化を解除(復号)できます。
歯車のアイコンからでるメニューで「設定の検索」の検索ウインドウに「bitlocker」と入れると「BitLockerの管理」という候補がでてきますのでそれを選択します。
「オペレーティングシステムドライブ」「固定データドライブ」「リムーバブルデータドライブ」と表示され、それぞれに「BitLockerが無効です」と表示されていると思います。暗号化したいドライブのこの文字の部分をクリックすると有効化のためのウィザードが始まります。
一度試しに暗号化して解除したUSBを使ったらBitLockerがディスクを認識しなくなってしまいました。該当のUSBはWindows10をインストールした際に使ったもので、名前がESD-USBになっていました。このことも影響しているのでしょうか? フォーマットしても状況は変わりませんでしたが、「コントロールパネル」「コンピューターの管理」を開いて「ディスクの管理」で表示されたリムバブルディスクのからドライブを右クリックして「ボリュームの削除」をしてから再度作成したところ、認識のされかたも通常のUSBとなりBitLockerも認識するようになりました。
筆者の環境で、読み出しテスト用のファイルのみが入っている7.45GのFAT32のUSB全体を暗号化したところ約15分かかりました。
暗号化されたUSBをWindowsPCに差し込むとパスワードを求められるようになり、一致しなければUSBメモリを利用できません。
DisLocker
先ほど暗号化したUSBをDebian10(buster)から読みだしてみたいと思います。ツールはguro_chanの手帳:「BitLockerで暗号化されたストレージをLinuxでマウントするためのdislocker」のページで紹介されていたdislockerというアプリを使います。
パッケージマネージャに(apt)あるようなので、取得してみます。
...
実行してみます。-rオプションは読み取り専用、-Vオプションはボリュームの指定、-pはパスワードです。-pオプションに渡すパスワードはファイルに保存したり、印刷したりして保存する「回復キー」です。このオプションに渡すパスワードの値はpの後スペースを入れずにつなげます。通常のパスワードを使う時は-pのかわりに-uを使います。--はdislockerオプションの終了を意味します。--以降はFUSE(Filesystem in Userspace)用のオプションになります。
FUSEは簡単に説明するとユーザー権限でファイルシステムを作成できるようにするライブラリです。ここでは復号されたディスクはFUSEにより/media/bitlockerにマウントされます。
実行してみると、「segmentation fault」と表示され、うまくいきませんでした。そこで最新バージョンをビルドしてみます。gitがインストールされている前提ですのでなければインストールするか、ZIPファイルでダウンロードして展開してください。
...
# git clone https://github.com/Aorimn/dislocker.git
...
INSTALL.mdに書かれている通り、gcc、cmake、make、libfuse-dev、libpolarssl-dev、ruby-devをインストールします。ここで先ほどのfuseがでてきました。libpolarssl-devは筆者の環境では存在しませんでしたので、かわりにlibmbedtls-devを指定しました。
必要なアプリにダウンロードが終わったら、dislockerのルートディレクトリに移動し、ビルドします。
# cmake .
...
# make
...
# make install
...
「/usr/local/bin/dislocker」にバイナリがインストールされます。このままでは既存のdisklocker(/usr/bin/dislocker)と競合してしいます。使えないバイナリをインストールしてあっても意味がないのでアンインストールします。
再度実行してみます。
今度は無事復号できました。FUSEでマウントした/media/bitlockerフォルダに、dislocker-fileという名前のファイルがあります。これを今度は通常のmountでマウントすると中身を読みだせます。-rでリードオンリー、すでにマウントされたディスクからさらにマウントをするので-o loopオプションを付与しています。
FUSEでマウントした/media/bitlockerをアンマウントするには「fusermount -u /media/bitlocker」とします。
ちなみにUSBで、BitLockerのウィザード中の質問を「使用済みの領域のみ暗号化する」&「新しい暗号化モード」で試してもdislockerでの復号ができました。
あと、暗号化されていてもフォーマットされてしまえば暗号化されていないまっさらなディスクになってしまいます。
OSドライブの暗号化
続いてOSのドライブ(C)を暗号化してみます。Windowsに戻りオペレーティングシステムドライブにある「BitLockerを有効にする」を押します。
こちらでもエラーがでました。
TPM(Trusted Platform Module)とは、暗号化用のチップのことです。Microsoft「コンピューターの TPM チップについて」によると、TPMがあると追加の保護が利用できるようです。
そのような条件を許容する設定をして進めます。さきほど同様に設定画面を出し「グループポリシーの編集」を検索し表示させます。「コンピューターの構成」「管理者用テンプレート」「Windowsコンポーネント」「BitLockerドライブ暗号化」「オペレーティングシステムのドライブ」「スタートアップ時に追加の認証を要求する」を開きます。
ラジオボタンの「有効」を選択して、「互換性のあるTPMが装備されてないBitLokerを許可する」にチェックが入った状態で「適用」を押します。
この状態でBitLockerのウィザードに戻ります。
スタートアップ時にドライブのロックを解除する方法をUSBにするかパスワードにするか聞かれます。後で変更しますが、ここではパスワードにしました。
回復キーの保存場所を聞いてきますので、保存します。
暗号化モードはLinuxでの復元可能性を考えて、互換モードにしました。
ディスクの読み書き速度にも依存すると思いますが、使用量35Gトータル250GのSATAのブートパーテーションを全体を暗号化したところ110分ぐらいかかりました。
暗号化が終了した後は、起動のたびにディスク読み出し用のパスワードを求められます。
Debianからの読み出しはボリュームが変わるだけでUSBの際と変わりません。
...
# mount -r -o loop /media/bitlocker/dislocker-file /mnt/win-c
運用上の問題
先のエラーに対処した通り、BitLockerでTPMが装備されていないPCのOSドライブを暗号化すると、起動時に認証を求められるようになります。これをパスワードにすると、OSの読み込み以前に入力を求められるため、WakeOnLanやリモート経由の再起動には問題があることがわかりました。
先のドライブのロックを解除する方法の選択の箇所でUSBを選択して、キーとしたUSBを差しっぱなしにしておくことでこの問題は解決できます。起動用のUSBの中身にはバイナリデータを持った隠しファイルが作成される他は、特に変化しません。キーにした後も普通にメモリとして利用できますが、フォーマットなどして隠しファイルを削除してしまうとキーとしては利用できなくなります。 間違ってUSBキーをフォーマットしてしまったら、回復キーでWindowsを起動したあと「BitLockerの管理」メニューの「スタートアップキーをコピーする」というリンクから再設定可能です。
参考にさせていただいたサイトの皆様、ありがとうございました。