スキップしてメイン コンテンツへ

 none
ドライバ署名(Windows10) RRS feed

  • 質問

  • お世話になります。

    Windows10(7,8,8.1)向けにドライバ署名を行いたいのですが、ツールは何が必要でしょうか?(VS2015?)
    またinf2catでのWin10の指定について記載しているサイトなどはありませんでしょうか?

    7,8向けの署名はしたことがあります。ご教授お願い致します。

    2015年11月17日 10:52

回答

  • ユーザーモード用のドライバの場合であれば、VS2015を入れるかWindows10SDKを個別に入れ、さらにWDKを入れると%Program Files(x86)\Windows Kits\10\bin\x86にあるInf2CatがWindows10対応のInf2catです。signtoolも同じ場所にあります。
    あとはクロス証明書。

    inf2catはオプションのOSのリストに10_X86,10_X64,Server10_X64,Server_ARM64が増えてるだけみたいなので、7,8向けと同じ手順でやればいいはず。
    手元にあるファイルで試すとこんな感じのコマンドです。

    Inf2Cat.exe /os:XP_X86,XP_X64,Vista_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64,6_3_X86,6_3_X64,10_X86,10_X64,Server10_X64 /driver:"Infファイルのあるフォルダ"
    
    signtool.exe sign /s TrustedPublisher /ac "C:\sign\VeriSign Class 3 Public Primary Certification Authority - G5.cer" /t http://timestamp.verisign.com/scripts/timestamp.dll /fd SHA1 /d "説明" "infファイルのあるフォルダ\target.cat"
    signtool.exe sign /s TrustedPublisher /ac "C:\sign\VeriSign Class 3 Public Primary Certification Authority - G5.cer" /tr http://timestamp.geotrust.com/tsa /td SHA256  /as  /fd SHA256  /d "説明" "infファイルのあるフォルダ\target.cat"

    catファイルは一応は/asオプションで2重署名できるけど検証は通らないので、SHA1かSHA2のどちらかで署名することになるかな。
    その他のオプションはexeやdllを署名するのと同じなので、やったことがあるなら判ると思います。

    カーネルモードドライバの署名はやったことないですがMicrosoftに提出する必要があるはずなので、WDK サポートのブログを参考にしてみてください。

    11/20追記
    signtoolはSDK、inf2catはWDKを入れると入ります


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答の候補に設定 星 睦美 2015年11月20日 1:14
    • 編集済み gekkaMVP 2015年11月20日 12:17 SDK,WDKに関する記述を訂正
    • 回答としてマーク 星 睦美 2015年11月25日 0:23
    2015年11月17日 13:21
  • catは10の下にあるinf2catで作成するとして、署名は8.1のsigntoolを使うという組み合わせで Win10, 8.1, 8, 7向けに対応可能でしょうか?

    ユーザーモード用のドライバとカーネルモード用ドライバで対応方法が違います。 gekkaさんもおっしゃられていますが、詳細はWDK サポートのブログから確認できます。

    関連する情報だけ抜き出すと、ユーザモード用ドライバであれば、inf2catとsigntoolによるAuthenticode署名で対応できます。が、カーネルモード用ドライバの場合、Win10, 8.1, 8, 7向けに対応させるためにはハードウェア互換性プログラムより署名を取得するしか方法はありません。

    その際にはHLKX または HCKX ファイルに、ポータルに登録したEVコードサイニング証明書が必要になります。署名は、HLK Studio または HCK Studio 内にて、ファイルを作成する際に行います。

    お騒がせしました。

    Windows10 SDK, WDK10を両方インストールしたらすべてにinf2catとsigntoolができました。

    その後署名を行えましたのでひとまず解決しました。

    現状では、inf2catとsigntoolによるAuthenticode署名したカーネルモード用ドライバはWindows 10でインストール・ロードできてしまいます。これは、Microsoft署名以外の署名が例外なく無効になる処置は 現時点で適用されておらず、今後のアップデートにて適用される予定だからです。

    SHA256で行いましたが、今からSHA1で署名したものを持っておく必要がありますでしょうか?

    基本的にSHA-1はVista以前のOSに対応するためのものです。但し、Windows 7の場合、KB3033929が適用されていないPCにSHA256署名したドライバをインストールしようとすると、コード52エラーがでるので注意が必要です。

    KB3033929の適用/未適用に関わらずWindows 7で動作させたい場合は、SHA-1署名も1つの手だと思います。
    ドライバは2016年1月1日以降に適用されるSHA-1廃止ポリシーの影響を受けません。






    • 編集済み せれ 2015年11月19日 7:03
    • 回答の候補に設定 星 睦美 2015年11月20日 1:14
    • 回答としてマーク 星 睦美 2015年11月25日 0:23
    2015年11月19日 5:24
  • Windows 10 におけるカーネルモードドライバーについては、「Authenticode 署名ではダメとなる予定だが、今は保留されている」という主旨が書かれています。

    http://blogs.msdn.com/b/jpwdkblog/archive/2015/09/18/windows-10-sha-1.aspx

    情報源をきちんと読み、ご自身でご判断ください。
    なお、ドライバー関連の話は更新が速いです。一時の情報を参考に動いていくのではなく、常に最新の情報を自ら追いかけるようにしないと、いざというときに困る可能性がある点、ご注意ください。

    • 回答の候補に設定 星 睦美 2015年11月20日 1:14
    • 回答としてマーク 星 睦美 2015年11月25日 0:23
    2015年11月19日 13:18
    モデレータ

すべての返信

  • ユーザーモード用のドライバの場合であれば、VS2015を入れるかWindows10SDKを個別に入れ、さらにWDKを入れると%Program Files(x86)\Windows Kits\10\bin\x86にあるInf2CatがWindows10対応のInf2catです。signtoolも同じ場所にあります。
    あとはクロス証明書。

    inf2catはオプションのOSのリストに10_X86,10_X64,Server10_X64,Server_ARM64が増えてるだけみたいなので、7,8向けと同じ手順でやればいいはず。
    手元にあるファイルで試すとこんな感じのコマンドです。

    Inf2Cat.exe /os:XP_X86,XP_X64,Vista_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64,6_3_X86,6_3_X64,10_X86,10_X64,Server10_X64 /driver:"Infファイルのあるフォルダ"
    
    signtool.exe sign /s TrustedPublisher /ac "C:\sign\VeriSign Class 3 Public Primary Certification Authority - G5.cer" /t http://timestamp.verisign.com/scripts/timestamp.dll /fd SHA1 /d "説明" "infファイルのあるフォルダ\target.cat"
    signtool.exe sign /s TrustedPublisher /ac "C:\sign\VeriSign Class 3 Public Primary Certification Authority - G5.cer" /tr http://timestamp.geotrust.com/tsa /td SHA256  /as  /fd SHA256  /d "説明" "infファイルのあるフォルダ\target.cat"

    catファイルは一応は/asオプションで2重署名できるけど検証は通らないので、SHA1かSHA2のどちらかで署名することになるかな。
    その他のオプションはexeやdllを署名するのと同じなので、やったことがあるなら判ると思います。

    カーネルモードドライバの署名はやったことないですがMicrosoftに提出する必要があるはずなので、WDK サポートのブログを参考にしてみてください。

    11/20追記
    signtoolはSDK、inf2catはWDKを入れると入ります


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答の候補に設定 星 睦美 2015年11月20日 1:14
    • 編集済み gekkaMVP 2015年11月20日 12:17 SDK,WDKに関する記述を訂正
    • 回答としてマーク 星 睦美 2015年11月25日 0:23
    2015年11月17日 13:21
  • 御回答ありがとうございます。

    さっそくサラのWin7SP1にVS2015とWDK10を入れました。

    inf2catはWindows Kitsの8.0, 8.1, 10すべてのbinの中に有りますが

    signtoolは8.1にしかありません。いただいた情報と異なりますがそういうものでしょうか?

    catは10の下にあるinf2catで作成するとして、署名は8.1のsigntoolを使うという組み合わせで

    Win10, 8.1, 8, 7向けに対応可能でしょうか?

    • 回答の候補に設定 satou364 2018年3月2日 6:40
    2015年11月18日 3:44
  • お騒がせしました。

    Windows10 SDK, WDK10を両方インストールしたらすべてにinf2catとsigntoolができました。

    その後署名を行えましたのでひとまず解決しました。

    SHA256で行いましたが、今からSHA1で署名したものを持っておく必要がありますでしょうか?

    2015年11月18日 8:45
  • catは10の下にあるinf2catで作成するとして、署名は8.1のsigntoolを使うという組み合わせで Win10, 8.1, 8, 7向けに対応可能でしょうか?

    ユーザーモード用のドライバとカーネルモード用ドライバで対応方法が違います。 gekkaさんもおっしゃられていますが、詳細はWDK サポートのブログから確認できます。

    関連する情報だけ抜き出すと、ユーザモード用ドライバであれば、inf2catとsigntoolによるAuthenticode署名で対応できます。が、カーネルモード用ドライバの場合、Win10, 8.1, 8, 7向けに対応させるためにはハードウェア互換性プログラムより署名を取得するしか方法はありません。

    その際にはHLKX または HCKX ファイルに、ポータルに登録したEVコードサイニング証明書が必要になります。署名は、HLK Studio または HCK Studio 内にて、ファイルを作成する際に行います。

    お騒がせしました。

    Windows10 SDK, WDK10を両方インストールしたらすべてにinf2catとsigntoolができました。

    その後署名を行えましたのでひとまず解決しました。

    現状では、inf2catとsigntoolによるAuthenticode署名したカーネルモード用ドライバはWindows 10でインストール・ロードできてしまいます。これは、Microsoft署名以外の署名が例外なく無効になる処置は 現時点で適用されておらず、今後のアップデートにて適用される予定だからです。

    SHA256で行いましたが、今からSHA1で署名したものを持っておく必要がありますでしょうか?

    基本的にSHA-1はVista以前のOSに対応するためのものです。但し、Windows 7の場合、KB3033929が適用されていないPCにSHA256署名したドライバをインストールしようとすると、コード52エラーがでるので注意が必要です。

    KB3033929の適用/未適用に関わらずWindows 7で動作させたい場合は、SHA-1署名も1つの手だと思います。
    ドライバは2016年1月1日以降に適用されるSHA-1廃止ポリシーの影響を受けません。






    • 編集済み せれ 2015年11月19日 7:03
    • 回答の候補に設定 星 睦美 2015年11月20日 1:14
    • 回答としてマーク 星 睦美 2015年11月25日 0:23
    2015年11月19日 5:24
  • せれ様

    御回答ありがとうございます。

    Authenticode署名で対応できなくなる日が近いうちに来るのでしょうか?

    ロゴ取得?などが求められるようなら、かなりハード(付属ソフト)開発のハードルが上がると思います。

    2015年11月19日 10:51
  • Windows 10 におけるカーネルモードドライバーについては、「Authenticode 署名ではダメとなる予定だが、今は保留されている」という主旨が書かれています。

    http://blogs.msdn.com/b/jpwdkblog/archive/2015/09/18/windows-10-sha-1.aspx

    情報源をきちんと読み、ご自身でご判断ください。
    なお、ドライバー関連の話は更新が速いです。一時の情報を参考に動いていくのではなく、常に最新の情報を自ら追いかけるようにしないと、いざというときに困る可能性がある点、ご注意ください。

    • 回答の候補に設定 星 睦美 2015年11月20日 1:14
    • 回答としてマーク 星 睦美 2015年11月25日 0:23
    2015年11月19日 13:18
    モデレータ
  • Azulean様

    御回答ありがとうございました。

    2015年11月20日 1:07