注
App Control for Business の一部の機能は、特定の Windows バージョンでのみ使用できます。 アプリ制御機能の可用性について詳しくは、こちらをご覧ください。
2026 年 4 月以降、カーネル モード ドライバーの署名に対してクロス署名証明機関 (CA) は既定で信頼されなくなります。 カーネル ドライバー署名の標準パスは 、ハードウェア デベロッパー センター (HDC) を通じて行われます。これには、 Windows ハードウェア互換性プログラム (WHCP) 認定のために Microsoft にドライバー バイナリを提出する必要があります。 ただし、分類された環境、機密性の高い環境、またはエアギャップ環境を持つ組織は、認定のためにドライバーを Microsoft に提出できない場合があります。 さらに、内部使用のドライバーのみを記述する組織は、Windows エコシステムのドライバーを認定したくない場合があります。
カスタム カーネル署名者 は 、App Control for Business を拡張して、組織が WHCP 署名を必要とせずに、独自の公開キー インフラストラクチャ (PKI) で署名されたカーネル ドライバーを信頼できるようにすることで、この問題を解決します。 この機能では、セキュア ブート階層の署名機関によって署名されたアプリ制御ポリシーを使用して、カーネル モード コードに対して承認される署名証明書を定義します。 この機能により、カーネルの信頼境界をきめ細かく監査可能に制御でき、ドライバーを WHCP 認定する要件が削除されます。
カスタム カーネル署名者のしくみ
カスタム カーネル署名者機能では、階層化された信頼チェーンとアプリ制御ポリシーを使用して、Windows カーネルに組み込まれている既定の署名要件をオーバーライドします。 信頼チェーンのしくみを次に示します。
| 層 | ロール |
|---|---|
| セキュア ブート プラットフォーム キー (PK) / キー交換キー (KEK) | 信頼のルート。 お客様または OEM が所有しています。 ファームウェアに物理的にアクセスしないと変更できません。 |
| アプリコントロールポリシー署名者 | アプリコントロールポリシーバイナリに署名します。 セキュア ブート PK または KEK データベースの機関にチェーンする必要があります。 |
| アプリ制御ポリシー | カスタム PKI、Windows、および必要に応じて WHCP 署名者を含む信頼できるカーネル署名者を一覧表示します。 EFI システム パーティションにデプロイされます。 |
| Windows カーネル コードの整合性 | 読み込み時にすべてのカーネル ドライバーをアプリ制御ポリシーに対して検証します。 アプリ制御ポリシーによって一覧表示されるドライバーのみを許可します。 |
プラットフォーム所有者 (PK または KEK 所有者) のみがポリシーを承認できます。 この高摩擦登録プロセスは意図的です。 このプロセスにより、コンシューマー デバイスでの誤用を防ぎ、物理ファームウェア アクセスを持つ組織のみがこの機能を有効にすることができます。
重要
署名済みポリシーがデプロイされると、同じ機関によって署名された新しいポリシーでのみ更新できます。 有効な置換なしでポリシーを削除すると、Windows の起動に失敗します。 回復するには、統合拡張ファームウェア インターフェイス (UEFI) メニューにアクセスして、セキュア ブートを無効にするか、ファームウェア変数を変更する必要があります。 デプロイの前に、キーの管理と回復の手順を慎重に計画してください。 署名されたアプリ制御ポリシーの詳細を参照してください。
セキュリティの保証
カスタム カーネル署名者は、次のセキュリティ保証を提供します。
- セキュア ブートの整合性: カスタム カーネル署名者は、セキュア ブートが有効になっている場合にのみ機能します。 ポリシーはセキュア ブート PK または KEK 所有者によって署名されている必要があり、物理ファームウェア アクセスなしではなりすましを行うことはできません。
- 改ざん防止: デプロイ後、同じ機関によって署名された代替ポリシーなしでは、署名済みポリシーを削除できません。
- きめ細かい信頼: アプリ制御ポリシーでは、証明書ごとの信頼規則とハッシュごとの信頼規則が許可されます。 カーネルで実行されるドライバーを正確に制御します。
- 否認不可: すべてのポリシーとドライバーの署名は、暗号化で検証できます。 コード整合性イベント ログは、すべての読み込みをキャプチャし、監査の決定をブロックします。
サポートされているプラットフォームとエディション
カスタム カーネル署名者機能は、2026 年 4 月のセキュリティ以外の更新プログラムを使用して、次の Windows プラットフォームで使用できます。
- Windows 11 (バージョン 24H2 以降)
この機能は、 ホームを除くすべてのエディションの Windows で使用できます。
注
この機能は、 System Guard Secure Launch を使用する ARM64 システムではまだサポートされていません。
カスタム カーネル 署名者のデプロイ
開始する前に、次の要件が満たされていることを確認してください。
- サポートされているエディションに Windows をクリーン インストールします。 カスタム カーネル署名者は、 デバイスの初期セットアップ中に有効にする必要があります。 この機能は、現在実行中のシステムでは有効になりません。
- セキュア ブートが有効になっている UEFI ファームウェア (バージョン 2.3 以降)。
- 顧客所有の PKI インフラストラクチャ。 運用環境では、HSM でサポートされるキー ストレージ ソリューションをお勧めします。
- UEFI ファームウェア変数 (PK、KEK、DB) への管理アクセス。
- Windows SDKから SignTool.exe。
- App Control for Business ポリシーの設計、署名済みポリシー、ポリシー ルールに関する知識。
手順 1: セキュア ブート キーを生成する
セキュア ブートの信頼のルートとして機能し、アプリ制御ポリシーの署名に使用される PKI キー ペアを生成します。 PK または KEK を信頼のルートとして使用して、アプリ制御ポリシーに署名できます。 Microsoft のガイダンスでは、PK 所有者が今後も KEK のサービスを継続できるように、PKI キーを KEK に追加します。
PK 証明書と KEK 証明書は、ルート証明書またはルートから直接発行された中間証明書 (PCA) である必要があります。 Windows セキュア ブート キーの作成と管理に関するガイダンスドキュメント には、セキュア ブートと互換性のある証明書の作成に関する詳細情報とガイダンスが記載されています。 キー プロパティと拡張機能の参照テンプレートとして Microsoft KEK キーを使用することもできます。
注
organizationが既にデバイスに PK を所有している場合は、アプリ制御ポリシーに署名するか、KEK 更新プログラムに署名して新しいセキュア ブート キーを追加できます。 PK を所有していない場合は、セキュア ブートを無効にして、既存のデバイスに新しい PK または KEK を設定する必要があります。 今後のデバイスでは、ハードウェア OEM と連携して、ファクトリでカスタムのセキュア ブート キーを事前に構成することを検討してください。
手順 2: PK へのアクセス権を持つセキュア ブート UEFI 変数を構成する
デバイスで PK を所有している場合は、KEK 登録に署名して、KEK 公開キーを UEFI ファームウェアに追加できます。 PK を所有していない場合は、手順 3 に進むことができます。
KEK 登録コンテンツを生成する
# Generate KEK content file
# Replace the SignatureOwner GUID with your organization's GUID
Format-SecureBootUEFI `
-Name KEK `
-SignatureOwner "55555555-5555-5555-5555-555555555555" `
-ContentFilePath C:\KEK\KEK_SigList.bin `
-FormatWithCert `
-Certificate C:\KEK\policy_signer.cer `
-SignableFilePath C:\KEK\KEK_Signable_SigList.bin `
-Time 2025-01-01T00:00:00Z `
-AppendWrite:$true
PK を使用して KEK 登録ファイルに署名する
signtool.exe sign /fd sha256
/p7 .\
/p7co 1.2.840.113549.1.7.1 `
/p7ce DetachedSignedData `
/a `
/f PK.pfx`
C:\KEK\KEK_Signable_SigList.bin
手順 3. PK にアクセスせずにセキュア ブート UEFI 変数を構成する
UEFI セキュア ブート変数を設定するには、最初に UEFI メニューでセキュア ブートを無効にして、ファームウェアをセットアップ モードにします。 セットアップ モードでは、署名された更新プログラムなしで変数を設定できます。
変数を次の順序で設定します。
- DB - OEM および Windows UEFI CA 2023 証明書を追加します。
- KEK - Microsoft KEK CA 2K 2023 と、organizationのポリシー署名者証明書を追加します。
- PK - organizationのプラットフォーム キーを設定します (KEK 登録を使用している場合は OEM PK をそのまま使用します)。
注意
セキュア ブート変数を誤って設定すると、デバイスが起動できなくなる可能性があります。 運用環境にデプロイする前に、ラボ ハードウェアでこのプロセスをテストします。 必要に応じてセキュア ブートを無効にして回復できるように、常に UEFI ファームウェア設定へのアクセスを維持します。 Windows に必要なキーは、 セキュア ブート キーの作成と管理に関するガイダンスドキュメントで入手できます。
手順 4: アプリ制御ポリシーを作成する
基本テンプレートとして既定の強制 Windows ポリシーから開始し、信頼する必要がある他の署名者をデバイスでスキャンします。
既定のポリシー テンプレートを見つける
既定のポリシー テンプレートは、次の場所で使用できます。
%WINDIR%\schemas\CodeIntegrity\ExamplePolicies\DefaultWindows_Enforced.xml
デバイスで既存のカーネル署名者をスキャンする
New-CIPolicy -ScanPath 'C:\' -UserPEs -NoScript `
-FilePath '.\ScannedPolicy.xml' `
-Level PCACertificate -Fallback Hash
注
このコマンドは、信頼を中間 CA にピン留めすることで署名証明書ルールを作成します。 より詳細な信頼は、アプリ制御で実現でき、ポリシー ルールドキュメントに記載されています
既定のポリシーをスキャン結果とマージする
Merge-CIPolicy `
-PolicyPaths 'C:\Windows\schemas\CodeIntegrity\ExamplePolicies\DefaultWindows_Enforced.xml', '.\ScannedPolicy.xml' `
-OutputFilePath '.\CustomKernelSignersPolicy.xml'
署名のためのポリシーを準備する
カスタム カーネル署名者機能では、セキュア ブートと初期 Windows ブート コンポーネントによってポリシーを署名および保護する必要があります。 署名されたアプリ制御ポリシーの詳細を参照してください。 署名済みポリシーを有効にするには、オプション 6 (署名なしポリシー) を削除します。
Set-RuleOption -Option 6 -FilePath .\CustomKernelSignersPolicy.xml -Delete
(省略可能)ユーザー モード コードの整合性を削除する
ポリシーをカーネル モード ドライバーにのみ適用する場合は、オプション 0 (UMCI) を削除します。
Set-RuleOption -Option 0 -FilePath .\CustomKernelSignersPolicy.xml -Delete
重要
UMCI ルール オプションを削除した後、 UMCI signing scenario 要素 (値 12) を CustomKernelSignersPolicy.xml ファイルから手動で削除する必要もあります。
基本ポリシーのベスト プラクティス
- 最初にイメージをカスタマイズします。 デバイスをスキャンする前に、承認されていないソフトウェアを削除します。
-
-Level PCACertificateを使用する性とカバレッジのバランスを最大限に高める必要があります。 - このスキャンでは、デバイス上のすべての既存の署名者がキャプチャ され、Windows コンポーネントとハードウェア ドライバーが信頼されたままになります。 代わりに、機密ドライバーのみをスキャンすることを検討してください。
- 強制モードでデプロイする前に、監査モードで十分にテストします。
手順 5: カスタム カーネル署名者をポリシーに追加する
各信頼された証明書の TBS (署名対象) ハッシュを、ポリシー XML の次のセクションに追加します。 次のエントリが必要です。
| 証明書 | 目的 | [ポリシー] セクション |
|---|---|---|
| ポリシー署名者証明書 | この証明書は CI ポリシー自体に署名し、Secure Boot PK または KEK に追加された機関にチェーンします | <UpdateSigners> |
| カスタム ドライバー署名証明書 | この証明書は、カーネル ドライバーに署名します | <Signers> |
# Policy signer certificate(s):
Add-SignerRule -CertificatePath <path_to_cer> -FilePath .\CustomKernelSignersPolicy.xml -Update
# Custom kernel signer certificate(s):
Add-SignerRule -CertificatePath <path_to_cer> -FilePath .\CustomKernelSignersPolicy.xml -Kernel
ヒント
certutil コマンドを使用して、証明書の TBS ハッシュを取得することもできます: certutil -dump <certificate.cer>。 出力で Signature Hash 値を探します。 この値は、証明書の TBS ハッシュです。
手順 6: ポリシーを変換して署名する
XML ポリシーをバイナリ形式に変換する
Set-CIPolicyIdInfo -ResetPolicyID -FilePath .\CustomKernelSignersPolicy.xml
$PolicyId = ([xml](Get-Content .\CustomKernelSignersPolicy.xml)).SiPolicy.PolicyId
ConvertFrom-CIPolicy .\CustomKernelSignersPolicy.xml -BinaryFilePath ("./" + $PolicyId + ".cip")
ポリシー署名証明書を使用してポリシーに署名する
signtool.exe sign /fd sha256 `
/p7 .\ `
/p7co 1.3.6.1.4.1.311.79.1 `
/p7ce Embedded`
/a `
/f policy_signer.pfx `
("./" + $PolicyId + ".cip")
重要
OID 1.3.6.1.4.1.311.79.1 は、Windows CI ポリシー署名 OID です。 署名を認識するには、Windows コードの整合性にこの OID を使用する必要があります。 ポリシー署名者証明書は、PK または KEK にチェーンする必要があります。
署名されたアプリ制御ポリシーの詳細を参照してください。
手順 7: ポリシーをデプロイする
署名済みポリシー バイナリは、次のいずれかの方法を使用してデプロイできます。
- Microsoft Intuneなどの MDM ソリューション
- CiTool (Windows 11で利用可能)
- グループ ポリシー (GPO 経由で展開)
- スクリプト ベースのデプロイ (スクリプトを使用したデプロイ)
EFI システム パーティションへのスクリプト ベースのデプロイ
上記のすべてのソリューションでは、スクリプト ベースのデプロイに加えて、ポリシー バイナリを EFI システム パーティション (ESP) に自動的にデプロイします。 スクリプトを使用してデプロイする場合は、署名されたポリシー バイナリを EFI パーティションに手動でコピーする必要があります。
# Mount the EFI System Partition
mountvol s: /s
# Copy the signed policy to the active policies directory
copy ("./" + $PolicyId + ".cip") s:\EFI\Microsoft\Boot\CiPolicies\Active\
注
MDM、CiTool、GPO の各メソッドは、ポリシーを EFI パーティションに自動的にコピーします。
手順 8: Windows をリセットする
この機能を有効にするには、Windows のリセットが必要です。 EFI パーティションにポリシーが存在する場合は、プッシュ ボタンのリセットなどのリセット方法を使用してデバイス をリセットする必要があります。 リセットが実行されていない場合、ポリシーは Windows によって信頼されません。
手順 9: Windows ドライバー ポリシーを無効にする
2026 年 4 月のセキュリティ以外の更新プログラム以降、Windows 11 (24H2 以降) と Windows Server 2025 では、クロス署名ドライバー プログラムの信頼を制限するカーネル ポリシーが適用されます。 ポリシーがアクティブな場合は無効にする必要があります。それ以外の場合、ドライバー ポリシーによってカスタム PKI 署名されたドライバーがブロックされます。
# Mount the EFI System Partition
mountvol s: /s
# Remove the default Windows kernel policy if present
del s:\EFI\Microsoft\Boot\CiPolicies\Active\{8F9CB695-5D48-48D6-A329-7202B44607E3}.cip
手順 10: デプロイを検証する
最初に監査モードでテストする
ポリシーを適用する前に、ドライバーをブロックせずにポリシー違反をログに記録するために監査モードを有効にして展開します。
- [ポリシー
<Rules>] セクションでEnabled:Audit Modeが設定されていることを確認します。 - ポリシーを展開し、デバイスを再起動します。
- Applications and Services Logs>Microsoft>Windows>CodeIntegrity のコード整合性イベント ログを確認します。
検証チェックリスト
- カスタム署名されたドライバーが正常に読み込まれます。
- 署名されていないドライバーまたは未承認のドライバーはブロックされます (強制モード)。
- Windows Updateおよび OS サービス フローは引き続き機能します。
- コード整合性イベント ログには、予期されるブロック イベントのみが表示されます。
- このポリシーは、フリート全体のデプロイの前にすべてのターゲット ハードウェア構成で検証されます。
検証が完了したら、ポリシーから Enabled:Audit Mode ルール オプションを削除し、再署名し、実稼働デバイスに展開します。 ポリシーの更新には、Windows のクリーンインストールは必要ありません。