Windows ドライバーの署名方法は、OSのバージョンやドライバーのモードなどにより異なり、かなり複雑です。
また、Microsoft はセキュリティ環境の変化と現実的な利用利便性の観点から、過去、署名方法を変更してきた経緯があります。直近では、2016年11月10日からWindowsドライバー署名のHCK/HLKの登録サイトがHardware Dev Center Dashboardに変更になりました。
このページは 2017年1月18日現在のMicrosoftの資料によってWindowsドライバーへの署名方法を「Windowsドライバー署名早わかり」として取りまとめたものです。
署名対象ドライバーが、Windows Vista 32bitからWindows10までのどのOS向けのものか、あるいは複数のOS向けのものかによって署名方法が異なる場合があります。
Windows10の場合は、OSがどのようにインストールされたかによって署名方法に影響がありますので特に注意が必要です。
ドライバーのモードにはユーザー モードとカーネル モードがあります。
Windows Vista 64bit以降すべてのカーネル モード ドライバーは署名が必要で、以下の2つの異なる署名方法が利用できます。
Windows ロゴ プログラム (ハードウェア)、WHQL のことです。
WHQLに登録することにより、Microsoftによる署名(Certify your driver with Microsoft)を得ることができます。
「Windows対応」のロゴマークを使用することが許可されるなどのメリットがあります。 Hardware Dev Centerで登録します。
SPC証明書とは、DigiCert EVコードサイニング証明書のようにMicrosoftのCross-Certificate(クロスルート証明書)を利用できる証明書のことです。
SignToolコマンドでSPC証明書を指定してカーネル モードドライバーに署名します。
署名方法名称 | 内容 | 特記事項 |
---|---|---|
Windowsハードウェア認定 | Hardware Dev Centerへの登録により Microsoftが署名 | Hardware Dev Center に登録すると「Windows対応」のロゴマークを使用することが許可されるなどのメリットを受け取れる。 |
SPC証明書による署名 | 「DigiCertコードサイニング証明書あるいはDigiCert EVコードサイニング証明書」と「MicrosoftのCross-Certificate(クロスルート証明書)」による署名 | boot-start driversの場合はSPC証明書を利用した埋め込み署名が必要。 |
「HLKを利用する方法」と「構成証明署名」の2つの方法があります。
構成証明署名は、Windows10デスクトップのカーネル モード ドライバーとユーザー モード ドライバーをサポートしています。
構成証明署名は以下の手順により行います。
Windows10についてHLKテストを行い、Windows 8.1以前のバージョンについてHCKテストを行った後、二つのテストログとテスト結果をWindows10のHLKでマージしてWindows Hardware Developer Center Dashboard portalに提出します。
Windows10のdesktop editions (Home, Pro, Enterprise, Education) とWindows Server 2016向けのカーネル モードドライバーはWindows Hardware Developer Center Dashboard portalでの署名が必要で、この時EVコードサイニング証明書が必要です。
上記にもかかわらず、他のOSからWindows 10, version 1607にアップグレードされたOSの場合、Windows Code Integrityは DevPotal (Windows Hardware Developer Center Dashboard portal) での署名がなくても Windows8までで有効な署名であればインストール可能です。
新規インストールのWindow 10, version 1607は DevPotal (Windows Hardware Developer Center Dashboard portal) での署名がないカーネル モードドライバーはインストールできません。
Windows10 version 1607向けのカーネル モードドライバーに新規に署名する場合、以下を参照してください。NGとなっている署名方法は利用できません。
OS がどのように インストールされたか |
Secure Boot | 署名方法 | 有効性 |
---|---|---|---|
新規インストール | ON | Windowsハードウェア認定 | OK |
新規インストール | ON | SPC 証明書による署名 | NG |
新規インストール | OFF | Windowsハードウェア認定 | OK |
新規インストール | OFF | SPC 証明書による署名 | OK |
アップグレード | ON | Windowsハードウェア認定 | OK |
アップグレード | ON | SPC 証明書による署名 | OK |
アップグレード | OFF | Windowsハードウェア認定 | OK |
アップグレード | OFF | SPC 証明書による署名 | OK |
SPC証明書による署名済みのカーネル モードドライバーで、2015年7月29日以降に発行された証明書を使っている場合、新規インストールWindows10 version 1607 Secure Boot ON向けでは再署名が必要です。
SHA-256はWindows8以降でサポートされます。
Windows VistaについてはSHA1証明書が必要です。修正プログラムを適用したWindows7はSHA-256証明書をサポートします。
※SHA-1証明書の発行は取り扱いを終了しております。
Windows Vista以降の32bitでも、カーネル モード ドライバーは署名されていないとインストールできません。
32bitのユーザー モード ドライバーでも署名が推奨されています。
Windows8以降は、ユーザー モード ドライバーでも署名がないとインストールできません。