Windowsドライバのテスト署名の動作を確認する

はじめに

https://msdn.microsoft.com/en-us/library/windows/hardware/dn653559(v=vs.85).aspx
で公開されている文書に記載されているとおり、Windows Vista以降のWindowsでは、64bit版 (x64) のカーネルモードドライバはデジタル署名がついていないとロードされないようになっています。実際に製品としてドライバを出荷するためには正式なデジタル署名が必要になりますが、開発途中でビルドしたドライバに毎回正規のデジタル署名を付加するのは手間が大きいため、開発段階で簡易的にテストを行うためのテスト署名の仕組みが提供されています。
https://docs.microsoft.com/en-us/windows-hardware/drivers/install/signing-drivers-during-development-and-test
本稿では、テスト署名の具体的な使い方について確認していきます。

署名なしドライバの動作確認

以前の投稿で作成した簡単なドライバを用いて動作を確認しました。ドライバのビルド自体はx64用のビルド環境を使用することで、32bit版 (x86) と同様に行うことができます。また、ドライバのインストールも同じ手順で可能ですが、ドライバを起動しようとすると、以下のようなエラーメッセージが表示されて、開始することができません。

OS起動時のAdvanced Boot Optionsで「Disable Driver Signature Enforcement」を選択することで、一時的にデジタル署名のチェックを無効にすることができますが、起動のたびにF8キーを押して選択画面を表示する必要があり、PCの再起動を自動的に繰り返すテストなどを考えれば、実際の開発に適用するのは現実的ではないと考えられます。

テスト署名の使い方

以下で、テスト署名を用いて64bit版Windowsのドライバを動作させる手順について説明します。テスト署名を使用するためには、ビルドしたドライバにテスト署名を付加する作業のほか、実際にドライバを動作させる側でテスト署名機能を有効にしてやる必要があります。

テスト署名の付加

ドライバにテスト署名をつけるには、WDK (Windows Driver Kit) に付属の以下のツールを使用します。

  • MakeCert
    • テスト用の証明書を作成するツール
  • SignTool
    • 指定した証明書を使ってドライバを署名するツール

上記ツールを使用し、以下の手順でビルドしたドライバにテスト署名を行ってみました。

署名を付加したドライバファイルのプロパティを表示すると、以下のようにテスト署名がついていることがわかります。

テスト署名機能の有効化

テスト用のデジタル署名を付加しただけでは、ドライバのロードは行われません。

テスト署名つきのドライバをロードするためには、実際にドライバを動作させる環境において、起動オプションでテスト署名機能を有効にしてやる必要があります。

この状態でドライバを起動しようとしたところ、テスト署名がないドライバはロードされませんでしたが、テスト署名つきのドライバは正常にロードされました。

テスト署名なし

テスト署名つき

テスト署名であってもドライバの動作自体は特に変わらず、各種評価を実施可能であることを確認することができました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です