デジタル署名がないデバイス・ドライバをインストールすると、実際にどうなるのかやってみよう。サンプルとして取り上げるのは、デバイス・ドライバ開発キット(WDK)にサンプルとして含まれているRAMDISKドライバである。WDKをインストールすると、デフォルトではC:\WinDDK\7600.16385.1\src\storage\ramdiskフォルダにインストールされている(インストール・フォルダやビルド番号はバージョンによって変わる)。
ビルド方法はここでは述べないので、WDKのドキュメントや、前述のWDKのサイトなどを参照していただきたい。ここでは、64bitモードのドライバだけをビルドしている。このサンプル・プログラムにはコード署名用のデジタル証明書は用意されていないので、ビルドしただけでは証明書なしのデバイス・ドライバ・ファイル(ramdisk.sys)が得られる。設定ファイル(ramdisk.inf)の内容を次に示しておく。
※設定ファイルの先頭部分
; RAMDISK.INF
; Windows installation file for installing the Ramdisk driver
; Copyright (c) Microsoft Corporation All rights Reserved
;
; Installation Notes:
;
; Using Devcon: Type "devcon install ramdisk.inf Ramdisk" to install
;
[Version]
Signature="$WINDOWS NT$"
Class=Sample
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}
Provider=%MSFT%
DriverVer=09/01/2010,6.1.7600.16385
CatalogFile=KmdfSamples.cat ……ダミー・カタログ・ファイル
……(以下省略)……
カタログ・ファイルとして「CatalogFile=KmdfSamples.cat」が設定されているが、これはサンプル・ドライバに共通の、ダミーのカタログ・ファイルの名前である。実際にこのファイルが用意されているわけではない。ramdisk.sysファイルが生成できたら、inf2catツールを使って(これはWDKに付属のツール)、ramdisk.infファイルからKmdfSamples.catファイルを生成する。具体的な操作方法については、以下のドキュメントを参照していただきたい。
作成されたファイルは次のようになっている。
カタログ・ファイル(kmdfsamples.cat)ファイルをダブルクリックして表示させると、次のようになっている。デジタル署名が付いていないというメッセージが表示されている。
これらのドライバ・ファイルを64bit版Windows 7のPCにコピーしておき、ハードウェアの追加ウィザードで追加してみる。まず[ファイル名を指定して実行]で「hdwwiz」と入力し、ウィザードを起動する。
ウィザードの先の画面では、ハードウェアを自動的に追加するか、一覧から選ぶかを選択するが、どちらでもよいので先へ進め、パスを手動入力する画面を表示させる。そしてサンプル・ドライバのramdisk.infファイルの場所を指定する。正しく指定できると、次のように表示されるはずである。
インストールしようとするドライバ名が表示されているが、デジタル署名がないというメッセージも表示されている。
[次へ]をクリックすると、インストールの準備ができたという画面が表示されるので、さらに次ページへ進む。
ここで[次へ]をクリックすると、実際のインストール作業が始まる。しかし次のように発行元を検証できないという、かなりインパクトの強いエラー画面が表示される。
デジタル署名が確認できないというエラーが表示されているが、これを無視してインストールさせてみる。すると次のように、一応インストールは正常に終了する。
インストールが完了して上の画面が表示されるが、同時に、次のようなダイアログが(ウィザードとは別に)ポップアップ表示される。
以上でインストールは完了である。システムを再起動してみるが、RAMDISKは作成されていない。そこでデバイス・マネージャの画面を確認すると次のようになっていた。
ドライバのプロパティ画面を確認すると、次のようになっている。
デバイス・ドライバのロード・エラーは、イベント・ビューアで「システム」にも記録されている。
Windows OSの起動時に[F8]キーを押し、詳細なブート・メニューを表示させると、デバイス・ドライバの署名の強制を無視させるモードを選ぶこともできる。本来これは、デバイス・ドライバの開発などにおいて、未署名のデバイス・ドライバを強制的にロードさせるために利用する機能である。前述したように、このモードでは、例えば特定のデジタル・コンテンツが再生できなくなるなど、いくつかの副作用がある。常用するためのモードではないし、不正なデバイス・ドライバなどによってシステムがぜい弱になったり、信頼性が損なわれたりする可能性があるので、その目的を理解して、利用していただきたい。
[ドライバー署名の強制を無効にする]を選択して[Enter]キーを押すと、署名のないデバイス・ドライバであっても強制的にロードできる。起動後の画面は次のように、RAMDISKドライバが正常に起動している。
なお、bcdeditコマンドで次のように指定すれば正規のデジタル署名(デジタル証明書)でなくとも有効にできるが(ルート証明書の確認が行われなくなる)、これもテスト用なので、やはり常用するためのものではない。
※デジタル署名の確認を無効にする場合
bcdedit /set testsigning on
※デジタル署名の確認を有効(元の状態)にする場合
bcdedit /set testsigning off
この方法を利用した場合、画面上にテスト・モードであることを表すメッセージが常に表示され、通常の状態ではないということがすぐに分かるようになっている。
Copyright© Digital Advantage Corp. All Rights Reserved.