はじめに
出先からリモートデスクトップで作業可能なことは、デスクトップPCの利点の一つと言えます。Wake On LAN (WOL)へ対応すれば、必要なタイミングで出先から電源を入れることができ、電気代も最小限に抑えることができるでしょう。
一方で、BitLockerにて起動時のPIN入力を有効化している場合、WOLのみでは暗号化解除ができず、PCを起動させることができません。
今回はWOL送信用のデバイスにて、Windows Serverで使用可能なBitLocker ネットワークロック解除機能をエミュレートし、PIN有りBitLocker環境における遠隔での電源投入を実現します。
システム構成
構成は極めてシンプルです。24/365のデバイス (今回はNASを利用) をサーバ側とし、WOLのMagic PacketとBitLockerネットワークロック解除プロトコル1を扱えるプログラムを置きます。
このプログラムはを実行すると、Magic Packetを送信した後NKPUの受信待ちをします。PCはMagic Packetにより起動した後、NKPUでBitLockerを解除し、無事立ち上がるというわけです。
証明書の用意
まずは使用する証明書を用意します。
幸い Microsoft Learn にて証明書の詳細パラメータが紹介されていますので、これに則って作成しました。
概ね以下のパラメータに気を付ければよさそうです(2023/10時点)。
- 秘密鍵長:2048bit
- 署名アルゴリズム:SHA512
- キー使用法:keyEncipherment
- 拡張キー使用法:1.3.6.1.4.1.311.67.1.1
参考まで、OpenSSLでの発行手法を載せておきます。
#秘密鍵生成
openssl genrsa -aes512 -passout pass:hogehoge -out BitLocker.key 2048
# 署名要求作成
openssl req -batch -new -key BitLocker.key -out BitLocker.csr -subj "/CN= BitLocker Network Unlock"
# 自己署名
openssl x509 -req -in BitLocker.csr -signkey BitLocker.key -sha512 -days 365 -out BitLocker.crt -extfile Option.txt -outform DER
なお、使用した拡張情報ファイル Option.txt の内容は以下の通りです。
keyUsage = keyEncipherment
extendedKeyUsage = 1.3.6.1.4.1.311.67.1.1
subjectKeyIdentifier = hash
事前準備はこのあたりでおしまいです。
次回以降、NKPUのエミュレートを中心に記載します。
- Network Key Protector Unlock (NKPU)プロトコル
Microsoftの公式ドキュメント↗