web-dev-qa-db-ja.com

Windows 8では、サードパーティのINFドライバーファイルには署名が必要ですか?

私はUSBデバイスを販売し、それらのドライバーを提供する会社で働いています。

Windows 7では、カーネルにコードを追加しない限り、USBデバイス用のunsigned INFドライバーファイルをインストールして使用できます。当社は、Microsoftが提供する汎用ドライバーを使用しています(usbser.sysおよびwinusb.sys)なので、ドライバーパッケージに署名する必要はありませんでした。

ある顧客および別のStackOverflowの質問からのレポートに基づくWindows 8のドライバー署名要件で何が変更されましたか?および Arduinoフォーラム 、Windows 8 Consumer Previewには、すべてのサードパーティのINFファイルに署名する必要があります。 Windows7で動作したドライバーは次のとおりです。

サードパーティINFにはデジタル署名情報が含まれていません。

Windows 8の最終バージョンでも署名が必要であることを確認するMicrosoftの公式Wordは何ですか?MSDN.comからの1〜2文十分ですが、何も見つかりません。

署名証明書の購入を検討していますが、200ドルを支払う前に、長期的に実際に必要になることを確認したいと思います。新しい署名要件が実際のバージョンではなく、コンシューマープレビューにある可能性はありますか?

20
David Grayson

私自身の質問に答えるには:はい、Windows 8の最終バージョンでは、すべてのINFファイルに署名する必要がありますが、ドライバーをWHQLに送信する必要はありません。この要件について書きましたそして私の記事でもっとたくさん 実用的なWindowsコードとドライバーの署名

20
David Grayson

INFファイルの署名が必要なだけでなく、 [〜#〜] whql [〜#〜] 証明書ではなく、証明書による署名も必要です。 .sysファイルなどの埋め込み署名に使用するものと同じです。INFファイルでコード署名証明書を使用してもまったく機能しませんでした。(署名されていない場合と同じ問題が発生します。)

編集:

これは、マイクロソフトがあなたに考えてほしいことです。彼らは、特定のクラスのドライバーはWHQL署名が必要であり、そうでない場合は機能せず、 Authenticode 署名はWHQLプロセスを持たない人にのみ機能すると述べました。

カーネルコードと同じように注意して署名する必要があることを除いて、ドライバーパッケージにAuthenticode署名できることがわかりました。つまり、 [〜#〜] ca [〜#〜]の正しい相互証明書を取得する必要があります。 (fromカーネルモードコード署名の相互証明書、私が持っているStartCom(クラス2、)を含め、現在それらはたくさんあります。 2年間でUS $ 60ですが、タイムスタンプを付けることはできません)このクロス証明書(CAの自己署名証明書またはその中間証明書とは異なります。MSDNページでのみ入手可能)を SignTool/acスイッチを介して。

次に、SignToolverifyを/kpスイッチで使用して、正しく相互署名されているかどうかを確認します。スイッチを使用しないSignTool検証では、.catファイルがWHQL署名されている必要がありますが、以前は問題がなかった/paスイッチが緩すぎて、ドライバー以外の署名(EXEファイルなど)にのみ適用されます。 ClickOnce など)。

独自のカーネルレベルの署名証明書を取得したくない場合(これは、率直に言って、VeriSignの超高額でGlobalSignが年間200米ドルに制限される前は、以前よりも簡単です)、Microsoftはそれを認識していなかったと思います多くの人がx64システムのカーネルレベルのエクスプロイトを作成しました)、自己署名ルートCA、ドライバインストーラinstallをLocalMachineの「信頼されたルート証明機関」ストアにインストールします(を参照)。 certmgr.exe)、それによって署名された.catファイルをインストールします。もちろん、これはカーネルレベルのコード証明書ではないため、他の誰かからのカーネルレベルのコード証明書が既に埋め込まれている.sysファイルのみを使用する必要があります(つまり、ドライバーパッケージ内の.infファイルのみを変更できます) 。どうやら、自己署名証明書が.catファイルに署名できるようにする抜け穴がいくつかあります(独自のCAを作成し、それを使用して証明書に署名し、それを使用して.catファイルに署名した場合このように動作しません)。

作成するすべてのドライバーINFパッケージに対してこれを行うスイートについては、libwdiと、catファイルの自己署名証明書がWindows8へのインストールを許可する方法を参照してください。

EDIT2:

CERTUMの「オープンソース」開発者証明書の言及を削除しました。これは、Microsoftによって相互認証されていないためです(取得するのは、Microsoftが相互認証したCertum TRUSTED NETWORKのものではありません)。

9
rajkosto