Windows 10用ドライバー署名(2019年版)
新しいダッシュボードの運用が始まり、Windows 10 のドライバー署名方法の方法が変わって約3年経った。今でも時折質問が来るので、整理して解説する。
前提:証明書と署名
混同している方が結構多いため、大前提として再度確認するわけだが、証明書(Cerificate) と 署名(SignatureまたはSigning) は異なるものである。
一般的に証明書は、メーカーやユーザーが証明書発行機関(会社)から調達する。通常は1年程度の有効期限がある。電子的なものだが、例えば後述の EV証明書(Extended Validation 証明書)は、次の写真の様なUSBドングルに入っている。
再発行不可なので、無くしてはいけない。時代に逆行している様に思えるが、物理デバイスが必須である。詳しい事情は良く知らないが、どこかの国でどこかの会社がいい加減な証明書をバラまいたためにこの様な事態になったという噂がある。
署名はその調達した証明書を使用して、権利者(証明書の所有者)が発行する。ドライバー署名の場合、(もしあれば)ドライバーバイナリーと カタログ (.CAT) ファイル の両方に付加する。Windows がサポートしている証明書発行機関は Microsoftのコード署名証明書の取得ページ で確認できる。
日本国内向けの日本語ページでは例えば、次の会社がある。会社によって価格、申請から発行までの期間、申請者確認方法、支払い方法などがそれぞれ異なるので注意されたい。証明書発行機関はその時により価格が異なるため、今まで数社を試して来ているが、個人的には最近、①価格が安い ②発行日数が短い ③カード払いが可能 ④手続きが単純で制限事項やブランド変更等の問題が無いなどの理由で、COMODO JAPAN (Sectigo) を良く利用している。
- https://www.websecurity.digicert.com/ja/jp/code-signing
- https://rms.ne.jp/codesigning/
- https://jp.globalsign.com/service/codesign/
- https://www.toritonssl.com/service/codesign/
- https://comodo.jp/products/codesign.html
証明書の発行元にもよるが、署名には通常30年等の長い有効期限が設定されている。会社によっては証明書が発行できる署名回数やタイムサーバー利用に制限がある場合がある。Windows 10 用に新しく設けられた構成証明書署名では、Microsoftのダッシュボードと呼ぶサイトに、未署名のドライバーパッケージを提出 することで、これら証明書発行機関ではなくMicrosoftの証明書による署名を付加できるので、後ほど説明する。
署名の種類と方法
Windows 10 で認識される署名は次の4種類である。
- 個人署名(ドライバー開発用)
- SPC署名(コードサイニング証明書署名とも)
- 構成証明書署名(Attestation Signing)
- Windows ハードウェア互換性プログラムによる署名
どの署名でも例え開発時であっても sha2署名 する必要がある。Windows 7 以前で使われていた sha1 署名のカーネルモードのドライバーは Windows 10 では無理にインストールしたとしても、実行はできない。
上記設定は次の通り、WDK をインストールした Visual Studioで開発対象のドライバープロダクトの Driver Signing のプロパティ ページ で簡単に指定できる。個人署名は Sign Mode で Test Sign を選択して、Test Certificate に、証明書ストアの個人証明書を選択する。
SPC署名では Sign Mode で Production Signを選択して、Production Certificate で証明書ストアにインストール済の「SPC 証明書」を選択する。Cross-Signing Certificate は 証明書発行機関と合致するクロス証明書 をダウンロードしてどこかにコピーしておき、そのファイルを指定する。
構成証明書署名 と Windows ハードウェア互換性プログラムによる署名 はダッシュボードから未署名のドライバーパッケージを提出するため、Sign Modeには Noを選択する。
Time Stamp Server は原則として、証明書発行機関のものを指定する。File Digest Algorithm は暗号化処理で使用するハッシュ関数のアルゴリズムの指定である。デフォルトの何も指定されない状態では、自動的に古い sha1 が指定されてしまうので、この項には必ず SHA2-256bit を示す sha256 と手入力する必要がある。
個人署名
ドライバー開発時に使用する。「ドライバー署名の強制を無効」にした Windows 10で動作する。手作業で署名する場合、次の手順を経て初めて機能する。
- 個人証明書でドライバーバイナリーとカタログに署名
- 動作対象マシン(ターゲットマシン)に署名で使用した証明書をインストール
- 動作対象マシン「ドライバー署名の強制を無効」にして起動
しかしドライバーをビルドするマシン(開発ホスト)に Visual Studio と WDK (Windows Driver Kit) をインストールして、プロビジョニング手順 でターゲットマシンを設定しておけば、これらの手順を全て自動で実行することが可能だ。
SPC 署名
SPC (Software Publishers Certificate) 署名はコードサイニング証明書署名やコード証明書とも呼ばれ、Windows 2000 の頃から認められたマイクロソフトが認定する第三者機関が発行する証明書を使用して、権利者(証明書を買った人や機関)が自分で署名する署名である。意外と知られてないのは、例えば COMODO JAPANの表 にもある通り、下記の 2つの条件に両方とも当てはまらなければ、Windows 10 の SPC 署名は問題無く利用できる。
- 新規にインストールの Windows 10
- BIOSで UEFI セキュアブート が有効
しかしながら Windows 10 プレインストール済で販売している メーカー製PC のほとんどがこれに該当するため、SPC 署名の運用には十分な注意が必要だ。安全を見るならば、SPC 証明書ではなく 少し高い EV 証明書を調達して、次項の構成証明書署名を利用すべきである。余談だが、購入した EV 証明書 を使用した自前の署名は SPC 署名として機能するので、これを開発・試験用に利用することでダッシュボード申請の時間と手間を省くことが出来る。SPC 署名も利用したいために、別途 SPC 証明書 を購入する必要は無い。
構成証明書署名
構成証明書署名 という用語は、マイクロソフトによる Attestation Signing の日本語訳である。Windows 10 のリリースに伴い、セキュリティの面の配慮から従来の SPC署名を置き換える新しいタイプの署名として生まれた。
2017年頃から(当時は新しいダッシュボードと呼んだ)「Windows ハードウェアのパートナー センター」のによる構成証明書署名サービスが始まり、今では安定運用されている。これにより以前同種の目的で運用されていた、Winqual や Sysdev と呼ぶサイトは廃止された。今ではドライバー署名の「ダッシュボード」というと、このハードウェア ダッシュボード プログラム を指す。
ダッシュボード利用のアカウント開設の申請は、EV証明書を取得済みで、なおかつ申請組織のAD (Active Directory) の管理者権限を持っている必要があり、ハードウェア プログラムの登録 手順に従って、Get started with the Hardware Developer Program から行う。なお、Windows ハードウェアのパートナー センター利用時には、Office365等やマイクロソフトパートナーネットワークで利用しているのとは別の、onmicrosoft アカウントが登録組織に対して発行されるので、パスワードの管理などでは注意が必要である。
ダッシュボードのアカウント開設後は、いつでも未署名のドライバーパッケージを CABファイルに固めて 提出する。通常30分から長くても3時間程度でMicrosoft署名が付加されたドライバーパッケージをダウンロードできる様になる。
ダッシュボードではそのほか、Windows ハードウェアのパートナー センター のページにある通り、次のことが可能だ。
Windows ハードウェア互換性プログラム による署名
Windows との互換性が認定されたハードウェアにだけ与えられる署名である。Windows 上の扱いが同等の前項、構成証明書署名が広まるとともに、最近は余り聞かなくなった。昔はWHQLとか、Windows ロゴ署名等と呼ばれていたものに相当する。Windows Hardware Lab Kit (HLK) の該当テストを全てパスすることが必須である。ハードウェア互換性リストに掲載されるのと、EV 証明書購入が不要なのがメリットである。しかし申請者の素性を証明するための SPC証明書は必要。Windows Updateでの配布や、ドライバー エラー レポート参照等は、構成証明書署名と同様に可能だ。
- Atomu Hidakaさんのブログ
- ログインしてコメントを投稿