You are on page 1of 2037

Tell us about your PDF experience.

Introduction to Windows security


Article • 09/01/2023 • Applies to: ✅ Windows 11

This article was partially created with the help of AI. An author reviewed and revised
the content as needed. Read more.

The acceleration of digital transformation and the expansion of both remote and hybrid
work brings new opportunities to organizations, communities, and individuals. This
expansion introduces new threats and risks.

Organizations worldwide are adopting a Zero Trust security model based on the
premise that no person or device anywhere can have access until safety and integrity is
proven. Windows 11 is built on Zero Trust principles to enable hybrid productivity and
new experiences anywhere, without compromising security. Windows 11 raises the
security baselines with new requirements for advanced hardware and software
protection that extends from chip to cloud.

How Windows 11 enables Zero Trust protection


A Zero Trust security model gives the right people the right access at the right time.
Zero Trust security is based on three principles:

1. Reduce risk by explicitly verifying data points such as user identity, location, and
device health for every access request, without exception
2. When verified, give people and devices access to only necessary resources for the
necessary amount of time
3. Use continuous analytics to drive threat detection and improve defenses

For Windows 11, the Zero Trust principle of verify explicitly applies to risks introduced by
both devices and people. Windows 11 provides chip-to-cloud security, enabling IT
administrators to implement strong authorization and authentication processes with
features like Windows Hello for Business. IT administrators also gain attestation and
measurements for determining if a device meets requirements and can be trusted.
Windows 11 works out-of-the-box with Microsoft Intune and Azure Active Directory,
which enables timely and seamless access decisions. Furthermore, IT administrators can
easily customize Windows to meet specific user and policy requirements for access,
privacy, compliance, and more.

Security, by default
Windows 11 is a natural evolution of its predecessor, Windows 10. We have collaborated
with our manufacturer and silicon partners to incorporate extra hardware security
measures that address the increasingly complex security threats of today. These
measures not only enable the hybrid work and learning that many organizations now
embrace but also help bolster our already strong foundation and resilience against
attacks.

Enhanced hardware and operating system security


With hardware-based isolation security that begins at the chip, Windows 11 stores
sensitive data behind other barriers separated from the operating system. As a result,
information including encryption keys and user credentials are protected from
unauthorized access and tampering.

In Windows 11, hardware and software work together to protect the operating system.
For example, new devices come with Virtualization-based security (VBS) and Secure Boot
built-in and enabled by default to contain and limit malware exploits.

Robust application security and privacy controls


To help keep personal and business information protected and private, Windows 11 has
multiple layers of application security that safeguard critical data and code integrity.
Application isolation and controls, code integrity, privacy controls, and least-privilege
principles enable developers to build in security and privacy from the ground up. This
integrated security protects against breaches and malware, helps keep data private, and
gives IT administrators the controls they need.

In Windows 11, Microsoft Defender Application Guard uses Hyper-V virtualization


technology to isolate untrusted websites and Microsoft Office files in containers,
separate from and unable to access the host operating system and enterprise data. To
protect privacy, Windows 11 also provides more controls over which apps and features
can collect and use data such as the device's location, or access resources like camera
and microphone.

Secured identities
Passwords have been an important part of digital security for a long time, and they're
also a top target for cybercriminals. Windows 11 provides powerful protection against
credential theft with chip-level hardware security. Credentials are protected by layers of
hardware and software security such as TPM 2.0, VBS, and/or Credential Guard, making
it harder for attackers to steal credentials from a device. With Windows Hello for
Business, users can quickly sign in with face, fingerprint, or PIN for passwordless
protection. Windows 11 also supports FIDO2 security keys for passwordless
authentication.

Connecting to cloud services


Microsoft offers comprehensive cloud services for identity, storage, and access
management in addition to the tools needed to attest that Windows devices connecting
to your network are trustworthy. You can also enforce compliance and conditional
access with a modern device management (MDM) service such as Microsoft Intune,
which works with Azure Active Directory and Microsoft Azure Attestation to control
access to applications and data through the cloud.

Next steps
To learn more about the security features included in Windows 11, download the
Windows 11 Security Book: Powerful security from chip to cloud .
Windows security features licensing and
edition requirements
Article • 06/22/2023 • Applies to: ✅ Windows 11

This article lists the security features that are available in Windows.

Select one of the two tabs to learn about licensing requirements to use the security
features, or to learn about the Windows edition requirements that support them:

Licensing requirements

Feature name Windows Windows Windows Windows Windows


Pro/Pro Enterprise Enterprise Education Education
Education/SE E3 E5 A3 A5

Access Control Yes Yes Yes Yes Yes


(ACLs/SCALS)

Account Lockout Yes Yes Yes Yes Yes


Policy

Always On VPN ❌ Yes Yes Yes Yes


(device tunnel)

Assigned Access Yes Yes Yes Yes Yes


(kiosk mode)

Attack surface Yes Yes Yes Yes Yes


reduction (ASR)

Azure AD join, Active Yes Yes Yes Yes Yes


Directory domain
join, and Hybrid
Azure AD join with
single sign-on (SSO)

BitLocker enablement Yes Yes Yes Yes Yes

BitLocker ❌ Yes Yes Yes Yes


management

Bluetooth pairing and Yes Yes Yes Yes Yes


connection protection

Common Criteria Yes Yes Yes Yes Yes


certifications
Feature name Windows Windows Windows Windows Windows
Pro/Pro Enterprise Enterprise Education Education
Education/SE E3 E5 A3 A5

Controlled folder Yes Yes Yes Yes Yes


access

Device health Yes Yes Yes Yes Yes


attestation service

Direct Access ❌ Yes Yes Yes Yes

Email Encryption Yes Yes Yes Yes Yes


(S/MIME)

Encrypted hard drive Yes Yes Yes Yes Yes

Enhanced phishing Yes Yes Yes Yes Yes


protection with
SmartScreen

Exploit protection Yes Yes Yes Yes Yes

Fast Identity Online Yes Yes Yes Yes Yes


(FIDO2) security key

Federal Information Yes Yes Yes Yes Yes


Processing Standard
(FIPS) 140 validation

Federated sign-in ❌ ❌ ❌ Yes Yes

Hardware-enforced Yes Yes Yes Yes Yes


stack protection

Hypervisor-protected Yes Yes Yes Yes Yes


Code Integrity (HVCI)

Kernel Direct Memory Yes Yes Yes Yes Yes


Access (DMA)
protection

Local Security Yes Yes Yes Yes Yes


Authority (LSA)
Protection

Manage by Mobile Yes Yes Yes Yes Yes


Device Management
(MDM) and group
policy

Measured boot Yes Yes Yes Yes Yes


Feature name Windows Windows Windows Windows Windows
Pro/Pro Enterprise Enterprise Education Education
Education/SE E3 E5 A3 A5

Microsoft Defender Yes Yes Yes Yes Yes


Antivirus

Microsoft Defender ❌ Yes Yes Yes Yes


Application Guard
(MDAG) configure via
MDM

Microsoft Defender ❌ Yes Yes Yes Yes


Application Guard
(MDAG) for Edge
enterprise mode and
enterprise
management

Microsoft Defender Yes Yes Yes Yes Yes


Application Guard
(MDAG) for Edge
standalone mode

Microsoft Defender ❌ ❌ ❌ ❌ ❌
Application Guard
(MDAG) for Microsoft
Office

Microsoft Defender ❌ Yes Yes Yes Yes


Application Guard
(MDAG) public APIs

Microsoft Defender ❌ ❌ Yes ❌ Yes


for Endpoint

Microsoft Defender Yes Yes Yes Yes Yes


SmartScreen

Microsoft Pluton Yes Yes Yes Yes Yes


security processor

Microsoft Vulnerable Yes Yes Yes Yes Yes


Driver Blocklist

Opportunistic Yes Yes Yes Yes Yes


Wireless Encryption
(OWE)

Personal data ❌ Yes Yes Yes Yes


encryption (PDE)
Feature name Windows Windows Windows Windows Windows
Pro/Pro Enterprise Enterprise Education Education
Education/SE E3 E5 A3 A5

Privacy Resource Yes Yes Yes Yes Yes


Usage

Privacy Transparency Yes Yes Yes Yes Yes


and Controls

Remote wipe Yes Yes Yes Yes Yes

Secure Boot and Yes Yes Yes Yes Yes


Trusted Boot

Secured-core Yes Yes Yes Yes Yes


configuration lock

Secured-core PC Yes Yes Yes Yes Yes

Security baselines Yes Yes Yes Yes Yes

Server Message Block Yes Yes Yes Yes Yes


(SMB) file service

Server Message Block Yes Yes Yes Yes Yes


Direct (SMB Direct)

Smart App Control Yes Yes Yes Yes Yes

Smart Cards for Yes Yes Yes Yes Yes


Windows Service

Tamper protection Yes Yes Yes Yes Yes


settings for MDE

Transport layer Yes Yes Yes Yes Yes


security (TLS)

Trusted Platform Yes Yes Yes Yes Yes


Module (TPM) 2.0

Universal Print ❌ Yes Yes Yes Yes

User Account Control Yes Yes Yes Yes Yes


(UAC)

Virtual Private Yes Yes Yes Yes Yes


Network (VPN)

Virtualization-based Yes Yes Yes Yes Yes


security (VBS)
Feature name Windows Windows Windows Windows Windows
Pro/Pro Enterprise Enterprise Education Education
Education/SE E3 E5 A3 A5

WiFi Security Yes Yes Yes Yes Yes

Windows Autopatch ❌ Yes Yes ❌ ❌

Windows Autopilot Yes Yes Yes Yes Yes

Windows containers Yes Yes Yes Yes Yes

Windows Defender Yes Yes Yes Yes Yes


Application Control
(WDAC)

Windows Defender ❌ Yes Yes Yes Yes


Credential Guard

Windows Defender Yes Yes Yes Yes Yes


Remote Credential
Guard

Windows Defender Yes Yes Yes Yes Yes


System Guard

Windows Firewall Yes Yes Yes Yes Yes

Windows Hello for Yes Yes Yes Yes Yes


Business

Windows Hello for Yes Yes Yes Yes Yes


Business Enhanced
Security Sign-in (ESS)

Windows LAPS Yes Yes Yes Yes Yes

Windows presence Yes Yes Yes Yes Yes


sensing

Windows Sandbox Yes Yes Yes Yes Yes

Windows Security Yes Yes Yes Yes Yes


policy settings and
auditing

For more information about Windows licensing, see Windows Commercial Licensing
overview.
Windows security foundations
Article • 08/01/2023

Microsoft is committed to continuously invest in improving our software development


process, building highly secure-by-design software, and addressing security compliance
requirements. At Microsoft, we embed security and privacy considerations from the
earliest life-cycle phases of all our software development processes. We build in security
from the ground for powerful defense in today's threat environment.

Our strong security foundation uses Microsoft Security Development Lifecycle (SDL) Bug
Bounty, support for product security standards and certifications, and Azure Code
signing. As a result, we improve security by producing software with fewer defects and
vulnerabilities instead of relying on applying updates after vulnerabilities have been
identified.

Use the links in the following table to learn more about the security foundations:

Offensive research
Feature name Description

Microsoft Security The Microsoft Security Development Lifecycle (SDL) introduces security best
Development practices, tools, and processes throughout all phases of engineering and
Lifecycle (SDL) development.

OneFuzz service A range of tools and techniques - such as threat modeling, static analysis,
fuzz testing, and code quality checks - enable continued security value to
be embedded into Windows by every engineer on the team from day one.
Through the SDL practices, Microsoft engineers are continuously provided
with actionable and up-to-date methods to improve development
workflows and overall product security before the code has been released.

Microsoft As part of our secure development process, the Microsoft Windows Insider
Windows Insider Preview bounty program invites eligible researchers across the globe to
Preview bounty find and submit vulnerabilities that reproduce in the latest Windows Insider
program Preview (WIP) Dev Channel. The goal of the Windows Insider Preview
bounty program is to uncover significant vulnerabilities that have a direct
and demonstrable impact on the security of customers using the latest
version of Windows.

Through this collaboration with researchers across the globe, our teams
identify critical vulnerabilities that were not previously found during
development and quickly fix the issues before releasing the final Windows.
Certification
Feature name Description

Common Criteria Common Criteria (CC) is an international standard currently maintained by


certifications national governments who participate in the Common Criteria Recognition
Arrangement. CC defines a common taxonomy for security functional
requirements, security assurance requirements, and an evaluation
methodology used to ensure products undergoing evaluation satisfy the
functional and assurance requirements. Microsoft ensures that products
incorporate the features and functions required by relevant Common Criteria
Protection Profiles and completes Common Criteria certifications of
Microsoft Windows products.

Federal The Federal Information Processing Standard (FIPS) Publication 140 is a U.S.
Information government standard that defines the minimum security requirements for
Processing cryptographic modules in IT products. Microsoft maintains an active
Standard (FIPS) commitment to meeting the requirements of the FIPS 140 standard, having
140 validation validated cryptographic modules against FIPS 140-2 since it was first
established in 2001. Multiple Microsoft products, including Windows 11,
Windows 10, Windows Server, and many cloud services, use these
cryptographic modules.

Secure supply chain


Feature name Description

Software Bill of SBOMs are leveraged to provide the transparency and provenance of the
Materials (SBOM) content as it moves through various stages of the Windows supply chain.
This enables trust between each supply chain segment, ensures that
tampering has not taken place during ingestion and along the way, and
provides a provable chain of custody for the product that we ship to
customers.

Azure Code Windows Defender Application Control (WDAC) enables customers to


Signing define policies for controlling what is allowed to run on their devices.
WDAC policies can be remotely applied to devices using an MDM solution
like Microsoft Intune.

To simplify WDAC enablement, organizations can take advantage of Azure


Code Signing, a secure and fully managed service for signing WDAC
policies and apps.

Azure Code Signing minimizes the complexity of code signing with a


turnkey service backed by a Microsoft managed certificate authority,
eliminating the need to procure and self-manage any signing certificates.
Feature name Description

The service is managed just as any other Azure resource and integrates
easily with the leading development and CI/CD toolsets.

Windows Developers have an opportunity to design highly secure applications that


application benefit from the latest Windows safeguards. The Windows App SDK
software provides a unified set of APIs and tools for developing secure desktop apps
development kit for Windows. To help create apps that are up-to-date and protected, the
(SDK) SDK follows the same security standards, protocols, and compliance as the
core Windows operating system.
Zero Trust and Windows device health
Article • 08/01/2023

Organizations need a security model that more effectively adapts to the complexity of
the modern work environment. IT admins need to embrace the hybrid workplace, while
protecting people, devices, apps, and data wherever they're located. Implementing a
Zero Trust model for security helps address today's complex environments.

The Zero Trust principles are:

Verify explicitly. Always authenticate and authorize based on all available data
points, including user identity, location, device health, service or workload, data
classification, and monitor anomalies.

Use least-privileged access. Limit user access with just-in-time and just-enough-
access, risk-based adaptive policies, and data protection to help secure data and
maintain productivity.

Assume breach. Prevent attackers from obtaining access to minimize potential


damage to data and systems. Protect privileged roles, verify end-to-end
encryption, use analytics to get visibility, and drive threat detection to improve
defenses.

The Zero Trust concept of verify explicitly applies to the risks introduced by both
devices and users. Windows enables device health attestation and conditional access
capabilities, which are used to grant access to corporate resources.

Conditional access evaluates identity signals to confirm that users are who they say they
are before they're granted access to corporate resources.

Windows 11 supports device health attestation, helping to confirm that devices are in a
good state and haven't been tampered with. This capability helps users access corporate
resources whether they're in the office, at home, or when they're traveling.

Attestation helps verify the identity and status of essential components and that the
device, firmware, and boot process haven't been altered. Information about the
firmware, boot process, and software, is used to validate the security state of the device.
This information is cryptographically stored in the security co-processor Trusted
Platform Module (TPM). Once the device is attested, it can be granted access to
resources.

Device health attestation on Windows


Many security risks can emerge during the boot process as this process can be the most
privileged component of the whole system. The verification process uses remote
attestation as the secure channel to determine and present the device's health. Remote
attestation determines:

If the device can be trusted


If the operating system booted correctly
If the OS has the right set of security features enabled

These determinations are made with the help of a secure root of trust using the Trusted
Platform Module (TPM). Devices can attest that the TPM is enabled, and that the device
hasn't been tampered with.

Windows includes many security features to help protect users from malware and
attacks. However, trusting the Windows security components can only be achieved if the
platform boots as expected and wasn't tampered with. Windows relies on Unified
Extensible Firmware Interface (UEFI) Secure Boot, Early-launch antimalware (ELAM),
Dynamic Root of Trust for Measurement (DRTM), Trusted Boot, and other low-level
hardware and firmware security features. When you power on your PC until your anti-
malware starts, Windows is backed with the appropriate hardware configuration to help
keep you safe. Measured and Trusted boot, implemented by bootloaders and BIOS,
verifies and cryptographically records each step of the boot in a chained manner. These
events are bound to a security coprocessor (TPM) that acts as the Root of Trust. Remote
Attestation is the mechanism by which these events are read and verified by a service to
provide a verifiable, unbiased, and tamper resilient report. Remote attestation is the
trusted auditor of your system's boot, allowing specific entities to trust the device.

A summary of the steps involved in attestation and Zero Trust on the device side are as
follows:

1. During each step of the boot process, such as a file load, update of special
variables, and more, information such as file hashes and signature are measured in
the TPM PCRs. The measurements are bound by a Trusted Computing Group
specification (TCG) that dictates what events can be recorded and the format of
each event.

2. Once Windows has booted, the attestor/verifier requests the TPM to fetch the
measurements stored in its Platform Configuration Register (PCR) alongside a TCG
log. The measurements in both these components together form the attestation
evidence that is then sent to the attestation service.

3. The TPM is verified by using the keys/cryptographic material available on the


chipset with an Azure Certificate Service.
4. This information is then sent to the attestation service in the cloud to verify that
the device is safe. Microsoft Endpoint Manger integrates with Microsoft Azure
Attestation to review device health comprehensively and connect this information
with Azure Active Directory conditional access. This integration is key for Zero Trust
solutions that help bind trust to an untrusted device.

5. The attestation service does the following tasks:

Verify the integrity of the evidence. This verification is done by validating the
PCRs that match the values recomputed by replaying the TCG log.
Verify that the TPM has a valid Attestation Identity Key issued by the
authenticated TPM.
Verify that the security features are in the expected states.

6. The attestation service returns an attestation report that contains information


about the security features based on the policy configured in the attestation
service.

7. The device then sends the report to the Microsoft Intune cloud to assess the
trustworthiness of the platform according to the admin-configured device
compliance rules.

8. Conditional access, along with device-compliance state then decides to allow or


deny access.

Other Resources
Learn more about Microsoft Zero Trust solutions in the Zero Trust Guidance Center.
Microsoft Security Development
Lifecycle
Article • 08/01/2023

The Security Development Lifecycle (SDL) is a security assurance process that is focused
on software development. As a Microsoft-wide initiative and a mandatory policy since
2004, the SDL has played a critical role in embedding security and privacy in software
and culture at Microsoft.

With the help of the combination of a holistic and practical approach, the SDL aims to
reduce the number and severity of vulnerabilities in software. The SDL introduces
security and privacy throughout all phases of the development process.

The Microsoft SDL is based on three core concepts:

Education
Continuous process improvement
Accountability

To learn more about the SDL, visit the Security Engineering site .

And, download the Simplified Implementation of the Microsoft SDL whitepaper .


FIPS 140-2 Validation
Article • 08/18/2023

FIPS 140-2 standard overview


The Federal Information Processing Standard (FIPS) Publication 140-2 is a U.S.
government standard. FIPS is based on Section 5131 of the Information Technology
Management Reform Act of 1996. It defines the minimum security requirements for
cryptographic modules in IT products.

The Cryptographic Module Validation Program (CMVP) ) is a joint effort of the U.S.
National Institute of Standards and Technology (NIST) and the Canadian Centre for
Cyber Security (CCCS). It validates cryptographic modules against the Security
Requirements for Cryptographic Modules (part of FIPS 140-2) and related FIPS
cryptography standards. The FIPS 140-2 security requirements cover 11 areas related to
the design and implementation of a cryptographic module. The NIST Information
Technology Laboratory operates a related program that validates the FIPS approved
cryptographic algorithms in the module.

Microsoft's approach to FIPS 140-2 validation


Microsoft maintains an active commitment to meeting the requirements of the FIPS
140-2 standard, having validated cryptographic modules against it since it was first
established in 2001. Microsoft validates its cryptographic modules under the NIST
CMVP, as described above. Multiple Microsoft products, including Windows 10,
Windows Server, and many cloud services, use these cryptographic modules.

Using Windows in a FIPS 140-2 approved mode


of operation
Windows 10 and Windows Server may be configured to run in a FIPS 140-2 approved
mode of operation, commonly referred to as "FIPS mode." If you turn on FIPS mode, the
Cryptographic Primitives Library (bcryptprimitives.dll) and Kernel Mode Cryptographic
Primitives Library (CNG.sys) modules will run self-tests before Windows runs
cryptographic operations. These self-tests are run according to FIPS 140-2 Section 4.9.
They ensure that the modules are functioning properly.
The Cryptographic Primitives Library and the Kernel Mode Cryptographic Primitives
Library are the only modules affected by FIPS mode. FIPS mode won't prevent Windows
and its subsystems from using non-FIPS validated cryptographic algorithms. FIPS mode
is merely advisory for applications or components other than the Cryptographic
Primitives Library and the Kernel Mode Cryptographic Primitives Library.

US government regulations continue to mandate FIPS mode for government devices


running Windows. Other customers should decide for themselves if FIPS mode is right
for them. There are many applications and protocols that use FIPS mode policy to
determine which cryptographic functionality to run. Customers seeking to follow the
FIPS 140-2 standard should research the configuration settings of their applications and
protocols. This research will help ensure that they can be configured to use FIPS 140-2
validated cryptography.

Achieving this FIPS 140-2 approved mode of operation of Windows requires


administrators to complete all four steps outlined below.

Step 1: Ensure FIPS 140-2 validated cryptographic


modules are installed
Administrators must ensure that all cryptographic modules installed are FIPS 140-2
validated. Tables listing validated modules, organized by operating system release, are
available later in this article.

Step 2: Ensure all security policies for all cryptographic


modules are followed
Each of the cryptographic modules has a defined security policy that must be met for
the module to operate in its FIPS 140-2 approved mode. The security policy may be
found in each module's published Security Policy Document (SPD). The SPDs for each
module may be found in the table of validated modules at the end of this article. Select
the module version number to view the published SPD for the module.

Step 3: Enable the FIPS security policy


Windows provides the security policy setting, System cryptography: Use FIPS-compliant
algorithms for encryption, hashing, and signing. This setting is used by some Microsoft
products to determine whether to run in FIPS mode. When this policy is turned on, the
validated cryptographic modules in Windows will also operate in FIPS mode. This policy
may be set using Local Security Policy, as part of Group Policy, or through a Modern
Device Management (MDM) solution. For more information on the policy, see System
cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing.

Step 4: Ensure that only FIPS validated cryptographic


algorithms are used
FIPS mode is enforced at the level of the application or service. It is not enforced by the
operating system or by individual cryptographic modules. Applications or services
running in FIPS mode must follow the security policies of validated modules. They must
not use a cryptographic algorithm that isn't FIPS-compliant.

In short, an application or service is running in FIPS mode if it:

Checks for the policy flag


Enforces security policies of validated modules

Microsoft FIPS 140-2 validated cryptographic


modules
The following tables identify the cryptographic modules used in an operating system,
organized by release.

Modules used by Windows clients


For more details, expand each operating system section.

Windows 10, version 1809

Validated Editions: Home, Pro, Enterprise, Education

Cryptographic Module Version (link to FIPS Algorithms


Security Policy) Certificate #

Cryptographic Primitives 10.0.17763 #3197 See Security Policy and


Library Certificate page for algorithm
information

Kernel Mode 10.0.17763 #3196 See Security Policy and


Cryptographic Primitives Certificate page for algorithm
Library information

Code Integrity 10.0.17763 #3644 See Security Policy and


Certificate page for algorithm
Cryptographic Module Version (link to FIPS Algorithms
Security Policy) Certificate #

information

Windows OS Loader 10.0.17763 #3615 See Security Policy and


Certificate page for algorithm
information

Secure Kernel Code 10.0.17763 #3651 See Security Policy and


Integrity Certificate page for algorithm
information

BitLocker Dump Filter 10.0.17763 #3092 See Security Policy and


Certificate page for algorithm
information

Boot Manager 10.0.17763 #3089 See Security Policy and


Certificate page for algorithm
information

Virtual TPM 10.0.17763 #3690 See Security Policy and


Certificate page for algorithm
information

Windows 10, version 1803

Validated Editions: Home, Pro, Enterprise, Education

Cryptographic Module Version (link to FIPS Algorithms


Security Policy) Certificate #

Cryptographic Primitives 10.0.17134 #3197 See Security Policy and


Library Certificate page for algorithm
information

Kernel Mode 10.0.17134 #3196 See Security Policy and


Cryptographic Primitives Certificate page for algorithm
Library information

Code Integrity 10.0.17134 #3195 See Security Policy and


Certificate page for algorithm
information

Windows OS Loader 10.0.17134 #3480 See Security Policy and


Certificate page for algorithm
information

Secure Kernel Code 10.0.17134 #3096 See Security Policy and


Integrity Certificate page for algorithm
information
Cryptographic Module Version (link to FIPS Algorithms
Security Policy) Certificate #

BitLocker Dump Filter 10.0.17134 #3092 See Security Policy and


Certificate page for algorithm
information

Boot Manager 10.0.17134 #3089 See Security Policy and


Certificate page for algorithm
information

Windows 10, version 1709

Validated Editions: Home, Pro, Enterprise, Education, S, Surface Hub, Mobile

Cryptographic Module Version (link to FIPS Algorithms


Security Policy) Certificate #

Cryptographic Primitives 10.0.16299 #3197 See Security Policy and


Library Certificate page for algorithm
information

Kernel Mode 10.0.16299 #3196 See Security Policy and


Cryptographic Primitives Certificate page for algorithm
Library information

Code Integrity 10.0.16299 #3195 See Security Policy and


Certificate page for algorithm
information

Windows OS Loader 10.0.16299 #3194 See Security Policy and


Certificate page for algorithm
information

Secure Kernel Code 10.0.16299 #3096 See Security Policy and


Integrity Certificate page for algorithm
information

BitLocker Dump Filter 10.0.16299 #3092 See Security Policy and


Certificate page for algorithm
information

Windows Resume 10.0.16299 #3091 See Security Policy and


Certificate page for algorithm
information

Boot Manager 10.0.16299 #3089 See Security Policy and


Certificate page for algorithm
information

Windows 10, version 1703


Validated Editions: Home, Pro, Enterprise, Education, S, Surface Hub, Mobile

Cryptographic Version (link FIPS Algorithms


Module to Security Certificate
Policy) #

Cryptographic 10.0.15063 #3095 FIPS approved algorithms: AES (Cert.


Primitives Library #4624 ); CKG (vendor affirmed); CVL
(bcryptprimitives.dll (Certs
and ncryptsslp.dll)
#1278 and #1281 ); DRBG (Cert.
#1555 ); DSA (Cert. #1223 ); ECDSA
(Cert. #1133 ); HMAC (Cert. #3061 );
KAS (Cert. #127 ); KBKDF (Cert. #140 );
KTS (AES Cert. #4626 ; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
PBKDF (vendor affirmed); RSA (Certs.
#2521 and #2522 ); SHS (Cert.
#3790 ); Triple-DES (Cert. #2459

Other algorithms: HMAC-MD5; MD5; DES;


Legacy CAPI KDF; MD2; MD4; RC2; RC4;
RSA (encrypt/decrypt)

Validated Component Implementations:


FIPS186-4 ECDSA - Signature Generation
of hash sized messages (Cert. #1133 );
FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #2521 );
FIPS186-4 RSA; RSADP - RSADP Primitive
(Cert. #1281 ); SP800-135 - Section 4.1.1,
IKEv1 Section 4.1.2, IKEv2 Section 4.2, TLS
(Cert. #1278 )

Kernel Mode 10.0.15063 #3094 #3094


Cryptographic
Primitives Library FIPS approved algorithms: AES (Certs.
(cng.sys) #4624 and #4626 ); CKG (vendor
affirmed); CVL (Certs. #1278 and
#1281 ); DRBG (Cert. #1555 ); DSA
(Cert. #1223 ); ECDSA (Cert. #1133 );
HMAC (Cert. #3061 ); KAS (Cert.
#127 ); KBKDF (Cert. #140 ); KTS (AES
Cert. #4626 ; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
PBKDF (vendor affirmed); RSA (Certs.
#2521 and #2523 ); SHS (Cert.
#3790 ); Triple-DES (Cert. #2459
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Other algorithms: HMAC-MD5; MD5;


NDRNG; DES; Legacy CAPI KDF; MD2;
MD4; RC2; RC4; RSA (encrypt/decrypt)

[Validated Component Implementations:


FIPS186-4 ECDSA - Signature Generation
of hash sized messages (Cert. [#3094] )

#1133 ); FIPS186-4 RSA; PKCS#1 v2.1 -


RSASP1 Signature Primitive
(Cert. #2521 [); FIPS186-4 RSA; RSADP
- RSADP Primitive Cert.

#1281 Cert. #3094

Boot Manager 10.0.15063 #3089 FIPS approved algorithms: AES (Certs.


#4624 and #4625 ); CKG (vendor
affirmed); HMAC (Cert. #3061 ); PBKDF
(vendor affirmed); RSA (Cert. #2523 );
SHS (Cert. #3790

Other algorithms: PBKDF (vendor


affirmed); VMK KDF (vendor affirmed)

Windows OS Loader 10.0.15063 #3090 FIPS approved algorithms: AES (Certs.


#4624 and #4625 ); RSA (Cert.
#2523 ); SHS (Cert. #3790

Other algorithms: NDRNG

Windows Resume [1] 10.0.15063 #3091 FIPS approved algorithms: AES (Certs.
#4624 and #4625 ); RSA (Cert.
#2523 ); SHS (Cert. #3790 )

BitLocker® Dump 10.0.15063 #3092 FIPS approved algorithms: AES (Certs.


Filter [2] #4624 and #4625 ); RSA (Cert.
#2522 ); SHS (Cert. #3790 )

Code Integrity (ci.dll) 10.0.15063 #3093 FIPS approved algorithms: AES (Cert.
#4624 ); RSA (Certs. #2522 and
#2523 ); SHS (Cert. #3790

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v1.5 - RSASP1
Signature Primitive (Cert. #1282 )

Secure Kernel Code 10.0.15063 #3096 FIPS approved algorithms: AES (Cert.
Integrity (skci.dll)[3] #4624 ); RSA (Certs. #2522 and
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

#2523 ); SHS (Cert. #3790

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v1.5 - RSASP1
Signature Primitive (Cert. #1282 )

[1]
Applies only to Home, Pro, Enterprise, Education, and S.

[2]
Applies only to Pro, Enterprise, Education, S, Mobile, and Surface Hub

[3]
Applies only to Pro, Enterprise, Education, and S
Windows 10, version 1607

Validated Editions: Home, Pro, Enterprise, Enterprise LTSB, Mobile

Cryptographic Version (link FIPS Algorithms


Module to Security Certificate
Policy) #

Cryptographic 10.0.14393 #2937 FIPS approved algorithms: AES (Cert.


Primitives Library #4064 ); DRBG (Cert. #1217 ); DSA
(bcryptprimitives.dll (Cert. #1098 ); ECDSA (Cert. #911 );
and ncryptsslp.dll) HMAC (Cert. #2651 ); KAS (Cert. #92 );
KBKDF (Cert. #101 ); KTS (AES Cert.
#4062 ; key wrapping; key
establishment methodology provides
between 128 bits and 256 bits of
encryption strength); PBKDF (vendor
affirmed); RSA (Certs. #2192 , #2193,
and #2195 ); SHS (Cert. #3347 );
Triple-DES (Cert. #2227 )

Other algorithms: HMAC-MD5; MD5;


DES; Legacy CAPI KDF; MD2; MD4; RC2;
RC4; RSA (encrypt/decrypt)

Validated Component Implementations:


FIPS186-4 ECDSA - Signature Generation
of hash sized messages (Cert. #922 );
FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #888 );
FIPS186-4 RSA; RSADP - RSADP Primitive
(Cert. #887 ); SP800-135 - Section 4.1.1,
IKEv1 Section 4.1.2, IKEv2 Section 4.2, TLS
(Cert. #886 )
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Kernel Mode 10.0.14393 #2936 FIPS approved algorithms: AES (Cert.


Cryptographic #4064 ); DRBG (Cert. #1217 ); DSA
Primitives Library (Cert. #1098 ); ECDSA (Cert. #911 );
(cng.sys) HMAC (Cert. #2651 ); KAS (Cert. #92 );
KBKDF (Cert. #101 ); KTS (AES Cert.
#4062 ; key wrapping; key
establishment methodology provides
between 128 bits and 256 bits of
encryption strength); PBKDF (vendor
affirmed); RSA (Certs. #2192 , #2193,
and #2195 ); SHS (Cert. #3347 );
Triple-DES (Cert. #2227 )

Other algorithms: HMAC-MD5; MD5;


NDRNG; DES; Legacy CAPI KDF; MD2;
MD4; RC2; RC4; RSA (encrypt/decrypt)

Validated Component Implementations:


FIPS186-4 ECDSA - Signature Generation
of hash sized messages (Cert. #922 );
FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #888 );
FIPS186-4 RSA; RSADP - RSADP Primitive
(Cert. #887 )

Boot Manager 10.0.14393 #2931 FIPS approved algorithms: AES (Certs.


#4061 and #4064 ); HMAC (Cert.
#2651 ); PBKDF (vendor affirmed); RSA
(Cert. #2193 ); SHS (Cert. #3347 )

Other algorithms: MD5; PBKDF (non-


compliant); VMK KDF

BitLocker® Windows 10.0.14393 #2932 FIPS approved algorithms: AES (Certs.


OS Loader (winload) #4061 and #4064 ); RSA (Cert.
#2193 ); SHS (Cert. #3347 )

Other algorithms: NDRNG; MD5

BitLocker® Windows 10.0.14393 #2933 FIPS approved algorithms: AES (Certs.


Resume (winresume)[1] #4061 and #4064 ); RSA (Cert.
#2193 ); SHS (Cert. #3347 )

Other algorithms: MD5

BitLocker® Dump 10.0.14393 #2934 FIPS approved algorithms: AES (Certs.


Filter (dumpfve.sys)[2] #4061 and #4064 )
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Code Integrity (ci.dll) 10.0.14393 #2935 FIPS approved algorithms: RSA (Cert.
#2193 ); SHS (Cert. #3347 )

Other algorithms: AES (non-compliant);


MD5

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #888 )

Secure Kernel Code 10.0.14393 #2938 FIPS approved algorithms: RSA (Certs.
Integrity (skci.dll)[3] #2193 ); SHS (Certs. #3347 )

Other algorithms: MD5

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #888 )

[1]
Applies only to Home, Pro, Enterprise, and Enterprise LTSB

[2]
Applies only to Pro, Enterprise, Enterprise LTSB, and Mobile

[3] Applies only to Pro, Enterprise, and Enterprise LTSB


Windows 10, version 1511

Validated Editions: Home, Pro, Enterprise, Enterprise LTSB, Mobile, Surface Hub

Cryptographic Version (link FIPS Algorithms


Module to Security Certificate
Policy) #

Cryptographic 10.0.10586 #2606 FIPS approved algorithms: AES (Certs.


Primitives Library #3629 ); DRBG (Certs. #955 ); DSA
(bcryptprimitives.dll (Certs. #1024 ); ECDSA (Certs. #760 );
and ncryptsslp.dll) HMAC (Certs. #2381 ); KAS (Certs. #72 ;
key agreement; key establishment
methodology provides between 112 bits
and 256 bits of encryption strength);
KBKDF (Certs. #72 ); KTS (AES Certs.
#3653 ; key wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
PBKDF (vendor affirmed); RSA (Certs.
#1887 , #1888, and #1889 ); SHS (Certs.
#3047 ); Triple-DES (Certs. #2024 )
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Other algorithms: DES; HMAC-MD5;


Legacy CAPI KDF; MD2; MD4; MD5; RC2;
RC4; RSA (encrypt/decrypt)

Validated Component Implementations:


FIPS186-4 ECDSA - Signature Generation
of hash sized messages (Cert. #666 );
FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #665 );
FIPS186-4 RSA; RSADP - RSADP Primitive
(Cert. #663 ); SP800-135 - Section 4.1.1,
IKEv1 Section 4.1.2, IKEv2 Section 4.2, TLS
(Cert. #664 )

Kernel Mode 10.0.10586 #2605 FIPS approved algorithms: AES (Certs.


Cryptographic #3629 ); DRBG (Certs. #955 ); DSA
Primitives Library (Certs. #1024 ); ECDSA (Certs. #760 );
(cng.sys) HMAC (Certs. #2381 ); KAS (Certs. #72 ;
key agreement; key establishment
methodology provides between 112 bits
and 256 bits of encryption strength);
KBKDF (Certs. #72 ); KTS (AES Certs.
#3653 ; key wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
PBKDF (vendor affirmed); RSA (Certs.
#1887 , #1888, and #1889 ); SHS (Certs.
#3047 ); Triple-DES (Certs. #2024 )

Other algorithms: DES; HMAC-MD5;


Legacy CAPI KDF; MD2; MD4; MD5; RC2;
RC4; RSA (encrypt/decrypt)

Validated Component Implementations:


FIPS186-4 ECDSA - Signature Generation
of hash sized messages (Cert. #666 );
FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #665 );
FIPS186-4 RSA; RSADP - RSADP Primitive
(Cert. #663 )

Boot Manager [4] 10.0.10586 #2700 FIPS approved algorithms: AES (Certs.
#3653 ); HMAC (Cert. #2381 ); PBKDF
(vendor affirmed); RSA (Cert. #1871 );
SHS (Certs. #3047 and #3048 )
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Other algorithms: MD5; KDF (non-


compliant); PBKDF (non-compliant)

BitLocker® Windows 10.0.10586 #2701 FIPS approved algorithms: AES (Certs.


OS Loader (winload) #3629 and #3653 ); RSA (Cert.
[5]
#1871 ); SHS (Cert. #3048 )

Other algorithms: MD5; NDRNG

BitLocker® Windows 10.0.10586 #2702 FIPS approved algorithms: AES (Certs.


Resume (winresume) #3653 ); RSA (Cert. #1871 ); SHS (Cert.
[6]
#3048 )

Other algorithms: MD5

BitLocker® Dump 10.0.10586 #2703 FIPS approved algorithms: AES (Certs.


[7]
Filter (dumpfve.sys) #3653 )

Code Integrity (ci.dll) 10.0.10586 #2604 FIPS approved algorithms: RSA (Certs.
#1871 ); SHS (Certs. #3048 )

Other algorithms: AES (non-compliant);


MD5

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #665 )

Secure Kernel Code 10.0.10586 #2607 FIPS approved algorithms: RSA (Certs.
Integrity (skci.dll)[8] #1871 ); SHS (Certs. #3048 )

Other algorithms: MD5

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #665 )

[4]
Applies only to Home, Pro, Enterprise, Mobile, and Surface Hub

[5]
Applies only to Home, Pro, Enterprise, Mobile, and Surface Hub

[6]
Applies only to Home, Pro, and Enterprise

[7] Applies only to Pro, Enterprise, Mobile, and Surface Hub

[8]
Applies only to Enterprise and Enterprise LTSB
Windows 10, version 1507
Validated Editions: Home, Pro, Enterprise, Enterprise LTSB, Mobile, and Surface Hub

Cryptographic Version (link FIPS Algorithms


Module to Security Certificate
Policy) #

Cryptographic 10.0.10240 #2606 FIPS approved algorithms: AES (Certs.


Primitives Library #3497 ); DRBG (Certs. #868 ); DSA
(bcryptprimitives.dll (Certs. #983 ); ECDSA (Certs. #706 );
and ncryptsslp.dll) HMAC (Certs. #2233 ); KAS (Certs. #64 ;
key agreement; key establishment
methodology provides between 112 bits
and 256 bits of encryption strength);
KBKDF (Certs. #66 ); KTS (AES Certs.
#3507 ; key wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
PBKDF (vendor affirmed); RSA (Certs.
#1783 , #1798 , and #1802 ); SHS
(Certs. #2886 ); Triple-DES (Certs.
#1969 )

Other algorithms: DES; HMAC-MD5;


Legacy CAPI KDF; MD2; MD4; MD5; RC2;
RC4; RSA (encrypt/decrypt)

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #572 );
FIPS186-4 RSA; RSADP - RSADP Primitive
(Cert. #576 ); SP800-135 - Section 4.1.1,
IKEv1 Section 4.1.2, IKEv2 Section 4.2, TLS
(Cert. #575 )

Kernel Mode 10.0.10240 #2605 FIPS approved algorithms: AES (Certs.


Cryptographic #3497 ); DRBG (Certs. #868 ); DSA
Primitives Library (Certs. #983 ); ECDSA (Certs. #706 );
(cng.sys) HMAC (Certs. #2233 ); KAS (Certs. #64 ;
key agreement; key establishment
methodology provides between 112 bits
and 256 bits of encryption strength);
KBKDF (Certs. #66 ); KTS (AES Certs.
#3507 ; key wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
PBKDF (vendor affirmed); RSA (Certs.
#1783 , #1798 , and #1802 ); SHS
(Certs. #2886 ); Triple-DES (Certs.
#1969 )
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Other algorithms: DES; HMAC-MD5;


Legacy CAPI KDF; MD2; MD4; MD5; RC2;
RC4; RSA (encrypt/decrypt)

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #572 );
FIPS186-4 RSA; RSADP - RSADP Primitive
(Cert. #576 )

Boot Manager[9] 10.0.10240 #2600 FIPS approved algorithms: AES (Cert.


#3497 ); HMAC (Cert. #2233 ); KTS (AES
Cert. #3498 ); PBKDF (vendor affirmed);
RSA (Cert. #1784 ); SHS (Certs. #2871
and #2886 )

Other algorithms: MD5; KDF (non-


compliant); PBKDF (non-compliant)

BitLocker® Windows 10.0.10240 #2601 FIPS approved algorithms: AES (Certs.


OS Loader (winload) #3497 and #3498 ); RSA (Cert.
[10]
#1784 ); SHS (Cert. #2871 )

Other algorithms: MD5; NDRNG

BitLocker® Windows 10.0.10240 #2602 FIPS approved algorithms: AES (Certs.


Resume (winresume) #3497 and #3498 ); RSA (Cert.
[11]
#1784 ); SHS (Cert. #2871 )

Other algorithms: MD5

BitLocker® Dump 10.0.10240 #2603 FIPS approved algorithms: AES (Certs.


Filter (dumpfve.sys) #3497 and #3498 )
[12]

Code Integrity (ci.dll) 10.0.10240 #2604 FIPS approved algorithms: RSA (Certs.
#1784 ); SHS (Certs. #2871 )

Other algorithms: AES (non-compliant);


MD5

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #572 )

Secure Kernel Code 10.0.10240 #2607 FIPS approved algorithms: RSA (Certs.
Integrity (skci.dll)[13] #1784 ); SHS (Certs. #2871 )
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Other algorithms: MD5

Validated Component Implementations:


FIPS186-4 RSA; PKCS#1 v2.1 - RSASP1
Signature Primitive (Cert. #572 )

[9]
Applies only to Home, Pro, Enterprise, and Enterprise LTSB

[10] Applies only to Home, Pro, Enterprise, and Enterprise LTSB

[11]
Applies only to Home, Pro, Enterprise, and Enterprise LTSB

[12] Applies only to Pro, Enterprise, and Enterprise LTSB

[13]
Applies only to Enterprise and Enterprise LTSB
Windows 8.1

Validated Editions: RT, Pro, Enterprise, Phone, Embedded

Cryptographic Version (link to FIPS Algorithms


Module Security Policy) Certificate
#

Cryptographic 6.3.9600 #2357 FIPS approved algorithms: AES (Cert.


Primitives Library 6.3.9600.17031 #2832 ); DRBG (Certs. #489 ); DSA
(bcryptprimitives.dll (Cert. #855 ); ECDSA (Cert. #505 );
and ncryptsslp.dll) HMAC (Cert. #1773 ); KAS (Cert.
#47 ); KBKDF (Cert. #30 ); PBKDF
(vendor affirmed); RSA (Certs. #1487 ,
#1493, and #1519 ); SHS (Cert.
#2373 ); Triple-DES (Cert. #1692 )

Other algorithms: AES (Cert. #2832 ,


key wrapping; key establishment
methodology provides between 128
bits and 256 bits of encryption
strength); AES-GCM encryption (non-
compliant); DES; HMAC MD5; Legacy
CAPI KDF; MD2; MD4; MD5; NDRNG;
RC2; RC4; RSA (encrypt/decrypt)#2832,
key wrapping; key establishment
methodology provides between 128
bits and 256 bits of encryption
strength); AES-GCM encryption (non-
compliant); DES; HMAC MD5; Legacy
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

CAPI KDF; MD2; MD4; MD5; NDRNG;


RC2; RC4; RSA (encrypt/decrypt)

Validated Component Implementations:


FIPS186-4 ECDSA - Signature
Generation of hash sized messages
(Cert. #288 ); FIPS186-4 RSA; PKCS#1
v2.1 - RSASP1 Signature Primitive (Cert.
#289 ); SP800-135 - Section 4.1.1,
IKEv1 Section 4.1.2, IKEv2 Section 4.2,
TLS (Cert. #323 )

Kernel Mode 6.3.9600 #2356 FIPS approved algorithms: AES (Cert.


Cryptographic 6.3.9600.17042 #2832 ); DRBG (Certs. #489 ); ECDSA
Primitives Library (Cert. #505 ); HMAC (Cert. #1773 );
(cng.sys) KAS (Cert. #47 ); KBKDF (Cert. #30 );
PBKDF (vendor affirmed); RSA (Certs.
#1487 , #1493, and #1519 ); SHS
(Cert. # 2373 ); Triple-DES (Cert.
#1692 )

Other algorithms: AES (Cert. #2832 ,


key wrapping; key establishment
methodology provides between 128
bits and 256 bits of encryption
strength); AES-GCM encryption (non-
compliant); DES; HMAC MD5; Legacy
CAPI KDF; MD2; MD4; MD5; NDRNG;
RC2; RC4; RSA (encrypt/decrypt)

Validated Component Implementations:


FIPS186-4 ECDSA - Signature
Generation of hash sized messages
(Cert. #288 ); FIPS186-4 RSA; PKCS#1
v2.1 - RSASP1 Signature Primitive (Cert.
#289 )

Boot Manager 6.3.9600 #2351 FIPS approved algorithms: AES (Cert.


6.3.9600.17031 #2832 ); HMAC (Cert. #1773 );
PBKDF (vendor affirmed); RSA (Cert.
#1494 ); SHS (Certs. # 2373 and
#2396 )

Other algorithms: MD5; KDF (non-


compliant); PBKDF (non-compliant)
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

BitLocker® Windows 6.3.9600 #2352 FIPS approved algorithms: AES (Cert.


OS Loader (winload) 6.3.9600.17031 #2832 ); RSA (Cert. #1494 ); SHS
(Cert. #2396 )

Other algorithms: MD5; NDRNG

BitLocker® Windows 6.3.9600 #2353 FIPS approved algorithms: AES (Cert.


Resume (winresume) 6.3.9600.17031 #2832 ); RSA (Cert. #1494 ); SHS
[14] (Certs. # 2373 and #2396 )

Other algorithms: MD5

BitLocker® Dump 6.3.9600 #2354 FIPS approved algorithms: AES (Cert.


Filter (dumpfve.sys) 6.3.9600.17031 #2832 )

Other algorithms: N/A

Code Integrity (ci.dll) 6.3.9600 #2355 FIPS approved algorithms: RSA (Cert.
6.3.9600.17031 #1494 ); SHS (Cert. # 2373 )

Other algorithms: MD5

Validated Component Implementations:


PKCS#1 v2.1 - RSASP1 Signature
Primitive (Cert. #289 )

[14] Applies only to Pro, Enterprise, and Embedded 8.


Windows 8

Validated Editions: RT, Home, Pro, Enterprise, Phone

Cryptographic Module Version FIPS Algorithms


(link to Certificate
Security #
Policy)

Cryptographic Primitives 6.2.9200 #1892 FIPS approved algorithms: AES (Certs.


Library #2197 and #2216 ); DRBG (Certs.
(BCRYPTPRIMITIVES.DLL) #258 ); DSA (Cert. #687 ); ECDSA
(Cert. #341 ); HMAC (Cert. #1345 );
KAS (Cert. #36 ); KBKDF (Cert. #3 );
PBKDF (vendor affirmed); RSA (Certs.
#1133 and #1134 ); SHS (Cert.
#1903 ); Triple-DES (Cert. #1387 )

Other algorithms: AES (Cert. #2197 ,


key wrapping; key establishment
Cryptographic Module Version FIPS Algorithms
(link to Certificate
Security #
Policy)

methodology provides between 128 bits


and 256 bits of encryption strength);
DES; Legacy CAPI KDF; MD2; MD4; MD5;
HMAC MD5; RC2; RC4; RSA
(encrypt/decrypt)#258); DSA (Cert.);
ECDSA (Cert.); HMAC (Cert.); KAS (Cert);
KBKDF (Cert.); PBKDF (vendor affirmed);
RSA (Certs. and); SHS (Cert.); Triple-DES
(Cert.)

Kernel Mode 6.2.9200 #1891 FIPS approved algorithms: AES (Certs.


Cryptographic Primitives #2197 and #2216 ); DRBG (Certs.
Library (cng.sys) #258 and #259 ); ECDSA (Cert.
#341 ); HMAC (Cert. #1345 ); KAS
(Cert. #36 ); KBKDF (Cert. #3 ); PBKDF
(vendor affirmed); RNG (Cert. #1110 );
RSA (Certs. #1133 and #1134 ); SHS
(Cert. #1903 ); Triple-DES (Cert.
#1387 )

Other algorithms: AES (Cert. #2197 ,


key wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
DES; Legacy CAPI KDF; MD2; MD4; MD5;
HMAC MD5; RC2; RC4; RSA
(encrypt/decrypt)#258 and); ECDSA
(Cert.); HMAC (Cert.); KAS (Cert.); KBKDF
(Cert.); PBKDF (vendor affirmed); RNG
(Cert.); RSA (Certs. and); SHS (Cert.);
Triple-DES (Cert.)

Other algorithms: AES (Certificate, key


wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
DES; Legacy CAPI KDF; MD2; MD4; MD5;
HMAC MD5; RC2; RC4; RSA
(encrypt/decrypt)

Boot Manager 6.2.9200 #1895 FIPS approved algorithms: AES (Certs.


#2196 and #2198 ); HMAC (Cert.
#1347 ); RSA (Cert. #1132 ); SHS
(Cert. #1903 )
Cryptographic Module Version FIPS Algorithms
(link to Certificate
Security #
Policy)

Other algorithms: MD5

BitLocker® Windows OS 6.2.9200 #1896 FIPS approved algorithms: AES (Certs.


Loader (WINLOAD) #2196 and #2198 ); RSA (Cert.
#1132 ); SHS (Cert. #1903 )

Other algorithms: AES (Cert. #2197 ;


non-compliant); MD5; Non-Approved
RNG

BitLocker® Windows 6.2.9200 #1898 FIPS approved algorithms: AES (Certs.


[15]
Resume (WINRESUME) #2196 and #2198 ); RSA (Cert.
#1132 ); SHS (Cert. #1903 )

Other algorithms: MD5

BitLocker® Dump Filter 6.2.9200 #1899 FIPS approved algorithms: AES (Certs.
(DUMPFVE.SYS) #2196 and #2198 )

Other algorithms: N/A

Code Integrity (CI.DLL) 6.2.9200 #1897 FIPS approved algorithms: RSA (Cert.
#1132 ); SHS (Cert. #1903 )

Other algorithms: MD5

Enhanced DSS and Diffie- 6.2.9200 #1893 FIPS approved algorithms: DSA (Cert.
Hellman Cryptographic #686 ); SHS (Cert. #1902 ); Triple-DES
Provider (DSSENH.DLL) (Cert. #1386 ); Triple-DES MAC (Triple-
DES Cert. #1386 , vendor affirmed)

Other algorithms: DES; DES MAC; DES40;


DES40 MAC; Diffie-Hellman; MD5; RC2;
RC2 MAC; RC4; Triple-DES (Cert.
#1386 , key wrapping; key
establishment methodology provides
112 bits of encryption strength; non-
compliant less than 112 bits of
encryption strength)#1902); Triple-DES
(Cert.); Triple-DES MAC (Triple-DES
Certificate, vendor affirmed)

Other algorithms: DES; DES MAC; DES40;


DES40 MAC; Diffie-Hellman; MD5; RC2;
RC2 MAC; RC4; Triple-DES (Certificate,
key wrapping; key establishment
methodology provides 112 bits of
Cryptographic Module Version FIPS Algorithms
(link to Certificate
Security #
Policy)

encryption strength; non-compliant less


than 112 bits of encryption strength)

Enhanced Cryptographic 6.2.9200 #1894 FIPS approved algorithms: AES (Cert.


Provider (RSAENH.DLL) #2196 ); HMAC (Cert. #1346); RSA
(Cert. #1132 ); SHS (Cert. #1902 );
Triple-DES (Cert. #1386 )

Other algorithms: AES (Cert. #2196 ,


key wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
DES; MD2; MD4; MD5; RC2; RC4; RSA
(key wrapping; key establishment
methodology provides between 112 bits
and 150 bits of encryption strength; non-
compliant less than 112 bits of
encryption strength); Triple-DES (Cert.
#1386 , key wrapping; key
establishment methodology provides
112 bits of encryption strength; non-
compliant less than 112 bits of
encryption strength)

[15]
Applies only to Home and Pro
Windows 7

Validated Editions: Windows 7, Windows 7 SP1

Cryptographic Module Version (link to Security Policy) FIPS Algorithms


Certificate
#

Cryptographic Primitives 6.1.7600.16385 1329 FIPS approved


Library algorithms: AES
(BCRYPTPRIMITIVES.DLL) 6.1.7601.17514 (Certs. #1168
and #1178 );
AES GCM (Cert.
#1168 , vendor-
affirmed); AES
GMAC (Cert.
#1168 , vendor-
affirmed); DRBG
(Certs. #23 and
Cryptographic Module Version (link to Security Policy) FIPS Algorithms
Certificate
#

#24 ); DSA (Cert.


#386 ); ECDSA
(Cert. #141 );
HMAC (Cert.
#677 ); KAS (SP
800-56A, vendor
affirmed, key
agreement; key
establishment
methodology
provides 80 bits
to 256 bits of
encryption
strength); RNG
(Cert. #649 );
RSA (Certs.
#559 and
#560 ); SHS
(Cert. #1081 );
Triple-DES (Cert.
#846 )

Other algorithms:
AES (Cert.
#1168 , key
wrapping; key
establishment
methodology
provides between
128 bits and 256
bits of encryption
strength); DES;
Diffie-Hellman
(key agreement;
key establishment
methodology
provides between
112 bits and 150
bits of encryption
strength; non-
compliant less
than 112 bits of
encryption
strength); MD2;
MD4; MD5; HMAC
MD5; RC2;
Cryptographic Module Version (link to Security Policy) FIPS Algorithms
Certificate
#

RC4#559 and);
SHS (Cert.); Triple-
DES (Cert.)

Other algorithms:
AES (Certificate,
key wrapping; key
establishment
methodology
provides between
128 bits and 256
bits of encryption
strength); DES;
Diffie-Hellman
(key agreement;
key establishment
methodology
provides between
112 bits and 150
bits of encryption
strength; non-
compliant less
than 112 bits of
encryption
strength); MD2;
MD4; MD5; HMAC
MD5; RC2; RC4

Kernel Mode 6.1.7600.16385 1328 FIPS approved


Cryptographic Primitives algorithms: AES
Library (cng.sys) 6.1.7600.16915 (Certs. #1168
and #1178 );
6.1.7600.21092
AES GCM (Cert.
6.1.7601.17514 #1168 , vendor-
affirmed); AES
6.1.7601.17725 GMAC (Cert.
#1168 , vendor-
6.1.7601.17919 affirmed); DRBG
(Certs. #23 and
6.1.7601.21861
#24 ); ECDSA
(Cert. #141 );
6.1.7601.22076
HMAC (Cert.
#677 ); KAS (SP
800-56A, vendor
affirmed, key
agreement; key
Cryptographic Module Version (link to Security Policy) FIPS Algorithms
Certificate
#

establishment
methodology
provides 80 bits
to 256 bits of
encryption
strength); RNG
(Cert. #649 );
RSA (Certs.
#559 and
#560 ); SHS
(Cert. #1081 );
Triple-DES (Cert.
#846 )

Other algorithms:
AES (Cert.
#1168 , key
wrapping; key
establishment
methodology
provides between
128 bits and 256
bits of encryption
strength); DES;
Diffie-Hellman
(key agreement;
key establishment
methodology
provides between
112 bits and 150
bits of encryption
strength; non-
compliant less
than 112 bits of
encryption
strength); MD2;
MD4; MD5; HMAC
MD5; RC2; RC4

Boot Manager 6.1.7600.16385 1319 FIPS approved


algorithms: AES
6.1.7601.17514 (Certs. #1168
and #1177 );
HMAC (Cert.
#675 ); RSA
(Cert. #557 );
Cryptographic Module Version (link to Security Policy) FIPS Algorithms
Certificate
#

SHS (Cert.
#1081 )

Other algorithms:
MD5#1168 and);
HMAC (Cert.); RSA
(Cert.); SHS (Cert.)

Other algorithms:
MD5

Winload OS Loader 6.1.7600.16385 1326 FIPS approved


(winload.exe) algorithms: AES
6.1.7600.16757 (Certs. #1168
and #1177 );
6.1.7600.20897
RSA (Cert.
6.1.7600.20916 #557 ); SHS
(Cert. #1081 )
6.1.7601.17514
Other algorithms:
6.1.7601.17556 MD5

6.1.7601.21655

6.1.7601.21675

BitLocker™ Drive 6.1.7600.16385 1332 FIPS approved


Encryption algorithms: AES
6.1.7600.16429 (Certs. #1168
and #1177 );
6.1.7600.16757
HMAC (Cert.
6.1.7600.20536 #675 ); SHS
(Cert. #1081 )
6.1.7600.20873
Other algorithms:
6.1.7600.20897 Elephant Diffuser

6.1.7600.20916

6.1.7601.17514

6.1.7601.17556

6.1.7601.21634

6.1.7601.21655

6.1.7601.21675
Cryptographic Module Version (link to Security Policy) FIPS Algorithms
Certificate
#

Code Integrity (CI.DLL) 6.1.7600.16385 1327 FIPS approved


algorithms: RSA
6.1.7600.17122 v6.1.7600.21320 (Cert. #557 );
SHS (Cert.
6.1.7601.17514
#1081 )
6.1.7601.17950 v6.1.7601.22108
Other algorithms:
MD5

Enhanced DSS and 6.1.7600.16385 1331 FIPS approved


Diffie-Hellman algorithms: DSA
Cryptographic Provider (no change in SP1) (Cert. #385 );
(DSSENH.DLL) RNG (Cert.
#649 ); SHS
(Cert. #1081 );
Triple-DES (Cert.
#846 ); Triple-
DES MAC (Triple-
DES Cert. #846 ,
vendor affirmed)

Other algorithms:
DES; DES MAC;
DES40; DES40
MAC; Diffie-
Hellman; MD5;
RC2; RC2 MAC;
RC4

Enhanced Cryptographic 6.1.7600.16385 1330 FIPS approved


Provider (RSAENH.DLL) algorithms: AES
(no change in SP1) (Cert. #1168 );
DRBG (Cert.
#23 ); HMAC
(Cert. #673 );
SHS (Cert.
#1081 ); RSA
(Certs. #557
and #559 );
Triple-DES (Cert.
#846 )

Other algorithms:
DES; MD2; MD4;
MD5; RC2; RC4;
RSA (key
Cryptographic Module Version (link to Security Policy) FIPS Algorithms
Certificate
#

wrapping; key
establishment
methodology
provides between
112 bits and 256
bits of encryption
strength; non-
compliant less
than 112 bits of
encryption
strength)

Windows Vista SP1

Validated Editions: Ultimate Edition

Cryptographic Version (link to FIPS Algorithms


Module Security Policy) Certificate
#

Boot Manager 6.0.6001.18000 and 978 FIPS approved algorithms: AES


(bootmgr) 6.0.6002.18005 (Certs. #739 and #760 ); HMAC
(Cert. #415 ); RSA (Cert. #354 );
SHS (Cert. #753 )

Winload OS 6.0.6001.18000, 979 FIPS approved algorithms: AES


Loader 6.0.6001.18027, (Certs. #739 and #760 ); RSA
(winload.exe) 6.0.6001.18606, (Cert. #354 ); SHS (Cert. #753 )
6.0.6001.22125,
6.0.6001.22861, Other algorithms: MD5
6.0.6002.18005,
6.0.6002.18411 and
6.0.6002.22596

Code Integrity 6.0.6001.18000, 980 FIPS approved algorithms: RSA (Cert.


(ci.dll) 6.0.6001.18023, #354 ); SHS (Cert. #753 )
6.0.6001.22120, and
6.0.6002.18005 Other algorithms: MD5

Kernel Mode 6.0.6001.18709, 1000 FIPS approved algorithms: AES


Security Support 6.0.6001.18272, (Certs. #739 and #756 ); ECDSA
Provider 6.0.6001.18796, (Cert. #82 ); HMAC (Cert. #412 );
Interface 6.0.6001.22202, RNG (Cert. #435 and SP 800-90
(ksecdd.sys) 6.0.6001.22450, AES-CTR, vendor-affirmed); RSA
6.0.6001.22987, (Certs. #353 and #357 ); SHS
6.0.6001.23069, (Cert. #753 ); Triple-DES (Cert.
6.0.6002.18005, #656 )#739 and); ECDSA (Cert.);
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

6.0.6002.18051, HMAC (Cert.); RNG (Cert. and SP


6.0.6002.18541, 800-90 AES-CTR, vendor-affirmed);
6.0.6002.18643, RSA (Certs. and); SHS (Cert.); Triple-
6.0.6002.22152, DES (Cert.)
6.0.6002.22742, and
6.0.6002.22869 Other algorithms: AES (GCM and
GMAC; non-compliant); DES; Diffie-
Hellman (key agreement; key
establishment methodology
provides between 112 bits and 150
bits of encryption strength; non-
compliant less than 112 bits of
encryption strength); EC Diffie-
Hellman (key agreement; key
establishment methodology
provides between 128 bits and 256
bits of encryption strength); MD2;
MD4; MD5; HMAC MD5; RC2; RC4;
RNG (SP 800-90 Dual-EC; non-
compliant); RSA (key wrapping; key
establishment methodology
provides between 112 bits and 150
bits of encryption strength; non-
compliant less than 112 bits of
encryption strength)

Cryptographic 6.0.6001.22202, 1001 FIPS approved algorithms: AES


Primitives Library 6.0.6002.18005, and (Certs. #739 and #756 ); DSA
(bcrypt.dll) 6.0.6002.22872 (Cert. #283 ); ECDSA (Cert. #82 );
HMAC (Cert. #412 ); RNG (Cert.
#435 and SP 800-90, vendor
affirmed); RSA (Certs. #353 and
#357 ); SHS (Cert. #753 ); Triple-
DES (Cert. #656 )

Other algorithms: AES (GCM and


GMAC; non-compliant); DES; Diffie-
Hellman (key agreement; key
establishment methodology
provides between 112 bits and 150
bits of encryption strength; non-
compliant less than 112 bits of
encryption strength); EC Diffie-
Hellman (key agreement; key
establishment methodology
provides between 128 bits and 256
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

bits of encryption strength); MD2;


MD4; MD5; RC2; RC4; RNG (SP 800-
90 Dual-EC; non-compliant); RSA
(key wrapping; key establishment
methodology provides between 112
bits and 150 bits of encryption
strength; non-compliant provides
less than 112 bits of encryption
strength)

Enhanced 6.0.6001.22202 and 1002 FIPS approved algorithms: AES (Cert.


Cryptographic 6.0.6002.18005 #739 ); HMAC (Cert. #407 ); RNG
Provider (SP 800-90, vendor affirmed); RSA
(RSAENH) (Certs. #353 and #354 ); SHS
(Cert. #753 ); Triple-DES (Cert.
#656 )

Other algorithms: DES; MD2; MD4;


MD5; RC2; RC4; RSA (key wrapping;
key establishment methodology
provides between 112 bits and 150
bits of encryption strength; non-
compliant less than 112 bits of
encryption strength)

Enhanced DSS 6.0.6001.18000 and 1003 FIPS approved algorithms: DSA


and Diffie- 6.0.6002.18005 (Cert. #281 ); RNG (Cert. #435 );
Hellman SHS (Cert. #753 ); Triple-DES (Cert.
Cryptographic #656 ); Triple-DES MAC (Triple-DES
Provider Cert. #656 , vendor affirmed)
(DSSENH)
Other algorithms: DES; DES MAC;
DES40; DES40 MAC; Diffie-Hellman
(key agreement; key establishment
methodology provides between 112
bits and 150 bits of encryption
strength; non-compliant less than
112 bits of encryption strength);
MD5; RC2; RC2 MAC; RC4

Windows Vista

Validated Editions: Ultimate Edition


Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

Enhanced 6.0.6000.16386 893 FIPS approved algorithms: AES (Cert.


Cryptographic #553 ); HMAC (Cert. #297 ); RNG
Provider (RSAENH) (Cert. #321 ); RSA (Certs. #255 and
#258 ); SHS (Cert. #618 ); Triple-DES
(Cert. #549 )

Other algorithms: DES; MD2; MD4;


MD5; RC2; RC4; RSA (key wrapping; key
establishment methodology provides
between 112 bits and 150 bits of
encryption strength; non-compliant
less than 112 bits of encryption
strength)

Enhanced DSS and 6.0.6000.16386 894 FIPS approved algorithms: DSA (Cert.
Diffie-Hellman #226 ); RNG (Cert. #321 ); SHS (Cert.
Cryptographic #618 ); Triple-DES (Cert. #549 );
Provider (DSSENH) Triple-DES MAC (Triple-DES Cert.
#549 , vendor affirmed)

Other algorithms: DES; DES MAC;


DES40; DES40 MAC; Diffie-Hellman (key
agreement; key establishment
methodology provides between 112
bits and 150 bits of encryption
strength; non-compliant less than 112
bits of encryption strength); MD5; RC2;
RC2 MAC; RC4

BitLocker™ Drive 6.0.6000.16386 947 FIPS approved algorithms: AES (Cert.


Encryption #715 ); HMAC (Cert. #386 ); SHS
(Cert. #737 )

Other algorithms: Elephant Diffuser

Kernel Mode 6.0.6000.16386, 891 FIPS approved algorithms: AES (Cert.


Security Support 6.0.6000.16870 and #553); ECDSA (Cert. #60); HMAC (Cert.
Provider Interface 6.0.6000.21067 #298); RNG (Cert. #321); RSA (Certs.
(ksecdd.sys) #257 and #258); SHS (Cert. #618);
Triple-DES (Cert. #549)

Other algorithms: DES; Diffie-Hellman


(key agreement; key establishment
methodology provides between 112
bits and 150 bits of encryption
strength; non-compliant less than 112
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

bits of encryption strength); EC Diffie-


Hellman (key agreement; key
establishment methodology provides
128 bits to 256 bits of encryption
strength); MD2; MD4; MD5; RC2; RC4;
HMAC MD5

Windows XP SP3

Cryptographic Version (link to FIPS Algorithms


Module Security Policy) Certificate
#

Kernel Mode 5.1.2600.5512 997 FIPS approved algorithms: HMAC


Cryptographic (Cert. #429 ); RNG (Cert. #449 );
Module (FIPS.SYS) SHS (Cert. #785 ); Triple-DES (Cert.
#677 ); Triple-DES MAC (Triple-DES
Cert. #677 , vendor affirmed)

Other algorithms: DES; MD5; HMAC


MD5

Enhanced DSS and 5.1.2600.5507 990 FIPS approved algorithms: DSA (Cert.
Diffie-Hellman #292 ); RNG (Cert. #448 ); SHS
Cryptographic (Cert. #784 ); Triple-DES (Cert.
Provider (DSSENH) #676 ); Triple-DES MAC (Triple-DES
Cert. #676 , vendor affirmed)

Other algorithms: DES; DES40; Diffie-


Hellman (key agreement; key
establishment methodology provides
between 112 bits and 150 bits of
encryption strength; non-compliant
less than 112 bits); MD5; RC2; RC4

Enhanced 5.1.2600.5507 989 FIPS approved algorithms: AES (Cert.


Cryptographic #781 ); HMAC (Cert. #428 ); RNG
Provider (RSAENH) (Cert. #447 ); RSA (Cert. #371 );
SHS (Cert. #783 ); Triple-DES (Cert.
#675 ); Triple-DES MAC (Triple-DES
Cert. #675 , vendor affirmed)

Other algorithms: DES; MD2; MD4;


MD5; HMAC MD5; RC2; RC4; RSA (key
wrapping; key establishment
methodology provides between 112
bits and 150 bits of encryption
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

strength; non-compliant less than 112


bits)

Windows XP SP2

Cryptographic Version (link to FIPS Algorithms


Module Security Policy) Certificate
#

DSS/Diffie-Hellman 5.1.2600.2133 240 FIPS approved algorithms: Triple-DES


Enhanced (Cert. #16 ); DSA/SHA-1 (Cert.
Cryptographic #29 )
Provider
Other algorithms: DES (Cert. [#66]
[des-66]); RC2; RC4; MD5; DES40;
Diffie-Hellman (key agreement)

Microsoft Enhanced 5.1.2600.2161 238 FIPS approved algorithms: Triple-DES


Cryptographic (Cert. #81 ); AES (Cert. #33 ); SHA-
Provider 1 (Cert. #83 ); RSA (PKCS#1, vendor
affirmed); HMAC-SHA-1 (Cert. #83 ,
vendor affirmed)

Other algorithms: DES (Cert. #156 );


RC2; RC4; MD5

Windows XP SP1

Cryptographic Version (link to FIPS Algorithms


Module Security Policy) Certificate
#

Microsoft Enhanced 5.1.2600.1029 238 FIPS approved algorithms: Triple-DES


Cryptographic (Cert. #81 ); AES (Cert. #33 ); SHA-1
Provider (Cert. #83 ); RSA (PKCS#1, vendor
affirmed); HMAC-SHA-1 (Cert. #83 ,
vendor affirmed)

Other algorithms: DES (Cert. #156 );


RC2; RC4; MD5

Windows XP
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

Kernel Mode 5.1.2600.0 241 FIPS approved algorithms: Triple-DES


Cryptographic (Cert. #16 ); DSA/SHA-1 (Cert. #35 );
Module HMAC-SHA-1 (Cert. #35 , vendor
affirmed)

Other algorithms: DES (Cert. [#89][des-


89])

Windows 2000 SP3

Cryptographic Module Version (link to FIPS Algorithms


Security Policy) Certificate
#

Kernel Mode Cryptographic 5.0.2195.1569 106 FIPS approved algorithms:


Module (FIPS.SYS) Triple-DES (Cert. #16 );
SHA-1 (Certs. #35 )

Other algorithms: DES


(Certs. [#89][des-89])

Base DSS Cryptographic (Base DSS: 103 FIPS approved algorithms:


Provider, Base Cryptographic 5.0.2195.3665 Triple-DES (Cert. #16 );
Provider, DSS/Diffie-Hellman [SP3]) DSA/SHA-1 (Certs. #28
Enhanced Cryptographic and #29 ); RSA (vendor
Provider, and Enhanced (Base: affirmed)
Cryptographic Provider 5.0.2195.3839
[SP3]) Other algorithms: DES
(Certs. [#65][des-65], [66]
(DSS/DH Enh: [des-66], [67][des-67] and
5.0.2195.3665 [68][des-68]); Diffie-
[SP3]) Hellman (key agreement);
RC2; RC4; MD2; MD4; MD5
(Enh:
5.0.2195.3839
[SP3]

Windows 2000 SP2

Cryptographic Module Version (link to FIPS Algorithms


Security Policy) Certificate
#

Kernel Mode Cryptographic 5.0.2195.1569 106 FIPS approved algorithms:


Module (FIPS.SYS) Triple-DES (Cert. #16 );
SHA-1 (Certs. #35 )
Cryptographic Module Version (link to FIPS Algorithms
Security Policy) Certificate
#

Other algorithms: DES


(Certs. [#89][des-89])

Base DSS Cryptographic (Base DSS: 103 FIPS approved algorithms:


Provider, Base Cryptographic Triple-DES (Cert. #16 );
Provider, DSS/Diffie-Hellman 5.0.2195.2228 DSA/SHA-1 (Certs. #28
Enhanced Cryptographic [SP2]) and #29 ); RSA (vendor
Provider, and Enhanced affirmed)
(Base:
Cryptographic Provider
Other algorithms: DES
5.0.2195.2228
(Certs. [#65][des-65], [66]
[SP2])
[des-66], [67][des-67] and
(DSS/DH Enh: [68][des-68]); Diffie-
Hellman (key agreement);
5.0.2195.2228 RC2; RC4; MD2; MD4; MD5
[SP2])

(Enh:

5.0.2195.2228
[SP2])

Windows 2000 SP1

Cryptographic Module Version (link to FIPS Algorithms


Security Policy) Certificate
#

Base DSS Cryptographic (Base DSS: 103 FIPS approved algorithms:


Provider, Base Cryptographic 5.0.2150.1391 Triple-DES (Cert. #16 );
Provider, DSS/Diffie-Hellman [SP1]) DSA/SHA-1 (Certs. #28
Enhanced Cryptographic and #29 ); RSA (vendor
Provider, and Enhanced (Base: affirmed)
Cryptographic Provider 5.0.2150.1391
[SP1]) Other algorithms: DES
(Certs. [#65][des-65], [66]
(DSS/DH Enh: [des-66], [67][des-67] and
5.0.2150.1391 [68][des-68]); Diffie-Hellman
[SP1]) (key agreement); RC2; RC4;
MD2; MD4; MD5
(Enh:
5.0.2150.1391
[SP1])

Windows 2000
Cryptographic Module Version (link FIPS Algorithms
to Security Certificate
Policy) #

Base DSS Cryptographic Provider, 5.0.2150.1 76 FIPS approved algorithms:


Base Cryptographic Provider, Triple-DES (vendor affirmed);
DSS/Diffie-Hellman Enhanced DSA/SHA-1 (Certs. #28
Cryptographic Provider, and and 29 ); RSA (vendor
Enhanced Cryptographic Provider affirmed)

Other algorithms: DES (Certs.


[#65][des-65], [66][des-66],
[67][des-67] and [68][des-
68]); RC2; RC4; MD2; MD4;
MD5; Diffie-Hellman (key
agreement)

Windows 95 and Windows 98

Cryptographic Module Version (link FIPS Algorithms


to Security Certificate
Policy) #

Base DSS Cryptographic Provider, 5.0.1877.6 and 75 FIPS approved algorithms:


Base Cryptographic Provider, 5.0.1877.7 Triple-DES (vendor affirmed);
DSS/Diffie-Hellman Enhanced SHA-1 (Certs. #20 and
Cryptographic Provider, and 21 ); DSA/SHA-1 (Certs.
Enhanced Cryptographic Provider #25 and 26 ); RSA
(vendor- affirmed)

Other algorithms: DES (Certs.


[#61][des-61], [62][des-62],
[63][des-63] and [64][des-
64]); RC2; RC4; MD2; MD4;
MD5; Diffie-Hellman (key
agreement)

Windows NT 4.0

Cryptographic Version (link FIPS Algorithms


Module to Security Certificate
Policy) #

Base 5.0.1877.6 and 68 FIPS approved algorithms: SHA-1 (Certs.


Cryptographic 5.0.1877.7 #20 and 21 ); DSA/SHA- 1 (Certs. #25
Provider and 26 ); RSA (vendor affirmed)

Other algorithms: DES (Certs. [#61][des-61],


[62][des-62], [63][des-63] and [64][des-64]);
Triple-DES (allowed for US and Canadian
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Government use); RC2; RC4; MD2; MD4;


MD5; Diffie-Hellman (key agreement)

Modules used by Windows Server


For more details, expand each operating system section.

Windows Server 2019, version 1809

Validated Editions: Standard, Datacenter

Cryptographic Module Version (link to FIPS Algorithms


Security Policy) Certificate #

Cryptographic Primitives 10.0.17763 #3197 See Security Policy and


Library Certificate page for algorithm
information

Kernel Mode 10.0.17763 #3196 See Security Policy and


Cryptographic Primitives Certificate page for algorithm
Library information

Code Integrity 10.0.17763 #3644 See Security Policy and


Certificate page for algorithm
information

Windows OS Loader 10.0.17763 #3615 See Security Policy and


Certificate page for algorithm
information

Secure Kernel Code 10.0.17763 #3651 See Security Policy and


Integrity Certificate page for algorithm
information

BitLocker Dump Filter 10.0.17763 #3092 See Security Policy and


Certificate page for algorithm
information

Boot Manager 10.0.17763 #3089 See Security Policy and


Certificate page for algorithm
information

Virtual TPM 10.0.17763 #3690 See Security Policy and


Certificate page for algorithm
information
Windows Server, version 1803

Validated Editions: Standard, Datacenter

Cryptographic Module Version (link to FIPS Algorithms


Security Policy) Certificate #

Cryptographic Primitives 10.0.17134 #3197 See Security Policy and


Library Certificate page for algorithm
information

Kernel Mode 10.0.17134 #3196 See Security Policy and


Cryptographic Primitives Certificate page for algorithm
Library information

Code Integrity 10.0.17134 #3195 See Security Policy and


Certificate page for algorithm
information

Windows OS Loader 10.0.17134 #3480 See Security Policy and


Certificate page for algorithm
information

Secure Kernel Code 10.0.17134 #3096 See Security Policy and


Integrity Certificate page for algorithm
information

BitLocker Dump Filter 10.0.17134 #3092 See Security Policy and


Certificate page for algorithm
information

Boot Manager 10.0.17134 #3089 See Security Policy and


Certificate page for algorithm
information

Windows Server, version 1709

Validated Editions: Standard, Datacenter

Cryptographic Module Version (link to FIPS Algorithms


Security Policy) Certificate #

Cryptographic Primitives 10.0.16299 #3197 See Security Policy and


Library Certificate page for algorithm
information

Kernel Mode 10.0.16299 #3196 See Security Policy and


Cryptographic Primitives Certificate page for algorithm
Library information
Cryptographic Module Version (link to FIPS Algorithms
Security Policy) Certificate #

Code Integrity 10.0.16299 #3195 See Security Policy and


Certificate page for algorithm
information

Windows OS Loader 10.0.16299 #3194 See Security Policy and


Certificate page for algorithm
information

Secure Kernel Code 10.0.16299 #3096 See Security Policy and


Integrity Certificate page for algorithm
information

BitLocker Dump Filter 10.0.16299 #3092 See Security Policy and


Certificate page for algorithm
information

Windows Resume 10.0.16299 #3091 See Security Policy and


Certificate page for algorithm
information

Boot Manager 10.0.16299 #3089 See Security Policy and


Certificate page for algorithm
information

Windows Server 2016

Validated Editions: Standard, Datacenter, Storage Server

Cryptographic Version (link FIPS Algorithms


Module to Security Certificate
Policy) #

Cryptographic 10.0.14393 2937 FIPS approved algorithms: AES (Cert.


Primitives Library #4064 ); DRBG (Cert. #1217 ); DSA
(bcryptprimitives.dll (Cert. #1098 ); ECDSA (Cert. #911 );
and ncryptsslp.dll) HMAC (Cert. #2651 ); KAS (Cert. #92 );
KBKDF (Cert. #101 ); KTS (AES Cert.
#4062 ; key wrapping; key
establishment methodology provides
between 128 bits and 256 bits of
encryption strength); PBKDF (vendor
affirmed); RSA (Certs. #2192 , #2193,
and #2195 ); SHS (Cert. #3347 );
Triple-DES (Cert. #2227 )
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Other algorithms: HMAC-MD5; MD5;


DES; Legacy CAPI KDF; MD2; MD4; RC2;
RC4; RSA (encrypt/decrypt)

Kernel Mode 10.0.14393 2936 FIPS approved algorithms: AES (Cert.


Cryptographic #4064 ); DRBG (Cert. #1217 ); DSA
Primitives Library (Cert. #1098 ); ECDSA (Cert. #911 );
(cng.sys) HMAC (Cert. #2651 ); KAS (Cert. #92 );
KBKDF (Cert. #101 ); KTS (AES Cert.
#4062 ; key wrapping; key
establishment methodology provides
between 128 bits and 256 bits of
encryption strength); PBKDF (vendor
affirmed); RSA (Certs. #2192 , #2193,
and #2195 ); SHS (Cert. #3347 );
Triple-DES (Cert. #2227 )

Other algorithms: HMAC-MD5; MD5;


NDRNG; DES; Legacy CAPI KDF; MD2;
MD4; RC2; RC4; RSA (encrypt/decrypt)

Boot Manager 10.0.14393 2931 FIPS approved algorithms: AES (Certs.


#4061 and #4064 ); HMAC (Cert.
#2651 ); PBKDF (vendor affirmed); RSA
(Cert. #2193 ); SHS (Cert. #3347 )

Other algorithms: MD5; PBKDF (non-


compliant); VMK KDF

BitLocker® Windows 10.0.14393 2932 FIPS approved algorithms: AES (Certs.


OS Loader (winload) #4061 and #4064 ); RSA (Cert.
#2193 ); SHS (Cert. #3347 )

Other algorithms: NDRNG; MD5

BitLocker® Windows 10.0.14393 2933 FIPS approved algorithms: AES (Certs.


Resume (winresume) #4061 and #4064 ); RSA (Cert.
#2193 ); SHS (Cert. #3347 )

Other algorithms: MD5

BitLocker® Dump 10.0.14393 2934 FIPS approved algorithms: AES (Certs.


Filter (dumpfve.sys) #4061 and #4064 )

Code Integrity (ci.dll) 10.0.14393 2935 FIPS approved algorithms: RSA (Cert.
#2193 ); SHS (Cert. #3347 )
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Other algorithms: AES (non-compliant);


MD5

Secure Kernel Code 10.0.14393 2938 FIPS approved algorithms: RSA (Certs.
Integrity (skci.dll) #2193 ); SHS (Certs. #3347 )

Other algorithms: MD5

Windows Server 2012 R2

Validated Editions: Server, Storage Server,

StorSimple 8000 Series, Azure StorSimple Virtual Array Windows Server 2012 R2

Cryptographic Version (link to FIPS Algorithms


Module Security Policy) Certificate
#

Cryptographic 6.3.9600 2357 FIPS approved algorithms: AES (Cert.


Primitives Library 6.3.9600.17031 #2832 ); DRBG (Certs. #489 );
(bcryptprimitives.dll DSA (Cert. #855 ); ECDSA (Cert.
and ncryptsslp.dll) #505 ); HMAC (Cert. #1773 ); KAS
(Cert. #47 ); KBKDF (Cert. #30 );
PBKDF (vendor affirmed); RSA (Certs.
#1487 , #1493, and #1519 ); SHS
(Cert. #2373 ); Triple-DES (Cert.
#1692 )

Other algorithms: AES (Cert.


#2832 , key wrapping; key
establishment methodology
provides between 128 bits and 256
bits of encryption strength); AES-
GCM encryption (non-compliant);
DES; HMAC MD5; Legacy CAPI KDF;
MD2; MD4; MD5; NDRNG; RC2; RC4;
RSA (encrypt/decrypt)

Kernel Mode 6.3.9600 2356 FIPS approved algorithms: AES (Cert.


Cryptographic 6.3.9600.17042 #2832 ); DRBG (Certs. #489 );
Primitives Library ECDSA (Cert. #505 ); HMAC (Cert.
(cng.sys) #1773 ); KAS (Cert. #47 ); KBKDF
(Cert. #30 ); PBKDF (vendor
affirmed); RSA (Certs. #1487 ,
#1493, and #1519 ); SHS (Cert. #
2373 ); Triple-DES (Cert. #1692 )
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

Other algorithms: AES (Cert.


#2832 , key wrapping; key
establishment methodology
provides between 128 bits and 256
bits of encryption strength); AES-
GCM encryption (non-compliant);
DES; HMAC MD5; Legacy CAPI KDF;
MD2; MD4; MD5; NDRNG; RC2; RC4;
RSA (encrypt/decrypt)

Boot Manager 6.3.9600 2351 FIPS approved algorithms: AES (Cert.


6.3.9600.17031 #2832 ); HMAC (Cert. #1773 );
PBKDF (vendor affirmed); RSA (Cert.
#1494 ); SHS (Certs. # 2373 and
#2396 )

Other algorithms: MD5; KDF (non-


compliant); PBKDF (non-compliant)

BitLocker® Windows 6.3.9600 2352 FIPS approved algorithms: AES (Cert.


OS Loader (winload) 6.3.9600.17031 #2832 ); RSA (Cert. #1494 ); SHS
(Cert. #2396 )

Other algorithms: MD5; NDRNG

BitLocker® Windows 6.3.9600 2353 FIPS approved algorithms: AES (Cert.


Resume (winresume) 6.3.9600.17031 #2832 ); RSA (Cert. #1494 ); SHS
[16]
(Certs. # 2373 and #2396 )

Other algorithms: MD5

BitLocker® Dump 6.3.9600 2354 FIPS approved algorithms: AES (Cert.


[17]
Filter (dumpfve.sys) 6.3.9600.17031 #2832 )

Other algorithms: N/A

Code Integrity (ci.dll) 6.3.9600 2355 FIPS approved algorithms: RSA (Cert.
6.3.9600.17031 #1494 ); SHS (Cert. # 2373 )

Other algorithms: MD5

[16] Doesn't apply to Azure StorSimple Virtual Array Windows Server 2012 R2

[17] Doesn't apply to Azure StorSimple Virtual Array Windows Server 2012 R2
Windows Server 2012

Validated Editions: Server, Storage Server


Cryptographic Module Version FIPS Algorithms
(link to Certificate
Security #
Policy)

Cryptographic Primitives 6.2.9200 [1892] FIPS approved algorithms: AES (Certs.


Library #2197 and #2216 ); DRBG (Certs.
(BCRYPTPRIMITIVES.DLL) #258 ); DSA (Cert. #687 ); ECDSA
(Cert. #341 ); HMAC (Cert. #1345 );
KAS (Cert. #36 ); KBKDF (Cert. #3 );
PBKDF (vendor affirmed); RSA (Certs.
#1133 and #1134 ); SHS (Cert.
#1903 ); Triple-DES (Cert. #1387 )

Other algorithms: AES (Cert. #2197 ,


key wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
DES; Legacy CAPI KDF; MD2; MD4; MD5;
HMAC MD5; RC2; RC4; RSA
(encrypt/decrypt)#687); ECDSA (Cert.);
HMAC (Cert. #); KAS (Cert.); KBKDF
(Cert.); PBKDF (vendor affirmed); RSA
(Certs. and); SHS (Cert.); Triple-DES (Cert.)

Other algorithms: AES (Certificate, key


wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
DES; Legacy CAPI KDF; MD2; MD4; MD5;
HMAC MD5; RC2; RC4; RSA
(encrypt/decrypt)

Kernel Mode 6.2.9200 1891 FIPS approved algorithms: AES (Certs.


Cryptographic Primitives #2197 and #2216 ); DRBG (Certs.
Library (cng.sys) #258 and #259 ); ECDSA (Cert.
#341 ); HMAC (Cert. #1345 ); KAS
(Cert. #36 ); KBKDF (Cert. #3 ); PBKDF
(vendor affirmed); RNG (Cert. #1110 );
RSA (Certs. #1133 and #1134 ); SHS
(Cert. #1903 ); Triple-DES (Cert.
#1387 )

Other algorithms: AES (Cert. #2197 ,


key wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
DES; Legacy CAPI KDF; MD2; MD4; MD5;
HMAC MD5; RC2; RC4; RSA
Cryptographic Module Version FIPS Algorithms
(link to Certificate
Security #
Policy)

(encrypt/decrypt)#1110); RSA (Certs.


and); SHS (Cert.); Triple-DES (Cert.)

Other algorithms: AES (Certificate, key


wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
DES; Legacy CAPI KDF; MD2; MD4; MD5;
HMAC MD5; RC2; RC4; RSA
(encrypt/decrypt)

Boot Manager 6.2.9200 1895 FIPS approved algorithms: AES (Certs.


#2196 and #2198 ); HMAC (Cert.
#1347 ); RSA (Cert. #1132 ); SHS (Cert.
#1903 )

Other algorithms: MD5

BitLocker® Windows OS 6.2.9200 1896 FIPS approved algorithms: AES (Certs.


Loader (WINLOAD) #2196 and #2198 ); RSA (Cert.
#1132 ); SHS (Cert. #1903 )

Other algorithms: AES (Cert. #2197 ;


non-compliant); MD5; Non-Approved
RNG

BitLocker® Windows 6.2.9200 1898 FIPS approved algorithms: AES (Certs.


Resume (WINRESUME) #2196 and #2198 ); RSA (Cert.
#1132 ); SHS (Cert. #1903 )

Other algorithms: MD5

BitLocker® Dump Filter 6.2.9200 1899 FIPS approved algorithms: AES (Certs.
(DUMPFVE.SYS) #2196 and #2198 )

Other algorithms: N/A

Code Integrity (CI.DLL) 6.2.9200 1897 FIPS approved algorithms: RSA (Cert.
#1132 ); SHS (Cert. #1903 )

Other algorithms: MD5

Enhanced DSS and Diffie- 6.2.9200 1893 FIPS approved algorithms: DSA (Cert.
Hellman Cryptographic #686 ); SHS (Cert. #1902 ); Triple-DES
Provider (DSSENH.DLL) (Cert. #1386 ); Triple-DES MAC (Triple-
DES Cert. #1386 , vendor affirmed)
Cryptographic Module Version FIPS Algorithms
(link to Certificate
Security #
Policy)

Other algorithms: DES; DES MAC; DES40;


DES40 MAC; Diffie-Hellman; MD5; RC2;
RC2 MAC; RC4; Triple-DES (Cert.
#1386 , key wrapping; key
establishment methodology provides
112 bits of encryption strength; non-
compliant less than 112 bits of
encryption strength)

Enhanced Cryptographic 6.2.9200 1894 FIPS approved algorithms: AES (Cert.


Provider (RSAENH.DLL) #2196 ); HMAC (Cert. #1346 ); RSA
(Cert. #1132 ); SHS (Cert. #1902 );
Triple-DES (Cert. #1386 )

Other algorithms: AES (Cert. #2196 ,


key wrapping; key establishment
methodology provides between 128 bits
and 256 bits of encryption strength);
DES; MD2; MD4; MD5; RC2; RC4; RSA
(key wrapping; key establishment
methodology provides between 112 bits
and 150 bits of encryption strength; non-
compliant less than 112 bits of
encryption strength); Triple-DES (Cert.
#1386 , key wrapping; key
establishment methodology provides
112 bits of encryption strength; non-
compliant less than 112 bits of
encryption strength)

Windows Server 2008 R2

Cryptographic Version (link to FIPS Algorithms


Module Security Policy) Certificate
#

Boot Manager 6.1.7600.16385 or 1321 FIPS approved algorithms: AES


(bootmgr) 6.1.7601.17514 (Certs. #1168 and #1177 );
HMAC (Cert. #675 ); RSA (Cert.
#568 ); SHS (Cert. #1081 )

Other algorithms: MD5

Winload OS Loader 6.1.7600.16385, 1333 FIPS approved algorithms: AES


(winload.exe) 6.1.7600.16757, (Certs. #1168 and #1177 );
6.1.7600.20897,
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

6.1.7600.20916, RSA (Cert. #568 ); SHS (Cert.


6.1.7601.17514, #1081 )
6.1.7601.17556,
6.1.7601.21655 and Other algorithms: MD5
6.1.7601.21675

Code Integrity (ci.dll) 6.1.7600.16385, 1334 FIPS approved algorithms: RSA


6.1.7600.17122, (Cert. #568 ); SHS (Cert.
6.1.7600.21320, #1081 )
6.1.7601.17514,
6.1.7601.17950 and Other algorithms: MD5
6.1.7601.22108

Kernel Mode 6.1.7600.16385, 1335 FIPS approved algorithms: AES


Cryptographic 6.1.7600.16915, (Certs. #1168 and #1177 );
Primitives Library 6.1.7600.21092, AES GCM (Cert. #1168 ,
(cng.sys) 6.1.7601.17514, vendor-affirmed); AES GMAC
6.1.7601.17919, (Cert. #1168 , vendor-
6.1.7601.17725, affirmed); DRBG (Certs. #23
6.1.7601.21861 and and #27 ); ECDSA (Cert.
6.1.7601.22076 #142 ); HMAC (Cert. #686 );
KAS (SP 800-56A, vendor
affirmed, key agreement; key
establishment methodology
provides between 80 bits and
256 bits of encryption strength);
RNG (Cert. #649 ); RSA (Certs.
#559 and #567 ); SHS (Cert.
#1081 ); Triple-DES (Cert.
#846 )

Other algorithms: AES (Cert.


#1168 , key wrapping; key
establishment methodology
provides between 128 bits and
256 bits of encryption strength);
DES; Diffie-Hellman (key
agreement; key establishment
methodology provides between
112 bits and 150 bits of
encryption strength; non-
compliant less than 112 bits of
encryption strength); MD2;
MD4; MD5; HMAC MD5; RC2;
RC4
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

Cryptographic 66.1.7600.16385 or 1336 FIPS approved algorithms: AES


Primitives Library 6.1.7601.17514 (Certs. #1168 and #1177 );
(bcryptprimitives.dll) AES GCM (Cert. #1168 ,
vendor-affirmed); AES GMAC
(Cert. #1168 , vendor-
affirmed); DRBG (Certs. #23
and #27 ); DSA (Cert. #391 );
ECDSA (Cert. #142 ); HMAC
(Cert. #686 ); KAS (SP 800-56A,
vendor affirmed, key agreement;
key establishment methodology
provides between 80 bits and
256 bits of encryption strength);
RNG (Cert. #649 ); RSA (Certs.
#559 and #567 ); SHS (Cert.
#1081 ); Triple-DES (Cert.
#846 )

Other algorithms: AES (Cert.


#1168 , key wrapping; key
establishment methodology
provides between 128 bits and
256 bits of encryption strength);
DES; HMAC MD5; MD2; MD4;
MD5; RC2; RC4

Enhanced 6.1.7600.16385 1337 FIPS approved algorithms: AES


Cryptographic (Cert. #1168 ); DRBG (Cert.
Provider (RSAENH) #23 ); HMAC (Cert. #687 );
SHS (Cert. #1081 ); RSA (Certs.
#559 and #568 ); Triple-DES
(Cert. #846 )

Other algorithms: DES; MD2;


MD4; MD5; RC2; RC4; RSA (key
wrapping; key establishment
methodology provides between
112 bits and 256 bits of
encryption strength; non-
compliant less than 112 bits of
encryption strength)

Enhanced DSS and 6.1.7600.16385 1338 FIPS approved algorithms: DSA


Diffie-Hellman (Cert. #390 ); RNG (Cert.
Cryptographic #649 ); SHS (Cert. #1081 );
Provider (DSSENH) Triple-DES (Cert. #846 ); Triple-
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

DES MAC (Triple-DES Cert.


#846 , vendor affirmed)

Other algorithms: DES; DES


MAC; DES40; DES40 MAC;
Diffie-Hellman; MD5; RC2; RC2
MAC; RC4

BitLocker™ Drive 6.1.7600.16385, 1339 FIPS approved algorithms: AES


Encryption 6.1.7600.16429, (Certs. #1168 and #1177 );
6.1.7600.16757, HMAC (Cert. #675 ); SHS (Cert.
6.1.7600.20536, #1081 )
6.1.7600.20873,
6.1.7600.20897, Other algorithms: Elephant
6.1.7600.20916, Diffuser
6.1.7601.17514,
6.1.7601.17556,
6.1.7601.21634,
6.1.7601.21655 or
6.1.7601.21675

Windows Server 2008

Cryptographic Version (link to FIPS Algorithms


Module Security Policy) Certificate
#

Boot Manager 6.0.6001.18000, 1004 FIPS approved algorithms: AES (Certs.


(bootmgr) 6.0.6002.18005 and #739 and #760 ); HMAC (Cert.
6.0.6002.22497 #415 ); RSA (Cert. #355 ); SHS
(Cert. #753 )

Other algorithms: N/A

Winload OS 6.0.6001.18000, 1005 FIPS approved algorithms: AES (Certs.


Loader 6.0.6001.18606, #739 and #760 ); RSA (Cert.
(winload.exe) 6.0.6001.22861, #355 ); SHS (Cert. #753 )
6.0.6002.18005,
6.0.6002.18411, Other algorithms: MD5
6.0.6002.22497 and
6.0.6002.22596

Code Integrity 6.0.6001.18000 and 1006 FIPS approved algorithms: RSA (Cert.
(ci.dll) 6.0.6002.18005 #355 ); SHS (Cert. #753 )

Other algorithms: MD5


Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

Kernel Mode 6.0.6001.18709, 1007 FIPS approved algorithms: AES (Certs.


Security Support 6.0.6001.18272, #739 and #757 ); ECDSA (Cert.
Provider 6.0.6001.18796, #83 ); HMAC (Cert. #413 ); RNG
Interface 6.0.6001.22202, (Cert. #435 and SP800-90 AES-CTR,
(ksecdd.sys) 6.0.6001.22450, vendor affirmed); RSA (Certs. #353
6.0.6001.22987, and #358 ); SHS (Cert. #753 );
6.0.6001.23069, Triple-DES (Cert. #656 )
6.0.6002.18005,
6.0.6002.18051, Other algorithms: AES (GCM and
6.0.6002.18541, GMAC; non-compliant); DES; Diffie-
6.0.6002.18643, Hellman (key agreement; key
6.0.6002.22152, establishment methodology provides
6.0.6002.22742 and between 112 bits and 150 bits of
6.0.6002.22869 encryption strength; non-compliant
less than 112 bits of encryption
strength); EC Diffie-Hellman (key
agreement; key establishment
methodology provides between 128
bits and 256 bits of encryption
strength); MD2; MD4; MD5; HMAC
MD5; RC2; RC4; RNG (SP 800-90
Dual-EC; non-compliant); RSA (key
wrapping: key establishment
methodology provides between 112
bits and 150 bits of encryption
strength; non-compliant less than
112 bits of encryption strength)#83);
HMAC (Cert.); RNG (Cert. and SP800-
90 AES-CTR, vendor affirmed); RSA
(Certs. and); SHS (Cert.); Triple-DES
(Cert.)

Other algorithms: AES (GCM and


GMAC; non-compliant); DES; Diffie-
Hellman (key agreement; key
establishment methodology provides
between 112 bits and 150 bits of
encryption strength; non-compliant
less than 112 bits of encryption
strength); EC Diffie-Hellman (key
agreement; key establishment
methodology provides between 128
bits and 256 bits of encryption
strength); MD2; MD4; MD5; HMAC
MD5; RC2; RC4; RNG (SP 800-90
Dual-EC; non-compliant); RSA (key
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

wrapping: key establishment


methodology provides between 112
bits and 150 bits of encryption
strength; non-compliant less than
112 bits of encryption strength)

Cryptographic 6.0.6001.22202, 1008 FIPS approved algorithms: AES (Certs.


Primitives 6.0.6002.18005 and #739 and #757 ); DSA (Cert.
Library 6.0.6002.22872 #284 ); ECDSA (Cert. #83 ); HMAC
(bcrypt.dll) (Cert. #413 ); RNG (Cert. #435
and SP800-90, vendor affirmed); RSA
(Certs. #353 and #358 ); SHS
(Cert. #753 ); Triple-DES (Cert.
#656 )

Other algorithms: AES (GCM and


GMAC; non-compliant); DES; Diffie-
Hellman (key agreement; key
establishment methodology provides
between 112 bits and 150 bits of
encryption strength; non-compliant
less than 112 bits of encryption
strength); EC Diffie-Hellman (key
agreement; key establishment
methodology provides between 128
bits and 256 bits of encryption
strength); MD2; MD4; MD5; RC2; RC4;
RNG (SP 800-90 Dual-EC; non-
compliant); RSA (key wrapping; key
establishment methodology provides
between 112 bits and 150 bits of
encryption strength; non-compliant
provides less than 112 bits of
encryption strength)

Enhanced DSS 6.0.6001.18000 and 1009 FIPS approved algorithms: DSA (Cert.
and Diffie- 6.0.6002.18005 #282 ); RNG (Cert. #435 ); SHS
Hellman (Cert. #753 ); Triple-DES (Cert.
Cryptographic #656 ); Triple-DES MAC (Triple-DES
Provider Cert. #656 , vendor affirmed)
(DSSENH)
Other algorithms: DES; DES MAC;
DES40; DES40 MAC; Diffie-Hellman
(key agreement; key establishment
methodology provides between 112
bits and 150 bits of encryption
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

strength; non-compliant less than


112 bits of encryption strength);
MD5; RC2; RC2 MAC; RC4

Enhanced 6.0.6001.22202 and 1010 FIPS approved algorithms: AES (Cert.


Cryptographic 6.0.6002.18005 #739 ); HMAC (Cert. #408 ); RNG
Provider (SP 800-90, vendor affirmed); RSA
(RSAENH) (Certs. #353 and #355 ); SHS
(Cert. #753 ); Triple-DES (Cert.
#656 )

Other algorithms: DES; MD2; MD4;


MD5; RC2; RC4; RSA (key wrapping;
key establishment methodology
provides between 112 bits and 150
bits of encryption strength; non-
compliant less than 112 bits of
encryption strength)

Windows Server 2003 SP2

Cryptographic Version (link to FIPS Algorithms


Module Security Policy) Certificate
#

Enhanced DSS and 5.2.3790.3959 875 FIPS approved algorithms: DSA (Cert.
Diffie-Hellman #221 ); RNG (Cert. #314 ); RSA
Cryptographic (Cert. #245 ); SHS (Cert. #611 );
Provider (DSSENH) Triple-DES (Cert. #543 )

Other algorithms: DES; DES40; Diffie-


Hellman (key agreement; key
establishment methodology provides
between 112 bits and 150 bits of
encryption strength; non-compliant
less than 112 bits of encryption
strength); MD5; RC2; RC4

Kernel Mode 5.2.3790.3959 869 FIPS approved algorithms: HMAC


Cryptographic (Cert. #287 ); RNG (Cert. #313 );
Module (FIPS.SYS) SHS (Cert. #610 ); Triple-DES (Cert.
#542 )

Other algorithms: DES; HMAC-MD5

Enhanced 5.2.3790.3959 868 FIPS approved algorithms: AES (Cert.


Cryptographic #548 ); HMAC (Cert. #289 ); RNG
Cryptographic Version (link to FIPS Algorithms
Module Security Policy) Certificate
#

Provider (RSAENH) (Cert. #316 ); RSA (Cert. #245 ); SHS


(Cert. #613 ); Triple-DES (Cert.
#544 )

Other algorithms: DES; RC2; RC4; MD2;


MD4; MD5; RSA (key wrapping; key
establishment methodology provides
between 112 bits and 256 bits of
encryption strength; non-compliant
less than 112 bits of encryption
strength)

Windows Server 2003 SP1

Cryptographic Version (link FIPS Algorithms


Module to Security Certificate
Policy) #

Kernel Mode 5.2.3790.1830 405 FIPS approved algorithms: Triple-DES


Cryptographic [SP1] (Certs. #201 [1] and #370 [1]); SHS
Module (FIPS.SYS) (Certs. #177 [1] and #371 [2])

Other algorithms: DES (Cert. #230 [1]);


HMAC-MD5; HMAC-SHA-1 (non-
compliant)

[1] x86

[2] SP1 x86, x64, IA64

Enhanced 5.2.3790.1830 382 FIPS approved algorithms: Triple-DES


Cryptographic [Service Pack (Cert. #192 [1] and #365 [2]); AES
Provider (RSAENH) 1]) (Certs. #80 [1] and #290 [2]); SHS
(Cert. #176 [1] and #364 [2]); HMAC
(Cert. #176 , vendor affirmed[1] and
#99 [2]); RSA (PKCS#1, vendor
affirmed[1] and #81 [2])

Other algorithms: DES (Cert. [#226][des-


226][1]); SHA-256[1]; SHA-384[1]; SHA-
512[1]; RC2; RC4; MD2; MD4; MD5

[1] x86

[2] SP1 x86, x64, IA64

Enhanced DSS and 5.2.3790.1830 381 FIPS approved algorithms: Triple-DES


Diffie-Hellman [Service Pack 1] (Certs. #199 [1] and #381 [2]); SHA-1
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Cryptographic (Certs. #181 [1] and #385 [2]); DSA


Provider (DSSENH) (Certs. #95 [1] and #146 [2]); RSA
(Cert. #81 )

Other algorithms: DES (Cert. [#229][des-


229][1]); Diffie-Hellman (key agreement);
RC2; RC4; MD5; DES 40

[1] x86

[2] SP1 x86, x64, IA64

Windows Server 2003

Cryptographic Version (link FIPS Algorithms


Module to Security Certificate
Policy) #

Kernel Mode 5.2.3790.0 405 FIPS approved algorithms: Triple-DES


Cryptographic (Certs. #201 [1] and #370 [1]); SHS
Module (FIPS.SYS) (Certs. #177 [1] and #371 [2])

Other algorithms: DES (Cert. #230 [1]);


HMAC-MD5; HMAC-SHA-1 (non-
compliant)

[1] x86

[2] SP1 x86, x64, IA64

Enhanced 5.2.3790.0 382 FIPS approved algorithms: Triple-DES


Cryptographic (Cert. #192 [1] and #365 [2]); AES
Provider (RSAENH) (Certs. #80 [1] and #290 [2]); SHS
(Cert. #176 [1] and #364 [2]); HMAC
(Cert. #176 , vendor affirmed[1] and
#99 [2]); RSA (PKCS#1, vendor
affirmed[1] and #81 [2])

Other algorithms: DES (Cert. [#226][des-


226][1]); SHA-256[1]; SHA-384[1]; SHA-
512[1]; RC2; RC4; MD2; MD4; MD5

[1] x86

[2] SP1 x86, x64, IA64

Enhanced DSS and 5.2.3790.0 381 FIPS approved algorithms: Triple-DES


Diffie-Hellman (Certs. #199 [1] and #381 [2]); SHA-1
Cryptographic Version (link FIPS Algorithms
Module to Security Certificate
Policy) #

Cryptographic (Certs. #181 [1] and #385 [2]); DSA


Provider (DSSENH) (Certs. #95 [1] and #146 [2]); RSA
(Cert. #81 )

Other algorithms: DES (Cert. [#229][des-


229][1]); Diffie-Hellman (key agreement);
RC2; RC4; MD5; DES 40

[1] x86

[2] SP1 x86, x64, IA64

Other Products
For more details, expand each product section.

Windows Embedded Compact 7 and Windows Embedded Compact 8

Cryptographic Version FIPS Algorithms


Module (link to Certificate
Security #
Policy)

Enhanced 7.00.2872 2957 FIPS approved algorithms: AES


Cryptographic [1] and (Certs.#4433 and#4434 ); CKG (vendor
Provider 8.00.6246 affirmed); DRBG (Certs.#1432 and#1433 );
[2] HMAC (Certs.#2946 and#2945 ); RSA
(Certs.#2414 and#2415 ); SHS
(Certs.#3651 and#3652 ); Triple-DES
(Certs.#2383 and#2384 )

Allowed algorithms: HMAC-MD5, MD5, NDRNG

Cryptographic 7.00.2872 2956 FIPS approved algorithms: AES


Primitives [1] and (Certs.#4430 and#4431 ); CKG (vendor
Library 8.00.6246 affirmed); CVL (Certs.#1139 and#1140 ); DRBG
(bcrypt.dll) [2] (Certs.#1429 and#1430 ); DSA
(Certs.#1187 and#1188 ); ECDSA
(Certs.#1072 and#1073 ); HMAC
(Certs.#2942 and#2943 ); KAS
(Certs.#114 and#115 ); RSA
(Certs.#2411 and#2412 ); SHS
(Certs.#3648 and#3649 ); Triple-DES
(Certs.#2381 and#2382 )
Cryptographic Version FIPS Algorithms
Module (link to Certificate
Security #
Policy)

Allowed algorithms: MD5, NDRNG, RSA (key


wrapping; key establishment methodology
provides between 112 bits and 150 bits of
encryption strength

Windows CE 6.0 and Windows Embedded Compact 7

Cryptographic Version FIPS Algorithms


Module (link to Certificate
Security #
Policy)

Enhanced 6.00.1937 [1] 825 FIPS approved algorithms: AES (Certs. #516
Cryptographic and [1] and #2024 [2]); HMAC (Certs. #267 [1]
Provider 7.00.1687 [2] and #1227 [2]); RNG (Certs. #292 [1] and
#1060 [2]); RSA (Cert. #230 [1] and
#1052 [2]); SHS (Certs. #589 [1] and #1774
[2]); Triple-DES (Certs. #526 [1] and #1308
[2])

Other algorithms: MD5; HMAC-MD5; RC2; RC4;


DES

Outlook Cryptographic Provider

Cryptographic Version (link FIPS Algorithms


Module to Security Certificate #
Policy)

Outlook Cryptographic SR-1A (3821) 110 FIPS approved algorithms: Triple-DES


Provider (EXCHCSP) (Cert. #18 ); SHA-1 (Certs. #32 );
RSA (vendor affirmed)

Other algorithms: DES (Certs. #91 );


DES MAC; RC2; MD2; MD5

Cryptographic algorithms
The following tables are organized by cryptographic algorithms with their modes, states,
and key sizes. For each algorithm implementation (operating system / platform), there is
a link to the Cryptographic Algorithm Validation Program (CAVP) issued certificate.
For more details, expand each algorithm section.
Advanced Encryption Standard (AES)

Modes / States / Key Sizes Algorithm Implementation and Certificate #

AES-CBC: Microsoft Surface Hub Virtual TPM


Modes: Decrypt, Encrypt Implementations #4904
Key Lengths: 128, 192, 256 (bits)
AES-CFB128: Version 10.0.15063.674
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
AES-CTR:

Counter Source: Internal


Key Lengths: 128, 192, 256 (bits)
AES-OFB:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)

AES-CBC: Windows 10 Home, Pro, Enterprise,


Modes: Decrypt, Encrypt Education, Windows 10 S Fall Creators
Key Lengths: 128, 192, 256 (bits) Update; Windows Server, Windows Server
AES-CFB128: Datacenter (version 1709); Virtual TPM
Modes: Decrypt, Encrypt Implementations #4903
Key Lengths: 128, 192, 256 (bits)
AES-CTR: Version 10.0.16299

Counter Source: Internal


Key Lengths: 128, 192, 256 (bits)
AES-OFB:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)

AES-CBC: Microsoft Surface Hub SymCrypt


Modes: Decrypt, Encrypt Cryptographic Implementations #4902
Key Lengths: 128, 192, 256 (bits)
AES-CCM: Version 10.0.15063.674
Key Lengths: 128, 192, 256 (bits)
Tag Lengths: 32, 48, 64, 80, 96, 112, 128 (bits)
IV Lengths: 56, 64, 72, 80, 88, 96, 104 (bits)
Plain Text Length: 0-32
Additional authenticated data length: 0-65536
AES-CFB128:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
AES-CFB8:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
AES-CMAC:
Generation:
AES-128:
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Block Sizes: Full, Partial


Message Length: 0-65536
Tag Length: 16-16
AES-192:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-256:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
Verification:

AES-128:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-192:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-256:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-CTR:

Counter Source: Internal


Key Lengths: 128, 192, 256 (bits)
AES-ECB:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
AES-GCM:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
Tag Lengths: 96, 104, 112, 120, 128 (bits)
Plain Text Lengths: 0, 8, 1016, 1024 (bits)
Additional authenticated data lengths: 0, 8,
1016, 1024 (bits)
96 bit IV supported
AES-XTS:
Key Size: 128:
Modes: Decrypt, Encrypt
Block Sizes: Full
Key Size: 256:
Modes: Decrypt, Encrypt
Block Sizes: Full
Modes / States / Key Sizes Algorithm Implementation and Certificate #

AES-CBC: Windows 10 Mobile (version 1709) SymCrypt


Modes: Decrypt, Encrypt Cryptographic Implementations #4901
Key Lengths: 128, 192, 256 (bits)
AES-CCM: Version 10.0.15254
Key Lengths: 128, 192, 256 (bits)
Tag Lengths: 32, 48, 64, 80, 96, 112, 128 (bits)
IV Lengths: 56, 64, 72, 80, 88, 96, 104 (bits)
Plain Text Length: 0-32
Additional authenticated data length: 0-65536
AES-CFB128:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
AES-CFB8:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
AES-CMAC:
Generation:
AES-128:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-192:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-256:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
Verification:
AES-128:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-192:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-256:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-CTR:

Counter Source: Internal


Key Lengths: 128, 192, 256 (bits)
AES-ECB:
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Modes: Decrypt, Encrypt


Key Lengths: 128, 192, 256 (bits)
AES-GCM:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
Tag Lengths: 96, 104, 112, 120, 128 (bits)
Plain Text Lengths: 0, 8, 1016, 1024 (bits)
Additional authenticated data lengths: 0, 8,
1016, 1024 (bits),96 bit IV supported
AES-XTS:
Key Size: 128:
Modes: Decrypt, Encrypt
Block Sizes: Full
Key Size: 256:
Modes: Decrypt, Encrypt
Block Sizes: Full

AES-CBC: Windows 10 Home, Pro, Enterprise,


Modes: Decrypt, Encrypt Education, Windows 10 S Fall Creators
Key Lengths: 128, 192, 256 (bits) Update; Windows Server, Windows Server
AES-CCM: Datacenter (version 1709); SymCrypt
Key Lengths: 128, 192, 256 (bits) Cryptographic Implementations #4897
Tag Lengths: 32, 48, 64, 80, 96, 112, 128 (bits)
IV Lengths: 56, 64, 72, 80, 88, 96, 104 (bits) Version 10.0.16299
Plain Text Length: 0-32
Additional authenticated data length: 0-65536
AES-CFB128:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
AES-CFB8:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
AES-CMAC:
Generation:
AES-128:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-192:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-256:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
Verification:
Modes / States / Key Sizes Algorithm Implementation and Certificate #

AES-128:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-192:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-256:
Block Sizes: Full, Partial
Message Length: 0-65536
Tag Length: 16-16
AES-CTR:

Counter Source: Internal


Key Lengths: 128, 192, 256 (bits)
AES-ECB:
Modes: Decrypt, Encrypt
Key Lengths: 128, 192, 256 (bits)
AES-GCM:
Modes: Decrypt, Encrypt
IV Generation: External
Key Lengths: 128, 192, 256 (bits)
Tag Lengths: 96, 104, 112, 120, 128 (bits)
Plain Text Lengths: 0, 8, 1016, 1024 (bits)
Additional authenticated data lengths: 0, 8,
1016, 1024 (bits)
96 bit IV supported
AES-XTS:
Key Size: 128:
Modes: Decrypt, Encrypt
Block Sizes: Full
Key Size: 256:
Modes: Decrypt, Encrypt
Block Sizes: Full

AES-KW: Microsoft Surface Hub Cryptography Next


Modes: Decrypt, Encrypt Generation (CNG) Implementations #4900
CIPHK transformation direction: Forward
Key Lengths: 128, 192, 256 (bits) Version 10.0.15063.674
Plain Text Lengths: 128, 192, 256, 320, 2048
(bits)
AES validation number 4902

AES-KW: Windows 10 Mobile (version 1709)


Modes: Decrypt, Encrypt Cryptography Next Generation (CNG)
CIPHK transformation direction: Forward Implementations #4899
Key Lengths: 128, 192, 256 (bits)
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Plain Text Lengths: 128, 192, 256, 320, 2048 Version 10.0.15254
(bits)
AES validation number 4901

AES-KW: Windows 10 Home, Pro, Enterprise,


Modes: Decrypt, Encrypt Education, Windows 10 S Fall Creators
CIPHK transformation direction: Forward Update; Windows Server, Windows Server
Key Lengths: 128, 192, 256 (bits) Datacenter (version 1709); Cryptography
Plain Text Lengths: 128, 192, 256, 320, 2048 Next Generation (CNG) Implementations
(bits) #4898
AES validation number 4897
Version 10.0.16299

AES-CCM: Microsoft Surface Hub BitLocker(R)


Key Lengths: 256 (bits) Cryptographic Implementations #4896
Tag Lengths: 128 (bits)
IV Lengths: 96 (bits) Version 10.0.15063.674
Plain
Text Length: 0-32
Additional authenticated data length: 0-65536
AES validation number 4902

AES-CCM: Windows 10 Mobile (version 1709)


Key Lengths: 256 (bits) BitLocker(R) Cryptographic Implementations
Tag Lengths: 128 (bits) #4895
IV Lengths: 96 (bits)
Plain Text Length: 0-32 Version 10.0.15254
Additional authenticated data length: 0-65536
AES validation number 4901

AES-CCM: Windows 10 Home, Pro, Enterprise,


Key Lengths: 256 (bits) Education, Windows 10 S Fall Creators
Tag Lengths: 128 (bits) Update; Windows Server, Windows Server
IV Lengths: 96 (bits) Datacenter (version 1709); BitLocker(R)
Plain Text Length: 0-32 Cryptographic Implementations #4894
Additional authenticated data length: 0-65536
AES validation number 4897 Version 10.0.16299

CBC (e/d; 128, 192, 256); Windows 10 Creators Update (version 1703)
Pro, Enterprise, Education Virtual TPM
CFB128 (e/d; 128, 192, 256); Implementations #4627

OFB (e/d; 128, 192, 256); Version 10.0.15063

CTR (int only; 128, 192, 256)

KW (AE, AD, AES-128, AES-192, AES-256, FWD, Windows 10 Creators Update (version 1703)
128, 256, 192, 320, 2048) Home, Pro, Enterprise, Education, Windows
10 S, Windows 10 Mobile Cryptography Next
AES validation number 4624 Generation (CNG) Implementations #4626
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Version 10.0.15063

CCM (KS: 256) (Assoc. Data Len Range: 0-0, 2^16) Windows 10 Creators Update (version 1703)
(Payload Length Range: 0 - 32 (Nonce Length(s): Home, Pro, Enterprise, Education, Windows
12 (Tag Length(s): 16) 10 S, Windows 10 Mobile BitLocker(R)
Cryptographic Implementations #4625
AES validation number 4624
Version 10.0.15063

ECB (e/d; 128, 192, 256); Windows 10 Creators Update (version 1703)
Home, Pro, Enterprise, Education, Windows
CBC (e/d; 128, 192, 256); 10 S, Windows 10 Mobile SymCrypt
Cryptographic Implementations #4624
CFB8 (e/d; 128, 192, 256);
Version 10.0.15063
CFB128 (e/d; 128, 192, 256);

CTR (int only; 128, 192, 256)

CCM (KS: 128, 192, 256) (Assoc. Data Len Range:


0-0, 2^16) (Payload Length Range: 0 - 32 (Nonce
Length(s): 7 8 9 10 11 12 13 (Tag Length(s): 4 6 8
10 12 14 16)

CMAC (Generation/Verification) (KS: 128; Block


Size(s): Full/Partial; Msg Len(s) Min: 0 Max: 2^16;
Tag Len(s) Min: 16 Max: 16) (KS: 192; Block Size(s):
Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag
Len(s) Min: 16 Max: 16) (KS: 256; Block Size(s):
Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag
Len(s) Min: 16 Max: 16)

GCM (KS: AES_128(e/d) Tag Length(s): 128 120


112 104 96) (KS: AES_192(e/d) Tag Length(s): 128
120 112 104 96)

(KS: AES_256(e/d) Tag Length(s): 128 120 112 104


96)

IV Generated: (External); PT Lengths Tested: (0,


1024, 8, 1016); Additional authenticated data
lengths tested: (0, 1024, 8, 1016); 96 bit IV
supported

GMAC supported

XTS((KS: XTS_128((e/d)(f)) KS: XTS_256((e/d)(f))

ECB (e/d; 128, 192, 256); Windows Embedded Compact Enhanced


Cryptographic Provider (RSAENH) #4434
CBC (e/d; 128, 192, 256);
Modes / States / Key Sizes Version 7.00.2872
Algorithm Implementation and Certificate #

ECB (e/d; 128, 192, 256); Windows Embedded Compact Enhanced


Cryptographic Provider (RSAENH) #4433
CBC (e/d; 128, 192, 256);
Version 8.00.6246

ECB (e/d; 128, 192, 256); Windows Embedded Compact Cryptographic


Primitives Library (bcrypt.dll) #4431
CBC (e/d; 128, 192, 256);
Version 7.00.2872
CTR (int only; 128, 192, 256)

ECB (e/d; 128, 192, 256); Windows Embedded Compact Cryptographic


Primitives Library (bcrypt.dll) #4430
CBC (e/d; 128, 192, 256);
Version 8.00.6246
CTR (int only; 128, 192, 256)

CBC (e/d; 128, 192, 256); Microsoft Windows 10 Anniversary Update,


Windows Server 2016, Windows Storage
CFB128 (e/d; 128, 192, 256); Server 2016; Microsoft Surface Book, Surface
Pro 4, and Surface Pro 3 w/ Windows 10
OFB (e/d; 128, 192, 256);
Anniversary Update Virtual TPM
CTR (int only; 128, 192, 256) Implementations #4074

Version 10.0.14393

ECB (e/d; 128, 192, 256); CBC (e/d; 128, 192, 256); Microsoft Windows 10 Anniversary Update,
CFB8 (e/d; 128, 192, 256); Windows Server 2016, Windows Storage
Server 2016; Microsoft Surface Book, Surface
CFB128 (e/d; 128, 192, 256); CTR (int only; 128, Pro 4, Surface Pro 3 and Surface 3 w/
192, 256) Windows 10 Anniversary Update; Microsoft
Lumia 950 and Lumia 650 w/ Windows 10
CCM (KS: 128, 192, 256) (Assoc. Data Len Range:
Mobile Anniversary Update SymCrypt
0-0, 2^16) (Payload Length Range: 0 - 32 (Nonce
Cryptographic Implementations #4064
Length(s): 7 8 9 10 11 12 13 (Tag Length(s): 4 6 8
10 12 14 16) Version 10.0.14393

CMAC (Generation/Verification) (KS: 128; Block


Size(s): Full/Partial; Msg Len(s) Min: 0 Max: 2^16;
Tag Len(s) Min: 0 Max: 16) (KS: 192; Block Size(s):
Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag
Len(s) Min: 0 Max: 16) (KS: 256; Block Size(s):
Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag
Len(s) Min: 0 Max: 16)

GCM (KS: AES_128(e/d) Tag Length(s): 128 120


112 104 96) (KS: AES_192(e/d) Tag Length(s): 128
120 112 104 96)

(KS: AES_256(e/d) Tag Length(s): 128 120 112 104


96)
Modes / States / Key Sizes Algorithm Implementation and Certificate #

IV Generated: (Externally); PT Lengths Tested: (0,


1024, 8, 1016); Additional authenticated data
lengths tested: (0, 1024, 8, 1016); IV Lengths
Tested: (0, 0); 96 bit IV supported

GMAC supported

XTS((KS: XTS_128((e/d)(f)) KS: XTS_256((e/d)(f))

ECB (e/d; 128, 192, 256); Microsoft Windows 10 Anniversary Update,


Windows Server 2016, Windows Storage
CBC (e/d; 128, 192, 256); Server 2016; Microsoft Surface Book, Surface
Pro 4, Surface Pro 3 and Surface 3 w/
CFB8 (e/d; 128, 192, 256);
Windows 10 Anniversary Update; Microsoft
Lumia 950 and Lumia 650 w/ Windows 10
Mobile Anniversary Update RSA32 Algorithm
Implementations #4063

Version 10.0.14393

KW (AE, AD, AES-128, AES-192, AES-256, FWD, Microsoft Windows 10 Anniversary Update,
128, 192, 256, 320, 2048) Windows Server 2016, Windows Storage
Server 2016; Microsoft Surface Book, Surface
AES validation number 4064 Pro 4, Surface Pro 3 and Surface 3 w/
Windows 10 Anniversary Update; Microsoft
Lumia 950 and Lumia 650 w/ Windows 10
Mobile Anniversary Update Cryptography
Next Generation (CNG) Implementations
#4062

Version 10.0.14393

CCM (KS: 256) (Assoc. Data Len Range: 0-0, 2^16) Microsoft Windows 10 Anniversary Update,
(Payload Length Range: 0 - 32 (Nonce Length(s): Windows Server 2016, Windows Storage
12 (Tag Length(s): 16) Server 2016; Microsoft Surface Book, Surface
Pro 4, Surface Pro 3 and Surface 3 w/
AES validation number 4064 Windows 10 Anniversary Update; Microsoft
Lumia 950 and Lumia 650 w/ Windows 10
Mobile Anniversary Update BitLocker®
Cryptographic Implementations #4061

Version 10.0.14393

KW (AE, AD, AES-128, AES-192, AES-256, FWD, Microsoft Windows 10 November 2015
128, 256, 192, 320, 2048) Update; Microsoft Surface Book, Surface Pro
4, Surface Pro 3, Surface 3, Surface Pro 2, and
AES validation number 3629 Surface Pro w/ Windows 10 November 2015
Update; Windows 10 Mobile for Microsoft
Lumia 950 and Microsoft Lumia 635;
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Windows 10 for Microsoft Surface Hub 84"


and Surface Hub 55" Cryptography Next
Generation (CNG) Implementations #3652

Version 10.0.10586

CCM (KS: 256) (Assoc. Data Len Range: 0-0, 2^16) Microsoft Windows 10 November 2015
(Payload Length Range: 0 - 32 (Nonce Length(s): Update; Microsoft Surface Book, Surface Pro
12 (Tag Length(s): 16) 4, Surface Pro 3, Surface 3, Surface Pro 2, and
Surface Pro w/ Windows 10 November 2015
AES validation number 3629 Update; Windows 10 Mobile for Microsoft
Lumia 950 and Microsoft Lumia 635;
Windows 10 for Microsoft Surface Hub 84"
and Surface Hub 55" BitLocker®
Cryptographic Implementations #3653

Version 10.0.10586

ECB (e/d; 128, 192, 256); Microsoft Windows 10 November 2015


Update; Microsoft Surface Book, Surface Pro
CBC (e/d; 128, 192, 256); 4, Surface Pro 3, Surface 3, Surface Pro 2, and
Surface Pro w/ Windows 10 November 2015
CFB8 (e/d; 128, 192, 256);
Update; Windows 10 Mobile for Microsoft
Lumia 950 and Microsoft Lumia 635;
Windows 10 for Microsoft Surface Hub 84"
and Surface Hub 55" RSA32 Algorithm
Implementations #3630

Version 10.0.10586

ECB (e/d; 128, 192, 256); CBC (e/d; 128, 192, 256); Microsoft Windows 10 November 2015
CFB8 (e/d; 128, 192, 256); Update; Microsoft Surface Book, Surface Pro
4, Surface Pro 3, Surface 3, Surface Pro 2, and
CFB128 (e/d; 128, 192, 256); CTR (int only; 128, Surface Pro w/ Windows 10 November 2015
192, 256) Update; Windows 10 Mobile for Microsoft
Lumia 950 and Microsoft Lumia 635;
CCM (KS: 128, 192, 256) (Assoc. Data Len Range:
Windows 10 for Microsoft Surface Hub 84"
0-0, 2^16) (Payload Length Range: 0 - 32 (Nonce
and Surface Hub 55" SymCrypt
Length(s): 7 8 9 10 11 12 13 (Tag Length(s): 4 6 8
Cryptographic Implementations #3629
10 12 14 16)
Version 10.0.10586
CMAC (Generation/Verification) (KS: 128; Block
Size(s): Full/Partial; Msg Len(s) Min: 0 Max: 2^16;
Tag Len(s) Min: 0 Max: 16) (KS: 192; Block Size(s):
Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag
Len(s) Min: 0 Max: 16) (KS: 256; Block Size(s):
Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag
Len(s) Min: 0 Max: 16)
Modes / States / Key Sizes Algorithm Implementation and Certificate #

GCM (KS: AES_128(e/d) Tag Length(s): 128 120


112 104 96) (KS: AES_192(e/d) Tag Length(s): 128
120 112 104 96)

(KS: AES_256(e/d) Tag Length(s): 128 120 112 104


96)vIV Generated: (Externally); PT Lengths Tested:
(0, 1024, 8, 1016); Additional authenticated data
lengths tested: (0, 1024, 8, 1016); IV Lengths
Tested: (0, 0); 96 bit IV supported

GMAC supported

XTS((KS: XTS_128((e/d) (f)) KS: XTS_256((e/d) (f))

KW (AE, AD, AES-128, AES-192, AES-256, FWD, Microsoft Windows 10 Anniversary Update,
128, 256, 192, 320, 2048) Windows Server 2016, Windows Storage
Server 2016; Microsoft Surface Book, Surface
AES validation number 3497 Pro 4, Surface Pro 3 and Surface 3 w/
Windows 10 Anniversary Update; Microsoft
Lumia 950 and Lumia 650 w/ Windows 10
Mobile Anniversary Update Cryptography
Next Generation (CNG) Implementations
#3507

Version 10.0.10240

CCM (KS: 256) (Assoc. Data Len Range: 0-0, 2^16) Microsoft Windows 10, Microsoft Surface Pro
(Payload Length Range: 0 - 32 (Nonce Length(s): 3 with Windows 10, Microsoft Surface 3 with
12 (Tag Length(s): 16) Windows 10, Microsoft Surface Pro 2 with
Windows 10, Microsoft Surface Pro with
AES validation number 3497 Windows 10 BitLocker® Cryptographic
Implementations #3498

Version 10.0.10240

ECB (e/d; 128, 192, 256); CBC (e/d; 128, 192, 256); Microsoft Windows 10, Microsoft Surface Pro
CFB8 (e/d; 128, 192, 256); 3 with Windows 10, Microsoft Surface 3 with
Windows 10, Microsoft Surface Pro 2 with
CFB128 (e/d; 128, 192, 256); CTR (int only; 128, Windows 10, Microsoft Surface Pro with
192, 256) Windows 10 SymCrypt Cryptographic
Implementations #3497
CCM (KS: 128, 192, 256) (Assoc. Data Len Range:
0-0, 2^16) (Payload Length Range: 0 - 32 (Nonce Version 10.0.10240
Length(s): 7 8 9 10 11 12 13 (Tag Length(s): 4 6 8
10 12 14 16)

CMAC(Generation/Verification) (KS: 128; Block


Size(s): Full/Partial; Msg Len(s) Min: 0 Max: 2^16;
Tag Len(s) Min: 0 Max: 16) (KS: 192; Block Size(s):
Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Len(s) Min: 0 Max: 16) (KS: 256; Block Size(s):


Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag
Len(s) Min: 0 Max: 16)

GCM (KS: AES_128(e/d) Tag Length(s): 128 120


112 104 96) (KS: AES_192(e/d) Tag Length(s): 128
120 112 104 96)

(KS: AES_256(e/d) Tag Length(s): 128 120 112 104


96)

IV Generated: (Externally); PT Lengths Tested: (0,


1024, 8, 1016); Additional authenticated data
lengths tested: (0, 1024, 8, 1016); IV Lengths
Tested: (0, 0); 96 bit IV supported

GMAC supported

XTS((KS: XTS_128((e/d)(f)) KS: XTS_256((e/d)(f))

ECB (e/d; 128, 192, 256); Microsoft Windows 10, Microsoft Surface Pro
3 with Windows 10, Microsoft Surface 3 with
CBC (e/d; 128, 192, 256); Windows 10, Microsoft Surface Pro 2 with
Windows 10, Microsoft Surface Pro with
CFB8 (e/d; 128, 192, 256);
Windows 10 RSA32 Algorithm
Implementations #3476

Version 10.0.10240

ECB (e/d; 128, 192, 256); Microsoft Windows 8.1, Microsoft Windows
Server 2012 R2, Microsoft Windows Storage
CBC (e/d; 128, 192, 256); Server 2012 R2, Microsoft Windows RT 8.1,
Microsoft Surface with Windows RT 8.1,
CFB8 (e/d; 128, 192, 256);
Microsoft Surface Pro with Windows 8.1,
Microsoft Surface 2, Microsoft Surface Pro 2,
Microsoft Surface Pro 3, Microsoft Windows
Phone 8.1, Microsoft Windows Embedded
8.1 Industry RSA32 Algorithm
Implementations #2853

Version 6.3.9600

CCM (KS: 256) (Assoc. Data Len Range: 0-0, 2^16) Microsoft Windows 8.1, Microsoft Windows
(Payload Length Range: 0 - 32 (Nonce Length(s): Server 2012 R2, Microsoft Windows Storage
12 (Tag Length(s): 16) Server 2012 R2, Microsoft Windows RT 8.1,
Microsoft Surface with Windows RT 8.1,
AES validation number 2832 Microsoft Surface Pro with Windows 8.1,
Microsoft Surface 2, Microsoft Surface Pro 2,
Microsoft Surface Pro 3, Microsoft Windows
Phone 8.1, Microsoft Windows Embedded
Modes / States / Key Sizes Algorithm Implementation and Certificate #

8.1 Industry, and Microsoft StorSimple 8100


BitLocker Cryptographic Implementations
#2848

Version 6.3.9600

CCM (KS: 128, 192, 256) (Assoc. Data Len Range: Windows Storage Server 2012 R2, Microsoft
0-0, 2^16) (Payload Length Range: 0 - 0 (Nonce Windows RT 8.1, Microsoft Surface with
Length(s): 7 8 9 10 11 12 13 (Tag Length(s): 4 6 8 Windows RT 8.1, Microsoft Surface Pro with
10 12 14 16) Windows 8.1, Microsoft Surface 2, Microsoft
Surface Pro 2, Microsoft Surface Pro 3,
CMAC (Generation/Verification) (KS: 128; Block Microsoft Windows Phone 8.1, Microsoft
Size(s): Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Windows Embedded 8.1 Industry, and
Tag Len(s) Min: 0 Max: 16) (KS: 192; Block Size(s): Microsoft StorSimple 8100 SymCrypt
Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag Cryptographic Implementations #2832
Len(s) Min: 0 Max: 16) (KS: 256; Block Size(s):
Full/Partial; Msg Len(s) Min: 0 Max: 2^16; Tag Version 6.3.9600
Len(s) Min: 0 Max: 16)

GCM (KS: AES_128(e/d) Tag Length(s): 128 120


112 104 96) (KS: AES_192(e/d) Tag Length(s): 128
120 112 104 96)

(KS: AES_256(e/d) Tag Length(s): 128 120 112 104


96)

IV Generated: (Externally); PT Lengths Tested: (0,


128, 1024, 8, 1016); Additional authenticated data
lengths tested: (0, 128, 1024, 8, 1016); IV Lengths
Tested: (8, 1024); 96 bit IV supported;

OtherIVLen_Supported

GMAC supported

CCM (KS: 128, 192, 256) (Assoc. Data Len Range: Windows 8, Windows RT, Windows Server
0-0, 2^16) (Payload Length Range: 0 - 32 (Nonce 2012, Surface Windows RT, Surface Windows
Length(s): 7 8 9 10 11 12 13 (Tag Length(s): 4 6 8 8 Pro, and Windows Phone 8 Cryptography
10 12 14 16) Next Generation (CNG) Implementations
#2216
AES validation number 2197

CMAC (Generation/Verification) (KS: 128; Block


Size(s); Msg Len(s) Min: 0 Max: 2^16; Tag Len(s)
Min: 16 Max: 16) (KS: 192; Block Size(s); Msg
Len(s) Min: 0 Max: 2^16; Tag Len(s) Min: 16 Max:
16) (KS: 256; Block Size(s); Msg Len(s) Min: 0 Max:
2^16; Tag Len(s) Min: 16 Max: 16)

AES validation number 2197


Modes / States / Key Sizes Algorithm Implementation and Certificate #

GCM(KS: AES_128(e/d) Tag Length(s): 128 120 112


104 96) (KS: AES_192(e/d) Tag Length(s): 128 120
112 104 96)

(KS: AES_256(e/d) Tag Length(s): 128 120 112 104


96)

IV Generated: (Externally); PT Lengths Tested: (0,


128, 1024, 8, 1016); Additional authenticated
data lengths tested: (0, 128, 1024, 8, 1016); IV
Lengths Tested: (8, 1024); 96 bit IV supported

GMAC supported

CCM (KS: 256) (Assoc. Data Len Range: 0 - 0, Windows 8, Windows RT, Windows Server
2^16) (Payload Length Range: 0 - 32 (Nonce 2012, Surface Windows RT, Surface Windows
Length(s): 12 (Tag Length(s): 16) 8 Pro, and Windows Phone 8 BitLocker®
Cryptographic Implementations #2198
AES validation number 2196

ECB (e/d; 128, 192, 256); Windows 8, Windows RT, Windows Server
2012, Surface Windows RT, Surface Windows
CBC (e/d; 128, 192, 256); 8 Pro, and Windows Phone 8 Next
Generation Symmetric Cryptographic
CFB8 (e/d; 128, 192, 256);
Algorithms Implementations (SYMCRYPT)
CFB128 (e/d; 128, 192, 256); #2197

CTR (int only; 128, 192, 256)

ECB (e/d; 128, 192, 256); Windows 8, Windows RT, Windows Server
2012, Surface Windows RT, Surface Windows
CBC (e/d; 128, 192, 256); 8 Pro, and Windows Phone 8 Symmetric
Algorithm Implementations (RSA32) #2196
CFB8 (e/d; 128, 192, 256);

CCM (KS: 128, 192, 256) (Assoc. Data Len Range: Windows Server 2008 R2 and SP1 CNG
0 - 0, 2^16) (Payload Length Range: 0 - 32 algorithms #1187
(Nonce Length(s): 7 8 9 10 11 12 13 (Tag
Length(s): 4 6 8 10 12 14 16) Windows 7 Ultimate and SP1 CNG
algorithms #1178
AES validation number 1168

CCM (KS: 128, 256) (Assoc. Data Len Range: 0 - Windows 7 Ultimate and SP1 and Windows
8) (Payload Length Range: 4 - 32 (Nonce Server 2008 R2 and SP1 BitLocker Algorithm
Length(s): 7 8 12 13 (Tag Length(s): 4 6 8 14 16) Implementations #1177

AES validation number 1168

ECB (e/d; 128, 192, 256); Windows 7 and SP1 and Windows Server
2008 R2 and SP1 Symmetric Algorithm
CBC (e/d; 128, 192, 256); Implementation #1168
CFB8
Modes(e/d; 128, 192,
/ States / Key256);
Sizes Algorithm Implementation and Certificate #

GCM Windows 7 and SP1 and Windows Server


2008 R2 and SP1 Symmetric Algorithm
GMAC Implementation #1168 , vendor-affirmed

CCM (KS: 128, 256) (Assoc. Data Len Range: 0 - Windows Vista Ultimate SP1 and Windows
8) (Payload Length Range: 4 - 32 (Nonce Server 2008 BitLocker Algorithm
Length(s): 7 8 12 13 (Tag Length(s): 4 6 8 14 16) Implementations #760

CCM (KS: 128, 192, 256) (Assoc. Data Len Range: Windows Server 2008 CNG algorithms #757
0 - 0, 2^16) (Payload Length Range: 1 - 32
(Nonce Length(s): 7 8 9 10 11 12 13 (Tag Windows Vista Ultimate SP1 CNG algorithms
Length(s): 4 6 8 10 12 14 16**)** #756

CBC (e/d; 128, 256); Windows Vista Ultimate BitLocker Drive


Encryption #715
CCM (KS: 128, 256) (Assoc. Data Len Range: 0 - 8)
(Payload Length Range: 4 - 32 (Nonce Length(s): Windows Vista Ultimate BitLocker Drive
7 8 12 13 (Tag Length(s): 4 6 8 14 16) Encryption #424

ECB (e/d; 128, 192, 256); Windows Vista Ultimate SP1 and Windows
Server 2008 Symmetric Algorithm
CBC (e/d; 128, 192, 256); Implementation #739

CFB8 (e/d; 128, 192, 256); Windows Vista Symmetric Algorithm


Implementation #553

ECB (e/d; 128, 192, 256); Windows Embedded Compact 7


Cryptographic Primitives Library (bcrypt.dll)
CBC (e/d; 128, 192, 256); #2023

CTR (int only; 128, 192, 256)

ECB (e/d; 128, 192, 256); Windows Embedded Compact 7 Enhanced


Cryptographic Provider (RSAENH) #2024
CBC (e/d; 128, 192, 256);
Windows Server 2003 SP2 Enhanced
Cryptographic Provider (RSAENH) #818

Windows XP Professional SP3 Enhanced


Cryptographic Provider (RSAENH) #781

Windows 2003 SP2 Enhanced Cryptographic


Provider (RSAENH) #548

Windows CE 6.0 and Windows CE 6.0 R2 and


Windows Mobile Enhanced Cryptographic
Provider (RSAENH) #516

Windows CE and Windows Mobile 6, 6.1, and


6.5 Enhanced Cryptographic Provider
(RSAENH) #507
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Windows Server 2003 SP1 Enhanced


Cryptographic Provider (RSAENH) #290

Windows CE 5.0 and 5.1 Enhanced


Cryptographic Provider (RSAENH) #224

Windows Server 2003 Enhanced


Cryptographic Provider (RSAENH) #80

Windows XP, SP1, and SP2 Enhanced


Cryptographic Provider (RSAENH) #33

Component

Publication / Implementation and Certificate #


Component
Validated /
Description

ECDSA SigGen: Microsoft Windows 8.1, Microsoft Windows Server 2012 R2, Microsoft
P-256 SHA: Windows Storage Server 2012 R2, Microsoft Windows RT 8.1, Microsoft
SHA-256 Surface with Windows RT 8.1, Microsoft Surface Pro with Windows 8.1,
P-384 SHA: Microsoft Surface 2, Microsoft Surface Pro 2, Microsoft Surface Pro 3,
SHA-384 Microsoft Windows Phone 8.1, Microsoft Windows Embedded 8.1 Industry,
P-521 SHA: and Microsoft StorSimple 8100 MsBignum Cryptographic Implementations
SHA-512 #1540
Prerequisite: DRBG
#489 Version 6.3.9600

RSASP1: Microsoft Surface Hub Virtual TPM Implementations #1519

Modulus Size: 2048 Version 10.0.15063.674


(bits)
Padding
Algorithms: PKCS
1.5

RSASP1: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall Creators


Update; Windows Server, Windows Server Datacenter (version 1709); Virtual
Modulus Size: 2048 TPM Implementations #1518
(bits)
Padding Version 10.0.16299
Algorithms: PKCS
1.5

RSADP: Microsoft Surface Hub MsBignum Cryptographic Implementations #1517


Modulus Size: 2048
(bits) Version 10.0.15063.674
Publication / Implementation and Certificate #
Component
Validated /
Description

RSASP1: Microsoft Surface Hub MsBignum Cryptographic Implementations #1516

Modulus Size: 2048 Version 10.0.15063.674


(bits)
Padding
Algorithms: PKCS
1.5

ECDSA SigGen: Microsoft Surface Hub MsBignum Cryptographic Implementations #1515


P-256 SHA:
SHA-256 Version 10.0.15063.674
P-384 SHA:
SHA-384
P-521 SHA:
SHA-512
Prerequisite: DRBG
#1732

ECDSA SigGen: Microsoft Surface Hub SymCrypt Cryptographic Implementations #1514


P-256 SHA:
SHA-256 Version 10.0.15063.674
P-384 SHA:
SHA-384
P-521 SHA:
SHA-512
Prerequisite: DRBG
#1732

RSADP: Microsoft Surface Hub SymCrypt Cryptographic Implementations #1513


Modulus Size: 2048
(bits) Version 10.0.15063.674

RSASP1: Microsoft Surface Hub SymCrypt Cryptographic Implementations #1512

Modulus Size: 2048 Version 10.0.15063.674


(bits)
Padding
Algorithms: PKCS
1.5

IKEv1: Microsoft Surface Hub SymCrypt Cryptographic Implementations #1511


Methods: Digital
Signature, Pre- Version 10.0.15063.674
shared Key, Public
Key Encryption
Publication / Implementation and Certificate #
Component
Validated /
Description

Pre-shared Key
Length: 64-2048
Diffie-Hellman
shared secrets:
Length: 2048
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 256
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 384
(bits)
SHA Functions:
SHA-384
Prerequisite: SHS
#4011 , HMAC
#3269

IKEv2:
Derived Keying
Material length:
192-1792
Diffie-Hellman
shared secret:
Length: 2048
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 256
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 384
(bits)
Publication / Implementation and Certificate #
Component
Validated /
Description

SHA Functions:
SHA-384
Prerequisite: SHS
#4011 , HMAC
#3269

TLS:
Supports TLS
1.0/1.1
Supports TLS
1.2:
SHA Functions:
SHA-256, SHA-384

Prerequisite: SHS
#4011 , HMAC
#3269

ECDSA SigGen: Windows 10 Mobile (version 1709) SymCrypt Cryptographic


P-256 SHA: Implementations #1510
SHA-256
P-384 SHA: Version 10.0.15254
SHA-384
P-521 SHA:
SHA-512
Prerequisite: DRBG
#1731

RSADP: Windows 10 Mobile (version 1709) SymCrypt Cryptographic


Modulus Size: 2048 Implementations #1509
(bits)
Version 10.0.15254

RSASP1: Windows 10 Mobile (version 1709) SymCrypt Cryptographic


Implementations #1508
Modulus Size: 2048
(bits) Version 10.0.15254
Padding
Algorithms: PKCS
1.5

IKEv1: Windows 10 Mobile (version 1709) SymCrypt Cryptographic


Methods: Digital Implementations #1507
Signature, Pre-
shared Key, Public Version 10.0.15254
Key Encryption
Publication / Implementation and Certificate #
Component
Validated /
Description

Pre-shared Key
Length: 64-2048
Diffie-Hellman
shared secret:
Length: 2048
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 256
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 384
(bits)
SHA Functions:
SHA-384
Prerequisite: SHS
#4010 , HMAC
#3268

IKEv2:
Derived Keying
Material length:
192-1792
Diffie-Hellman
shared secret:
Length: 2048
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 256
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 384
(bits)
Publication / Implementation and Certificate #
Component
Validated /
Description

SHA Functions:
SHA-384
Prerequisite: SHS
#4010 , HMAC
#3268

TLS:
Supports TLS
1.0/1.1
Supports TLS
1.2:
SHA Functions:
SHA-256, SHA-384

Prerequisite: SHS
#4010 , HMAC
#3268

ECDSA SigGen: Windows 10 Mobile (version 1709) MsBignum Cryptographic


P-256 SHA: Implementations #1506
SHA-256
P-384 SHA: Version 10.0.15254
SHA-384
P-521 SHA:
SHA-512
Prerequisite: DRBG
#1731

RSADP: Windows 10 Mobile (version 1709) MsBignum Cryptographic


Modulus Size: 2048 Implementations #1505
(bits)
Version 10.0.15254

RSASP1: Windows 10 Mobile (version 1709) MsBignum Cryptographic


Implementations #1504
Modulus Size: 2048
(bits) Version 10.0.15254
Padding
Algorithms: PKCS
1.5

ECDSA SigGen: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall Creators
P-256 SHA: Update; Windows Server, Windows Server Datacenter (version 1709);
SHA-256 MsBignum Cryptographic Implementations #1503
P-384 SHA:
SHA-384 Version 10.0.16299
Publication / Implementation and Certificate #
Component
Validated /
Description

P-521 SHA:
SHA-512
Prerequisite: DRBG
#1730

RSADP: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall Creators


Modulus Size: 2048 Update; Windows Server, Windows Server Datacenter (version 1709);
(bits) MsBignum Cryptographic Implementations #1502

Version 10.0.16299

RSASP1: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall Creators


Update; Windows Server, Windows Server Datacenter (version 1709);
Modulus Size: 2048 MsBignum Cryptographic Implementations #1501
(bits)
Padding Version 10.0.16299
Algorithms: PKCS
1.5

ECDSA SigGen: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall Creators
P-256 SHA: Update; Windows Server, Windows Server Datacenter (version 1709);
SHA-256 SymCrypt Cryptographic Implementations #1499
P-384 SHA:
SHA-384 Version 10.0.16299
P-521 SHA:
SHA-512
Prerequisite: DRBG
#1730

RSADP: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall Creators


Modulus Size: 2048 Update; Windows Server, Windows Server Datacenter (version 1709);
(bits) SymCrypt Cryptographic Implementations #1498

Version 10.0.16299

RSASP1: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall Creators


Update; Windows Server, Windows Server Datacenter (version 1709);
Modulus Size: 2048 SymCrypt Cryptographic Implementations #1497
(bits)
Padding Version 10.0.16299
Algorithms: PKCS
1.5

IKEv1: Windows 10 Home, Pro, Enterprise, Education,Windows 10 S Fall Creators


Methods: Digital Update; Windows Server, Windows Server Datacenter (version 1709);
Signature, Pre- SymCrypt Cryptographic Implementations #1496
Publication / Implementation and Certificate #
Component
Validated /
Description

shared Key, Public Version 10.0.16299


Key Encryption
Pre-shared Key
Length: 64-2048
Diffie-Hellman
shared secret:
Length: 2048
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 256
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 384
(bits)
SHA Functions:
SHA-384
Prerequisite: SHS
#4009 , HMAC
#3267

IKEv2:
Derived Keying
Material length:
192-1792
Diffie-Hellman
shared secret:
Length: 2048
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Length: 256
(bits)
SHA Functions:
SHA-256
Diffie-Hellman
shared secret:
Publication / Implementation and Certificate #
Component
Validated /
Description

Length: 384
(bits)
SHA Functions:
SHA-384
Prerequisite: SHS
#4009 , HMAC
#3267

TLS:
Supports TLS
1.0/1.1
Supports TLS
1.2:
SHA Functions:
SHA-256, SHA-384

Prerequisite: SHS
#4009 , HMAC
#3267

FIPS186-4 ECDSA Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,
Signature Education, Windows 10 S, Windows 10 Mobile MsBignum Cryptographic
Generation of hash Implementations #1284
sized messages
Version 10.0. 15063
ECDSA SigGen
Component: Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,
CURVES(P-256 P- Education, Windows 10 S, Windows 10 Mobile SymCrypt Cryptographic
384 P-521) Implementations #1279

Version 10.0. 15063

Microsoft Windows 10 Anniversary Update, Windows Server 2016, Windows


Storage Server 2016; Microsoft Surface Book, Surface Pro 4, Surface Pro 3
and Surface 3 w/ Windows 10 Anniversary Update; Microsoft Lumia 950
and Lumia 650 w/ Windows 10 Mobile Anniversary Update MsBignum
Cryptographic Implementations #922

Version 10.0.14393

Microsoft Windows 10 Anniversary Update, Windows Server 2016, Windows


Storage Server 2016; Microsoft Surface Book, Surface Pro 4, and Surface Pro
3 w/ Windows 10 Anniversary Update Virtual TPM Implementations #894

Version 10.0.14393icrosoft Windows 10 November 2015 Update; Microsoft


Surface Book, Surface Pro 4, Surface Pro 3, Surface 3, Surface Pro 2, and
Surface Pro w/ Windows 10 November 2015 Update; Windows 10 Mobile
Publication / Implementation and Certificate #
Component
Validated /
Description

for Microsoft Lumia 950 and Microsoft Lumia 635; Windows 10 for
Microsoft Surface Hub 84" and Surface Hub 55" MsBignum Cryptographic
Implementations #666

Version 10.0.10586

Microsoft Windows 8.1, Microsoft Windows Server 2012 R2, Microsoft


Windows Storage Server 2012 R2, Microsoft Windows RT 8.1, Microsoft
Surface with Windows RT 8.1, Microsoft Surface Pro with Windows 8.1,
Microsoft Surface 2, Microsoft Surface Pro 2, Microsoft Surface Pro 3,
Microsoft Windows Phone 8.1, Microsoft Windows Embedded 8.1 Industry,
and Microsoft StorSimple 8100 MsBignum Cryptographic Implementations
#288

Version 6.3.9600

FIPS186-4 RSA; Windows 10 Creators Update (version 1703) Pro, Enterprise, Education
PKCS#1 v2.1 Virtual TPM Implementations #1285
RSASP1 Signature
Primitive Version 10.0.15063

RSASP1: (Mod2048: Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,
PKCS1.5 PKCSPSS) Education, Windows 10 S, Windows 10 Mobile MsBignum Cryptographic
Implementations #1282

Version 10.0.15063

Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,


Education, Windows 10 S, Windows 10 Mobile SymCrypt Cryptographic
Implementations #1280

Version 10.0.15063

Microsoft Windows 10 Anniversary Update, Windows Server 2016, Windows


Storage Server 2016; Microsoft Surface Book, Surface Pro 4, and Surface Pro
3 w/ Windows 10 Anniversary Update Virtual TPM Implementations #893

Version 10.0.14393

Microsoft Windows 10 Anniversary Update, Windows Server 2016, Windows


Storage Server 2016; Microsoft Surface Book, Surface Pro 4, Surface Pro 3
and Surface 3 w/ Windows 10 Anniversary Update; Microsoft Lumia 950
and Lumia 650 w/ Windows 10 Mobile Anniversary Update MsBignum
Cryptographic Implementations #888

Version 10.0.14393
Publication / Implementation and Certificate #
Component
Validated /
Description

Microsoft Windows 10 November 2015 Update; Microsoft Surface Book,


Surface Pro 4, Surface Pro 3, Surface 3, Surface Pro 2, and Surface Pro w/
Windows 10 November 2015 Update; Windows 10 Mobile for Microsoft
Lumia 950 and Microsoft Lumia 635; Windows 10 for Microsoft Surface Hub
84" and Surface Hub 55" MsBignum Cryptographic Implementations #665

Version 10.0.10586

Microsoft Windows 10, Microsoft Surface Pro 3 with Windows 10, Microsoft
Surface 3 with Windows 10, Microsoft Surface Pro 2 with Windows 10,
Microsoft Surface Pro with Windows 10 MsBignum Cryptographic
Implementations #572

Version 10.0.10240

Microsoft Windows 8.1, Microsoft Windows Server 2012 R2, Microsoft


Windows Storage Server 2012 R2, Microsoft Windows RT 8.1, Microsoft
Surface with Windows RT 8.1, Microsoft Surface Pro with Windows 8.1,
Microsoft Surface 2, Microsoft Surface Pro 2, Microsoft Surface Pro 3,
Microsoft Windows Phone 8.1, Microsoft Windows Embedded 8.1 Industry
MsBignum Cryptographic Implementations #289

Version 6.3.9600

FIPS186-4 RSA; Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,
RSADP Education, Windows 10 S, Windows 10 Mobile MsBignum Cryptographic
RSADP Primitive Implementations #1283

RSADP: (Mod2048) Version 10.0.15063

Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,


Education, Windows 10 S, Windows 10 Mobile SymCrypt Cryptographic
Implementations #1281

Version 10.0.15063

Microsoft Windows 10 Anniversary Update, Windows Server 2016, Windows


Storage Server 2016; Microsoft Surface Book, Surface Pro 4, and Surface Pro
3 w/ Windows 10 Anniversary Update Virtual TPM Implementations #895

Version 10.0.14393

Microsoft Windows 10 Anniversary Update, Windows Server 2016, Windows


Storage Server 2016; Microsoft Surface Book, Surface Pro 4, Surface Pro 3
and Surface 3 w/ Windows 10 Anniversary Update; Microsoft Lumia 950
and Lumia 650 w/ Windows 10 Mobile Anniversary Update Cryptography
Next Generation (CNG) Implementations #887
Publication / Implementation and Certificate #
Component
Validated /
Description

Version 10.0.14393

Microsoft Windows 10 November 2015 Update; Microsoft Surface Book,


Surface Pro 4, Surface Pro 3, Surface 3, Surface Pro 2, and Surface Pro w/
Windows 10 November 2015 Update; Windows 10 Mobile for Microsoft
Lumia 950 and Microsoft Lumia 635; Windows 10 for Microsoft Surface Hub
84" and Surface Hub 55" Cryptography Next Generation (CNG)
Implementations #663

Version 10.0.10586

Microsoft Windows 10, Microsoft Surface Pro 3 with Windows 10, Microsoft
Surface 3 with Windows 10, Microsoft Surface Pro 2 with Windows 10,
Microsoft Surface Pro with Windows 10 Cryptography Next Generation
(CNG) Implementations #576

Version 10.0.10240

SP800-135 Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall Creators


Section 4.1.1, IKEv1 Update; Windows Server, Windows Server Datacenter (version 1709);
Section 4.1.2, IKEv2 SymCrypt Cryptographic Implementations #1496
Section 4.2, TLS
Version 10.0.16299

Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,


Education, Windows 10 S, Windows 10 Mobile SymCrypt Cryptographic
Implementations #1278

Version 10.0.15063

Windows Embedded Compact Cryptographic Primitives Library (bcrypt.dll)


#1140

Version 7.00.2872

Windows Embedded Compact Cryptographic Primitives Library (bcrypt.dll)


#1139

Version 8.00.6246

Microsoft Windows 10 Anniversary Update, Windows Server 2016, Windows


Storage Server 2016; Microsoft Surface Book, Surface Pro 4, Surface Pro 3
and Surface 3 w/ Windows 10 Anniversary Update; Microsoft Lumia 950
and Lumia 650 w/ Windows 10 Mobile Anniversary Update BcryptPrimitives
and NCryptSSLp #886

Version 10.0.14393
Publication / Implementation and Certificate #
Component
Validated /
Description

Microsoft Windows 10 November 2015 Update; Microsoft Surface Book,


Surface Pro 4, Surface Pro 3, Surface 3, Surface Pro 2, and Surface Pro w/
Windows 10 November 2015 Update; Windows 10 Mobile for Microsoft
Lumia 950 and Microsoft Lumia 635; Windows 10 for Microsoft Surface Hub
84" and Surface Hub 55" BCryptPrimitives and NCryptSSLp #664

Version 10.0.10586

Microsoft Windows 10, Microsoft Surface Pro 3 with Windows 10, Microsoft
Surface 3 with Windows 10, Microsoft Surface Pro 2 with Windows 10,
Microsoft Surface Pro with Windows 10 BCryptPrimitives and NCryptSSLp
#575

Version 10.0.10240

Microsoft Windows 8.1, Microsoft Windows Server 2012 R2, Microsoft


Windows Storage Server 2012 R2, Microsoft Windows RT 8.1, Microsoft
Surface with Windows RT 8.1, Microsoft Surface Pro with Windows 8.1,
Microsoft Surface 2, Microsoft Surface Pro 2, Microsoft Surface Pro 3,
Microsoft Windows Phone 8.1, Microsoft Windows Embedded 8.1 Industry,
and Microsoft StorSimple 8100 BCryptPrimitives and NCryptSSLp #323

Version 6.3.9600

Deterministic Random Bit Generator (DRBG)

Modes / States / Key Sizes Algorithm Implementation and Certificate #

Counter: Microsoft Surface Hub Virtual TPM Implementations #1734


Modes: AES-256
Derivation Function States: Version 10.0.15063.674
Derivation Function not used
Prediction Resistance Modes:
Not Enabled
Prerequisite: AES #4904

Counter: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S


Modes: AES-256 Fall Creators Update; Windows Server, Windows Server
Derivation Function States: Datacenter (version 1709); Virtual TPM Implementations #1733
Derivation Function not used
Prediction Resistance Modes: Version 10.0.16299
Not Enabled
Prerequisite: AES #4903

Counter: Microsoft Surface Hub SymCrypt Cryptographic


Modes: AES-256 Implementations #1732
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Derivation Function States: Version 10.0.15063.674


Derivation Function used
Prediction Resistance Modes:
Not Enabled
Prerequisite: AES #4902

Counter: Windows 10 Mobile (version 1709) SymCrypt Cryptographic


Modes: AES-256 Implementations #1731
Derivation Function States:
Derivation Function used Version 10.0.15254
Prediction Resistance Modes:
Not Enabled
Prerequisite: AES #4901

Counter: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S


Modes: AES-256 Fall Creators Update; Windows Server, Windows Server
Derivation Function States: Datacenter (version 1709); SymCrypt Cryptographic
Derivation Function used Implementations #1730
Prediction Resistance Modes:
Not Enabled Version 10.0.16299
Prerequisite: AES #4897

CTR_DRBG: [Prediction Windows 10 Creators Update (version 1703) Pro, Enterprise,


Resistance Tested: Not Enabled; Education Virtual TPM Implementations #1556
BlockCipher_No_df: (AES-256)
Version 10.0.15063
(AES validation number 4627 )]

CTR_DRBG:[Prediction Windows 10 Creators Update (version 1703) Home, Pro,


Resistance Tested: Not Enabled; Enterprise, Education, Windows 10 S, Windows 10 Mobile
BlockCipher_Use_df: (AES-256 SymCrypt Cryptographic Implementations #1555
(AES validation number 4624 )]
Version 10.0.15063

CTR_DRBG:[Prediction Windows Embedded Compact Enhanced Cryptographic


Resistance Tested: Not Enabled; Provider (RSAENH) #1433
BlockCipher_No_df: (AES-256)
(AES validation number 4434 )] Version 7.00.2872

CTR_DRBG:[Prediction Windows Embedded Compact Enhanced Cryptographic


Resistance Tested: Not Enabled; Provider (RSAENH) #1432
BlockCipher_No_df: (AES-256)
(AES validation number 4433 )] Version 8.00.6246

CTR_DRBG:[Prediction Windows Embedded Compact Cryptographic Primitives


Resistance Tested: Not Enabled; Library (bcrypt.dll) #1430
BlockCipher_No_df: (AES-256)
(AES validation number 4431 )] Version 7.00.2872
Modes / States / Key Sizes Algorithm Implementation and Certificate #

CTR_DRBG:[Prediction Windows Embedded Compact Cryptographic Primitives


Resistance Tested: Not Enabled; Library (bcrypt.dll) #1429
BlockCipher_No_df: (AES-256)
(AES validation number 4430 )] Version 8.00.6246

CTR_DRBG:[Prediction Microsoft Windows 10 Anniversary Update, Windows Server


Resistance Tested: Not Enabled; 2016, Windows Storage Server 2016; Microsoft Surface Book,
BlockCipher_No_df: (AES-256) Surface Pro 4, and Surface Pro 3 w/ Windows 10 Anniversary
(AES validation number 4074 )] Update Virtual TPM Implementations #1222

Version 10.0.14393

CTR_DRBG:[Prediction Microsoft Windows 10 Anniversary Update, Windows Server


Resistance Tested: Not Enabled; 2016, Windows Storage Server 2016; Microsoft Surface Book,
BlockCipher_Use_df: (AES-256) Surface Pro 4, Surface Pro 3 and Surface 3 w/ Windows 10
(AES validation number 4064 )] Anniversary Update; Microsoft Lumia 950 and Lumia 650 w/
Windows 10 Mobile Anniversary Update SymCrypt
Cryptographic Implementations #1217

Version 10.0.14393

CTR_DRBG:[Prediction Microsoft Windows 10 November 2015 Update; Microsoft


Resistance Tested: Not Enabled; Surface Book, Surface Pro 4, Surface Pro 3, Surface 3, Surface
BlockCipher_Use_df: (AES-256) Pro 2, and Surface Pro w/ Windows 10 November 2015
(AES validation number 3629 )] Update; Windows 10 Mobile for Microsoft Lumia 950 and
Microsoft Lumia 635; Windows 10 for Microsoft Surface Hub
and Surface Hub SymCrypt Cryptographic Implementations
#955

Version 10.0.10586

CTR_DRBG:[Prediction Microsoft Windows 10, Microsoft Surface Pro 3 with Windows


Resistance Tested: Not Enabled; 10, Microsoft Surface 3 with Windows 10, Microsoft Surface
BlockCipher_Use_df: (AES-256) Pro 2 with Windows 10, Microsoft Surface Pro with Windows
(AES validation number 3497 )] 10 SymCrypt Cryptographic Implementations #868

Version 10.0.10240

CTR_DRBG:[Prediction Windows Storage Server 2012 R2, Microsoft Windows RT 8.1,


Resistance Tested: Not Enabled; Microsoft Surface with Windows RT 8.1, Microsoft Surface Pro
BlockCipher_Use_df: (AES-256) with Windows 8.1, Microsoft Surface 2, Microsoft Surface Pro
(AES validation number 2832 )] 2, Microsoft Surface Pro 3, Microsoft Windows Phone 8.1,
Microsoft Windows Embedded 8.1 Industry, and Microsoft
StorSimple 8100 SymCrypt Cryptographic Implementations
#489

Version 6.3.9600

CTR_DRBG:[Prediction Windows 8, Windows RT, Windows Server 2012, Surface


Resistance Tested: Not Enabled; Windows RT, Surface Windows 8 Pro, and Windows Phone 8
Modes / States / Key Sizes Algorithm Implementation and Certificate #

BlockCipher_Use_df: (AES-256) Next Generation Symmetric Cryptographic Algorithms


(AES validation number 2197 )] Implementations (SYMCRYPT) #258

CTR_DRBG:[Prediction Windows Embedded Compact 7 Cryptographic Primitives


Resistance Tested: Not Enabled; Library (bcrypt.dll) #193
BlockCipher_No_df: (AES-256)
(AES validation number 2023 )]

CTR_DRBG:[Prediction Windows 7 Ultimate and SP1 and Windows Server 2008 R2


Resistance Tested: Not Enabled; and SP1 RNG Library #23
BlockCipher_No_df: (AES-256)
(AES validation number 1168 )]

DRBG (SP 800-90) Windows Vista Ultimate SP1, vendor-affirmed

Digital Signature Algorithm (DSA)

Modes / States / Key Sizes Algorithm Implementation and Certificate #

DSA: Microsoft Surface Hub SymCrypt Cryptographic


186-4: Implementations #1303
PQGGen:
L = 2048, N = 256 SHA: SHA- Version 10.0.15063.674
256
L = 3072, N = 256 SHA: SHA-
256
PQGVer:
L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
SigGen:
L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
SigVer:
L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
KeyPair:
L = 2048, N = 256
L = 3072, N = 256
Prerequisite: SHS #4011 , DRBG
#1732

DSA: Windows 10 Mobile (version 1709) SymCrypt Cryptographic


186-4: Implementations #1302
Modes / States / Key Sizes Algorithm Implementation and Certificate #

PQGGen: Version 10.0.15254


L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
PQGVer:
L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
SigGen:
L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
SigVer:
L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
KeyPair:
L = 2048, N = 256
L = 3072, N = 256
Prerequisite: SHS #4010 , DRBG
#1731

DSA: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S


186-4: Fall Creators Update; Windows Server, Windows Server
PQGGen: Datacenter (version 1709); SymCrypt Cryptographic
L = 2048, N = 256 SHA: SHA- Implementations #1301
256
L = 3072, N = 256 SHA: SHA- Version 10.0.16299
256
PQGVer:
L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
SigGen:
L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
SigVer:
L = 2048, N = 256 SHA: SHA-
256
L = 3072, N = 256 SHA: SHA-
256
Modes / States / Key Sizes Algorithm Implementation and Certificate #

KeyPair:
L = 2048, N = 256
L = 3072, N = 256
Prerequisite: SHS #4009 , DRBG
#1730

FIPS186-4: Windows 10 Creators Update (version 1703) Home, Pro,


PQG(gen) PARMS TESTED: Enterprise, Education, Windows 10 S, Windows 10 Mobile
[(2048,256)SHA(256); (3072,256) SymCrypt Cryptographic Implementations #1223
SHA(256)]
Version 10.0.15063
**PQG(ver)**PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]
KeyPairGen: [(2048,256);
(3072,256)]

**SIG(gen)**PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]

SIG(ver) PARMS TESTED:


[(2048,256) SHA(256); (3072,256)
SHA(256)]

SHS: validation number 3790

DRBG: validation number 1555

FIPS186-4: Windows Embedded Compact Cryptographic Primitives


PQG(ver)PARMS TESTED: Library (bcrypt.dll) #1188
[(1024,160) SHA(1)]
Version 7.00.2872
SIG(ver)PARMS TESTED:
[(1024,160) SHA(1)]

SHS: validation number 3649

FIPS186-4: Windows Embedded Compact Cryptographic Primitives


PQG(ver)PARMS TESTED: Library (bcrypt.dll) #1187
[(1024,160) SHA(1)]
Version 8.00.6246
SIG(ver)PARMS TESTED:
[(1024,160) SHA(1)]

SHS: validation number 3648

FIPS186-4: Microsoft Windows 10 Anniversary Update, Windows Server


PQG(gen) PARMS TESTED: 2016, Windows Storage Server 2016; Microsoft Surface Book,
[(2048,256)SHA(256); (3072,256) Surface Pro 4, Surface Pro 3 and Surface 3 w/ Windows 10
SHA(256)] Anniversary Update; Microsoft Lumia 950 and Lumia 650 w/
Modes / States / Key Sizes Algorithm Implementation and Certificate #

**PQG(ver)**PARMS TESTED: Windows 10 Mobile Anniversary Update MsBignum


[(2048,256) SHA(256); (3072,256) Cryptographic Implementations #1098
SHA(256)]
KeyPairGen: [(2048,256); Version 10.0.14393
(3072,256)]

**SIG(gen)**PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]

**SIG(ver)**PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]

SHS: validation number 3347

DRBG: validation number 1217

FIPS186-4: Microsoft Windows 10 November 2015 Update; Microsoft


PQG(gen) PARMS TESTED: Surface Book, Surface Pro 4, Surface Pro 3, Surface 3, Surface
[(2048,256)SHA(256); (3072,256) Pro 2, and Surface Pro w/ Windows 10 November 2015
SHA(256)] Update; Windows 10 Mobile for Microsoft Lumia 950 and
Microsoft Lumia 635; Windows 10 for Microsoft Surface Hub
**PQG(ver)**PARMS TESTED: 84" and Surface Hub 55" MsBignum Cryptographic
[(2048,256) SHA(256); (3072,256) Implementations #1024
SHA(256)]
KeyPairGen: [(2048,256); Version 10.0.10586
(3072,256)] **SIG(gen)**PARMS
TESTED: [(2048,256) SHA(256);
(3072,256) SHA(256)]

**SIG(ver)**PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]

SHS: validation number 3047

DRBG: validation number 955

FIPS186-4: Microsoft Windows 10, Microsoft Surface Pro 3 with


PQG(gen) PARMS TESTED: Windows 10, Microsoft Surface 3 with Windows 10,
[(2048,256)SHA(256); (3072,256) Microsoft Surface Pro 2 with Windows 10, Microsoft Surface
SHA(256)] Pro with Windows 10 MsBignum Cryptographic
Implementations #983
**PQG(ver)**PARMS TESTED:
[(2048,256) SHA(256); (3072,256) Version 10.0.10240
SHA(256)]
KeyPairGen: [(2048,256);
(3072,256)]
Modes / States / Key Sizes Algorithm Implementation and Certificate #

**SIG(gen)**PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)] **SIG(ver)**PARMS
TESTED: [(2048,256) SHA(256);
(3072,256) SHA(256)]

SHS: validation number 2886

DRBG: validation number 868

FIPS186-4: Microsoft Windows 8.1, Microsoft Windows Server 2012 R2,


PQG(gen) PARMS TESTED: Microsoft Windows Storage Server 2012 R2, Microsoft
[(2048,256)SHA(256); (3072,256) Windows RT 8.1, Microsoft Surface with Windows RT 8.1,
SHA(256)] Microsoft Surface Pro with Windows 8.1, Microsoft Surface 2,
Microsoft Surface Pro 2, Microsoft Surface Pro 3, Microsoft
PQG(ver)PARMS TESTED: Windows Phone 8.1, Microsoft Windows Embedded 8.1
[(2048,256), SHA(256); (3072,256) Industry, and Microsoft StorSimple 8100 MsBignum
SHA(256)] Cryptographic Implementations #855
KeyPairGen: [(2048,256);
(3072,256)] Version 6.3.9600

**SIG(gen)**PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]

**SIG(ver)**PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]

SHS: validation number 2373

DRBG: validation number 489

FIPS186-2: Windows 8, Windows RT, Windows Server 2012, Surface


Windows RT, Surface Windows 8 Pro, and Windows Phone 8
PQG(ver) MOD(1024); Cryptography Next Generation (CNG) Implementations #687

SIG(ver) MOD(1024);

SHS: #1903

DRBG: #258

FIPS186-4: PQG(gen)PARMS
TESTED: [(2048,256)SHA(256);
(3072,256) SHA(256)]

PQG(ver)PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]
Modes / States / Key Sizes Algorithm Implementation and Certificate #

SIG(gen)PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]

SIG(ver)PARMS TESTED:
[(2048,256) SHA(256); (3072,256)
SHA(256)]

SHS: #1903

DRBG: #258

FIPS186-2: Windows 8, Windows RT, Windows Server 2012, Surface


PQG(ver) MOD(1024); Windows RT, Surface Windows 8 Pro, and Windows Phone 8
DSS and Diffie-Hellman Enhanced Cryptographic Provider
SIG(ver) MOD(1024); (DSSENH) #686

SHS: #1902

DRBG: #258

FIPS186-2: Windows Embedded Compact 7 Cryptographic Primitives


SIG(ver) MOD(1024); Library (bcrypt.dll) #645

SHS: validation number 1773

DRBG: validation number 193

FIPS186-2: Windows Server 2008 R2 and SP1 CNG algorithms #391


SIG(ver) MOD(1024);
Windows 7 Ultimate and SP1 CNG algorithms #386
SHS: validation number 1081

DRBG: validation number 23

FIPS186-2: Windows Server 2008 R2 and SP1 Enhanced DSS (DSSENH)


SIG(ver) MOD(1024); #390

SHS: validation number 1081 Windows 7 Ultimate and SP1 Enhanced DSS (DSSENH) #385

RNG: validation number 649

FIPS186-2: Windows Server 2008 CNG algorithms #284


SIG(ver) MOD(1024);
Windows Vista Ultimate SP1 CNG algorithms #283
SHS: validation number 753

FIPS186-2: Windows Server 2008 Enhanced DSS (DSSENH) #282


SIG(ver) MOD(1024);
Windows Vista Ultimate SP1 Enhanced DSS (DSSENH) #281
SHS: validation number 753
Modes / States / Key Sizes Algorithm Implementation and Certificate #

RNG: validation number 435

FIPS186-2: Windows Vista CNG algorithms #227


SIG(ver) MOD(1024);
Windows Vista Enhanced DSS (DSSENH) #226
SHS: validation number 618

RNG: validation number 321

FIPS186-2: Windows XP Professional SP3 Enhanced DSS and Diffie-


SIG(ver) MOD(1024); Hellman Cryptographic Provider (DSSENH) #292

SHS: validation number 784

RNG: validation number 448

FIPS186-2: Windows XP Professional SP3 Enhanced Cryptographic


SIG(ver) MOD(1024); Provider (RSAENH) #291

SHS: validation number 783

RNG: validation number 447

FIPS186-2: Windows 2003 SP2 Enhanced DSS and Diffie-Hellman


PQG(gen) MOD(1024); Cryptographic Provider #221

PQG(ver) MOD(1024);

KEYGEN(Y) MOD(1024);

SIG(gen) MOD(1024);

SIG(ver) MOD(1024);

SHS: validation number 611

RNG: validation number 314

FIPS186-2: Windows Server 2003 SP1 Enhanced DSS and Diffie-Hellman


PQG(gen) MOD(1024); Cryptographic Provider (DSSENH) #146

PQG(ver) MOD(1024);

KEYGEN(Y) MOD(1024);

SIG(gen) MOD(1024);vSIG(ver)
MOD(1024);vSHS: validation
number 385

FIPS186-2: Windows Server 2003 Enhanced DSS and Diffie-Hellman


PQG(ver) MOD(1024); Cryptographic Provider (DSSENH) #95
Modes / States / Key Sizes Algorithm Implementation and Certificate #

KEYGEN(Y) MOD(1024);vSIG(gen)
MOD(1024);

SIG(ver) MOD(1024);

SHS: validation number 181

FIPS186-2: Windows 2000 DSSENH.DLL #29


PQG(gen) MOD(1024);
Windows 2000 DSSBASE.DLL #28
PQG(ver) MOD(1024);
Windows NT 4 SP6 DSSENH.DLL #26
KEYGEN(Y) MOD(1024);
Windows NT 4 SP6 DSSBASE.DLL #25
SIG(gen) MOD(1024); SHS: SHA-1
(BYTE)

SIG(ver) MOD(1024); SHS: SHA-1


(BYTE)

FIPS186-2: PRIME; Windows NT 4.0 SP4 Microsoft Enhanced DSS and Diffie-
FIPS186-2: Hellman Cryptographic Provider #17

**KEYGEN(Y):**SHS: SHA-1 (BYTE)

SIG(gen):SIG(ver) MOD(1024);

SHS: SHA-1 (BYTE)

Elliptic Curve Digital Signature Algorithm (ECDSA)

Modes / States / Key Sizes Algorithm Implementation and Certificate #

ECDSA:186-4: Microsoft Windows 8.1, Microsoft Windows Server 2012


R2, Microsoft Windows Storage Server 2012 R2,
Key Pair Generation: Microsoft Windows RT 8.1, Microsoft Surface with
Curves: P-256, P-384, P-521 Windows RT 8.1, Microsoft Surface Pro with Windows
Generation Methods: Extra Random 8.1, Microsoft Surface 2, Microsoft Surface Pro 2,
Bits Microsoft Surface Pro 3, Microsoft Windows Phone 8.1,
Public Key Validation: Microsoft Windows Embedded 8.1 Industry, and
Curves: P-256, P-384, P-521 Microsoft StorSimple 8100 MsBignum Cryptographic
Signature Generation: Implementations #1263
P-256 SHA: SHA-256
P-384 SHA: SHA-384 Version 6.3.9600
P-521 SHA: SHA-512
Signature Verification:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Prerequisite: SHS #2373 , DRBG #489
Modes / States / Key Sizes Algorithm Implementation and Certificate #

ECDSA:186-4: Microsoft Surface Hub Virtual TPM Implementations


Key Pair Generation: #1253
Curves: P-256, P-384
Generation Methods: Testing Version 10.0.15063.674
Candidates
Prerequisite: SHS #4011 , DRBG
#1734

ECDSA:186-4: Windows 10 Home, Pro, Enterprise, Education, Windows


Key Pair Generation: 10 S Fall Creators Update; Windows Server, Windows
Curves: P-256, P-384 Server Datacenter (version 1709); Virtual TPM
Generation Methods: Testing Implementations #1252
Candidates
Prerequisite: SHS #4009 , DRBG Version 10.0.16299
#1733

ECDSA:186-4: Microsoft Surface Hub MsBignum Cryptographic


Key Pair Generation: Implementations #1251
Curves: P-256, P-384, P-521
Generation Methods: Extra Random Version 10.0.15063.674
Bits
Public Key Validation:
Curves: P-256, P-384, P-521
Signature Generation:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Signature Verification:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Prerequisite: SHS #4011 , DRBG
#1732

ECDSA:186-4: Microsoft Surface Hub SymCrypt Cryptographic


Key Pair Generation: Implementations #1250
Curves: P-256, P-384, P-521
Generation Methods: Extra Random Version 10.0.15063.674
Bits
Public Key Validation:
Curves: P-256, P-384, P-521
Signature Generation:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Signature Verification:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
Modes / States / Key Sizes Algorithm Implementation and Certificate #

P-521 SHA: SHA-512


Prerequisite: SHS #4011 , DRBG
#1732

ECDSA:186-4: Windows 10 Mobile (version 1709) SymCrypt


Key Pair Generation: Cryptographic Implementations #1249
Curves: P-256, P-384, P-521
Generation Methods: Extra Random Version 10.0.15254
Bits
Public Key Validation:
Curves: P-256, P-384, P-521
Signature Generation:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Signature Verification:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Prerequisite: SHS #4010 , DRBG
#1731

ECDSA:186-4: Windows 10 Mobile (version 1709) MsBignum


Key Pair Generation: Cryptographic Implementations #1248
Curves: P-256, P-384, P-521
Generation Methods: Extra Random Version 10.0.15254
Bits
Public Key Validation:
Curves: P-256, P-384, P-521
Signature Generation:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Signature Verification:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Prerequisite: SHS #4010 , DRBG
#1731

ECDSA:186-4: Windows 10 Home, Pro, Enterprise, Education, Windows


Key Pair Generation: 10 S Fall Creators Update; Windows Server, Windows
Curves: P-256, P-384, P-521 Server Datacenter (version 1709); MsBignum
Generation Methods: Extra Random Cryptographic Implementations #1247
Bits
Public Key Validation: Version 10.0.16299
Curves: P-256, P-384, P-521
Signature Generation:
Modes / States / Key Sizes Algorithm Implementation and Certificate #

P-256 SHA: SHA-256


P-384 SHA: SHA-384
P-521 SHA: SHA-512
Signature Verification:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Prerequisite: SHS #4009 , DRBG
#1730

ECDSA:186-4: Windows 10 Home, Pro, Enterprise, Education, Windows


Key Pair Generation: 10 S Fall Creators Update; Windows Server, Windows
Curves: P-256, P-384, P-521 Server Datacenter (version 1709); SymCrypt
Generation Methods: Extra Random Cryptographic Implementations #1246
Bits
Public Key Validation: Version 10.0.16299
Curves: P-256, P-384, P-521
Signature Generation:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Signature Verification:
P-256 SHA: SHA-256
P-384 SHA: SHA-384
P-521 SHA: SHA-512
Prerequisite: SHS #4009 , DRBG
#1730

FIPS186-4: Windows 10 Creators Update (version 1703) Pro,


PKG: CURVES(P-256 P-384 Enterprise, Education Virtual TPM Implementations
TestingCandidates) #1136

SHS: validation number 3790 Version 10.0.15063

DRBG: validation number 1555

FIPS186-4: Windows 10 Creators Update (version 1703) Home, Pro,


PKG: CURVES(P-256 P-384 P-521 Enterprise, Education, Windows 10 S, Windows 10
ExtraRandomBits) Mobile MsBignum Cryptographic Implementations
#1135
PKV: CURVES(P-256 P-384 P-521)
Version 10.0.15063
SigGen: CURVES(P-256: (SHA-256) P-
384: (SHA-384) P-521: (SHA-512)

SigVer: CURVES(P-256: (SHA-256) P-


384: (SHA-384) P-521: (SHA-512))

SHS: validation number 3790


Modes / States / Key Sizes Algorithm Implementation and Certificate #

DRBG: validation number 1555

FIPS186-4: Windows 10 Creators Update (version 1703) Home, Pro,


PKG: CURVES(P-256 P-384 P-521 Enterprise, Education, Windows 10 S, Windows 10
ExtraRandomBits) Mobile SymCrypt Cryptographic Implementations
#1133
PKV: CURVES(P-256 P-384 P-521)
Version 10.0.15063
SigGen: CURVES(P-256: (SHA-256) P-
384: (SHA-384) P-521: (SHA-512)

SigVer: CURVES(P-256: (SHA-256) P-


384: (SHA-384) P-521: (SHA-512))

SHS: validation number 3790

DRBG: validation number 1555

FIPS186-4: Windows Embedded Compact Cryptographic Primitives


PKG: CURVES(P-256 P-384 P-521 Library (bcrypt.dll) #1073
ExtraRandomBits)
Version 7.00.2872
PKV: CURVES(P-256 P-384 P-521)

SigGen: CURVES(P-256: (SHA-1, 256)


P-384: (SHA-1, 384) P-521: (SHA-1,
512) SIG(gen) with SHA-1 affirmed for
use with protocols only.

SigVer: CURVES(P-256: (SHA-1, 256) P-


384: (SHA-1, 384) P-521: (SHA-1, 512))

SHS:validation number 3649

DRBG:validation number 1430

FIPS186-4: Windows Embedded Compact Cryptographic Primitives


PKG: CURVES(P-256 P-384 P-521 Library (bcrypt.dll) #1072
ExtraRandomBits)
Version 8.00.6246
PKV: CURVES(P-256 P-384 P-521)

SigGen: CURVES(P-256: (SHA-1, 256)


P-384: (SHA-1, 384) P-521: (SHA-1,
512) SIG(gen) with SHA-1 affirmed for
use with protocols only.

SigVer: CURVES(P-256: (SHA-1, 256) P-


384: (SHA-1, 384) P-521: (SHA-1, 512))

SHS:validation number 3648


Modes / States / Key Sizes Algorithm Implementation and Certificate #

DRBG:validation number 1429

FIPS186-4: Microsoft Windows 10 Anniversary Update, Windows


PKG: CURVES(P-256 P-384 Server 2016, Windows Storage Server 2016; Microsoft
TestingCandidates)vPKV: CURVES(P- Surface Book, Surface Pro 4, and Surface Pro 3 w/
256 P-384) Windows 10 Anniversary Update Virtual TPM
Implementations #920
SigGen: CURVES(P-256: (SHA-1, 256)
P-384: (SHA-1, 256, 384) SIG(gen) with Version 10.0.14393
SHA-1 affirmed for use with protocols
only.vSigVer: CURVES(P-256: (SHA-1,
256) P-384: (SHA-1, 256, 384))

SHS: validation number 3347

DRBG: validation number 1222

FIPS186-4: Microsoft Windows 10 Anniversary Update, Windows


PKG: CURVES(P-256 P-384 P-521 Server 2016, Windows Storage Server 2016; Microsoft
ExtraRandomBits) Surface Book, Surface Pro 4, Surface Pro 3 and Surface 3
w/ Windows 10 Anniversary Update; Microsoft Lumia
PKV: CURVES(P-256 P-384 P-521) 950 and Lumia 650 w/ Windows 10 Mobile Anniversary
Update MsBignum Cryptographic Implementations
SigGen: CURVES(P-256: (SHA-256) P-
#911
384: (SHA-384) P-521: (SHA-512)
Version 10.0.14393
SigVer: CURVES(P-256: (SHA-256) P-
384: (SHA-384) P-521: (SHA-512))vSHS:
validation number 3347

DRBG: validation number 1217

FIPS186-4: Microsoft Windows 10 November 2015 Update;


PKG: CURVES(P-256 P-384 P-521 Microsoft Surface Book, Surface Pro 4, Surface Pro 3,
ExtraRandomBits) Surface 3, Surface Pro 2, and Surface Pro w/ Windows
10 November 2015 Update; Windows 10 Mobile for
SigGen: CURVES(P-256: (SHA-256) P- Microsoft Lumia 950 and Microsoft Lumia 635; Windows
384: (SHA-384) P-521: (SHA-512) 10 for Microsoft Surface Hub 84" and Surface Hub 55"
MsBignum Cryptographic Implementations #760
SigVer: CURVES(P-256: (SHA-256) P-
384: (SHA-384) P-521: (SHA-512)) Version 10.0.10586

SHS: validation number 3047

DRBG: validation number 955

FIPS186-4: Microsoft Windows 10, Microsoft Surface Pro 3 with


PKG: CURVES(P-256 P-384 P-521 Windows 10, Microsoft Surface 3 with Windows 10,
ExtraRandomBits) Microsoft Surface Pro 2 with Windows 10, Microsoft
Surface Pro with Windows 10 MsBignum Cryptographic
Implementations #706
Modes / States / Key Sizes Algorithm Implementation and Certificate #

SigGen: CURVES(P-256: (SHA-256) P- Version 10.0.10240


384: (SHA-384) P-521: (SHA-512)

SigVer: CURVES(P-256: (SHA-256) P-


384: (SHA-384) P-521: (SHA-512))

SHS: validation number 2886

DRBG: validation number 868

FIPS186-4: Microsoft Windows 8.1, Microsoft Windows Server 2012


PKG: CURVES(P-256 P-384 P-521 R2, Microsoft Windows Storage Server 2012 R2,
ExtraRandomBits) Microsoft Windows RT 8.1, Microsoft Surface with
Windows RT 8.1, Microsoft Surface Pro with Windows
SigGen: CURVES(P-256: (SHA-256) P- 8.1, Microsoft Surface 2, Microsoft Surface Pro 2,
384: (SHA-384) P-521: (SHA-512) Microsoft Surface Pro 3, Microsoft Windows Phone 8.1,
Microsoft Windows Embedded 8.1 Industry, and
SigVer: CURVES(P-256: (SHA-256) P-
Microsoft StorSimple 8100 MsBignum Cryptographic
384: (SHA-384) P-521: (SHA-512))
Implementations #505
SHS: validation number 2373
Version 6.3.9600
DRBG: validation number 489

FIPS186-2: Windows 8,
PKG: CURVES(P-256 P-384 P-521) Windows RT, Windows Server 2012, Surface Windows
RT, Surface Windows 8 Pro, and Windows Phone 8
SHS: #1903 Cryptography Next Generation (CNG) Implementations
#341
DRBG: #258

SIG(ver): CURVES(P-256 P-384 P-521)

SHS: #1903

DRBG: #258

FIPS186-4:
PKG: CURVES(P-256 P-384 P-521
ExtraRandomBits)

SigGen: CURVES(P-256: (SHA-256) P-


384: (SHA-384) P-521: (SHA-512)

SigVer: CURVES(P-256: (SHA-256) P-


384: (SHA-384) P-521: (SHA-512))

SHS: #1903

DRBG: #258 .
Modes / States / Key Sizes Algorithm Implementation and Certificate #

FIPS186-2: Windows Embedded Compact 7 Cryptographic


PKG: CURVES(P-256 P-384 P-521) Primitives Library (bcrypt.dll) #295

SHS: validation number 1773

DRBG: validation number 193

SIG(ver): CURVES(P-256 P-384 P-521)

SHS: validation number 1773

DRBG: validation number 193

FIPS186-4:
PKG: CURVES(P-256 P-384 P-521
ExtraRandomBits)

SigGen: CURVES(P-256: (SHA-256) P-


384: (SHA-384) P-521: (SHA-512)

SigVer: CURVES(P-256: (SHA-256) P-


384: (SHA-384) P-521: (SHA-512))

SHS: validation number 1773

DRBG: validation number 193 .

FIPS186-2: Windows Server 2008 R2 and SP1 CNG algorithms #142


PKG: CURVES(P-256 P-384 P-521)
Windows 7 Ultimate and SP1 CNG algorithms #141
SHS: validation number 1081

DRBG: validation number 23

SIG(ver): CURVES(P-256 P-384 P-521)

SHS: validation number 1081

DRBG: validation number 23 .

FIPS186-2: Windows Server 2008 CNG algorithms #83


PKG: CURVES(P-256 P-384 P-521)
Windows Vista Ultimate SP1 CNG algorithms #82
SHS: validation number 753

SIG(ver): CURVES(P-256 P-384 P-521)

SHS: validation number 753 .

FIPS186-2: Windows Vista CNG algorithms #60


PKG: CURVES(P-256 P-384 P-521)
Modes / States / Key Sizes Algorithm Implementation and Certificate #

SHS: validation number 618

RNG: validation number 321

SIG(ver): CURVES(P-256 P-384 P-521)

SHS: validation number 618

RNG: validation number 321 .

Keyed-Hash Message Authentication Code (HMAC)

Modes / States / Algorithm Implementation and Certificate #


Key Sizes

HMAC-SHA-1: Microsoft Surface Hub Virtual TPM Implementations #3271

Key Sizes < Block Version 10.0.15063.674


Size

Key Sizes > Block


Size

Key Sizes = Block


Size

HMAC-SHA2-256:

Key Sizes < Block


Size

Key Sizes > Block


Size

Key Sizes = Block


Size
HMAC-SHA2-384:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
Prerequisite: SHS #4011

HMAC-SHA-1: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall


Key Sizes < Block Creators Update; Windows Server, Windows Server Datacenter
Size (version 1709); Virtual TPM Implementations #3270

Version 10.0.16299
Key Sizes
Modes > Block
/ States / Algorithm Implementation and Certificate #
SizeKey Sizes
Key Sizes = Block
Size
HMAC-SHA2-256:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
HMAC-SHA2-384:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
Prerequisite: SHS #4009

HMAC-SHA-1: Microsoft Surface Hub SymCrypt Cryptographic Implementations


Key Sizes < Block #3269
Size
Key Sizes > Block Version 10.0.15063.674
Size
Key Sizes = Block
Size
HMAC-SHA2-256:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
HMAC-SHA2-384:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
HMAC-SHA2-512:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
Prerequisite: SHS #4011
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

HMAC-SHA-1: Windows 10 Mobile (version 1709) SymCrypt Cryptographic


Key Sizes < Block Implementations #3268
Size
Key Sizes > Block Version 10.0.15254
Size
Key Sizes = Block
Size
HMAC-SHA2-256:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
HMAC-SHA2-384:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
HMAC-SHA2-512:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
Prerequisite: SHS #4010

HMAC-SHA-1: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall


Key Sizes < Block Creators Update; Windows Server, Windows Server Datacenter
Size (version 1709); SymCrypt Cryptographic Implementations #3267
Key Sizes > Block
Size Version 10.0.16299
Key Sizes = Block
Size
HMAC-SHA2-256:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
HMAC-SHA2-384:
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

Key Sizes < Block


Size
Key Sizes > Block
Size
Key Sizes = Block
Size
HMAC-SHA2-512:
Key Sizes < Block
Size
Key Sizes > Block
Size
Key Sizes = Block
Size
Prerequisite: SHS #4009

HMAC-SHA1 (Key Sizes Windows 10 Creators Update (version 1703) Pro, Enterprise, Education
Ranges Tested: KSBS) Virtual TPM Implementations #3062
SHS validation number
3790 Version 10.0.15063

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3790

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3790

HMAC-SHA1(Key Sizes Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,
Ranges Tested: KSBS) Education, Windows 10 S, Windows 10 Mobile SymCrypt
SHS validation number Cryptographic Implementations #3061
3790
Version 10.0.15063
HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3790

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3790

HMAC-SHA512 (Key
Size Ranges Tested:
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

KSBS) SHS validation


number 3790

HMAC-SHA1 (Key Sizes Windows Embedded Compact Enhanced Cryptographic Provider


Ranges Tested: KSBS) (RSAENH) #2946
SHS validation number
3652 Version 7.00.2872

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3652

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3652

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHSvalidation
number 3652

HMAC-SHA1 (Key Sizes Windows Embedded Compact Enhanced Cryptographic Provider


Ranges Tested: KSBS) (RSAENH) #2945
SHS validation number
3651 Version 8.00.6246

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3651

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3651

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHSvalidation
number 3651

HMAC-SHA1 (Key Sizes Windows Embedded Compact Cryptographic Primitives Library


Ranges Tested: KSBS) (bcrypt.dll) #2943
SHS validation number
3649 Version 7.00.2872
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3649

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3649

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHSvalidation
number 3649

HMAC-SHA1 (Key Sizes Windows Embedded Compact Cryptographic Primitives Library


Ranges Tested: KSBS) (bcrypt.dll) #2942
SHS validation number
3648 Version 8.00.6246

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3648

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3648

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHSvalidation
number 3648

HMAC-SHA1 (Key Sizes Microsoft Windows 10 Anniversary Update, Windows Server 2016,
Ranges Tested: KSBS) Windows Storage Server 2016; Microsoft Surface Book, Surface Pro 4,
and Surface Pro 3 w/ Windows 10 Anniversary Update Virtual TPM
SHS validation number Implementations #2661
3347
Version 10.0.14393
HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3347

HMAC-SHA384 (Key
Size Ranges Tested:
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

KSBS) SHS validation


number 3347

HMAC-SHA1 (Key Sizes Microsoft Windows 10 Anniversary Update, Windows Server 2016,
Ranges Tested: KSBS) Windows Storage Server 2016; Microsoft Surface Book, Surface Pro 4,
SHS validation number Surface Pro 3 and Surface 3 w/ Windows 10 Anniversary Update;
3347 Microsoft Lumia 950 and Lumia 650 w/ Windows 10 Mobile
Anniversary Update SymCrypt Cryptographic Implementations #2651
HMAC-SHA256 (Key
Size Ranges Tested: Version 10.0.14393
KSBS) SHS validation
number 3347

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3347

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 3347

HMAC-SHA1 (Key Sizes Microsoft Windows 10 November 2015 Update; Microsoft Surface
Ranges Tested: KSBS) Book, Surface Pro 4, Surface Pro 3, Surface 3, Surface Pro 2, and
SHS validation number Surface Pro w/ Windows 10 November 2015 Update; Windows 10
3047 Mobile for Microsoft Lumia 950 and Microsoft Lumia 635; Windows 10
for Microsoft Surface Hub 84" and Surface Hub 55" SymCrypt
HMAC-SHA256 (Key Cryptographic Implementations #2381
Size Ranges Tested:
KSBS) Version 10.0.10586
SHS validation number
3047

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS)
SHS validation number
3047

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS)
SHS validation number
3047

HMAC-SHA1 (Key Sizes Microsoft Windows 10, Microsoft Surface Pro 3 with Windows 10,
Ranges Tested: KSBS) Microsoft Surface 3 with Windows 10, Microsoft Surface Pro 2 with
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

SHSvalidation number Windows 10, Microsoft Surface Pro with Windows 10 SymCrypt
2886 Cryptographic Implementations #2233

HMAC-SHA256 (Key Version 10.0.10240


Size Ranges Tested:
KSBS)
SHSvalidation number
2886

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS)
SHSvalidation number
2886

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS)
SHSvalidation number
2886

HMAC-SHA1 (Key Sizes Windows Storage Server 2012 R2, Microsoft Windows RT 8.1,
Ranges Tested: KSBS) Microsoft Surface with Windows RT 8.1, Microsoft Surface Pro with
SHS validation number Windows 8.1, Microsoft Surface 2, Microsoft Surface Pro 2, Microsoft
2373 Surface Pro 3, Microsoft Windows Phone 8.1, Microsoft Windows
Embedded 8.1 Industry, and Microsoft StorSimple 8100 SymCrypt
HMAC-SHA256 (Key Cryptographic Implementations #1773
Size Ranges Tested:
KSBS) Version 6.3.9600
SHS validation number
2373

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS)
SHS validation number
2373

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS)
SHS validation number
2373

HMAC-SHA1 (Key Sizes Windows CE and Windows Mobile, and Windows Embedded Handheld
Ranges Tested: KSBS) Enhanced Cryptographic Provider (RSAENH) #2122
SHS validation number
2764 Version 5.2.29344
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 2764

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 2764

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 2764

HMAC-SHA1 (Key Sizes Windows 8, Windows RT, Windows Server 2012, Surface Windows RT,
Ranges Tested: KS#1902 Surface Windows 8 Pro, and Windows Phone 8 BitLocker®
Cryptographic Implementations #1347
HMAC-SHA256 (Key
Size Ranges Tested:
KS#1902

HMAC-SHA1 (Key Sizes Windows 8, Windows RT, Windows Server 2012, Surface Windows RT,
Ranges Tested: KSBS) Surface Windows 8 Pro, and Windows Phone 8 Enhanced
SHS#1902 Cryptographic Provider (RSAENH) #1346

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS#1902

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS#1902

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS#1902

HMAC-SHA1 (Key Sizes Windows 8, Windows RT, Windows Server 2012, Surface Windows RT,
Ranges Tested: KSBS) Surface Windows 8 Pro, and Windows Phone 8 Next Generation
SHS#1903 Symmetric Cryptographic Algorithms Implementations (SYMCRYPT)
#1345
HMAC-SHA256 (Key
Size Ranges Tested:
KSBS)
SHS#1903

HMAC-SHA384 (Key
Size Ranges Tested:
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

KSBS)
SHS#1903

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS)
SHS#1903

HMAC-SHA1 (Key Sizes Windows Embedded Compact 7 Cryptographic Primitives Library


Ranges Tested: KSBS) (bcrypt.dll), #1364
SHS validation number
1773

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 1773
Tinker HMAC-SHA384
(Key Size Ranges
Tested: KSBS) SHS
validation number 1773

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 1773

HMAC-SHA1 (Key Sizes Windows Embedded Compact 7 Enhanced Cryptographic Provider


Ranges Tested: KSBS) (RSAENH) #1227
SHS validation number
1774

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 1774

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 1774

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 1774

HMAC-SHA1 (Key Sizes Windows Server 2008 R2 and SP1 CNG algorithms #686
Ranges Tested: KSBS)
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

SHS validation number Windows 7 and SP1 CNG algorithms #677


1081
Windows Server 2008 R2 Enhanced Cryptographic Provider (RSAENH)
HMAC-SHA256 (Key #687
Size Ranges Tested:
KSBS) SHS validation Windows 7 Enhanced Cryptographic Provider (RSAENH) #673
number 1081

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 1081

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 1081

HMAC-SHA1(Key Sizes Windows 7 and SP1 and Windows Server 2008 R2 and SP1 BitLocker
Ranges Tested: Algorithm Implementations #675
KSvalidation number
1081

HMAC-SHA256 (Key
Size Ranges Tested:
KSvalidation number
1081

HMAC-SHA1 (Key Sizes Windows Server 2003 SP2 Enhanced Cryptographic Provider (RSAENH)
Ranges Tested: KSBS) #452
SHS validation number
816

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 816

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 816

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 816
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

HMAC-SHA1 (Key Sizes Windows Vista Ultimate SP1 and Windows Server 2008 BitLocker
Ranges Tested: Algorithm Implementations #415
KSvalidation number
753

HMAC-SHA256 (Key
Size Ranges Tested:
KSvalidation number
753

HMAC-SHA1 (Key Sizes Windows Server 2008 Enhanced Cryptographic Provider (RSAENH)
Ranges Tested: KSBS) #408
SHS validation number
753 Windows Vista Enhanced Cryptographic Provider (RSAENH) #407

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 753

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 753

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 753

HMAC-SHA1 (Key Sizes Windows Vista Enhanced Cryptographic Provider (RSAENH) #297
Ranges Tested:
KSBS)SHS validation
number 618

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 618

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 618

HMAC-SHA512 (Key
Size Ranges Tested:
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

KSBS) SHS validation


number 618

HMAC-SHA1 (Key Sizes Windows XP Professional SP3 Kernel Mode Cryptographic Module
Ranges Tested: KSBS) (fips.sys) #429
SHS validation number
785 Windows XP, vendor-affirmed

HMAC-SHA1 (Key Sizes Windows XP Professional SP3 Enhanced Cryptographic Provider


Ranges Tested: KSBS) (RSAENH) #428
SHS validation number
783

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 783

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 783

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 783

HMAC-SHA1 (Key Sizes Windows Server 2003 SP2 Enhanced Cryptographic Provider (RSAENH)
Ranges Tested: KSBS) #289
SHS validation number
613

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 613

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 613

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 613
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

HMAC-SHA1 (Key Sizes Windows Server 2003 SP2 Kernel Mode Cryptographic Module
Ranges Tested: KSBS) (fips.sys) #287
SHS validation number
610

HMAC-SHA1 (Key Sizes Windows Server 2008 CNG algorithms #413


Ranges Tested: KSBS)
SHS validation number Windows Vista Ultimate SP1 CNG algorithms #412
753

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 753

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 753

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 753

HMAC-SHA1 (Key Sizes Windows Vista Ultimate BitLocker Drive Encryption #386
Ranges Tested:
KSvalidation number
737

HMAC-SHA256 (Key
Size Ranges Tested:
KSvalidation number
737

HMAC-SHA1 (Key Sizes Windows Vista CNG algorithms #298


Ranges Tested: KSBS)
SHS validation number
618

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 618

HMAC-SHA384 (Key
Size Ranges Tested:
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

KSBS) SHS validation


number 618

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 618

HMAC-SHA1 (Key Sizes Windows CE 6.0 and Windows CE 6.0 R2 and Windows Mobile
Ranges Tested: KSBS) Enhanced Cryptographic Provider (RSAENH) #267
SHS validation number
589

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS)SHS validation
number 589

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 589

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 589

HMAC-SHA1 (Key Sizes Windows CE and Windows Mobile 6.0 and Windows Mobil 6.5
Ranges Tested: KSBS) Enhanced Cryptographic Provider (RSAENH) #260
SHS validation number
578

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 578

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 578

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 578
Modes / States / Algorithm Implementation and Certificate #
Key Sizes

HMAC-SHA1 (Key Sizes Windows Vista BitLocker Drive Encryption #199


Ranges Tested:
KSvalidation number
495

HMAC-SHA256 (Key
Size Ranges Tested:
KSvalidation number
495

HMAC-SHA1 (Key Sizes Windows Server 2003 SP1 Enhanced Cryptographic Provider (RSAENH)
Ranges Tested: KSBS) #99
SHS validation number
364 Windows XP, vendor-affirmed

HMAC-SHA1 (Key Sizes Windows CE 5.00 and Windows CE 5.01 Enhanced Cryptographic
Ranges Tested: KSBS) Provider (RSAENH) #31
SHS validation number
305

HMAC-SHA256 (Key
Size Ranges Tested:
KSBS) SHS validation
number 305

HMAC-SHA384 (Key
Size Ranges Tested:
KSBS) SHS validation
number 305

HMAC-SHA512 (Key
Size Ranges Tested:
KSBS) SHS validation
number 305

Key Agreement Scheme (KAS)

Modes / States / Key Sizes Algorithm Implementation and Certificate #

KAS ECC: Microsoft Surface Hub Virtual TPM


Functions: Domain Parameter Generation, Implementations #150
Domain Parameter Validation, Full Public Key
Validation, Key Pair Generation, Public Key Version 10.0.15063.674
Regeneration

Schemes:

Full Unified:
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Key Agreement Roles: Initiator,


Responder
KDFs: Concatenation
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
MAC: HMAC
ED:
Curve: P-384
SHA: SHA-384
MAC: HMAC
Prerequisite: SHS #4011 , ECDSA #1253 ,
DRBG #1734

KAS ECC: Windows 10 Home, Pro, Enterprise, Education,


Functions: Domain Parameter Generation, Windows 10 S Fall Creators Update; Windows
Domain Parameter Validation, Full Public Key Server, Windows Server Datacenter (version 1709);
Validation, Key Pair Generation, Public Key Virtual TPM Implementations #149
Regeneration
Version 10.0.16299
Schemes:

Full Unified:
Key Agreement Roles: Initiator,
Responder
KDFs: Concatenation
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
MAC: HMAC
ED:
Curve: P-384
SHA: SHA-384
MAC: HMAC
Prerequisite: SHS #4009 , ECDSA #1252 ,
DRBG #1733

KAS ECC: Microsoft Surface Hub SymCrypt Cryptographic


Functions: Domain Parameter Generation, Implementations #148
Domain Parameter Validation, Key Pair
Generation, Partial Public Key Validation, Version 10.0.15063.674
Public Key Regeneration

Schemes:

Ephemeral Unified:
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Key Agreement Roles: Initiator,


Responder
KDFs: Concatenation
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
MAC: HMAC
ED:
Curve: P-384
SHA: SHA-384
MAC: HMAC
EE:
Curve: P-521
SHA: SHA-512
MAC: HMAC
One-Pass DH:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
MAC: HMAC
ED:
Curve: P-384
SHA: SHA-384
MAC: HMAC
EE:
Curve: P-521
SHA: SHA-512
MAC: HMAC
Static Unified:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
MAC: HMAC
ED:

Curve: P-384
SHA: SHA-384
MAC: HMAC
EE:
Curve: P-521
SHA: SHA-512
Modes / States / Key Sizes Algorithm Implementation and Certificate #

MAC: HMAC
Prerequisite: SHS #4011 , ECDSA #1250 ,
DRBG #1732

KAS FFC:
Functions: Domain Parameter Generation,
Domain Parameter Validation, Key Pair
Generation, Partial Public Key Validation

Schemes:

dhEphem:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
FB:
SHA: SHA-256
MAC: HMAC
FC:
SHA: SHA-256
MAC: HMAC
dhOneFlow:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
FB:
SHA: SHA-256
MAC: HMAC
FC
SHA: SHA-256
MAC: HMAC
dhStatic:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
FB:
SHA: SHA-256
MAC: HMAC
FC:
SHA: SHA-256
MAC: HMAC
Prerequisite: SHS #4011 , DSA #1303 ,
DRBG #1732

KAS ECC: Windows 10 Mobile (version 1709) SymCrypt


Functions: Domain Parameter Generation, Cryptographic Implementations #147
Domain Parameter Validation, Key Pair
Generation, Partial Public Key Validation, Version 10.0.15254
Public Key Regeneration
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Schemes:

Ephemeral Unified:
Key Agreement Roles: Initiator,
Responder
KDFs: Concatenation
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
MAC: HMA
ED:
Curve: P-384
SHA: SHA-384
MAC: HMAC
EE:
Curve: P-521
SHA: SHA-512
MAC: HMAC
One-Pass DH:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
MAC: HMAC
ED:
Curve: P-384
SHA: SHA-384
MAC: HMAC
EE:
Curve: P-521
SHA: SHA-512
MAC: HMAC
Static Unified:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
MAC: HMAC
ED:
Curve: P-384
SHA: SHA-384
MAC: HMAC
EE:
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Curve: P-521
SHA: SHA-512
MAC: HMAC
Prerequisite: SHS #4010 , ECDSA #1249 ,
DRBG #1731

KAS FFC:
Functions: Domain Parameter Generation,
Domain Parameter Validation, Key Pair
Generation, Partial Public Key Validation

Schemes:

dhEphem:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
FB:
SHA: SHA-256
MAC: HMAC
FC:
SHA: SHA-256
MAC: HMAC
dhOneFlow:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
FB:
SHA: SHA-256
MAC: HMAC
FC
SHA: SHA-256
MAC: HMAC
dhStatic:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
FB:
SHA: SHA-256
MAC: HMAC
FC:
SHA: SHA-256
MAC: HMAC
Prerequisite: SHS #4010 , DSA #1302 ,
DRBG #1731

KAS ECC: Windows 10 Home, Pro, Enterprise, Education,


Windows 10 S Fall Creators Update; Windows
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Server, Windows Server Datacenter (version 1709);


Functions: Domain Parameter Generation, SymCrypt Cryptographic Implementations #146
Domain Parameter Validation, Key Pair
Generation, Partial Public Key Validation, Version 10.0.16299
Public Key Regeneration

Schemes:

Ephemeral Unified:
Key Agreement Roles: Initiator,
Responder
KDFs: Concatenation
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
MAC: HMAC
ED:
Curve: P-384
SHA: SHA-384
MAC: HMAC
EE:
Curve: P-521
SHA: SHA-512
MAC: HMAC
One-Pass DH:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:EC:
Curve: P-256
SHA: SHA-256
MAC: HMAC
ED
Curve: P-384
SHA: SHA-384
MAC: HMAC
EE:
Curve: P-521
SHA: SHA-512
MAC: HMAC
Static Unified:

Key Agreement Roles: Initiator,


Responder
Parameter Sets:
EC:
Curve: P-256
SHA: SHA-256
Modes / States / Key Sizes Algorithm Implementation and Certificate #

MAC: HMAC
ED:
Curve: P-384
SHA: SHA-384
MAC: HMAC
EE:
Curve: P-521
SHA: SHA-512
MAC: HMAC
Prerequisite: SHS #4009 , ECDSA #1246 ,
DRBG #1730

KAS FFC:
Functions: Domain Parameter Generation,
Domain Parameter Validation, Key Pair
Generation, Partial Public Key Validation

Schemes:

dhEphem:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
FB:
SHA: SHA-256
MAC: HMAC
FC:
SHA: SHA-256
MAC: HMAC
dhOneFlow:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
FB:
SHA: SHA-256
MAC: HMAC
FC:
SHA: SHA-256
MAC: HMAC
dhStatic:
Key Agreement Roles: Initiator,
Responder
Parameter Sets:
FB:
SHA: SHA-256
MAC: HMAC
FC:
SHA: SHA-256
Modes / States / Key Sizes Algorithm Implementation and Certificate #

MAC: HMAC
Prerequisite: SHS #4009 , DSA #1301 ,
DRBG #1730

ECC: (FUNCTIONS INCLUDED IN Windows 10 Creators Update (version 1703) Pro,


IMPLEMENTATION: DPG DPV KPG Full Enterprise, Education Virtual TPM
Validation Key Regeneration) SCHEMES Implementations #128
[FullUnified (EC: P-256 SHA256 HMAC) (ED:
P-384 SHA384 HMAC)] Version 10.0.15063

SHS validation number 3790

DSA validation number 1135

DRBG validation number 1556

FFC: (FUNCTIONS INCLUDED IN Windows 10 Creators Update (version 1703)


IMPLEMENTATION: DPG DPV KPG Partial Home, Pro, Enterprise, Education, Windows 10 S,
Validation) Windows 10 Mobile SymCrypt Cryptographic
Implementations #127
SCHEMES [dhEphem (KARole(s): Initiator /
Responder)(FB: SHA256) (FC: SHA256)] Version 10.0.15063

[dhOneFlow (FB: SHA256) (FC: SHA256)]

[dhStatic (No_KC < KARole(s): Initiator /


Responder>) (FB: SHA256 HMAC) (FC:
SHA256 HMAC)]

SHS validation number 3790

DSA validation number 1223

DRBG validation number 1555 ECC:


(FUNCTIONS INCLUDED IN
IMPLEMENTATION: DPG DPV KPG Partial
Validation) SCHEMES [EphemeralUnified
(No_KC < KARole(s): Initiator / Responder>)
(EC: P-256 SHA256 HMAC) (ED: P-384
SHA384 HMAC) (EE: P-521 HMAC (SHA512,
HMAC_SHA512)))]

[OnePassDH (No_KC < KARole(s): Initiator /


Responder>) (EC: P-256 SHA256 HMAC) (ED:
P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

[StaticUnified (No_KC < KARole(s): Initiator /


Responder>) (EC: P-256 SHA256 HMAC) (ED:
P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]
Modes / States / Key Sizes Algorithm Implementation and Certificate #

SHS validation number 3790

ECDSA validation number 1133 DRBG


validation number 1555

FFC: (FUNCTIONS INCLUDED IN Windows Embedded Compact Cryptographic


IMPLEMENTATION: DPG DPV KPG Partial Primitives Library (bcrypt.dll) #115
Validation)
Version 7.00.2872
SCHEMES [dhEphem (KARole(s): Initiator /
Responder)(FB: SHA256) (FC: SHA256)]

[dhOneFlow (KARole(s): Initiator /


Responder) (FB: SHA256) (FC: SHA256)]
[dhStatic (No_KC < KARole(s): Initiator /
Responder>) (FB: SHA256 HMAC) (FC:
SHA256 HMAC)]

SHS validation number 3649

DSA validation number 1188

DRBG validation number 1430

ECC: (FUNCTIONS INCLUDED IN


IMPLEMENTATION: DPG DPV KPG Partial
Validation Key Regeneration)

SCHEMES [EphemeralUnified (No_KC <


KARole(s): Initiator / Responder>) (EC: P-256
SHA256 HMAC) (ED: P-384 SHA384 HMAC)
(EE: P-521 HMAC (SHA512,
HMAC_SHA512)))]

[OnePassDH (No_KC < KARole(s): Initiator /


Responder>) (EC: P-256 SHA256 HMAC) (ED:
P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

[StaticUnified (No_KC < KARole(s): Initiator /


Responder>) (EC: P-256 SHA256 HMAC) (ED:
P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

FFC: (FUNCTIONS INCLUDED IN Windows Embedded Compact Cryptographic


IMPLEMENTATION: DPG DPV KPG Partial Primitives Library (bcrypt.dll) #114
Validation)
Version 8.00.6246
SCHEMES [dhEphem (KARole(s): Initiator /
Responder)(FB: SHA256) (FC: SHA256)]
Modes / States / Key Sizes Algorithm Implementation and Certificate #

[dhHybridOneFlow (No_KC < KARole(s):


Initiator / Responder>) (**FB:**SHA256
HMAC) (FC: SHA256 HMAC)]

[dhStatic (No_KC < KARole(s): Initiator /


Responder>) (**FB:**SHA256 HMAC) (FC:
SHA256 HMAC)]

SHS validation number 3648

DSA validation number 1187

DRBG validation number 1429

ECC: (FUNCTIONS INCLUDED IN


IMPLEMENTATION: DPG DPV KPG Partial
Validation Key Regeneration)

SCHEMES [EphemeralUnified (No_KC) (EC:


P-256 SHA256 HMAC) (ED: P-384 SHA384
HMAC) (EE: P-521 HMAC (SHA512,
HMAC_SHA512)))]

[OnePassDH (No_KC < KARole(s): Initiator /


Responder>) (EC: P-256 SHA256 HMAC) (ED:
P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

[StaticUnified (No_KC < KARole(s): Initiator /


Responder>) (EC: P-256 SHA256 HMAC) (ED:
P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

SHS validation number 3648

ECDSA validation number 1072

DRBG validation number 1429

ECC: (FUNCTIONS INCLUDED IN Microsoft Windows 10 Anniversary Update,


IMPLEMENTATION: DPG DPV KPG Full Windows Server 2016, Windows Storage Server
Validation Key Regeneration) 2016; Microsoft Surface Book, Surface Pro 4, and
Surface Pro 3 w/ Windows 10 Anniversary Update
SCHEMES [FullUnified (No_KC < KARole(s): Virtual TPM Implementations #93
Initiator / Responder > < KDF: CONCAT >)
(EC: P-256 SHA256 HMAC) (ED: P-384 Version 10.0.14393
SHA384 HMAC)]
Modes / States / Key Sizes Algorithm Implementation and Certificate #

SHS validation number 3347 ECDSA


validation number 920 DRBG validation
number 1222

FFC: (FUNCTIONS INCLUDED IN Microsoft Windows 10 Anniversary Update,


IMPLEMENTATION: DPG DPV KPG Partial Windows Server 2016, Windows Storage Server
Validation) 2016; Microsoft Surface Book, Surface Pro 4,
Surface Pro 3 and Surface 3 w/ Windows 10
SCHEMES [dhEphem (KARole(s): Initiator / Anniversary Update; Microsoft Lumia 950 and
Responder)(FB: SHA256) (FC: SHA256)] Lumia 650 w/ Windows 10 Mobile Anniversary
Update Cryptography Next Generation (CNG)
[dhOneFlow (KARole(s): Initiator /
Implementations #92
Responder) (FB: SHA256) (FC: SHA256)]
[dhStatic (No_KC < KARole(s): Initiator / Version 10.0.14393
Responder >) (FB: SHA256 HMAC) (FC:
SHA256 HMAC)]

SHS validation number 3347 DSA


validation number 1098 DRBG validation
number 1217

ECC: (FUNCTIONS INCLUDED IN


IMPLEMENTATION: DPG DPV KPG Partial
Validation Key Regeneration) SCHEMES
[EphemeralUnified (No_KC < KARole(s):
Initiator / Responder >) (EC: P-256 SHA256
HMAC) (ED: P-384 SHA384 HMAC) (EE: P-
521 HMAC (SHA512, HMAC_SHA512)))]

[OnePassDH (No_KC < KARole(s): Initiator /


Responder >) (EC: P-256 SHA256 HMAC)
(ED: P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

[StaticUnified (No_KC < KARole(s): Initiator /


Responder >) (EC: P-256 SHA256 HMAC)
(ED: P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

SHS validation number 3347 DSA


validation number 1098 ECDSA validation
number 911 DRBG validation number
1217 HMAC validation number 2651

FFC: (FUNCTIONS INCLUDED IN Microsoft Windows 10 November 2015 Update;


IMPLEMENTATION: DPG DPV KPG Partial Microsoft Surface Book, Surface Pro 4, Surface Pro
Validation) SCHEMES [dhEphem (KARole(s): 3, Surface 3, Surface Pro 2, and Surface Pro w/
Initiator / Responder)(FB: SHA256) (FC: Windows 10 November 2015 Update; Windows 10
SHA256)] Mobile for Microsoft Lumia 950 and Microsoft
Lumia 635; Windows 10 for Microsoft Surface Hub
Modes / States / Key Sizes Algorithm Implementation and Certificate #

[dhOneFlow (KARole(s): Initiator / and Surface Hub Cryptography Next Generation


Responder) (FB: SHA256) (FC: SHA256)] (CNG) Implementations #72
[dhStatic (No_KC < KARole(s): Initiator /
Responder >) (FB: SHA256 HMAC) (FC: Version 10.0.10586
SHA256 HMAC)]

SHS validation number 3047 DSA


validation number 1024 DRBG validation
number 955

ECC: (FUNCTIONS INCLUDED IN


IMPLEMENTATION: DPG DPV KPG Partial
Validation Key Regeneration) SCHEMES
[EphemeralUnified (No_KC < KARole(s):
Initiator / Responder >) (EC: P-256 SHA256
HMAC) (ED: P-384 SHA384 HMAC) (EE: P-
521 HMAC (SHA512, HMAC_SHA512)))]

[OnePassDH (No_KC < KARole(s): Initiator /


Responder >) (EC: P-256 SHA256 HMAC)
(ED: P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

[StaticUnified (No_KC < KARole(s): Initiator /


Responder >) (EC: P-256 SHA256 HMAC)
(ED: P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

SHS validation number 3047 ECDSA


validation number 760 DRBG validation
number 955

FFC: (FUNCTIONS INCLUDED IN Microsoft Windows 10, Microsoft Surface Pro 3


IMPLEMENTATION: DPG DPV KPG Partial with Windows 10, Microsoft Surface 3 with
Validation) SCHEMES [dhEphem (KARole(s): Windows 10, Microsoft Surface Pro 2 with
Initiator / Responder)(FB: SHA256) (FC: Windows 10, Microsoft Surface Pro with Windows
SHA256)] 10 Cryptography Next Generation (CNG)
Implementations #64
[dhOneFlow (KARole(s): Initiator /
Responder) (FB: SHA256) (FC: SHA256)] Version 10.0.10240
[dhStatic (No_KC < KARole(s): Initiator /
Responder >) (FB: SHA256 HMAC) (FC:
SHA256 HMAC)]

SHS validation number 2886 DSA


validation number 983 DRBG validation
number 868

ECC: (FUNCTIONS INCLUDED IN


IMPLEMENTATION: DPG DPV KPG Partial
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Validation Key Regeneration) SCHEMES


[EphemeralUnified (No_KC < KARole(s):
Initiator / Responder >) (EC: P-256 SHA256
HMAC) (ED: P-384 SHA384 HMAC) (EE: P-
521 HMAC (SHA512, HMAC_SHA512)))]

[OnePassDH (No_KC < KARole(s): Initiator /


Responder >) (EC: P-256 SHA256 HMAC)
(ED: P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

[StaticUnified (No_KC < KARole(s): Initiator /


Responder >) (EC: P-256 SHA256 HMAC)
(ED: P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

SHS validation number 2886 ECDSA


validation number 706 DRBG validation
number 868

FFC: (FUNCTIONS INCLUDED IN Windows Storage Server 2012 R2, Microsoft


IMPLEMENTATION: DPG DPV KPG Partial Windows RT 8.1, Microsoft Surface with Windows
Validation) SCHEMES [dhEphem (KARole(s): RT 8.1, Microsoft Surface Pro with Windows 8.1,
Initiator / Responder)(FB: SHA256) (FC: Microsoft Surface 2, Microsoft Surface Pro 2,
SHA256)] Microsoft Surface Pro 3, Microsoft Windows
Phone 8.1, Microsoft Windows Embedded 8.1
[dhOneFlow (KARole(s): Initiator / Industry, and Microsoft StorSimple 8100
Responder) (FB: SHA256) (FC: SHA256)] Cryptography Next Generation Cryptographic
[dhStatic (No_KC < KARole(s): Initiator / Implementations #47
Responder >) (FB: SHA256 HMAC) (FC:
SHA256 HMAC)] Version 6.3.9600

SHS validation number 2373 DSA


validation number 855 DRBG validation
number 489

ECC: (FUNCTIONS INCLUDED IN


IMPLEMENTATION: DPG DPV KPG Partial
Validation Key Regeneration) SCHEMES
[EphemeralUnified (No_KC < KARole(s):
Initiator / Responder >) (EC: P-256 SHA256
HMAC) (ED: P-384 SHA384 HMAC) (EE: P-
521 HMAC (SHA512, HMAC_SHA512)))]

[OnePassDH (No_KC < KARole(s): Initiator /


Responder >) (EC: P-256 SHA256 HMAC)
(ED: P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]
Modes / States / Key Sizes Algorithm Implementation and Certificate #

[StaticUnified (No_KC < KARole(s): Initiator /


Responder >) (EC: P-256 SHA256 HMAC)
(ED: P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

SHS validation number 2373 ECDSA


validation number 505 DRBG validation
number 489

FFC: (FUNCTIONS INCLUDED IN Windows 8, Windows RT, Windows Server 2012,


IMPLEMENTATION: DPG DPV KPG Partial Surface Windows RT, Surface Windows 8 Pro, and
Validation) SCHEMES [dhEphem (KARole(s): Windows Phone 8 Cryptography Next Generation
Initiator / Responder) (CNG) Implementations #36

(FA: SHA256) (FB: SHA256) (FC: SHA256)]

[dhOneFlow (KARole(s): Initiator /


Responder) (FA: SHA256) (FB: SHA256) (FC:
SHA256)]

[dhStatic (No_KC < KARole(s): Initiator /


Responder>) (FA: SHA256 HMAC) (FB:
SHA256 HMAC) (FC: SHA256 HMAC)]

SHS #1903 DSA validation number 687


DRBG #258

ECC: (FUNCTIONS INCLUDED IN


IMPLEMENTATION: DPG DPV KPG Partial
Validation Key Regeneration) SCHEMES

[EphemeralUnified (No_KC < KARole(s):


Initiator / Responder>) (EC: P-256 SHA256
HMAC) (ED: P-384 SHA384 HMAC) (EE: P-
521 HMAC (SHA512, HMAC_SHA512)))]

[OnePassDH(No_KC < KARole(s): Initiator /


Responder>) (EC: P-256 SHA256) (ED: P-384
SHA384) (EE: P-521 (SHA512,
HMAC_SHA512)))]

[StaticUnified (No_KC < KARole(s): Initiator /


Responder>) (EC: P-256 SHA256 HMAC) (ED:
P-384 SHA384 HMAC) (EE: P-521 HMAC
(SHA512, HMAC_SHA512))]

SHS #1903

ECDSA validation number 341 DRBG #258

KAS (SP 800-56A) Windows 7 and SP1, vendor-affirmed


Modes / States / Key Sizes Algorithm Implementation and Certificate #

Key Agreement: Key establishment Windows Server 2008 R2 and SP1, vendor-
methodology provides 80 bits to 256 bits of affirmed
encryption strength

SP 800-108 Key-Based Key Derivation Functions (KBKDF)

Modes / States / Key Sizes Algorithm Implementation and Certificate #

Counter: Microsoft Surface Hub Virtual TPM


MACs: HMAC-SHA-1, HMAC-SHA-256, HMAC- Implementations #161
SHA-384
Version 10.0.15063.674
MAC prerequisite: HMAC #3271

Counter Location: Before Fixed Data


R Length: 32 (bits)
SPs used to generate K: SP 800-56A, SP 800-
90A
K prerequisite: DRBG #1734 , KAS #150

Counter: Windows 10 Home, Pro, Enterprise,


MACs: HMAC-SHA-1, HMAC-SHA-256, HMAC- Education, Windows 10 S Fall Creators
SHA-384 Update; Windows Server, Windows Server
Datacenter (version 1709); Virtual TPM
MAC prerequisite: HMAC #3270 Implementations #160

Counter Location: Before Fixed Data Version 10.0.16299


R Length: 32 (bits)
SPs used to generate K: SP 800-56A, SP 800-
90A
K prerequisite: DRBG #1733 , KAS #149

Counter: Microsoft Surface Hub Cryptography Next


MACs: CMAC-AES-128, CMAC-AES-192, CMAC- Generation (CNG) Implementations #159
AES-256, HMAC-SHA-1, HMAC-SHA-256, HMAC-
SHA-384, HMAC-SHA-512 Version 10.0.15063.674

MAC prerequisite: AES #4902 , HMAC #3269

Counter Location: Before Fixed Data


R Length: 32 (bits)
SPs used to generate K: SP 800-56A, SP 800-
90A
K prerequisite: KAS #148

Counter: Windows 10 Mobile (version 1709)


MACs: CMAC-AES-128, CMAC-AES-192, CMAC- Cryptography Next Generation (CNG)
AES-256, HMAC-SHA-1, HMAC-SHA-256, HMAC- Implementations #158
SHA-384, HMAC-SHA-512
Version 10.0.15254
Modes / States / Key Sizes Algorithm Implementation and Certificate #

MAC prerequisite: AES #4901 , HMAC #3268

Counter Location: Before Fixed Data


R Length: 32 (bits)
SPs used to generate K: SP 800-56A, SP 800-
90A
K prerequisite: KAS #147

Counter: Windows 10 Home, Pro, Enterprise,


MACs: CMAC-AES-128, CMAC-AES-192, CMAC- Education, Windows 10 S Fall Creators
AES-256, HMAC-SHA-1, HMAC-SHA-256, HMAC- Update; Windows Server, Windows Server
SHA-384, HMAC-SHA-512 Datacenter (version 1709); Cryptography Next
Generation (CNG) Implementations #157
MAC prerequisite: AES #4897 , HMAC #3267
Version 10.0.16299
Counter Location: Before Fixed Data
R Length: 32 (bits)
SPs used to generate K: SP 800-56A, SP 800-
90A
K prerequisite: KAS #146

CTR_Mode: (Llength(Min0 Max0) Windows 10 Creators Update (version 1703)


MACSupported([HMACSHA1] [HMACSHA256] Pro, Enterprise, Education Virtual TPM
[HMACSHA384]) Implementations #141
LocationCounter([BeforeFixedData]) rlength([32]))
Version 10.0.15063
KAS validation number 128

DRBG validation number 1556

MAC validation number 3062

CTR_Mode: (Llength(Min20 Max64) Windows 10 Creators Update (version 1703)


MACSupported([CMACAES128] [CMACAES192] Home, Pro, Enterprise, Education, Windows
[CMACAES256] [HMACSHA1] [HMACSHA256] 10 S, Windows 10 Mobile Cryptography Next
[HMACSHA384] [HMACSHA512]) Generation (CNG) Implementations #140
LocationCounter([BeforeFixedData]) rlength([32]))
Version 10.0.15063
KAS validation number 127

AES validation number 4624

DRBG validation number 1555

MAC validation number 3061

CTR_Mode: (Llength(Min20 Max64) Microsoft Windows 10 Anniversary Update,


MACSupported([HMACSHA1] [HMACSHA256] Windows Server 2016, Windows Storage
[HMACSHA384]) Server 2016; Microsoft Surface Book, Surface
LocationCounter([BeforeFixedData]) rlength([32])) Pro 4, and Surface Pro 3 w/ Windows 10
Modes / States / Key Sizes Algorithm Implementation and Certificate #

KAS validation number 93 DRBG validation Anniversary Update Virtual TPM


number 1222 MAC validation number 2661 Implementations #102

Version 10.0.14393

CTR_Mode: (Llength(Min20 Max64) Microsoft Windows 10 Anniversary Update,


MACSupported([CMACAES128] [CMACAES192] Windows Server 2016, Windows Storage
[CMACAES256] [HMACSHA1] [HMACSHA256] Server 2016; Microsoft Surface Book, Surface
[HMACSHA384] [HMACSHA512]) Pro 4, Surface Pro 3 and Surface 3 w/
LocationCounter([BeforeFixedData]) rlength([32])) Windows 10 Anniversary Update; Microsoft
Lumia 950 and Lumia 650 w/ Windows 10
KAS validation number 92 AES validation Mobile Anniversary Update Cryptography
number 4064 DRBG validation number 1217 Next Generation (CNG) Implementations
MAC validation number 2651 #101

Version 10.0.14393

CTR_Mode: (Llength(Min20 Max64) Microsoft Windows 10 November 2015


MACSupported([CMACAES128] [CMACAES192] Update; Microsoft Surface Book, Surface Pro
[CMACAES256] [HMACSHA1] [HMACSHA256] 4, Surface Pro 3, Surface 3, Surface Pro 2, and
[HMACSHA384] [HMACSHA512]) Surface Pro w/ Windows 10 November 2015
LocationCounter([BeforeFixedData]) rlength([32])) Update; Windows 10 Mobile for Microsoft
Lumia 950 and Microsoft Lumia 635;
KAS validation number 72 AES validation Windows 10 for Microsoft Surface Hub 84"
number 3629 DRBG validation number 955 and Surface Hub 55" Cryptography Next
MAC validation number 2381 Generation (CNG) Implementations #72

Version 10.0.10586

CTR_Mode: (Llength(Min20 Max64) Microsoft Windows 10, Microsoft Surface Pro


MACSupported([CMACAES128] [CMACAES192] 3 with Windows 10, Microsoft Surface 3 with
[CMACAES256] [HMACSHA1] [HMACSHA256] Windows 10, Microsoft Surface Pro 2 with
[HMACSHA384] [HMACSHA512]) Windows 10, Microsoft Surface Pro with
LocationCounter([BeforeFixedData]) rlength([32])) Windows 10 Cryptography Next Generation
(CNG) Implementations #66
KAS validation number 64 AES validation
number 3497 RBG validation number 868 Version 10.0.10240
MAC validation number 2233

CTR_Mode: (Llength(Min0 Max0) Windows Storage Server 2012 R2, Microsoft


MACSupported([HMACSHA1] [HMACSHA256] Windows RT 8.1, Microsoft Surface with
[HMACSHA512]) Windows RT 8.1, Microsoft Surface Pro with
LocationCounter([BeforeFixedData]) rlength([32])) Windows 8.1, Microsoft Surface 2, Microsoft
Surface Pro 2, Microsoft Surface Pro 3,
DRBG validation number 489 MAC validation Microsoft Windows Phone 8.1, Microsoft
number 1773 Windows Embedded 8.1 Industry, and
Microsoft StorSimple 8100 Cryptography
Next Generation Cryptographic
Implementations #30
Modes / States / Key Sizes Algorithm Implementation and Certificate #

Version 6.3.9600

CTR_Mode: (Llength(Min0 Max4) Windows 8, Windows RT, Windows Server


MACSupported([HMACSHA1] [HMACSHA256] 2012, Surface Windows RT, Surface Windows
[HMACSHA512]) 8 Pro, and Windows Phone 8 Cryptography
LocationCounter([BeforeFixedData]) rlength([32])) Next Generation (CNG) Implementations #3

DRBG #258 HMAC validation number 1345

Random Number Generator (RNG)

Modes / States / Key Algorithm Implementation and Certificate #


Sizes

FIPS 186-2 General Windows 8, Windows RT, Windows Server 2012, Surface Windows RT,
Purpose Surface Windows 8 Pro, and Windows Phone 8 Cryptography Next
[(x-Original); (SHA-1)] Generation (CNG) Implementations #1110

FIPS 186-2 Windows Embedded Compact 7 Enhanced Cryptographic Provider


[(x-Original); (SHA-1)] (RSAENH) #1060

Windows CE 6.0 and Windows CE 6.0 R2 and Windows Mobile


Enhanced Cryptographic Provider (RSAENH) #292

Windows CE and Windows Mobile 6.0 and Windows Mobile 6.5


Enhanced Cryptographic Provider (RSAENH) #286

Windows CE 5.00 and Windows CE 5.01 Enhanced Cryptographic


Provider (RSAENH) #66

FIPS 186-2 Windows 7 and SP1 and Windows Server 2008 R2 and SP1 RNG
[(x-Change Notice); Library #649
(SHA-1)]; FIPS 186-2
General Purpose Windows Vista Ultimate SP1 and Windows Server 2008 RNG
[(x-Change Notice); Implementation #435
(SHA-1)]
Windows Vista RNG implementation #321

FIPS 186-2 General Windows Server 2003 SP2 Enhanced Cryptographic Provider
Purpose (RSAENH) #470
[(x-Change Notice);
(SHA-1)] Windows XP Professional SP3 Kernel Mode Cryptographic Module
(fips.sys) #449

Windows XP Professional SP3 Enhanced Cryptographic Provider


(RSAENH) #447

Windows Server 2003 SP2 Enhanced Cryptographic Provider


(RSAENH) #316
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

Windows Server 2003 SP2 Kernel Mode Cryptographic Module


(fips.sys) #313

FIPS 186-2 Windows XP Professional SP3 Enhanced DSS and Diffie-Hellman


[(x-Change Notice); Cryptographic Provider (DSSENH) #448
(SHA-1)]
Windows Server 2003 SP2 Enhanced DSS and Diffie-Hellman
Cryptographic Provider #314

RSA

Modes / States / Key Sizes Algorithm Implementation and


Certificate #

RSA: Microsoft Surface Hub Virtual TPM


186-4: Implementations #2677

Signature Generation PKCS1.5: Version 10.0.15063.674

Mod 2048 SHA: SHA-1,


SHA-256,
SHA-384

Signature Generation PSS:

Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)

Signature Verification PKCS1.5:

Mod 1024 SHA: SHA-1,


SHA-256,
SHA-384
Mod 2048 SHA: SHA-1,
SHA-256,
SHA-384

Signature Verification PSS:

Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Prerequisite: SHS #4011 , DRBG #1734

RSA: Windows 10 Home, Pro, Enterprise,


186-4: Education, Windows 10 S Fall Creators
Update; Windows Server, Windows
Signature Generation PKCS1.5: Server Datacenter (
Version 1709); Virtual TPM
Mod 2048 SHA:
Implementations #2676
SHA-1,
SHA-256, Version 10.0.16299
SHA-384

Signature Generation PSS:

Mod 2048:
SHA-1: Salt Length: 240 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)

Signature Verification PKCS1.5:

Mod 1024 SHA:


SHA-1,
SHA-256,
SHA-384
Mod 2048 SHA:
SHA-1,
SHA-256,
SHA-384

Signature Verification PSS:

Mod 1024
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
Prerequisite: SHS #4009 , DRBG #1733

RSA: Microsoft Surface Hub RSA32 Algorithm


186-4: Implementations #2675

Key Generation: Version 10.0.15063.674

Signature Verification PKCS1.5:

Mod 1024 SHA:


Modes / States / Key Sizes Algorithm Implementation and
Certificate #

SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 2048 SHA:
SHA-1,
SHA-256
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Prerequisite: SHS #4011 , DRBG #1732

RSA: Windows 10 Home, Pro, Enterprise,


186-4: Education, Windows 10 S Fall Creators
Update; Windows Server, Windows
Signature Verification PKCS1.5: Server Datacenter (version 1709); RSA32
Algorithm Implementations #2674
Mod 1024 SHA:
SHA-1, Version 10.0.16299
SHA-256,
SHA-384,
SHA-512
Mod 2048 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Prerequisite: SHS #4009 , DRBG #1730

RSA: Windows 10 Mobile (version 1709)


186-4: RSA32 Algorithm Implementations
#2673
Signature Verification PKCS1.5:
Version 10.0.15254
Mod 1024 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Mod 2048 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Prerequisite: SHS #4010 , DRBG #1731

RSA: Microsoft Surface Hub MsBignum


186-4: Cryptographic Implementations #2672

Key Generation: Version 10.0.15063.674


Public Key Exponent: Fixed (10001)
Provable Primes with Conditions:
Mod lengths: 2048, 3072 (bits)

Primality Tests: C.3

Signature Generation PKCS1.5:

Mod 2048 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Generation PSS:

Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Signature Verification PKCS1.5

Mod 1024 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 2048 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Verification PSS

Mod 1024
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 496 (bits
Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Prerequisite: SHS #4011 , DRBG #1732

RSA: Microsoft Surface Hub SymCrypt


186-4: Cryptographic Implementations #2671

Key Generation: Version 10.0.15063.674

Probable Random Primes:

Mod lengths: 2048, 3072 (bits)

Primality Tests: C 2

Signature Generation PKCS1.5:


Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Mod 2048 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Generation PSS:

Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)

Signature Verification PKCS1.5:

Mod 1024 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 2048 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Verification PSS:

Mod 1024:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

SHA-512: Salt Length: 496 (bits


Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Prerequisite: SHS #4011 , DRBG #1732

RSA: Windows 10 Mobile (version 1709)


186-4: SymCrypt Cryptographic
Implementations #2670
Key Generation:
Version 10.0.15254
Probable Random Primes:

Mod lengths: 2048, 3072 (bits)

Primality Tests: C.2

Signature Generation PKCS1.5:

Mod 2048 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Generation PSS:

Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits
SHA-512: Salt Length: 512 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Signature Verification PKCS1.5:

Mod 1024 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 2048 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Verification PSS:

Mod 1024:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 496 (bits)
Mod 2048
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Prerequisite: SHS #4010 , DRBG #1731

RSA: Windows 10 Mobile (version 1709)


186-4: MsBignum Cryptographic
Implementations #2669
Key Generation:
Version 10.0.15254
Public Key Exponent: Fixed (10001)

Provable Primes with Conditions:

Mod lengths: 2048, 3072 (bits)


Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Primality Tests: C.3

Signature Generation PKCS1.5:

Mod 2048 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Generation PSS:

Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)

Signature Verification PKCS1.5

Mod 1024 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 2048 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Verification PSS:

Mod 1024
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

SHA-1: Salt Length: 160 (bits)


SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 496 (bits)
Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Prerequisite: SHS #4010 , DRBG #1731

186-4: Windows 10 Home, Pro, Enterprise,


Education, Windows 10 S Fall Creators
Key Generation: Update; Windows Server, Windows
Server Datacenter (version 1709);
Public Key Exponent: Fixed (10001)
MsBignum Cryptographic
Provable Primes with Conditions: Implementations #2668

Mod lengths: 2048, 3072 (bits) Version 10.0.16299

Primality Tests: C.3

Signature Generation PKCS1.5:

Mod 2048 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Generation PSS:

Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

SHA-1: Salt Length: 160 (bits)


SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)

Signature Verification PKCS1.5

Mod 1024 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 2048 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Verification PSS:

Mod 1024
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 496 (bits)
Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Prerequisite: SHS #4009 , DRBG #1730

186-4: Windows 10 Home, Pro, Enterprise,


Education, Windows 10 S Fall Creators
Key Generation Update; Windows Server, Windows
Server Datacenter (version 1709);
Probable Random Primes:
SymCrypt Cryptographic
Implementations #2667
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Mod lengths: 2048, 3072 (bits) Version 10.0.16299

Primality Tests: C.2

Signature Generation PKCS1.5:

Mod 2048 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-51
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Generation PSS:

Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)

Signature Verification PKCS1.5:

Mod 1024 SHA:


SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 2048 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512
Mod 3072 SHA:
SHA-1,
SHA-256,
SHA-384,
SHA-512

Signature Verification PSS:


Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Mod 1024:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 496 (bits)
Mod 2048:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Mod 3072:
SHA-1: Salt Length: 160 (bits)
SHA-256: Salt Length: 256 (bits)
SHA-384: Salt Length: 384 (bits)
SHA-512: Salt Length: 512 (bits)
Prerequisite: SHS #4009 , DRBG #1730

FIPS186-4: Windows 10 Creators Update (version


ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(1, 256, 1703) Pro, Enterprise, Education Virtual
384)) SIG(gen) with SHA-1 affirmed for use with TPM Implementations #2524
protocols only.
Version 10.0.15063
SIG(ver) (1024 SHA(1, 256, 384)) (2048 SHA(1, 256,
384))

[RSASSA-PSS]: Sig(Gen): (2048 SHA(1 SaltLen(20), 256


SaltLen(32), 384 SaltLen(48))) **SIG(gen) with SHA-1
affirmed for use with protocols only.

**SIG(ver): (1024 SHA(1 SaltLen(20), 256 SaltLen(32),


384 SaltLen(48))) (2048 SHA(1 SaltLen(20), 256
SaltLen(32), 384 SaltLen(48)))

SHA validation number 3790

FIPS186-4: Windows 10 Creators Update (version


ALG[RSASSA-PKCS1_V1_5] SIG(Ver) (1024 SHA(1, 256, 1703) Home, Pro, Enterprise, Education,
384, 512)) (2048 SHA(1, 256, 384, 512)) (3072 SHA(1, Windows 10 S, Windows 10 Mobile
256, 384, 512)) RSA32 Algorithm Implementations
#2523
SHA validation number 3790
Version 10.0.15063

FIPS186-4: Windows 10 Creators Update (version


1703) Home, Pro, Enterprise, Education,
186-4KEY(gen): FIPS186-4_Fixed_e (10001); Windows 10 S, Windows 10 Mobile
MsBignum Cryptographic
PGM(ProbPrimeCondition): 2048, 3072 PPTT:(C.3)
Implementations #2522
ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(1, 256,
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

384, 512)) (3072 SHA(1, 256, 384, 512))SIG(gen) with Version 10.0.15063
SHA-1 affirmed for use with protocols only.

SIG(ver) (1024 SHA(1, 256, 384, 512)) (2048 SHA(1,


256, 384, 512)) (3072 SHA(1, 256, 384, 512))

[RSASSA-PSS]: Sig(Gen): (2048 SHA(1 SaltLen(20), 256


SaltLen(32), 384 SaltLen(48), 512 SaltLen(64))) (3072
SHA(1 SaltLen(20), 256 SaltLen(32), 384 SaltLen(48),
512 SaltLen(64))) **SIG(gen) with SHA-1 affirmed for
use with protocols only.

**SIG(ver): (1024 SHA(1 SaltLen(20), 256 SaltLen(32),


384 SaltLen(48), 512 SaltLen(62))) (2048 SHA(1
SaltLen(20), 256 SaltLen(32), 384 SaltLen(48), 512
SaltLen(64))) (3072 SHA(1 SaltLen(20), 256 SaltLen(32),
384 SaltLen(48), 512 SaltLen(64

SHA validation number 3790

DRBG: validation number 1555

FIPS186-4: Windows 10 Creators Update (version


1703) Home, Pro, Enterprise, Education,
186-4KEY(gen):PGM(ProbRandom: (2048, 3072) Windows 10 S, Windows 10 Mobile
PPTT:(C.2) SymCrypt Cryptographic
ALG[RSASSA-PKCS1_V1_5]** SIG(gen) (2048 SHA(1, Implementations #2521
256, 384, 512)) (3072 SHA(1, 256, 384, 512)) SIG(gen)
with SHA-1 affirmed for use with protocols only. Version 10.0.15063

SIG(ver) (1024 SHA(1, 256, 384, 512)) (2048 SHA(1,


256, 384, 512)) (3072 SHA(1, 256, 384, 512))

[RSASSA-PSS]: Sig(Gen): (2048 SHA(1 SaltLen(20), 256


SaltLen(32), 384 SaltLen(48), 512 SaltLen(64))) (3072
SHA(1 SaltLen(20), 256 SaltLen(32), 384 SaltLen(48),
512 SaltLen(64))) **SIG(gen) with SHA-1 affirmed for
use with protocols only.

**SIG(ver): (1024 SHA(1 SaltLen(20), 256 SaltLen(32),


384 SaltLen(48), 512 SaltLen(62))) (2048 SHA(1
SaltLen(20), 256 SaltLen(32), 384 SaltLen(48), 512
SaltLen(64))) (3072 SHA(1 SaltLen(20), 256 SaltLen(32),
384 SaltLen(48), 512 SaltLen(64)))

SHA validation number 3790

FIPS186-2: Windows Embedded Compact Enhanced


ALG[ANSIX9.31]: SIG(ver); 1024, 1536, 2048, 3072, Cryptographic Provider (RSAENH) #2415
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

4096, SHS: SHA-1validation number 3652 Version 7.00.2872


ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 4096, SHS:
SHA-256validation number 3652 ,
SHA-384validation number 3652 ,
SHA-512validation number 3652 , SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
3652 ,
SHA-256validation number 3652 ,
SHA-384validation number 3652 ,
SHA-512validation number 3652

FIPS186-4:
ALG[ANSIX9.31] Sig(Gen): (2048 SHA(1)) (3072
SHA(1))SIG(gen) with SHA-1 affirmed for use with
protocols only.SIG(ver): (1024 SHA(1)) (2048 SHA(1))
(3072 SHA(1))
ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(1, 256,
384, 512)) (3072 SHA(1, 256, 384, 512)) **SIG(gen) with
SHA-1 affirmed for use with protocols only

**SIG(ver) (1024 SHA(1, 256, 384, 512)) (2048 SHA(1,


256, 384, 512)) (3072 SHA(1, 256, 384, 512))

SHA validation number 3652

FIPS186-2: Windows Embedded Compact Enhanced


ALG[ANSIX9.31]: SIG(ver); 1024, 1536, 2048, 3072, Cryptographic Provider (RSAENH) #2414
4096, SHS: SHA-1validation number 3651
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 4096, SHS: Version 8.00.6246
SHA-256validation number 3651 ,
SHA-384validation number 3651 ,
SHA-512validation number 3651 SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
3651 ,
SHA-256validation number 3651 ,
SHA-384validation number 3651 ,
SHA-512validation number 3651

FIPS186-4:
ALG[ANSIX9.31] Sig(Gen): (2048 SHA(1)) (3072
SHA(1))SIG(gen) with SHA-1 affirmed for use with
protocols only. SIG(ver): (1024 SHA(1)) (2048 SHA(1))
(3072 SHA(1))
ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(1, 256,
384, 512)) (3072 SHA(1, 256, 384, 512)) **SIG(gen) with
SHA-1 affirmed for use with protocols only.
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

**SIG(ver) (1024 SHA(1, 256, 384, 512)) (2048 SHA(1,


256, 384, 512)) (3072 SHA(1, 256, 384, 512))

SHA validation number 3651

FIPS186-2: Windows Embedded Compact


ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 4096, SHS: Cryptographic Primitives Library
SHA-256validation number 3649 , (bcrypt.dll) #2412
SHA-384validation number 3649 ,
SHA-512validation number 3649 SIG(ver): 1024, Version 7.00.2872
1536, 2048, 3072, 4096, SHS: SHA-1validation number
3649 ,
SHA-256validation number 3649 ,
SHA-384validation number 3649 ,
SHA-512validation number 3649

FIPS186-4:

186-4KEY(gen): FIPS186-4_Fixed_e (10001);

PGM(ProbRandom: (2048, 3072) PPTT:(C.2)


ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(1, 256,
384, 512)) (3072 SHA(1, 256, 384, 512)) **SIG(gen) with
SHA-1 affirmed for use with protocols only.

**SIG(ver) (1024 SHA(1, 256, 384, 512)) (2048 SHA(1,


256, 384, 512)) (3072 SHA(1, 256, 384, 512))

SHA validation number 3649

DRBG: validation number 1430

FIPS186-2: Windows Embedded Compact


ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 4096, SHS: Cryptographic Primitives Library
SHA-256validation number 3648 , (bcrypt.dll) #2411
SHA-384validation number 3648 ,
SHA-512validation number 3648 , SIG(ver): 1024, Version 8.00.6246
1536, 2048, 3072, 4096, SHS: SHA-1validation number
3648 ,
SHA-256validation number 3648 ,
SHA-384validation number 3648 ,
SHA-512validation number 3648

FIPS186-4:

186-4KEY(gen): FIPS186-4_Fixed_e (10001);

PGM(ProbRandom: (2048, 3072) PPTT:(C.2)


ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(1, 256,
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

384, 512)) (3072 SHA(1, 256, 384, 512)) **SIG(gen) with


SHA-1 affirmed for use with protocols only.

**SIG(ver) (1024 SHA(1, 256, 384, 512)) (2048 SHA(1,


256, 384, 512)) (3072 SHA(1, 256, 384, 512))

SHA validation number 3648

DRBG: validation number 1429

FIPS186-4: Microsoft Windows 10 Anniversary


ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(1, 256, Update, Windows Server 2016, Windows
384)) SIG(gen) with SHA-1 affirmed for use with Storage Server 2016; Microsoft Surface
protocols only.SIG(Ver) (1024 SHA(1, 256, 384)) (2048 Book, Surface Pro 4, and Surface Pro 3
SHA(1, 256, 384)) w/ Windows 10 Anniversary Update
Virtual TPM Implementations #2206
[RSASSA-PSS]: Sig(Gen): (2048 SHA(1 SaltLen(20), 256
SaltLen(32), 384 SaltLen(48))) SIG(gen) with SHA-1 Version 10.0.14393
affirmed for use with protocols only.Sig(Ver): (1024
SHA(1 SaltLen(20), 256 SaltLen(32), 384 SaltLen(48)))
(2048 SHA(1 SaltLen(20), 256 SaltLen(32), 384
SaltLen(48)))

SHA validation number 3347

FIPS186-4: Microsoft Windows 10 Anniversary


Update, Windows Server 2016, Windows
186-4KEY(gen): FIPS186-4_Fixed_e (10001 Storage Server 2016; Microsoft Surface
Book, Surface Pro 4, Surface Pro 3 and
PGM(ProbPrimeCondition): 2048, 3072 PPTT:(C.3)
Surface 3 w/ Windows 10 Anniversary
SHA validation number 3347 DRBG: validation Update; Microsoft Lumia 950 and Lumia
number 1217 650 w/ Windows 10 Mobile Anniversary
Update RSA Key Generation
Implementation #2195

Version 10.0.14393

FIPS186-4: soft Windows 10 Anniversary Update,


ALG[RSASSA-PKCS1_V1_5] SIG(Ver) (1024 SHA(1, 256, Windows Server 2016, Windows Storage
384, 512)) (2048 SHA(1, 256, 384, 512)) (3072 SHA(1, Server 2016; Microsoft Surface Book,
256, 384, 512)) Surface Pro 4, Surface Pro 3 and Surface
3 w/ Windows 10 Anniversary Update;
SHA validation number 3346 Microsoft Lumia 950 and Lumia 650 w/
Windows 10 Mobile Anniversary Update
RSA32 Algorithm Implementations
#2194

Version 10.0.14393
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

FIPS186-4: Microsoft Windows 10 Anniversary


ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(256, Update, Windows Server 2016, Windows
384, 512)) (3072 SHA(256, 384, 512)) Storage Server 2016; Microsoft Surface
Book, Surface Pro 4, Surface Pro 3 and
SIG(Ver) (1024 SHA(1, 256, 384, 512)) (2048 SHA(1, Surface 3 w/ Windows 10 Anniversary
256, 384, 512)) (3072 SHA(1, 256, 384, 512)) Update; Microsoft Lumia 950 and Lumia
650 w/ Windows 10 Mobile Anniversary
SHA validation number 3347 DRBG: validation
Update MsBignum Cryptographic
number 1217
Implementations #2193

Version 10.0.14393

FIPS186-4: Microsoft Windows 10 Anniversary


[RSASSA-PSS]: Sig(Gen): (2048 SHA(256 SaltLen(32), Update, Windows Server 2016, Windows
384 SaltLen(48), 512 SaltLen(64))) (3072 SHA(256 Storage Server 2016; Microsoft Surface
SaltLen(32), 384 SaltLen(48), 512 SaltLen(64)) Book, Surface Pro 4, Surface Pro 3 and
Surface 3 w/ Windows 10 Anniversary
Sig(Ver): (1024 SHA(1 SaltLen(20), 256 SaltLen(32), 384 Update; Microsoft Lumia 950 and Lumia
SaltLen(48), 512 SaltLen(62))) (2048 SHA(1 SaltLen(20), 650 w/ Windows 10 Mobile Anniversary
256 SaltLen(32), 384 SaltLen(48), 512 SaltLen(64))) Update Cryptography Next Generation
(3072 SHA(1 SaltLen(20), 256 SaltLen(32), 384 (CNG) Implementations #2192
SaltLen(48), 512 SaltLen(64)))
Version 10.0.14393
SHA validation number 3347 DRBG: validation
number 1217

FIPS186-4: Microsoft Windows 10 November 2015


Update; Microsoft Surface Book, Surface
186-4KEY(gen): FIPS186-4_Fixed_e (10001); Pro 4, Surface Pro 3, Surface 3, Surface
Pro 2, and Surface Pro w/ Windows 10
PGM(ProbPrimeCondition): 2048, 3072 PPTT:(C.3)
November 2015 Update; Windows 10
SHA validation number 3047 DRBG: validation Mobile for Microsoft Lumia 950 and
number 955 Microsoft Lumia 635; Windows 10 for
Microsoft Surface Hub 84" and Surface
Hub 55" RSA Key Generation
Implementation #1889

Version 10.0.10586

FIPS186-4: Microsoft Windows 10 November 2015


ALG[RSASSA-PKCS1_V1_5] SIG(Ver) (1024 SHA(1, 256, Update; Microsoft Surface Book, Surface
384, 512)) (2048 SHA(1, 256, 384, 512)) (3072 SHA(1, Pro 4, Surface Pro 3, Surface 3, Surface
256, 384, 512)) Pro 2, and Surface Pro w/ Windows 10
November 2015 Update; Windows 10
SHA validation number 3048 Mobile for Microsoft Lumia 950 and
Microsoft Lumia 635; Windows 10 for
Microsoft Surface Hub and Surface Hub
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

RSA32 Algorithm Implementations


#1871

Version 10.0.10586

FIPS186-4: Microsoft Windows 10 November 2015


ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(256, Update; Microsoft Surface Book, Surface
384, 512)) (3072 SHA(256, 384, 512)) Pro 4, Surface Pro 3, Surface 3, Surface
Pro 2, and Surface Pro w/ Windows 10
SIG(Ver) (1024 SHA(1, 256, 384, 512)) (2048 SHA(1, November 2015 Update; Windows 10
256, 384, 512)) (3072 SHA(1, 256, 384, 512)) Mobile for Microsoft Lumia 950 and
Microsoft Lumia 635; Windows 10 for
SHA validation number 3047
Microsoft Surface Hub and Surface Hub
MsBignum Cryptographic
Implementations #1888

Version 10.0.10586

FIPS186-4: Microsoft Windows 10 November 2015


[RSASSA-PSS]: Sig(Gen): (2048 SHA(256 SaltLen(32), Update; Microsoft Surface Book, Surface
384 SaltLen(48), 512 SaltLen(64))) (3072 SHA(256 Pro 4, Surface Pro 3, Surface 3, Surface
SaltLen(32), 384 SaltLen(48), 512 SaltLen(64))) Pro 2, and Surface Pro w/ Windows 10
November 2015 Update; Windows 10
Sig(Ver): (1024 SHA(1 SaltLen(20), 256 SaltLen(32), 384 Mobile for Microsoft Lumia 950 and
SaltLen(48), 512 SaltLen(62))) (2048 SHA(1 SaltLen(20), Microsoft Lumia 635; Windows 10 for
256 SaltLen(32), 384 SaltLen(48), 512 SaltLen(64))) Microsoft Surface Hub and Surface Hub
(3072 SHA(1 SaltLen(20), 256 SaltLen(32), 384 Cryptography Next Generation (CNG)
SaltLen(48), 512 SaltLen(64))) Implementations #1887

SHA validation number 3047 Version 10.0.10586

FIPS186-4: Microsoft Windows 10, Microsoft


Surface Pro 3 with Windows 10,
186-4KEY(gen): FIPS186-4_Fixed_e Microsoft Surface 3 with Windows 10,
(10001);PGM(ProbPrimeCondition): 2048, 3072 PPTT: Microsoft Surface Pro 2 with Windows
(C.3) 10, Microsoft Surface Pro with Windows
10 RSA Key Generation Implementation
SHA validation number 2886 DRBG: validation
#1798
number 868
Version 10.0.10240

FIPS186-4: Microsoft Windows 10, Microsoft


ALG[RSASSA-PKCS1_V1_5] SIG(Ver) (1024 SHA(1, 256, Surface Pro 3 with Windows 10,
384, 512)) (2048 SHA(1, 256, 384, 512)) (3072 SHA(1, Microsoft Surface 3 with Windows 10,
256, 384, 512)) Microsoft Surface Pro 2 with Windows
10, Microsoft Surface Pro with Windows
SHA validation number 2871 10 RSA32 Algorithm Implementations
#1784
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Version 10.0.10240

FIPS186-4: Microsoft Windows 10, Microsoft


ALG[RSASSA-PKCS1_V1_5] SIG(Ver) (1024 SHA(1, 256, Surface Pro 3 with Windows 10,
384, 512)) (2048 SHA(1, 256, 384, 512)) (3072 SHA(1, Microsoft Surface 3 with Windows 10,
256, 384, 512)) Microsoft Surface Pro 2 with Windows
10, Microsoft Surface Pro with Windows
SHA validation number 2871 10 MsBignum Cryptographic
Implementations #1783

Version 10.0.10240

FIPS186-4: Microsoft Windows 10, Microsoft


[RSASSA-PSS]: Sig(Gen): (2048 SHA(256 SaltLen(32), Surface Pro 3 with Windows 10,
384 SaltLen(48), 512 SaltLen(64))) (3072 SHA(256 Microsoft Surface 3 with Windows 10,
SaltLen(32), 384 SaltLen(48), 512 SaltLen(64))), Sig(Ver): Microsoft Surface Pro 2 with Windows
(2048 SHA(1 SaltLen(20), 256 SaltLen(32), 384 10, Microsoft Surface Pro with Windows
SaltLen(48), 512 SaltLen(64))) (3072 SHA(1 SaltLen(20), 10 Cryptography Next Generation (CNG)
256 SaltLen(32), 384 SaltLen(48), 512 SaltLen(64))) Implementations #1802

SHA validation number 2886 Version 10.0.10240

FIPS186-4: Microsoft Windows 8.1, Microsoft


Windows Server 2012 R2, Microsoft
186-4KEY(gen): FIPS186-4_Fixed_e; Windows Storage Server 2012 R2,
Microsoft Windows RT 8.1, Microsoft
PGM(ProbPrimeCondition): 2048, 3072 PPTT:(C.3)
Surface with Windows RT 8.1, Microsoft
SHA validation number 2373 DRBG: validation Surface Pro with Windows 8.1, Microsoft
number 489 Surface 2, Microsoft Surface Pro 2,
Microsoft Surface Pro 3, Microsoft
Windows Phone 8.1, Microsoft Windows
Embedded 8.1 Industry, and Microsoft
StorSimple 8100 RSA Key Generation
Implementation #1487

Version 6.3.9600

FIPS186-4: Microsoft Windows 8.1, Microsoft


ALG[RSASSA-PKCS1_V1_5] SIG(Ver) (1024 SHA(1, 256, Windows Server 2012 R2, Microsoft
384, 512)) (2048 SHA(1, 256, 384, 512)) (3072 SHA(1, Windows Storage Server 2012 R2,
256, 384, 512)) Microsoft Windows RT 8.1, Microsoft
Surface with Windows RT 8.1, Microsoft
SHA validation number 2373 Surface Pro with Windows 8.1, Microsoft
Surface 2, Microsoft Surface Pro 2,
Microsoft Surface Pro 3, Microsoft
Windows Phone 8.1, Microsoft Windows
Embedded 8.1 Industry RSA32 Algorithm
Implementations #1494
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

Version 6.3.9600

FIPS186-4: Microsoft Windows 8.1, Microsoft


ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(256, Windows Server 2012 R2, Microsoft
384, 512)) (3072 SHA(256, 384, 512)), SIG(Ver) (1024 Windows Storage Server 2012 R2,
SHA(1, 256, 384, 512)) (2048 SHA(1, 256, 384, 512)) Microsoft Windows RT 8.1, Microsoft
(3072 SHA(1, 256, 384, 512)) Surface with Windows RT 8.1, Microsoft
Surface Pro with Windows 8.1, Microsoft
SHA validation number 2373 Surface 2, Microsoft Surface Pro 2,
Microsoft Surface Pro 3, Microsoft
Windows Phone 8.1, Microsoft Windows
Embedded 8.1 Industry, and Microsoft
StorSimple 8100 MsBignum
Cryptographic Implementations #1493

Version 6.3.9600

FIPS186-4: Windows Storage Server 2012 R2,


[RSASSA-PSS]: Sig(Gen): (2048 SHA(256 SaltLen(32), Microsoft Windows RT 8.1, Microsoft
384 SaltLen(48), 512 SaltLen(64))) (3072 SHA(256 Surface with Windows RT 8.1, Microsoft
SaltLen(32), 384 SaltLen(48), 512 SaltLen(64))), Sig(Ver): Surface Pro with Windows 8.1, Microsoft
(1024 SHA(1 SaltLen(20), 256 SaltLen(32), 384 Surface 2, Microsoft Surface Pro 2,
SaltLen(48), 512 SaltLen(62))) (2048 SHA(1 SaltLen(20), Microsoft Surface Pro 3, Microsoft
256 SaltLen(32), 384 SaltLen(48), 512 SaltLen(64))) Windows Phone 8.1, Microsoft Windows
(3072 SHA(1 SaltLen(20), 256 SaltLen(32), 384 Embedded 8.1 Industry, and Microsoft
SaltLen(48), 512 SaltLen(64))) StorSimple 8100 Cryptography Next
Generation Cryptographic
SHA validation number 2373 Implementations #1519

Version 6.3.9600

FIPS186-4: Windows 8, Windows RT, Windows


ALG[RSASSA-PKCS1_V1_5] SIG(gen) (2048 SHA(256, Server 2012, Surface Windows RT,
384, 512-256)) (3072 SHA(256, 384, 512-256)), SIG(Ver) Surface Windows 8 Pro, and Windows
(1024 SHA(1, 256, 384, 512-256)) (2048 SHA(1, 256, Phone 8 Cryptography Next Generation
384, 512-256)) (3072 SHA(1, 256, 384, 512-256)) (CNG) Implementations #1134

[RSASSA-PSS]: Sig(Gen): (2048 SHA(256, 384, 512))


(3072 SHA(256, 384, 512)), Sig(Ver): (1024 SHA(1, 256,
384, 512)) (2048 SHA(1, 256, 384, 512)) (3072 SHA(1,
256, 384, 512, 512)), SHA #1903 .

FIPS186-4: Windows 8, Windows RT, Windows


Server 2012, Surface Windows RT,
186-4KEY(gen): FIPS186-4_Fixed_e, FIPS186- Surface Windows 8 Pro, and Windows
4_Fixed_e_Value Phone 8 RSA Key Generation
Implementation #1133
PGM(ProbPrimeCondition): 2048, 3072 PPTT:(C.3)
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

SHA #1903 DRBG: #258

FIPS186-2: Windows 8, Windows RT, Windows


ALG[ANSIX9.31]: Key(gen)(MOD: 2048, 3072, 4096 Server 2012, Surface Windows RT,
PubKey Values: 65537 DRBG: #258 Surface Windows 8 Pro, and Windows
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096, Phone 8 Enhanced Cryptographic
SHS: Provider (RSAENH) #1132
SHA-256#1902 ,
SHA-384#1902 ,
SHA-512#1902 ,, SIG(ver): 1024, 1536, 2048, 3072,
4096, SHS: SHA-1#1902 ,
SHA-256#1902 , SHA-#1902 ,
SHA-512#1902 ,.

FIPS186-2:ALG[ANSIX9.31]: SIG(ver); 1024, 1536, 2048, Windows Embedded Compact 7


3072, 4096, SHS: SHA-1validation number 1774 Enhanced Cryptographic Provider
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096, (RSAENH) #1052
SHS:
SHA-256validation number 1774 ,
SHA-384validation number 1774 ,
SHA-512validation number 1774 ,SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
1774 ,
SHA-256validation number 1774 ,
SHA-384validation number 1774 ,
SHA-512validation number 1774 ,.

FIPS186-2: Windows Embedded Compact


ALG[ANSIX9.31]: Key(gen)(MOD: 2048, 3072, 4096 Cryptographic Primitives Library
PubKey Values: 65537 DRBG: validation number 193 (bcrypt.dll) #1051
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096,
SHS:
SHA-256validation number 1773 ,
SHA-384validation number 1773 ,
SHA-512validation number 1773 ,SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
1773 ,
SHA-256validation number 1773 ,
SHA-384validation number 1773 ,
SHA-512validation number 1773 ,.

FIPS186-2: Windows Server 2008 R2 and SP1


ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096, Enhanced Cryptographic Provider
SHS: (RSAENH) #568
SHA-256validation number 1081 ,
SHA-384validation number 1081 ,
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

SHA-512validation number 1081 ,SIG(ver): 1024,


1536, 2048, 3072, 4096, SHS: SHA-1validation number
1081 ,
SHA-256validation number 1081 ,
SHA-384validation number 1081 ,
SHA-512validation number 1081 ,.

FIPS186-2: Windows Server 2008 R2 and SP1 CNG


ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096, algorithms #567
SHS:
SHA-256validation number 1081 , Windows 7 and SP1 CNG algorithms
SHA-384validation number 1081 , #560
SHA-512validation number 1081 , SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
1081 ,
SHA-256validation number 1081 ,
SHA-384validation number 1081 ,
SHA-512validation number 1081 ,
ALG[RSASSA-PSS]: SIG(gen); 2048, 3072, 4096, SHS:
SHA-256validation number 1081 ,
SHA-384validation number 1081 ,
SHA-512validation number 1081 , SIG(ver); 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
1081 ,
SHA-256validation number 1081 ,
SHA-384validation number 1081 ,
SHA-512validation number 1081 .

FIPS186-2: Windows 7 and SP1 and Server 2008 R2


ALG[ANSIX9.31]: Key(gen)(MOD: 2048, 3072, 4096 and SP1 RSA Key Generation
PubKey Values: 65537 DRBG: validation number 23 . Implementation #559

FIPS186-2: Windows 7 and SP1 Enhanced


ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096, Cryptographic Provider (RSAENH) #557
SHS:
SHA-256validation number 1081 ,
SHA-384validation number 1081 ,
SHA-512validation number 1081 , SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
1081 ,
SHA-256validation number 1081 ,
SHA-384validation number 1081 ,
SHA-512validation number 1081 ,.

FIPS186-2: Windows Server 2003 SP2 Enhanced


ALG[ANSIX9.31]: Cryptographic Provider (RSAENH) #395
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096,


SHS:
SHA-256validation number 816 ,
SHA-384validation number 816 ,
SHA-512validation number 816 ,SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
816 ,
SHA-256validation number 816 ,
SHA-384validation number 816 ,
SHA-512validation number 816 ,.

FIPS186-2: Windows XP Professional SP3 Enhanced


ALG[ANSIX9.31]: SIG(ver); 1024, 1536, 2048, 3072, Cryptographic Provider (RSAENH) #371
4096, SHS: SHA-1validation number 783
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096,
SHS:
SHA-256validation number 783 ,
SHA-384validation number 783 ,
SHA-512validation number 783 ,.

FIPS186-2: Windows Server 2008 CNG algorithms


ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096, #358
SHS:
SHA-256validation number 753 , Windows Vista SP1 CNG algorithms
SHA-384validation number 753 , #357
SHA-512validation number 753 , SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
753 ,
SHA-256validation number 753 ,
SHA-384validation number 753 ,
SHA-512validation number 753 ,
ALG[RSASSA-PSS]: SIG(gen); 2048, 3072, 4096, SHS:
SHA-256validation number 753 ,
SHA-384validation number 753 ,
SHA-512validation number 753 , SIG(ver); 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
753 ,
SHA-256validation number 753 ,
SHA-384validation number 753 ,
SHA-512validation number 753 .

FIPS186-2: Windows Server 2008 Enhanced


ALG[ANSIX9.31]: SIG(ver); 1024, 1536, 2048, 3072, Cryptographic Provider (RSAENH) #355
4096, SHS: SHA-1validation number 753
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096, Windows Vista SP1 Enhanced
SHS: Cryptographic Provider (RSAENH) #354
SHA-256validation number 753 ,
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

SHA-384validation number 753 ,


SHA-512validation number 753 , SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
753 ,
SHA-256validation number 753 ,
SHA-384validation number 753 ,
SHA-512validation number 753 .

FIPS186-2: Windows Vista SP1 and Windows Server


ALG[ANSIX9.31]: Key(gen)(MOD: 2048, 3072, 4096 2008 RSA Key Generation
PubKey Values: 65537. Implementation #353

FIPS186-2: Windows Vista RSA key generation


ALG[ANSIX9.31]: Key(gen)(MOD: 2048, 3072, 4096 implementation #258
PubKey Values: 65537 RNG: validation number 321 .

FIPS186-2: Windows Vista CNG algorithms #257


ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096,
SHS:
SHA-256validation number 618 ,
SHA-384validation number 618 ,
SHA-512validation number 618 ,SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
618 ,
SHA-256validation number 618 ,
SHA-384validation number 618 ,
SHA-512validation number 618 ,
ALG[RSASSA-PSS]: SIG(gen); 2048, 3072, 4096, SHS:
SHA-256validation number 618 ,
SHA-384validation number 618 ,
SHA-512validation number 618 , SIG(ver); 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
618 ,
SHA-256validation number 618 ,
SHA-384validation number 618 ,
SHA-512validation number 618 .

FIPS186-2: Windows Vista Enhanced Cryptographic


ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096, Provider (RSAENH) #255
SHS:
SHA-256validation number 618 ,
SHA-384validation number 618 ,
SHA-512validation number 618 ,, SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
618 ,
SHA-256validation number 618 ,
SHA-384validation number 618 ,
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

SHA-512validation number 618 ,.

FIPS186-2: Windows Server 2003 SP2 Enhanced


ALG[ANSIX9.31]: SIG(ver); 1024, 1536, 2048, 3072, Cryptographic Provider (RSAENH) #245
4096, SHS: SHA-1validation number 613
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096,
SHS:
SHA-256validation number 613 ,
SHA-384validation number 613 ,
SHA-512validation number 613 , SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
613 ,
SHA-256validation number 613 ,
SHA-384validation number 613 ,
SHA-512validation number 613 ,.

FIPS186-2: Windows CE 6.0 and Windows CE 6.0 R2


ALG[ANSIX9.31]: SIG(ver); 1024, 1536, 2048, 3072, and Windows Mobile Enhanced
4096, SHS: SHA-1validation number 589 Cryptographic Provider (RSAENH) #230
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096,
SHS:
SHA-256validation number 589 ,
SHA-384validation number 589 ,
SHA-512validation number 589 ,, SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
589 ,
SHA-256validation number 589 ,
SHA-384validation number 589 ,
SHA-512validation number 589 ,.

FIPS186-2: Windows CE and Windows Mobile 6 and


ALG[ANSIX9.31]: SIG(ver); 1024, 1536, 2048, 3072, Windows Mobile 6.1 Enhanced
4096, SHS: SHA-1validation number 578 Cryptographic Provider (RSAENH) #222
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096,
SHS:
SHA-256validation number 578 ,
SHA-384validation number 578 ,
SHA-512validation number 578 ,, SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
578 ,
SHA-256validation number 578 ,
SHA-384validation number 578 ,
SHA-512validation number 578 ,.

FIPS186-2: Windows Server 2003 SP1 Enhanced


ALG[RSASSA-PKCS1_V1_5]: Cryptographic Provider (RSAENH) #81
Modes / States / Key Sizes Algorithm Implementation and
Certificate #

SIG(ver): 1024, 1536, 2048, 3072, 4096, SHS: SHA-


1validation number 364 .

FIPS186-2: Windows CE 5.00 and Windows CE 5.01


ALG[ANSIX9.31]: SIG(ver); 1024, 1536, 2048, 3072, Enhanced Cryptographic Provider
4096, SHS: SHA-1validation number 305 (RSAENH) #52
ALG[RSASSA-PKCS1_V1_5]: SIG(gen) 2048, 3072, 4096,
SHS:
SHA-256validation number 305 ,
SHA-384validation number 305 ,
SHA-512validation number 305 ,, SIG(ver): 1024,
1536, 2048, 3072, 4096, SHS: SHA-1validation number
305 ,
SHA-256validation number 305 ,
SHA-384validation number 305 ,
SHA-512validation number 305 ,.

FIPS186-2:: Windows XP, vendor-affirmed


PKCS#1 v1.5, Signature generation, and verification Windows 2000, vendor-affirmed
Mod sizes: 1024, 1536, 2048, 3072, 4096
SHS: SHA-1/256/384/512

Secure Hash Standard (SHS)

Modes / States / Key Algorithm Implementation and Certificate #


Sizes

SHA-1: Microsoft Surface Hub SymCrypt Cryptographic Implementations #4011


Supports Empty
Message Version 10.0.15063.674

SHA-256:
Supports Empty
Message

SHA-384:
Supports Empty
Message

SHA-512:
Supports Empty
Message

SHA-1: Windows 10 Mobile (version 1709) SymCrypt Cryptographic


Supports Empty Implementations #4010
Message
Version 10.0.15254
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

SHA-256:
Supports Empty
Message

SHA-384:
Supports Empty
Message

SHA-512:
Supports Empty
Message

SHA-1: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall


Supports Empty Creators Update; Windows Server, Windows Server Datacenter (version
Message 1709); SymCrypt Cryptographic Implementations #4009

SHA-256: Version 10.0.16299


Supports Empty
Message

SHA-384:
Supports Empty
Message

SHA-512:
Supports Empty
Message

SHA-1 (BYTE-only) Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,
SHA-256 (BYTE- Education, Windows 10 S, Windows 10 Mobile SymCrypt Cryptographic
only) Implementations #3790
SHA-384 (BYTE-
only) Version 10.0.15063
SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Windows Embedded Compact Enhanced Cryptographic Provider


SHA-256 (BYTE- (RSAENH) #3652
only)
SHA-384 (BYTE- Version 7.00.2872
only)
SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Windows Embedded Compact Enhanced Cryptographic Provider


SHA-256 (BYTE- (RSAENH) #3651
only)
SHA-384 (BYTE- Version 8.00.6246
only
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Windows Embedded Compact Cryptographic Primitives Library


SHA-256 (BYTE- (bcrypt.dll) #3649
only)
SHA-384 (BYTE- Version 7.00.2872
only)
SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Windows Embedded Compact Cryptographic Primitives Library


SHA-256 (BYTE- (bcrypt.dll) #3648
only)
SHA-384 (BYTE- Version 8.00.6246
only)
SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Microsoft Windows 10 Anniversary Update, Windows Server 2016,


SHA-256 (BYTE- Windows Storage Server 2016; Microsoft Surface Book, Surface Pro 4,
only) Surface Pro 3 and Surface 3 w/ Windows 10 Anniversary Update;
SHA-384 (BYTE- Microsoft Lumia 950 and Lumia 650 w/ Windows 10 Mobile Anniversary
only) Update SymCrypt Cryptographic Implementations #3347
SHA-512 (BYTE-
only) Version 10.0.14393

SHA-1 (BYTE-only) Microsoft Windows 10 Anniversary Update, Windows Server 2016,


SHA-256 (BYTE- Windows Storage Server 2016; Microsoft Surface Book, Surface Pro 4,
only) Surface Pro 3 and Surface 3 w/ Windows 10 Anniversary Update;
SHA-384 (BYTE- Microsoft Lumia 950 and Lumia 650 w/ Windows 10 Mobile Anniversary
only) Update RSA32 Algorithm Implementations #3346
SHA-512 (BYTE-
only) Version 10.0.14393

SHA-1 (BYTE-only) Microsoft Windows 10 November 2015 Update; Microsoft Surface Book,
SHA-256 (BYTE- Surface Pro 4, Surface Pro 3, Surface 3, Surface Pro 2, and Surface Pro w/
only) Windows 10 November 2015 Update; Windows 10 Mobile for Microsoft
SHA-384 (BYTE- Lumia 950 and Microsoft Lumia 635; Windows 10 for Microsoft Surface
only) Hub and Surface Hub RSA32 Algorithm Implementations #3048
SHA-512 (BYTE-
only) Version 10.0.10586

SHA-1 (BYTE-only) Microsoft Windows 10 November 2015 Update; Microsoft Surface Book,
SHA-256 (BYTE- Surface Pro 4, Surface Pro 3, Surface 3, Surface Pro 2, and Surface Pro w/
only) Windows 10 November 2015 Update; Windows 10 Mobile for Microsoft
SHA-384 (BYTE- Lumia 950 and Microsoft Lumia 635; Windows 10 for Microsoft Surface
only) Hub and Surface Hub SymCrypt Cryptographic Implementations #3047
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

SHA-512 (BYTE- Version 10.0.10586


only)

SHA-1 (BYTE-only) Microsoft Windows 10, Microsoft Surface Pro 3 with Windows 10,
SHA-256 (BYTE- Microsoft Surface 3 with Windows 10, Microsoft Surface Pro 2 with
only) Windows 10, Microsoft Surface Pro with Windows 10 SymCrypt
SHA-384 (BYTE- Cryptographic Implementations #2886
only)
SHA-512 (BYTE- Version 10.0.10240
only)

SHA-1 (BYTE-only) Microsoft Windows 10, Microsoft Surface Pro 3 with Windows 10,
SHA-256 (BYTE- Microsoft Surface 3 with Windows 10, Microsoft Surface Pro 2 with
only) Windows 10, Microsoft Surface Pro with Windows 10 RSA32 Algorithm
SHA-384 (BYTE- Implementations #2871
only)
SHA-512 (BYTE- Version 10.0.10240
only)

SHA-1 (BYTE-only) Microsoft Windows 8.1, Microsoft Windows Server 2012 R2, Microsoft
SHA-256 (BYTE- Windows Storage Server 2012 R2, Microsoft Windows RT 8.1, Microsoft
only) Surface with Windows RT 8.1, Microsoft Surface Pro with Windows 8.1,
SHA-384 (BYTE- Microsoft Surface 2, Microsoft Surface Pro 2, Microsoft Surface Pro 3,
only) Microsoft Windows Phone 8.1, Microsoft Windows Embedded 8.1
SHA-512 (BYTE- Industry RSA32 Algorithm Implementations #2396
only)
Version 6.3.9600

SHA-1 (BYTE-only) Windows Storage Server 2012 R2, Microsoft Windows RT 8.1, Microsoft
SHA-256 (BYTE- Surface with Windows RT 8.1, Microsoft Surface Pro with Windows 8.1,
only) Microsoft Surface 2, Microsoft Surface Pro 2, Microsoft Surface Pro 3,
SHA-384 (BYTE- Microsoft Windows Phone 8.1, Microsoft Windows Embedded 8.1
only) Industry, and Microsoft StorSimple 8100 SymCrypt Cryptographic
SHA-512 (BYTE- Implementations #2373
only)
Version 6.3.9600

SHA-1 (BYTE-only) Windows 8, Windows RT, Windows Server 2012, Surface Windows RT,
SHA-256 (BYTE- Surface Windows 8 Pro, and Windows Phone 8 Next Generation
only) Symmetric Cryptographic Algorithms Implementations (SYMCRYPT)
SHA-384 (BYTE- #1903
only)
SHA-512 (BYTE- Windows 8, Windows RT, Windows Server 2012, Surface Windows RT,
only) Surface Windows 8 Pro, and Windows Phone 8 Symmetric Algorithm
Implementations (RSA32) #1902
Implementation does
not support zero-
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

length (null)
messages.

SHA-1 (BYTE-only) Windows Embedded Compact 7 Enhanced Cryptographic Provider


SHA-256 (BYTE- (RSAENH) #1774
only)
SHA-384 (BYTE- Windows Embedded Compact 7 Cryptographic Primitives Library
only) (bcrypt.dll) #1773
SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Windows 7 and SP1 and Windows Server 2008 R2 and SP1 Symmetric
SHA-256 (BYTE- Algorithm Implementation #1081
only)
SHA-384 (BYTE- Windows Server 2003 SP2 Enhanced Cryptographic Provider (RSAENH)
only) #816
SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Windows XP Professional SP3 Kernel Mode Cryptographic Module


(fips.sys) #785

Windows XP Professional SP3 Enhanced DSS and Diffie-Hellman


Cryptographic Provider (DSSENH) #784

SHA-1 (BYTE-only) Windows XP Professional SP3 Enhanced Cryptographic Provider


SHA-256 (BYTE- (RSAENH) #783
only)
SHA-384 (BYTE-
only)
SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Windows Vista SP1 and Windows Server 2008 Symmetric Algorithm
SHA-256 (BYTE- Implementation #753
only)
SHA-384 (BYTE- Windows Vista Symmetric Algorithm Implementation #618
only)
SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Windows Vista BitLocker Drive Encryption #737


SHA-256 (BYTE-
only) Windows Vista Beta 2 BitLocker Drive Encryption #495

SHA-1 (BYTE-only) Windows Server 2003 SP2 Enhanced Cryptographic Provider (RSAENH)
SHA-256 (BYTE- #613
only)
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

SHA-384 (BYTE- Windows Server 2003 SP1 Enhanced Cryptographic Provider (RSAENH)
only) #364
SHA-512 (BYTE-
only)

SHA-1 (BYTE-only) Windows Server 2003 SP2 Enhanced DSS and Diffie-Hellman
Cryptographic Provider #611

Windows Server 2003 SP2 Kernel Mode Cryptographic Module (fips.sys)


#610

Windows Server 2003 SP1 Enhanced DSS and Diffie-Hellman


Cryptographic Provider (DSSENH) #385

Windows Server 2003 SP1 Kernel Mode Cryptographic Module (fips.sys)


#371

Windows Server 2003 Enhanced DSS and Diffie-Hellman Cryptographic


Provider (DSSENH) #181

Windows Server 2003 Kernel Mode Cryptographic Module (fips.sys) #177

Windows Server 2003 Enhanced Cryptographic Provider (RSAENH) #176

SHA-1 (BYTE-only) Windows CE 6.0 and Windows CE 6.0 R2 and Windows Mobile Enhanced
SHA-256 (BYTE- Cryptographic Provider (RSAENH) #589
only)
SHA-384 (BYTE- Windows CE and Windows Mobile 6 and Windows Mobile 6.5 Enhanced
only) Cryptographic Provider (RSAENH) #578
SHA-512 (BYTE-
Windows CE 5.00 and Windows CE 5.01 Enhanced
only)
Cryptographic Provider (RSAENH) #305

SHA-1 (BYTE-only) Windows XP Microsoft Enhanced Cryptographic Provider #83

Crypto Driver for Windows 2000 (fips.sys) #35

Windows 2000 Microsoft Outlook Cryptographic Provider


(EXCHCSP.DLL) SR-1A (3821) #32

Windows 2000 RSAENH.DLL #24

Windows 2000 RSABASE.DLL #23

Windows NT 4 SP6 RSAENH.DLL #21

Windows NT 4 SP6 RSABASE.DLL #20

SP 800-132 Password-Based Key Derivation Function (PBKDF)


Modes / Algorithm Implementation and Certificate #
States / Key
Sizes

PBKDF Kernel Mode Cryptographic Primitives Library (cng.sys) Cryptographic Primitives


(vendor Library (bcryptprimitives.dll and ncryptsslp.dll) in Microsoft Windows 10, Windows
affirmed) 10 Pro, Windows 10 Enterprise, Windows 10 Enterprise LTSB, Windows 10 Mobile,
Windows Server 2016 Standard, Windows Server 2016 Datacenter, Windows
Storage Server 2016 #2937
(Software Version: 10.0.14393)

Microsoft Windows 10, Windows 10 Pro, Windows 10 Enterprise, Windows 10


Enterprise LTSB, Windows 10 Mobile, Windows Server 2016 Standard, Windows
Server 2016 Datacenter, Windows Storage Server 2016 #2936
(Software Version: 10.0.14393)

Code Integrity (ci.dll) in Microsoft Windows 10, Windows 10 Pro, Windows 10


Enterprise, Windows 10 Enterprise LTSB, Windows 10 Mobile, Windows Server 2016
Standard, Windows Server 2016 Datacenter, Windows Storage Server 2016
#2935
(Software Version: 10.0.14393)

PBKDF Kernel Mode Cryptographic Primitives Library (cng.sys) in Microsoft Windows 10,
(vendor Windows 10 Pro, Windows 10 Enterprise, Windows 10 Enterprise LTSB, Windows 10
affirmed) Mobile, Windows Server 2016 Standard, Windows Server 2016 Datacenter,
Windows Storage Server 2016 #2936
(Software Version: 10.0.14393)

Windows 8, Windows RT, Windows Server 2012, Surface Windows RT, Surface
Windows 8 Pro, and Windows Phone 8 Cryptography Next Generation (CNG),
vendor-affirmed

Triple DES

Modes / States / Key Algorithm Implementation and Certificate #


Sizes

TDES-CBC: Microsoft Surface Hub SymCrypt Cryptographic Implementations


Modes: Decrypt, #2558
Encrypt
Keying Option: 1 Version 10.0.15063.674
TDES-CFB64:
Modes: Decrypt,
Encrypt
Keying Option: 1
TDES-CFB8:
Modes: Decrypt,
Encrypt
Keying Option: 1
TDES-ECB:
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

Modes: Decrypt,
Encrypt
Keying Option: 1

TDES-CBC: Windows 10 Mobile (version 1709) SymCrypt Cryptographic


Modes: Decrypt, Implementations #2557
Encrypt
Keying Option: 1 Version 10.0.15254
TDES-CFB64:
Modes: Decrypt,
Encrypt
Keying Option: 1
TDES-CFB8:
Modes: Decrypt,
Encrypt
Keying Option: 1
TDES-ECB:
Modes: Decrypt,
Encrypt
Keying Option: 1

TDES-CBC: Windows 10 Home, Pro, Enterprise, Education, Windows 10 S Fall


Modes: Decrypt, Creators Update; Windows Server, Windows Server Datacenter
Encrypt (version 1709); SymCrypt Cryptographic Implementations #2556
Keying Option: 1
TDES-CFB64: Version 10.0.16299
Modes: Decrypt,
Encrypt
Keying Option: 1
TDES-CFB8:
Modes: Decrypt,
Encrypt
Keying Option: 1
TDES-ECB:
Modes: Decrypt,
Encrypt
Keying Option: 1

TECB(KO 1 e/d); Windows 10 Creators Update (version 1703) Home, Pro, Enterprise,
TCBC(KO 1 e/d); Education, Windows 10 S, Windows 10 Mobile SymCrypt
TCFB8(KO 1 e/d); Cryptographic Implementations #2459
TCFB64(KO 1 e/d)
Version 10.0.15063

TECB(KO 1 e/d);TCBC(KO Windows Embedded Compact Enhanced Cryptographic Provider


1 e/d) (RSAENH) #2384
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

Version 8.00.6246

TECB(KO 1 e/d);TCBC(KO Windows Embedded Compact Enhanced Cryptographic Provider


1 e/d) (RSAENH) #2383

Version 8.00.6246

TECB(KO 1 e/d);TCBC(KO Windows Embedded Compact Cryptographic Primitives Library


1 e/d);CTR (int only) (bcrypt.dll) #2382

Version 7.00.2872

TECB(KO 1 e/d);TCBC(KO Windows Embedded Compact Cryptographic Primitives Library


1 e/d) (bcrypt.dll) #2381

Version 8.00.6246

TECB(KO 1 e/d);TCBC(KO Microsoft Windows 10 Anniversary Update, Windows Server 2016,


1 e/d);TCFB8(KO 1 Windows Storage Server 2016; Microsoft Surface Book, Surface Pro 4,
e/d);TCFB64(KO 1 e/d) Surface Pro 3 and Surface 3 w/ Windows 10 Anniversary Update;
Microsoft Lumia 950 and Lumia 650 w/ Windows 10 Mobile
Anniversary Update SymCrypt Cryptographic Implementations #2227

Version 10.0.14393

TECB(KO 1 e/d);TCBC(KO Microsoft Windows 10 November 2015 Update; Microsoft Surface


1 e/d);TCFB8(KO 1 Book, Surface Pro 4, Surface Pro 3, Surface 3, Surface Pro 2, and
e/d);TCFB64(KO 1 e/d) Surface Pro w/ Windows 10 November 2015 Update; Windows 10
Mobile for Microsoft Lumia 950 and Microsoft Lumia 635; Windows 10
for Microsoft Surface Hub and Surface Hub SymCrypt Cryptographic
Implementations #2024

Version 10.0.10586

TECB(KO 1 e/d);TCBC(KO Microsoft Windows 10, Microsoft Surface Pro 3 with Windows 10,
1 e/d);TCFB8(KO 1 Microsoft Surface 3 with Windows 10, Microsoft Surface Pro 2 with
e/d);TCFB64(KO 1 e/d) Windows 10, Microsoft Surface Pro with Windows 10 SymCrypt
Cryptographic Implementations #1969

Version 10.0.10240

TECB(KO 1 e/d);TCBC(KO Windows Storage Server 2012 R2, Microsoft Windows RT 8.1,
1 e/d);TCFB8(KO 1 Microsoft Surface with Windows RT 8.1, Microsoft Surface Pro with
e/d);TCFB64(KO 1 e/d) Windows 8.1, Microsoft Surface 2, Microsoft Surface Pro 2, Microsoft
Surface Pro 3, Microsoft Windows Phone 8.1, Microsoft Windows
Embedded 8.1 Industry, and Microsoft StorSimple 8100 SymCrypt
Cryptographic Implementations #1692

Version 6.3.9600
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

TECB(e/d; KO 1, Windows 8, Windows RT, Windows Server 2012, Surface Windows RT,
2);TCBC(e/d; KO 1, Surface Windows 8 Pro, and Windows Phone 8 Next Generation
2);TCFB8(e/d; KO 1, Symmetric Cryptographic Algorithms Implementations (SYMCRYPT)
2);TCFB64(e/d; KO 1, 2) #1387

TECB(e/d; KO 1, Windows 8, Windows RT, Windows Server 2012, Surface Windows RT,
2);TCBC(e/d; KO 1, Surface Windows 8 Pro, and Windows Phone 8 Symmetric Algorithm
2);TCFB8(e/d; KO 1, 2) Implementations (RSA32) #1386

TECB(e/d; KO 1, Windows 7 and SP1 and Windows Server 2008 R2 and SP1 Symmetric
2);TCBC(e/d; KO 1, Algorithm Implementation #846
2);TCFB8(e/d; KO 1, 2)

TECB(e/d; KO 1, Windows Vista SP1 and Windows Server 2008 Symmetric Algorithm
2);TCBC(e/d; KO 1, Implementation #656
2);TCFB8(e/d; KO 1, 2)

TECB(e/d; KO 1, Windows Vista Symmetric Algorithm Implementation #549


2);TCBC(e/d; KO 1,
2);TCFB8(e/d; KO 1, 2)

Triple DES MAC Windows 8, Windows RT, Windows Server 2012, Surface Windows RT,
Surface Windows 8 Pro, and Windows Phone 8 #1386 , vendor-
affirmedWindows 7 and SP1 and Windows Server 2008 R2 and SP1
#846 , vendor-affirmed

TECB(e/d; KO 1, Windows Embedded Compact 7 Enhanced Cryptographic Provider


2);TCBC(e/d; KO 1, 2) (RSAENH) #1308 Windows Embedded Compact 7 Cryptographic
Primitives Library (bcrypt.dll) #1307

Windows Server 2003 SP2 Enhanced Cryptographic Provider


(RSAENH) #691

Windows XP Professional SP3 Kernel Mode Cryptographic Module


(fips.sys) #677

Windows XP Professional SP3 Enhanced DSS and Diffie-Hellman


Cryptographic Provider (DSSENH) #676

Windows XP Professional SP3 Enhanced Cryptographic Provider


(RSAENH) #675

Windows Server 2003 SP2 Enhanced Cryptographic Provider


(RSAENH) #544

Windows Server 2003 SP2 Enhanced DSS and Diffie-Hellman


Cryptographic Provider #543
Modes / States / Key Algorithm Implementation and Certificate #
Sizes

Windows Server 2003 SP2 Kernel Mode Cryptographic Module


(fips.sys) #542 Windows CE 6.0 and Windows CE 6.0 R2 and
Windows Mobile Enhanced Cryptographic Provider (RSAENH) #526

Windows CE and Windows Mobile 6 and Windows Mobile 6.1 and


Windows Mobile 6.5 Enhanced Cryptographic Provider (RSAENH)
#517

Windows Server 2003 SP1 Enhanced DSS and Diffie-Hellman


Cryptographic Provider (DSSENH) #381

Windows Server 2003 SP1 Kernel Mode Cryptographic Module


(fips.sys) #370

Windows Server 2003 SP1 Enhanced Cryptographic Provider


(RSAENH) #365 Windows CE 5.00 and Windows CE 5.01 Enhanced
Cryptographic Provider (RSAENH) #315

Windows Server 2003 Kernel Mode Cryptographic Module (fips.sys)


#201

Windows Server 2003 Enhanced DSS and Diffie-Hellman


Cryptographic Provider (DSSENH) #199

Windows Server 2003 Enhanced Cryptographic Provider (RSAENH)


#192 Windows XP Microsoft Enhanced Cryptographic Provider #81

Windows 2000 Microsoft Outlook Cryptographic Provider


(EXCHCSP.DLL) SR-1A (3821) #18 Crypto Driver for Windows 2000
(fips.sys) #16

Contact
fips@microsoft.com

References
FIPS 140-2, Security Requirements for Cryptographic Modules )
Cryptographic Module Validation Program (CMVP) FAQ
SP 800-57 - Recommendation for Key Management - Part 1: General (Revised)
SP 800-131A - Transitions: Recommendation for Transitioning the Use of
Cryptographic Algorithms and Key Lengths
Frequently asked questions

How long does it take to certify a cryptographic module?


Microsoft begins certification of cryptographic modules after each major feature release
of Windows 10 and Windows Server. The duration of each evaluation varies, depending
on many factors.

When does Microsoft undertake a FIPS 140 validation?


The cadence for starting module validation aligns with the feature updates of Windows
10 and Windows Server. As the software industry evolves, operating systems release
more frequently. Microsoft completes validation work on major releases but, in between
releases, seeks to minimize the changes to the cryptographic modules.

What is the difference between FIPS 140 validated and


FIPS 140 compliant?
FIPS 140 validated means that the cryptographic module, or a product that embeds the
module, has been validated ("certified") by the CMVP as meeting the FIPS 140-2
requirements. FIPS 140 compliant is an industry term for IT products that rely on FIPS
140 validated products for cryptographic functionality.

How do I know if a Windows service or application is FIPS


140-2 validated?
The cryptographic modules used in Windows are validated through the CMVP. They
aren't validated by individual services, applications, hardware peripherals, or other
solutions. Any compliant solution must call a FIPS 140-2 validated cryptographic module
in the underlying OS, and the OS must be configured to run in FIPS mode. Contact the
vendor of the service, application, or product for information on whether it calls a
validated cryptographic module.

What does When operated in FIPS mode mean on a


certificate?
This label means that certain configuration and security rules must be followed to use
the cryptographic module in compliance with its FIPS 140-2 security policy. Each module
has its own security policy—a precise specification of the security rules under which it
will operate—and employs approved cryptographic algorithms, cryptographic key
management, and authentication techniques. The security rules are defined in the
Security Policy Document (SPD) for each module.

What is the relationship between FIPS 140-2 and


Common Criteria?
FIPS 140-2 and Common Criteria are two separate security standards with different, but
complementary, purposes. FIPS 140-2 is designed specifically for validating software and
hardware cryptographic modules. Common Criteria are designed to evaluate security
functions in IT software and hardware products. Common Criteria evaluations often rely
on FIPS 140-2 validations to provide assurance that basic cryptographic functionality is
implemented properly.

How does FIPS 140 relate to Suite B?


Suite B is a set of cryptographic algorithms defined by the U.S. National Security Agency
(NSA) as part of its Cryptographic Modernization Program. The set of Suite B
cryptographic algorithms are to be used for both unclassified information and most
classified information. The Suite B cryptographic algorithms are a subset of the FIPS
approved cryptographic algorithms allowed by the FIPS 140-2 standard.

Is SMB3 (Server Message Block) FIPS 140 compliant in


Windows?
SMB3 can be FIPS 140 compliant, if Windows is configured to operate in FIPS 140 mode
on both client and server. In FIPS mode, SMB3 relies on the underlying Windows FIPS
140 validated cryptographic modules for cryptographic operations.
Common Criteria certifications
Article • 08/01/2023

Microsoft is committed to optimizing the security of its products and services. As part of
that commitment, Microsoft supports the Common Criteria Certification Program,
ensures that products incorporate the features and functions required by relevant
Common Criteria Protection Profiles, and completes Common Criteria certifications of
Microsoft Windows products. This topic lists the current and archived certified Windows
products, together with relevant documentation from each certification.

Certified products
The product releases below are currently certified against the cited Protection Profile, as
listed on the Common Criteria Portal :

The Security Target describes the product edition(s) in scope, the security
functionality in the product, and the assurance measures from the Protection
Profile used as part of the evaluation
The Administrative Guide provides guidance on configuring the product to match
the evaluated configuration
The Certification Report or Validation Report documents the results of the
evaluation by the validation team, with the Assurance Activity Report providing
details on the evaluator's actions

Windows 11, Windows 10 (version 20H2, 21H1, 21H2),


Windows Server, Windows Server 2022, Azure Stack
HCIv2 version 21H2, Azure Stack Hub and Edge
Certified against the Protection Profile for General Purpose Operating Systems, including
the Extended Package for Wireless Local Area Network Clients and the Module for
Virtual Private Network Clients

Security Target
Administrative Guide
Assurance Activity Report
Validation Report

Windows 10, version 2004, Windows Server, version 2004,


Windows Server Core Datacenter (Azure Fabric
Controller), Windows Server Core Datacenter (Azure
Stack)
Certified against the Protection Profile for General Purpose Operating Systems, including
the Extended Package for Wireless Local Area Network Clients and the Module for
Virtual Private Network Clients

Security Target
Administrative Guide
Validation Report
Assurance Activity Report

Windows 10, version 1909, Windows Server, version 1909,


Windows Server 2019, version 1809 Hyper-V
Certified against the Protection Profile for Virtualization, including the Extended Package
for Server Virtualization.

Security Target
Administrative Guide
Validation Report
Assurance Activities Report

Windows 10, version 1909, Windows Server, version 1909


Certified against the Protection Profile for General Purpose Operating Systems, including
the Extended Package for Wireless Local Area Network Clients and the Module for
Virtual Private Network Clients.

Security Target
Administrative Guide
Certification Report
Assurance Activity Report

Windows 10, version 1903, Windows Server, version 1903


Certified against the Protection Profile for General Purpose Operating Systems, including
the Extended Package for Wireless Local Area Network Clients.

Security Target
Administrative Guide
Certification Report
Assurance Activity Report

Windows 10, version 1809, Windows Server, version 1809


Certified against the Protection Profile for General Purpose Operating Systems, including
the Extended Package for Wireless Local Area Network Clients.

Security Target
Administrative Guide
Certification Report
Assurance Activity Report

Windows 10, version 1803, Windows Server, version 1803


Certified against the Protection Profile for General Purpose Operating Systems, including
the Extended Package for Wireless Local Area Network Clients.

Security Target
Administrative Guide
Certification Report
Assurance Activity Report

Windows 10, version 1709, Windows Server, version 1709


Certified against the Protection Profile for General Purpose Operating Systems.

Security Target
Administrative Guide
Certification Report
Assurance Activity Report

Windows 10, version 1703, Windows Server, version 1703


Certified against the Protection Profile for General Purpose Operating Systems.

Security Target
Administrative Guide
Certification Report
Assurance Activity Report
Windows 10, version 1607, Windows Server 2016
Certified against the Protection Profile for General Purpose Operating Systems.

Security Target
Administrative Guide
Validation Report
Assurance Activity Report

Windows 10, version 1507, Windows Server 2012 R2


Certified against the Protection Profile for General Purpose Operating Systems.

Security Target
Administrative Guide
Certification Report
Assurance Activity Report

Archived certified products


The product releases below were certified against the cited Protection Profile and are
now archived, as listed on the Common Criteria Portal :

The Security Target describes the product edition(s) in scope, the security
functionality in the product, and the assurance measures from the Protection
Profile used as part of the evaluation
The Administrative Guide provides guidance on configuring the product to match
the evaluated configuration
The Certification Report or Validation Report documents the results of the
evaluation by the validation team, with the Assurance Activity Report providing
details on the evaluator's actions

Windows Server 2016, Windows Server 2012 R2, Windows


10
Certified against the Protection Profile for Server Virtualization.

Security Target
Administrative Guide
Validation Report
Assurance Activity Report
Windows 10, version 1607, Windows 10 Mobile, version
1607
Certified against the Protection Profile for Mobile Device Fundamentals.

Security Target
Administrative Guide
Validation Report
Assurance Activity Report

Windows 10, version 1607, Windows Server 2016


Certified against the Protection Profile for IPsec Virtual Private Network (VPN) Clients.

Security Target
Administrative Guide
Validation Report
Assurance Activity Report

Windows 10, version 1511


Certified against the Protection Profile for Mobile Device Fundamentals.

Security Target
Administrative Guide
Validation Report
Assurance Activity Report

Windows 10, version 1507, Windows 10 Mobile, version


1507
Certified against the Protection Profile for Mobile Device Fundamentals.

Security Target
Administrative Guide
Validation Report
Assurance Activity Report

Windows 10, version 1507


Certified against the Protection Profile for IPsec Virtual Private Network (VPN) Clients.
Security Target
Administrative Guide
Validation Report
Assurance Activity Report

Windows 8.1 with Surface 3, Windows Phone 8.1 with


Lumia 635 and Lumia 830
Certified against the Protection Profile for Mobile Device Fundamentals.

Security Target
Administrative Guide
Validation Report

Surface Pro 3, Windows 8.1


Certified against the Protection Profile for Mobile Device Fundamentals.

Security Target
Administrative Guide
Validation Report

Windows 8.1, Windows Phone 8.1


Certified against the Protection Profile for Mobile Device Fundamentals.

Security Target
Administrative Guide
Validation Report

Windows 8, Windows Server 2012


Certified against the Protection Profile for General Purpose Operating Systems.

Security Target
Administrative Guide
Validation Report

Windows 8, Windows RT
Certified against the Protection Profile for General Purpose Operating Systems.
Security Target
Administrative Guide
Validation Report

Windows 8, Windows Server 2012 BitLocker


Certified against the Protection Profile for Full Disk Encryption.

Security Target
Administrative Guide
Validation Report

Windows 8, Windows RT, Windows Server 2012 IPsec VPN


Client
Certified against the Protection Profile for IPsec Virtual Private Network (VPN) Clients.

Security Target
Administrative Guide
Validation Report

Windows 7, Windows Server 2008 R2


Certified against the Protection Profile for General Purpose Operating Systems.

Security Target
Administrative Guide
Validation Report

Microsoft Windows Server 2008 R2 Hyper-V Role


Security Target
Administrative Guide
Validation Report

Windows Vista, Windows Server 2008 at EAL4+


Security Target
Administrative Guide
Validation Report
Windows Vista, Windows Server 2008 at EAL1
Security Target
Administrative Guide
Certification Report

Microsoft Windows Server 2008 Hyper-V Role


Security Target
Administrative Guide
Certification Report

Windows Server 2003 Certificate Server


Security Target
Validation Report

Windows Rights Management Services


Security Target
Validation Report
Windows hardware security
Article • 07/28/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Learn more about hardware security features support in Windows.

Hardware Root-Of-Trust
Security Features & Capabilities
Measures

Windows In Secured-core PCs, Windows Defender System Guard Secure Launch protects
Defender bootup with a technology known as the Dynamic Root of Trust for Measurement
System (DRTM). With DRTM, the system initially follows the normal UEFI Secure Boot
Guard process. However, before launching, the system enters a hardware-controlled
trusted state that forces the CPU(s) down a hardware-secured code path. If a
malware rootkit/bootkit has bypassed UEFI Secure Boot and resides in memory,
DRTM will prevent it from accessing secrets and critical code protected by the
virtualization-based security environment. Firmware Attack Surface Reduction
technology can be used instead of DRTM on supporting devices such as Microsoft
Surface.

Trusted TPMs provide security and privacy benefits for system hardware, platform owners,
Platform and users. Windows Hello, BitLocker, Windows Defender System Guard, and other
Module Windows features rely on the TPM for capabilities such as key generation, secure
(TPM) 2.0 storage, encryption, boot integrity measurements, and attestation. The 2.0 version
of the specification includes support for newer algorithms, which can improve
driver signing and key generation performance.

Starting with Windows 10, Microsoft's hardware certification requires all new
Windows PCs to include TPM 2.0 built in and enabled by default. With Windows 11,
both new and upgraded devices must have TPM 2.0.

Microsoft Microsoft Pluton security processors are designed by Microsoft in partnership with
Pluton silicon partners. Pluton enhances the protection of Windows devices with a
security hardware root-of-trust that provides additional protection for cryptographic keys
processor and other secrets. Pluton is designed to reduce the attack surface as it integrates
the security chip directly into the processor. It can be used with a discreet TPM 2.0,
or as a standalone security processor. When root of trust is located on a separate,
discrete chip on the motherboard, the communication path between the root-of-
trust and the CPU can be vulnerable to physical attack. Pluton supports the TPM
2.0 industry standard, allowing customers to immediately benefit from the
enhanced security in Windows features that rely on TPMs including BitLocker,
Windows Hello, and Windows Defender System Guard.

In addition to providing root-of trust, Pluton also supports other security


functionality beyond what is possible with the TPM 2.0 specification, and this
Security Features & Capabilities
Measures

extensibility allows for additional Pluton firmware and OS features to be delivered


over time via Windows Update. Pluton-enabled Windows 11 devices are available
and the selection of options with Pluton is growing.

Silicon Assisted Security (Secured Kernel)


Security Features & Capabilities
Measures

Virtualization- In addition to a modern hardware root-of-trust, there are numerous other


based security capabilities in the latest chips that harden the operating system against
(VBS) threats, such as by protecting the boot process, safeguarding the integrity of
memory, isolating security sensitive compute logic, and more. Two examples
include Virtualization-based security (VBS) and Hypervisor-protected code
integrity (HVCI). Virtualization-based security (VBS), also known as core
isolation, is a critical building block in a secure system. VBS uses hardware
virtualization features to host a secure kernel separated from the operating
system. This means that even if the operating system is compromised, the
secure kernel remains protected.

Starting with Windows 10, all new devices are required to ship with firmware
support for VBS and HCVI enabled by default in the BIOS. Customers can then
enable the OS support in Windows.
With new installs of Windows 11, OS support for VBS and HVCI is turned on
by default for all devices that meet prerequisites.

Hypervisor- Hypervisor-protected code integrity (HVCI), also called memory integrity, uses
protected Code VBS to run Kernel Mode Code Integrity (KMCI) inside the secure VBS
Integrity (HVCI) environment instead of the main Windows kernel. This helps to prevent
attacks that attempt to modify kernel mode code, such as drivers. The KMCI
role is to check that all kernel code is properly signed and hasn't been
tampered with before it is allowed to run. HVCI helps to ensure that only
validated code can be executed in kernel-mode.

Starting with Windows 10, all new devices are required to ship with firmware
support for VBS and HCVI enabled by default in the BIOS. Customers can then
enable the OS support in Windows.
With new installs of Windows 11, OS support for VBS and HVCI is turned on
by default for all devices that meet prerequisites.

Hardware- Hardware-enforced stack protection integrates software and hardware for a


enforced stack modern defense against cyberthreats such as memory corruption and zero-
protection day exploits. Based on Control-flow Enforcement Technology (CET) from Intel
and AMD Shadow Stacks, hardware-enforced stack protection is designed to
Security Features & Capabilities
Measures

protect against exploit techniques that try to hijack return addresses on the
stack.

Secured-core PC Microsoft has worked with OEM partners to offer a special category of
devices called Secured-core PCs. The devices ship with additional security
measures enabled at the firmware layer, or device core, that underpins
Windows. Secured-core PCs help prevent malware attacks and minimize
firmware vulnerabilities by launching into a clean and trusted state at startup
with a hardware-enforced root of trust. Virtualization-based security comes
enabled by default. And with built-in hypervisor protected code integrity
(HVCI) shielding system memory, Secured-core PCs ensure that all
executables are signed by known and approved authorities only. Secured-
core PCs also protect against physical threats such as drive-by Direct Memory
Access (DMA) attacks.

Kernel Direct Kernel DMA Protection protects against external peripherals from gaining
Memory Access unauthorized access to memory. Physical threats such as drive-by Direct
(DMA) Memory Access (DMA) attacks typically happen quickly while the system
protection owner isn't present. PCIe hot plug devices such as Thunderbolt, USB4, and
CFexpress allow users to attach new classes of external peripherals, including
graphics cards or other PCI devices, to their PCs with the plug-and-play ease
of USB. Because PCI hot plug ports are external and easily accessible, devices
are susceptible to drive-by DMA attacks.
Windows Defender System Guard: How
a hardware-based root of trust helps
protect Windows
Article • 07/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

To protect critical resources such as the Windows authentication stack, single sign-on
tokens, the Windows Hello biometric stack, and the Virtual Trusted Platform Module, a
system's firmware and hardware must be trustworthy.

Windows Defender System Guard reorganizes the existing Windows system integrity
features under one roof and sets up the next set of investments in Windows security. It's
designed to make these security guarantees:

Protect and maintain the integrity of the system as it starts up


Validate that system integrity has truly been maintained through local and remote
attestation

Maintaining the integrity of the system as it


starts

Static Root of Trust for Measurement (SRTM)


With Windows 7, one of the means attackers would use to persist and evade detection
was to install what is often referred to as a bootkit or rootkit on the system. This
malicious software would start before Windows started, or during the boot process
itself, enabling it to start with the highest level of privilege.

With Windows 10 running on modern hardware (that is, Windows 8-certified or greater)
a hardware-based root of trust helps ensure that no unauthorized firmware or software
(such as a bootkit) can start before the Windows bootloader. This hardware-based root
of trust comes from the device's Secure Boot feature, which is part of the Unified
Extensible Firmware Interface (UEFI). This technique of measuring the static early boot
UEFI components is called the Static Root of Trust for Measurement (SRTM).

As there are thousands of PC vendors that produce many models with different UEFI
BIOS versions, there becomes an incredibly large number of SRTM measurements upon
bootup. Two techniques exist to establish trust here—either maintain a list of known
'bad' SRTM measurements (also known as a blocklist), or a list of known 'good' SRTM
measurements (also known as an allowlist).

Each option has a drawback:

A list of known 'bad' SRTM measurements allows a hacker to change just 1 bit in a
component to create an entirely new SRTM hash that needs to be listed. This
means that the SRTM flow is inherently brittle - a minor change can invalidate the
entire chain of trust.
A list of known 'good' SRTM measurements requires each new BIOS/PC
combination measurement to be carefully added, which is slow. Also, a bug fix for
UEFI code can take a long time to design, build, retest, validate, and redeploy.

Secure Launch—the Dynamic Root of Trust for


Measurement (DRTM)
Windows Defender System Guard Secure Launch, first introduced in Windows 10 version
1809, aims to alleviate these issues by leveraging a technology known as the Dynamic
Root of Trust for Measurement (DRTM). DRTM lets the system freely boot into untrusted
code initially, but shortly after launches the system into a trusted state by taking control
of all CPUs and forcing them down a well-known and measured code path. This has the
benefit of allowing untrusted early UEFI code to boot the system, but then being able to
securely transition into a trusted and measured state.

Secure Launch simplifies management of SRTM measurements because the launch code
is now unrelated to a specific hardware configuration. This means the number of valid
code measurements is small, and future updates can be deployed more widely and
quickly.
System Management Mode (SMM) protection
System Management Mode (SMM) is a special-purpose CPU mode in x86
microcontrollers that handles power management, hardware configuration, thermal
monitoring, and anything else the manufacturer deems useful. Whenever one of these
system operations is requested, a non-maskable interrupt (SMI) is invoked at runtime,
which executes SMM code installed by the BIOS. SMM code executes in the highest
privilege level and is invisible to the OS, which makes it an attractive target for malicious
activity. Even if System Guard Secure Launch is used to late launch, SMM code can
potentially access hypervisor memory and change the hypervisor.

To defend against this, two techniques are used:

Paging protection to prevent inappropriate access to code and data


SMM hardware supervision and attestation

Paging protection can be implemented to lock certain code tables to be read-only to


prevent tampering. This prevents access to any memory that hasn't been assigned.

A hardware-enforced processor feature known as a supervisor SMI handler can monitor


the SMM and make sure it doesn't access any part of the address space that it isn't
supposed to.

SMM protection is built on top of the Secure Launch technology and requires it to
function. In the future, Windows 10 will also measure this SMI Handler's behavior and
attest that no OS-owned memory has been tampered with.

Validating platform integrity after Windows is


running (run time)
While Windows Defender System Guard provides advanced protection that will help
protect and maintain the integrity of the platform during boot and at run time, the
reality is that we must apply an "assume breach" mentality to even our most
sophisticated security technologies. We can trust that the technologies are successfully
doing their jobs, but we also need the ability to verify that they were successful in
achieving their goals. For platform integrity, we can't just trust the platform, which
potentially could be compromised, to self-attest to its security state. So Windows
Defender System Guard includes a series of technologies that enable remote analysis of
the device's integrity.

As Windows 10 boots, a series of integrity measurements are taken by Windows


Defender System Guard using the device's Trusted Platform Module 2.0 (TPM 2.0).
System Guard Secure Launch won't support earlier TPM versions, such as TPM 1.2. This
process and data are hardware-isolated away from Windows to help ensure that the
measurement data isn't subject to the type of tampering that could happen if the
platform was compromised. From here, the measurements can be used to determine the
integrity of the device's firmware, hardware configuration state, and Windows boot-
related components, just to name a few.

After the system boots, Windows Defender System Guard signs and seals these
measurements using the TPM. Upon request, a management system like Intune or
Microsoft Configuration Manager can acquire them for remote analysis. If Windows
Defender System Guard indicates that the device lacks integrity, the management
system can take a series of actions, such as denying the device access to resources.

Windows edition and licensing requirements


The following table lists the Windows editions that support Windows Defender System
Guard:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Windows Defender System Guard license entitlements are granted by the following
licenses:
Windows Pro/Pro Windows Windows Windows Windows
Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

System requirements for System Guard


This feature is available for the following processors:

Intel® vPro™ processors starting with Intel® Coffeelake, Whiskeylake, or later


silicon
AMD® processors starting with Zen2 or later silicon
Qualcomm® processors with SD850 or later chipsets

Requirements for Intel® vPro™ processors starting with


Intel® Coffeelake, Whiskeylake, or later silicon

Name Description

64-bit CPU A 64-bit computer with minimum four cores (logical processors) is required
for hypervisor and virtualization-based security (VBS). For more information
about Hyper-V, see Hyper-V on Windows Server 2016 or Introduction to
Hyper-V on Windows 10. For more information about hypervisor, see
Hypervisor Specifications.

Trusted Platform Platforms must support a discrete TPM 2.0. Integrated/firmware TPMs
Module (TPM) 2.0 aren't supported, except Intel chips that support Platform Trust Technology
(PTT), which is a type of integrated hardware TPM that meets the TPM 2.0
spec.

Windows DMA Platforms must meet the Windows DMA Protection Specification (all
Protection external DMA ports must be off by default until the OS explicitly powers
them).

SMM All SMM communication buffers must be implemented in


communication EfiRuntimeServicesData, EfiRuntimeServicesCode, EfiACPIMemoryNVS, or
buffers EfiReservedMemoryType memory types.

SMM Page Tables Must NOT contain any mappings to EfiConventionalMemory (for example
no OS/VMM owned memory).
Must NOT contain any mappings to code sections within
EfiRuntimeServicesCode.
Must NOT have execute and write permissions for the same page
Must allow ONLY that TSEG pages can be marked executable and the
Name Description

memory map must report TSEG EfiReservedMemoryType.


BIOS SMI handler must be implemented such that SMM page tables are
locked on every SMM entry.

Modern/Connected Platforms must support Modern/Connected Standby.


Standby

TPM AUX Index Platform must set up a AUX index with index, attributes, and policy that
exactly corresponds to the AUX index specified in the TXT DG with a data
size of exactly 104 bytes (for SHA256 AUX data). (NameAlg = SHA256)
Platforms must set up a PS (Platform Supplier) index with:

Exactly the "TXT PS2" style Attributes on creation as follows:


AuthWrite
PolicyDelete
WriteLocked
WriteDefine
AuthRead
WriteDefine
NoDa
Written
PlatformCreate
A policy of exactly PolicyCommandCode(CC =
TPM2_CC_UndefineSpaceSpecial) (SHA256 NameAlg and Policy)
Size of exactly 70 bytes
NameAlg = SHA256
Also, it must have been initialized and locked (TPMA_NV_WRITTEN =
1, TPMA_NV_WRITELOCKED = 1) at time of OS launch.

PS index data DataRevocationCounters, SINITMinVersion, and PolicyControl


must all be 0x00

AUX Policy The required AUX policy must be as follows:


A = TPM2_PolicyLocality (Locality 3 & Locality 4)
B = TPM2_PolicyCommandCode (TPM_CC_NV_UndefineSpecial)
authPolicy = {A} OR {{A} AND {B}}
authPolicy digest = 0xef, 0x9a, 0x26, 0xfc, 0x22, 0xd1, 0xae, 0x8c,
0xec, 0xff, 0x59, 0xe9, 0x48, 0x1a, 0xc1, 0xec, 0x53, 0x3d, 0xbe, 0x22,
0x8b, 0xec, 0x6d, 0x17, 0x93, 0x0f, 0x4c, 0xb2, 0xcc, 0x5b, 0x97, 0x24

TPM NV Index Platform firmware must set up a TPM NV index for use by the OS with:
Handle: 0x01C101C0
Attributes:
TPMA_NV_POLICYWRITE
TPMA_NV_PPREAD
TPMA_NV_OWNERREAD
TPMA_NV_AUTHREAD
TPMA_NV_POLICYREAD
Name Description

TPMA_NV_NO_DA
TPMA_NV_PLATFORMCREATE
TPMA_NV_POLICY_DELETE
A policy of:
A = TPM2_PolicyAuthorize(MSFT_DRTM_AUTH_BLOB_SigningKey)
B=
TPM2_PolicyCommandCode(TPM_CC_NV_UndefineSpaceSpecial)
authPolicy = {A} OR {{A} AND {B}}
Digest value of 0xcb, 0x45, 0xc8, 0x1f, 0xf3, 0x4b, 0xcf, 0x0a, 0xfb,
0x9e, 0x1a, 0x80, 0x29, 0xfa, 0x23, 0x1c, 0x87, 0x27, 0x30, 0x3c,
0x09, 0x22, 0xdc, 0xce, 0x68, 0x4b, 0xe3, 0xdb, 0x81, 0x7c, 0x20,
0xe1

Platform firmware Platform firmware must carry all code required to execute an Intel® Trusted
Execution Technology secure launch:
Intel® SINIT ACM must be carried in the OEM BIOS
Platforms must ship with a production ACM signed by the correct
production Intel® ACM signer for the platform

Platform firmware System firmware is recommended to be updated via UpdateCapsule in


update Windows Update.

Requirements for AMD® processors starting with Zen2 or


later silicon

Name Description

64-bit CPU A 64-bit computer with minimum four cores (logical processors) is required
for hypervisor and virtualization-based security (VBS). For more information
about Hyper-V, see Hyper-V on Windows Server 2016 or Introduction to
Hyper-V on Windows 10. For more information about hypervisor, see
Hypervisor Specifications.

Trusted Platform Platforms must support a discrete TPM 2.0 OR Microsoft Pluton TPM.
Module (TPM) 2.0

Windows DMA Platforms must meet the Windows DMA Protection Specification (all
Protection external DMA ports must be off by default until the OS explicitly powers
them).

SMM All SMM communication buffers must be implemented in


communication EfiRuntimeServicesData, EfiRuntimeServicesCode, EfiACPIMemoryNVS, or
buffers EfiReservedMemoryType memory types.
Name Description

SMM Page Tables Must NOT contain any mappings to EfiConventionalMemory (for example
no OS/VMM owned memory).
Must NOT contain any mappings to code sections within
EfiRuntimeServicesCode.
Must NOT have execute and write permissions for the same page
BIOS SMI handler must be implemented such that SMM page tables are
locked on every SMM entry.

Modern/Connected Platforms must support Modern/Connected Standby.


Standby

TPM NV Index Platform firmware must set up a TPM NV index for use by the OS with:
Handle: 0x01C101C0
Attributes:
TPMA_NV_POLICYWRITE
TPMA_NV_PPREAD
TPMA_NV_OWNERREAD
TPMA_NV_AUTHREAD
TPMA_NV_POLICYREAD
TPMA_NV_NO_DA
TPMA_NV_PLATFORMCREATE
TPMA_NV_POLICY_DELETE
A policy of:
A = TPM2_PolicyAuthorize(MSFT_DRTM_AUTH_BLOB_SigningKey)
B=
TPM2_PolicyCommandCode(TPM_CC_NV_UndefineSpaceSpecial)
authPolicy = {A} OR {{A} AND {B}}
Digest value of 0xcb, 0x45, 0xc8, 0x1f, 0xf3, 0x4b, 0xcf, 0x0a, 0xfb,
0x9e, 0x1a, 0x80, 0x29, 0xfa, 0x23, 0x1c, 0x87, 0x27, 0x30, 0x3c,
0x09, 0x22, 0xdc, 0xce, 0x68, 0x4b, 0xe3, 0xdb, 0x81, 0x7c, 0x20,
0xe1

Platform firmware Platform firmware must carry all code required to execute Secure Launch:
AMD® Secure Launch platforms must ship with AMD® DRTM driver
devnode exposed and the AMD® DRTM driver installed

Platform must have AMD® Secure Processor Firmware Anti-Rollback


protection enabled
Platform must have AMD® Memory Guard enabled.

Platform firmware System firmware is recommended to be updated via UpdateCapsule in


update Windows Update.

Requirements for Qualcomm® processors with SD850 or


later chipsets
Name Description

Monitor Mode All Monitor Mode communication buffers must be implemented in either
Communication EfiRuntimeServicesData (recommended), data sections of
EfiRuntimeServicesCode as described by the Memory Attributes Table,
EfiACPIMemoryNVS, or EfiReservedMemoryType memory types

Monitor Mode Page All Monitor Mode page tables must:


Tables NOT contain any mappings to EfiConventionalMemory (for
example no OS/VMM owned memory)
They must NOT have execute and write permissions for the same
page
Platforms must only allow Monitor Mode pages marked as
executable
The memory map must report Monitor Mode as
EfiReservedMemoryType
Platforms must provide mechanism to protect the Monitor Mode
page tables from modification

Modern/Connected Platforms must support Modern/Connected Standby.


Standby

Platform firmware Platform firmware must carry all code required to launch.

Platform firmware System firmware is recommended to be updated via UpdateCapsule in


update Windows Update.
Trusted Platform Module
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Trusted Platform Module (TPM) technology is designed to provide hardware-based,


security-related functions. A TPM chip is a secure crypto-processor that helps you with
actions such as generating, storing, and limiting the use of cryptographic keys. The
following topics provide details.

Topic Description

Trusted Platform Module Provides an overview of the Trusted Platform Module (TPM) and how
Overview Windows uses it for access control and authentication.

TPM fundamentals Provides background about how a TPM can work with cryptographic
keys. Also describes technologies that work with the TPM, such as
TPM-based virtual smart cards.

TPM Group Policy Describes TPM services that can be controlled centrally by using
settings Group Policy settings.

Back up the TPM For Windows 10, version 1511 and Windows 10, version 1507 only,
recovery information to describes how to back up a computer's TPM information to Active
AD DS Directory Domain Services.

Troubleshoot the TPM Describes actions you can take through the TPM snap-in, TPM.msc:
view TPM status, troubleshoot TPM initialization, and clear keys from
the TPM. Also, for TPM 1.2 and Windows 10, version 1507 or 1511, or
Windows 11, describes how to turn the TPM on or off.

Understanding PCR Provides background about what happens when you switch PCR banks
banks on TPM 2.0 on TPM 2.0 devices.
devices

TPM recommendations Discusses aspects of TPMs such as the difference between TPM 1.2
and 2.0, and the Windows features for which a TPM is required or
recommended.
Trusted Platform Module Technology
Overview
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article describes the Trusted Platform Module (TPM) and how Windows uses it for
access control and authentication.

Feature description
The Trusted Platform Module (TPM) technology is designed to provide hardware-based,
security-related functions. A TPM chip is a secure crypto-processor that is designed to
carry out cryptographic operations. The chip includes multiple physical security
mechanisms to make it tamper-resistant, and malicious software is unable to tamper
with the security functions of the TPM. Some of the advantages of using TPM
technology are:

Generate, store, and limit the use of cryptographic keys


Use it for device authentication by using the TPM's unique RSA key, which is
burned into the chip
Help ensure platform integrity by taking and storing security measurements of the
boot process

The most common TPM functions are used for system integrity measurements and for
key creation and use. During the boot process of a system, the boot code that is loaded
(including firmware and the operating system components) can be measured and
recorded in the TPM. The integrity measurements can be used as evidence for how a
system started and to make sure that a TPM-based key was used only when the correct
software was used to boot the system.

TPM-based keys can be configured in a variety of ways. One option is to make a TPM-
based key unavailable outside the TPM. This is good to mitigate phishing attacks
because it prevents the key from being copied and used without the TPM. TPM-based
keys can also be configured to require an authorization value to use them. If too many
incorrect authorization guesses occur, the TPM will activate its dictionary attack logic
and prevent further authorization value guesses.

Different versions of the TPM are defined in specifications by the Trusted Computing
Group (TCG). For more information, see the TCG Web site .
Automatic initialization of the TPM with Windows
Starting with Windows 10 and Windows 11, the operating system automatically
initializes and takes ownership of the TPM. This means that in most cases, we
recommend that you avoid configuring the TPM through the TPM management
console, TPM.msc. There are a few exceptions, mostly related to resetting or performing
a clean installation on a PC. For more information, see Clear all the keys from the TPM.
We're no longer actively developing the TPM management console beginning with
Windows Server 2019 and Windows 10, version 1809.

In certain specific enterprise scenarios limited to Windows 10, versions 1507 and 1511,
Group Policy might be used to back up the TPM owner authorization value in Active
Directory. Because the TPM state persists across operating system installations, this TPM
information is stored in a location in Active Directory that is separate from computer
objects.

Practical applications
Certificates can be installed or created on computers that are using the TPM. After a
computer is provisioned, the RSA private key for a certificate is bound to the TPM and
can't be exported. The TPM can also be used as a replacement for smart cards, which
reduces the costs associated with creating and disbursing smart cards.

Automated provisioning in the TPM reduces the cost of TPM deployment in an


enterprise. New APIs for TPM management can determine if TPM provisioning actions
require physical presence of a service technician to approve TPM state change requests
during the boot process.

Anti-malware software can use the boot measurements of the operating system start
state to prove the integrity of a computer running Windows 10 or Windows 11 or
Windows Server 2016. These measurements include the launch of Hyper-V to test that
datacenters using virtualization aren't running untrusted hypervisors. With BitLocker
Network Unlock, IT administrators can push an update without concerns that a
computer is waiting for PIN entry.

The TPM has several Group Policy settings that might be useful in certain enterprise
scenarios. For more info, see TPM Group Policy Settings.

Windows edition and licensing requirements


The following table lists the Windows editions that support Trusted Platform Module
(TPM):

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Trusted Platform Module (TPM) license entitlements are granted by the following
licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

New and changed functionality


For more info on new and changed functionality for Trusted Platform Module in
Windows, see What's new in Trusted Platform Module?

Device health attestation


Device health attestation enables enterprises to establish trust based on hardware and
software components of a managed device. With device heath attestation, you can
configure an MDM server to query a health attestation service that will allow or deny a
managed device access to a secure resource.

Some security issues that you can check on the device include the following:

Is Data Execution Prevention supported and enabled?


Is BitLocker Drive Encryption supported and enabled?
Is SecureBoot supported and enabled?

7 Note

Windows supports Device Health Attestation with TPM 2.0. TPM 2.0 requires UEFI
firmware. A device with legacy BIOS and TPM 2.0 won't work as expected.
Supported versions for device health
attestation
TPM Windows Windows Windows Windows Windows
version 11 10 Server 2022 Server 2019 Server 2016

TPM 1.2 >= ver Yes >= ver 1607


1607

TPM 2.0 Yes Yes Yes Yes Yes


TPM fundamentals
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article provides a description of the Trusted Platform Module (TPM 1.2 and TPM 2.0)
components, and explains how they're used to mitigate dictionary attacks.

A TPM is a microchip designed to provide basic security-related functions, primarily


involving encryption keys. The TPM is installed on the motherboard of a computer, and
it communicates with the rest of the system by using a hardware bus.

Devices that incorporate a TPM can create cryptographic keys and encrypt them, so that
the keys can only be decrypted by the TPM. This process, often called wrapping or
binding a key, can help protect the key from disclosure. Each TPM has a master wrapping
key, called the storage root key, which is stored within the TPM itself. The private portion
of a storage root key, or endorsement key, that is created in a TPM is never exposed to
any other component, software, process, or user.

You can specify whether encryption keys that are created by the TPM can be migrated
or not. If you specify that they can be migrated, the public and private portions of the
key can be exposed to other components, software, processes, or users. If you specify
that encryption keys can't be migrated, the private portion of the key is never exposed
outside the TPM.

Devices that incorporate a TPM can also create a key wrapped and tied to certain
platform measurements. This type of key can be unwrapped only when those platform
measurements have the same values that they had when the key was created. This
process is referred to as sealing the key to the TPM. Decrypting the key is called
unsealing. The TPM can also seal and unseal data that is generated outside the TPM.
With sealed key and software, such as BitLocker Drive Encryption, data can be locked
until specific hardware or software conditions are met.

With a TPM, private portions of key pairs are kept separate from the memory that is
controlled by the operating system. Keys can be sealed to the TPM, and certain
assurances about the state of a system (assurances that define the trustworthiness of a
system) can be made before the keys are unsealed and released for use. The TPM uses
its own internal firmware and logic circuits to process instructions. Hence, it doesn't rely
on the operating system and it isn't exposed to vulnerabilities that might exist in the
operating system or application software.
For information about which versions of Windows support which versions of the TPM,
see Trusted Platform Module technology overview. The features that are available in the
versions are defined in specifications by the Trusted Computing Group (TCG). For more
information, see the Trusted Platform Module page on the Trusted Computing Group
website: Trusted Platform Module .

The following sections provide an overview of the technologies that support the TPM:

Measured Boot with support for attestation


TPM-based Virtual Smart Card
TPM-based certificate storage
TPM Cmdlets
Physical presence interface
TPM 1.2 states and initialization
Endorsement keys
TPM Key Attestation
Anti-hammering

The following article describes the TPM services that can be controlled centrally by using
Group Policy settings: TPM Group Policy Settings.

Measured Boot with support for attestation


The Measured Boot feature provides anti-malware software with a trusted (resistant to
spoofing and tampering) log of all boot components. Anti-malware software can use the
log to determine whether components that ran before it are trustworthy or infected with
malware. It can also send the Measured Boot logs to a remote server for evaluation. The
remote server can start remediation actions by interacting with software on the client or
through out-of-band mechanisms, as appropriate.

TPM-based Virtual Smart Card

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.
The Virtual Smart Card emulates the functionality of traditional smart cards. Virtual
Smart Cards use the TPM chip, rather than using a separate physical smart card and
reader. This greatly reduces the management and deployment cost of smart cards in an
enterprise. To the end user, the Virtual Smart Card is always available on the device. If a
user needs to use more than one device, a Virtual Smart Card must be issued to the user
for each device. A computer that is shared among multiple users can host multiple
Virtual Smart Cards, one for each user.

TPM-based certificate storage


The TPM protects certificates and RSA keys. The TPM key storage provider (KSP)
provides easy and convenient use of the TPM as a way of strongly protecting private
keys. The TPM KSP generates keys when an organization enrolls for certificates. The TPM
also protects certificates that are imported from an outside source. TPM-based
certificates are standard certificates. The certificate can never leave the TPM from which
the keys are generated. The TPM can now be used for crypto-operations through
Cryptography API: Next Generation (CNG). For more info, see Cryptography API: Next
Generation.

TPM Cmdlets
You can manage the TPM using Windows PowerShell. For details, see TPM Cmdlets in
Windows PowerShell.

Physical presence interface


For TPM 1.2, the TCG specifications for TPMs require physical presence (typically,
pressing a key) for turning on the TPM, turning it off, or clearing it. These actions
typically can't be automated with scripts or other automation tools unless the individual
OEM supplies them.

TPM 1.2 states and initialization


TPM 1.2 has multiple possible states. Windows automatically initializes the TPM, which
brings it to an enabled, activated, and owned state.

Endorsement keys
A trusted application can use TPM only if the TPM contains an endorsement key, which
is an RSA key pair. The private half of the key pair is held inside the TPM and it's never
revealed or accessible outside the TPM.

Key attestation
TPM key attestation allows a certification authority to verify that a private key is
protected by a TPM and that the TPM is one that the certification authority trusts.
Endorsement keys proven valid are used to bind the user identity to a device. The user
certificate with a TPM-attested key provides higher security assurance backed up by
non-exportability, anti-hammering, and isolation of keys provided by a TPM.

Anti-hammering
When a TPM processes a command, it does so in a protected environment. For example
a dedicated micro controller on a discrete chip, or a special hardware-protected mode
on the main CPU. A TPM is used to create a cryptographic key that isn't disclosed
outside the TPM. It's used in the TPM after the correct authorization value is provided.

TPMs have anti-hammering protection that is designed to prevent brute force attacks,
or more complex dictionary attacks, that attempt to determine authorization values for
using a key. The basic approach is for the TPM to allow only a limited number of
authorization failures before it prevents more attempts to use keys and locks. Providing
a failure count for individual keys isn't technically practical, so TPMs have a global
lockout when too many authorization failures occur.

Because many entities can use the TPM, a single authorization success can't reset the
TPM's anti-hammering protection. This prevents an attacker from creating a key with a
known authorization value and then using it to reset the TPM's protection. TPMs are
designed to forget about authorization failures after a period of time so the TPM
doesn't enter a lockout state unnecessarily. A TPM owner password can be used to reset
the TPM's lockout logic.

TPM 2.0 anti-hammering


TPM 2.0 has well defined anti-hammering behavior. This is in contrast to TPM 1.2 for
which the anti-hammering protection was implemented by the manufacturer and the
logic varied widely throughout the industry.

For systems with TPM 2.0, the TPM is configured by Windows to lock after 32
authorization failures and to forget one authorization failure every 10 minutes. This
means that a user could quickly attempt to use a key with the wrong authorization value
32 times. For each of the 32 attempts, the TPM records if the authorization value was
correct or not. This inadvertently causes the TPM to enter a locked state after 32 failed
attempts.

Attempts to use a key with an authorization value for the next 10 minutes wouldn't
return success or failure. Instead, the response indicates that the TPM is locked.
After 10 minutes, one authorization failure is forgotten and the number of authorization
failures remembered by the TPM drops to 31. The TPM leaves the locked state and
returns to normal operation.
With the correct authorization value, keys could be used normally if no authorization
failures occur during the next 10 minutes. If a period of 320 minutes elapses with no
authorization failures, the TPM doesn't remember any authorization failures, and 32
failed attempts could occur again.

Windows doesn't require TPM 2.0 systems to forget about authorization failures when
the system is fully powered off or when the system has hibernated.
Windows requires that authorization failures are forgotten when the system is running
normally, in a sleep mode, or in low power states other than off. If a Windows system
with TPM 2.0 is locked, the TPM leaves lockout mode if the system is left on for 10
minutes.

The anti-hammering protection for TPM 2.0 can be fully reset immediately by sending a
reset lockout command to the TPM, and providing the TPM owner password. By default,
Windows automatically provisions TPM 2.0 and stores the TPM owner password for use
by system administrators.

In some implementations, the TPM owner authorization value is stored centrally in


Active Directory, and not on the local system. An administrator can execute tpm.msc and
choose to reset the TPM lockout time. If the TPM owner password is stored locally, it's
used to reset the lockout time. If the TPM owner password isn't available on the local
system, the administrator must provide it. If an administrator attempts to reset the TPM
lockout state with the wrong TPM owner password, the TPM doesn't allow another
attempt to reset the lockout state for 24 hours.

TPM 2.0 allows some keys to be created without an authorization value associated with
them. These keys can be used when the TPM is locked. For example, BitLocker with a
default TPM-only configuration is able to use a key in the TPM to start Windows, even
when the TPM is locked.

Rationale behind the defaults


Originally, BitLocker allowed from 4 to 20 characters for a PIN. Windows Hello has its
own PIN for sign-in, which can be 4 to 127 characters. Both BitLocker and Windows
Hello use the TPM to prevent PIN brute-force attacks.

Windows 10, version 1607 and earlier used Dictionary Attack Prevention parameters. The
Dictionary Attack Prevention Parameters provide a way to balance security needs with
usability. For example, when BitLocker is used with a TPM + PIN configuration, the
number of PIN guesses is limited over time. A TPM 2.0 in this example could be
configured to allow only 32 PIN guesses immediately, and then only one more guess
every two hours. This totals a maximum of about 4415 guesses per year. If the PIN is
four digits, all 9999 possible PIN combinations could be attempted in a little over two
years.

Staring in Windows 10, version 1703, the minimum length for the BitLocker PIN was
increased to six characters, to better align with other Windows features that use TPM
2.0, including Windows Hello. Increasing the PIN length requires a greater number of
guesses for an attacker. Therefore, the lockout duration between each guess was
shortened to allow legitimate users to retry a failed attempt sooner while maintaining a
similar level of protection. In case the legacy parameters for lockout threshold and
recovery time need to be used, make sure that GPO is enabled and configure the system
to use legacy Dictionary Attack Prevention Parameters setting for TPM 2.0.

TPM-based smart cards


The Windows TPM-based smart card, which is a virtual smart card, can be configured to
allow sign in to the system. In contrast with physical smart cards, the sign-in process
uses a TPM-based key with an authorization value. The following list shows the
advantages of virtual smart cards:

Physical smart cards can enforce lockout for only the physical smart card PIN, and
they can reset the lockout after the correct PIN is entered. With a virtual smart
card, the TPM's anti-hammering protection isn't reset after a successful
authentication. The allowed number of authorization failures before the TPM
enters lockout includes many factors
Hardware manufacturers and software developers can use the security features of
the TPM to meet their requirements
The intent of selecting 32 failures as the lock-out threshold is to avoid users to lock
the TPM (even when learning to type new passwords or if they frequently lock and
unlock their computers). If users lock the TPM, they must wait 10 minutes or use
other credentials to sign in, such as a user name and password
How Windows uses the Trusted Platform
Module
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

The Windows operating system places hardware-based security deeper inside many
features, maximizing platform security while increasing usability. To achieve many of
these security enhancements, Windows makes extensive use of the Trusted Platform
Module (TPM). This article offers an overview of the TPM, describes how it works, and
discusses the benefits that TPM brings to Windows and the cumulative security impact
of running Windows on a device with a TPM.

TPM Overview
The TPM is a cryptographic module that enhances computer security and privacy.
Protecting data through encryption and decryption, protecting authentication
credentials, and proving which software is running on a system are basic functionalities
associated with computer security. The TPM helps with all these scenarios and more.

Historically, TPMs have been discrete chips soldered to a computer's motherboard. Such
implementations allow the computer's original equipment manufacturer (OEM) to
evaluate and certify the TPM separate from the rest of the system. Although discrete
TPM implementations are still common, they can be problematic for integrated devices
that are small or have low power consumption. Some newer TPM implementations
integrate TPM functionality into the same chipset as other platform components while
still providing logical separation similar to discrete TPM chips.

TPMs are passive: they receive commands and return responses. To realize the full
benefit of a TPM, the OEM must carefully integrate system hardware and firmware with
the TPM to send it commands and react to its responses. TPMs were originally designed
to provide security and privacy benefits to a platform's owner and users, but newer
versions can provide security and privacy benefits to the system hardware itself. Before it
can be used for advanced scenarios, a TPM must be provisioned. Windows automatically
provisions a TPM, but if the operating system is reinstalled, the TPM may be required to
be explicitly reprovisioned before it can use all the TPM's features.

The Trusted Computing Group (TCG) is the nonprofit organization that publishes and
maintains the TPM specification. The TCG exists to develop, define, and promote
vendor-neutral, global industry standards that support a hardware-based root of trust
for interoperable trusted computing platforms. The TCG also publishes the TPM
specification as the international standard ISO/IEC 11889, using the Publicly Available
Specification Submission Process that the Joint Technical Committee 1 defines between
the International Organization for Standardization (ISO) and the International
Electrotechnical Commission (IEC).

OEMs implement the TPM as a component in a trusted computing platform, such as a


PC, tablet, or phone. Trusted computing platforms use the TPM to support privacy and
security scenarios that software alone can't achieve. For example, software alone can't
reliably report whether malware is present during the system startup process. The close
integration between TPM and platform increases the transparency of the startup process
and supports evaluating device health by enabling reliable measuring and reporting of
the software that starts the device. Implementation of a TPM as part of a trusted
computing platform provides a hardware root of trust-that is, it behaves in a trusted
way. For example, if a key stored in a TPM has properties that disallow exporting the
key, that key truly can't leave the TPM.

The TCG designed the TPM as a low-cost, mass-market security solution that addresses
the requirements of different customer segments. There are variations in the security
properties of different TPM implementations just as there are variations in customer and
regulatory requirements for different sectors. In public-sector procurement, for example,
some governments have clearly defined security requirements for TPMs, whereas others
don't.

Certification programs for TPMs-and technology in general-continue to evolve as the


speed of innovation increases. Although having a TPM is clearly better than not having a
TPM, Microsoft's best advice is to determine your organization's security needs and
research any regulatory requirements associated with procurement for your industry.
The result is a balance between scenarios used, assurance level, cost, convenience, and
availability.

TPM in Windows
The security features of Windows combined with the benefits of a TPM offer practical
security and privacy benefits. The following sections start with major TPM-related
security features in Windows and go on to describe how key technologies use the TPM
to enable or increase security.

Platform Crypto Provider


Windows includes a cryptography framework called Cryptographic API: Next Generation
(CNG), the basic approach of which is to implement cryptographic algorithms in
different ways but with a common application programming interface (API). Applications
that use cryptography can use the common API without knowing the details of how an
algorithm is implemented much less the algorithm itself.

Although CNG sounds like a mundane starting point, it illustrates some of the
advantages that a TPM provides. Underneath the CNG interface, Windows or third
parties supply a cryptographic provider (that is, an implementation of an algorithm)
implemented as software libraries alone or in a combination of software and available
system hardware or third-party hardware. If implemented through hardware, the
cryptographic provider communicates with the hardware behind the software interface
of CNG.

The Platform Crypto Provider, introduced in the Windows 8 operating system, exposes
the following special TPM properties, which software-only CNG providers can't offer or
can't offer as effectively:

Key protection. The Platform Crypto Provider can create keys in the TPM with
restrictions on their use. The operating system can load and use the keys in the
TPM without copying the keys to system memory, where they're vulnerable to
malware. The Platform Crypto Provider can also configure keys that a TPM protects
so that they aren't removable. If a TPM creates a key, the key is unique and resides
only in that TPM. If the TPM imports a key, the Platform Crypto Provider can use
the key in that TPM, but that TPM isn't a source for making more copies of the key
or enabling the use of copies elsewhere. In sharp contrast, software solutions that
protect keys from copying are subject to reverse-engineering attacks, in which
someone figures out how the solution stores keys or makes copies of keys while
they are in memory during use.

Dictionary attack protection. Keys that a TPM protects can require an


authorization value such as a PIN. With dictionary attack protection, the TPM can
prevent attacks that attempt a large number of guesses to determine the PIN. After
too many guesses, the TPM simply returns an error saying no more guesses are
allowed for a period of time. Software solutions might provide similar features, but
they can't provide the same level of protection, especially if the system restarts, the
system clock changes, or files on the hard disk that count failed guesses are rolled
back. In addition, with dictionary attack protection, authorization values such as
PINs can be shorter and easier to remember while still providing the same level of
protection as more complex values when using software solutions.
These TPM features give Platform Crypto Provider distinct advantages over software-
based solutions. A practical way to see these benefits in action is when using certificates
on a Windows device. On platforms that include a TPM, Windows can use the Platform
Crypto Provider to provide certificate storage. Certificate templates can specify that a
TPM use the Platform Crypto Provider to protect the key associated with a certificate. In
mixed environments, where some computers might not have a TPM, the certificate
template could prefer the Platform Crypto Provider over the standard Windows software
provider. If a certificate is configured as not able to be exported, the private key for the
certificate is restricted and can't be exported from the TPM. If the certificate requires a
PIN, the PIN gains the TPM's dictionary attack protection automatically.

Virtual Smart Card

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

Smart cards are physical devices that typically store a single certificate and the
corresponding private key. Users insert a smart card into a built-in or USB card reader
and enter a PIN to unlock it. Windows can then access the card's certificate and use the
private key for authentication or to unlock BitLocker protected data volumes. Smart
cards are popular because they provide two-factor authentication that requires both
something the user has (that is, the smart card) and something the user knows (such as
the smart card PIN). However, smart cards can be expensive because they require
purchase and deployment of both smart cards and smart card readers.

In Windows, the Virtual Smart Card feature allows the TPM to mimic a permanently
inserted smart card. The TPM becomes something the user has but still requires a PIN.
While physical smart cards limit the number of PIN attempts before locking the card and
requiring a reset, a virtual smart card relies on the TPM's dictionary attack protection to
prevent too many PIN guesses.

For TPM-based virtual smart cards, the TPM protects the use and storage of the
certificate private key, so that it can't be copied when it is in use or stored and used
elsewhere. Using a component that is part of the system rather than a separate physical
smart card, can reduce total cost of ownership. The lost card or card left at home
scenarios are not applicable, and the benefits of smart card-based multifactor
authentication is preserved. For users, virtual smart cards are simple to use, requiring
only a PIN to unlock. Virtual smart cards support the same scenarios that physical smart
cards support, including signing in to Windows or authenticating for resource access.

Windows Hello for Business


Windows Hello for Business provides authentication methods intended to replace
passwords, which can be difficult to remember and easily compromised. In addition,
username/password solutions for authentication often reuse the same credential
combinations on multiple devices and services. If those credentials are compromised,
they are compromised in multiple places. Windows Hello for Business combines the
information provisioned on each device (i.e., the cryptographic key) with additional
information to authenticate users. On a system that has a TPM, the TPM can protect the
key. If a system does not have a TPM, software-based techniques protect the key. The
additional information the user supplies can be a PIN value or, if the system has the
necessary hardware, biometric information, such as fingerprint or facial recognition. To
protect privacy, the biometric information is used only on the provisioned device to
access the provisioned key: it is not shared across devices.

The adoption of new authentication technology requires that identity providers and
organizations deploy and use that technology. Windows Hello for Business lets users
authenticate with their existing Microsoft account, an Active Directory account, a
Microsoft Azure Active Directory account, or even non-Microsoft Identity Provider
Services or Relying Party Services that support Fast ID Online V2.0 authentication .

Identity providers have flexibility in how they provision credentials on client devices. For
example, an organization might provision only those devices that have a TPM so that
the organization knows that a TPM protects the credentials. The ability to distinguish a
TPM from malware acting like a TPM requires the following TPM capabilities (see Figure
1):

Endorsement key. The TPM manufacturer can create a special key in the TPM
called an endorsement key. An endorsement key certificate, signed by the
manufacturer, says that the endorsement key is present in a TPM that the
manufacturer made. Solutions can use the certificate with the TPM containing the
endorsement key to confirm a scenario really involves a TPM from a specific TPM
manufacturer (instead of malware acting like a TPM).

Attestation identity key. To protect privacy, most TPM scenarios do not directly
use an actual endorsement key. Instead, they use attestation identity keys, and an
identity certificate authority (CA) uses the endorsement key and its certificate to
prove that one or more attestation identity keys actually exist in a real TPM. The
identity CA issues attestation identity key certificates. More than one identity CA
will generally see the same endorsement key certificate that can uniquely identify
the TPM, but any number of attestation identity key certificates can be created to
limit the information shared in other scenarios.


Figure 1: TPM Cryptographic Key Management

For Windows Hello for Business, Microsoft can fill the role of the identity CA. Microsoft
services can issue an attestation identity key certificate for each device, user, and identify
provider to ensure that privacy is protected and to help identity providers ensure that
device TPM requirements are met before Windows Hello for Business credentials are
provisioned.

BitLocker Drive Encryption


BitLocker provides full-volume encryption to protect data at rest. The most common
device configuration splits the hard drive into several volumes. The operating system
and user data reside on one volume that holds confidential information, and other
volumes hold public information such as boot components, system information and
recovery tools. (These other volumes are used infrequently enough that they do not
need to be visible to users.) Without more protections in place, if the volume containing
the operating system and user data is not encrypted, someone can boot another
operating system and easily bypass the intended operating system's enforcement of file
permissions to read any user data.
In the most common configuration, BitLocker encrypts the operating system volume so
that if the computer or hard disk is lost or stolen when powered off, the data on the
volume remains confidential. When the computer is turned on, starts normally, and
proceeds to the Windows logon prompt, the only path forward is for the user to log on
with his or her credentials, allowing the operating system to enforce its normal file
permissions. If something about the boot process changes, however-for example, a
different operating system is booted from a USB device-the operating system volume
and user data can't be read and are not accessible. The TPM and system firmware
collaborate to record measurements of how the system started, including loaded
software and configuration details such as whether boot occurred from the hard drive or
a USB device. BitLocker relies on the TPM to allow the use of a key only when startup
occurs in an expected way. The system firmware and TPM are carefully designed to work
together to provide the following capabilities:

Hardware root of trust for measurement. A TPM allows software to send it


commands that record measurements of software or configuration information.
This information can be calculated using a hash algorithm that essentially
transforms a lot of data into a small, statistically unique hash value. The system
firmware has a component called the Core Root of Trust for Measurement (CRTM)
that is implicitly trusted. The CRTM unconditionally hashes the next software
component and records the measurement value by sending a command to the
TPM. Successive components, whether system firmware or operating system
loaders, continue the process by measuring any software components they load
before running them. Because each component's measurement is sent to the TPM
before it runs, a component can't erase its measurement from the TPM. (However,
measurements are erased when the system is restarted.) The result is that at each
step of the system startup process, the TPM holds measurements of boot software
and configuration information. Any changes in boot software or configuration yield
different TPM measurements at that step and later steps. Because the system
firmware unconditionally starts the measurement chain, it provides a hardware-
based root of trust for the TPM measurements. At some point in the startup
process, the value of recording all loaded software and configuration information
diminishes and the chain of measurements stops. The TPM allows for the creation
of keys that can be used only when the platform configuration registers that hold
the measurements have specific values.

Key used only when boot measurements are accurate. BitLocker creates a key in
the TPM that can be used only when the boot measurements match an expected
value. The expected value is calculated for the step in the startup process when
Windows Boot Manager runs from the operating system volume on the system
hard drive. Windows Boot Manager, which is stored unencrypted on the boot
volume, needs to use the TPM key so that it can decrypt data read into memory
from the operating system volume and startup can proceed using the encrypted
operating system volume. If a different operating system is booted or the
configuration is changed, the measurement values in the TPM will be different, the
TPM will not let Windows Boot Manager use the key, and the startup process can't
proceed normally because the data on the operating system can't be decrypted. If
someone tries to boot the system with a different operating system or a different
device, the software or configuration measurements in the TPM will be wrong and
the TPM will not allow use of the key needed to decrypt the operating system
volume. As a failsafe, if measurement values change unexpectedly, the user can
always use the BitLocker recovery key to access volume data. Organizations can
configure BitLocker to store the recovery key-in Active Directory Domain Services
(AD DS).

Device hardware characteristics are important to BitLocker and its ability to protect data.
One consideration is whether the device provides attack vectors when the system is at
the logon screen. For example, if the Windows device has a port that allows direct
memory access so that someone can plug in hardware and read memory, an attacker
can read the operating system volume's decryption key from memory while at the
Windows logon screen. To mitigate this risk, organizations can configure BitLocker so
that the TPM key requires both the correct software measurements and an authorization
value. The system startup process stops at Windows Boot Manager, and the user is
prompted to enter the authorization value for the TPM key or insert a USB device with
the value. This process stops BitLocker from automatically loading the key into memory
where it might be vulnerable, but has a less desirable user experience.

Newer hardware and Windows work better together to disable direct memory access
through ports and reduce attack vectors. The result is that organizations can deploy
more systems without requiring users to enter additional authorization information
during the startup process. The right hardware allows BitLocker to be used with the
"TPM-only" configuration giving users a single sign-on experience without having to
enter a PIN or USB key during boot.

Device Encryption
Device Encryption is the consumer version of BitLocker, and it uses the same underlying
technology. How it works is if a customer logs on with a Microsoft account and the
system meets Modern Standby hardware requirements, BitLocker Drive Encryption is
enabled automatically in Windows. The recovery key is backed up in the Microsoft cloud
and is accessible to the consumer through his or her Microsoft account. The Modern
Standby hardware requirements inform Windows that the hardware is appropriate for
deploying Device Encryption and allows use of the "TPM-only" configuration for a
simple consumer experience. In addition, Modern Standby hardware is designed to
reduce the likelihood that measurement values change and prompt the customer for the
recovery key.

For software measurements, Device Encryption relies on measurements of the authority


providing software components (based on code signing from manufacturers such as
OEMs or Microsoft) instead of the precise hashes of the software components
themselves. This permits servicing of components without changing the resulting
measurement values. For configuration measurements, the values used are based on the
boot security policy instead of the numerous other configuration settings recorded
during startup. These values also change less frequently. The result is that Device
Encryption is enabled on appropriate hardware in a user-friendly way while also
protecting data.

Measured Boot
Windows 8 introduced Measured Boot as a way for the operating system to record the
chain of measurements of software components and configuration information in the
TPM through the initialization of the Windows operating system. In previous Windows
versions, the measurement chain stopped at the Windows Boot Manager component
itself, and the measurements in the TPM were not helpful for understanding the starting
state of Windows.

The Windows boot process happens in stages and often involves third-party drivers to
communicate with vendor-specific hardware or implement antimalware solutions. For
software, Measured Boot records measurements of the Windows kernel, Early-Launch
Anti-Malware drivers, and boot drivers in the TPM. For configuration settings, Measured
Boot records security-relevant information such as signature data that antimalware
drivers use and configuration data about Windows security features (e.g., whether
BitLocker is on or off).

Measured Boot ensures that TPM measurements fully reflect the starting state of
Windows software and configuration settings. If security settings and other protections
are set up correctly, they can be trusted to maintain the security of the running
operating system thereafter. Other scenarios can use the operating system's starting
state to determine whether the running operating system should be trusted.

TPM measurements are designed to avoid recording any privacy-sensitive information


as a measurement. As an additional privacy protection, Measured Boot stops the
measurement chain at the initial starting state of Windows. Therefore, the set of
measurements does not include details about which applications are in use or how
Windows is being used. Measurement information can be shared with external entities
to show that the device is enforcing adequate security policies and did not start with
malware.

The TPM provides the following way for scenarios to use the measurements recorded in
the TPM during boot:

Remote Attestation. Using an attestation identity key, the TPM can generate and
cryptographically sign a statement (orquote) of the current measurements in the
TPM. Windows can create unique attestation identity keys for various scenarios to
prevent separate evaluators from collaborating to track the same device.
Additional information in the quote is cryptographically scrambled to limit
information sharing and better protect privacy. By sending the quote to a remote
entity, a device can attest which software and configuration settings were used to
boot the device and initialize the operating system. An attestation identity key
certificate can provide further assurance that the quote is coming from a real TPM.
Remote attestation is the process of recording measurements in the TPM,
generating a quote, and sending the quote information to another system that
evaluates the measurements to establish trust in a device. Figure 2 illustrates this
process.

When new security features are added to Windows, Measured Boot adds security-
relevant configuration information to the measurements recorded in the TPM. Measured
Boot enables remote attestation scenarios that reflect the system firmware and the
Windows initialization state.


Figure 2: Process used to create evidence of boot software and configuration using a TPM
Health Attestation
Some Windows improvements help security solutions implement remote attestation
scenarios. Microsoft provides a Health Attestation service, which can create attestation
identity key certificates for TPMs from different manufacturers as well as parse
measured boot information to extract simple security assertions, such as whether
BitLocker is on or off. The simple security assertions can be used to evaluate device
health.

Mobile device management (MDM) solutions can receive simple security assertions from
the Microsoft Health Attestation service for a client without having to deal with the
complexity of the quote or the detailed TPM measurements. MDM solutions can act on
the security information by quarantining unhealthy devices or blocking access to cloud
services such as Microsoft Office 365.

Credential Guard
Credential Guard is a new feature in Windows that helps protect Windows credentials in
organizations that have deployed AD DS. Historically, a user's credentials (such as a
logon password) were hashed to generate an authorization token. The user employed
the token to access resources that he or she was permitted to use. One weakness of the
token model is that malware that had access to the operating system kernel could look
through the computer's memory and harvest all the access tokens currently in use. The
attacker could then use harvested tokens to log on to other machines and collect more
credentials. This kind of attack is called a "pass the hash" attack, a malware technique
that infects one machine to infect many machines across an organization.

Similar to the way Microsoft Hyper-V keeps virtual machines (VMs) separate from one
another, Credential Guard uses virtualization to isolate the process that hashes
credentials in a memory area that the operating system kernel can't access. This isolated
memory area is initialized and protected during the boot process so that components in
the larger operating system environment can't tamper with it. Credential Guard uses the
TPM to protect its keys with TPM measurements, so they are accessible only during the
boot process step when the separate region is initialized; they are not available for the
normal operating system kernel. The local security authority code in the Windows kernel
interacts with the isolated memory area by passing in credentials and receiving single-
use authorization tokens in return.

The resulting solution provides defense in depth, because even if malware runs in the
operating system kernel, it can't access the secrets inside the isolated memory area that
actually generates authorization tokens. The solution does not solve the problem of key
loggers because the passwords such loggers capture actually pass through the normal
Windows kernel, but when combined with other solutions, such as smart cards for
authentication, Credential Guard greatly enhances the protection of credentials in
Windows.

Conclusion
The TPM adds hardware-based security benefits to Windows. When installed on
hardware that includes a TPM, Window delivers remarkably improved security benefits.
The following table summarizes the key benefits of the TPM's major features.

Feature Benefits when used on a system with a TPM

Platform Crypto If the machine is compromised, the private key associated with the
Provider certificate can't be copied off the device.
The TPM's dictionary attack mechanism protects PIN values to use a
certificate.

Virtual Smart Achieve security similar to that of physical smart cards without
Card deploying physical smart cards or card readers.

Windows Hello Credentials provisioned on a device can't be copied elsewhere.


for Business Confirm a device's TPM before credentials are provisioned.

BitLocker Drive Multiple options are available for enterprises to protect data at rest
Encryption while balancing security requirements with different device hardware.

Device With a Microsoft account and the right hardware, consumers' devices
Encryption seamlessly benefit from data-at-rest protection.

Measured Boot A hardware root of trust contains boot measurements that help detect
malware during remote attestation.

Health MDM solutions can easily perform remote attestation and evaluate
Attestation client health before granting access to resources or cloud services such
as Office 365.

Credential Defense in depth increases so that even if malware has administrative


Guard rights on one machine, it is significantly more difficult to compromise
additional machines in an organization.
Although some of the aforementioned features have additional hardware requirements
(e.g., virtualization support), the TPM is a cornerstone of Windows security. Microsoft
and other industry stakeholders continue to improve the global standards associated
with TPM and find more and more applications that use it to provide tangible benefits
to customers. Microsoft has included support for most TPM features in its version of
Windows for the Internet of Things (IoT) called Windows IoT Core. IoT devices that
might be deployed in insecure physical locations and connected to cloud services like
Azure IoT Hub for management can use the TPM in innovative ways to address their
emerging security requirements.
Manage TPM commands
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article for the IT professional describes how to manage which Trusted Platform
Module (TPM) commands are available to domain users and to local users.

After a computer user takes ownership of the TPM, the TPM owner can limit which TPM
commands can be run by creating a list of blocked TPM commands. The list can be
created and applied to all computers in a domain by using Group Policy, or a list can be
created for individual computers by using the TPM MMC. Because some hardware
vendors might provide additional commands or the Trusted Computing Group may
decide to add commands in the future, the TPM MMC also supports the ability to block
new commands.

The following procedures describe how to manage the TPM command lists. You must be
a member of the local Administrators group.

Block TPM commands by using the Local


Group Policy Editor
1. Open the Local Group Policy Editor (gpedit.msc). If the User Account Control
dialog box appears, confirm that the action it displays is what you want, and then
select Yes.

7 Note

Administrators with appropriate rights in a domain can configure a Group


Policy Object (GPO) that can be applied through Active Directory Domain
Services (AD DS).

2. In the console tree, under Computer Configuration, expand Administrative


Templates, and then expand System.

3. Under System, select Trusted Platform Module Services.

4. In the details pane, double-click Configure the list of blocked TPM commands.

5. Select Enabled, and then select Show.


6. For each command that you want to block, select Add, enter the command
number, and then select OK.

7 Note

For a list of commands, see links in the TPM Specification .

7. After you have added numbers for each command that you want to block, select
OK twice.

8. Close the Local Group Policy Editor.

Block or allow TPM commands by using the


TPM MMC
1. Open the TPM MMC (tpm.msc)

2. If the User Account Control dialog box appears, confirm that the action it displays
is what you want, and then select Yes.

3. In the console tree, select Command Management. A list of TPM commands is


displayed.

4. In the list, select a command that you want to block or allow.

5. Under Actions, select Block Selected Command or Allow Selected Command as


needed. If Allow Selected Command is unavailable, that command is currently
blocked by Group Policy.

Block new commands


1. Open the TPM MMC (tpm.msc).

If the User Account Control dialog box appears, confirm that the action it displays
is what you want, and then select Yes.

2. In the console tree, select Command Management. A list of TPM commands is


displayed.

3. In the Action pane, select Block New Command. The Block New Command dialog
box is displayed.
4. In the Command Number text box, type the number of the new command that
you want to block, and then select OK. The command number you entered is
added to the blocked list.

Use the TPM cmdlets


You can manage the TPM using Windows PowerShell. For details, see
TrustedPlatformModule PowerShell cmdlets.

Related articles
Trusted Platform Module
Manage TPM lockout
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article for the IT professional describes how to manage the lockout feature for the
Trusted Platform Module (TPM) in Windows.

About TPM lockout


The TPM locks itself to prevent tampering or malicious attacks. TPM lockout often lasts
for a variable amount of time or until the computer is turned off. While the TPM is in
lockout mode, it generally returns an error message when it receives commands that
require an authorization value. One exception is that the TPM always allows the owner
at least one attempt to reset the TPM lockout when it is in lockout mode.

Windows takes ownership of the TPM ownership upon first boot. By default, Windows
doesn't retain the TPM owner password.

In some cases, encryption keys are protected by a TPM by requiring a valid authorization
value to access the key. A common example is configuring BitLocker Drive Encryption to
use the TPM plus PIN key protector. In this scenario, the user must type the correct PIN
during the boot process to access the volume encryption key protected by the TPM. To
prevent malicious users or software from discovering authorization values, TPMs
implement protection logic. The protection logic is designed to slow or stop responses
from the TPM if it detects that an entity might be trying to guess authorization values.

TPM 1.2
The industry standards from the Trusted Computing Group (TCG) specify that TPM
manufacturers must implement some form of protection logic in TPM 1.2 and TPM 2.0
chips. TPM 1.2 devices implement different protection mechanisms and behavior. In
general, the TPM chip takes exponentially longer to respond if incorrect authorization
values are sent to the TPM. Some TPM chips may not store failed attempts over time.
Other TPM chips may store every failed attempt indefinitely. Therefore, some users may
experience increasingly longer delays when they mistype an authorization value that is
sent to the TPM. These delays can prevent them from using the TPM for a period of
time.
TPM 2.0
TPM 2.0 devices have standardized lockout behavior which Windows configures. TPM
2.0 devices have a maximum count threshold and a healing time. Windows configures
the maximum count to be 32 and the healing time to be 10 minutes. This configuration
means that every continuous 10 minutes of powered on operation without an event
causes the counter to decrease by 1.

If your TPM has entered lockout mode or is responding slowly to commands, you can
reset the lockout value by using the following procedures. Resetting the TPM lockout
requires the TPM owner's authorization. This value is no longer retained by default
starting with Windows 10 version 1607 and higher.

Reset the TPM lockout by using the TPM MMC

7 Note

This procedure is only available if you have configured Windows to retain the TPM
Owner Password. By default, this password isn't available in Windows 10 starting
with version 1607 and higher.

The following procedure explains the steps to reset the TPM lockout by using the TPM
MMC.

Reset the TPM lockout


1. Open the TPM MMC (tpm.msc).

1 In the Action pane, select Reset TPM Lockout to start the Reset TPM Lockout Wizard.

1. Choose one of the following methods to enter the TPM owner password:

If you saved your TPM owner password to a .tpm file, select I have the owner
password file, and then type the path to the file, or select Browse to navigate
to the file location.

If you want to manually enter your TPM owner password, select I want to
enter the owner password, and then type the password in the text box
provided.

7 Note
If you enabled BitLocker and your TPM at the same time, and you printed
your BitLocker recovery password when you turned on BitLocker, your TPM
owner password may have printed with it.

Use Group Policy to manage TPM lockout


settings
The TPM Group Policy settings in the following list are located at:

Computer Configuration > Administrative Templates > System > Trusted Platform
Module Services

Standard User Lockout Duration

This policy setting allows you to manage the duration in minutes for counting
standard user authorization failures for TPM commands that require authorization.
An authorization failure occurs each time a user sends a command to the TPM and
receives an error message that indicates an authorization failure occurred.
Authorization failures that are older than the duration you set are ignored. If the
number of TPM commands with an authorization failure within the lockout
duration equals a threshold, the user is prevented from sending commands to the
TPM that require authorization.

Standard User Individual Lockout Threshold

This policy setting allows you to manage the maximum number of authorization
failures for the TPM for each user. This value is the maximum number of
authorization failures that each user can have before the user isn't allowed to send
commands to the TPM that require authorization. If the number of authorization
failures equals the duration that is set for the policy setting, the user is prevented
from sending commands to the TPM that require authorization.

Standard User Total Lockout Threshold

This policy setting allows you to manage the maximum number of authorization
failures for the TPM for all standard users. If the total number of authorization
failures for all users equals the duration that is set for the policy, all users are
prevented from sending commands to the TPM that require authorization.

For information about mitigating dictionary attacks that use the lockout settings, see
TPM fundamentals.
Use the TPM cmdlets
You can manage the TPM using Windows PowerShell. For details, see TPM Cmdlets in
Windows PowerShell.

Related articles
Trusted Platform Module
Change the TPM owner password
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article for the IT professional describes how to change the password or PIN for the
owner of the Trusted Platform Module (TPM) that is installed on your system.

About the TPM owner password


Starting with Windows 10, version 1607, Windows doesn't retain the TPM owner
password when provisioning the TPM. The password is set to a random high entropy
value and then discarded.

) Important

Although the TPM owner password isn't retained starting with Windows 10, version
1607, you can change a default registry key to retain it. However, we strongly
recommend that you don't make this change. To retain the TPM owner password,
under the registry key of

HKLM\Software\Policies\Microsoft\TPM

create a REG_DWORD value of OSManagedAuthLevel and set it to 4 .

For Windows versions newer than Windows 10 1703, the default value for this key
is 5. A value of 5 means:

TPM 2.0: Keep the lockout authorization.


TPM 1.2: Discard the Full TPM owner authorization and retain only the
Delegated authorization.

Unless the registry key value is changed from 5 to 4 before the TPM is provisioned,
the owner password isn't saved.

Only one owner password exists for each TPM. The TPM owner password allows the
ability to enable, disable, or clear the TPM without having physical access to the
computer, for example, by using the command-line tools remotely. The TPM owner
password also allows manipulation of the TPM dictionary attack logic. Windows takes
ownership of the TPM as part of the provisioning process on each boot. Ownership can
change when you share the password or clear your ownership of the TPM so someone
else can initialize it.

Without the owner password, you can still perform all the preceding actions with a
physical presence confirmation from UEFI.

Other TPM management options


Instead of changing your owner password, you can also use the following options to
manage your TPM:

Clear the TPM - If you want to invalidate all of the existing keys that have been
created since you took ownership of the TPM, you can clear it. For important
precautions for this process, and instructions for completing it, see Clear all the
keys from the TPM.

Turn off the TPM - With TPM 1.2 and Windows 10, versions 1507 and 1511, you
can turn off the TPM. Turn off the TPM if you want to keep all existing keys and
data intact and disable the services that are provided by the TPM. For more info,
see Turn off the TPM.

Changing the TPM owner password


With Windows 10, version 1507 or 1511, if you have opted specifically to preserve the
TPM owner password, you can use the saved password to change to a new password.

To change to a new TPM owner password, in TPM.msc , select Change Owner Password,
and follow the instructions. It prompts to provide the owner password file or to type the
password. Then you can create a new password, either automatically or manually, and
save the password in a file or as a printout.

Use the TPM cmdlets


You can manage the TPM using Windows PowerShell. For details, see TPM Cmdlets in
Windows PowerShell.

Related articles
Trusted Platform Module
TPM Group Policy settings
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic describes the Trusted Platform Module (TPM) Services that can be controlled
centrally by using Group Policy settings.

The Group Policy settings for TPM services are located at:

Computer Configuration\Administrative Templates\System\Trusted Platform Module


Services\

The following Group Policy settings were introduced in Windows.

Configure the level of TPM owner authorization


information available to the operating system

) Important

Beginning with Windows 10 version 1703, the default value is 5. This value is
implemented during provisioning so that another Windows component can either
delete it or take ownership of it, depending on the system configuration. For TPM
2.0, a value of 5 means keep the lockout authorization. For TPM 1.2, it means
discard the Full TPM owner authorization and retain only the Delegated
authorization.

This policy setting configured which TPM authorization values are stored in the registry
of the local computer. Certain authorization values are required in order to allow
Windows to perform certain actions.

TPM 1.2 value TPM 2.0 value Purpose Kept Kept Kept
at at at
level level level
0? 2? 4?

OwnerAuthAdmin StorageOwnerAuth Create SRK No Yes Yes

OwnerAuthEndorsement EndorsementAuth Create or use EK No Yes Yes


(1.2 only: Create
AIK)
TPM 1.2 value TPM 2.0 value Purpose Kept Kept Kept
at at at
level level level
0? 2? 4?

OwnerAuthFull LockoutAuth Reset/change No No Yes


Dictionary Attack
Protection

There are three TPM owner authentication settings that are managed by the Windows
operating system. You can choose a value of Full, Delegate, or None.

Full This setting stores the full TPM owner authorization, the TPM administrative
delegation blob, and the TPM user delegation blob in the local registry. With this
setting, you can use the TPM without requiring remote or external storage of the
TPM owner authorization value. This setting is appropriate for scenarios that do
not require you to reset the TPM anti-hammering logic or change the TPM owner
authorization value. Some TPM-based applications may require that this setting is
changed before features that depend on the TPM anti-hammering logic can be
used. Full owner authorization in TPM 1.2 is similar to lockout authorization in TPM
2.0. Owner authorization has a different meaning for TPM 2.0.

Delegated This setting stores only the TPM administrative delegation blob and the
TPM user delegation blob in the local registry. This setting is appropriate for use
with TPM-based applications that depend on the TPM antihammering logic. This is
the default setting in Windows prior to version 1703.

None This setting provides compatibility with previous operating systems and
applications. You can also use it for scenarios when TPM owner authorization
cannot be stored locally. Using this setting might cause issues with some TPM-
based applications.

7 Note

If the operating system managed TPM authentication setting is changed from Full
to Delegated, the full TPM owner authorization value will be regenerated, and any
copies of the previously set TPM owner authorization value will be invalid.

Registry information

Registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\TPM

DWORD: OSManagedAuthLevel
The following table shows the TPM owner authorization values in the registry.

Value Data Setting

0 None

2 Delegated

4 Full

If you enable this policy setting, the Windows operating system will store the TPM
owner authorization in the registry of the local computer according to the TPM
authentication setting you choose.

On Windows 10 prior to version 1607, if you disable or do not configure this policy
setting, and the Turn on TPM backup to Active Directory Domain Services policy
setting is also disabled or not configured, the default setting is to store the full TPM
authorization value in the local registry. If this policy is disabled or not configured, and
the Turn on TPM backup to Active Directory Domain Services policy setting is enabled,
only the administrative delegation and the user delegation blobs are stored in the local
registry.

Standard User Lockout Duration


This policy setting allows you to manage the duration in minutes for counting standard
user authorization failures for Trusted Platform Module (TPM) commands requiring
authorization. An authorization failure occurs each time a standard user sends a
command to the TPM and receives an error response that indicates an authorization
failure occurred. Authorization failures that are older than the duration you set are
ignored. If the number of TPM commands with an authorization failure within the
lockout duration equals a threshold, a standard user is prevented from sending
commands that require authorization to the TPM.

The TPM is designed to protect itself against password guessing attacks by entering a
hardware lockout mode when it receives too many commands with an incorrect
authorization value. When the TPM enters a lockout mode, it is global for all users
(including administrators) and for Windows features such as BitLocker Drive Encryption.

This setting helps administrators prevent the TPM hardware from entering a lockout
mode by slowing the speed at which standard users can send commands that require
authorization to the TPM.
For each standard user, two thresholds apply. Exceeding either threshold prevents the
user from sending a command that requires authorization to the TPM. Use the following
policy settings to set the lockout duration:

Standard User Individual Lockout Threshold This value is the maximum number of
authorization failures that each standard user can have before the user is not
allowed to send commands that require authorization to the TPM.

Standard User Total Lockout Threshold This value is the maximum total number of
authorization failures that all standard users can have before all standard users are
not allowed to send commands that require authorization to the TPM.

An administrator with the TPM owner password can fully reset the TPM's hardware
lockout logic by using the Windows Defender Security Center. Each time an
administrator resets the TPM's hardware lockout logic, all prior standard user TPM
authorization failures are ignored. This allows standard users to immediately use the
TPM normally.

If you do not configure this policy setting, a default value of 480 minutes (8 hours) is
used.

Standard User Individual Lockout Threshold


This policy setting allows you to manage the maximum number of authorization failures
for each standard user for the Trusted Platform Module (TPM). This value is the
maximum number of authorization failures that each standard user can have before the
user is not allowed to send commands that require authorization to the TPM. If the
number of authorization failures for the user within the duration that is set for the
Standard User Lockout Duration policy setting equals this value, the standard user is
prevented from sending commands that require authorization to the Trusted Platform
Module (TPM).

This setting helps administrators prevent the TPM hardware from entering a lockout
mode by slowing the speed at which standard users can send commands that require
authorization to the TPM.

An authorization failure occurs each time a standard user sends a command to the TPM
and receives an error response indicating an authorization failure occurred.
Authorization failures older than the duration are ignored.

An administrator with the TPM owner password can fully reset the TPM's hardware
lockout logic by using the Windows Defender Security Center. Each time an
administrator resets the TPM's hardware lockout logic, all prior standard user TPM
authorization failures are ignored. This allows standard users to immediately use the
TPM normally.

If you do not configure this policy setting, a default value of 4 is used. A value of zero
means that the operating system will not allow standard users to send commands to the
TPM, which might cause an authorization failure.

Standard User Total Lockout Threshold


This policy setting allows you to manage the maximum number of authorization failures
for all standard users for the Trusted Platform Module (TPM). If the total number of
authorization failures for all standard users within the duration that is set for the
Standard User Lockout Duration policy equals this value, all standard users are
prevented from sending commands that require authorization to the Trusted Platform
Module (TPM).

This setting helps administrators prevent the TPM hardware from entering a lockout
mode because it slows the speed standard users can send commands requiring
authorization to the TPM.

An authorization failure occurs each time a standard user sends a command to the TPM
and receives an error response indicating an authorization failure occurred.
Authorization failures older than the duration are ignored.

An administrator with the TPM owner password can fully reset the TPM's hardware
lockout logic by using the Windows Defender Security Center. Each time an
administrator resets the TPM's hardware lockout logic, all prior standard user TPM
authorization failures are ignored. This allows standard users to immediately use the
TPM normally.

If you do not configure this policy setting, a default value of 9 is used. A value of zero
means that the operating system will not allow standard users to send commands to the
TPM, which might cause an authorization failure.

Configure the system to use legacy Dictionary


Attack Prevention Parameters setting for TPM
2.0
Introduced in Windows 10, version 1703, this policy setting configures the TPM to use
the Dictionary Attack Prevention Parameters (lockout threshold and recovery time) to
the values that were used for Windows 10 Version 1607 and below.
) Important

Setting this policy will take effect only if:

The TPM was originally prepared using a version of Windows after Windows
10 Version 1607
The system has a TPM 2.0.

7 Note

Enabling this policy will only take effect after the TPM maintenance task runs (which
typically happens after a system restart). Once this policy has been enabled on a
system and has taken effect (after a system restart), disabling it will have no impact
and the system's TPM will remain configured using the legacy Dictionary Attack
Prevention parameters, regardless of the value of this group policy. The only ways
for the disabled setting of this policy to take effect on a system where it was once
enabled are to either:

Disable it from group policy


Clear the TPM on the system

TPM Group Policy settings in Windows Security


You can change what users see about TPM in Windows Security. The Group Policy
settings for the TPM area in Windows Security are located at:

Computer Configuration\Administrative Templates\Windows Components\Windows


Security\Device security

Disable the Clear TPM button


If you don't want users to be able to click the Clear TPM button in Windows Security,
you can disable it with this Group Policy setting. Select Enabled to make the Clear TPM
button unavailable for use.

Hide the TPM Firmware Update recommendation


If you don't want users to see the recommendation to update TPM firmware, you can
disable it with this setting. Select Enabled to prevent users from seeing a
recommendation to update their TPM firmware when a vulnerable firmware is detected.

Related topics
Trusted Platform Module
TPM Cmdlets in Windows PowerShell
Prepare your organization for BitLocker: Planning and Policies - TPM configurations
Back up the TPM recovery information
to AD DS
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

In Windows 11, you can back up a device's Trusted Platform Module (TPM) information
to Active Directory Domain Services (AD DS), enabling remote management of the TPM.

For more information, see Back up the TPM Recovery Information to AD DS.
Troubleshoot the TPM
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article provides information how to troubleshoot the Trusted Platform Module
(TPM):

Troubleshoot TPM initialization


Clear all the keys from the TPM

With TPM 1.2 and Windows 11, you can also take the following actions:

Turn on or turn off the TPM

For information about the TPM cmdlets, see TPM Cmdlets in Windows PowerShell.

About TPM initialization and ownership


Windows automatically initializes and takes ownership of the TPM. This is a change from
previous operating systems, where you had to initialize the TPM and create an owner
password.

TPM initialization
If you find that Windows isn't able to initialize the TPM automatically, review the
following information:

You can try clearing the TPM to the factory default values, allowing Windows to
reinitialize it. For important precautions for this process, and instructions for
completing it, see Clear all the keys from the TPM
If the TPM is a TPM 2.0 and isn't detected by Windows, verify that your computer
hardware contains a Unified Extensible Firmware Interface (UEFI) that is Trusted
Computing Group-compliant. Also, ensure that in the UEFI settings, the TPM hasn't
been disabled or hidden from the operating system
If you have TPM 1.2 with Windows 11, the TPM might be turned off, and need to
be turned back on, as described in Turn on the TPM. When it's turned back on,
Windows will reinitialize it
If you're attempting to set up BitLocker with the TPM, check which TPM driver is
installed on the computer. We recommend always using one of the TPM drivers
that is provided by Microsoft and is protected with BitLocker. If a non-Microsoft
TPM driver is installed, it may prevent the default TPM driver from loading and
cause BitLocker to report that a TPM isn't present on the computer. If you have a
non-Microsoft driver installed, remove it, and then allow the operating system to
initialize the TPM

Network connection issues for domain-joined Windows


11 devices
If you have Windows 11, the initialization of the TPM can't complete when your
computer has network connection issues and both of the following conditions exist:

An administrator has configured your computer to require that TPM recovery


information be saved in Active Directory Domain Services (AD DS). This
requirement can be configured through group policy
A domain controller can't be reached. This scenario may occur on a device that is
currently disconnected from the internal network, separated from the domain by a
firewall, or experiencing a network component failure (such as an unplugged cable
or a faulty network adapter)

If these issues occur, an error message appears, and you can't complete the initialization
process. To avoid the issue, allow Windows to initialize the TPM while you're connected
to the corporate network, and you can contact a domain controller.

Systems with multiple TPMs


Some systems may have multiple TPMs and the active TPM may be toggled in UEFI.
Windows doesn't support this configuration. If you switch TPMs, Windows might not
properly detect or interact with the new TPM. If you plan to switch TPMs, you should
toggle to the new TPM, clear it, and reinstall Windows. For more information, see Clear
all the keys from the TPM.

For example, toggling TPMs will cause BitLocker to enter recovery mode. We strongly
recommend that, on systems with two TPMs, one TPM is selected to be used and the
selection isn't changed.

Clear all the keys from the TPM


You can use the Windows Defender Security Center app to clear the TPM as a
troubleshooting step, or as a final preparation before a clean installation of a new
operating system. Preparing for a clean installation in this way helps ensure that the new
operating system can fully deploy any TPM-based functionality that it includes, such as
attestation. However, even if the TPM isn't cleared before a new operating system is
installed, most TPM functionality will probably work correctly.

Clearing the TPM resets it to an unowned state. After you clear the TPM, the Windows
operating system will automatically reinitialize it and take ownership again.

2 Warning

Clearing the TPM can result in data loss. For more information, see the next section,
"Precautions to take before clearing the TPM."

Precautions to take before clearing the TPM


Clearing the TPM can result in data loss. To protect against such loss, review the
following precautions:

Clearing the TPM causes you to lose all created keys associated with the TPM, and
data protected by those keys, such as a virtual smart card or a sign-in PIN. Make
sure that you have a backup and recovery method for any data that is protected or
encrypted by the TPM
Don't clear the TPM on a device you don't own, such as a work or school PC,
without being instructed to do so by your IT administrator
If you want to temporarily suspend TPM operations on Windows 11, you can turn
off the TPM. For more information, see Turn off the TPM
Always use functionality in the operating system (such as TPM.msc) to the clear the
TPM. Don't clear the TPM directly from UEFI
Because your TPM security hardware is a physical part of your computer, before
clearing the TPM, you might want to read the manuals or instructions that came
with your computer, or search the manufacturer's website

Membership in the local Administrators group, or equivalent, is the minimum required


to complete this procedure.

To clear the TPM

1. Open the Windows Defender Security Center app.


2. Select Device security.
3. Select Security processor details.
4. Select Security processor troubleshooting.
5. Select Clear TPM.
You'll be prompted to restart the computer. During the restart, you might be
prompted by the UEFI to press a button to confirm that you wish to clear the
TPM.
After the device restarts, your TPM will be automatically prepared for use by
Windows.

Turn on or turn off the TPM


Normally, the TPM is turned on as part of the TPM initialization process. You don't
normally need to turn the TPM on or off. However, if necessary you can do so by using
the TPM MMC.

Turn on the TPM


If you want to use the TPM after you've turned it off, you can use the following
procedure to turn on the TPM.

1. Open the TPM MMC (tpm.msc).


2. In the Action pane, select Turn TPM On to display the Turn on the TPM Security
Hardware page. Read the instructions on this page.
3. Select Shutdown (or Restart), and then follow the UEFI screen prompts.

After the device restarts, but before you sign in to Windows, you'll be prompted to
accept the reconfiguration of the TPM. The acceptance ensures that the user has
physical access to the computer and that malicious software isn't attempting to make
changes to the TPM.

Turn off the TPM


If you want to stop using the services that are provided by the TPM, you can use the
TPM MMC to turn off the TPM.

1. Open the TPM MMC ( tpm.msc ).


2. In the Action pane, select Turn TPM Off to display the Turn off the TPM security
hardware page.
3. In the Turn off the TPM security hardware dialog box, select a method to enter
your owner password and turning off the TPM:

If you saved your TPM owner password on a removable storage device, insert
it, and then select I have the owner password file. In the Select backup file
with the TPM owner password dialog box, select Browse to locate the .tpm
file that is saved on your removable storage device, select Open, and then
select Turn TPM Off.
If you don't have the removable storage device with your saved TPM owner
password, select I want to enter the password. In the Type your TPM owner
password dialog box, type your password (including hyphens), and then
select Turn TPM Off.
If you didn't save your TPM owner password or no longer know it, select I do
not have the TPM owner password, and follow the instructions that are
provided in the dialog box and subsequent UEFI screens to turn off the TPM
without entering the password.

Use the TPM cmdlets


You can manage the TPM using Windows PowerShell. For details, see TPM Cmdlets in
Windows PowerShell.
PCR banks on TPM 2.0 devices
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

For steps on how to switch PCR banks on TPM 2.0 devices on your PC, you should
contact your OEM or UEFI vendor. This article provides background about what happens
when you switch PCR banks on TPM 2.0 devices.

A Platform Configuration Register (PCR) is a memory location in the TPM that has some
unique properties. The size of the value that can be stored in a PCR is determined by the
size of a digest generated by an associated hashing algorithm. A SHA-1 PCR can store
20 bytes - the size of a SHA-1 digest. Multiple PCRs associated with the same hashing
algorithm are referred to as a PCR bank.

To store a new value in a PCR, the existing value is extended with a new value as follows:
PCR[N] = HASHalg( PCR[N] || ArgumentOfExtend)

The existing value is concatenated with the argument of the TPM Extend operation. The
resulting concatenation is then used as input to the associated hashing algorithm, which
computes a digest of the input. The computed digest becomes the new value of the
PCR.

The TCG PC Client Platform TPM Profile Specification defines the inclusion of at least
one PCR bank with 24 registers. The only way to reset the first 16 PCRs is to reset the
TPM itself. This restriction helps to ensure that the value of those PCRs can only be
modified via the TPM Extend operation.

Some TPM PCRs are used as checksums of log events. The log events are extended in
the TPM as the events occur. Later, an auditor can validate the logs by computing the
expected PCR values from the log and comparing them to the PCR values of the TPM.
Since the first 16 TPM PCRs can't be modified arbitrarily, a match between an expected
PCR value in that range and the actual TPM PCR value provides assurance of an
unmodified log.

How does Windows use PCRs?


To bind the use of a TPM based key to a certain state of the device, the key can be
sealed to an expected set of PCR values.
For instance, PCRs 0 through 7 have a well-defined value after the boot process, when
the OS is loaded. When the hardware, firmware, or boot loader of the machine changes,
the change can be detected in the PCR values. Windows uses this capability to make
certain cryptographic keys only available at certain times during the boot process. For
instance, the BitLocker key can be used at a certain point in the boot, but not before or
after.

It's important to note that this binding to PCR values also includes the hashing
algorithm used for the PCR. For instance, a key can be bound to a specific value of the
SHA-1 PCR[12] , if using the SHA-256 PCR bank, even with the same system

configuration. Otherwise, the PCR values won't match.

What happens when PCR banks are switched?


When the PCR banks are switched, the algorithm used to compute the hashed values
stored in the PCRs during extend operations is changed. Each hash algorithm will return
a different cryptographic signature for the same inputs.

As a result, if the currently used PCR bank is switched all keys that have been bound to
the previous PCR values will no longer work. For example, if you had a key bound to the
SHA-1 value of PCR[12] and subsequently changed the PCR bank to SHA-256, the banks
wouldn't match, and you would be unable to use that key. The BitLocker key is secured
using the PCR banks and Windows won't be able to unseal it if the PCR banks are
switched while BitLocker is enabled.

What can I do to switch PCRs when BitLocker is


already active?
Before switching PCR banks, you should suspend or disable BitLocker or have the
recovery key ready. For steps on how to switch PCR banks on your PC, contact your
OEM or UEFI vendor.

How can I identify which PCR bank is being


used?
You can configure a TPM to have multiple PCR banks active. When BIOS performs
measurements, it does so into all active PCR banks, depending on its capability to make
these measurements. BIOS may choose to deactivate PCR banks that it doesn't support
or cap PCR banks that it doesn't support by extending a separator. The following
registry value identifies which PCR banks are active:
Registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IntegrityServices

DWORD: TPMActivePCRBanks
Defines which PCR banks are currently active. (This value should be interpreted as
a bitmap for which the bits are defined in the TCG Algorithm Registry Table 21 of
Revision 1.27.)

Windows checks which PCR banks are active and supported by the BIOS. Windows also
checks if the measured boot log supports measurements for all active PCR banks.
Windows will prefer the use of the SHA-256 bank for measurements and will fall back to
SHA1 PCR bank if one of the pre-conditions isn't met.

You can identify which PCR bank is currently used by Windows by looking at the
registry:

Registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IntegrityServices

DWORD: TPMDigestAlgID
Algorithm ID of the PCR bank that Windows is currently using. (This value
represents an algorithm identifier as defined in the TCG Algorithm Registry Table
3 of Revision 1.27.)

Windows only uses one PCR bank to continue boot measurements. All other active PCR
banks will be extended with a separator to indicate that they aren't used by Windows
and measurements that appear to be from Windows shouldn't be trusted.
TPM recommendations
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic provides recommendations for Trusted Platform Module (TPM) technology for
Windows.

For a basic feature description of TPM, see the Trusted Platform Module Technology
Overview.

TPM design and implementation


Traditionally, TPMs are discrete chips soldered to a computer's motherboard. Such
implementations allow the computer's original equipment manufacturer (OEM) to
evaluate and certify the TPM separate from the rest of the system. Discrete TPM
implementations are common. However, they can be problematic for integrated devices
that are small or have low power consumption. Some newer TPM implementations
integrate TPM functionality into the same chipset as other platform components while
still providing logical separation similar to discrete TPM chips.

TPMs are passive: they receive commands and return responses. To realize the full
benefit of a TPM, the OEM must carefully integrate system hardware and firmware with
the TPM to send it commands and react to its responses. TPMs were originally designed
to provide security and privacy benefits to a platform's owner and users, but newer
versions can provide security and privacy benefits to the system hardware itself. Before it
can be used for advanced scenarios, however, a TPM must be provisioned. Windows
automatically provisions a TPM, but if the user is planning to reinstall the operating
system, he or she may need to clear the TPM before reinstalling so that Windows can
take full advantage of the TPM.

The Trusted Computing Group (TCG) is the nonprofit organization that publishes and
maintains the TPM specification. The TCG exists to develop, define, and promote
vendor-neutral, global industry standards. These standards support a hardware-based
root of trust for interoperable trusted computing platforms. The TCG also publishes the
TPM specification as the international standard ISO/IEC 11889, using the Publicly
Available Specification Submission Process that the Joint Technical Committee 1 defines
between the International Organization for Standardization (ISO) and the International
Electrotechnical Commission (IEC).
OEMs implement the TPM as a component in a trusted computing platform, such as a
PC, tablet, or phone. Trusted computing platforms use the TPM to support privacy and
security scenarios that software alone cannot achieve. For example, software alone
cannot reliably report whether malware is present during the system startup process.
The close integration between TPM and platform increases the transparency of the
startup process and supports evaluating device health by enabling reliable measuring
and reporting of the software that starts the device. Implementation of a TPM as part of
a trusted computing platform provides a hardware root of trust-that is, it behaves in a
trusted way. For example, if a key stored in a TPM has properties that disallow exporting
the key, that key truly cannot leave the TPM.

The TCG designed the TPM as a low-cost, mass-market security solution that addresses
the requirements of different customer segments. There are variations in the security
properties of different TPM implementations just as there are variations in customer and
regulatory requirements for different sectors. In public-sector procurement, for example,
some governments have clearly defined security requirements for TPMs whereas others
do not.

TPM 1.2 vs. 2.0 comparison


From an industry standard, Microsoft has been an industry leader in moving and
standardizing on TPM 2.0, which has many key realized benefits across algorithms,
crypto, hierarchy, root keys, authorization and NV RAM.

Why TPM 2.0?


TPM 2.0 products and systems have important security advantages over TPM 1.2,
including:

The TPM 1.2 spec only allows for the use of RSA and the SHA-1 hashing algorithm.

For security reasons, some entities are moving away from SHA-1. Notably, NIST
has required many federal agencies to move to SHA-256 as of 2014, and
technology leaders, including Microsoft and Google have announced they will
remove support for SHA-1 based signing or certificates in 2017.

TPM 2.0 enables greater crypto agility by being more flexible with respect to
cryptographic algorithms.

TPM 2.0 supports newer algorithms, which can improve drive signing and key
generation performance. For the full list of supported algorithms, see the TCG
Algorithm Registry . Some TPMs don't support all algorithms.
For the list of algorithms that Windows supports in the platform cryptographic
storage provider, see CNG Cryptographic Algorithm Providers.

TPM 2.0 achieved ISO standardization (ISO/IEC 11889:2015 ).

Use of TPM 2.0 may help eliminate the need for OEMs to make exception to
standard configurations for certain countries and regions.

TPM 2.0 offers a more consistent experience across different implementations.

TPM 1.2 implementations vary in policy settings. This may result in support
issues as lockout policies vary.

TPM 2.0 lockout policy is configured by Windows, ensuring a consistent


dictionary attack protection guarantee.

While TPM 1.2 parts are discrete silicon components, which are typically soldered
on the motherboard, TPM 2.0 is available as a discrete (dTPM) silicon component
in a single semiconductor package, an integrated component incorporated in one
or more semiconductor packages - alongside other logic units in the same
package(s), and as a firmware (fTPM) based component running in a trusted
execution environment (TEE) on a general purpose SoC.

7 Note

TPM 2.0 is not supported in Legacy and CSM Modes of the BIOS. Devices with TPM
2.0 must have their BIOS mode configured as Native UEFI only. The Legacy and
Compatibility Support Module (CSM) options must be disabled. For added security
Enable the Secure Boot feature.

Installed Operating System on hardware in legacy mode will stop the OS from
booting when the BIOS mode is changed to UEFI. Use the tool MBR2GPT before
changing the BIOS mode which will prepare the OS and the disk to support UEFI.

Discrete, Integrated, or Firmware TPM?


There are three implementation options for TPMs:

Discrete TPM chip as a separate component in its own semiconductor package

Integrated TPM solution, using dedicated hardware integrated into one or more
semiconductor packages alongside, but logically separate from, other components
Firmware TPM solution, running the TPM in firmware in a Trusted Execution mode
of a general purpose computation unit

Windows uses any compatible TPM in the same way. Microsoft does not take a position
on which way a TPM should be implemented and there is a wide ecosystem of available
TPM solutions, which should suit all needs.

Is there any importance for TPM for


consumers?
For end consumers, TPM is behind the scenes but is still relevant. TPM is used for
Windows Hello, Windows Hello for Business and in the future, will be a component of
many other key security features in Windows. TPM secures the PIN, helps encrypt
passwords, and builds on our overall Windows experience story for security as a critical
pillar. Using Windows on a system with a TPM enables a deeper and broader level of
security coverage.

TPM 2.0 Compliance for Windows

Windows for desktop editions (Home, Pro, Enterprise,


and Education)
Since July 28, 2016, all new device models, lines, or series (or if you're updating the
hardware configuration of an existing model, line, or series with a major update,
such as CPU, graphic cards) must implement and enable by default TPM 2.0
(details in section 3.7 of the Minimum hardware requirements page). The
requirement to enable TPM 2.0 only applies to the manufacturing of new devices.
For TPM recommendations for specific Windows features, see TPM and Windows
Features.

IoT Core
TPM is optional on IoT Core.

Windows Server 2016


TPM is optional for Windows Server SKUs unless the SKU meets the other
qualification (AQ) criteria for the Host Guardian Services scenario in which case
TPM 2.0 is required.
TPM and Windows Features
The following table defines which Windows features require TPM support.

Windows TPM Supports Supports Details


Features Required TPM 1.2 TPM 2.0

Measured Boot Yes Yes Yes Measured Boot requires TPM 1.2 or 2.0
and UEFI Secure Boot. TPM 2.0 is
recommended since it supports newer
cryptographic algorithms. TPM 1.2 only
supports the SHA-1 algorithm which is
being deprecated.

BitLocker No Yes Yes TPM 1.2 or 2.0 are supported but TPM
2.0 is recommended. Automatic Device
Encryption requires Modern Standby
including TPM 2.0 support

Device Yes N/A Yes Device Encryption requires Modern


Encryption Standby/Connected Standby
certification, which requires TPM 2.0.

Windows No Yes Yes


Defender
Application
Control (Device
Guard)

Windows Yes No Yes TPM 2.0 and UEFI firmware is required.


Defender System
Guard (DRTM)

Credential Guard No Yes Yes Windows 10, version 1507 (End of Life
as of May 2017) only supported TPM
2.0 for Credential Guard. Beginning with
Windows 10, version 1511, TPM 1.2 and
2.0 are supported. Paired with Windows
Defender System Guard, TPM 2.0
provides enhanced security for
Credential Guard. Windows 11 requires
TPM 2.0 by default to facilitate easier
enablement of this enhanced security
for customers.

Device Health Yes Yes Yes TPM 2.0 is recommended since it


Attestation supports newer cryptographic
algorithms. TPM 1.2 only supports the
Windows TPM Supports Supports Details
Features Required TPM 1.2 TPM 2.0

SHA-1 algorithm which is being


deprecated.

Windows No Yes Yes Azure AD join supports both versions of


Hello/Windows TPM, but requires TPM with keyed-hash
Hello for message authentication code (HMAC)
Business and Endorsement Key (EK) certificate
for key attestation support. TPM 2.0 is
recommended over TPM 1.2 for better
performance and security. Windows
Hello as a FIDO platform authenticator
will take advantage of TPM 2.0 for key
storage.

UEFI Secure Boot No Yes Yes

TPM Platform Yes Yes Yes


Crypto Provider
Key Storage
Provider

Virtual Smart Yes Yes Yes


Card

Certificate No Yes Yes TPM is only required when the


storage certificate is stored in the TPM.

Autopilot No N/A Yes If you intend to deploy a scenario which


requires TPM (such as white glove and
self-deploying mode), then TPM 2.0
and UEFI firmware are required.

SecureBIO Yes No Yes TPM 2.0 and UEFI firmware is required.

OEM Status on TPM 2.0 system availability and


certified parts
Government customers and enterprise customers in regulated industries may have
acquisition standards that require use of common certified TPM parts. As a result, OEMs,
who provide the devices, may be required to use only certified TPM components on
their commercial class systems. For more information, contact your OEM or hardware
vendor.
Related topics
Trusted Platform Module (list of topics)
Microsoft Pluton security processor
Article • 07/31/2023 • Applies to: ✅ Windows 11

Microsoft Pluton security processor is a chip-to-cloud security technology built with


Zero Trust principles at the core. Microsoft Pluton provides hardware-based root of
trust, secure identity, secure attestation, and cryptographic services. Pluton technology
is a combination of a secure subsystem which is part of the System on Chip (SoC) and
Microsoft authored software that runs on this integrated secure subsystem.

Microsoft Pluton is currently available on devices with Ryzen 6000 and Qualcomm
Snapdragon® 8cx Gen 3 series processors. Microsoft Pluton can be enabled on devices
with Pluton capable processors running Windows 11, version 22H2.

What is Microsoft Pluton?


Designed by Microsoft and built by silicon partners, Microsoft Pluton is a secure crypto-
processor built into the CPU for security at the core to ensure code integrity and the
latest protection with updates delivered by Microsoft through Windows Update. Pluton
protects credentials, identities, personal data and encryption keys. Information is
significantly harder to be removed even if an attacker has installed malware or has
complete physical possession of the PC.

Microsoft Pluton is designed to provide the functionality of the Trusted Platform Module
as well as deliver other security functionality beyond what is possible with the TPM 2.0
specification, and allows for additional Pluton firmware and OS features to be delivered
over time via Windows Update. For more information, see Microsoft Pluton as TPM.

Pluton is built on proven technology used in Xbox and Azure Sphere, and provides
hardened integrated security capabilities to Windows 11 devices in collaboration with
leading silicon partners. For more information, see Meet the Microsoft Pluton processor
– The security chip designed for the future of Windows PCs .

Microsoft Pluton security architecture overview


Pluton Security subsystem consists of the following layers:

Description

Hardware Pluton Security Processor is a secure element tightly integrated into the SoC
subsystem. It provides a trusted execution environment while delivering
cryptographic services required for protecting sensitive resources and critical items
like keys, data, etc.

Firmware Microsoft authorized firmware provides required secure features and functionality,
and exposes interfaces that operating system software and applications can use to
interact with Pluton. The firmware is stored in the flash storage available on the
motherboard. When the system boots, the firmware is loaded as a part of Pluton
Hardware initialization. During Windows startup, a copy of this firmware (or the latest
firmware obtained from Windows Update, if available) is loaded in the operating
system. For additional information, see Firmware load flow

Software Operating system drivers and applications available to an end user to allow seamless
usage of the hardware capabilities provided by the Pluton security subsystem.

Firmware load flow


When the system boots, Pluton hardware initialization is performed by loading the
Pluton firmware from the Serial Peripheral Interface (SPI) flash storage available on the
motherboard. During Windows startup however, the latest version of the Pluton
firmware is used by the operating system. If newer firmware is not available, Windows
uses the firmware that was loaded during the hardware initialization. The diagram below
illustrates this process:
Windows edition and licensing requirements
The following table lists the Windows editions that support Microsoft Pluton:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Microsoft Pluton license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Related topics
Microsoft Pluton as TPM
Microsoft Pluton as Trusted Platform
Module
Article • 07/31/2023 • Applies to: ✅ Windows 11

Microsoft Pluton is designed to provide the functionality of the Trusted Platform Module
(TPM) thereby establishing the silicon root of trust. Microsoft Pluton supports the TPM
2.0 industry standard allowing customers to immediately benefit from the enhanced
security in Windows features that rely on TPM including BitLocker, Windows Hello, and
Windows Defender System Guard.

As with other TPMs, credentials, encryption keys, and other sensitive information cannot
be easily extracted from Pluton even if an attacker has installed malware or has
complete physical possession of the device. Storing sensitive data like encryption keys
securely within the Pluton processor, which is isolated from the rest of the system, helps
ensure that emerging attack techniques such as speculative execution cannot access key
material.

Pluton also solves the major security challenge of keeping its own root-of-trust firmware
up to date across the entire PC ecosystem, by delivering firmware updates from
Windows Update. Today customers receive updates to their security firmware from a
variety of different sources, which may make it difficult for them to apply these updates.

To learn more about the TPM related scenarios that benefit from Pluton, see TPM and
Windows Features.

Microsoft Pluton as a security processor


alongside discrete TPM
Microsoft Pluton can be used as a TPM, or in conjunction with a TPM. Although Pluton
builds security directly into the CPU, device manufacturers may choose to use discrete
TPM as the default TPM, while having Pluton available to the system as a security
processor for use cases beyond the TPM.

Pluton is integrated within the SoC subsystem, and provides a flexible, updatable
platform for running firmware that implements end-to-end security functionality
authored, maintained, and updated by Microsoft. We encourage users owning devices
that are Pluton capable, to enable Microsoft Pluton as the default TPM.

Enable Microsoft Pluton as TPM


Devices with Ryzen 6000 and Qualcomm Snapdragon® 8cx Gen 3 series processors are
Pluton Capable, however enabling and providing an option to enable Pluton is at the
discretion of the device manufacturer. Pluton is supported on these devices and can be
enabled from the Unified Extensible Firmware Interface (UEFI) setup options for the
device.

UEFI setup options differ from product to product, visit the product website and check
for guidance to enable Pluton as TPM.

2 Warning

If BitLocker is enabled, We recommend disabling BitLocker before changing the


TPM configuration to prevent lockouts. After changing TPM configuration, re-
enable BitLocker which will then bind the BitLocker keys with the Pluton TPM.
Alternatively, save the BitLocker recovery key onto a USB drive.

Windows Hello must be re-configured after switching the TPM. Setup alternate
login methods before changing the TPM configuration to prevent any login issues.

 Tip

On most Lenovo devices, entering the UEFI options requires pressing Enter key at
startup followed by pressing F1. In the UEFI Setup menu, select Security option,
then on the Security page, select Security Chip option, to see the TPM
configuration options. Under the drop-down list for Security Chip selection, select
MSFT Pluton and click F10 to Save and Exit.

Related topics
Microsoft Pluton security processor
Virtualization-based Security (VBS)
Article • 03/20/2023

Virtualization-based security, or VBS, uses hardware virtualization and the Windows


hypervisor to create an isolated virtual environment that becomes the root of trust of
the OS that assumes the kernel can be compromised. Windows uses this isolated
environment to host a number of security solutions, providing them with greatly
increased protection from vulnerabilities in the operating system, and preventing the
use of malicious exploits which attempt to defeat protections. VBS enforces restrictions
to protect vital system and operating system resources, or to protect security assets
such as authenticated user credentials.

One such example security solution is memory integrity, which protects and hardens
Windows by running kernel mode code integrity within the isolated virtual environment
of VBS. Kernel mode code integrity is the Windows process that checks all kernel mode
drivers and binaries before they're started, and prevents unsigned or untrusted drivers
or system files from being loaded into system memory. Memory integrity also restricts
kernel memory allocations that could be used to compromise the system, ensuring that
kernel memory pages are only made executable after passing code integrity checks
inside the secure runtime environment, and executable pages themselves are never
writable. That way, even if there are vulnerabilities like a buffer overflow that allow
malware to attempt to modify memory, executable code pages cannot be modified, and
modified memory cannot be made executable.

7 Note

Memory integrity is sometimes referred to as hypervisor-protected code integrity


(HVCI) or hypervisor enforced code integrity, and was originally released as part of
Device Guard. Device Guard is no longer used except to locate memory integrity
and VBS settings in Group Policy or the Windows registry.

VBS requires the following components be present and properly configured.

Please notice that TPM is not a must requirement, but we highly recommend to
implement TPM.

Hardware Details
requirement
Hardware Details
requirement

64-bit CPU Virtualization-based security (VBS) requires the Windows hypervisor, which is only
supported on 64-bit IA processors with virtualization extensions, including Intel
VT-X and AMD-v.

Second Level VBS also requires that the processor’s virtualization support includes Second Level
Address Address Translation (SLAT), either Intel VT-X2 with Extended Page Tables (EPT), or
Translation AMD-v with Rapid Virtualization Indexing (RVI).
(SLAT)

IOMMUs or All I/O devices capable of DMA must be behind an IOMMU or SMMU. An IOMMU
SMMUs can be used to enhance system resiliency against memory attacks.
(Intel VT-D,
AMD-Vi,
Arm64
SMMUs)

Trusted TPMs, either discrete or firmware, will suffice. For more information, see Trusted
Platform Platform Module (TPM) 2.0.
Module
(TPM) 2.0

Firmware System firmware must adhere to the recommendations for hardening SMM code
support for described in the Windows SMM Security Mitigations Table (WMST) specification.
SMM The WSMT specification contains details of an ACPI table that was created for use
protection with Windows operating systems that support VBS features. Firmware must
implement the protections described in the WSMT specification, and set the
corresponding protection flags as described in the specification to report
compliance with these requirements to the operating system.
Hardware Details
requirement

Unified UEFI firmware must adhere to the following memory map reporting format and
Extensible memory allocation guidelines in order for firmware to ensure compatibility with
Firmware VBS.
Interface
(UEFI) UEFI v2.6 Memory Attributes Table (MAT) - To ensure compatibility with VBS,
Memory firmware must cleanly separate EFI runtime memory ranges for code and data,
Reporting and report this to the operating system. Proper segregation and reporting of EFI
runtime memory ranges allows VBS to apply the necessary page protections to EFI
runtime services code pages within the VBS secure region. Conveying this
information to the OS is accomplished using the
EFI_MEMORY_ATTRIBUTES_TABLE. To implement the UEFI MAT, follow these
guidelines:

1. The entire EFI runtime must be described by this table.


2. All appropriate attributes for EfiRuntimeServicesData and
EfiRuntimeServicesCode pages must be marked.
3. These ranges must be aligned on page boundaries (4KB), and can not
overlap.

EFI Page Protections -All entries must include attributes EFI_MEMORY_RO,


EFI_MEMORY_XP, or both. All UEFI memory that is marked executable must be
read only. Memory marked writable must not be executable. Entries may not be
left with neither of the attributes set, indicating memory that is both executable
and writable.

Secure Secure MOR v2 is enhanced to protect the MOR lock setting using a UEFI secure
Memory variable. This helps guard against advanced memory attacks. For details, see
Overwrite Secure MOR implementation.
Request
(MOR)
revision 2

Memory Ensure all system drivers have been tested and verified to be compatible with
integrity- memory integrity. The Windows Driver Kit and Driver Verifier contain tests for
compatible driver compatibility with memory integrity. There are three steps to verify driver
drivers compatibility:

1. Use Driver Verifier with the Code Integrity compatibility checks enabled.
2. Run the Hypervisor Code Integrity Readiness Test in the Windows HLK.
3. Test the driver on a system with VBS and memory integrity enabled. This
step is imperative to validate the driver's behavior with memory integrity, as
static code analysis tools simply aren't capable of detecting all memory
integrity violations possible at runtime.

VBS works on VMs that have nested virtualization support. This includes all Gen2 VMs,
and Gen1 VMs that support nested virtualization. A list of supported VM series is
detailed in the table below.

VM Series Name Nested Virtualization VM Gen

Av2 Yes 1 (certain internal sizes support gen 2)

B No 1 and 2

Dsv2/Dv2/Dv3/Ev3 Yes 1

Dsv3/Ddsv3 Yes 1 and 2

Dsv4/Ddsv4 Yes 1 and 2

Esv3/Edsv3 Yes 1 and 2

Esv4/Edsv4 Yes 1 and 2

Ev4/Edv4 Yes Ev4 - 1 only


Edv4 -1&2

Dv4/Ddv4 Yes 1 and 2

Dv5/Ddv5/Dsv5/Ddsv5 Yes 1 and 2

Ev5/Edv5/Esv5/Edsv5 Yes 1 and 2

Dasv5/Dadsv5/Easv5/ Eadsv5 Yes 1 and 2

Ebsv5/Edbsv5 Yes 1 and 2

Fsv2 Yes 1 and 2

Fx Yes 2

Lsv2 Yes 1 and 2

Related topics
For more info about Hyper-V, see Hyper-V on Windows Server 2016 or Introduction to
Hyper-V on Windows 10. For more info about hypervisor, see Hypervisor Specifications.
Enable virtualization-based protection
of code integrity
Article • 07/11/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Memory integrity is a virtualization-based security (VBS) feature available in Windows.


Memory integrity and VBS improve the threat model of Windows and provide stronger
protections against malware trying to exploit the Windows kernel. VBS uses the
Windows hypervisor to create an isolated virtual environment that becomes the root of
trust of the OS that assumes the kernel can be compromised. Memory integrity is a
critical component that protects and hardens Windows by running kernel mode code
integrity within the isolated virtual environment of VBS. Memory integrity also restricts
kernel memory allocations that could be used to compromise the system.

7 Note

Memory integrity works better with Intel Kabylake and higher processors with
Mode-Based Execution Control, and AMD Zen 2 and higher processors with Guest
Mode Execute Trap capabilities. Older processors rely on an emulation of these
features, called Restricted User Mode, and will have a bigger impact on performance.

2 Warning

Some applications and hardware device drivers may be incompatible with memory
integrity. This incompatibility can cause devices or software to malfunction and in
rare cases may result in a boot failure (blue screen). Such issues may occur after
memory integrity has been turned on or during the enablement process itself. If
compatibility issues occur, see Troubleshooting for remediation steps.

7 Note

Memory integrity is sometimes referred to as hypervisor-protected code integrity


(HVCI) or hypervisor enforced code integrity, and was originally released as part of
Device Guard. Device Guard is no longer used except to locate memory integrity
and VBS settings in Group Policy or the Windows registry.
Memory integrity features
Protects modification of the Control Flow Guard (CFG) bitmap for kernel mode
drivers.
Protects the kernel mode code integrity process that ensures that other trusted
kernel processes have a valid certificate.

How to turn on memory integrity


To enable memory integrity on Windows devices with supporting hardware throughout
an enterprise, use any of these options:

Windows Security settings


Microsoft Intune (or another MDM provider)
Group Policy
Microsoft Configuration Manager
Registry

Windows Security
Memory integrity can be turned on in Windows Security settings and found at
Windows Security > Device security > Core isolation details > Memory integrity. For
more information, see Device protection in Windows Security .

Beginning with Windows 11 22H2, Windows Security shows a warning if memory


integrity is turned off. The warning indicator also appears on the Windows Security icon
in the Windows Taskbar and in the Windows Notification Center. The user can dismiss
the warning from within Windows Security.

To proactively dismiss the memory integrity warning, you can set the
Hardware_HVCI_Off (DWORD) registry value under HKLM\SOFTWARE\Microsoft\Windows
Security Health\State to 0. After you change the registry value, you must restart the

device for the change to take effect.

Enable memory integrity using Intune


Enabling in Intune requires using the Code Integrity node in the
VirtualizationBasedTechnology CSP. You can configure these settings by using the
settings catalog.
Enable memory integrity using Group Policy
1. Use Group Policy Editor (gpedit.msc) to either edit an existing GPO or create a new
one.

2. Navigate to Computer Configuration > Administrative Templates > System >


Device Guard.

3. Double-click Turn on Virtualization Based Security.

4. Select Enabled and under Virtualization Based Protection of Code Integrity, select
Enabled without UEFI lock. Only select Enabled with UEFI lock if you want to
prevent memory integrity from being disabled remotely or by policy update. Once
enabled with UEFI lock, you must have access to the UEFI BIOS menu to turn off
Secure Boot if you want to turn off memory integrity.

5. Select Ok to close the editor.

To apply the new policy on a domain-joined computer, either restart or run gpupdate
/force in an elevated command prompt.
Use registry keys to enable memory integrity
Set the following registry keys to enable memory integrity. These keys provide exactly
the same set of configuration options provided by Group Policy.

) Important

Among the commands that follow, you can choose settings for Secure Boot
and Secure Boot with DMA. In most situations, we recommend that you
choose Secure Boot. This option provides Secure Boot with as much
protection as is supported by a given computer's hardware. A computer with
input/output memory management units (IOMMUs) will have Secure Boot
with DMA protection. A computer without IOMMUs will simply have Secure
Boot enabled.

If you select Secure Boot with DMA, memory integrity and the other VBS
features will only be turned on for computers that support DMA. That is, for
computers with IOMMUs only. Any computer without IOMMUs will not have
VBS or memory integrity protection.

All drivers on the system must be compatible with virtualization-based


protection of code integrity; otherwise, your system may fail. We recommend
that you enable these features on a group of test computers before you
enable them on users' computers.

For Windows 10 version 1607 and later and for Windows 11 version
21H2

Recommended settings (to enable memory integrity without UEFI Lock):

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t


REG_DWORD /d 0 /f

reg add
"HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnfor
cedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 1 /f

reg add
"HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnfor
cedCodeIntegrity" /v "Locked" /t REG_DWORD /d 0 /f

If you want to customize the preceding recommended settings, use the following
registry keys.

To enable VBS only (no memory integrity)

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

To enable VBS and require Secure boot only (value 1)

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

To enable VBS with Secure Boot and DMA (value 3)

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"RequirePlatformSecurityFeatures" /t REG_DWORD /d 3 /f

To enable VBS without UEFI lock (value 0)

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t


REG_DWORD /d 0 /f

To enable VBS with UEFI lock (value 1)

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t


REG_DWORD /d 1 /f
To enable memory integrity

Console

reg add
"HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnfor
cedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 1 /f

To enable memory integrity without UEFI lock (value 0)

Console

reg add
"HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnfor
cedCodeIntegrity" /v "Locked" /t REG_DWORD /d 0 /f

To enable memory integrity with UEFI lock (value 1)

Console

reg add
"HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnfor
cedCodeIntegrity" /v "Locked" /t REG_DWORD /d 1 /f

To gray out the memory integrity UI and display the message "This setting is
managed by your administrator"

Console

reg delete
HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforc
edCodeIntegrity /v "WasEnabledBy" /f

To let memory integrity UI behave normally (Not grayed out)

Console

reg add
HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforc
edCodeIntegrity /v "WasEnabledBy" /t REG_DWORD /d 2 /f

For Windows 10 version 1511 and earlier

Recommended settings (to enable memory integrity, without UEFI Lock):


Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"HypervisorEnforcedCodeIntegrity" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Unlocked" /t


REG_DWORD /d 1 /f

If you want to customize the preceding recommended settings, use the following
settings.

To enable VBS (it is always locked to UEFI)

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

To enable VBS and require Secure boot only (value 1)

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

To enable VBS with Secure Boot and DMA (value 3)

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"RequirePlatformSecurityFeatures" /t REG_DWORD /d 3 /f

To enable memory integrity (with the default, UEFI lock)

Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v


"HypervisorEnforcedCodeIntegrity" /t REG_DWORD /d 1 /f

To enable memory integrity without UEFI lock


Console

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Unlocked" /t


REG_DWORD /d 1 /f

Enable memory integrity using Windows Defender


Application Control (WDAC)
You can use WDAC policy to turn on memory integrity using any of the following
techniques:

1. Use the WDAC Wizard to create or edit your WDAC policy and select the option
Hypervisor-protected Code Integrity on the Policy Rules page of the Wizard.
2. Use the Set-HVCIOptions PowerShell cmdlet.
3. Edit your WDAC policy XML and modify the value set for the <HVCIOptions>
element.

7 Note

If your WDAC policy is set to turn memory integrity on, it will be turned on even if
the policy is in audit mode.

Validate enabled VBS and memory integrity features


Windows 10, Windows 11, and Windows Server 2016 and higher have a WMI class for
VBS-related properties and features: Win32_DeviceGuard. This class can be queried from
an elevated Windows PowerShell session by using the following command:

PowerShell

Get-CimInstance –ClassName Win32_DeviceGuard –Namespace


root\Microsoft\Windows\DeviceGuard

7 Note

Mode Based Execution Control property will only be listed as available starting with
Windows 10 version 1803 and Windows 11 version 21H2. This value is reported for
both Intel's Mode-Based Execution Control and AMD's Guest Mode Execute Trap
capabilities.
The output of this command provides details of the available hardware-based security
features and those features that are currently enabled.

AvailableSecurityProperties

This field helps to enumerate and report state on the relevant security properties for
VBS and memory integrity.

Value Description

0. If present, no relevant properties exist on the device.

1. If present, hypervisor support is available.

2. If present, Secure Boot is available.

3. If present, DMA protection is available.

4. If present, Secure Memory Overwrite is available.

5. If present, NX protections are available.

6. If present, SMM mitigations are available.

7. If present, MBEC/GMET is available.

8. If present, APIC virtualization is available.

InstanceIdentifier
A string that is unique to a particular device and set by WMI.

RequiredSecurityProperties
This field describes the required security properties to enable VBS.

Value Description

0. Nothing is required.

1. If present, hypervisor support is needed.

2. If present, Secure Boot is needed.

3. If present, DMA protection is needed.

4. If present, Secure Memory Overwrite is needed.


Value Description

5. If present, NX protections are needed.

6. If present, SMM mitigations are needed.

7. If present, MBEC/GMET is needed.

SecurityServicesConfigured
This field indicates whether Credential Guard or memory integrity has been configured.

Value Description

0. No services are configured.

1. If present, Credential Guard is configured.

2. If present, memory integrity is configured.

3. If present, System Guard Secure Launch is configured.

4. If present, SMM Firmware Measurement is configured.

SecurityServicesRunning

This field indicates whether Credential Guard or memory integrity is running.

Value Description

0. No services running.

1. If present, Credential Guard is running.

2. If present, memory integrity is running.

3. If present, System Guard Secure Launch is running.

4. If present, SMM Firmware Measurement is running.

Version

This field lists the version of this WMI class. The only valid value now is 1.0.

VirtualizationBasedSecurityStatus
This field indicates whether VBS is enabled and running.

Value Description

0. VBS isn't enabled.

1. VBS is enabled but not running.

2. VBS is enabled and running.

PSComputerName
This field lists the computer name. All valid values for computer name.

Another method to determine the available and enabled VBS features is to run
msinfo32.exe from an elevated PowerShell session. When you run this program, the VBS
features are displayed at the bottom of the System Summary section.

Troubleshooting
If a device driver fails to load or crashes at runtime, you may be able to update the
driver using Device Manager.
If you experience a critical error during boot or your system is unstable after
turning on memory integrity, you can recover using the Windows Recovery
Environment (Windows RE).

1. First, disable any policies that are used to enable VBS and memory integrity,
for example Group Policy.

2. Then, boot to Windows RE on the affected computer, see Windows RE


Technical Reference.

3. After logging in to Windows RE, set the memory integrity registry key to off:

Console

reg add
"HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\Hyper
visorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f

4. Finally, restart your device.

7 Note

If you turned on memory integrity with UEFI lock, you will need to disable Secure
Boot to complete the Windows RE recovery steps.

Memory integrity deployment in virtual


machines
Memory integrity can protect a Hyper-V virtual machine, just as it would a physical
machine. The steps to enable memory integrity are the same from within the virtual
machine.

Memory integrity protects against malware running in the guest virtual machine. It
doesn't provide extra protection from the host administrator. From the host, you can
disable memory integrity for a virtual machine:

PowerShell

Set-VMSecurity -VMName <VMName> -VirtualizationBasedSecurityOptOut $true


Requirements for running memory integrity in Hyper-V
virtual machines
The Hyper-V host must run at least Windows Server 2016 or Windows 10 version
1607.
The Hyper-V virtual machine must be Generation 2, and running at least Windows
Server 2016 or Windows 10.
Memory integrity and nested virtualization can be enabled at the same time. To
enable the Hyper-V role on the virtual machine, you must first install the Hyper-V
role in a Windows nested virtualization environment.
Virtual Fibre Channel adapters aren't compatible with memory integrity. Before
attaching a virtual Fibre Channel Adapter to a virtual machine, you must first opt
out of virtualization-based security using Set-VMSecurity .
The AllowFullSCSICommandSet option for pass-through disks isn't compatible with
memory integrity. Before configuring a pass-through disk with
AllowFullSCSICommandSet, you must first opt out of virtualization-based security
using Set-VMSecurity .
Memory integrity and VBS enablement
Article • 04/07/2023

Memory integrity is a virtualization-based security (VBS) feature available in Windows 10, Windows
11, and Windows Server 2016 or higher. Memory integrity and VBS improve the threat model of
Windows and provide stronger protections against malware trying to exploit the Windows kernel.
VBS uses the Windows hypervisor to create an isolated virtual environment that becomes the root
of trust of the OS that assumes the kernel can be compromised. Memory integrity is a critical
component that protects and hardens Windows by running kernel mode code integrity within the
isolated virtual environment of VBS. Memory integrity also restricts kernel memory allocations that
could be used to compromise the system, ensuring that kernel memory pages are only made
executable after passing code integrity checks inside the secure runtime environment, and
executable pages themselves are never writable.

7 Note

Memory integrity is sometimes referred to as hypervisor-protected code integrity (HVCI) or


hypervisor enforced code integrity, and was originally released as part of Device Guard. Device
Guard is no longer used except to locate memory integrity and VBS settings in Group Policy or
the Windows registry.

See Virtualization Based Security System Resource Protections for more details on these protections.

Default enablement
Memory integrity is turned on by default on clean installs of Windows 11, and previously only on
clean installs of Windows 10 in S mode, on compatible hardware as described in this article. It's also
turned on by default on all Secured-core PCs. On other systems that don't meet the memory
integrity auto-enablement requirements, customers can opt in using any of the methods described
in how to enable memory integrity. IT Pros and end users always have the final control of whether
memory integrity is enabled.

Hardware features for automatic enablement


Memory integrity is turned on by default when a PC meets the following minimum hardware
features:

Component Detail

Processor Intel 8th generation or later starting with Windows 11, version 22H2 (11th generation
Core processors and newer only for Windows 11, version 21H2)
AMD Zen 2 architecture and newer
Qualcomm Snapdragon 8180 and newer
Component Detail

RAM Minimum 8GB (Only applicable for x64 processors)

Storage SSD with a minimum size of 64GB

Drivers Memory integrity-compatible drivers must be installed. See Driver compatibility with memory
integrity for more information about drivers.

BIOS Virtualization must be enabled

If you're building an image that won't automatically enable memory integrity, you can still configure
your image so that it's turned on by default.

7 Note

Auto-enablement pertains only to clean installs, not upgrades of existing devices.

7 Note

The China and Korea markets are excluded, to avoid known compatibility issues with software
prevalent in those geographies.

7 Note

Intel 11th generation Core desktop processors are not included in current default enablement
logic. However, they are a recommended platform for memory integrity and it can be enabled
by the OEM.

Memory integrity and VBS controls


This section enumerates how device manufacturers and end users can interact with memory
integrity and VBS. To learn about how to control memory integrity state as an administrator, see
How to turn on memory integrity.

Turn on memory integrity


Although Windows will turn memory integrity on by default for most systems, there are several
reasons that may prevent that from happening. As an OEM, you can ensure that memory integrity is
turned on for your devices by configuring registry keys in the OS image.

Recommended configuration
Set the following two registry keys in your image to ensure memory integrity is turned on.
Registry key Value

HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity Enabled=1

HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity WasEnabledBy=1

HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity EnabledBootId=
<Current
BootId>

The BootId is a counter that increments on each successful boot and can be found at the registry
key: HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory
Management\PrefetchParameters\BootId The WasEnabledBy and EnabledBootId registry keys
control a setting that safeguards against having an unbootable device. When set, the device will
automatically turn off memory integrity if the system crashes during boot, potentially caused by
memory integrity blocking an incompatible boot-critical driver. This auto-disablement feature is
only available while BootId is less than EnabledBootId + 3. In some versions of Windows, the auto-
disable functionality is designed to revert if the boot failures continue even after memory integrity
was turned off, indicating that memory integrity was not the root cause of the failures.

7 Note

For high security systems, WasEnabledBy and EnabledBootId should NOT be set.

Troubleshooting

Identifying memory integrity state


The following volatile regkey reflects the state of memory integrity:

Registry key Value

HKLM\System\CurrentControlSet\Control\CI\State HVCIEnabled

Other ways of checking memory integrity state are to look at MsInfo32 under Virtualization-based
Security Services Running or refer to the Core isolation settings page in the Windows Security app
to see the value of Memory integrity. There is also a WMI interface for checking using management
tools, see Validate enabled VBS and memory integrity features.

Debugging Driver Issues


Check the Code Integrity logs to see if any drivers were blocked from loading as a result of memory
integrity. These are in Event Viewer under the following path:

Applications and Service Logs\Microsoft\Windows\CodeIntegrity\Operational

Generally, memory integrity compatibility events have EventID=3087


Check results of memory integrity default enablement
To see details on the results of memory integrity default enablement, check the setupact.log and
search for HVCI . You should see one of the following result logs, as well as the succeeding/failing
checks leading to the enablement decision:

Memory integrity enabled: SYSPRP HVCI: Enabling HVCI

Memory integrity not enabled: SYSPRP HVCI: OS does not meet HVCI auto-enablement requirements.
Exiting now.

If the device was opted out of memory integrity enablement via the regkey method detailed earlier,
then this will be the only log from memory integrity's sysprep. If the device had a compatibility
issue, it should be identified in the preceding logs with the error message:

SYSPRP HVCI: Compatibility did not pass. VBS_COMPAT_ISSUES 0xXXXXXXXX

The following is an enumeration of the potential VBS or memory integrity Compat Issues. Each issue
is represented by a single index in a bit array, and the error message outputs the hex value resulting
from each error bit being present.

Bit Index Compat Issue Hex Value Architecture

0 Unsupported architecture (eg. x86) 0x00000001

1 SLAT required 0x00000002 x64

2 Secure Boot capability required 0x00000004 x64

3 IOMMU required 0x00000008 x64

4 MBEC/GMET Required 0x00000010 x64

5 UEFI Required 0x00000020 x64

6 UEFI WX Memory Attributes Table required 0x00000040 x64

7 ACPI WSMT table required 0x00000080 x64

8 UEFI MOR Lock required 0x00000100 x64

9 Deprecated

10 Hardware virtualization required 0x00000400 x64

11 Secure Launch required 0x00000800 ARM64

12 Deprecated

13 Device failing to meet 64GB minimum required volume size 0x00002000 x64, ARM64

14 System drive SSD required 0x00004000 x64, ARM64

15 Intel CET Required (Only applicable on W11 21H2) 0x00008000 x64


Bit Index Compat Issue Hex Value Architecture

16 ARM SoC is not compatible with VBS 0x00010000 ARM64

17 8GB RAM required 0x00020000 x64

An example of an error code and error identification: VBS_COMPAT_ISSUES 0x000000C0

0x000000C0 -> 0x00000080 AND 0x00000040 -> UEFI WX Memory Attributes Table required, ACPI
WSMT table required
Windows 11 Secured-core PCs
Article • 07/25/2022

Microsoft works closely with OEM partners to help ensure that all certified Windows
systems deliver a secure operating environment. Windows integrates closely with the
hardware to deliver protections that take advantage of available hardware capabilities:

Baseline Windows security – recommended baseline for all individual systems that
provides foundational system integrity protections. Leverages TPM 2.0 for a
hardware root of trust, secure boot and BitLocker drive encryption.
Virtualization-based security enabled – leverages virtualization capabilities from
hardware and the hypervisor to provide additional protection for critical
subsystems and data.
Secured-core – recommended for the most sensitive systems and industries like
financial, healthcare, and government agencies. Builds on the previous layers and
leverages advanced processor capabilities to provide protection from firmware
attacks.

Secured-core PCs
Microsoft is working closely with OEM partners and silicon vendors to build Secured-
core PCs that features deeply integrated hardware, firmware and software to ensure
enhanced security for devices, identities and data.

Secured-core PCs provide protections that are useful against sophisticated attacks and
can provide increased assurance when handling mission-critical data in some of the
most data-sensitive industries, such as healthcare workers that handle medical records
and other personally identifiable information (PII), commercial roles that handle high
business impact and highly sensitive data, such as a financial controller with earnings
data.

For general purpose laptops, tablets, 2-in-1's, mobile workstations, and desktops,
Microsoft recommends using Security baselines for optimal configuration. For more
info, see Windows security baselines.

Baseline Windows security is supported by Secure Boot, Bitlocker device encryption,


Microsoft Defender, Windows Hello and a TPM 2.0 chip to provide a hardware root of
trust for the OS platform. These features are designed to secure general purpose
modern devices. If you are a decision maker purchasing new devices, your devices
should meet the baseline Windows security requirements.
What makes a Secured-core PC
Benefit Feature Hardware/Firmware requirement Baseline Secured-
Windows core PCs
Security

Create a Secure Boot Secure Boot is enabled in the BIOS by ✓ ✓


hardware default.
backed root
of trust Secure Boot Default trust for Microsoft bootloaders ✓
only with BIOS option for enabling
trust for non-Microsoft bootloaders

Trusted Meet the latest Microsoft ✓ ✓


Platform requirements for the Trusted
Module 2.0 Computing Group (TCG) specification
(TPM)

Direct Memory The device supports Memory Access ✓ ✓


Access (DMA) Protection (Kernel DMA Protection)
Protection

Defend System Guard Enabled on device (via Secure Launch) ✓ ✓


against Secure Launch
firmware (D-RTM) with
level attacks System
(either of the Management
2 approaches Mode (SMM)
specified can isolation
be used)
S-RTM and Supported on devices that have the ✓
Standalone FASR firmware
MM with MM
supervisor (the
approach
implemented
on FASR
devices)

Protect the Hypervisor Enabled on device ✓ ✓


OS from Code Integrity
execution of (HVCI)
unverified
code
Benefit Feature Hardware/Firmware requirement Baseline Secured-
Windows core PCs
Security

Provide Windows Hello If device supports Windows Hello, ✓* ✓


advanced then those implementations must be
identity capable of Enhanced sign-in.
verification "Capable" means:
and Designed-in SecureBIO capable
protection components for the Windows
Hello modes are supported on
the device (Face and/or
Fingerprint)
The device has the right
SecureBIO components to
enable SecureBIO functionality
in a future OS release; meaning,
the device BIOS implements the
necessary SecureBIO SDEV
table, but it is disabled by
DEFAULT until supported by a
future OS version.

Protect BitLocker BitLocker can leverage the TPM 2.0 to ✓ ✓


critical data if encryption encrypt and protect data
a device is
lost, stolen or
confiscated

*Possible on some devices


Secured-core PC configuration lock
Article • 08/10/2023 • Applies to: ✅ Windows 11

In an enterprise organization, IT administrators enforce policies on their corporate


devices to keep the devices in a compliant state and protect the OS by preventing users
from changing configurations and creating config drift. Config drift occurs when users
with local admin rights change settings and put the device out of sync with security
policies. Devices in a noncompliant state can be vulnerable until the next sync and
configuration reset with the MDM. Windows 11 with config lock enables IT
administrators to prevent config drift and keep the OS configuration in the desired
state. With config lock, the OS monitors the registry keys that configure each feature
and when it detects a drift, reverts to the IT-desired state in seconds.

Secured-core configuration lock (config lock) is a new secured-core PC (SCPC) feature


that prevents configuration drift from secured-core PC features caused by unintentional
misconfiguration. In short, it ensures a device intended to be a secured-core PC remains
a secured-core PC.

To summarize, config lock:

Enables IT to "lock" secured-core PC features when managed through MDM


Detects drift remediates within seconds
Doesn't prevent malicious attacks

Windows edition and licensing requirements


The following table lists the Windows editions that support Secured-core configuration
lock:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Secured-core configuration lock license entitlements are granted by the following


licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.
Configuration Flow
After a secured-core PCs reaches the desktop, config lock will prevent configuration drift
by detecting if the device is a secured-core PC or not. When the device isn't a secured-
core PC, the lock doesn't apply. If the device is a secured-core PC, config lock locks the
policies listed under List of locked policies.

Enabling config lock using Microsoft Intune


Config lock isn't enabled by default, or turned on by the OS during boot. Rather, you
need to turn it on.

The steps to turn on config lock using Microsoft Intune are as follows:

1. Ensure that the device to turn on config lock is enrolled in Microsoft Intune.

2. In the Intune admin center , select Devices > Configuration Profiles > Create a
profile.

3. Select the following and press Create:

Platform: Windows 10 and later


Profile type: Templates
Template name: Custom
4. Name your profile.

5. When you reach the Configuration Settings step, select "Add" and add the
following information:

OMA-URI:
./Vendor/MSFT/DMClient/Provider/MS%20DM%20Server/ConfigLock/Lock

Data type: Integer


Value: 1

To turn off config lock, change the value to 0.

6. Select the devices to turn on config lock. If you're using a test tenant, you can
select "+ Add all devices".

7. You don't need to set any applicability rules for test purposes.

8. Review the Configuration and select "Create" if everything is correct.

9. After the device syncs with the Microsoft Intune server, you can confirm if the
config lock was successfully enabled.
Configuring secured-core PC features
Config lock is designed to ensure that a secured-core PC isn't unintentionally
misconfigured. You keep the ability to enable or disable SCPC features, for example,
firmware protection. You can make these changes with group policies or MDM services
like Microsoft Intune.
FAQ
Can I disable config lock? Yes. You can use MDM to turn off config lock completely
or put it in temporary unlock mode for helpdesk activities.

List of locked policies


CSPs

BitLocker

PassportForWork

WindowsDefenderApplicationGuard

ApplicationControl

MDM policies Supported


by Group
Policy

DataProtection/AllowDirectMemoryAccess No

DataProtection/LegacySelectiveWipeID No

DeviceGuard/ConfigureSystemGuardLaunch Yes

DeviceGuard/EnableVirtualizationBasedSecurity Yes

DeviceGuard/LsaCfgFlags Yes
MDM policies Supported
by Group
Policy

DeviceGuard/RequirePlatformSecurityFeatures Yes

DeviceInstallation/AllowInstallationOfMatchingDeviceIDs Yes

DeviceInstallation/AllowInstallationOfMatchingDeviceInstanceIDs Yes

DeviceInstallation/AllowInstallationOfMatchingDeviceSetupClasses Yes

DeviceInstallation/PreventDeviceMetadataFromNetwork Yes

DeviceInstallation/PreventInstallationOfDevicesNotDescribedByOtherPolicySettings Yes

DeviceInstallation/PreventInstallationOfMatchingDeviceIDs Yes

DeviceInstallation/PreventInstallationOfMatchingDeviceInstanceIDs Yes

DeviceInstallation/PreventInstallationOfMatchingDeviceSetupClasses Yes

DmaGuard/DeviceEnumerationPolicy Yes

WindowsDefenderSecurityCenter/CompanyName Yes

WindowsDefenderSecurityCenter/DisableAccountProtectionUI Yes

WindowsDefenderSecurityCenter/DisableAppBrowserUI Yes

WindowsDefenderSecurityCenter/DisableClearTpmButton Yes

WindowsDefenderSecurityCenter/DisableDeviceSecurityUI Yes

WindowsDefenderSecurityCenter/DisableEnhancedNotifications Yes

WindowsDefenderSecurityCenter/DisableFamilyUI Yes

WindowsDefenderSecurityCenter/DisableHealthUI Yes

WindowsDefenderSecurityCenter/DisableNetworkUI Yes

WindowsDefenderSecurityCenter/DisableNotifications Yes

WindowsDefenderSecurityCenter/DisableTpmFirmwareUpdateWarning Yes

WindowsDefenderSecurityCenter/DisableVirusUI Yes

WindowsDefenderSecurityCenter/DisallowExploitProtectionOverride Yes

WindowsDefenderSecurityCenter/Email Yes

WindowsDefenderSecurityCenter/EnableCustomizedToasts Yes
MDM policies Supported
by Group
Policy

WindowsDefenderSecurityCenter/EnableInAppCustomization Yes

WindowsDefenderSecurityCenter/HideRansomwareDataRecovery Yes

WindowsDefenderSecurityCenter/HideSecureBoot Yes

WindowsDefenderSecurityCenter/HideTPMTroubleshooting Yes

WindowsDefenderSecurityCenter/HideWindowsSecurityNotificationAreaControl Yes

WindowsDefenderSecurityCenter/Phone Yes

WindowsDefenderSecurityCenter/URL Yes

SmartScreen/EnableAppInstallControl Yes

SmartScreen/EnableSmartScreenInShell Yes

SmartScreen/PreventOverrideForFilesInShell Yes
Kernel DMA Protection
Article • 07/31/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Kernel DMA Protection is a Windows security feature that protects against external
peripherals from gaining unauthorized access to memory.

PCIe hot plug devices such as Thunderbolt, USB4, and CFexpress allow users to attach
classes of external peripherals, including graphics cards, to their devices with the plug-
and-play ease of USB.
These devices are DMA-capable, and can access system memory and perform read and
write operations without the need for the system processor's involvement. This
capability is the reason behind the exceptional performance of PCI devices, but it also
makes them susceptible to drive-by DMA attacks.

Drive-by DMA attacks are attacks that occur while the owner of the system isn't present
and usually take just a few minutes, with simple-to-moderate attacking tools (affordable,
off-the-shelf hardware and software), that don't require the disassembly of the device.
For example, attackers can plug in a USB-like device while the device owner is on a
break, and walk away with all the secrets on the machine, or inject a malware that allows
them to have full control over the device remotely while bypassing the lock screen.

7 Note

Kernel DMA Protection feature doesn't protect against DMA attacks via
1394/FireWire, PCMCIA, CardBus, or ExpressCard.

How Windows protects against DMA drive-by


attacks
Windows uses the system Input/Output Memory Management Unit (IOMMU) to block
external peripherals from starting and performing DMA, unless the drivers for these
peripherals support memory isolation (such as DMA-remapping). Peripherals with DMA
Remapping compatible drivers will be automatically enumerated, started, and allowed to
perform DMA to their assigned memory regions.

By default, peripherals with DMA Remapping incompatible drivers will be blocked from
starting and performing DMA until an authorized user signs into the system or unlocks
the screen. IT administrators can modify the default behavior applied to devices with
DMA Remapping incompatible drivers using MDM or group policies.
User experience
When Kernel DMA Protection is enabled:

Peripherals with DMA Remapping-compatible device drivers will be automatically


enumerated and started
Peripherals with DMA Remapping-incompatible drivers will be blocked from
starting if the peripheral was plugged in before an authorized user logs in, or while
the screen is locked. Once the system is unlocked, the peripheral driver will be
started by the OS, and the peripheral will continue to function normally until the
system is rebooted, or the peripheral is unplugged. The peripheral will continue to
function normally if the user locks the screen or signs out of the system.

Windows edition and licensing requirements


The following table lists the Windows editions that support Kernel Direct Memory
Access (DMA) protection:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Kernel Direct Memory Access (DMA) protection license entitlements are granted by the
following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

System compatibility
Kernel DMA Protection requires UEFI firmware support, and Virtualization-based
Security (VBS) isn't required.

Kernel DMA Protection isn't compatible with other BitLocker DMA attacks
countermeasures. It's recommended to disable the BitLocker DMA attacks
countermeasures if the system supports Kernel DMA Protection. Kernel DMA Protection
provides higher security bar for the system over the BitLocker DMA attack
countermeasures, while maintaining usability of external peripherals.
7 Note

DMA remapping support for graphics devices was added in Windows 11 with the
WDDM 3.0 driver model; Windows 10 doesn't support this feature.

Check if Kernel DMA Protection is enabled


Systems that support Kernel DMA Protection will enable the feature automatically, with
no user or IT admin configuration required.

You can use the Windows Security settings to check if Kernel DMA Protection is enabled:

1. Open Windows Security.


2. Select Device security > Core isolation details > Memory access protection

Alternatively, you can use the System Information desktop app ( msinfo32.exe ). If the
system supports Kernel DMA Protection, the Kernel DMA Protection value will be set to
ON.

If the current state of Kernel DMA Protection is OFF and Hyper-V - Virtualization
Enabled in Firmware is NO:

Reboot into UEFI settings


Turn on Intel Virtualization Technology
Turn on Intel Virtualization Technology for I/O (VT-d)
Reboot system into Windows

7 Note

If the Hyper-V Windows feature is enabled, all the Hyper-V-related features will be
hidden, and A hypervisor has been detected. Features required for Hyper-V will
not be displayed entity will be shown at the bottom of the list. It means that
Hyper-V - Virtualization Enabled in Firmware is set to YES.

Enabling Hyper-V virtualization in Firmware (IOMMU) is required to enable Kernel


DMA Protection, even when the firmware has the flag of ACPI Kernel DMA
Protection Indicators described in Kernel DMA Protection (Memory Access
Protection) for OEMs.

If the state of Kernel DMA Protection remains Off, then the system doesn't support
Kernel DMA Protection.

For systems that don't support Kernel DMA Protection, refer to the BitLocker
countermeasures or Thunderbolt 3 and Security on Microsoft Windows Operating
system for other means of DMA protection.
Frequently asked questions

Does Kernel DMA Protection prevent drive-by DMA


attacks during Boot?
No, Kernel DMA Protection only protects against drive-by DMA attacks after the OS is
loaded. It's the responsibility of the system firmware/BIOS to protect against attacks via
the Thunderbolt 3 ports during boot.

How can I check if a certain driver supports DMA-


remapping?
Not all devices and drivers support DMA-remapping. To check if a specific driver is
opted into DMA-remapping, check the values corresponding to the DMA Remapping
Policy property in the Details tab of a device in Device Manager*. A value of 0 or 1
means that the device driver doesn't support DMA-remapping. A value of 2 means that
the device driver supports DMA-remapping. If the property isn't available, then the
device driver doesn't support DMA-remapping. Check the driver instance for the device
you're testing. Some drivers may have varying values depending on the location of the
device (internal vs. external).
When the drivers for PCI or Thunderbolt 3 peripherals
don't support DMA-remapping?
Use the Windows-provided drivers for the peripherals, when available. If there are no
class drivers provided by Windows for your peripherals, contact your peripheral
vendor/driver vendor to update the driver to support DMA Remapping.

My system's Kernel DMA Protection is off. Can DMA-


remapping for a specific device be turned on?
Yes. DMA remapping for a specific device can be turned on independent from Kernel
DMA Protection. For example, if the driver opts in and VT-d (Virtualization Technology
for Directed I/O) is turned on, then DMA remapping will be enabled for the devices
driver even if Kernel DMA Protection is turned off.

Kernel DMA Protection is a policy that allows or blocks devices to perform DMA, based
on their remapping state and capabilities.

Do Microsoft drivers support DMA-remapping?


The Microsoft inbox drivers for USB XHCI (3.x) Controllers, Storage AHCI/SATA
Controllers, and Storage NVMe Controllers support DMA Remapping.

Do drivers for non-PCI devices need to be compatible


with DMA-remapping?
No. Devices for non-PCI peripherals, such as USB devices, don't perform DMA, thus no
need for the driver to be compatible with DMA Remapping.

How can an enterprise enable the External device


enumeration policy?
The External device enumeration policy controls whether to enumerate external
peripherals that aren't compatible with DMA-remapping. Peripherals that are
compatible with DMA-remapping are always enumerated. Peripherals that aren't, can be
blocked, allowed, or allowed only after the user signs in (default).

The policy can be enabled by using:

Group Policy: Administrative Templates\System\Kernel DMA


Protection\Enumeration policy for external devices incompatible with Kernel
DMA Protection
Mobile Device Management (MDM): DmaGuard policies
System Guard Secure Launch and SMM
protection
Article • 07/31/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This topic explains how to configure System Guard Secure Launch and System
Management Mode (SMM) protection to improve the startup security of Windows 10
and Windows 11 devices. The information below is presented from a client perspective.

7 Note

System Guard Secure Launch feature requires a supported processor. For more
information, see System requirements for System Guard.

How to enable System Guard Secure Launch


You can enable System Guard Secure Launch by using any of these options:

Mobile Device Management (MDM)


Group Policy
Windows Security settings
Registry

Mobile Device Management


System Guard Secure Launch can be configured for Mobile Device Management (MDM)
by using DeviceGuard policies in the Policy CSP,
DeviceGuard/ConfigureSystemGuardLaunch.

Group Policy
1. Click Start > type and then click Edit group policy.

2. Click Computer Configuration > Administrative Templates > System > Device
Guard > Turn On Virtualization Based Security > Secure Launch Configuration.
Windows Security
Click Start > Settings > Update & Security > Windows Security > Open Windows
Security > Device security > Core isolation > Firmware protection.

Registry
1. Open Registry editor.

2. Click HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control >


DeviceGuard > Scenarios.

3. Right-click Scenarios > New > Key and name the new key SystemGuard.

4. Right-click SystemGuard > New > DWORD (32-bit) Value and name the new
DWORD Enabled.

5. Double-click Enabled, change the value to 1, and click OK.

How to verify System Guard Secure Launch is


configured and running
To verify that Secure Launch is running, use System Information (MSInfo32). Click Start,
search for System Information, and look under Virtualization-based Security Services
Running and Virtualization-based Security Services Configured.

7 Note

To enable System Guard Secure launch, the platform must meet all the baseline
requirements for System Guard, Device Guard, Credential Guard, and
Virtualization Based Security.

7 Note

For more information around AMD processors, see Microsoft Security Blog: Force
firmware code to be measured and attested by Secure Launch on Windows 10 .
Windows operating system security
Article • 08/02/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Security and privacy depend on an operating system that guards your system and
information from the moment it starts up, providing fundamental chip-to-cloud
protection. Windows 11 is the most secure Windows yet with extensive security
measures designed to help keep you safe. These measures include built-in advanced
encryption and data protection, robust network and system security, and intelligent
safeguards against ever-evolving threats.

Watch the latest Microsoft Mechanics Windows 11 security video that shows off some
of the latest Windows 11 security technology.

Use the links in the following sections to learn more about the operating system security
features and capabilities in Windows.

System security
Feature name Description

Secure Boot Secure Boot and Trusted Boot help to prevent malware and corrupted
and Trusted components from loading when a device starts.
Boot
Secure Boot starts with initial boot-up protection, and then Trusted Boot picks
up the process. Together, Secure Boot and Trusted Boot help to ensure the
system boots up safely and securely.

Measured Measured Boot measures all important code and configuration settings during
boot the boot of Windows. This includes: the firmware, boot manager, hypervisor,
kernel, secure kernel and operating system. Measured Boot stores the
measurements in the TPM on the machine, and makes them available in a log
that can be tested remotely to verify the boot state of the client.

The Measured Boot feature provides antimalware software with a trusted


(resistant to spoofing and tampering) log of all boot components that started
before it. The antimalware software can use the log to determine whether
components that ran before it are trustworthy, or if they are infected with
malware. The antimalware software on the local machine can send the log to a
remote server for evaluation. The remote server may initiate remediation actions,
either by interacting with software on the client, or through out-of-band
mechanisms, as appropriate.

Device health The Windows device health attestation process supports a zero-trust paradigm
attestation that shifts the focus from static, network-based perimeters, to users, assets, and
service resources. The attestation process confirms the device, firmware, and boot
Feature name Description

process are in a good state and have not been tampered with before they can
access corporate resources. The determinations are made with data stored in the
TPM, which provides a secure root of trust. The information is sent to an
attestation service, such as Azure Attestation, to verify the device is in a trusted
state. Then, an MDM tool like Microsoft Intune reviews device health and
connects this information with Azure Active Directory for conditional access.

Windows Microsoft provides a robust set of security settings policies that IT administrators
security can use to protect Windows devices and other resources in their organization.
policy
settings and
auditing

Virus and threat protection


Feature name Description

Microsoft Microsoft Defender Antivirus is a protection solution included in all versions of


Defender Windows. From the moment you boot Windows, Microsoft Defender Antivirus
Antivirus continually monitors for malware, viruses, and security threats. Updates are
downloaded automatically to help keep your device safe and protect it from
threats. Microsoft Defender Antivirus includes real-time, behavior-based, and
heuristic antivirus protection.

The combination of always-on content scanning, file and process behavior


monitoring, and other heuristics effectively prevents security threats. Microsoft
Defender Antivirus continually scans for malware and threats and also detects
and blocks potentially unwanted applications (PUA) which are applications that
are deemed to negatively impact your device but are not considered malware.

Local Security Windows has several critical processes to verify a user's identity. Verification
Authority processes include Local Security Authority (LSA), which is responsible for
(LSA) authenticating users and verifying Windows logins. LSA handles tokens and
Protection credentials such as passwords that are used for single sign-on to a Microsoft
account and Azure services. To help protect these credentials, additional LSA
protection only allows loading of trusted, signed code and provides significant
protection against Credential theft.

LSA protection is enabled by default on new, enterprise joined Windows 11


devices with added support for non-UEFI lock and policy management controls
via MDM and group policy.

Attack surface Attack surface reduction (ASR) rules help to prevent software behaviors that are
reduction often abused to compromise your device or network. By reducing the number
(ASR) of attack surfaces, you can reduce the overall vulnerability of your organization.
Feature name Description

Administrators can configure specific ASR rules to help block certain behaviors,
such as launching executable files and scripts that attempt to download or run
files, running obfuscated or otherwise suspicious scripts, performing behaviors
that apps don't usually initiate during normal day-to-day work.

Tamper Tamper protection is a capability in Microsoft Defender for Endpoint that helps
protection protect certain security settings, such as virus and threat protection, from being
settings for disabled or changed. During some kinds of cyber attacks, bad actors try to
MDE disable security features on devices. Disabling security features provides bad
actors with easier access to your data, the ability to install malware, and the
ability to exploit your data, identity, and devices. Tamper protection helps guard
against these types of activities.

Controlled You can protect your valuable information in specific folders by managing app
folder access access to specific folders. Only trusted apps can access protected folders, which
are specified when controlled folder access is configured. Commonly used
folders, such as those used for documents, pictures, downloads, are typically
included in the list of controlled folders. Controlled folder access works with a
list of trusted apps. Apps that are included in the list of trusted software work as
expected. Apps that are not included in the trusted list are prevented from
making any changes to files inside protected folders.

Controlled folder access helps to protect user's valuable data from malicious
apps and threats, such as ransomware.

Exploit Exploit protection automatically applies several exploit mitigation techniques to


protection operating system processes and apps. Exploit protection works best with
Microsoft Defender for Endpoint, which gives organizations detailed reporting
into exploit protection events and blocks as part of typical alert investigation
scenarios. You can enable exploit protection on an individual device, and then
use MDM or group policy to distribute the configuration file to multiple devices.
When a mitigation is encountered on the device, a notification will be displayed
from the Action Center. You can customize the notification with your company
details and contact information. You can also enable the rules individually to
customize which techniques the feature monitors.

Microsoft Microsoft Defender SmartScreen protects against phishing, malware websites


Defender and applications, and the downloading of potentially malicious files. For
SmartScreen enhanced phishing protection, SmartScreen also alerts people when they are
entering their credentials into a potentially risky location. IT can customize
which notifications appear via MDM or group policy. The protection runs in
audit mode by default, giving IT admins full control to make decisions around
policy creation and enforcement.

Microsoft Microsoft Defender for Endpoint is an enterprise endpoint detection and


Defender for response solution that helps security teams to detect, investigate, and respond
Endpoint to advanced threats. Organizations can use the rich event data and attack
insights Defender for Endpoint provides to investigate incidents. Defender for
Endpoint brings together the following elements to provide a more complete
Feature name Description

picture of security incidents: endpoint behavioral sensors, cloud security


analytics, threat intelligence and rich response capabilities.

Network security
Feature name Description

Transport layer Transport Layer Security (TLS) is a cryptographic protocol designed to provide
security (TLS) communications security over a network. TLS 1.3 is the latest version of the
protocol and is enabled by default in Windows 11. This version eliminates
obsolete cryptographic algorithms, enhances security over older versions, and
aims to encrypt as much of the TLS handshake as possible. The handshake is
more performant with one fewer round trip per connection on average, and
supports only five strong cipher suites which provide perfect forward secrecy
and less operational risk.

Bluetooth The number of Bluetooth devices connected to Windows continues to


pairing and increase. Windows supports all standard Bluetooth pairing protocols,
connection including classic and LE Secure connections, secure simple pairing, and classic
protection and LE legacy pairing. Windows also implements host based LE privacy.
Windows updates help users stay current with OS and driver security features
in accordance with the Bluetooth Special Interest Group (SIG), Standard
Vulnerability Reports, as well as issues beyond those required by the
Bluetooth core industry standards. Microsoft strongly recommends that users
ensure their firmware and/ or software of their Bluetooth accessories are kept
up to date.

WiFi Security Wi-Fi Protected Access (WPA) is a security certification programs designed to
secure wireless networks. WPA3 is the latest version of the certification and
provides a more secure and reliable connection method as compared to
WPA2 and older security protocols. Windows supports three WPA3 modes:
WPA3 personal with the Hash-to-Element (H2E) protocol, WPA3 Enterprise,
and WPA3 Enterprise 192-bit Suite B.

Windows 11 also supports WFA defined WPA3 Enterprise that includes


enhanced Server Cert validation and TLS 1.3 for authentication using EAP-TLS
Authentication.

Opportunistic Opportunistic Wireless Encryption (OWE) is a technology that allows wireless


Wireless devices to establish encrypted connections to public Wi-Fi hotspots.
Encryption
(OWE)

Windows Windows Firewall with Advanced Securityprovides host-based, two-way


Firewall network traffic filtering, blocking unauthorized traffic flowing into or out of
the local device based on the types of networks to which the device is
connected. Windows Firewall reduces the attack surface of a device with rules
Feature name Description

to restrict or allow traffic by many properties such as IP addresses, ports, or


program paths. Reducing the attack surface of a device increases
manageability and decreases the likelihood of a successful attack.

With its integration with Internet Protocol Security (IPsec), Windows Firewall
provides a simple way to enforce authenticated, end-to-end network
communications. It provides scalable, tiered access to trusted network
resources, helping to enforce integrity of the data, and optionally helping to
protect the confidentiality of the data. Windows Firewall is a host-based
firewall that is included with the operating system, there is no additional
hardware or software required. Windows Firewall is also designed to
complement existing non-Microsoft network security solutions through a
documented application programming interface (API).

Virtual private The Windows VPN client platform includes built in VPN protocols,
network (VPN) configuration support, a common VPN user interface, and programming
support for custom VPN protocols. VPN apps are available in the Microsoft
Store for both enterprise and consumer VPNs, including apps for the most
popular enterprise VPN gateways.

In Windows 11, the most commonly used VPN controls are integrated right
into the Quick Actions pane. From the Quick Actions pane, users can see the
status of their VPN, start and stop the VPN tunnels, and access the Settings
app for more controls.

Always On VPN With Always On VPN, you can create a dedicated VPN profile for the device.
(device tunnel) Unlike User Tunnel, which only connects after a user logs on to the device,
Device Tunnel allows the VPN to establish connectivity before a user sign-in.
Both Device Tunnel and User Tunnel operate independently with their VPN
profiles, can be connected at the same time, and can use different
authentication methods and other VPN configuration settings as appropriate.

Direct Access DirectAccess allows connectivity for remote users to organization network
resources without the need for traditional Virtual Private Network (VPN)
connections.

With DirectAccess connections, remote devices are always connected to the


organization and there's no need for remote users to start and stop
connections.

Server Message SMB Encryption provides end-to-end encryption of SMB data and protects
Block (SMB) file data from eavesdropping occurrences on internal networks. In Windows 11,
service the SMB protocol has significant security updates, including AES-256 bits
encryption, accelerated SMB signing, Remote Directory Memory Access
(RDMA) network encryption, and SMB over QUIC for untrusted networks.
Windows 11 introduces AES-256-GCM and AES-256-CCM cryptographic suites
for SMB 3.1.1 encryption. Windows administrators can mandate the use of
Feature name Description

more advanced security or continue to use the more compatible, and still-
safe, AES-128 encryption.

Server Message SMB Direct (SMB over remote direct memory access) is a storage protocol
Block Direct that enables direct memory-to-memory data transfers between device and
(SMB Direct) storage, with minimal CPU usage, while using standard RDMA-capable
network adapters.

SMB Direct supports encryption, and now you can operate with the same
safety as traditional TCP and the performance of RDMA. Previously, enabling
SMB encryption disabled direct data placement, making RDMA as slow as TCP.
Now data is encrypted before placement, leading to relatively minor
performance degradation while adding AES-128 and AES-256 protected
packet privacy.

Encryption and data protection


Feature name Description

BitLocker The BitLocker CSP allows an MDM solution, like Microsoft Intune, to manage
management the BitLocker encryption features on Windows devices. This includes OS
volumes, fixed drives and removeable storage, and recovery key management
into Azure AD.

BitLocker BitLocker Drive Encryption is a data protection feature that integrates with the
enablement operating system and addresses the threats of data theft or exposure from lost,
stolen, or inappropriately decommissioned computers. BitLocker uses AES
algorithm in XTS or CBC mode of operation with 128-bit or 256-bit key length
to encrypt data on the volume. Cloud storage on Microsoft OneDrive or Azure
can be used to save recovery key content. BitLocker can be managed by any
MDM solution such as Microsoft Intune, using a configuration service provider
(CSP).

BitLocker provides encryption for the OS, fixed data, and removable data drives
leveraging technologies like hardware security test interface (HSTI), Modern
Standby, UEFI Secure Boot and TPM.

Encrypted hard Encrypted hard drives are a class of hard drives that are self-encrypted at the
drive hardware level and allow for full disk hardware encryption while being
transparent to the device user. These drives combine the security and
management benefits provided by BitLocker Drive Encryption with the power of
self-encrypting drives.

By offloading the cryptographic operations to hardware, encrypted hard drives


increase BitLocker performance and reduce CPU usage and power
consumption. Because encrypted hard drives encrypt data quickly, BitLocker
Feature name Description

deployment can be expanded across enterprise devices with little to no impact


on productivity.

Personal data Personal data encryption (PDE) works with BitLocker and Windows Hello for
encryption Business to further protect user documents and other files, including when the
(PDE) device is turned on and locked. Files are encrypted automatically and
seamlessly to give users more security without interrupting their workflow.

Windows Hello for Business is used to protect the container which houses the
encryption keys used by PDE. When the user signs in, the container gets
authenticated to release the keys in the container to decrypt user content.

Email Email encryption enables users to encrypt outgoing email messages and
Encryption attachments, so only intended recipients with a digital ID (certificate) can read
(S/MIME) them. Users can digitally sign a message, which verifies the identity of the
sender and confirms the message has not been tampered with. The encrypted
messages can be sent by a user to other users within their organization or
external contacts if they have proper encryption certificates.
Secure the Windows boot process
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows has many features to help protect you from malware, and it does an amazingly
good job. Except for apps that businesses develop and use internally, all Microsoft Store
apps must meet a series of requirements to be certified and included in the Microsoft
Store. This certification process examines several criteria, including security, and is an
effective means of preventing malware from entering the Microsoft Store. Even if a
malicious app does get through, Windows includes a series of security features that can
mitigate the effect. For instance, Microsoft Store apps are sandboxed and lack the
privileges necessary to access user data or change system settings.

Windows has multiple levels of protection for desktop apps and data, too. Windows
Defender Antivirus uses cloud-powered real-time detection to identify and quarantine
apps that are known to be malicious. Windows Defender SmartScreen warns users
before allowing them to run an untrustworthy app, even if it's recognized as malware.
Before an app can change system settings, the user would have to grant the app
administrative privileges by using User Account Control.

Those components are just some of the ways that Windows protects you from malware.
However, those security features protect you only after Windows starts. Modern
malware, and bootkits specifically, are capable of starting before Windows, completely
bypassing OS security, and remaining hidden.

Running Windows 10 or Windows 11 on a PC with Unified Extensible Firmware Interface


(UEFI) support ensures that Trusted Boot safeguards your PC against malware right from
the moment you power it on. This protection continues until your anti-malware software
takes over. If, by any chance, malware manages to infect your PC, it won't be able to stay
hidden. Trusted Boot can verify the system's integrity to your infrastructure in a manner
that malware can't mask. Even for PCs without UEFI, Windows offers enhanced startup
security compared to earlier Windows versions.

To begin, let's take a closer look at rootkits and their functioning. Following that, we'll
illustrate how Windows can ensure your protection.

The threat: rootkits


Rootkits are a sophisticated and dangerous type of malware. They run in kernel mode,
using the same privileges as the OS. Because rootkits have the same rights as the OS
and start before it, they can completely hide themselves and other applications. Often,
rootkits are part of an entire suite of malware that can bypass local logins, record
passwords and keystrokes, transfer private files, and capture cryptographic data.

Different types of rootkits load during different phases of the startup process:

Firmware rootkits. These kits overwrite the firmware of the PC's basic input/output
system or other hardware so the rootkit can start before Windows.
Bootkits. These kits replace the OS's bootloader (the small piece of software that
starts the OS) so that the PC loads the bootkit before the OS.
Kernel rootkits. These kits replace a portion of the OS kernel so the rootkit can
start automatically when the OS loads.
Driver rootkits. These kits pretend to be one of the trusted drivers that Windows
uses to communicate with the PC hardware.

The countermeasures
Windows supports four features to help prevent rootkits and bootkits from loading
during the startup process:

Secure Boot. PCs with UEFI firmware and a Trusted Platform Module (TPM) can be
configured to load only trusted OS bootloaders.
Trusted Boot. Windows checks the integrity of every component of the startup
process before loading it.
Early Launch Anti-Malware (ELAM). ELAM tests all drivers before they load and
prevents unapproved drivers from loading.
Measured Boot. The PC's firmware logs the boot process, and Windows can send
it to a trusted server that can objectively assess the PC's health.

Figure 1 shows the Windows startup process.


Figure 1. Secure Boot, Trusted Boot, and Measured Boot block malware at every stage:

Secure Boot and Measured Boot are only possible on PCs with UEFI 2.3.1 and a TPM
chip. Fortunately, all Windows 10 and Windows 11 PCs that meet Windows Hardware
Compatibility Program requirements have these components, and many PCs designed
for earlier versions of Windows have them as well.

The sections that follow describe Secure Boot, Trusted Boot, ELAM, and Measured Boot.

Secure Boot
When a PC starts, it first finds the OS bootloader. PCs without Secure Boot run whatever
bootloader is on the PC's hard drive. There's no way for the PC to tell whether it's a
trusted OS or a rootkit.

When a PC equipped with UEFI starts, the PC first verifies that the firmware is digitally
signed, reducing the risk of firmware rootkits. If Secure Boot is enabled, the firmware
examines the bootloader's digital signature to verify that it hasn't been modified. If the
bootloader is intact, the firmware starts the bootloader only if one of the following
conditions is true:

The bootloader was signed using a trusted certificate. For PCs certified for
Windows, the Microsoft certificate is trusted.
The user has manually approved the bootloader's digital signature. This action
allows the user to load non-Microsoft operating systems.

All x86-based Certified For Windows PCs must meet several requirements related to
Secure Boot:

They must have Secure Boot enabled by default.


They must trust Microsoft's certificate (and thus any bootloader Microsoft has
signed).
They must allow the user to configure Secure Boot to trust other bootloaders.
They must allow the user to completely disable Secure Boot.

These requirements help protect you from rootkits while allowing you to run any OS you
want. You have three options for running non-Microsoft operating systems:

Use an OS with a certified bootloader. Because all Certified For Windows PCs
must trust Microsoft's certificate, Microsoft offers a service to analyze and sign any
non-Microsoft bootloader so that it will be trusted by all Certified For Windows
PCs. In fact, an open source bootloader capable of loading Linux is already
available. To begin the process of obtaining a certificate, go to
https://partner.microsoft.com/dashboard .
Configure UEFI to trust your custom bootloader. All Certified For Windows PCs
allow you to trust a non-certified bootloader by adding a signature to the UEFI
database, allowing you to run any OS, including homemade operating systems.
Turn off Secure Boot. All Certified For Windows PCs allow you to turn off Secure
Boot so that you can run any software. This action doesn't help protect you from
bootkits, however.

To prevent malware from abusing these options, the user must manually configure the
UEFI firmware to trust a non-certified bootloader or to turn off Secure Boot. Software
can't change the Secure Boot settings.
The default state of Secure Boot has a wide circle of trust, which can result in customers
trusting boot components they may not need. Since the Microsoft 3rd Party UEFI CA
certificate signs the bootloaders for all Linux distributions, trusting the Microsoft 3rd
Party UEFI CA signature in the UEFI database increase s the attack surface of systems. A
customer who intended to only trust and boot a single Linux distribution will trust all
distributions - much more than their desired configuration. A vulnerability in any of the
bootloaders exposes the system and places the customer at risk of exploit for a
bootloader they never intended to use, as seen in recent vulnerabilities, for example
with the GRUB bootloader or firmware-level rootkit affecting boot components.
Secured-core PCs require Secure Boot to be enabled and configured to distrust the
Microsoft 3rd Party UEFI CA signature, by default, to provide customers with the most
secure configuration of their PCs possible.

To trust and boot operating systems, like Linux, and components signed by the UEFI
signature, Secured-core PCs can be configured in the BIOS menu to add the signature in
the UEFI database by following these steps:

1. Open the firmware menu, either:

Boot the PC, and press the manufacturer's key to open the menus. Common
keys used: Esc, Delete, F1, F2, F10, F11, or F12. On tablets, common buttons
are Volume up or Volume down. During startup, there's often a screen that
mentions the key. If there's not one, or if the screen goes by too fast to see it,
check your manufacturer's site.
Or, if Windows is already installed, from either the Sign on screen or the Start
menu, select Power ( ) > hold Shift while selecting Restart. Select
Troubleshoot > Advanced options > UEFI Firmware settings.

2. From the firmware menu, navigate to Security > Secure Boot and select the option
to trust the "3rd Party CA".
3. Save changes and exit.

Microsoft continues to collaborate with Linux and IHV ecosystem partners to design
least privileged features to help you stay secure and opt-in trust for only the publishers
and components you trust.

Like most mobile devices, Arm-based devices, such as the Microsoft Surface RT device,
are designed to run only Windows 8.1. Therefore, Secure Boot can't be turned off, and
you can't load a different OS. Fortunately, there's a large market of ARM processor
devices designed to run other operating systems.

Trusted Boot
Trusted Boot takes over where Secure Boot ends. The bootloader verifies the digital
signature of the Windows kernel before loading it. The Windows kernel, in turn, verifies
every other component of the Windows startup process, including the boot drivers,
startup files, and ELAM. If a file has been modified, the bootloader detects the problem
and refuses to load the corrupted component. Often, Windows can automatically repair
the corrupted component, restoring the integrity of Windows and allowing the PC to
start normally.

Early Launch Anti-Malware


Because Secure Boot has protected the bootloader and Trusted Boot has protected the
Windows kernel, the next opportunity for malware to start is by infecting a non-
Microsoft boot driver. Traditional anti-malware apps don't start until after the boot
drivers have been loaded, giving a rootkit disguised as a driver the opportunity to work.

Early Launch Anti-Malware (ELAM) can load a Microsoft or non-Microsoft anti-malware


driver before all non-Microsoft boot drivers and applications, thus continuing the chain
of trust established by Secure Boot and Trusted Boot. Because the OS hasn't started yet,
and because Windows needs to boot as quickly as possible, ELAM has a simple task:
examine every boot driver and determine whether it is on the list of trusted drivers. If it's
not trusted, Windows doesn't load it.

An ELAM driver isn't a full-featured anti-malware solution; that loads later in the boot
process. Windows Defender (included with Windows) supports ELAM, as does several
non-Microsoft anti-malware apps.

Measured Boot
If a PC in your organization does become infected with a rootkit, you need to know
about it. Enterprise anti-malware apps can report malware infections to the IT
department, but that doesn't work with rootkits that hide their presence. In other words,
you can't trust the client to tell you whether it's healthy.

As a result, PCs infected with rootkits appear to be healthy, even with anti-malware
running. Infected PCs continue to connect to the enterprise network, giving the rootkit
access to vast amounts of confidential data and potentially allowing the rootkit to
spread across the internal network.

Measured Boot works with the TPM and non-Microsoft software in Windows. It allows a
trusted server on the network to verify the integrity of the Windows startup process.
Measured Boot uses the following process:
1. The PC's UEFI firmware stores in the TPM a hash of the firmware, bootloader, boot
drivers, and everything that is loaded before the anti-malware app.
2. At the end of the startup process, Windows starts the non-Microsoft remote
attestation client. The trusted attestation server sends the client a unique key.
3. The TPM uses the unique key to digitally sign the log recorded by the UEFI.
4. The client sends the log to the server, possibly with other security information.

Depending on the implementation and configuration, the server can now determine
whether the client is healthy. It can grant the client access to either a limited quarantine
network or to the full network.

Figure 2 illustrates the Measured Boot and remote attestation process.

Figure 2. Measured Boot proves the PC's health to a remote server:

Windows includes the application programming interfaces to support Measured Boot.


However, to take advanted of it, you need non-Microsoft tools to implement a remote
attestation client and trusted attestation server. For example, see the following tools
from Microsoft Research:

TPM Platform Crypto-Provider Toolkit


TSS.MSR

Measured Boot uses the power of UEFI, TPM, and Windows to give you a way to
confidently assess the trustworthiness of a client PC across the network.
Summary
Secure Boot, Trusted Boot, and Measured Boot create an architecture that is
fundamentally resistant to bootkits and rootkits. In Windows, these features have the
potential to eliminate kernel-level malware from your network. With Windows, you can
trust the integrity of your OS.
Secure Boot and Trusted Boot
Article • 08/11/2023 • Applies to: ✅ Windows 11

This article describes Secure Boot and Trusted Boot, security measures built into Windows
11.

Secure Boot and Trusted Boot help prevent malware and corrupted components from
loading when a Windows 11 device is starting. Secure Boot starts with initial boot-up
protection, and then Trusted Boot picks up the process. Together, Secure Boot and
Trusted Boot help to ensure your Windows 11 system boots up safely and securely.

Secure Boot
The first step in protecting the operating system is to ensure that it boots securely after
the initial hardware and firmware boot sequences have safely finished their early boot
sequences. Secure Boot makes a safe and trusted path from the Unified Extensible
Firmware Interface (UEFI) through the Windows kernel's Trusted Boot sequence.
Malware attacks on the Windows boot sequence are blocked by the signature-
enforcement handshakes throughout the boot sequence between the UEFI, bootloader,
kernel, and application environments.

As the PC begins the boot process, it first verifies that the firmware is digitally signed,
reducing the risk of firmware rootkits. Secure Boot then checks all code that runs before
the operating system and checks the OS bootloader's digital signature to ensure that it's
trusted by the Secure Boot policy and hasn't been tampered with.

Trusted Boot
Trusted Boot picks up the process that started with Secure Boot. The Windows
bootloader verifies the digital signature of the Windows kernel before loading it. The
Windows kernel, in turn, verifies every other component of the Windows startup
process, including boot drivers, startup files, and your anti-malware product's early-
launch anti-malware (ELAM) driver. If any of these files were tampered, the bootloader
detects the problem and refuses to load the corrupted component. Tampering or
malware attacks on the Windows boot sequence are blocked by the signature-
enforcement handshakes between the UEFI, bootloader, kernel, and application
environments.

Often, Windows can automatically repair the corrupted component, restoring the
integrity of Windows and allowing the Windows 11 device to start normally.
Windows edition and licensing requirements
The following table lists the Windows editions that support Secure Boot and Trusted
Boot:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Secure Boot and Trusted Boot license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

See also
Secure the Windows boot process
Measured Boot
Article11/17/2021

Platforms
Clients - Windows 8 Servers - Windows Server 2012

Description
As antimalware (AM) software has become better and better at detecting runtime
malware, attackers are also becoming better at creating rootkits that can hide from
detection. Detecting malware that starts early in the boot cycle is a challenge that most
AM vendors address diligently. Typically, they create system hacks that are not
supported by the host operating system and can actually result in placing the computer
in an unstable state. Up to this point, Windows has not provided a good way for AM to
detect and resolve these early boot threats. Windows 8 introduces a new feature called
Measured Boot, which measures each component, from firmware up through the boot
start drivers, stores those measurements in the Trusted Platform Module (TPM) on the
machine, and then makes available a log that can be tested remotely to verify the boot
state of the client.

Manifestation
The Measured Boot feature provides AM software with a trusted (resistant to spoofing
and tampering) log of all boot components that started before AM software. AM
software can use the log to determine whether components that ran before it are
trustworthy or if they are infected with malware. The AM software on the local machine
can send the log to a remote sever for evaluation. The remote server may initiate
remediation actions either by interacting with software on the client or through out-of-
band mechanisms, as appropriate.

Mitigation
In enterprise scenarios, the system administrator has control of how Measured Boot info
is used. In end-user scenarios for example, online banking), the consumer must opt in to
use Measured Boot for the specific service.
Solution
A white paper is being prepared that details the APIs and function calls that must be
made for various Measured Boot scenarios.
Control the health of Windows devices
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This article details an end-to-end solution that helps you protect high-value assets by
enforcing, controlling, and reporting the health of Windows devices.

Introduction
For Bring Your Own Device (BYOD) scenarios, employees bring commercially available
devices to access both work-related resources and their personal data. Users want to
use the device of their choice to access the organization's applications, data, and
resources not only from the internal network but also from anywhere. This phenomenon
is also known as the consumerization of IT.

Users want to have the best productivity experience when accessing corporate
applications and working on organization data from their devices. That means they
don't tolerate being prompted to enter their work credentials each time they access an
application or a file server. From a security perspective, it also means that users
manipulate corporate credentials and corporate data on unmanaged devices.

With the increased use of BYOD, there will be more unmanaged and potentially
unhealthy systems accessing corporate services, internal resources, and cloud apps.

Even managed devices can be compromised and become harmful. Organizations need
to detect when security has been breached and react as early as possible in order to
protect high-value assets.

As Microsoft moves forward, security investments are increasingly focused on security


preventive defenses and also on detection and response capabilities.

Windows is an important component of an end-to-end security solution that focuses


not only on the implementation of security preventive defenses, but adds device health
attestation capabilities to the overall security strategy.

Description of a robust end-to-end security


solution
Today's computing threat landscape is increasing at a speed never encountered before.
The sophistication of criminal attacks is growing, and there's no doubt that malware
now targets both consumers and professionals in all industries.
During recent years, one particular category of threat has become prevalent: advanced
persistent threats (APTs). The term APT is commonly used to describe any attack that
seems to target individual organizations on an on-going basis. In fact, this type of attack
typically involves determined adversaries who may use any methods or techniques
necessary.

With the BYOD phenomena, a poorly maintained device represents a target of choice.
For an attacker, it's an easy way to breach the security network perimeter, gain access to,
and then steal high-value assets.

The attackers target individuals, not specifically because of who they are, but because of
who they work for. An infected device brings malware into an organization, even if the
organization has hardened the perimeter of networks or has invested in its defensive
posture. A defensive strategy isn't sufficient against these threats.

A different approach
Rather than the traditional focus on the prevention of compromise, an effective security
strategy assumes that determined adversaries will successfully breach any defenses. It
means that it's necessary to shift focus away from preventative security controls to
detection of, and response to, security issues. The implementation of the risk
management strategy, therefore, balances investment in prevention, detection, and
response.

Because mobile devices are increasingly being used to access corporate information,
some way to evaluate device security or health is required. This section describes how to
provision device health assessment in such a way that high-value assets can be
protected from unhealthy devices.

Devices that are used to access corporate resources must be trusted. An efficient end-
to-end security approach is able to evaluate device health and use the current security
state when granting access to a high-value asset.

A robust design needs to establish the user's identity, strengthen the authentication
method if needed, and learn behavior like the network location the user regularly
connects from. Also, a modern approach must be able to release sensitive content only
if user devices are determined to be healthy and secure.
The following figure shows a solution built to assess device health from the cloud. The
device authenticates the user through a connection to an identity provider in the cloud.
If the managed asset contains highly confidential information, the conditional access
engine of the identity provider may elect to verify the security compliance of the mobile
device before access is granted. The user's device is able to prove its health status that
can be sent at any time or when mobile device management (MDM) requests it.

Windows devices can be protected from low-level rootkits and bootkits by using low-
level hardware technologies such as Unified Extensible Firmware Interface (UEFI) Secure
Boot.

Secure Boot is a firmware validation process that helps prevent rootkit attacks; it's part
of the UEFI specification. The intent of UEFI is to define a standard way for the operating
system to communicate with modern hardware, which can perform faster and with more
efficient input/output (I/O) functions than older, software interrupt-driven BIOS systems.

A device health attestation module can communicate measured boot data that is
protected by a Trusted Platform Module (TPM) to a remote service. After the device
successfully boots, boot process measurement data is sent to a trusted cloud service
(Health Attestation Service) using a more secure and tamper-resistant communication
channel.

Remote health attestation service performs a series of checks on the measurements. It


validates security related data points, including boot state (Secure Boot, Debug Mode,
and so on), and the state of components that manage security (BitLocker, Device Guard,
and so on). It then conveys the health state of the device by sending a health encrypted
blob back to the device.

An MDM solution typically applies configuration policies and deploys software to


devices. MDM defines the security baseline and knows the level of compliance of the
device with regular checks to see what software is installed and what configuration is
enforced, and determining the health status of the device.
An MDM solution asks the device to send device health information and forward the
health encrypted blob to the remote health attestation service. The remote health
attestation service verifies device health data, checks that MDM is communicating to the
same device, and then issues a device health report back to the MDM solution.

An MDM solution evaluates the health assertions and, depending on the health rules
belonging to the organization, can decide if the device is healthy. If the device is healthy
and compliant, MDM passes that information to the identity provider so the
organization's access control policy can be invoked to grant access.

Access to content is then authorized to the appropriate level of trust for whatever the
health status and other conditional elements indicate.

Depending on the requirements and the sensitivity of the managed asset, device health
status can be combined with user identity information when processing an access
request. Access to content is then authorized to the appropriate level of trust. The
Conditional Access engine may be structured to allow more verification as needed by
the sensitivity of the managed asset. For example, if access to high-value data is
requested, further security authentication may need to be established by querying the
user to answer a phone call before access is granted.

Microsoft's security investments in Windows


In Windows, there are three pillars of investments:

Secure identities. Microsoft is part of the FIDO alliance that aims to provide an
interoperable method of secure authentication by moving away from the use of
passwords for authentication, both on the local system and for services like on-
premises resources and cloud resources.
Information protection. Microsoft is making investments to allow organizations to
have better control over who has access to important data and what they can do
with that data. With Windows, organizations can take advantage of policies that
specify which applications are considered to be corporate applications and can be
trusted to access secure data.
Threat resistance. Microsoft is helping organizations to better secure enterprise
assets against the threats of malware and attacks by using security defenses
relying on hardware.

Protect, control, and report on the security status of


Windows-based devices
This section is an overview that describes different parts of the end-to-end security
solution that helps protect high-value assets and information from attackers and
malware.

Number Part of the Description


solution

1 Windows- The first time a Windows-based device is powered on, the out-of-
based device box experience (OOBE) screen is displayed. During setup, the device
can be automatically registered into Azure Active Directory (AD) and
enrolled in MDM.
A Windows-based device with TPM can report health status at any
time by using the Health Attestation Service available with all
supported editions of Windows.

2 Identity Azure AD contains users, registered devices, and registered


provider application of organization's tenant. A device always belongs to a
user and a user can have multiple devices. A device is represented
as an object with different attributes like the compliance status of
the device. A trusted MDM can update the compliance status.
Azure AD is more than a repository. Azure AD is able to authenticate
users and devices and can also authorize access to managed
resources. Azure AD has a conditional access control engine that
uses the identity of the user, the location of the device and also the
compliance status of the device when making a trusted access
decision.

3 Mobile device Windows has MDM support that enables the device to be managed
management out-of-box without deploying any agent.
MDM can be Microsoft Intune or any third-party MDM solution that
is compatible with Windows.

4 Remote health The Health Attestation Service is a trusted cloud service operated by
attestation Microsoft that performs a series of health checks and reports to
MDM what Windows security features are enabled on the device.
Security verification includes boot state (WinPE, Safe Mode,
Number Part of the Description
solution

Debug/test modes) and components that manage security and


integrity of runtime operations (BitLocker, Device Guard).

5 Enterprise Enterprise managed asset is the resource to protect.


managed asset For example, the asset can be Office 365, other cloud apps, on-
premises web resources published by Azure AD, or even VPN access.

The combination of Windows-based devices, identity provider, MDM, and remote health
attestation creates a robust end-to-end-solution that provides validation of health and
compliance of devices that access high-value assets.

Protect devices and enterprise credentials


against threats
This section describes what Windows offers in terms of security defenses and what
control can be measured and reported to.

Windows hardware-based security defenses


The most aggressive forms of malware try to insert themselves into the boot process as
early as possible so that they can take control of the operating system early and prevent
protection mechanisms and antimalware software from working. This type of malicious
code is often called a rootkit or bootkit. The best way to avoid having to deal with low-
level malware is to secure the boot process so that the device is protected from the very
start. Windows supports multiple layers of boot protection. Some of these features are
available only if specific types of hardware are installed. For more information, see the
Hardware requirements section.
Windows supports features to help prevent sophisticated low-level malware like rootkits
and bootkits from loading during the startup process:

Trusted Platform Module. A Trusted Platform Module (TPM) is a hardware


component that provides unique security features.

Windows uses security characteristics of a TPM for measuring boot integrity


sequence (and based on that, unlocking automatically BitLocker protected drives),
for protecting credentials or for health attestation.

A TPM implements controls that meet the specification described by the Trusted
Computing Group (TCG). At the time of this writing, there are two versions of TPM
specification produced by TCG that aren't compatible with each other:
The first TPM specification, version 1.2, was published in February 2005 by the
TCG and standardized under ISO / IEC 11889 standard.
The latest TPM specification, referred to as TPM 2.0, was released in April 2014
and has been approved by the ISO/IEC Joint Technical Committee (JTC) as
ISO/IEC 11889:2015.
Windows uses the TPM for cryptographic calculations as part of health attestation
and to protect the keys for BitLocker, Windows Hello, virtual smart cards, and other
public key certificates. For more information, see TPM requirements in Windows.

Windows recognizes versions 1.2 and 2.0 TPM specifications produced by the TCG.
For the most recent and modern security features, Windows supports only TPM
2.0.

TPM 2.0 provides a major revision to the capabilities over TPM 1.2:

Update crypto strength to meet modern security needs


Support for SHA-256 for PCRs
Support for HMAC command

Cryptographic algorithms flexibility to support government needs


TPM 1.2 is severely restricted in terms of what algorithms it can support
TPM 2.0 can support arbitrary algorithms with minor updates to the TCG
specification documents

Consistency across implementations


The TPM 1.2 specification allows vendors wide latitude when choosing
implementation details
TPM 2.0 standardizes much of this behavior

Secure Boot. Devices with UEFI firmware can be configured to load only trusted
operating system bootloaders. Secure Boot doesn't require a TPM.

The most basic protection is the Secure Boot feature, which is a standard part of
the UEFI 2.2+ architecture. On a PC with conventional BIOS, anyone who can take
control of the boot process can boot by using an alternative OS loader, and
potentially gain access to system resources. When Secure Boot is enabled, you can
boot using only an OS loader that's signed using a certificate stored in the UEFI
Secure Boot DB. Naturally, the Microsoft certificate used to digitally sign the
Windows OS loaders are in that store, which allows UEFI to validate the certificate
as part of its security policy. Secure Boot must be enabled by default on all
computers that are certified for Windows under the Windows Hardware
Compatibility Program.

Secure Boot is a UEFI firmware-based feature, which allows for the signing and
verification of critical boot files and drivers at boot time. Secure Boot checks
signature values of the Windows Boot Manager, BCD store, Windows OS loader
file, and other boot critical DLLs at boot time before the system is allowed to fully
boot into a usable operating system by using policies that are defined by the OEM
at build time. Secure Boot prevents many types of boot-based rootkit, malware,
and other security-related attacks against the Windows platform. Secure Boot
protects the operating system boot process whether booting from local hard disk,
USB, PXE, or DVD, or into full Windows or Windows Recovery Environment (RE).
Secure Boot protects the boot environment of a Windows installation by verifying
the signatures of the critical boot components to confirm malicious activity didn't
compromise them. Secure Boot protection ends after the Windows kernel file
(ntoskrnl.exe) has been loaded.

7 Note

Secure Boot protects the platform until the Windows kernel is loaded. Then
protections like ELAM take over.

Secure Boot configuration policy. Extends Secure Boot functionality to critical


Windows configuration.

Examples of protected configuration information include protecting Disable


Execute bit (NX option) or ensuring that the test signing policy (code integrity)
can't be enabled. This protective action ensures that the binaries and configuration
of the computer can be trusted after the boot process has completed. Secure Boot
configuration policy does this protective action with UEFI policy. These signatures
for these policies are signed in the same way that operating system binaries are
signed for use with Secure Boot.

The Secure Boot configuration policy must be signed by a private key that
corresponds to one of the public keys stored in the Key Exchange Key (KEK) list.
The Microsoft Certificate Authority (CA) will be present in the KEK list of all
Windows certified Secure Boot systems. By default, a policy signed by the
Microsoft KEK shall be work on all Secure Boot systems. BootMgr must verify the
signature against the KEK list before applying a signed policy. With Windows, the
default Secure Boot configuration policy is embedded in bootmgr.

The bootloader verifies the digital signature of the Windows kernel before loading
it. The Windows kernel, in turn, verifies every other component of the Windows
startup process, including the boot drivers, startup files, and the ELAM component.
This step is important and protects the rest of the boot process by verifying that all
Windows boot components have integrity and can be trusted.

Early Launch Antimalware (ELAM). ELAM tests all drivers before they load and
prevents unapproved drivers from loading.
Traditional antimalware apps don't start until after the boot drivers have been
loaded, which gives a rootkit that is disguised as a driver the opportunity to work.
ELAM is a Windows mechanism introduced in a previous version of Windows that
allows antimalware software to run early in the boot sequence. Thus, the
antimalware component is the first third-party component to run and control the
initialization of other boot drivers until the Windows operating system is
operational. When the system is started with a complete runtime environment
(network access, storage, and so on), then a full-featured antimalware is loaded.

ELAM can load a Microsoft or non-Microsoft antimalware driver before all non-
Microsoft boot drivers and applications, thus continuing the chain of trust
established by Secure Boot and Trusted Boot. Because the operating system hasn't
started yet, and because Windows needs to boot as quickly as possible, ELAM has
a simple task: Examine every boot driver and determine whether it is on the list of
trusted drivers. If it's not trusted, Windows won't load it.

7 Note

Windows Defender, Microsoft's antimalware included by default in Windows,


supports ELAM; it can be replaced with a third-party antimalware compatible
solution. The name of the Windows Defender ELAM driver is WdBoot.sys.
Windows Defender uses its ELAM driver to roll back any malicious changes
made to the Windows Defender driver at the next reboot. This prevents kernel
mode malware making lasting changes to Windows Defender's mini-filter
driver before shutdown or reboot.

The ELAM signed driver is loaded before any other third-party drivers or
applications, which allows the antimalware software to detect and block any
attempts to tamper with the boot process by trying to load unsigned or untrusted
code.

The ELAM driver is a small driver with a small policy database that has a narrow
scope, focused on drivers that are loaded early at system launch. The policy
database is stored in a registry hive that is also measured to the TPM, to record the
operational parameters of the ELAM driver. An ELAM driver must be signed by
Microsoft and the associated certificate must contain the complementary EKU
(1.3.6.1.4.1.311.61.4.1).

Virtualization-based security (Hyper-V + Secure Kernel). Virtualization-based


security is a new enforced security boundary that allows you to protect critical
parts of Windows.
Virtualization-based security isolates sensitive code like Kernel Mode Code
Integrity or sensitive corporate domain credentials from the rest of the Windows
operating system. For more information, see Virtualization-based security section.

Hypervisor-protected Code Integrity (HVCI). Hypervisor-protected Code Integrity


is a feature of Device Guard that ensures only drivers, executables, and DLLs that
comply with the Device Guard Code Integrity policy are allowed to run.

When enabled and configured, Windows can start the Hyper-V virtualization-based
security services. HVCI helps protect the system core (kernel), privileged drivers,
and system defenses, like antimalware solutions, by preventing malware from
running early in the boot process, or after startup.

HVCI uses virtualization-based security to isolate Code Integrity, the only way
kernel memory can become executable is through a Code Integrity verification.
This dependency on verification means that kernel memory pages can never be
Writable and Executable (W+X) and executable code can't be directly modified.

7 Note

Device Guard devices that run Kernel Mode Code Integrity with virtualization-
based security must have compatible drivers. For additional information,
please read the Driver compatibility with Device Guard in Windows blog
post.

The Device Guard Code Integrity feature lets organizations control what code is
trusted to run into the Windows kernel and what applications are approved to run
in user mode. It's configurable by using a policy. Device Guard Code Integrity
policy is a binary file that Microsoft recommends you sign. The signing of the Code
Integrity policy aids in the protection against a malicious user with Administrator
privileges trying to modify or remove the current Code Integrity policy.

Credential Guard. Credential Guard protects corporate credentials with hardware-


based credential isolation.

In Windows, Credential Guard aims to protect domain corporate credentials from


theft and reuse by malware. With Credential Guard, Windows implemented an
architectural change that fundamentally prevents the current forms of the pass-
the-hash (PtH) attack.

This attack-free state is accomplished by using Hyper-V and the new virtualization-
based security feature to create a protected container where trusted code and
secrets are isolated from the Windows kernel. This accomplishment means that
even if the Windows kernel is compromised, an attacker has no way to read and
extract the data required to initiate a PtH attack. Credential Guard prevents this
unauthorized access because the memory where secrets are stored is no longer
accessible from the regular OS, even in kernel mode - the hypervisor controls who
can access the memory.

Health attestation. The device's firmware logs the boot process, and Windows can
send it to a trusted server that can check and assess the device's health.

Windows takes measurements of the UEFI firmware and each of the Windows and
antimalware components are made as they load during the boot process.
Additionally, they're taken and measured sequentially, not all at once. When these
measurements are complete, their values are digitally signed and stored securely in
the TPM and can't be changed unless the system is reset.

For more information, see Secured Boot and Measured Boot: Hardening Early Boot
Components Against Malware.

During each subsequent boot, the same components are measured, which allows
comparison of the measurements against an expected baseline. For more security,
the values measured by the TPM can be signed and transmitted to a remote
server, which can then perform the comparison. This process, called remote device
health attestation, allows the server to verify health status of the Windows device.

Although Secure Boot is a proactive form of protection, health attestation is a


reactive form of boot protection. Health attestation ships disabled in Windows and
is enabled by an antimalware or an MDM vendor. Unlike Secure Boot, health
attestation won't stop the boot process and enter remediation when a
measurement doesn't work. But with conditional access control, health attestation
will help to prevent access to high-value assets.

Virtualization-based security
Virtualization-based security provides a new trust boundary for Windows and uses
Hyper-V hypervisor technology to enhance platform security. Virtualization-based
security provides a secure execution environment to run specific Windows trusted code
(trustlet) and to protect sensitive data.

Virtualization-based security helps to protect against a compromised kernel or a


malicious user with Administrator privileges. Virtualization-based security isn't trying to
protect against a physical attacker.

The following Windows services are protected with virtualization-based security:


Credential Guard (LSA Credential Isolation): prevents pass-the-hash attacks and
enterprise credential theft that happens by reading and dumping the content of
lsass memory
Device Guard (Hyper-V Code Integrity): Device Guard uses the new virtualization-
based security in Windows to isolate the Code Integrity service from the Windows
kernel itself, which lets the service use signatures defined by your enterprise-
controlled policy to help determine what is trustworthy. In effect, the Code
Integrity service runs alongside the kernel in a Windows hypervisor-protected
container.
Other isolated services: for example, on Windows Server 2016, there's the vTPM
feature that allows you to have encrypted virtual machines (VMs) on servers.

7 Note

Virtualization-based security is only available with Enterprise edition. Virtualization-


based security requires devices with UEFI (2.3.1 or higher) with Secure Boot
enabled, x64 processor with Virtualization Extensions and SLAT enabled. IOMMU,
TPM 2.0. and support for Secure Memory overwritten are optional, but
recommended.

The schema below is a high-level view of Windows with virtualization-based security.

Credential Guard
In Windows, when Credential Guard is enabled, Local Security Authority Subsystem
Service (lsass.exe) runs a sensitive code in an Isolated user mode to help protect data
from malware that may be running in the normal user mode. This code execution helps
ensure that protected data isn't stolen and reused on remote machines, which mitigates
many PtH-style attacks.

Credential Guard helps protect credentials by encrypting them with either a per-boot or
persistent key:

The per-boot key is used for any in-memory credentials that don't require
persistence. An example of such a credential would be a ticket-granting ticket
(TGT) session key. This key is negotiated with a Key Distribution Center (KDC) every
time authentication occurs and is protected with a per-boot key.
The persistent key, or some derivative, is used to help protect items that are
stored and reloaded after a reboot. Such protection is intended for long-term
storage, and must be protected with a consistent key. Credential Guard is activated
by a registry key and then enabled by using a UEFI variable. This activation is done
to protect against remote modifications of the configuration. The use of a UEFI
variable implies that physical access is required to change the configuration. When
lsass.exe detects that credential isolation is enabled, it then spawns LsaIso.exe as
an isolated process, which ensures that it runs within isolated user mode. The
startup of LsaIso.exe is performed before initialization of a security support
provider, which ensures that the secure mode support routines are ready before
any authentication begins.

Device Guard
Device Guard is a feature of Windows Enterprise that allows organizations to lock down
a device to help protect it from running untrusted software. In this configuration, the
only applications allowed to run are those applications that are trusted by the
organization.

The trust decision to execute code is performed by using Hyper-V Code Integrity, which
runs in virtualization-based security, a Hyper-V protected container that runs alongside
regular Windows.

Hyper-V Code Integrity is a feature that validates the integrity of a driver or system file
each time it's loaded into memory. Code integrity detects whether an unsigned driver or
system file is being loaded into the kernel, or whether a system file has been modified
by malicious software that is being run by a user account with Administrator privileges.
On x64-based versions of Windows, kernel-mode drivers must be digitally signed.
7 Note

Independently of activation of Device Guard Policy, Windows drivers must be


signed by Microsoft, and more specifically, by the WHQL (Windows Hardware
Quality Labs) portal. Additionally, starting in October 2015, the WHQL portal will
only accept driver submissions, including both kernel and user mode driver
submissions, that have a valid Extended Validation ("EV") Code Signing Certificate.

With Device Guard, organizations are now able to define their own Code Integrity policy
for use on x64 systems running Windows Enterprise. Organizations have the ability to
configure the policy that determines what is trusted to run. These include drivers and
system files, and traditional desktop applications and scripts. The system is then locked
down to only run applications that the organization trusts.

Device Guard is a built-in feature of Windows Enterprise that prevents the execution of
unwanted code and applications. Device Guard can be configured using two rule actions
- allow and deny:

Allow limits execution of applications to an allowed list of code or trusted


publisher and blocks everything else.
Deny completes the allow trusted publisher approach by blocking the execution of
a specific application.

At the time of this writing, and according to Microsoft's latest research, more than 90
percent of malware is unsigned completely. So implementing a basic Device Guard
policy can simply and effectively help block malware. In fact, Device Guard has the
potential to go further, and can also help block signed malware.

Device Guard needs to be planned and configured to be truly effective. It isn't just a
protection that is enabled or disabled. Device Guard is a combination of hardware
security features and software security features that, when configured together, can lock
down a computer to help ensure the most secure and resistant system possible.

There are three different parts that make up the Device Guard solution in Windows:

The first part is a base set of hardware security features introduced with the
previous version of Windows. TPM for hardware cryptographic operations and UEFI
with modern firmware, along with Secure Boot, allows you to control what the
device is running when the systems start.
After the hardware security feature, there's the code integrity engine. In Windows,
Code Integrity is now fully configurable and now resides in Isolated user mode, a
part of the memory that is protected by virtualization-based security.
The last part of Device Guard is manageability. Code Integrity configuration is
exposed through specific Group Policy Objects, PowerShell cmdlets, and MDM
configuration service providers (CSPs).

For more information on how to deploy Device Guard in an enterprise, see the Device
Guard deployment guide.

Device Guard scenarios


As previously described, Device Guard is a powerful way to lock down systems. Device
Guard isn't intended to be used broadly and it may not always be applicable, but there
are some high-interest scenarios.

Device Guard is useful and applicable on fixed workloads systems like cash registers,
kiosk machines, Secure Admin Workstations (SAWs), or well managed desktops. Device
Guard is highly relevant on systems that have a well-defined software that are expected
to run and don't change too frequently. It could also help protect Information Workers
(IWs) beyond just SAWs, as long as what they need to run is known and the set of
applications isn't going to change on a daily basis.

SAWs are computers that are built to help significantly reduce the risk of compromise
from malware, phishing attacks, bogus websites, and PtH attacks, among other security
risks. Although SAWs can't be considered a "silver bullet" security solution to these
attacks, these types of clients are helpful as part of a layered, defense-in-depth
approach to security.

To protect high-value assets, SAWs are used to make secure connections to those assets.

Similarly, on corporate fully managed workstations, where applications are installed by


using a distribution tool like Microsoft Configuration Manager, Intune, or any third-party
device management, then Device Guard is applicable. In that type of scenario, the
organization has a good idea of the software that an average user is running.

It could be challenging to use Device Guard on corporate, lightly managed workstations


where the user is typically allowed to install software on their own. When an
organization offers great flexibility, it's difficult to run Device Guard in enforcement
mode. Nevertheless, Device Guard can be run in Audit mode, and in that case, the event
log will contain a record of any binaries that violated the Device Guard policy. When
Device Guard is used in Audit mode, organizations can get rich data about drivers and
applications that users install and run.

Before you can benefit from the protection included in Device Guard, Code Integrity
policy must be created by using tools provided by Microsoft, but the policy can be
deployed with common management tools, like Group Policy. The Code Integrity policy
is a binary-encoded XML document that includes configuration settings for both the
User and Kernel-modes of Windows, along with restrictions on Windows script hosts.
Device Guard Code Integrity policy restricts what code can run on a device.

7 Note

Device Guard policy can be signed in Windows, which adds additional protection
against administrative users changing or removing this policy.

Signed Device Guard policy offers stronger protection against a malicious local
administrator trying to defeat Device Guard.

When the policy is signed, the GUID of the policy is stored in a UEFI pre-OS secure
variable that offers tampering protection. The only way to update the Device Guard
policy later is to provide a new version of the policy signed by the same signer or from a
signer specified as part of the Device Guard policy into the UpdateSigner section.

The importance of signing applications


On computers with Device Guard, Microsoft proposes to move from a world where
unsigned apps can be run without restriction to a world where only signed and trusted
code is allowed to run on Windows.

With Windows, organizations will make line-of-business (LOB) apps available to


members of the organization through the Microsoft Store infrastructure. More
specifically, LOB apps will be available in a private store within the public Microsoft
Store. Microsoft Store signs and distributes Universal Windows apps and Classic
Windows apps. All apps downloaded from the Microsoft Store are signed.

In organizations today, many LOB applications are unsigned. Code signing is frequently
viewed as a tough problem to solve for various reasons, like the lack of code signing
expertise. Even if code signing is a best practice, many internal applications aren't
signed.

Windows includes tools that allow IT pros to take applications that have been already
packaged and run them through a process to create more signatures that can be
distributed along with existing applications.

Why are antimalware and device management solutions


still necessary?
Although allowlist mechanisms are efficient at ensuring that only trusted applications
can be run, they can't prevent the compromise of a trusted (but vulnerable) application
by malicious content designed to exploit a known vulnerability. Device Guard doesn't
protect against user mode malicious code run by exploiting vulnerabilities.

Vulnerabilities are weaknesses in software that could allow an attacker to compromise


the integrity, availability, or confidentiality of the device. Some of the worst
vulnerabilities allow attackers to exploit the compromised device by causing it to run
malicious code without the user's knowledge.

It's common to see attackers distributing specially crafted content in an attempt to


exploit known vulnerabilities in user mode software like web browsers (and their plug-
ins), Java virtual machines, PDF readers, or document editors. As of today, 90 percent of
discovered vulnerabilities affect user mode applications compared to the operating
system and kernel mode drivers that host them.

To combat these threats, patching is the single most effective control, with antimalware
software forming complementary layers of defense.

Most application software has no facility for updating itself, so even if the software
vendor publishes an update that fixes the vulnerability, the user may not know that the
update is available or how to obtain it, and therefore remains vulnerable to attack.
Organizations still need to manage devices and to patch vulnerabilities.

MDM solutions are becoming prevalent as a light-weight device management


technology. Windows extends the management capabilities that have become available
for MDMs. One key feature Microsoft has added to Windows is the ability for MDMs to
acquire a strong statement of device health from managed and registered devices.

Device health attestation


Device health attestation uses the TPM to provide cryptographically strong and
verifiable measurements of the chain of software used to boot the device.

For Windows-based devices, Microsoft introduces a new public API that will allow MDM
software to access a remote attestation service called Windows Health Attestation
Service. A health attestation result, in addition with other elements, can be used to allow
or deny access to networks, apps, or services, based on whether devices prove to be
healthy.

For more information on device health attestation, see the Detect an unhealthy
Windows-based device section.
Windows edition and licensing requirements
The following table lists the Windows editions that support Device health attestation
service:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Device health attestation service license entitlements are granted by the following
licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Hardware requirements
The following table details the hardware requirements for both virtualization-based
security services and the health attestation feature. For more information, see Minimum
hardware requirements.

Hardware Motivation

UEFI 2.3.1 or Required to support UEFI Secure Boot. UEFI Secure Boot ensures that the device
later firmware boots only authorized code. Additionally, Boot Integrity (Platform Secure Boot)
with Secure must be supported following the requirements in Hardware Compatibility
Boot enabled Specification for Systems for Windows under the subsection:
"System.Fundamentals.Firmware.CS.UEFISecureBoot.ConnectedStandby"

Virtualization Required to support virtualization-based security. Note: Device Guard can be


extensions, enabled without using virtualization-based security.
such as Intel
VT-x, AMD-V,
and SLAT must
be enabled

X64 processor Required to support virtualization-based security that uses Windows Hypervisor.
Hyper-V is supported only on x64 processor (and not on x86). Direct Memory
Access (DMA) protection can be enabled to provide extra memory protection
but requires processors to include DMA protection technologies.

IOMMU, such Support for the IOMMU in Windows enhances system resiliency against DMA
as Intel VT-d, attacks.
AMD-Vi
Hardware Motivation

Trusted Required to support health attestation and necessary for other key protections
Platform for virtualization-based security. TPM 2.0 is supported. Support for TPM 1.2 was
Module (TPM) added beginning in Windows 10, version 1607 (RS1)

This section presented information about several closely related controls in Windows .
The multi-layer defenses and in-depth approach help to eradicate low-level malware
during boot sequence. Virtualization-based security is a fundamental operating system
architecture change that adds a new security boundary. Device Guard and Credential
Guard respectively help to block untrusted code and protect corporate domain
credentials from theft and reuse. This section also briefly discussed the importance of
managing devices and patching vulnerabilities. All these technologies can be used to
harden and lock down devices while limiting the risk of attackers compromising them.

Detect an unhealthy Windows-based device


As of today, many organizations only consider devices to be compliant with company
policy after they've passed various checks that show, for example, that the operating
system is in the correct state, properly configured, and has security protection enabled.
Unfortunately, with today's systems, this form of reporting isn't entirely reliable because
malware can spoof a software statement about system health. A rootkit, or a similar low-
level exploit, can report a false healthy state to traditional compliance tools.

The biggest challenge with rootkits is that they can be undetectable to the client.
Because they start before antimalware, and they have system-level privileges, they can
completely disguise themselves while continuing to access system resources. As a result,
traditional computers infected with rootkits appear to be healthy, even with antimalware
running.

As previously discussed, the health attestation feature of Windows uses the TPM
hardware component to securely record a measurement of every boot-related
component, including firmware, Windows kernel, and even early boot drivers. Because
health attestation uses the hardware-based security capabilities of TPM, the log of all
boot measured components remains out of the reach of any malware.

After the devices attest a trusted boot state, they can prove that they aren't running
low-level malware that could spoof later compliance checks. TPM-based health
attestation provides a reliable anchor of trust for assets that contain high-value data.

What is the concept of device health?


To understand the concept of device health, it's important to know traditional measures
that IT pros have taken to prevent the breach of malware. Malware control technologies
are highly focused on the prevention of installation and distribution.

However, the use of traditional malware prevention technologies like antimalware or


patching solutions brings a new set of issues for IT pros: the ability to monitor and
control the compliance of devices accessing organization's resources.

The definition of device compliance will vary based on an organization's installed


antimalware, device configuration settings, patch management baseline, and other
security requirements. But health of the device is part of the overall device compliance
policy.

The health of the device isn't binary and depends on the organization's security
implementation. The Health Attestation Service provides information back to the MDM
on which security features are enabled during the boot of the device by using
trustworthy hardware TPM.

But health attestation only provides information, which is why an MDM solution is
needed to take and enforce a decision.

Remote device health attestation


In Windows, health attestation refers to a feature where Measured Boot data generated
during the boot process is sent to a remote device health attestation service operated
by Microsoft.

This approach is the most secure one available for Windows-based devices to detect
when security defenses are down. During the boot process, the TCG log and PCRs'
values are sent to a remote Microsoft cloud service. Logs are then checked by the
Health Attestation Service to determine what changes have occurred on the device.

A relying party like an MDM can inspect the report generated by the remote health
attestation service.

7 Note

To use the health attestation feature of Windows, the device must be equipped
with a discrete or firmware TPM. There is no restriction on any particular edition of
Windows.
Windows supports health attestation scenarios by allowing applications access to the
underlying health attestation configuration service provider (CSP) so that applications
can request a health attestation token. The measurement of the boot sequence can be
checked at any time locally by an antimalware or an MDM agent.

Remote device health attestation combined with an MDM provides a hardware-rooted


method for reporting the current security status and detecting any changes, without
having to trust the software running on the system.

In the case where malicious code is running on the device, the use of a remote server is
required. If a rootkit is present on the device, the antimalware is no longer reliable, and
its behavior can be hijacked by a malicious code running early in the startup sequence.
This reason is what makes it important to use Secure Boot and Device Guard, to control
which code is loaded during the boot sequence.

The antimalware software can search to determine whether the boot sequence contains
any signs of malware, such as a rootkit. It can also send the TCG log and the PCRs to a
remote health attestation server to provide a separation between the measurement
component and the verification component.

Health attestation logs the measurements in various TPM Platform Configuration


Registers (PCRs) and TCG logs during the boot process.

When you start a device equipped with TPM, a measurement of different components is
performed. These components include firmware, UEFI drivers, CPU microcode, and also
all the Windows drivers whose type is Boot Start. The raw measurements are stored in
the TPM PCR registers while the details of all events (executable path, authority
certification, and so on) are available in the TCG log.

The health attestation process works as follows:

1. Hardware boot components are measured.


2. Operating system boot components are measured.
3. If Device Guard is enabled, current Device Guard policy is measured.
4. Windows kernel is measured.
5. Antivirus software is started as the first kernel mode driver.
6. Boot start drivers are measured.
7. MDM server through the MDM agent issues a health check command by using the
Health Attestation CSP.
8. Boot measurements are validated by the Health Attestation Service

7 Note

By default, the last 100 system boot logs and all associated resume logs are
archived in the %SystemRoot%\logs\measuredboot folder. The number of retained
logs may be set with the registry REG_DWORD value PlatformLogRetention under
the HKLM\SYSTEM\CurrentControlSet\Services\TPM key. A value of 0 will turn off
log archival and a value of 0xffffffff will keep all logs.

The following process describes how health boot measurements are sent to the health
attestation service:

1. The client (a Windows-based device with TPM) initiates the request with the
remote device health attestation service. Because the health attestation server is
expected to be a Microsoft cloud service, the URI is already pre-provisioned in the
client.

2. The client then sends the TCG log, the AIK signed data (PCR values, boot counter)
and the AIK certificate information.

3. The remote device heath attestation service then:


a. Verifies that the AIK certificate is issued by a known and trusted CA and the
certificate is valid and not revoked.
b. Verifies that the signature on the PCR quotes is correct and consistent with the
TCG log value.
c. Parses the properties in the TCG log.
d. Issues the device health token that contains the health information, the AIK
information, and the boot counter information. The health token also contains
valid issuance time. The device health token is encrypted and signed, that
means that the information is protected and only accessible to issuing health
attestation service.

4. The client stores the health encrypted blob in its local store. The device health
token contains device health status, a device ID (the Windows AIK), and the boot
counter.
Device health attestation components
The device health attestation solution involves different components that are TPM,
Health Attestation CSP, and the Windows Health Attestation Service. Those components
are described in this section.

Trusted Platform Module


This section describes how PCRs (that contain system configuration data), endorsement
key (EK) (that act as an identity card for TPM), SRK (that protect keys) and AIKs (that can
report platform state) are used for health attestation reporting.

In a simplified manner, the TPM is a passive component with limited resources. It can
calculate random numbers, RSA keys, decrypt short data, store hashes taken when
booting the device.

A TPM incorporates in a single component:

An RSA 2048-bit key generator


A random number generator
Nonvolatile memory for storing EK, SRK, and AIK keys
A cryptographic engine to encrypt, decrypt, and sign
Volatile memory for storing the PCRs and RSA keys
Endorsement key
The TPM has an embedded unique cryptographic key called the endorsement key. The
TPM endorsement key is a pair of asymmetric keys (RSA size 2048 bits).

The endorsement key public key is used for sending securely sensitive parameters, such
as when taking possession of the TPM that contains the defining hash of the owner
password. The EK private key is used when creating secondary keys like AIKs.

The endorsement key acts as an identity card for the TPM. For more information, see
Understand the TPM endorsement key.

The endorsement key is often accompanied by one or two digital certificates:

One certificate is produced by the TPM manufacturer and is called the


endorsement certificate. The endorsement certificate is used to prove the
authenticity of the TPM (for example, that it's a real TPM manufactured by a
specific chip maker) to local processes, applications, or cloud services. The
endorsement certificate is created during manufacturing or the first time the TPM
is initialized by communicating with an online service.
The other certificate is produced by the platform builder and is called the platform
certificate to indicate that a specific TPM is integrated with a certain device. For
certain devices that use firmware-based TPM produced by Intel or Qualcomm, the
endorsement certificate is created when the TPM is initialized during the OOBE of
Windows.

7 Note

Secure Boot protects the platform until the Windows kernel is loaded. Then
protections like Trusted Boot, Hyper-V Code Integrity and ELAM take over. A device
that uses Intel TPM or Qualcomm TPM gets a signed certificate online from the
manufacturer that has created the chip and then stores the signed certificate in
TPM storage. For the operation to succeed, if you are filtering Internet access from
your client devices, you must authorize the following URLs:

For Intel firmware TPM: https://ekop.intel.com/ekcertservice


For Qualcomm firmware TPM: https://ekcert.spserv.microsoft.com/

Attestation Identity Keys


Because the endorsement certificate is unique for each device and doesn't change, the
usage of it may present privacy concerns because it's theoretically possible to track a
specific device. To avoid this privacy problem, Windows issues a derived attestation
anchor based on the endorsement certificate. This intermediate key, which can be
attested to an endorsement key, is the Attestation Identity Key (AIK) and the
corresponding certificate is called the AIK certificate. This AIK certificate is issued by a
Microsoft cloud service.

7 Note

Before the device can report its health using the TPM attestation functions, an AIK
certificate must be provisioned in conjunction with a third-party service like the
Microsoft Cloud CA service. After it is provisioned, the AIK private key can be used
to report platform configuration. Windows creates a signature over the platform
log state (and a monotonic counter value) at each boot by using the AIK.

The AIK is an asymmetric (public/private) key pair that is used as a substitute for the EK
as an identity for the TPM for privacy purposes. The private portion of an AIK is never
revealed or used outside the TPM and can only be used inside the TPM for a limited set
of operations. Furthermore, it can only be used for signing, and only for limited, TPM-
defined operations.

Windows creates AIKs protected by the TPM, if available, that are 2048-bit RSA signing
keys. Microsoft is hosting a cloud service called Microsoft Cloud CA to establish
cryptographically that it's communicating with a real TPM and that the TPM possesses
the presented AIK. After the Microsoft Cloud CA service has established these facts, it
will issue an AIK certificate to the Windows-based device.

Many existing devices that will upgrade to Windows 10 won't have a TPM, or the TPM
won't contain an endorsement certificate. To accommodate those devices, Windows 10
allows the issuance of AIK certificates without the presence of an endorsement
certificate. Such AIK certificates aren't issued by Microsoft Cloud CA. These certificates
aren't as trustworthy as an endorsement certificate that is burned into the device during
manufacturing, but it will provide compatibility for advanced scenarios like Windows
Hello for Business without TPM.

In the issued AIK certificate, a special OID is added to attest that endorsement certificate
was used during the attestation process. This information can be used by a relying party
to decide whether to reject devices that are attested using AIK certificates without an
endorsement certificate or accept them. Another scenario can be to not allow access to
high-value assets from devices that are attested by an AIK certificate that isn't backed by
an endorsement certificate.
Storage root key
The storage root key (SRK) is also an asymmetric key pair (RSA with a minimum of 2048-
bits length). The SRK has a major role and is used to protect TPM keys, so that these
keys can't be used without the TPM. The SRK key is created when the ownership of the
TPM is taken.

Platform Configuration Registers


The TPM contains a set of registers that are designed to provide a cryptographic
representation of the software and state of the system that booted. These registers are
called Platform Configuration Registers (PCRs).

The measurement of the boot sequence is based on the PCR and TCG log. To establish a
static root of trust, when the device is starting, the device must be able to measure the
firmware code before execution. In this case, the Core Root of Trust for Measurement
(CRTM) is executed from the boot, calculates the hash of the firmware, then stores it by
expanding the register PCR[0] and transfers execution to the firmware.

PCRs are set to zero when the platform is booted, and it's the job of the firmware that
boots the platform to measure components in the boot chain and to record the
measurements in the PCRs. Typically, boot components take the hash of the next
component that is to be run and record the measurements in the PCRs. The initial
component that starts the measurement chain is implicitly trusted. This component is
the CRTM. Platform manufacturers are required to have a secure update process for the
CRTM or not permit updates to it. The PCRs record a cumulative hash of the
components that have been measured.

The value of a PCR on its own is hard to interpret (it's just a hash value), but platforms
typically keep a log with details of what has been measured, and the PCRs merely
ensure that the log hasn't been tampered with. The logs are referred as a TCG log. Each
time a register PCR is extended, an entry is added to the TCG log. Thus, throughout the
boot process, a trace of the executable code and configuration data is created in the
TCG log.

TPM provisioning
For the TPM of a Windows-based device to be usable, it must first be provisioned. The
process of provisioning differs based on TPM versions, but, when successful, it results in
the TPM being usable and the owner authorization data (ownerAuth) for the TPM being
stored locally on the registry.
When the TPM is provisioned, Windows will first attempt to determine the EK and locally
stored ownerAuth values by looking in the registry at the following location:
HKLM\SYSTEM\CurrentControlSet\Services\TPM\WMI\Endorsement

During the provisioning process, the device may need to be restarted.

The Get-TpmEndorsementKeyInfo PowerShell cmdlet can be used with administrative


privilege to get information about the endorsement key and certificates of the TPM.

If the TPM ownership isn't known but the EK exists, the client library will provision the
TPM and will store the resulting ownerAuth value into the registry if the policy allows it
will store the SRK public portion at the following location:
HKLM\SYSTEM\CurrentControlSet\Services\TPM\WMI\Admin\SRKPub

As part of the provisioning process, Windows will create an AIK with the TPM. When this
operation is performed, the resulting AIK public portion is stored in the registry at the
following location:
HKLM\SYSTEM\CurrentControlSet\Services\TPM\WMI\WindowsAIKPub

7 Note

For provisioning AIK certificates and filtering Internet access, you must authorize
the following wildcard URL: https://\*.microsoftaik.azure.net

Windows Health Attestation CSP


Windows contains a configuration service provider (CSP) specialized for interacting with
the health attestation feature. A CSP is a component that plugs into the Windows MDM
client and provides a published protocol for how MDM servers can configure settings
and manage Windows-based devices. The management protocol is represented as a
tree structure that can be specified as URIs with functions to perform on the URIs such
as "get", "set", "delete", and so on.

The following list is that of the functions performed by the Windows Health Attestation
CSP:

Collects data that is used to verify a device's health status


Forwards the data to the Health Attestation Service
Provisions the Health Attestation Certificate that it receives from the Health
Attestation Service
Upon request, forwards the Health Attestation Certificate (received from the Health
Attestation Service) and related runtime information to the MDM server for
verification

During a health attestation session, the Health Attestation CSP forwards the TCG logs
and PCRs' values that are measured during the boot, by using a secure communication
channel to the Health Attestation Service.

When an MDM server validates that a device has attested to the Health Attestation
Service, it will be given a set of statements and claims about how that device booted,
with the assurance that the device didn't reboot between the time that it attested its
health and the time that the MDM server validated it.

Windows Health Attestation Service


The role of Windows Health Attestation Service is essentially to evaluate a set of health
data (TCG log and PCR values), make a series of detections (based on available health
data) and generate encrypted health blob or produce report to MDM servers.

7 Note

Both device and MDM servers must have access to has.spserv.microsoft.com using
the TCP protocol on port 443 (HTTPS).

Checking that a TPM attestation and the associated log are valid takes several steps:

1. First, the server must check that the reports are signed by trustworthy AIKs. This
verification might be done by checking that the public part of the AIK is listed in a
database of assets, or perhaps that a certificate has been checked.
2. After the key has been checked, the signed attestation (a quote structure) should
be checked to see whether it's a valid signature over PCR values.
3. Next the logs should be checked to ensure that they match the PCR values
reported.
4. Finally, the logs themselves should be examined by an MDM solution to see
whether they represent known or valid security configurations. For example, a
simple check might be to see whether the measured early OS components are
known to be good, that the ELAM driver is as expected, and that the ELAM driver
policy file is up to date. If all of these checks succeed, an attestation statement can
be issued that later can be used to determine whether or not the client should be
granted access to a resource.

The Health Attestation Service provides the following information to an MDM solution
about the health of the device:
Secure Boot enablement
Boot and kernel debug enablement
BitLocker enablement
VSM enabled
Signed or unsigned Device Guard Code Integrity policy measurement
ELAM loaded
Safe Mode boot, DEP enablement, test signing enablement
Device TPM has been provisioned with a trusted endorsement certificate

For completeness of the measurements, see Health Attestation CSP.

The following list shows some key items that can be reported back to MDM for
Windows-based devices:

PCR0 measurement
Secure Boot Enabled
Secure Boot db matches Expected
Secure Boot dbx is up to date
Secure Boot policy GUID matches Expected
BitLocker enabled
Virtualization-based security enabled
ELAM was loaded
Code Integrity version is up to date
Code Integrity policy hash matches expected

Use MDM and the Health Attestation Service


To make device health relevant, the MDM solution evaluates the device health report
and is configured to the organization's device health requirements.

A solution that uses MDM and the Health Attestation Service consists of three main
parts:

1. A device with health attestation enabled. This enablement will be done as a part of
enrollment with an MDM provider (health attestation will be disabled by default).

2. After this service is enabled, and every boot thereafter, the device will send health
measurements to the Health Attestation Service hosted by Microsoft, and it will
receive a health attestation blob in return.

3. At any point after this cycle, an MDM server can request the health attestation
blob from the device and ask Health Attestation Service to decrypt the content and
validate that it's been attested.
Interaction between a Windows-based device, the Health Attestation Service, and MDM
can be performed as follows:

1. The client initiates a session with the MDM server. The URI for the MDM server
would be part of the client app that initiates the request. The MDM server at this
time could request the health attestation data by using the appropriate CSP URI.

2. The MDM server specifies a nonce along with the request.

3. The client then sends the AIK quoted nonce + the boot counter and the health
blob information. This health blob is encrypted with a Health Attestation Service
public key that only the Health Attestation Service can decrypt.

4. The MDM server:


a. Verifies that the nonce is as expected.
b. Passes the quoted data, the nonce and the encrypted health blob to the Health
Attestation Service server.

5. The Health Attestation Service:


a. Decrypts the health blob.
b. Verifies that the boot counter in the quote is correct using the AIK in the health
blob and matches the value in the health blob.
c. Verifies that the nonce matches in the quote and the one that is passed from
MDM.
d. Because the boot counter and the nonce are quoted with the AIK from the
health blob, it also proves that the device is the same one as the one for which
the health blob has been generated.
e. Sends data back to the MDM server including health parameters, freshness, and
so on.
7 Note

The MDM server (relying party) never performs the quote or boot counter
validation itself. It gets the quoted data and the health blob (which is encrypted)
and sends the data to the Health Attestation Service for validation. This way, the
AIK is never visible to the MDM, which thereby addresses privacy concerns.

Setting the requirements for device compliance is the first step to ensure that registered
devices that don't meet health and compliance requirements are detected, tracked, and
have actions enforced by the MDM solution.

Devices that attempt to connect to resources must have their health evaluated so that
unhealthy and noncompliant devices can be detected and reported. To be fully efficient,
an end-to-end security solution must impose a consequence for unhealthy devices like
refusing access to high-value assets. That consequence for an unhealthy device is the
purpose of conditional access control, which is detailed in the next section.

Control the security of a Windows-based


device before access is granted
Today's access control technology, in most cases, focuses on ensuring that the right
people get access to the right resources. If users can authenticate, they get access to
resources using a device that the organization's IT staff and systems know little about.
Perhaps there's some check such as ensuring that a device is encrypted before giving
access to email, but what if the device is infected with malware?

The remote device health attestation process uses measured boot data to verify the
health status of the device. The health of the device is then available for an MDM
solution like Intune.

7 Note

For the latest information on Intune and Windows features support, see What's
new in Microsoft Intune.

The figure below shows how the Health Attestation Service is expected to work with
Microsoft's cloud-based Intune MDM service.
An MDM solution can then use health state statements and take them to the next level
by coupling with client policies that will enable conditional access to be granted based
on the device's ability to prove that it's malware free, its antimalware system is
functional and up to date, the firewall is running, and the devices patch state is
compliant.

Finally, resources can be protected by denying access to endpoints that are unable to
prove they're healthy. This feature is much needed for BYOD devices that need to access
organizational resources.

Built-in support of MDM in Windows


Windows has an MDM client that ships as part of the operating system. This MDM client
enables MDM servers to manage Windows-based devices without requiring a separate
agent.

Third-party MDM server support


Third-party MDM servers can manage Windows by using the MDM protocol. The built-
in management client is able to communicate with a compatible server that supports
the OMA-DM protocol to perform enterprise management tasks. For more information,
see Azure Active Directory integration with MDM.

7 Note

MDM servers do not need to create or download a client to manage Windows. For
more information, see Mobile device management.
The third-party MDM server will have the same consistent first-party user experience for
enrollment, which also provides simplicity for Windows users.

Management of Windows Defender by third-party MDM


This management infrastructure makes it possible for IT pros to use MDM-capable
products like Intune, to manage health attestation, Device Guard, or Windows Defender
on Windows-based devices, including BYODs that aren't domain joined. IT pros will be
able to manage and configure all of the actions and settings they're familiar with
customizing by using Intune with Intune Endpoint Protection on down-level operating
systems. Admins that currently only manage domain joined devices through Group
Policy will find it easy to transition to managing Windows-based devices by using MDM
because many of the settings and actions are shared across both mechanisms.

For more information on how to manage Windows security and system settings with an
MDM solution, see Custom URI settings for Windows devices.

Conditional access control


On most platforms, the Azure Active Directory (Azure AD) device registration happens
automatically during enrollment. The device states are written by the MDM solution into
Azure AD, and then read by Office 365 (or by any authorized Windows app that interacts
with Azure AD) the next time the client tries to access an Office 365 compatible
workload.

If the device isn't registered, the user will get a message with instructions on how to
register (also known as enrolling). If the device isn't compliant, the user will get a
different message that redirects them to the MDM web portal where they can get more
information on the compliance problem and how to resolve it.

Azure AD authenticates the user and the device, MDM manages the compliance and
conditional access policies, and the Health Attestation Service reports about the health
of the device in an attested way.
Office 365 conditional access control
Azure AD enforces conditional access policies to secure access to Office 365 services. A
tenant admin can create a conditional access policy that blocks a user on a non-
compliant device from accessing an Office 365 service. The user must conform to the
company's device policies before access can be granted to the service. Alternately, the
admin can also create a policy that requires users to just enroll their devices to gain
access to an Office 365 service. Policies may be applied to all users of an organization, or
limited to a few target groups and enhanced over time to include more target groups.

When a user requests access to an Office 365 service from a supported device platform,
Azure AD authenticates the user and device from which the user launches the request;
and grants access to the service only when the user conforms to the policy set for the
service. Users that don't have their device enrolled are given remediation instructions on
how to enroll and become compliant to access corporate Office 365 services.

When a user enrolls, the device is registered with Azure AD, and enrolled with a
compatible MDM solution like Intune.

7 Note

Microsoft is working with third-party MDM ISVs to support automated MDM


enrollment and policy based access checks. Steps to turn on auto-MDM enrollment
with Azure AD and Intune are explained in the Windows, Azure AD And Microsoft
Intune: Automatic MDM Enrollment Powered By The Cloud! blog post.
When a user enrolls a device successfully, the device becomes trusted. Azure AD
provides single-sign-on to access company applications and enforces conditional access
policy to grant access to a service not only the first time the user requests access, but
every time the user requests to renew access.

The user will be denied access to services when sign-in credentials are changed, a device
is lost/stolen, or the compliance policy isn't met at the time of request for renewal.

Depending on the type of email application that employees use to access Exchange
online, the path to establish secured access to email can be slightly different. However,
the key components: Azure AD, Office 365/Exchange Online, and Intune, are the same.
The IT experience and end-user experience also are similar.

Clients that attempt to access Office 365 will be evaluated for the following properties:

Is the device managed by an MDM?


Is the device registered with Azure AD?
Is the device compliant?

To get to a compliant state, the Windows-based device needs to:

Enroll with an MDM solution.


Register with Azure AD.
Be compliant with the device policies set by the MDM solution.
7 Note

At the present time, conditional access policies are selectively enforced on users on
iOS and Android devices. For more information, see the Azure AD, Microsoft
Intune and Windows - Using the cloud to modernize enterprise mobility! blog
post.

Cloud and on-premises apps conditional access control


Conditional access control is a powerful policy evaluation engine built into Azure AD. It
gives IT pros an easy way to create access rules beyond Office 365 that evaluate the
context of a user's sign in to make real-time decisions about which applications they
should be allowed to access.

IT pros can configure conditional access control policies for cloud SaaS applications
secured by Azure AD and even on-premises applications. Access rules in Azure AD use
the conditional access engine to check device health and compliance state reported by a
compatible MDM solution like Intune in order to determine whether to allow access.

For more information about conditional access, see Azure Conditional Access Preview
for SaaS Apps.

7 Note

Conditional access control is an Azure AD Premium feature that's also available


with EMS. If you don't have an Azure AD Premium subscription, you can get a trial
from the Microsoft Azure site.

For on-premises applications there are two options to enable conditional access control
based on a device's compliance state:

For on-premises applications that are published through the Azure AD Application
Proxy, you can configure conditional access control policies as you would for cloud
applications. For more information, see Using Azure AD Application Proxy to
publish on-premises apps for remote users.
Additionally, Azure AD Connect will sync device compliance information from
Azure AD to on-premises AD. ADFS on Windows Server 2016 will support
conditional access control based on a device's compliance state. IT pros will
configure conditional access control policies in ADFS that use the device's
compliance state reported by a compatible MDM solution to secure on-premises
applications.

The following process describes how Azure AD conditional access works:

1. User has already enrolled with MDM through Workplace Access/Azure AD join,
which registers device with Azure AD.
2. When the device boots or resumes from hibernate, a task "Tpm-HASCertRetr" is
triggered to request in background a health attestation blob. Device sends TPM
boot measurements to the Health Attestation Service.
3. Health Attestation Service validates device state and issues an encrypted blob to
the device based on the health state with details on failed checks (if any).
4. User logs on and the MDM agent contacts the Intune/MDM server.
5. MDM server pushes down new policies if available and queries health blob state
and other inventory state.
6. Device sends a health attestation blob previously acquired and also the value of
the other state inventory requested by the Intune/MDM server.
7. Intune/MDM server sends the health attestation blob to Health Attestation Service
to be validated.
8. Health Attestation Service validates that the device that sent the health attestation
blob is healthy, and returns this result to Intune/MDM server.
9. Intune/MDM server evaluates compliance based on the compliance and the
queried inventory/health attestation state from device.
10. Intune/MDM server updates compliance state against device object in Azure AD.
11. User opens app, attempts to access a corporate managed asset.
12. Access gated by compliance claim in Azure AD.
13. If the device is compliant and the user is authorized, an access token is generated.
14. User can access the corporate managed asset.

For more information about Azure AD join, see Azure AD & Windows: Better Together
for Work or School , a white paper.
Conditional access control is a topic that many organizations and IT pros may not know
and they should. The different attributes that describe a user, a device, compliance, and
context of access are powerful when used with a conditional access engine. Conditional
access control is an essential step that helps organizations secure their environment.

Takeaways and summary


The following list contains high-level key takeaways to improve the security posture of
any organization. However, the few takeaways presented in this section shouldn't be
interpreted as an exhaustive list of security best practices.

Understand that no solution is 100 percent secure

If determined adversaries with malicious intent gain physical access to the device,
they could eventually break through its security layers and control it.

Use health attestation with an MDM solution

Devices that attempt to connect to high-value assets must have their health
evaluated so that unhealthy and noncompliant devices can be detected, reported,
and eventually blocked.

Use Credential Guard

Credential Guard is a feature that greatly helps protect corporate domain


credentials from pass-the-hash attacks.

Use Device Guard

Device Guard is a real advance in security and an effective way to help protect
against malware. The Device Guard feature in Windows blocks untrusted apps
(apps not authorized by your organization).

Sign Device Guard policy

Signed Device Guard policy helps protect against a user with administrator
privileges trying to defeat the current policy. When a policy is signed, the only way
to modify Device Guard later is to provide a new version of the policy signed by
the same signer or from a signer specify as part of the Device Guard policy.

Use virtualization-based security

When you have Kernel Mode Code Integrity protected by virtualization-based


security, the code integrity rules are still enforced even if a vulnerability allows
unauthorized kernel mode memory access. Keep in mind that Device Guard
devices that run Kernel Code Integrity with virtualization-based security must have
compatible drivers.

Start to deploy Device Guard with Audit mode

Deploy Device Guard policy to targeted computers and devices in Audit mode.
Monitor the Code Integrity event log that indicates a program or a driver would
have been blocked if Device Guard was configured in Enforcement mode. Adjust
Device Guard rules until a high level of confidence has been reached. After the
testing phase has been completed, Device Guard policy can be switched to
Enforcement mode.

Build an isolated reference machine when deploying Device Guard

Because the corporate network can contain malware, you should start to configure
a reference environment that is isolated from your main corporate network. After
that, you can create a code integrity policy that includes the trusted applications
you want to run on your protected devices.

Use AppLocker when it makes sense

Although AppLocker isn't considered a new Device Guard feature, it complements


Device Guard functionality for some scenarios like being able to deny a specific
Universal Windows application for a specific user or a group of users.

Lock down firmware and configuration

After Windows is installed, lock down firmware boot options access. This lockdown
prevents a user with physical access from modifying UEFI settings, disabling Secure
Boot, or booting other operating systems. Also, in order to protect against an
administrator trying to disable Device Guard, add a rule in the current Device
Guard policy that will deny and block execution of the
C:\Windows\System32\SecConfig.efi tool.

Health attestation is a key feature of Windows that includes client and cloud
components to control access to high-value assets based on a user and their device's
identity and compliance with corporate governance policy. Organizations can choose to
detect and report unhealthy devices, or to configure health enforcement rules based on
their needs. Health attestation provides an end-to-end security model and integration
points, which vendors and software developers can use to build and integrate a
customized solution.

Related topics
Protect derived domain credentials with Credential Guard
Device Guard deployment guide
Trusted Platform Module technology overview
Cryptography and Certificate
Management
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Cryptography
Cryptography uses code to convert data so that only a specific recipient can read it by
using a key. Cryptography enforces privacy to prevent anyone except the intended
recipient from reading data, integrity to ensure data is free of tampering, and
authentication that verifies identity to ensure that communication is secure. The
cryptography stack in Windows extends from the chip to the cloud enabling Windows,
applications, and services protect system and user secrets.

Cryptography in Windows is Federal Information Processing Standards (FIPS) 140


certified. FIPS 140 certification ensures that US government approved algorithms are
being used (RSA for signing, ECDH with NIST curves for key agreement, AES for
symmetric encryption, and SHA2 for hashing), tests module integrity to prove that no
tampering has occurred and proves the randomness for entropy sources.

Windows cryptographic modules provide low-level primitives such as:

Random number generators (RNG)


Symmetric and asymmetric encryption (support for AES 128/256 and RSA 512 to
16384, in 64-bit increments and ECDSA over NIST-standard prime curves P-256, P-
384, P-521)
Hashing (support for SHA-256, SHA-384, and SHA-512)
Signing and verification (padding support for OAEP, PSS, PKCS1)
Key agreement and key derivation (support for ECDH over NIST-standard prime
curves P-256, P-384, P-521, and HKDF)

These modules are natively exposed on Windows through the Crypto API (CAPI) and the
Cryptography Next Generation API (CNG) which is powered by Microsoft's open-source
cryptographic library SymCrypt. Application developers can use these APIs to perform
low-level cryptographic operations (BCrypt), key storage operations (NCrypt), protect
static data (DPAPI), and securely share secrets (DPAPI-NG).

Certificate management
Windows offers several APIs to operate and manage certificates. Certificates are crucial
to public key infrastructure (PKI) as they provide the means for safeguarding and
authenticating information. Certificates are electronic documents used to claim
ownership of a public key. Public keys are used to prove server and client identity,
validate code integrity, and used in secure emails. Windows offers users the ability to
autoenroll and renew certificates in Active Directory with Group Policy to reduce the risk
of potential outages due to certificate expiration or misconfiguration. Windows validates
certificates through an automatic update mechanism that downloads certificate trust
lists (CTL) daily. Trusted root certificates are used by applications as a reference for
trustworthy PKI hierarchies and digital certificates. The list of trusted and untrusted
certificates are stored in the CTL and can be updated by administrators. In the case of
certificate revocation, a certificate is added as an untrusted certificate in the CTL causing
it to be revoked globally across user devices immediately.

Windows also offers enterprise certificate pinning to help reduce man-in-the-middle


attacks by enabling users to protect their internal domain names from chaining to
unwanted certificates. A web application's server authentication certificate chain is
checked to ensure it matches a restricted set of certificates. Any web application
triggering a name mismatch starts event logging and prevents user access from
Microsoft Edge.
Security policy settings
Article • 02/17/2023

Applies to

Windows 10
Windows 11

This reference topic describes the common scenarios, architecture, and processes for
security settings.

Security policy settings are rules that administrators configure on a computer or


multiple devices for protecting resources on a device or network. The Security Settings
extension of the Local Group Policy Editor snap-in allows you to define security
configurations as part of a Group Policy Object (GPO). The GPOs are linked to Active
Directory containers such as sites, domains, or organizational units, and they enable you
to manage security settings for multiple devices from any device joined to the domain.
Security settings policies are used as part of your overall security implementation to
help secure domain controllers, servers, clients, and other resources in your
organization.

Security settings can control:

User authentication to a network or device.


The resources that users are permitted to access.
Whether to record a user's or group's actions in the event log.
Membership in a group.

To manage security configurations for multiple devices, you can use one of the following
options:

Edit specific security settings in a GPO.


Use the Security Templates snap-in to create a security template that contains the
security policies you want to apply, and then import the security template into a
Group Policy Object. A security template is a file that represents a security
configuration, and it can be imported to a GPO, applied to a local device, or used
to analyze security.

For more info about managing security configurations, see Administer security policy
settings.

The Security Settings extension of the Local Group Policy Editor includes the following
types of security policies:
Account Policies. These policies are defined on devices; they affect how user
accounts can interact with the computer or domain. Account policies include the
following types of policies:
Password Policy. These policies determine settings for passwords, such as
enforcement and lifetimes. Password policies are used for domain accounts.
Account Lockout Policy. These policies determine the conditions and length of
time that an account will be locked out of the system. Account lockout policies
are used for domain or local user accounts.
Kerberos Policy. These policies are used for domain user accounts; they
determine Kerberos-related settings, such as ticket lifetimes and enforcement.

Local Policies. These policies apply to a computer and include the following types
of policy settings:

Audit Policy. Specify security settings that control the logging of security events
into the Security log on the computer, and specifies what types of security
events to log (success, failure, or both).

7 Note

For devices running Windows 7 and later, we recommend to use the


settings under Advanced Audit Policy Configuration rather than the Audit
Policy settings under Local Policies.

User Rights Assignment. Specify the users or groups that have sign-in rights or
privileges on a device

Security Options. Specify security settings for the computer, such as


Administrator and Guest Account names; access to floppy disk drives and CD-
ROM drives; installation of drivers; sign-in prompts; and so on.

Windows Firewall with Advanced Security. Specify settings to protect the device
on your network by using a stateful firewall that allows you to determine which
network traffic is permitted to pass between your device and the network.

Network List Manager Policies. Specify settings that you can use to configure
different aspects of how networks are listed and displayed on one device or on
many devices.

Public Key Policies. Specify settings to control Encrypting File System, Data
Protection, and BitLocker Drive Encryption in addition to certain certificate paths
and services settings.
Software Restriction Policies. Specify settings to identify software and to control
its ability to run on your local device, organizational unit, domain, or site.

Application Control Policies. Specify settings to control which users or groups can
run particular applications in your organization based on unique identities of files.

IP Security Policies on Local Computer. Specify settings to ensure private, secure


communications over IP networks by using cryptographic security services. IPsec
establishes trust and security from a source IP address to a destination IP address.

Advanced Audit Policy Configuration. Specify settings that control the logging of
security events into the security log on the device. The settings under Advanced
Audit Policy Configuration provide finer control over which activities to monitor as
opposed to the Audit Policy settings under Local Policies.

Windows edition and licensing requirements


The following table lists the Windows editions that support Windows Security policy
settings and auditing:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Windows Security policy settings and auditing license entitlements are granted by the
following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Policy-based security settings management


The Security Settings extension to Group Policy provides an integrated policy-based
management infrastructure to help you manage and enforce your security policies.

You can define and apply security settings policies to users, groups, and network servers
and clients through Group Policy and Active Directory Domain Services (AD DS). A group
of servers with the same functionality can be created (for example, a Microsoft Web (IIS)
server), and then Group Policy Objects can be used to apply common security settings
to the group. If more servers are added to this group later, many of the common
security settings are automatically applied, reducing deployment and administrative
labor.

Common scenarios for using security settings policies


Security settings policies are used to manage the following aspects of security: accounts
policy, local policy, user rights assignment, registry values, file and registry Access
Control Lists (ACLs), service startup modes, and more.

As part of your security strategy, you can create GPOs with security settings policies
configured specifically for the various roles in your organization, such as domain
controllers, file servers, member servers, clients, and so on.

You can create an organizational unit (OU) structure that groups devices according to
their roles. Using OUs is the best method for separating specific security requirements
for the different roles in your network. This approach also allows you to apply
customized security templates to each class of server or computer. After creating the
security templates, you create a new GPO for each of the OUs, and then import the
security template (.inf file) into the new GPO.

Importing a security template to a GPO ensures that any accounts to which the GPO is
applied automatically receive the template's security settings when the Group Policy
settings are refreshed. On a workstation or server, the security settings are refreshed at
regular intervals (with a random offset of at most 30 minutes), and, on a domain
controller, this process occurs every few minutes if changes have occurred in any of the
GPO settings that apply. The settings are also refreshed every 16 hours, whether or not
any changes have occurred.

7 Note

These refresh settings vary between versions of the operating system and can be
configured.

By using Group Policy−based security configurations in conjunction with the delegation


of administration, you can ensure that specific security settings, rights, and behavior are
applied to all servers and computers within an OU. This approach makes it simple to
update many servers with any other changes required in the future.

Dependencies on other operating system technologies


For devices that are members of a Windows Server 2008 or later domain, security
settings policies depend on the following technologies:

Active Directory Domain Services (AD DS)

The Windows-based directory service, AD DS, stores information about objects on


a network and makes this information available to administrators and users. By
using AD DS, you can view and manage network objects on the network from a
single location, and users can access permitted network resources by using a single
sign in.

Group Policy

The infrastructure within AD DS that enables directory-based configuration


management of user and computer settings on devices running Windows Server.
By using Group Policy, you can define configurations for groups of users and
computers, including policy settings, registry-based policies, software installation,
scripts, folder redirection, Remote Installation Services, Internet Explorer
maintenance, and security.

Domain Name System (DNS)

A hierarchical naming system used for locating domain names on the Internet and
on private TCP/IP networks. DNS provides a service for mapping DNS domain
names to IP addresses, and IP addresses to domain names. This service allows
users, computers, and applications to query DNS to specify remote systems by fully
qualified domain names rather than by IP addresses.

Winlogon

A part of the Windows operating system that provides interactive logon support.
Winlogon is designed around an interactive logon model that consists of three
components: the Winlogon executable, a credential provider, and any number of
network providers.

Setup

Security configuration interacts with the operating system setup process during a
clean installation or upgrade from earlier versions of Windows Server.

Security Accounts Manager (SAM)

A Windows service used during the sign-in process. SAM maintains user account
information, including groups to which a user belongs.
Local Security Authority (LSA)

A protected subsystem that authenticates and signs in users to the local system.
LSA also maintains information about all aspects of local security on a system,
collectively known as the Local Security Policy of the system.

Windows Management Instrumentation (WMI)

A feature of the Microsoft Windows operating system, WMI is the Microsoft


implementation of Web-Based Enterprise Management (WBEM), which is an
industry initiative to develop a standard technology for accessing management
information in an enterprise environment. WMI provides access to information
about objects in a managed environment. Through WMI and the WMI application
programming interface (API), applications can query for and make changes to
static information in the Common Information Model (CIM) repository and
dynamic information maintained by the various types of providers.

Resultant Set of Policy (RSoP)

An enhanced Group Policy infrastructure that uses WMI in order to make it easier
to plan and debug policy settings. RSoP provides public methods that expose what
an extension to Group Policy would do in a what-if situation, and what the
extension has done in an actual situation. These public methods allow
administrators to easily determine the combination of policy settings that apply to,
or will apply to, a user or device.

Service Control Manager (SCM)

Used for configuration of service startup modes and security.

Registry

Used for configuration of registry values and security.

File system

Used for configuration of security.

File system conversions

Security is set when an administrator converts a file system from FAT to NTFS.

Microsoft Management Console (MMC)

The user interface for the Security Settings tool is an extension of the Local Group
Policy Editor MMC snap-in.
Security settings policies and Group Policy
The Security Settings extension of the Local Group Policy Editor is part of the Security
Configuration Manager tool set. The following components are associated with Security
Settings: a configuration engine; an analysis engine; a template and database interface
layer; setup integration logic; and the secedit.exe command-line tool. The security
configuration engine is responsible for handling security configuration editor-related
security requests for the system on which it runs. The analysis engine analyzes system
security for a given configuration and saves the result. The template and database
interface layer handles reading and writing requests from and to the template or
database (for internal storage). The Security Settings extension of the Local Group Policy
Editor handles Group Policy from a domain-based or local device. The security
configuration logic integrates with setup and manages system security for a clean
installation or upgrade to a more recent Windows operating system. Security
information is stored in templates (.inf files) or in the Secedit.sdb database.

The following diagram shows Security Settings and related features.

Security Settings Policies and Related Features

Scesrv.dll

Provides the core security engine functionality.

Scecli.dll
Provides the client-side interfaces to the security configuration engine and
provides data to Resultant Set of Policy (RSoP).

Wsecedit.dll

The Security Settings extension of Local Group Policy Editor. scecli.dll is loaded into
wsecedit.dll to support the Security Settings user interface.

Gpedit.dll

The Local Group Policy Editor MMC snap-in.

Security Settings extension architecture


The Security Settings extension of the Local Group Policy Editor is part of the Security
Configuration Manager tools, as shown in the following diagram.

Security Settings Architecture

The security settings configuration and analysis tools include a security configuration
engine, which provides local computer (non-domain member) and Group Policy−based
configuration and analysis of security settings policies. The security configuration engine
also supports the creation of security policy files. The primary features of the security
configuration engine are scecli.dll and scesrv.dll.

The following list describes these primary features of the security configuration engine
and other Security Settings−related features.

scesrv.dll

This .dll file is hosted in services.exe and runs under local system context. scesrv.dll
provides core Security Configuration Manager functionality, such as import,
configure, analyze, and policy propagation.

Scesrv.dll performs configuration and analysis of various security-related system


parameters by calling corresponding system APIs, including LSA, SAM, and the
registry.

Scesrv.dll exposes APIs such as import, export, configure, and analyze. It checks
that the request is made over LRPC (Windows XP) and fails the call if it isn't.

Communication between parts of the Security Settings extension occurs by using


the following methods:
Component Object Model (COM) calls
Local Remote Procedure Call (LRPC)
Lightweight Directory Access Protocol (LDAP)
Active Directory Service Interfaces (ADSI)
Server Message Block (SMB)
Win32 APIs
Windows Management Instrumentation (WMI) calls

On domain controllers, scesrv.dll receives notifications of changes made to SAM


and the LSA that need to be synchronized across domain controllers. Scesrv.dll
incorporates those changes into the Default Domain Controller Policy GPO by
using in-process scecli.dll template modification APIs. Scesrv.dll also performs
configuration and analysis operations.

Scecli.dll

This Scecli.dll is the client-side interface or wrapper to scesrv.dll. scecli.dll is loaded


into Wsecedit.dll to support MMC snap-ins. It's used by Setup to configure default
system security and security of files, registry keys, and services installed by the
Setup API .inf files.

The command-line version of the security configuration and analysis user


interfaces, secedit.exe, uses scecli.dll.
Scecli.dll implements the client-side extension for Group Policy.

Scesrv.dll uses scecli.dll to download applicable Group Policy files from SYSVOL in
order to apply Group Policy security settings to the local device.

Scecli.dll logs application of security policy into WMI (RSoP).

Scesrv.dll policy filter uses scecli.dll to update Default Domain Controller Policy
GPO when changes are made to SAM and LSA.

Wsecedit.dll

The Security Settings extension of the Group Policy Object Editor snap-in. You use
this tool to configure security settings in a Group Policy Object for a site, domain,
or organizational unit. You can also use Security Settings to import security
templates to a GPO.

Secedit.sdb

This Secedit.sdb is a permanent system database used for policy propagation


including a table of persistent settings for rollback purposes.

User databases

A user database is any database other than the system database created by
administrators for the purposes of configuration or analysis of security.

.Inf Templates

These templates are text files that contain declarative security settings. They're
loaded into a database before configuration or analysis. Group Policy security
policies are stored in .inf files on the SYSVOL folder of domain controllers, where
they're downloaded (by using file copy) and merged into the system database
during policy propagation.

Security settings policy processes and


interactions
For a domain-joined device, where Group Policy is administered, security settings are
processed in conjunction with Group Policy. Not all settings are configurable.

Group Policy processing


When a computer starts and a user signs in, computer policy and user policy are applied
according to the following sequence:

1. The network starts. Remote Procedure Call System Service (RPCSS) and Multiple
Universal Naming Convention Provider (MUP) start.

2. An ordered list of Group Policy Objects is obtained for the device. The list might
depend on these factors:

Whether the device is part of a domain and, therefore, subject to Group


Policy through Active Directory.
The location of the device in Active Directory.
Whether the list of Group Policy Objects has changed. If the list of Group
Policy Objects hasn't changed, no processing is done.

3. Computer policy is applied. These settings are the ones under Computer
Configuration from the gathered list. This process is a synchronous one by default
and occurs in the following order: local, site, domain, organizational unit, child
organizational unit, and so on. No user interface appears while computer policies
are processed.

4. Startup scripts run. These scripts are hidden and synchronous by default; each
script must complete or time out before the next one starts. The default time-out
is 600 seconds. You can use several policy settings to modify this behavior.

5. The user presses CTRL+ALT+DEL to sign in.

6. After the user is validated, the user profile loads; it's governed by the policy
settings that are in effect.

7. An ordered list of Group Policy Objects is obtained for the user. The list might
depend on these factors:

Whether the user is part of a domain and, therefore, subject to Group Policy
through Active Directory.
Whether loopback policy processing is enabled, and if so, the state (Merge or
Replace) of the loopback policy setting.
The location of the user in Active Directory.
Whether the list of Group Policy Objects has changed. If the list of Group
Policy Objects hasn't changed, no processing is done.

8. User policy is applied. These settings are the ones under User Configuration from
the gathered list. These settings are synchronous by default and in the following
order: local, site, domain, organizational unit, child organizational unit, and so on.
No user interface appears while user policies are processed.

9. Logon scripts run. Group Policy−based logon scripts are hidden and asynchronous
by default. The user object script runs last.

10. The operating system user interface that is prescribed by Group Policy appears.

Group Policy Objects storage


A Group Policy Object (GPO) is a virtual object that is identified by a Globally Unique
Identifier (GUID) and stored at the domain level. The policy setting information of a GPO
is stored in the following two locations:

Group Policy containers in Active Directory.

The Group Policy container is an Active Directory container that contains GPO
properties, such as version information, GPO status, plus a list of other component
settings.

Group Policy templates in a domain's system volume folder (SYSVOL).

The Group Policy template is a file system folder that includes policy data specified
by .admx files, security settings, script files, and information about applications that
are available for installation. The Group Policy template is located in the SYSVOL
folder in the <domain>\Policies subfolder.

The GROUP_POLICY_OBJECT structure provides information about a GPO in a GPO list,


including the version number of the GPO, a pointer to a string that indicates the Active
Directory portion of the GPO, and a pointer to a string that specifies the path to the file
system portion of the GPO.

Group Policy processing order


Group Policy settings are processed in the following order:

1. Local Group Policy Object.

Each device running a Windows operating system beginning with Windows XP has
exactly one Group Policy Object that is stored locally.

2. Site.
Any Group Policy Objects that have been linked to the site are processed next.
Processing is synchronous and in an order that you specify.

3. Domain.

Processing of multiple domain-linked Group Policy Objects is synchronous and in


an order you specify.

4. Organizational units.

Group Policy Objects that are linked to the organizational unit that is highest in the
Active Directory hierarchy are processed first, then Group Policy Objects that are
linked to its child organizational unit, and so on. Finally, the Group Policy Objects
that are linked to the organizational unit that contains the user or device are
processed.

At the level of each organizational unit in the Active Directory hierarchy, one, many, or
no Group Policy Objects can be linked. If several Group Policy Objects are linked to an
organizational unit, their processing is synchronous and in an order that you specify.

This order means that the local Group Policy Object is processed first, and Group Policy
Objects that are linked to the organizational unit of which the computer or user is a
direct member are processed last, which overwrites the earlier Group Policy Objects.

This order is the default processing order and administrators can specify exceptions to
this order. A Group Policy Object that is linked to a site, domain, or organizational unit
(not a local Group Policy Object) can be set to Enforced with respect to that site,
domain, or organizational unit, so that none of its policy settings can be overridden. At
any site, domain, or organizational unit, you can mark Group Policy inheritance
selectively as Block Inheritance. Group Policy Object links that are set to Enforced are
always applied, however, and they can't be blocked. For more information, see Group
Policy Basics – Part 2: Understanding Which GPOs to Apply.

Security settings policy processing


In the context of Group Policy processing, security settings policy is processed in the
following order.

1. During Group Policy processing, the Group Policy engine determines which
security settings policies to apply.

2. If security settings policies exist in a GPO, Group Policy invokes the Security
Settings client-side extension.
3. The Security Settings extension downloads the policy from the appropriate
location such as a specific domain controller.

4. The Security Settings extension merges all security settings policies according to
precedence rules. The processing is according to the Group Policy processing
order of local, site, domain, and organizational unit (OU), as described earlier in the
"Group Policy processing order" section. If multiple GPOs are in effect for a given
device and there are no conflicting policies, then the policies are cumulative and
are merged.

This example uses the Active Directory structure shown in the following figure. A
given computer is a member of OU2, to which the GroupMembershipPolGPO GPO
is linked. This computer is also subject to the UserRightsPolGPO GPO, which is
linked to OU1, higher in the hierarchy. In this case, no conflicting policies exist so
the device receives all of the policies contained in both the UserRightsPolGPO and
the GroupMembershipPolGPO GPOs.

Multiple GPOs and Merging of Security Policy

5. The resultant security policies are stored in secedit.sdb, the security settings
database. The security engine gets the security template files and imports them to
secedit.sdb.

6. The security settings policies are applied to devices. The following figure illustrates
the security settings policy processing.

Security Settings Policy Processing


Merging of security policies on domain controllers
Password policies, Kerberos, and some security options are only merged from GPOs that
are linked at the root level on the domain. This merging is done to keep those settings
synchronized across all domain controllers in the domain. The following security options
are merged:

Network Security: Force sign out when sign-in hours expire


Accounts: Administrator account status
Accounts: Guest account status
Accounts: Rename administrator account
Accounts: Rename guest account

Another mechanism exists that allows security policy changes made by administrators
by using net accounts to be merged into the Default Domain Policy GPO. User rights
changes that are made by using Local Security Authority (LSA) APIs are filtered into the
Default Domain Controllers Policy GPO.

Special considerations for domain controllers


If an application is installed on a primary domain controller (PDC) with operations
master role (also known as flexible single master operations or FSMO) and the
application makes changes to user rights or password policy, these changes must be
communicated to ensure that synchronization across domain controllers occurs.
Scesrv.dll receives a notification of any changes made to the security account manager
(SAM) and LSA that need to be synchronized across domain controllers and then
incorporates the changes into the Default Domain Controller Policy GPO by using
scecli.dll template modification APIs.

When security settings are applied


After you've edited the security settings policies, the settings are refreshed on the
computers in the organizational unit linked to your Group Policy Object in the following
instances:

When a device is restarted.


Every 90 minutes on a workstation or server and every 5 minutes on a domain
controller. This refresh interval is configurable.
By default, Security policy settings delivered by Group Policy are also applied every
16 hours (960 minutes) even if a GPO hasn't changed.

Persistence of security settings policy


Security settings can persist even if a setting is no longer defined in the policy that
originally applied it.

Security settings might persist in the following cases:

The setting hasn't been previously defined for the device.


The setting is for a registry security object.
The settings are for a file system security object.

All settings applied through local policy or through a Group Policy Object are stored in a
local database on your computer. Whenever a security setting is modified, the computer
saves the security setting value to the local database, which retains a history of all the
settings that have been applied to the computer. If a policy first defines a security
setting and then no longer defines that setting, then the setting takes on the previous
value in the database. If a previous value doesn't exist in the database, then the setting
doesn't revert to anything and remains defined as is. This behavior is sometimes
referred to as "tattooing".

Registry and file security settings will maintain the values applied through Group Policy
until that setting is set to other values.

Permissions required for policy to apply


Both Apply Group Policy and Read permissions are required to have the settings from a
Group Policy Object apply to users or groups, and computers.

Filtering security policy


By default, all GPOs have Read and Apply Group Policy both Allowed for the
Authenticated Users group. The Authenticated Users group includes both users and
computers. Security settings policies are computer-based. To specify which client
computers will or won't have a Group Policy Object applied to them, you can deny them
either the Apply Group Policy or Read permission on that Group Policy Object. Changing
these permissions allows you to limit the scope of the GPO to a specific set of
computers within a site, domain, or OU.

7 Note

Do not use security policy filtering on a domain controller as this would prevent
security policy from applying to it.

Migration of GPOs containing security settings


In some situations, you might want to migrate GPOs from one domain environment to
another environment. The two most common scenarios are test-to-production
migration, and production-to-production migration. The GPO copying process has
implications for some types of security settings.

Data for a single GPO is stored in multiple locations and in various formats; some data is
contained in Active Directory and other data is stored on the SYSVOL share on the
domain controllers. Certain policy data might be valid in one domain but might be
invalid in the domain to which the GPO is being copied. For example, Security Identifiers
(SIDs) stored in security policy settings are often domain-specific. So copying GPOs isn't
as simple as taking a folder and copying it from one device to another.

The following security policies can contain security principals and might require some
more work to successfully move them from one domain to another.

User rights assignment


Restricted groups
Services
File system
Registry
The GPO DACL, if you choose to preserve it during a copy operation
To ensure that data is copied correctly, you can use Group Policy Management Console
(GPMC). When there's a migration of a GPO from one domain to another, GPMC
ensures that all relevant data is properly copied. GPMC also offers migration tables,
which can be used to update domain-specific data to new values as part of the
migration process. GPMC hides much of the complexity involved in the migrating GPO
operations, and it provides simple and reliable mechanisms for performing operations
such as copy and backup of GPOs.

In this section
Topic Description

Administer This article discusses different methods to administer security policy settings on
security policy a local device or throughout a small- or medium-sized organization.
settings

Configure Describes steps to configure a security policy setting on the local device, on a
security policy domain-joined device, and on a domain controller.
settings

Security policy This reference of security settings provides information about how to
settings implement and manage security policies, including setting options and security
reference considerations.
Security auditing
Article • 12/09/2022

Topics in this section are for IT professionals and describes the security auditing features
in Windows and how your organization can benefit from using these technologies to
enhance the security and manageability of your network.

Security auditing is one of the most powerful tools that you can use to maintain the
integrity of your system. As part of your overall security strategy, you should determine
the level of auditing that is appropriate for your environment. Auditing should identify
attacks (successful or not) that pose a threat to your network, and attacks against
resources that you've determined to be valuable in your risk assessment.

In this section
Topic Description

Basic security Before you implement auditing, you must decide on an auditing policy. A basic
audit policies audit policy specifies categories of security-related events that you want to audit.
When this version of Windows is first installed, all auditing categories are
disabled. By enabling various auditing event categories, you can implement an
auditing policy that suits the security needs of your organization.

Advanced Advanced security audit policy settings are found in Security Settings\Advanced
security audit Audit Policy Configuration\System Audit Policies and appear to overlap with
policies basic security audit policies, but they're recorded and applied differently.
Configure kiosks and digital signs on
Windows desktop editions
Article • 05/11/2023

2 Warning

Some information relates to prereleased product which may be substantially


modified before it's commercially released. Microsoft makes no warranties, express
or implied, with respect to the information provided here.

Applies to

Windows 10
Windows 11

Some desktop devices in an enterprise serve a special purpose. For example, a PC in the
lobby that customers use to see your product catalog. Or, a PC displaying visual content
as a digital sign. Windows client offers two different locked-down experiences for public
or specialized use:

A single-app kiosk: Runs a single Universal Windows Platform (UWP) app in full
screen above the lock screen. People using the kiosk can see only that app. When
the kiosk account (a local standard user account) signs in, the kiosk app will launch
automatically, and you can configure the kiosk account to sign in automatically as
well. If the kiosk app is closed, it will automatically restart.

A single-app kiosk is ideal for public use. Using Shell Launcher, you can configure a
kiosk device that runs a Windows desktop application as the user interface. The
application that you specify replaces the default shell (explorer.exe) that usually
runs when a user logs on. This type of single-app kiosk doesn't run above the lock
screen.
A multi-app kiosk: Runs one or more apps from the desktop. People using the
kiosk see a customized Start that shows only the tiles for the apps that are allowed.
With this approach, you can configure a locked-down experience for different
account types.

7 Note

Currently, multi-app kiosk is only supported on Windows 10. It's not


supported on Windows 11.

A multi-app kiosk is appropriate for devices that are shared by multiple people.
When you configure a multi-app kiosk, specific policies are enforced that will affect
all non-administrator users on the device.

Kiosk configurations are based on Assigned Access, a feature in Windows client that
allows an administrator to manage the user's experience by limiting the application
entry points exposed to the user.

There are several kiosk configuration methods that you can choose from, depending on
your answers to the following questions.

Which type of app will your kiosk run?

Your kiosk can run a Universal Windows Platform (UWP) app or a Windows
desktop application. For digital signage, select a digital sign player as your kiosk
app. Check out the guidelines for kiosk apps.

Which type of kiosk do you need?


If you want your kiosk to run a single app for anyone to see or use, consider a
single-app kiosk that runs either a Universal Windows Platform (UWP) app or a
Windows desktop application. For a kiosk that people can sign in to with their
accounts or that runs more than one app, choose a multi-app kiosk.

Which edition of Windows client will the kiosk run?

All of the configuration methods work for Windows client Enterprise and
Education; some of the methods work for Windows Pro. Kiosk mode isn't available
on Windows Home.

Which type of user account will be the kiosk account?

The kiosk account can be a local standard user account, a local administrator
account, a domain account, or an Azure Active Directory (Azure AD) account,
depending on the method that you use to configure the kiosk. If you want people
to sign in and authenticate on the device, you should use a multi-app kiosk
configuration. The single-app kiosk configuration doesn't require people to sign in
to the device, although they can sign in to the kiosk app if you select an app that
has a sign-in method.

) Important

Single-app kiosk mode isn't supported over a remote desktop connection. Your
kiosk users must sign in on the physical device that is set up as a kiosk.

Windows edition and licensing requirements


The following table lists the Windows editions that support Assigned Access (kiosk
mode):

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Assigned Access (kiosk mode) license entitlements are granted by the following licenses:
Windows Pro/Pro Windows Windows Windows Windows
Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Methods for a single-app kiosk running a UWP


app
You can use this method For this edition For this kiosk account type

Assigned access in Settings Pro, Ent, Edu Local standard user

Assigned access cmdlets Pro, Ent, Edu Local standard user

The kiosk wizard in Windows Pro (version Local standard user, Active
Configuration Designer 1709), Ent, Edu Directory, Azure AD

Microsoft Intune or other mobile device Pro (version Local standard user, Azure AD
management (MDM) 1709), Ent, Edu

Shell Launcher v2 Ent, Edu Local standard user, Active


Directory, Azure AD

Methods for a single-app kiosk running a


Windows desktop application
You can use this method For this edition For this kiosk account type

The kiosk wizard in Windows Ent, Edu Local standard user, Active
Configuration Designer Directory, Azure AD

Microsoft Intune or other mobile device Pro (version Local standard user, Azure AD
management (MDM) 1709), Ent, Edu

Shell Launcher v1 and v2 Ent, Edu Local standard user, Active


Directory, Azure AD

Methods for a multi-app kiosk


You can use this method For this For this kiosk account type
edition
You can use this method For this For this kiosk account type
edition

XML in a provisioning package Pro, Ent, Edu Local standard user, Active Directory, Azure
AD

Microsoft Intune or other Pro, Ent, Edu Local standard user, Azure AD
MDM

MDM WMI Bridge Provider Pro, Ent, Edu Local standard user, Active Directory, Azure
AD

Summary of kiosk configuration methods


Method App type Account type Single- Multi-
app app
kiosk kiosk

Assigned access in Settings UWP Local account ✔️

Assigned access cmdlets UWP Local account ✔️

The kiosk wizard in Windows UWP, Local standard ✔️


Configuration Designer Windows user, Active
desktop Directory, Azure AD
app

XML in a provisioning package UWP, Local standard ✔️ ✔️


Windows user, Active
desktop Directory, Azure AD
app

Microsoft Intune or other MDM for full- UWP, Local standard ✔️ ✔️


screen single-app kiosk or for multi-app Windows user, Azure AD
kiosk with desktop desktop
app

Shell Launcher Windows Local standard ✔️


desktop user, Active
app Directory, Azure AD

MDM Bridge WMI Provider UWP, Local standard ✔️


Windows user, Active
desktop Directory, Azure AD
app

7 Note
For devices running Windows client Enterprise and Education, you can also use
Windows Defender Application Control or AppLocker to lock down a device to
specific apps.
Windows Security
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This library describes Windows Security settings, and provides information on


configuring certain features, including:

Showing and customizing contact information


Hiding notifications

In Windows 10, version 1709 and later, the settings also show information from third-
party antivirus and firewall apps.

In Windows 10, version 1803, the settings have two new areas: Account protection and
Device security.
7 Note

Windows Security is a client interface on Windows 10, version 1703 and later. It is
not the Microsoft Defender Security Center web portal console that is used to
review and manage Microsoft Defender for Endpoint.

You can't uninstall Windows Security, but you can do one of the following actions:
Disable the interface on Windows Server 2016.
Hide all of the sections on client computers.
Disable Microsoft Defender Antivirus, if needed. For more information, see Enable
and configure Microsoft Defender Antivirus always-on protection in group policy.

For more information about each section, options for configuring the sections, and how
to hide each of them, see the following articles:

Virus & threat protection, which has information and access to antivirus
ransomware protection settings and notifications, including Controlled folder
access, and sign-in to Microsoft OneDrive.
Account protection, which has information and access to sign-in and account
protection settings.
Firewall & network protection, which has information and access to firewall
settings, including Windows Defender Firewall.
App & browser control, covering Windows Defender SmartScreen settings and
Exploit protection mitigations.
Device security, which provides access to built-in device security settings.
Device performance & health, which has information about drivers, storage space,
and general Windows Update issues.
Family options, which include access to parental controls along with tips and
information for keeping kids safe online.

7 Note

If you hide all sections then Windows Security will show a restricted interface, as in
the following screenshot:

Open Windows Security


Select the icon in the notification area on the taskbar.

Search the Start menu for Windows Security.

Open an area from Windows Settings.


7 Note

Settings configured with management tools, such as group policy, Microsoft Intune,
or Microsoft Configuration Manager, will generally take precedence over the
settings in the Windows Security.

How Windows Security works with Windows


security features

) Important
Microsoft Defender Antivirus and Windows Security use similarly named services
for specific purposes.

The Windows Security uses the Windows Security Service (SecurityHealthService or


Windows Security Health Service), which in turn utilizes the Windows Security Center
Service (wscsvc). This service makes sure that Windows Security provides the most
up-to-date information about the protection status on the endpoint. This
information includes protection offered by third-party antivirus products, Windows
Defender Firewall, third-party firewalls, and other security protection.

These services don't affect the state of Microsoft Defender Antivirus. Disabling or
modifying these services won't disable Microsoft Defender Antivirus. It will lead to a
lowered protection state on the endpoint, even if you're using a third-party
antivirus product.

Microsoft Defender Antivirus will be disabled automatically when a third-party


antivirus product is installed and kept up to date.

Disabling the Windows Security Center Service won't disable Microsoft Defender
Antivirus or Windows Defender Firewall.

2 Warning

If you disable the Windows Security Center Service, or configure its associated
group policy settings to prevent it from starting or running, Windows Security may
display stale or inaccurate information about any antivirus or firewall products you
have installed on the device.

It may also prevent Microsoft Defender Antivirus from enabling itself if you have an
old or outdated third-party antivirus, or if you uninstall any third-party antivirus
products you may have previously installed.

This will significantly lower the protection of your device and could lead to malware
infection.

Windows Security operates as a separate app or process from each of the individual
features, and displays notifications through the Action Center.

It acts as a collector or single place to see the status and perform some configuration
for each of the features.

If you disable any of the individual features, it prevents that feature from reporting its
status in Windows Security. For example, if you disable a feature through group policy
or other management tools, such as Microsoft Configuration Manager, Windows
Security itself still runs and shows status for the other security features.

) Important

If you individually disable any of the services, it won't disable the other services or
Windows Security itself.

For example, using a third-party antivirus disables Microsoft Defender Antivirus.


However, Windows Security still runs, shows its icon in the taskbar, and displays
information about the other features, such as Windows Defender SmartScreen and
Windows Defender Firewall.
Virus and threat protection
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

The Virus & threat protection section contains information and settings for antivirus
protection from Microsoft Defender Antivirus and third-party AV products.

In Windows 10, version 1803, this section also contains information and settings for
ransomware protection and recovery. These settings include Controlled folder access
settings to prevent unknown apps from changing files in protected folders, plus
Microsoft OneDrive configuration to help you recover from a ransomware attack. This
area also notifies users and provides recovery instructions if there's a ransomware
attack.

IT administrators and IT pros can get more configuration information from these articles:

Microsoft Defender Antivirus in Windows Security


Microsoft Defender Antivirus documentation library
Protect important folders with Controlled folder access
Defend yourself from cybercrime with new Office 365 capabilities
Microsoft Defender for Office 365
Ransomware detection and recovering your files

You can hide the Virus & threat protection section or the Ransomware protection area
from users of the machine. This option can be useful if you don't want employees in
your organization to see or have access to user-configured options for these features.

Hide the Virus & threat protection section


You can choose to hide the entire section by using Group Policy. The section won't
appear on the home page of Windows Security, and its icon won't be shown on the
navigation bar on the side.

This section can be hidden only by using Group Policy.

) Important

You must have Windows 10, version 1709 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In Group Policy Management Editor, go to Computer configuration and select
Administrative templates.
3. Expand the tree to Windows components > Windows Security > Virus and threat
protection.
4. Open the Hide the Virus and threat protection area setting and set it to Enabled.
Select OK.
5. Deploy the updated GPO as you normally do.

7 Note

If you hide all sections then Windows Security will show a restricted interface, as in
the following screenshot:

Hide the Ransomware protection area


You can choose to hide the Ransomware protection area by using Group Policy. The
area won't appear on the Virus & threat protection section of Windows Security.

This area can be hidden only by using Group Policy.

) Important

You must have Windows 10, version 1709 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In Group Policy Management Editor, go to Computer configuration and select
Administrative templates.
3. Expand the tree to Windows components > Windows Security > Virus and threat
protection.
4. Open the Hide the Ransomware data recovery area setting and set it to Enabled.
Select OK.
5. Deploy the updated GPO as you normally do.
Account protection
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

The Account protection section contains information and settings for account
protection and sign-in. You can get more information about these capabilities from the
following list:

Microsoft Account
Windows Hello for Business
Lock your Windows 10 PC automatically when you step away from it

You can also choose to hide the section from users of the device, if you don't want your
employees to access or view user-configured options for these features.

Hide the Account protection section


You can choose to hide the entire section by using Group Policy. When hidden, this
section doesn't appear on the home page of Windows Security, and its icon isn't shown
on the navigation bar on the side.

You can only configure these settings by using Group Policy.

) Important

You must have Windows 10, version 1803 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In the Group Policy Management Editor, go to Computer configuration and
select Administrative templates.
3. Expand the tree to Windows components > Windows Security > Account
protection.
4. Open the Hide the Account protection area setting and set it to Enabled. Select
OK.
5. Deploy the updated GPO as you normally do.

7 Note
If you hide all sections then Windows Security will show a restricted interface, as in
the following screenshot:
Firewall and network protection
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

The Firewall & network protection section contains information about the firewalls and
network connections used by the machine, including the status of Windows Defender
Firewall and any other third-party firewalls. IT administrators and IT pros can get
configuration guidance from the Windows Defender Firewall with Advanced Security
documentation library.

This section can be hidden from users of the machine. This information is useful if you
don't want employees in your organization to see or have access to user-configured
options for the features shown in the section.

Hide the Firewall & network protection section


You can choose to hide the entire section by using Group Policy. The section won't
appear on the home page of Windows Security, and its icon won't be shown on the
navigation bar on the side.

This section can be hidden only by using Group Policy.

) Important

You must have Windows 10, version 1709 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In Group Policy Management Editor, go to Computer configuration and select
Administrative templates.
3. Expand the tree to Windows components > Windows Security > Firewall and
network protection.
4. Open the Hide the Firewall and network protection area setting and set it to
Enabled. Select OK.
5. Deploy the updated GPO as you normally do.

7 Note

If you hide all sections then Windows Security will show a restricted interface, as in
the following screenshot:
App and browser control
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

The App and browser control section contains information and settings for Windows
Defender SmartScreen. IT administrators and IT pros can get configuration guidance
from the Windows Defender SmartScreen documentation library.

In Windows 10, version 1709 and later, the section also provides configuration options
for Exploit protection. You can prevent users from modifying these specific options with
Group Policy. IT administrators can get more information at Exploit protection.

You can also choose to hide the section from users of the machine. This option can be
useful if you don't want employees in your organization to see or have access to user-
configured options for the features shown in the section.

Prevent users from making changes to the


Exploit protection area in the App & browser
control section
You can prevent users from modifying settings in the Exploit protection area. The
settings will be either greyed out or not appear if you enable this setting. Users will still
have access to other settings in the App & browser control section, such as those
settings for Windows Defender SmartScreen, unless those options have been configured
separately.

You can only prevent users from modifying Exploit protection settings by using Group
Policy.

) Important

You must have Windows 10, version 1709 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In the Group Policy Management Editor, go to Computer configuration, select
Policies and then Administrative templates.
3. Expand the tree to Windows components > Windows Security > App and
browser protection.
4. Open the Prevent users from modifying settings setting and set it to Enabled.
Select OK.
5. Deploy the updated GPO as you normally do.

Hide the App & browser control section


You can choose to hide the entire section by using Group Policy. The section won't
appear on the home page of Windows Security, and its icon won't be shown on the
navigation bar on the side.

This section can be hidden only by using Group Policy.

) Important

You must have Windows 10, version 1709 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In the Group Policy Management Editor go to Computer configuration, select
Policies and then Administrative templates.
3. Expand the tree to Windows components > Windows Security > App and
browser protection.
4. Open the Hide the App and browser protection area setting and set it to Enabled.
Select OK.
5. Deploy the updated GPO as you normally do.

7 Note

If you hide all sections then Windows Security will show a restricted interface, as in
the following screenshot:
Device security
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

The Device security section contains information and settings for built-in device
security.

You can choose to hide the section from users of the machine. This option can be useful
if you don't want employees in your organization to see or have access to user-
configured options for the features shown in the section.

Hide the Device security section


You can choose to hide the entire section by using Group Policy. The section won't
appear on the home page of Windows Security, and its icon won't be shown on the
navigation bar on the side. You can hide the device security section by using Group
Policy only.

) Important

You must have Windows 10, version 1803 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In Group Policy Management Editor, go to Computer configuration and then
select Administrative templates.
3. Expand the tree to Windows components > Windows Security > Device security.
4. Open the Hide the Device security area setting and set it to Enabled. Select OK.
5. Deploy the updated GPO as you normally do.

7 Note

If you hide all sections then Windows Security will show a restricted interface, as in
the following screenshot:
Disable the Clear TPM button
If you don't want users to be able to select the Clear TPM button in Windows Security,
you can disable it.

) Important

You must have Windows 10, version 1809 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management computer, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In Group Policy Management Editor, go to Computer configuration and then
select Administrative templates.
3. Expand the tree to Windows components > Windows Security > Device security.
4. Open the Disable the Clear TPM button setting and set it to Enabled. Select OK.
5. Deploy the updated GPO as you normally do.

Hide the TPM Firmware Update


recommendation
If you don't want users to see the recommendation to update TPM firmware, you can
disable it.

1. On your Group Policy management computer, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In Group Policy Management Editor, go to Computer configuration and then
select Administrative templates.
3. Expand the tree to Windows components > Windows Security > Device security.
4. Open the Hide the TPM Firmware Update recommendation setting and set it to
Enabled. Select OK.
5. Deploy the updated GPO as you normally do.
Device performance and health
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

The Device performance & health section contains information about hardware,
devices, and drivers related to the machine. IT administrators and IT pros should
reference the appropriate documentation library for the issues they're seeing, such as
the configure the Load and unload device drivers security policy setting and how to
deploy drivers during Windows 10 deployment using Microsoft Configuration Manager.

The Windows 10 IT pro troubleshooting article, and the main Windows 10


documentation library can also be helpful for resolving issues.

This section can be hidden from users of the machine. This option can be useful if you
don't want employees in your organization to see or have access to user-configured
options for the features shown in the section.

Hide the Device performance & health section


You can choose to hide the entire section by using Group Policy. The section won't
appear on the home page of Windows Security, and its icon won't be shown on the
navigation bar on the side.

This section can be hidden only by using Group Policy.

) Important

You must have Windows 10, version 1709 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In Group Policy Management Editor, go to Computer configuration and select
Administrative templates.
3. Expand the tree to Windows components > Windows Security > Device
performance and health.
4. Open the Hide the Device performance and health area setting and set it to
Enabled. Select OK.
5. Deploy the updated GPO as you normally do.

7 Note
If you hide all sections then Windows Security will show a restricted interface, as in
the following screenshot:
Family options
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

The Family options section contains links to settings and further information for parents
of a Windows PC. It isn't intended for enterprise or business environments.

Home users can learn more at the Help protection your family online in Windows
Security article at support.microsoft.com

This section can be hidden from users of the machine. This option can be useful if you
don't want employees in your organization to see or have access to this section.

Hide the Family options section


You can choose to hide the entire section by using Group Policy. The section won't
appear on the home page of Windows Security, and its icon won't be shown on the
navigation bar on the side.

This section can be hidden only by using Group Policy.

) Important

You must have Windows 10, version 1709 or later. The ADMX/ADML template files
for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
2. In Group Policy Management Editor, go to Computer configuration and select
Administrative templates.
3. Expand the tree to Windows components > Windows Security > Family options.
4. Open the Hide the Family options area setting and set it to Enabled. Select OK.
5. Deploy the updated GPO as you normally do.

7 Note

If you hide all sections then Windows Security will show a restricted interface, as in
the following screenshot:
Customize the Windows Security
settings for your organization
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

You can add information about your organization in a contact card in Windows
Security. You can include a link to a support site, a phone number for a help desk, and
an email address for email-based support.

This information will also be shown in some enterprise-specific notifications (including


notifications for the Block at first sight feature, and potentially unwanted applications).

Users can select the displayed information to initiate a support request:

Select Call or the phone number to open Skype to start a call to the displayed
number.
Select Email or the email address to create a new email in the machine's default
email app addressed to the displayed email.
Select Help portal or the website URL to open the machine's default web browser
and go to the displayed address.
Requirements
You must have Windows 10, version 1709 or later. The ADMX/ADML template files for
earlier versions of Windows don't include these Group Policy settings.

Use Group Policy to enable and customize


contact information
There are two stages to using the contact card and customized notifications. First, you
have to enable the contact card or custom notifications (or both), and then you must
specify at least a name for your organization and one piece of contact information.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.

2. In the Group Policy Management Editor, go to Computer configuration and


select Administrative templates.

3. Expand the tree to Windows components > Windows Security > Enterprise
Customization.

4. Enable the contact card and the customized notifications by configuring two
separate Group Policy settings. They'll both use the same source of information
(explained in Steps 5 and 6). You can enable both, or select one or the other:

a. To enable the contact card, open the Configure customized contact


information setting and set it to Enabled. Select OK.

7 Note

This can only be done in Group Policy.

b. To enable the customized notifications, open the Configure customized


notifications setting and set it to Enabled. Select OK.

5. After you've enabled the contact card or the customized notifications (or both),
you must configure the Specify contact company name to Enabled. Enter your
company or organization's name in the field in the Options section. Select OK.

6. To ensure the custom notifications or contact card appear, you must also configure
at least one of the following settings. Open the setting, select Enabled, and then
add the contact information in the field under Options:
a. Specify contact email address or Email ID
b. Specify contact phone number or Skype ID
c. Specify contact website

7 Note

If you enable Configure customized notifications and Specify contact


website policies, the contact website must begin with http: or https: (for
example, https://contoso.com/help ) to allow the user to interact with the
notification and navigate to the specified URL.

7. Select OK after you configure each setting to save your changes.

To enable the customized notifications and add the contact information in Intune, see
these articles:

Manage device security with endpoint security policies in Microsoft Intune.


Settings for the Windows Security experience profile in Microsoft Intune.

) Important

You must specify the contact company name and at least one contact method -
email, phone number, or website URL. If you do not specify the contact name and a
contact method the customization will not apply, the contact card will not show,
and notifications will not be customized.
Hide Windows Security notifications
Article • 07/31/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Security is used by many Windows security features to provide notifications


about the health and security of the machine. These include notifications about firewalls,
antivirus products, Windows Defender SmartScreen, and others.

In some cases, it may not be appropriate to show these notifications, for example, if you
want to hide regular status updates, or if you want to hide all notifications to the
employees in your organization.

There are two levels to hiding notifications:

1. Hide non-critical notifications, such as regular updates about the number of scans
Microsoft Defender Antivirus ran in the past week
2. Hide all notifications

If you set Hide all notifications to Enabled, changing the Hide non-critical notifications
setting has no effect.

You can only use Group Policy to change these settings.

Use Group Policy to hide non-critical


notifications
You can hide notifications that describe regular events related to the health and security
of the machine. These notifications are the ones that don't require an action from the
machine's user. It can be useful to hide these notifications if you find they're too
numerous or you have other status reporting on a larger scale (such as Windows Update
for Business reports or Microsoft Configuration Manager reporting).

These notifications can be hidden only by using Group Policy.

) Important

You must have Windows 10, version 1903 or higher. The ADMX/ADML template
files for earlier versions of Windows do not include these Group Policy settings.

1. Download the latest Administrative Templates (.admx) for Windows 10, v2004 .
2. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.
3. In Group Policy Management Editor, go to Computer configuration and select
Administrative templates.
4. Expand the tree to Windows components > Windows Security > Notifications.
For Windows 10 version 1803 and below, the path would be Windows
components > Windows Defender Security Center > Notifications
5. Open the Hide non-critical notifications setting and set it to Enabled. Select OK.
6. Deploy the updated GPO as you normally do.

Use Group Policy to hide all notifications


You can hide all notifications that are sourced from Windows Security. This option may
be useful if you don't want users of the machines from inadvertently modifying settings,
running antivirus scans, or otherwise performing security-related actions without your
input.

These notifications can be hidden only by using Group Policy.

) Important

You must have Windows 10, version 1903 or higher. The ADMX/ADML template
files for earlier versions of Windows do not include these Group Policy settings.

1. On your Group Policy management machine, open the Group Policy Management
Console, right-click the Group Policy Object you want to configure and select Edit.

2. In Group Policy Management Editor, go to Computer configuration and select


Administrative templates.

3. Expand the tree to Windows components > Windows Security > Notifications.
For Windows 10 version 1803 and below, the path would be Windows
components > Windows Defender Security Center > Notifications.

7 Note

For Windows 10 version 2004 and above the path would be Windows
components > Windows Security > Notifications.

4. Open the Hide all notifications setting and set it to Enabled. Select OK.

5. Deploy the updated GPO as you normally do.


7 Note

You can use the following registry key and DWORD value to Hide all notifications.

text

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender
Security Center\Notifications]
"DisableNotifications"=dword:00000001

You can use the following registry key and DWORD value to Hide not-critical
notifications.

text

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender
Security Center\Notifications]
"DisableEnhancedNotifications"=dword:00000001

Notifications
Purpose Notification Toast Identifier Critical? Notification
text Toggle

Network Your IT SENSE_ISOLATION Yes Firewall and


isolation administrator network
has caused protection
Windows notification
Defender to
disconnect
your device.
Contact IT
help desk.

Network Company SENSE_ISOLATION_CUSTOM (body) Yes Firewall and


isolation name has network
customized caused protection
Windows notification
Defender to
disconnect
your device.
Contact IT
help desk
phone
Purpose Notification Toast Identifier Critical? Notification
text Toggle

number, email
address, url.

Restricted Your IT SENSE_PROCESS_RESTRICTION Yes Firewall and


access administrator network
has caused protection
Windows notification
Defender to
limit actions
on this device.
Some apps
may not
function as
expected.
Contact IT
help desk.

Restricted Company has SENSE_PROCESS_RESTRICTION_CUSTOM Yes Firewall and


access caused (body) network
customized Windows protection
Defender to notification
limit actions
on this device.
Some apps
may not
function as
expected.
Contact IT
help desk.

HVCI, driver There may be HVCI_ENABLE_FAILURE Yes Firewall and


compat an network
check fails incompatibility protection
(upon trying on your notification
to enable) device.

HVCI, reboot The recent HVCI_ENABLE_SUCCESS Yes Firewall and


needed to change to network
enable your protection
protection notification
settings
requires a
restart of your
device.

Item skipped The Microsoft ITEM_SKIPPED Yes Virus &


in scan, due Defender threat
to exclusion Antivirus scan
Purpose Notification Toast Identifier Critical? Notification
text Toggle

setting, or skipped an protection


network item due to notification
scanning exclusion or
disabled by network
admin scanning
settings.

Remediation Microsoft CLEAN_FAILED Yes Virus &


failure Defender threat
Antivirus protection
couldn't notification
completely
resolve
potential
threats.

Follow-up Microsoft MANUALSTEPS_REQUIRED Yes Virus &


action Defender threat
(restart & Antivirus protection
scan) found threat notification
in file name.
Restart and
scan your
device. Restart
and scan

Follow-up Microsoft WDAV_REBOOT Yes Virus &


action Defender threat
(restart) Antivirus protection
found threat notification
in file. Restart
your device.

Follow-up Microsoft FULLSCAN_REQUIRED Yes Virus &


action (Full Defender threat
scan) Antivirus protection
found threat notification
in file. Run a
full scan of
your device.

Sample Review files SAMPLE_SUBMISSION_REQUIRED Yes Virus &


submission that Windows threat
prompt Defender will protection
send to notification
Microsoft.
Sending this
information
Purpose Notification Toast Identifier Critical? Notification
text Toggle

can improve
how Microsoft
Defender
Antivirus helps
protect your
device.

OS support Support for SUPPORT_ENDING Yes Virus &


ending your version threat
warning of Windows is protection
ending. When notification
this support
ends,
Microsoft
Defender
Antivirus
won't be
supported,
and your
device might
be at risk.

OS support Support for SUPPORT_ENDED and Yes Virus &


ended, your version SUPPORT_ENDED_NO_DEFENDER threat
device at risk of Windows protection
has ended. notification
Microsoft
Defender
Antivirus is no
longer
supported,
and your
device might
be at risk.

Summary Microsoft RECAP_FOUND_THREATS_SCANNED No Virus &


notification, Defender threat
items found Antivirus protection
successfully notification
took action on
n threats since
your last
summary. Your
device was
scanned n
times.
Purpose Notification Toast Identifier Critical? Notification
text Toggle

Summary Microsoft RECAP_FOUND_THREATS No Virus &


notification, Defender threat
items found, Antivirus protection
no scan successfully notification
count took action on
n threats since
your last
summary.

Summary Microsoft RECAP_NO THREATS_SCANNED No Virus &


notification, Defender threat
no items Antivirus protection
found, scans didn't find any notification
performed threats since
your last
summary. Your
device was
scanned n
times.

Summary Microsoft RECAP_NO_THREATS No Virus &


notification, Defender threat
no items Antivirus protection
found, no didn't find any notification
scans threats since
your last
summary.

Scan finished, Microsoft RECENT_SCAN_FOUND_THREATS No Virus &


manual, Defender threat
threats found Antivirus protection
scanned your notification
device at
timestamp on
date, and took
action against
threats.

Scan finished, Microsoft RECENT_SCAN_NO_THREATS No Virus &


manual, no Defender threat
threats found Antivirus protection
scanned your notification
device at
timestamp on
date. No
threats were
found.
Purpose Notification Toast Identifier Critical? Notification
text Toggle

Threat found Microsoft CRITICAL No Virus &


Defender threat
Antivirus protection
found threats. notification
Get details.

LPS on Microsoft PERIODIC_SCANNING_ON No Virus &


notification Defender threat
Antivirus is protection
periodically notification
scanning your
device. You're
also using
another
antivirus
program for
active
protection.

Long running Your IT BAFS No Firewall and


BaFS administrator network
requires a protection
security scan notification
of this item.
The scan
could take up
to n seconds.

Long running Company BAFS_DETECTED_CUSTOM (body) No Firewall and


BaFS requires a network
customized security scan protection
of this item. notification
The scan
could take up
to n seconds.

Sense This WDAV_SENSE_DETECTED No Firewall and


detection application network
was removed protection
because it was notification
blocked by
your IT
security
settings

Sense This WDAV_SENSE_DETECTED_CUSTOM No Firewall and


detection application (body) network
Purpose Notification Toast Identifier Critical? Notification
text Toggle

customized was removed protection


because it was notification
blocked by
your IT
security
settings

Ransomware Microsoft WDAV_RANSOMWARE_DETECTED No Virus &


specific Defender threat
detection Antivirus has protection
detected notification
threats, which
may include
ransomware.

ASR (HIPS) Your IT HIPS_ASR_BLOCKED No Firewall and


block administrator network
caused protection
Windows notification
Defender
Security
Center to
block this
action.
Contact your
IT help desk.

ASR (HIPS) Company HIPS_ASR_BLOCKED_CUSTOM (body) No Firewall and


block caused network
customized Windows protection
Defender notification
Security
Center to
block this
action.
Contact your
IT help desk.

CFA Controlled FOLDERGUARD_BLOCKED No Firewall and


(FolderGuard) folder access network
block blocked protection
process from notification
making
changes to
the folder
path
Purpose Notification Toast Identifier Critical? Notification
text Toggle

Network Company HIPS_NETWORK_BLOCKED_CUSTOM No Firewall and


protect caused (body) network
(HIPS) Windows protection
network Defender notification
block Security
customized Center to
block this
network
connection.
Contact your
IT help desk.

Network Your IT HIPS_NETWORK_BLOCKED No Firewall and


protection administrator network
(HIPS) caused protection
network Windows notification
block Defender
Security
Center to
block this
network
connection.
Contact your
IT help desk.

PUA Your settings PUA_DETECTED No Firewall and


detection, cause the network
not blocked detection of protection
any app that notification
might perform
unwanted
actions on
your
computer.

PUA Your IT PUA_BLOCKED No Firewall and


notification settings network
caused protection
Microsoft notification
Defender
Antivirus to
block an app
that may
potentially
perform
unwanted
Purpose Notification Toast Identifier Critical? Notification
text Toggle

actions on
your device.

PUA Company PUA_BLOCKED_CUSTOM (body) No Firewall and


notification, caused network
customized Microsoft protection
Defender notification
Antivirus to
block an app
that may
potentially
perform
unwanted
actions on
your device.

Network No Firewall and


isolation network
ended protection
notification

Network No Firewall and


isolation network
ended, protection
customized notification

Restricted No Firewall and


access ended network
protection
notification

Restricted No Firewall and


access network
ended, protection
customized notification

Dynamic lock No Account


on, but protection
bluetooth off notification

Dynamic lock No Account


on, bluetooth protection
on, but notification
device
unpaired

Dynamic lock No Account


on, bluetooth protection
Purpose Notification Toast Identifier Critical? Notification
text Toggle

on, but notification


unable to
detect device

NoPa or No Account
federated no protection
hello notification

NoPa or No Account
federated protection
hello broken notification
BitLocker overview
Article • 08/03/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Bitlocker is a Windows disk encryption feature, designed to protect data by providing


encryption for entire volumes.
BitLocker addresses the threats of data theft or exposure from lost, stolen, or
inappropriately decommissioned devices.

BitLocker provides maximum protection when used with a Trusted Platform Module
(TPM). A TPM is a hardware component installed in many devices and it works with
BitLocker to help protect user data and to ensure that a computer hasn't been tampered
with while the system is offline.

On devices that don't have a TPM, BitLocker can still be used to encrypt the Windows
operating system drive. However, this implementation requires the user to insert a USB
startup key to start the device or resume from hibernation. An operating system volume
password can be used to protect the operating system volume on a computer without
TPM. Both options don't provide the pre-startup system integrity verification offered by
BitLocker with a TPM.

In addition to the TPM, BitLocker offers the option to lock the normal startup process
until the user supplies a personal identification number (PIN) or inserts a removable
device (such as a USB flash drive) that contains a startup key. These additional security
measures provide multifactor authentication and assurance that the computer won't
start or resume from hibernation until the correct PIN or startup key is presented.

Practical applications
Data on a lost or stolen device is vulnerable to unauthorized access, either by running a
software-attack tool against it or by transferring the computer's hard drive to a different
computer. BitLocker helps mitigate unauthorized data access by enhancing file and
system protections. BitLocker also helps render data inaccessible when BitLocker-
protected devices are decommissioned or recycled.

System requirements
BitLocker has the following hardware requirements:
For BitLocker to use the system integrity check provided by a TPM, the computer
must have TPM 1.2 or later versions. If a computer doesn't have a TPM, saving a
startup key on a removable drive, such as a USB flash drive, becomes mandatory
when enabling BitLocker

A device with a TPM must also have a Trusted Computing Group (TCG)-compliant
BIOS or UEFI firmware. The BIOS or UEFI firmware establishes a chain of trust for
the pre-operating system startup, and it must include support for TCG-specified
Static Root of Trust Measurement. A computer without a TPM doesn't require TCG-
compliant firmware

The system BIOS or UEFI firmware (for TPM and non-TPM computers) must
support the USB mass storage device class, including reading small files on a USB
flash drive in the pre-operating system environment

7 Note

TPM 2.0 is not supported in Legacy and Compatibility Support Module (CSM)
modes of the BIOS. Devices with TPM 2.0 must have their BIOS mode
configured as native UEFI only. The Legacy and CSM options must be
disabled. For added security, enable the secure boot feature.

Installed Operating System on hardware in Legacy mode stops the OS from


booting when the BIOS mode is changed to UEFI. Use the tool MBR2GPT
before changing the BIOS mode, which prepares the OS and the disk to
support UEFI.

The hard disk must be partitioned with at least two drives:


The operating system drive (or boot drive) contains the operating system and
its support files. It must be formatted with the NTFS file system
The system drive contains the files that are needed to load Windows after the
firmware has prepared the system hardware. BitLocker isn't enabled on this
drive. For BitLocker to work, the system drive must not be encrypted, must differ
from the operating system drive, and must be formatted with the FAT32 file
system on computers that use UEFI-based firmware or with the NTFS file system
on computers that use BIOS firmware. It's recommended that the system drive
be approximately 350 MB in size. After BitLocker is turned on, it should have
approximately 250 MB of free space

) Important
When installed on a new device, Windows automatically creates the partitions that
are required for BitLocker.

An encrypted partition can't be marked as active.

7 Note

When installing the BitLocker optional component on a server, the Enhanced


Storage feature also needs to be installed. The Enhanced Storage feature is used to
support hardware encrypted drives.

Windows edition and licensing requirements


The following table lists the Windows editions that support BitLocker enablement:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

BitLocker enablement license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.
Overview of BitLocker device encryption
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article explains how BitLocker Device Encryption can help protect data on devices
running Windows. See BitLocker for a general overview and list of articles.

When users travel, their organization's confidential data goes with them. Wherever
confidential data is stored, it must be protected against unauthorized access. Windows
has a long history of providing at-rest data-protection solutions that guard against
nefarious attackers, beginning with the Encrypting File System in the Windows 2000
operating system. More recently, BitLocker has provided encryption for full drives and
portable drives. Windows consistently improves data protection by improving existing
options and providing new strategies.

Data Protection in Windows 11, Windows 10,


and Windows 7
The below table lists specific data-protection concerns and how they're addressed in
Windows 11, Windows 10, and Windows 7.

Windows 7 Windows 11 and Windows 10

When BitLocker is used with a PIN Modern Windows devices are increasingly protected with
to protect startup, PCs such as BitLocker Device Encryption out of the box and support
kiosks can't be restarted remotely. SSO to seamlessly protect the BitLocker encryption keys
from cold boot attacks.

Network Unlock allows PCs to start automatically when


connected to the internal network.

When BitLocker is enabled, the BitLocker pre-provisioning, encrypting hard drives, and
provisioning process can take Used Space Only encryption allow administrators to enable
several hours. BitLocker quickly on new computers.

There's no support for using BitLocker supports offloading encryption to encrypted hard
BitLocker with self-encrypting drives.
drives (SEDs).

Administrators have to use separate BitLocker supports encrypted hard drives with onboard
tools to manage encrypted hard encryption hardware built in, which allows administrators
drives.
Windows 7 Windows 11 and Windows 10

to use the familiar BitLocker administrative tools to


manage them.

Encrypting a new flash drive can Used Space Only encryption in BitLocker To Go allows users
take more than 20 minutes. to encrypt removable data drives in seconds.

BitLocker could require users to BitLocker requires the user to enter a recovery key only
enter a recovery key when system when disk corruption occurs or when the PIN or password
configuration changes occur. is lost.

Users need to enter a PIN to start Modern Windows devices are increasingly protected with
the PC, and then their password to BitLocker Device Encryption out of the box and support
sign in to Windows. SSO to help protect the BitLocker encryption keys from
cold boot attacks.

Prepare for drive and file encryption


The best type of security measures is transparent to the user during implementation and
use. Every time there's a possible delay or difficulty because of a security feature, there's
a strong likelihood that users will try to bypass security. This situation is especially true
for data protection, and that's a scenario that organizations need to avoid. Whether
planning to encrypt entire volumes, removable devices, or individual files, Windows 11
and Windows 10 meet these needs by providing streamlined, usable solutions. In fact,
several steps can be taken in advance to prepare for data encryption and make the
deployment quick and smooth.

TPM pre-provisioning
In Windows 7, preparing the TPM offered a few challenges:

Turning on the TPM required going into the BIOS or UEFI firmware of the device.
Turning on the TPM at the device requires someone to either physically go into the
BIOS or UEFI firmware settings of the device to turn on the TPM, or to install a
driver in Windows to turn on the TPM from within Windows.
When the TPM is enabled, it may require one or more restarts.

This made preparing the TPM in Windows 7 problematic. If IT staff are provisioning new
PCs, they can handle the required steps for preparing a TPM. However, if BitLocker
needed to be enabled on devices that are already in users' hands, those users would
probably struggle with the technical challenges. The user would then either call to IT for
support or leave BitLocker disabled.
Microsoft includes instrumentation in Windows 11 and Windows 10 that enable the
operating system to fully manage the TPM. There's no need to go into the BIOS, and all
scenarios that required a restart have been eliminated.

Deploy hard drive encryption


BitLocker is capable of encrypting entire hard drives, including both system and data
drives. BitLocker pre-provisioning can drastically reduce the time required to provision
new PCs with BitLocker enabled. With Windows 11 and Windows 10, administrators can
turn on BitLocker and the TPM from within the Windows Pre-installation Environment
before they install Windows or as part of an automated deployment task sequence
without any user interaction. Combined with Used Disk Space Only encryption and a
mostly empty drive (because Windows isn't yet installed), it takes only a few seconds to
enable BitLocker.

With earlier versions of Windows, administrators had to enable BitLocker after Windows
had been installed. Although this process could be automated, BitLocker would need to
encrypt the entire drive, a process that could take anywhere from several hours to more
than a day depending on drive size and performance, which delayed deployment.
Microsoft has improved this process through multiple features in Windows 11 and
Windows 10.

BitLocker Device Encryption


Beginning in Windows 8.1, Windows automatically enables BitLocker Device Encryption
on devices that support Modern Standby. With Windows 11 and Windows 10, Microsoft
offers BitLocker Device Encryption support on a much broader range of devices,
including those devices that are Modern Standby, and devices that run Home edition of
Windows 10 or Windows 11.

Microsoft expects that most devices in the future will pass the requirements for
BitLocker Device Encryption that will make BitLocker Device Encryption pervasive across
modern Windows devices. BitLocker Device Encryption further protects the system by
transparently implementing device-wide data encryption.

Unlike a standard BitLocker implementation, BitLocker Device Encryption is enabled


automatically so that the device is always protected. The following list outlines how
BitLocker Device Encryption is enabled automatically:

When a clean installation of Windows 11 or Windows 10 is completed and the out-


of-box experience is finished, the computer is prepared for first use. As part of this
preparation, BitLocker Device Encryption is initialized on the operating system
drive and fixed data drives on the computer with a clear key that is the equivalent
of standard BitLocker suspended state. In this state, the drive is shown with a
warning icon in Windows Explorer. The yellow warning icon is removed after the
TPM protector is created and the recovery key is backed up, as explained in the
following bullet points.

If the device isn't domain joined, a Microsoft account that has been granted
administrative privileges on the device is required. When the administrator uses a
Microsoft account to sign in, the clear key is removed, a recovery key is uploaded
to the online Microsoft account, and a TPM protector is created. Should a device
require the recovery key, the user will be guided to use an alternate device and
navigate to a recovery key access URL to retrieve the recovery key by using their
Microsoft account credentials.

If the user uses a domain account to sign in, the clear key isn't removed until the
user joins the device to a domain, and the recovery key is successfully backed up
to Active Directory Domain Services (AD DS). The following Group Policy settings
must be enabled for the recovery key to be backed up to AD DS:

Computer Configuration > Administrative Templates > Windows Components >


BitLocker Drive Encryption > Operating System Drives > Do not enable BitLocker
until recovery information is stored in AD DS for operating system drives

With this configuration, the recovery password is created automatically when the
computer joins the domain, and then the recovery key is backed up to AD DS, the
TPM protector is created, and the clear key is removed.

Similar to signing in with a domain account, the clear key is removed when the
user signs in to an Azure AD account on the device. As described in the bullet
point above, the recovery password is created automatically when the user
authenticates to Azure AD. Then, the recovery key is backed up to Azure AD, the
TPM protector is created, and the clear key is removed.

Microsoft recommends automatically enabling BitLocker Device Encryption on any


systems that support it. However, the automatic BitLocker Device Encryption process can
be prevented by changing the following registry setting:

Subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BitLocker
Type: REG_DWORD
Value: PreventDeviceEncryption equal to 1 (True)
Administrators can manage domain-joined devices that have BitLocker Device
Encryption enabled through Microsoft BitLocker Administration and Monitoring
(MBAM). In this case, BitLocker Device Encryption automatically makes additional
BitLocker options available. No conversion or encryption is required, and MBAM can
manage the full BitLocker policy set if any configuration changes are required.

7 Note

BitLocker Device Encryption uses the XTS-AES 128-bit encryption method. If a


different encryption method and/or cipher strength is needed but the device is
already encrypted, it must first be decrypted before the new encryption method
and/or cipher strength can be applied. After the device has been decrypted,
different BitLocker settings can be applied.

Used Disk Space Only encryption


BitLocker in earlier Windows versions could take a long time to encrypt a drive because
it encrypted every byte on the volume including areas that didn't have data. Encrypting
every byte on the volume including areas that didn't have data is known as full disk
encryption. Full disk encryption is still the most secure way to encrypt a drive, especially
if a drive has previously contained confidential data that has since been moved or
deleted. If a drive previously had confidential data that has been moved or deleted,
traces of the confidential data could remain on portions of the drive marked as unused.

To reduce encryption time, BitLocker in Windows 11 and Windows 10 let users choose to
encrypt just the areas of the disk that contain data. Areas of the disk that don't contain
data and are empty won't be encrypted. Any new data is encrypted as it's created.
Depending on the amount of data on the drive, this option can reduce the initial
encryption time by more than 99 percent.

Exercise caution when encrypting only used space on an existing volume on which
confidential data may have already been stored in an unencrypted state. When using
used space encryption, sectors where previously unencrypted data are stored can be
recovered through disk-recovery tools until they're overwritten by new encrypted data.
In contrast, encrypting only used space on a brand-new volume can significantly
decrease deployment time without the security risk because all new data will be
encrypted as it's written to the disk.

Encrypted hard drive support


SEDs have been available for years, but Microsoft couldn't support their use with some
earlier versions of Windows because the drives lacked important key management
features. Microsoft worked with storage vendors to improve the hardware capabilities,
and now BitLocker supports the next generation of SEDs, which are called encrypted
hard drives.

Encrypted hard drives provide onboard cryptographic capabilities to encrypt data on


drives. This feature improves both drive and system performance by offloading
cryptographic calculations from the PC's processor to the drive itself. Data is rapidly
encrypted by the drive by using dedicated, purpose-built hardware. If planning to use
whole-drive encryption with Windows 11 or Windows 10, Microsoft recommends
researching hard drive manufacturers and models to determine whether any of their
encrypted hard drives meet the security and budget requirements.

For more information about encrypted hard drives, see Encrypted hard drive.

Preboot information protection


An effective implementation of information protection, like most security controls,
considers usability and security. Users typically prefer a simple security experience. In
fact, the more transparent a security solution becomes, the more likely users are to
conform to it.

It's crucial that organizations protect information on their PCs regardless of the state of
the computer or the intent of users. This protection shouldn't be cumbersome to users.
One undesirable and previously commonplace situation is when the user is prompted
for input during preboot, and then again during Windows sign-in. Challenging users for
input more than once should be avoided.

Windows 11 and Windows 10 can enable a true SSO experience from the preboot
environment on modern devices and in some cases even on older devices when robust
information protection configurations are in place. The TPM in isolation is able to
securely protect the BitLocker encryption key while it is at rest, and it can securely
unlock the operating system drive. When the key is in use and thus in memory, a
combination of hardware and Windows capabilities can secure the key and prevent
unauthorized access through cold-boot attacks. Although other countermeasures like
PIN-based unlock are available, they aren't as user-friendly; depending on the devices'
configuration they may not offer additional security when it comes to key protection.
For more information, see BitLocker Countermeasures.

Manage passwords and PINs


When BitLocker is enabled on a system drive and the PC has a TPM, users can be
required to type a PIN before BitLocker will unlock the drive. Such a PIN requirement
can prevent an attacker who has physical access to a PC from even getting to the
Windows sign-in, which makes it almost impossible for the attacker to access or modify
user data and system files.

Requiring a PIN at startup is a useful security feature because it acts as a second


authentication factor. However, this configuration comes with some costs. One of the
most significant costs is the need to change the PIN regularly. In enterprises that used
BitLocker with Windows 7 and the Windows Vista operating system, users had to
contact systems administrators to update their BitLocker PIN or password. This
requirement not only increased management costs but made users less willing to
change their BitLocker PIN or password regularly.

Windows 11 and Windows 10 users can update their BitLocker PINs and passwords
themselves, without administrator credentials. Not only will this feature reduce support
costs, but it could improve security, too, because it encourages users to change their
PINs and passwords more often. In addition, Modern Standby devices don't require a
PIN for startup: They're designed to start infrequently and have other mitigations in
place that further reduce the attack surface of the system.

For more information about how startup security works and the countermeasures that
Windows 11 and Windows 10 provide, see Protect BitLocker from pre-boot attacks.

Configure Network Unlock


Some organizations have location specific data security requirements. Location specific
data security requirements are most common in environments where high-value data is
stored on PCs. The network environment may provide crucial data protection and
enforce mandatory authentication. Therefore, policy states that those PCs shouldn't
leave the building or be disconnected from the corporate network. Safeguards like
physical security locks and geofencing may help enforce this policy as reactive controls.
Beyond these safeguards, a proactive security control that grants data access only when
the PC is connected to the corporate network is necessary.

Network Unlock enables BitLocker-protected PCs to start automatically when connected


to a wired corporate network on which Windows Deployment Services runs. Anytime the
PC isn't connected to the corporate network, a user must type a PIN to unlock the drive
(if PIN-based unlock is enabled). Network Unlock requires the following infrastructure:

Client PCs that have Unified Extensible Firmware Interface (UEFI) firmware version
2.3.1 or later, which supports Dynamic Host Configuration Protocol (DHCP)
A server running at least Windows Server 2012 with the Windows deployment
services (WDS) role

A server with the DHCP server role installed

For more information about how to configure Network unlock feature, see BitLocker:
How to enable Network Unlock.

Microsoft BitLocker administration and


monitoring
Part of the Microsoft Desktop Optimization Pack, Microsoft BitLocker Administration and
Monitoring (MBAM) makes it easier to manage and support BitLocker and BitLocker To
Go. MBAM 2.5 with Service Pack 1, the latest version, has the following key features:

Enables administrators to automate the process of encrypting volumes on client


computers across the enterprise.

Enables security officers to quickly determine the compliance state of individual


computers or even of the enterprise itself.

Provides centralized reporting and hardware management with Microsoft


Configuration Manager.

Reduces the workload on the help desk to assist end users with BitLocker recovery
requests.

Enables end users to recover encrypted devices independently by using the Self-
Service Portal.

Enables security officers to easily audit access to recovery key information.

Empowers Windows Enterprise users to continue working anywhere with the


assurance that their corporate data is protected.

Enforces the BitLocker encryption policy options that are set for the enterprise.

Integrates with existing management tools, such as Microsoft Configuration


Manager.

Offers an IT-customizable recovery user experience.

Supports Windows 11 and Windows 10.


) Important

Enterprises could use MBAM to manage client computers with BitLocker that are
domain-joined on-premises until mainstream support ended in July 2019, or they
could receive extended support until April 2026.

Going forward, the functionality of MBAM will be incorporated into Configuration


Manager. For more information, see Plan for BitLocker management.

Enterprises not using Configuration Manager can use the built-in features of Azure AD
and Microsoft Intune for administration and monitoring. For more information, see
Monitor device encryption with Intune.
BitLocker Countermeasures
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Windows uses technologies including trusted platform module (TPM), secure boot, and
measured boot to help protect BitLocker encryption keys against attacks. BitLocker is
part of a strategic approach to securing data against offline attacks through encryption
technology. Data on a lost or stolen computer is vulnerable. For example, there could be
unauthorized access, either by running a software attack tool against the computer or
by transferring the computer's hard disk to a different computer.

BitLocker helps mitigate unauthorized data access on lost or stolen computers before
the authorized operating system is started. This mitigation is done by:

Encrypting volumes on a computer. For example, BitLocker can be turned on for


the operating system volume, a volume on a fixed drive. or removable data drive
(such as a USB flash drive, SD card, etc.) Turning on BitLocker for the operating
system volume encrypts all system files on the volume, including the paging files
and hibernation files. The only exception is for the System partition, which includes
the Windows Boot Manager and minimal boot collateral required for decryption of
the operating system volume after the key is unsealed.

Ensuring the integrity of early boot components and boot configuration data.
On devices that have a TPM version 1.2 or higher, BitLocker uses the enhanced
security capabilities of the TPM to make data accessible only if the computer's
BIOS firmware code and configuration, original boot sequence, boot components,
and BCD configuration all appear unaltered and the encrypted disk is located in
the original computer. On systems that use TPM PCR[7], BCD setting changes
deemed safe are permitted to improve usability.

The next sections provide more details about how Windows protects against various
attacks on the BitLocker encryption keys in Windows 11, Windows 10, Windows 8.1, and
Windows 8.

For more information about how to enable the best overall security configuration for
devices beginning with Windows 10 version 1803, see Standards for a highly secure
Windows device.

Protection before startup


Before Windows starts, security features implemented as part of the device hardware
and firmware must be relied on, including TPM and secure boot. Fortunately, many
modern computers feature a TPM and secure boot.

Trusted Platform Module


A trusted platform module (TPM) is a microchip designed to provide basic security-
related functions, primarily involving encryption keys. On some platforms, TPM can
alternatively be implemented as a part of secure firmware. BitLocker binds encryption
keys with the TPM to ensure that a computer hasn't been tampered with while the
system was offline. For more info about TPM, see Trusted Platform Module.

UEFI and secure boot


Unified Extensible Firmware Interface (UEFI) is a programmable boot environment that
initializes devices and starts the operating system's bootloader.

The UEFI specification defines a firmware execution authentication process called Secure
Boot. Secure Boot blocks untrusted firmware and bootloaders (signed or unsigned) from
being able to start on the system.

By default, BitLocker provides integrity protection for Secure Boot by utilizing the TPM
PCR[7] measurement. An unauthorized EFI firmware, EFI boot application, or bootloader
can't run and acquire the BitLocker key.

BitLocker and reset attacks


To defend against malicious reset attacks, BitLocker uses the TCG Reset Attack
Mitigation, also known as MOR bit (Memory Overwrite Request), before extracting keys
into memory.

7 Note

This does not protect against physical attacks where an attacker opens the case and
attacks the hardware.

Security policies
The next sections cover pre-boot authentication and DMA policies that can provide
additional protection for BitLocker.
Pre-boot authentication
Pre-boot authentication with BitLocker is a policy setting that requires the use of either
user input, such as a PIN, a startup key, or both to authenticate prior to making the
contents of the system drive accessible. The Group Policy setting is Require additional
authentication at startup and the corresponding setting in the BitLocker CSP is
SystemDrivesRequireStartupAuthentication.

BitLocker accesses and stores the encryption keys in memory only after pre-boot
authentication is completed. If Windows can't access the encryption keys, the device
can't read or edit the files on the system drive. The only option for bypassing pre-boot
authentication is entering the recovery key.

Pre-boot authentication is designed to prevent the encryption keys from being loaded
to system memory without the trusted user supplying another authentication factor
such as a PIN or startup key. This feature helps mitigate DMA and memory remanence
attacks.

On computers with a compatible TPM, operating system drives that are BitLocker-
protected can be unlocked in four ways:

TPM-only. Using TPM-only validation doesn't require any interaction with the user
to unlock and provide access to the drive. If the TPM validation succeeds, the user
sign-in experience is the same as a standard sign-in. If the TPM is missing or
changed or if BitLocker detects changes to the BIOS or UEFI code or configuration,
critical operating system startup files, or the boot configuration, BitLocker enters
recovery mode, and the user must enter a recovery password to regain access to
the data. This option is more convenient for sign-in but less secure than the other
options, which require an additional authentication factor.

TPM with startup key. In addition to the protection that the TPM-only provides,
part of the encryption key is stored on a USB flash drive, referred to as a startup
key. Data on the encrypted volume can't be accessed without the startup key.

TPM with PIN. In addition to the protection that the TPM provides, BitLocker
requires that the user enters a PIN. Data on the encrypted volume can't be
accessed without entering the PIN. TPMs also have anti-hammering protection that
is designed to prevent brute force attacks that attempt to determine the PIN.

TPM with startup key and PIN. In addition to the core component protection that
the TPM-only provides, part of the encryption key is stored on a USB flash drive,
and a PIN is required to authenticate the user to the TPM. This configuration
provides multifactor authentication so that if the USB key is lost or stolen, it can't
be used for access to the drive, because the correct PIN is also required.

In the following group policy example, TPM + PIN is required to unlock an operating
system drive:

Pre-boot authentication with a PIN can mitigate an attack vector for devices that use a
bootable eDrive because an exposed eDrive bus can allow an attacker to capture the
BitLocker encryption key during startup. Pre-boot authentication with a PIN can also
mitigate DMA port attacks during the window of time between when BitLocker unlocks
the drive and Windows boots to the point that Windows can set any port-related
policies that have been configured.

On the other hand, Pre-boot authentication-prompts can be inconvenient to users. In


addition, users who forget their PIN or lose their startup key are denied access to their
data until they can contact their organization's support team to obtain a recovery key.
Pre-boot authentication can also make it more difficult to update unattended desktops
and remotely administered servers because a PIN needs to be entered when a computer
reboots or resumes from hibernation.

To address these issues, BitLocker Network Unlock can be deployed. Network Unlock
allows systems within the physical enterprise security perimeter that meet the hardware
requirements and have BitLocker enabled with TPM+PIN to boot into Windows without
user intervention. It requires direct ethernet connectivity to an enterprise Windows
Deployment Services (WDS) server.

Protecting Thunderbolt and other DMA ports


There are a few different options to protect DMA ports, such as Thunderbolt™3.
Beginning with Windows 10 version 1803, new Intel-based devices have kernel
protection against DMA attacks via Thunderbolt™ 3 ports enabled by default. This
Kernel DMA Protection is available only for new systems beginning with Windows 10
version 1803, as it requires changes in the system firmware and/or BIOS.

You can use the System Information desktop app MSINFO32.exe to check if a device has
kernel DMA protection enabled:

If kernel DMA protection isn't enabled, follow these steps to protect Thunderbolt™ 3
enabled ports:

1. Require a password for BIOS changes

2. Intel Thunderbolt Security must be set to User Authorization in BIOS settings. Refer
to Intel Thunderbolt™ 3 and Security on Microsoft Windows® 10 Operating
System documentation

3. Additional DMA security may be added by deploying policy (beginning with


Windows 10 version 1607 or Windows 11):

MDM: DataProtection/AllowDirectMemoryAccess policy

Group Policy: Disable new DMA devices when this computer is locked (This
setting isn't configured by default.)

For Thunderbolt v1 and v2 (DisplayPort Connector), refer to the Thunderbolt Mitigation


section in Blocking the SBP-2 driver and Thunderbolt controllers to reduce 1394 DMA
and Thunderbolt DMA threats to BitLocker . For SBP-2 and 1394 (also known as
Firewire), refer to the SBP-2 Mitigation section in Blocking the SBP-2 driver and
Thunderbolt controllers to reduce 1394 DMA and Thunderbolt DMA threats to
BitLocker .

Attack countermeasures
This section covers countermeasures for specific types of attacks.

Bootkits and rootkits


A physically present attacker might attempt to install a bootkit or rootkit-like piece of
software into the boot chain in an attempt to steal the BitLocker keys. The TPM should
observe this installation via PCR measurements, and the BitLocker key won't be released.

7 Note

BitLocker protects against this attack by default.

A BIOS password is recommended for defense-in-depth in case a BIOS exposes settings


that may weaken the BitLocker security promise. Intel Boot Guard and AMD Hardware
Verified Boot support stronger implementations of Secure Boot that provide additional
resilience against malware and physical attacks. Intel Boot Guard and AMD Hardware
Verified Boot are part of platform boot verification standards for a highly secure
Windows device.

Brute force attacks against a PIN


Require TPM + PIN for anti-hammering protection.

DMA attacks
See Protecting Thunderbolt and other DMA ports earlier in this article.

Paging file, crash dump, and Hyberfil.sys attacks


These files are secured on an encrypted volume by default when BitLocker is enabled on
OS drives. It also blocks automatic or manual attempts to move the paging file.

Memory remanence
Enable secure boot and mandatorily prompt a password to change BIOS settings. For
customers requiring protection against these advanced attacks, configure a TPM+PIN
protector, disable Standby power management, and shut down or hibernate the device
before it leaves the control of an authorized user.

Tricking BitLocker to pass the key to a rogue operating


system
An attacker might modify the boot manager configuration database (BCD) which is
stored on a non-encrypted partition and add an entry point to a rogue operating system
on a different partition. During the boot process, BitLocker code will make sure that the
operating system that the encryption key obtained from the TPM is given to, is
cryptographically verified to be the intended recipient. Because this strong
cryptographic verification already exists, we don't recommend storing a hash of a disk
partition table in Platform Configuration Register (PCR) 5.

An attacker might also replace the entire operating system disk while preserving the
platform hardware and firmware and could then extract a protected BitLocker key blob
from the metadata of the victim OS partition. The attacker could then attempt to unseal
that BitLocker key blob by calling the TPM API from an operating system under their
control. This will not succeed because when Windows seals the BitLocker key to the
TPM, it does it with a PCR 11 value of 0, and to successfully unseal the blob, PCR 11 in
the TPM must have a value of 0. However, when the boot manager passes the control to
any boot loader (legitimate or rogue) it always changes PCR 11 to a value of 1. Since the
PCR 11 value is guaranteed to be different after exiting the boot manager, the attacker
can't unlock the BitLocker key.

Attacker countermeasures
The following sections cover mitigations for different types of attackers.

Attacker without much skill or with limited physical


access
Physical access may be limited by a form factor that doesn't expose buses and memory.
For example, there are no external DMA-capable ports, no exposed screws to open the
chassis, and memory is soldered to the mainboard.

This attacker of opportunity doesn't use destructive methods or sophisticated forensics


hardware/software.
Mitigation:

Pre-boot authentication set to TPM only (the default)

Attacker with skill and lengthy physical access


Targeted attack with plenty of time; this attacker will open the case, will solder, and will
use sophisticated hardware or software.

Mitigation:

Pre-boot authentication set to TPM with a PIN protector (with a sophisticated


alphanumeric PIN [enhanced pin] to help the TPM anti-hammering mitigation).

-And-

Disable Standby power management and shut down or hibernate the device
before it leaves the control of an authorized user. This configuration can be set
using the following Group Policy:

Computer Configuration > Policies > Administrative Templates > Windows


Components > File Explorer > Show hibernate in the power options menu

Computer Configuration > Policies > Administrative Templates > Power


Management > Sleep Settings > Allow standby states (S1-S3) when sleeping
(plugged in)

Computer Configuration > Policies > Administrative Templates > Power


Management > Sleep Settings > Allow standby states (S1-S3) when sleeping
(on battery)

) Important

These settings are not configured by default.

For some systems, bypassing TPM-only may require opening the case, and may require
soldering, but could possibly be done for a reasonable cost. Bypassing a TPM with a PIN
protector would cost much more, and require brute forcing the PIN. With a
sophisticated enhanced PIN, it could be nearly impossible. The Group Policy setting for
enhanced PIN is:

Computer Configuration > Policies > Administrative Templates > Windows


Components > BitLocker Drive Encryption > Operating System Drives > Allow
enhanced PINs for startup
) Important

This setting is not configured by default.

For secure administrative workstations, Microsoft recommends a TPM with PIN


protector and to disable Standby power management and shut down or hibernate the
device.

Related articles
Blocking the SBP-2 driver and Thunderbolt controllers to reduce 1394 DMA and
Thunderbolt DMA threats to BitLocker
BitLocker Group Policy settings
BitLocker CSP
Winlogon automatic restart sign-on (ARSO)
Prepare an organization for BitLocker:
Planning and policies
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article for the IT professional explains how to plan BitLocker deployment.

When BitLocker deployment strategy is defined, define the appropriate policies and
configuration requirements based on the business requirements of the organization.
The following sections will help with collecting information. Use this information to help
with the decision-making process about deploying and managing BitLocker systems.

Audit the environment


To plan a BitLocker deployment, understand the current environment. Perform an
informal audit to define the current policies, procedures, and hardware environment.
Review the existing disk encryption software corporate security policies. If the
organization isn't using disk encryption software, then none of these policies will exist. If
disk encryption software is being used, then the organization's policies might need to
be changed to use the BitLocker features.

To help document the organization's current disk encryption security policies, answer
the following questions:

1. Are there policies to determine which computers will use BitLocker and which
computers won't use BitLocker?

2. What policies exist to control recovery password and recovery key storage?

3. What are the policies for validating the identity of users who need to perform
BitLocker recovery?

4. What policies exist to control who in the organization has access to recovery data?

5. What policies exist to control computer decommissioning or retirement?

Encryption keys and authentication


BitLocker helps prevent unauthorized access to data on lost or stolen computers by:
Encrypting the entire Windows operating system volume on the hard disk.
Verifying the boot process integrity.

The trusted platform module (TPM) is a hardware component installed in many newer
computers by the computer manufacturers. It works with BitLocker to help protect user
data. And, help make sure a computer hasn't been tampered with while the system was
offline.

Also, BitLocker can lock the normal startup process until the user supplies a personal
identification number (PIN) or inserts a removable USB device that contains a startup
key. These extra security measures provide multifactor authentication. They also make
sure that the computer won't start or resume from hibernation until the correct PIN or
startup key is presented.

On computers that don't have a TPM version 1.2 or higher, BitLocker can still be used to
encrypt the Windows operating system volume. However, this implementation requires
the user to insert a USB startup key to start the computer or resume from hibernation. It
doesn't provide the pre-startup system integrity verification offered by BitLocker
working with a TPM.

BitLocker key protectors

Key Description
protector

TPM A hardware device used to help establish a secure root-of-trust. BitLocker only
supports TPM 1.2 or higher versions.

PIN A user-entered numeric key protector that can only be used in addition to the
TPM.

Enhanced A user-entered alphanumeric key protector that can only be used in addition to
PIN the TPM.

Startup key An encryption key that can be stored on most removable media. This key protector
can be used alone on non-TPM computers, or with a TPM for added security.

Recovery A 48-digit number used to unlock a volume when it is in recovery mode. Numbers
password can often be typed on a regular keyboard. If the numbers on the normal keyboard
aren't responding, the function keys (F1-F10) can be used to input the numbers.

Recovery key An encryption key stored on removable media that can be used for recovering
data encrypted on a BitLocker volume.

BitLocker authentication methods


Authentication Requires Description
method user
interaction

TPM only No TPM validates early boot components.

TPM + PIN Yes TPM validates early boot components. The user must enter
the correct PIN before the start-up process can continue, and
before the drive can be unlocked. The TPM enters lockout if
the incorrect PIN is entered repeatedly, to protect the PIN
from brute force attacks. The number of repeated attempts
that will trigger a lockout is variable.

TPM + Network No The TPM successfully validates early boot components, and a
key valid encrypted network key has been provided from the
WDS server. This authentication method provides automatic
unlock of operating system volumes at system reboot while
still maintaining multifactor authentication.

TPM + startup Yes The TPM successfully validates early boot components, and a
key USB flash drive containing the startup key has been inserted.

Startup key only Yes The user is prompted for the USB flash drive that has the
recovery key and/or startup key, and then reboot the
computer.

Will computers without TPM 1.2 or higher versions be supported?


Determine whether computers that don't have a TPM 1.2 or higher versions in the
environment will be supported. If it's decided to support computers with TPM 1.2 or
higher versions, a user must use a USB startup key to boot the system. This startup key
requires extra support processes similar to multifactor authentication.

What areas of the organization need a baseline level of data


protection?

The TPM-only authentication method provides the most transparent user experience for
organizations that need a baseline level of data protection to meet security policies. It
has the lowest total cost of ownership. TPM-only might also be more appropriate for
computers that are unattended or that must reboot unattended.

However, TPM-only authentication method offers the lowest level of data protection.
This authentication method protects against attacks that modify early boot components.
But, the level of protection can be affected by potential weaknesses in hardware or in
the early boot components. BitLocker's multifactor authentication methods significantly
increase the overall level of data protection.

What areas of the organization need a more secure level of data


protection?
If there are user computers with highly sensitive data, then deploy BitLocker with
multifactor authentication on those systems. Requiring the user to input a PIN
significantly increases the level of protection for the system. BitLocker Network Unlock
can also be used to allow these computers to automatically unlock when connected to a
trusted wired network that can provide the Network Unlock key.

What multifactor authentication method does the organization


prefer?
The protection differences provided by multifactor authentication methods can't be
easily quantified. Consider each authentication method's impact on Helpdesk support,
user education, user productivity, and any automated systems management processes.

TPM hardware configurations


In the deployment plan, identify what TPM-based hardware platforms will be supported.
Document the hardware models from an OEM(s) being used by the organization so that
their configurations can be tested and supported. TPM hardware requires special
consideration during all aspects of planning and deployment.

TPM 1.2 states and initialization


For TPM 1.2, there are multiple possible states. Windows automatically initializes the
TPM, which brings it to an enabled, activated, and owned state. This state is the state
that BitLocker requires before it can use the TPM.

Endorsement keys
For a TPM to be usable by BitLocker, it must contain an endorsement key, which is an
RSA key pair. The private half of the key pair is held inside the TPM and is never revealed
or accessible outside the TPM. If the TPM doesn't have an endorsement key, BitLocker
will force the TPM to generate one automatically as part of BitLocker setup.
An endorsement key can be created at various points in the TPM's lifecycle, but needs to
be created only once for the lifetime of the TPM. If an endorsement key doesn't exist for
the TPM, it must be created before TPM ownership can be taken.

For more information about the TPM and the TCG, see the Trusted Computing Group:
Trusted Platform Module (TPM) Specifications (https://go.microsoft.com/fwlink/p/?
linkid=69584 ).

Non-TPM hardware configurations


Devices that don't include a TPM can still be protected by drive encryption. Windows To
Go workspaces can be BitLocker protected using a startup password and PCs without a
TPM can use a startup key.

Use the following questions to identify issues that might affect the deployment in a
non-TPM configuration:

Are password complexity rules in place?


Is there a budget for USB flash drives for each of these computers?
Do existing non-TPM devices support USB devices at boot time?

Test the individual hardware platforms with the BitLocker system check option while
enabling BitLocker. The system check makes sure that BitLocker can read the recovery
information from a USB device and encryption keys correctly before it encrypts the
volume. CD and DVD drives can't act as a block storage device and can't be used to
store the BitLocker recovery material.

Disk configuration considerations


To function correctly, BitLocker requires a specific disk configuration. BitLocker requires
two partitions that meet the following requirements:

The operating system partition contains the operating system and its support files;
it must be formatted with the NTFS file system
The system partition (or boot partition) includes the files needed to load Windows
after the BIOS or UEFI firmware has prepared the system hardware. BitLocker isn't
enabled on this partition. For BitLocker to work, the system partition must not be
encrypted, and must be on a different partition than the operating system. On UEFI
platforms, the system partition must be formatted with the FAT 32-file system. On
BIOS platforms, the system partition must be formatted with the NTFS file system.
It should be at least 350 MB in size.
Windows setup automatically configures the disk drives of computers to support
BitLocker encryption.

Windows Recovery Environment (Windows RE) is an extensible recovery platform that is


based on Windows Pre-installation Environment (Windows PE). When the computer fails
to start, Windows automatically transitions into this environment, and the Startup Repair
tool in Windows RE automates the diagnosis and repair of an unbootable Windows
installation. Windows RE also contains the drivers and tools that are needed to unlock a
volume protected by BitLocker by providing a recovery key or recovery password. To use
Windows RE with BitLocker, the Windows RE boot image must be on a volume that isn't
protected by BitLocker.

Windows RE can also be used from boot media other than the local hard disk. If
Windows RE isn't installed on the local hard disk of BitLocker-enabled computers, then
different methods can be used to boot Windows RE. For example, Windows Deployment
Services (WDS), CD-ROM, or USB flash drive can be used for recovery.

BitLocker provisioning
In Windows Vista and Windows 7, BitLocker was provisioned after the installation for
system and data volumes. It used the manage-bde command line interface or the Control
Panel user interface. With newer operating systems, BitLocker can be provisioned before
the operating system is installed. Preprovisioning requires the computer have a TPM.

To check the BitLocker status of a particular volume, administrators can look at the drive
status in the BitLocker control panel applet or Windows Explorer. The "Waiting For
Activation" status with a yellow exclamation icon means that the drive was
preprovisioned for BitLocker. This status means that there was only a clear protector
used when encrypting the volume. In this case, the volume isn't protected, and needs to
have a secure key added to the volume before the drive is considered fully protected.
Administrators can use the control panel options, the manage-bde tool, or WMI APIs to
add an appropriate key protector. The volume status will be updated.

When using the control panel options, administrators can choose to Turn on BitLocker
and follow the steps in the wizard to add a protector, such as a PIN for an operating
system volume (or a password if no TPM exists), or a password or smart card protector
to a data volume. Then the drive security window is presented before changing the
volume status.

Administrators can enable BitLocker before to operating system deployment from the
Windows Pre-installation Environment (WinPE). This step is done with a randomly
generated clear key protector applied to the formatted volume. It encrypts the volume
before running the Windows setup process. If the encryption uses the Used Disk Space
Only option, then this step takes only a few seconds. And, it incorporates into the
regular deployment processes.

Used Disk Space Only encryption


The BitLocker Setup wizard provides administrators the ability to choose the Used Disk
Space Only or Full encryption method when enabling BitLocker for a volume.
Administrators can use the new BitLocker group policy setting to enforce either Used
Disk Space Only or Full disk encryption.

Launching the BitLocker Setup wizard prompts for the authentication method to be
used (password and smart card are available for data volumes). Once the method is
chosen and the recovery key is saved, the wizard asks to choose the drive encryption
type. Select Used Disk Space Only or Full drive encryption.

With Used Disk Space Only, just the portion of the drive that contains data will be
encrypted. Unused space will remain unencrypted. This behavior causes the encryption
process to be much faster, especially for new PCs and data drives. When BitLocker is
enabled with this method, as data is added to the drive, the portion of the drive used is
encrypted. So, there's never unencrypted data stored on the drive.

With Full drive encryption, the entire drive is encrypted, whether data is stored on it or
not. This option is useful for drives that have been repurposed, and may contain data
remnants from their previous use.

Active Directory Domain Services


considerations
BitLocker integrates with Active Directory Domain Services (AD DS) to provide
centralized key management. By default, no recovery information is backed up to Active
Directory. Administrators can configure the following group policy setting for each drive
type to enable backup of BitLocker recovery information:

Computer Configuration > Administrative Templates > Windows Components >


BitLocker Drive Encryption > drive type > Choose how BitLocker-protected drives can
be recovered.

By default, only Domain Admins have access to BitLocker recovery information, but
access can be delegated to others.

The following recovery data is saved for each computer object:


Recovery password

A 48-digit recovery password used to recover a BitLocker-protected volume. Users


enter this password to unlock a volume when BitLocker enters recovery mode.

Key package data

With this key package and the recovery password, portions of a BitLocker-
protected volume can be decrypted if the disk is severely damaged. Each key
package works only with the volume it was created on, which is identified by the
corresponding volume ID.

FIPS support for recovery password protector


Functionality introduced in Windows Server 2012 R2 and Windows 8.1 allows BitLocker
to be fully functional in FIPS mode.

7 Note

The United States Federal Information Processing Standard (FIPS) defines security
and interoperability requirements for computer systems that are used by the U.S.
Federal Government. The FIPS-140 standard defines approved cryptographic
algorithms. The FIPS-140 standard also sets forth requirements for key generation
and for key management. The National Institute of Standards and Technology
(NIST) uses the Cryptographic Module Validation Program (CMVP) to determine
whether a particular implementation of a cryptographic algorithm is compliant with
the FIPS-140 standard. An implementation of a cryptographic algorithm is
considered FIPS-140-compliant only if it has been submitted for and has passed
NIST validation. An algorithm that has not been submitted cannot be considered
FIPS-compliant even if the implementation produces identical data as a validated
implementation of the same algorithm.

Before these supported versions of Windows, when Windows was in FIPS mode,
BitLocker prevented the creation or use of recovery passwords and instead forced the
user to use recovery keys. For more information about these issues, see the support
article The recovery password for Windows BitLocker isn't available when FIPS compliant
policy is set in Windows.

However, on computers running these supported systems with BitLocker enabled:

FIPS-compliant recovery password protectors can be created when Windows is in


FIPS mode. These protectors use the FIPS-140 NIST SP800-132 algorithm.
Recovery passwords created in FIPS mode on Windows 8.1 can be distinguished
from recovery passwords created on other systems.

Recovery unlock using the FIPS-compliant, algorithm-based recovery password


protector works in all cases that currently work for recovery passwords.

When FIPS-compliant recovery passwords unlock volumes, the volume is unlocked


to allow read/write access even while in FIPS mode.

FIPS-compliant recovery password protectors can be exported and stored in AD a


while in FIPS mode.

The BitLocker Group Policy settings for recovery passwords work the same for all
Windows versions that support BitLocker, whether in FIPS mode or not.

On Windows Server 2012 R2 and Windows 8.1 and older, recovery passwords generated
on a system in FIPS mode can't be used. Recovery passwords created on Windows
Server 2012 R2 and Windows 8.1 are incompatible with BitLocker on operating systems
older than Windows Server 2012 R2 and Windows 8.1. So, recovery keys should be used
instead.

Related articles
BitLocker frequently asked questions (FAQ)
BitLocker
BitLocker Group Policy settings
BitLocker basic deployment
BitLocker basic deployment
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article for the IT professional explains how BitLocker features can be used to protect
data through drive encryption.

Using BitLocker to encrypt volumes


BitLocker provides full volume encryption (FVE) for operating system volumes, and fixed
and removable data drives. To support fully encrypted operating system drives,
BitLocker uses an unencrypted system partition for the files required to boot, decrypt,
and load the operating system. This volume is automatically created during a new
installation of both client and server operating systems.

If the drive was prepared as a single contiguous space, BitLocker requires a new volume
to hold the boot files. BdeHdCfg.exe can create these volumes.

7 Note

For more info about using this tool, see Bdehdcfg in the Command-Line Reference.

BitLocker encryption can be enabled and managed using the following methods:

BitLocker control panel


Windows Explorer
manage-bde.exe command-line interface
BitLocker Windows PowerShell cmdlets

Encrypting volumes using the BitLocker control panel


Encrypting volumes with the BitLocker control panel (select Start, enter Bitlocker ,
select Manage BitLocker) is how many users will use BitLocker. The name of the
BitLocker control panel is BitLocker Drive Encryption. The BitLocker control panel
supports encrypting operating system, fixed data, and removable data volumes. The
BitLocker control panel will organize available drives in the appropriate category based
on how the device reports itself to Windows. Only formatted volumes with assigned
drive letters will appear properly in the BitLocker control panel applet.
To start encryption for a volume, select Turn on BitLocker for the appropriate drive to
initialize the BitLocker Drive Encryption Wizard. BitLocker Drive Encryption Wizard
options vary based on volume type (operating system volume or data volume).

Operating system volume


For the operating system volume the BitLocker Drive Encryption Wizard presents
several screens that prompt for options while it performs several actions:

1. When the BitLocker Drive Encryption Wizard first launches, it verifies the
computer meets the BitLocker system requirements for encrypting an operating
system volume. By default, the system requirements are:

Requirement Description

Hardware The computer must meet the minimum requirements for the supported
configuration Windows versions.

Operating BitLocker is an optional feature that can be installed by Server Manager on


system Windows Server 2012 and later.

Hardware TPM version 1.2 or 2.0.


TPM
A TPM isn't required for BitLocker; however, only a computer with a TPM
can provide the additional security of pre-startup system integrity
verification and multifactor authentication.

UEFI A Trusted Computing Group (TCG)-compliant BIOS or UEFI firmware.


firmware/BIOS The boot order must be set to start first from the hard disk, and not
configuration the USB or CD drives.
The firmware must be able to read from a USB flash drive during
startup.

File system One FAT32 partition for the system drive and one NTFS partition for the
operating system drive. This requirement is applicable for computers that
boot natively with UEFI firmware.
For computers with legacy BIOS firmware, at least two NTFS disk partitions,
one for the system drive and one for the operating system drive.
For either firmware, the system drive partition must be at least 350
megabytes (MB) and set as the active partition.

Hardware To use a hardware encrypted drive as the boot drive, the drive must be in
encrypted the uninitialized state and in the security inactive state. In addition, the
drive system must always boot with native UEFI version 2.3.1 or higher and the
prerequisites CSM (if any) disabled.
(optional)
If the volume doesn't pass the initial configuration for BitLocker, the user is
presented with an error dialog describing the appropriate actions to be taken.

2. Upon passing the initial configuration, users may be prompted to enter a password
for the volume, for example, if a TPM isn't available. If a TPM is available, the
password screen will be skipped.

3. After the initial configuration/password screens, a recovery key will be generated.


The BitLocker Drive Encryption Wizard will prompt for a location to save the
recovery key. A BitLocker recovery key is a special key that is created when
BitLocker Drive Encryption is turned on for the first time on each drive that is
encrypted. The recovery key can be used to gain access to the computer if:

The drive that Windows is installed on (the operating system drive) is


encrypted using BitLocker Drive Encryption
BitLocker detects a condition that prevents it from unlocking the drive when
the computer is starting up

A recovery key can also be used to gain access to the files and folders on a
removable data drive (such as an external hard drive or USB flash drive) that is
encrypted using BitLocker To Go, if for some reason the password is forgotten or
the computer can't access the drive.

The recovery key can be stored using the following methods:

Save to your Azure AD account (if applicable)


Save to a USB flash drive
Save to a file - the file needs to be saved to a location that isn't on the
computer itself such as a network folder or OneDrive
Print the recovery key

The recovery key can't be stored at the following locations:

The drive being encrypted


The root directory of a non-removable/fixed drive
An encrypted volume

 Tip

Ideally, a computer's recovery key should be stored separate from the


computer itself.

7 Note
After a recovery key is created, the BitLocker control panel can be used to
make additional copies of the recovery key.

4. The BitLocker Drive Encryption Wizard will then prompt how much of the drive to
encrypt. The BitLocker Drive Encryption Wizard will have two options that
determine how much of the drive is encrypted:

Encrypt used disk space only - Encrypts only disk space that contains data.
Encrypt entire drive - Encrypts the entire volume including free space. Also
known as full disk encryption.

Each of the methods is recommended in the following scenarios:

Encrypt used disk space only:


The drive has never had data
Formatted or erased drives that in the past have never had confidential
data that was never encrypted

Encrypt entire drive (full disk encryption):


Drives that currently have data
Drives that currently have an operating system
Formatted or erased drives that in the past had confidential data that was
never encrypted

) Important

Deleted files appear as free space to the file system, which isn't encrypted by
used disk space only. Until they are wiped or overwritten, deleted files hold
information that could be recovered with common data forensic tools.

5. The BitLocker Drive Encryption Wizard will then prompt for an encryption mode:

New encryption mode


Compatible mode

Normally New encryption mode should be chosen, but if the drive will be
potentially moved to another computer with an older Windows operating system,
then select Compatible mode.

6. After selecting an encryption mode, the BitLocker Drive Encryption Wizard will
give the option of running a BitLocker system check via the option Run BitLocker
system check. This system check will ensure that BitLocker can properly access the
recovery and encryption keys before the volume encryption begins. it's
recommended run this system check before starting the encryption process. If the
system check isn't run and a problem is encountered when the operating system
attempts to start, the user will need to provide the recovery key to start Windows.

After completing the system check (if selected), the BitLocker Drive Encryption Wizard
will begin encryption. A reboot may be initiated to start encryption. If a reboot was
initiated, if there was no TPM and a password was specified, the password will need to
be entered to boot into the operating system volume.

Users can check encryption status by checking the system notification area or the
BitLocker control panel.

Until encryption is completed, the only available options for managing BitLocker involve
manipulation of the password protecting the operating system volume, backing up the
recovery key, and turning off BitLocker.

Data volume

Encrypting data volumes using the BitLocker control panel works in a similar fashion to
encryption of the operating system volumes. Users select Turn on BitLocker within the
BitLocker control panel to begin the BitLocker Drive Encryption Wizard.

1. Upon launching the BitLocker Drive Encryption Wizard, unlike for operating
system volumes, data volumes aren't required to pass any configuration tests for
the BitLocker Drive Encryption Wizard to proceed

2. A choice of authentication methods to unlock the drive appears. The available


options are:

Use a password to unlock the drive


Use my smart card to unlock the drive
Automatically unlock this drive on this computer - Disabled by default but if
enabled, this option will unlock the data volume without user input when the
operating system volume is unlocked.

3. The BitLocker Drive Encryption Wizard presents options for storage of the
recovery key. These options are the same as for operating system volumes:

Save to your Azure AD account (if applicable)


Save to a USB flash drive
Save to a file - the file needs to be saved to a location that isn't on the
computer itself such as a network folder or OneDrive
Print the recovery key
4. After saving the recovery key, the BitLocker Drive Encryption Wizard will show
available options for encryption. These options are the same as for operating
system volumes:

Encrypt used disk space only - Encrypts only disk space that contains data.
Encrypt entire drive - Encrypts the entire volume including free space. Also
known as full disk encryption.

5. The BitLocker Drive Encryption Wizard will then prompt for an encryption mode:

New encryption mode


Compatible mode

Normally New encryption mode should be chosen, but if the drive will be
potentially moved to another computer with an older Windows operating system,
then select Compatible mode.

6. The BitLocker Drive Encryption Wizard will display a final confirmation screen
before the encryption process begins. Selecting Start encrypting begins
encryption.

Encryption status displays in the notification area or within the BitLocker control panel.

OneDrive option
There's an option for storing the BitLocker recovery key using OneDrive. This option
requires that computers aren't members of a domain and that the user is using a
Microsoft Account. Local accounts don't give the option to use OneDrive. Using the
OneDrive option is the default recommended recovery key storage method for
computers that aren't joined to a domain.

Users can verify whether the recovery key was saved properly by checking OneDrive for
the BitLocker folder. The BitLocker folder on OneDrive is created automatically during
the save process. The folder will contain two files, a readme.txt and the recovery key.
For users storing more than one recovery password on their OneDrive, they can identify
the required recovery key by looking at the file name. The recovery key ID is appended
to the end of the file name.

Using BitLocker within Windows Explorer


Windows Explorer allows users to launch the BitLocker Drive Encryption Wizard by
right-clicking a volume and selecting Turn On BitLocker. This option is available on
client computers by default. On servers, the BitLocker feature and the Desktop-
Experience feature must first be installed for this option to be available. After selecting
Turn on BitLocker, the wizard works exactly as it does when launched using the
BitLocker control panel.

Down-level compatibility
The following table shows the compatibility matrix for systems that have been BitLocker
enabled and then presented to a different version of Windows.

Table 1: Cross compatibility for Windows 11, Windows 10, Windows 8.1, Windows 8, and
Windows 7 encrypted volumes

Encryption Type Windows 11, Windows 10, and Windows 8 Windows


Windows 8.1 7

Fully encrypted on Presents as fully encrypted N/A Presented


Windows 8 as fully
encrypted

Used Disk Space Presents as encrypt on write N/A Presented


Only encrypted on as fully
Windows 8 encrypted

Fully encrypted Presents as fully encrypted Presented as fully N/A


volume from encrypted
Windows 7

Partially encrypted Windows 11, Windows 10, and Windows 8 will N/A
volume from Windows 8.1 will complete complete encryption
Windows 7 encryption regardless of policy regardless of policy

Encrypting volumes using the manage-bde.exe


command-line interface
Manage-bde.exe is a command-line utility that can be used for scripting BitLocker

operations. Manage-bde.exe offers additional options not displayed in the BitLocker


control panel. For a complete list of the options, see Manage-bde.

Manage-bde.exe offers a multitude of wider options for configuring BitLocker. Using the
command syntax may require care. For example, using just the manage-bde.exe -on
command on a data volume will fully encrypt the volume without any authenticating
protectors. A volume encrypted in this manner still requires user interaction to turn on
BitLocker protection, even though the command successfully completed. For the volume
to be fully protected, an authentication method needs to also be added to the volume
in addition to running the manage-bde.exe command.

Command-line users need to determine the appropriate syntax for a given situation. The
following section covers general encryption for operating system volumes and data
volumes.

Operating system volume commands


Listed below are examples of basic valid commands for operating system volumes. In
general, using only the manage-bde.exe -on <drive letter> command encrypts the
operating system volume with a TPM-only protector and no recovery key. However,
many environments require more secure protectors such as passwords or PIN and
expect to be able to recover information with a recovery key.

Determining volume status


A good practice when using manage-bde.exe is to determine the volume status on the
target system. Use the following command to determine volume status:

manage-bde.exe -status

This command returns the volumes on the target, current encryption status, and volume
type (operating system or data) for each volume. Using this information, users can
determine the best encryption method for their environment.

Enabling BitLocker without a TPM


Suppose BitLocker is desired on a computer without a TPM. In this scenario, a USB flash
drive is needed as a startup key for the operating system volume. The startup key will
then allow the computer to boot. To create the startup key using manage-bde.exe , the -
protectors switch would be used specifying the -startupkey option. Assuming the USB

flash drive is drive letter E: , then the following manage-bde.exe commands would be
used t create the startup key and start the BitLocker encryption:

PowerShell

manage-bde.exe -protectors -add C: -startupkey E:


manage-bde.exe -on C:

If prompted, reboot the computer to complete the encryption process.


Enabling BitLocker with a TPM only
It's possible to encrypt the operating system volume without any defined protectors by
using manage-bde.exe . Use this command:

Windows Command Prompt

manage-bde.exe -on C:

This command will encrypt the drive using the TPM as the protector. If users are unsure
of the protector for a volume, they can use the -protectors option in manage-bde.exe to
list this information by executing the following command:

Windows Command Prompt

manage-bde.exe -protectors -get <volume>

Provisioning BitLocker with two protectors

Another example is a user on a non-TPM hardware who wishes to add a password and
SID-based protector to the operating system volume. In this instance, the user adds the
protectors first. Adding the protectors is done with the command:

Windows Command Prompt

manage-bde.exe -protectors -add C: -pw -sid <user or group>

This command requires the user to enter and then confirm the password protectors
before adding them to the volume. With the protectors enabled on the volume, the user
just needs to turn on BitLocker.

Data volume commands


Data volumes use the same syntax for encryption as operating system volumes but they
don't require protectors for the operation to complete. Encrypting data volumes can be
done using the base command:

Windows Command Prompt

manage-bde.exe -on <drive letter>


Or users can choose to add protectors to the volume. It is recommended to add at least
one primary protector and a recovery protector to a data volume.

Enabling BitLocker with a password

A common protector for a data volume is the password protector. In the example below,
a password protector is added to the volume and turn on BitLocker.

PowerShell

manage-bde.exe -protectors -add -pw C:


manage-bde.exe -on C:

Encrypting volumes using the BitLocker


Windows PowerShell cmdlets
Windows PowerShell cmdlets provide an alternative way to work with BitLocker. Using
Windows PowerShell's scripting capabilities, administrators can integrate BitLocker
options into existing scripts with ease. The list below displays the available BitLocker
cmdlets.

Name Parameters

Add-BitLockerKeyProtector ADAccountOrGroup
ADAccountOrGroupProtector
Confirm
MountPoint
Password
PasswordProtector
Pin
RecoveryKeyPath
RecoveryKeyProtector
RecoveryPassword
RecoveryPasswordProtector
Service
StartupKeyPath
StartupKeyProtector
TpmAndPinAndStartupKeyProtector
TpmAndPinProtector
TpmAndStartupKeyProtector
TpmProtector
WhatIf
Name Parameters

Backup-BitLockerKeyProtector Confirm
KeyProtectorId
MountPoint
WhatIf

Disable-BitLocker Confirm
MountPoint
WhatIf

Disable-BitLockerAutoUnlock Confirm
MountPoint
WhatIf

Enable-BitLocker AdAccountOrGroup
AdAccountOrGroupProtector
Confirm
EncryptionMethod
HardwareEncryption
Password
PasswordProtector
Pin
RecoveryKeyPath
RecoveryKeyProtector
RecoveryPassword
RecoveryPasswordProtector
Service
SkipHardwareTest
StartupKeyPath
StartupKeyProtector
TpmAndPinAndStartupKeyProtector
TpmAndPinProtector
TpmAndStartupKeyProtector
TpmProtector
UsedSpaceOnly
WhatIf

Enable-BitLockerAutoUnlock Confirm
MountPoint
WhatIf

Get-BitLockerVolume MountPoint

Lock-BitLocker Confirm
ForceDismount
MountPoint
WhatIf
Name Parameters

Remove-BitLockerKeyProtector Confirm
KeyProtectorId
MountPoint
WhatIf

Resume-BitLocker Confirm
MountPoint
WhatIf

Suspend-BitLocker Confirm
MountPoint
RebootCount
WhatIf

Unlock-BitLocker AdAccountOrGroup
Confirm
MountPoint
Password
RecoveryKeyPath
RecoveryPassword
RecoveryPassword
WhatIf

Similar to manage-bde.exe , the Windows PowerShell cmdlets allow configuration beyond


the options offered in the control panel. As with manage-bde.exe , users need to consider
the specific needs of the volume they're encrypting prior to running Windows
PowerShell cmdlets.

A good initial step is to determine the current state of the volume(s) on the computer.
You can do this using the Get-BitLocker volume PowerShell cmdlet. The output from
this cmdlet displays information on the volume type, protectors, protection status, and
other useful information.

Occasionally, all protectors may not be shown when using Get-BitLockerVolume due to
lack of space in the output display. If all of the protectors for a volume aren't seen, the
Windows PowerShell pipe command ( | ) can be used to format a listing of the
protectors.

7 Note

In the event that there are more than four protectors for a volume, the pipe
command may run out of display space. For volumes with more than four
protectors, use the method described in the section below to generate a listing of
all protectors with protector ID.
PowerShell

Get-BitLockerVolume C: | fl

If the existing protectors need to be removed prior to provisioning BitLocker on the


volume, the Remove-BitLockerKeyProtector cmdlet can be used. Accomplishing this
action requires the GUID associated with the protector to be removed. A simple script
can pipe out the values of each Get-BitLockerVolume return to another variable as seen
below:

PowerShell

$vol = Get-BitLockerVolume
$keyprotectors = $vol.KeyProtector

Using this script, the information in the $keyprotectors variable can be displayed to
determine the GUID for each protector. This information can then be used to remove
the key protector for a specific volume using the command:

PowerShell

Remove-BitLockerKeyProtector <volume>: -KeyProtectorID "{GUID}"

7 Note

The BitLocker cmdlet requires the key protector GUID (enclosed in quotation
marks) to execute. Ensure the entire GUID, with braces, is included in the command.

Operating system volume PowerShell cmdlets


Using the BitLocker Windows PowerShell cmdlets is similar to working with the manage-
bde.exe tool for encrypting operating system volumes. Windows PowerShell offers users

flexibility. For example, users can add the desired protector as part command for
encrypting the volume. Below are examples of common user scenarios and steps to
accomplish them using the BitLocker cmdlets for Windows PowerShell.

To enable BitLocker with just the TPM protector, use this command:

PowerShell
Enable-BitLocker C:

The example below adds one additional protector, the StartupKey protectors, and
chooses to skip the BitLocker hardware test. In this example, encryption starts
immediately without the need for a reboot.

PowerShell

Enable-BitLocker C: -StartupKeyProtector -StartupKeyPath <path> -


SkipHardwareTest

Data volume PowerShell cmdlets


Data volume encryption using Windows PowerShell is the same as for operating system
volumes. You should add the desired protectors prior to encrypting the volume. The
following example adds a password protector to the E: volume using the variable $pw as
the password. The $pw variable is held as a SecureString value to store the user-defined
password. Last, encryption begins.

PowerShell

$pw = Read-Host -AsSecureString


<user inputs password>
Enable-BitLockerKeyProtector E: -PasswordProtector -Password $pw

Using an SID-based protector in Windows PowerShell


The ADAccountOrGroup protector is an Active Directory SID-based protector. This
protector can be added to both operating system and data volumes, although it doesn't
unlock operating system volumes in the pre-boot environment. The protector requires
the SID for the domain account or group to link with the protector. BitLocker can
protect a cluster-aware disk by adding an SID-based protector for the Cluster Name
Object (CNO) that lets the disk properly failover and unlock to any member computer of
the cluster.

2 Warning

The SID-based protector requires the use of an additional protector such as TPM,
PIN, recovery key, etc. when used on operating system volumes.
To add an ADAccountOrGroup protector to a volume, either the domain SID is needed
or the group name preceded by the domain and a backslash. In the example below, the
CONTOSO\Administrator account is added as a protector to the data volume G.

PowerShell

Enable-BitLocker G: -AdAccountOrGroupProtector -AdAccountOrGroup


CONTOSO\Administrator

For users who wish to use the SID for the account or group, the first step is to determine
the SID associated with the account. To get the specific SID for a user account in
Windows PowerShell, use the following command:

PowerShell

Get-ADUser -filter {samaccountname -eq "administrator"}

7 Note

Use of this command requires the RSAT-AD-PowerShell feature.

 Tip

In addition to the Windows PowerShell command above, information about the


locally logged on user and group membership can be found using: WHOAMI /ALL .
This doesn't require the use of additional features.

In the example below, the user wishes to add a domain SID-based protector to the
previously encrypted operating system volume. The user knows the SID for the user
account or group they wish to add and uses the following command:

PowerShell

Add-BitLockerKeyProtector C: -ADAccountOrGroupProtector -ADAccountOrGroup "


<SID>"

7 Note

Active Directory-based protectors are normally used to unlock Failover Cluster-


enabled volumes.
Checking BitLocker status
To check the BitLocker status of a particular volume, administrators can look at the
status of the drive in the BitLocker control panel applet, Windows Explorer, manage-
bde.exe command-line tool, or Windows PowerShell cmdlets. Each option offers
different levels of detail and ease of use. We'll look at each of the available methods in
the following section.

Checking BitLocker status with the control panel


Checking BitLocker status with the control panel is the most common method used by
most users. Once opened, the status for each volume is displayed next to the volume
description and drive letter. Available status return values with the control panel include:

Status Description

On BitLocker is enabled for the volume

Off BitLocker isn't enabled for the volume

Suspended BitLocker is suspended and not actively protecting the volume

Waiting for BitLocker is enabled with a clear protector key and requires further action to
Activation be fully protected

If a drive is pre-provisioned with BitLocker, a status of "Waiting for Activation" displays


with a yellow exclamation icon on the volume. This status means that there was only a
clear protector used when encrypting the volume. In this case, the volume isn't in a
protected state and needs to have a secure key added to the volume before the drive is
fully protected. Administrators can use the control panel, manage-bde.exe tool, or WMI
APIs to add an appropriate key protector. Once complete, the control panel will update
to reflect the new status.

Using the control panel, administrators can choose Turn on BitLocker to start the
BitLocker Drive Encryption wizard and add a protector, like PIN for an operating system
volume (or password if no TPM exists), or a password or smart card protector to a data
volume. The drive security window displays prior to changing the volume status.
Selecting Activate BitLocker will complete the encryption process.

Once BitLocker protector activation is completed, the completion notice is displayed.

Checking BitLocker status with manage-bde.exe


Administrators who prefer a command-line interface can utilize manage-bde.exe to check
volume status. Manage-bde is capable of returning more information about the volume
than the graphical user interface tools in the control panel. For example, manage-bde.exe
can display the BitLocker version in use, the encryption type, and the protectors
associated with a volume.

To check the status of a volume using manage-bde.exe , use the following command:

PowerShell

manage-bde.exe -status <volume>

7 Note

If no volume letter is associated with the -status command, all volumes on the
computer display their status.

Checking BitLocker status with Windows PowerShell


Windows PowerShell commands offer another way to query BitLocker status for
volumes. Like manage-bde.exe , Windows PowerShell includes the advantage of being
able to check the status of a volume on a remote computer.

Using the Get-BitLockerVolume cmdlet, each volume on the system displays its current
BitLocker status. To get information that is more detailed on a specific volume, use the
following command:

PowerShell

Get-BitLockerVolume <volume> -Verbose | fl

This command displays information about the encryption method, volume type, key
protectors, and more.

Provisioning BitLocker during operating system


deployment
Administrators can enable BitLocker prior to operating system deployment from the
Windows Pre-installation environment. Enabling BitLocker prior to the operating system
deployment is done with a randomly generated clear key protector applied to the
formatted volume and by encrypting the volume prior to running the Windows setup
process. If the encryption uses the Used Disk Space Only option described later in this
document, this step takes only a few seconds and incorporates well into regular
deployment processes.

Decrypting BitLocker volumes


Decrypting volumes removes BitLocker and any associated protectors from the volumes.
Decryption should occur when protection is no longer required. BitLocker decryption
shouldn't occur as a troubleshooting step. BitLocker can be removed from a volume
using the BitLocker control panel applet, manage-bde.exe , or Windows PowerShell
cmdlets. We'll discuss each method further below.

Decrypting volumes using the BitLocker control panel


applet
BitLocker decryption using the control panel is done using a wizard. The control panel
can be called from Windows Explorer or by opening it directly. After opening the
BitLocker control panel, users will select the Turn off BitLocker option to begin the
process. After selecting the Turn off BitLocker option, the user chooses to continue by
clicking the confirmation dialog. With Turn off BitLocker confirmed, the drive decryption
process begins and reports status to the control panel.

The control panel doesn't report decryption progress but displays it in the notification
area of the task bar. Selecting the notification area icon will open a modal dialog with
progress.

Once decryption is complete, the drive updates its status in the control panel and
becomes available for encryption.

Decrypting volumes using the manage-bde.exe command-


line interface
Decrypting volumes using manage-bde.exe is straightforward. Decryption with manage-
bde.exe offers the advantage of not requiring user confirmation to start the process.

Manage-bde uses the -off command to start the decryption process. A sample
command for decryption is:

PowerShell

manage-bde.exe -off C:
This command disables protectors while it decrypts the volume and removes all
protectors when decryption is complete. If users wish to check the status of the
decryption, they can use the following command:

PowerShell

manage-bde.exe -status C:

Decrypting volumes using the BitLocker Windows


PowerShell cmdlets
Decryption with Windows PowerShell cmdlets is straightforward, similar to manage-
bde.exe . Windows PowerShell offers the ability to decrypt multiple drives in one pass. In

the example below, the user has three encrypted volumes, which they wish to decrypt.

Using the Disable-BitLocker command, they can remove all protectors and encryption at
the same time without the need for more commands. An example of this command is:

PowerShell

Disable-BitLocker

If a user didn't want to input each mount point individually, using the -MountPoint
parameter in an array can sequence the same command into one line without requiring
additional user input. An example command is:

PowerShell

Disable-BitLocker -MountPoint E:,F:,G:

Related articles
Prepare your organization for BitLocker: Planning and policies
BitLocker recovery guide
BitLocker: How to enable Network Unlock
BitLocker overview
BitLocker deployment comparison
Article • 07/25/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article depicts the BitLocker deployment comparison chart.

BitLocker deployment comparison chart


Requirements Microsoft Intune Microsoft Microsoft BitLocker
Configuration Administration and
Manager Monitoring (MBAM)

Minimum client operating Windows 11 and Windows 11, Windows 7, Windows 8,


system version Windows 10 Windows 10, and Windows 8.1, Windows
Windows 8.1 10, Windows 10 IoT, and
Windows 11

Supported Windows SKUs Enterprise, Pro, Enterprise, Pro, Enterprise


Education Education

Minimum Windows 1909 None None


version

Supported domain-joined Microsoft Azure Active Directory- Active Directory-joined


status Active Directory joined, hybrid
(Azure AD) joined, Azure AD joined
hybrid Azure AD
joined

Permissions required to Endpoint security Full administrator Domain Admin or


manage policies manager or custom or custom Delegated GPO access

Cloud or on premises Cloud On premises On premises

Server components ✅ ✅
required?

Additional agent No (device Configuration MBAM client


required? enrollment only) Manager client

Administrative plane Microsoft Intune Configuration Group Policy


admin center Manager console Management Console
and MBAM sites

Administrative portal ✅ ✅
installation required
Requirements Microsoft Intune Microsoft Microsoft BitLocker
Configuration Administration and
Manager Monitoring (MBAM)

Compliance reporting ✅ ✅ ✅
capabilities

Force encryption ✅ ✅ ✅

Encryption for storage ✅ ✅


cards (mobile)

Allow recovery password ✅ ✅ ✅

Manage startup ✅ ✅ ✅
authentication

Select cipher strength and ✅ ✅ ✅


algorithms for fixed drives

Select cipher strength and ✅ ✅ ✅


algorithms for removable
drives

Select cipher strength and ✅ ✅ ✅


algorithms for operating
environment drives

Standard recovery Azure AD or Active Configuration MBAM database


password storage location Directory Manager site
database

Store recovery password Yes (Active Yes (Active Yes (Active Directory
for operating system and Directory and Directory only) only)
fixed drives to Azure AD Azure AD)
or Active Directory

Customize preboot ✅ ✅ ✅
message and recovery
link

Allow/deny key file ✅ ✅ ✅


creation

Deny Write permission to ✅ ✅ ✅


unprotected drives

Can be administered ✅ ✅
outside company network

Support for organization ✅ ✅


Requirements Microsoft Intune Microsoft Microsoft BitLocker
Configuration Administration and
Manager Monitoring (MBAM)

unique IDs

Self-service recovery Yes (through Azure ✅ ✅


AD or Company
Portal app)

Recovery password Yes (Windows 10, ✅ ✅


rotation for fixed and version 1909 and
operating environment later)
drives

Wait to complete ✅
encryption until recovery
information is backed up
to Azure AD

Wait to complete ✅ ✅
encryption until recovery
information is backed up
to Active Directory

Allow or deny Data ✅ ✅ ✅


Recovery Agent

Unlock a volume using ✅ ✅


certificate with custom
object identifier

Prevent memory ✅ ✅
overwrite on restart

Configure custom Trusted ✅


Platform Module
Platform Configuration
Register profiles

Manage auto-unlock ✅ ✅
functionality
BitLocker management
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

The ideal solution for BitLocker management is to eliminate the need for IT
administrators to set management policies using tools or other mechanisms by having
Windows perform tasks that are more practical to automate. This vision leverages
modern hardware developments. The growth of TPM 2.0, secure boot, and other
hardware improvements, for example, have helped to alleviate the support burden on
help desks and a decrease in support-call volumes, yielding improved user satisfaction.
Windows continues to be the focus for new features and improvements for built-in
encryption management, such as automatically enabling encryption on devices that
support Modern Standby beginning with Windows 8.1.

Though much Windows BitLocker documentation has been published, customers


frequently ask for recommendations and pointers to specific, task-oriented
documentation that is both easy to digest and focused on how to deploy and manage
BitLocker. This article links to relevant documentation, products, and services to help
answer this and other related frequently asked questions, and also provides BitLocker
recommendations for different types of computers.

Windows edition and licensing requirements


The following table lists the Windows editions that support BitLocker management:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

BitLocker management license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

No Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.
Managing domain-joined computers and
moving to cloud
Companies that image their own computers using Configuration Manager can use an
existing task sequence to pre-provision BitLocker encryption while in Windows
Preinstallation Environment (WinPE) and can then enable protection. These steps during
an operating system deployment can help ensure that computers are encrypted from
the start, even before users receive them. As part of the imaging process, a company
could also decide to use Configuration Manager to pre-set any desired BitLocker Group
Policy.

Enterprises can use Microsoft BitLocker Administration and Monitoring (MBAM) to


manage client computers with BitLocker that are domain-joined on-premises until
mainstream support ends in July 2019 or they can receive extended support until April
2026. Thus, over the next few years, a good strategy for enterprises will be to plan and
move to cloud-based management for BitLocker. Refer to the PowerShell examples to
see how to store recovery keys in Azure Active Directory (Azure AD).

) Important

Microsoft BitLocker Administration and Monitoring (MBAM) capabilities are offered


through Configuration Manager BitLocker Management. See Plan for BitLocker
management in the Configuration Manager documentation for additional
information.

Managing devices joined to Azure Active


Directory
Devices joined to Azure AD are managed using Mobile Device Management (MDM)
policy from an MDM solution such as Microsoft Intune. Prior to Windows 10, version
1809, only local administrators can enable BitLocker via Intune policy. Starting with
Windows 10, version 1809, Intune can enable BitLocker for standard users. BitLocker
Device Encryption status can be queried from managed machines via the Policy
Configuration Settings Provider (CSP), which reports on whether BitLocker Device
Encryption is enabled on the device. Compliance with BitLocker Device Encryption policy
can be a requirement for Conditional Access to services like Exchange Online and
SharePoint Online.
Starting with Windows 10 version 1703, the enablement of BitLocker can be triggered
over MDM either by the Policy CSP or the BitLocker CSP. The BitLocker CSP adds policy
options that go beyond ensuring that encryption has occurred, and is available on
computers that run Windows 11, Windows 10, and on Windows phones.

For hardware that is compliant with Modern Standby and HSTI, when using either of
these features, BitLocker Device Encryption is automatically turned on whenever the user
joins a device to Azure AD. Azure AD provides a portal where recovery keys are also
backed up, so users can retrieve their own recovery key for self-service, if necessary. For
older devices that aren't yet encrypted, beginning with Windows 10 version 1703,
admins can use the BitLocker CSP to trigger encryption and store the recovery key in
Azure AD. This process and feature is applicable to Azure Hybrid AD as well.

Managing workplace-joined PCs and phones


For Windows PCs and Windows Phones that are enrolled using Connect to work or
school account, BitLocker Device Encryption is managed over MDM, the same as
devices joined to Azure AD.

Managing servers
Servers are often installed, configured, and deployed using PowerShell; therefore, the
recommendation is to also use PowerShell to enable BitLocker on a server, ideally as
part of the initial setup. BitLocker is an Optional Component (OC) in Windows Server;
therefore, follow the directions in BitLocker: How to deploy on Windows Server 2012
and later to add the BitLocker OC.

The Minimal Server Interface is a prerequisite for some of the BitLocker administration
tools. On a Server Core installation, the necessary GUI components must be added first.
The steps to add shell components to Server Core are described in Using Features on
Demand with Updated Systems and Patched Images and How to update local source
media to add roles and features.

If a server is being installed manually, such as a stand-alone server, then choosing Server
with Desktop Experience is the easiest path because it avoids performing the steps to
add a GUI to Server Core.

Additionally, lights-out data centers can take advantage of the enhanced security of a
second factor while avoiding the need for user intervention during reboots by optionally
using a combination of BitLocker (TPM+PIN) and BitLocker Network Unlock. BitLocker
Network Unlock brings together the best of hardware protection, location dependence,
and automatic unlock, while in the trusted location. For the configuration steps, see
BitLocker: How to enable Network Unlock. For more information, see the BitLocker FAQs
article and other useful links in Related Articles.

PowerShell examples
For Azure AD-joined computers, including virtual machines, the recovery password
should be stored in Azure AD.

Example: Use PowerShell to add a recovery password and back it up to Azure AD before
enabling BitLocker

PowerShell

Add-BitLockerKeyProtector -MountPoint "C:" -RecoveryPasswordProtector

$BLV = Get-BitLockerVolume -MountPoint "C:"

BackupToAAD-BitLockerKeyProtector -MountPoint "C:" -KeyProtectorId


$BLV.KeyProtector[0].KeyProtectorId

For domain-joined computers, including servers, the recovery password should be


stored in Active Directory Domain Services (AD DS).

Example: Use PowerShell to add a recovery password and back it up to AD DS before


enabling BitLocker

PowerShell

Add-BitLockerKeyProtector -MountPoint "C:" -RecoveryPasswordProtector

$BLV = Get-BitLockerVolume -MountPoint "C:"

Backup-BitLockerKeyProtector -MountPoint "C:" -KeyProtectorId


$BLV.KeyProtector[0].KeyProtectorId

PowerShell can then be used to enable BitLocker:

Example: Use PowerShell to enable BitLocker with a TPM protector

PowerShell

Enable-BitLocker -MountPoint "D:" -EncryptionMethod XtsAes256 -UsedSpaceOnly


-TpmProtector
Example: Use PowerShell to enable BitLocker with a TPM+PIN protector, in this case with
a PIN set to 123456

PowerShell

$SecureString = ConvertTo-SecureString "123456" -AsPlainText -Force

Enable-BitLocker -MountPoint "C:" -EncryptionMethod XtsAes256 -UsedSpaceOnly


-Pin $SecureString -TPMandPinProtector

Related Articles
BitLocker: FAQs
Microsoft BitLocker Administration and Management (MBAM)
Overview of BitLocker Device Encryption in Windows
BitLocker Group Policy Reference
Microsoft Intune (Overview)
Configuration Settings Providers (Policy CSP: See Security-RequireDeviceEncryption)
BitLocker CSP

Windows Server setup tools


Windows Server Installation Options
How to update local source media to add roles and features
How to add or remove optional components on Server Core (Features on Demand)
How to deploy BitLocker on Windows Server
How to enable Network Unlock
Shielded VMs and Guarded Fabric

PowerShell
BitLocker cmdlets for Windows PowerShell
BitLocker: How to deploy on Windows
Server
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article explains how to deploy BitLocker on Windows Server. For all Windows Server
editions, BitLocker can be installed using Server Manager or Windows PowerShell
cmdlets. BitLocker requires administrator privileges on the server on which it's to be
installed.

Installing BitLocker

To install BitLocker using server manager


1. Open server manager by selecting the server manager icon or running
servermanager.exe .

2. Select Manage from the Server Manager Navigation bar and select Add Roles
and Features to start the Add Roles and Features Wizard.
3. With the Add Roles and Features wizard open, select Next at the Before you
begin pane (if shown).
4. Select Role-based or feature-based installation on the Installation type pane of
the Add Roles and Features wizard and select Next to continue.
5. Select the Select a server from the server pool option in the Server Selection
pane and confirm the server on which the BitLocker feature is to be installed.
6. Select Next on the Server Roles pane of the Add Roles and Features wizard to
proceed to the Features pane.

7 Note

Server roles and features are installed by using the same wizard in Server
Manager.

7. Select the check box next to BitLocker Drive Encryption within the Features pane
of the Add Roles and Features wizard. The wizard shows the extra management
features available for BitLocker. If the extra management features aren't needed
and/or don't need to be installed, deselect the Include management tools.
7 Note

The Enhanced Storage feature is a required feature for enabling BitLocker.


This feature enables support for encrypted hard drives on capable systems.

8. Select Add Features. Once optional features selection is complete, select Next to
proceed in the wizard.
9. Select Install on the Confirmation pane of the Add Roles and Features wizard to
begin BitLocker feature installation. The BitLocker feature requires a restart for its
installation to be complete. Selecting the Restart the destination server
automatically if required option in the Confirmation pane forces a restart of the
computer after installation is complete.
10. If the Restart the destination server automatically if required check box isn't
selected, the Results pane of the Add Roles and Features wizard displays the
success or failure of the BitLocker feature installation. If necessary, a notification of
other action necessary to complete the feature installation, such as the restart of
the computer, will be displayed in the results text.

To install BitLocker using Windows PowerShell


Windows PowerShell offers administrators another option for BitLocker feature
installation. Windows PowerShell installs features using the servermanager or dism.exe
module. However, the servermanager and dism.exe modules don't always share feature
name parity. Because of this mismatch of feature name parity, it's advisable to confirm
the feature or role name prior to installation.

7 Note

The server must be restarted to complete the installation of BitLocker.

Using the servermanager module to install BitLocker


The servermanager Windows PowerShell module can use either the Install-
WindowsFeature or Add-WindowsFeature to install the BitLocker feature. The Add-

WindowsFeature cmdlet is merely a stub to the Install-WindowsFeature . This example

uses the Install-WindowsFeature cmdlet. The feature name for BitLocker in the
servermanager module is BitLocker .

By default, installation of features in Windows PowerShell doesn't include optional


subfeatures or management tools as part of the installation process. What is installed as
part of the installation process can be seen using the -WhatIf option in Windows
PowerShell.

PowerShell

Install-WindowsFeature BitLocker -WhatIf

The results of this command show that only the BitLocker Drive Encryption feature is
installed using this command.

To see what would be installed with the BitLocker feature, including all available
management tools and subfeatures, use the following command:

PowerShell

Install-WindowsFeature BitLocker -IncludeAllSubFeature -


IncludeManagementTools -WhatIf | fl

The result of this command displays the following list of all the administration tools for
BitLocker, which would be installed along with the feature, including tools for use with
Active Directory Domain Services (AD DS) and Active Directory Lightweight Directory
Services (AD LDS).

BitLocker Drive Encryption


BitLocker Drive Encryption Tools
BitLocker Drive Encryption Administration Utilities
BitLocker Recovery Password Viewer
AD DS Snap-Ins and Command-Line Tools
AD DS Tools
AD DS and AD LDS Tools

The command to complete a full installation of the BitLocker feature with all available
subfeatures and then to reboot the server at completion is:

PowerShell

Install-WindowsFeature BitLocker -IncludeAllSubFeature -


IncludeManagementTools -Restart

) Important

Installing the BitLocker feature using Windows PowerShell does not install the
Enhanced Storage feature. Administrators wishing to support Encrypted Hard
Drives in their environment will need to install the Enhanced Storage feature
separately.

Using the dism module to install BitLocker


The dism.exe Windows PowerShell module uses the Enable-WindowsOptionalFeature
cmdlet to install features. The BitLocker feature name for BitLocker is BitLocker . The
dism.exe module doesn't support wildcards when searching for feature names. To list

feature names for the dism.exe module, use the Get-WindowsOptionalFeatures cmdlet.
The following command lists all of the optional features in an online (running) operating
system.

PowerShell

Get-WindowsOptionalFeature -Online | ft

From this output, there are three BitLocker-related optional feature names: BitLocker,
BitLocker-Utilities and BitLocker-NetworkUnlock. To install the BitLocker feature, the
BitLocker and BitLocker-Utilities features are the only required items.

To install BitLocker using the dism.exe module, use the following command:

PowerShell

Enable-WindowsOptionalFeature -Online -FeatureName BitLocker -All

This command prompts the user for a reboot. The Enable-WindowsOptionalFeature


cmdlet doesn't offer support for forcing a reboot of the computer. This command
doesn't include installation of the management tools for BitLocker. For a complete
installation of BitLocker and all available management tools, use the following
command:

PowerShell

Enable-WindowsOptionalFeature -Online -FeatureName BitLocker, BitLocker-


Utilities -All

Related articles
BitLocker overview
BitLocker frequently asked questions (FAQ)
Prepare your organization for BitLocker: Planning and policies
BitLocker: How to enable Network Unlock
How to use the BitLocker drive
encryption tools to manage BitLocker
Article • 07/25/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

BitLocker drive encryption tools include the command-line tools manage-bde.exe,


repair-bde.exe, and the cmdlets for Windows PowerShell.

The tools can be used to perform any tasks that can be accomplished through the
BitLocker control panel and are appropriate to use for automated deployments and
other scripting scenarios.

Manage-bde
Manage-bde is a command-line tool that can be used for scripting BitLocker operations.
Manage-bde offers additional options not displayed in the BitLocker control panel. For a
complete list of the manage-bde.exe options, see the Manage-bde command-line
reference.

Manage-bde includes fewer default settings and requires greater customization for
configuring BitLocker. For example, using just the manage-bde.exe -on command on a
data volume will fully encrypt the volume without any authenticating protectors. A
volume encrypted in this manner still requires user interaction to turn on BitLocker
protection, even though the command successfully completed because an
authentication method needs to be added to the volume for it to be fully protected. The
following sections provide examples of common usage scenarios for manage-bde.

Using manage-bde with operating system volumes


Listed below are examples of basic valid commands for operating system volumes. In
general, using only the manage-bde.exe -on <drive letter> command will encrypt the
operating system volume with a TPM-only protector and no recovery key. However,
many environments require more secure protectors such as passwords or PIN and
expect information recovery with a recovery key. It's recommended to add at least one
primary protector plus a recovery protector to an operating system volume.

A good practice when using manage-bde.exe is to determine the volume status on the
target system. Use the following command to determine volume status:
Windows Command Prompt

manage-bde.exe -status

This command returns the volumes on the target, current encryption status, encryption
method, and volume type (operating system or data) for each volume:

The following example illustrates enabling BitLocker on a computer without a TPM chip.
Before beginning the encryption process, the startup key needed for BitLocker must be
created and saved to a USB drive. When BitLocker is enabled for the operating system
volume, BitLocker will need to access the USB flash drive to obtain the encryption key. In
this example, the drive letter E represents the USB drive. Once the commands are run, it
will prompt to reboot the computer to complete the encryption process.

Windows Command Prompt

manage-bde.exe -protectors -add C: -startupkey E:


manage-bde.exe -on C:

7 Note

After the encryption is completed, the USB startup key must be inserted before the
operating system can be started.
An alternative to the startup key protector on non-TPM hardware is to use a password
and an ADaccountorgroup protector to protect the operating system volume. In this
scenario, the protectors are added first. To add the protectors, enter the following
command:

Windows Command Prompt

manage-bde.exe -protectors -add C: -pw -sid <user or group>

The above command will require the password protector to be entered and confirmed
before adding them to the volume. With the protectors enabled on the volume,
BitLocker can then be turned on.

On computers with a TPM, it's possible to encrypt the operating system volume without
defining any protectors using manage-bde.exe . To enable BitLocker on a computer with a
TPM without defining any protectors, enter the following command:

Windows Command Prompt

manage-bde.exe -on C:

The above command encrypts the drive using the TPM as the default protector. If verify
if a TPM protector is available, the list of protectors available for a volume can be listed
by running the following command:

Windows Command Prompt

manage-bde.exe -protectors -get <volume>

Using manage-bde with data volumes


Data volumes use the same syntax for encryption as operating system volumes but they
don't require protectors for the operation to complete. Encrypting data volumes can be
done using the base command:

manage-bde.exe -on <drive letter>

or additional protectors can be added to the volume first. It's recommended to add at
least one primary protector plus a recovery protector to a data volume.

A common protector for a data volume is the password protector. In the example below,
a password protector is added to the volume and then BitLocker is turned on.
Windows Command Prompt

manage-bde.exe -protectors -add -pw C:


manage-bde.exe -on C:

BitLocker Repair Tool


Hard disk areas on which BitLocker stores critical information could be damaged, for
example, when a hard disk fails or if Windows exits unexpectedly.

The BitLocker Repair Tool (repair-bde.exe) is useful for disaster recovery scenarios, in
which a BitLocker protected drive can't be unlocked normally or using the recovery
console.

The Repair Tool can reconstruct critical parts of the drive and salvage recoverable data,
as long as a valid recovery password or recovery key is used to decrypt the data. If the
BitLocker metadata data on the drive is corrupt, the backup key package in addition to
the recovery password or recovery key must be supplied. The key package is backed up
in Active Directory Domain Services (AD DS) if the default settings for AD DS backup are
used. With the key package and either the recovery password or recovery key, portions
of a corrupted BitLocker-protected drive can be decrypted. Each key package works only
for a drive that has the corresponding drive identifier. The BitLocker Recovery Password
Viewer can be used to obtain this key package from AD DS.

 Tip

If recovery information is not backed up to AD DS or if key packages need to be


saved in an alternative way, use the following command to generate a key package
for a volume:

manage-bde.exe -KeyPackage

The Repair Tool is intended for use when the operating system doesn't start or when the
BitLocker Recovery Console can't be started. Use Repair-bde in the following conditions:

The drive is encrypted using BitLocker Drive Encryption


Windows doesn't start, or the BitLocker recovery console can't start
There isn't a backup copy of the data that is contained on the encrypted drive

7 Note
Damage to the drive may not be related to BitLocker. Therefore, it is recommended
to try other tools to help diagnose and resolve the problem with the drive before
using the BitLocker Repair Tool. The Windows Recovery Environment (Windows RE)
provides additional options to repair computers.

The following limitations exist for Repair-bde:

The Repair-bde command-line tool can't repair a drive that failed during the
encryption or decryption process.

The Repair-bde command-line tool assumes that if the drive has any encryption,
then the drive has been fully encrypted.

For more information about using repair-bde, see Repair-bde.

BitLocker cmdlets for Windows PowerShell


Windows PowerShell cmdlets provide a new way for administrators to use when working
with BitLocker. Using Windows PowerShell's scripting capabilities, administrators can
integrate BitLocker options into existing scripts with ease. The list below displays the
available BitLocker cmdlets.

Name Parameters

Add-BitLockerKeyProtector ADAccountOrGroup
ADAccountOrGroupProtector
Confirm
MountPoint
Password
PasswordProtector
Pin
RecoveryKeyPath
RecoveryKeyProtector
RecoveryPassword
RecoveryPasswordProtector
Service
StartupKeyPath
StartupKeyProtector
TpmAndPinAndStartupKeyProtector
TpmAndPinProtector
TpmAndStartupKeyProtector
TpmProtector
WhatIf

Backup-BitLockerKeyProtector Confirm
KeyProtectorId
Name Parameters

MountPoint
WhatIf

Disable-BitLocker Confirm
MountPoint
WhatIf

Disable-BitLockerAutoUnlock Confirm
MountPoint
WhatIf

Enable-BitLocker AdAccountOrGroup
AdAccountOrGroupProtector
Confirm
EncryptionMethod
HardwareEncryption
Password
PasswordProtector
Pin
RecoveryKeyPath
RecoveryKeyProtector
RecoveryPassword
RecoveryPasswordProtector
Service
SkipHardwareTest
StartupKeyPath
StartupKeyProtector
TpmAndPinAndStartupKeyProtector
TpmAndPinProtector
TpmAndStartupKeyProtector
TpmProtector
UsedSpaceOnly
WhatIf

Enable-BitLockerAutoUnlock Confirm
MountPoint
WhatIf

Get-BitLockerVolume MountPoint

Lock-BitLocker Confirm
ForceDismount
MountPoint
WhatIf

Remove-BitLockerKeyProtector Confirm
KeyProtectorId
MountPoint
WhatIf
Name Parameters

Resume-BitLocker Confirm
MountPoint
WhatIf

Suspend-BitLocker Confirm
MountPoint
RebootCount
WhatIf

Unlock-BitLocker AdAccountOrGroup
Confirm
MountPoint
Password
RecoveryKeyPath
RecoveryPassword
RecoveryPassword
WhatIf

Similar to manage-bde, the Windows PowerShell cmdlets allow configuration beyond


the options offered in the control panel. As with manage-bde, users need to consider
the specific needs of the volume they're encrypting prior to running Windows
PowerShell cmdlets.

A good initial step is to determine the current state of the volume(s) on the computer.
Determining the current state of the volume(s) can be done using the Get-
BitLockerVolume cmdlet.

The Get-BitLockerVolume cmdlet output gives information on the volume type,


protectors, protection status, and other details.

 Tip

Occasionally, all protectors may not be shown when using Get-BitLockerVolume


due to lack of space in the output display. If all of the protectors for a volume are
not seen, use the Windows PowerShell pipe command (|) to format a full listing of
the protectors:

Get-BitLockerVolume C: | fl

To remove the existing protectors prior to provisioning BitLocker on the volume, use the
Remove-BitLockerKeyProtector cmdlet. Running this cmdlet requires the GUID

associated with the protector to be removed.


A simple script can pipe the values of each Get-BitLockerVolume return out to another
variable as seen below:

PowerShell

$vol = Get-BitLockerVolume
$keyprotectors = $vol.KeyProtector

By using this script, the information in the $keyprotectors variable can be displayed to
determine the GUID for each protector.

By using this information, the key protector for a specific volume can be removed using
the command:

PowerShell

Remove-BitLockerKeyProtector <volume>: -KeyProtectorID "{GUID}"

7 Note

The BitLocker cmdlet requires the key protector GUID enclosed in quotation marks
to execute. Ensure the entire GUID, with braces, is included in the command.

Using the BitLocker Windows PowerShell cmdlets with


operating system volumes
Using the BitLocker Windows PowerShell cmdlets is similar to working with the manage-
bde tool for encrypting operating system volumes. Windows PowerShell offers users
flexibility. For example, users can add the desired protector as part command for
encrypting the volume. Below are examples of common user scenarios and steps to
accomplish them in BitLocker Windows PowerShell.

The following example shows how to enable BitLocker on an operating system drive
using only the TPM protector:

PowerShell

Enable-BitLocker C:

In the example below, adds one additional protector, the StartupKey protector and
chooses to skip the BitLocker hardware test. In this example, encryption starts
immediately without the need for a reboot.

PowerShell

Enable-BitLocker C: -StartupKeyProtector -StartupKeyPath <path> -


SkipHardwareTest

Using the BitLocker Windows PowerShell cmdlets with


data volumes
Data volume encryption using Windows PowerShell is the same as for operating system
volumes. Add the desired protectors prior to encrypting the volume. The following
example adds a password protector to the E: volume using the variable $pw as the
password. The $pw variable is held as a SecureString value to store the user-defined
password.

PowerShell

$pw = Read-Host -AsSecureString


<user inputs password>
Enable-BitLockerKeyProtector E: -PasswordProtector -Password $pw

Using an AD Account or Group protector in Windows


PowerShell
The ADAccountOrGroup protector, introduced in Windows 8 and Windows Server 2012,
is an Active Directory SID-based protector. This protector can be added to both
operating system and data volumes, although it doesn't unlock operating system
volumes in the pre-boot environment. The protector requires the SID for the domain
account or group to link with the protector. BitLocker can protect a cluster-aware disk
by adding a SID-based protector for the Cluster Name Object (CNO) that lets the disk
properly fail over to and become unlocked by any member computer of the cluster.

2 Warning

The ADAccountOrGroup protector requires the use of an additional protector for


use (such as TPM, PIN, or recovery key) when used on operating system volumes

To add an ADAccountOrGroup protector to a volume, use either the actual domain SID
or the group name preceded by the domain and a backslash. In the example below, the
CONTOSO\Administrator account is added as a protector to the data volume G.
PowerShell

Enable-BitLocker G: -AdAccountOrGroupProtector -AdAccountOrGroup


CONTOSO\Administrator

For users who wish to use the SID for the account or group, the first step is to determine
the SID associated with the account. To get the specific SID for a user account in
Windows PowerShell, use the following command:

7 Note

Use of this command requires the RSAT-AD-PowerShell feature.

PowerShell

get-aduser -filter {samaccountname -eq "administrator"}

 Tip

In addition to the PowerShell command above, information about the locally


logged on user and group membership can be found using: WHOAMI /ALL. This
doesn't require the use of additional features.

The following example adds an ADAccountOrGroup protector to the previously


encrypted operating system volume using the SID of the account:

PowerShell

Add-BitLockerKeyProtector C: -ADAccountOrGroupProtector -ADAccountOrGroup S-


1-5-21-3651336348-8937238915-291003330-500

7 Note

Active Directory-based protectors are normally used to unlock Failover Cluster


enabled volumes.

Related articles
BitLocker overview
BitLocker frequently asked questions (FAQ)
Prepare your organization for BitLocker: Planning and policies
BitLocker: How to enable Network Unlock
BitLocker: How to deploy on Windows Server 2012
How to use BitLocker Recovery
Password Viewer
Article • 07/25/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

BitLocker Recovery Password Viewer is an optional tool included with the Remote Server
Administration Tools (RSAT). With Recovery Password Viewer you can view the BitLocker
recovery passwords that are stored in Active Directory Domain Services (AD DS). The
tool is an extension for the Active Directory Users and Computers Microsoft Management
Console (MMC) snap-in.

With BitLocker Recovery Password Viewer you can:

Check the Active Directory computer object's properties to find the associated
BitLocker recovery passwords
Search Active Directory for BitLocker recovery password across all the domains in
the Active Directory forest. Passwords can also be searched by password identifier
(ID)

Requirements
To complete the procedures in this scenario, the following requirements must be met:

Domain administrator credentials


Devices must be joined to the domain
On the domain-joined devices, BitLocker must be enabled

The following procedures describe the most common tasks performed by using the
BitLocker Recovery Password Viewer.

View the recovery passwords for a computer


object
1. In Active Directory Users and Computers, locate and then select the container in
which the computer is located
2. Right-click the computer object and select Properties
3. In the Properties dialog box, select the BitLocker Recovery tab to view the
BitLocker recovery passwords that are associated with the computer
Copy the recovery passwords for a computer
object
1. Follow the steps in the previous procedure to view the BitLocker recovery
passwords
2. On the BitLocker Recovery tab of the Properties dialog box, right-click the
BitLocker recovery password that needs to be copied, and then select Copy Details
3. Press CTRL + V to paste the copied text to a destination location, such as a text file
or spreadsheet

Locate a recovery password by using a


password ID
1. In Active Directory Users and Computers, right-click the domain container and
select Find BitLocker Recovery Password
2. In the Find BitLocker Recovery Password dialog box, type the first eight characters
of the recovery password in the Password ID (first 8 characters) box, and select
Search
3. Once the recovery password is located, you can use the previous procedure to
copy it
BitLocker recovery guide
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article describes how to recover BitLocker keys from AD DS.

Organizations can use BitLocker recovery information saved in Active Directory Domain
Services (AD DS) to access BitLocker-protected data. It's recommended to create a
recovery model for BitLocker while planning for BitLocker deployment.

This article assumes that it's understood how to set up AD DS to back up BitLocker
recovery information automatically, and what types of recovery information are saved to
AD DS.

This article doesn't detail how to configure AD DS to store the BitLocker recovery
information.

What is BitLocker recovery?


BitLocker recovery is the process by which access can be restored to a BitLocker-
protected drive if the drive can't be unlocked normally. In a recovery scenario, the
following options to restore access to the drive are available:

The user can supply the recovery password. If the organization allows users to
print or store recovery passwords, the users can enter in the 48-digit recovery
password that they printed or stored on a USB drive or with a Microsoft account
online. Saving a recovery password with a Microsoft account online is only allowed
when BitLocker is used on a PC that isn't a member of a domain.

Data recovery agents can use their credentials to unlock the drive. If the drive is
an operating system drive, the drive must be mounted as a data drive on another
computer for the data recovery agent to unlock it.

A domain administrator can obtain the recovery password from AD DS and use
it to unlock the drive. Storing recovery passwords in AD DS is recommended to
provide a way for IT professionals to be able to obtain recovery passwords for
drives in an organization if needed. This method makes it mandatory to enable this
recovery method in the BitLocker group policy setting Choose how BitLocker-
protected operating system drives can be recovered located at Computer
Configuration > Administrative Templates > Windows Components > BitLocker
Drive Encryption > Operating System Drives in the Local Group Policy Editor. For
more information, see BitLocker Group Policy settings.

What causes BitLocker recovery?


The following list provides examples of specific events that will cause BitLocker to enter
recovery mode when attempting to start the operating system drive:

On PCs that use BitLocker Drive Encryption, or on devices such as tablets or


phones that use BitLocker Device Encryption only, when an attack is detected, the
device will immediately reboot and enter into BitLocker recovery mode. To take
advantage of this functionality, administrators can set the Interactive logon:
Machine account lockout threshold Group Policy setting located in Computer
Configuration > Windows Settings > Security Settings > Local Policies > Security
Options in the Local Group Policy Editor. Or they can use the
MaxFailedPasswordAttempts policy of Exchange ActiveSync (also configurable
through Microsoft Intune), to limit the number of failed password attempts before
the device goes into Device Lockout.

On devices with TPM 1.2, changing the BIOS or firmware boot device order causes
BitLocker recovery. However, devices with TPM 2.0 don't start BitLocker recovery in
this case. TPM 2.0 doesn't consider a firmware change of boot device order as a
security threat because the OS Boot Loader isn't compromised.

Having the CD or DVD drive before the hard drive in the BIOS boot order and then
inserting or removing a CD or DVD.

Failing to boot from a network drive before booting from the hard drive.

Docking or undocking a portable computer. In some instances (depending on the


computer manufacturer and the BIOS), the docking condition of the portable
computer is part of the system measurement and must be consistent to validate
the system status and unlock BitLocker. So if a portable computer is connected to
its docking station when BitLocker is turned on, then it might also need to be
connected to the docking station when it's unlocked. Conversely, if a portable
computer isn't connected to its docking station when BitLocker is turned on, then
it might need to be disconnected from the docking station when it's unlocked.

Changes to the NTFS partition table on the disk including creating, deleting, or
resizing a primary partition.

Entering the personal identification number (PIN) incorrectly too many times so
that the anti-hammering logic of the TPM is activated. Anti-hammering logic is
software or hardware methods that increase the difficulty and cost of a brute force
attack on a PIN by not accepting PIN entries until after a certain amount of time
has passed.

Turning off the support for reading the USB device in the pre-boot environment
from the BIOS or UEFI firmware if using USB-based keys instead of a TPM.

Turning off, disabling, deactivating, or clearing the TPM.

Upgrading critical early startup components, such as a BIOS or UEFI firmware


upgrade, causing the related boot measurements to change.

Forgetting the PIN when PIN authentication has been enabled.

Updating option ROM firmware.

Upgrading TPM firmware.

Adding or removing hardware; for example, inserting a new card in the computer,
including some PCMIA wireless cards.

Removing, inserting, or completely depleting the charge on a smart battery on a


portable computer.

Changes to the master boot record on the disk.

Changes to the boot manager on the disk.

Hiding the TPM from the operating system. Some BIOS or UEFI settings can be
used to prevent the enumeration of the TPM to the operating system. When
implemented, this option can make the TPM hidden from the operating system.
When the TPM is hidden, BIOS and UEFI secure startup are disabled, and the TPM
doesn't respond to commands from any software.

Using a different keyboard that doesn't correctly enter the PIN or whose keyboard
map doesn't match the keyboard map assumed by the pre-boot environment. This
problem can prevent the entry of enhanced PINs.

Modifying the Platform Configuration Registers (PCRs) used by the TPM validation
profile. For example, including PCR[1] would result in BitLocker measuring most
changes to BIOS settings, causing BitLocker to enter recovery mode even when
non-boot critical BIOS settings change.

7 Note
Some computers have BIOS settings that skip measurements to certain PCRs,
such as PCR[2]. Changing this setting in the BIOS would cause BitLocker to
enter recovery mode because the PCR measurement will be different.

Moving the BitLocker-protected drive into a new computer.

Upgrading the motherboard to a new one with a new TPM.

Losing the USB flash drive containing the startup key when startup key
authentication has been enabled.

Failing the TPM self-test.

Having a BIOS, UEFI firmware, or an option ROM component that isn't compliant
with the relevant Trusted Computing Group standards for a client computer. For
example, a non-compliant implementation may record volatile data (such as time)
in the TPM measurements, causing different measurements on each startup and
causing BitLocker to start in recovery mode.

Changing the usage authorization for the storage root key of the TPM to a non-
zero value.

7 Note

The BitLocker TPM initialization process sets the usage authorization value to
zero, so another user or process must explicitly have changed this value.

Disabling the code integrity check or enabling test signing on Windows Boot
Manager (Bootmgr).

Pressing the F8 or F10 key during the boot process.

Adding or removing add-in cards (such as video or network cards), or upgrading


firmware on add-in cards.

Using a BIOS hot key during the boot process to change the boot order to
something other than the hard drive.

7 Note

Before beginning recovery, it is recommend to determine what caused recovery.


This might help prevent the problem from occurring again in the future. For
instance, if it is determined that an attacker has modified the computer by
obtaining physical access, new security policies can be created for tracking who has
physical presence. After the recovery password has been used to recover access to
the PC, BitLocker reseals the encryption key to the current values of the measured
components.

For planned scenarios, such as a known hardware or firmware upgrades, initiating


recovery can be avoided by temporarily suspending BitLocker protection. Because
suspending BitLocker leaves the drive fully encrypted, the administrator can quickly
resume BitLocker protection after the planned task has been completed. Using suspend
and resume also reseals the encryption key without requiring the entry of the recovery
key.

7 Note

If suspended BitLocker will automatically resume protection when the PC is


rebooted, unless a reboot count is specified using the manage-bde command line
tool.

If software maintenance requires the computer to be restarted and two-factor


authentication is being used, the BitLocker network unlock feature can be enabled to
provide the secondary authentication factor when the computers don't have an on-
premises user to provide the additional authentication method.

Recovery has been described within the context of unplanned or undesired behavior.
However, recovery can also be caused as an intended production scenario, for example
in order to manage access control. When desktop or laptop computers are redeployed
to other departments or employees in the enterprise, BitLocker can be forced into
recovery before the computer is given to a new user.

Testing recovery
Before a thorough BitLocker recovery process is created, it's recommended to test how
the recovery process works for both end users (people who call the helpdesk for the
recovery password) and administrators (people who help the end user get the recovery
password). The -forcerecovery command of manage-bde.exe is an easy way to step
through the recovery process before users encounter a recovery situation.

To force a recovery for the local computer:

1. Select the Start button and type in cmd


2. Right select on cmd.exe or Command Prompt and then select Run as
administrator.

3. At the command prompt, enter the following command:

Windows Command Prompt

manage-bde.exe -forcerecovery <BitLockerVolume>

To force recovery for a remote computer:

1. Select the Start button and type in cmd

2. Right select on cmd.exe or Command Prompt and then select Run as


administrator.

3. At the command prompt, enter the following command:

Windows Command Prompt

manage-bde.exe -ComputerName <RemoteComputerName> -forcerecovery


<BitLockerVolume>

7 Note

Recovery triggered by -forcerecovery persists for multiple restarts until a


TPM protector is added or protection is suspended by the user. When using
Modern Standby devices (such as Surface devices), the -forcerecovery option
is not recommended because BitLocker will have to be unlocked and disabled
manually from the WinRE environment before the OS can boot up again. For
more information, see BitLocker Troubleshooting: Continuous reboot loop
with BitLocker recovery on a slate device .

Planning the recovery process


When planning the BitLocker recovery process, first consult the organization's current
best practices for recovering sensitive information. For example: How does the
enterprise handle lost Windows passwords? How does the organization perform smart
card PIN resets? These best practices and related resources (people and tools) can be
used to help formulate a BitLocker recovery model.
Organizations that rely on BitLocker Drive Encryption and BitLocker To Go to protect
data on a large number of computers and removable drives running the Windows 11,
Windows 10, Windows 8, or Windows 7 operating systems and Windows to Go should
consider using the Microsoft BitLocker Administration and Monitoring (MBAM) Tool
version 2.0, which is included in the Microsoft Desktop Optimization Pack (MDOP) for
Microsoft Software Assurance. MBAM makes BitLocker implementations easier to
deploy and manage and allows administrators to provision and monitor encryption for
operating system and fixed drives. MBAM prompts the user before encrypting fixed
drives. MBAM also manages recovery keys for fixed and removable drives, making
recovery easier to manage. MBAM can be used as part of a Microsoft System Center
deployment or as a stand-alone solution. For more info, see Microsoft BitLocker
Administration and Monitoring.

After a BitLocker recovery has been initiated, users can use a recovery password to
unlock access to encrypted data. Consider both self-recovery and recovery password
retrieval methods for the organization.

When the recovery process is determined:

Become familiar with how a recovery password can be retrieved. See:


Self-recovery
Recovery password retrieval

Determine a series of steps for post-recovery, including analyzing why the recovery
occurred and resetting the recovery password. See:
Post-recovery analysis

Self-recovery
In some cases, users might have the recovery password in a printout or a USB flash drive
and can perform self-recovery. It's recommended that the organization creates a policy
for self-recovery. If self-recovery includes using a password or recovery key stored on a
USB flash drive, the users must be warned not to store the USB flash drive in the same
place as the PC, especially during travel. For example, if both the PC and the recovery
items are in the same bag it would be easy for access to be gained to the PC by an
unauthorized user. Another policy to consider is having users contact the Helpdesk
before or after performing self-recovery so that the root cause can be identified.

Recovery password retrieval


If the user doesn't have a recovery password printed or on a USB flash drive, the user
will need to be able to retrieve the recovery password from an online source. If the PC is
a member of a domain, the recovery password can be backed up to AD DS. However,
back up of the recovery password to AD DS does not happen by default. Backup of
the recovery password to AD DS has to be configured via the appropriate group policy
settings before BitLocker was enabled on the PC. BitLocker group policy settings can be
found in the Local Group Policy Editor or the Group Policy Management Console
(GPMC) under Computer Configuration > Administrative Templates > Windows
Components > BitLocker Drive Encryption. The following policy settings define the
recovery methods that can be used to restore access to a BitLocker-protected drive if an
authentication method fails or is unable to be used.

Choose how BitLocker-protected operating system drives can be recovered

Choose how BitLocker-protected fixed drives can be recovered

Choose how BitLocker-protected removable drives can be recovered

In each of these policies, select Save BitLocker recovery information to Active


Directory Domain Services and then choose which BitLocker recovery information to
store in AD DS. Check the Do not enable BitLocker until recovery information is stored
in AD DS check box if it's desired to prevent users from enabling BitLocker unless the
computer is connected to the domain and the backup of BitLocker recovery information
for the drive to AD DS succeeds.

7 Note

If the PCs are part of a workgroup, users are advised to save their BitLocker
recovery password with their Microsoft account online. Having an online copy of
the BitLocker recovery password is recommended to help ensure access to data is
not lost in the event of a recovery being required.

The BitLocker Recovery Password Viewer for Active Directory Users and Computers tool
allows domain administrators to view BitLocker recovery passwords for specific
computer objects in Active Directory.

The following list can be used as a template for creating a recovery process for recovery
password retrieval. This sample process uses the BitLocker Recovery Password Viewer for
Active Directory Users and Computers tool.

Record the name of the user's computer


Verify the user's identity
Locate the recovery password in AD DS
Gather information to determine why recovery occurred
Give the user the recovery password
Record the name of the user's computer
The name of the user's computer can be used to locate the recovery password in AD DS.
If the user doesn't know the name of the computer, ask the user to read the first word of
the Drive Label in the BitLocker Drive Encryption Password Entry user interface. This
word is the computer name when BitLocker was enabled and is probably the current
name of the computer.

Verify the user's identity


The person who is asking for the recovery password should be verified as the authorized
user of that computer. It should also be verified whether the computer for which the
user provided the name belongs to the user.

Locate the recovery password in AD DS


Locate the computer object with the matching name in AD DS. Because computer object
names are listed in the AD DS global catalog, the object should be able to be located
even if it's a multi-domain forest.

Multiple recovery passwords


If multiple recovery passwords are stored under a computer object in AD DS, the name
of the BitLocker recovery information object includes the date on which the password
was created.

To make sure the correct password is provided and/or to prevent providing the incorrect
password, ask the user to read the eight character password ID that is displayed in the
recovery console.

Since the password ID is a unique value that is associated with each recovery password
stored in AD DS, running a query using this ID finds the correct password to unlock the
encrypted volume.

Gather information to determine why recovery occurred


Before giving the user the recovery password, information should be gatherer that will
help determine why the recovery was needed. This information can be used to analyze
the root cause during the post-recovery analysis. For more information about post-
recovery analysis, see Post-recovery analysis.
Give the user the recovery password
Because the recovery password is 48 digits long, the user may need to record the
password by writing it down or typing it on a different computer. If using MBAM or
Configuration Manager BitLocker Management, the recovery password will be
regenerated after it's recovered from the MBAM or Configuration Manager database to
avoid the security risks associated with an uncontrolled password.

7 Note

Because the 48-digit recovery password is long and contains a combination of


digits, the user might mishear or mistype the password. The boot-time recovery
console uses built-in checksum numbers to detect input errors in each 6-digit block
of the 48-digit recovery password, and offers the user the opportunity to correct
such errors.

Post-recovery analysis
When a volume is unlocked using a recovery password, an event is written to the event
log, and the platform validation measurements are reset in the TPM to match the
current configuration. Unlocking the volume means that the encryption key has been
released and is ready for on-the-fly encryption when data is written to the volume, and
on-the-fly decryption when data is read from the volume. After the volume is unlocked,
BitLocker behaves the same way, regardless of how the access was granted.

If it's noticed that a computer is having repeated recovery password unlocks, an


administrator might want to perform post-recovery analysis to determine the root cause
of the recovery, and refresh BitLocker platform validation so that the user no longer
needs to enter a recovery password each time that the computer starts up. For more
information, see:

Determine the root cause of the recovery


Resolve the root cause

Determine the root cause of the recovery


If a user needed to recover the drive, it's important to determine the root cause that
initiated the recovery as soon as possible. Properly analyzing the state of the computer
and detecting tampering may reveal threats that have broader implications for
enterprise security.
While an administrator can remotely investigate the cause of recovery in some cases,
the end user might need to bring the computer that contains the recovered drive on site
to analyze the root cause further.

Review and answer the following questions for the organization:

1. Which BitLocker protection mode is in effect (TPM, TPM + PIN, TPM + startup key,
startup key only)? Which PCR profile is in use on the PC?

2. Did the user merely forget the PIN or lose the startup key? If a token was lost,
where might the token be?

3. If TPM mode was in effect, was recovery caused by a boot file change?

4. If recovery was caused by a boot file change, is the boot file change due to an
intended user action (for example, BIOS upgrade), or a malicious software?

5. When was the user last able to start the computer successfully, and what might
have happened to the computer since then?

6. Might the user have encountered malicious software or left the computer
unattended since the last successful startup?

To help answer these questions, use the BitLocker command-line tool to view the
current configuration and protection mode:

Windows Command Prompt

manage-bde.exe -status

Scan the event log to find events that help indicate why recovery was initiated (for
example, if a boot file change occurred). Both of these capabilities can be performed
remotely.

Resolve the root cause


After it has been identified what caused recovery, BitLocker protection can be reset to
avoid recovery on every startup.

The details of this reset can vary according to the root cause of the recovery. If root
cause can't be determined, or if a malicious software or a rootkit might have infected
the computer, Helpdesk should apply best-practice virus policies to react appropriately.

7 Note
BitLocker validation profile reset can be performed by suspending and resuming
BitLocker.

Unknown PIN
Lost startup key
Changes to boot files

Unknown PIN
If a user has forgotten the PIN, the PIN must be reset while signed on to the computer
in order to prevent BitLocker from initiating recovery each time the computer is
restarted.

To prevent continued recovery due to an unknown PIN


1. Unlock the computer using the recovery password.

2. Reset the PIN:

a. Select and hold the drive and then select Change PIN

b. In the BitLocker Drive Encryption dialog, select Reset a forgotten PIN. If the
signed in account isn't an administrator account, administrative credentials must
be provided at this time.

c. In the PIN reset dialog, provide and confirm the new PIN to be used and then
select Finish.

3. The new PIN can be used the next time the drive needs to be unlocked.

Lost startup key


If the USB flash drive that contains the startup key has been lost, then drive must be
unlocked by using the recovery key. A new startup can then be created.

To prevent continued recovery due to a lost startup key


1. Sign in as an administrator to the computer that has its startup key lost.

2. Open Manage BitLocker.

3. Select Duplicate start up key, insert the clean USB drive where the key will be
written, and then select Save.
Changes to boot files
This error occurs if the firmware is updated. As a best practice, BitLocker should be
suspended before making changes to the firmware. Protection should then be resumed
after the firmware update has completed. Suspending BitLocker prevents the computer
from going into recovery mode. However, if changes were made when BitLocker
protection was on, the recovery password can be used to unlock the drive and the
platform validation profile will be updated so that recovery won't occur the next time.

Windows RE and BitLocker Device Encryption


Windows Recovery Environment (RE) can be used to recover access to a drive protected
by BitLocker Device Encryption. If a PC is unable to boot after two failures, Startup
Repair automatically starts. When Startup Repair is launched automatically due to boot
failures, it executes only operating system and driver file repairs if the boot logs or any
available crash dump points to a specific corrupted file. In Windows 8.1 and later
versions, devices that include firmware to support specific TPM measurements for
PCR[7] the TPM can validate that Windows RE is a trusted operating environment and
unlock any BitLocker-protected drives if Windows RE hasn't been modified. If the
Windows RE environment has been modified, for example, the TPM has been disabled,
the drives stay locked until the BitLocker recovery key is provided. If Startup Repair isn't
able to run automatically from the PC and instead, Windows RE is manually started from
a repair disk, the BitLocker recovery key must be provided to unlock the BitLocker-
protected drives.

Windows RE will also ask for a BitLocker recovery key when a Remove everything reset
from Windows RE is started on a device that uses TPM + PIN or Password for OS drive
protectors. If BitLocker recovery is started on a keyboardless device with TPM-only
protection, Windows RE, not the boot manager, will ask for the BitLocker recovery key.
After the key is entered, Windows RE troubleshooting tools can be accessed, or
Windows can be started normally.

The BitLocker recovery screen that's shown by Windows RE has the accessibility tools
like narrator and on-screen keyboard to help enter the BitLocker recovery key. If the
BitLocker recovery key is requested by the Windows boot manager, those tools might
not be available.

To activate the narrator during BitLocker recovery in Windows RE, press Windows +
CTRL + Enter. To activate the on-screen keyboard, tap on a text input control.
BitLocker recovery screen
During BitLocker recovery, Windows displays a custom recovery message and a few
hints that identify where a key can be retrieved from. These improvements can help a
user during BitLocker recovery.

Custom recovery message


BitLocker Group Policy settings starting in Windows 10, version 1511, allows configuring
a custom recovery message and URL on the BitLocker recovery screen. The custom
recovery message and URL can include the address of the BitLocker self-service recovery
portal, the IT internal website, or a phone number for support.

This policy can be configured using GPO under Computer Configuration >
Administrative Templates > Windows Components > BitLocker Drive Encryption >
Operating System Drives > Configure pre-boot recovery message and URL.

It can also be configured using mobile device management (MDM), including in Intune,
using the BitLocker CSP:

<LocURI>./Device/Vendor/MSFT/BitLocker/SystemDrivesRecoveryMessage</LocURI>

Example of a customized recovery screen:


BitLocker recovery key hints
BitLocker metadata has been enhanced starting in Windows 10, version 1903, to include
information about when and where the BitLocker recovery key was backed up. This
information isn't exposed through the UI or any public API. It's used solely by the
BitLocker recovery screen in the form of hints to help a user locate a volume's recovery
key. Hints are displayed on the recovery screen and refer to the location where the key
has been saved. Hints are displayed on both the modern (blue) and legacy (black)
recovery screen. The hints apply to both the boot manager recovery screen and the
WinRE unlock screen.

) Important

It is not recommend to print recovery keys or saving them to a file. Instead, use
Active Directory backup or a cloud-based backup. Cloud-based backup includes
Azure Active Directory (Azure AD) and Microsoft account.

There are rules governing which hint is shown during the recovery (in the order of
processing):

1. Always display custom recovery message if it has been configured (using GPO or
MDM).

2. Always display generic hint: For more information, go to


https://aka.ms/recoverykeyfaq.

3. If multiple recovery keys exist on the volume, prioritize the last-created (and
successfully backed up) recovery key.

4. Prioritize keys with successful backup over keys that have never been backed up.

5. Prioritize backup hints in the following order for remote backup locations:
Microsoft Account > Azure AD > Active Directory.

6. If a key has been printed and saved to file, display a combined hint, "Look for a
printout or a text file with the key," instead of two separate hints.

7. If multiple backups of the same type (remove vs. local) have been performed for
the same recovery key, prioritize backup info with latest backed-up date.

8. There's no specific hint for keys saved to an on-premises Active Directory. In this
case, a custom message (if configured) or a generic message, "Contact your
organization's help desk," is displayed.

9. If two recovery keys are present on the disk, but only one has been successfully
backed up, the system asks for a key that has been backed up, even if another key
is newer.

Example 1 (single recovery key with single backup)

Custom URL Yes

Saved to Microsoft Account Yes

Saved to Azure AD No

Saved to Active Directory No

Printed No
Custom URL Yes

Saved to file No

Result: The hints for the Microsoft account and custom URL are displayed.

Example 2 (single recovery key with single backup)

Custom URL Yes

Saved to Microsoft Account No

Saved to Azure AD No

Saved to Active Directory Yes

Printed No

Saved to file No

Result: Only the custom URL is displayed.


Example 3 (single recovery key with multiple backups)

Custom URL No

Saved to Microsoft Account Yes

Saved to Azure AD Yes

Saved to Active Directory No

Printed Yes

Saved to file Yes

Result: Only the Microsoft Account hint is displayed.


Example 4 (multiple recovery passwords)

Custom URL No

Saved to Microsoft Account No

Saved to Azure AD No

Saved to Active Directory No

Printed No

Saved to file Yes

Creation time 1PM

Key ID A564F193

Custom URL No

Saved to Microsoft Account No

Saved to Azure AD No

Saved to Active Directory No

Printed No

Saved to file No

Creation time 3PM

Key ID T4521ER5

Result: Only the hint for a successfully backed up key is displayed, even if it isn't the
most recent key.
Example 5 (multiple recovery passwords)

Custom URL No

Saved to Microsoft Account Yes

Saved to Azure AD Yes

Saved to Active Directory No

Printed No

Saved to file No

Creation time 1PM

Key ID 99631A34

Custom URL No

Saved to Microsoft Account No

Saved to Azure AD Yes

Saved to Active Directory No

Printed No

Saved to file No

Creation time 3PM

Key ID 9DF70931
Result: The hint for the most recent key is displayed.

Using additional recovery information


Besides the 48-digit BitLocker recovery password, other types of recovery information
are stored in Active Directory. This section describes how this additional information can
be used.

BitLocker key package


If the recovery methods discussed earlier in this document don't unlock the volume, the
BitLocker Repair tool can be used to decrypt the volume at the block level. The tool uses
the BitLocker key package to help recover encrypted data from severely damaged
drives. The recovered data can then be used to salvage encrypted data, even after the
correct recovery password has failed to unlock the damaged volume. It's recommended
to still save the recovery password. A key package can't be used without the
corresponding recovery password.

7 Note

The BitLocker Repair tool repair-bde.exe must be used to use the BitLocker key
package.

The BitLocker key package isn't saved by default. To save the package along with the
recovery password in AD DS, the Backup recovery password and key package option
must be selected in the group policy settings that control the recovery method. The key
package can also be exported from a working volume. For more information on how to
export key packages, see Retrieving the BitLocker Key Package.

Resetting recovery passwords


It's recommended to invalidate a recovery password after it has been provided and
used. The recovery password can be invalidated when it has been provided and used or
for any other valid reason.

The recovery password and be invalidated and reset in two ways:

Use manage-bde.exe : manage-bde.exe can be used to remove the old recovery


password and add a new recovery password. The procedure identifies the
command and the syntax for this method.

Run a script: A script can be run to reset the password without decrypting the
volume. The sample script in the procedure illustrates this functionality. The sample
script creates a new recovery password and invalidates all other passwords.

Resetting a recovery password using manage-bde.exe


1. Remove the previous recovery password.

Windows Command Prompt

`manage-bde.exe` -protectors -delete C: -type RecoveryPassword

2. Add the new recovery password.

Windows Command Prompt

`manage-bde.exe` -protectors -add C: -RecoveryPassword

3. Get the ID of the new recovery password. From the screen, copy the ID of the
recovery password.

Windows Command Prompt

`manage-bde.exe` -protectors -get C: -Type RecoveryPassword

4. Back up the new recovery password to AD DS.

Windows Command Prompt


`manage-bde.exe` -protectors -adbackup C: -id {EXAMPLE6-5507-4924-AA9E-
AFB2EB003692}

2 Warning

The braces {} must be included in the ID string.

Running the sample recovery password script to reset the


recovery passwords
1. Save the following sample script in a VBScript file. For example:

ResetPassword.vbs .

2. At the command prompt, enter the following command::

Windows Command Prompt

cscript.exe ResetPassword.vbs

) Important

This sample script is configured to work only for the C volume. If necessary,
customize the script to match the volume where the password reset needs to
be tested.

7 Note

To manage a remote computer, specify the remote computer name rather than the
local computer name.

The following sample VBScript can be used to reset the recovery passwords:

Expand to view sample recovery password VBscript to reset the recovery passwords

VB

' Target drive letter


strDriveLetter = "c:"
' Target computer name
' Use "." to connect to the local computer
strComputerName = "."
' --------------------------------------------------------------------------
------
' Connect to the BitLocker WMI provider class
' --------------------------------------------------------------------------
------
strConnectionStr = "winmgmts:" _
& "
{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" _
& strComputerName _
& "\root\cimv2\Security\MicrosoftVolumeEncryption"

On Error Resume Next 'handle permission errors


Set objWMIService = GetObject(strConnectionStr)
If Err.Number <> 0 Then
WScript.Echo "Failed to connect to the BitLocker interface (Error 0x" &
Hex(Err.Number) & ")."
Wscript.Echo "Ensure that you are running with administrative
privileges."
WScript.Quit -1
End If
On Error GoTo 0
strQuery = "Select * from Win32_EncryptableVolume where DriveLetter='" &
strDriveLetter & "'"
Set colTargetVolumes = objWMIService.ExecQuery(strQuery)
If colTargetVolumes.Count = 0 Then
WScript.Echo "FAILURE: Unable to find BitLocker-capable drive " &
strDriveLetter & " on computer " & strComputerName & "."
WScript.Quit -1
End If
' there should only be one volume found
For Each objFoundVolume in colTargetVolumes
set objVolume = objFoundVolume
Next
' objVolume is now our found BitLocker-capable disk volume
' --------------------------------------------------------------------------
------
' Perform BitLocker WMI provider functionality
' --------------------------------------------------------------------------
------
' Add a new recovery password, keeping the ID around so it doesn't get
deleted later
' --------------------------------------------------------------------------
--------
nRC = objVolume.ProtectKeyWithNumericalPassword("Recovery Password Refreshed
By Script", , sNewKeyProtectorID)
If nRC <> 0 Then
WScript.Echo "FAILURE: ProtectKeyWithNumericalPassword failed with return
code 0x" & Hex(nRC)
WScript.Quit -1
End If
' Removes the other, "stale", recovery passwords
' --------------------------------------------------------------------------
--------
nKeyProtectorTypeIn = 3 ' type associated with "Numerical Password"
protector
nRC = objVolume.GetKeyProtectors(nKeyProtectorTypeIn, aKeyProtectorIDs)
If nRC <> 0 Then
WScript.Echo "FAILURE: GetKeyProtectors failed with return code 0x" &
Hex(nRC)
WScript.Quit -1
End If
' Delete those key protectors other than the one we just added.
For Each sKeyProtectorID In aKeyProtectorIDs
If sKeyProtectorID <> sNewKeyProtectorID Then
nRC = objVolume.DeleteKeyProtector(sKeyProtectorID)
If nRC <> 0 Then
WScript.Echo "FAILURE: DeleteKeyProtector on ID " & sKeyProtectorID & "
failed with return code 0x" & Hex(nRC)
WScript.Quit -1
Else
' no output
'WScript.Echo "SUCCESS: Key protector with ID " & sKeyProtectorID & "
deleted"
End If
End If
Next
WScript.Echo "A new recovery password has been added. Old passwords have
been removed."
' - some advanced output (hidden)
'WScript.Echo ""
'WScript.Echo "Type ""manage-bde.exe -protectors -get " & strDriveLetter & "
-type recoverypassword"" to view existing passwords."

Retrieving the BitLocker key package


Two methods can be used to retrieve the key package as described in Using Additional
Recovery Information:

Export a previously saved key package from AD DS. Read access is required to
BitLocker recovery passwords that are stored in AD DS.

Export a new key package from an unlocked, BitLocker-protected volume. Local


administrator access to the working volume is required before any damage
occurred to the volume.

Running the sample key package retrieval script that


exports all previously saved key packages from AD DS
The following steps and sample script exports all previously saved key packages from
AD DS.
1. Save the following sample script in a VBScript file. For example:
GetBitLockerKeyPackageADDS.vbs .

2. At the command prompt, enter a command similar to the following sample script:

Windows Command Prompt

cscript.exe GetBitLockerKeyPackageADDS.vbs -?

The following sample script can be used to create a VBScript file to retrieve the BitLocker
key package from AD DS:

Expand to view sample key package retrieval VBscript that exports all previously saved
key packages from AD DS

VB

' --------------------------------------------------------------------------
------
' Usage
' --------------------------------------------------------------------------
------
Sub ShowUsage
Wscript.Echo "USAGE: GetBitLockerKeyPackageADDS [Path To Save Key
Package] [Optional Computer Name]"
Wscript.Echo "If no computer name is specified, the local computer is
assumed."
Wscript.Echo
Wscript.Echo "Example: GetBitLockerKeyPackageADDS E:\bitlocker-ad-key-
package mycomputer"
WScript.Quit
End Sub
' --------------------------------------------------------------------------
------
' Parse Arguments
' --------------------------------------------------------------------------
------
Set args = WScript.Arguments
Select Case args.Count
Case 1
If args(0) = "/?" Or args(0) = "-?" Then
ShowUsage
Else
strFilePath = args(0)
' Get the name of the local computer
Set objNetwork = CreateObject("WScript.Network")
strComputerName = objNetwork.ComputerName
End If

Case 2
If args(0) = "/?" Or args(0) = "-?" Then
ShowUsage
Else
strFilePath = args(0)
strComputerName = args(1)
End If
Case Else
ShowUsage
End Select
' --------------------------------------------------------------------------
------
' Get path to Active Directory computer object associated with the computer
name
' --------------------------------------------------------------------------
------
Function GetStrPathToComputer(strComputerName)
' Uses the global catalog to find the computer in the forest
' Search also includes deleted computers in the tombstone
Set objRootLDAP = GetObject("LDAP://rootDSE")
namingContext = objRootLDAP.Get("defaultNamingContext") ' e.g. string
dc=fabrikam,dc=com
strBase = "<GC://" & namingContext & ">"

Set objConnection = CreateObject("ADODB.Connection")


Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOOBject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
strFilter = "(&(objectCategory=Computer)(cn=" & strComputerName & "))"
strQuery = strBase & ";" & strFilter & ";distinguishedName;subtree"
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 100
objCommand.Properties("Timeout") = 100
objCommand.Properties("Cache Results") = False
' Enumerate all objects found.
Set objRecordSet = objCommand.Execute
If objRecordSet.EOF Then
WScript.echo "The computer name '" & strComputerName & "' cannot be
found."
WScript.Quit 1
End If
' Found object matching name
Do Until objRecordSet.EOF
dnFound = objRecordSet.Fields("distinguishedName")
GetStrPathToComputer = "LDAP://" & dnFound
objRecordSet.MoveNext
Loop
' Clean up.
Set objConnection = Nothing
Set objCommand = Nothing
Set objRecordSet = Nothing
End Function
' --------------------------------------------------------------------------
------
' Securely access the Active Directory computer object using Kerberos
' --------------------------------------------------------------------------
------
Set objDSO = GetObject("LDAP:")
strPathToComputer = GetStrPathToComputer(strComputerName)
WScript.Echo "Accessing object: " + strPathToComputer
Const ADS_SECURE_AUTHENTICATION = 1
Const ADS_USE_SEALING = 64 '0x40
Const ADS_USE_SIGNING = 128 '0x80
' --------------------------------------------------------------------------
------
' Get all BitLocker recovery information from the Active Directory computer
object
' --------------------------------------------------------------------------
------
' Get all the recovery information child objects of the computer object
Set objFveInfos = objDSO.OpenDSObject(strPathToComputer, vbNullString,
vbNullString, _
ADS_SECURE_AUTHENTICATION +
ADS_USE_SEALING + ADS_USE_SIGNING)
objFveInfos.Filter = Array("msFVE-RecoveryInformation")
' Iterate through each recovery information object and saves any existing
key packages
nCount = 1
strFilePathCurrent = strFilePath & nCount
For Each objFveInfo in objFveInfos
strName = objFveInfo.Get("name")
strRecoveryPassword = objFveInfo.Get("msFVE-RecoveryPassword")
strKeyPackage = objFveInfo.Get("msFVE-KeyPackage")
WScript.echo
WScript.echo "Recovery Object Name: " + strName
WScript.echo "Recovery Password: " + strRecoveryPassword
' Validate file path
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(strFilePathCurrent)) Then
WScript.Echo "The file " & strFilePathCurrent & " already exists. Please
use a different path."
WScript.Quit -1
End If
' Save binary data to the file
SaveBinaryDataText strFilePathCurrent, strKeyPackage

WScript.echo "Related key package successfully saved to " +


strFilePathCurrent
' Update next file path using base name
nCount = nCount + 1
strFilePathCurrent = strFilePath & nCount
Next
'---------------------------------------------------------------------------
-------------
' Utility functions to save binary data
'---------------------------------------------------------------------------
-------------
Function SaveBinaryDataText(FileName, ByteArray)
'Create FileSystemObject object
Dim FS: Set FS = CreateObject("Scripting.FileSystemObject")
'Create text stream object
Dim TextStream
Set TextStream = FS.CreateTextFile(FileName)

'Convert binary data To text And write them To the file


TextStream.Write BinaryToString(ByteArray)
End Function
Function BinaryToString(Binary)
Dim I, S
For I = 1 To LenB(Binary)
S = S & Chr(AscB(MidB(Binary, I, 1)))
Next
BinaryToString = S
End Function
WScript.Quit

Running the sample key package retrieval script that


exports a new key package from an unlocked, encrypted
volume
The following steps and sample script exports a new key package from an unlocked,
encrypted volume.

1. Save the following sample script in a VBScript file. For example:


GetBitLockerKeyPackage.vbs

2. Open an administrator command prompt, and then enter a command similar to


the following sample script:

Windows Command Prompt

cscript.exe GetBitLockerKeyPackage.vbs -?

Expand to view sample VBscript that exports a new key package from an unlocked,
encrypted volume

VB

' --------------------------------------------------------------------------
------
' Usage
' --------------------------------------------------------------------------
------
Sub ShowUsage
Wscript.Echo "USAGE: GetBitLockerKeyPackage [VolumeLetter/DriveLetter:]
[Path To Save Key Package]"
Wscript.Echo
Wscript.Echo "Example: GetBitLockerKeyPackage C: E:\bitlocker-backup-key-
package"
WScript.Quit
End Sub
' --------------------------------------------------------------------------
------
' Parse Arguments
' --------------------------------------------------------------------------
------
Set args = WScript.Arguments
Select Case args.Count
Case 2
If args(0) = "/?" Or args(0) = "-?" Then
ShowUsage
Else
strDriveLetter = args(0)
strFilePath = args(1)
End If
Case Else
ShowUsage
End Select
' --------------------------------------------------------------------------
------
' Other Inputs
' --------------------------------------------------------------------------
------
' Target computer name
' Use "." to connect to the local computer
strComputerName = "."
' Default key protector ID to use. Specify "" to let the script choose.
strDefaultKeyProtectorID = ""
' strDefaultKeyProtectorID = "{001298E0-870E-4BA0-A2FF-FC74758D5720}" '
sample
' --------------------------------------------------------------------------
------
' Connect to the BitLocker WMI provider class
' --------------------------------------------------------------------------
------
strConnectionStr = "winmgmts:" _
& "
{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" _
& strComputerName _
& "\root\cimv2\Security\MicrosoftVolumeEncryption"

On Error Resume Next 'handle permission errors


Set objWMIService = GetObject(strConnectionStr)
If Err.Number <> 0 Then
WScript.Echo "Failed to connect to the BitLocker interface (Error 0x" &
Hex(Err.Number) & ")."
Wscript.Echo "Ensure that you are running with administrative
privileges."
WScript.Quit -1
End If
On Error GoTo 0
strQuery = "Select * from Win32_EncryptableVolume where DriveLetter='" &
strDriveLetter & "'"
Set colTargetVolumes = objWMIService.ExecQuery(strQuery)
If colTargetVolumes.Count = 0 Then
WScript.Echo "FAILURE: Unable to find BitLocker-capable drive " &
strDriveLetter & " on computer " & strComputerName & "."
WScript.Quit -1
End If
' there should only be one volume found
For Each objFoundVolume in colTargetVolumes
set objVolume = objFoundVolume
Next
' objVolume is now our found BitLocker-capable disk volume
' --------------------------------------------------------------------------
------
' Perform BitLocker WMI provider functionality
' --------------------------------------------------------------------------
------
' Collect all possible valid key protector ID's that can be used to get the
package
' --------------------------------------------------------------------------
--------
nNumericalKeyProtectorType = 3 ' type associated with "Numerical Password"
protector
nRC = objVolume.GetKeyProtectors(nNumericalKeyProtectorType,
aNumericalKeyProtectorIDs)
If nRC <> 0 Then
WScript.Echo "FAILURE: GetKeyProtectors failed with return code 0x" &
Hex(nRC)
WScript.Quit -1
End If
nExternalKeyProtectorType = 2 ' type associated with "External Key"
protector
nRC = objVolume.GetKeyProtectors(nExternalKeyProtectorType,
aExternalKeyProtectorIDs)
If nRC <> 0 Then
WScript.Echo "FAILURE: GetKeyProtectors failed with return code 0x" &
Hex(nRC)
WScript.Quit -1
End If
' Get first key protector of the type "Numerical Password" or "External
Key", if any
' --------------------------------------------------------------------------
--------
if strDefaultKeyProtectorID = "" Then
' Save first numerical password, if exists
If UBound(aNumericalKeyProtectorIDs) <> -1 Then
strDefaultKeyProtectorID = aNumericalKeyProtectorIDs(0)
End If
' No numerical passwords exist, save the first external key
If strDefaultKeyProtectorID = "" and UBound(aExternalKeyProtectorIDs) <> -1
Then
strDefaultKeyProtectorID = aExternalKeyProtectorIDs(0)
End If
' Fail case: no recovery key protectors exist.
If strDefaultKeyProtectorID = "" Then
WScript.Echo "FAILURE: Cannot create backup key package because no recovery
passwords or recovery keys exist. Check that BitLocker protection is on for
this drive."
WScript.Echo "For help adding recovery passwords or recovery keys, enter
""manage-bde.exe -protectors -add -?""."
WScript.Quit -1
End If
End If
' Get some information about the chosen key protector ID
' --------------------------------------------------------------------------
--------
' is the type valid?
nRC = objVolume.GetKeyProtectorType(strDefaultKeyProtectorID,
nDefaultKeyProtectorType)
If Hex(nRC) = "80070057" Then
WScript.Echo "The key protector ID " & strDefaultKeyProtectorID & " is not
valid."
WScript.Echo "This ID value may have been provided by the script writer."
ElseIf nRC <> 0 Then
WScript.Echo "FAILURE: GetKeyProtectorType failed with return code 0x" &
Hex(nRC)
WScript.Quit -1
End If
' what's a string that can be used to describe it?
strDefaultKeyProtectorType = ""
Select Case nDefaultKeyProtectorType
Case nNumericalKeyProtectorType
strDefaultKeyProtectorType = "recovery password"
Case nExternalKeyProtectorType
strDefaultKeyProtectorType = "recovery key"
Case Else
WScript.Echo "The key protector ID " & strDefaultKeyProtectorID & "
does not refer to a valid recovery password or recovery key."
WScript.Echo "This ID value may have been provided by the script
writer."
End Select
' Save the backup key package using the chosen key protector ID
' --------------------------------------------------------------------------
--------
nRC = objVolume.GetKeyPackage(strDefaultKeyProtectorID, oKeyPackage)
If nRC <> 0 Then
WScript.Echo "FAILURE: GetKeyPackage failed with return code 0x" & Hex(nRC)
WScript.Quit -1
End If
' Validate file path
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(strFilePath)) Then
WScript.Echo "The file " & strFilePath & " already exists. Please use a
different path."
WScript.Quit -1
End If
Dim oKeyPackageByte, bKeyPackage
For Each oKeyPackageByte in oKeyPackage
'WScript.echo "key package byte: " & oKeyPackageByte
bKeyPackage = bKeyPackage & ChrB(oKeyPackageByte)
Next
' Save binary data to the file
SaveBinaryDataText strFilePath, bKeyPackage
' Display helpful information
' --------------------------------------------------------------------------
--------
WScript.Echo "The backup key package has been saved to " & strFilePath & "."
WScript.Echo "IMPORTANT: To use this key package, the " &
strDefaultKeyProtectorType & " must also be saved."
' Display the recovery password or a note about saving the recovery key file
If nDefaultKeyProtectorType = nNumericalKeyProtectorType Then
nRC = objVolume.GetKeyProtectorNumericalPassword(strDefaultKeyProtectorID,
sNumericalPassword)
If nRC <> 0 Then
WScript.Echo "FAILURE: GetKeyProtectorNumericalPassword failed with return
code 0x" & Hex(nRC)
WScript.Quit -1
End If
WScript.Echo "Save this recovery password: " & sNumericalPassword
ElseIf nDefaultKeyProtectorType = nExternalKeyProtectorType Then
WScript.Echo "The saved key file is named " & strDefaultKeyProtectorID &
".BEK"
WScript.Echo "For help re-saving this external key file, enter ""manage-
bde.exe -protectors -get -?"""
End If
'---------------------------------------------------------------------------
-------------
' Utility functions to save binary data
'---------------------------------------------------------------------------
-------------
Function SaveBinaryDataText(FileName, ByteArray)
'Create FileSystemObject object
Dim FS: Set FS = CreateObject("Scripting.FileSystemObject")

'Create text stream object


Dim TextStream
Set TextStream = FS.CreateTextFile(FileName)

'Convert binary data To text And write them To the file


TextStream.Write BinaryToString(ByteArray)
End Function
Function BinaryToString(Binary)
Dim I, S
For I = 1 To LenB(Binary)
S = S & Chr(AscB(MidB(Binary, I, 1)))
Next
BinaryToString = S
End Function
Related articles
BitLocker overview
Protecting cluster shared volumes and
storage area networks with BitLocker
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Applies to:

Windows Server 2016 and above

This article describes the procedure to protect cluster shared volumes (CSVs) and
storage area networks (SANs) by using BitLocker.

BitLocker protects both physical disk resources and cluster shared volumes version 2.0
(CSV2.0). BitLocker on clustered volumes provides an extra layer of protection that can
be used by administrators wishing to protect sensitive, highly available data. The
administrators use this extra layer of protection to increase the security to resources.
Only certain user accounts provided access to unlock the BitLocker volume.

Configuring BitLocker on Cluster Shared


Volumes

Using BitLocker with clustered volumes


Volumes within a cluster are managed with the help of BitLocker based on how the
cluster service "views" the volume to be protected. The volume can be a physical disk
resource such as a logical unit number (LUN) on a SAN or network attached storage
(NAS).

) Important

SANs used with BitLocker must have obtained Windows Hardware Certification. For
more info, see Windows Hardware Lab Kit.

Instead, the volume can be a cluster-shared volume. Windows Server 2012 expanded
the CSV architecture, now known as CSV2.0, to enable support for BitLocker. The
volumes that are designated for a cluster must do the following tasks:
It must turn on BitLocker—only after this task is done, can the volumes be added
to the storage pool.
It must put the resource into maintenance mode before BitLocker operations are
completed.

Windows PowerShell or the manage-bde.exe command-line tool is the preferred method


to manage BitLocker on CSV2.0 volumes. This method is recommended over the
BitLocker Control Panel item because CSV2.0 volumes are mount points. Mount points
are an NTFS object that is used to provide an entry point to other volumes. Mount
points don't require the use of a drive letter. Volumes that lack drive letters don't appear
in the BitLocker Control Panel item. Additionally, the new Active Directory-based
protector option required for cluster disk resource or CSV2.0 resources isn't available in
the Control Panel item.

7 Note

Mount points can be used to support remote mount points on SMB-based network
shares. This type of share is not supported for BitLocker encryption.

If there's a thinly provisioned storage, such as a dynamic virtual hard disk (VHD),
BitLocker runs in Used Disk Space Only encryption mode. The manage-bde.exe -
WipeFreeSpace command can't be used to transition the volume to full-volume

encryption on thinly provisioned storage volumes. The usage of manage-bde.exe -


WipeFreeSpace command is blocked to avoid expanding thinly provisioned volumes to

occupy the entire backing store while wiping the unoccupied (free) space.

Active Directory-based protector


An Active Directory Domain Services (AD DS) protector can also be used for protecting
clustered volumes held within the AD DS infrastructure. The ADAccountOrGroup
protector is a domain security identifier (SID)-based protector that can be bound to a
user account, machine account, or group. When an unlock request is made for a
protected volume, the following events take place:

BitLocker service interrupts the request and uses the BitLocker protect/unprotect
APIs to unlock or deny the request.

BitLocker will unlock protected volumes without user intervention by attempting


protectors in the following order:

1. Clear key
2. Driver-based auto-unlock key

3. ADAccountOrGroup protector

a. Service context protector

b. User protector

4. Registry-based auto-unlock key

7 Note

A Windows Server 2012 or later domain controller is required for this feature to
work properly.

Turning on BitLocker before adding disks to a cluster


using Windows PowerShell
BitLocker encryption is available for disks before these disks are added to a cluster
storage pool.

7 Note

The advantage of The Bitlocker encryption can even be made available for disks
after they are added to a cluster storage pool. The advantage of encrypting
volumes prior to adding them to a cluster is that the disk resource need not be
suspended to complete the operation. To turn on BitLocker for a disk before adding
it to a cluster:

1. Install the BitLocker Drive Encryption feature if it isn't already installed.

2. Ensure the disk is an NTFS-formatted one and has a drive letter assigned to it.

3. Identify the name of the cluster with Windows PowerShell.

PowerShell

Get-Cluster

4. Enable BitLocker on a volume with an ADAccountOrGroup protector, using the


cluster name. For example, use a command such as:
PowerShell

Enable-BitLocker E: -ADAccountOrGroupProtector -ADAccountOrGroup


CLUSTER$

2 Warning

An ADAccountOrGroup protector must be configured using the cluster CNO


for a BitLocker enabled volume to either be shared in a Cluster Shared Volume
or to fail over properly in a traditional failover cluster.

5. Repeat the preceding steps for each disk in the cluster.

6. Add the volume(s) to the cluster.

Turning on BitLocker for a clustered disk using Windows


PowerShell
When the cluster service owns a disk resource already, the disk resource needs to be set
into maintenance mode before BitLocker can be enabled. To turn on the BitLocker for a
clustered disk using Windows PowerShell, perform the following steps:

1. Install the BitLocker drive encryption feature if it isn't already installed.

2. Check the status of the cluster disk using Windows PowerShell.

PowerShell

Get-ClusterResource "Cluster Disk 1"

3. Put the physical disk resource into maintenance mode using Windows PowerShell.

PowerShell

Get-ClusterResource "Cluster Disk 1" | Suspend-ClusterResource

4. Identify the name of the cluster with Windows PowerShell.

PowerShell

Get-Cluster
5. Enable BitLocker a volume with an ADAccountOrGroup protector, using the cluster
name. For example, use a command such as:

PowerShell

Enable-BitLocker E: -ADAccountOrGroupProtector -ADAccountOrGroup


CLUSTER$

2 Warning

An ADAccountOrGroup protector must be configured using the cluster CNO


for a BitLocker-enabled volume to either be shared in a cluster-shared Volume
or to fail over properly in a traditional failover cluster.

6. Use Resume-ClusterResource to take back the physical disk resource out of


maintenance mode:

PowerShell

Get-ClusterResource "Cluster Disk 1" | Resume-ClusterResource

7. Repeat the preceding steps for each disk in the cluster.

Adding BitLocker-encrypted volumes to a cluster using


manage-bde.exe

Manage-bde.exe can also be used to enable BitLocker on clustered volumes. The steps

needed to add a physical disk resource or CSV2.0 volume to an existing cluster are:

1. Verify that the BitLocker drive encryption feature is installed on the computer.

2. Ensure new storage is formatted as NTFS.

3. Encrypt the volume, add a recovery key and add the cluster administrator as a
protector key using manage-bde.exe in a command prompt window. For example:

Windows Command Prompt

manage-bde.exe -on -used <drive letter> -RP -sid domain\CNO$ -sync

a. BitLocker will check to see if the disk is already part of a cluster. If it is,
administrators will encounter a hard block. Otherwise, the encryption continues.
b. Using the -sync parameter is optional. However, using the -sync parameter has
the advantage of ensuring the command waits until the encryption for the
volume is completed. The volume is then released for use in the cluster storage
pool.

4. Open the Failover Cluster Manager snap-in or cluster PowerShell cmdlets to enable
the disk to be clustered.

Once the disk is clustered, it's enabled for CSV.

5. During the resource online operation, cluster checks whether the disk is BitLocker
encrypted.

a. If the volume isn't BitLocker enabled, traditional cluster online operations occur.

b. If the volume is BitLocker enabled, BitLocker checks if the volume is locked. If


the volume is locked, BitLocker impersonates the CNO and unlocks the volume
using the CNO protector. If these actions by BitLocker fail, an event is logged.
The logged event will state that the volume couldn't be unlocked and the online
operation has failed.

6. Once the disk is online in the storage pool, it can be added to a CSV by right-
clicking the disk resource, and choosing "Add to cluster shared volumes".

CSVs include both encrypted and unencrypted volumes. To check the status of a
particular volume for BitLocker encryption run the manage-bde.exe -status command as
an administrator with a path to the volume. The path must be one that is inside the CSV
namespace. For example:

Windows Command Prompt

manage-bde.exe -status "C:\ClusterStorage\volume1"

Physical disk resources


Unlike CSV2.0 volumes, physical disk resources can only be accessed by one cluster
node at a time. This condition means that operations such as encrypting, decrypting,
locking, or unlocking volumes require a context to perform. For example, a physical disk
resource can't unlock or decrypt if it isn't administering the cluster node that owns the
disk resource because the disk resource isn't available.

Restrictions on BitLocker actions with cluster volumes


The following table contains information about both physical disk resources (that is,
traditional failover cluster volumes) and cluster shared volumes (CSV) and the actions
that are allowed by BitLocker in each situation.

Action On owner node of On Metadata On (Data Maintenance


failover volume Server (MDS) of Server) DS of Mode
CSV CSV

Manage-bde.exe - Blocked Blocked Blocked Allowed


on

Manage-bde.exe - Blocked Blocked Blocked Allowed


off

Manage-bde.exe Blocked Blocked** Blocked Allowed


Pause/Resume

Manage-bde.exe - Blocked Blocked Blocked Allowed


lock

Manage-bde.exe - Blocked Blocked Blocked Allowed


wipe

Unlock Automatic via Automatic via Automatic via Allowed


cluster service cluster service cluster service

Manage-bde.exe - Allowed Allowed Blocked Allowed


protector -add

Manage-bde.exe - Allowed Allowed Blocked Allowed


protector -delete

Manage-bde.exe - Allowed (not Allowed (not Blocked Allowed (not


autounlock recommended) recommended) recommended)

Manage-bde.exe - Allowed Allowed Blocked Allowed


upgrade

Shrink Allowed Allowed Blocked Allowed

Extend Allowed Allowed Blocked Allowed

7 Note

Although the manage-bde.exe -pause command is blocked in clusters, the cluster


service automatically resumes a paused encryption or decryption from the MDS
node.
In the case where a physical disk resource experiences a failover event during
conversion, the new owning node detects that the conversion isn't complete and
completes the conversion process.

Other considerations when using BitLocker on CSV2.0


Some other considerations to take into account for BitLocker on clustered storage
include:

BitLocker volumes have to be initialized and begin encryption before they're


available to add to a CSV2.0 volume.

If an administrator needs to decrypt a CSV volume, remove the volume from the
cluster or put it into disk maintenance mode. The CSV can be added back to the
cluster while waiting for decryption to complete.

If an administrator needs to start encrypting a CSV volume, remove the volume


from the cluster or put it into maintenance mode.

If conversion is paused with encryption in progress and the CSV volume is offline
from the cluster, the cluster thread (health check) automatically resumes
conversion when the volume is online to the cluster.

If conversion is paused with encryption in progress and a physical disk resource


volume is offline from the cluster, the BitLocker driver automatically resumes
conversion when the volume is online to the cluster.

If conversion is paused with encryption in progress, while the CSV volume is in


maintenance mode, the cluster thread (health check) automatically resumes
conversion when moving the volume back from maintenance.

If conversion is paused with encryption in progress, while the disk resource volume
is in maintenance mode, the BitLocker driver automatically resumes conversion
when the volume is moved back from maintenance mode.
BitLocker: How to enable Network
Unlock
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article describes how BitLocker Network Unlock works and how to configure it.

Network Unlock is a BitLocker protector option for operating system volumes. Network
Unlock enables easier management for BitLocker-enabled desktops and servers in a
domain environment by providing automatic unlock of operating system volumes at
system reboot when connected to a wired corporate network. This feature requires the
client hardware to have a DHCP driver implemented in its UEFI firmware. Without
Network Unlock, operating system volumes protected by TPM+PIN protectors require a
PIN to be entered when a computer reboots or resumes from hibernation (for example,
by Wake on LAN). Requiring a PIN after a reboot can make it difficult to enterprises to
roll out software patches to unattended desktops and remotely administered servers.

Network Unlock allows BitLocker-enabled systems that have a TPM+PIN and that meet
the hardware requirements to boot into Windows without user intervention. Network
Unlock works in a similar fashion to the TPM+StartupKey at boot. Rather than needing
to read the StartupKey from USB media, however, the Network Unlock feature needs the
key to be composed from a key stored in the TPM and an encrypted network key that is
sent to the server, decrypted and returned to the client in a secure session.

Network Unlock core requirements


Network Unlock must meet mandatory hardware and software requirements before the
feature can automatically unlock domain-joined systems. These requirements include:

Currently supported Windows operating system


Any supported operating system with UEFI DHCP drivers that can serve as Network
Unlock clients
Network Unlock clients with a TPM chip and at least one TPM protector
A server running the Windows Deployment Services (WDS) role on any supported
server operating system
BitLocker Network Unlock optional feature installed on any supported server
operating system
A DHCP server, separate from the WDS server
Properly configured public/private key pairing
Network Unlock group policy settings configured
Network stack enabled in the UEFI firmware of client devices

7 Note

To properly support DHCP within UEFI, the UEFI-based system should be in native
mode and shouldn't have a compatibility support module (CSM) enabled.

For Network Unlock to work reliably on computers, the first network adapter on the
computer, usually the onboard adapter, must be configured to support DHCP. This first
network adapter must be used for Network Unlock. This configuration is especially
worth noting when the device has multiple adapters, and some adapters are configured
without DHCP, such as for use with a lights-out management protocol. This
configuration is necessary because Network Unlock stops enumerating adapters when it
reaches one with a DHCP port failure for any reason. Thus, if the first enumerated
adapter doesn't support DHCP, isn't plugged into the network, or fails to report
availability of the DHCP port for any reason, then Network Unlock fails.

The Network Unlock server component is installed on supported versions of Windows


Server 2012 and later as a Windows feature that uses Server Manager or Windows
PowerShell cmdlets. The feature name is BitLocker Network Unlock in Server Manager
and BitLocker-NetworkUnlock in Windows PowerShell. This feature is a core
requirement.

Network Unlock requires Windows Deployment Services (WDS) in the environment


where the feature will be utilized. Configuration of the WDS installation isn't required.
However, the WDS service must be running on the server.

The network key is stored on the system drive along with an AES 256 session key and
encrypted with the 2048-bit RSA public key of the Unlock server certificate. The network
key is decrypted with the help of a provider on a supported version of Windows Server
running WDS, and returned encrypted with its corresponding session key.

Network Unlock sequence


The unlock sequence starts on the client side when the Windows boot manager detects
the existence of Network Unlock protector. It uses the DHCP driver in UEFI to obtain an
IP address for IPv4 and then broadcasts a vendor-specific DHCP request that contains
the network key and a session key for the reply, all encrypted by the server's Network
Unlock certificate, as described above. The Network Unlock provider on the supported
WDS server recognizes the vendor-specific request, decrypts it with the RSA private key,
and returns the network key encrypted with the session key via its own vendor-specific
DHCP reply.

On the server side, the WDS server role has an optional plugin component, like a PXE
provider, which is what handles the incoming Network Unlock requests. The provider
can also be configured with subnet restrictions, which would require that the IP address
provided by the client in the Network Unlock request belong to a permitted subnet to
release the network key to the client. In instances where the Network Unlock provider is
unavailable, BitLocker fails over to the next available protector to unlock the drive. In a
typical configuration, the standard TPM+PIN unlock screen is presented to unlock the
drive.

The server side configuration to enable Network Unlock also requires provisioning a
2048-bit RSA public/private key pair in the form of an X.509 certificate, and distributing
the public key certificate to the clients. This certificate must be managed and deployed
through the Group Policy editor directly on a domain controller with at least a Domain
Functional Level of Windows Server 2012. This certificate is the public key that encrypts
the intermediate network key (which is one of the two secrets required to unlock the
drive; the other secret is stored in the TPM).

Manage and deploy this certificate through the Group Policy editor directly on a domain
controller that has a domain functional level of at least Windows Server 2012. This
certificate is the public key that encrypts the intermediate network key. The intermediate
network key is one of the two secrets that are required to unlock the drive; the other
secret is stored in the TPM.
The Network Unlock process follows these phases:

1. The Windows boot manager detects a Network Unlock protector in the BitLocker
configuration.

2. The client computer uses its DHCP driver in the UEFI to get a valid IPv4 IP address.

3. The client computer broadcasts a vendor-specific DHCP request that contains:

a. A network key (a 256-bit intermediate key) that is encrypted by using the 2048-
bit RSA Public Key of the Network Unlock certificate from the WDS server.

b. An AES-256 session key for the reply.

4. The Network Unlock provider on the WDS server recognizes the vendor-specific
request.

5. The provider decrypts the request by using the WDS server's BitLocker Network
Unlock certificate RSA private key.

6. The WDS provider returns the network key encrypted with the session key by using
its own vendor-specific DHCP reply to the client computer. This key is an
intermediate key.

7. The returned intermediate key is combined with another local 256-bit intermediate
key. This key can be decrypted only by the TPM.

8. This combined key is used to create an AES-256 key that unlocks the volume.

9. Windows continues the boot sequence.

Configure Network Unlock


The following steps allow an administrator to configure Network Unlock in a domain
where the Domain Functional Level is at least Windows Server 2012.

Install the WDS server role


The BitLocker Network Unlock feature installs the WDS role if it isn't already installed.
WDS can be installed separately before BitLocker Network Unlock is installed by using
Server Manager or Windows PowerShell. To install the role using Server Manager,
select the Windows Deployment Services role in Server Manager.

To install the role by using Windows PowerShell, use the following command:
PowerShell

Install-WindowsFeature WDS-Deployment

The WDS server must be configured so that it can communicate with DHCP (and
optionally AD DS) and the client computer. The WDS server can be configured using the
WDS management tool, wdsmgmt.msc , which starts the Windows Deployment Services
Configuration wizard.

Confirm the WDS service is running


To confirm that the WDS service is running, use the Services Management Console or
Windows PowerShell. To confirm that the service is running in Services Management
Console, open the console using services.msc and check the status of the Windows
Deployment Services service.

To confirm that the service is running using Windows PowerShell, use the following
command:

PowerShell

Get-Service WDSServer

Install the Network Unlock feature


To install the Network Unlock feature, use Server Manager or Windows PowerShell. To
install the feature using Server Manager, select the BitLocker Network Unlock feature in
the Server Manager console.

To install the feature by using Windows PowerShell, use the following command:

PowerShell

Install-WindowsFeature BitLocker-NetworkUnlock

Create the certificate template for Network Unlock


A properly configured Active Directory Services Certification Authority can use this
certificate template to create and issue Network Unlock certificates.

1. Open the Certificates Template snap-in ( certtmpl.msc ).


2. Locate the User template, right-click the template name and select Duplicate
Template.

3. On the Compatibility tab, change the Certification Authority and Certificate


recipient fields to Windows Server 2012 and Windows 8, respectively. Ensure that
the Show resulting changes dialog box is selected.

4. Select the General tab of the template. The Template display name and Template
name should clearly identify that the template will be used for Network Unlock.
Clear the check box for the Publish certificate in Active Directory option.

5. Select the Request Handling tab. Select Encryption from the Purpose drop-down
menu. Ensure that the Allow private key to be exported option is selected.

6. Select the Cryptography tab. Set the Minimum key size to 2048. Any Microsoft
cryptographic provider that supports RSA can be used for this template, but for
simplicity and forward compatibility, it is recommended to use Microsoft Software
Key Storage Provider.

7. Select the Requests must use one of the following providers option and clear all
options except for the cryptography provider selected, such as Microsoft Software
Key Storage Provider.

8. Select the Subject Name tab. Select Supply in the request. Select OK if the
certificate templates pop-up dialog appears.

9. Select the Issuance Requirements tab. Select both CA certificate manager


approval and Valid existing certificate options.

10. Select the Extensions tab. Select Application Policies and choose Edit….

11. In the Edit Application Policies Extension options dialog box, select Client
Authentication, Encrypting File System, and Secure Email and choose Remove.

12. On the Edit Application Policies Extension dialog box, select Add.

13. On the Add Application Policy dialog box, select New. In the New Application
Policy dialog box, enter the following information in the space provided and then
select OK to create the BitLocker Network Unlock application policy:

Name: BitLocker Network Unlock


Object Identifier: 1.3.6.1.4.1.311.67.1.1

14. Select the newly created BitLocker Network Unlock application policy and select
OK.
15. With the Extensions tab still open, select the Edit Key Usage Extension dialog.
Select the Allow key exchange only with key encryption (key encipherment)
option. Select the Make this extension critical option.

16. Select the Security tab. Confirm that the Domain Admins group has been granted
Enroll permission.

17. Select OK to complete configuration of the template.

To add the Network Unlock template to the certificate authority, open the certificate
authority snap-in ( certsrv.msc ). Right-click Certificate Templates, and then choose
New, Certificate Template to issue. Select the previously created BitLocker Network
Unlock certificate.

After the Network Unlock template is added to the certificate authority, this certificate
can be used to configure BitLocker Network Unlock.

Create the Network Unlock certificate


Network Unlock can use imported certificates from an existing public key infrastructure
(PKI). Or it can use a self-signed certificate.

To enroll a certificate from an existing certificate authority:

1. On the WDS server, open Certificate Manager by using certmgr.msc .

2. Under Certificates - Current User, right-click Personal.

3. Select All Tasks > Request New Certificate.

4. When the Certificate Enrollment wizard opens, select Next.

5. Select Active Directory Enrollment Policy.

6. Choose the certificate template that was created for Network Unlock on the
domain controller. Then select Enroll.

7. When prompted for more information, select Subject Name and provide a friendly
name value. The friendly name should include information for the domain or
organizational unit for the certificate. For example:

BitLocker Network Unlock Certificate for Contoso domain

8. Create the certificate. Ensure the certificate appears in the Personal folder.

9. Export the public key certificate for Network Unlock:


a. Create a .cer file by right-clicking the previously created certificate, selecting
All Tasks, and then selecting Export.

b. Select No, do not export the private key.

c. Select DER encoded binary X.509 and complete exporting the certificate to a
file.

d. Give the file a name such as BitLocker-NetworkUnlock.cer.

10. Export the public key with a private key for Network Unlock.

a. Create a .pfx file by right-clicking the previously created certificate, selecting


All Tasks, and then selecting Export.

b. Select Yes, export the private key.

c. Complete the steps to create the .pfx file.

To create a self-signed certificate, either use the New-SelfSignedCertificate cmdlet in


Windows PowerShell or use certreq.exe . For example:

Windows PowerShell:

PowerShell

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject


"CN=BitLocker Network Unlock certificate" -Provider "Microsoft Software Key
Storage Provider" -KeyUsage KeyEncipherment -KeyUsageProperty Decrypt,Sign -
KeyLength 2048 -HashAlgorithm sha512 -TextExtension
@("1.3.6.1.4.1.311.21.10={text}OID=1.3.6.1.4.1.311.67.1.1","2.5.29.37=
{text}1.3.6.1.4.1.311.67.1.1")

certreq.exe:

1. Create a text file with an .inf extension, for example:

Windows Command Prompt

notepad.exe BitLocker-NetworkUnlock.inf

2. Add the following contents to the previously created file:

ini

[NewRequest]
Subject="CN=BitLocker Network Unlock certificate"
ProviderType=0
MachineKeySet=True
Exportable=true
RequestType=Cert
KeyUsage="CERT_KEY_ENCIPHERMENT_KEY_USAGE"
KeyUsageProperty="NCRYPT_ALLOW_DECRYPT_FLAG |
NCRYPT_ALLOW_SIGNING_FLAG"
KeyLength=2048
SMIME=FALSE
HashAlgorithm=sha512
[Extensions]
1.3.6.1.4.1.311.21.10 = "{text}"
_continue_ = "OID=1.3.6.1.4.1.311.67.1.1"
2.5.29.37 = "{text}"
_continue_ = "1.3.6.1.4.1.311.67.1.1"

3. Open an elevated command prompt and use the certreq.exe tool to create a new
certificate. Use the following command, specifying the full path to the file that was
created previously along with the file name:

Windows Command Prompt

certreq.exe -new BitLocker-NetworkUnlock.inf BitLocker-


NetworkUnlock.cer

4. Verify that certificate was properly created by the previous command by


confirming that the .cer file exists.

5. Launch the Certificates - Local Computer console by running certlm.msc .

6. Create a .pfx file by following the below steps the Certificates - Local Computer
console:

a. Navigate to Certificates - Local Computer > Personal > Certificates

b. Right-click the previously imported certificate, select All Tasks, and then select
Export

c. Follow through the wizard to create the .pfx file.

Deploy the private key and certificate to the WDS server


After creating the certificate and key, deploy them to the infrastructure to properly
unlock systems. To deploy the certificates:
1. On the WDS server, launch the Certificates - Local Computer console by running
certlm.msc .

2. Right-click BitLocker Drive Encryption Network Unlock item under Certificates


(Local Computer), select All Tasks, and then select Import.

3. In the File to Import dialog, choose the .pfx file created previously.

4. Enter the password used to create the .pfx and complete the wizard.

Configure group policy settings for Network Unlock


With certificate and key deployed to the WDS server for Network Unlock, the final step
is to use group policy settings to deploy the public key certificate to the desired
computers that will use the Network Unlock key to unlock. Group policy settings for
BitLocker can be found under Computer Configuration > Administrative Templates >
Windows Components > BitLocker Drive Encryption using the Local Group Policy
Editor or the Microsoft Management Console.

The following steps describe how to enable the group policy setting that is a
requirement for configuring Network Unlock.

1. Open Group Policy Management Console ( gpmc.msc ).


2. Enable the policy Require additional authentication at startup, and then select
Require startup PIN with TPM or Allow startup PIN with TPM.
3. Turn on BitLocker with TPM+PIN protectors on all domain-joined computers.

The following steps describe how to deploy the required group policy setting:

7 Note

The group policy settings Allow Network Unlock at startup and Add Network
Unlock Certificate were introduced in Windows Server 2012.

1. Copy the .cer file that was created for Network Unlock to the domain controller.

2. On the domain controller, open Group Policy Management Console ( gpmc.msc ).

3. Create a new Group Policy Object or modify an existing object to enable the Allow
Network Unlock at startup setting.

4. Deploy the public certificate to clients:


a. Within group policy management console, navigate to the following location:

Computer Configuration > Policies > Windows Settings > Security Settings >
Public Key Policies > BitLocker Drive Encryption Network Unlock Certificate.

b. Right-click the folder and select Add Network Unlock Certificate.

c. Follow the wizard steps and import the .cer file that was copied earlier.

7 Note

Only one Network Unlock certificate can be available at a time. If a new


certificate is needed, delete the current certificate before deploying a new
one. The Network Unlock certificate is located under the
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\SystemCertificates\FVE_NKP

registry key on the client computer.

5. Reboot the clients after the Group Policy is deployed.

7 Note

The Network (Certificate Based) protector will be added only after a reboot,
with the policy enabled and a valid certificate present in the FVE_NKP store.

Subnet policy configuration files on the WDS server


(optional)
By default, all clients with the correct Network Unlock certificate and valid Network
Unlock protectors that have wired access to a Network Unlock-enabled WDS server via
DHCP are unlocked by the server. A subnet policy configuration file on the WDS server
can be created to limit which are the subnet(s) the Network Unlock clients can use to
unlock.

The configuration file, called bde-network-unlock.ini, must be located in the same


directory as the Network Unlock provider DLL ( %windir%\System32\Nkpprov.dll ) and it
applies to both IPv6 and IPv4 DHCP implementations. If the subnet configuration policy
becomes corrupted, the provider fails and stops responding to requests.

The subnet policy configuration file must use a [SUBNETS] section to identify the
specific subnets. The named subnets may then be used to specify restrictions in
certificate subsections. Subnets are defined as simple name-value pairs, in the common
INI format, where each subnet has its own line, with the name on the left of the equal-
sign, and the subnet identified on the right of the equal-sign as a Classless Inter-Domain
Routing (CIDR) address or range. The key word ENABLED is disallowed for subnet
names.

ini

[SUBNETS]
SUBNET1=10.185.250.0/24 ; a comment about this subrange could be here, after
the semicolon
SUBNET2=10.185.252.200/28
SUBNET3= 2001:4898:a:2::/64 ; an IPv6 subnet
SUBNET4=2001:4898:a:3::/64; in production, the admin would likely give more
useful names, like BUILDING9-EXCEPT-RECEP.

Following the [SUBNETS] section, there can be sections for each Network Unlock
certificate, identified by the certificate thumbprint formatted without any spaces, which
define the subnets clients that can be unlocked from that certificate.

7 Note

When specifying the certificate thumbprint, do not include any spaces. If spaces are
included in the thumbprint, the subnet configuration fails because the thumbprint
will not be recognized as valid.

Subnet restrictions are defined within each certificate section by denoting the allowed
list of permitted subnets. If any subnets are listed in a certificate section, then only those
subnets are permitted for that certificate. If no subnet is listed in a certificate section,
then all subnets are permitted for that certificate. If a certificate doesn't have a section in
the subnet policy configuration file, then no subnet restrictions are applied for unlocking
with that certificate. For restrictions to apply to every certificate, there must be a
certificate section for every Network Unlock certificate on the server, and an explicit
allowed list set for each certificate section.

Subnet lists are created by putting the name of a subnet from the [SUBNETS] section on
its own line below the certificate section header. Then, the server will only unlock clients
with this certificate on the subnet(s) specified as in the list. For troubleshooting, a subnet
can be quickly excluded without deleting it from the section by commenting it out with
a prepended semi-colon.

ini

[2158a767e1c14e88e27a4c0aee111d2de2eafe60]
;Comments could be added here to indicate when the cert was issued, which
Group Policy should get it, and so on.
;This list shows this cert is allowed to unlock clients only on the SUBNET1
and SUBNET3 subnets. In this example, SUBNET2 is commented out.
SUBNET1
;SUBNET2
SUBNET3

To disallow the use of a certificate altogether, add a DISABLED line to its subnet list.

Turn off Network Unlock


To turn off the unlock server, the PXE provider can be unregistered from the WDS server
or uninstalled altogether. However, to stop clients from creating Network Unlock
protectors, the Allow Network Unlock at startup group policy setting should be
disabled. When this policy setting is updated to disabled on client computers, any
Network Unlock key protector on the computer is deleted. Alternatively, the BitLocker
Network Unlock certificate policy can be deleted on the domain controller to
accomplish the same task for an entire domain.

7 Note

Removing the FVE_NKP certificate store that contains the Network Unlock
certificate and key on the WDS server will also effectively disable the server's ability
to respond to unlock requests for that certificate. However, this is seen as an error
condition and is not a supported or recommended method for turning off the
Network Unlock server.

Update Network Unlock certificates


To update the certificates used by Network Unlock, administrators need to import or
generate the new certificate for the server, and then update the Network Unlock
certificate group policy setting on the domain controller.

7 Note

Servers that don't receive the Group Policy Object (GPO) will require a PIN when
they boot. In such cases, find out why the server didn't receive the GPO to update
the certificate.
Troubleshoot Network Unlock
Troubleshooting Network Unlock issues begins by verifying the environment. Many
times, a small configuration issue can be the root cause of the failure. Items to verify
include:

Verify that the client hardware is UEFI-based and is on firmware version 2.3.1 and
that the UEFI firmware is in native mode without a Compatibility Support Module
(CSM) for BIOS mode enabled. Verification can be done by checking that the
firmware doesn't have an option enabled such as "Legacy mode" or "Compatibility
mode" or that the firmware doesn't appear to be in a BIOS-like mode.

All required roles and services are installed and started.

Public and private certificates have been published and are in the proper certificate
containers. The presence of the Network Unlock certificate can be verified in the
Microsoft Management Console (MMC.exe) on the WDS server with the certificate
snap-ins for the local computer enabled. The client certificate can be verified by
checking the registry key
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\SystemCertificates\FVE_NKP on

the client computer.

Group policy for Network Unlock is enabled and linked to the appropriate
domains.

Verify whether group policy is reaching the clients properly. Verification of group
policy can be done using the GPRESULT.exe or RSOP.msc utilities.

Verify whether the clients were rebooted after applying the policy.

Verify whether the Network (Certificate Based) protector is listed on the client.
Verification of the protector can be done using either manage-bde or Windows
PowerShell cmdlets. For example, the following command will list the key
protectors currently configured on the C: drive of the local computer:

PowerShell

manage-bde.exe -protectors -get C:

7 Note

Use the output of manage-bde.exe along with the WDS debug log to
determine whether the proper certificate thumbprint is being used for
Network Unlock.

Gather the following files to troubleshoot BitLocker Network Unlock.

The Windows event logs. Specifically, get the BitLocker event logs and the
Microsoft-Windows-Deployment-Services-Diagnostics-Debug log.

Debug logging is turned off by default for the WDS server role. To retrieve WDS
debug logs, the WDS debug logs first need to be enabled. Use either of the
following two methods to turn on WDS debug logging.

Start an elevated command prompt, and then run the following command:

Windows Command Prompt

wevtutil.exe sl Microsoft-Windows-Deployment-Services-
Diagnostics/Debug /e:true

Open Event Viewer on the WDS server:

1. In the left pane, navigate to Applications and Services Logs > Microsoft >
Windows > Deployment-Services-Diagnostics > Debug.
2. In the right pane, select Enable Log.

The DHCP subnet configuration file (if one exists).

The output of the BitLocker status on the volume. Gather this output into a text file
by using manage-bde.exe -status . Or in Windows PowerShell, use Get-
BitLockerVolume .

The Network Monitor capture on the server that hosts the WDS role, filtered by
client IP address.

Related articles
BitLocker overview
BitLocker frequently asked questions (FAQ)
Prepare your organization for BitLocker: Planning and policies
BitLocker group policy settings
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article for IT professionals describes the function, location, and effect of each Group
Policy setting that is used to manage BitLocker Drive Encryption.

Group Policy administrative templates or local computer policy settings can be used to
control what BitLocker drive encryption tasks and configurations can be performed by
users, for example through the BitLocker Drive Encryption control panel. Which of
these policies are configured and how they're configured depends on how BitLocker is
implemented and what level of interaction is desired for end users.

7 Note

A separate set of Group Policy settings supports the use of the Trusted Platform
Module (TPM). For details about those settings, see TPM Group Policy settings.

BitLocker Group Policy settings can be accessed using the Local Group Policy Editor and
the Group Policy Management Console (GPMC) under Computer Configuration >
Administrative Templates > Windows Components > BitLocker Drive Encryption.

Most of the BitLocker Group Policy settings are applied when BitLocker is initially turned
on for a drive. If a computer isn't compliant with existing Group Policy settings, BitLocker
may not be turned on, or BitLocker configuration may be modified until the computer is
in a compliant state. When a drive becomes out of compliance with Group Policy
settings, only changes to the BitLocker configuration that will bring it into compliance
are allowed. This scenario could occur, for example, if a previously encrypted drive was
brought out of compliance by change in Group Policy settings.

If multiple changes are necessary to bring the drive into compliance, BitLocker
protection may need to be suspended, the necessary changes made, and then
protection resumed. This situation could occur, for example, if a removable drive is
initially configured for unlock with a password but then Group Policy settings are
changed to disallow passwords and require smart cards. In this situation, BitLocker
protection needs to be suspended by using the Manage-bde command-line tool, delete
the password unlock method, and add the smart card method. After this process is
complete, BitLocker is compliant with the Group Policy setting, and BitLocker protection
on the drive can be resumed.
In other scenarios, to bring the drive into compliance with a change in Group Policy
settings, BitLocker may need to be disabled and the drive decrypted followed by
reenabling BitLocker and then re-encrypting the drive. An example of this scenario is
when the BitLocker encryption method or cipher strength is changed. The Manage-bde
command-line can also be used in this scenario to help bring the device into
compliance.

BitLocker group policy settings details

7 Note

For more details about Active Directory configuration related to BitLocker


enablement, please see Set up MDT for BitLocker.

The following sections provide a comprehensive list of BitLocker group policy settings
that are organized by usage. BitLocker group policy settings include settings for specific
drive types (operating system drives, fixed data drives, and removable data drives) and
settings that are applied to all drives.

The following policy settings can be used to determine how a BitLocker-protected drive
can be unlocked.

Allow devices with Secure Boot and protected DMA ports to opt out of preboot
PIN
Allow network unlock at startup
Require additional authentication at startup
Allow enhanced PINs for startup
Configure minimum PIN length for startup
Disable new DMA devices when this computer is locked
Disallow standard users from changing the PIN or password
Configure use of passwords for operating system drives
Require additional authentication at startup (Windows Server 2008 and Windows
Vista)
Configure use of smart cards on fixed data drives
Configure use of passwords on fixed data drives
Configure use of smart cards on removable data drives
Configure use of passwords on removable data drives
Validate smart card certificate usage rule compliance
Enable use of BitLocker authentication requiring preboot keyboard input on slates
The following policy settings are used to control how users can access drives and how
they can use BitLocker on their computers.

Deny write access to fixed drives not protected by BitLocker


Deny write access to removable drives not protected by BitLocker
Control use of BitLocker on removable drives

The following policy settings determine the encryption methods and encryption types
that are used with BitLocker.

Choose drive encryption method and cipher strength


Configure use of hardware-based encryption for fixed data drives
Configure use of hardware-based encryption for operating system drives
Configure use of hardware-based encryption for removable data drives
Enforce drive encryption type on fixed data drives
Enforce drive encryption type on operating system drives
Enforce drive encryption type on removable data drives

The following policy settings define the recovery methods that can be used to restore
access to a BitLocker-protected drive if an authentication method fails or is unable to be
used.

Choose how BitLocker-protected operating system drives can be recovered


Choose how users can recover BitLocker-protected drives (Windows Server 2008
and Windows Vista)
Store BitLocker recovery information in Active Directory Domain Services (Windows
Server 2008 and Windows Vista)
Choose default folder for recovery password
Choose how BitLocker-protected fixed drives can be recovered
Choose how BitLocker-protected removable drives can be recovered
Configure the pre-boot recovery message and URL

The following policies are used to support customized deployment scenarios in an


organization.

Allow Secure Boot for integrity validation


Provide the unique identifiers for your organization
Prevent memory overwrite on restart
Configure TPM platform validation profile for BIOS-based firmware configurations
Configure TPM platform validation profile (Windows Vista, Windows Server 2008,
Windows 7, Windows Server 2008 R2)
Configure TPM platform validation profile for native UEFI firmware configurations
Reset platform validation data after BitLocker recovery
Use enhanced Boot Configuration Data validation profile
Allow access to BitLocker-protected fixed data drives from earlier versions of
Windows
Allow access to BitLocker-protected removable data drives from earlier versions of
Windows

Allow devices with secure boot and protected DMA ports


to opt out of preboot PIN

Item Info

Policy description With this policy setting, TPM-only protection can be allowed for newer,
more secure devices, such as devices that support Modern Standby or HSTI,
while requiring PIN on older devices.

Introduced Windows 10, version 1703

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components
> BitLocker Drive Encryption > Operating System Drives

Conflicts This setting overrides the Require startup PIN with TPM option of the
Require additional authentication at startup policy on compliant hardware.

When enabled Users on Modern Standby and HSTI compliant devices will have the choice
to turn on BitLocker without preboot authentication.

When disabled or The options of the Require additional authentication at startup policy apply.
not configured

Reference: Allow devices with secure boot and protected DMA


ports to opt out of preboot PIN

The preboot authentication option Require startup PIN with TPM of the Require
additional authentication at startup policy is often enabled to help ensure security for
older devices that don't support Modern Standby. But visually impaired users have no
audible way to know when to enter a PIN. This setting enables an exception to the PIN-
required policy on secure hardware.

Allow network unlock at startup


This policy controls a portion of the behavior of the Network Unlock feature in BitLocker.
This policy is required to enable BitLocker Network Unlock on a network because it
allows clients running BitLocker to create the necessary network key protector during
encryption.

This policy is used with the BitLocker Drive Encryption Network Unlock Certificate
security policy (located in the Public Key Policies folder of Local Computer Policy) to
allow systems that are connected to a trusted network to properly utilize the Network
Unlock feature.

Item Info

Policy With this policy setting, it can be controlled whether a BitLocker-protected


description computer that is connected to a trusted local area network and joined to a
domain can create and use network key protectors on TPM-enabled
computers to automatically unlock the operating system drive when the
computer is started.

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts None

When enabled Clients configured with a BitLocker Network Unlock certificate can create and
use Network Key Protectors.

When disabled Clients can't create and use Network Key Protectors.
or not
configured

Reference: Allow network unlock at startup


To use a network key protector to unlock the computer, the computer and the server
that hosts BitLocker Drive Encryption Network Unlock must be provisioned with a
Network Unlock certificate. The Network Unlock certificate is used to create a network
key protector and to protect the information exchange with the server to unlock the
computer. The Group Policy setting Computer Configuration > Windows Settings >
Security Settings > Public Key Policies > BitLocker Drive Encryption Network Unlock
Certificate can be used on the domain controller to distribute this certificate to
computers in the organization. This unlock method uses the TPM on the computer, so
computers that don't have a TPM can't create network key protectors to automatically
unlock by using Network Unlock.
7 Note

For reliability and security, computers should also have a TPM startup PIN that can
be used when the computer is disconnected from the wired network or can't
connect to the domain controller at startup.

For more information about Network Unlock feature, see BitLocker: How to enable
Network Unlock.

Require additional authentication at startup


This policy setting is used to control which unlock options are available for operating
system drives.

Item Info

Policy With this policy setting, it can be configured whether BitLocker requires
description additional authentication each time the computer starts and whether
BitLocker will be used with a Trusted Platform Module (TPM). This policy
setting is applied when BitLocker is turned on.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts If one authentication method is required, the other methods can't be allowed.
Use of BitLocker with a TPM startup key or with a TPM startup key and a PIN
must be disallowed if the Deny write access to removable drives not
protected by BitLocker policy setting is enabled.

When enabled Users can configure advanced startup options in the BitLocker Setup Wizard.

When disabled Users can configure only basic options on computers with a TPM.
or not
configured Only one of the additional authentication options can be required at startup;
otherwise, a policy error occurs.

Reference: Require additional authentication at startup


If BitLocker needs to be used on a computer without a TPM, select Allow BitLocker
without a compatible TPM. In this mode, a password or USB drive is required for
startup. The USB drive stores the startup key that is used to encrypt the drive. When the
USB drive is inserted, the startup key is authenticated, and the operating system drive is
accessible. If the USB drive is lost or unavailable, BitLocker recovery is required to access
the drive.

On a computer with a compatible TPM, additional authentication methods can be used


at startup to improve protection for encrypted data. When the computer starts, it can
use:

Only the TPM


Insertion of a USB flash drive containing the startup key
The entry of a 4-digit to 20-digit personal identification number (PIN)
A combination of the PIN and the USB flash drive

There are four options for TPM-enabled computers or devices:

Configure TPM startup


Allow TPM
Require TPM
Do not allow TPM

Configure TPM startup PIN


Allow startup PIN with TPM
Require startup PIN with TPM
Do not allow startup PIN with TPM

Configure TPM startup key


Allow startup key with TPM
Require startup key with TPM
Do not allow startup key with TPM

Configure TPM startup key and PIN


Allow TPM startup key with PIN
Require startup key and PIN with TPM
Do not allow TPM startup key with PIN

Allow enhanced PINs for startup


This policy setting permits the use of enhanced PINs when an unlock method that
includes a PIN is used.

Item Info

Policy description With this policy setting, it can be configured whether enhanced startup
PINs are used with BitLocker.
Item Info

Introduced Windows Server 2008 R2 and Windows 7

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption > Operating System Drives

Conflicts None

When enabled All new BitLocker startup PINs that are set will be enhanced PINs. Existing
drives that were protected by using standard startup PINs aren't affected.

When disabled or Enhanced PINs won't be used.


not configured

Reference: Allow enhanced PINs for startup


Enhanced startup PINs permit the use of characters (including uppercase and lowercase
letters, symbols, numbers, and spaces). This policy setting is applied when BitLocker is
turned on.

) Important

Not all computers support enhanced PIN characters in the preboot environment.
It's strongly recommended that users perform a system check during the BitLocker
setup to verify that enhanced PIN characters can be used.

Configure minimum PIN length for startup


This policy setting is used to set a minimum PIN length when an unlock method that
includes a PIN is used.

Item Info

Policy With this policy setting, it can be configured a minimum length for a TPM
description startup PIN. This policy setting is applied when BitLocker is turned on. The
startup PIN must have a minimum length of four digits, and it can have a
maximum length of 20 digits. By default, the minimum PIN length is 6.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Operating system drives


Item Info

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts None

When enabled The required minimum length of startup PINs set by users can be set between
4 and 20 digits.

When disabled Users can configure a startup PIN of any length between 6 and 20 digits.
or not
configured

Reference: Configure minimum PIN length for startup


This policy setting is applied when BitLocker is turned on. The startup PIN must have a
minimum length of four digits and can have a maximum length of 20 digits.

Originally, BitLocker allowed a length from 4 to 20 characters for a PIN. Windows Hello
has its own PIN for sign-in, length of which can be 4 to 127 characters. Both BitLocker
and Windows Hello use the TPM to prevent PIN brute-force attacks.

The TPM can be configured to use Dictionary Attack Prevention parameters (lockout
threshold and lockout duration to control how many failed authorizations attempts are
allowed before the TPM is locked out, and how much time must elapse before another
attempt can be made.

The Dictionary Attack Prevention Parameters provide a way to balance security needs
with usability. For example, when BitLocker is used with a TPM + PIN configuration, the
number of PIN guesses is limited over time. A TPM 2.0 in this example could be
configured to allow only 32 PIN guesses immediately, and then only one more guess
every two hours. This number of attempts totals to a maximum of about 4415 guesses
per year. If the PIN is four digits, all 9999 possible PIN combinations could be attempted
in a little over two years.

Increasing the PIN length requires a greater number of guesses for an attacker. In that
case, the lockout duration between each guess can be shortened to allow legitimate
users to retry a failed attempt sooner, while maintaining a similar level of protection.

Beginning with Windows 10, version 1703, the minimum length for the BitLocker PIN
was increased to six characters to better align with other Windows features that use
TPM 2.0, including Windows Hello. To help organizations with the transition, beginning
with Windows 10, version 1709 and Windows 10, version 1703 with the October 2017
cumulative update installed, the BitLocker PIN length is six characters by default, but it
can be reduced to four characters. If the minimum PIN length is reduced from the
default of six characters, then the TPM 2.0 lockout period will be extended.

Disable new DMA devices when this computer is locked


This policy setting allows blocking of direct memory access (DMA) for all hot pluggable
PCI ports until a user signs in to Windows.

Item Info

Policy description This setting helps prevent attacks that use external PCI-based devices
to access BitLocker keys.

Introduced Windows 10, version 1703

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption

Conflicts None

When enabled Every time the user locks the screen, DMA will be blocked on hot
pluggable PCI ports until the user signs in again.

When disabled or not DMA is available on hot pluggable PCI devices if the device is turned
configured on, regardless of whether a user is signed in.

Reference: Disable new DMA devices when this computer is locked

This policy setting is only enforced when BitLocker or device encryption is enabled. As
explained in the Microsoft Security Guidance blog, in some cases when this setting is
enabled, internal, PCI-based peripherals can fail, including wireless network drivers and
input and audio peripherals. This problem is fixed in the April 2018 quality update .

Disallow standard users from changing the PIN or


password
This policy setting allows configuration of whether standard users are allowed to change
the PIN or password that is used to protect the operating system drive.

Item Info

Policy description With this policy setting, it can be configured whether standard users are
allowed to change the PIN or password used to protect the operating
Item Info

system drive.

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption > Operating System Drives

Conflicts None

When enabled Standard users aren't allowed to change BitLocker PINs or passwords.

When disabled or Standard users are permitted to change BitLocker PINs or passwords.
not configured

Reference: Disallow standard users from changing the PIN or


password
To change the PIN or password, the user must be able to provide the current PIN or
password. This policy setting is applied when BitLocker is turned on.

Configure use of passwords for operating system drives


This policy controls how non-TPM based systems utilize the password protector. Used
with the Password must meet complexity requirements policy, this policy allows
administrators to require password length and complexity for using the password
protector. By default, passwords must be eight characters in length. Complexity
configuration options determine how important domain connectivity is for the client.
For the strongest password security, administrators should choose Require password
complexity because it requires domain connectivity, and it requires that the BitLocker
password meets the same password complexity requirements as domain sign-in
passwords.

Item Info

Policy With this policy setting, the constraints for passwords that are used to unlock
description operating system drives that are protected with BitLocker can be specified.

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
Item Info

BitLocker Drive Encryption > Operating System Drives

Conflicts Passwords can't be used if FIPS-compliance is enabled.

NOTE: The System cryptography: Use FIPS-compliant


algorithms for encryption, hashing, and signing policy setting,
which is located at Computer Configuration > Windows Settings
> Security Settings > Local Policies > Security Options specifies
whether FIPS-compliance is enabled.

When enabled Users can configure a password that meets the defined requirements. To
enforce complexity requirements for the password, select Require complexity.

When disabled The default length constraint of eight characters will apply to operating system
or not drive passwords and no complexity checks will occur.
configured

Reference: Configure use of passwords for operating system drives


If non-TPM protectors are allowed on operating system drives, a password, enforcement
of complexity requirements on the password, and configuration of a minimum length
for the password can all be provisioned. For the complexity requirement setting to be
effective, the group policy setting Password must meet complexity requirements,
which is located at Computer Configuration > Windows Settings > Security Settings >
Account Policies > Password Policy, must be also enabled.

7 Note

These settings are enforced when turning on BitLocker, not when unlocking a
volume. BitLocker allows unlocking a drive with any of the protectors that are
available on the drive.

When set to Require complexity, a connection to a domain controller is necessary when


BitLocker is enabled to validate the complexity the password. When set to Allow
complexity, a connection to a domain controller is attempted to validate that the
complexity adheres to the rules set by the policy. If no domain controllers are found, the
password will be accepted regardless of actual password complexity, and the drive will
be encrypted by using that password as a protector. When set to Do not allow
complexity, there's no password complexity validation.
Passwords must be at least eight characters. To configure a greater minimum length for
the password, enter the desired number of characters in the Minimum password length
box.

When this policy setting is enabled, the option Configure password complexity for
operating system drives can be set to:

Allow password complexity


Deny password complexity
Require password complexity

Require additional authentication at startup (Windows


Server 2008 and Windows Vista)
This policy setting is used to control what unlock options are available for computers
running Windows Server 2008 or Windows Vista.

Item Info

Policy With this policy setting, it can be controlled whether the BitLocker Setup
description Wizard on computers running Windows Vista or Windows Server 2008 can
set up an additional authentication method that is required each time the
computer starts.

Introduced Windows Server 2008 and Windows Vista

Drive type Operating system drives (Windows Server 2008 and Windows Vista)

Policy path Computer Configuration > Administrative Templates > Windows Components
> BitLocker Drive Encryption > Operating System Drives

Conflicts If an additional authentication method is chosen, other authentication


methods can't be allowed.

When enabled The BitLocker Setup Wizard displays the page that allows the user to
configure advanced startup options for BitLocker. Setting options can be
further configured for computers with or without a TPM.

When disabled The BitLocker Setup Wizard displays basic steps that allow users to enable
or not BitLocker on computers with a TPM. In this basic wizard, no additional startup
configured key or startup PIN can be configured.

Reference: Require additional authentication at startup (Windows


Server 2008 and Windows Vista)
On a computer with a compatible TPM, two authentication methods can be used at
startup to provide added protection for encrypted data. When the computer starts, it
can prompt users to insert a USB drive that contains a startup key. It can also prompt
users to enter a startup PIN with a length between 6 and 20 digits.

A USB drive that contains a startup key is needed on computers without a compatible
TPM. Without a TPM, BitLocker-encrypted data is protected solely by the key material
that is on this USB drive.

There are two options for TPM-enabled computers or devices:

Configure TPM startup PIN


Allow startup PIN with TPM
Require startup PIN with TPM
Do not allow startup PIN with TPM

Configure TPM startup key


Allow startup key with TPM
Require startup key with TPM
Do not allow startup key with TPM

These options are mutually exclusive. If a startup key is required, a startup PIN isn't
allowed. If startup PIN is required, startup key isn't allowed. If these policies are in
conflict, a policy error will occur.

To hide the advanced page on a TPM-enabled computer or device, set these options to
Do not allow for the startup key and for the startup PIN.

Configure use of smart cards on fixed data drives


This policy setting is used to require, allow, or deny the use of smart cards with fixed
data drives.

Item Info

Policy This policy setting can be used to specify whether smart cards can be used to
description authenticate user access to the BitLocker-protected fixed data drives on a
computer.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Fixed data drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Fixed Data Drives
Item Info

Conflicts To use smart cards with BitLocker, the object identifier setting in the Computer
Configuration\Administrative Templates\BitLocker Drive Encryption\Validate
smart card certificate usage rule compliance policy setting may need to be
modified to match the object identifier of the smart card certificates.

When Smart cards can be used to authenticate user access to the drive. Smart card
enabled authentication can be required by selecting the Require use of smart cards on
fixed data drives check box.

When Users can't use smart cards to authenticate their access to BitLocker-protected
disabled fixed data drives.

When not Smart cards can be used to authenticate user access to a BitLocker-protected
configured drive.

Reference: Configure use of smart cards on fixed data drives

7 Note

These settings are enforced when turning on BitLocker, not when unlocking a drive.
BitLocker allows unlocking a drive by using any of the protectors that are available
on the drive.

Configure use of passwords on fixed data drives


This policy setting is used to require, allow, or deny the use of passwords with fixed data
drives.

Item Info

Policy With this policy setting, it can be specified whether a password is required to
description unlock BitLocker-protected fixed data drives.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Fixed data drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Fixed Data Drives

Conflicts To use password complexity, the Computer Configuration\Windows


Settings\Security Settings\Account Policies\Password Policy\Password must
meet complexity requirements policy setting must also be enabled.
Item Info

When Users can configure a password that meets the defined requirements. To require
enabled the use of a password, select Require password for fixed data drive. To enforce
complexity requirements on the password, select Require complexity.

When The user isn't allowed to use a password.


disabled

When not Passwords are supported with the default settings, which don't include password
configured complexity requirements and require only eight characters.

Reference: Configure use of passwords on fixed data drives


When set to Require complexity, a connection to a domain controller is necessary to
validate the complexity of the password when BitLocker is enabled.

When set to Allow complexity, a connection to a domain controller is attempted to


validate that the complexity adheres to the rules set by the policy. However, if no
domain controllers are found, the password is accepted regardless of the actual
password complexity, and the drive is encrypted by using that password as a protector.

When set to Do not allow complexity, no password complexity validation is performed.

Passwords must be at least eight characters. To configure a greater minimum length for
the password, enter the desired number of characters in the Minimum password length
box.

7 Note

These settings are enforced when turning on BitLocker, not when unlocking a drive.
BitLocker allows unlocking a drive with any of the protectors that are available on
the drive.

For the complexity requirement setting to be effective, the Group Policy setting
Computer Configuration > Windows Settings > Security Settings > Account Policies >
Password Policy > Password must meet complexity requirements must also be
enabled. This policy setting is configured on a per-computer basis. The policy setting
also applies to both local user accounts and domain user accounts. Because the
password filter that's used to validate password complexity is located on the domain
controllers, local user accounts can't access the password filter because they're not
authenticated for domain access. When this policy setting is enabled, if a local user
account signs in, and a drive is attempted to be encrypted or a password changed on an
existing BitLocker-protected drive, an Access denied error message is displayed. In this
situation, the password key protector can't be added to the drive.

Enabling this policy setting requires that a device is connected to a domain before
adding a password key protector to a BitLocker-protected drive. Users who work
remotely and have periods of time in which they can't connect to the domain should be
made aware of this requirement so that they can schedule a time when they'll be
connected to the domain to turn on BitLocker or to change a password on a BitLocker-
protected data drive.

) Important

Passwords can't be used if FIPS compliance is enabled. The System cryptography:


Use FIPS-compliant algorithms for encryption, hashing, and signing policy setting
in Computer Configuration > Windows Settings > Security Settings > Local Policies >
Security Options specifies whether FIPS compliance is enabled.

Configure use of smart cards on removable data drives


This policy setting is used to require, allow, or deny the use of smart cards with
removable data drives.

Item Info

Policy This policy setting can be used to specify whether smart cards can be used to
description authenticate user access to BitLocker-protected removable data drives on a
computer.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Removable data drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Removable Data Drives

Conflicts To use smart cards with BitLocker, the object identifier setting in the Computer
Configuration > Administrative Templates > BitLocker Drive Encryption >
Validate smart card certificate usage rule compliance policy setting may also
need to be modified to match the object identifier of the smart card
certificates.

When enabled Smart cards can be used to authenticate user access to the drive. Smart card
authentication can be required by selecting the Require use of smart cards on
removable data drives check box.
Item Info

When disabled Users aren't allowed to use smart cards to authenticate their access to
or not BitLocker-protected removable data drives.
configured

When not Smart cards are available to authenticate user access to a BitLocker-protected
configured removable data drive.

Reference: Configure use of smart cards on removable data drives

7 Note

These settings are enforced when turning on BitLocker, not when unlocking a drive.
BitLocker allows unlocking a drive with any of the protectors that are available on
the drive.

Configure use of passwords on removable data drives


This policy setting is used to require, allow, or deny the use of passwords with
removable data drives.

Item Info

Policy With this policy setting, it can be specified whether a password is required to
description unlock BitLocker-protected removable data drives.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Removable data drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Removable Data Drives

Conflicts To use password complexity, the Password must meet complexity requirements
policy setting, which is located at Computer Configuration\Windows
Settings\Security Settings\Account Policies\Password Policy must also be
enabled.

When Users can configure a password that meets the defined requirements. To require
enabled the use of a password, select Require password for removable data drive. To
enforce complexity requirements on the password, select Require complexity.

When The user isn't allowed to use a password.


disabled
Item Info

When not Passwords are supported with the default settings, which don't include password
configured complexity requirements and require only eight characters.

Reference: Configure use of passwords on removable data drives


If use of passwords is allowed, requiring a password to be used, enforcement of
password complexity requirements, and password minimum length can all be
configured. For the complexity requirement setting to be effective, the group policy
setting Password must meet complexity requirements, which is located at Computer
Configuration > Windows Settings > Security Settings > Account Policies > Password
Policy, must also be enabled.

7 Note

These settings are enforced when turning on BitLocker, not when unlocking a drive.
BitLocker allows unlocking a drive with any of the protectors that are available on
the drive.

Passwords must be at least eight characters. To configure a greater minimum length for
the password, enter the wanted number of characters in the Minimum password length
box.

When set to Require complexity, a connection to a domain controller is necessary when


BitLocker is enabled to validate the complexity of the password.

When set to Allow complexity, a connection to a domain controller is attempted to


validate that the complexity adheres to the rules set by the policy. However, if no
domain controllers are found, the password is still be accepted regardless of actual
password complexity and the drive is encrypted by using that password as a protector.

When set to Do not allow complexity, no password complexity validation is done.

7 Note

Passwords can't be used if FIPS compliance is enabled. The System cryptography:


Use FIPS-compliant algorithms for encryption, hashing, and signing policy setting
in Computer Configuration > Windows Settings > Security Settings > Local
Policies > Security Options specifies whether FIPS compliance is enabled.
For information about this setting, see System cryptography: Use FIPS-compliant
algorithms for encryption, hashing, and signing.

Validate smart card certificate usage rule compliance


This policy setting is used to determine what certificate to use with BitLocker.

Item Info

Policy description With this policy setting, an object identifier from a smart card certificate
can be associated to a BitLocker-protected drive.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Fixed and removable data drives

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption

Conflicts None

When enabled The object identifier that is specified in the Object identifier setting
must match the object identifier in the smart card certificate.

When disabled or not The default object identifier is used.


configured

Reference: Validate smart card certificate usage rule compliance


This policy setting is applied when BitLocker is turned on.

The object identifier is specified in the extended key usage (EKU) of a certificate.
BitLocker can identify which certificates can be used to authenticate a user certificate to
a BitLocker-protected drive by matching the object identifier in the certificate with the
object identifier that is defined by this policy setting.

The default object identifier is 1.3.6.1.4.1.311.67.1.1.

7 Note

BitLocker doesn't require that a certificate have an EKU attribute; however, if one is
configured for the certificate, it must be set to an object identifier that matches the
object identifier configured for BitLocker.
Enable use of BitLocker authentication requiring preboot
keyboard input on slates

Item Info

Policy description With this policy setting, users can be allowed to enable authentication
options that require user input from the preboot environment, even if the
platform indicates a lack of preboot input capability.

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drive

Policy path Computer Configuration > Administrative Templates > Windows Components
> BitLocker Drive Encryption > Operating System Drives

Conflicts None

When enabled Devices must have an alternative means of preboot input (such as an
attached USB keyboard).

When disabled or The Windows Recovery Environment must be enabled on tablets to support
not configured entering the BitLocker recovery password.

Reference: Enable use of BitLocker authentication requiring


preboot keyboard input on slates

The Windows touch keyboard (such as used by tablets) isn't available in the preboot
environment where BitLocker requires additional information, such as a PIN or
password.

It's recommended that administrators enable this policy only for devices that are verified
to have an alternative means of preboot input, such as attaching a USB keyboard.

When the Windows Recovery Environment (WinRE) isn't enabled and this policy isn't
enabled, BitLocker can't be turned on a device that uses the Windows touch keyboard.

If this policy setting isn't enabled, the following options in the Require additional
authentication at startup policy might not be available:

Configure TPM startup PIN: Required and Allowed


Configure TPM startup key and PIN: Required and Allowed
Configure use of passwords for operating system drives
Deny write access to fixed drives not protected by
BitLocker
This policy setting is used to require encryption of fixed drives prior to granting Write
access.

Item Info

Policy description With this policy setting, it can be set whether BitLocker protection is
required for fixed data drives to be writable on a computer.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Fixed data drives

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption > Fixed Data Drives

Conflicts See the Reference section for a description of conflicts.

When enabled All fixed data drives that aren't BitLocker-protected are mounted as Read-
only. If the drive is protected by BitLocker, it's mounted with Read and
Write access.

When disabled or All fixed data drives on the computer are mounted with Read and Write
not configured access.

Reference: Deny write access to fixed drives not protected by


BitLocker

This policy setting is applied when BitLocker is turned on.

Conflict considerations include:

1. When this policy setting is enabled, users receive Access denied error messages
when they try to save data to unencrypted fixed data drives. See the Reference
section for additional conflicts.

2. If BdeHdCfg.exe is run on a computer when this policy setting is enabled, the


following issues could be encountered:

If it was attempted to shrink a drive to create the system drive, the drive size
is successfully reduced, and a raw partition is created. However, the raw
partition isn't formatted. The following error message is displayed: The new
active drive cannot be formatted. You may need to manually prepare your
drive for BitLocker.
If it was attempted to use unallocated space to create the system drive, a raw
partition will be created. However, the raw partition won't be formatted. The
following error message is displayed: The new active drive cannot be
formatted. You may need to manually prepare your drive for BitLocker.

If it was attempted to merge an existing drive into the system drive, the tool
fails to copy the required boot file onto the target drive to create the system
drive. The following error message is displayed: BitLocker setup failed to
copy boot files. You may need to manually prepare your drive for BitLocker.

3. If this policy setting is enforced, a hard drive can't be repartitioned because the
drive is protected. If computers are being upgrading in an organization from a
previous version of Windows, and those computers were configured with a single
partition, the required BitLocker system partition should be created before
applying this policy setting to the computers.

Deny write access to removable drives not protected by


BitLocker
This policy setting is used to require that removable drives are encrypted prior to
granting Write access, and to control whether BitLocker-protected removable drives that
were configured in another organization can be opened with Write access.

Item Info

Policy description With this policy setting, it can be configured whether BitLocker protection
is required for a computer to be able to write data to a removable data
drive.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Removable data drives

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption > Removable Data Drives

Conflicts See the Reference section for a description of conflicts.

When enabled All removable data drives that aren't BitLocker-protected are mounted as
Read-only. If the drive is protected by BitLocker, it's mounted with Read
and Write access.

When disabled or All removable data drives on the computer are mounted with Read and
not configured Write access.
Reference: Deny write access to removable drives not protected by
BitLocker

If the Deny write access to devices configured in another organization option is


selected, only drives with identification fields that match the computer's identification
fields are given Write access. When a removable data drive is accessed, it's checked for a
valid identification field and allowed identification fields. These fields are defined by the
Provide the unique identifiers for your organization policy setting.

7 Note

This policy setting can be overridden with the policy settings under User
Configuration > Administrative Templates > System > Removable Storage
Access. If the Removable Disks: Deny write access policy setting is enabled, this
policy setting will be ignored.

Conflict considerations include:

1. Use of BitLocker with the TPM plus a startup key or with the TPM plus a PIN and
startup key must be disallowed if the Deny write access to removable drives not
protected by BitLocker policy setting is enabled.

2. Use of recovery keys must be disallowed if the Deny write access to removable
drives not protected by BitLocker policy setting is enabled.

3. The Provide the unique identifiers for your organization policy setting must be
enabled if Write access needs to be denied to drives that were configured in
another organization.

Control use of BitLocker on removable drives


This policy setting is used to prevent users from turning BitLocker on or off on
removable data drives.

Item Info

Policy With this policy setting, it can be controlled the use of BitLocker on removable
description data drives.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Removable data drives


Item Info

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Removable Data Drives

Conflicts None

When enabled Property settings can be selected that control how users can configure
BitLocker.

When disabled Users can't use BitLocker on removable data drives.

When not Users can use BitLocker on removable data drives.


configured

Reference: Control use of BitLocker on removable drives


This policy setting is applied when BitLocker is turned on.

For information about suspending BitLocker protection, see BitLocker Basic Deployment.

The options for choosing property settings that control how users can configure
BitLocker are:

Allow users to apply BitLocker protection on removable data drives Enables the
user to run the BitLocker Setup Wizard on a removable data drive.

Allow users to suspend and decrypt BitLocker on removable data drives Enables
the user to remove BitLocker from the drive or to suspend the encryption while
performing maintenance.

Choose drive encryption method and cipher strength


This policy setting is used to control the encryption method and cipher strength.

Item Info

Policy description With this policy setting, it can be controlled the encryption method and
strength for drives.

Introduced Windows Server 2012 and Windows 8

Drive type All drives

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption
Item Info

Conflicts None

When enabled An encryption algorithm and key cipher strength for BitLocker can be
chosen to use to encrypt drives.

When disabled or Beginning with Windows 10, version 1511, BitLocker uses the default
not configured encryption method of XTS-AES 128-bit or the encryption method that is
specified by the setup script.

Reference: Choose drive encryption method and cipher strength


The values of this policy determine the strength of the cipher that BitLocker uses for
encryption. Enterprises may want to control the encryption level for increased security
(AES-256 is stronger than AES-128).

If this setting is enabled, it can be configured an encryption algorithm and key cipher
strength for fixed data drives, operating system drives, and removable data drives
individually.

For fixed and operating system drives, it's recommended to use the XTS-AES
algorithm.

For removable drives, AES-CBC 128-bit or AES-CBC 256-bit should be used if the
drive will be used in other devices that aren't running Windows 10, version 1511 or
later.

Changing the encryption method has no effect if the drive is already encrypted or if
encryption is in progress. In these cases, this policy setting is ignored.

2 Warning

This policy doesn't apply to encrypted drives. Encrypted drives utilize their own
algorithm, which is set by the drive during partitioning.

When this policy setting is disabled or not configured, BitLocker will use the default
encryption method of XTS-AES 128-bit or the encryption method that is specified in the
setup script.

Configure use of hardware-based encryption for fixed


data drives
This policy controls how BitLocker reacts to systems that are equipped with encrypted
drives when they're used as fixed data volumes. Using hardware-based encryption can
improve the performance of drive operations that involve frequent reading or writing of
data to the drive.

Item Info

Policy This policy setting allows management of BitLocker's use of hardware-based


description encryption on fixed data drives and to specify which encryption algorithms
BitLocker can use with hardware-based encryption.

Introduced Windows Server 2012 and Windows 8

Drive type Fixed data drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Fixed Data Drives

Conflicts None

When Additional options can be specified that control whether BitLocker software-
enabled based encryption is used instead of hardware-based encryption on computers
that don't support hardware-based encryption. It can also be specified to restrict
the encryption algorithms and cipher suites that are used with hardware-based
encryption.

When BitLocker can't use hardware-based encryption with fixed data drives, and
disabled BitLocker software-based encryption is used by default when the drive in
encrypted.

When not BitLocker software-based encryption is used irrespective of hardware-based


configured encryption ability.

Reference: Configure use of hardware-based encryption for fixed


data drives

7 Note

The Choose drive encryption method and cipher strength policy setting doesn't
apply to hardware-based encryption.

The encryption algorithm that is used by hardware-based encryption is set when the
drive is partitioned. By default, BitLocker uses the algorithm that is configured on the
drive to encrypt the drive. The Restrict encryption algorithms and cipher suites allowed
for hardware-based encryption option of this setting enables restriction of the
encryption algorithms that BitLocker can use with hardware encryption. If the algorithm
that is set for the drive isn't available, BitLocker disables the use of hardware-based
encryption. Encryption algorithms are specified by object identifiers (OID), for example:

Advanced Encryption Standard (AES) 128 in Cipher Block Chaining (CBC) mode
OID: 2.16.840.1.101.3.4.1.2
AES 256 in CBC mode OID: 2.16.840.1.101.3.4.1.42

Configure use of hardware-based encryption for


operating system drives
This policy controls how BitLocker reacts when encrypted drives are used as operating
system drives. Using hardware-based encryption can improve the performance of drive
operations that involve frequent reading or writing of data to the drive.

Item Info

Policy This policy setting allows management of BitLocker's use of hardware-based


description encryption on operating system drives and specifies which encryption algorithms
it can use with hardware-based encryption.

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts None

When Additional options can be specified that control whether BitLocker software-
enabled based encryption is used instead of hardware-based encryption on computers
that don't support hardware-based encryption. It can also be specified to restrict
the encryption algorithms and cipher suites that are used with hardware-based
encryption.

When BitLocker can't use hardware-based encryption with operating system drives, and
disabled BitLocker software-based encryption is used by default when the drive in
encrypted.

When not BitLocker software-based encryption is used irrespective of hardware-based


configured encryption ability.

Reference: Configure use of hardware-based encryption for


operating system drives
If hardware-based encryption isn't available, BitLocker software-based encryption is
used instead.

7 Note

The Choose drive encryption method and cipher strength policy setting doesn't
apply to hardware-based encryption.

The encryption algorithm that is used by hardware-based encryption is set when the
drive is partitioned. By default, BitLocker uses the algorithm that is configured on the
drive to encrypt the drive. The Restrict encryption algorithms and cipher suites allowed
for hardware-based encryption option of this setting enables restriction of the
encryption algorithms that BitLocker can use with hardware encryption. If the algorithm
that is set for the drive isn't available, BitLocker disables the use of hardware-based
encryption. Encryption algorithms are specified by object identifiers (OID), for example:

Advanced Encryption Standard (AES) 128 in Cipher Block Chaining (CBC) mode
OID: 2.16.840.1.101.3.4.1.2
AES 256 in CBC mode OID: 2.16.840.1.101.3.4.1.42

Configure use of hardware-based encryption for


removable data drives
This policy controls how BitLocker reacts to encrypted drives when they're used as
removable data drives. Using hardware-based encryption can improve the performance
of drive operations that involve frequent reading or writing of data to the drive.

Item Info

Policy This policy setting allows management of BitLocker's use of hardware-based


description encryption on removable data drives and specifies which encryption algorithms it
can use with hardware-based encryption.

Introduced Windows Server 2012 and Windows 8

Drive type Removable data drive

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Removable Data Drives

Conflicts None

When Additional options can be specified that control whether BitLocker software-
enabled based encryption is used instead of hardware-based encryption on computers
that don't support hardware-based encryption. It can also be specified to restrict
Item Info

the encryption algorithms and cipher suites that are used with hardware-based
encryption.

When BitLocker can't use hardware-based encryption with removable data drives, and
disabled BitLocker software-based encryption is used by default when the drive in
encrypted.

When not BitLocker software-based encryption is used irrespective of hardware-based


configured encryption ability.

Reference: Configure use of hardware-based encryption for


removable data drives
If hardware-based encryption isn't available, BitLocker software-based encryption is
used instead.

7 Note

The Choose drive encryption method and cipher strength policy setting doesn't
apply to hardware-based encryption.

The encryption algorithm that is used by hardware-based encryption is set when the
drive is partitioned. By default, BitLocker uses the algorithm that is configured on the
drive to encrypt the drive. The Restrict encryption algorithms and cipher suites allowed
for hardware-based encryption option of this setting enables restriction of the
encryption algorithms that BitLocker can use with hardware encryption. If the algorithm
that is set for the drive isn't available, BitLocker disables the use of hardware-based
encryption. Encryption algorithms are specified by object identifiers (OID), for example:

Advanced Encryption Standard (AES) 128 in Cipher Block Chaining (CBC) mode
OID: 2.16.840.1.101.3.4.1.2
AES 256 in CBC mode OID: 2.16.840.1.101.3.4.1.42

Enforce drive encryption type on fixed data drives


This policy controls whether fixed data drives utilize Used Space Only encryption or Full
encryption. Setting this policy also causes the BitLocker Setup Wizard to skip the
encryption options page so no encryption selection displays to the user.
Item Info

Policy description With this policy setting, it can be configured the encryption type that is
used by BitLocker.

Introduced Windows Server 2012 and Windows 8

Drive type Fixed data drive

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption > Fixed Data Drives

Conflicts None

When enabled This policy defines the encryption type that BitLocker uses to encrypt
drives, and the encryption type option isn't presented in the BitLocker
Setup Wizard.

When disabled or The BitLocker Setup Wizard asks the user to select the encryption type
not configured before turning on BitLocker.

Reference: Enforce drive encryption type on fixed data drives


This policy setting is applied when BitLocker is turned on. Changing the encryption type
has no effect if the drive is already encrypted or if encryption is in progress. Choose Full
encryption to make it mandatory for the entire drive to be encrypted when BitLocker is
turned on. Choose Used Space Only encryption to make it mandatory to encrypt only
that portion of the drive that is used to store data when BitLocker is turned on.

7 Note

This policy is ignored when a volume is being shrunk or expanded and the
BitLocker drive uses the current encryption method. For example, when a drive that
is using Used Space Only encryption is expanded, the new free space isn't wiped as
it would be for a drive that is using Full encryption. The user could wipe the free
space on a Used Space Only drive by using the following command: manage-bde.exe
-w . If the volume is shrunk, no action is taken for the new free space.

For more information about the tool to manage BitLocker, see Manage-bde.

Enforce drive encryption type on operating system drives


This policy controls whether operating system drives utilize Full encryption or Used
Space Only encryption. Setting this policy also causes the BitLocker Setup Wizard to skip
the encryption options page, so no encryption selection displays to the user.

Item Info

Policy description With this policy setting, it can be configured the encryption type that is
used by BitLocker.

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drive

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption > Operating System Drives

Conflicts None

When enabled The encryption type that BitLocker uses to encrypt drives is defined by this
policy, and the encryption type option isn't presented in the BitLocker
Setup Wizard.

When disabled or The BitLocker Setup Wizard asks the user to select the encryption type
not configured before turning on BitLocker.

Reference: Enforce drive encryption type on operating system


drives

This policy setting is applied when BitLocker is turned on. Changing the encryption type
has no effect if the drive is already encrypted or if encryption is in progress. Choose Full
encryption to make it mandatory for the entire drive to be encrypted when BitLocker is
turned on. Choose Used Space Only encryption to make it mandatory to encrypt only
that portion of the drive that is used to store data when BitLocker is turned on.

7 Note

This policy is ignored when shrinking or expanding a volume, and the BitLocker
driver uses the current encryption method. For example, when a drive that is using
Used Space Only encryption is expanded, the new free space isn't wiped as it would
be for a drive that uses Full encryption. The user could wipe the free space on a
Used Space Only drive by using the following command: manage-bde.exe -w . If the
volume is shrunk, no action is taken for the new free space.

For more information about the tool to manage BitLocker, see Manage-bde.

Enforce drive encryption type on removable data drives


This policy controls whether fixed data drives utilize Full encryption or Used Space Only
encryption. Setting this policy also causes the BitLocker Setup Wizard to skip the
encryption options page, so no encryption selection displays to the user.

Item Info

Policy description With this policy setting, it can be configured the encryption type that is
used by BitLocker.

Introduced Windows Server 2012 and Windows 8

Drive type Removable data drive

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption > Removable Data Drives

Conflicts None

When enabled The encryption type that BitLocker uses to encrypt drives is defined by this
policy, and the encryption type option isn't presented in the BitLocker
Setup Wizard.

When disabled or The BitLocker Setup Wizard asks the user to select the encryption type
not configured before turning on BitLocker.

Reference: Enforce drive encryption type on removable data drives


This policy setting is applied when BitLocker is turned on. Changing the encryption type
has no effect if the drive is already encrypted or if encryption is in progress. Choose Full
encryption to make it mandatory for the entire drive to be encrypted when BitLocker is
turned on. Choose Used Space Only encryption to make it mandatory to encrypt only
that portion of the drive that is used to store data when BitLocker is turned on.

7 Note

This policy is ignored when shrinking or expanding a volume, and the BitLocker
driver uses the current encryption method. For example, when a drive that is using
Used Space Only encryption is expanded, the new free space isn't wiped as it would
be for a drive that is using Full Encryption. The user could wipe the free space on a
Used Space Only drive by using the following command: manage-bde.exe -w . If the
volume is shrunk, no action is taken for the new free space.

For more information about the tool to manage BitLocker, see Manage-bde.
Choose how BitLocker-protected operating system drives
can be recovered
This policy setting is used to configure recovery methods for operating system drives.

Item Info

Policy With this policy setting, it can be controlled how BitLocker-protected


description operating system drives are recovered in the absence of the required startup
key information.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts The use of recovery keys must be disallowed if the Deny write access to
removable drives not protected by BitLocker policy setting is enabled.

When using data recovery agents, the Provide the unique identifiers for your
organization policy setting must be enabled.

When enabled it can be controlled the methods that are available to users to recover data
from BitLocker-protected operating system drives.

When disabled The default recovery options are supported for BitLocker recovery. By default,
or not a data recovery agent is allowed, the recovery options can be specified by the
configured user (including the recovery password and recovery key), and recovery
information isn't backed up to AD DS.

Reference: Choose how BitLocker-protected operating system


drives can be recovered
This policy setting is applied when BitLocker is turned on.

The Allow data recovery agent check box is used to specify whether a data recovery
agent can be used with BitLocker-protected operating system drives. Before a data
recovery agent can be used, it must be added from Public Key Policies, which is located
in the Group Policy Management Console (GPMC) or in the Local Group Policy Editor.

For more information about adding data recovery agents, see BitLocker basic
deployment.

In Configure user storage of BitLocker recovery information, select whether users are
allowed, required, or not allowed to generate a 48-digit recovery password.
Select Omit recovery options from the BitLocker setup wizard to prevent users from
specifying recovery options when they enable BitLocker on a drive. This policy setting
means that which recovery option to use when BitLocker is enabled can't be specified.
Instead, BitLocker recovery options for the drive are determined by the policy setting.

In Save BitLocker recovery information to Active Directory Domain Services, choose


which BitLocker recovery information to store in Active Directory Domain Services (AD
DS) for operating system drives. If Store recovery password and key packages is
selected, the BitLocker recovery password and the key package are stored in AD DS.
Storing the key package supports the recovery of data from a drive that is physically
corrupted. If Store recovery password only is selected, only the recovery password is
stored in AD DS.

Select the Do not enable BitLocker until recovery information is stored in AD DS for
operating system drives check box if users need to be prevented from enabling
BitLocker unless the computer is connected to the domain and the backup of BitLocker
recovery information to AD DS succeeds.

7 Note

If the Do not enable BitLocker until recovery information is stored in AD DS for


operating system drives check box is selected, a recovery password is
automatically generated.

Choose how users can recover BitLocker-protected drives


(Windows Server 2008 and Windows Vista)
This policy setting is used to configure recovery methods for BitLocker-protected drives
on computers running Windows Server 2008 or Windows Vista.

Item Info

Policy With this policy setting, it can be controlled whether the BitLocker Setup Wizard
description can display and specify BitLocker recovery options.

Introduced Windows Server 2008 and Windows Vista

Drive type Operating system drives and fixed data drives on computers running Windows
Server 2008 and Windows Vista

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption
Item Info

Conflicts This policy setting provides an administrative method of recovering data that is
encrypted by BitLocker to prevent data loss due to lack of key information. If the
Do not allow option is chosen for both user recovery options, the Store
BitLocker recovery information in Active Directory Domain Services (Windows
Server 2008 and Windows Vista) policy setting must be enabled to prevent a
policy error.

When enabled The options that the BitLocker Setup Wizard displays to users for recovering
BitLocker encrypted data can be configured.

When disabled The BitLocker Setup Wizard presents users with ways to store recovery options.
or not
configured

Reference: Choose how users can recover BitLocker-protected


drives (Windows Server 2008 and Windows Vista)

This policy is only applicable to computers running Windows Server 2008 or Windows
Vista. This policy setting is applied when BitLocker is turned on.

Two recovery options can be used to unlock BitLocker-encrypted data in the absence of
the required startup key information. Users can type a 48-digit numerical recovery
password, or they can insert a USB drive that contains a 256-bit recovery key.

Saving the recovery password to a USB drive stores the 48-digit recovery password
as a text file and the 256-bit recovery key as a hidden file.
Saving the recovery password to a folder stores the 48-digit recovery password as
a text file.
Printing the recovery password sends the 48-digit recovery password to the
default printer.

For example, not allowing the 48-digit recovery password prevents users from printing
or saving recovery information to a folder.

) Important

If TPM initialization is performed during the BitLocker setup, TPM owner


information is saved or printed with the BitLocker recovery information. The 48-
digit recovery password isn't available in FIPS-compliance mode.

) Important
To prevent data loss, there must be a way to recover BitLocker encryption keys. If
both recovery options are not allowed, backup of BitLocker recovery information to
AD DS must be enabled. Otherwise, a policy error occurs.

Store BitLocker recovery information in Active Directory


Domain Services (Windows Server 2008 and Windows
Vista)
This policy setting is used to configure the storage of BitLocker recovery information in
AD DS. This policy setting provides an administrative method of recovering data that is
encrypted by BitLocker to prevent data loss due to lack of key information.

Item Info

Policy description This policy setting allows management of the AD DS backup of


BitLocker Drive Encryption recovery information.

Introduced Windows Server 2008 and Windows Vista

Drive type Operating system drives and fixed data drives on computers running
Windows Server 2008 and Windows Vista.

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption

Conflicts None

When enabled BitLocker recovery information is automatically and silently backed up


to AD DS when BitLocker is turned on for a computer.

When disabled or not BitLocker recovery information isn't backed up to AD DS.


configured

Reference: Store BitLocker recovery information in Active Directory


Domain Services (Windows Server 2008 and Windows Vista)
This policy is only applicable to computers running Windows Server 2008 or Windows
Vista.

This policy setting is applied when BitLocker is turned on.

BitLocker recovery information includes the recovery password and unique identifier
data. A package that contains an encryption key for a BitLocker-protected drive can also
be included. This key package is secured by one or more recovery passwords, and it can
help perform specialized recovery when the disk is damaged or corrupted.

If Require BitLocker backup to AD DS is selected, BitLocker can't be turned on unless


the computer is connected to the domain, and the backup of BitLocker recovery
information to AD DS succeeds. This option is selected by default to help ensure that
BitLocker recovery is possible.

A recovery password is a 48-digit number that unlocks access to a BitLocker-protected


drive. A key package contains a drive's BitLocker encryption key, which is secured by one
or more recovery passwords. Key packages may help perform specialized recovery when
the disk is damaged or corrupted.

If the Require BitLocker backup to AD DS option isn't selected, AD DS backup is


attempted, but network or other backup failures don't prevent the BitLocker setup. The
Backup process isn't automatically retried, and the recovery password might not be
stored in AD DS during BitLocker setup. TPM initialization might be needed during the
BitLocker setup. Enable the Turn on TPM backup to Active Directory Domain Services
policy setting in Computer Configuration > Administrative Templates > System >
Trusted Platform Module Services to ensure that TPM information is also backed up.

For more information about this setting, see TPM Group Policy settings.

Choose default folder for recovery password


This policy setting is used to configure the default folder for recovery passwords.

Item Info

Policy With this policy setting, the default path that is displayed when the BitLocker
description Setup Wizard prompts the user to enter the location of a folder in which to save
the recovery password can be specified.

Introduced Windows Vista

Drive type All drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption

Conflicts None

When enabled The path that will be used as the default folder location when the user chooses
the option to save the recovery password in a folder can be specified. A fully
qualified path can be specified. The target computer's environment variables
Item Info

can also be included in the path. If the path isn't valid, the BitLocker Setup
Wizard displays the computer's top-level folder view.

When disabled The BitLocker Setup Wizard displays the computer's top-level folder view when
or not the user chooses the option to save the recovery password in a folder.
configured

Reference: Choose default folder for recovery password


This policy setting is applied when BitLocker is turned on.

7 Note

This policy setting doesn't prevent the user from saving the recovery password in
another folder.

Choose how BitLocker-protected fixed drives can be


recovered
This policy setting is used to configure recovery methods for fixed data drives.

Item Info

Policy With this policy setting, it can be controlled how BitLocker-protected fixed
description data drives are recovered in the absence of the required credentials.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Fixed data drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Fixed Data Drives

Conflicts The use of recovery keys must be disallowed if the Deny write access to
removable drives not protected by BitLocker policy setting is enabled.

When using data recovery agents, the Provide the unique identifiers for your
organization policy setting must be enabled.

When enabled it can be controlled the methods that are available to users to recover data
from BitLocker-protected fixed data drives.

When disabled The default recovery options are supported for BitLocker recovery. By default,
or not a data recovery agent is allowed, the recovery options can be specified by the
Item Info

configured user (including the recovery password and recovery key), and recovery
information isn't backed up to AD DS.

Reference: Choose how BitLocker-protected fixed drives can be


recovered
This policy setting is applied when BitLocker is turned on.

The Allow data recovery agent check box is used to specify whether a data recovery
agent can be used with BitLocker-protected fixed data drives. Before a data recovery
agent can be used, it must be added from Public Key Policies, which is located in the
Group Policy Management Console (GPMC) or in the Local Group Policy Editor.

In Configure user storage of BitLocker recovery information, select whether users can
be allowed, required, or not allowed to generate a 48-digit recovery password or a 256-
bit recovery key.

Select Omit recovery options from the BitLocker setup wizard to prevent users from
specifying recovery options when they enable BitLocker on a drive. This policy setting
means that which recovery option to use when BitLocker is enabled can't be specified.
Instead, BitLocker recovery options for the drive are determined by the policy setting.

In Save BitLocker recovery information to Active Directory Domain Services, choose


which BitLocker recovery information to store in AD DS for fixed data drives. If Backup
recovery password and key package is selected, the BitLocker recovery password and
the key package are stored in AD DS. Storing the key package supports recovering data
from a drive that has been physically corrupted. To recover this data, the Repair-bde.exe
command-line tool can be used. If Backup recovery password only is selected, only the
recovery password is stored in AD DS.

For more information about the BitLocker repair tool, see Repair-bde.

Select the Do not enable BitLocker until recovery information is stored in AD DS for
fixed data drives check box if users should be prevented from enabling BitLocker unless
the computer is connected to the domain and the backup of BitLocker recovery
information to AD DS succeeds.

7 Note

If the Do not enable BitLocker until recovery information is stored in AD DS for


fixed data drives check box is selected, a recovery password is automatically
generated.

Choose how BitLocker-protected removable drives can be


recovered
This policy setting is used to configure recovery methods for removable data drives.

Item Info

Policy With this policy setting, it can be controlled how BitLocker-protected


description removable data drives are recovered in the absence of the required
credentials.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Removable data drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Removable Data Drives

Conflicts The use of recovery keys must be disallowed if the Deny write access to
removable drives not protected by BitLocker policy setting is enabled.

When using data recovery agents, the Provide the unique identifiers for your
organization policy setting must be enabled.

When enabled it can be controlled the methods that are available to users to recover data
from BitLocker-protected removable data drives.

When disabled The default recovery options are supported for BitLocker recovery. By default,
or not a data recovery agent is allowed, the recovery options can be specified by the
configured user (including the recovery password and recovery key), and recovery
information isn't backed up to AD DS.

Reference: Choose how BitLocker-protected removable drives can


be recovered

This policy setting is applied when BitLocker is turned on.

The Allow data recovery agent check box is used to specify whether a data recovery
agent can be used with BitLocker-protected removable data drives. Before a data
recovery agent can be used, it must be added from Public Key Policies , which is
accessed using the GPMC or the Local Group Policy Editor.

In Configure user storage of BitLocker recovery information, select whether users can
be allowed, required, or not allowed to generate a 48-digit recovery password.
Select Omit recovery options from the BitLocker setup wizard to prevent users from
specifying recovery options when they enable BitLocker on a drive. This policy setting
means that which recovery option to use when BitLocker is enabled can't be specified.
Instead, BitLocker recovery options for the drive are determined by the policy setting.

In Save BitLocker recovery information to Active Directory Domain Services, choose


which BitLocker recovery information is to be stored in AD DS for removable data drives.
If Backup recovery password and key package is selected, the BitLocker recovery
password and the key package are stored in AD DS. If Backup recovery password only
is selected, only the recovery password is stored in AD DS.

Select the Do not enable BitLocker until recovery information is stored in AD DS for
removable data drives check box if users should be prevented from enabling BitLocker
unless the computer is connected to the domain and the backup of BitLocker recovery
information to AD DS succeeds.

7 Note

If the Do not enable BitLocker until recovery information is stored in AD DS for


fixed data drives check box is selected, a recovery password is automatically
generated.

Configure the pre-boot recovery message and URL


This policy setting is used to configure the entire recovery message and to replace the
existing URL that is displayed on the pre-boot recovery screen when the operating
system drive is locked.

Item Info

Policy With this policy setting, it can be configured the BitLocker recovery screen to
description display a customized message and URL.

Introduced Windows

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives > Configure pre-boot
recovery message and URL

Conflicts None

When enabled The customized message and URL are displayed on the pre-boot recovery
screen. If a custom recovery message and URL has been previously enabled
Item Info

and the message and URL need to be reverted back to the default message
and URL, the policy setting must be enabled and the Use default recovery
message and URL option selected.

When disabled If the setting hasn't been previously enabled, then the default pre-boot
or not recovery screen is displayed for BitLocker recovery. If the setting previously was
configured enabled and is later disabled, then the last message in Boot Configuration Data
(BCD) is displayed whether it was the default recovery message or the custom
message.

Reference: Configure the pre-boot recovery message and URL


Enabling the Configure the pre-boot recovery message and URL policy setting allows
customization of the default recovery screen message and URL to assist customers in
recovering their key.

Once the setting is enabled, three options are available:

If the Use default recovery message and URL option is selected, the default
BitLocker recovery message and URL will be displayed on the pre-boot recovery
screen.
If the Use custom recovery message option is selected, enter the custom message
in the Custom recovery message option text box. The message that is entered in
the Custom recovery message option text box is displayed on the pre-boot
recovery screen. If a recovery URL is available, include it in the message.
If the Use custom recovery URL option is selected, enter the custom message URL
in the Custom recovery URL option text box. The URL that is entered in the
Custom recovery URL option text box replaces the default URL in the default
recovery message, which is displayed on the pre-boot recovery screen.

) Important

Not all characters and languages are supported in the pre-boot environment. It is
strongly recommended to verify the correct appearance of the characters that are
used for the custom message and URL on the pre-boot recovery screen.

) Important

Because BCDEdit commands can be altered manually before Group Policy settings
have been set, the policy setting can't be returned to the default setting by
selecting the Not Configured option after this policy setting has been configured.
To return to the default pre-boot recovery screen leave the policy setting enabled
and select the Use default message options from the Choose an option for the
pre-boot recovery message drop-down list box.

Allow Secure Boot for integrity validation


This policy controls how BitLocker-enabled system volumes are handled with the Secure
Boot feature. Enabling this feature forces Secure Boot validation during the boot process
and verifies Boot Configuration Data (BCD) settings according to the Secure Boot policy.

Item Info

Policy With this policy setting, it can be configured whether Secure Boot will be
description allowed as the platform integrity provider for BitLocker operating system
drives.

Introduced Windows Server 2012 and Windows 8

Drive type All drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts If Allow Secure Boot for integrity validation is enabled, make sure the
Configure TPM platform validation profile for native UEFI firmware
configurations Group Policy setting isn't enabled, or include PCR 7 to allow
BitLocker to use Secure Boot for platform or BCD integrity validation.

For more information about PCR 7, see About the Platform Configuration
Register (PCR) in this article.

When enabled BitLocker uses Secure Boot for platform integrity if the platform is capable of
or not Secure Boot-based integrity validation.
configured

When disabled BitLocker uses legacy platform integrity validation, even on systems that are
capable of Secure Boot-based integrity validation.

Reference: Allow Secure Boot for integrity validation

Secure boot ensures that the computer's pre-boot environment loads only firmware that
is digitally signed by authorized software publishers. Secure boot also started providing
more flexibility for managing pre-boot configurations than BitLocker integrity checks
prior to Windows Server 2012 and Windows 8.
When this policy is enabled and the hardware is capable of using secure boot for
BitLocker scenarios, the Use enhanced Boot Configuration Data validation profile
group policy setting is ignored, and secure boot verifies BCD settings according to the
secure boot policy setting, which is configured separately from BitLocker.

2 Warning

Disabling this policy might result in BitLocker recovery when manufacturer-specific


firmware is updated. If this policy is disabled, suspend BitLocker prior to applying
firmware updates.

Provide the unique identifiers for your organization


This policy setting is used to establish an identifier that is applied to all drives that are
encrypted in an organization.

Item Info

Policy With this policy setting, unique organizational identifiers can be associated to
description a new drive that is enabled with BitLocker.

Introduced Windows Server 2008 R2 and Windows 7

Drive type All drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption

Conflicts Identification fields are required to manage certificate-based data recovery


agents on BitLocker-protected drives. BitLocker manages and updates
certificate-based data recovery agents only when the identification field is
present on a drive and it's identical to the value that is configured on the
computer.

When enabled The identification field on the BitLocker-protected drive and any allowed
identification field that is used by an organization can be configured.

When disabled The identification field isn't required.


or not
configured

Reference: Provide the unique identifiers for your organization


These identifiers are stored as the identification field and the allowed identification field.
The identification field allows association of a unique organizational identifier to
BitLocker-protected drives. This identifier is automatically added to new BitLocker-
protected drives, and it can be updated on existing BitLocker-protected drives by using
the Manage-bde command-line tool.

An identification field is required to manage certificate-based data recovery agents on


BitLocker-protected drives and for potential updates to the BitLocker To Go Reader.
BitLocker manages and updates data recovery agents only when the identification field
on the drive matches the value that is configured in the identification field. In a similar
manner, BitLocker updates the BitLocker To Go Reader only when the identification
field's value on the drive matches the value that is configured for the identification field.

For more information about the tool to manage BitLocker, see Manage-bde.

The allowed identification field is used in combination with the Deny write access to
removable drives not protected by BitLocker policy setting to help control the use of
removable drives in an organization. It's a comma-separated list of identification fields
from an internal organization or external organizations.

The identification fields on existing drives can be configured by using the Manage-bde
command-line tool.

When a BitLocker-protected drive is mounted on another BitLocker-enabled computer,


the identification field and the allowed identification field are used to determine
whether the drive is from an external organization.

Multiple values separated by commas can be entered in the identification and allowed
identification fields. The identification field can be any value upto 260 characters.

Prevent memory overwrite on restart


This policy setting is used to control whether the computer's memory will be overwritten
the next time the computer is restarted.

Item Info

Policy description With this policy setting, it can be controlled computer restart performance
at the risk of exposing BitLocker secrets.

Introduced Windows Vista

Drive type All drives

Policy path Computer Configuration > Administrative Templates > Windows


Components > BitLocker Drive Encryption
Item Info

Conflicts None

When enabled The computer won't overwrite memory when it restarts. Preventing
memory overwrite may improve restart performance, but it increases the
risk of exposing BitLocker secrets.

When disabled or BitLocker secrets are removed from memory when the computer restarts.
not configured

Reference: Prevent memory overwrite on restart


This policy setting is applied when BitLocker is turned on. BitLocker secrets include key
material that is used to encrypt data. This policy setting applies only when BitLocker
protection is enabled.

Configure TPM platform validation profile for BIOS-based


firmware configurations
This policy setting determines what values the TPM measures when it validates early
boot components before it unlocks an operating system drive on a computer with a
BIOS configuration or with UEFI firmware that has the Compatibility Support Module
(CSM) enabled.

Item Info

Policy With this policy setting, it can be configured how the computer's TPM security
description hardware secures the BitLocker encryption key.

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts None

When enabled The boot components that the TPM validates before unlocking access to the
BitLocker-encrypted operating system drive can be configured. If any of these
components change while BitLocker protection is in effect, then the TPM doesn't
release the encryption key to unlock the drive. Instead, the computer displays
the BitLocker Recovery console and requires that the recovery password or the
recovery key is provided to unlock the drive.
Item Info

When The TPM uses the default platform validation profile or the platform validation
disabled or profile that is specified by the setup script.
not
configured

Reference: Configure TPM platform validation profile for BIOS-


based firmware configurations

This policy setting doesn't apply if the computer doesn't have a compatible TPM or if
BitLocker has already been turned on with TPM protection.

) Important

This Group Policy setting only applies to computers with BIOS configurations or to
computers with UEFI firmware with the CSM enabled. Computers that use a native
UEFI firmware configuration store different values in the Platform Configuration
Registers (PCRs). Use the Configure TPM platform validation profile for native
UEFI firmware configurations Group Policy setting to configure the TPM PCR
profile for computers that use native UEFI firmware.

A platform validation profile consists of a set of PCR indices that range from 0 to 23. The
default platform validation profile secures the encryption key against changes to the
following PCRs:

Core Root of Trust of Measurement (CRTM), BIOS, and Platform Extensions (PCR 0)
Option ROM Code (PCR 2)
Master Boot Record (MBR) Code (PCR 4)
NTFS Boot Sector (PCR 8)
NTFS Boot Block (PCR 9)
Boot Manager (PCR 10)
BitLocker Access Control (PCR 11)

7 Note

Changing from the default platform validation profile affects the security and
manageability of a computer. BitLocker's sensitivity to platform modifications
(malicious or authorized) is increased or decreased depending on inclusion or
exclusion (respectively) of the PCRs.
The following list identifies all of the available PCRs:

PCR 0: Core root-of-trust for measurement, BIOS, and platform extensions


PCR 1: Platform and motherboard configuration and data.
PCR 2: Option ROM code
PCR 3: Option ROM data and configuration
PCR 4: Master Boot Record (MBR) code
PCR 5: Master Boot Record (MBR) partition table
PCR 6: State transition and wake events
PCR 7: Computer manufacturer-specific
PCR 8: NTFS boot sector
PCR 9: NTFS boot block
PCR 10: Boot manager
PCR 11: BitLocker access control
PCR 12-23: Reserved for future use

Configure TPM platform validation profile (Windows


Vista, Windows Server 2008, Windows 7, Windows Server
2008 R2)
This policy setting determines what values the TPM measures when it validates early
boot components before unlocking a drive on a computer running Windows Vista,
Windows Server 2008, or Windows 7.

Item Info

Policy With this policy setting, it can be configured how the computer's TPM security
description hardware secures the BitLocker encryption key.

Introduced Windows Server 2008 and Windows Vista

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts None

When enabled The boot components that the TPM validates before unlocking access to the
BitLocker-encrypted operating system drive can be configured. If any of these
components change while BitLocker protection is in effect, the TPM doesn't
release the encryption key to unlock the drive. Instead, the computer displays
the BitLocker Recovery console and requires that the recovery password or the
recovery key is provided to unlock the drive.
Item Info

When The TPM uses the default platform validation profile or the platform validation
disabled or profile that is specified by the setup script.
not
configured

Reference: Configure TPM platform validation profile (Windows


Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2)

This policy setting doesn't apply if the computer doesn't have a compatible TPM or if
BitLocker is already turned on with TPM protection.

A platform validation profile consists of a set of PCR indices that range from 0 to 23. The
default platform validation profile secures the encryption key against changes to the
following PCRs:

Core Root of Trust of Measurement (CRTM), BIOS, and Platform Extensions (PCR 0)
Option ROM Code (PCR 2)
Master Boot Record (MBR) Code (PCR 4)
NTFS Boot Sector (PCR 8)
NTFS Boot Block (PCR 9)
Boot Manager (PCR 10)
BitLocker Access Control (PCR 11)

7 Note

The default TPM validation profile PCR settings for computers that use an
Extensible Firmware Interface (EFI) are the PCRs 0, 2, 4, and 11 only.

The following list identifies all of the available PCRs:

PCR 0: Core root-of-trust for measurement, EFI boot and run-time services, EFI
drivers embedded in system ROM, ACPI static tables, embedded SMM code, and
BIOS code
PCR 1: Platform and motherboard configuration and data. Hand-off tables and EFI
variables that affect system configuration
PCR 2: Option ROM code
PCR 3: Option ROM data and configuration
PCR 4: Master Boot Record (MBR) code or code from other boot devices
PCR 5: Master Boot Record (MBR) partition table. Various EFI variables and the GPT
table
PCR 6: State transition and wake events
PCR 7: Computer manufacturer-specific
PCR 8: NTFS boot sector
PCR 9: NTFS boot block
PCR 10: Boot manager
PCR 11: BitLocker access control
PCR 12 - 23: Reserved for future use

2 Warning

Changing from the default platform validation profile affects the security and
manageability of a computer. BitLocker's sensitivity to platform modifications
(malicious or authorized) is increased or decreased depending on inclusion or
exclusion (respectively) of the PCRs.

Configure TPM platform validation profile for native UEFI


firmware configurations
This policy setting determines what values the TPM measures when it validates early
boot components before unlocking an operating system drive on a computer with
native UEFI firmware configurations.

Item Info

Policy With this policy setting, it can be configured how the computer's Trusted
description Platform Module (TPM) security hardware secures the BitLocker encryption key.

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts Setting this policy with PCR 7 omitted overrides the Allow Secure Boot for
integrity validation Group Policy setting, and it prevents BitLocker from using
Secure Boot for platform or Boot Configuration Data (BCD) integrity validation.

If an environment uses TPM and Secure Boot for platform integrity checks, this
policy is configured.

For more information about PCR 7, see About the Platform Configuration
Register (PCR) in this article.
Item Info

When Before BitLocker is turned on, the boot components that the TPM validates
enabled before it unlocks access to the BitLocker-encrypted operating system drive can
be configured. If any of these components change while BitLocker protection is
in effect, the TPM doesn't release the encryption key to unlock the drive. Instead,
the computer displays the BitLocker Recovery console and requires that the
recovery password or the recovery key is provided to unlock the drive.

When BitLocker uses the default platform validation profile or the platform validation
disabled or profile that is specified by the setup script.
not
configured

Reference: Configure TPM platform validation profile for native


UEFI firmware configurations

This policy setting doesn't apply if the computer doesn't have a compatible TPM or if
BitLocker is already turned on with TPM protection.

) Important

This group policy setting only applies to computers with a native UEFI firmware
configuration. Computers with BIOS or UEFI firmware with a Compatibility Support
Module (CSM) enabled store different values in the Platform Configuration
Registers (PCRs). Use the Configure TPM platform validation profile for BIOS-
based firmware configurations Group Policy setting to configure the TPM PCR
profile for computers with BIOS configurations or for computers with UEFI firmware
with a CSM enabled.

A platform validation profile consists of a set of PCR indices ranging from 0 to 23. The
default platform validation profile secures the encryption key against changes to the
core system firmware executable code (PCR 0), extended or pluggable executable code
(PCR 2), boot manager (PCR 4), and the BitLocker access control (PCR 11).

The following list identifies all of the available PCRs:

PCR 0: Core System Firmware executable code

PCR 1: Core System Firmware data

PCR 2: Extended or pluggable executable code

PCR 3: Extended or pluggable firmware data


PCR 4: Boot Manager

PCR 5: GPT/Partition Table

PCR 6: Resume from S4 and S5 Power State Events

PCR 7: Secure Boot State

For more information about this PCR, see About the Platform Configuration
Register (PCR) in this article.

PCR 8: Initialized to 0 with no Extends (reserved for future use)

PCR 9: Initialized to 0 with no Extends (reserved for future use)

PCR 10: Initialized to 0 with no Extends (reserved for future use)

PCR 11: BitLocker access control

PCR 12: Data events and highly volatile events

PCR 13: Boot Module Details

PCR 14: Boot Authorities

PCR 15 - 23: Reserved for future use

2 Warning

Changing from the default platform validation profile affects the security and
manageability of a computer. BitLocker's sensitivity to platform modifications
(malicious or authorized) is increased or decreased depending on inclusion or
exclusion (respectively) of the PCRs.

Reset platform validation data after BitLocker recovery


This policy setting determines if platform validation data should refresh when Windows
is started following a BitLocker recovery. A platform validation data profile consists of
the values in a set of Platform Configuration Register (PCR) indices that range from 0 to
23.

Item Info

Policy With this policy setting, it can be controlled whether platform validation data is
description refreshed when Windows is started following a BitLocker recovery.
Item Info

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts None

When enabled Platform validation data is refreshed when Windows is started following a
BitLocker recovery.

When disabled Platform validation data isn't refreshed when Windows is started following a
BitLocker recovery.

When not Platform validation data is refreshed when Windows is started following a
configured BitLocker recovery.

Reference: Reset platform validation data after BitLocker recovery


For more information about the recovery process, see the BitLocker recovery guide.

Use enhanced Boot Configuration Data validation profile


This policy setting determines specific Boot Configuration Data (BCD) settings to verify
during platform validation. A platform validation uses the data in the platform validation
profile, which consists of a set of Platform Configuration Register (PCR) indices that
range from 0 to 23.

Item Info

Policy With this policy setting, Boot Configuration Data (BCD) settings to verify during
description platform validation can be specified.

Introduced Windows Server 2012 and Windows 8

Drive type Operating system drives

Policy path Computer Configuration > Administrative Templates > Windows Components >
BitLocker Drive Encryption > Operating System Drives

Conflicts When BitLocker is using Secure Boot for platform and Boot Configuration Data
integrity validation, the Use enhanced Boot Configuration Data validation
profile Group Policy setting is ignored (as defined by the Allow Secure Boot for
integrity validation Group Policy setting).
Item Info

When Additional BCD settings can be added and specified BCD settings can be
enabled excluded. Also a customized BCD validation profile can be created by combining
inclusion and exclusion lists. The customized BCD validation profile gives the
ability to verify BCD settings.

When The computer reverts to a BCD profile validation similar to the default BCD
disabled profile that is used by Windows 7.

When not The computer verifies the default BCD settings in Windows.
configured

Reference: Use enhanced Boot Configuration Data validation


profile

7 Note

The setting that controls boot debugging (0x16000010) is always validated, and it
has no effect if it's included in the inclusion or the exclusion list.

Allow access to BitLocker-protected fixed data drives


from earlier versions of Windows
This policy setting is used to control whether access to drives is allowed by using the
BitLocker To Go Reader, and whether BitLocker To Go Reader can be installed on the
drive.

Item Info

Policy With this policy setting, it can be configured whether fixed data drives that
description are formatted with the FAT file system can be unlocked and viewed on
computers running Windows Vista, Windows XP with Service Pack 3 (SP3), or
Windows XP with Service Pack 2 (SP2).

Introduced Windows Server 2008 R2 and Windows 7

Drive type Fixed data drives

Policy path Computer Configuration > Administrative Templates > Windows Components
> BitLocker Drive Encryption > Fixed Data Drives

Conflicts None
Item Info

When enabled Fixed data drives that are formatted with the FAT file system can be unlocked
and When not on computers running Windows Server 2008, Windows Vista, Windows XP
configured with SP3, or Windows XP with SP2, and their content can be viewed. These
operating systems have Read-only access to BitLocker-protected drives.

When disabled Fixed data drives that are formatted with the FAT file system and are
BitLocker-protected can't be unlocked on computers running Windows Vista,
Windows XP with SP3, or Windows XP with SP2. BitLocker To Go Reader
(bitlockertogo.exe) isn't installed.

Reference: Allow access to BitLocker-protected fixed data drives


from earlier versions of Windows

7 Note

This policy setting doesn't apply to drives that are formatted with the NTFS file
system.

When this policy setting is enabled, select the Do not install BitLocker To Go Reader on
FAT formatted fixed drives check box to help prevent users from running BitLocker To
Go Reader from their fixed drives. If BitLocker To Go Reader (bitlockertogo.exe) is
present on a drive that doesn't have an identification field specified, or if the drive has
the same identification field as specified in the Provide unique identifiers for your
organization policy setting, the user is prompted to update BitLocker, and BitLocker To
Go Reader is deleted from the drive. In this situation, for the fixed drive to be unlocked
on computers running Windows Vista, Windows XP with SP3, or Windows XP with SP2,
BitLocker To Go Reader must be installed on the computer. If this check box isn't
selected, then BitLocker To Go Reader will be installed on the fixed drive to enable users
to unlock the drive on computers running Windows Vista, Windows XP with SP3, or
Windows XP with SP2.

Allow access to BitLocker-protected removable data


drives from earlier versions of Windows
This policy setting controls access to removable data drives that are using the BitLocker
To Go Reader and whether the BitLocker To Go Reader can be installed on the drive.
Item Info

Policy description With this policy setting, it can be configured whether removable data drives
that are formatted with the FAT file system can be unlocked and viewed on
computers running Windows Vista, Windows XP with SP3, or Windows XP
with SP2.

Introduced Windows Server 2008 R2 and Windows 7

Drive type Removable data drives

Policy path Computer Configuration > Administrative Templates > Windows Components
> BitLocker Drive Encryption > Removable Data Drives

Conflicts None

When enabled Removable data drives that are formatted with the FAT file system can be
and When not unlocked on computers running Windows Vista, Windows XP with SP3, or
configured Windows XP with SP2, and their content can be viewed. These operating
systems have Read-only access to BitLocker-protected drives.

When disabled Removable data drives that are formatted with the FAT file system that are
BitLocker-protected can't be unlocked on computers running Windows Vista,
Windows XP with SP3, or Windows XP with SP2. BitLocker To Go Reader
(bitlockertogo.exe) isn't installed.

Reference: Allow access to BitLocker-protected removable data


drives from earlier versions of Windows

7 Note

This policy setting doesn't apply to drives that are formatted with the NTFS file
system.

When this policy setting is enabled, select the Do not install BitLocker To Go Reader on
FAT formatted removable drives check box to help prevent users from running
BitLocker To Go Reader from their removable drives. If BitLocker To Go Reader
(bitlockertogo.exe) is present on a drive that doesn't have an identification field
specified, or if the drive has the same identification field as specified in the Provide
unique identifiers for your organization policy setting, the user will be prompted to
update BitLocker, and BitLocker To Go Reader is deleted from the drive. In this situation,
for the removable drive to be unlocked on computers running Windows Vista, Windows
XP with SP3, or Windows XP with SP2, BitLocker To Go Reader must be installed on the
computer. If this check box isn't selected, then BitLocker To Go Reader will be installed
on the removable drive to enable users to unlock the drive on computers running
Windows Vista or Windows XP that don't have BitLocker To Go Reader installed.

FIPS setting
The Federal Information Processing Standard (FIPS) setting for FIPS compliance can be
configured. As an effect of FIPS compliance, users can't create or save a BitLocker
password for recovery or as a key protector. The use of a recovery key is permitted.

Item Info

Policy description Notes

Introduced Windows Server 2003 with SP1

Drive type System-wide

Policy path Local Policies > Security Options > System cryptography: Use FIPS compliant
algorithms for encryption, hashing, and signing

Conflicts Some applications, such as Terminal Services, don't support FIPS-140 on all
operating systems.

When enabled Users will be unable to save a recovery password to any location. This policy
setting includes AD DS and network folders. Also, WMI or the BitLocker Drive
Encryption Setup wizard can't be used to create a recovery password.

When disabled or No BitLocker encryption key is generated


not configured

Reference: FIPS setting


This policy must be enabled before any encryption key is generated for BitLocker. When
this policy is enabled, BitLocker prevents creating or using recovery passwords, so
recovery keys should be used instead.

The optional recovery key can be saved to a USB drive. Because recovery passwords
can't be saved to AD DS when FIPS is enabled, an error is caused if AD DS backup is
required by Group Policy.

The FIPS setting can be edited by using the Security Policy Editor ( Secpol.msc ) or by
editing the Windows registry. Only administrators can perform these procedures.

For more information about setting this policy, see System cryptography: Use FIPS
compliant algorithms for encryption, hashing, and signing.
Power management group policy settings:
Sleep and Hibernate
PCs default power settings for a computer will cause the computer to enter Sleep mode
frequently to conserve power when idle and to help extend the system's battery life.
When a computer transitions to Sleep, open programs and documents are persisted in
memory. When a computer resumes from Sleep, users aren't required to reauthenticate
with a PIN or USB startup key to access encrypted data. Not needing to reauthenticate
when resuming from Sleep might lead to conditions where data security is
compromised.

However, when a computer hibernates the drive is locked, and when it resumes from
hibernation the drive is unlocked, which means that users will need to provide a PIN or a
startup key if using multifactor authentication with BitLocker. Therefore, organizations
that use BitLocker may want to use Hibernate instead of Sleep for improved security.
This setting doesn't have an impact on TPM-only mode, because it provides a
transparent user experience at startup and when resuming from the Hibernate states.

To disable all available sleep states, disable the Group Policy settings located in
Computer Configuration > Administrative Templates > System > Power Management
:

Allow Standby States (S1-S3) When Sleeping (Plugged In)


Allow Standby States (S1-S3) When Sleeping (Battery)

About the Platform Configuration Register


(PCR)
A platform validation profile consists of a set of PCR indices that range from 0 to 23. The
scope of the values can be specific to the version of the operating system.

Changing from the default platform validation profile affects the security and
manageability of a computer. BitLocker's sensitivity to platform modifications (malicious
or authorized) is increased or decreased depending on inclusion or exclusion
(respectively) of the PCRs.

About PCR 7
PCR 7 measures the state of Secure Boot. With PCR 7, BitLocker can use Secure Boot for
integrity validation. Secure Boot ensures that the computer's preboot environment loads
only firmware that is digitally signed by authorized software publishers. PCR 7
measurements indicate whether Secure Boot is on and which keys are trusted on the
platform. If Secure Boot is on and the firmware measures PCR 7 correctly per the UEFI
specification, BitLocker can bind to this information rather than to PCRs 0, 2, and 4,
which have the measurements of the exact firmware and Bootmgr images loaded. This
process reduces the likelihood of BitLocker starting in recovery mode as a result of
firmware and image updates, and it provides with greater flexibility to manage the
preboot configuration.

PCR 7 measurements must follow the guidance that is described in Appendix A Trusted
Execution Environment EFI Protocol.

PCR 7 measurements are a mandatory logo requirement for systems that support
Modern Standby (also known as Always On, Always Connected PCs), such as the
Microsoft Surface RT. On such systems, if the TPM with PCR 7 measurement and secure
boot are correctly configured, BitLocker binds to PCR 7 and PCR 11 by default.

Related articles
Trusted Platform Module
TPM Group Policy settings
BitLocker frequently asked questions (FAQ)
BitLocker overview
Prepare your organization for BitLocker: Planning and policies
Boot Configuration Data settings and
BitLocker
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article for IT professionals describes the Boot Configuration Data (BCD) settings that
are used by BitLocker.

When protecting data at rest on an operating system volume, during the boot process
BitLocker verifies that the security sensitive BCD settings haven't changed since
BitLocker was last enabled, resumed, or recovered.

BitLocker and BCD Settings


In Windows 7 and Windows Server 2008 R2, BitLocker validated BCD settings with the
winload, winresume, and memtest prefixes to a large degree. However, this high degree
of validation caused BitLocker to go into recovery mode for benign setting changes, for
example, when applying a language pack, BitLocker would enter recovery mode.

In Windows 8, Windows Server 2012, and later operating systems, BitLocker narrows the
set of BCD settings validated to reduce the chance of benign changes causing a BCD
validation problem. If it's believed that there's a risk in excluding a particular BCD setting
from the validation profile, include that BCD setting in the BCD validation coverage to
suit the preferences for validation. If a default BCD setting is found to persistently
trigger a recovery for benign changes, exclude that BCD setting from the validation
coverage.

When secure boot is enabled


Computers with UEFI firmware can use secure boot to provide enhanced boot security.
When BitLocker is able to use secure boot for platform and BCD integrity validation, as
defined by the Allow Secure Boot for integrity validation group policy setting, the Use
enhanced Boot Configuration Data validation profile group policy is ignored.

One of the benefits of using secure boot is that it can correct BCD settings during boot
without triggering recovery events. Secure boot enforces the same BCD settings as
BitLocker. Secure boot BCD enforcement isn't configurable from within the operating
system.
Customizing BCD validation settings
To modify the BCD settings that are validated by BitLocker, the administrator will add or
exclude BCD settings from the platform validation profile by enabling and configuring
the Use enhanced Boot Configuration Data validation profile group policy setting.

For the purposes of BitLocker validation, BCD settings are associated with a specific set
of Microsoft boot applications. These BCD settings can also be applied to the other
Microsoft boot applications that aren't part of the set to which the BCD settings are
already applicable for. This setting can be done by attaching any of the following
prefixes to the BCD settings that are being entered in the group policy settings dialog:

winload
winresume
memtest
all of the above

All BCD settings are specified by combining the prefix value with either a hexadecimal
(hex) value or a "friendly name."

The BCD setting hex value is reported when BitLocker enters recovery mode and is
stored in the event log (event ID 523). The hex value uniquely identifies the BCD setting
that caused the recovery event.

You can quickly obtain the friendly name for the BCD settings on a computer by using
the command bcdedit.exe /enum all .

Not all BCD settings have friendly names; for those settings without a friendly name, the
hex value is the only way to configure an exclusion policy.

When specifying BCD values in the Use enhanced Boot Configuration Data validation
profile group policy setting, use the following syntax:

Prefix the setting with the boot application prefix


Append a colon :
Append either the hex value or the friendly name
If entering more than one BCD setting, each BCD setting will need to be entered
on a new line

For example, either " winload:hypervisordebugport " or " winload:0x250000f4 " yields the
same value.

A setting that applies to all boot applications may be applied only to an individual
application. However, the reverse isn't true. For example, one can specify either
" all:locale " or " winresume:locale ", but as the BCD setting " win-pe " doesn't apply to
all boot applications, " winload:winpe " is valid, but " all:winpe " isn't valid. The setting
that controls boot debugging (" bootdebug " or 0x16000010) will always be validated and
will have no effect if it's included in the provided fields.

7 Note

Take care when configuring BCD entries in the Group Policy setting. The Local
Group Policy Editor does not validate the correctness of the BCD entry. BitLocker
will fail to be enabled if the Group Policy setting specified is invalid.

Default BCD validation profile


The following table contains the default BCD validation profile used by BitLocker in
Windows 8, Windows Server 2012, and subsequent versions:

Hex Value Prefix Friendly Name

0x11000001 all device

0x12000002 all path

0x12000030 all loadoptions

0x16000010 all bootdebug

0x16000040 all advancedoptions

0x16000041 all optionsedit

0x16000048 all nointegritychecks

0x16000049 all testsigning

0x16000060 all isolatedcontext

0x1600007b all forcefipscrypto

0x22000002 winload systemroot

0x22000011 winload kernel

0x22000012 winload hal

0x22000053 winload evstore

0x25000020 winload nx
Hex Value Prefix Friendly Name

0x25000052 winload restrictapiccluster

0x26000022 winload winpe

0x26000025 winload lastknowngood

0x26000081 winload safebootalternateshell

0x260000a0 winload debug

0x260000f2 winload hypervisordebug

0x26000116 winload hypervisorusevapic

0x21000001 winresume filedevice

0x22000002 winresume filepath

0x26000006 winresume debugoptionenabled

Full list of friendly names for ignored BCD settings


The following list is a full list of BCD settings with friendly names, which are ignored by
default. These settings aren't part of the default BitLocker validation profile, but can be
added if you see a need to validate any of these settings before allowing a BitLocker-
protected operating system drive to be unlocked.

7 Note

Additional BCD settings exist that have hex values but do not have friendly names.
These settings are not included in this list.

Hex Value Prefix Friendly Name

0x12000004 all description

0x12000005 all locale

0x12000016 all targetname

0x12000019 all busparams

0x1200001d all key

0x1200004a all fontpath


Hex Value Prefix Friendly Name

0x14000006 all inherit

0x14000008 all recoverysequence

0x15000007 all truncatememory

0x1500000c all firstmegabytepolicy

0x1500000d all relocatephysical

0x1500000e all avoidlowmemory

0x15000011 all debugtype

0x15000012 all debugaddress

0x15000013 all debugport

0x15000014 all baudrate

0x15000015 all channel

0x15000018 all debugstart

0x1500001a all hostip

0x1500001b all port

0x15000022 all emsport

0x15000023 all emsbaudrate

0x15000042 all keyringaddress

0x15000047 all configaccesspolicy

0x1500004b all integrityservices

0x1500004c all volumebandid

0x15000051 all initialconsoleinput

0x15000052 all graphicsresolution

0x15000065 all displaymessage

0x15000066 all displaymessageoverride

0x15000081 all logcontrol

0x16000009 all recoveryenabled


Hex Value Prefix Friendly Name

0x1600000b all badmemoryaccess

0x1600000f all traditionalkseg

0x16000017 all noumex

0x1600001c all dhcp

0x1600001e all vm

0x16000020 all bootems

0x16000046 all graphicsmodedisabled

0x16000050 all extendedinput

0x16000053 all restartonfailure

0x16000054 all highestmode

0x1600006c all bootuxdisabled

0x16000072 all nokeyboard

0x16000074 all bootshutdowndisabled

0x1700000a all badmemorylist

0x17000077 all allowedinmemorysettings

0x22000040 all fverecoveryurl

0x22000041 all fverecoverymessage

0x31000003 all ramdisksdidevice

0x32000004 all ramdisksdipath

0x35000001 all ramdiskimageoffset

0x35000002 all ramdisktftpclientport

0x35000005 all ramdiskimagelength

0x35000007 all ramdisktftpblocksize

0x35000008 all ramdisktftpwindowsize

0x36000006 all exportascd

0x36000009 all ramdiskmcenabled


Hex Value Prefix Friendly Name

0x3600000a all ramdiskmctftpfallback

0x3600000b all ramdisktftpvarwindow

0x21000001 winload osdevice

0x22000013 winload dbgtransport

0x220000f9 winload hypervisorbusparams

0x22000110 winload hypervisorusekey

0x23000003 winload resumeobject

0x25000021 winload pae

0x25000031 winload removememory

0x25000032 winload increaseuserva

0x25000033 winload perfmem

0x25000050 winload clustermodeaddressing

0x25000055 winload x2apicpolicy

0x25000061 winload numproc

0x25000063 winload configflags

0x25000066 winload groupsize

0x25000071 winload msi

0x25000072 winload pciexpress

0x25000080 winload safeboot

0x250000a6 winload tscsyncpolicy

0x250000c1 winload driverloadfailurepolicy

0x250000c2 winload bootmenupolicy

0x250000e0 winload bootstatuspolicy

0x250000f0 winload hypervisorlaunchtype

0x250000f3 winload hypervisordebugtype

0x250000f4 winload hypervisordebugport


Hex Value Prefix Friendly Name

0x250000f5 winload hypervisorbaudrate

0x250000f6 winload hypervisorchannel

0x250000f7 winload bootux

0x250000fa winload hypervisornumproc

0x250000fb winload hypervisorrootprocpernode

0x250000fd winload hypervisorhostip

0x250000fe winload hypervisorhostport

0x25000100 winload tpmbootentropy

0x25000113 winload hypervisorrootproc

0x25000115 winload hypervisoriommupolicy

0x25000120 winload xsavepolicy

0x25000121 winload xsaveaddfeature0

0x25000122 winload xsaveaddfeature1

0x25000123 winload xsaveaddfeature2

0x25000124 winload xsaveaddfeature3

0x25000125 winload xsaveaddfeature4

0x25000126 winload xsaveaddfeature5

0x25000127 winload xsaveaddfeature6

0x25000128 winload xsaveaddfeature7

0x25000129 winload xsaveremovefeature

0x2500012a winload xsaveprocessorsmask

0x2500012b winload xsavedisable

0x25000130 winload claimedtpmcounter

0x26000004 winload stampdisks

0x26000010 winload detecthal

0x26000024 winload nocrashautoreboot


Hex Value Prefix Friendly Name

0x26000030 winload nolowmem

0x26000040 winload vga

0x26000041 winload quietboot

0x26000042 winload novesa

0x26000043 winload novga

0x26000051 winload usephysicaldestination

0x26000054 winload uselegacyapicmode

0x26000060 winload onecpu

0x26000062 winload maxproc

0x26000064 winload maxgroup

0x26000065 winload groupaware

0x26000070 winload usefirmwarepcisettings

0x26000090 winload bootlog

0x26000091 winload sos

0x260000a1 winload halbreakpoint

0x260000a2 winload useplatformclock

0x260000a3 winload forcelegacyplatform

0x260000a4 winload useplatformtick

0x260000a5 winload disabledynamictick

0x260000b0 winload ems

0x260000c3 winload onetimeadvancedoptions

0x260000c4 winload onetimeoptionsedit

0x260000e1 winload disableelamdrivers

0x260000f8 winload hypervisordisableslat

0x260000fc winload hypervisoruselargevtlb

0x26000114 winload hypervisordhcp


Hex Value Prefix Friendly Name

0x21000005 winresume associatedosdevice

0x25000007 winresume bootux

0x25000008 winresume bootmenupolicy

0x26000003 winresume customsettings

0x26000004 winresume pae

0x25000001 memtest passcount

0x25000002 memtest testmix

0x25000005 memtest stridefailcount

0x25000006 memtest invcfailcount

0x25000007 memtest matsfailcount

0x25000008 memtest randfailcount

0x25000009 memtest chckrfailcount

0x26000003 memtest cacheenable

0x26000004 memtest failuresenabled


BitLocker FAQ
FAQ •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Learn more about BitLocker by reviewing the frequently asked questions.

Overview and requirements


How does BitLocker work?
How BitLocker works with operating system drives

BitLocker Can be used to mitigate unauthorized data access on lost or stolen computers
by encrypting all user files and system files on the operating system drive, including the
swap files and hibernation files, and checking the integrity of early boot components
and boot configuration data.

How BitLocker works with fixed and removable data drives

BitLocker can be used to encrypt the entire contents of a data drive. Group Policy can be
used to require BitLocker be enabled on a drive before the computer can write data to
the drive. BitLocker can be configured with various unlock methods for data drives, and
a data drive supports multiple unlock methods.

Does BitLocker support multifactor


authentication?
Yes, BitLocker supports multifactor authentication for operating system drives. If
BitLocker is enabled on a computer that has a TPM version 1.2 or later, additional forms
of authentication can be used with the TPM protection.

What are the BitLocker hardware and software


requirements?
For requirements, see System requirements.

7 Note
Dynamic disks aren't supported by BitLocker. Dynamic data volumes won't be
displayed in the Control Panel. Although the operating system volume will always
be displayed in the Control Panel, regardless of whether it's a Dynamic disk, if it's a
dynamic disk it can't be protected by BitLocker.

Why are two partitions required? Why does the


system drive have to be so large?
Two partitions are required to run BitLocker because pre-startup authentication and
system integrity verification must occur on a separate partition from the encrypted
operating system drive. This configuration helps protect the operating system and the
information in the encrypted drive.

Which Trusted Platform Modules (TPMs) does


BitLocker support?
BitLocker supports TPM version 1.2 or higher. BitLocker support for TPM 2.0 requires
Unified Extensible Firmware Interface (UEFI) for the device.

7 Note

TPM 2.0 isn't supported in Legacy and CSM Modes of the BIOS. Devices with TPM
2.0 must have their BIOS mode configured as Native UEFI only. The Legacy and
Compatibility Support Module (CSM) options must be disabled. For added security,
enable the Secure Boot feature.

Installed Operating System on hardware in legacy mode will stop the OS from
booting when the BIOS mode is changed to UEFI. Use the tool MBR2GPT before
changing the BIOS mode that will prepare the OS and the disk to support UEFI.

How can I tell if a computer has a TPM?


Beginning with Windows 10, version 1803, the TPM status can be checked in Windows
Defender Security Center > Device Security > Security processor details. In previous
versions of Windows, open the TPM MMC console (tpm.msc) and look under the Status
heading. Get-TPM** can also be run in PowerShell to get more details about the TPM on
the current computer.
Can I use BitLocker on an operating system drive
without a TPM?
Yes, BitLocker can be enabled on an operating system drive without a TPM version 1.2 or
higher, if the BIOS or UEFI firmware has the ability to read from a USB flash drive in the
boot environment. BitLocker won't unlock the protected drive until BitLocker's own
volume master key is first released by either the computer's TPM or by a USB flash drive
containing the BitLocker startup key for that computer. However, computers without
TPMs won't be able to use the system integrity verification that BitLocker can also
provide. To help determine whether a computer can read from a USB device during the
boot process, use the BitLocker system check as part of the BitLocker setup process. This
system check performs tests to confirm that the computer can properly read from the
USB devices at the appropriate time and that the computer meets other BitLocker
requirements.

How do I obtain BIOS support for the TPM on


my computer?
Contact the computer manufacturer to request a Trusted Computing Group (TCG)-
compliant BIOS or UEFI boot firmware that meets the following requirements:

It's compliant with the TCG standards for a client computer.


It has a secure update mechanism to help prevent a malicious BIOS or boot
firmware from being installed on the computer.

What credentials are required to use BitLocker?


To turn on, turn off, or change configurations of BitLocker on operating system and fixed
data drives, membership in the local Administrators group is required. Standard users
can turn on, turn off, or change configurations of BitLocker on removable data drives.

What is the recommended boot order for


computers that are going to be BitLocker-
protected?
The computer's startup options should be configured to have the hard disk drive first in
the boot order, before any other drives such as CD/DVD drives or USB drives. If the hard
disk isn't first and the computer typically boots from the hard disk, then a boot order
change may be detected or assumed when removable media is found during boot. The
boot order typically affects the system measurement that is verified by BitLocker and a
change in boot order will cause a prompt for the BitLocker recovery key. For the same
reason, if a laptop is used with a docking station, ensure that the hard disk drive is first
in the boot order both when the laptop is docked and undocked.

BitLocker and Windows upgrade


Can I upgrade to Windows 10 with BitLocker
enabled?
Yes.

What is the difference between suspending and


decrypting BitLocker?
Decrypt completely removes BitLocker protection and fully decrypts the drive.

Suspend keeps the data encrypted but encrypts the BitLocker volume master key with a
clear key. The clear key is a cryptographic key stored unencrypted and unprotected on
the disk drive. By storing this key unencrypted, the Suspend option allows for changes
or upgrades to the computer without the time and cost of decrypting and re-encrypting
the entire drive. After the changes are made and BitLocker is again enabled, BitLocker
will reseal the encryption key to the new values of the measured components that
changed as a part of the upgrade, the volume master key is changed, the protectors are
updated to match and the clear key is erased.

Do I have to suspend BitLocker protection to


download and install system updates and
upgrades?
No user action is required for BitLocker in order to apply updates from Microsoft,
including Windows quality updates and feature updates. Users need to suspend
BitLocker for Non-Microsoft software updates, such as:

Some TPM firmware updates if these updates clear the TPM outside of the
Windows API. Not every TPM firmware update will clear the TPM. Users don't have
to suspend BitLocker if the TPM firmware update uses Windows API to clear the
TPM because in this case, BitLocker will be automatically suspended. It's
recommended that users test their TPM firmware updates if they don't want to
suspend BitLocker protection.
Non-Microsoft application updates that modify the UEFI\BIOS configuration.
Manual or third-party updates to secure boot databases (only if BitLocker uses
Secure Boot for integrity validation).
Updates to UEFI\BIOS firmware, installation of additional UEFI drivers, or UEFI
applications without using the Windows update mechanism (only if BitLocker
doesn't use Secure Boot for integrity validation during updates).
BitLocker can be checked if it uses Secure Boot for integrity validation with the
command line manage-bde.exe -protectors -get C: . If Secure Boot for integrity
validation is being used, it will be report Uses Secure Boot for integrity validation.

7 Note

If BitLocker has been suspended, BitLocker protection can be resumed after the
upgrade or update has been installed. Upon resuming protection, BitLocker will
reseal the encryption key to the new values of the measured components that
changed as a part of the upgrade or update. If these types of upgrades or updates
are applied without suspending BitLocker, the computer will enter recovery mode
when restarting and will require a recovery key or password to access the
computer.

Deployment and administration


Can BitLocker deployment be automated in an
enterprise environment?
Yes, the deployment and configuration of both BitLocker and the TPM can be
automated using either WMI or Windows PowerShell scripts. Which method is chosen to
implement the automation depends on the environment. Manage-bde.exe can also be
used to locally or remotely configure BitLocker. For more info about writing scripts that
use the BitLocker WMI providers, see BitLocker Drive Encryption Provider. For more info
about using Windows PowerShell cmdlets with BitLocker Drive Encryption, see BitLocker
Cmdlets in Windows PowerShell.

Can BitLocker encrypt more than just the


operating system drive?
Yes.

Is there a noticeable performance impact when


BitLocker is enabled on a computer?
Typically, there's a small performance overhead, often in single-digit percentages, which
is relative to the throughput of the storage operations on which it needs to operate.

How long will initial encryption take when


BitLocker is turned on?
Although BitLocker encryption occurs in the background while a user continues to work
with the system remaining usable, encryption times vary depending on the type of drive
that is being encrypted, the size of the drive, and the speed of the drive. If encrypting
large drives, encryption may want to be scheduled during times when the drive isn't
being used.

When BitLocker is enabled, BitLocker can also be set to encrypt the entire drive or just
the used space on the drive. On a new hard drive, encrypting just the used spaced can
be considerably faster than encrypting the entire drive. When this encryption option is
selected, BitLocker automatically encrypts data as it is saved, ensuring that no data is
stored unencrypted.

What happens if the computer is turned off


during encryption or decryption?
If the computer is turned off or goes into hibernation, the BitLocker encryption and
decryption process will resume where it stopped the next time Windows starts. BitLocker
resuming encryption or decryption is true even if the power is suddenly unavailable.

Does BitLocker encrypt and decrypt the entire


drive all at once when reading and writing data?
No, BitLocker doesn't encrypt and decrypt the entire drive when reading and writing
data. The encrypted sectors in the BitLocker-protected drive are decrypted only as
they're requested from system read operations. Blocks that are written to the drive are
encrypted before the system writes them to the physical disk. No unencrypted data is
ever stored on a BitLocker-protected drive.
How can I prevent users on a network from
storing data on an unencrypted drive?
Group Policy settings can be configured to require that data drives be BitLocker-
protected before a BitLocker-protected computer can write data to them. For more info,
see BitLocker Group Policy settings. When these policy settings are enabled, the
BitLocker-protected operating system will mount any data drives that aren't protected
by BitLocker as read-only.

What is Used Disk Space Only encryption?


BitLocker in Windows 10 lets users choose to encrypt just their data. Although it's not
the most secure way to encrypt a drive, this option can reduce encryption time by more
than 99 percent, depending on how much data that needs to be encrypted. For more
information, see Used Disk Space Only encryption.

What system changes would cause the integrity


check on my operating system drive to fail?
The following types of system changes can cause an integrity check failure and prevent
the TPM from releasing the BitLocker key to decrypt the protected operating system
drive:

Moving the BitLocker-protected drive into a new computer.


Installing a new motherboard with a new TPM.
Turning off, disabling, or clearing the TPM.
Changing any boot configuration settings.
Changing the BIOS, UEFI firmware, master boot record, boot sector, boot manager,
option ROM, or other early boot components or boot configuration data.

What causes BitLocker to start into recovery


mode when attempting to start the operating
system drive?
Because BitLocker is designed to protect computers from numerous attacks, there are
numerous reasons why BitLocker could start in recovery mode. For example:

Changing the BIOS boot order to boot another drive in advance of the hard drive.
Adding or removing hardware, such as inserting a new card in the computer.
Removing, inserting, or completely depleting the charge on a smart battery on a
portable computer.

In BitLocker, recovery consists of decrypting a copy of the volume master key using
either a recovery key stored on a USB flash drive or a cryptographic key derived from a
recovery password. The TPM isn't involved in any recovery scenarios, so recovery is still
possible if the TPM fails boot component validation, malfunctions, or is removed.

What can prevent BitLocker from binding to PCR


7?
BitLocker can be prevented from binding to PCR 7 if a non-Windows OS booted prior to
Windows, or if Secure Boot isn't available to the device, either because it has been
disabled or the hardware doesn't support it.

Can I swap hard disks on the same computer if


BitLocker is enabled on the operating system
drive?
Yes, multiple hard disks can be swapped on the same computer if BitLocker is enabled,
but only if the hard disks were BitLocker-protected on the same computer. The BitLocker
keys are unique to the TPM and the operating system drive. If a backup operating
system or data drive needs to be prepared in case of a disk failure, make sure that they
were matched with the correct TPM. Different hard drives can also be configured for
different operating systems and then enable BitLocker on each one with different
authentication methods (such as one with TPM-only and one with TPM+PIN) without
any conflicts.

Can I access my BitLocker-protected drive if I


insert the hard disk into a different computer?
Yes, if the drive is a data drive, it can be unlocked from the BitLocker Drive Encryption
Control Panel item by using a password or smart card. If the data drive was configured
for automatic unlock only, it will need to be unlocked by using the recovery key. The
encrypted hard disk can be unlocked by a data recovery agent (if one was configured) or
it can be unlocked by using the recovery key.
Why is **Turn BitLocker on** not available when
I right-click a drive?
Some drives can't be encrypted with BitLocker. Reasons a drive can't be encrypted
include insufficient disk size, an incompatible file system, if the drive is a dynamic disk,
or a drive is designated as the system partition. By default, the system drive (or system
partition) is hidden from display. However, if it isn't created as a hidden drive when the
operating system was installed due to a custom installation process, that drive might be
displayed but can't be encrypted.

What type of disk configurations are supported


by BitLocker?
Any number of internal, fixed data drives can be protected with BitLocker. On some
versions ATA and SATA-based, direct-attached storage devices are also supported.

Key Management
How can I authenticate or unlock my removable
data drive?
Removable data drives can be unlocked using a password or a smart card. An SID
protector can also be configured to unlock a drive by using user domain credentials.
After encryption has started, the drive can also be automatically unlocked on a specific
computer for a specific user account. System administrators can configure which options
are available for users including password complexity and minimum length
requirements. To unlock by using a SID protector, use manage-bde.exe :

Windows Command Prompt

Manage-bde.exe -protectors -add e: -sid <i>domain\username</i></code>

What is the difference between a recovery


password, recovery key, PIN, enhanced PIN, and
startup key?
For tables that list and describe elements such as a recovery password, recovery key, and
PIN, see BitLocker key protectors and BitLocker authentication methods.
How can the recovery password and recovery
key be stored?
The recovery password and recovery key for an operating system drive or a fixed data
drive can be saved to a folder, saved to one or more USB devices, saved to a Microsoft
Account, or printed.

For removable data drives, the recovery password and recovery key can be saved to a
folder, saved to a Microsoft Account, or printed. By default, a recovery key for a
removable drive can't be stored on a removable drive.

A domain administrator can also configure Group Policy to automatically generate


recovery passwords and store them in Active Directory Domain Services (AD DS) for any
BitLocker-protected drive.

Is it possible to add an additional method of


authentication without decrypting the drive if I
only have the TPM authentication method
enabled?
The Manage-bde.exe command-line tool can be used to replace TPM-only authentication
mode with a multifactor authentication mode. For example, if BitLocker is enabled with
TPM authentication only and PIN authentication needs to be added, use the following
commands from an elevated command prompt, replacing 4-20 digit numeric PIN with
the desired numeric PIN:

Windows Command Prompt

manage-bde.exe -protectors -delete %systemdrive% -type tpm

manage-bde.exe -protectors -add %systemdrive% -tpmandpin <4-20 digit numeric


PIN>

When should an additional method of


authentication be considered?
New hardware that meets Windows Hardware Compatibility Program requirements
make a PIN less critical as a mitigation, and having a TPM-only protector is likely
sufficient when combined with policies like device lockout. For example, Surface Pro and
Surface Book don't have external DMA ports to attack. For older hardware, where a PIN
may be needed, it's recommended to enable enhanced PINs that allow non-numeric
characters such as letters and punctuation marks, and to set the PIN length based on
the risk tolerance and the hardware anti-hammering capabilities available to the TPMs
on the computers.

If I lose my recovery information, will the


BitLocker-protected data be unrecoverable?
BitLocker is designed to make the encrypted drive unrecoverable without the required
authentication. When in recovery mode, the user needs the recovery password or
recovery key to unlock the encrypted drive.

) Important

Store the recovery information in AD DS, along with in a Microsoft Account, or


another safe location.

Can the USB flash drive that is used as the


startup key also be used to store the recovery
key?
While using a USB flash drive as both the startup key and for storage of the recovery key
is technically possible, it isn't a best practice to use one USB flash drive to store both
keys. If the USB flash drive that contains the startup key is lost or stolen, the recovery
key will also be lost. In addition, inserting this key would cause the computer to
automatically boot from the recovery key even if TPM-measured files have changed,
which circumvents the TPM's system integrity check.

Can I save the startup key on multiple USB flash


drives?
Yes, computer's startup key can be saved on multiple USB flash drives. Right-clicking a
BitLocker-protected drive and selecting Manage BitLocker will provide the options to
save the recovery keys on additional USB flash drives as needed.

Can I save multiple (different) startup keys on


the same USB flash drive?
Yes, BitLocker startup keys for different computers can be saved on the same USB flash
drive.

Can I generate multiple (different) startup keys


for the same computer?
Generating different startup keys for the same computer can be done through scripting.
However, for computers that have a TPM, creating different startup keys prevents
BitLocker from using the TPM's system integrity check.

Can I generate multiple PIN combinations?


Generating multiple PIN combinations can't be done.

What encryption keys are used in BitLocker?


How do they work together?
Raw data is encrypted with the full volume encryption key, which is then encrypted with
the volume master key. The volume master key is in turn encrypted by one of several
possible methods depending on the authentication (that is, key protectors or TPM) and
recovery scenarios.

Where are the encryption keys stored?


The full volume encryption key is encrypted by the volume master key and stored in the
encrypted drive. The volume master key is encrypted by the appropriate key protector
and stored in the encrypted drive. If BitLocker has been suspended, the clear key that is
used to encrypt the volume master key is also stored in the encrypted drive, along with
the encrypted volume master key.

This storage process ensures that the volume master key is never stored unencrypted
and is protected unless BitLocker is disabled. The keys are also saved to two additional
locations on the drive for redundancy. The keys can be read and processed by the boot
manager.

Why do I have to use the function keys to enter


the PIN or the 48-character recovery password?
The F1 through F10 keys are universally mapped scan codes available in the pre-boot
environment on all computers and in all languages. The numeric keys 0 through 9 aren't
usable in the pre-boot environment on all keyboards.

When using an enhanced PIN, users should run the optional system check during the
BitLocker setup process to ensure that the PIN can be entered correctly in the pre-boot
environment.

How does BitLocker help prevent an attacker


from discovering the PIN that unlocks my
operating system drive?
It's possible that a personal identification number (PIN) can be discovered by an attacker
performing a brute force attack. A brute force attack occurs when an attacker uses an
automated tool to try different PIN combinations until the correct one is discovered. For
BitLocker-protected computers, this type of attack, also known as a dictionary attack,
requires that the attacker has physical access to the computer.

The TPM has the built-in ability to detect and react to these types of attacks. Because
different manufacturers' TPMs may support different PIN and attack mitigations, contact
the TPM's manufacturer to determine how the computer's TPM mitigates PIN brute
force attacks. After the TPM's manufacturer has been determined, contact the
manufacturer to gather the TPM's vendor-specific information. Most manufacturers use
the PIN authentication failure count to exponentially increase lockout time to the PIN
interface. However, each manufacturer has different policies regarding when and how
the failure counter is decreased or reset.

How can I determine the manufacturer of my


TPM?
The TPM manufacturer can be determined in Windows Defender Security Center >
Device Security > Security processor details.

How can I evaluate a TPM's dictionary attack


mitigation mechanism?
The following questions can assist when asking a TPM manufacturer about the design of
a dictionary attack mitigation mechanism:

How many failed authorization attempts can occur before lockout?


What is the algorithm for determining the duration of a lockout based on the
number of failed attempts and any other relevant parameters?
What actions can cause the failure count and lockout duration to be decreased or
reset?

Can PIN length and complexity be managed with


Group Policy?
Yes and No. The minimum personal identification number (PIN) length can be
configured by using the Configure minimum PIN length for startup Group Policy
setting and allow the use of alphanumeric PINs by enabling the Allow enhanced PINs
for startup Group Policy setting. However, PIN complexity can't be required via Group
Policy.

For more info, see BitLocker Group Policy settings.

BitLocker To Go
What is BitLocker To Go?
BitLocker To Go is BitLocker Drive Encryption on removable data drives. This feature
includes the encryption of:

USB flash drives


SD cards
External hard disk drives
Other drives that are formatted by using the NTFS, FAT16, FAT32, or exFAT file
system.

Drive partitioning must meet the BitLocker Drive Encryption Partitioning Requirements.

As with BitLocker, drives that are encrypted by BitLocker To Go can be opened by using
a password or smart card on another computer. In Control Panel, use BitLocker Drive
Encryption.

BitLocker and Active Directory Domain


Services (AD DS)
What type of information is stored in AD DS?
Stored Description
information

Hash of the TPM Beginning with Windows 10, the password hash isn't stored in AD DS
owner password by default. The password hash can be stored only if the TPM is owned
and the ownership was taken by using components of Windows 8.1 or
earlier, such as the BitLocker Setup Wizard or the TPM snap-in.

BitLocker The recovery password allows unlocking of and access to the drive
recovery after a recovery incident. Domain administrators can view the BitLocker
password recovery password by using the BitLocker Recovery Password Viewer.
For more information about this tool, see BitLocker: Use BitLocker
Recovery Password Viewer.

BitLocker key The key package helps to repair damage to the hard disk that would
package otherwise prevent standard recovery. Using the key package for
recovery requires the BitLocker Repair Tool, Repair-bde .

What if BitLocker is enabled on a computer


before the computer has joined the domain?
If BitLocker is enabled on a drive before Group Policy has been applied to enforce a
backup, the recovery information won't be automatically backed up to AD DS when the
computer joins the domain or when Group Policy is subsequently applied. However, the
Group Policy settings Choose how BitLocker-protected operating system drives can be
recovered, Choose how BitLocker-protected fixed drives can be recovered, and
Choose how BitLocker-protected removable drives can be recovered can be chosen to
require the computer to be connected to a domain before BitLocker can be enabled to
help ensure that recovery information for BitLocker-protected drives in the organization
is backed up to AD DS.

For more info, see BitLocker Group Policy settings.

The BitLocker Windows Management Instrumentation (WMI) interface does allow


administrators to write a script to back up or synchronize an online client's existing
recovery information. However, BitLocker doesn't automatically manage this process.
The manage-bde.exe command-line tool can also be used to manually back up recovery
information to AD DS. For example, to back up all of the recovery information for the
$env:SystemDrive to AD DS, the following command script can be used from an

elevated command prompt:


PowerShell

$BitLocker = Get-BitLockerVolume -MountPoint $env:SystemDrive


$RecoveryProtector = $BitLocker.KeyProtector | Where-Object {
$_.KeyProtectorType -eq 'RecoveryPassword' }

Backup-BitLockerKeyProtector -MountPoint $env:SystemDrive -KeyProtectorId


$RecoveryProtector.KeyProtectorID
BackupToAAD-BitLockerKeyProtector -MountPoint $env:SystemDrive -
KeyProtectorId $RecoveryProtector.KeyProtectorID

) Important

Joining a computer to the domain should be the first step for new computers
within an organization. After computers are joined to a domain, storing the
BitLocker recovery key to AD DS is automatic (when enabled in Group Policy).

Is there an event log entry recorded on the client


computer to indicate the success or failure of the
Active Directory backup?
Yes, an event log entry that indicates the success or failure of an Active Directory backup
is recorded on the client computer. However, even if an event log entry says "Success,"
the information could have been subsequently removed from AD DS, or BitLocker could
have been reconfigured in such a way that the Active Directory information can no
longer unlock the drive (such as by removing the recovery password key protector). In
addition, it's also possible that the log entry could be spoofed.

Ultimately, determining whether a legitimate backup exists in AD DS requires querying


AD DS with domain administrator credentials by using the BitLocker password viewer
tool.

If I change the BitLocker recovery password on


my computer and store the new password in AD
DS, will AD DS overwrite the old password?
No. By design, BitLocker recovery password entries don't get deleted from AD DS.
Therefore, multiple passwords might be seen for each drive. To identify the latest
password, check the date on the object.
What happens if the backup initially fails? Will
BitLocker retry it?
If the backup initially fails, such as when a domain controller is unreachable at the time
when the BitLocker setup wizard is run, BitLocker doesn't try again to back up the
recovery information to AD DS.

When an administrator selects the Require BitLocker backup to AD DS check box of the
Store BitLocker recovery information in Active Directory Domain Service (Windows
2008 and Windows Vista) policy setting, or the equivalent Do not enable BitLocker
until recovery information is stored in AD DS for (operating system | fixed data |
removable data) drives check box in any of the Choose how BitLocker-protected
operating system drives can be recovered, Choose how BitLocker-protected fixed data
drives can be recovered, and Choose how BitLocker-protected removable data drives
can be recovered policy settings, users can't enable BitLocker unless the computer is
connected to the domain and the backup of BitLocker recovery information to AD DS
succeeds. With these settings configured if the backup fails, BitLocker can't be enabled,
ensuring that administrators will be able to recover BitLocker-protected drives in the
organization.

For more info, see BitLocker Group Policy settings.

When an administrator clears these check boxes, the administrator is allowing a drive to
be BitLocker-protected without having the recovery information successfully backed up
to AD DS; however, BitLocker won't automatically retry the backup if it fails. Instead,
administrators can create a backup script, as described earlier in What if BitLocker is
enabled on a computer before the computer has joined the domain? to capture the
information after connectivity is restored.

Security
What form of encryption does BitLocker use? Is
it configurable?
BitLocker uses Advanced Encryption Standard (AES) as its encryption algorithm with
configurable key lengths of 128 bits or 256 bits. The default encryption setting is AES-
128, but the options are configurable by using Group Policy.
What is the best practice for using BitLocker on
an operating system drive?
The recommended practice for BitLocker configuration on an operating system drive is
to implement BitLocker on a computer with a TPM version 1.2 or higher, and a Trusted
Computing Group (TCG)-compliant BIOS or UEFI firmware implementation, along with a
PIN. By requiring a PIN that was set by the user in addition to the TPM validation, a
malicious user that has physical access to the computer can't start the computer.

What are the implications of using the sleep or


hibernate power management options?
BitLocker on operating system drives in its basic configuration (with a TPM but without
other startup authentication) provides extra security for the hibernate mode. However,
BitLocker provides greater security when it's configured to use another startup
authentication factor (TPM+PIN, TPM+USB, or TPM+PIN+USB) with the hibernate
mode. This method is more secure because returning from hibernation requires
authentication. In sleep mode, the computer is vulnerable to direct memory access
attacks, since unprotected data remains in RAM. Therefore, for improved security, it's
recommended to disable sleep mode and to use TPM+PIN for the authentication
method. Startup authentication can be configured by using Group Policy or Mobile
Device Management with the BitLocker CSP.

What are the advantages of a TPM?


Most operating systems use a shared memory space and rely on the operating system
to manage physical memory. A TPM is a hardware component that uses its own internal
firmware and logic circuits for processing instructions, thus shielding it from external
software vulnerabilities. Attacking the TPM requires physical access to the computer.
Additionally, the tools and skills necessary to attack hardware are often more expensive,
and usually aren't as available as the ones used to attack software. And because each
TPM is unique to the computer that contains it, attacking multiple TPM computers
would be difficult and time-consuming.

7 Note

Configuring BitLocker with an additional factor of authentication provides even


more protection against TPM hardware attacks.
Network Unlock
BitLocker Network Unlock FAQ
BitLocker Network Unlock enables easier management for BitLocker-enabled desktops
and servers that use the TPM+PIN protection method in a domain environment. When a
computer that is connected to a wired corporate network is rebooted, Network Unlock
allows the PIN entry prompt to be bypassed. It automatically unlocks BitLocker-
protected operating system volumes by using a trusted key that is provided by the
Windows Deployment Services server as its secondary authentication method.

To use Network Unlock, a PIN must be configured for the computer. When the computer
isn't connected to the network, a PIN will need to be provided to unlock it.

BitLocker Network Unlock has software and hardware requirements for both client
computers, Windows Deployment services, and domain controllers that must be met
before it can be used.

Network Unlock uses two protectors - the TPM protector and the protector provided by
the network or by the PIN. Automatic unlock uses a single protector - the one stored in
the TPM. If the computer is joined to a network without the key protector, it will prompt
to enter a PIN. If the PIN isn't available, the recovery key will need to be used to unlock
the computer if it can't be connected to the network.

For more info, see BitLocker: How to enable Network Unlock.

Use BitLocker with other programs


Can I use EFS with BitLocker?
Yes, Encrypting File System (EFS) can be used to encrypt files on a BitLocker-protected
drive. BitLocker helps protect the entire operating system drive against offline attacks,
whereas EFS can provide additional user-based file level encryption for security
separation between multiple users of the same computer. EFS can also be used in
Windows to encrypt files on other drives that aren't encrypted by BitLocker. The root
secrets of EFS are stored by default on the operating system drive; therefore, if BitLocker
is enabled for the operating system drive, data that is encrypted by EFS on other drives
is also indirectly protected by BitLocker.

Can I run a kernel debugger with BitLocker?


Yes. However, the debugger should be turned on before enabling BitLocker. Turning on
the debugger ensures that the correct measurements are calculated when sealing to the
TPM, allowing the computer to start properly. If debugging needs to be turned on or off
when using BitLocker, be sure to suspend BitLocker first to avoid putting the computer
into recovery mode.

How does BitLocker handle memory dumps?


BitLocker has a storage driver stack that ensures memory dumps are encrypted when
BitLocker is enabled.

Can BitLocker support smart cards for pre-boot


authentication?
BitLocker doesn't support smart cards for pre-boot authentication. There's no single
industry standard for smart card support in the firmware, and most computers either
don't implement firmware support for smart cards, or only support specific smart cards
and readers. This lack of standardization makes supporting them difficult.

Can I use a non-Microsoft TPM driver?


Microsoft doesn't support non-Microsoft TPM drivers and strongly recommends against
using them with BitLocker. Attempting to use a non-Microsoft TPM driver with BitLocker
may cause BitLocker to report that a TPM isn't present on the computer and not allow
the TPM to be used with BitLocker.

Can other tools that manage or modify the


master boot record work with BitLocker?
We don't recommend modifying the master boot record on computers whose operating
system drives are BitLocker-protected for several security, reliability, and product
support reasons. Changes to the master boot record (MBR) could change the security
environment and prevent the computer from starting normally and complicate any
efforts to recover from a corrupted MBR. Changes made to the MBR by anything other
than Windows might force the computer into recovery mode or prevent it from booting
entirely.

Why is the system check failing when I'm


encrypting my operating system drive?
The system check is designed to ensure the computer's BIOS or UEFI firmware is
compatible with BitLocker and that the TPM is working correctly. The system check can
fail for several reasons:

The computer's BIOS or UEFI firmware can't read USB flash drives.
The computer's BIOS, uEFI firmware, or boot menu doesn't have reading USB flash
drives enabled.
There are multiple USB flash drives inserted into the computer.
The PIN wasn't entered correctly.
The computer's BIOS or UEFI firmware only supports using the function keys (F1-
F10) to enter numerals in the pre-boot environment.
The startup key was removed before the computer finished rebooting.
The TPM has malfunctioned and fails to unseal the keys.

What can I do if the recovery key on my USB


flash drive can't be read?
Some computers can't read USB flash drives in the pre-boot environment. First, check
the BIOS or UEFI firmware and boot settings to ensure that the use of USB drives is
enabled. If it isn't enabled, enable the use of USB drives in the BIOS or UEFI firmware
and boot settings, and then try to read the recovery key from the USB flash drive again.
If the USB flash drive still can't be read, the hard drive will need to be mounted as a data
drive on another computer so that there's an operating system to attempt to read the
recovery key from the USB flash drive. If the USB flash drive has been corrupted or
damaged, a recovery password may need to be supplied or use the recovery
information that was backed up to AD DS. Also, if the recovery key is being used in the
pre-boot environment, ensure that the drive is formatted by using the NTFS, FAT16, or
FAT32 file system.

Why am I unable to save my recovery key to my


USB flash drive?
The Save to USB option isn't shown by default for removable drives. If the option is
unavailable, it means that a system administrator has disallowed the use of recovery
keys.

Why am I unable to automatically unlock my


drive?
Automatic unlocking for fixed data drives requires the operating system drive to also be
protected by BitLocker. If a computer is being used that doesn't have a BitLocker-
protected operating system drive, then the fixed drive can't be automatically unlocked.
For removable data drives, automatic unlocking can be added by right-clicking the drive
in Windows Explorer and selecting Manage BitLocker. Password or smart card
credentials that were supplied when BitLocker was turned on can still be used to unlock
the removable drive on other computers.

Can I use BitLocker in Safe Mode?


Limited BitLocker functionality is available in Safe Mode. BitLocker-protected drives can
be unlocked and decrypted by using the BitLocker Drive Encryption Control Panel item.
Right-clicking to access BitLocker options from Windows Explorer isn't available in Safe
Mode.

How do I "lock" a data drive?


Both fixed and removable data drives can be locked by using the Manage-bde
command-line tool and the -lock command.

7 Note

Ensure all data is saved to the drive before locking it. Once locked, the drive will
become inaccessible.

The syntax of this command is:

Windows Command Prompt

manage-bde.exe <driveletter> -lock

Outside of using this command, data drives will be locked on shutdown and restart of
the operating system. A removable data drive will also be locked automatically when the
drive is removed from the computer.

Can I use BitLocker with the Volume Shadow


Copy Service?
Yes. However, shadow copies made prior to enabling BitLocker will be automatically
deleted when BitLocker is enabled on software-encrypted drives. If a hardware
encrypted drive is being used, the shadow copies are retained.

Does BitLocker support virtual hard disks


(VHDs)?
BitLocker should work like any specific physical machine within its hardware limitations
as long as the environment (physical or virtual) meets Windows Operating System
requirements to run.

With TPM: Yes, it's supported.


Without TPM: Yes, it's supported (with password protector).

BitLocker is also supported on data volume VHDs, such as those used by clusters, if
running Windows 10, Windows 8.1, Windows 8, Windows Server 2016, Windows Server
2012 R2, or Windows Server 2012.

Can I use BitLocker with virtual machines (VMs)?


Yes. Password protectors and virtual TPMs can be used with BitLocker to protect virtual
machines. VMs can be domain joined, Azure AD-joined, or workplace-joined (via
Settings > Accounts > Access work or school > Connect) to receive policy. Encryption
can be enabled either while creating the VM or by using other existing management
tools such as the BitLocker CSP, or even by using a startup script or sign-in script
delivered by Group Policy. Windows Server 2016 also supports Shielded VMs and
guarded fabric to protect VMs from malicious administrators.
Guidelines for troubleshooting
BitLocker
Article • 11/23/2022

This article addresses common issues in BitLocker and provides guidelines to


troubleshoot these issues. This article also provides information such as what data to
collect and what settings to check. This information makes the troubleshooting process
much easier.

Review the event logs


Open Event Viewer and review the following logs under Applications and Services Logs
> Microsoft > Windows:

BitLocker-API. Review the Management log, the Operational log, and any other
logs that are generated in this folder. The default logs have the following unique
names:
Microsoft-Windows-BitLocker-API/Management
Microsoft-Windows-BitLocker-API/Operational
Microsoft-Windows-BitLocker-API/Tracing - only displayed when Show
Analytic and Debug Logs is enabled

BitLocker-DrivePreparationTool. Review the Admin log, the Operational log, and


any other logs that are generated in this folder. The default logs have the following
unique names:
Microsoft-Windows-BitLocker-DrivePreparationTool/Admin
Microsoft-Windows-BitLocker-DrivePreparationTool/Operational

Additionally, review the Windows Logs > System log for events that were produced by
the TPM and TPM-WMI event sources.

To filter and display or export logs, the wevtutil.exe command-line tool or the Get-
WinEvent PowerShell cmdlet can be used.

For example, to use wevtutil.exe to export the contents of the operational log from the
BitLocker-API folder to a text file that is named BitLockerAPIOpsLog.txt, open a
Command Prompt window, and run the following command:

Windows Command Prompt


wevtutil.exe qe "Microsoft-Windows-BitLocker/BitLocker Operational" /f:text
> BitLockerAPIOpsLog.txt

To use the Get-WinEvent cmdlet to export the same log to a comma-separated text file,
open a Windows PowerShell window and run the following command:

PowerShell

Get-WinEvent -logname "Microsoft-Windows-BitLocker/BitLocker Operational" |


Export-Csv -Path Bitlocker-Operational.csv

The Get-WinEvent can be used in an elevated PowerShell window to display filtered


information from the system or application log by using the following syntax:

To display BitLocker-related information:

PowerShell

Get-WinEvent -FilterHashtable @{LogName='System'} | Where-Object -


Property Message -Match 'BitLocker' | fl

The output of such a command resembles the following:

To export BitLocker-related information:

PowerShell

Get-WinEvent -FilterHashtable @{LogName='System'} | Where-Object -


Property Message -Match 'BitLocker' | Export-Csv -Path System-
BitLocker.csv

To display TPM-related information:

PowerShell

Get-WinEvent -FilterHashtable @{LogName='System'} | Where-Object -


Property Message -Match 'TPM' | fl
To export TPM-related information:

PowerShell

Get-WinEvent -FilterHashtable @{LogName='System'} | Where-Object -


Property Message -Match 'TPM' | Export-Csv -Path System-TPM.csv

The output of such a command resembles the following.

7 Note

When contacting Microsoft Support, it is recommended to export the logs listed in


this section.

Gather status information from the BitLocker


technologies
Open an elevated Windows PowerShell window, and run each of the following
commands:

Command Notes More Info

Get-Tpm > PowerShell cmdlet that exports information about the Get-Tpm
C:\TPM.txt local computer's Trusted Platform Module (TPM). This
cmdlet shows different values depending on whether the
TPM chip is version 1.2 or 2.0. This cmdlet isn't supported
in Windows 7.

manage-bde.exe - Exports information about the general encryption status of manage-bde.exe


status > all drives on the computer. status
C:\BDEStatus.txt

manage-bde.exe Exports information about the protection methods that manage-bde.exe


c: -protectors - are used for the BitLocker encryption key. protectors
get >
C:\Protectors
Command Notes More Info

reagentc.exe Exports information about an online or offline image reagentc.exe


/info > about the current status of the Windows Recovery
C:\reagent.txt Environment (WindowsRE) and any available recovery
image.

Get- PowerShell cmdlet that gets information about volumes Get-


BitLockerVolume that BitLocker Drive Encryption can protect. BitLockerVolume
\| fl

Review the configuration information


1. Open an elevated Command Prompt window, and run the following commands:

Command Notes More Info

gpresult.exe /h Exports the Resultant Set of Policy information, and saves gpresult.exe
<Filename> the information as an HTML file.

msinfo.exe Exports comprehensive information about the hardware, msinfo.exe


/report <Path> system components, and software environment on the
/computer local computer. The /report option saves the information
<ComputerName> as a .txt file.

2. Open Registry Editor, and export the entries in the following subkeys:

HKLM\SOFTWARE\Policies\Microsoft\FVE

HKLM\SYSTEM\CurrentControlSet\Services\TPM\

Check the BitLocker prerequisites


Common settings that can cause issues for BitLocker include the following scenarios:

The TPM must be unlocked. Check the output of the get-tpm PowerShell cmdlet
command for the status of the TPM.

Windows RE must be enabled. Check the output of the reagentc.exe command for
the status of WindowsRE.

The system-reserved partition must use the correct format.


On Unified Extensible Firmware Interface (UEFI) computers, the system-reserved
partition must be formatted as FAT32.
On legacy computers, the system-reserved partition must be formatted as NTFS.
If the device being troubleshot is a slate or tablet PC, use
https://gpsearch.azurewebsites.net/#8153 to verify the status of the Enable use
of BitLocker authentication requiring preboot keyboard input on slates option.

For more information about the BitLocker prerequisites, see BitLocker basic deployment:
Using BitLocker to encrypt volumes

Next steps
If the information examined so far indicates a specific issue (for example, WindowsRE
isn't enabled), the issue may have a straightforward fix.

Resolving issues that don't have obvious causes depends on exactly which components
are involved and what behavior is being see. The gathered information helps narrow
down the areas to investigate.

If the device being troubleshot is managed by Microsoft Intune, see Enforcing


BitLocker policies by using Intune: known issues.

If BitLocker doesn't start or can't encrypt a drive and errors or events that are
related to the TPM are occurring, see BitLocker cannot encrypt a drive: known TPM
issues.

If BitLocker doesn't start or can't encrypt a drive, see BitLocker cannot encrypt a
drive: known issues.

If BitLocker Network Unlock doesn't behave as expected, see BitLocker Network


Unlock: known issues.

If BitLocker doesn't behave as expected when an encrypted drive is recovered, or if


BitLocker unexpectedly recovered a drive, see BitLocker recovery: known issues.

If BitLocker or the encrypted drive doesn't behave as expected, and errors or


events that are related to the TPM are occurring, see BitLocker and TPM: other
known issues.

If BitLocker or the encrypted drive doesn't behave as expected, see BitLocker


configuration: known issues.

It's recommended to keep the gathered information handy in case Microsoft Support is
contacted for help with resolving the issue.
Feedback
Was this page helpful? ツ Yes ト No

Provide product feedback | Get help at Microsoft Q&A


BitLocker cannot encrypt a drive: known
issues
Article • 11/23/2022

This article describes common issues that prevent BitLocker from encrypting a drive. This
article also provides guidance to address these issues.

7 Note

If it is determined that the BitLocker issue involves the trusted platform module
(TPM), see BitLocker cannot encrypt a drive: known TPM issues.

Error 0x80310059: BitLocker drive encryption is


already performing an operation on this drive
When BitLocker Drive Encryption is turned on a computer that is running Windows 10
Professional or Windows 11, the following message may appear:

ERROR: An error occurred (code 0x80310059): BitLocker Drive Encryption is already


performing an operation on this drive. Please complete all operations before
continuing. NOTE: If the -on switch has failed to add key protectors or start
encryption, you may need to call manage-bde -off before attempting -on again.

Cause of Error 0x80310059


This issue may be caused by settings that are controlled by group policy objects (GPOs).

Resolution for Error 0x80310059

) Important

Follow the steps in this section carefully. Serious problems might occur if the
registry is modified incorrectly. Before modifying the registry, back up the registry
for restoration in case problems occur.

To resolve this issue, follow these steps:


1. Start Registry Editor, and navigate to the following subkey:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\FVE

2. Delete the following entries:

OSPlatformValidation_BIOS
OSPlatformValidation_UEFI

PlatformValidation

3. Exit registry editor, and turn on BitLocker drive encryption again.

Feedback
Was this page helpful? ツ Yes ト No

Provide product feedback | Get help at Microsoft Q&A


Enforcing BitLocker policies by using
Intune: known issues
Article • 03/21/2023

This article helps troubleshooting issues that may be experienced if using Microsoft
Intune policy to manage silent BitLocker encryption on devices. The Intune portal
indicates whether BitLocker has failed to encrypt one or more managed devices.

To start narrowing down the cause of the problem, review the event logs as described in
Troubleshoot BitLocker. Concentrate on the Management and Operations logs in the
Applications and Services logs > Microsoft > Windows > BitLocker-API folder. The
following sections provide more information about how to resolve the indicated events
and error messages:

Event ID 853: Error: A compatible Trusted Platform Module (TPM) Security Device
cannot be found on this computer
Event ID 853: Error: BitLocker Drive Encryption detected bootable media (CD or
DVD) in the computer
Event ID 854: WinRE is not configured
Event ID 851: Contact manufacturer for BIOS upgrade
Error message: The UEFI variable 'SecureBoot' could not be read
Event ID 846, 778, and 851: Error 0x80072f9a
Error message: There are conflicting group policy settings for recovery options on
operating system drives

If there's no clear trail of events or error messages to follow, other areas to investigate
include the following areas:

Review the hardware requirements for using Intune to manage BitLocker on


devices
Review BitLocker policy configuration

For information about the procedure to verify whether Intune policies are enforcing
BitLocker correctly, see Verifying that BitLocker is operating correctly.
Event ID 853: Error: A compatible Trusted
Platform Module (TPM) Security Device cannot
be found on this computer
Event ID 853 can carry different error messages, depending on the context. In this case,
the Event ID 853 error message indicates that the device doesn't appear to have a TPM.
The event information will be similar to the following event:

Cause of Event ID 853: Error: A compatible Trusted


Platform Module (TPM) Security Device cannot be found
on this computer
The device that is being secured may not have a TPM chip, or the device BIOS might
have been configured to disable the TPM.

Resolution for Event ID 853: Error: A compatible Trusted


Platform Module (TPM) Security Device cannot be found
on this computer
To resolve this issue, verify the following configurations:

The TPM is enabled in the device BIOS.


The TPM status in the TPM management console is similar to the following
statuses:
Ready (TPM 2.0)
Initialized (TPM 1.2)
For more information, see Troubleshoot the TPM.

Event ID 853: Error: BitLocker Drive Encryption


detected bootable media (CD or DVD) in the
computer
In this case, event ID 853 is displayed, and the error message in the event indicates that
bootable media is available to the device. The event information resembles the
following.

Cause of Event ID 853: Error: BitLocker Drive Encryption


detected bootable media (CD or DVD) in the computer
During the provisioning process, BitLocker drive encryption records the configuration of
the device to establish a baseline. If the device configuration changes later (for example,
if the media is removed), BitLocker recovery mode automatically starts.

To avoid this situation, the provisioning process stops if it detects a removable bootable
media.

Resolution for Event ID 853: Error: BitLocker Drive


Encryption detected bootable media (CD or DVD) in the
computer
Remove the bootable media, and restart the device. After the device restarts, verify the
encryption status.

Event ID 854: WinRE is not configured


The event information resembles the following error message:
Failed to enable Silent Encryption. WinRe is not configured.

Error: This PC cannot support device encryption because WinRE is not properly
configured.

Cause of Event ID 854: WinRE is not configured


Windows Recovery Environment (WinRE) is a minimal Windows operating system that is
based on Windows Preinstallation Environment (Windows PE). WinRE includes several
tools that an administrator can use to recover or reset Windows and diagnose Windows
issues. If a device can't start the regular Windows operating system, the device tries to
start WinRE.

The provisioning process enables BitLocker drive encryption on the operating system
drive during the Windows PE phase of provisioning. This action makes sure that the
drive is protected before the full operating system is installed. The provisioning process
also creates a system partition for WinRE to use if the system crashes.

If WinRE isn't available on the device, provisioning stops.

Resolution for Event ID 854: WinRE is not configured


This issue can be resolved by verifying the configuration of the disk partitions, the status
of WinRE, and the Windows Boot Loader configuration by following these steps:

Step 1: Verify the configuration of the disk partitions


The procedures described in this section depend on the default disk partitions that
Windows configures during installation. Windows 11 and Windows 10 automatically
create a recovery partition that contains the Winre.wim file. The partition configuration
resembles the following.
To verify the configuration of the disk partitions, open an elevated Command Prompt
window and run the following commands:

Windows Command Prompt

diskpart.exe
list volume

If the status of any of the volumes isn't healthy or if the recovery partition is missing,
Windows may need to be reinstalled. Before reinstalling Windows, check the
configuration of the Windows image that is being provisioned. Make sure that the
image uses the correct disk configuration. The image configuration should resemble the
following (this example is from Microsoft Configuration Manager):
Step 2: Verify the status of WinRE

To verify the status of WinRE on the device, open an elevated Command Prompt window
and run the following command:

Windows Command Prompt

reagentc.exe /info

The output of this command resembles the following.


If the Windows RE status isn't Enabled, run the following command to enable it:

Windows Command Prompt

reagentc.exe /enable

Step 3: Verify the Windows Boot Loader configuration

If the partition status is healthy, but the reagentc.exe /enable command results in an
error, verify whether the Windows Boot Loader contains the recovery sequence GUID by
running the following command in an elevated Command Prompt window:

Windows Command Prompt

bcdedit.exe /enum all

The output of this command will be similar to the following output:


In the output, locate the Windows Boot Loader section that includes the line identifier=
{current}. In that section, locate the recoverysequence attribute. The value of this
attribute should be a GUID value, not a string of zeros.

Event ID 851: Contact the manufacturer for


BIOS upgrade instructions
The event information will be similar to the following error message:

Failed to enable Silent Encryption.

Error: BitLocker Drive Encryption cannot be enabled on the operating system drive.
Contact the computer manufacturer for BIOS upgrade instructions.

Cause of Event ID 851: Contact the manufacturer for BIOS


upgrade instructions
The device must have Unified Extensible Firmware Interface (UEFI) BIOS. Silent BitLocker
drive encryption doesn't support legacy BIOS.

Resolution for Event ID 851: Contact the manufacturer for


BIOS upgrade instructions
To verify the BIOS mode, use the System Information application by following these
steps:

1. Select Start, and enter msinfo32 in the Search box.

2. Verify that the BIOS Mode setting is UEFI and not Legacy.

3. If the BIOS Mode setting is Legacy, the UEFI firmware needs to be switched to
UEFI or EFI mode. The steps for switching to UEFI or EFI mode are specific to the
device.

7 Note

If the device supports only Legacy mode, Intune can't be used to manage
BitLocker Device Encryption on the device.

Error message: The UEFI variable 'SecureBoot'


could not be read
An error message similar to the following error message is displayed:

Error: BitLocker cannot use Secure Boot for integrity because the UEFI variable
'SecureBoot' could not be read. A required privilege is not held by the client.

Cause of Error message: The UEFI variable 'SecureBoot'


could not be read
A platform configuration register (PCR) is a memory location in the TPM. In particular,
PCR 7 measures the state of secure boot. Silent BitLocker drive encryption requires the
secure boot to be turned on.

Resolution for Error message: The UEFI variable


'SecureBoot' could not be read
This issue can be resolved by verifying the PCR validation profile of the TPM and the
secure boot state by following these steps:

Step 1: Verify the PCR validation profile of the TPM


To verify that PCR 7 is in use, open an elevated Command Prompt window and run the
following command:

Windows Command Prompt

Manage-bde.exe -protectors -get %systemdrive%

In the TPM section of the output of this command, verify whether the PCR Validation
Profile setting includes 7, as follows:

If PCR Validation Profile doesn't include 7 (for example, the values include 0, 2, 4, and
11, but not 7), then secure boot isn't turned on.
2: Verify the secure boot state

To verify the secure boot state, use the System Information application by following
these steps:

1. Select Start, and enter msinfo32 in the Search box.

2. Verify that the Secure Boot State setting is On, as follows:

3. If the Secure Boot State setting is Unsupported, Silent BitLocker Encryption can't
be used on the device.
7 Note

The Confirm-SecureBootUEFI PowerShell cmdlet can also be used to verify the


Secure Boot state by opening an elevated PowerShell window and running the
following command:

PowerShell

Confirm-SecureBootUEFI

If the computer supports Secure Boot and Secure Boot is enabled, this cmdlet
returns "True."

If the computer supports secure boot and secure boot is disabled, this cmdlet
returns "False."

If the computer does not support Secure Boot or is a BIOS (non-UEFI) computer,
this cmdlet returns "Cmdlet not supported on this platform."

Event ID 846, 778, and 851: Error 0x80072f9a


Consider the following scenario:

Intune policy is being deployed to encrypt a Windows 10, version 1809 device, and the
recovery password is being stored in Azure Active Directory (Azure AD). As part of the
policy configuration, the Allow standard users to enable encryption during Azure AD
Join option has been selected.

The policy deployment fails and the failure generates the following events in Event
Viewer in the Applications and Services Logs > Microsoft > Windows > BitLocker API
folder:

Event ID:846

Event: Failed to backup BitLocker Drive Encryption recovery information for volume
C: to your Azure AD.

TraceId: {cbac2b6f-1434-4faa-a9c3-597b17c1dfa3} Error: Unknown HResult Error


code: 0x80072f9a

Event ID:778

Event: The BitLocker volume C: was reverted to an unprotected state.

Event ID: 851

Event: Failed to enable Silent Encryption.

Error: Unknown HResult Error code: 0x80072f9a.

These events refer to Error code 0x80072f9a.

Cause of Event ID 846, 778, and 851: Error 0x80072f9a


These events indicate that the signed-in user doesn't have permission to read the
private key on the certificate that is generated as part of the provisioning and
enrollment process. Therefore, the BitLocker MDM policy refresh fails.

The issue affects Windows 10 version 1809.

Resolution for Event ID 846, 778, and 851: Error


0x80072f9a
To resolve this issue, install the May 21, 2019 update.

Error message: There are conflicting group


policy settings for recovery options on
operating system drives
An error message similar to the following error message is displayed:
Error: BitLocker Drive Encryption cannot be applied to this drive because there are
conflicting Group Policy settings for recovery options on operating system drives.
Storing recovery information to Active Directory Domain Services cannot be
required when the generation of recovery passwords is not permitted. Please have
your system administrator resolve these policy conflicts before attempting to enable
BitLocker…

Resolution for Error message: There are conflicting group


policy settings for recovery options on operating system
drives
To resolve this issue, review the group policy object (GPO) settings for conflicts. For
more information, see the next section, Review BitLocker policy configuration.

For more information about GPOs and BitLocker, see BitLocker Group Policy Reference.

Review BitLocker policy configuration


For information about the procedure to use policy together with BitLocker and Intune,
see the following resources:

BitLocker management for enterprises: Managing devices joined to Azure Active


Directory
BitLocker Group Policy Reference
Configuration service provider reference
Policy CSP – BitLocker
BitLocker CSP
Enable ADMX-backed policies in MDM
gpresult

Intune offers the following enforcement types for BitLocker:

Automatic (Enforced when the device joins Azure AD during the provisioning
process. This option is available in Windows 10 version 1703 and later.)
Silent (Endpoint protection policy. This option is available in Windows 10 version
1803 and later.)
Interactive (Endpoint policy for Windows versions that are older than Windows 10
version 1803.)

If the device runs Windows 10 version 1703 or later, supports Modern Standby (also
known as Instant Go) and is HSTI-compliant, joining the device to Azure AD triggers
automatic device encryption. A separate endpoint protection policy isn't required to
enforce device encryption.

If the device is HSTI-compliant but doesn't support Modern Standby, an endpoint


protection policy has to be configured to enforce silent BitLocker drive encryption. The
settings for this policy should be similar to the following settings:

The OMA-URI references for these settings are as follows:

OMA-URI: ./Device/Vendor/MSFT/BitLocker/RequireDeviceEncryption
Value Type: Integer
Value: 1 (1 = Require, 0 = Not Configured)

OMA-URI:
./Device/Vendor/MSFT/BitLocker/AllowWarningForOtherDiskEncryption
Value Type: Integer
Value: 0 (0 = Blocked, 1 = Allowed)

7 Note

Because of an update to the BitLocker Policy CSP, if the device uses Windows 10
version 1809 or later, an endpoint protection policy can be used to enforce silent
BitLocker Device Encryption even if the device is not HSTI-compliant.

7 Note

If the Warning for other disk encryption setting is set to Not configured, the
BitLocker drive encryption wizard has to be manually started.

If the device doesn't support Modern Standby but is HSTI-compliant, and it uses a
version of Windows that is earlier than Windows 10, version 1803, an endpoint
protection policy that has the settings that are described in this article delivers the
policy configuration to the device. However, Windows then notifies the user to manually
enable BitLocker Drive Encryption. When the user selects the notification, it will start the
BitLocker Drive Encryption wizard.
Intune provides settings that can be used to configure automatic device encryption for
Autopilot devices for standard users. Each device must meet the following requirements:

Be HSTI-compliant
Support Modern Standby
Use Windows 10 version 1803 or later

The OMA-URI references for these settings are as follows:

OMA-URI: ./Device/Vendor/MSFT/BitLocker/AllowStandardUserEncryption
Value Type: Integer Value: 1

7 Note

This node works together with the RequireDeviceEncryption and


AllowWarningForOtherDiskEncryption nodes. For this reason, when the following
settings are set:

RequireDeviceEncryption to 1
AllowStandardUserEncryption to 1
AllowWarningForOtherDiskEncryption to 0

Intune enforces silent BitLocker encryption for Autopilot devices that have standard
user profiles.

Verifying that BitLocker is operating correctly


During regular operations, BitLocker drive encryption generates events such as Event ID
796 and Event ID 845.
It can also be determined whether the BitLocker recovery password has been uploaded
to Azure AD by checking the device details in the Azure AD Devices section.

On the device, check the Registry Editor to verify the policy settings on the device. Verify
the entries under the following subkeys:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\BitLocker
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device
Feedback
Was this page helpful? ツ Yes ト No

Provide product feedback | Get help at Microsoft Q&A


BitLocker Network Unlock: known issues
Article • 11/23/2022

By using the BitLocker Network Unlock feature, computers can be managed remotely
without having to enter a BitLocker PIN when each computer starts up. To configure this
behavior, the environment needs to meet the following requirements:

Each computer belongs to a domain.


Each computer has a wired connection to the internal network.
The internal network uses DHCP to manage IP addresses.
Each computer has a DHCP driver implemented in its Unified Extensible Firmware
Interface (UEFI) firmware.

For general guidelines about how to troubleshoot BitLocker Network Unlock, see How
to enable Network Unlock: Troubleshoot Network Unlock.

This article describes several known issues that may be encountered when BitLocker
Network Unlock is used and provides guidance to address these issues.

 Tip

BitLocker Network Unlock can be detected if it is enabled on a specific computer


use the following steps on UEFI computers:

1. Open an elevated command prompt window and run the following command:

Windows Command Prompt

manage-bde.exe -protectors -get <Drive>

For example:

Windows Command Prompt

manage-bde.exe -protectors -get C:

If the output of this command includes a key protector of type TpmCertificate


(9), the configuration is correct for BitLocker Network Unlock.

2. Start Registry Editor, and verify the following settings:

a. The following registry key exists and has the following value:
Subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\FVE
Type: REG_DWORD
Value: OSManageNKP equal to 1 (True)

b. The registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\SystemCertificates\FVE_

NKP\Certificates

has an entry whose name matches the name of the certificate thumbprint
of the BitLocker Network Unlock key protector that was found in step 1.

On a Surface Pro 4 device, BitLocker Network


Unlock doesn't work because the UEFI network
stack is incorrectly configured
Consider the following scenario:

BitLocker Network Unlock has been configured as described in BitLocker: How to enable
Network Unlock. UEFI of a Surface Pro 4 has been configured to use DHCP. However,
when the Surface Pro 4 is restarted, it still prompts for a BitLocker PIN.

When testing another device, such as a different type of tablet or laptop PC that's
configured to use the same infrastructure, the device restarts as expected, without
prompting for the BitLocker PIN. This test confirms that the infrastructure is correctly
configured, and the issue is specific to the device.

Cause of BitLocker Network Unlock not working on


Surface Pro 4
The UEFI network stack on the device is incorrectly configured.

Resolution for BitLocker Network Unlock not working on


Surface Pro 4
To correctly configure the UEFI network stack of the Surface Pro 4, the Microsoft Surface
Enterprise Management Mode (SEMM) needs to be used. For information about SEMM,
see Enroll and configure Surface devices with SEMM.
7 Note

If SEMM can't be used, the Surface Pro 4 may be able to use BitLocker Network
Unlock by configuring the Surface Pro 4 to use the network as its first boot option.

Unable to use BitLocker Network Unlock


feature on a Windows client computer
Consider the following scenario:

BitLocker Network Unlock has been configured as described in BitLocker: How to enable
Network Unlock. A Windows 8 client computer is connected to the internal network with
an ethernet cable. However, when the device is restarted, the device still prompts for the
BitLocker PIN.

Cause of unable to use BitLocker Network Unlock feature


on a Windows client computer
A Windows 8-based or Windows Server 2012-based client computer sometimes doesn't
receive or use the BitLocker Network Unlock protector, depending on whether the client
receives unrelated BOOTP replies from a DHCP server or WDS server.

DHCP servers may send any DHCP options to a BOOTP client as allowed by the DHCP
options and BOOTP vendor extensions. This behavior means that because a DHCP server
supports BOOTP clients, the DHCP server replies to BOOTP requests.

The manner in which a DHCP server handles an incoming message depends in part on
whether the message uses the Message Type option:

The first two messages that the BitLocker Network Unlock client sends are DHCP
DISCOVER\REQUEST messages. They use the Message Type option, so the DHCP
server treats them as DHCP messages.
The third message that the BitLocker Network Unlock client sends doesn't have the
Message Type option. The DHCP server treats the message as a BOOTP request.

A DHCP server that supports BOOTP clients must interact with those clients according to
the BOOTP protocol. The server must create a BOOTP BOOTREPLY message instead of a
DHCP DHCPOFFER message. In other words, the server must not include the DHCP
message option type and must not exceed the size limit for BOOTREPLY messages. After
the server sends the BOOTP BOOTREPLY message, the server marks a binding for a
BOOTP client as BOUND. A non-DHCP client doesn't send a DHCPREQUEST message,
nor does that client expect a DHCPACK message.

If a DHCP server that isn't configured to support BOOTP clients receives a


BOOTREQUEST message from a BOOTP client, that server silently discards the
BOOTREQUEST message.

For more information about DHCP and BitLocker Network Unlock, see BitLocker: How to
enable Network Unlock: Network Unlock sequence.

Resolution for unable to use BitLocker Network Unlock


feature on a Windows client computer
To resolve this issue, change the configuration of the DHCP server by changing the
DHCP option from DHCP and BOOTP to DHCP.

Feedback
Was this page helpful? ツ Yes ト No

Provide product feedback | Get help at Microsoft Q&A


BitLocker recovery: known issues
Article • 11/23/2022

This article describes common issues that may prevent BitLocker from behaving as
expected when a drive is recovered, or that may cause BitLocker to start recovery
unexpectedly. The article also provides guidance to address these issues.

7 Note

In this article, "recovery password" refers to the 48-digit recovery password and
"recovery key" refers to 32-digit recovery key. For more information, see BitLocker
key protectors.

Windows prompts for a non-existing BitLocker


recovery password
Windows prompts for a BitLocker recovery password. However, a BitLocker recovery
password wasn't configured.

Resolution for Windows prompts for a non-existing


BitLocker recovery password
The BitLocker and Active Directory Domain Services (AD DS) FAQ address situations that
may produce this symptom, and provides information about the procedure to resolve
the issue:

What if BitLocker is enabled on a computer before the computer has joined the
domain?

What happens if the backup initially fails? Will BitLocker retry the backup?

The recovery password for a laptop wasn't


backed up, and the laptop is locked
Consider the following scenario:

The hard disk of a Windows 11 or Windows 10 laptop has to be recovered. The disk was
encrypted by using BitLocker Driver Encryption. However, the BitLocker recovery
password wasn't backed up, and the usual user of the laptop isn't available to provide
the password.

Resolution for the recovery password for a laptop wasn't


backed up
You can use either of the following methods to manually back up or synchronize an
online client's existing recovery information:

Create a Windows Management Instrumentation (WMI) script that backs up the


information. For more information, see BitLocker Drive Encryption Provider.

In an elevated Command Prompt window, use the manage-bde.exe command to


back up the information.

For example, to back up all of the recovery information for the C: drive to AD DS,
open an elevated Command Prompt window and run the following command:

***cmd manage-bde.exe -protectors -adbackup C:

7 Note

BitLocker does not automatically manage this backup process.

Tablet devices don't support using manage-


bde.exe -forcerecovery to test recovery mode
Consider the following scenario:

BitLocker recovery needs to be tested on a tablet or slate device by running the


following command:

***cmd manage-bde.exe -forcerecovery

However, after entering the recovery password, the device can't start.

Cause of tablet devices don't support using manage-


bde.exe -forcerecovery to test recovery mode

) Important
Tablet devices do not support the manage-bde.exe -forcerecovery command.

This issue occurs because the Windows Boot Manager can't process touch-input during
the pre-boot phase of startup. If Boot Manager detects that the device is a tablet, it
redirects the startup process to the Windows Recovery Environment (WinRE), which can
process touch-input.

If WindowsRE detects the TPM protector on the hard disk, it does a PCR reseal.
However, the manage-bde.exe -forcerecovery command deletes the TPM protectors on
the hard disk. Therefore, WinRE can't reseal the PCRs. This failure triggers an infinite
BitLocker recovery cycle and prevents Windows from starting.

This behavior is by design for all versions of Windows.

Workaround for tablet devices don't support using


manage-bde.exe -forcerecovery to test recovery mode

To resolve the restart loop, follow these steps:

1. On the BitLocker Recovery screen, select Skip this drive.

2. Select Troubleshoot > Advanced Options > Command Prompt.

3. In the Command Prompt window, run the following commands:

Windows Command Prompt

manage-bde.exe -unlock C: -rp <48-digit BitLocker recovery password>


manage-bde.exe -protectors -disable C:

4. Close the Command Prompt window.

5. Shut down the device.

6. Start the device. Windows should start as usual.

After installing UEFI or TPM firmware updates


on Surface, BitLocker prompts for the recovery
password
Consider the following scenario:
A Surface device has BitLocker drive encryption turned on. The firmware of the Surface's
TPM is updated or an update that changes the signature of the system firmware is
installed. For example, the Surface TPM (IFX) update is installed.

You experience one or more of the following symptoms on the Surface device:

At startup, the Surface device prompts for a BitLocker recovery password. The
correct recovery password is entered, but Windows doesn't start up.

Startup progresses directly into the Surface device's Unified Extensible Firmware
Interface (UEFI) settings.

The Surface device appears to be in an infinite restart loop.

Cause of after installing UEFI or TPM firmware updates on


Surface, BitLocker prompts for the recovery password
This issue occurs if the Surface device TPM is configured to use Platform Configuration
Register (PCR) values other than the default values of PCR 7 and PCR 11. For example,
the following settings can configure the TPM this way:

Secure boot is turned off.


PCR values have been explicitly defined, such as by group policy.

Devices that support Connected Standby (also known as InstantGO or Always On,
Always Connected PCs), including Surface devices, must use PCR 7 of the TPM. In its
default configuration on such systems, BitLocker binds to PCR 7 and PCR 11 if PCR 7 and
Secure Boot are correctly configured. For more information, see the BitLocker Group
Policy Settings: About the Platform Configuration Register (PCR).

Resolution for after installing UEFI or TPM firmware


updates on Surface, BitLocker prompts for the recovery
password
To verify the PCR values that are in use on a device, open an elevated Command Prompt
window and run the following command:

Windows Command Prompt

manage-bde.exe -protectors -get <OSDriveLetter>:


In this command, <OSDriveLetter> represents the drive letter of the operating system
drive.

To resolve this issue and repair the device, follow these steps:

Step 1: Disable the TPM protectors on the boot drive


If a TPM or UEFI update has been installed and the Surface device can't start, even if the
correct BitLocker recovery password has been entered, the ability to start can be
restored by using the BitLocker recovery password and a Surface recovery image to
remove the TPM protectors from the boot drive.

To use the BitLocker recovery password and a Surface recovery image to remove the
TPM protectors from the boot drive, follow these steps:

1. Obtain the BitLocker recovery password from the Surface user's Microsoft.com
account . If BitLocker is managed by a different method, such as Microsoft
BitLocker Administration and Monitoring (MBAM), Configuration Manager
BitLocker Management, or Intune, contact the administrator for help.

2. Use another computer to download the Surface recovery image from Surface
Recovery Image Download . Use the downloaded image to create a USB recovery
drive.

3. Insert the USB Surface recovery image drive into the Surface device, and start the
device.

4. When prompted, select the following items:

a. The operating system language.

b. The keyboard layout.

5. Select Troubleshoot > Advanced Options > Command Prompt.

6. In the Command Prompt window, run the following commands:

Windows Command Prompt

manage-bde.exe -unlock -recoverypassword <Password> <DriveLetter>:


manage-bde.exe -protectors -disable <DriveLetter>:

where:
<Password> is the BitLocker recovery password that was obtained in Step 1
<DriveLetter> is the drive letter that is assigned to the operating system drive

7 Note

For more information about how to use this command, see manage-bde
unlock.

7. Restart the computer.

8. When prompted, enter the BitLocker recovery password that was obtained in Step
1.

7 Note

After the TPM protectors are disabled, BitLocker drive encryption no longer
protects the device. To re-enable BitLocker drive encryption, select Start, type
Manage BitLocker, and then press Enter. Follow the steps to encrypt the drive.

Step 2: Use Surface BMR to recover data and reset the Surface
device
To recover data from the Surface device if Windows doesn't start, follow steps 1 through
5 of the section Step 1: Disable the TPM protectors on the boot drive to get to a
Command Prompt window. Once a Command Prompt window is open, follow these
steps:

1. At the command prompt, run the following command:

Windows Command Prompt

manage-bde.exe -unlock -recoverypassword <Password> <DriveLetter>:

In this command, <Password> is the BitLocker recovery password that was


obtained in Step 1 of the section Step 1: Disable the TPM protectors on the boot
drive, and <DriveLetter> is the drive letter that is assigned to the operating system
drive.

2. After the drive is unlocked, use the copy or xcopy.exe command to copy the user
data to another drive.
7 Note

For more information about the these commands, see the Windows
commands article.

3. To reset the device by using a Surface recovery image, follow the instructions in the
article Creating and using a USB recovery drive for Surface .

Step 3: Restore the default PCR values


To prevent this issue from recurring, it's recommended to restore the default
configuration of Secure Boot and the PCR values.

To enable Secure Boot on a Surface device, follow these steps:

1. Suspend BitLocker by opening an elevated Windows PowerShell window and


running the following PowerShell cmdlet:

PowerShell

Suspend-BitLocker -MountPoint "<DriveLetter>:" -RebootCount 0

In this command, <DriveLetter> is the letter that is assigned to the drive.

2. Restart the device, and then edit the UEFI settings to set the Secure Boot option to
Microsoft Only.

3. Restart the device and sign into Windows.

4. Open an elevated PowerShell window and run the following PowerShell cmdlet:

PowerShell

Resume-BitLocker -MountPoint "<DriveLetter>:"

To reset the PCR settings on the TPM, follow these steps:

1. Disable any Group Policy Objects that configure the PCR settings, or remove the
device from any groups that enforce such policies.

For more information, see BitLocker Group Policy settings.

2. Suspend BitLocker by opening an elevated Windows PowerShell window and


running the following PowerShell cmdlet:
PowerShell

Suspend-BitLocker -MountPoint "<DriveLetter>:" -RebootCount 0

In this command, <DriveLetter> is the letter that is assigned to the drive.

3. Run the following PowerShell cmdlet:

PowerShell

Resume-BitLocker -MountPoint "<DriveLetter>:"

Step 4: Suspend BitLocker during TPM or UEFI firmware updates

You can avoid this scenario when installing updates to system firmware or TPM firmware
by temporarily suspending BitLocker before applying such updates.

) Important

TPM and UEFI firmware updates may require multiple restarts while they install. To
keep BitLocker suspended during this process, the PowerShell cmdlet Suspend-
BitLocker must be used and the Reboot Count parameter must be set to either of
the following values:

2 or greater: This value sets the number of times the device will restart before
BitLocker Device Encryption resumes. For example, setting the value to 2 will
cause BitLocker to resume after the device restarts twice.

0: This value suspends BitLocker Drive Encryption indefinitely. To resume


BitLocker, the PowerShell cmdlet Resume-BitLocker or another mechanism
needs to be used to resume BitLocker protection.

To suspend BitLocker while installing TPM or UEFI firmware updates:

1. Open an elevated Windows PowerShell window and run the following PowerShell
cmdlet:

PowerShell

Suspend-BitLocker -MountPoint "<DriveLetter>:" -RebootCount 0


In this PowerShell cmdlet, <DriveLetter> is the letter that is assigned to the drive.

2. Install the Surface device driver and firmware updates.

3. After installing the firmware updates, restart the computer, open an elevated
PowerShell window, and then run the following PowerShell cmdlet:

PowerShell

Resume-BitLocker -MountPoint "<DriveLetter>:"

Credential Guard/Device Guard on TPM 1.2: At


every restart, BitLocker prompts for the
recovery password and returns error
0xC0210000
Consider the following scenario:

A device uses TPM 1.2 and runs Windows 10, version 1809. The device also uses
Virtualization-based Security features such as Device Guard and Credential Guard. Every
time the device is started, the device enters BitLocker Recovery mode and an error
message similar to the following error message is displayed:

Recovery

Your PC/Device needs to be repaired. A required file couldn't be accessed because


your BitLocker key wasn't loaded correctly.

Error code 0xc0210000

You'll need to use recovery tools. If you don't have any installation media (like a disc
or USB device), contact your PC administrator or PC/Device manufacturer.

Cause of Credential Guard/Device Guard on TPM 1.2: At


every restart, BitLocker prompts for the recovery
password and returns error 0xC0210000
TPM 1.2 doesn't support Secure Launch. For more information, see System Guard Secure
Launch and SMM protection: Requirements Met by System Guard Enabled Machines
For more information about this technology, see Windows Defender System Guard: How
a hardware-based root of trust helps protect Windows

Resolution for Credential Guard/Device Guard on TPM


1.2: At every restart, BitLocker prompts for the recovery
password and returns error 0xC0210000
To resolve this issue, use one of the following two solutions:

Remove any device that uses TPM 1.2 from any group that is subject to GPOs that
enforce secure launch.
Edit the Turn On Virtualization Based Security GPO to set Secure Launch
Configuration to Disabled.

Feedback
Was this page helpful? ツ Yes ト No

Provide product feedback | Get help at Microsoft Q&A


BitLocker configuration: known issues
Article • 11/23/2022

This article describes common issues that affect BitLocker's configuration and general
functionality. This article also provides guidance to address these issues.

BitLocker encryption is slower in Windows 10


and Windows 11
BitLocker runs in the background to encrypt drives. However, in Windows 11 and
Windows 10, BitLocker is less aggressive about requesting resources than in previous
versions of Windows. This behavior reduces the chance that BitLocker will affect the
computer's performance.

To compensate for these changes, BitLocker uses a conversion model called Encrypt-On-
Write. This model makes sure that any new disk writes are encrypted as soon as
BitLocker is enabled. This behavior happens on all client editions and for any internal
drives.

) Important

To preserve backward compatibility, BitLocker uses the previous conversion model


to encrypt removable drives.

Benefits of using the new conversion model


By using the previous conversion model, an internal drive can't be considered protected
and compliant with data protection standards until the BitLocker conversion is 100
percent complete. Before the process finishes, the data that existed on the drive before
encryption began - that is, potentially compromised data - can still be read and written
without encryption. Therefore, for data to be considered protected and compliant with
data protection standards, the encryption process has to finish before sensitive data is
stored on the drive. Depending on the size of the drive, this delay can be substantial.

By using the new conversion model, sensitive data can be stored on the drive as soon as
BitLocker is turned on. The encryption process doesn't need to finish first, and
encryption doesn't adversely affect performance. The tradeoff is that the encryption
process for pre-existing data takes more time.
Other BitLocker enhancements
Several other areas of BitLocker were improved in versions of Windows released after
Windows 7:

New encryption algorithm, XTS-AES - Added in Windows 10 version 1511, this


algorithm provides additional protection from a class of attacks on encrypted data
that rely on manipulating cipher text to cause predictable changes in plain text.

By default, this algorithm complies with the Federal Information Processing


Standards (FIPS). FIPS is a United States Government standard that provides a
benchmark for implementing cryptographic software.

Improved administration features. BitLocker can be managed on PCs or other


devices by using the following interfaces:
BitLocker Wizard
manage-bde.exe
Group Policy Objects (GPOs)
Mobile Device Management (MDM) policy
Windows PowerShell
Windows Management Interface (WMI)

Integration with Azure Active Directory (Azure AD) - BitLocker can store recovery
information in Azure AD to make it easier to recover.

Direct memory access (DMA) Port Protection - By using MDM policies to manage
BitLocker, a device's DMA ports can be blocked which secures the device during its
startup.

BitLocker Network Unlock - If the BitLocker-enabled desktop or server computer


is connected to a wired corporate network in a domain environment, its operating
system volume can be automatically unlocked during a system restart.

Support for Encrypted Hard Drives - Encrypted Hard Drives are a new class of
hard drives that are self-encrypting at a hardware level and allow for full disk
hardware encryption. By taking on that workload, Encrypted Hard Drives increase
BitLocker performance and reduce CPU usage and power consumption.

Support for classes of HDD/SSD hybrid disks - BitLocker can encrypt a disk that
uses a small SSD as a non-volatile cache in front of the HDD, such as Intel Rapid
Storage Technology.
Hyper-V Gen 2 VM: Can't access the volume
after BitLocker encryption
Consider the following scenario:

1. BitLocker is turned on a generation 2 virtual machine (VM) that runs on Hyper-V.

2. Data is added to the data disk as it encrypts.

3. The VM is restarted and the following behavior is observed:

The system volume isn't encrypted.

The encrypted volume isn't accessible, and the computer lists the volume's
file system as Unknown.

A message similar to the following message is displayed:

You need to format the disk in <drive_letter:> drive before you can use
it

Cause of not being able to access the volume after


BitLocker encryption on a Hyper-V Gen 2 VM
This issue occurs because the third-party filter driver Stcvsm.sys (from StorageCraft) is
installed on the VM.

Resolution for not being able to access the volume after


BitLocker encryption on a Hyper-V Gen 2 VM
To resolve this issue, remove the third-party software.

Production snapshots fail for virtualized


domain controllers that use BitLocker-
encrypted disks
Consider the following scenario:

A Windows Server 2019 or 2016 Hyper-V Server is hosting VMs (guests) that are
configured as Windows domain controllers. On a domain controller guest VM, BitLocker
has encrypted the disks that store the Active Directory database and log files. When a
"production snapshot" of the domain controller guest VM is attempted, the Volume
Snap-Shot (VSS) service doesn't correctly process the backup.

This issue occurs regardless of any of the following variations in the environment:

How the domain controller volumes are unlocked.


Whether the VMs are generation 1 or generation 2.
Whether the guest operating system is Windows Server 2019, 2016 or 2012 R2.

In the guest VM domain controller Windows Logs > Application Event Viewer log, the
VSS event source records event ID 8229:

ID: 8229
Level: Warning
Source: VSS
Message: A VSS writer has rejected an event with error 0x800423f4. The writer
experienced a non-transient error. If the backup process is retried, the error is likely
to reoccur.

Changes that the writer made to the writer components while handling the event
will not be available to the requester.

Check the event log for related events from the application hosting the VSS writer.

Operation:
PostSnapshot Event

Context:
Execution Context: Writer
Writer Class Id: {b2014c9e-8711-4c5c-a5a9-3cf384484757}
Writer Name: NTDS
Writer Instance ID: {d170b355-a523-47ba-a5c8-732244f70e75}
Command Line: C:\Windows\system32\lsass.exe

Process ID: 680

In the guest VM domain controller Applications and Services Logs > Directory Service
Event Viewer log, there's an event logged similar to the following event:

Error Microsoft-Windows-ActiveDirectory_DomainService 1168


Internal Processing Internal error: An Active Directory Domain Services error has
occurred.
Additional Data
Error value (decimal): -1022

Error value (hex): fffffc02

Internal ID: 160207d9

7 Note

The internal ID of this event may differ based on the operating system release
version and patch level.

When this issue occurs, the Active Directory Domain Services (NTDS) VSS Writer will
display the following error when the vssadmin.exe list writers command is run:

Error

Writer name: 'NTDS'


Writer Id: {b2014c9e-8711-4c5c-a5a9-3cf384484757}
Writer Instance Id: {08321e53-4032-44dc-9b03-7a1a15ad3eb8}
State: [11] Failed
Last error: Non-retryable error

Additionally, the VMs can't be backed up until they're restarted.

Cause of production snapshots fail for virtualized domain


controllers that use BitLocker-encrypted disks
After VSS creates a snapshot of a volume, the VSS writer takes "post snapshot" actions.
When a "production snapshot" is initiated from the host server, Hyper-V tries to mount
the snapshotted volume. However, it can't unlock the volume for unencrypted access.
BitLocker on the Hyper-V server doesn't recognize the volume. Therefore, the access
attempt fails and then the snapshot operation fails.

This behavior is by design.

Workaround for production snapshots fail for virtualized


domain controllers that use BitLocker-encrypted disks
A supported way to perform backup and restore of a virtualized domain controller is to
run Windows Server Backup in the guest operating system.
If a production snapshot of a virtualized domain controller needs to be taken, BitLocker
can be suspended in the guest operating system before the production snapshot is
started. However, this approach isn't recommended.

For more information and recommendations about backing up virtualized domain


controllers, see Virtualizing Domain Controllers using Hyper-V: Backup and Restore
Considerations for Virtualized Domain Controllers

More information
When the VSS NTDS writer requests access to the encrypted drive, the Local Security
Authority Subsystem Service (LSASS) generates an error entry similar to the following
error:

Console

\# for hex 0xc0210000 / decimal -1071579136


STATUS\_FVE\_LOCKED\_VOLUME ntstatus.h
\# This volume is locked by BitLocker Drive Encryption.

The operation produces the following call stack:

Console

\# Child-SP RetAddr Call Site


00 00000086\`b357a800 00007ffc\`ea6e7a4c KERNELBASE\!FindFirstFileExW+0x1ba
\[d:\\rs1\\minkernel\\kernelbase\\filefind.c @ 872\]
01 00000086\`b357abd0 00007ffc\`e824accb KERNELBASE\!FindFirstFileW+0x1c \
[d:\\rs1\\minkernel\\kernelbase\\filefind.c @ 208\]
02 00000086\`b357ac10 00007ffc\`e824afa1 ESENT\!COSFileFind::ErrInit+0x10b
\[d:\\rs1\\onecore\\ds\\esent\\src\\os\\osfs.cxx @ 2476\]
03 00000086\`b357b700 00007ffc\`e827bf02
ESENT\!COSFileSystem::ErrFileFind+0xa1 \
[d:\\rs1\\onecore\\ds\\esent\\src\\os\\osfs.cxx @ 1443\]
04 00000086\`b357b960 00007ffc\`e82882a9
ESENT\!JetGetDatabaseFileInfoEx+0xa2 \
[d:\\rs1\\onecore\\ds\\esent\\src\\ese\\jetapi.cxx @ 11503\]
05 00000086\`b357c260 00007ffc\`e8288166
ESENT\!JetGetDatabaseFileInfoExA+0x59 \
[d:\\rs1\\onecore\\ds\\esent\\src\\ese\\jetapi.cxx @ 11759\]
06 00000086\`b357c390 00007ffc\`e84c64fb
ESENT\!JetGetDatabaseFileInfoA+0x46 \
[d:\\rs1\\onecore\\ds\\esent\\src\\ese\\jetapi.cxx @ 12076\]
07 00000086\`b357c3f0 00007ffc\`e84c5f23
ntdsbsrv\!CVssJetWriterLocal::RecoverJetDB+0x12f \
[d:\\rs1\\ds\\ds\\src\\jetback\\snapshot.cxx @ 2009\]
08 00000086\`b357c710 00007ffc\`e80339e0
ntdsbsrv\!CVssJetWriterLocal::OnPostSnapshot+0x293 \
[d:\\rs1\\ds\\ds\\src\\jetback\\snapshot.cxx @ 2190\]
09 00000086\`b357cad0 00007ffc\`e801fe6d
VSSAPI\!CVssIJetWriter::OnPostSnapshot+0x300 \
[d:\\rs1\\base\\stor\\vss\\modules\\jetwriter\\ijetwriter.cpp @ 1704\]
0a 00000086\`b357ccc0 00007ffc\`e8022193
VSSAPI\!CVssWriterImpl::OnPostSnapshotGuard+0x1d \
[d:\\rs1\\base\\stor\\vss\\modules\\vswriter\\vswrtimp.cpp @ 5228\]
0b 00000086\`b357ccf0 00007ffc\`e80214f0
VSSAPI\!CVssWriterImpl::PostSnapshotInternal+0xc3b \
[d:\\rs1\\base\\stor\\vss\\modules\\vswriter\\vswrtimp.cpp @ 3552\]

Feedback
Was this page helpful? ツ Yes ト No

Provide product feedback | Get help at Microsoft Q&A


BitLocker cannot encrypt a drive: known
TPM issues
Article • 11/23/2022

This article describes common issues that affect the Trusted Platform Module (TPM) that
might prevent BitLocker from encrypting a drive. This article also provides guidance to
address these issues.

7 Note

If it's been determined that the BitLocker issue does not involve the TPM, see
BitLocker cannot encrypt a drive: known issues.

The TPM is locked and the error The TPM is


defending against dictionary attacks and is in
a time-out period is displayed
It's attempted to turn on BitLocker drive encryption on a device but it fails with an error
message similar to the following error message:

The TPM is defending against dictionary attacks and is in a time-out period.

Cause of the TPM being locked


The TPM is locked out.

Resolution for the TPM being locked


To resolve this issue, the TPM needs to be reset and cleared. The TPM can be reset and
cleared with the following steps:

1. Open an elevated PowerShell window and run the following script:

PowerShell

$Tpm = Get-WmiObject -class Win32_Tpm -namespace


"root\CIMv2\Security\MicrosoftTpm"
$ConfirmationStatus =
$Tpm.GetPhysicalPresenceConfirmationStatus(22).ConfirmationStatus
if($ConfirmationStatus -ne 4) {$Tpm.SetPhysicalPresenceRequest(22)}

2. Restart the computer. If a prompt is displayed confirming the clearing of the TPM,
agree to clear the TPM.

3. Sign on to Windows and retry starting BitLocker drive encryption.

2 Warning

Resetting and clearing the TPM can cause data loss.

The TPM fails to prepare with the error The TPM


is defending against dictionary attacks and is
in a time-out period
It's attempted to turn on BitLocker drive encryption on a device but it fails. While
troubleshooting, the TPM management console (tpm.msc) is used to attempt to prepare
the TPM on the device. The operation fails with an error message similar to the
following error message:

The TPM is defending against dictionary attacks and is in a time-out period.

Cause of TPM failing to prepare


The TPM is locked out.

Resolution for TPM failing to prepare


To resolve this issue, disable and re-enable the TPM with the following steps:

1. Enter the UEFI/BIOS configuration screens of the device by restarting the device
and hitting the appropriate key combination as the device boots. Consult with the
device manufacturer for the appropriate key combination for entering into the
UEFI/BIOS configuration screens.

2. Once in the UEFI/BIOS configuration screens, disable the TPM. Consult with the
device manufacturer for instructions on how to disable the TPM in the UEFI/BIOS
configuration screens.
3. Save the UEFI/BIOS configuration with the TPM disabled and restart the device to
boot into Windows.

4. Once signed into Windows, return to the TPM management console. An error
message similar to the following error message is displayed:

Compatible TPM cannot be found

Compatible Trusted Platform Module (TPM) cannot be found on this computer.


Verify that this computer has 1.2 TPM and it is turned on in the BIOS.

This message is expected since the TPM is currently disabled in the UEFI
firmware/BIOS of the device.

5. Restart the device and enter the UEFI/BIOS configuration screens again.

6. Reenable the TPM in the UEFI/BIOS configuration screens.

7. Save the UEFI/BIOS configuration with the TPM enabled and restart the device to
boot into Windows.

8. Once signed into Windows, return to the TPM management console.

If the TPM still can't be prepared, clear the existing TPM keys by following the
instructions in the article Troubleshoot the TPM: Clear all the keys from the TPM.

2 Warning

Clearing the TPM can cause data loss.

BitLocker fails to enable with the error Access


Denied: Failed to backup TPM Owner
Authorization information to Active Directory
Domain Services. Errorcode: 0x80070005 or
Insufficient Rights
The Do not enable BitLocker until recovery information is stored in AD DS policy is
enforced in the environment. It's attempted to turn on BitLocker drive encryption on a
device but it fails with the error message of Access Denied: Failed to backup TPM Owner
Authorization information to Active Directory Domain Services. Errorcode:

0x80070005 or Insufficient Rights .

Cause of Access Denied or Insufficient Rights


The TPM didn't have sufficient permissions on the TPM devices container in Active
Directory Domain Services (AD DS). Therefore, the BitLocker recovery information
couldn't be backed up to AD DS, and BitLocker drive encryption couldn't turn on.

This issue appears to be limited to computers that run versions of Windows that are
earlier than Windows 10.

Resolution for Access Denied or Insufficient Rights


To verify this issue is occurring, use one of the following two methods:

Disable the policy or remove the computer from the domain followed by trying to
turn on BitLocker drive encryption again. If the operation succeeds, then the issue
was caused by the policy.

Use LDAP and network trace tools to examine the LDAP exchanges between the
client and the AD DS domain controller to identify the cause of the Access Denied
or Insufficient Rights error. In this case, an error should be displayed when the
client tries to access its object in the CN=TPM Devices,DC=<domain>,DC=com container.

1. To review the TPM information for the affected computer, open an elevated
Windows PowerShell window and run the following command:

PowerShell

Get-ADComputer -Filter {Name -like "ComputerName"} -Property * |


Format-Table name,msTPM-TPMInformationForComputer

In this command, ComputerName is the name of the affected computer.

2. To resolve the issue, use a tool such as dsacls.exe to ensure that the access control
list of msTPM-TPMInformationForComputer grants both Read and Write
permissions to NTAUTHORITY/SELF.

The TPM fails to be prepared with the error


0x80072030: There is no such object on the
server
Domain controllers were upgraded from Windows Server 2008 R2 to Windows Server
2012 R2. A group policy object (GPO) exists that enforces the Do not enable BitLocker
until recovery information is stored in AD DS policy.

It's attempted to turn on BitLocker drive encryption on a device but it fails. While
troubleshooting, the TPM management console (tpm.msc) is used to attempt to prepare
the TPM on the device. The operation fails with an error message similar to the
following error message:

0x80072030 There is no such object on the server when a policy to back up TPM
information to active directory is enabled

It's been confirmed that the ms-TPM-OwnerInformation and msTPM-


TpmInformationForComputer attributes are present.

Cause of 0x80072030: There is no such object on the


server
The domain and forest functional level of the environment may still be set to Windows
2008 R2. Additionally, the permissions in AD DS might not be correctly set.

Resolution for 0x80072030: There is no such object on


the server
The issue can be resolved with the following steps:

1. Upgrade the functional level of the domain and forest to Windows Server 2012 R2.

2. Download Add-TPMSelfWriteACE.vbs.

3. In the script, modify the value of strPathToDomain to the organization's domain


name.

4. Open an elevated PowerShell window, and run the following command:

Windows Command Prompt

cscript.exe <Path>\Add-TPMSelfWriteACE.vbs

In this command, <Path> is the path to the script file.


For more information, see the following articles:

Back up the TPM recovery information to AD DS


Prepare your organization for BitLocker: Planning and policies

Feedback
Was this page helpful? ツ Yes ト No

Provide product feedback | Get help at Microsoft Q&A


BitLocker and TPM: other known issues
Article • 11/23/2022

This article describes common issues that relate directly to the trusted platform module
(TPM), and provides guidance to address these issues.

Azure AD: Windows Hello for Business and


single sign-on don't work
Consider the following scenario:

An Azure Active Directory (Azure AD)-joined client computer can't authenticate


correctly. The computer is experiencing one or more of the following symptoms:

Windows Hello for Business doesn't work


Conditional access fails
Single sign-on (SSO) doesn't work

Additionally, in Event Viewer, the computer logs the following Event ID 1026 event
under Windows Logs > System:

Log Name: System


Source: Microsoft-Windows-TPM-WMI
Date: <Date and Time>
Event ID: 1026
Task Category: None
Level: Information
Keywords:
User: SYSTEM
Computer: <Computer name>
Description:
The Trusted Platform Module (TPM) hardware on this computer cannot be
provisioned for use automatically. To set up the TPM interactively use the TPM
management console (Start->tpm.msc) and use the action to make the TPM ready.
Error: The TPM is defending against dictionary attacks and is in a time-out period.
Additional Information: 0x840000

Cause of Azure AD: Windows Hello for Business and


single sign-on don't work
This event indicates that the TPM isn't ready or has some setting that prevents access to
the TPM keys.

Additionally, the behavior indicates that the client computer can't obtain a Primary
Refresh Token (PRT).

Resolution for Azure AD: Windows Hello for Business and


single sign-on don't work
To verify the status of the PRT, use the dsregcmd.exe /status command to collect
information. In the tool output, verify that either User state or SSO state contains the
AzureAdPrt attribute. If the value of this attribute is No, the PRT wasn't issued. If the
value of the attribute is No, it may indicate that the computer couldn't present its
certificate for authentication.

To resolve this issue, follow these steps to troubleshoot the TPM:

1. Open the TPM management console (tpm.msc) by selecting Start and entering
tpm.msc in the Search box.

2. If a notice is displayed to either unlock the TPM or reset the lockout, contact the
hardware vendor to determine whether there's a known fix for the issue.

3. If the issue is still not resolved after contacting the hardware vendor, clear and
reinitialize the TPM by following the instructions in the article Troubleshoot the
TPM: Clear all the keys from the TPM.

2 Warning

Clearing the TPM can cause data loss.

If in Step 2 there's no notice to either unlock the TPM or reset the lockout, review the
UEFI firmware/BIOS settings of the computer for any setting that can be used to reset or
disable the lockout.

TPM 1.2 Error: Loading the management


console failed. The device that is required by
the cryptographic provider isn't ready for use
Consider the following scenario:
When trying to open the TPM management console on a Windows computer that uses
TPM version 1.2, the following message is displayed:

Loading the management console failed. The device that is required by the
cryptographic provider is not ready for use.
HRESULT 0x800900300x80090030 - NTE_DEVICE_NOT_READY
The device that is required by this cryptographic provider is not ready for use.
TPM Spec version: TPM v1.2

On a different device that is running the same version of Windows, the TPM
management console can be opened.

Cause (suspected) of TPM 1.2 Error: Loading the


management console failed. The device that is required
by the cryptographic provider isn't ready for use
These symptoms indicate that the TPM has hardware or firmware issues.

Resolution for TPM 1.2 Error: Loading the management


console failed. The device that is required by the
cryptographic provider isn't ready for use
To resolve the issue:

Switch the TPM operating mode from version 1.2 to version 2.0 if the device has
this option available.

If switching the TPM from version 1.2 to version 2.0 doesn't resolve the issue, or if
the device doesn't have TPM version 2.0 available, contact the hardware vendor to
determine whether there's a UEFI firmware update/BIOS update/TPM update for
the device. If there's an update available, install the update to see if it resolves the
issue.

If updating the UEFI firmware/BIOS doesn't resolve the issue, or if there's no


update available, consider replacing the device motherboard by contacting the
hardware vendor. After the motherboard has been replaced, switch the TPM
operating mode from version 1.2 to version 2.0 if this option is available.

2 Warning

Replacing the motherboard will cause data in the TPM to be lost.


Devices don't join hybrid Azure AD because of
a TPM issue
When trying to join a device to a hybrid Azure AD, the join operation appears to fail.

To verify that the join succeeded, use the dsregcmd /status command. In the tool
output, the following attributes indicate that the join succeeded:

AzureAdJoined: YES
DomainName: <on-prem Domain name>

If the value of AzureADJoined is No, the join operation failed.

Causes and resolutions for devices don't join hybrid Azure


AD because of a TPM issue
This issue may occur when the Windows operating system isn't the owner of the TPM.
The specific fix for this issue depends on which errors or events are displayed, as shown
in the following table:

Message Reason Resolution

NTE_BAD_KEYSET TPM This issue was probably caused by a


(0x80090016/-2146893802) operation corrupted sysprep image. When creating a
failed or sysprep image, make sure to use a computer
was invalid that isn't joined to or registered in Azure AD
or hybrid Azure AD.

TPM_E_PCP_INTERNAL_ERROR Generic If the device returns this error, disable its TPM.
(0x80290407/-2144795641) TPM error. Windows 10, version 1809 and later versions,
automatically detect TPM failures and finish
the hybrid Azure AD join without using the
TPM.

TPM_E_NOTFIPS The FIPS If the device gives this error, disable its TPM.
(0x80280036/-2144862154) mode of Windows 10, version 1809 and later versions,
the TPM is automatically detect TPM failures and finish
currently the hybrid Azure AD join without using the
not TPM.
supported.

NTE_AUTHENTICATION_IGNORED The TPM is This error is transient. Wait for the cooldown
(0x80090031/-2146893775) locked out. period, and then retry the join operation.
For more information about TPM issues, see the following articles:

TPM fundamentals: Anti-hammering


Troubleshooting hybrid Azure Active Directory-joined devices
Troubleshoot the TPM

Feedback
Was this page helpful? ツ Yes ト No

Provide product feedback | Get help at Microsoft Q&A


Decode Measured Boot logs to track
PCR changes
Article • 03/21/2023

Platform Configuration Registers (PCRs) are memory locations in the Trusted Platform
Module (TPM). BitLocker and its related technologies depend on specific PCR
configurations. Additionally, specific change in PCRs can cause a device or computer to
enter BitLocker recovery mode.

By tracking changes in the PCRs, and identifying when they changed, insight can be
gained into issues that occur or learn why a device or computer entered BitLocker
recovery mode. The Measured Boot logs record PCR changes and other information.
These logs are located in the *C:\Windows\Logs\MeasuredBoot* folder.

This article describes tools that can be used to decode these logs:

TBSLogGenerator.exe
PCPTool.exe

For more information about Measured Boot and PCRs, see the following articles:

TPM fundamentals: Measured Boot with support for attestation


Understanding PCR banks on TPM 2.0 devices

Use TBSLogGenerator.exe to decode Measured


Boot logs
Use TBSLogGenerator.exe to decode Measured Boot logs that were collected from
Windows. TBSLogGenerator.exe can be installed on the following systems:

A computer that is running Windows Server 2016 or newer and that has a TPM
enabled
A Gen 2 virtual machine running on Hyper-V that is running Windows Server 2016
or newer and is using a virtual TPM.

To install the tool, follow these steps:

1. Download the Windows Hardware Lab Kit from Windows Hardware Lab Kit.

2. After downloading, run the installation file from the path where the install was
downloaded to.
3. Accept the default installation path.

4. Under Select the features you want to install, select Windows Hardware Lab Kit—
Controller + Studio.

5. Finish the installation.

To use TBSLogGenerator.exe, follow these steps:

1. After the installation finishes, open an elevated Command Prompt window and
navigate to the following folder:

C:\Program Files (x86)\Windows Kits\10\Hardware Lab


Kit\Tests\amd64\NTTEST\BASETEST\ngscb

This folder contains the TBSLogGenerator.exe file.


2. Run the following command:

Windows Command Prompt

TBSLogGenerator.exe -LF <LogFolderName>\<LogFileName>.log >


<DestinationFolderName>\<DecodedFileName>.txt

where the variables represent the following values:

<LogFolderName> = the name of the folder that contains the file to be


decoded
<LogFileName> = the name of the file to be decoded
<DestinationFolderName> = the name of the folder for the decoded text file
<DecodedFileName> = the name of the decoded text file

For example, the following figure shows Measured Boot logs that were collected
from a Windows 10 computer and put into the C:\MeasuredBoot\ folder. The figure
also shows a Command Prompt window and the command to decode the
0000000005-0000000000.log file:

Windows Command Prompt

TBSLogGenerator.exe -LF C:\MeasuredBoot\0000000005-0000000000.log >


C:\MeasuredBoot\0000000005-0000000000.txt
The command produces a text file that uses the specified name. In this example,
the file is 0000000005-0000000000.txt. The file is located in the same folder as the
original .log file.

The content of this text file is similar to the following text:


To find the PCR information, go to the end of the file.

Use PCPTool.exe to decode Measured Boot


logs

7 Note

PCPTool.exe is a Visual Studio solution, but executable needs to be built before tool
can be used.

PCPTool.exe is part of the TPM Platform Crypto-Provider Toolkit . The tool decodes a
Measured Boot log file and converts it into an XML file.

To download and install PCPTool.exe, go to the Toolkit page, select Download, and
follow the instructions.

To decode a log, run the following command:

Windows Command Prompt

PCPTool.exe decodelog <LogFolderPath>\<LogFileName>.log >


<DestinationFolderName>\<DecodedFileName>.xml

where the variables represent the following values:

<LogFolderPath> = the path to the folder that contains the file to be decoded
<LogFileName> = the name of the file to be decoded
<DestinationFolderName> = the name of the folder for the decoded text file
<DecodedFileName> = the name of the decoded text file

The content of the XML file will be similar to the following XML:

Feedback
Was this page helpful? ツ Yes ト No

Provide product feedback | Get help at Microsoft Q&A


Encrypted Hard Drive
Article • 06/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Encrypted hard drive uses the rapid encryption that is provided by BitLocker drive
encryption to enhance data security and management.

By offloading the cryptographic operations to hardware, Encrypted hard drives increase


BitLocker performance and reduce CPU usage and power consumption. Because
Encrypted hard drives encrypt data quickly, enterprise devices can expand BitLocker
deployment with minimal impact on productivity.

Encrypted hard drives are a new class of hard drives that are self-encrypting at a
hardware level and allow for full disk hardware encryption. You can install Windows to
encrypted hard drives without additional modification, beginning with Windows 8 and
Windows Server 2012.

Encrypted hard drives provide:

Better performance: Encryption hardware, integrated into the drive controller,


allows the drive to operate at full data rate with no performance degradation.
Strong security based in hardware: Encryption is always "on" and the keys for
encryption never leave the hard drive. User authentication is performed by the
drive before it will unlock, independently of the operating system
Ease of use: Encryption is transparent to the user, and the user doesn't need to
enable it. Encrypted Hard Drives are easily erased using on-board encryption key;
there's no need to re-encrypt data on the drive.
Lower cost of ownership: There's no need for new infrastructure to manage
encryption keys, since BitLocker uses your existing infrastructure to store recovery
information. Your device operates more efficiently because processor cycles don't
need to be used for the encryption process.

Encrypted hard drives are supported natively in the operating system through the
following mechanisms:

Identification: The operating system identifies that the drive is an Encrypted hard
drive device type.
Activation: The operating system disk management utility activates, creates and
maps volumes to ranges/bands as appropriate.
Configuration: The operating system creates and maps volumes to ranges/bands
as appropriate.
API: API support for applications to manage Encrypted hard drives independent of
BitLocker drive encryption (BDE).
BitLocker support: Integration with the BitLocker Control Panel provides a
seamless BitLocker end-user experience.

2 Warning

Self-encrypting hard drives and encrypted hard drives for Windows are not the
same type of devices. Encrypted hard drives for Windows require compliance for
specific TCG protocols as well as IEEE 1667 compliance; Self-encrypting hard drives
do not have these requirements. It is important to confirm that the device type is
an encrypted hard drive for Windows when planning for deployment.

If you're a storage device vendor who is looking for more info on how to implement
Encrypted Hard Drive, see the Encrypted Hard Drive Device Guide.

Windows edition and licensing requirements


The following table lists the Windows editions that support Encrypted hard drive:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Encrypted hard drive license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

System Requirements
To use encrypted hard drives, the following system requirements apply:

For an encrypted hard drive used as a data drive:

The drive must be in an uninitialized state.


The drive must be in a security inactive state.
For an encrypted hard drive used as a startup drive:

The drive must be in an uninitialized state.


The drive must be in a security inactive state.
The computer must be UEFI 2.3.1 based and have the
EFI_STORAGE_SECURITY_COMMAND_PROTOCOL defined. (This protocol is used to
allow programs running in the EFI boot services environment to send security
protocol commands to the drive).
The computer must have the compatibility support module (CSM) disabled in UEFI.
The computer must always boot natively from UEFI.

2 Warning

All encrypted hard drives must be attached to non-RAID controllers to function


properly.

Technical overview
Rapid encryption in BitLocker directly addresses the security needs of enterprises while
offering improved performance. In versions of Windows earlier than Windows Server
2012, BitLocker required a two-step process to complete read/write requests. In
Windows Server 2012, Windows 8, or later versions, encrypted hard drives offload the
cryptographic operations to the drive controller for much greater efficiency. When the
operating system identifies an encrypted hard drive, it activates the security mode. This
activation lets the drive controller generate a media key for every volume that the host
computer creates. This media key, which is never exposed outside the disk, is used to
rapidly encrypt or decrypt every byte of data that is sent or received from the disk.

Configuring encrypted hard drives as startup


drives
Configuration of encrypted hard drives as startup drives is done using the same
methods as standard hard drives. These methods include:

Deploy from media: Configuration of Encrypted Hard Drives happens


automatically through the installation process.
Deploy from network: This deployment method involves booting a Windows PE
environment and using imaging tools to apply a Windows image from a network
share. Using this method, the Enhanced Storage optional component needs to be
included in the Windows PE image. You can enable this component using Server
Manager, Windows PowerShell, or the DISM command line tool. If this component
isn't present, configuration of Encrypted Hard Drives won't work.
Deploy from server: This deployment method involves PXE booting a client with
Encrypted Hard Drives present. Configuration of Encrypted Hard Drives happens
automatically in this environment when the Enhanced Storage component is
added to the PXE boot image. During deployment, the
TCGSecurityActivationDisabled setting in unattend.xml controls the encryption
behavior of Encrypted Hard Drives.
Disk Duplication: This deployment method involves use of a previously configured
device and disk duplication tools to apply a Windows image to an Encrypted Hard
Drive. Disks must be partitioned using at least Windows 8 or Windows Server 2012
for this configuration to work. Images made using disk duplicators won't work.

Configuring hardware-based encryption with


group policy
There are three related Group Policy settings that help you manage how BitLocker uses
hardware-based encryption and which encryption algorithms to use. If these settings
aren't configured or disabled on systems that are equipped with encrypted drives,
BitLocker uses software-based encryption:

Configure use of hardware-based encryption for fixed data drives


Configure use of hardware-based encryption for removable data drives
Configure use of hardware-based encryption for operating system drives

Encrypted hard drive architecture


Encrypted hard drives utilize two encryption keys on the device to control the locking
and unlocking of data on the drive. These encryption keys are the data encryption key
(DEK) and the authentication key (AK).

The Data Encryption Key is the key used to encrypt all of the data on the drive. The drive
generates the DEK and it never leaves the device. It's stored in an encrypted format at a
random location on the drive. If the DEK is changed or erased, data encrypted using the
DEK is irrecoverable.

The AK is the key used to unlock data on the drive. A hash of the key is stored on the
drive and requires confirmation to decrypt the DEK.

When a computer with an encrypted hard drive is in a powered-off state, the drive locks
automatically. As a computer powers on, the device remains in a locked state and is only
unlocked after the AK decrypts the DEK. Once the AK decrypts the DEK, read-write
operations can take place on the device.

When writing data to the drive, it passes through an encryption engine before the write
operation completes. Likewise, reading data from the drive requires the encryption
engine to decrypt the data before passing that data back to the user. If the AK needs to
be changed or erased, the data on the drive doesn't need to be re-encrypted. A new
Authentication Key needs to be created and it will re-encrypt the DEK. Once completed,
the DEK can now be unlocked using the new AK, and read-writes to the volume can
continue.

Reconfiguring encrypted hard drives


Many encrypted hard drive devices come pre-configured for use. If reconfiguration of
the drive is required, use the following procedure after removing all available volumes
and reverting the drive to an uninitialized state:

1. Open Disk Management ( diskmgmt.msc )


2. Initialize the disk and select the appropriate partition style (MBR or GPT)
3. Create one or more volumes on the disk.
4. Use the BitLocker setup wizard to enable BitLocker on the volume.
Personal Data Encryption (PDE)
Article • 08/25/2023 • Applies to: ✅ Windows 11

Starting in Windows 11, version 22H2, Personal Data Encryption (PDE) is a security
feature that provides file-based data encryption capabilities to Windows.

PDE utilizes Windows Hello for Business to link data encryption keys with user
credentials. When a user signs in to a device using Windows Hello for Business,
decryption keys are released, and encrypted data is accessible to the user.
When a user logs off, decryption keys are discarded and data is inaccessible, even if
another user signs into the device.

The use of Windows Hello for Business offers the following advantages:

It reduces the number of credentials to access encrypted content: users only need
to sign-in with Windows Hello for Business
The accessibility features available when using Windows Hello for Business extend
to PDE protected content

PDE differs from BitLocker in that it encrypts files instead of whole volumes and disks.
PDE occurs in addition to other encryption methods such as BitLocker.
Unlike BitLocker that releases data encryption keys at boot, PDE doesn't release data
encryption keys until a user signs in using Windows Hello for Business.

Prerequisites
To use PDE, the following prerequisites must be met:

Windows 11, version 22H2 and later


The devices must be Azure AD joined. Domain-joined and hybrid Azure AD joined
devices aren't supported
Users must sign in using Windows Hello for Business

) Important

If you sign in with a password or a security key, you can't access PDE protected
content.

Windows edition and licensing requirements


The following table lists the Windows editions that support Personal data encryption
(PDE):

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

No Yes No Yes

Personal data encryption (PDE) license entitlements are granted by the following
licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

No Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

PDE protection levels


PDE uses AES-CBC with a 256-bit key to protect content and offers two levels of
protection. The level of protection is determined based on the organizational needs.
These levels can be set via the PDE APIs.

Item Level 1 Level 2

PDE protected data accessible when user Yes Yes


has signed in via Windows Hello for
Business

PDE protected data is accessible at Yes Data is accessible for one minute
Windows lock screen after lock, then it's no longer
available

PDE protected data is accessible after user No No


signs out of Windows

PDE protected data is accessible when No No


device is shut down

PDE protected data is accessible via UNC No No


paths

PDE protected data is accessible when No No


signing with Windows password instead
of Windows Hello for Business
Item Level 1 Level 2

PDE protected data is accessible via No No


Remote Desktop session

Decryption keys used by PDE discarded After user signs One minute after Windows lock
out of Windows screen is engaged or after user
signs out of Windows

PDE protected content accessibility


When a file is protected with PDE, its icon will show a padlock. If the user hasn't signed
in locally with Windows Hello for Business or an unauthorized user attempts to access
PDE protected content, they'll be denied access to the content.

Scenarios where a user will be denied access to PDE protected content include:

User has signed into Windows via a password instead of signing in with Windows
Hello for Business biometric or PIN
If protected via level 2 protection, when the device is locked
When trying to access content on the device remotely. For example, UNC network
paths
Remote Desktop sessions
Other users on the device who aren't owners of the content, even if they're signed
in via Windows Hello for Business and have permissions to navigate to the PDE
protected content

Differences between PDE and BitLocker


PDE is meant to work alongside BitLocker. PDE isn't a replacement for BitLocker, nor is
BitLocker a replacement for PDE. Using both features together provides better security
than using either BitLocker or PDE alone. However there are differences between
BitLocker and PDE and how they work. These differences are why using them together
offers better security.

Item PDE BitLocker

Release of decryption At user sign-in via Windows Hello At boot


key for Business

Decryption keys When user signs out of Windows At shutdown


discarded or one minute after Windows lock
screen is engaged
Item PDE BitLocker

Protected content All files in protected folders Entire volume/drive

Authentication to Windows Hello for Business When BitLocker with TPM + PIN is
access protected enabled, BitLocker PIN plus
content Windows sign-in

Differences between PDE and EFS


The main difference between protecting files with PDE instead of EFS is the method they
use to protect the file. PDE uses Windows Hello for Business to secure the keys that
protect the files. EFS uses certificates to secure and protect the files.

To see if a file is protected with PDE or with EFS:

1. Open the properties of the file


2. Under the General tab, select Advanced...
3. In the Advanced Attributes windows, select Details

For PDE protected files, under Protection status: there will be an item listed as Personal
Data Encryption is: and it will have the attribute of On.

For EFS protected files, under Users who can access this file:, there will be a Certificate
thumbprint next to the users with access to the file. There will also be a section at the
bottom labeled Recovery certificates for this file as defined by recovery policy:.

Encryption information including what encryption method is being used to protect the
file can be obtained with the cipher.exe /c command.

Recommendations for using PDE


The following are recommendations for using PDE:

Enable BitLocker Drive Encryption. Although PDE works without BitLocker, it's
recommended to enable BitLocker. PDE is meant to work alongside BitLocker for
increased security at it isn't a replacement for BitLocker
Backup solution such as OneDrive in Microsoft 365. In certain scenarios, such as
TPM resets or destructive PIN resets, the keys used by PDE to protect content will
be lost making any PDE-protected content inaccessible. The only way to recover
such content is from a backup. If the files are synced to OneDrive, to regain access
you must re-sync OneDrive
Windows Hello for Business PIN reset service. Destructive PIN resets will cause keys
used by PDE to protect content to be lost, making any content protected with PDE
inaccessible. After a destructive PIN reset, content protected with PDE must be
recovered from a backup. For this reason, Windows Hello for Business PIN reset
service is recommended since it provides non-destructive PIN resets
Windows Hello Enhanced Sign-in Security offers additional security when
authenticating with Windows Hello for Business via biometrics or PIN

Windows out of box applications that support


PDE
Certain Windows applications support PDE out of the box. If PDE is enabled on a device,
these applications will utilize PDE:

App name Details

Mail Supports protecting both email bodies and attachments

Next steps
Learn about the available options to configure Personal Data Encryption (PDE) and
how to configure them via Microsoft Intune or configuration Service Provider
(CSP): PDE settings and configuration
Review the Personal Data Encryption (PDE) FAQ
PDE settings and configuration
Article • 08/25/2023 • Applies to: ✅ Windows 11

This article describes the Personal Data Encryption (PDE) settings and how to configure them
via Microsoft Intune or Configuration Service Providers (CSP).

7 Note

PDE can be configured using MDM policies. The content to be protected by PDE can be
specified using PDE APIs. There is no user interface in Windows to either enable PDE or
protect content using PDE.

The PDE APIs can be used to create custom applications and scripts to specify which
content to protect and at what level to protect the content. Additionally, the PDE APIs
can't be used to protect content until the PDE policy has been enabled.

PDE settings
The following table lists the required settings to enable PDE.

Setting name Description

Enable Personal Data Encryption PDE isn't enabled by default. Before PDE can be used, you
must enable it.

Sign-in and lock last interactive user Winlogon automatic restart sign-on (ARSO) isn't supported
automatically after a restart for use with PDE. To use PDE, ARSO must be disabled.

PDE hardening recommendations


The following table lists the recommended settings to improve PDE's security.

Setting name Description

Kernel-mode crash Kernel-mode crash dumps and live dumps can potentially cause the keys
dumps and live dumps used by PDE to protect content to be exposed. For greatest security, disable
kernel-mode crash dumps and live dumps.

Windows Error Disabling Windows Error Reporting prevents user-mode crash dumps. User-
Reporting (WER)/user- mode crash dumps can potentially cause the keys used by PDE to protect
mode crash dumps content to be exposed. For greatest security, disable user-mode crash
dumps.
Setting name Description

Hibernation Hibernation files can potentially cause the keys used by Personal Data
Encryption (PDE) to protect content to be exposed. For greatest security,
disable hibernation.

Allow users to select When this policy isn't configured on Azure AD joined devices, users on a
when a password is Connected Standby device can change the amount of time after the device´s
required when screen turns off before a password is required to wake the device. During
resuming from the time when the screen turns off but a password isn't required, the keys
connected standby used by PDE to protect content could potentially be exposed. It's
recommended to explicitly disable this policy on Azure AD joined devices.

Configure PDE with Microsoft Intune


To configure devices using Microsoft Intune, create a Settings catalog policy and use the
following settings:

Category Setting name Value

PDE Enable Personal Data Encryption (User) Enable Personal


Data Encryption

Administrative Templates > Windows Sign-in and lock last interactive user Disabled
Components > Windows Logon automatically after a restart
Options

Memory Dump Allow Live Dump Block

Memory Dump Allow Crash Dump Block

Administrative Templates > Windows Disable Windows Error Reporting Enabled


Components > Windows Error
Reporting

Power Allow Hibernate Block

Administrative Templates > System > Allow users to select when a password is Disabled
Logon required when resuming from connected
standby

Assign the policy to a group that contains as members the devices or users that you want to
configure.

 Tip

Use the following Graph call to automatically create the settings catalog policy in your
tenant without assignments nor scope tags.
When using this call, authenticate to your tenant in the Graph Explorer window. If it's
the first time using Graph Explorer, you may need to authorize the application to access
your tenant or to modify the existing permissions. This graph call requires
DeviceManagementConfiguration.ReadWrite.All permissions.

HTTP

POST https://graph.microsoft.com/beta/deviceManagement/configurationPolicies
Content-Type: application/json

{ "id": "00-0000-0000-0000-000000000000", "name": "_MSLearn_PDE", "description":


"", "platforms": "windows10", "technologies": "mdm", "roleScopeTagIds": [ "0" ],
"settings": [ { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationSetting", "settingInstance": {
"@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance",
"settingDefinitionId":
"device_vendor_msft_policy_config_admx_credentialproviders_allowdomaindelaylock"
, "choiceSettingValue": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingValue", "value":
"device_vendor_msft_policy_config_admx_credentialproviders_allowdomaindelaylock_
0", "children": [] } } }, { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationSetting", "settingInstance": {
"@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance",
"settingDefinitionId":
"device_vendor_msft_policy_config_errorreporting_disablewindowserrorreporting",
"choiceSettingValue": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingValue", "value":
"device_vendor_msft_policy_config_errorreporting_disablewindowserrorreporting_1"
, "children": [] } } }, { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationSetting", "settingInstance": {
"@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance",
"settingDefinitionId":
"device_vendor_msft_policy_config_windowslogon_allowautomaticrestartsignon",
"choiceSettingValue": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingValue", "value":
"device_vendor_msft_policy_config_windowslogon_allowautomaticrestartsignon_0",
"children": [] } } }, { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationSetting", "settingInstance": {
"@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance",
"settingDefinitionId":
"device_vendor_msft_policy_config_memorydump_allowcrashdump",
"choiceSettingValue": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingValue", "value":
"device_vendor_msft_policy_config_memorydump_allowcrashdump_0", "children": [] }
} }, { "@odata.type": "#microsoft.graph.deviceManagementConfigurationSetting",
"settingInstance": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance",
"settingDefinitionId":
"device_vendor_msft_policy_config_memorydump_allowlivedump",
"choiceSettingValue": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingValue", "value":
"device_vendor_msft_policy_config_memorydump_allowlivedump_0", "children": [] }
} }, { "@odata.type": "#microsoft.graph.deviceManagementConfigurationSetting",
"settingInstance": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance",
"settingDefinitionId": "user_vendor_msft_pde_enablepersonaldataencryption",
"choiceSettingValue": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingValue", "value":
"user_vendor_msft_pde_enablepersonaldataencryption_1", "children": [] } } }, {
"@odata.type": "#microsoft.graph.deviceManagementConfigurationSetting",
"settingInstance": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingInstance",
"settingDefinitionId": "device_vendor_msft_policy_config_power_allowhibernate",
"choiceSettingValue": { "@odata.type":
"#microsoft.graph.deviceManagementConfigurationChoiceSettingValue", "value":
"device_vendor_msft_policy_config_power_allowhibernate_0", "children": [] } } }
] }

Configure PDE with CSP


Alternatively, you can configure devices using the Policy CSP and PDE CSP.

OMA-URI Format Value

./User/Vendor/MSFT/PDE/EnablePersonalDataEncryption int 1

./Device/Vendor/MSFT/Policy/Config/WindowsLogon/AllowAutomaticRestartSignOn string <disabled/>

./Device/Vendor/MSFT/Policy/Config/MemoryDump/AllowCrashDump int 0

./Device/Vendor/MSFT/Policy/Config/MemoryDump/AllowLiveDump int 0

./Device/Vendor/MSFT/Policy/Config/ErrorReporting/DisableWindowsErrorReporting string <enabled/>

./Device/Vendor/MSFT/Policy/Config/Power/AllowHibernate int 0

./Device/Vendor/MSFT/Policy/Config/ADMX_CredentialProviders/AllowDomainDelayLock string <disabled/>

Disable PDE
Once PDE is enabled, it isn't recommended to disable it. However if you need to disable PDE,
you can do so using the following steps.

Disable PDE with a settings catalog policy in Intune


To configure devices using Microsoft Intune, create a Settings catalog policy and use the
following settings:
Category Setting name Value

PDE Enable Personal Data Encryption (User) Disable Personal Data Encryption

Assign the policy to a group that contains as members the devices or users that you want to
configure.

Disable PDE with CSP


You can disable PDE with CSP using the following setting:

OMA-URI Format Value

./User/Vendor/MSFT/PDE/EnablePersonalDataEncryption int 0

Decrypt PDE-encrypted content


Disabling PDE doesn't decrypt any PDE protected content. It only prevents the PDE API from
being able to protect any additional content. PDE-protected files can be manually decrypted
using the following steps:

1. Open the properties of the file


2. Under the General tab, select Advanced...
3. Uncheck the option Encrypt contents to secure data
4. Select OK, and then OK again

PDE-protected files can also be decrypted using cipher.exe, which can be helpful in the
following scenarios:

Decrypting a large number of files on a device


Decrypting files on multiple of devices

To decrypt files on a device using cipher.exe :

Decrypt all files under a directory including subdirectories:

Windows Command Prompt

cipher.exe /d /s:<path_to_directory>

Decrypt a single file or all of the files in the specified directory, but not any
subdirectories:

Windows Command Prompt


cipher.exe /d <path_to_file_or_directory>

) Important

Once a user selects to manually decrypt a file, the user won't be able to manually
protect the file again using PDE.

Next steps
Review the Personal Data Encryption (PDE) FAQ
Frequently asked questions for
Personal Data Encryption (PDE)
FAQ • Applies to: ✅ Windows 11

Here are some answers to common questions regarding Personal Data Encryption (PDE)

Can PDE encrypt entire volumes or


drives?
No. PDE only encrypts specified files and content.

Is PDE a replacement for BitLocker?


No. It's still recommended to encrypt all volumes with BitLocker Drive Encryption for
increased security.

How are files and content protected by


PDE selected?
PDE APIs are used to select which files and content are protected using PDE.

Do I need to use OneDrive in Microsoft


365 as my backup provider?
No. PDE doesn't have a requirement for a backup provider, including OneDrive in
Microsoft 365. However, backups are recommended in case the keys used by PDE to
protect files are lost. OneDrive in Microsoft 365 is a recommended backup provider.

What is the relation between Windows


Hello for Business and PDE?
During user sign-on, Windows Hello for Business unlocks the keys that PDE uses to
protect content.
Can a file be protected with both PDE
and EFS at the same time?
No. PDE and EFS are mutually exclusive.

Can PDE protected content be accessed


after signing on via a Remote Desktop
connection (RDP)?
No. Accessing PDE protected content over RDP isn't currently supported.

Can PDE protected content be accessed


via a network share?
No. PDE protected content can only be accessed after signing on locally to Windows
with Windows Hello for Business credentials.

Can users manually encrypt and decrypt


files with PDE?
Currently users can decrypt files manually but they can't encrypt files manually. For
information on how a user can manually decrypt a file, see the section Decrypt PDE-
encrypted content.

If a user signs into Windows with a


password instead of Windows Hello for
Business, will they be able to access
their PDE protected content?
No. The keys used by PDE to protect content are protected by Windows Hello for
Business credentials and will only be unlocked when signing on with Windows Hello for
Business PIN or biometrics.
What encryption method and strength
does PDE use?
PDE uses AES-CBC with a 256-bit key to encrypt content.
Configure S/MIME for Windows
Article • 05/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Secure/Multipurpose Internet Mail Extensions (S/MIME) provides an added layer of


security for email sent to and from an Exchange ActiveSync (EAS) account. S/MIME
enables users to encrypt outgoing messages and attachments so that only intended
recipients can read them. To read the messages, recipients must have a digital
identification (ID), also known as a certificate.
Users can digitally sign a message, which provides the recipients with a way to verify the
identity of the sender and that the message hasn't been tampered with.

Message encryption
Users can send encrypted message to recipients that have an encryption certificate.
Users can only read encrypted messages if the message is received on their Exchange
account, and they have corresponding decryption keys.

Encrypted messages can be read only by recipients who have a certificate. If you try to
send an encrypted message to recipients whose encryption certificate isn't available, the
app prompts you to remove these recipients before sending the email.

Digital signatures
A digitally signed message reassures the recipient that the message hasn't been
tampered with, and verifies the identity of the sender. Recipients can only verify the
digital signature if they're using an email client that supports S/MIME.

Windows edition and licensing requirements


The following table lists the Windows editions that support Email Encryption (S/MIME):

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Email Encryption (S/MIME) license entitlements are granted by the following licenses:
Windows Pro/Pro Windows Windows Windows Windows
Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Prerequisites
S/MIME is enabled for Exchange accounts (on-premises and Exchange Online).
Users can't use S/MIME signing and encryption with a personal account such as
Outlook.com
Valid Personal Information Exchange (PFX) certificates are installed on the device
How to Create PFX Certificate Profiles in Configuration Manager
Use certificates for authentication in Microsoft Intune

Choose S/MIME settings


On the device, perform the following steps: (add select certificate)

1. Open the Mail app

2. Open Settings > Email security

3. In Select an account, select the account for which you want to configure S/MIME
options

4. Make a certificate selection for digital signature and encryption


Select Automatically to let the app choose the certificate
Select Manually to specify the certificate yourself from the list of valid
certificates on the device

5. (Optional) Select Always sign with S/MIME, Always encrypt with S/MIME, or both,
to automatically digitally sign or encrypt all outgoing messages

7 Note

The option to sign or encrypt can be changed for individual messages, unless
EAS policies prevent it.

6. Select the back arrow

Encrypt or sign individual messages


1. While composing a message, select Options from the ribbon

2. Use Sign and Encrypt icons to turn on digital signature and encryption for this
message

Read signed or encrypted messages


When you receive an encrypted message, the mail app checks whether there's a
certificate available on your computer. If there's a certificate available, the message is
decrypted when you open it. If your certificate is stored on a smartcard, you'll be
prompted to insert the smartcard to read the message. Your smartcard may also require
a PIN to access the certificate.

Install certificates from a received message


When you receive a signed email, the app provides a feature to install corresponding
encryption certificate on your device if the certificate is available. This certificate can
then be used to send encrypted email to this person.

1. Open a signed email


2. Select the digital signature icon in the reading pane
3. Select Install.
Protect your enterprise data using
Windows Information Protection (WIP)
Article • 12/09/2022

---author: aczechowski ms.author: aaroncz


ms.prod: windows ms.topic: include ms.date:
07/20/2022

7 Note

Starting in July 2022, Microsoft is deprecating Windows Information Protection


(WIP). Microsoft will continue to support WIP on supported versions of Windows.
New versions of Windows won't include new capabilities for WIP, and it won't be
supported in future versions of Windows. For more information, see Announcing
sunset of Windows Information Protection .

For your data protection needs, Microsoft recommends that you use Microsoft
Purview Information Protection and Microsoft Purview Data Loss Prevention.
Purview simplifies the configuration set-up and provides an advanced set of
capabilities.

Applies to:

Windows 10
Windows 11

With the increase of employee-owned devices in the enterprise, there's also an


increasing risk of accidental data leak through apps and services, like email, social
media, and the public cloud, which are outside of the enterprise's control. For example,
when an employee sends the latest engineering pictures from their personal email
account, copies and pastes product info into a tweet, or saves an in-progress sales
report to their public cloud storage.

Windows Information Protection (WIP), previously known as enterprise data protection


(EDP), helps to protect against this potential data leakage without otherwise interfering
with the employee experience. WIP also helps to protect enterprise apps and data
against accidental data leak on enterprise-owned devices and personal devices that
employees bring to work without requiring changes to your environment or other apps.
Azure Rights Management, another data protection technology, also works alongside
WIP. It extend data protection for data that leaves the device, such as when email
attachments are sent from an enterprise aware version of a rights management mail
client.

) Important

While Windows Information Protection can stop accidental data leaks from honest
employees, it is not intended to stop malicious insiders from removing enterprise
data. For more information about the benefits WIP provides, see Why use WIP?
later in this topic.

Video: Protect enterprise data from being


accidentally copied to the wrong place
https://www.microsoft.com/en-us/videoplayer/embed/RE2IGhh?postJsllMsg=true

Prerequisites
You'll need this software to run Windows Information Protection in your enterprise:

Operating Management solution


system

Windows 10, Microsoft Intune


version 1607
or later -OR-

Microsoft Configuration Manager

-OR-

Your current company-wide third party mobile device management (MDM)


solution. For info about third party MDM solutions, see the documentation that
came with your product. If your third party MDM doesn't have UI support for
the policies, refer to the EnterpriseDataProtection CSP documentation.

What is enterprise data control?


Effective collaboration means that you need to share data with others in your enterprise.
This sharing can be from one extreme where everyone has access to everything without
any security. Another extreme is when people can't share anything and it's all highly
secured. Most enterprises fall somewhere in between the two extremes, where success is
balanced between providing the necessary access with the potential for improper data
disclosure.

As an admin, you can address the question of who gets access to your data by using
access controls, such as employee credentials. However, just because someone has the
right to access your data doesn't guarantee that the data will remain within the secured
locations of the enterprise. So, access controls are a great start, they're not enough.

In the end, all of these security measures have one thing in common: employees will
tolerate only so much inconvenience before looking for ways around the security
restrictions. For example, if you don't allow employees to share files through a protected
system, employees will turn to an outside app that more than likely lacks security
controls.

Using data loss prevention systems


To help address this security insufficiency, companies developed data loss prevention
(also known as DLP) systems. Data loss prevention systems require:

A set of rules about how the system can identify and categorize the data that
needs to be protected. For example, a rule set might contain a rule that identifies
credit card numbers and another rule that identifies Social Security numbers.

A way to scan company data to see whether it matches any of your defined
rules. Currently, Microsoft Exchange Server and Exchange Online provide this
service for email in transit, while Microsoft SharePoint and SharePoint Online
provide this service for content stored in document libraries.

The ability to specify what happens when data matches a rule, including whether
employees can bypass enforcement. For example, in Microsoft SharePoint and
SharePoint Online, the Microsoft Purview Data Loss Prevention system lets you
warn your employees that shared data includes sensitive info, and to share it
anyway (with an optional audit log entry).

Unfortunately, data loss prevention systems have their own problems. For example, the
less detailed the rule set, the more false positives are created. This behavior can lead
employees to believe that the rules slow down their work and need to be bypassed in
order to remain productive, potentially leading to data being incorrectly blocked or
improperly released. Another major problem is that data loss prevention systems must
be widely implemented to be effective. For example, if your company uses a data loss
prevention system for email, but not for file shares or document storage, you might find
that your data leaks through the unprotected channels. Perhaps the biggest problem
with data loss prevention systems is that it provides a jarring experience that interrupts
the employees' natural workflow. It can stop some operations (such as sending a
message with an attachment that the system tags as sensitive) while allowing others,
often according to subtle rules that the employee doesn't see and can't understand.

Using information rights management systems


To help address the potential data loss prevention system problems, companies
developed information rights management (also known as IRM) systems. Information
rights management systems embed protection directly into documents, so that when an
employee creates a document, he or she determines what kind of protection to apply.
For example, an employee can choose to stop the document from being forwarded,
printed, shared outside of the organization, and so on.

After the type of protection is set, the creating app encrypts the document so that only
authorized people can open it, and even then, only in compatible apps. After an
employee opens the document, the app becomes responsible for enforcing the
specified protections. Because protection travels with the document, if an authorized
person sends it to an unauthorized person, the unauthorized person won't be able to
read or change it. However, for this to work effectively information rights management
systems require you to deploy and set up both a server and client environment. And,
because only compatible clients can work with protected documents, an employees'
work might be unexpectedly interrupted if he or she attempts to use a non-compatible
app.

And what about when an employee leaves the company


or unenrolls a device?
Finally, there's the risk of data leaking from your company when an employee leaves or
unenrolls a device. Previously, you would erase all of the corporate data from the device,
along with any other personal data on the device.

Benefits of WIP
Windows Information Protection provides:

Obvious separation between personal and corporate data, without requiring


employees to switch environments or apps.
Additional data protection for existing line-of-business apps without a need to
update the apps.

Ability to wipe corporate data from Intune MDM enrolled devices while leaving
personal data alone.

Use of audit reports for tracking issues and remedial actions.

Integration with your existing management system (Microsoft Intune, Microsoft


Configuration Manager, or your current mobile device management (MDM)
system) to configure, deploy, and manage Windows Information Protection for
your company.

Why use WIP?


Windows Information Protection is the mobile application management (MAM)
mechanism on Windows 10. WIP gives you a new way to manage data policy
enforcement for apps and documents on Windows 10 desktop operating systems, along
with the ability to remove access to enterprise data from both enterprise and personal
devices (after enrollment in an enterprise management solution, like Intune).

Change the way you think about data policy enforcement. As an enterprise
admin, you need to maintain compliance in your data policy and data access.
Windows Information Protection helps protect enterprise on both corporate and
employee-owned devices, even when the employee isn't using the device. When
employees create content on an enterprise-protected device, they can choose to
save it as a work document. If it's a work document, it becomes locally maintained
as enterprise data.

Manage your enterprise documents, apps, and encryption modes.

Copying or downloading enterprise data. When an employee or an app


downloads content from a location like SharePoint, a network share, or an
enterprise web location, while using a WIP-protected device, WIP encrypts the
data on the device.

Using protected apps. Managed apps (apps that you've included on the
Protected apps list in your WIP policy) are allowed to access your enterprise
data and will interact differently when used with unallowed, non-enterprise
aware, or personal-only apps. For example, if WIP management is set to Block,
your employees can copy and paste from one protected app to another
protected app, but not to personal apps. Imagine an HR person wants to copy a
job description from a protected app to the internal career website, an
enterprise-protected location, but makes a mistake and tries to paste into a
personal app instead. The paste action fails and a notification pops up, saying
that the app couldn't paste because of a policy restriction. The HR person then
correctly pastes to the career website without a problem.

Managed apps and restrictions. With WIP you can control which apps can
access and use your enterprise data. After adding an app to your protected
apps list, the app is trusted with enterprise data. All apps not on this list are
stopped from accessing your enterprise data, depending on your WIP
management-mode.

You don't have to modify line-of-business apps that never touch personal data
to list them as protected apps; just include them in the protected apps list.

Deciding your level of data access. WIP lets you block, allow overrides, or audit
employees' data sharing actions. Hiding overrides stops the action immediately.
Allowing overrides lets the employee know there's a risk, but lets him or her
continue to share the data while recording and auditing the action. Silent just
logs the action without stopping anything that the employee could have
overridden while using that setting; collecting info that can help you to see
patterns of inappropriate sharing so you can take educative action or find apps
that should be added to your protected apps list. For info about how to collect
your audit log files, see How to collect Windows Information Protection (WIP)
audit event logs.

Data encryption at rest. Windows Information Protection helps protect


enterprise data on local files and on removable media.

Apps such as Microsoft Word work with WIP to help continue your data
protection across local files and removable media. These apps are being
referred to as, enterprise aware. For example, if an employee opens WIP-
encrypted content from Word, edits the content, and then tries to save the
edited version with a different name, Word automatically applies Windows
Information Protection to the new document.

Helping prevent accidental data disclosure to public spaces. Windows


Information Protection helps protect your enterprise data from being
accidentally shared to public spaces, such as public cloud storage. For example,
if Dropbox™ isn't on your protected apps list, employees won't be able to sync
encrypted files to their personal cloud storage. Instead, if the employee stores
the content to an app on your protected apps list, like Microsoft OneDrive for
Business, the encrypted files can sync freely to the business cloud, while
maintaining the encryption locally.
Helping prevent accidental data disclosure to removable media. Windows
Information Protection helps prevent enterprise data from leaking when it's
copied or transferred to removable media. For example, if an employee puts
enterprise data on a Universal Serial Bus (USB) drive that also has personal data,
the enterprise data remains encrypted while the personal data doesn't.

Remove access to enterprise data from enterprise-protected devices. Windows


Information Protection gives admins the ability to revoke enterprise data from one
or many MDM-enrolled devices, while leaving personal data alone. This is a benefit
when an employee leaves your company, or if a device is stolen. After determining
that the data access needs to be removed, you can use Microsoft Intune to
unenroll the device so when it connects to the network, the user's encryption key
for the device is revoked and the enterprise data becomes unreadable.

7 Note

For management of Surface devices it is recommended that you use the


Current Branch of Microsoft Configuration Manager.
Configuration Manager also allows you to revoke enterprise data. However, it
does it by performing a factory reset of the device.

How WIP works


Windows Information Protection helps address your everyday challenges in the
enterprise. Including:

Helping to prevent enterprise data leaks, even on employee-owned devices that


can't be locked down.

Reducing employee frustrations because of restrictive data management policies


on enterprise-owned devices.

Helping to maintain the ownership and control of your enterprise data.

Helping control the network and data access and data sharing for apps that aren't
enterprise aware

Enterprise scenarios
Windows Information Protection currently addresses these enterprise scenarios:
You can encrypt enterprise data on employee-owned and corporate-owned
devices.

You can remotely wipe enterprise data off managed computers, including
employee-owned computers, without affecting the personal data.

You can protect specific apps that can access enterprise data that are clearly
recognizable to employees. You can also stop non-protected apps from accessing
enterprise data.

Your employees won't have their work otherwise interrupted while switching
between personal and enterprise apps while the enterprise policies are in place.
Switching environments or signing in multiple times isn't required.

WIP-protection modes
Enterprise data is automatically encrypted after it's loaded on a device from an
enterprise source or if an employee marks the data as corporate. Then, when the
enterprise data is written to disk, Windows Information Protection uses the Windows-
provided Encrypting File System (EFS) to protect it and associate it with your enterprise
identity.

Your Windows Information Protection policy includes a list of trusted apps that are
protected to access and process corporate data. This list of apps is implemented
through the AppLocker functionality, controlling what apps are allowed to run and
letting the Windows operating system know that the apps can edit corporate data. Apps
included on this list don't have to be modified to open corporate data because their
presence on the list allows Windows to determine whether to grant them access.
However, new for Windows 10, app developers can use a new set of application
programming interfaces (APIs) to create enlightened apps that can use and edit both
enterprise and personal data. A huge benefit to working with enlightened apps is that
dual-use apps, like Microsoft Word, can be used with less concern about encrypting
personal data by mistake because the APIs allow the app to determine whether data is
owned by the enterprise or if it's personally owned.

7 Note

For info about how to collect your audit log files, see How to collect Windows
Information Protection (WIP) audit event logs.

You can set your Windows Information Protection policy to use 1 of 4 protection and
management modes:
Mode Description

Block Windows Information Protection looks for inappropriate data sharing practices and
stops the employee from completing the action. This can include sharing enterprise
data to non-enterprise-protected apps in addition to sharing enterprise data
between apps or attempting to share outside of your organization's network.

Allow Windows Information Protection looks for inappropriate data sharing, warning
overrides employees if they do something deemed potentially unsafe. However, this
management mode lets the employee override the policy and share the data,
logging the action to your audit log.

Silent Windows Information Protection runs silently, logging inappropriate data sharing,
without stopping anything that would have been prompted for employee interaction
while in Allow overrides mode. Unallowed actions, like apps inappropriately trying to
access a network resource or WIP-protected data, are still stopped.

Off Windows Information Protection is turned off and doesn't help to protect or audit
your data.
After you turn off WIP, an attempt is made to decrypt any WIP-tagged files on the
locally attached drives. Your previous decryption and policy info isn't automatically
reapplied if you turn Windows Information Protection back on.

Turn off WIP


You can turn off all Windows Information Protection and restrictions, decrypting all
devices managed by WIP and reverting to where you were pre-WIP, with no data loss.
However, this isn't recommended. If you choose to turn off WIP, you can always turn it
back on, but your decryption and policy info won't be automatically reapplied.

Next steps
After you decide to use WIP in your environment, create a Windows Information
Protection (WIP) policy.
Create a Windows Information
Protection (WIP) policy using Microsoft
Intune
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

Microsoft Intune helps you create and deploy your enterprise data protection (WIP)
policy. It also lets you choose your protected apps, your WIP-protection level, and how
to find enterprise data on the network.

In this section
Article Description

Create a Windows Details about how to use Microsoft Intune to create and deploy
Information Protection (WIP) your WIP policy with MDM (Mobile Device Management),
policy using the Azure portal including letting you choose your protected apps, your WIP-
for Microsoft Intune protection level, and how to find enterprise data on the network.

Create and verify an Steps to create, verify, and perform a quick recovery using an
Encrypting File System (EFS) Encrypting File System (EFS) Data Recovery Agent (DRA)
Data Recovery Agent (DRA) certificate.
certificate

Determine the Enterprise Use the Task Manager to determine whether an app is
Context of an app running in considered work, personal or exempt by Windows Information
Windows Information Protection (WIP).
Protection (WIP)
Create a Windows Information
Protection policy in Microsoft Intune
Article • 02/22/2023

---author: aczechowski ms.author: aaroncz


ms.prod: windows ms.topic: include ms.date:
07/20/2022

7 Note

Starting in July 2022, Microsoft is deprecating Windows Information Protection


(WIP). Microsoft will continue to support WIP on supported versions of Windows.
New versions of Windows won't include new capabilities for WIP, and it won't be
supported in future versions of Windows. For more information, see Announcing
sunset of Windows Information Protection .

For your data protection needs, Microsoft recommends that you use Microsoft
Purview Information Protection and Microsoft Purview Data Loss Prevention.
Purview simplifies the configuration set-up and provides an advanced set of
capabilities.

Applies to:

Windows 10
Windows 11

Microsoft Intune has an easy way to create and deploy a Windows Information
Protection (WIP) policy. You can choose which apps to protect, the level of protection,
and how to find enterprise data on the network. The devices can be fully managed by
Mobile Device Management (MDM), or managed by Mobile Application Management
(MAM), where Intune manages only the apps on a user's personal device.

Differences between MDM and MAM for WIP


You can create an app protection policy in Intune either with device enrollment for
MDM or without device enrollment for MAM. The process to create either policy is
similar, but there are important differences:
MAM has more Access settings for Windows Hello for Business.
MAM can selectively wipe company data from a user's personal device.
MAM requires an Azure Active Directory (Azure AD) Premium license.
An Azure AD Premium license is also required for WIP auto-recovery, where a
device can re-enroll and regain access to protected data. WIP auto-recovery
depends on Azure AD registration to back up the encryption keys, which requires
device auto-enrollment with MDM.
MAM supports only one user per device.
MAM can only manage enlightened apps.
Only MDM can use BitLocker CSP policies.
If the same user and device are targeted for both MDM and MAM, the MDM policy
will be applied to devices joined to Azure AD. For personal devices that are
workplace-joined (that is, added by using Settings > Email & accounts > Add a
work or school account), the MAM-only policy will be preferred but it's possible to
upgrade the device management to MDM in Settings. Windows Home edition
only supports WIP for MAM-only; upgrading to MDM policy on Home edition will
revoke WIP-protected data access.

Prerequisites
Before you can create a WIP policy using Intune, you need to configure an MDM or
MAM provider in Azure Active Directory (Azure AD). MAM requires an Azure Active
Directory (Azure AD) Premium license. An Azure AD Premium license is also required for
WIP auto-recovery, where a device can re-enroll and regain access to protected data.
WIP auto-recovery relies on Azure AD registration to back up the encryption keys, which
requires device auto-enrollment with MDM.

Configure the MDM or MAM provider


1. Sign in to the Azure portal.

2. Select Azure Active Directory > Mobility (MDM and MAM) > Microsoft Intune.

3. Select Restore Default URLs or enter the settings for MDM or MAM user scope
and select Save:
Create a WIP policy
1. Sign in to the Microsoft Intune admin center .

2. Open Microsoft Intune and select Apps > App protection policies > Create policy.

3. In the App policy screen, select Add a policy, and then fill out the fields:

Name. Type a name (required) for your new policy.

Description. Type an optional description.


Platform. Choose Windows 10.

Enrollment state. Choose Without enrollment for MAM or With enrollment


for MDM.

4. Select Protected apps and then select Add apps.

You can add these types of apps:


Recommended apps
Store apps
Desktop apps

7 Note

An application might return access denied errors after removing it from the list of
protected apps. Rather than remove it from the list, uninstall and reinstall the
application or exempt it from WIP policy.

Add recommended apps


Select Recommended apps and select each app you want to access your enterprise data
or select them all, and select OK.
Add Store apps
Select Store apps, type the app product name and publisher, and select OK. For
example, to add the Power BI Mobile App from the Store, type the following:

Name: Microsoft Power BI


Publisher: CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond,
S=Washington, C=US

Product Name: Microsoft.MicrosoftPowerBIForWindows


To add multiple Store apps, select the ellipsis … .

If you don't know the Store app publisher or product name, you can find them by
following these steps.

1. Go to the Microsoft Store for Business website, and find your app. For example,
Power BI Mobile App.

2. Copy the ID value from the app URL. For example, the Power BI Mobile App ID URL
is https://www.microsoft.com/store/p/microsoft-power-bi/9nblgggzlxn1 , and you'd
copy the ID value, 9nblgggzlxn1 .

3. In a browser, run the Store for Business portal web API, to return a JavaScript
Object Notation (JSON) file that includes the publisher and product name values.
For example, run
https://bspmts.mp.microsoft.com/v1/public/catalog/Retail/Products/9nblgggzlxn1
/applockerdata , where 9nblgggzlxn1 is replaced with your ID value.

The API runs and opens a text editor with the app details.

JSON

{
"packageIdentityName": "Microsoft.MicrosoftPowerBIForWindows",
"publisherCertificateName": "CN=Microsoft Corporation, O=Microsoft
Corporation, L=Redmond, S=Washington, C=US"
}

4. Copy the publisherCertificateName value into the Publisher box and copy the
packageIdentityName value into the Name box of Intune.

) Important

The JSON file might also return a windowsPhoneLegacyId value for both the
Publisher Name and Product Name boxes. This means that you have an app
that's using a XAP package and that you must set the Product Name as
windowsPhoneLegacyId , and set the Publisher Name as CN= followed by the

windowsPhoneLegacyId .

For example:

JSON

{
"windowsPhoneLegacyId": "ca05b3ab-f157-450c-8c49-a1f127f5e71d",
}

Add Desktop apps


To add Desktop apps, complete the following fields, based on what results you want
returned.

Field Manages

All fields marked All files signed by any publisher. (Not recommended and may not work)
as *

Publisher only If you only fill out this field, you'll get all files signed by the named
publisher. This might be useful if your company is the publisher and signer
of internal line-of-business apps.

Publisher and If you only fill out these fields, you'll get all files for the specified product,
Name only signed by the named publisher.

Publisher, Name, If you only fill out these fields, you'll get any version of the named file or
and File only package for the specified product, signed by the named publisher.

Publisher, Name, If you only fill out these fields, you'll get the specified version or newer
File, and Min releases of the named file or package for the specified product, signed by
version only the named publisher. This option is recommended for enlightened apps that
weren't previously enlightened.

Publisher, Name, If you only fill out these fields, you'll get the specified version or older
File, and Max releases of the named file or package for the specified product, signed by
version only the named publisher.

All fields If you fill out all fields, you'll get the specified version of the named file or
completed package for the specified product, signed by the named publisher.

To add another Desktop app, select the ellipsis … . After you've entered the info into the
fields, select OK.
If you're unsure about what to include for the publisher, you can run this PowerShell
command:

PowerShell

Get-AppLockerFileInformation -Path "<path_of_the_exe>"

Where "<path_of_the_exe>" goes to the location of the app on the device. For example:

PowerShell

Get-AppLockerFileInformation -Path "C:\Program Files\Windows


NT\Accessories\wordpad.exe"

In this example, you'd get the following info:

Console

Path Publisher
---- ---------
%PROGRAMFILES%\WINDOWS NT\ACCESSORIES\WORDPAD.EXE O=MICROSOFT CORPORATION,
L=REDMOND, S=WASHINGTON, C=US

Where O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON, C=US is the Publisher name


and WORDPAD.EXE is the File name.

Regarding to how to get the Product Name for the Apps you wish to Add, contact the
Windows Support Team to request the guidelines

Import a list of apps


This section covers two examples of using an AppLocker XML file to the Protected apps
list. You'll use this option if you want to add multiple apps at the same time.

Create a Packaged App rule for Store apps


Create an Executable rule for unsigned apps

For more info about AppLocker, see the AppLocker content.

Create a Packaged App rule for Store apps


1. Open the Local Security Policy snap-in (SecPol.msc).

2. Expand Application Control Policies, expand AppLocker, and then select


Packaged App Rules.

3. Right-click in the right side, and then select Create New Rule.

The Create Packaged app Rules wizard appears.

4. On the Before You Begin page, select Next.


5. On the Permissions page, make sure the Action is set to Allow and the User or
group is set to Everyone, and then select Next.
6. On the Publisher page, choose Select from the Use an installed packaged app as
a reference area.
7. In the Select applications box, pick the app that you want to use as the reference
for your rule, and then select OK. For this example, we're using Microsoft Dynamics
365.

8. On the updated Publisher page, select Create.


9. Select No in the dialog box that appears, asking if you want to create the default
rules. Don't create default rules for your WIP policy.

10. Review the Local Security Policy snap-in to make sure your rule is correct.
11. On the left, right-click on AppLocker, and then select Export policy.

The Export policy box opens, letting you export and save your new policy as XML.

12. In the Export policy box, browse to where the policy should be stored, give the
policy a name, and then select Save.

The policy is saved and you'll see a message that says one rule was exported from
the policy.

Example XML file


This is the XML file that AppLocker creates for Microsoft Dynamics 365.
XML

<?xml version="1.0"?>
<AppLockerPolicy Version="1">
<RuleCollection EnforcementMode="NotConfigured" Type="Appx">
<FilePublisherRule Action="Allow" UserOrGroupSid="S-1-1-0"
Description="" Name="Microsoft.MicrosoftDynamicsCRMforWindows10,
version 3.2.0.0 and above, from Microsoft Corporation" Id="3da34ed9-
aec6-4239-88ba-0afdce252ab4">
<Conditions>
<FilePublisherCondition BinaryName="*"
ProductName="Microsoft.MicrosoftDynamicsCRMforWindows10"
PublisherName="CN=Microsoft Corporation, O=Microsoft Corporation,
L=Redmond, S=Washington, C=US">
<BinaryVersionRange HighSection="*"
LowSection="3.2.0.0"/>
</FilePublisherCondition>
</Conditions>
</FilePublisherRule>
</RuleCollection>
<RuleCollection EnforcementMode="NotConfigured" Type="Dll"/>
<RuleCollection EnforcementMode="NotConfigured" Type="Exe"/>
<RuleCollection EnforcementMode="NotConfigured" Type="Msi"/>
<RuleCollection EnforcementMode="NotConfigured" Type="Script"/>
</AppLockerPolicy>

13. After you've created your XML file, you need to import it by using Microsoft
Intune.

Create an Executable rule for unsigned apps


The executable rule helps to create an AppLocker rule to sign any unsigned apps. It
enables adding the file path or the app publisher contained in the file's digital signature
needed for the WIP policy to be applied.

1. Open the Local Security Policy snap-in (SecPol.msc).

2. In the left pane, select Application Control Policies > AppLocker > Executable
Rules.

3. Right-click Executable Rules > Create New Rule.


4. On the Before You Begin page, select Next.

5. On the Permissions page, make sure the Action is set to Allow and the User or
group is set to Everyone, and then select Next.

6. On the Conditions page, select Path and then select Next.


7. Select Browse Folders... and select the path for the unsigned apps. For this
example, we're using "C:\Program Files".
8. On the Exceptions page, add any exceptions and then select Next.

9. On the Name page, type a name and description for the rule and then select
Create.

10. In the left pane, right-click AppLocker > Export policy.

11. In the Export policy box, browse to where the policy should be stored, give the
policy a name, and then select Save.

The policy is saved and you'll see a message that says one rule was exported from
the policy.

12. After you've created your XML file, you need to import it by using Microsoft
Intune.

To import a list of protected apps using Microsoft Intune

1. In Protected apps, select Import apps.


Then import your file.

2. Browse to your exported AppLocker policy file, and then select Open.

The file imports and the apps are added to your Protected apps list.

Exempt apps from a WIP policy


If your app is incompatible with WIP, but still needs to be used with enterprise data,
then you can exempt the app from the WIP restrictions. This means that your apps won't
include auto-encryption or tagging and won't honor your network restrictions. It also
means that your exempted apps might leak.

1. In Client apps - App protection policies, select Exempt apps.


2. In Exempt apps, select Add apps.

When you exempt apps, they're allowed to bypass the WIP restrictions and access
your corporate data.

3. Fill out the rest of the app info, based on the type of app you're adding:

Add Recommended apps

Add Store apps

Add Desktop apps

Import apps

4. Select OK.

Manage the WIP protection mode for your


enterprise data
After you've added the apps you want to protect with WIP, you'll need to apply a
management and protection mode.

We recommend that you start with Silent or Allow Overrides while verifying with a small
group that you have the right apps on your protected apps list. After you're done, you
can change to your final enforcement policy, Block.

1. From App protection policy, select the name of your policy, and then select
Required settings.

Mode Description

Block WIP looks for inappropriate data sharing practices and stops the employee
from completing the action. This can include sharing info across non-
enterprise-protected apps in addition to sharing enterprise data between
other people and devices outside of your enterprise.

Allow WIP looks for inappropriate data sharing, warning employees if they do
Overrides something deemed potentially unsafe. However, this management mode lets
the employee override the policy and share the data, logging the action to
your audit log. For info about how to collect your audit log files, see How to
collect Windows Information Protection (WIP) audit event logs.

Silent WIP runs silently, logging inappropriate data sharing, without blocking
anything that would have been prompted for employee interaction while in
Allow Override mode. Unallowed actions, like apps inappropriately trying to
access a network resource or WIP-protected data, are still stopped.

Off WIP is turned off and doesn't help to protect or audit your data.

After you turn off WIP, an attempt is made to decrypt any WIP-tagged files on
the locally attached drives. Your previous decryption and policy info isn't
automatically reapplied if you turn WIP protection back on. For more
information, see How to disable Windows Information Protection.

2. Select Save.
Define your enterprise-managed corporate
identity
Corporate identity, typically expressed as your primary Internet domain (for example,
contoso.com), helps to identify and tag your corporate data from apps you've marked as
protected by WIP. For example, emails using contoso.com are identified as being
corporate and are restricted by your Windows Information Protection policies.

Starting with Windows 10, version 1703, Intune automatically determines your corporate
identity and adds it to the Corporate identity field.

To change your corporate identity

1. From App policy, select the name of your policy, and then select Required
settings.

2. If the auto-defined identity isn't correct, you can change the info in the Corporate
identity field.

3. To add domains, such your email domain names, select Configure Advanced
settings > Add network boundary and select Protected domains.
Choose where apps can access enterprise data
After you've added a protection mode to your apps, you'll need to decide where those
apps can access enterprise data on your network. Every WIP policy should include your
enterprise network locations.

There are no default locations included with WIP, you must add each of your network
locations. This area applies to any network endpoint device that gets an IP address in
your enterprise's range and is also bound to one of your enterprise domains, including
SMB shares. Local file system locations should just maintain encryption (for example, on
local NTFS, FAT, ExFAT).

To define the network boundaries, select App policy > the name of your policy >
Advanced settings > Add network boundary.
Select the type of network boundary to add from the Boundary type box. Type a name
for your boundary into the Name box, add your values to the Value box, based on the
options covered in the following subsections, and then select OK.

Cloud resources
Specify the cloud resources to be treated as corporate and protected by WIP. For each
cloud resource, you may also optionally specify a proxy server from your Internal proxy
servers list to route traffic for this cloud resource. All traffic routed through your Internal
proxy servers is considered enterprise.

Separate multiple resources with the "|" delimiter. For example:

Console

URL <,proxy>|URL <,proxy>

Personal applications can access a cloud resource that has a blank space or an invalid
character, such as a trailing dot in the URL.

To add a subdomain for a cloud resource, use a period (.) instead of an asterisk (*). For
example, to add all subdomains within Office.com, use ".office.com" (without the
quotation marks).

In some cases, such as when an app connects directly to a cloud resource through an IP
address, Windows can't tell whether it's attempting to connect to an enterprise cloud
resource or to a personal site. In this case, Windows blocks the connection by default. To
stop Windows from automatically blocking these connections, you can add the
/*AppCompat*/ string to the setting. For example:

Console

URL <,proxy>|URL <,proxy>|/*AppCompat*/

When you use this string, we recommend that you also turn on Azure Active Directory
Conditional Access, using the Domain joined or marked as compliant option, which
blocks apps from accessing any enterprise cloud resources that are protected by
conditional access.

Value format with proxy:

Console
contoso.sharepoint.com,contoso.internalproxy1.com|contoso.visualstudio.com,c
ontoso.internalproxy2.com

Value format without proxy:

Console

contoso.sharepoint.com|contoso.visualstudio.com|contoso.onedrive.com,

Protected domains
Specify the domains used for identities in your environment. All traffic to the fully
qualified domains appearing in this list will be protected. Separate multiple domains
with the "|" delimiter.

Console

exchange.contoso.com|contoso.com|region.contoso.com

Network domains
Specify the DNS suffixes used in your environment. All traffic to the fully qualified
domains appearing in this list will be protected. Separate multiple resources with the ","
delimiter.

Console

corp.contoso.com,region.contoso.com

Proxy servers
Specify the proxy servers your devices will go through to reach your cloud resources.
Using this server type indicates that the cloud resources you're connecting to are
enterprise resources.

This list shouldn't include any servers listed in your Internal proxy servers list. Proxy
servers must be used only for non-WIP-protected (non-enterprise) traffic. Separate
multiple resources with the ";" delimiter.

Console
proxy.contoso.com:80;proxy2.contoso.com:443

Internal proxy servers


Specify the internal proxy servers your devices will go through to reach your cloud
resources. Using this server type indicates that the cloud resources you're connecting to
are enterprise resources.

This list shouldn't include any servers listed in your Proxy servers list. Internal proxy
servers must be used only for WIP-protected (enterprise) traffic. Separate multiple
resources with the ";" delimiter.

Console

contoso.internalproxy1.com;contoso.internalproxy2.com

IPv4 ranges
Specify the addresses for a valid IPv4 value range within your intranet. These addresses,
used with your Network domain names, define your corporate network boundaries.
Classless Inter-Domain Routing (CIDR) notation isn't supported.

Separate multiple ranges with the "," delimiter.

Starting IPv4 Address: 3.4.0.1


Ending IPv4 Address: 3.4.255.254
Custom URI: 3.4.0.1-3.4.255.254,
10.0.0.1-10.255.255.254

IPv6 ranges
Starting with Windows 10, version 1703, this field is optional.

Specify the addresses for a valid IPv6 value range within your intranet. These addresses,
used with your network domain names, define your corporate network boundaries.
Classless Inter-Domain Routing (CIDR) notation isn't supported.

Separate multiple ranges with the "," delimiter.

Starting IPv6 Address: 2a01:110::


Ending IPv6 Address: 2a01:110:7fff:ffff:ffff:ffff:ffff:ffff
Custom URI: 2a01:110:7fff:ffff:ffff:ffff:ffff:ffff,'<br>'fd00::-
fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Neutral resources
Specify your authentication redirection endpoints for your company. These locations are
considered enterprise or personal, based on the context of the connection before the
redirection. Separate multiple resources with the "," delimiter.

Console

sts.contoso.com,sts.contoso2.com

Decide if you want Windows to look for more network settings:

Enterprise Proxy Servers list is authoritative (do not auto-detect). Turn on if you
want Windows to treat the proxy servers you specified in the network boundary
definition as the complete list of proxy servers available on your network. If you
turn this off, Windows will search for more proxy servers in your immediate
network.

Enterprise IP Ranges list is authoritative (do not auto-detect). Turn on if you want
Windows to treat the IP ranges you specified in the network boundary definition as
the complete list of IP ranges available on your network. If you turn this off,
Windows will search for more IP ranges on any domain-joined devices connected
to your network.

Upload your Data Recovery Agent (DRA)


certificate
After you create and deploy your WIP policy to your employees, Windows begins to
encrypt your corporate data on the employees' local device drive. If somehow the
employees' local encryption keys get lost or revoked, the encrypted data can become
unrecoverable. To help avoid this possibility, the Data Recovery Agent (DRA) certificate
lets Windows use an included public key to encrypt the local data while you maintain
the private key that can unencrypt the data.

) Important

Using a DRA certificate isn't mandatory. However, we strongly recommend it. For
more info about how to find and export your data recovery certificate, see Data
Recovery and Encrypting File System (EFS). For more info about creating and
verifying your EFS DRA certificate, see Create and verify an Encrypting File System
(EFS) Data Recovery Agent (DRA) certificate.

To upload your DRA certificate

1. From App policy, select the name of your policy, and then select Advanced
settings from the menu that appears.

Advanced settings shows.

2. In the Upload a Data Recovery Agent (DRA) certificate to allow recovery of


encrypted data box, select Browse to add a data recovery certificate for your
policy.

Choose your optional WIP-related settings


After you've decided where your protected apps can access enterprise data on your
network, you can choose optional settings.
Revoke encryption keys on unenroll. Determines whether to revoke a user's local
encryption keys from a device when it's unenrolled from Windows Information
Protection. If the encryption keys are revoked, a user no longer has access to encrypted
corporate data. The options are:

On, or not configured (recommended). Revokes local encryption keys from a


device during unenrollment.

Off. Stop local encryption keys from being revoked from a device during
unenrollment. For example, if you're migrating between Mobile Device
Management (MDM) solutions.

Show the enterprise data protection icon. Determines whether the Windows
Information Protection icon overlay appears on corporate files in the Save As and File
Explorer views. The options are:

On. Allows the Windows Information Protection icon overlay to appear on


corporate files in the Save As and File Explorer views. Also, for unenlightened but
protected apps, the icon overlay also appears on the app tile and with Managed
text on the app name in the Start menu.

Off, or not configured (recommended). Stops the Windows Information


Protection icon overlay from appearing on corporate files or unenlightened, but
protected apps. Not configured is the default option.

Use Azure RMS for WIP. Determines whether WIP uses Microsoft Azure Rights
Management to apply EFS encryption to files that are copied from Windows 10 to USB
or other removable drives so they can be securely shared with employees. In other
words, WIP uses Azure Rights Management "machinery" to apply EFS encryption to files
when they're copied to removable drives. You must already have Azure Rights
Management set up. The EFS file encryption key is protected by the RMS template's
license. Only users with permission to that template can read it from the removable
drive. WIP can also integrate with Azure RMS by using the AllowAzureRMSForEDP and
the RMSTemplateIDForEDP MDM settings in the EnterpriseDataProtection CSP.

On. Protects files that are copied to a removable drive. You can enter a TemplateID
GUID to specify who can access the Azure Rights Management protected files, and
for how long. The RMS template is only applied to the files on removable media,
and is only used for access control—it doesn't actually apply Azure Information
Protection to the files.

If you don't specify an RMS template, it's a regular EFS file using a default RMS
template that all users can access.

Off, or not configured. Stops WIP from encrypting Azure Rights Management files
that are copied to a removable drive.

7 Note

Regardless of this setting, all files in OneDrive for Business will be encrypted,
including moved Known Folders.

Allow Windows Search Indexer to search encrypted files. Determines whether to allow
the Windows Search Indexer to index items that are encrypted, such as WIP protected
files.

On. Starts Windows Search Indexer to index encrypted files.

Off, or not configured. Stops Windows Search Indexer from indexing encrypted
files.

Encrypted file extensions


You can restrict which files are protected by WIP when they're downloaded from an SMB
share within your enterprise network locations. If this setting is configured, only files
with the extensions in the list will be encrypted. If this setting is not specified, the
existing auto-encryption behavior is applied.
Related articles
How to collect Windows Information Protection (WIP) audit event logs

General guidance and best practices for Windows Information Protection (WIP)

What is Azure Rights Management?

Create a Windows Information Protection (WIP) protection policy using Microsoft


Intune

Intune MAM Without Enrollment

Azure RMS Documentation Update for May 2016


Deploy your Windows Information
Protection (WIP) policy using the Azure
portal for Microsoft Intune
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

After you've created your Windows Information Protection (WIP) policy, you'll need to
deploy it to your organization's enrolled devices. Enrollment can be done for business or
personal devices, allowing the devices to use your managed apps and to sync with your
managed content and information.

To deploy your WIP policy


1. On the App protection policies pane, click your newly created policy, click
Assignments, and then select groups to include or exclude from the policy.

2. Choose the group you want your policy to apply to, and then click Select to deploy
the policy.

The policy is deployed to the selected users' devices.

7 Note
Help to make this topic better by providing us with edits, additions, and feedback.
For info about how to contribute to this topic, see Editing Windows IT professional
documentation .

Related topics
General guidance and best practices for Windows Information Protection (WIP)
Associate and deploy a VPN policy for
Windows Information Protection (WIP)
using Microsoft Intune
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

After you've created and deployed your Windows Information Protection (WIP) policy,
you can use Microsoft Intune to associate and deploy your Virtual Private Network
(VPN) policy, linking it to your WIP policy.

Associate your WIP policy to your VPN policy


using Intune
To associate your WIP policy with your organization's existing VPN policy, use the
following steps:

1. Sign in to the Microsoft Intune admin center .

2. Select Devices > Configuration profiles > Create profile.

3. Enter the following properties:

Platform: Select Windows 10 and later


Profile: Select Templates > Custom.

4. Select Create.

5. In Basics, enter the following properties:

Name: Enter a descriptive name for the profile. Name your profiles so you
can easily identify them later.
Description: Enter a description for the profile. This setting is optional, but
recommended.

6. Select Next.

7. In Configuration settings, enter the following properties:

Name: Enter a name for your setting. For example, enter EDPModeID .
OMA-URI: Enter ./Vendor/MSFT/VPNv2/YourVPNProfileName/EDPModeId .
Data type: Select String .
Value: Type your fully qualified domain that should be used by the OMA-URI
setting. For example, enter corp.contoso.com .

For more information on these settings, see Use custom settings for Windows
devices in Intune.

8. Select Next, and continue configuring the policy. For the specific steps and
recommendations, see Create a profile with custom settings in Intune.

Deploy your VPN policy using Microsoft Intune


After you've created your VPN policy, you'll need to deploy it to the same group you
deployed your Windows Information Protection (WIP) policy.

1. On the App policy blade, select your newly created policy, select User groups from
the menu that appears, and then select Add user group.

A list of user groups, made up of all of the security groups in your Azure Active
Directory, appear in the Add user group blade.

2. Choose the group you want your policy to apply to, and then select Select to
deploy the policy.

The policy is deployed to the selected users' devices.

7 Note
Help to make this topic better by providing us with edits, additions, and feedback.
For info about how to contribute to this topic, see Editing Windows IT professional
documentation .
Create and verify an Encrypting File
System (EFS) Data Recovery Agent
(DRA) certificate
Article • 12/09/2022

---author: aczechowski ms.author: aaroncz


ms.prod: windows ms.topic: include ms.date:
07/20/2022

7 Note

Starting in July 2022, Microsoft is deprecating Windows Information Protection


(WIP). Microsoft will continue to support WIP on supported versions of Windows.
New versions of Windows won't include new capabilities for WIP, and it won't be
supported in future versions of Windows. For more information, see Announcing
sunset of Windows Information Protection .

For your data protection needs, Microsoft recommends that you use Microsoft
Purview Information Protection and Microsoft Purview Data Loss Prevention.
Purview simplifies the configuration set-up and provides an advanced set of
capabilities.

Applies to:

Windows 10
Windows 11

If you don't already have an EFS DRA certificate, you'll need to create and extract one
from your system before you can use Windows Information Protection (WIP), formerly
known as enterprise data protection (EDP), in your organization. For the purposes of this
section, we'll use the file name EFSDRA; however, this name can be replaced with
anything that makes sense to you.

) Important

If you already have an EFS DRA certificate for your organization, you can skip
creating a new one. Just use your current EFS DRA certificate in your policy. For
more info about when to use a PKI and the general strategy you should use to
deploy DRA certificates, see the Security Watch Deploying EFS: Part 1 article on
TechNet. For more general info about EFS protection, see Protecting Data by Using
EFS to Encrypt Hard Drives.

If your DRA certificate has expired, you won't be able to encrypt your files with it. To
fix this, you'll need to create a new certificate, using the steps in this topic, and then
deploy it through policy.

Manually create an EFS DRA certificate


1. On a computer without an EFS DRA certificate installed, open a command prompt
with elevated rights, and then navigate to where you want to store the certificate.

2. Run this command:

Windows Command Prompt

cipher /r:EFSRA

Where EFSRA is the name of the .cer and .pfx files that you want to create.

3. When prompted, type and confirm a password to help protect your new Personal
Information Exchange (.pfx) file.

The EFSDRA.cer and EFSDRA.pfx files are created in the location you specified in
Step 1.

) Important

Because the private keys in your DRA .pfx files can be used to decrypt any WIP
file, you must protect them accordingly. We highly recommend storing these
files offline, keeping copies on a smart card with strong protection for normal
use and master copies in a secured physical location.

4. Add your EFS DRA certificate to your WIP policy using a deployment tool, such as
Microsoft Intune or Microsoft Configuration Manager.

7 Note
This certificate can be used in Intune for policies both with device enrollment
(MDM) and without device enrollment (MAM).

Verify your data recovery certificate is correctly


set up on a WIP client computer
1. Find or create a file that's encrypted using Windows Information Protection. For
example, you could open an app on your allowed app list, and then create and
save a file so it's encrypted by WIP.

2. Open an app on your protected app list, and then create and save a file so that it's
encrypted by WIP.

3. Open a command prompt with elevated rights, navigate to where you stored the
file you just created, and then run this command:

Windows Command Prompt

cipher /c filename

Where filename is the name of the file you created in Step 1.

4. Make sure that your data recovery certificate is listed in the Recovery Certificates
list.

Recover your data using the EFS DRA certificate


in a test environment
1. Copy your WIP-encrypted file to a location where you have admin access.

2. Install the EFSDRA.pfx file, using its password.

3. Open a command prompt with elevated rights, navigate to the encrypted file, and
then run this command:

Windows Command Prompt

cipher /d encryptedfile.extension

Where encryptedfile.extension is the name of your encrypted file. For example,


corporatedata.docx .
Recover WIP-protected after unenrollment
It's possible that you might revoke data from an unenrolled device only to later want to
restore it all. This can happen in the case of a missing device being returned or if an
unenrolled employee enrolls again. If the employee enrolls again using the original user
profile, and the revoked key store is still on the device, all of the revoked data can be
restored at once.

) Important

To maintain control over your enterprise data, and to be able to revoke again in the
future, you must only perform this process after the employee has re-enrolled the
device.

1. Have the employee sign in to the unenrolled device, open an elevated command
prompt, and type:

Windows Command Prompt

Robocopy "%localappdata%\Microsoft\EDP\Recovery" "new_location" *


/EFSRAW

Where "new_location" is in a different directory. This can be on the employee's


device or on a shared folder on a computer that runs Windows 8 or Windows
Server 2012 or newer and can be accessed while you're logged in as a data
recovery agent.

To start Robocopy in S mode, open Task Manager. Click File > Run new task, type
the command, and click Create this task with administrative privileges.

If the employee performed a clean installation and there is no user profile, you
need to recover the keys from the System Volume folder in each drive. Type:
Windows Command Prompt

Robocopy "drive_letter:\System Volume Information\EDP\Recovery\"


"new_location" * /EFSRAW

2. Sign in to a different device with administrator credentials that have access to your
organization's DRA certificate, and perform the file decryption and recovery by
typing:

Windows Command Prompt

cipher.exe /D "new_location"

3. Have your employee sign in to the unenrolled device, and type:

Windows Command Prompt

Robocopy "new_location" "%localappdata%\Microsoft\EDP\Recovery\Input"

4. Ask the employee to lock and unlock the device.

The Windows Credential service automatically recovers the employee's previously


revoked keys from the Recovery\Input location.

Auto-recovery of encryption keys


Starting with Windows 10, version 1709, WIP includes a data recovery feature that lets
your employees auto-recover access to work files if the encryption key is lost and the
files are no longer accessible. This typically happens if an employee reimages the
operating system partition, removing the WIP key info, or if a device is reported as lost
and you mistakenly target the wrong device for unenrollment.

To help make sure employees can always access files, WIP creates an auto-recovery key
that's backed up to their Azure Active Directory (Azure AD) identity.

The employee experience is based on signing in with an Azure AD work account. The
employee can either:

Add a work account through the Windows Settings > Accounts > Access work or
school > Connect menu.

-OR-
Open Windows Settings > Accounts > Access work or school > Connect and
choose the Join this device to Azure Active Directory link, under Alternate
actions.

7 Note

To perform an Azure AD Domain Join from the Settings page, the employee
must have administrator privileges to the device.

After signing in, the necessary WIP key info is automatically downloaded and employees
are able to access the files again.

To test what the employee sees during the WIP key


recovery process
1. Attempt to open a work file on an unenrolled device.

The Connect to Work to access work files box appears.

2. Click Connect.

The Access work or school settings page appears.

3. Sign-in to Azure AD as the employee and verify that the files now open

Related topics
Security Watch Deploying EFS: Part 1

Protecting Data by Using EFS to Encrypt Hard Drives

Create a Windows Information Protection (WIP) policy using Microsoft Intune

Create a Windows Information Protection (WIP) policy using Microsoft


Configuration Manager

Creating a Domain-Based Recovery Agent


Determine the Enterprise Context of an
app running in Windows Information
Protection (WIP)
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

Learn more about what features and functionality are supported in each Windows
edition at Compare Windows 10 Editions .

Use Task Manager to check the context of your apps while running in Windows
Information Protection (WIP) to make sure that your organization's policies are applied
and running correctly.

Viewing the Enterprise Context column in Task


Manager
You need to add the Enterprise Context column to the Details tab of the Task Manager.

1. Make sure that you have an active Windows Information Protection policy
deployed and turned on in your organization.

2. Open the Task Manager (taskmgr.exe), click the Details tab, right-click in the
column heading area, and click Select columns.

The Select columns box appears.


3. Scroll down and check the Enterprise Context option, and then click OK to close
the box.

The Enterprise Context column should now be available in Task Manager.

Review the Enterprise Context


The Enterprise Context column shows you what each app can do with your enterprise
data:
Domain. Shows the employee's work domain (such as, corp.contoso.com). This app
is considered work-related and can freely touch and open work data and
resources.

Personal. Shows the text, Personal. This app is considered non-work-related and
can't touch any work data or resources.

Exempt. Shows the text, Exempt. Windows Information Protection policies don't
apply to these apps (such as, system components).

) Important

Enlightened apps can change between Work and Personal, depending on the
data being touched. For example, Microsoft Word 2016 shows as Personal
when an employee opens a personal letter, but changes to Work when that
same employee opens the company financials.
Create a Windows Information
Protection (WIP) policy using Microsoft
Configuration Manager
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

Microsoft Configuration Manager helps you create and deploy your enterprise data
protection (WIP) policy. It lets you choose your protected apps, your WIP-protection
level, and how to find enterprise data on the network.

In this section
Article Description

Create and deploy a Windows Microsoft Configuration Manager helps you create and
Information Protection (WIP) policy deploy your WIP policy. And, lets you choose your
using Microsoft Configuration protected apps, your WIP-protection level, and how to find
Manager enterprise data on the network.

Create and verify an Encrypting File Steps to create, verify, and perform a quick recovery using
System (EFS) Data Recovery Agent an Encrypting File System (EFS) Data Recovery Agent (DRA)
(DRA) certificate certificate.

Determine the Enterprise Context of Use the Task Manager to determine whether an app is
an app running in Windows considered work, personal or exempt by Windows
Information Protection (WIP) Information Protection (WIP).
Create and deploy a Windows
Information Protection policy in
Configuration Manager
Article • 12/09/2022

---author: aczechowski ms.author: aaroncz


ms.prod: windows ms.topic: include ms.date:
07/20/2022

7 Note

Starting in July 2022, Microsoft is deprecating Windows Information Protection


(WIP). Microsoft will continue to support WIP on supported versions of Windows.
New versions of Windows won't include new capabilities for WIP, and it won't be
supported in future versions of Windows. For more information, see Announcing
sunset of Windows Information Protection .

For your data protection needs, Microsoft recommends that you use Microsoft
Purview Information Protection and Microsoft Purview Data Loss Prevention.
Purview simplifies the configuration set-up and provides an advanced set of
capabilities.

Applies to:

Windows 10
Windows 11

Microsoft Configuration Manager helps you create and deploy your Windows
Information Protection (WIP) policy. You can choose your protected apps, your WIP-
protection mode, and how to find enterprise data on the network.

Add a WIP policy


After you've installed and set up Configuration Manager for your organization, you must
create a configuration item for WIP, which in turn becomes your WIP policy.
 Tip

Review the Limitations while using Windows Information Protection (WIP) article
before creating a new configuration item to avoid common issues.

To create a configuration item for WIP

1. Open the Configuration Manager console, select the Assets and Compliance node,
expand the Overview node, expand the Compliance Settings node, and then
expand the Configuration Items node.

2. Select the Create Configuration Item button.

The Create Configuration Item Wizard starts.


3. On the General Information screen, type a name (required) and an optional
description for your policy into the Name and Description boxes.

4. In the Specify the type of configuration item you want to create area, pick the
option that represents whether you use Configuration Manager for device
management, and then select Next.

Settings for devices managed with the Configuration Manager client:


Windows 10

-OR-

Settings for devices managed without the Configuration Manager client:


Windows 8.1 and Windows 10

5. On the Supported Platforms screen, select the Windows 10 box, and then select
Next.
6. On the Device Settings screen, select Windows Information Protection, and then
select Next.
The Configure Windows Information Protection settings page appears, where you'll
configure your policy for your organization.

Add app rules to your policy


During the policy-creation process in Configuration Manager, you can choose the apps
you want to give access to your enterprise data through Windows Information
Protection. Apps included in this list can protect data on behalf of the enterprise and are
restricted from copying or moving enterprise data to unprotected apps.

The steps to add your app rules are based on the type of rule template being applied.
You can add a store app (also known as a Universal Windows Platform (UWP) app), a
signed Windows desktop app, or an AppLocker policy file.

) Important

Enlightened apps are expected to prevent enterprise data from going to


unprotected network locations and to avoid encrypting personal data. On the other
hand, WIP-unaware apps might not respect the corporate network boundary, and
WIP-unaware apps will encrypt all files they create or modify. This means that they
could encrypt personal data and cause data loss during the revocation process.

Care must be taken to get a support statement from the software provider that
their app is safe with Windows Information Protection before adding it to your App
rules list. If you don't get this statement, it's possible that you could experience app
compat issues due to an app losing the ability to access a necessary file after
revocation.

Add a store app rule to your policy


For this example, we're going to add Microsoft OneNote, a store app, to the App Rules
list.

To add a store app

1. From the App rules area, select Add.

The Add app rule box appears.


2. Add a friendly name for your app into the Title box. In this example, it's Microsoft
OneNote.

3. Select Allow from the Windows Information Protection mode drop-down list.

Allow turns on WIP, helping to protect that app's corporate data through the
enforcement of WIP restrictions. If you want to exempt an app, you can follow the
steps in the Exempt apps from WIP restrictions section.

4. Pick Store App from the Rule template drop-down list.

The box changes to show the store app rule options.

5. Type the name of the app and the name of its publisher, and then select OK. For
this UWP app example, the Publisher is CN=Microsoft Corporation, O=Microsoft
Corporation, L=Redmond, S=Washington, C=US and the Product name is

Microsoft.Office.OneNote .
If you don't know the publisher or product name, you can find them for both desktop
devices by following these steps.

To find the Publisher and Product Name values for Store apps without installing them

1. Go to the Microsoft Store website, and find your app. For example, Microsoft
OneNote.

7 Note

If your app is already installed on desktop devices, you can use the AppLocker
local security policy MMC snap-in to gather the info for adding the app to the
protected apps list. For info about how to do this, see the steps in Add an
AppLocker policy file in this article.

2. Copy the ID value from the app URL. For example, Microsoft OneNote's ID URL is
https://www.microsoft.com/store/apps/onenote/9wzdncrfhvjl , and you'd copy the

ID value, 9wzdncrfhvjl .

3. In a browser, run the Store for Business portal web API, to return a JavaScript
Object Notation (JSON) file that includes the publisher and product name values.
For example, run
https://bspmts.mp.microsoft.com/v1/public/catalog/Retail/Products/9wzdncrfhvjl

/applockerdata , where 9wzdncrfhvjl is replaced with your ID value.

The API runs and opens a text editor with the app details.

JSON

{
"packageIdentityName": "Microsoft.Office.OneNote",
"publisherCertificateName": "CN=Microsoft Corporation, O=Microsoft
Corporation, L=Redmond, S=Washington, C=US"
}

4. Copy the publisherCertificateName value and paste them into the Publisher
Name box, copy the packageIdentityName value into the Product Name box of
Intune.

) Important

The JSON file might also return a windowsPhoneLegacyId value for both the
Publisher Name and Product Name boxes. This means that you have an app
that's using a XAP package and that you must set the Product Name as
windowsPhoneLegacyId , and set the Publisher Name as "CN=" followed by the

windowsPhoneLegacyId .

For example:

JSON

{
"windowsPhoneLegacyId": "ca05b3ab-f157-450c-8c49-a1f127f5e71d",
}

Add a desktop app rule to your policy


For this example, we're going to add Internet Explorer, a desktop app, to the App Rules
list.

To add a desktop app to your policy

1. From the App rules area, select Add.

The Add app rule box appears.

2. Add a friendly name for your app into the Title box. In this example, it's Internet
Explorer.

3. Select Allow from the Windows Information Protection mode drop-down list.
Allow turns on WIP, helping to protect that app's corporate data through the
enforcement of WIP restrictions. If you want to exempt an app, you can follow the
steps in the Exempt apps from WIP restrictions section.

4. Pick Desktop App from the Rule template drop-down list.

The box changes to show the desktop app rule options.

5. Pick the options you want to include for the app rule (see table), and then select
OK.

Option Manages

All fields left as "*" All files signed by any publisher. (Not recommended.)

Publisher selected All files signed by the named publisher. This might be useful if
your company is the publisher and signer of internal line-of-
business apps.

Publisher and Product All files for the specified product, signed by the named
Name selected publisher.

Publisher, Product Name, Any version of the named file or package for the specified
and Binary name selected product, signed by the named publisher.

Publisher, Product Name, Specified version or newer releases of the named file or
Binary name, and File package for the specified product, signed by the named
Version, and above, publisher. This option is recommended for enlightened apps
selected that weren't previously enlightened.

Publisher, Product Name, Specified version or older releases of the named file or
Binary name, and File package for the specified product, signed by the named
Version, And below publisher.
selected

Publisher, Product Name, Specified version of the named file or package for the
Binary name, and File specified product, signed by the named publisher.
Version, Exactly selected

If you're unsure about what to include for the publisher, you can run this PowerShell
command:

PowerShell

Get-AppLockerFileInformation -Path "<path of the exe>"

Where "<path of the exe>" goes to the location of the app on the device. For example,
Get-AppLockerFileInformation -Path "C:\Program Files\Internet
Explorer\iexplore.exe" .

In this example, you'd get the following info:

Console

Path Publisher
---- ---------
%PROGRAMFILES%\INTERNET EXPLORER\IEXPLORE.EXE O=MICROSOFT CORPORATION,
L=REDMOND, S=WASHINGTON, C=US\INTERNET EXPLOR...

Where the text, O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON, C=US is the


publisher name to enter in the Publisher Name box.

Add an AppLocker policy file


For this example, we're going to add an AppLocker XML file to the App Rules list. You'll
use this option if you want to add multiple apps at the same time. For more info about
AppLocker, see the AppLocker content.

To create an app rule and xml file using the AppLocker tool

1. Open the Local Security Policy snap-in (SecPol.msc).

2. In the left pane, expand Application Control Policies, expand AppLocker, and then
select Packaged App Rules.
3. Right-click in the right-hand pane, and then select Create New Rule.

The Create Packaged app Rules wizard appears.

4. On the Before You Begin page, select Next.

5. On the Permissions page, make sure the Action is set to Allow and the User or
group is set to Everyone, and then select Next.
6. On the Publisher page, select Select from the Use an installed packaged app as a
reference area.
7. In the Select applications box, pick the app that you want to use as the reference
for your rule, and then select OK. For this example, we're using Microsoft Photos.
8. On the updated Publisher page, select Create.

9. Review the Local Security Policy snap-in to make sure your rule is correct.
10. In the left pane, right-click on AppLocker, and then select Export policy.

The Export policy box opens, letting you export and save your new policy as XML.

11. In the Export policy box, browse to where the policy should be stored, give the
policy a name, and then select Save.

The policy is saved and you'll see a message that says one rule was exported from
the policy.

Example XML file


This is the XML file that AppLocker creates for Microsoft Photos.

XML

<AppLockerPolicy Version="1">
<RuleCollection Type="Exe" EnforcementMode="NotConfigured" />
<RuleCollection Type ="Msi" EnforcementMode="NotConfigured" />
<RuleCollection Type ="Script" EnforcementMode="NotConfigured" />
<RuleCollection Type ="Dll" EnforcementMode="NotConfigured" />
<RuleCollection Type ="Appx" EnforcementMode="NotConfigured">
<FilePublisherRule Id="5e0c752b-5921-4f72-8146-80ad5f582110"
Name="Microsoft.Windows.Photos, version 16.526.0.0 and above, from
Microsoft Corporation" Description="" UserOrGroupSid="S-1-1-0"
Action="Allow">
<Conditions>
<FilePublisherCondition PublisherName="CN=Microsoft
Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
ProductName="Microsoft.Windows.Photos" BinaryName="*">
<BinaryVersionRange LowSection="16.526.0.0"
HighSection="*" />
</FilePublisherCondition>
</Conditions>
</FilePublisherRule>
</RuleCollection>
</AppLockerPolicy>

12. After you've created your XML file, you need to import it by using Configuration
Manager.

To import your Applocker policy file app rule using Configuration Manager

1. From the App rules area, select Add.

The Add app rule box appears.

2. Add a friendly name for your app into the Title box. In this example, it's Allowed
app list.
3. Select Allow from the Windows Information Protection mode drop-down list.

Allow turns on WIP, helping to protect that app's corporate data through the
enforcement of WIP restrictions. If you want to exempt an app, you can follow the
steps in the Exempt apps from WIP restrictions section.

4. Pick the AppLocker policy file from the Rule template drop-down list.

The box changes to let you import your AppLocker XML policy file.

5. Select the ellipsis (...) to browse for your AppLocker XML file, select Open, and then
select OK to close the Add app rule box.

The file is imported and the apps are added to your App Rules list.

Exempt apps from WIP restrictions


If you're running into compatibility issues where your app is incompatible with Windows
Information Protection (WIP), but still needs to be used with enterprise data, you can
exempt the app from the WIP restrictions. This means that your apps won't include
auto-encryption or tagging and won't honor your network restrictions. It also means
that your exempted apps might leak.

To exempt a store app, a desktop app, or an AppLocker policy file app rule

1. From the App rules area, select Add.

The Add app rule box appears.

2. Add a friendly name for your app into the Title box. In this example, it's Exempt
apps list.

3. Select Exempt from the Windows Information Protection mode drop-down list.

When you exempt apps, they're allowed to bypass the WIP restrictions and access
your corporate data. To allow apps, see Add app rules to your policy in this article.

4. Fill out the rest of the app rule info, based on the type of rule you're adding:

Store app. Follow the Publisher and Product name instructions in the Add a
store app rule to your policy section of this article.

Desktop app. Follow the Publisher, Product name, Binary name, and Version
instructions in the Add a desktop app rule to your policy section of this
article.
AppLocker policy file. Follow the Import instructions in the Add an
AppLocker policy file section of this article, using a list of exempted apps.

5. Select OK.

Manage the WIP-protection level for your


enterprise data
After you've added the apps you want to protect with WIP, you'll need to apply a
management and protection mode.

We recommend that you start with Silent or Override while verifying with a small group
that you have the right apps on your protected apps list. After you're done, you can
change to your final enforcement policy, either Override or Block.

7 Note

For info about how to collect your audit log files, see How to collect Windows
Information Protection (WIP) audit event logs.

Mode Description

Block WIP looks for inappropriate data sharing practices and stops the employee from
completing the action. This can include sharing info across non-enterprise-protected
apps in addition to sharing enterprise data between other people and devices outside
of your enterprise.

Override WIP looks for inappropriate data sharing, warning employees if they do something
deemed potentially unsafe. However, this management mode lets the employee
override the policy and share the data, logging the action to your audit log.

Silent WIP runs silently, logging inappropriate data sharing, without blocking anything that
would have been prompted for employee interaction while in Override mode.
Unallowed actions, like apps inappropriately trying to access a network resource or
WIP-protected data, are still blocked.

Off WIP is turned off and doesn't help to protect or audit your data.
After you turn off WIP, an attempt is made to decrypt any WIP-tagged files on the
locally attached drives. Your previous decryption and policy info isn't automatically
reapplied if you turn WIP protection back on. For more information, see How to
disable Windows Information Protection.
Define your enterprise-managed identity
domains
Corporate identity, usually expressed as your primary internet domain (for example,
contoso.com), helps to identify and tag your corporate data from apps you've marked as
protected by WIP. For example, emails using contoso.com are identified as being
corporate and are restricted by your Windows Information Protection policies.

You can specify multiple domains owned by your enterprise by separating them with the
| character. For example, contoso.com|newcontoso.com . With multiple domains, the first

one is designated as your corporate identity and all of the additional ones as being
owned by the first one. We strongly recommend that you include all of your email
address domains in this list.

To add your corporate identity


Type the name of your corporate identity into the Corporate identity field. For
example, contoso.com or contoso.com|newcontoso.com .

Choose where apps can access enterprise data


After you've added a protection mode to your apps, you'll need to decide where those
apps can access enterprise data on your network.

There are no default locations included with WIP, you must add each of your network
locations. This area applies to any network endpoint device that gets an IP address in
your enterprise's range and is also bound to one of your enterprise domains, including
SMB shares. Local file system locations should just maintain encryption (for example, on
local NTFS, FAT, ExFAT).

) Important

Every WIP policy should include policy that defines your enterprise network
locations.
Classless Inter-Domain Routing (CIDR) notation isn't supported for WIP
configurations.

To define where your protected apps can find and send enterprise data on your
network

1. Add additional network locations your apps can access by clicking Add.

The Add or edit corporate network definition box appears.

2. Type a name for your corporate network element into the Name box, and then
pick what type of network element it is, from the Network element drop-down
box. This can include any of the options in the following table.
Enterprise Cloud Resources: Specify the cloud resources to be treated as
corporate and protected by WIP.

For each cloud resource, you may also optionally specify a proxy server from
your internal proxy servers list to route traffic for this cloud resource. All
traffic routed through your internal proxy servers is considered enterprise.

If you have multiple resources, you must separate them using the | delimiter.
If you don't use proxy servers, you must also include the , delimiter just
before the | . For example: URL <,proxy>|URL <,proxy> .

Format examples:

With proxy:
contoso.sharepoint.com,contoso.internalproxy1.com|contoso.visualstudio

.com,contoso.internalproxy2.com

Without proxy: contoso.sharepoint.com|contoso.visualstudio.com

) Important
In some cases, such as when an app connects directly to a cloud
resource through an IP address, Windows can't tell whether it's
attempting to connect to an enterprise cloud resource or to a personal
site. In this case, Windows blocks the connection by default. To stop
Windows from automatically blocking these connections, you can add
the /AppCompat/ string to the setting. For example: URL <,proxy>|URL
<,proxy>|/AppCompat/.

Enterprise Network Domain Names (Required): Specify the DNS suffixes


used in your environment. All traffic to the fully qualified domains appearing
in this list will be protected.

This setting works with the IP ranges settings to detect whether a network
endpoint is enterprise or personal on private networks.

If you have multiple resources, you must separate them using the ","
delimiter.

Format examples: corp.contoso.com,region.contoso.com

Proxy servers: Specify the proxy servers your devices will go through to reach
your cloud resources. Using this server type indicates that the cloud resources
you're connecting to are enterprise resources.

This list shouldn't include any servers listed in your Internal proxy servers list.
Internal proxy servers must be used only for WIP-protected (enterprise)
traffic.

If you have multiple resources, you must separate them using the ";"
delimiter.

Format examples: proxy.contoso.com:80;proxy2.contoso.com:443

Internal proxy servers: Specify the internal proxy servers your devices will go
through to reach your cloud resources. Using this server type indicates that
the cloud resources you're connecting to are enterprise resources.

This list shouldn't include any servers listed in your Proxy servers list. Proxy
servers must be used only for non-WIP-protected (non-enterprise) traffic.

If you have multiple resources, you must separate them using the ";"
delimiter.

Format examples: contoso.internalproxy1.com;contoso.internalproxy2.com


Enterprise IPv4 Range (Required): Specify the addresses for a valid IPv4 value
range within your intranet. These addresses, used with your Enterprise
Network Domain Names, define your corporate network boundaries.

If you have multiple ranges, you must separate them using the "," delimiter.

Format examples:
Starting IPv4 Address: 3.4.0.1
Ending IPv4 Address: 3.4.255.254
Custom URI: 3.4.0.1-3.4.255.254, 10.0.0.1-10.255.255.254

Enterprise IPv6 Range: Specify the addresses for a valid IPv6 value range
within your intranet. These addresses, used with your Enterprise Network
Domain Names, define your corporate network boundaries.

If you have multiple ranges, you must separate them using the "," delimiter.

Format examples:
Starting IPv6 Address: 2a01:110::
Ending IPv6 Address: 2a01:110:7fff:ffff:ffff:ffff:ffff:ffff
Custom URI: 2a01:110:7fff:ffff:ffff:ffff:ffff:ffff,fd00::-
fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Neutral Resources: Specify your authentication redirection endpoints for your


company. These locations are considered enterprise or personal, based on
the context of the connection before the redirection.

If you have multiple resources, you must separate them using the ","
delimiter.

Format examples: sts.contoso.com,sts.contoso2.com

3. Add as many locations as you need, and then select OK.

The Add or edit corporate network definition box closes.

4. Decide if you want to Windows to look for additional network settings and if you
want to show the WIP icon on your corporate files while in File Explorer.
Enterprise Proxy Servers list is authoritative (do not auto-detect). Select this
box if you want Windows to treat the proxy servers you specified in the
network boundary definition as the complete list of proxy servers available on
your network. If you clear this box, Windows will search for additional proxy
servers in your immediate network. Not configured is the default option.

Enterprise IP Ranges list is authoritative (do not auto-detect). Select this


box if you want Windows to treat the IP ranges you specified in the network
boundary definition as the complete list of IP ranges available on your
network. If you clear this box, Windows will search for additional IP ranges on
any domain-joined devices connected to your network. Not configured is the
default option.

Show the Windows Information Protection icon overlay on your allowed


apps that are WIP-unaware on corporate files in the File Explorer. Select this
box if you want the Windows Information Protection icon overlay to appear
on corporate files in the Save As and File Explorer views. Additionally, for
unenlightened but allowed apps, the icon overlay also appears on the app tile
and with Managed text on the app name in the Start menu. Not configured is
the default option.

5. In the required Upload a Data Recovery Agent (DRA) certificate to allow recovery
of encrypted data box, select Browse to add a data recovery certificate for your
policy.

After you create and deploy your WIP policy to your employees, Windows will
begin to encrypt your corporate data on the employees' local device drive. If
somehow the employees' local encryption keys get lost or revoked, the encrypted
data can become unrecoverable. To help avoid this possibility, the DRA certificate
lets Windows use an included public key to encrypt the local data, while you
maintain the private key that can unencrypt the data.

For more info about how to find and export your data recovery certificate, see Data
Recovery and Encrypting File System (EFS). For more info about creating and
verifying your EFS DRA certificate, see Create and verify an Encrypting File System
(EFS) Data Recovery Agent (DRA) certificate.

Choose your optional WIP-related settings


After you've decided where your protected apps can access enterprise data on your
network, you'll be asked to decide if you want to add any optional WIP settings.
To set your optional settings

1. Choose to set any or all of the optional settings:

Allow Windows Search to search encrypted corporate data and Store apps.
Determines whether Windows Search can search and index encrypted
corporate data and Store apps. The options are:

Yes. Allows Windows Search to search and index encrypted corporate data
and Store apps.

No, or not configured (recommended). Stops Windows Search from


searching and indexing encrypted corporate data and Store apps.

Revoke local encryption keys during the unenrollment process. Determines


whether to revoke a user's local encryption keys from a device when it's
unenrolled from Windows Information Protection. If the encryption keys are
revoked, a user no longer has access to encrypted corporate data. The
options are:

Yes, or not configured (recommended). Revokes local encryption keys


from a device during unenrollment.

No. Stop local encryption keys from being revoked from a device during
unenrollment. For example, if you're migrating between Mobile Device
Management (MDM) solutions.

Allow Azure RMS. Enables secure sharing of files by using removable media
such as USB drives. For more information about how RMS works with WIP,
see Create a WIP policy using Intune. To confirm what templates your tenant
has, run Get-AadrmTemplate from the AADRM PowerShell module. If you
don't specify a template, WIP uses a key from a default RMS template that
everyone in the tenant will have access to.

2. After you pick all of the settings you want to include, select Summary.

Review your configuration choices in the


Summary screen
After you've finished configuring your policy, you can review all of your info on the
Summary screen.

To view the Summary screen

Select the Summary button to review your policy choices, and then select Next to
finish and to save your policy.
A progress bar appears, showing you progress for your policy. After it's done,
select Close to return to the Configuration Items page.

Deploy the WIP policy


After you've created your WIP policy, you'll need to deploy it to your organization's
devices. For more information about your deployment options, see the following
articles:

Create configuration baselines in Configuration Manager

How to deploy configuration baselines in Configuration Manager

Related articles
How to collect Windows Information Protection (WIP) audit event logs

General guidance and best practices for Windows Information Protection (WIP)
Limitations while using Windows Information Protection (WIP)
Create and verify an Encrypting File
System (EFS) Data Recovery Agent
(DRA) certificate
Article • 12/09/2022

---author: aczechowski ms.author: aaroncz


ms.prod: windows ms.topic: include ms.date:
07/20/2022

7 Note

Starting in July 2022, Microsoft is deprecating Windows Information Protection


(WIP). Microsoft will continue to support WIP on supported versions of Windows.
New versions of Windows won't include new capabilities for WIP, and it won't be
supported in future versions of Windows. For more information, see Announcing
sunset of Windows Information Protection .

For your data protection needs, Microsoft recommends that you use Microsoft
Purview Information Protection and Microsoft Purview Data Loss Prevention.
Purview simplifies the configuration set-up and provides an advanced set of
capabilities.

Applies to:

Windows 10
Windows 11

If you don't already have an EFS DRA certificate, you'll need to create and extract one
from your system before you can use Windows Information Protection (WIP), formerly
known as enterprise data protection (EDP), in your organization. For the purposes of this
section, we'll use the file name EFSDRA; however, this name can be replaced with
anything that makes sense to you.

) Important

If you already have an EFS DRA certificate for your organization, you can skip
creating a new one. Just use your current EFS DRA certificate in your policy. For
more info about when to use a PKI and the general strategy you should use to
deploy DRA certificates, see the Security Watch Deploying EFS: Part 1 article on
TechNet. For more general info about EFS protection, see Protecting Data by Using
EFS to Encrypt Hard Drives.

If your DRA certificate has expired, you won't be able to encrypt your files with it. To
fix this, you'll need to create a new certificate, using the steps in this topic, and then
deploy it through policy.

Manually create an EFS DRA certificate


1. On a computer without an EFS DRA certificate installed, open a command prompt
with elevated rights, and then navigate to where you want to store the certificate.

2. Run this command:

Windows Command Prompt

cipher /r:EFSRA

Where EFSRA is the name of the .cer and .pfx files that you want to create.

3. When prompted, type and confirm a password to help protect your new Personal
Information Exchange (.pfx) file.

The EFSDRA.cer and EFSDRA.pfx files are created in the location you specified in
Step 1.

) Important

Because the private keys in your DRA .pfx files can be used to decrypt any WIP
file, you must protect them accordingly. We highly recommend storing these
files offline, keeping copies on a smart card with strong protection for normal
use and master copies in a secured physical location.

4. Add your EFS DRA certificate to your WIP policy using a deployment tool, such as
Microsoft Intune or Microsoft Configuration Manager.

7 Note
This certificate can be used in Intune for policies both with device enrollment
(MDM) and without device enrollment (MAM).

Verify your data recovery certificate is correctly


set up on a WIP client computer
1. Find or create a file that's encrypted using Windows Information Protection. For
example, you could open an app on your allowed app list, and then create and
save a file so it's encrypted by WIP.

2. Open an app on your protected app list, and then create and save a file so that it's
encrypted by WIP.

3. Open a command prompt with elevated rights, navigate to where you stored the
file you just created, and then run this command:

Windows Command Prompt

cipher /c filename

Where filename is the name of the file you created in Step 1.

4. Make sure that your data recovery certificate is listed in the Recovery Certificates
list.

Recover your data using the EFS DRA certificate


in a test environment
1. Copy your WIP-encrypted file to a location where you have admin access.

2. Install the EFSDRA.pfx file, using its password.

3. Open a command prompt with elevated rights, navigate to the encrypted file, and
then run this command:

Windows Command Prompt

cipher /d encryptedfile.extension

Where encryptedfile.extension is the name of your encrypted file. For example,


corporatedata.docx .
Recover WIP-protected after unenrollment
It's possible that you might revoke data from an unenrolled device only to later want to
restore it all. This can happen in the case of a missing device being returned or if an
unenrolled employee enrolls again. If the employee enrolls again using the original user
profile, and the revoked key store is still on the device, all of the revoked data can be
restored at once.

) Important

To maintain control over your enterprise data, and to be able to revoke again in the
future, you must only perform this process after the employee has re-enrolled the
device.

1. Have the employee sign in to the unenrolled device, open an elevated command
prompt, and type:

Windows Command Prompt

Robocopy "%localappdata%\Microsoft\EDP\Recovery" "new_location" *


/EFSRAW

Where "new_location" is in a different directory. This can be on the employee's


device or on a shared folder on a computer that runs Windows 8 or Windows
Server 2012 or newer and can be accessed while you're logged in as a data
recovery agent.

To start Robocopy in S mode, open Task Manager. Click File > Run new task, type
the command, and click Create this task with administrative privileges.

If the employee performed a clean installation and there is no user profile, you
need to recover the keys from the System Volume folder in each drive. Type:
Windows Command Prompt

Robocopy "drive_letter:\System Volume Information\EDP\Recovery\"


"new_location" * /EFSRAW

2. Sign in to a different device with administrator credentials that have access to your
organization's DRA certificate, and perform the file decryption and recovery by
typing:

Windows Command Prompt

cipher.exe /D "new_location"

3. Have your employee sign in to the unenrolled device, and type:

Windows Command Prompt

Robocopy "new_location" "%localappdata%\Microsoft\EDP\Recovery\Input"

4. Ask the employee to lock and unlock the device.

The Windows Credential service automatically recovers the employee's previously


revoked keys from the Recovery\Input location.

Auto-recovery of encryption keys


Starting with Windows 10, version 1709, WIP includes a data recovery feature that lets
your employees auto-recover access to work files if the encryption key is lost and the
files are no longer accessible. This typically happens if an employee reimages the
operating system partition, removing the WIP key info, or if a device is reported as lost
and you mistakenly target the wrong device for unenrollment.

To help make sure employees can always access files, WIP creates an auto-recovery key
that's backed up to their Azure Active Directory (Azure AD) identity.

The employee experience is based on signing in with an Azure AD work account. The
employee can either:

Add a work account through the Windows Settings > Accounts > Access work or
school > Connect menu.

-OR-
Open Windows Settings > Accounts > Access work or school > Connect and
choose the Join this device to Azure Active Directory link, under Alternate
actions.

7 Note

To perform an Azure AD Domain Join from the Settings page, the employee
must have administrator privileges to the device.

After signing in, the necessary WIP key info is automatically downloaded and employees
are able to access the files again.

To test what the employee sees during the WIP key


recovery process
1. Attempt to open a work file on an unenrolled device.

The Connect to Work to access work files box appears.

2. Click Connect.

The Access work or school settings page appears.

3. Sign-in to Azure AD as the employee and verify that the files now open

Related topics
Security Watch Deploying EFS: Part 1

Protecting Data by Using EFS to Encrypt Hard Drives

Create a Windows Information Protection (WIP) policy using Microsoft Intune

Create a Windows Information Protection (WIP) policy using Microsoft


Configuration Manager

Creating a Domain-Based Recovery Agent


Determine the Enterprise Context of an
app running in Windows Information
Protection (WIP)
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

Learn more about what features and functionality are supported in each Windows
edition at Compare Windows 10 Editions .

Use Task Manager to check the context of your apps while running in Windows
Information Protection (WIP) to make sure that your organization's policies are applied
and running correctly.

Viewing the Enterprise Context column in Task


Manager
You need to add the Enterprise Context column to the Details tab of the Task Manager.

1. Make sure that you have an active Windows Information Protection policy
deployed and turned on in your organization.

2. Open the Task Manager (taskmgr.exe), click the Details tab, right-click in the
column heading area, and click Select columns.

The Select columns box appears.


3. Scroll down and check the Enterprise Context option, and then click OK to close
the box.

The Enterprise Context column should now be available in Task Manager.

Review the Enterprise Context


The Enterprise Context column shows you what each app can do with your enterprise
data:
Domain. Shows the employee's work domain (such as, corp.contoso.com). This app
is considered work-related and can freely touch and open work data and
resources.

Personal. Shows the text, Personal. This app is considered non-work-related and
can't touch any work data or resources.

Exempt. Shows the text, Exempt. Windows Information Protection policies don't
apply to these apps (such as, system components).

) Important

Enlightened apps can change between Work and Personal, depending on the
data being touched. For example, Microsoft Word 2016 shows as Personal
when an employee opens a personal letter, but changes to Work when that
same employee opens the company financials.
Mandatory tasks and settings required
to turn on Windows Information
Protection (WIP)
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

This list provides all of the tasks and settings that are required for the operating system
to turn on Windows Information Protection (WIP), formerly known as enterprise data
protection (EDP), in your enterprise.

Task Description

Add at least one app You must have at least one Store app and one Desktop app added to
of each type (Store and your Protected apps list. For more info about where this area is and
Desktop) to the how to add apps, see the Add apps to your Protected apps list section
Protected apps list in of the policy creation topics.
your WIP policy.

Choose your Windows You must choose the level of protection you want to apply to your WIP-
Information Protection protected content, including Allow Overrides, Silent, or Block. For more
protection level. info about where this area is and how to decide on your protection
level, see the Manage Windows Information Protection mode for your
enterprise data section of the policy creation topics. For info about how
to collect your audit log files, see How to collect Windows Information
Protection (WIP) audit event logs.

Specify your corporate This field is automatically filled out for you by Microsoft Intune.
identity. However, you must manually correct it if it's incorrect or if you need to
add additional domains. For more info about where this area is and
what it means, see the Define your enterprise-managed corporate
identity section of the policy creation topics.

Specify your network Starting with Windows 10, version 1703, this field is optional.
domain names.
Specify the DNS suffixes used in your environment. All traffic to the fully
qualified domains appearing in this list will be protected. For more info
about where this area is and how to add your suffixes, see the table that
appears in the Choose where apps can access enterprise data section
of the policy creation topics.

Specify your enterprise Starting with Windows 10, version 1703, this field is optional.
IPv4 or IPv6 ranges.
Specify the addresses for a valid IPv4 or IPv6 value range within your
Task Description

intranet. These addresses, used with your Network domain names,


define your corporate network boundaries. For more info about where
this area is and what it means, see the table that appears in the Define
your enterprise-managed corporate identity section of the policy
creation topics.

Include your Data Starting with Windows 10, version 1703, this field is optional. But we
Recovery Agent (DRA) strongly recommend that you add a certificate.
certificate.
This certificate makes sure that any of your WIP-encrypted data can be
decrypted, even if the security keys are lost. For more info about where
this area is and what it means, see the Create and verify an Encrypting
File System (EFS) Data Recovery Agent (DRA) certificate topic.

7 Note

Help to make this topic better by providing us with edits, additions, and feedback.
For info about how to contribute to this topic, see Editing Windows IT professional
documentation .
Testing scenarios for Windows
Information Protection (WIP)
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

We've come up with a list of suggested testing scenarios that you can use to test
Windows Information Protection (WIP) in your company.

Testing scenarios
You can try any of the processes included in these scenarios, but you should focus on
the ones that you might encounter in your organization.

) Important

If any of these scenarios does not work, first take note of whether WIP has been
revoked. If it has, unenlightened apps will have to be uninstalled and re-installed
since their settings files will remain encrypted.

Encrypt and decrypt files using File Explorer:

1. Open File Explorer, right-click a work document, and then click Work from
the File Ownership menu.

Make sure the file is encrypted by right-clicking the file again, clicking
Advanced from the General tab, and then clicking Details from the Compress
or Encrypt attributes area. The file should show up under the heading, This
enterprise domain can remove or revoke access: *
<your_enterprise_identity>* . For example, contoso.com .

2. In File Explorer, right-click the same document, and then click Personal from
the File Ownership menu.

Make sure the file is decrypted by right-clicking the file again, clicking
Advanced from the General tab, and then verifying that the Details button is
unavailable.
Create work documents in enterprise-allowed apps: Start an unenlightened but
allowed app, such as a line-of-business app, and then create a new document,
saving your changes.

Make sure the document is encrypted to your Enterprise Identity. This might take a
few minutes and require you to close and re-open the file.

) Important

Certain file types like .exe and .dll , along with certain file paths, such as
%windir% and %programfiles% are excluded from automatic encryption.

For more info about your Enterprise Identity and adding apps to your allowed apps
list, see either Create a Windows Information Protection (WIP) policy using
Microsoft Intune or Create a Windows Information Protection (WIP) policy using
Microsoft Configuration Manager, based on your deployment system.

Block enterprise data from non-enterprise apps:

1. Start an app that doesn't appear on your allowed apps list, and then try to
open a work-encrypted file.

The app shouldn't be able to access the file.

2. Try double-clicking or tapping on the work-encrypted file. If your default app


association is an app not on your allowed apps list, you should get an Access
Denied error message.

Copy and paste from enterprise apps to non-enterprise apps:

1. Copy (CTRL+C) content from an app on your allowed apps list, and then try
to paste (CTRL+V) the content into an app that doesn't appear on your
allowed apps list.

You should see a WIP-related warning box, asking you to click either Change
to personal or Keep at work.

2. Click Keep at work. The content isn't pasted into the non-enterprise app.

3. Repeat Step 1, but this time select Change to personal and try to paste the
content again.

The content is pasted into the non-enterprise app.


4. Try copying and pasting content between apps on your allowed apps list. The
content should copy and paste between apps without any warning messages.

Drag and drop from enterprise apps to non-enterprise apps:

1. Drag content from an app on your allowed apps list, and then try to drop the
content into an app that doesn't appear on your allowed apps list.

You should see a WIP-related warning box, asking you to click either Keep at
work or Change to personal.

2. Click Keep at work. The content isn't dropped into the non-enterprise app.

3. Repeat Step 1, but this time select Change to personal and try to drop the
content again.

The content is dropped into the non-enterprise app.

4. Try dragging and dropping content between apps on your allowed apps list.
The content should move between the apps without any warning messages.

Share between enterprise apps and non-enterprise apps:

1. Open an app on your allowed apps list, like Microsoft Photos, and try to
share content with an app that doesn't appear on your allowed apps list, like
Facebook.

You should see a WIP-related warning box, asking you to click either Keep at
work or Change to personal.

2. Click Keep at work. The content isn't shared into Facebook.

3. Repeat Step 1, but this time select Change to personal and try to share the
content again.

The content is shared into Facebook.

4. Try sharing content between apps on your allowed apps list. The content
should share between the apps without any warning messages.

Verify that Windows system components can use WIP:

1. Start Windows Journal and Internet Explorer 11, creating, editing, and saving
files in both apps.

Make sure that all of the files you worked with are encrypted to your
configured Enterprise Identity. In some cases, you might need to close the file
and wait a few moments for it to be automatically encrypted.

2. Open File Explorer and make sure your modified files are appearing with a
Lock icon.

3. Try copying and pasting, dragging and dropping, and sharing using these
apps with other apps that appear both on and off the allowed apps list.

7 Note

Most Windows-signed components like File Explorer (when running in


the user's context), should have access to enterprise data.

A few notable exceptions include some of the user-facing in-box apps,


like Wordpad, Notepad, and Microsoft Paint. These apps don't have
access by default, but can be added to your allowed apps list.

Use WIP on NTFS, FAT, and exFAT systems:

1. Start an app that uses the FAT or exFAT file system (for example an SD card or
USB flash drive), and appears on your allowed apps list.
2. Create, edit, write, save, copy, and move files. Basic file and folder operations
like copy, move, rename, delete, and so on, should work properly on
encrypted files.

Verify your shared files can use WIP:

1. Download a file from a protected file share, making sure the file is encrypted
by locating the Briefcase icon next to the file name.

2. Open the same file, make a change, save it and then try to upload it back to
the file share. Again, this should work without any warnings.

3. Open an app that doesn't appear on your allowed apps list and attempt to
access a file on the WIP-enabled file share.

The app shouldn't be able to access the file share.

Verify your cloud resources can use WIP:

1. Add both Internet Explorer 11 and Microsoft Edge to your allowed apps list.

2. Open SharePoint (or another cloud resource that's part of your policy) and
access a WIP-enabled resource by using both IE11 and Microsoft Edge.
Both browsers should respect the enterprise and personal boundary.

3. Remove Internet Explorer 11 from your allowed app list and then try to access
an intranet site or enterprise-related cloud resource.

IE11 shouldn't be able to access the sites.

7 Note

Any file downloaded from your work SharePoint site, or any other WIP-
enabled cloud resource, is automatically marked as Work.

Verify your Virtual Private Network (VPN) can be auto-triggered:

1. Set up your VPN network to start based on the WIPModeID setting. For
specific info, see Create and deploy a VPN policy for Windows Information
Protection (WIP) using Microsoft Intune.

2. Start an app from your allowed apps list. The VPN network should
automatically start.

3. Disconnect from your network and then start an app that isn't on your
allowed apps list.

The VPN shouldn't start and the app shouldn't be able to access your
enterprise network.

Unenroll client devices from WIP: Unenroll a device from WIP by going to
Settings, click Accounts, click Work, click the name of the device you want to
unenroll, and then click Remove.

The device should be removed and all of the enterprise content for that managed
account should be gone.

) Important

On client devices, the data isn't removed and can be recovered. So, you must
make sure the content is marked as Revoked and that access is denied for the
employee.

7 Note
Help to make this topic better by providing us with edits, additions, and feedback.
For info about how to contribute, see Editing Windows IT professional
documentation .
Limitations while using Windows
Information Protection (WIP)
Article • 12/09/2022

Applies to:

Windows 10
Windows 11

This following list provides info about the most common problems you might encounter
while running Windows Information Protection in your organization.

Limitation: Your enterprise data on USB drives might be tied to the device it was
protected on, based on your Azure RMS configuration.

How it appears:
If you're using Azure RMS: Authenticated users can open enterprise data on
USB drives, on computers running Windows 10, version 1703.
If you're not using Azure RMS: Data in the new location remains encrypted,
but becomes inaccessible on other devices and for other users. For example,
the file won't open or the file opens, but doesn't contain readable text.

Workaround: Share files with fellow employees through enterprise file servers
or enterprise cloud locations. If data must be shared via USB, employees can
decrypt protected files, but it will be audited.

We strongly recommend educating employees about how to limit or eliminate


the need for this decryption.

Limitation: Direct Access is incompatible with Windows Information Protection.

How it appears: Direct Access might experience problems with how Windows
Information Protection enforces app behavior and data movement because of
how WIP determines what is and isn't a corporate network resource.

Workaround: We recommend that you use VPN for client access to your
intranet resources.

7 Note

VPN is optional and isn't required by Windows Information Protection.


Limitation: NetworkIsolation Group Policy setting takes precedence over MDM
Policy settings.
How it appears: The NetworkIsolation Group Policy setting can configure
network settings that can also be configured by using MDM. WIP relies on these
policies being correctly configured.
Workaround: If you use both Group Policy and MDM to configure your
NetworkIsolation settings, you must make sure that those same settings are
deployed to your organization using both Group Policy and MDM.

Limitation: Cortana can potentially allow data leakage if it's on the allowed apps
list.

How it appears: If Cortana is on the allowed list, some files might become
unexpectedly encrypted after an employee performs a search using Cortana.
Your employees will still be able to use Cortana to search and provide results on
enterprise documents and locations, but results might be sent to Microsoft.

Workaround: We don't recommend adding Cortana to your allowed apps list.


However, if you wish to use Cortana and don't mind whether the results
potentially go to Microsoft, you can make Cortana an Exempt app.

Limitation: Windows Information Protection is designed for use by a single user


per device.
How it appears: A secondary user on a device might experience app
compatibility issues when unenlightened apps start to automatically encrypt for
all users. Additionally, only the initial, enrolled user's content can be revoked
during the unenrollment process.
Workaround: Have only one user per managed device.
If this scenario occurs, it may be possible to mitigate. Once protection is
disabled, a second user can remove protection by changing the file ownership.
Although the protection is in place, the file remains accessible to the user.

Limitation: Installers copied from an enterprise network file share might not work
properly.
How it appears: An app might fail to properly install because it can't read a
necessary configuration or data file, such as a .cab or .xml file needed for
installation, which was protected by the copy action.
Workaround: To fix this, you can:

Start the installer directly from the file share.

OR
Decrypt the locally copied files needed by the installer.

OR

Mark the file share with the installation media as "personal". To do this, you'll
need to set the Enterprise IP ranges as Authoritative and then exclude the IP
address of the file server, or you'll need to put the file server on the
Enterprise Proxy Server list.

Limitation: Changing your primary Corporate Identity isn't supported.


How it appears: You might experience various instabilities, including but not
limited to network and file access failures, and potentially granting incorrect
access.
Workaround: Turn off Windows Information Protection for all devices before
changing the primary Corporate Identity (first entry in the list), restarting, and
finally redeploying.

Limitation: Redirected folders with Client-Side Caching are not compatible with
Windows Information Protection.

How it appears: Apps might encounter access errors while attempting to read a
cached, offline file.

Workaround: Migrate to use another file synchronization method, such as Work


Folders or OneDrive for Business.

7 Note

For more info about Work Folders and Offline Files, see the Work Folders
and Offline Files support for Windows Information Protection blog . If
you're having trouble opening files offline while using Offline Files and
Windows Information Protection, see Can't open files offline when you
use Offline Files and Windows Information Protection.

Limitation: An unmanaged device can use Remote Desktop Protocol (RDP) to


connect to a WIP-managed device.

How it appears:
Data copied from the WIP-managed device is marked as Work.
Data copied to the WIP-managed device is not marked as Work.
Local Work data copied to the WIP-managed device remains Work data.
Work data that is copied between two apps in the same session remains **
data.
Workaround: Disable RDP to prevent access because there is no way to restrict
access to only devices managed by Windows Information Protection. RDP is
disabled by default.

Limitation: You can't upload an enterprise file to a personal location using


Microsoft Edge or Internet Explorer.
How it appears: A message appears stating that the content is marked as Work
and the user isn't given an option to override to Personal.
Workaround: Open File Explorer and change the file ownership to Personal
before you upload.

Limitation: ActiveX controls should be used with caution.

How it appears: Webpages that use ActiveX controls can potentially


communicate with other outside processes that aren't protected by using
Windows Information Protection.

Workaround: We recommend that you switch to using Microsoft Edge, the


more secure and safer browser that prevents the use of ActiveX controls. We
also recommend that you limit the usage of Internet Explorer 11 to only those
line-of-business apps that require legacy technology.

For more info, see Out-of-date ActiveX control blocking.

Limitation: Resilient File System (ReFS) isn't currently supported with Windows
Information Protection.
How it appears:Trying to save or transfer Windows Information Protection files
to ReFS will fail.
Workaround: Format drive for NTFS, or use a different drive.

Limitation: Windows Information Protection isn't turned on if any of the following


folders have the MakeFolderAvailableOfflineDisabled option set to False:
AppDataRoaming
Desktop
StartMenu
Documents
Pictures
Music
Videos
Favorites
Contacts
Downloads
Links
Searches
SavedGames

How it appears: Windows Information Protection isn't turned on for employees


in your organization. Error code 0x807c0008 will result if Windows Information
Protection is deployed by using Microsoft Configuration Manager.

Workaround: Don't set the MakeFolderAvailableOfflineDisabled option to


False for any of the specified folders. You can configure this parameter, as
described Disable Offline Files on individual redirected folders.

If you currently use redirected folders, we recommend that you migrate to a file
synchronization solution that supports Windows Information Protection, such as
Work Folders or OneDrive for Business. Additionally, if you apply redirected
folders after Windows Information Protection is already in place, you might be
unable to open your files offline.

For more info about these potential access errors, see Can't open files offline
when you use Offline Files and Windows Information Protection.

Limitation: Only enlightened apps can be managed without device enrollment

How it appears: If a user enrolls a device for Mobile Application Management


(MAM) without device enrollment, only enlightened apps will be managed. This
is by design to prevent personal files from being unintentionally encrypted by
unenlighted apps.

Unenlighted apps that need to access work using MAM need to be re-compiled
as LOB apps or managed by using MDM with device enrollment.

Workaround: If all apps need to be managed, enroll the device for MDM.

Limitation: By design, files in the Windows directory (%windir% or C:/Windows)


cannot be encrypted because they need to be accessed by any user. If a file in the
Windows directory gets encrypted by one user, other users can't access it.
How it appears: Any attempt to encrypt a file in the Windows directory will
return a file access denied error. But if you copy or drag and drop an encrypted
file to the Windows directory, it will retain encryption to honor the intent of the
owner.
Workaround: If you need to save an encrypted file in the Windows directory,
create and encrypt the file in a different directory and copy it.
Limitation: OneNote notebooks on OneDrive for Business must be properly
configured to work with Windows Information Protection.

How it appears: OneNote might encounter errors syncing a OneDrive for


Business notebook and suggest changing the file ownership to Personal.
Attempting to view the notebook in OneNote Online in the browser will show
an error and unable to view it.

Workaround: OneNote notebooks that are newly copied into the OneDrive for
Business folder from File Explorer should get fixed automatically. To do this,
follow these steps:

1. Close the notebook in OneNote.


2. Move the notebook folder via File Explorer out of the OneDrive for
Business folder to another location, such as the Desktop.
3. Copy the notebook folder and Paste it back into the OneDrive for Business
folder.

Wait a few minutes to allow OneDrive to finish syncing & upgrading the
notebook, and the folder should automatically convert to an Internet Shortcut.
Opening the shortcut will open the notebook in the browser, which can then be
opened in the OneNote client by using the "Open in app" button.

Limitation: Microsoft Office Outlook offline data files (PST and OST files) are not
marked as Work files, and are therefore not protected.
How it appears: If Microsoft Office Outlook is set to work in cached mode
(default setting), or if some emails are stored in a local PST file, the data is
unprotected.
Workaround: It is recommended to use Microsoft Office Outlook in Online
mode, or to use encryption to protect OST and PST files manually.

7 Note

When corporate data is written to disk, Windows Information Protection uses


the Windows-provided Encrypting File System (EFS) to protect it and associate
it with your enterprise identity. One caveat to keep in mind is that the Preview
Pane in File Explorer will not work for encrypted files.

Help to make this topic better by providing us with edits, additions, and
feedback. For info about how to contribute to this topic, see Contributing to
our content .
How to collect Windows Information
Protection (WIP) audit event logs
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

Windows Information Protection (WIP) creates audit events in the following situations:

If an employee changes the File ownership for a file from Work to Personal.

If data is marked as Work, but shared to a personal app or webpage. For example,
through copying and pasting, dragging and dropping, sharing a contact,
uploading to a personal webpage, or if the user grants a personal app provides
temporary access to a work file.

If an app has custom audit events.

Collect WIP audit logs by using the Reporting


configuration service provider (CSP)
Collect the WIP audit logs from your employee's devices by following the guidance
provided by the Reporting configuration service provider (CSP) documentation. This
topic provides info about the actual audit events.

7 Note

The Data element in the response includes the requested audit logs in an XML-
encoded format.

User element and attributes


This table includes all available attributes for the User element.

Attribute Value Description


type

UserID String The security identifier (SID) of the user corresponding to this audit
report.
Attribute Value Description
type

EnterpriseID String The enterprise ID corresponding to this audit report.

Log element and attributes


This table includes all available attributes/elements for the Log element. The response
can contain zero (0) or more Log elements.

Attribute/Element Value Description


type

ProviderType String This is always EDPAudit.

LogType String Includes:


DataCopied. Work data is copied or shared to a
personal location.
ProtectionRemoved. Windows Information
Protection is removed from a Work-defined file.
ApplicationGenerated. A custom audit log
provided by an app.

TimeStamp Int Uses the FILETIME structure to represent the time that
the event happened.

Policy String How the work data was shared to the personal location:
CopyPaste. Work data was pasted into a personal
location or app.
ProtectionRemoved. Work data was changed to be
unprotected.
DragDrop. Work data was dropped into a personal
location or app.
Share. Work data was shared with a personal
location or app.
NULL. Any other way work data could be made
personal beyond the options above. For example,
when a work file is opened using a personal
application (also known as, temporary access).

Justification String Not implemented. This will always be either blank or


NULL.

Note
Reserved for future use to collect the user justification for
changing from Work to Personal.
Attribute/Element Value Description
type

Object String A description of the shared work data. For example, if an


employee opens a work file by using a personal app, this
would be the file path.

DataInfo String Any additional info about how the work file changed:
A file path. If an employee uploads a work file to a
personal website by using Microsoft Edge or
Internet Explorer, the file path is included here.
Clipboard data types. If an employee pastes work
data into a personal app, the list of clipboard data
types provided by the work app are included here.
For more info, see the Examples section of this
topic.

Action Int Provides info about what happened when the work data
was shared to personal, including:
1. File decrypt.
2. Copy to location.
3. Send to recipient.
4. Other.

FilePath String The file path to the file specified in the audit event. For
example, the location of a file that's been decrypted by
an employee or uploaded to a personal website.

SourceApplicationName String The source app or website. For the source app, this is the
AppLocker identity. For the source website, this is the
hostname.

SourceName String A string provided by the app that's logging the event. It's
intended to describe the source of the work data.

DestinationEnterpriseID String The enterprise ID value for the app or website where the
employee is sharing the data.

NULL, Personal, or blank means there's no enterprise ID


because the work data was shared to a personal location.
Because we don't currently support multiple enrollments,
you'll always see one of these values.

DestinationApplicationName String The destination app or website. For the destination app,
this is the AppLocker identity. For the destination
website, this is the hostname.

DestinationName String A string provided by the app that's logging the event. It's
intended to describe the destination of the work data.
Attribute/Element Value Description
type

Application String The AppLocker identity for the app where the audit event
happened.

Examples
Here are a few examples of responses from the Reporting CSP.

File ownership on a file is changed from work to personal

XML

<SyncML><SyncHdr/><SyncBody><Status><CmdID>1</CmdID><MsgRef>1</MsgRef>
<CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd><Data>200</Data></Status><Status>
<CmdID>2</CmdID><MsgRef>1</MsgRef><CmdRef>2</CmdRef><Cmd>Replace</Cmd>
<Data>200</Data></Status><Status><CmdID>3</CmdID><MsgRef>1</MsgRef>
<CmdRef>4</CmdRef><Cmd>Get</Cmd><Data>200</Data></Status><Results>
<CmdID>4</CmdID><MsgRef>1</MsgRef><CmdRef>4</CmdRef><Item><Source>
<LocURI>./Vendor/MSFT/Reporting/EnterpriseDataProtection/RetrieveByTimeRange
/Logs</LocURI></Source><Meta><Format xmlns="syncml:metinf">xml</Format>
</Meta><Data><?xml version="1.0" encoding="utf-8"?>
<Reporting Version="com.contoso/2.0/MDM/Reporting">
<User UserID="S-1-12-1-1111111111-1111111111-1111111111-1111111111"
EnterpriseID="corp.contoso.com">
<Log ProviderType="EDPAudit" LogType="ProtectionRemoved"
TimeStamp="131357166318347527">
<Policy>Protection removed</Policy>
<Justification>NULL</Justification>
<FilePath>C:\Users\TestUser\Desktop\tmp\demo\Work
document.docx</FilePath>
</Log>
</User>
</Reporting></Data></Item></Results><Final/></SyncBody></SyncML>

A work file is uploaded to a personal webpage in Edge

XML

<SyncML><SyncHdr/><SyncBody><Status><CmdID>1</CmdID><MsgRef>1</MsgRef>
<CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd><Data>200</Data></Status><Status>
<CmdID>2</CmdID><MsgRef>1</MsgRef><CmdRef>2</CmdRef><Cmd>Replace</Cmd>
<Data>200</Data></Status><Status><CmdID>3</CmdID><MsgRef>1</MsgRef>
<CmdRef>4</CmdRef><Cmd>Get</Cmd><Data>200</Data></Status><Results>
<CmdID>4</CmdID><MsgRef>1</MsgRef><CmdRef>4</CmdRef><Item><Source>
<LocURI>./Vendor/MSFT/Reporting/EnterpriseDataProtection/RetrieveByTimeRange
/Logs</LocURI></Source><Meta><Format xmlns="syncml:metinf">xml</Format>
</Meta><Data><?xml version="1.0" encoding="utf-8"?>
<Reporting Version="com.contoso/2.0/MDM/Reporting">
<User UserID="S-1-12-1-1111111111-1111111111-1111111111-1111111111"
EnterpriseID="corp.contoso.com">
<Log ProviderType="EDPAudit" LogType="DataCopied"
TimeStamp="131357192409318534">
<Policy>CopyPaste</Policy>
<Justification>NULL</Justification>
<SourceApplicationName>NULL</SourceApplicationName>
<DestinationEnterpriseID>NULL</DestinationEnterpriseID>

<DestinationApplicationName>mail.contoso.com</DestinationApplicationName>
<DataInfo>C:\Users\TestUser\Desktop\tmp\demo\Work
document.docx</DataInfo>
</Log>
</User>
</Reporting></Data></Item></Results><Final/></SyncBody></SyncML>

Work data is pasted into a personal webpage

XML

<SyncML><SyncHdr/><SyncBody><Status><CmdID>1</CmdID><MsgRef>1</MsgRef>
<CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd><Data>200</Data></Status><Status>
<CmdID>2</CmdID><MsgRef>1</MsgRef><CmdRef>2</CmdRef><Cmd>Replace</Cmd>
<Data>200</Data></Status><Status><CmdID>3</CmdID><MsgRef>1</MsgRef>
<CmdRef>4</CmdRef><Cmd>Get</Cmd><Data>200</Data></Status><Results>
<CmdID>4</CmdID><MsgRef>1</MsgRef><CmdRef>4</CmdRef><Item><Source>
<LocURI>./Vendor/MSFT/Reporting/EnterpriseDataProtection/RetrieveByTimeRange
/Logs</LocURI></Source><Meta><Format xmlns="syncml:metinf">xml</Format>
</Meta><Data><?xml version="1.0" encoding="utf-8"?>
<Reporting Version="com.contoso/2.0/MDM/Reporting">
<User UserID="S-1-12-1-1111111111-1111111111-1111111111-1111111111"
EnterpriseID="corp.contoso.com">
<Log ProviderType="EDPAudit" LogType="DataCopied"
TimeStamp="131357193734179782">
<Policy>CopyPaste</Policy>
<Justification>NULL</Justification>
<SourceApplicationName>O=MICROSOFT CORPORATION, L=REDMOND,
S=WASHINGTON, C=US\MICROSOFT OFFICE
2016\WINWORD.EXE\16.0.8027.1000</SourceApplicationName>
<DestinationEnterpriseID>NULL</DestinationEnterpriseID>

<DestinationApplicationName>mail.contoso.com</DestinationApplicationName>
<DataInfo>EnterpriseDataProtectionId|Object Descriptor|Rich Text
Format|HTML Format|AnsiText|Text|EnhancedMetafile|Embed Source|Link
Source|Link Source Descriptor|ObjectLink|Hyperlink</DataInfo>
</Log>
</User>
</Reporting></Data></Item></Results><Final/></SyncBody></SyncML>
A work file is opened with a personal application

XML

<SyncML><SyncHdr/><SyncBody><Status><CmdID>1</CmdID><MsgRef>1</MsgRef>
<CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd><Data>200</Data></Status><Status>
<CmdID>2</CmdID><MsgRef>1</MsgRef><CmdRef>2</CmdRef><Cmd>Replace</Cmd>
<Data>200</Data></Status><Status><CmdID>3</CmdID><MsgRef>1</MsgRef>
<CmdRef>4</CmdRef><Cmd>Get</Cmd><Data>200</Data></Status><Results>
<CmdID>4</CmdID><MsgRef>1</MsgRef><CmdRef>4</CmdRef><Item><Source>
<LocURI>./Vendor/MSFT/Reporting/EnterpriseDataProtection/RetrieveByTimeRange
/Logs</LocURI></Source><Meta><Format xmlns="syncml:metinf">xml</Format>
</Meta><Data><?xml version="1.0" encoding="utf-8"?>
<Reporting Version="com.contoso/2.0/MDM/Reporting">
<User UserID="S-1-12-1-1111111111-1111111111-1111111111-1111111111"
EnterpriseID="corp.contoso.com">
<Log ProviderType="EDPAudit" LogType="ApplicationGenerated"
TimeStamp="131357194991209469">
<Policy>NULL</Policy>
<Justification></Justification>
<Object>C:\Users\TestUser\Desktop\tmp\demo\Work document.docx</Object>
<Action>1</Action>
<SourceName>O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON,
C=US\MICROSOFT&reg; WINDOWS&reg; OPERATING
SYSTEM\WORDPAD.EXE\10.0.15063.2</SourceName>
<DestinationEnterpriseID>Personal</DestinationEnterpriseID>
<DestinationName>O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON,
C=US\MICROSOFT&reg; WINDOWS&reg; OPERATING
SYSTEM\WORDPAD.EXE\10.0.15063.2</DestinationName>
<Application>O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON,
C=US\MICROSOFT&reg; WINDOWS&reg; OPERATING
SYSTEM\WORDPAD.EXE\10.0.15063.2</Application>
</Log>
</User>
</Reporting></Data></Item></Results><Final/></SyncBody></SyncML>

Work data is pasted into a personal application

XML

<SyncML><SyncHdr/><SyncBody><Status><CmdID>1</CmdID><MsgRef>1</MsgRef>
<CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd><Data>200</Data></Status><Status>
<CmdID>2</CmdID><MsgRef>1</MsgRef><CmdRef>2</CmdRef><Cmd>Replace</Cmd>
<Data>200</Data></Status><Status><CmdID>3</CmdID><MsgRef>1</MsgRef>
<CmdRef>4</CmdRef><Cmd>Get</Cmd><Data>200</Data></Status><Results>
<CmdID>4</CmdID><MsgRef>1</MsgRef><CmdRef>4</CmdRef><Item><Source>
<LocURI>./Vendor/MSFT/Reporting/EnterpriseDataProtection/RetrieveByTimeRange
/Logs</LocURI></Source><Meta><Format xmlns="syncml:metinf">xml</Format>
</Meta><Data><?xml version="1.0" encoding="utf-8"?>
<Reporting Version="com.contoso/2.0/MDM/Reporting">
<User UserID="S-1-12-1-1111111111-1111111111-1111111111-1111111111"
EnterpriseID="corp.contoso.com">
<Log ProviderType="EDPAudit" LogType="DataCopied"
TimeStamp="131357196076537270">
<Policy>CopyPaste</Policy>
<Justification>NULL</Justification>
<SourceApplicationName>O=MICROSOFT CORPORATION, L=REDMOND,
S=WASHINGTON, C=US\MICROSOFT OFFICE
2016\WINWORD.EXE\16.0.8027.1000</SourceApplicationName>
<DestinationEnterpriseID>NULL</DestinationEnterpriseID>
<DestinationApplicationName></DestinationApplicationName>
<DataInfo>EnterpriseDataProtectionId|Object Descriptor|Rich Text
Format|HTML Format|AnsiText|Text|EnhancedMetafile|Embed Source|Link
Source|Link Source Descriptor|ObjectLink|Hyperlink</DataInfo>
</Log>
</User>
</Reporting></Data></Item></Results><Final/></SyncBody></SyncML>

Collect WIP audit logs by using Windows Event


Forwarding (for Windows desktop domain-
joined devices only)
Use Windows Event Forwarding to collect and aggregate your Windows Information
Protection audit events. You can view your audit events in the Event Viewer.

To view the WIP events in the Event Viewer

1. Open Event Viewer.

2. In the console tree under Application and Services Logs\Microsoft\Windows,


click EDP-Audit-Regular and EDP-Audit-TCB.

Collect WIP audit logs using Azure Monitor


You can collect audit logs using Azure Monitor. See Windows event log data sources in
Azure Monitor.

To view the WIP events in Azure Monitor

1. Use an existing or create a new Log Analytics workspace.

2. In Log Analytics > Advanced Settings, select Data. In Windows Event Logs, add
logs to receive:

Console
Microsoft-Windows-EDP-Application-Learning/Admin
Microsoft-Windows-EDP-Audit-TCB/Admin

7 Note

If using Windows Events Logs, the event log names can be found under
Properties of the event in the Events folder (Application and Services
Logs\Microsoft\Windows, click EDP-Audit-Regular and EDP-Audit-TCB).

3. Download Microsoft Monitoring Agent.

4. To get MSI for Intune installation as stated in the Azure Monitor article, extract:
MMASetup-.exe /c /t:

Install Microsoft Monitoring Agent to WIP devices using Workspace ID and Primary
key. More information on Workspace ID and Primary key can be found in Log
Analytics > Advanced Settings.

5. To deploy MSI via Intune, in installation parameters add: /q /norestart NOAPM=1


ADD_OPINSIGHTS_WORKSPACE=1 OPINSIGHTS_WORKSPACE_AZURE_CLOUD_TYPE=0

OPINSIGHTS_WORKSPACE_ID=<WORKSPACE_ID> OPINSIGHTS_WORKSPACE_KEY=
<WORKSPACE_KEY> AcceptEndUserLicenseAgreement=1

7 Note

Replace <WORKSPACE_ID> & <WORKSPACE_KEY> received from step 5. In


installation parameters, don't place <WORKSPACE_ID> &
<WORKSPACE_KEY> in quotes ("" or '').

6. After the agent is deployed, data will be received within approximately 10 minutes.

7. To search for logs, go to Log Analytics workspace > Logs, and type Event in
search.

Example

Console

Event | where EventLog == "Microsoft-Windows-EDP-Audit-TCB/Admin"


Additional resources
How to deploy app via Intune
How to create Log workspace
How to use Microsoft Monitoring Agents for Windows
General guidance and best practices for
Windows Information Protection (WIP)
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

This section includes info about the enlightened Microsoft apps, including how to add
them to your allowed apps list in Microsoft Intune. It also includes some testing
scenarios that we recommend running through with Windows Information Protection
(WIP).

In this section
Topic Description

Enlightened apps for use with Learn the difference between enlightened and
Windows Information Protection (WIP) unenlightened apps, and then review the list of
enlightened apps provided by Microsoft along with the
text you will need to use to add them to your allowed
apps list.

Unenlightened and enlightened app Learn the difference between enlightened and
behavior while using Windows unenlightened app behaviors.
Information Protection (WIP)

Recommended Enterprise Cloud Recommended additions for the Enterprise Cloud


Resources and Neutral Resources Resources and Neutral Resources network settings, when
network settings with Windows used with Windows Information Protection (WIP).
Information Protection (WIP)

Using Outlook on the web with Options for using Outlook on the web with Windows
Windows Information Protection (WIP) Information Protection (WIP).

7 Note

Help to make this topic better by providing us with edits, additions, and feedback.
For info about how to contribute to this topic, see Editing Windows IT professional
documentation .
List of enlightened Microsoft apps for
use with Windows Information
Protection (WIP)
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

Learn the difference between enlightened and unenlightened apps, and then review the
list of enlightened apps provided by Microsoft along with the text you will need to use
to add them to your allowed apps list.

Enlightened versus unenlightened apps


Apps can be enlightened or unenlightened:

Enlightened apps can differentiate between corporate and personal data, correctly
determining which to protect, based on your policies.

Unenlightened apps consider all data corporate and encrypt everything. Typically,
you can tell an unenlightened app because:

Windows Desktop shows it as always running in enterprise mode.

Windows Save As experiences only allow you to save your files as enterprise.

Windows Information Protection-work only apps are unenlightened line-of-


business apps that have been tested and deemed safe for use in an enterprise with
WIP and Mobile App Management (MAM) solutions without device enrollment.
Unenlightened apps that are targeted by WIP without enrollment run under
personal mode.

List of enlightened Microsoft apps


Microsoft has made a concerted effort to enlighten several of our more popular apps,
including the following:

Microsoft 3D Viewer

Microsoft Edge
Internet Explorer 11

Microsoft People

Mobile Office apps, including Word, Excel, PowerPoint, OneNote, and Outlook Mail
and Calendar

Microsoft 365 Apps for enterprise apps, including Word, Excel, PowerPoint,
OneNote, and Outlook

OneDrive app

OneDrive sync client (OneDrive.exe, the next generation sync client)

Microsoft Photos

Groove Music

Notepad

Microsoft Paint

Microsoft Movies & TV

Microsoft Messaging

Microsoft Remote Desktop

Microsoft To Do

7 Note

Microsoft Visio, Microsoft Office Access, Microsoft Project, and Microsoft Publisher
are not enlightened apps and need to be exempted from Windows Information
Protection policy. If they are allowed, there is a risk of data loss. For example, if a
device is workplace-joined and managed and the user leaves the company,
metadata files that the apps rely on remain encrypted and the apps stop
functioning.

List of WIP-work only apps from Microsoft


Microsoft still has apps that are unenlightened, but which have been tested and deemed
safe for use in an enterprise with Windows Information Protection and MAM solutions.

Skype for Business


Microsoft Teams (build 1.3.00.12058 and later)

Adding enlightened Microsoft apps to the


allowed apps list

7 Note

As of January 2019 it is no longer necessary to add Intune Company Portal as an


exempt app since it is now included in the default list of protected apps.

You can add any or all of the enlightened Microsoft apps to your allowed apps list.
Included here is the Publisher name, Product or File name, and App Type info for both
Microsoft Intune and Microsoft Configuration Manager.

Product name App info

Microsoft 3D Viewer Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.Microsoft3DViewer
App Type: Universal app

Microsoft Edge Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.MicrosoftEdge
App Type: Universal app

Microsoft People Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.People
App Type: Universal app

Word Mobile Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.Office.Word
App Type: Universal app

Excel Mobile Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.Office.Excel
App Type: Universal app

PowerPoint Mobile Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.Office.PowerPoint
App Type: Universal app
Product name App info

OneNote Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.Office.OneNote
App Type: Universal app

Outlook Mail and Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


Calendar L=Redmond, S=Washington, C=US
Product Name: microsoft.windowscommunicationsapps
App Type: Universal app

Microsoft 365 Apps Microsoft 365 Apps for enterprise and Office 2019 Professional Plus apps
for enterprise and are set up as a suite. You must use the O365 ProPlus - Allow and Exempt
Office 2019 AppLocker policy files (.zip files) to turn the suite on for Windows
Professional Plus Information Protection.
We don't recommend setting up Office by using individual paths or
publisher rules.

Microsoft Photos Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.Windows.Photos
App Type: Universal app

Groove Music Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.ZuneMusic
App Type: Universal app

Microsoft Movies & Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


TV L=Redmond, S=Washington, C=US
Product Name: Microsoft.ZuneVideo
App Type: Universal app

Microsoft Messaging Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.Messaging
App Type: Universal app

IE11 Publisher: O=Microsoft Corporation, L=Redmond, S=Washington, C=US


Binary Name: iexplore.exe
App Type: Desktop app

OneDrive Sync Client Publisher: O=Microsoft Corporation, L=Redmond, S=Washington, C=US


Binary Name: onedrive.exe
App Type: Desktop app

OneDrive app Publisher: CN=Microsoft Corporation, O=Microsoft Corporation,


L=Redmond, S=Washington, C=US
Product Name: Microsoft.Microsoftskydrive
Product name App info

Product Version:Product version: 17.21.0.0 (and later)


App Type: Universal app

Notepad Publisher: O=Microsoft Corporation, L=Redmond, S=Washington, C=US


Binary Name: notepad.exe
App Type: Desktop app

Microsoft Paint Publisher: O=Microsoft Corporation, L=Redmond, S=Washington, C=US


Binary Name: mspaint.exe
App Type: Desktop app

Microsoft Remote Publisher: O=Microsoft Corporation, L=Redmond, S=Washington, C=US


Desktop Binary Name: mstsc.exe
App Type: Desktop app

Microsoft MAPI Publisher: O=Microsoft Corporation, L=Redmond, S=Washington, C=US


Repair Tool Binary Name: fixmapi.exe
App Type: Desktop app

Microsoft To Do Publisher: O=Microsoft Corporation, L=Redmond, S=Washington, C=US


Product Name: Microsoft.Todos
App Type: Store app

7 Note

Help to make this topic better by providing us with edits, additions, and feedback.
For info about how to contribute to this topic, see Editing Windows IT professional
documentation .
Unenlightened and enlightened app
behavior while using Windows
Information Protection (WIP)
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

Windows Information Protection (WIP) classifies apps into two categories: enlightened
and unenlightened. Enlighted apps can differentiate between corporate and personal
data, correctly determining which to protect based on internal policies. Corporate data is
encrypted on the managed device and attempts to copy/paste or share this information
with non-corporate apps or people will fail. Unenlightened apps, when marked as
corporate-managed, consider all data corporate and encrypt everything by default.

To avoid the automatic encryption of data, developers can enlighten apps by adding
and compiling code using the Windows Information Protection application
programming interfaces. The most likely candidates for enlightenment are apps that:

Don't use common controls for saving files.


Don't use common controls for text boxes.
Simultaneously work on personal and corporate data (for example, contact apps
that display personal and corporate data in a single view or a browser that displays
personal and corporate web pages on tabs within a single instance).

We strongly suggest that the only unenlightened apps you add to your allowed apps list
are Line-of-Business (LOB) apps.

) Important

After revoking WIP, unenlightened apps will have to be uninstalled and re-installed
since their settings files will remain encrypted. For more info about creating
enlightened apps, see the Windows Information Protection (WIP) topic in the
Windows Dev Center.

Unenlightened app behavior


This table includes info about how unenlightened apps might behave, based on your
Windows Information Protection (WIP) networking policies, your app configuration, and
potentially whether the app connects to network resources directly by using IP
addresses or by using hostnames.

App rule setting Networking policy configuration

Not required. App connects to Name-based policies, without the /*AppCompat*/ string:
enterprise cloud resources App is entirely blocked from both personal and enterprise
directly, using an IP address. cloud resources.
No encryption is applied.
App can't access local Work files.

Name-based policies, using the /*AppCompat*/ string or


proxy-based policies:
App can access both personal and enterprise cloud
resources. However, you might encounter apps using
policies that restrict access to enterprise cloud resources.
No encryption is applied.
App can't access local Work files.

Not required. App connects to App is blocked from accessing enterprise cloud resources,
enterprise cloud resources, using but can access other network resources.
a hostname. No encryption is applied.
App can't access local Work files.

Allow. App connects to enterprise App can access both personal and enterprise cloud
cloud resources, using an IP resources.
address or a hostname. Auto-encryption is applied.
App can access local Work files.

Exempt. App connects to App can access both personal and enterprise cloud
enterprise cloud resources, using resources.
an IP address or a hostname. No encryption is applied.
App can access local Work files.

Enlightened app behavior


This table includes info about how enlightened apps might behave, based on your
Windows Information Protection (WIP) networking policies, your app configuration, and
potentially whether the app connects to network resources directly by using IP
addresses or by using hostnames.
App rule setting Networking policy configuration for name-based
policies, possibly using the /*AppCompat*/ string, or
proxy-based policies

Not required. App connects to App is blocked from accessing enterprise cloud
enterprise cloud resources, using an IP resources, but can access other network resources.
address or a hostname. No encryption is applied.
App can't access local Work files.

Allow. App connects to enterprise App can access both personal and enterprise cloud
cloud resources, using an IP address or resources.
a hostname. App protects work data and leaves personal data
unprotected.
App can access local Work files.

Exempt. App connects to enterprise App can access both personal and enterprise cloud
cloud resources, using an IP address or resources.
a hostname. App protects work data and leaves personal data
unprotected.
App can access local Work files.

7 Note

Help to make this topic better by providing us with edits, additions, and feedback.
For info about how to contribute to this topic, see Editing Windows IT professional
documentation .
Recommended Enterprise Cloud
Resources and Neutral Resources
network settings with Windows
Information Protection (WIP)
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

Learn more about what features and functionality are supported in each Windows
edition at Compare Windows 10 Editions .

We recommend that you add the following URLs to the Enterprise Cloud Resources and
Neutral Resources network settings when you create a Windows Information Protection
policy. If you are using Intune, the SharePoint entries may be added automatically.

Recommended Enterprise Cloud Resources


This table includes the recommended URLs to add to your Enterprise Cloud Resources
network setting, based on the apps you use in your organization.

If your organization Add these entries to your Enterprise Cloud Resources network
uses... setting
(Replace "contoso" with your domain name(s)

Sharepoint Online - contoso.sharepoint.com


- contoso-my.sharepoint.com
- contoso-files.sharepoint.com

Viva Engage - www.yammer.com


- yammer.com
- persona.yammer.com

Outlook Web Access - outlook.office.com


(OWA) - outlook.office365.com
- attachments.office.net

Microsoft Dynamics contoso.crm.dynamics.com

Visual Studio Online contoso.visualstudio.com


If your organization Add these entries to your Enterprise Cloud Resources network
uses... setting
(Replace "contoso" with your domain name(s)

Power BI contoso.powerbi.com

Microsoft Teams teams.microsoft.com

Other Office 365 services - tasks.office.com


- protection.office.com
- meet.lync.com
- project.microsoft.com

You can add other work-only apps to the Cloud Resource list, or you can create a
packaged app rule for the .exe file to protect every file the app creates or modifies.
Depending on how the app is accessed, you might want to add both.

For Office 365 endpoints, see Office 365 URLs and IP address ranges. Office 365
endpoints are updated monthly. Allow the domains listed in section number 46 "Allow
Required" and add also add the apps. Note that apps from officeapps.live.com can also
store personal data.

When multiple files are selected from SharePoint Online or OneDrive, the files are
aggregated and the URL can change. In this case, add an entry for a second-level
domain and use a wildcard such as .svc.ms.

Recommended Neutral Resources


We recommended adding these URLs if you use the Neutral Resources network setting
with Windows Information Protection (WIP).

login.microsoftonline.com

login.windows.net
Using Outlook on the web with
Windows Information Protection (WIP)
Article • 03/09/2023

Applies to:

Windows 10, version 1607 and later

Learn more about what features and functionality are supported in each Windows
edition at Compare Windows 10 Editions .

Because Outlook on the web can be used both personally and as part of your
organization, you have the following options to configure it with Windows Information
Protection (WIP):

Option Outlook on the web behavior

Disable Outlook on the web. Disabled.


Employees can only use Microsoft
Outlook 2016 or the Mail for Windows
10 app.

Don't configure outlook.office.com in All mailboxes are automatically marked as personal. This
any of your networking settings. means employees attempting to copy work content into
Outlook on the web receive prompts and that files
downloaded from Outlook on the web aren't
automatically protected as corporate data.

Add outlook.office.com and All mailboxes are automatically marked as corporate.


outlook.office365.com to the Cloud This means any personal inboxes hosted on Office 365
resources network element in your are also automatically marked as corporate data.
WIP policy.

7 Note

These limitations don't apply to Outlook 2016, the Mail for Windows 10 app, or the
Calendar for Windows 10 app. These apps will work properly, marking an
employee's mailbox as corporate data, regardless of how you've configured
outlook.office.com in your network settings.
Fine-tune Windows Information
Protection (WIP) with WIP Learning
Article • 02/22/2023

Applies to:

Windows 10, version 1703 and later

With WIP Learning, you can intelligently tune which apps and websites are included in
your WIP policy to help reduce disruptive prompts and keep it accurate and relevant.
WIP Learning generates two reports: The App learning report and the Website learning
report. Both reports can be accessed from Microsoft Azure Intune.

The App learning report monitors your apps, not in policy, that attempt to access work
data. You can identify these apps using the report and add them to your WIP policies to
avoid productivity disruption before fully enforcing WIP with "Block" mode. Frequent
monitoring of the report will help you continuously identify access attempts so you can
update your policy accordingly.

In the Website learning report, you can view a summary of the devices that have shared
work data with websites. You can use this information to determine which websites
should be added to group and user WIP policies. The summary shows which website
URLs are accessed by WIP-enabled apps so you can decide which ones are cloud or
personal, and add them to the resource list.

Access the WIP Learning reports


1. Sign in to the Microsoft Intune admin center .

2. Select Apps > Monitor > App protection status > Reports.
3. Select either App learning report for Windows Information Protection or Website
learning report for Windows Information Protection.

Once you have the apps and websites showing up in the WIP Learning logging reports,
you can decide whether to add them to your app protection policies.

Use the WIP section of Device Health


You can use Device Health to adjust your WIP protection policy. See Using Device Health
to learn more.

If you want to configure your environment for Windows Analytics: Device Health, see
Get Started with Device Health for more information.

Once you have WIP policies in place, by using the WIP section of Device Health, you can:

Reduce disruptive prompts by adding rules to allow data sharing from approved
apps.
Tune WIP rules by confirming that certain apps are allowed or denied by current
policy.

Use Device Health and Intune to adjust WIP


protection policy
The information needed for the following steps can be found using Device Health, which
you will first have to set up. Learn more about how you can Monitor the health of
devices with Device Health.

1. In Device Health click the app you want to add to your policy and copy the
WipAppId.

For example, if the app is Google Chrome, the WipAppId is:

O=GOOGLE LLC, L=MOUNTAIN VIEW, S=CA, C=US\GOOGLE


CHROME\CHROME.EXE\74.0.3729.108

In the steps below, you separate the WipAppId by back slashes into the
PUBLISHER, PRODUCT NAME, and FILE fields.

2. In Intune, click App protection policies and then choose the app policy you want
to add an application to.

3. Click Protected apps, and then click Add Apps.

4. In the Recommended apps drop down menu, choose either Store apps or
Desktop apps, depending on the app you've chosen (for example, an executable
(EXE) is a desktop app).
5. In NAME (optional), type the name of the app, and then in PUBLISHER (required),
paste the publisher information that you copied in step 1 above.

For example, if the WipAppId is

O=GOOGLE LLC, L=MOUNTAIN VIEW, S=CA, C=US\GOOGLE

CHROME\CHROME.EXE\74.0.3729.108

the text before the first back slash is the publisher:

O=GOOGLE LLC, L=MOUNTAIN VIEW, S=CA, C=US

6. Type the name of the product in PRODUCT NAME (required) (this will probably be
the same as what you typed for NAME).

For example, if the WipAppId is

O=GOOGLE LLC, L=MOUNTAIN VIEW, S=CA, C=US\GOOGLE


CHROME\CHROME.EXE\74.0.3729.108

the text between the first and second back slashes is the product name:

GOOGLE CHROME

7. Copy the name of the executable (for example, snippingtool.exe) and paste it in
FILE (required).
For example, if the WipAppId is

O=GOOGLE LLC, L=MOUNTAIN VIEW, S=CA, C=US\GOOGLE

CHROME\CHROME.EXE\74.0.3729.108

the text between the second and third back slashes is the file:

CHROME.EXE

8. Type the version number of the app into MIN VERSION in Intune (alternately, you
can specify the max version, but one or the other is required), and then select the
ACTION: Allow or Deny

When working with WIP-enabled apps and WIP-unknown apps, it is recommended that
you start with Silent or Allow overrides while verifying with a small group that you have
the right apps on your allowed apps list. After you're done, you can change to your final
enforcement policy, Block. For more information about WIP modes, see: Protect
enterprise data using WIP: WIP-modes

7 Note

Help to make this topic better by providing us with edits, additions, and feedback.
For info about how to contribute to this topic, see Editing Windows IT professional
documentation .
How to disable Windows Information
Protection (WIP)
Article • 02/22/2023

---author: aczechowski ms.author: aaroncz


ms.prod: windows ms.topic: include ms.date:
07/20/2022

7 Note

Starting in July 2022, Microsoft is deprecating Windows Information Protection


(WIP). Microsoft will continue to support WIP on supported versions of Windows.
New versions of Windows won't include new capabilities for WIP, and it won't be
supported in future versions of Windows. For more information, see Announcing
sunset of Windows Information Protection .

For your data protection needs, Microsoft recommends that you use Microsoft
Purview Information Protection and Microsoft Purview Data Loss Prevention.
Purview simplifies the configuration set-up and provides an advanced set of
capabilities.

Applies to:

Windows 10
Windows 11

Use Intune to disable WIP


To disable Windows Information Protection (WIP) using Intune, you have the following
options:

Option 1 - Unassign the WIP policy (preferred)


When you unassign an existing policy, it removes the intent to deploy WIP from those
devices. When that intent is removed, the device removes protection for files and the
configuration for WIP. For more information, see Assign user and device profiles in
Microsoft Intune.
Option 2 - Change current WIP policy to off
If you're currently deploying a WIP policy for enrolled or unenrolled devices, you switch
the WIP policy to Off. When devices check in after this change, the devices will proceed
to unprotect files previously protected by WIP.

1. Sign in to the Microsoft Intune admin center .


2. Open Microsoft Intune and select Apps > App protection policies.
3. Select the existing policy to turn off, and then select the Properties.
4. Edit Required settings.

5. Set Windows Information Protection mode to off.


6. After making this change, select Review and Save.
7. Select Save.

7 Note

Another option is to create a disable policy that sets WIP to Off.

You can create a separate disable policy for WIP (both enrolled and unenrolled) and
deploy that to a new group. You then can stage the transition to this disabled state.
Move devices from the existing group to the new group. This process slowly
migrates devices instead of all at once.

Revoke local encryption keys during the unenrollment


process
Determine whether to revoke a user's local encryption keys from a device when it's
unenrolled from Windows Information Protection. If the encryption keys are revoked, a
user no longer has access to encrypted corporate data. The options are:
Yes, or not configured. Revokes local encryption keys from a device during
unenrollment.
No (recommended). Stop local encryption keys from being revoked from a device
during unenrollment.

Use Configuration Manager to disable WIP


To disable Windows Information Protection (WIP) using Configuration Manager, create a
new configuration item that turns off WIP. Configure that new object for your
environment to match the existing policy, except for disabling WIP. Then deploy the new
policy, and move devices into the new collection.

2 Warning

Don't just delete your existing WIP policy. If you delete the old policy,
Configuration Manager stops sending further WIP policy updates, but also leaves
WIP enforced on the devices. To remove WIP from your managed devices, follow
the steps in this section to create a new policy to turn off WIP.

Create a WIP policy


To disable WIP for your organization, first create a configuration item.

1. Open the Configuration Manager console, select the Assets and Compliance node,
expand the Overview node, expand the Compliance Settings node, and then
expand the Configuration Items node.

2. Select the Create Configuration Item button. The Create Configuration Item
Wizard starts.
3. On the General Information screen, type a name (required) and an optional
description for your policy into the Name and Description boxes.

4. In the Specify the type of configuration item you want to create area, select
Windows 10 or later for devices managed with the Configuration Manager client,
and then select Next.

5. On the Supported Platforms screen, select the Windows 10 box, and then select
Next.

6. On the Device Settings screen, select Windows Information Protection, and then
select Next.

The Configure Windows Information Protection settings page appears, where you'll
configure your policy for your organization. The following sections provide details on
the required settings on this page.

 Tip
For more information on filling out the required fields, see Create and deploy a
Windows Information Protection (WIP) policy using Microsoft Configuration
Manager.

Turn off WIP


Of the four options to specify the restriction mode, select Off to turn off Windows
Information Protection.

Specify the corporate identity

Paste the value of your corporate identity into the Corporate identity field. For example,
contoso.com or contoso.com|newcontoso.com .
) Important

This corporate identity value must match the string in the original policy. Copy and
paste the string from your original policy that enables WIP.

Specify the corporate network definition


For the Corporate network definition, select Add to specify the necessary network
locations. The Add or edit corporate network definition box appears. Add the required
fields.

) Important

These corporate network definitions must match the original policy. Copy and
paste the strings from your original policy that enables WIP.

Specify the data recovery agent certificate


In the required Upload a Data Recovery Agent (DRA) certificate to allow recovery of
encrypted data box, select Browse to add a data recovery certificate for your policy.
This certificate should be the same as the original policy that enables WIP.

Deploy the WIP policy


After you've created the new policy to turn off WIP, deploy it to your organization's
devices. For more information about deployment options, see the following articles:

Create a configuration baseline that includes the new configuration item.

Create a new collection.

Deploy the baseline to the collection.

Move devices from the old collection to new collection.


Security baselines
Article • 07/11/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Using security baselines in your organization


Microsoft is dedicated to providing its customers with secure operating systems, such as
Windows and Windows Server, and secure apps, such as Microsoft 365 apps for
enterprise and Microsoft Edge. In addition to the security assurance of its products,
Microsoft also enables you to have fine control over your environments by providing
various configuration capabilities.

Even though Windows and Windows Server are designed to be secure out-of-the-box,
many organizations still want more granular control over their security configurations.
To navigate the large number of controls, organizations need guidance on configuring
various security features. Microsoft provides this guidance in the form of security
baselines.

We recommend that you implement an industry-standard configuration that is broadly


known and well-tested, such as Microsoft security baselines, as opposed to creating a
baseline yourself. This industry-standard configuration helps increase flexibility and
reduce costs.

For more information, see the following blog post: Sticking with well-known and proven
solutions.

What are security baselines?


Every organization faces security threats. However, the types of security threats that are
of most concern to one organization can be different from another organization. For
example, an e-commerce company may focus on protecting its internet-facing web
apps, while a hospital may focus on protecting confidential patient information. The one
thing that all organizations have in common is a need to keep their apps and devices
secure. These devices must be compliant with the security standards (or security
baselines) defined by the organization.

A security baseline is a group of Microsoft-recommended configuration settings that


explains their security implication. These settings are based on feedback from Microsoft
security engineering teams, product groups, partners, and customers.
Why are security baselines needed?
Security baselines are an essential benefit to customers because they bring together
expert knowledge from Microsoft, partners, and customers.

For example, there are over 3,000 group policy settings for Windows 10, which doesn't
include over 1,800 Internet Explorer 11 settings. Of these 4,800 settings, only some are
security-related. Although Microsoft provides extensive guidance on different security
features, exploring each one can take a long time. You would have to determine the
security implication of each setting on your own. Then, you would still need to
determine the appropriate value for each setting.

In modern organizations, the security threat landscape is constantly evolving, and IT


pros and policy-makers must keep up with security threats and make required changes
to security settings to help mitigate these threats. To enable faster deployments and
make managing Microsoft products easier, Microsoft provides customers with security
baselines that are available in consumable formats, such as group policy object backups.

Windows edition and licensing requirements


The following table lists the Windows editions that support Security baselines:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Security baselines license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Baseline principles
Our recommendations follow a streamlined and efficient approach to baseline
definitions. The foundation of that approach is essentially:

The baselines are designed for well-managed, security-conscious organizations in


which standard end users don't have administrative rights.
A baseline enforces a setting only if it mitigates a contemporary security threat and
doesn't cause operational issues that are worse than the risks they mitigate.
A baseline enforces a default only if it's otherwise likely to be set to an insecure
state by an authorized user:
If a non-administrator can set an insecure state, enforce the default.
If setting an insecure state requires administrative rights, enforce the default
only if it's likely that a misinformed administrator will otherwise choose poorly.

How can you use security baselines?


You can use security baselines to:

Ensure that user and device configuration settings are compliant with the baseline.
Set configuration settings. For example, you can use group policy, Microsoft
Configuration Manager, or Microsoft Intune to configure a device with the setting
values specified in the baseline.

Where can I get the security baselines?


There are several ways to get and use security baselines:

1. You can download the security baselines from the Microsoft Download Center .
This download page is for the Security Compliance Toolkit (SCT), which comprises
tools that can assist admins in managing baselines in addition to the security
baselines. The SCT also includes tools to help you manage the security baselines.
You can also get support for the security baselines

2. Mobile device management (MDM) security baselines function like the Microsoft
group policy-based security baselines and can easily integrate these baselines into
an existing MDM management tool.

3. MDM security baselines can easily be configured in Microsoft Intune on devices


that run Windows 10 and Windows 11. For more information, see List of the
settings in the Windows 10/11 MDM security baseline in Intune.

Related articles
Microsoft Security Baselines Blog
Microsoft Security Compliance Toolkit
Security Baseline Policy Analyzer
Microsoft Security Compliance Toolkit -
How to use
Article • 07/11/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

What is the Security Compliance Toolkit (SCT)?


The Security Compliance Toolkit (SCT) is a set of tools that allows enterprise security
administrators to download, analyze, test, edit, and store Microsoft-recommended
security configuration baselines for Windows and other Microsoft products.

The SCT enables administrators to effectively manage their enterprise's Group Policy
Objects (GPOs). Using the toolkit, administrators can compare their current GPOs with
Microsoft-recommended GPO baselines or other baselines, edit them, store them in
GPO backup file format, and apply them broadly through Active Directory or individually
through local policy.

The Security Compliance Toolkit consists of:

Windows 11 security baseline


Windows 11, version 22H2
Windows 11, version 21H2
Windows 10 security baselines
Windows 10, version 22H2
Windows 10, version 21H2
Windows 10, version 20H2
Windows 10, version 1809
Windows 10, version 1607
Windows 10, version 1507
Windows Server security baselines
Windows Server 2022
Windows Server 2019
Windows Server 2016
Windows Server 2012 R2
Microsoft Office security baseline
Office 2016
Microsoft 365 Apps for Enterprise Version 2206
Microsoft Edge security baseline
Edge version 114
Tools
Policy Analyzer
Local Group Policy Object (LGPO)
Set Object Security
GPO to Policy Rules

You can download the tools along with the baselines for the relevant Windows
versions. For more information about security baseline recommendations, see the
Microsoft Security Guidance blog .

What is the Policy Analyzer tool?


The Policy Analyzer is a utility for analyzing and comparing sets of Group Policy Objects
(GPOs). Its main features include:

Highlight when a set of Group Policies has redundant settings or internal


inconsistencies
Highlight the differences between versions or sets of Group Policies
Compare GPOs against current local policy and local registry settings
Export results to a Microsoft Excel spreadsheet

Policy Analyzer lets you treat a set of GPOs as a single unit. This treatment makes it easy
to determine whether particular settings are duplicated across the GPOs or are set to
conflicting values. Policy Analyzer also lets you capture a baseline and then compare it
to a snapshot taken at a later time to identify changes anywhere across the set.

More information on the Policy Analyzer tool can be found on the Microsoft Security
Guidance blog or by downloading the tool .

What is the Local Group Policy Object (LGPO)


tool?
LGPO.exe is a command-line utility that is designed to help automate management of

Local Group Policy. Using local policy gives administrators a simple way to verify the
effects of Group Policy settings, and is also useful for managing non-domain-joined
systems. LGPO.exe can import and apply settings from Registry Policy (Registry.pol) files,
security templates, Advanced Auditing backup files, and from formatted "LGPO text"
files. It can export local policy to a GPO backup. It can export the contents of a Registry
Policy file to the "LGPO text" format that can then be edited, and can build a Registry
Policy file from an LGPO text file.
Documentation for the LGPO tool can be found on the Microsoft Security Guidance
blog or by downloading the tool .

What is the Set Object Security tool?


SetObjectSecurity.exe enables you to set the security descriptor for just about any type

of Windows securable object, such as files, directories, registry keys, event logs, services,
and SMB shares. For file system and registry objects, you can choose whether to apply
inheritance rules. You can also choose to output the security descriptor in a .reg file
compatible representation of the security descriptor for a REG_BINARY registry value.

Documentation for the Set Object Security tool can be found on the Microsoft Security
Baselines blog or by downloading the tool .

What is the GPO to Policy Rules tool?


Automate the conversion of GPO backups to Policy Analyzer .PolicyRules files and skip
the GUI. GPO2PolicyRules is a command-line tool that is included with the Policy
Analyzer download.

Documentation for the GPO to PolicyRules tool can be found on the Microsoft Security
Baselines blog or by downloading the tool .
Get Support
Article • 07/11/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

What is the Microsoft Security Compliance Manager (SCM)?

The Security Compliance Manager (SCM) is now retired and is no longer supported. The
reason is that SCM was an incredibly complex and large program that needed to be
updated for every Windows release. It has been replaced by the Security Compliance
Toolkit (SCT). To provide a better service for our customers, we've moved to SCT with
which we can publish baselines through the Microsoft Download Center in a lightweight
.zip file that contains GPO Backups, GPO reports, Excel spreadsheets, WMI filters, and
scripts to apply the settings to local policy.

More information about this change can be found on the Microsoft Security Guidance
blog.

Where can I get an older version of a Windows baseline?

Any version of Windows baseline before Windows 10 1703 can still be downloaded
using SCM. Any future versions of Windows baseline will be available through SCT. See
the version matrix in this article to see if your version of Windows baseline is available
on SCT.

SCM 4.0 Download


SCM Frequently Asked Questions (FAQ)
SCM Release Notes
SCM baseline download help

What file formats are supported by the new SCT?

The toolkit supports formats created by the Windows GPO backup feature (.pol, .inf, and
.csv). Policy Analyzer saves its data in XML files with a .PolicyRules file extension. LGPO
also supports its own LGPO text file format as a text-based analog for the binary
registry.pol file format. For more information, see the LGPO documentation. Keep in
mind that SCMs' .cab files are no longer supported.

Does SCT support Desired State Configuration (DSC) file format?

No. PowerShell-based DSC is rapidly gaining popularity, and more DSC tools are coming
online to convert GPOs and DSC and to validate system configuration.
Does SCT support the creation of Microsoft Configuration Manager DCM packs?

No. A potential alternative is Desired State Configuration (DSC), a feature of the


Windows Management Framework . A tool that supports conversion of GPO Backups
to DSC format can be found here .

Does SCT support the creation of Security Content Automation Protocol (SCAP)-
format policies?

No. SCM supported only SCAP 1.0, which wasn't updated as SCAP evolved. The new
toolkit likewise doesn't include SCAP support.

Version Matrix
Client Versions:

Name Build Baseline Release Date Security Tools

Windows 11 22H2 September 2022 SCT 1.0

Windows 10 22H2 October 2022 SCT 1.0


21H2 December 2021
20H2 December 2020
1809 October 2018
1607 October 2016
1507 January 2016

Server Versions:

Name Build Baseline Release Date Security Tools

Windows Server 2022 SecGuide September 2021 SCT 1.0

Windows Server 2019 SecGuide November 2018 SCT 1.0

Windows Server 2016 SecGuide October 2016 SCT 1.0

Windows Server 2012 R2 SecGuide August 2014 SCT 1.0

Microsoft Products:

Name Details Security Tools

Microsoft 365 Apps for enterprise, version 2206 SecGuide SCT 1.0

Microsoft Edge, version 107 SecGuide SCT 1.0


Related articles
Windows security baselines
What is Microsoft Baseline Security
Analyzer and its uses?
Article • 07/11/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Microsoft Baseline Security Analyzer (MBSA) is used to verify patch compliance. MBSA
also performed several other security checks for Windows, IIS, and SQL Server.
Unfortunately, the logic behind these extra checks hadn't been actively maintained since
Windows XP and Windows Server 2003. Changes in the products since then rendered
many of these security checks obsolete and some of their recommendations
counterproductive.

MBSA was largely used in situations where Microsoft Update a local WSUS or
Configuration Manager server wasn't available, or as a compliance tool to ensure that all
security updates were deployed to a managed environment. While MBSA version 2.3
introduced support for Windows Server 2012 R2 and Windows 8.1, it has since been
deprecated and no longer developed. MBSA 2.3 isn't updated to fully support Windows
10 and Windows Server 2016.

7 Note

In accordance with our SHA-1 deprecation initiative , the Wsusscn2.cab file is no


longer dual-signed using both SHA-1 and the SHA-2 suite of hash algorithms
(specifically SHA-256). This file is now signed using only SHA-256. Administrators
who verify digital signatures on this file should now expect only single SHA-256
signatures. Starting with the August 2020 Wsusscn2.cab file, MBSA will return the
following error "The catalog file is damaged or an invalid catalog." when
attempting to scan using the offline scan file.

Solution
A script can help you with an alternative to MBSA's patch-compliance checking:

Using WUA to Scan for Updates Offline, which includes a sample .vbs script. For a
PowerShell alternative, see Using WUA to Scan for Updates Offline with
PowerShell .

For example:
The preceding scripts use the WSUS offline scan file (wsusscn2.cab) to perform a scan
and get the same information on missing updates as MBSA supplied. MBSA also relied
on the wsusscn2.cab to determine which updates were missing from a given system
without connecting to any online service or server. The wsusscn2.cab file is still available
and there are currently no plans to remove or replace it. The wsusscn2.cab file contains
the metadata of only security updates, update rollups and service packs available from
Microsoft Update; it doesn't contain any information on non-security updates, tools or
drivers.

More information
For security compliance and for desktop/server hardening, we recommend the Microsoft
Security Baselines and the Security Compliance Toolkit.

Windows security baselines


Download Microsoft Security Compliance Toolkit 1.0
Microsoft Security Guidance blog
Override Process Mitigation Options to
help enforce app-related security
policies
Article • 03/09/2023

Applies to:

Windows 10, version 1607


Windows Server 2016

Windows 10 includes Group Policy-configurable "Process Mitigation Options" that add


advanced protections against memory-based attacks, that is, attacks where malware
manipulates memory to gain control of a system. For example, malware might attempt
to use buffer overruns to inject malicious executable code into memory, but Process
Mitigation Options can prevent the running of the malicious code.

) Important

We recommend trying these mitigations in a test lab before deploying to your


organization, to determine if they interfere with your organization's required apps.

The Group Policy settings in this topic are related to three types of process mitigations.
In Windows 10, all three types are on by default for 64-bit applications, but by using the
Group Policy settings described in this topic, you can configure more protections. The
types of process mitigations are:

Data Execution Prevention (DEP) is a system-level memory protection feature that


enables the operating system to mark one or more pages of memory as non-
executable, preventing code from being run from that region of memory, to help
prevent exploitation of buffer overruns. DEP helps prevent code from being run
from data pages such as the default heap, stacks, and memory pools. For more
information, see Data Execution Prevention.

Structured Exception Handling Overwrite Protection (SEHOP) is designed to


block exploits that use the Structured Exception Handler (SEH) overwrite technique.
Because this protection mechanism is provided at run-time, it helps to protect apps
regardless of whether they've been compiled with the latest improvements. For
more information, see Structured Exception Handling Overwrite Protection.
Address Space Layout Randomization (ASLR) loads DLLs into random memory
addresses at boot time to mitigate against malware that's designed to attack
specific memory locations, where specific DLLs are expected to be loaded. For
more information, see Address Space Layout Randomization. To find more ASLR
protections in the table below, look for IMAGES or ASLR .

The following procedure describes how to use Group Policy to override individual
Process Mitigation Options settings.

To modify Process Mitigation Options

1. Open your Group Policy editor and go to the Administrative


Templates\System\Mitigation Options\Process Mitigation Options setting.

2. Click Enabled, and then in the Options area, click Show to open the Show
Contents box, where you'll be able to add your apps and the appropriate bit flag
values, as shown in the Setting the bit field and Example sections of this topic.

Important
For each app you want to include, you must include:

Value name. The app file name, including the extension. For example,
iexplore.exe.
Value. A bit field with a series of bit flags in particular positions. Bits can be
set to 0 (where the setting is forced off), 1 (where the setting is forced on), or
? (where the setting retains the previous, existing value).

Note
Setting bit flags in positions not specified here to anything other than ? might
cause undefined behavior.

Setting the bit field


Here's a visual representation of the bit flag locations for the various Process Mitigation
Options settings:

Where the bit flags are read from right to left and are defined as:
Flag Bit Setting Details
location

A 0 PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE (0x00000001) Turns on Data


Execution
Prevention
(DEP) for child
processes.

B 1 PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE Turns on DEP-


(0x00000002) ATL thunk
emulation for
child
processes.
DEP-ATL thunk
emulation lets
the system
intercept non-
executable
(NX) faults that
originate from
the Active
Template
Library (ATL)
thunk layer,
and then
emulate and
handle the
instructions so
the process
can continue
to run.

C 2 PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE (0x00000004) Turns on


Structured
Exception
Handler
Overwrite
Protection
(SEHOP) for
child
processes.
SEHOP helps
to block
exploits that
use the
Structured
Exception
Handler (SEH)
Flag Bit Setting Details
location

overwrite
technique.

D 8 PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON Uses the force


(0x00000100) Address Space
Layout
Randomization
(ASLR) setting
to act as
though an
image base
collision
happened at
load time,
forcibly
rebasing
images that
aren't dynamic
base
compatible.
Images
without the
base
relocation
section won't
be loaded if
relocations are
required.

E 15 PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_ON Turns on the


(0x00010000) bottom-up
randomization
policy, which
includes stack
randomization
options and
causes a
random
location to be
used as the
lowest user
address.

F 16 PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_OFF Turns off the


(0x00020000) bottom-up
randomization
policy, which
Flag Bit Setting Details
location

includes stack
randomization
options and
causes a
random
location to be
used as the
lowest user
address.

Example
If you want to turn on the PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE and
PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON
settings, turn off the
PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_OFF setting,
and leave everything else as the default values, you'd want to type a value of
???????????????0???????1???????1 .
Use Windows Event Forwarding to help
with intrusion detection
Article • 03/09/2023

Applies to

Windows 10
Windows Server

Learn about an approach to collect events from devices in your organization. This article
talks about events in both normal operations and when an intrusion is suspected.

Windows Event Forwarding (WEF) reads any operational or administrative event log on a
device in your organization and forwards the events you choose to a Windows Event
Collector (WEC) server.

To accomplish this functionality, there are two different subscriptions published to client
devices - the Baseline subscription and the suspect subscription. The Baseline
subscription enrolls all devices in your organization, and a Suspect subscription only
includes devices that have been added by you. The Suspect subscription collects more
events to help build context for system activity and can quickly be updated to
accommodate new events and/or scenarios as needed without impacting baseline
operations.

This implementation helps differentiate where events are ultimately stored. Baseline
events can be sent to devices with online analytical capability, such as Security Event
Manager (SEM), while also sending events to a MapReduce system, such as HDInsight or
Hadoop, for long-term storage and deeper analysis. Events from the Suspect
subscription are sent directly to a MapReduce system due to volume and lower
signal/noise ratio, they're largely used for host forensic analysis.

An SEM's strength lies in being able to inspect, correlate events, and generate alerts for
known patterns manner and alert security staff at machine speed.

A MapReduce system has a longer retention time (years versus months for an SEM),
larger ingress ability (hundreds of terabytes per day), and the ability to perform more
complex operations on the data like statistical and trend analysis, pattern clustering
analysis, or apply Machine Learning algorithms.

Here's an approximate scaling guide for WEF events:


Events/second range Data store

0 - 5,000 SQL or SEM

5,000 - 50,000 SEM

50,000+ Hadoop/HDInsight/Data Lake

Event generation on a device must be enabled either separately or as part of the GPO
for the baseline WEF implementation, including enabling of disabled event logs and
setting channel permissions. For more info, see Appendix C - Event channel settings
(enable and channel access) methods. This condition is because WEF is a passive system
regarding the event log. It can't change the size of event log files, enable disabled event
channels, change channel permissions, or adjust a security audit policy. WEF only
queries event channels for existing events. Additionally, having event generation already
occurring on a device allows for more complete event collection building a complete
history of system activity. Otherwise, you'll be limited to the speed of GPO and WEF
subscription refresh cycles to make changes to what is being generated on the device.
On modern devices, enabling more event channels and expanding the size of event log
files hasn't resulted in noticeable performance differences.

For the minimum recommended audit policy and registry system ACL settings, see
Appendix A - Minimum recommended minimum audit policy and Appendix B -
Recommended minimum registry system ACL policy.

Note: These are only minimum values need to meet what the WEF subscription
selects.

From a WEF subscription management perspective, the event queries provided should
be used in two separate subscriptions for ease of maintenance; only machines meeting
specific criteria would be allowed access to the targeted subscription, this access would
be determined by an algorithm or an analysts' direction. All devices should have access
to the Baseline subscription.

This system of dual subscription means you would create two base subscriptions:

Baseline WEF subscription. Events collected from all hosts; these events include
some role-specific events, which will only be emitted by those machines.
Targeted WEF subscription. Events collected from a limited set of hosts due to
unusual activity and/or heightened awareness for those systems.

Each using the respective event query below. For the Targeted subscription, enabling the
"read existing events" option should be set to true to allow collection of existing events
from systems. By default, WEF subscriptions will only forward events generated after the
WEF subscription was received by the client.

In Appendix E – Annotated Baseline Subscription Event Query and Appendix F –


Annotated Suspect Subscription Event Query, the event query XML is included when
creating WEF subscriptions. These subscriptions are annotated for query purpose and
clarity. Individual <Query> element can be removed or edited without affecting the rest
of the query.

Common WEF questions


This section addresses common questions from IT pros and customers.

Will the user notice if their machine is enabled for WEF or


if WEF encounters an error?
The short answer is: No.

The longer answer is: The Eventlog-forwardingPlugin/Operational event channel logs


the success, warning, and error events related to WEF subscriptions present on the
device. Unless the user opens Event Viewer and navigates to that channel, they won't
notice WEF either through resource consumption or Graphical User Interface pop-ups.
Even if there's an issue with the WEF subscription, there's no user interaction or
performance degradation. All success, warning, and failure events are logged to this
operational event channel.

Is WEF Push or Pull?


A WEF subscription can be configured to be pushed or pulled, but not both. The
simplest, most flexible IT deployment with the greatest scalability can be achieved by
using a push, or source initiated, subscription. WEF clients are configured by using a
GPO and the built-in forwarding client is activated. For pull, collector initiated, the
subscription on the WEC server is pre-configured with the names of the WEF Client
devices from which events are to be selected. Those clients are to be configured ahead
of time to allow the credentials used in the subscription to access their event logs
remotely (normally by adding the credential to the Event Log Readers built-in local
security group.) A useful scenario: closely monitoring a specific set of machines.

Will WEF work over VPN or RAS?


WEF handles VPN, RAS, and DirectAccess scenarios well and will reconnect and send any
accumulated backlog of events when the connection to the WEF Collector is re-
established.

How is client progress tracked?


The WEC server maintains in its registry the bookmark information and last heartbeat
time for each event source for each WEF subscription. When an event source reconnects
to a WEC server, the last bookmark position is sent to the device to use as a starting
point to resume forwarding events. If a WEF client has no events to send, the WEF client
will connect periodically to send a Heartbeat to the WEC server to indicate it's active.
This heartbeat value can be individually configured for each subscription.

Will WEF work in an IPv4, IPv6, or mixed IPv4/IPv6


environment?
Yes. WEF is transport agnostic and will work over IPv4 or IPv6.

Are WEF events encrypted? I see an HTTP/HTTPS option!


In a domain setting, the connection used to transmit WEF events is encrypted using
Kerberos, by default (with NTLM as a fallback option, which can be disabled by using a
GPO). Only the WEF collector can decrypt the connection. Additionally, the connection
between WEF client and WEC server is mutually authenticated regardless of
authentication type (Kerberos or NTLM.) There are GPO options to force Authentication
to use Kerberos Only.

This authentication and encryption is performed regardless if HTTP or HTTPS is selected.

The HTTPS option is available if certificate based authentication is used, in cases where
the Kerberos based mutual authentication isn't an option. The SSL certificate and
provisioned client certificates are used to provide mutual authentication.

Do WEF Clients have a separate buffer for events?


The WEF client machines local event log is the buffer for WEF for when the connection
to the WEC server is lost. To increase the "buffer size", increase the maximum file size of
the specific event log file where events are being selected. For more info, see Appendix
C – Event Channel Settings (enable and Channel Access) methods.
When the event log overwrites existing events (resulting in data loss if the device isn't
connected to the Event Collector), there's no notification sent to the WEF collector that
events are lost from the client. Neither is there an indicator that there was a gap
encountered in the event stream.

What format is used for forwarded events?


WEF has two modes for forwarded events. The default is "Rendered Text" that includes
the textual description of the event as you would see it in Event Viewer. This
description's inclusion means that the event size is effectively doubled or tripled
depending on the size of the rendered description. The alternative mode is "Events"
(also sometimes referred to as "Binary" format) – which is just the event XML itself sent
in binary XML format (as it would be written to the evtx file.) This format is compact and
can more than double the event volume a single WEC server can accommodate.

A subscription "testSubscription" can be configured to use the Events format through


the WECUTIL utility:

syntax

@rem required to set the DeliveryMaxItems or DeliveryMaxLatencyTime


Wecutil ss "testSubscription" /cf:Events

How frequently are WEF events delivered?


Event delivery options are part of the WEF subscription configuration parameters –
There are three built-in subscription delivery options: Normal, Minimize Bandwidth, and
Minimize Latency. A fourth, catch-all called "Custom" is available but can't be selected or
configured through the WEF UI by using Event Viewer. The Custom delivery option must
be selected and configured using the WECUTIL.EXE command-line application. All
subscription options define a maximum event count and maximum event age, if either
limit is exceeded then the accumulated events are sent to the event collector.

This table outlines the built-in delivery options:

Event delivery Description


optimization
options

Normal This option ensures reliable delivery of events and doesn't attempt to
conserve bandwidth. It's the appropriate choice unless you need tighter
control over bandwidth usage or need forwarded events delivered as quickly
Event delivery Description
optimization
options

as possible. It uses pull delivery mode, batches 5 items at a time and sets a
batch timeout of 15 minutes.

Minimize This option ensures that the use of network bandwidth for event delivery is
bandwidth strictly controlled. It's an appropriate choice if you want to limit the
frequency of network connections made to deliver events. It uses push
delivery mode and sets a batch timeout of 6 hours. In addition, it uses a
heartbeat interval of 6 hours.

Minimize latency This option ensures that events are delivered with minimal delay. It's an
appropriate choice if you're collecting alerts or critical events. It uses push
delivery mode and sets a batch timeout of 30 seconds.

For more info about delivery options, see Configure Advanced Subscription Settings.

The primary difference is in the latency which events are sent from the client. If none of
the built-in options meet your requirements, you can set Custom event delivery options
for a given subscription from an elevated command prompt:

syntax

@rem required to set the DeliveryMaxItems or DeliveryMaxLatencyTime


Wecutil ss "SubscriptionNameGoesHere" /cm:Custom
@rem set DeliveryMaxItems to 1 event
Wecutil ss "SubscriptionNameGoesHere" /dmi:1
@rem set DeliveryMaxLatencyTime to 10 ms
Wecutil ss "SubscriptionNameGoesHere" /dmlt:10

How do I control which devices have access to a WEF


Subscription?
For source initiated subscriptions: Each WEF subscription on a WEC server has its own
ACL for machine accounts or security groups containing machine accounts (not user
accounts) that are explicitly allowed to participate in that subscription or are explicitly
denied access. This ACL applies to only a single WEF subscription (since there can be
multiple WEF subscriptions on a given WEC server), other WEF Subscriptions have their
own separate ACL.

For collector initiated subscriptions: The subscription contains the list of machines from
which the WEC server is to collect events. This list is managed at the WEC server, and the
credentials used for the subscription must have access to read event logs from the WEF
Clients – the credentials can be either the machine account or a domain account.
Can a client communicate to multiple WEF Event
Collectors?
Yes. If you desire a High-Availability environment, configure multiple WEC servers with
the same subscription configuration and publish both WEC Server URIs to WEF clients.
WEF Clients will forward events simultaneously to the configured subscriptions on the
WEC servers, if they have the appropriate access.

What are the WEC server's limitations?


There are three factors that limit the scalability of WEC servers. The general rule for a
stable WEC server on commodity hardware is planning for a total of 3,000 events per
second on average for all configured subscriptions.

Disk I/O. The WEC server doesn't process or validate the received event, but rather
buffers the received event and then logs it to a local event log file (EVTX file). The
speed of logging to the EVTX file is limited by the disk write speed. Isolating the
EVTX file to its own array or using high speed disks can increase the number of
events per second that a single WEC server can receive.

Network Connections. While a WEF source doesn't maintain a permanent,


persistent connection to the WEC server, it doesn't immediately disconnect after
sending its events. This leniency means that the number of WEF sources that can
simultaneously connect to the WEC server is limited to the open TCP ports
available on the WEC server.

Registry size. For each unique device that connects to a WEF subscription, there's a
registry key (corresponding to the FQDN of the WEF Client) created to store
bookmark and source heartbeat information. If this information isn't pruned to
remove inactive clients, this set of registry keys can grow to an unmanageable size
over time.
When a subscription has >1000 WEF sources connect to it over its operational
lifetime, also known as lifetime WEF sources, Event Viewer can become
unresponsive for a few minutes when selecting the Subscriptions node in the
left-navigation, but will function normally afterwards.
At >50,000 lifetime WEF sources, Event Viewer is no longer an option and
wecutil.exe (included with Windows) must be used to configure and manage
subscriptions.
At >100,000 lifetime WEF sources, the registry won't be readable and the WEC
server will likely have to be rebuilt.
Subscription information
Below lists all of the items that each subscription collects, the actual subscription XML is
available in an Appendix. These items are separated out into Baseline and Targeted. The
intent is to subscribe all hosts to Baseline, and then enroll (and remove) hosts on an as
needed basis to the Targeted subscription.

Baseline subscription
While this subscription appears to be the largest subscription, it really is the lowest
volume on a per-device basis. (Exceptions should be allowed for unusual devices – a
device performing complex developer related tasks can be expected to create an
unusually high volume of process create and AppLocker events.) This subscription
doesn't require special configuration on client devices to enable event channels or
modify channel permissions.

The subscription is essentially a collection of query statements applied to the Event Log.
This subscription means that it's modular in nature and a given query statement can be
removed or changed without impacting other query statement in the subscription.
Additionally, suppress statements that filter out specific events, only apply within that
query statement and aren't to the entire subscription.

Baseline subscription requirements


To gain the most value out of the baseline subscription, we recommend having the
following requirements set on the device to ensure that the clients are already
generating the required events to be forwarded off the system.

Apply a security audit policy that is a super-set of the recommended minimum


audit policy. For more info, see Appendix A – Minimum Recommended minimum
Audit Policy. This policy ensures that the security event log is generating the
required events.

Apply at least an Audit-Only AppLocker policy to devices.


If you're already allowing or restricting events by using AppLocker, then this
requirement is met.
AppLocker events contain useful information, such as file hash and digital
signature information for executables and scripts.

Enable disabled event channels and set the minimum size for modern event files.
Currently, there's no GPO template for enabling or setting the maximum size for
the modern event files. This threshold must be defined by using a GPO. For more
info, see Appendix C – Event Channel Settings (enable and Channel Access)
methods.

The annotated event query can be found in the following. For more info, see Appendix F
– Annotated Suspect Subscription Event Query.

Anti-malware events from Microsoft Antimalware or Windows Defender. These


events can be configured for any given anti-malware product easily if it writes to
the Windows event log.

Security event log Process Create events.

AppLocker Process Create events (EXE, script, packaged App installation and
execution).

Registry modification events. For more info, see Appendix B – Recommended


minimum Registry System ACL Policy.

OS startup and shutdown


Startup events include operating system version, service pack level, QFE version,
and boot mode.

Service install
Includes what the name of the service, the image path, and who installed the
service.

Certificate Authority audit events


These events are only applicable on systems with the Certificate Authority role
installed.
Logs certificate requests and responses.

User profile events


Use of a temporary profile or unable to create a user profile may indicate an
intruder is interactively logging into a device but not wanting to leave a
persistent profile behind.

Service start failure


Failure codes are localized, so you have to check the message DLL for values.

Network share access events


Filter out IPC$ and /NetLogon file shares, which are expected and noisy.

System shutdown initiate requests


Find out what initiated the restart of a device.

User-initiated interactive sign-out event

Remote Desktop Services sessions connect, reconnect, or disconnect.

EMET events, if EMET is installed.

Event forwarding plugin events


For monitoring WEF subscription operations, such as Partial Success events. This
event is useful for diagnosing deployment issues.

Network share creation and deletion


Enables detection of unauthorized share creation.

7 Note

All shares are re-created when the device starts.

Sign-in sessions
Sign-in success for interactive (local and Remote Interactive/Remote Desktop)
Sign-in success for services for non-built-in accounts, such as LocalSystem,
LocalNetwork, and so on.
Sign-in success for batch sessions
Sign-in session close, which is sign-out events for non-network sessions.

Windows Error Reporting (Application crash events only)


This session can help detect early signs of intruder not familiar with enterprise
environment using targeted malware.

Event log service events


Errors, start events, and stop events for the Windows Event Log service.

Event log cleared (including the Security Event Log)


This event could indicate an intruder that is covering their tracks.

Special privileges assigned to new sign in


This assignation indicates that at the time of signing in, a user is either an
Administrator or has the sufficient access to make themselves Administrator.

Outbound Remote Desktop Services session attempts


Visibility into potential beachhead for intruder

System time changed


SMB Client (mapped drive connections)

Account credential validation


Local accounts or domain accounts on domain controllers

A user was added or removed from the local Administrators security group.

Crypto API private key accessed


Associated with signing objects using the locally stored private key.

Task Scheduler task creation and delete


Task Scheduler allows intruders to run code at specified times as LocalSystem.

Sign-in with explicit credentials


Detect credential use changes by intruders to access more resources.

Smartcard card holder verification events


This event detects when a smartcard is being used.

Suspect subscription
This subscription adds some possible intruder-related activity to help analyst further
refine their determinations about the state of the device.

Sign-in session creation for network sessions


Enables time-series analysis of network graphs.

RADIUS and VPN events


Useful if you use a Microsoft IAS RADIUS/VPN implementation. It shows user->
IP address assignment with remote IP address connecting to the enterprise.

Crypto API X509 object and build chain events


Detects known bad certificate, CA, or sub-CA
Detects unusual process use of CAPI

Groups assigned to local sign in


Gives visibility to groups that enable account-wide access
Allows better planning for remediation efforts
Excludes well known, built-in system accounts.

Sign-in session exit


Specific for network sign-in sessions.

Client DNS lookup events


Returns what process performed a DNS query and the results returned from the
DNS server.

Process exit
Enables checking for processes terminating unexpectedly.

Local credential validation or signing in with explicit credentials


Generated when the local SAM is authoritative for the account credentials being
authenticated.
Noisy on domain controllers
On client devices, it's only generated when local accounts sign in.

Registry modification audit events


Only when a registry value is being created, modified, or deleted.

Wireless 802.1x authentication


Detect wireless connection with a peer MAC address

Windows PowerShell logging


Covers Windows PowerShell 2.0 and later and includes the Windows PowerShell
5.0 logging improvements for in-memory attacks using Windows PowerShell.
Includes Windows PowerShell remoting logging

User Mode Driver Framework "Driver Loaded" event


Can possibly detect a USB device loading multiple device drivers. For example, a
USB_STOR device loading the keyboard or network driver.

Appendix A - Minimum recommended


minimum audit policy
If your organizational audit policy enables more auditing to meet its needs, that is fine.
The policy below is the minimum audit policy settings needed to enable events
collected by both baseline and targeted subscriptions.

Category Subcategory Audit settings

Account Logon Credential Validation Success and Failure

Account Management Security Group Management Success

Account Management User Account Management Success and Failure

Account Management Computer Account Management Success and Failure


Category Subcategory Audit settings

Account Management Other Account Management Events Success and Failure

Detailed Tracking Process Creation Success

Detailed Tracking Process Termination Success

Logon/Logoff User/Device Claims Not configured

Logon/Logoff IPsec Extended Mode Not configured

Logon/Logoff IPsec Quick Mode Not configured

Logon/Logoff Logon Success and Failure

Logon/Logoff Logoff Success

Logon/Logoff Other Logon/Logoff Events Success and Failure

Logon/Logoff Special Logon Success and Failure

Logon/Logoff Account Lockout Success

Object Access Application Generated Not configured

Object Access File Share Success

Object Access File System Not configured

Object Access Other Object Access Events Not configured

Object Access Registry Not configured

Object Access Removable Storage Success

Policy Change Audit Policy Change Success and Failure

Policy Change MPSSVC Rule-Level Policy Change Success and Failure

Policy Change Other Policy Change Events Success and Failure

Policy Change Authentication Policy Change Success and Failure

Policy Change Authorization Policy Change Success and Failure

Privilege Use Sensitive Privilege Use Not configured

System Security State Change Success and Failure

System Security System Extension Success and Failure

System System Integrity Success and Failure


Appendix B - Recommended minimum registry
system ACL policy
The Run and RunOnce keys are useful for intruders and malware persistence. It allows
code to be run (or run only once then removed, respectively) when a user signs in to the
system.

This implication can easily be extended to other Auto-Execution Start Points keys in the
registry.

Use the following figures to see how you can configure those registry keys.

Appendix C - Event channel settings (enable


and channel access) methods
Some channels are disabled by default and have to be enabled. Others, such as
Microsoft-Windows-CAPI2/Operational must have the channel access modified to allow
the Event Log Readers built-in security group to read from it.

The recommended and most effective way to do this customization is configuring the
baseline GPO to run a scheduled task to configure the event channels (enable, set
maximum size, and adjust channel access). This configuration will take effect at the next
GPO refresh cycle and has minimal impact on the client device.
The following GPO snippet performs the following tasks:

Enables the Microsoft-Windows-Capi2/Operational event channel.


Sets the maximum file size for Microsoft-Windows-Capi2/Operational to 100MB.
Sets the maximum file size for Microsoft-Windows-AppLocker/EXE and DLL to
100 MB.
Sets the maximum channel access for Microsoft-Windows-Capi2/Operational to
include the built-in Event Log Readers security group.
Enables the Microsoft-Windows-DriverFrameworks-UserMode/Operational event
channel.
Sets the maximum file size for Microsoft-Windows-DriverFrameworks-
UserMode/Operational to 50 MB.
The following table also contains the six actions to configure in the GPO:

Program/Script Arguments

%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-CAPI2/Operational /e:true

%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-CAPI2/Operational
/ms:102432768
Program/Script Arguments

%SystemRoot%\System32\wevtutil.exe sl "Microsoft-Windows-AppLocker/EXE and DLL"


/ms:102432768

%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-CAPI2/Operational
/ca:"O:BAG:SYD:(A;;0x7;;;BA)(A;;0x2;;;AU)(A;;0x1;;;S-1-5-
32-573)"

%SystemRoot%\System32\wevtutil.exe sl "Microsoft-Windows-DriverFrameworks-
UserMode/Operational" /e:true

%SystemRoot%\System32\wevtutil.exe sl "Microsoft-Windows-DriverFrameworks-
UserMode/Operational" /ms:52432896

Appendix D - Minimum GPO for WEF Client


configuration
Here are the minimum steps for WEF to operate:

1. Configure the collector URI(s).


2. Start the WinRM service.
3. Add the Network Service account to the built-in Event Log Readers security group.
This addition allows reading from secured event channel, such as the security event
channel.
Appendix E – Annotated baseline subscription
event query
XML

<QueryList>
<Query Id="0" Path="System">
<!-- Anti-malware *old* events, but only detect events (cuts down noise)
-->
<Select Path="System">*[System[Provider[@Name='Microsoft Antimalware']
and (EventID &gt;= 1116 and EventID &lt;= 1119)]]</Select>
</Query>
<!-- AppLocker EXE events or Script events -->
<Query Id="1" Path="Microsoft-Windows-AppLocker/EXE and DLL">
<Select Path="Microsoft-Windows-AppLocker/EXE and DLL">*
[UserData[RuleAndFileData[PolicyName="EXE"]]]</Select>
<Select Path="Microsoft-Windows-AppLocker/MSI and Script">*</Select>
</Query>
<Query Id="2" Path="Security">
<!-- Wireless Lan 802.1x authentication events with Peer MAC address -->
<Select Path="Security">*[System[(EventID=5632)]]</Select>
</Query>
<Query Id="3" Path="Microsoft-Windows-TaskScheduler/Operational">
<!-- Task scheduler Task Registered (106), Task Registration Deleted
(141), Task Deleted (142) -->
<Select Path="Microsoft-Windows-TaskScheduler/Operational">*
[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and (EventID=106
or EventID=141 or EventID=142 )]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-
TaskScheduler'] and (EventID=106 or EventID=141 or EventID=142 )]]</Select>
</Query>
<Query Id="4" Path="System">
<!-- System startup (12 - includes OS/SP/Version) and shutdown -->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-
General'] and (EventID=12 or EventID=13)]]</Select>
</Query>
<Query Id="5" Path="System">
<!-- Service Install (7000), service start failure (7045), new service
(4697) -->
<Select Path="System">*[System[Provider[@Name='Service Control Manager']
and (EventID = 7000 or EventID=7045)]]</Select>
<Select Path="Security">*[System[(EventID=4697)]]</Select>
</Query>
<Query Id="6" Path="Security">
<!-- TS Session reconnect (4778), TS Session disconnect (4779) -->
<Select Path="Security">*[System[(EventID=4778 or EventID=4779)]]
</Select>
</Query>
<Query Id="7" Path="Security">
<!-- Network share object access without IPC$ and Netlogon shares -->
<Select Path="Security">*[System[(EventID=5140)]] and (*
[EventData[Data[@Name="ShareName"]!="\\*\IPC$"]]) and (*
[EventData[Data[@Name="ShareName"]!="\\*\NetLogon"]])</Select>
</Query>
<Query Id="8" Path="Security">
<!-- System Time Change (4616) -->
<Select Path="Security">*[System[(EventID=4616)]]</Select>
</Query>
<Query Id="9" Path="System">
<!-- Shutdown initiate requests, with user, process and reason (if
supplied) -->
<Select Path="System">*[System[Provider[@Name='USER32'] and
(EventID=1074)]]</Select>
</Query>
<!-- AppLocker packaged (Modern UI) app execution -->
<Query Id="10" Path="Microsoft-Windows-AppLocker/Packaged app-Execution">
<Select Path="Microsoft-Windows-AppLocker/Packaged app-Execution">*
</Select>
</Query>
<!-- AppLocker packaged (Modern UI) app installation -->
<Query Id="11" Path="Microsoft-Windows-AppLocker/Packaged app-Deployment">
<Select Path="Microsoft-Windows-AppLocker/Packaged app-Deployment">*
</Select>
</Query>
<Query Id="12" Path="Application">
<!-- EMET events -->
<Select Path="Application">*[System[Provider[@Name='EMET']]]</Select>
</Query>
<Query Id="13" Path="System">
<!-- Event log service events -->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-
Eventlog']]]</Select>
</Query>
<Query Id="14" Path="Security">
<!-- Local logons without network or service events -->
<Select Path="Security">*[System[(EventID=4624)]] and (*
[EventData[Data[@Name="LogonType"]!="3"]]) and (*
[EventData[Data[@Name="LogonType"]!="5"]])</Select>
</Query>
<Query Id="15" Path="Application">
<!-- WER events for application crashes only -->
<Select Path="Application">*[System[Provider[@Name='Windows Error
Reporting']]] and (*[EventData[Data[3] ="APPCRASH"]])</Select>
</Query>
<Query Id="16" Path="Security">
<!-- Security Log cleared events (1102), EventLog Service shutdown
(1100)-->
<Select Path="Security">*[System[(EventID=1102 or EventID = 1100)]]
</Select>
</Query>
<Query Id="17" Path="System">
<!-- Other Log cleared events (104)-->
<Select Path="System">*[System[(EventID=104)]]</Select>
</Query>
<Query Id="18" Path="Security">
<!-- user initiated logoff -->
<Select Path="Security">*[System[(EventID=4647)]]</Select>
</Query>
<Query Id="19" Path="Security">
<!-- user logoff for all non-network logon sessions-->
<Select Path="Security">*[System[(EventID=4634)]] and (*
[EventData[Data[@Name="LogonType"] != "3"]])</Select>
</Query>
<Query Id="20" Path="Security">
<!-- Service logon events if the user account isn't LocalSystem,
NetworkService, LocalService -->
<Select Path="Security">*[System[(EventID=4624)]] and (*
[EventData[Data[@Name="LogonType"]="5"]]) and (*
[EventData[Data[@Name="TargetUserSid"] != "S-1-5-18"]]) and (*
[EventData[Data[@Name="TargetUserSid"] != "S-1-5-19"]]) and (*
[EventData[Data[@Name="TargetUserSid"] != "S-1-5-20"]])</Select>
</Query>
<Query Id="21" Path="Security">
<!-- Network Share create (5142), Network Share Delete (5144) -->
<Select Path="Security">*[System[(EventID=5142 or EventID=5144)]]
</Select>
</Query>
<Query Id="22" Path="Security">
<!-- Process Create (4688) -->
<Select Path="Security">*[System[EventID=4688]]</Select>
</Query>
<Query Id="23" Path="Security">
<!-- Event log service events specific to Security channel -->
<Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-
Eventlog']]]</Select>
</Query>
<Query Id="26" Path="Security">
<!-- Special Privileges (Admin-equivalent Access) assigned to new logon,
excluding LocalSystem-->
<Select Path="Security">*[System[(EventID=4672)]]</Select>
<Suppress Path="Security">*[EventData[Data[1]="S-1-5-18"]]</Suppress>
</Query>
<Query Id="27" Path="Security">
<!-- New user added to local security group-->
<Select Path="Security">*[System[(EventID=4732)]]</Select>
</Query>
<Query Id="28" Path="Security">
<!-- New user added to global security group-->
<Select Path="Security">*[System[(EventID=4728)]]</Select>
</Query>
<Query Id="29" Path="Security">
<!-- New user added to universal security group-->
<Select Path="Security">*[System[(EventID=4756)]]</Select>
</Query>
<Query Id="30" Path="Security">
<!-- User removed from local Administrators group-->
<Select Path="Security">*[System[(EventID=4733)]] and (*
[EventData[Data[@Name="TargetUserName"]="Administrators"]])</Select>
</Query>
<Query Id="31" Path="Microsoft-Windows-TerminalServices-
RDPClient/Operational">
<!-- Log attempted TS connect to remote server -->
<Select Path="Microsoft-Windows-TerminalServices-
RDPClient/Operational">*[System[(EventID=1024)]]</Select>
</Query>
<Query Id="32" Path="Security">
<!-- Certificate Services received certificate request (4886), Approved
and Certificate issued (4887), Denied request (4888) -->
<Select Path="Security">*[System[(EventID=4886 or EventID=4887 or
EventID=4888)]]</Select>
</Query>
<Query Id="34" Path="Security">
<!-- New User Account Created(4720), User Account Enabled (4722), User
Account Disabled (4725), User Account Deleted (4726) -->
<Select Path="Security">*[System[(EventID=4720 or EventID=4722 or
EventID=4725 or EventID=4726)]]</Select>
</Query>
<Query Id="35" Path="Microsoft-Windows-SmartCard-Audit/Authentication">
<!-- Gets all Smart-card Card-Holder Verification (CHV) events (success
and failure) performed on the host. -->
<Select Path="Microsoft-Windows-SmartCard-Audit/Authentication">*
</Select>
</Query>
<Query Id="36" Path="Microsoft-Windows-SMBClient/Operational">
<!-- get all UNC/mapped drive successful connection -->
<Select Path="Microsoft-Windows-SMBClient/Operational">*
[System[(EventID=30622 or EventID=30624)]]</Select>
</Query>
<Query Id="37" Path="Application">
<!-- User logging on with Temporary profile (1511), cannot create
profile, using temporary profile (1518)-->
<Select Path="Application">*[System[Provider[@Name='Microsoft-Windows-
User Profiles Service'] and (EventID=1511 or EventID=1518)]]</Select>
</Query>
<Query Id="39" Path="Microsoft-Windows-Sysmon/Operational">
<!-- Modern SysMon event provider-->
<Select Path="Microsoft-Windows-Sysmon/Operational">*</Select>
</Query>
<Query Id="40" Path="Application">
<!-- Application crash/hang events, similar to WER/1001. These include
full path to faulting EXE/Module.-->
<Select Path="Application">*[System[Provider[@Name='Application Error']
and (EventID=1000)]]</Select>
<Select Path="Application">*[System[Provider[@Name='Application Hang']
and (EventID=1002)]]</Select>
</Query>
<Query Id="41" Path="Microsoft-Windows-Windows Defender/Operational">
<!-- Modern Windows Defender event provider Detection events (1006-1009)
and (1116-1119) -->
<Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[(
(EventID &gt;= 1006 and EventID &lt;= 1009) )]]</Select>
<Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[(
(EventID &gt;= 1116 and EventID &lt;= 1119) )]]</Select>
</Query>
<Query Id="42" Path="Security">
<!-- An account Failed to Log on events -->
<Select Path="Security">*[System[(EventID=4625)]] and (*
[EventData[Data[@Name="LogonType"]!="2"]]) </Select>
</Query>

</QueryList>

Appendix F – Annotated Suspect Subscription


Event Query
XML

<QueryList>
<Query Id="0" Path="Security">
<!-- Network logon events-->
<Select Path="Security">*[System[(EventID=4624)]] and (*
[EventData[Data[@Name="LogonType"]="3"]])</Select>
</Query>
<Query Id="1" Path="System">
<!-- RADIUS authentication events User Assigned IP address (20274), User
successfully authenticated (20250), User Disconnected (20275) -->
<Select Path="System">*[System[Provider[@Name='RemoteAccess'] and
(EventID=20274 or EventID=20250 or EventID=20275)]]</Select>
</Query>
<Query Id="2" Path="Microsoft-Windows-CAPI2/Operational">
<!-- CAPI events Build Chain (11), Private Key accessed (70), X509
object (90)-->
<Select Path="Microsoft-Windows-CAPI2/Operational">*[System[(EventID=11
or EventID=70 or EventID=90)]]</Select>
</Query>
<Query Id="3" Path="Security">
<!-- CA stop/Start events CA Service Stopped (4880), CA Service Started
(4881), CA DB row(s) deleted (4896), CA Template loaded (4898) -->
<Select Path="Security">*[System[(EventID=4880 or EventID = 4881 or
EventID = 4896 or EventID = 4898)]]</Select>
</Query>
<Query Id="4" Path="Microsoft-Windows-LSA/Operational">
<!-- Groups assigned to new login (except for well known, built-in
accounts)-->
<Select Path="Microsoft-Windows-LSA/Operational">*
[System[(EventID=300)]] and (*[EventData[Data[@Name="TargetUserSid"] != "S-
1-5-20"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-18"]]) and
(*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-19"]])</Select>
</Query>
<Query Id="5" Path="Security">
<!-- Logoff events - for Network Logon events-->
<Select Path="Security">*[System[(EventID=4634)]] and (*
[EventData[Data[@Name="LogonType"] = "3"]])</Select>
</Query>
<Query Id="6" Path="Security">
<!-- RRAS events – only generated on Microsoft IAS server -->
<Select Path="Security">*[System[( (EventID &gt;= 6272 and EventID &lt;=
6280) )]]</Select>
</Query>
<Query Id="7" Path="Microsoft-Windows-DNS-Client/Operational">
<!-- DNS Client events Query Completed (3008) -->
<Select Path="Microsoft-Windows-DNS-Client/Operational">*
[System[(EventID=3008)]]</Select>
<!-- suppresses local machine name resolution events -->
<Suppress Path="Microsoft-Windows-DNS-Client/Operational">*
[EventData[Data[@Name="QueryOptions"]="140737488355328"]]</Suppress>
<!-- suppresses empty name resolution events -->
<Suppress Path="Microsoft-Windows-DNS-Client/Operational">*
[EventData[Data[@Name="QueryResults"]=""]]</Suppress>
</Query>
<Query Id="8" Path="Security">
<!-- Process Terminate (4689) -->
<Select Path="Security">*[System[(EventID = 4689)]]</Select>
</Query>
<Query Id="9" Path="Security">
<!-- Local credential authentication events (4776), Logon with explicit
credentials (4648) -->
<Select Path="Security">*[System[(EventID=4776 or EventID=4648)]]
</Select>
</Query>
<Query Id="10" Path="Security">
<!-- Registry modified events for Operations: New Registry Value created
(%%1904), Existing Registry Value modified (%%1905), Registry Value Deleted
(%%1906) -->
<Select Path="Security">*[System[(EventID=4657)]] and ((*
[EventData[Data[@Name="OperationType"] = "%%1904"]]) or (*
[EventData[Data[@Name="OperationType"] = "%%1905"]]) or (*
[EventData[Data[@Name="OperationType"] = "%%1906"]]))</Select>
</Query>
<Query Id="11" Path="Security">
<!-- Request made to authenticate to Wireless network (including Peer
MAC (5632) -->
<Select Path="Security">*[System[(EventID=5632)]]</Select>
</Query>
<Query Id="12" Path="Microsoft-Windows-PowerShell/Operational">
<!-- PowerShell execute block activity (4103), Remote Command(4104),
Start Command(4105), Stop Command(4106) -->
<Select Path="Microsoft-Windows-PowerShell/Operational">*
[System[(EventID=4103 or EventID=4104 or EventID=4105 or EventID=4106)]]
</Select>
</Query>
<Query Id="13" Path="Microsoft-Windows-DriverFrameworks-
UserMode/Operational">
<!-- Detect User-Mode drivers loaded - for potential BadUSB detection. -
->
<Select Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">*
[System[(EventID=2004)]]</Select>
</Query>
<Query Id="14" Path="Windows PowerShell">
<!-- Legacy PowerShell pipeline execution details (800) -->
<Select Path="Windows PowerShell">*[System[(EventID=800)]]</Select>
</Query>
</QueryList>

Appendix G - Online resources


You can get more info with the following links:

Event Selection
Event Queries and Event XML
Event Query Schema
Windows Event Collector
4625(F): An account failed to log on
Block untrusted fonts in an enterprise
Article • 03/09/2023

Applies to:

Windows 10

Learn more about what features and functionality are supported in each Windows
edition at Compare Windows 10 Editions .

To help protect your company from attacks that may originate from untrusted or
attacker-controlled font files, we've created the Blocking Untrusted Fonts feature. Using
this feature, you can turn on a global setting that stops your employees from loading
untrusted fonts processed using the Graphics Device Interface (GDI) onto your network.
Untrusted fonts are any font installed outside of the %windir%/Fonts directory. Blocking
untrusted fonts helps prevent both remote (web-based or email-based) and local EOP
attacks that can happen during the font file-parsing process.

What does this mean for me?


Blocking untrusted fonts helps improve your network and employee protection against
font-processing-related attacks. By default, this feature isn't turned on.

How does this feature work?


There are three ways to use this feature:

On. Helps stop any font processed using GDI from loading outside of the
%windir%/Fonts directory. It also turns on event logging.

Audit. Turns on event logging, but doesn't block fonts from loading, regardless of
location. The name of the apps that use untrusted fonts appear in your event log.

7 Note

If you aren't quite ready to deploy this feature into your organization, you can
run it in Audit mode to see if not loading untrusted fonts causes any usability
or compatibility issues.
Exclude apps to load untrusted fonts. You can exclude specific apps, allowing
them to load untrusted fonts, even while this feature is turned on. For instructions,
see Fix apps having problems because of blocked fonts.

Potential reductions in functionality


After you turn on this feature, your employees might experience reduced functionality
when:

Sending a print job to a remote printer server that uses this feature and where the
spooler process hasn't been excluded. In this situation, any fonts that aren't
already available in the server's %windir%/Fonts folder won't be used.

Printing using fonts provided by the installed printer's graphics .dll file, outside of
the %windir%/Fonts folder. For more information, see Introduction to Printer
Graphics DLLs.

Using first or third-party apps that use memory-based fonts.

Using Internet Explorer to look at websites that use embedded fonts. In this
situation, the feature blocks the embedded font, causing the website to use a
default font. However, not all fonts have all of the characters, so the website might
render differently.

Using desktop Office to look at documents with embedded fonts. In this situation,
content shows up using a default font picked by Office.

Turn on and use the Blocking Untrusted Fonts


feature
Use Group Policy or the registry to turn this feature on, off, or to use audit mode.

To turn on and use the Blocking Untrusted Fonts feature through Group Policy

1. Open the Group Policy editor (gpedit.msc) and go to Computer


Configuration\Administrative Templates\System\Mitigation Options\Untrusted
Font Blocking .

2. Click Enabled to turn on the feature, and then click one of the following Mitigation
Options:
Block untrusted fonts and log events. Turns on the feature, blocking
untrusted fonts and logging installation attempts to the event log.

Do not block untrusted fonts. Turns on the feature, but doesn't block
untrusted fonts nor does it log installation attempts to the event log.

Log events without blocking untrusted fonts. Turns on the feature, logging
installation attempts to the event log, but not blocking untrusted fonts.

3. Click OK.

To turn on and use the Blocking Untrusted Fonts feature through the registry To turn
this feature on, off, or to use audit mode:

1. Open the registry editor (regedit.exe) and go to


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel\ .

2. If the MitigationOptions key isn't there, right-click and add a new QWORD (64-
bit) Value, renaming it to MitigationOptions.

3. Right click on the MitigationOptions key, and then click Modify.

The Edit QWORD (64-bit) Value box opens.

4. Make sure the Base option is Hexadecimal, and then update the Value data,
making sure you keep your existing value, like in the important note below:

To turn this feature on. Type 1000000000000.

To turn this feature off. Type 2000000000000.

To audit with this feature. Type 3000000000000.

) Important

Your existing MitigationOptions values should be saved during your


update. For example, if the current value is 1000, your updated value
should be 1000000001000.

5. Restart your computer.

View the event log


After you turn on this feature, or start using Audit mode, you can look at your event logs
for details.

To look at your event log

1. Open the event viewer (eventvwr.exe) and go to Application and Service


Logs/Microsoft/Windows/Win32k/Operational.

2. Scroll down to EventID: 260 and review the relevant events.

Event Example 1 - MS Word


WINWORD.EXE attempted loading a font that is restricted by font-loading policy.
FontType: Memory
FontPath:
Blocked: true

7 Note

Because the FontType is Memory, there's no associated FontPath.

Event Example 2 - Winlogon


Winlogon.exe attempted loading a font that is restricted by font-loading policy.
FontType: File
FontPath: \??\C:\PROGRAM FILES (X86)\COMMON FILES\MICROSOFT
SHARED\EQUATION\MTEXTRA.TTF

Blocked: true

7 Note

Because the FontType is File, there's also an associated FontPath.

Event Example 3 - Internet Explorer running in Audit mode


Iexplore.exe attempted loading a font that is restricted by font-loading policy.
FontType: Memory
FontPath:
Blocked: false

7 Note

In Audit mode, the problem is recorded, but the font isn't blocked.
Fix apps having problems because of blocked
fonts
Your company may still need apps that are having problems because of blocked fonts,
so we suggest that you first run this feature in Audit mode to determine which fonts are
causing the problems.

After you figure out the problematic fonts, you can try to fix your apps in two ways: by
directly installing the fonts into the %windir%/Fonts directory or by excluding the
underlying processes and letting the fonts load. As the default solution, we highly
recommend that you install the problematic font. Installing fonts is safer than excluding
apps because excluded apps can load any font, trusted or untrusted.

To fix your apps by installing the problematic fonts (recommended)

On each computer with the app installed, right-click on the font name and click
Install.

The font should automatically install into your %windir%/Fonts directory. If it


doesn't, you'll need to manually copy the font files into the Fonts directory and run
the installation from there.

To fix your apps by excluding processes

1. On each computer with the app installed, open regedit.exe and go to


HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File

Execution Options\<process_image_name> .

For example, if you want to exclude Microsoft Word processes, you'd use
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File
Execution Options\Winword.exe .

2. Add other processes that need to be excluded here, and then turn on the Blocking
untrusted fonts feature, using the steps in Turn on and use the Blocking Untrusted
Fonts feature, earlier in this article.

Related content
Dropping the "Untrusted Font Blocking" setting
TLS/SSL overview (Schannel SSP)
Article • 02/14/2023

Applies to: Windows Server 2022, Windows Server 2019, Windows Server 2016,
Windows 10

This topic for the IT professional introduces the TLS and SSL implementations in
Windows using the Schannel Security Service Provider (SSP) by describing practical
applications, changes in Microsoft's implementation, and software requirements, plus
additional resources for Windows Server 2012 and Windows 8.

Description
Schannel is a Security Support Provider (SSP) that implements the Secure Sockets Layer
(SSL) and Transport Layer Security (TLS) Internet standard authentication protocols.

The Security Support Provider Interface (SSPI) is an API used by Windows systems to
perform security-related functions including authentication. The SSPI functions as a
common interface to several SSPs, including the Schannel SSP.

TLS versions 1.0, 1.1, and 1.2, SSL versions 2.0 and 3.0, as well as the Datagram Transport
Layer Security (DTLS) protocol version 1.0, and the Private Communications Transport
(PCT) protocol are based on public key cryptography. The Schannel authentication
protocol suite provides these protocols. All Schannel protocols use a client/server
model.

Applications
One problem when you administer a network is securing data that is being sent
between applications across an untrusted network. You can use TLS and SSL to
authenticate servers and client computers and then use the protocol to encrypt
messages between the authenticated parties.

For example, you can use TLS/SSL for:

SSL-secured transactions with an e-commerce website


Authenticated client access to an SSL-secured website
Remote access
SQL access
E-mail
Requirements
TLS and SSL protocols use a client/server model and are based on certificate
authentication, which requires a public key infrastructure.

Server Manager information


There are no configuration steps necessary to implement TLS, SSL or Schannel.

Additional References
The Schannel security package
Secure Channel
Transport Layer Security Protocol
Secure DNS Client over HTTPS (DoH)
Article • 03/03/2022

Starting with Windows Server 2022, the DNS client supports DNS-over-HTTPS (DoH).
When DoH is enabled, DNS queries between Windows Server’s DNS client and the DNS
server pass across a secure HTTPS connection rather than in plain text. By passing the
DNS query across an encrypted connection, it's protected from interception by
untrusted third parties.

Configure the DNS client to support DoH


You can only configure the Windows Server client to use DoH if the primary or
secondary DNS server selected for the network interface is on the list of known DoH
servers. You can configure the DNS client to require DoH, request DoH or only use
traditional plain-text DNS queries. To configure the DNS client to support DoH on
Windows Server with Desktop Experience, do the following steps:

1. From the Windows Settings control panel, select Network & Internet.

2. On the Network & Internet page, select Ethernet.

3. On the Ethernet screen, select the network interface that you want to configure for
DoH.
4. On the Network screen, scroll down to DNS settings and select the Edit button.

5. On the Edit DNS settings screen, select Manual from the automatic or manual IP
settings dropdown. This setting allows you to configure the Preferred DNS and
Alternate DNS servers. If the addresses of these servers are present in the list of
known DoH servers, the Preferred DNS encryption dropdown will be enabled. You
can choose between the following settings to set the preferred DNS encryption:

Encrypted only (DNS over HTTPS). When this setting is chosen, all DNS
query traffic will pass across HTTPS. This setting provides the best protection
for DNS query traffic. However, it also means DNS resolution won't occur if
the target DNS server is unable to support DoH queries.

Encrypted preferred, unencrypted allowed. When this setting is chosen, the


DNS client will attempt to use DoH and then fall back to unencrypted DNS
queries if that isn't possible. This setting provides the best compatibility for
DoH capable DNS servers, but you won't be provided with any notification if
DNS queries are switched from DoH to plain text.

Unencrypted only. All DNS query traffic to the specified DNS server is
unencrypted. This setting configures the DNS client to use traditional plain
text DNS queries.
6. Select Save to apply the DoH settings to the DNS client.

If you're configuring the DNS server address for a client using PowerShell using the Set-
DNSClientServerAddress cmdlet, the DoH setting will depend on whether the server’s
fallback setting is in the list of known DoH servers table. At present you can't configure
DoH settings for the DNS client on Windows Server 2022 using Windows Admin Center
or sconfig.cmd.

Configuring DoH through Group Policy


Windows Server 2022 local and domain Group Policy settings include the Configure
DNS over HTTPS (DoH) name resolution policy. You can use it to configure the DNS
client to use DoH. This policy is found in the Computer
Configuration\Policies\Administrative Templates\Network\DNS Client node. When

enabled, this policy can be configured with the following settings:

Allow DoH. Queries will be performed using DoH if the specified DNS servers
support the protocol. If the servers don't support DoH, non-encrypted queries will
be issued.

Prohibit DoH. Will prevent use of DoH with DNS client queries.

Require DoH. Will require that queries are performed using DoH. If configured
DNS servers don't support DoH, name resolution will fail.

Don't enable the Require DoH option for domain joined computers as Active Directory
Domain Services is heavily reliant on DNS because the Windows Server DNS Server
service does not support DoH queries. If you require DNS query traffic on Active
Directory Domain Services network to be encrypted, consider implementing IPsec based
connection security rules to protect this traffic. See Securing end-to-end IPsec
connections by using IKEv2 for more information.
Determine which DoH servers are on the
known server list
Windows Server ships with a list of servers that are known to support DoH. You can
determine which DNS servers are on this list by using the Get-
DNSClientDohServerAddress PowerShell cmdlet.

The default list of known DoH servers is as follows:

Server Owner DNS Server IP Addresses

Cloudflare 1.1.1.1
1.0.0.1
2606:4700:4700::1111
2606:4700:4700::1001

Google 8.8.8.8
8.8.4.4
2001:4860:4860::8888
2001:4860:4860::8844

Quad 9 9.9.9.9
149.112.112.112
2620:fe::fe
2620:fe::fe:9

Add a new DoH server to the list of known


servers
You can add new DoH servers to the list of known servers using the Add-
DnsClientDohServerAddress PowerShell cmdlet. Specify the URL of the DoH template and
whether you'll allow the client to fall back to an unencrypted query should the secure
query fail. The syntax of this command is:

PowerShell

Add-DnsClientDohServerAddress -ServerAddress '<resolver-IP-address>' -


DohTemplate '<resolver-DoH-template>' -AllowFallbackToUdp $False -
AutoUpgrade $True

Use Name Resolution Policy Table with DoH


You can use the Name Resolution Policy Table (NRPT) to configure queries to a specific
DNS namespace to use a specific DNS server. If the DNS server is known to support
DoH, queries related to that domain will be performed using DoH rather than in an
unencrypted manner.
Extensible Authentication Protocol
(EAP) for network access
Article • 06/19/2023

Applies to: Windows Server 2022, Windows Server 2019, Windows Server 2016,
Windows Server 2012 R2, Windows Server 2012, Windows 11, Windows 10,
Windows 8.1

The Extensible Authentication Protocol (EAP) is an authentication framework that allows


for the use of different authentication methods for secure network access technologies.
Examples of these technologies include wireless access using IEEE 802.1X, wired access
using IEEE 802.1X, and Point-to-Point Protocol (PPP) connections like Virtual Private
Networking (VPN). EAP isn't a specific authentication method like MS-CHAP v2, but
rather a framework that enables networking vendors to develop and install new
authentication methods, known as EAP methods, on the access client and authentication
server. The EAP framework is originally defined by RFC 3748 and extended by various
other RFCs and standards.

Authentication methods
EAP authentication methods that are used within tunneled EAP methods are commonly
known as inner methods or EAP types. Methods that are set up as inner methods have
the same configuration settings as they would when used as an outer method. This
article contains configuration information specific to the following authentication
methods in EAP.

EAP-Transport Layer Security (EAP-TLS): Standards-based EAP method that uses TLS
with certificates for mutual authentication. Appears as Smart Card or other Certificate
(EAP-TLS) in Windows. EAP-TLS can be deployed as an inner method for another EAP
method or as a standalone EAP method.

 Tip

EAP methods that use EAP-TLS, being certificate-based, generally offer the highest
level of security. For example, EAP-TLS is the only allowed EAP method for WPA3-
Enterprise 192-bit mode.
EAP-Microsoft Challenge Handshake Authentication Protocol version 2 (EAP-MSCHAP
v2): Microsoft-defined EAP method that encapsulates the MSCHAP v2 authentication
protocol , which uses username and password, for authentication. Appears as Secure
password (EAP-MSCHAP v2) in Windows. EAP-MSCHAPv2 can be used as a standalone
method for VPN, but only as an inner method for wired/wireless.

2 Warning

MSCHAPv2-based connections are subject to similar attacks as for NTLMv1.


Windows 11 Enterprise, version 22H2 (build 22621) enables Windows Defender
Credential Guard which may cause issues with MSCHAPv2-based connections.

Protected EAP (PEAP): Microsoft-defined EAP method that encapsulates EAP within a
TLS tunnel. The TLS tunnel secures the inner EAP method, which could be unprotected
otherwise. Windows supports EAP-TLS and EAP-MSCHAP v2 as inner methods.

EAP-Tunneled Transport Layer Security (EAP-TTLS): Described by RFC 5281 ,


encapsulates a TLS session that performs mutual authentication using another inner
authentication mechanism. This inner method can be either an EAP protocol, such as
EAP-MSCHAP v2, or a non-EAP protocol, such as Password Authentication Protocol
(PAP). In Windows Server 2012, the inclusion of EAP-TTLS only provides support on the
client-side (in Windows 8). NPS doesn't support EAP-TTLS at this time. The client
support enables interoperation with commonly deployed RADIUS servers that support
EAP-TTLS.

EAP-Subscriber Identity Module (EAP-SIM), EAP-Authentication and Key Agreement


(EAP-AKA), and EAP-AKA Prime (EAP-AKA'): Described by various RFCs, enables
authentication by using SIM cards, and is implemented when a customer purchases a
wireless broadband service plan from a mobile network operator. As part of the plan,
the customer commonly receives a wireless profile that is preconfigured for SIM
authentication.

Tunnel EAP (TEAP): Described by RFC 7170 , tunneled EAP method that establishes a
secure TLS tunnel and executes other EAP methods inside that tunnel. Supports EAP
chaining - authenticating the machine and user within one authentication session. In
Windows Server 2022, the inclusion of TEAP only provides support for the client-side -
Windows 10, version 2004 (build 19041). NPS doesn't support TEAP at this time. The
client support enables interoperation with commonly deployed RADIUS servers that
support TEAP. Windows supports EAP-TLS and EAP-MSCHAP v2 as inner methods.

The following table lists some common EAP methods and their IANA assigned method
Type numbers .
EAP method IANA assigned Type Native Windows
number support

MD5-Challenge (EAP-MD5) 4 ❌

One-Time Password (EAP-OTP) 5 ❌

Generic Token Card (EAP-GTC) 6 ❌

EAP-TLS 13 ✅

EAP-SIM 18 ✅

EAP-TTLS 21 ✅

EAP-AKA 23 ✅

PEAP 25 ✅

EAP-MSCHAP v2 26 ✅

Protected One-Time Password (EAP- 32 ❌


POTP)

EAP-FAST 43 ❌

Pre-Shared Key (EAP-PSK) 47 ❌

EAP-IKEv2 49 ❌

EAP-AKA' 50 ✅

EAP-EKE 53 ❌

TEAP 55 ✅

EAP-NOOB 56 ❌

Configuring EAP properties


You can access the EAP properties for 802.1X authenticated wired and wireless access in
the following ways:

Configuring the Wired Network (IEEE 802.3) Policies and Wireless Network (IEEE
802.11) Policies extensions in Group Policy.
Computer Configuration > Policies > Windows Settings > Security Settings
Using Mobile Device Management (MDM) software, such as Intune (Wi-Fi/Wired)
Wi-Fi CSP
WiredNetwork CSP
Manually configuring wired or wireless connections on client computers.

You can access the EAP properties for virtual private network (VPN) connections in the
following ways:

Using Mobile Device Management (MDM) software, such as Intune


VPNv2 CSP
VPN profile options
Manually configuring VPN connections on client computers.
Using Connection Manager Administration Kit (CMAK) to configure VPN
connections.

For more information on configuring EAP properties, see Configure EAP profiles and
settings in Windows.

XML profiles for EAP


The profiles used for different connections types are XML files that contain the
configuration options for that connection. Each different connection type follows a
specific schema:

Wi-Fi (WLAN) profiles


Wired network (Ethernet) profiles
VPN profiles

However, when configured to use EAP, each profile schema has a child element
EapHostConfig element.

Wired/Wireless: EapHostConfig is a child element of the EAPConfig element. MSM


> security (Wired/Wireless) > OneX > EAPConfig
VPN: EapHostConfig is a child element of NativeProfile > Authentication > Eap >
Configuration

This configuration syntax is defined in the Group Policy: Wireless/Wired Protocol


Extension specification.

7 Note

The various configuration GUIs don't always show every technically possible option.
For example, Windows Server 2019 and earlier are unable to configure TEAP in UI.
However, it is often possible to import an existing XML profile that has previously
been configured.
The remainder of the article is intended to provide a mapping between the EAP
specific portions of the Group Policy/Control Panel UI and the XML configuration
options, as well as providing a description of the setting.

More information about configuring XML profiles can be found in XML Profiles. An
example of using an XML profile containing EAP settings can be found in Provision a Wi-
Fi profile via a website.

Security settings
The following table explains the configurable security settings for a profile that uses
802.1X. These settings map to OneX.

Setting XML element Description

Select a network EAPConfig Allows you to select the EAP method to use for
authentication method: authentication. See Authentication method
configuration settings and Cellular authentication
configuration settings

Properties Opens the properties dialog for the selected EAP


method.

Authentication Mode authMode Specifies the type of credentials used for


authentication. The following values are supported:

1. User or computer authentication


2. Computer authentication
3. User authentication
4. Guest authentication

"Computer", in this context, means "Machine" in


other references. machineOrUser is the default in
Windows.

Max Authentication maxAuthFailures Specifies the maximum number of authentication


Failures failures allowed for a set of credentials, defaulting
to 1 .

Cache user information cacheUserData Specifies whether the user's credentials should be
for subsequent cached for subsequent connections to the same
connections to this network, defaulting to true .
network

Advanced security settings > IEEE 802.1X


If Enforce advanced 802.1X settings is checked, all of the following settings will be
configured. If it's unchecked, default settings apply. In XML, all elements are optional,
with the default values used if they aren't present.

Setting XML element Description

Max maxStart Specifies the maximum number of EAPOL-Start messages that can
Eapol- be sent to the authenticator (RADIUS server) before the supplicant
Start (Windows client) assumes there's no authenticator present,
Msgs defaulting to 3 .

Start startPeriod Specifies the time period (in seconds) to wait before an EAPOL-
Period Start message is sent to start the 802.1X authentication process,
(seconds) defaulting to 5 .

Held heldPeriod Specifies the time period (in seconds) to wait after a failed
Period authentication attempt to reattempt authentication, defaulting to
(seconds) 1.

Auth authPeriod Specifies the time period (in seconds) to wait for a response from
Period the authenticator (RADIUS server) before assuming there's no
(seconds) authenticator present, defaulting to 18 .

Eapol- supplicantMode Specifies the method of transmission used for EAPOL-Start


Start messages. The following values are supported:
Message
1. Do not transmit ( inhibitTransmission )
2. Transmit ( includeLearning )
3. Transmit per IEEE 802.1X ( compliant )

"Computer", in this context, means "Machine" in other references.


compliant is the default in Windows, and is the only valid option
for wireless profiles.

Advanced security settings > Single Sign On


The following table explains the settings for Single Sign On (SSO), formerly known as
Pre-Logon Access Provider (PLAP).

Setting XML element Description

Enable Single Sign On for this singleSignOn Specifies whether SSO is enabled for
network this network, defaulting to false .
Don't use singleSignOn in a profile if
the network doesn't require it.
Setting XML element Description

Perform immediately before type Specifies when SSO should be


User performed - either before or after
the user logs on.
Perform immediately after User

Max delay for maxDelay Specifies the maximum delay (in


connectivity(seconds) seconds) before the SSO attempt
fails, defaulting to 10 .

Allow additional dialogs to be allowAdditionalDialogs Specified whether to allow EAP


displayed during Single Sign On dialogs to be displayed during SSO,
defaulting to false .

This network uses different userBasedVirtualLan Specifies whether the virtual LAN
VLAN for authentication with (VLAN) used by the device changes
machine and user credentials based on the user's credentials,
defaulting to false .

Authentication method configuration settings

U Caution

If a Network Access Server is configured to allow the same type of authentication


method for a tunneled EAP method (e.g. PEAP) and a non-tunneled EAP method
(e.g. EAP-MSCHAP v2), there is a potential security vulnerability. When you deploy
both a tunneled EAP method and EAP (which isn't protected), don't use the same
authentication type. For example, if you deploy PEAP-TLS, don't also deploy EAP-
TLS. This is because if you require the protection of the tunnel, it serves no purpose
to permit the method to be executed outside of the tunnel as well.

The following table explains the configurable settings for each authentication method.

EAP-TLS

The EAP-TLS settings in the UI map to EapTlsConnectionPropertiesV1, which is


extended by EapTlsConnectionPropertiesV2 and EapTlsConnectionPropertiesV3.

Setting XML element Description

Use my smart CredentialsSource Specifies that clients making authentication


card > SmartCard requests must present a smart card certificate for
network authentication.
Setting XML element Description

Use a certificate CredentialsSource Specifies that authenticating clients must use a


on this > CertificateStore certificate located in the Current User or Local
computer Computer certificate stores.

Use simple SimpleCertSelection Specifies whether Windows will automatically


certificate select a certificate for authentication without user
selection interaction (if possible) or if Windows will show a
(Recommended) dropdown for the user to select a certificate.

Advanced Opens the Configure Certificate Selection dialog


box.

Server validation
options

Use a different DifferentUsername Specifies whether to use a user name for


user name for authentication that is different from the user name
the connection in the certificate.

The following lists the configuration settings for Configure Certificate Selection.
These settings define the criteria a client uses to select the appropriate certificate
for authentication. This UI maps to TLSExtensions > FilteringInfo.

Setting XML element Description

Certificate CAHashList Specifies whether Certificate Issuer filtering is


Issuer Enabled="true" enabled.
If both Certificate Issuer and Extended Key Usage
(EKU) are enabled, only those certificates that
satisfy both conditions are considered valid for
authenticating the client to the server.
Setting XML element Description

Root IssuerHash Lists the names of all of the issuers for which
Certification corresponding certification authority (CA)
Authorities certificates are present in the Trusted Root
Certification Authorities or Intermediate
Certification Authorities certificate store of local
computer account. This includes:

1. All the root certification authorities and


intermediate certification authorities.
2. Contains only those issuers for which there are
corresponding valid certificates that are present on
the computer (for example, certificates that aren't
expired or not revoked).
3. The final list of certificates that are allowed for
authentication contains only those certificates that
were issued by any of the issuers selected in this list.

In XML, this is the SHA-1 thumbprint (hash) of the


certificate.

Extended Key Allows you to select All Purpose, Client


Usage (EKU) Authentication, AnyPurpose, or any combination of
these. Specifies that when a combination is selected,
all the certificates satisfying at least one of the three
conditions are considered valid certificates for
authenticating the client to the server. If EKU
filtering is enabled, one of the choices must be
selected, otherwise the Extended Key Usage (EKU)
checkbox will get unchecked.

All Purpose AllPurposeEnabled When selected, this item specifies that certificates
having the All Purpose EKU are considered valid
certificates for authenticating the client to the
server. The Object Identifier (OID) for All Purpose is
0 or empty.

Client ClientAuthEKUList Specifies that certificates having the Client


Authentication Enabled="true" (> Authentication EKU, and the specified list of EKUs
EKUMapInList > are considered valid certificates for authenticating
EKUName) the client to the server. The Object Identifier (OID)
for Client Authentication is 1.3.6.1.5.5.7.3.2 .

AnyPurpose AnyPurposeEKUList Specifies that all certificates having AnyPurpose


Enabled="true" (> EKU and the specified list of EKUs are considered
EKUMapInList > valid certificates for authenticating the client to the
EKUName) server. The Object Identifier (OID) for AnyPurpose is
1.3.6.1.4.1.311.10.12.1 .
Setting XML element Description

Add EKUMapping > Opens the Select EKUs dialog box, which enables
EKUMap > you to add standard, custom, or vendor-specific
EKUName/EKUOID EKUs to the Client Authentication or AnyPurpose
list.

Selecting Add or Edit within the Select EKUs dialog


box will open the Add/Edit EKU dialog box, which
provides two options:
1. Enter the name of the EKU - Provides a place to
type the name of the custom EKU.
2. Enter the EKU OID - Provides a place to type the
OID for the EKU. Only numeric digits, separators,
and . are allowed. Wild cards are permitted, in
which case all of the child OIDs in the hierarchy are
allowed.

For example, entering 1.3.6.1.4.1.311.* allows for


1.3.6.1.4.1.311.42 and 1.3.6.1.4.1.311.42.2.1 .

Edit Enables you to edit custom EKUs that you have


added. The default, predefined EKUs can't be
edited.

Remove Removes the selected EKU from the Client


Authentication or AnyPurpose list.

Server validation
Many EAP methods include an option for the client to validate the server's certificate. If
the server certificate isn't validated, the client can't be sure that it's communicating with
the correct server. This exposes the client to security risks, including the possibility that
the client might unknowingly connect to a rogue network.

7 Note

Windows requires the server certificate have the Server Authentication EKU. The
object identifier (OID) for this EKU is 1.3.6.1.5.5.7.3.1 .

The following table lists the server validation options applicable to each EAP method.
Windows 11 updated the server validation logic to be more consistent (see Updated
server certificate validation behavior in Windows 11). Should they conflict, the
descriptions in the following table describe the behavior for Windows 10 and earlier.
Setting XML element Description

Verify the EAP-TLS: This item specifies that the client verifies that server
server's PerformServerValidation certificates presented to the client computer have the
identity by correct signatures, haven't expired, and were issued by
validating PEAP: a trusted root certification authority (CA).
the PerformServerValidation Disabling this check box causes client computers to be
certificate unable to verify the identity of your servers during the
authentication process. If server authentication does
not occur, users are exposed to severe security risks,
including the possibility that users might unknowingly
connect to a rogue network.

Connect to EAP-TLS: Allows you to specify the name for Remote


these ServerValidation > Authentication Dial-In User Service (RADIUS) servers
servers ServerNames that provide network authentication and authorization.
You must type the name exactly as it appears in the
PEAP: subject field of each RADIUS server certificate or use
ServerValidation > regular expressions (regex) to specify the server name.
ServerNames
The complete syntax of the regular expression can be
EAP-TTLS: used to specify the server name, but to differentiate a
ServerValidation > regular expression with the literal string, you must use
ServerNames at least one * in the string specified. For example, you
can specify nps.*\.example\.com to specify the RADIUS
TEAP: server nps1.example.com or nps2.example.com .
ServerValidation >
You can also include a ; to separate multiple servers.
ServerNames

If no RADIUS servers are specified, the client only


verifies that the RADIUS server certificate was issued
by a trusted root CA.
Setting XML element Description

Trusted EAP-TLS: Lists the trusted root certification authorities. The list is
Root ServerValidation > built from the trusted root CAs that are installed in the
Certification TrustedRootCA computer and in the user certificate stores. You can
Authorities specify which trusted root CA certificates supplicants
PEAP: use to determine whether they trust your servers, such
ServerValidation > as your server running Network Policy Server (NPS) or
TrustedRootCA your provisioning server. If no trusted root CAs are
selected, the 802.1X client verifies that the computer
EAP-TTLS: certificate of the RADIUS server was issued by an
ServerValidation > installed trusted root CA. If one or multiple trusted root
TrustedRootCAHashes CAs are selected, the 802.1X client verifies that the
computer certificate of the RADIUS server was issued by
TEAP: a selected trusted root CA.
ServerValidation > If no trusted root CAs are selected, the client verifies
TrustedRootCAHashes that the RADIUS server certificate was issued by any
trusted root CA.

If you have a public key infrastructure (PKI) on your


network, and you use your CA to issue certificates to
your RADIUS servers, your CA certificate is
automatically added to the list of trusted root CAs. You
can also purchase a CA certificate from a non-Microsoft
vendor. Some non-Microsoft trusted root CAs provide
software with your purchased certificate that
automatically installs the purchased certificate into the
Trusted Root Certification Authorities certificate store.
In this case, the trusted root CA automatically appears
in the list of trusted root CAs.

Don't specify a trusted root CA certificate that isn't


already listed in client computers' Trusted Root
Certification Authorities certificate stores for Current
User and Local Computer. If you designate a certificate
that isn't installed on client computers, authentication
will fail.

In XML, this is the SHA-1 thumbprint (hash) of the


certificate (or SHA-256 for TEAP).

Server validation user prompt


The following table lists the server validation user prompt options applicable to each
EAP method. These options would be used, in the case of an untrusted server certificate,
to either:

immediately fail the connection, or


allow the user to manually accept or reject the connection.

EAP-TLS

Setting XML element

Don't prompt user to authorize new servers or ServerValidation >


trusted certification authorities DisableUserPromptForServerValidation

Prevents the user from being prompted to trust a server certificate if that certificate
is incorrectly configured, isn't already trusted, or both (if enabled). To simplify the
user experience and prevent users from mistakenly trusting a server deployed by an
attacker, it's recommended that you select this checkbox.

Cellular authentication configuration settings


The following lists the configuration settings for EAP-SIM, EPA-AKA, and EPA-AKA'
respectively.

EAP-SIM

EAP-SIM is defined in RFC 4186 . EAP Subscriber Identity Module (SIM) is used for
authentication and session key distribution using the 2nd generation mobile
network Global System for Mobile Communications (GSM) Subscriber Identity
Module (SIM).

The EAP-SIM settings in the UI map to EapSimConnectionPropertiesV1.

Item XML element Description

Use strong UseStrongCipherKeys Specifies that if selected, the profile uses


cipher keys strong encryption.

Don't reveal DontRevealPermanentID When enabled, forces the client to fail the
real identity to authentication if server requests for
server when permanent identity though the client have a
pseudonym pseudonym identity with it. Pseudonym
identity is identities are used for identity privacy so that
available the actual or permanent identity of a user isn't
revealed during authentication.
Item XML element Description

ProviderName Only available in XML, a string that indicates


the provider name that is allowed for
authentication.

Enable usage Realm= true Provides a place to type the realm name. If this
of realms field is left blank with Enable usage of realms
selected, the realm is derived from the
International Mobile Subscriber Identity (IMSI)
using the realm 3gpp.org, as described in the
3rd Generation Partnership Project (3GPP)
standard 23.003 V6.8.0.

Specify a realm Realm Provides a place to type a realm name. If


Enable usage of realms is enabled, this string
is used. If this field is empty, the derived realm
is used.

WPA3-Enterprise 192-bit mode


WPA3-Enterprise 192-bit mode is a special mode for WPA3-Enterprise that enforces
certain high security requirements on the wireless connection to provide a minimum of
192 bits of security. These requirements align with the Commercial National Security
Algorithm (CNSA) Suite, CNSSP 15 , which is a set of cryptographic algorithms that is
approved to protect classified and top secret information by the United States National
Security Agency (NSA). 192-bit mode can sometimes be referred to as "Suite B mode,"
which is a reference to the NSA Suite B Cryptography specification, which was replaced
by CNSA in 2016.

Both WPA3-Enterprise and WPA3-Enterprise 192-bit mode are available starting in


Windows 10, version 2004 (build 19041) and Windows Server 2022. However, WPA3-
Enterprise was singled out as a separate authentication algorithm in Windows 11. In
XML, this is specified in the authEncryption element.

The following table lists the algorithms required by the CNSA Suite.

Algorithm Description Parameters

Advanced Encryption Symmetric block cipher used for 256-bit key (AES-256)
Standard (AES) encryption

Elliptic Curve Diffie-Hellman Asymmetric algorithm used to establish a 384-bit prime


(ECDH) Key Exchange shared secret (key) modulus curve (P-
384)
Algorithm Description Parameters

Elliptic Curve Digital Asymmetric algorithm used for digital 384-bit prime
Signature Algorithm (ECDSA) signatures modulus curve (P-
384)

Secure Hash Algorithm (SHA) Cryptographic hash function SHA-384

Diffie-Hellman (DH) Key Asymmetric algorithm used to establish a 3072-bit modulus


Exchange shared secret (key)

Rivest-Shamir-Adleman Asymmetric algorithm used for digital 3072-bit modulus


(RSA) signatures or key-establishment

Aligning with CNSA, WPA3-Enterprise 192-bit mode requires that EAP-TLS is used with
the following cipher suites with restrictions:

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

ECDHE and ECDSA using the 384-bit prime modulus curve P-384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 / TLS_DHE_RSA_AES_256_GCM_SHA384

ECDHE using the 384-bit prime modulus curve P-384


RSA >= 3072-bit modulus

7 Note

P-384 is also known as secp384r1 or nistp384 . Other elliptic curves, such as P-521
are not permitted.

SHA-384 is in the SHA-2 family of hash functions. Other algorithms and variants,
such as SHA-512 or SHA3-384, are not permitted.

Windows supports only the TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 and


TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 cipher suites for WPA3-Enterprise 192-bit
mode. The TLS_DHE_RSA_AES_256_GCM_SHA384 cipher suite isn't supported.

TLS 1.3 uses new simplified TLS suites, of which only TLS_AES_256_GCM_SHA384 is
compatible with WPA3-Enterprise 192-bit mode. As TLS 1.3 requires (EC)DHE and allows
ECDSA or RSA certificates, along with the AES-256 AEAD and SHA384 hash,
TLS_AES_256_GCM_SHA384 is equivalent to TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 and
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 . However, RFC 8446 requires that TLS 1.3-
compliant applications support P-256, which is forbidden by CNSA. Therefore, WPA3-
Enterprise 192-bit mode can't be fully compliant with TLS 1.3. However, there are no
known interoperability issues with TLS 1.3 and WPA3-Enterprise 192-bit mode.
To configure a network for WPA3-Enterprise 192-bit mode, Windows requires EAP-TLS
be used with a certificate that meets the requirements described previously.

Additional resources
Managing the New Wireless Network (IEEE 802.11) Policies Settings
Managing the New Wired Network (IEEE 802.3) Policies Settings
Advanced Security Settings for Wired and Wireless Network Policies
Windows Defender Firewall with
Advanced Security
Article • 05/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic is an overview of the Windows Defender Firewall with Advanced Security
(WFAS) and Internet Protocol security (IPsec) features.

Overview of Windows Defender Firewall with


Advanced Security
Windows Defender Firewall in Windows 8, Windows 7, Windows Vista, Windows Server
2012, Windows Server 2008, and Windows Server 2008 R2 is a stateful host firewall that
helps secure the device by allowing you to create rules that determine which network
traffic is permitted to enter the device from the network and which network traffic the
device is allowed to send to the network. Windows Defender Firewall also supports
Internet Protocol security (IPsec), which you can use to require authentication from any
device that is attempting to communicate with your device. When authentication is
required, devices that can't be authenticated as a trusted device can't communicate with
your device. You can also use IPsec to require that certain network traffic is encrypted to
prevent it from being read by network packet analyzers that could be attached to the
network by a malicious user.

The Windows Defender Firewall with Advanced Security MMC snap-in is more flexible
and provides much more functionality than the consumer-friendly Windows Defender
Firewall interface found in the Control Panel. Both interfaces interact with the same
underlying services, but provide different levels of control over those services. While the
Windows Defender Firewall Control Panel program can protect a single device in a home
environment, it doesn't provide enough centralized management or security features to
help secure more complex network traffic found in a typical business enterprise
environment.

Windows edition and licensing requirements


The following table lists the Windows editions that support Windows Firewall:
Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Windows Firewall license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Feature description
Windows Defender Firewall with Advanced Security is an important part of a layered
security model. By providing host-based, two-way network traffic filtering for a device,
Windows Defender Firewall blocks unauthorized network traffic flowing into or out of
the local device. Windows Defender Firewall also works with Network Awareness so that
it can apply security settings appropriate to the types of networks to which the device is
connected. Windows Defender Firewall and Internet Protocol Security (IPsec)
configuration settings are integrated into a single Microsoft Management Console
(MMC) named Windows Defender Firewall, so Windows Defender Firewall is also an
important part of your network's isolation strategy.

Practical applications
To help address your organizational network security challenges, Windows Defender
Firewall offers the following benefits:

Reduces the risk of network security threats. Windows Defender Firewall reduces
the attack surface of a device, providing an extra layer to the defense-in-depth
model. Reducing the attack surface of a device increases manageability and
decreases the likelihood of a successful attack.

Safeguards sensitive data and intellectual property. With its integration with
IPsec, Windows Defender Firewall provides a simple way to enforce authenticated,
end-to-end network communications. It provides scalable, tiered access to trusted
network resources, helping to enforce integrity of the data, and optionally helping
to protect the confidentiality of the data.
Extends the value of existing investments. Because Windows Defender Firewall is
a host-based firewall that is included with the operating system, there's no other
hardware or software required. Windows Defender Firewall is also designed to
complement existing non-Microsoft network security solutions through a
documented application programming interface (API).
Windows VPN technical guide
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This guide walks you through the decisions to make for Windows clients in your
organization's VPN solution, and how to configure your devices. This guide references
the VPNv2 Configuration Service Provider (CSP) and provides mobile device
management (MDM) configuration instructions using Microsoft Intune.

To create a Windows VPN device configuration profile see: Windows device settings to
add VPN connections using Intune.

7 Note

This guide does not explain server deployment.

Windows edition and licensing requirements


The following table lists the Windows editions that support Virtual private network
(VPN):

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Virtual private network (VPN) license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

In this guide
Article Description

VPN connection types Select a VPN client and tunneling protocol

VPN routing decisions Choose between split tunnel and force tunnel configuration
Article Description

VPN authentication Select a method for Extensible Authentication Protocol (EAP)


options authentication.

VPN and conditional Use Azure Active Directory policy evaluation to set access policies for
access VPN connections.

VPN name resolution Decide how name resolution should work

VPN auto-triggered Set a VPN profile to connect automatically by app or by name, to be


profile options "always on", and to not trigger VPN on trusted networks

VPN security features Configure traffic filtering, connect a VPN profile to Windows
Information Protection (WIP), and more

VPN profile options Combine settings into single VPN profile using XML

Learn more
Create VPN profiles to connect to VPN servers in Intune
VPN connection types
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

VPNs are point-to-point connections across a private or public network, like the
Internet. A VPN client uses special TCP/IP or UDP-based protocols, called tunneling
protocols, to make a virtual call to a virtual port on a VPN server. In a typical VPN
deployment, a client initiates a virtual point-to-point connection to a remote access
server over the Internet. The remote access server answers the call, authenticates the
caller, and transfers data between the VPN client and the organization's private network.

There are many options for VPN clients. In Windows, the built-in plug-in and the
Universal Windows Platform (UWP) VPN plug-in platform are built on top of the
Windows VPN platform. This article focuses on the Windows VPN platform clients and
the features that can be configured.

Built-in VPN client


Tunneling protocols:

Internet Key Exchange version 2 (IKEv2): configure the IPsec/IKE tunnel


cryptographic properties using the Cryptography Suite setting in the VPNv2
Configuration Service Provider (CSP).

L2TP: L2TP with pre-shared key (PSK) authentication can be configured using the
L2tpPsk setting in the VPNv2 CSP.

PPTP
SSTP: SSTP can't be configured using MDM, but it's one of the protocols
attempted in the Automatic option

7 Note

When a VPN plug-in is used, the adapter will be listed as an SSTP adapter,
even though the VPN protocol used is the plug-in's protocol.

Automatic: the Automatic option means that the device tries each of the built-in
tunneling protocols until one succeeds. It attempts from most secure to least
secure. Configure Automatic for the NativeProtocolType setting in the VPNv2 CSP.

Universal Windows Platform VPN plug-in


Using the UWP platform, third-party VPN providers can create app-containerized plug-
ins using WinRT APIs, eliminating the complexity and problems often associated with
writing to system-level drivers.

There are many Universal Windows Platform VPN applications, such as Pulse Secure,
Cisco AnyConnect, F5 Access, Sonicwall Mobile Connect, and Check Point Capsule. If you
want to use a UWP VPN plug-in, work with your vendor for any custom settings needed
to configure your VPN solution.

Configure connection type


See VPN profile options and VPNv2 CSP for XML configuration.

The following image shows connection options in a VPN Profile configuration policy
using Microsoft Intune:
In Intune, you can also include custom XML for third-party plug-in profiles:
Related articles
VPN technical guide
VPN routing decisions
VPN authentication options
VPN and conditional access
VPN name resolution
VPN auto-triggered profile options
VPN security features
VPN profile options
VPN routing decisions
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Network routes are required for the stack to understand which interface to use for
outbound traffic. One of the most important decision points for VPN configuration is
whether you want to send all the data through VPN (force tunnel) or only some data
through the VPN (split tunnel). The decision impacts the configuration, capacity
planning, and security expectations from the connection.

Split tunnel configuration


In a split tunnel configuration, routes can be specified to go over VPN and all other
traffic will go over the physical interface.

Routes can be configured using the VPNv2/<ProfileName>/RouteList setting in the


VPNv2 Configuration Service Provider (CSP).

For each route item in the list, you can configure the following options:

Address: VPNv2/<ProfileName>/RouteList/<routeRowId>/Address
Prefix size: VPNv2/<ProfileName>/RouteList/<routeRowId>/Prefix
Exclusion route: V VPNv2/<ProfileName>/RouteList/<routeRowId>/ExclusionRoute

With Windows VPN, you can specify exclusion routes that shouldn't go over the physical
interface.

Routes can also be added at connect time through the server for UWP VPN apps.

Force tunnel configuration


In a force tunnel configuration, all traffic will go over VPN. Force tunnel is the default
configuration, and takes effect when no routes are specified.

The only implication of force tunnel is the manipulation of routing entries: VPN V4 and
V6 default routes (for example 0.0.0.0/0) are added to the routing table with a lower
metric than ones for other interfaces. This configuration sends traffic through the VPN
as long as there isn't a specific route on the physical interface:

For built-in VPN, the decision is controlled using the MDM setting
VPNv2/ProfileName/NativeProfile/RoutingPolicyType
For a UWP VPN plug-in, the app controls the property. If the VPN plug-in indicates
the default route for IPv4 and IPv6 as the only two Inclusion routes, the VPN
platform marks the connection as Force Tunneled

Configure routing
See VPN profile options and VPNv2 CSP for XML configuration.

When you configure a VPN profile in Microsoft Intune, you can enable split tunnel
configuration:

Once enabled, you can add the routes that should use the VPN connection.

Related articles
VPN technical guide
VPN connection types
VPN authentication options
VPN and conditional access
VPN name resolution
VPN auto-triggered profile options
VPN security features
VPN profile options
VPN authentication options
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

In addition to older and less-secure password-based authentication methods (which


should be avoided), the built-in VPN solution uses Extensible Authentication Protocol
(EAP) to provide secure authentication using both user name and password, and
certificate-based methods. You can only configure EAP-based authentication if you
select a built-in VPN type (IKEv2, L2TP, PPTP or Automatic).

Windows supports a number of EAP authentication methods.

EAP-Microsoft Challenge Handshake Authentication Protocol version 2 (EAP-


MSCHAPv2):
User name and password authentication
Winlogon credentials - can specify authentication with computer sign-in
credentials

EAP-Transport Layer Security (EAP-TLS):

Supports the following types of certificate authentication:


Certificate with keys in the software Key Storage Provider (KSP)
Certificate with keys in Trusted Platform Module (TPM) KSP
Smart card certificates
Windows Hello for Business certificate

Certificate filtering:
Certificate filtering can be enabled to search for a particular certificate to use
to authenticate with
Filtering can be Issuer-based or extended key usage (EKU)-based

Server validation - with TLS, server validation can be toggled on or off:


Server name - specify the server to validate
Server certificate - trusted root certificate to validate the server
Notification - specify if the user should get a notification asking whether to
trust the server or not

Protected Extensible Authentication Protocol (PEAP):

Server validation - with PEAP, server validation can be toggled on or off:


Server name - specify the server to validate
Server certificate - trusted root certificate to validate the server
Notification - specify if the user should get a notification asking whether to
trust the server or not
Inner method - the outer method creates a secure tunnel inside while the inner
method is used to complete the authentication:
EAP-MSCHAPv2
EAP-TLS

Fast Reconnect: reduces the delay between an authentication request by a client


and the response by the Network Policy Server (NPS) or other Remote
Authentication Dial-in User Service (RADIUS) server. This reduces resource
requirements for both client and server, and minimizes the number of times that
users are prompted for credentials.

Cryptobinding: By deriving and exchanging values from the PEAP phase 1 key
material (Tunnel Key) and from the PEAP phase 2 inner EAP method key
material (Inner Session Key), it's possible to prove that the two authentications
terminate at the same two entities (PEAP peer and PEAP server). This process,
termed "cryptobinding", is used to protect the PEAP negotiation against "Man
in the Middle" attacks.

Tunneled Transport Layer Security (TTLS)


Inner method
Non-EAP
Password Authentication Protocol (PAP)
CHAP
MSCHAP
MSCHAPv2
EAP
MSCHAPv2
TLS
Server validation: in TTLS, the server must be validated. The following can be
configured:
Server name
Trusted root certificate for server certificate
Whether there should be a server validation notification

For a UWP VPN plug-in, the app vendor controls the authentication method to be used.
The following credential types can be used:

Smart card
Certificate
Windows Hello for Business
User name and password
One-time password
Custom credential type

Configure authentication
See EAP configuration for EAP XML configuration.

7 Note

To configure Windows Hello for Business authentication, follow the steps in EAP
configuration to create a smart card certificate. Learn more about Windows Hello
for Business..

The following image shows the field for EAP XML in a Microsoft Intune VPN profile. The
EAP XML field only appears when you select a built-in connection type (automatic,
IKEv2, L2TP, PPTP).

Related topics
VPN technical guide
VPN connection types
VPN routing decisions
VPN and conditional access
VPN name resolution
VPN auto-triggered profile options
VPN security features
VPN profile options
Extensible Authentication Protocol (EAP) for network access
VPN and conditional access
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

The VPN client is now able to integrate with the cloud-based Conditional Access
Platform to provide a device compliance option for remote clients. Conditional Access is
a policy-based evaluation engine that lets you create access rules for any Azure Active
Directory (Azure AD) connected application.

7 Note

Conditional Access is an Azure AD Premium feature.

Conditional Access Platform components used for Device Compliance include the
following cloud-based services:

Conditional Access Framework


Azure AD Connect Health
Windows Health Attestation Service (optional)
Azure AD Certificate Authority - It's a requirement that the client certificate used
for the cloud-based device compliance solution be issued by an Azure Active
Directory-based Certificate Authority (CA). An Azure AD CA is essentially a mini-CA
cloud tenant in Azure. The Azure AD CA can't be configured as part of an on-
premises Enterprise CA. See also Always On VPN deployment for Windows Server
and Windows 10.
Azure AD-issued short-lived certificates - When a VPN connection attempt is
made, the Azure AD Token Broker on the local device communicates with Azure
Active Directory, which then checks for health based on compliance rules. If
compliant, Azure AD sends back a short-lived certificate that is used to
authenticate the VPN. Note that certificate authentication methods such as EAP-
TLS can be used. When the client reconnects and determines that the certificate
has expired, the client will again check with Azure AD for health validation before a
new certificate is issued.
Microsoft Intune device compliance policies: Cloud-based device compliance uses
Microsoft Intune Compliance Policies, which are capable of querying the device
state and define compliance rules for the following, among other things.
Antivirus status
Auto-update status and update compliance
Password policy compliance
Encryption compliance
Device health attestation state (validated against attestation service after query)
The following client-side components are also required:

HealthAttestation Configuration Service Provider (CSP)


VPNv2 CSP DeviceCompliance node settings
Trusted Platform Module (TPM)

VPN device compliance


At this time, the Azure AD certificates issued to users don't contain a CRL Distribution
Point (CDP) and aren't suitable for Key Distribution Centers (KDCs) to issue Kerberos
tokens. For users to gain access to on-premises resources such as files on a network
share, client authentication certificates must be deployed to the Windows profiles of the
users, and their VPNv2 profiles must contain the <SSO> section.

Server-side infrastructure requirements to support VPN device compliance include:

The VPN server should be configured for certificate authentication.


The VPN server should trust the tenant-specific Azure AD CA.
For client access using Kerberos/NTLM, a domain-trusted certificate is deployed to
the client device and is configured to be used for single sign-on (SSO).

After the server side is set up, VPN admins can add the policy settings for conditional
access to the VPN profile using the VPNv2 DeviceCompliance node.

Two client-side configuration service providers are leveraged for VPN device
compliance.

VPNv2 CSP DeviceCompliance settings:


Enabled: enables the Device Compliance flow from the client. If marked as true,
the VPN client attempts to communicate with Azure AD to get a certificate to
use for authentication. The VPN should be set up to use certificate
authentication and the VPN server must trust the server returned by Azure AD.
Sso: entries under SSO should be used to direct the VPN client to use a
certificate other than the VPN authentication certificate when accessing
resources that require Kerberos authentication.
Sso/Enabled: if this field is set to true, the VPN client looks for a separate
certificate for Kerberos authentication.
Sso/IssuerHash: hashes for the VPN client to look for the correct certificate for
Kerberos authentication.
Sso/Eku: comma-separated list of extended key usage (EKU) extensions for the
VPN client to look for the correct certificate for Kerberos authentication.
HealthAttestation CSP (not a requirement) - functions performed by the
HealthAttestation CSP include:
Collects TPM data used to verify health states
Forwards the data to the Health Attestation Service (HAS)
Provisions the Health Attestation Certificate received from the HAS
Upon request, forward the Health Attestation Certificate (received from HAS)
and related runtime information to the MDM server for verification

7 Note

It's required that certificates used for obtaining Kerberos tickets to be issued from
an on-premises CA, and that SSO to be enabled in the user's VPN profile. This will
enable the user to access on-premises resources. In the case of AzureAD-only
joined devices (not hybrid joined devices), if the user certificate issued by the on-
premises CA has the user UPN from AzureAD in Subject and SAN (Subject
Alternative Name), the VPN profile must be modified to ensure that the client does
not cache the credentials used for VPN authentication. To do this, after deploying
the VPN profile to the client, modify the Rasphone.pbk on the client by changing
the entry UseRasCredentials from 1 (default) to 0 (zero).

Client connection flow


The VPN client side connection flow works as follows:
When a VPNv2 Profile is configured with <DeviceCompliance>
<Enabled>true</Enabled> the VPN client uses this connection flow:

1. The VPN client calls into Windows 10's or Windows 11's Azure AD Token Broker,
identifying itself as a VPN client.
2. The Azure AD Token Broker authenticates to Azure AD and provides it with
information about the device trying to connect. The Azure AD Server checks if the
device is in compliance with the policies.
3. If compliant, Azure AD requests a short-lived certificate.
4. Azure AD pushes down a short-lived certificate to the Certificate Store via the
Token Broker. The Token Broker then returns control back over to the VPN client
for further connection processing.
5. The VPN client uses the Azure AD-issued certificate to authenticate with the VPN
server.

Configure conditional access


See VPN profile options and VPNv2 CSP for XML configuration.

Learn more about Conditional Access and


Azure AD Health
Azure Active Directory conditional access
Getting started with Azure Active Directory Conditional Access
Control the health of Windows devices
Tip of the Day: The Conditional Access Framework and Device Compliance for VPN
(Part 1)
Tip of the Day: The Conditional Access Framework and Device Compliance for VPN
(Part 2)
Tip of the Day: The Conditional Access Framework and Device Compliance for VPN
(Part 3)
Tip of the Day: The Conditional Access Framework and Device Compliance for VPN
(Part 4)

Related articles
VPN technical guide
VPN connection types
VPN routing decisions
VPN authentication options
VPN name resolution
VPN auto-triggered profile options
VPN security features
VPN profile options
VPN name resolution
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

When the VPN client establishes a connection, it receives an IP address and, optionally,
the IP address of one or more DNS servers.

The name resolution setting in the VPN profile determines how name resolution works
on the system when the VPN connection is established:

1. The network stack looks at the Name Resolution Policy table (NRPT) for any
matches, and tries a resolution if a match is found
2. If no match is found, the DNS suffix on the most preferred interface based on the
interface metric is appended to the name (if a short name is used). A DNS query is
sent to the preferred interface
3. If the query times out, the DNS suffix search list is used in order and DNS queries
are sent on all interfaces

Name Resolution Policy table (NRPT)


The NRPT is a table of namespaces that determines the DNS client's behavior when
issuing name resolution queries and processing responses. It's the first place that the
stack will look after the DNSCache.

There are three types of name matches that can set up for NRPT:

Fully qualified domain name (FQDN) that can be used for direct matching to a
name
Suffix match results in either a comparison of suffixes (for FQDN resolution) or the
appending of the suffix (if using short name)
Any resolution should attempt to first resolve with the proxy server/DNS server
with this entry

NRPT is set using the VPNv2/<ProfileName>/DomainNameInformationList node of the


VPNv2 CSP. You can use the same node to configure a Web proxy server or DNS.

To learn more about NRPT, see Introduction to the NRPT.

DNS suffix
The DNS suffix setting is used to configure the primary DNS suffix for the VPN interface
and the suffix search list after the VPN connection is established.
Primary DNS suffix is set using the VPNv2/<ProfileName>/DnsSuffix node.

Learn more about primaryDNS suffix

Persistent name resolution rules


You can configure persistent name resolution rules. Name resolution for the specified
items is done over the VPN.

Persistent name resolution is set using the


VPNv2/<ProfileName>/DomainNameInformationList/<dniRowId>/Persistent node.

Configure name resolution


See VPN profile options and VPNv2 CSP for XML configuration.

The following image shows name resolution options in a VPN Profile configuration
policy using Microsoft Intune.

The fields in Add or edit DNS rule in the Intune profile correspond to the XML settings
shown in the following table.

Field XML

Name VPNv2/ProfileName/DomainNameInformationList/dniRowId/DomainName

Servers (comma VPNv2/ProfileName/DomainNameInformationList/dniRowId/DnsServers


separated)
Field XML

Proxy server VPNv2/ProfileName/DomainNameInformationList/dniRowId/WebServers

Related articles
VPN technical guide
VPN connection types
VPN routing decisions
VPN authentication options
VPN and conditional access
VPN auto-triggered profile options
VPN security features
VPN profile options
VPN auto-triggered profile options
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows can use different features to auto-trigger VPN, avoiding users to manually
connect when VPN is needed to access necessary resources. There are three different
types of auto-trigger rules:

Application trigger
Name-based trigger
Always On

7 Note

Auto-triggered VPN connections won't work if Folder Redirection for AppData is


enabled. Either Folder Redirection for AppData must be disabled, or the auto-
triggered VPN profile must be deployed in SYSTEM context, which changes the
path to where the rasphone.pbk file is stored.

Application trigger
VPN profiles can be configured to automatically connect on the execution of certain
applications:

You can configure desktop or Universal Windows Platform (UWP) apps to trigger a
VPN connection
You can configure per-app VPN and specify traffic rules for each app

7 Note

The app identifier for a desktop app is a file path. The app identifier for a UWP app
is a package family name.

Find a package family name (PFN) for per-app VPN configuration

For more information, see Traffic filters.

Name-based trigger
You can configure a domain name-based rule so that a specific domain name triggers
the VPN connection.\ Name-based auto-trigger can be configured using the
VPNv2/<ProfileName>/DomainNameInformationList/dniRowId/AutoTrigger setting in the

VPNv2 Configuration Service Provider (CSP).

There are four types of name-based triggers:

Short name: for example, if HRweb is configured as a trigger, and the stack sees a
DNS resolution request for HRweb, the VPN triggers
Fully qualified domain name (FQDN): for example, if HRweb.corp.contoso.com is
configured as a trigger, and the stack sees a DNS resolution request for
HRweb.corp.contoso.com, the VPN triggers
Suffix: for example, if .corp.contoso.com is configured as a trigger, and the stack
sees a DNS resolution request with a matching suffix (such as
HRweb.corp.contoso.com), the VPN triggers. For any short name resolution, VPN
triggers, and the DNS servers are queried for the <ShortName>.corp.contoso.com
All: if used, all DNS resolution triggers VPN

Always On
Always On is a Windows feature that enables the active VPN profile to connect
automatically on the following triggers:

User sign-in
Network change
Device screen on

When the trigger occurs, VPN tries to connect. If an error occurs, or any user input is
needed, the user sees a toast notification for more interaction.

When a device has multiple profiles with Always On triggers, the user can specify the
active profile in Settings > Network & Internet > VPN > <VPN profile> by selecting
the Let apps automatically use this VPN connection checkbox. By default, the first
MDM-configured profile is marked as Active. Devices with multiple users have the same
restriction: only one profile, and therefore only one user, is able to use the Always On
triggers.

Preserving user Always On preference


Another Windows feature is to preserve a user's Always On preference. If a user
manually unchecks the Connect automatically checkbox, Windows remembers the user
preference for the profile name by adding the profile name to the registry value
AutoTriggerDisabledProfilesList.

If a management tool removes or adds the same profile name back and set AlwaysOn
to true, Windows doesn't check the box if the profile name exists in the following
registry value, in order to preserve user preference.

Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Config
Value: AutoTriggerDisabledProfilesList
Type: REG_MULTI_SZ

Trusted network detection


The Trusted network detection feature configures the VPN so that connection isn't
triggered when a device is on a trusted network. To configure Trusted network
detection, you must provide a list of DNS suffixes. The VPN stack verifies the network
name of the physical interface connection profile: if it matches any of the suffixes
configured in the list and the network is private or provisioned by MDM, then VPN
doesn't trigger.

Trusted network detection can be configured using the


VPNv2/<ProfileName>/TrustedNetworkDetection setting in the VPNv2 CSP.

Configure app-triggered VPN


See VPN profile options and VPNv2 CSP for XML configuration.

The following image shows associating apps to a VPN connection in a VPN Profile
configuration policy using Microsoft Intune.

Related articles
VPN technical guide
VPN connection types
VPN routing decisions
VPN authentication options
VPN and conditional access
VPN name resolution
VPN security features
VPN profile options
VPN security features
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Hyper-V based containers and VPN


Windows supports different kinds of Hyper-V based containers, like Microsoft Defender
Application Guard and Windows Sandbox. When you use a third party VPN solution, the
Hyper-V based containers may not be able to seamlessly connect to the internet, and
configuration changes may be needed to resolve connectivity issues.

For example, read about the workaround for Cisco AnyConnect VPN: Cisco AnyConnect
Secure Mobility Client Administrator Guide: Connectivity issues with VM-based
subsystems .

Traffic Filters
Traffic Filters enables organizations to decide what traffic is allowed into the corporate
network based on policy. IT admins can use Traffic Filters to apply interface-specific
firewall rules to the VPN Interface.

There are two types of Traffic Filter rules:

App-based rules consist of a list of applications that can be marked to only allow
traffic originating from the apps to the VPN interface
Traffic-based rules consist of 5-tuple policies (ports, addresses, protocol) that can
be specified to only allow traffic matching the rules to go through the VPN
interface

There can be sets of rules linked by OR. Within each set, there can be app-based rules
and traffic-based rules.
All the properties within the set are linked by AND. The rules can be applied at a per-
app level or a per-device level.

For example, an IT admin could define rules that specify:

An HR App is allowed to go through the VPN and only access port 4545
The Finance apps are allowed to through the VPN and only access the Remote IP
ranges of 10.10.0.40 - 10.10.0.201 on port 5889
All other apps on the device can only access ports 80 or 443
Configure traffic filters
See VPN profile options and VPNv2 CSP for XML configuration.

The following image shows the interface to configure traffic rules in a VPN Profile
configuration policy, using Microsoft Intune.

LockDown VPN
A VPN profile configured with LockDown secures the device to only allow network traffic
over the VPN interface. It has the following features:

The system attempts to always keep the VPN connected


The user can't disconnect the VPN connection
The user can't delete or modify the VPN profile
The VPN LockDown profile uses forced tunnel connection
If the VPN connection isn't available, outbound network traffic is blocked
Only one VPN LockDown profile is allowed on a device

7 Note

For built-in VPN, LockDown VPN is only available for the Internet Key Exchange
version 2 (IKEv2) connection type.

U Caution
Be careful when deploying LockDown VPN, as the resultant connection won't be
able to send or receive any network traffic without the VPN connection being
established.

Related articles
VPN technical guide
VPN connection types
VPN routing decisions
VPN authentication options
VPN and conditional access
VPN name resolution
VPN auto-triggered profile options
VPN profile options
VPN profile options
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Most of the VPN settings in Windows can be configured in VPN profiles using Microsoft
Intune or Microsoft Configuration Manager. VPN settings can be configured using the
ProfileXML node in the VPNv2 configuration service provider (CSP).

7 Note

If you're not familiar with CSPs, read Introduction to configuration service


providers (CSPs) first.

The following table lists the VPN settings and whether the setting can be configured in
Intune and Configuration Manager, or can only be configured using ProfileXML.

Profile setting Can be configured in Intune and Configuration


Manager

Connection type Yes

Routing: split-tunnel routes Yes, except exclusion routes

Routing: forced-tunnel Yes

Authentication (EAP) Yes, if connection type is built in

Conditional access Yes

Name resolution: NRPT Yes

Name resolution: DNS suffix No

Name resolution: persistent No

Auto-trigger: app trigger Yes

Auto-trigger: name trigger Yes

Auto-trigger: Always On Yes

Auto-trigger: trusted network No


detection

LockDown No

Windows Information Protection Yes


(WIP)
Profile setting Can be configured in Intune and Configuration
Manager

Traffic filters Yes

Proxy settings Yes, by PAC/WPAD file or server and port

7 Note

VPN proxy settings are only used on Force Tunnel Connections. On Split Tunnel
Connections, the general proxy settings are used.

The ProfileXML node was added to the VPNv2 CSP to allow users to deploy VPN profile
as a single blob. This node is useful for deploying profiles with features that aren't yet
supported by MDMs. You can get more examples in the ProfileXML XSD article.

Sample Native VPN profile


The following sample is a sample Native VPN profile. This blob would fall under the
ProfileXML node.

XML

<VPNProfile>
<ProfileName>TestVpnProfile</ProfileName>
<NativeProfile>
<Servers>testServer.VPN.com</Servers>
<NativeProtocolType>IKEv2</NativeProtocolType>

<!--Sample EAP profile (PEAP)-->


<Authentication>
<UserMethod>Eap</UserMethod>
<Eap>
<Configuration>
<EapHostConfig
xmlns="http://www.microsoft.com/provisioning/EapHostConfig">
<EapMethod>
<Type
xmlns="http://www.microsoft.com/provisioning/EapCommon">25</Type>
<VendorId
xmlns="http://www.microsoft.com/provisioning/EapCommon">0</VendorId>
<VendorType
xmlns="http://www.microsoft.com/provisioning/EapCommon">0</VendorType>
<AuthorId
xmlns="http://www.microsoft.com/provisioning/EapCommon">0</AuthorId>
</EapMethod>
<Config
xmlns="http://www.microsoft.com/provisioning/EapHostConfig">
<Eap
xmlns="http://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1">
<Type>25</Type>
<EapType
xmlns="http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV1">
<ServerValidation>

<DisableUserPromptForServerValidation>true</DisableUserPromptForServerValida
tion>
<ServerNames></ServerNames>
<TrustedRootCA>d2 d3 8e ba 60 ca a1 c1 20 55 a2 e1 c8 3b
15 ad 45 01 10 c2 </TrustedRootCA>
<TrustedRootCA>d1 76 97 cc 20 6e d2 6e 1a 51 f5 bb 96 e9
35 6d 6d 61 0b 74 </TrustedRootCA>
</ServerValidation>
<FastReconnect>true</FastReconnect>
<InnerEapOptional>false</InnerEapOptional>
<Eap
xmlns="http://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1">
<Type>13</Type>
<EapType
xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV1">
<CredentialsSource>
<CertificateStore>
<SimpleCertSelection>true</SimpleCertSelection>
</CertificateStore>
</CredentialsSource>
<ServerValidation>

<DisableUserPromptForServerValidation>true</DisableUserPromptForServerValida
tion>
<ServerNames></ServerNames>
<TrustedRootCA>d2 d3 8e ba 60 ca a1 c1 20 55 a2 e1
c8 3b 15 ad 45 01 10 c2 </TrustedRootCA>
<TrustedRootCA>d1 76 97 cc 20 6e d2 6e 1a 51 f5 bb
96 e9 35 6d 6d 61 0b 74 </TrustedRootCA>
</ServerValidation>
<DifferentUsername>false</DifferentUsername>
<PerformServerValidation
xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV2">t
rue</PerformServerValidation>
<AcceptServerName
xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV2">f
alse</AcceptServerName>
<TLSExtensions
xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV2">
<FilteringInfo
xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV3">
<EKUMapping>
<EKUMap>
<EKUName>AAD Conditional Access</EKUName>
<EKUOID>1.3.6.1.4.1.311.87</EKUOID>
</EKUMap>
</EKUMapping>
<ClientAuthEKUList Enabled="true">
<EKUMapInList>
<EKUName>AAD Conditional Access</EKUName>
</EKUMapInList>
</ClientAuthEKUList>
</FilteringInfo>
</TLSExtensions>
</EapType>
</Eap>
<EnableQuarantineChecks>false</EnableQuarantineChecks>
<RequireCryptoBinding>true</RequireCryptoBinding>
<PeapExtensions>
<PerformServerValidation
xmlns="http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2">t
rue</PerformServerValidation>
<AcceptServerName
xmlns="http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2">f
alse</AcceptServerName>
</PeapExtensions>
</EapType>
</Eap>
</Config>
</EapHostConfig>
</Configuration>
</Eap>
</Authentication>

<!--Sample routing policy: in this case, this is a split tunnel


configuration with two routes configured-->
<RoutingPolicyType>SplitTunnel</RoutingPolicyType>
<DisableClassBasedDefaultRoute>true</DisableClassBasedDefaultRoute>
</NativeProfile>
<Route>
<Address>192.168.0.0</Address>
<PrefixSize>24</PrefixSize>
</Route>
<Route>
<Address>10.10.0.0</Address>
<PrefixSize>16</PrefixSize>
</Route>

<!--VPN will be triggered for the two apps specified here-->


<AppTrigger>
<App>
<Id>Microsoft.MicrosoftEdge_8wekyb3d8bbwe</Id>
</App>
</AppTrigger>
<AppTrigger>
<App>
<Id>C:\windows\system32\ping.exe</Id>
</App>
</AppTrigger>

<!--Example of per-app VPN. This configures traffic filtering rules for


two apps. Internet Explorer is configured for force tunnel, meaning that all
traffic allowed through this app must go over VPN. Microsoft Edge is
configured as split tunnel, so whether data goes over VPN or the physical
interface is dictated by the routing configuration.-->
<TrafficFilter>
<App>
<Id>%ProgramFiles%\Internet Explorer\iexplore.exe</Id>
</App>
<Protocol>6</Protocol>
<LocalPortRanges>10,20-50,100-200</LocalPortRanges>
<RemotePortRanges>20-50,100-200,300</RemotePortRanges>
<RemoteAddressRanges>30.30.0.0/16,10.10.10.10-
20.20.20.20</RemoteAddressRanges>
<RoutingPolicyType>ForceTunnel</RoutingPolicyType>
</TrafficFilter>
<TrafficFilter>
<App>
<Id>Microsoft.MicrosoftEdge_8wekyb3d8bbwe</Id>
</App>
<LocalAddressRanges>3.3.3.3/32,1.1.1.1-2.2.2.2</LocalAddressRanges>
</TrafficFilter>

<!--Name resolution configuration. The AutoTrigger node configures name-


based triggering. In this profile, the domain "hrsite.corporate.contoso.com"
triggers VPN.-->
<DomainNameInformation>
<DomainName>hrsite.corporate.contoso.com</DomainName>
<DnsServers>1.2.3.4,5.6.7.8</DnsServers>
<WebProxyServers>5.5.5.5</WebProxyServers>
<AutoTrigger>true</AutoTrigger>
</DomainNameInformation>
<DomainNameInformation>
<DomainName>.corp.contoso.com</DomainName>
<DnsServers>10.10.10.10,20.20.20.20</DnsServers>
<WebProxyServers>100.100.100.100</WebProxyServers>
</DomainNameInformation>

<!--EDPMode is turned on for the enterprise ID "corp.contoso.com". When a


user accesses an app with that ID, VPN will be triggered.-->
<EdpModeId>corp.contoso.com</EdpModeId>
<RememberCredentials>true</RememberCredentials>

<!--Always On is turned off, and triggering VPN for the apps and domain
name specified earlier in the profile will not occur if the user is
connected to the trusted network "contoso.com".-->
<AlwaysOn>false</AlwaysOn>
<DnsSuffix>corp.contoso.com</DnsSuffix>
<TrustedNetworkDetection>contoso.com</TrustedNetworkDetection>
<Proxy>
<Manual>
<Server>HelloServer</Server>
</Manual>
<AutoConfigUrl>Helloworld.Com</AutoConfigUrl>
</Proxy>

<!--Device compliance is enabled and an alternate certificate is specified


for domain resource authentication.-->
<DeviceCompliance>
<Enabled>true</Enabled>
<Sso>
<Enabled>true</Enabled>
<Eku>This is my Eku</Eku>
<IssuerHash>This is my issuer hash</IssuerHash>
</Sso>
</DeviceCompliance>
</VPNProfile>

Sample plug-in VPN profile


The following sample is a sample plug-in VPN profile. This blob would fall under the
ProfileXML node.

XML

<VPNProfile>
<ProfileName>TestVpnProfile</ProfileName>
<PluginProfile>

<ServerUrlList>testserver1.contoso.com;testserver2.contoso..com</ServerUrlLi
st>

<PluginPackageFamilyName>JuniperNetworks.JunosPulseVpn_cw5n1h2txyewy</Plugin
PackageFamilyName>
<CustomConfiguration>&lt;pulse-
schema&gt;&lt;isSingleSignOnCredential&gt;true&lt;/isSingleSignOnCredential&
gt;&lt;/pulse-schema&gt;</CustomConfiguration>
</PluginProfile>
<Route>
<Address>192.168.0.0</Address>
<PrefixSize>24</PrefixSize>
</Route>
<Route>
<Address>10.10.0.0</Address>
<PrefixSize>16</PrefixSize>
</Route>
<AppTrigger>
<App>
<Id>Microsoft.MicrosoftEdge_8wekyb3d8bbwe</Id>
</App>
</AppTrigger>
<AppTrigger>
<App>
<Id>%ProgramFiles%\Internet Explorer\iexplore.exe</Id>
</App>
</AppTrigger>
<TrafficFilter>
<App>
<Id>%ProgramFiles%\Internet Explorer\iexplore.exe</Id>
</App>
<Protocol>6</Protocol>
<LocalPortRanges>10,20-50,100-200</LocalPortRanges>
<RemotePortRanges>20-50,100-200,300</RemotePortRanges>
<RemoteAddressRanges>30.30.0.0/16,10.10.10.10-
20.20.20.20</RemoteAddressRanges>
<!--<RoutingPolicyType>ForceTunnel</RoutingPolicyType>-->
</TrafficFilter>
<TrafficFilter>
<App>
<Id>Microsoft.MicrosoftEdge_8wekyb3d8bbwe</Id>
</App>
<LocalAddressRanges>3.3.3.3/32,1.1.1.1-2.2.2.2</LocalAddressRanges>
</TrafficFilter>
<TrafficFilter>
<App>
<Id>Microsoft.MicrosoftEdge_8wekyb3d8bbwe</Id>
</App>
<Claims>O:SYG:SYD:(A;;CC;;;AU)</Claims>
<!--<RoutingPolicyType>SplitTunnel</RoutingPolicyType>-->
</TrafficFilter>
<DomainNameInformation>
<DomainName>corp.contoso.com</DomainName>
<DnsServers>1.2.3.4,5.6.7.8</DnsServers>
<WebProxyServers>5.5.5.5</WebProxyServers>
<AutoTrigger>false</AutoTrigger>
</DomainNameInformation>
<DomainNameInformation>
<DomainName>corp.contoso.com</DomainName>
<DnsServers>10.10.10.10,20.20.20.20</DnsServers>
<WebProxyServers>100.100.100.100</WebProxyServers>
</DomainNameInformation>
<!--<EdpModeId>corp.contoso.com</EdpModeId>-->
<RememberCredentials>true</RememberCredentials>
<AlwaysOn>false</AlwaysOn>
<DnsSuffix>corp.contoso.com</DnsSuffix>

<TrustedNetworkDetection>contoso.com,test.corp.contoso.com</TrustedNetworkDe
tection>
<Proxy>
<Manual>
<Server>HelloServer</Server>
</Manual>
<AutoConfigUrl>Helloworld.Com</AutoConfigUrl>
</Proxy>
</VPNProfile>

Apply ProfileXML using Intune


After you configure the settings that you want using ProfileXML, you can create a
custom profile in the Microsoft Intune admin center . After it's created, you deploy this
profile to your devices.

1. Sign in to the Microsoft Intune admin center .

2. Select Devices > Configuration profiles > Create profile.

3. Enter the following properties:

Platform: Select Windows 10 and later


Profile: Select Templates > Custom.

4. Select Create.

5. In Basics, enter the following properties:

Name: Enter a descriptive name for the profile. Name your profiles so you
can easily identify them later.
Description: Enter a description for the profile. This setting is optional, but
recommended.

6. Select Next.

7. In Configuration settings, enter the following properties:

OMA-URI: Enter ./user/vendor/MSFT/VPNv2/Your_VPN profile


name_/ProfileXML .

Data type: Select String (XML file) .


Value: Browse to, and select your XML file.

For more information on these settings, see Use custom settings for Windows
devices in Intune.

8. Select Next, and continue configuring the policy. For the specific steps and
recommendations, see Create a profile with custom settings in Intune.

Learn more
Create VPN profiles to connect to VPN servers in Intune
VPNv2 configuration service provider (CSP) reference
How to Create VPN Profiles in Configuration Manager

Related articles
VPN technical guide
VPN connection types
VPN routing decisions
VPN authentication options
VPN and conditional access
VPN name resolution
VPN auto-triggered profile options
VPN security features
How to configure cryptographic
settings for IKEv2 VPN connections
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

In IKEv2 VPN connections, the default setting for IKEv2 cryptographic settings are:

Encryption Algorithm: DES3


Integrity, Hash Algorithm: SHA1
Diffie Hellman Group (Key Size): DH2

These settings aren't secure for IKE exchanges.

To secure the connections, update the configuration of VPN servers and clients by
running VPN cmdlets.

VPN server
For VPN servers that run Windows Server 2012 R2 or later, you need to run Set-
VpnServerConfiguration to configure the tunnel type. These settings are effective for all
IKEv2 VPN connections.

PowerShell

Set-VpnServerConfiguration -TunnelType IKEv2 -CustomPolicy

On an earlier version of Windows Server, run Set-VpnServerIPsecConfiguration. Since


Set-VpnServerIPsecConfiguration doesn't have -TunnelType , the configuration applies
to all tunnel types on the server.

PowerShell

Set-VpnServerIPsecConfiguration -CustomPolicy

VPN client
For VPN client, you need to configure each VPN connection. For example, run Set-
VpnConnectionIPsecConfiguration (version 4.0) and specify the name of the connection:

PowerShell
Set-VpnConnectionIPsecConfiguration -ConnectionName <String>

IKEv2 Crypto Settings Example


The following commands configure the IKEv2 cryptographic settings to:

Encryption Algorithm: AES128


Integrity, Hash Algorithm: SHA256
Diffie Hellman Group (Key Size): DH14

IKEv2 VPN Server


PowerShell

Set-VpnServerConfiguration -TunnelType IKEv2 -CustomPolicy -


AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES128
-DHGroup Group14 -EncryptionMethod AES128 -IntegrityCheckMethod SHA256 -
PFSgroup PFS2048 -SALifeTimeSeconds 28800 -MMSALifeTimeSeconds 86400 -
SADataSizeForRenegotiationKilobytes 1024000
restart-service RemoteAccess -PassThru

If you need to switch back to the default IKEv2 settings, use this command:

PowerShell

Set-VpnServerConfiguration -TunnelType IKEv2 -RevertToDefault


restart-service RemoteAccess -PassThru

IKEv2 VPN Client


PowerShell

Set-VpnConnectionIPsecConfiguration -ConnectionName <String - your VPN


connection name> -AuthenticationTransformConstants SHA256128 -
CipherTransformConstants AES128 -DHGroup Group14 -EncryptionMethod AES128 -
IntegrityCheckMethod SHA256 -PfsGroup PFS2048 -Force

If you need to switch back to the default IKEv2 settings, use this command:

PowerShell

Set-VpnConnectionIPsecConfiguration -ConnectionName <String - your VPN


connection name> -RevertToDefault -Force

 Tip

If you're configuring a all-user VPN connection or a Device Tunnel you must use
the -AllUserConnection parameter in the Set-VpnConnectionIPsecConfiguration
command.
How to use Single Sign-On (SSO) over
VPN and Wi-Fi connections
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This article explains requirements to enable Single Sign-On (SSO) to on-premises


domain resources over Wi-Fi or VPN connections. The following scenarios are typically
used:

Connecting to a network using Wi-Fi or VPN


Use credentials for Wi-Fi or VPN authentication to also authenticate requests to
access domain resources, without being prompted for domain credentials

For example, you want to connect to a corporate network and access an internal website
that requires Windows integrated authentication.

The credentials that are used for the connection authentication are placed in Credential
Manager as the default credentials for the logon session. Credential Manager stores
credentials that can be used for specific domain resources. These are based on the
target name of the resource:

For VPN, the VPN stack saves its credential as the session default
For Wi-Fi, Extensible Authentication Protocol (EAP) provides support

The credentials are placed in Credential Manager as a session credential:

A session credential implies that it is valid for the current user session
The credentials are cleaned up when the Wi-Fi or VPN connection is disconnected

7 Note

In Windows 10, version 21H2 and later, the session credential isn't visible in
Credential Manager.

For example, if someone using Microsoft Edge tries to access a domain resource,
Microsoft Edge has the right Enterprise Authentication capability. This allows WinInet to
release the credentials that it gets from Credential Manager to the SSP that is requesting
it. For more information about the Enterprise Authentication capability, see App
capability declarations.

The local security authority will look at the device application to determine if it has the
right capability. This includes items such as a Universal Windows Platform (UWP)
application. If the app isn't a UWP, it doesn't matter. But, if the application is a UWP app,
it will evaluate at the device capability for Enterprise Authentication. If it does have that
capability and if the resource that you're trying to access is in the Intranet zone in the
Internet Options (ZoneMap), then the credential will be released. This behavior helps
prevent credentials from being misused by untrusted third parties.

Intranet zone
For the Intranet zone, by default it only allows single-label names, such as http://finance.
If the resource that needs to be accessed has multiple domain labels, then the
workaround is to use the Registry CSP.

Setting the ZoneMap


The ZoneMap is controlled using a registry that can be set through MDM. By default,
single-label names such as http://finance are already in the intranet zone. For multi-label
names, such as http://finance.net , the ZoneMap needs to be updated.

MDM Policy
OMA URI example:

./Vendor/MSFT/Registry/HKU/S-1-5-21-2702878673-795188819-444038987-
2781/Software/Microsoft/Windows/CurrentVersion/Internet%20Settings/ZoneMap/Domains/

<domain name> as an Integer value of 1 for each of the domains that you want to SSO

into from your device. This adds the specified domains to the Intranet Zone of the
Microsoft Edge browser.

Credential requirements
For VPN, the following types of credentials will be added to credential manager after
authentication:

Username and password


Certificate-based authentication:
TPM Key Storage Provider (KSP) Certificate
Software Key Storage Provider (KSP) Certificates
Smart Card Certificate
Windows Hello for Business Certificate
The username should also include a domain that can be reached over the connection
(VPN or WiFi).

User certificate templates


If the credentials are certificate-based, then the elements in the following table need to
be configured for the certificate templates to ensure they can also be used for Kerberos
client authentication.

Template element Configuration

SubjectName The user's distinguished name (DN) where the domain components of
the distinguished name reflect the internal DNS namespace when the
SubjectAlternativeName does not have the fully qualified UPN
required to find the domain controller.
This requirement is relevant in multi-forest environments as it ensures
a domain controller can be located.

SubjectAlternativeName The user's fully qualified UPN where a domain name component of the
user's UPN matches the organizations internal domain's DNS
namespace.
This requirement is relevant in multi-forest environments as it ensures
a domain controller can be located when the SubjectName does not
have the DN required to find the domain controller.

Key Storage Provider If the device is joined to Azure AD, a discrete SSO certificate is used.
(KSP)

EnhancedKeyUsage One or more of the following EKUs is required:

Client Authentication (for the VPN)


EAP Filtering OID (for Windows Hello for Business)
SmartCardLogon (for Azure AD-joined devices)

If the domain controllers require smart card EKU either:

SmartCardLogon
id-pkinit-KPClientAuth (1.3.6.1.5.2.3.4)

Otherwise:

TLS/SSL Client Authentication (1.3.6.1.5.5.7.3.2)

NDES server configuration


The NDES server is required to be configured so that incoming SCEP requests can be
mapped to the correct template to be used. For more information, see Configure
certificate infrastructure for SCEP.

Active Directory requirements


You need IP connectivity to a DNS server and domain controller over the network
interface so that authentication can succeed as well.

Domain controllers must have appropriate KDC certificates for the client to trust them as
domain controllers. Because phones are not domain-joined, the root CA of the KDC's
certificate must be in the Third-Party Root CA or Smart Card Trusted Roots store.

Domain controllers must be using certificates based on the updated KDC certificate
template Kerberos Authentication. This requires that all authenticating domain
controllers run Windows Server 2016, or you'll need to enable strict KDC validation on
domain controllers that run previous versions of Windows Server.

For more information, see Enabling Strict KDC Validation in Windows Kerberos .
Optimize Microsoft 365 traffic for
remote workers with the Windows VPN
client
Article • 08/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This article describes how to configure the recommendations in the article VPN split
tunneling for Microsoft 365 for the Windows VPN client. This guidance enables VPN
administrators to optimize Microsoft 365 usage while ensuring that all other traffic goes
over the VPN connection and through existing security gateways or tooling.

The recommendations can be implemented for the built-in Windows VPN client using a
Force Tunneling with Exclusions approach, defining IP-based exclusions even when using
force tunneling. Certain traffic can be split to use the physical interface, while still forcing
all other traffic via the VPN interface. Traffic addressed to defined destinations (like
those listed in the Microsoft 365 optimized categories) follows a much more direct and
efficient path, without the need to traverse or hairpin via the VPN tunnel and back out
of the organization's network. For cloud-services like Microsoft 365, this makes a
significant difference in performance and usability for remote users.

7 Note

The term force tunneling with exclusions is sometimes confusingly called split
tunnels by other vendors and in some online documentation. For Windows VPN,
the term split tunneling is defined differently, as described in the article VPN
routing decisions.

Solution Overview
The solution is based upon the use of a VPN Configuration Service Provider Reference
profile (VPNv2 CSP) and the embedded ProfileXML. These are used to configure the
VPN profile on the device. Various provisioning approaches can be used to create and
deploy the VPN profile as discussed in the article Step 6. Configure Windows 10 client
Always On VPN connections.

Typically, these VPN profiles are distributed using a Mobile Device Management
solution like Intune, as described in VPN profile options and Configure the VPN client by
using Intune.
To enable the use of force tunneling in Windows 10 or Windows 11 VPN, the
<RoutingPolicyType> setting is typically configured with a value of ForceTunnel in your

existing Profile XML (or script) by way of the following entry, under the <NativeProfile>
</NativeProfile> section:

XML

<RoutingPolicyType>ForceTunnel</RoutingPolicyType>

In order to define specific force tunnel exclusions, you then need to add the following
lines to your existing Profile XML (or script) for each required exclusion, and place them
outside of the <NativeProfile></NativeProfile> section as follows:

XML

<Route>
<Address>[IP addresses or subnet]</Address>
<PrefixSize>[IP Prefix]</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>

Entries defined by the [IP Addresses or Subnet] and [IP Prefix] references will
consequently be added to the routing table as more specific route entries that will use
the Internet-connected interface as the default gateway, as opposed to using the VPN
interface. You must define a unique and separate <Route></Route> section for each
required exclusion.

An example of a correctly formatted Profile XML configuration for force tunnel with
exclusions is the following:

XML

<VPNProfile>
<NativeProfile>
<RoutingPolicyType>ForceTunnel</RoutingPolicyType>
</NativeProfile>
<Route>
<Address>203.0.113.0</Address>
<PrefixSize>24</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>198.51.100.0</Address>
<PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
</VPNProfile>

7 Note

The IP addresses and prefix size values in this example are used purely as examples
only and should not be used.

Solution Deployment
For Microsoft 365, it's therefore necessary to add exclusions for all IP addresses
documented within the optimize categories described in Office 365 URLs and IP address
ranges to ensure that they're excluded from VPN force tunneling.

This can be achieved manually by adding the IP addresses defined within the optimize
category entries to an existing Profile XML (or script) file, or alternatively the following
script can be used which dynamically adds the required entries to an existing PowerShell
script, or XML file, based upon directly querying the REST-based web service to ensure
the correct IP address ranges are always used.

An example of a PowerShell script that can be used to update a force tunnel VPN
connection with Microsoft 365 exclusions is provided below.

PowerShell

# Copyright (c) Microsoft Corporation. All rights reserved.


#
# THIS SAMPLE CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND,
# WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
# IF THIS CODE AND INFORMATION IS MODIFIED, THE ENTIRE RISK OF USE OR
RESULTS IN
# CONNECTION WITH THE USE OF THIS CODE AND INFORMATION REMAINS WITH THE
USER.

<#
.SYNOPSIS
Applies or updates recommended Microsoft 365 optimize IP address
exclusions to an existing force tunnel Windows 10 and Windows 11 VPN profile
.DESCRIPTION
Connects to the Microsoft 365 worldwide commercial service instance
endpoints to obtain the latest published IP address ranges
Compares the optimized IP addresses with those contained in the supplied
VPN Profile (PowerShell or XML file)
Adds or updates IP addresses as necessary and saves the resultant file
with "-NEW" appended to the file name
.PARAMETERS
Filename and path for a supplied Windows 10 or Windows 11 VPN profile
file in either PowerShell or XML format
.NOTES
Requires at least Windows 10 Version 1803 with KB4493437, 1809 with
KB4490481, or later
.VERSION
1.0
#>

param (
[string]$VPNprofilefile
)

$usage=@"

This script uses the following parameters:

VPNprofilefile - The full path and name of the VPN profile PowerShell script
or XML file

EXAMPLES

To check a VPN profile PowerShell script file:

Update-VPN-Profile-Office365-Exclusion-Routes.ps1 -VPNprofilefile [FULLPATH


AND NAME OF POWERSHELL SCRIPT FILE]

To check a VPN profile XML file:

Update-VPN-Profile-Office365-Exclusion-Routes.ps1 -VPNprofilefile [FULLPATH


AND NAME OF XML FILE]

"@

# Check if filename has been provided #


if ($VPNprofilefile -eq "")
{
Write-Host "`nWARNING: You must specify either a PowerShell script or XML
filename!" -ForegroundColor Red

$usage
exit
}

$FileExtension = [System.IO.Path]::GetExtension($VPNprofilefile)

# Check if XML file exists and is a valid XML file #


if ( $VPNprofilefile -ne "" -and $FileExtension -eq ".xml")
{
if ( Test-Path $VPNprofilefile )
{
$xml = New-Object System.Xml.XmlDocument
try
{
$xml.Load((Get-ChildItem -Path $VPNprofilefile).FullName)

}
catch [System.Xml.XmlException]
{
Write-Verbose "$VPNprofilefile : $($_.toString())"
Write-Host "`nWARNING: The VPN profile XML file is not a valid
xml file or incorrectly formatted!" -ForegroundColor Red
$usage
exit
}
}else
{
Write-Host "`nWARNING: VPN profile XML file does not exist or cannot
be found!" -ForegroundColor Red
$usage
exit
}
}

# Check if VPN profile PowerShell script file exists and contains a


VPNPROFILE XML section #
if ( $VPNprofilefile -ne "" -and $FileExtension -eq ".ps1")
{
if ( (Test-Path $VPNprofilefile) )
{
if (-Not $(Select-String -Path $VPNprofilefile -Pattern "
<VPNPROFILE>") )
{
Write-Host "`nWARNING: PowerShell script file does not contain a
valid VPN profile XML section or is incorrectly formatted!" -ForegroundColor
Red
$usage
exit
}
}else
{
Write-Host "`nWARNING: PowerShell script file does not exist or
cannot be found!"-ForegroundColor Red
$usage
exit
}
}

# Define Microsoft 365 endpoints and service URLs #


$ws = "https://endpoints.office.com"
$baseServiceUrl = "https://endpoints.office.com"

# Path where client ID and latest version number will be stored #


$datapath = $Env:TEMP + "\endpoints_clientid_latestversion.txt"

# Fetch client ID and version if data file exists; otherwise create new file
#
if (Test-Path $datapath)
{
$content = Get-Content $datapath
$clientRequestId = $content[0]
$lastVersion = $content[1]

}else
{
$clientRequestId = [GUID]::NewGuid().Guid
$lastVersion = "0000000000"
@($clientRequestId, $lastVersion) | Out-File $datapath
}

# Call version method to check the latest version, and pull new data if
version number is different #
$version = Invoke-RestMethod -Uri ($ws + "/version?clientRequestId=" +
$clientRequestId)

if ($version[0].latest -gt $lastVersion)


{

Write-Host
Write-Host "A new version of Microsoft 365 worldwide commercial service
instance endpoints has been detected!" -ForegroundColor Cyan

# Write the new version number to the data file #


@($clientRequestId, $version[0].latest) | Out-File $datapath
}

# Invoke endpoints method to get the new data #


$uri = "$baseServiceUrl" + "/endpoints/worldwide?
clientRequestId=$clientRequestId"

# Invoke endpoints method to get the data for the VPN profile comparison #
$endpointSets = Invoke-RestMethod -Uri ($uri)
$Optimize = $endpointSets | Where-Object { $_.category -eq "Optimize" }
$optimizeIpsv4 = $Optimize.ips | Where-Object { ($_).contains(".") } | Sort-
Object -Unique

# Temporarily include additional IP address until Teams client update is


released
$optimizeIpsv4 += "13.107.60.1/32"

# Process PowerShell script file start #


if ($VPNprofilefile -ne "" -and $FileExtension -eq ".ps1")
{
Write-host "`nStarting PowerShell script exclusion route check...`n" -
ForegroundColor Cyan

# Clear Variables to allow re-run testing #

$ARRVPN=$null # Array to hold VPN addresses from VPN


profile PowerShell file #
$In_Opt_Only=$null # Variable to hold IP addresses that only
appear in the optimize list #
$In_VPN_Only=$null # Variable to hold IP addresses that only
appear in the VPN profile PowerShell file #

# Extract the Profile XML from the ps1 file #

$regex = '(?sm).*^*.<VPNProfile>\r?\n(.*?)\r?\n</VPNProfile>.*'

# Create xml format variable to compare with the optimize list #

$xmlbody=(Get-Content -Raw $VPNprofilefile) -replace $regex, '$1'


[xml]$VPNprofilexml="<VPNProfile>"+$xmlbody+"</VPNProfile>"

# Loop through each address found in VPNPROFILE XML section #


foreach ($Route in $VPNprofilexml.VPNProfile.Route)
{
$VPNIP=$Route.Address+"/"+$Route.PrefixSize
[array]$ARRVPN=$ARRVPN+$VPNIP
}

# In optimize address list only #


$In_Opt_Only= $optimizeIpsv4 | Where {$ARRVPN -NotContains $_}

# In VPN list only #


$In_VPN_only =$ARRVPN | Where {$optimizeIpsv4 -NotContains $_}
[array]$Inpfile = get-content $VPNprofilefile

if ($In_Opt_Only.Count -gt 0 )
{
Write-Host "Exclusion route IP addresses are unknown, missing, or
need to be updated in the VPN profile`n" -ForegroundColor Red

[int32]$insline=0

for ($i=0; $i -lt $Inpfile.count; $i++)


{
if ($Inpfile[$i] -match "</NativeProfile>")
{
$insline += $i # Record the position of the line after the
NativeProfile section ends #
}
}
$OFS = "`r`n"
foreach ($NewIP in $In_Opt_Only)
{
# Add the missing IP address(es) #
$IPInfo=$NewIP.Split("/")
$InpFile[$insline] += $OFS+" <Route>"
$InpFile[$insline] += $OFS+"
<Address>"+$IPInfo[0].Trim()+"</Address>"
$InpFile[$insline] += $OFS+"
<PrefixSize>"+$IPInfo[1].Trim()+"</PrefixSize>"
$InpFile[$insline] += $OFS+"
<ExclusionRoute>true</ExclusionRoute>"
$InpFile[$insline] += $OFS+" </Route>"
}
# Update fileName and write new PowerShell file #
$NewFileName=(Get-Item $VPNprofilefile).Basename + "-NEW.ps1"
$OutFile=$(Split-Path $VPNprofilefile -Parent)+"\"+$NewFileName
$InpFile | Set-Content $OutFile
Write-Host "Exclusion routes have been added to VPN profile and
output to a separate PowerShell script file; the original file has not been
modified`n" -ForegroundColor Green
}else
{
Write-Host "Exclusion route IP addresses are correct and up to date
in the VPN profile`n" -ForegroundColor Green
$OutFile=$VPNprofilefile
}

if ( $In_VPN_Only.Count -gt 0 )
{
Write-Host "Unknown exclusion route IP addresses have been found in the
VPN profile`n" -ForegroundColor Yellow

foreach ($OldIP in $In_VPN_Only)


{
[array]$Inpfile = get-content $Outfile
$IPInfo=$OldIP.Split("/")
Write-Host "Unknown exclusion route IP address"$IPInfo[0]"has
been found in the VPN profile - Do you wish to remove it? (Y/N)`n" -
ForegroundColor Yellow
$matchstr="<Address>"+$IPInfo[0].Trim()+"</Address>"
$DelAns=Read-host
if ($DelAns.ToUpper() -eq "Y")
{
[int32]$insline=0
for ($i=0; $i -lt $Inpfile.count; $i++)
{
if ($Inpfile[$i] -match $matchstr)
{
$insline += $i # Record the position of the
line for the string match #
}
}
# Remove entries from XML #
$InpFile[$insline-1]="REMOVETHISLINE"
$InpFile[$insline]="REMOVETHISLINE"
$InpFile[$insline+1]="REMOVETHISLINE"
$InpFile[$insline+2]="REMOVETHISLINE"
$InpFile[$insline+3]="REMOVETHISLINE"
$InpFile=$InpFile | Where-Object {$_ -ne
"REMOVETHISLINE"}

# Update filename and write new PowerShell file #


$NewFileName=(Get-Item $VPNprofilefile).Basename +
"-NEW.xml"
$OutFile=$(Split-Path $VPNprofilefile -
Parent)+"\"+$NewFileName
$Inpfile | Set-content $OutFile
Write-Host "`nAddress"$IPInfo[0]"exclusion route has
been removed from the VPN profile and output to a separate PowerShell script
file; the original file has not been modified`n" -ForegroundColor Green

}else
{
Write-Host "`nExclusion route IP address has *NOT* been
removed from the VPN profile`n" -ForegroundColor Green
}
}
}
}

# Process XML file start #


if ($VPNprofilefile -ne "" -and $FileExtension -eq ".xml")
{
Write-host "`nStarting XML file exclusion route check...`n" -
ForegroundColor Cyan

# Clear variables to allow re-run testing #


$ARRVPN=$null # Array to hold VPN addresses from the XML
file #
$In_Opt_Only=$null # Variable to hold IP Addresses that only
appear in optimize list #
$In_VPN_Only=$null # Variable to hold IP Addresses that only
appear in the VPN profile XML file #

# Extract the Profile XML from the XML file #


$regex = '(?sm).*^*.<VPNProfile>\r?\n(.*?)\r?\n</VPNProfile>.*'

# Create xml format variable to compare with optimize list #


$xmlbody=(Get-Content -Raw $VPNprofilefile) -replace $regex, '$1'
[xml]$VPNRulesxml="$xmlbody"

# Loop through each address found in VPNPROFILE file #


foreach ($Route in $VPNRulesxml.VPNProfile.Route)
{
$VPNIP=$Route.Address+"/"+$Route.PrefixSize
[array]$ARRVPN=$ARRVPN+$VPNIP
}

# In optimize address list only #


$In_Opt_Only= $optimizeIpsv4 | Where {$ARRVPN -NotContains $_}

# In VPN list only #


$In_VPN_only =$ARRVPN | Where {$optimizeIpsv4 -NotContains $_}
[System.Collections.ArrayList]$Inpfile = get-content $VPNprofilefile

if ($In_Opt_Only.Count -gt 0 )
{
Write-Host "Exclusion route IP addresses are unknown, missing,
or need to be updated in the VPN profile`n" -ForegroundColor Red

foreach ($NewIP in $In_Opt_Only)


{
# Add the missing IP address(es) #
$IPInfo=$NewIP.Split("/")
$routes += "<Route>`n"+"`t<Address>"+$IPInfo[0].Trim()+"
</Address>`n"+"`t<PrefixSize>"+$IPInfo[1].Trim()+"
</PrefixSize>`n"+"`t<ExclusionRoute>true</ExclusionRoute>`n"+"</Route>`n"
}
$inspoint = $Inpfile.IndexOf("</VPNProfile>")
$Inpfile.Insert($inspoint,$routes)

# Update filename and write new XML file #


$NewFileName=(Get-Item $VPNprofilefile).Basename + "-NEW.xml"
$OutFile=$(Split-Path $VPNprofilefile -Parent)+"\"+$NewFileName
$InpFile | Set-Content $OutFile
Write-Host "Exclusion routes have been added to VPN profile and
output to a separate XML file; the original file has not been modified`n`n"
-ForegroundColor Green

}else
{
Write-Host "Exclusion route IP addresses are correct and up to
date in the VPN profile`n" -ForegroundColor Green
$OutFile=$VPNprofilefile
}

if ( $In_VPN_Only.Count -gt 0 )
{
Write-Host "Unknown exclusion route IP addresses found in the
VPN profile`n" -ForegroundColor Yellow

foreach ($OldIP in $In_VPN_Only)


{
[array]$Inpfile = get-content $OutFile
$IPInfo=$OldIP.Split("/")
Write-Host "Unknown exclusion route IP
address"$IPInfo[0]"has been found in the VPN profile - Do you wish to remove
it? (Y/N)`n" -ForegroundColor Yellow
$matchstr="<Route>"+"<Address>"+$IPInfo[0].Trim()+"
</Address>"+"<PrefixSize>"+$IPInfo[1].Trim()+"</PrefixSize>"+"
<ExclusionRoute>true</ExclusionRoute>"+"</Route>"
$DelAns=Read-host
if ($DelAns.ToUpper() -eq "Y")
{
# Remove unknown IP address(es) #
$inspoint = $Inpfile[0].IndexOf($matchstr)
$Inpfile[0] = $Inpfile[0].Replace($matchstr,"")

# Update filename and write new XML file #


$NewFileName=(Get-Item $VPNprofilefile).Basename +
"-NEW.xml"
$OutFile=$(Split-Path $VPNprofilefile -
Parent)+"\"+$NewFileName
$Inpfile | Set-content $OutFile
Write-Host "`nAddress"$IPInfo[0]"exclusion route has
been removed from the VPN profile and output to a separate XML file; the
original file has not been modified`n" -ForegroundColor Green

}else
{
Write-Host "`nExclusion route IP address has *NOT*
been removed from the VPN profile`n" -ForegroundColor Green
}
}
}
}

Other Considerations
You should also be able to adapt this approach to include necessary exclusions for other
cloud-services that can be defined by known/static IP addresses; exclusions required for
Cisco WebEx or Zoom are good examples.

Examples
An example of a PowerShell script that can be used to create a force tunnel VPN
connection with Microsoft 365 exclusions is provided below, or refer to the guidance in
Create the ProfileXML configuration files to create the initial PowerShell script:

PowerShell

# Copyright (c) Microsoft Corporation. All rights reserved.


#
# THIS SAMPLE CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND,
# WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
# IF THIS CODE AND INFORMATION IS MODIFIED, THE ENTIRE RISK OF USE OR
RESULTS IN
# CONNECTION WITH THE USE OF THIS CODE AND INFORMATION REMAINS WITH THE
USER.

<#
.SYNOPSIS
Configures an AlwaysOn IKEv2 VPN Connection using a basic script
.DESCRIPTION
Configures an AlwaysOn IKEv2 VPN Connection with proxy PAC information
and force tunneling
.PARAMETERS
Parameters are defined in a ProfileXML object within the script itself
.NOTES
Requires at least Windows 10 Version 1803 with KB4493437, 1809 with
KB4490481, or later
.VERSION
1.0
#>
<#-- Define Key VPN Profile Parameters --#>
$ProfileName = 'Contoso VPN with Microsoft 365 Exclusions'
$ProfileNameEscaped = $ProfileName -replace ' ', '%20'

<#-- Define VPN ProfileXML --#>


$ProfileXML = '<VPNProfile>
<RememberCredentials>true</RememberCredentials>
<DnsSuffix>corp.contoso.com</DnsSuffix>
<AlwaysOn>true</AlwaysOn>
<TrustedNetworkDetection>corp.contoso.com</TrustedNetworkDetection>
<NativeProfile>
<Servers>edge1.contoso.com</Servers>
<RoutingPolicyType>ForceTunnel</RoutingPolicyType>
<NativeProtocolType>IKEv2</NativeProtocolType>
<Authentication>
<MachineMethod>Certificate</MachineMethod>
</Authentication>
</NativeProfile>
<Route>
<Address>13.107.6.152</Address>
<PrefixSize>31</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>13.107.18.10</Address>
<PrefixSize>31</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>13.107.128.0</Address>
<PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>23.103.160.0</Address>
<PrefixSize>20</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>40.96.0.0</Address>
<PrefixSize>13</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>40.104.0.0</Address>
<PrefixSize>15</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>52.96.0.0</Address>
<PrefixSize>14</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>131.253.33.215</Address>
<PrefixSize>32</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>132.245.0.0</Address>
<PrefixSize>16</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>150.171.32.0</Address>
<PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>191.234.140.0</Address>
<PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>204.79.197.215</Address>
<PrefixSize>32</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>13.107.136.0</Address>
<PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>40.108.128.0</Address>
<PrefixSize>17</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>52.104.0.0</Address>
<PrefixSize>14</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>104.146.128.0</Address>
<PrefixSize>17</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>150.171.40.0</Address>
<PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>13.107.60.1</Address>
<PrefixSize>32</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>13.107.64.0</Address>
<PrefixSize>18</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>52.112.0.0</Address>
<PrefixSize>14</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Route>
<Address>52.120.0.0</Address>
<PrefixSize>14</PrefixSize>
<ExclusionRoute>true</ExclusionRoute>
</Route>
<Proxy>

<AutoConfigUrl>http://webproxy.corp.contoso.com/proxy.pac</AutoConfigUrl>
</Proxy>
</VPNProfile>'

<#-- Convert ProfileXML to Escaped Format --#>


$ProfileXML = $ProfileXML -replace '<', '&lt;'
$ProfileXML = $ProfileXML -replace '>', '&gt;'
$ProfileXML = $ProfileXML -replace '"', '&quot;'

<#-- Define WMI-to-CSP Bridge Properties --#>


$nodeCSPURI = './Vendor/MSFT/VPNv2'
$namespaceName = "root\cimv2\mdm\dmmap"
$className = "MDM_VPNv2_01"

<#-- Define WMI Session --#>


$session = New-CimSession

<#-- Detect and Delete Previous VPN Profile --#>


try
{
$deleteInstances = $session.EnumerateInstances($namespaceName,
$className, $options)
foreach ($deleteInstance in $deleteInstances)
{
$InstanceId = $deleteInstance.InstanceID
if ("$InstanceId" -eq "$ProfileNameEscaped")
{
$session.DeleteInstance($namespaceName, $deleteInstance,
$options)
$Message = "Removed $ProfileName profile $InstanceId"
Write-Host "$Message"
} else {
$Message = "Ignoring existing VPN profile $InstanceId"
Write-Host "$Message"
}
}
}
catch [Exception]
{
$Message = "Unable to remove existing outdated instance(s) of
$ProfileName profile: $_"
Write-Host "$Message"
exit
}

<#-- Create VPN Profile --#>


try
{
$newInstance = New-Object
Microsoft.Management.Infrastructure.CimInstance $className, $namespaceName
$property =
[Microsoft.Management.Infrastructure.CimProperty]::Create("ParentID",
"$nodeCSPURI", 'String', 'Key')
$newInstance.CimInstanceProperties.Add($property)
$property =
[Microsoft.Management.Infrastructure.CimProperty]::Create("InstanceID",
"$ProfileNameEscaped", 'String', 'Key')
$newInstance.CimInstanceProperties.Add($property)
$property =
[Microsoft.Management.Infrastructure.CimProperty]::Create("ProfileXML",
"$ProfileXML", 'String', 'Property')
$newInstance.CimInstanceProperties.Add($property)

$session.CreateInstance($namespaceName, $newInstance, $options)


$Message = "Created $ProfileName profile."
Write-Host "$Message"
Write-Host "$ProfileName profile summary:"
$session.EnumerateInstances($namespaceName, $className, $options)
}
catch [Exception]
{
$Message = "Unable to create $ProfileName profile: $_"
Write-Host "$Message"
exit
}

$Message = "Script Complete"


Write-Host "$Message"

An example of an Intune-ready XML file that can be used to create a force tunnel VPN
connection with Microsoft 365 exclusions is provided below, or refer to the guidance in
Create the ProfileXML configuration files to create the initial XML file.

7 Note

This XML is formatted for use with Intune and cannot contain any carriage returns
or whitespace.

XML
<VPNProfile><RememberCredentials>true</RememberCredentials>
<DnsSuffix>corp.contoso.com</DnsSuffix><AlwaysOn>true</AlwaysOn>
<TrustedNetworkDetection>corp.contoso.com</TrustedNetworkDetection>
<NativeProfile><Servers>edge1.contoso.com</Servers>
<RoutingPolicyType>ForceTunnel</RoutingPolicyType>
<NativeProtocolType>IKEv2</NativeProtocolType><Authentication>
<MachineMethod>Certificate</MachineMethod></Authentication></NativeProfile>
<Route><Address>13.107.6.152</Address><PrefixSize>31</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>13.107.18.10</Address><PrefixSize>31</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>13.107.128.0</Address><PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>23.103.160.0</Address><PrefixSize>20</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>40.96.0.0</Address><PrefixSize>13</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>40.104.0.0</Address><PrefixSize>15</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>52.96.0.0</Address><PrefixSize>14</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>131.253.33.215</Address><PrefixSize>32</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>132.245.0.0</Address><PrefixSize>16</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>150.171.32.0</Address><PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>191.234.140.0</Address><PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>204.79.197.215</Address><PrefixSize>32</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>13.107.136.0</Address><PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>40.108.128.0</Address><PrefixSize>17</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>52.104.0.0</Address><PrefixSize>14</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>104.146.128.0</Address><PrefixSize>17</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>150.171.40.0</Address><PrefixSize>22</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>13.107.60.1</Address><PrefixSize>32</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>13.107.64.0</Address><PrefixSize>18</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>52.112.0.0</Address><PrefixSize>14</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Route>
<Address>52.120.0.0</Address><PrefixSize>14</PrefixSize>
<ExclusionRoute>true</ExclusionRoute></Route><Proxy>
<AutoConfigUrl>http://webproxy.corp.contoso.com/proxy.pac</AutoConfigUrl>
</Proxy></VPNProfile>
About Always On VPN
Article • 05/22/2023

Applies to: Windows Server 2022, Windows Server 2019, Windows Server 2016,
Windows 10+

Always On VPN allows you to:

Create advanced scenarios by integrating Windows operating systems and third-


party solutions. For a list of supported integrations, see Supported integrations.

Maintain network security, restricting connection by traffic types, applications, and


authentication methods. For a list of Always On VPN security features, see Security
features.

Configure auto-triggering for user and device authenticated connections. For


more information, see Connectivity features.

Control your network by creating routing policies at a granular level; even down
to the individual application. For more information, see Networking features.

Configure your VPN settings with a standard XML profile (ProfileXML) which is
defined by an industry standard configuration template. You can deploy and
manage your VPN settings with Windows PowerShell, Microsoft Endpoint
Configuration Manager, Intune, Windows Configuration Designer, or any third-
party mobile device management (MDM) tool.

Supported integrations
Always On VPN supports domain-joined, nondomain-joined (workgroup), or Azure AD–
joined devices to allow for both enterprise and BYOD scenarios. Always On VPN is
available in all Windows editions, and the platform features are available to third parties
by way of UWP VPN plug-in support.

Always On VPN supports integration with the following platforms:

Windows Information Protection (WIP). Integration with WIP allows network


policy enforcement to determine whether traffic is permitted to go over the VPN. If
the user profile is active and WIP policies are applied, Always On VPN is
automatically triggered to connect. Also, when you use WIP, there's no need to
specify AppTriggerList and TrafficFilterList rules separately in the VPN profile
(unless you want more advanced configuration) because the WIP policies and
application lists automatically take effect.

Windows Hello for Business. Always On VPN natively supports Windows Hello for
Business in certificate-based authentication mode. The native Windows Hello
support provides a seamless single sign-on experience for both sign-in to the
machine, as well as connection to the VPN. No secondary authentication (user
credentials) is needed for the VPN connection.

Microsoft Azure conditional access platform. The Always On VPN client can
integrate with the Azure conditional access platform to enforce multifactor
authentication (MFA), device compliance, or a combination of the two. When
compliant with conditional access policies, Azure Active Directory (Azure AD) issues
a short-lived (by default, sixty minutes) IP Security (IPsec) authentication certificate.
The IPSec certificate can then be used to authenticate to the VPN gateway. Device
compliance uses Configuration Manager/Intune compliance policies, which can
include the device health attestation state as part of the connection compliance
check. For more details, see VPN and conditional access

Azure AD Multi-Factor Authentication platform. When combined with Remote


Authentication Dial-In User Service (RADIUS) services and the Network Policy
Server (NPS) extension for Azure AD Multi-Factor Authentication, VPN
authentication can use strong MFA.

Third-party VPN plug-ins. With the Universal Windows Platform (UWP), third-
party VPN providers can create a single application for the full range of Windows
devices. The UWP provides a guaranteed core API layer across devices, eliminating
the complexity of and problems often associated with writing kernel-level drivers.
Currently, Windows UWP VPN plug-ins exist for Pulse Secure , F5 Access ,
Check Point Capsule VPN , FortiClient , SonicWall Mobile Connect , and
GlobalProtect .

Security features
Always On VPN provides connectivity to corporate resources by using tunnel policies
that require authentication and encryption until they reach the VPN gateway. By default,
the tunnel sessions terminate at the VPN gateway, which also functions as the IKEv2
gateway, providing end-to-edge security.

For details about standard VPN authentication options, see VPN authentication options.

Always On VPN supports the following security features:


Industry-standard IKEv2 VPN protocol support. The Always On VPN client
supports IKEv2, one of today's most widely used industry-standard tunneling
protocols. This compatibility maximizes interoperability with third-party VPN
gateways.

Interoperability with third-party IKEv2 VPN gateways. The Always On VPN client
supports interoperability with third-party IKEv2 VPN gateways. You can also
achieve interoperability with third-party VPN gateways by using a UWP VPN plug-
in combined with a custom tunneling type without sacrificing Always On VPN
platform features and benefits.

7 Note

Consult with your gateway or third-party back-end appliance vendor on


configurations and compatibility with Always On VPN and Device Tunnel
using IKEv2.

Fall back to SSTP from IKEv2. You can configure fall back for clients that are
behind firewalls or proxy servers by using the automatic tunnel/protocol type
within the VPN profile.

7 Note

User Tunnel supports SSTP and IKEv2, and Device Tunnel supports IKEv2 only,
with no support for SSTP fallback.

Support for machine certificate authentication. The IKEv2 protocol type available
as part of the Always On VPN platform specifically supports the use of machine or
computer certificates for VPN authentication.

7 Note

IKEv2 is the only supported protocol for Device Tunnel and there is no
support option for SSTP fallback. For more information see, Configure an
Always On VPN device tunnel.

Traffic and app filters. With traffic and app firewall rules, you can specify client-
side policies that determine which traffic and apps are allowed to connect to the
VPN interface.

Two types of filtering rules are available:


App-based rules. App-based firewall rules are based on a list of specified
applications so that only traffic originating from these apps are permitted to go
over the VPN interface.

Traffic-based rules. Traffic-based firewall rules are based on network


requirements like ports, addresses, and protocols. Use these rules only for traffic
that matches these specific conditions are permitted to go over the VPN
interface.

7 Note

These rules apply only to traffic outbound from the device. Use of traffic filters
blocks inbound traffic from the corporate network to the client.

VPN conditional access. Conditional access and device compliance can require
managed devices to meet standards before they can connect to the VPN. VPN
conditional access allows you to restrict the VPN connections to the devices whose
client authentication certificate contains the Azure AD Conditional Access OID of
1.3.6.1.4.1.311.87 . To learn how to restrict the VPN connections directly on the

NPS server, see Configure VPN conditional access on the Network Policy Server. To
learn how to restrict the VPN connections with Azure Active Directory (Azure AD)
conditional access, see Conditional access for VPN connectivity using Azure AD.

Limit remote access to specific users and devices. You can configure Always On
VPN to support granular authorization when using RADIUS, which includes the use
of security groups to control VPN access.

Define accessible management servers before user sign-in. Use the Device
Tunnel feature (available in version 1709 – for IKEv2 only) in the VPN profile
combined with traffic filters to control which management systems on the
corporate network are accessible through the Device Tunnel.

7 Note

If you turn on traffic filters in the Device Tunnel profile, then the Device
Tunnel denies inbound traffic (from the corporate network to the client).

Per-app VPN. Per-app VPN is like having an app-based traffic filter, but it goes
farther to combine application triggers with an app-based traffic filter so that VPN
connectivity is constrained to a specific application as opposed to all applications
on the VPN client. The feature automatically initiates when the app starts.
Customized IPsec cryptography algorithms. Always On VPN supports the use of
both RSA and elliptic curve cryptography–based custom cryptographic algorithms
to meet stringent government or organizational security policies.

Native Extensible Authentication Protocol (EAP) support. Always On VPN natively


supports EAP, which allows you to use a diverse set of Microsoft and third-party
EAP types as part of the authentication workflow. EAP provides secure
authentication based on the following authentication types:
Username and password
Smart card (both physical and virtual)
User certificates
Windows Hello for Business
MFA support by way of EAP RADIUS integration

The application vendor controls third-party UWP VPN plug-in authentication


methods, although they have an array of available options, including custom
credential types and OTP support.

Windows Hello for Business two-factor authentication on PCs and mobile


devices. In Windows 10, Windows Hello for Business replaces passwords by
providing strong two-factor authentication on PCs and mobile devices. For more
information, see Enabling Remote Access with Windows Hello for Business in
Windows 10

Azure Multifactor Authentication (MFA). Azure AD Multi-Factor Authentication


has cloud and on-premises versions that you can integrate with the Windows VPN
authentication mechanism. For more information, see Integrate RADIUS
authentication with Azure AD Multi-Factor Authentication Server.

Trusted Platform Module (TPM) Key Attestation. A user certificate that has a
TPM-attested key provides higher security assurance, backed up by non-
exportability, anti-hammering, and isolation of keys provided by the TPM.

For more information about TPM key attestation in Windows 10, see TPM Key
Attestation.

Connectivity features
Always On VPN supports the following connectivity features:

Application auto-triggering. You can configure Always On VPN to support auto-


triggering based on application launch or namespace resolution requests. For
more information on how to configure auto-triggering, see VPN auto-triggered
profile options.

Name-based auto-triggering. With Always On VPN, you can define rules so that
specific domain name queries trigger the VPN connection. Windows devices
support name-based triggering for domain-joined and nondomain-joined
machines (previously, only nondomain-joined machines were supported).

Trusted network detection. Always On VPN includes this feature to ensure that
VPN connectivity isn't triggered if a user is connected to a trusted network within
the corporate boundary. You can combine this feature with any of the triggering
methods mentioned earlier to provide a seamless "only connect when needed"
user experience.

Device Tunnel. Always On VPN gives you the ability to create a dedicated VPN
profile for device or machine. Unlike User Tunnel, which only connects after a user
logs on to the device or machine, Device Tunnel allows the VPN to establish
connectivity before user sign-in. Both Device Tunnel and User Tunnel operate
independently with their VPN profiles, can be connected at the same time, and can
use different authentication methods and other VPN configuration settings as
appropriate. For information on how to configure a device tunnel, including
information on how to use manage-out to dynamically register client IP addresses
in DNS, see Configure an Always On VPN device tunnel.

7 Note

Device Tunnel can only be configured on domain-joined devices running


Windows 10 Enterprise or Education version 1709 or later. There's no support
for third-party control of the Device Tunnel.

Connectivity Assistant Always On VPN is fully integrated with the native Network
Connectivity Assistant and provides connectivity status from the View All Networks
interface. With the advent of Windows 10 Creators Update (version 1703), VPN
connection status and VPN connection control for User Tunnel are available
through the Network flyout (for the Windows built-in VPN client).

Networking features
Always On VPN supports the following networking features:
Dual-stack support for IPv4 and IPv6. Always On VPN natively supports the use of
both IPv4 and IPv6 in a dual-stack approach. It has no specific dependency on one
protocol over the other, which allows for maximum IPv4/IPv6 application
compatibility combined with support for future IPv6 networking needs.

Application-specific routing policies. In addition to defining global VPN


connection routing policies for internet and intranet traffic separation, it's possible
to add routing policies to control the use of split tunnel or force tunnel
configurations on a per-application basis. This option gives you more granular
control over which apps are allowed to interact with which resources through the
VPN tunnel.

Exclusion routes. Always On VPN supports the ability to specify exclusion routes
that specifically control routing behavior to define which traffic should traverse the
VPN only and not go over the physical network interface.

7 Note

Exclusion routes work for traffic within the same subnet as the client such as
LinkLocal. Exclusion routes only work in a Split Tunnel setup.

Support for multiple domains and forests. The Always On VPN platform has no
dependency on Active Directory Domain Services (AD DS) forests or domain
topology (or associated functional/schema levels) because it doesn't require the
VPN client to be domain joined to function. Group Policy is therefore not a
dependency to define VPN profile settings because you don't use it during client
configuration. Where Active Directory authorization integration is required, you
can achieve it through RADIUS as part of the EAP authentication and authorization
process.

Name resolution of corporate resources using short-name, fully qualified domain


name (FQDN), and DNS suffix.Always On VPN can natively define one or more DNS
suffixes as part of the VPN connection and IP address assignment process,
including corporate resource name resolution for short names, FQDNs, or entire
DNS namespaces. Always On VPN also supports the use of Name Resolution Policy
Tables to provide namespace-specific resolution granularity.

7 Note

Avoid the use of Global Suffixes as they interfere with shortname resolution
when using Name Resolution Policy tables.
High availability features
The following are more options for high availability.

Server resilience and load balancing. In environments that require high availability or
support large numbers of requests, you can increase the performance and resiliency of
Remote Access by configuring load balancing between Network Policy Servers (NPS)
and by enabling Remote Access server clustering.

Geographic site resilience. For IP-based geolocation, you can use Global Traffic
Manager with DNS in Windows Server. For more robust geographic load balancing, you
can use Global Server Load Balancing solutions, such as Microsoft Azure Traffic
Manager.

Next steps
Install Remote Access as a VPN server

Tutorial: Deploy Always On VPN

VPN security features: This topic provides an overview of VPN security guidelines
for LockDown VPN, Windows Information Protection (WIP) integration with VPN,
and traffic filters.

VPN auto-triggered profile options: This topic provides an overview of VPN auto-
triggered profile options, such as app trigger, name-based trigger, and Always On.

Troubleshoot Always On VPN


DirectAccess
Article • 06/20/2023

Applies to: Windows Server 2022, Windows Server 2019, Windows Server 2016

) Important

Microsoft highly recommends that you use Always On VPN instead of DirectAccess
for new deployments. For more information, see Always on VPN.

You can use this topic for a brief overview of DirectAccess, including the server and
client operating systems that support DirectAccess, and for links to additional
DirectAccess documentation for Windows Server.

7 Note

In addition to this topic, the following DirectAccess documentation is available.

DirectAccess Deployment Paths in Windows Server


Prerequisites for Deploying DirectAccess
DirectAccess Unsupported Configurations
DirectAccess Test Lab Guides
DirectAccess Known Issues
DirectAccess Capacity Planning
DirectAccess Offline Domain Join
Troubleshooting DirectAccess
Deploy a Single DirectAccess Server Using the Getting Started Wizard
Deploy a Single DirectAccess Server with Advanced Settings
Add DirectAccess to an Existing Remote Access (VPN) Deployment

DirectAccess allows connectivity for remote users to organization network resources


without the need for traditional Virtual Private Network (VPN) connections. With
DirectAccess connections, remote client computers are always connected to your
organization - there is no need for remote users to start and stop connections, as is
required with VPN connections. In addition, your IT administrators can manage
DirectAccess client computers whenever they are running and Internet connected.
) Important

Do not attempt to deploy Remote Access on a virtual machine (VM) in Microsoft


Azure. Using Remote Access in Microsoft Azure is not supported. You cannot use
Remote Access in an Azure VM to deploy VPN, DirectAccess, or any other Remote
Access feature in Windows Server. For more information, see Microsoft server
software support for Microsoft Azure virtual machines .

DirectAccess provides support only for domain-joined clients that include operating
system support for DirectAccess.

The following client operating systems support DirectAccess.

Windows 11 Enterprise

Windows 10 Enterprise

Windows 10 Enterprise 2015 Long Term Servicing Branch (LTSB)

Windows 8.1 Enterprise


Overview of file sharing using the SMB
3 protocol in Windows Server
Article • 01/26/2023

Applies to: Windows Server 2022, Windows Server 2019, Windows Server 2016,
Windows Server 2012 R2, Windows Server 2012

This topic describes the SMB 3 feature in Windows Server 2019, Windows Server 2016,
Windows Server 2012 R2, and Windows Server 2012—practical uses for the feature, the
most significant new or updated functionality in this version compared to previous
versions, and the hardware requirements. SMB is also a fabric protocol used by
software-defined data center (SDDC) solutions such as Storage Spaces Direct, Storage
Replica, and others. SMB version 3.0 was introduced with Windows Server 2012 and has
been incrementally improved in subsequent releases.

Feature description
The Server Message Block (SMB) protocol is a network file sharing protocol that allows
applications on a computer to read and write to files and to request services from server
programs in a computer network. The SMB protocol can be used on top of its TCP/IP
protocol or other network protocols. Using the SMB protocol, an application (or the user
of an application) can access files or other resources at a remote server. This allows
applications to read, create, and update files on the remote server. SMB can also
communicate with any server program that is set up to receive an SMB client request.
SMB is a fabric protocol that is used by Software-defined Data Center (SDDC)
computing technologies, such as Storage Spaces Direct, Storage Replica. For more
information, see Windows Server software-defined datacenter.

Practical applications
This section discusses some new practical ways to use the new SMB 3.0 protocol.

File storage for virtualization (Hyper-V™ over SMB). Hyper-V can store virtual
machine files, such as configuration, Virtual hard disk (VHD) files, and snapshots, in
file shares over the SMB 3.0 protocol. This can be used for both stand-alone file
servers and clustered file servers that use Hyper-V together with shared file
storage for the cluster.
Microsoft SQL Server over SMB. SQL Server can store user database files on SMB
file shares. Currently, this is supported with SQL Server 2008 R2 for stand-alone
SQL servers. Upcoming versions of SQL Server will add support for clustered SQL
servers and system databases.
Traditional storage for end-user data. The SMB 3.0 protocol provides
enhancements to the Information Worker (or client) workloads. These
enhancements include reducing the application latencies experienced by branch
office users when accessing data over wide area networks (WAN) and protecting
data from eavesdropping attacks.

7 Note

If you need to conserve storage space on an SMB file share, consider using Azure
File Sync with cloud tiering enabled. This allows you to cache your most frequently
accessed files locally and tier your least frequently accessed files to the cloud,
saving local storage space while maintaining performance. For details, see Planning
for an Azure File Sync deployment.

New and changed functionality


The following sections describe functionality that was added in SMB 3 and subsequent
updates.

Features added in Windows Server 2019 and


Windows 10, version 1809
Feature/functionality New or Summary
updated

Ability to require New To provide some added assurance that writes to a file share
write-through to disk make it all the way through the software and hardware stack
on file shares that to the physical disk prior to the write operation returning as
aren't continuously completed, you can enable write-through on the file share
available using either the NET USE /WRITETHROUGH command or the
New-SMBMapping -UseWriteThrough PowerShell cmdlet. There's
some amount of performance hit to using write-through; see
the blog post Controlling write-through behaviors in SMB
for further discussion.
Features added in Windows Server, version
1709, and Windows 10, version 1709
Feature/functionality New or Summary
updated

Guest access to file New The SMB client no longer allows the following actions: Guest
shares is disabled account access to a remote server; Fallback to the Guest
account after invalid credentials are provided. For details, see
Guest access in SMB2 disabled by default in Windows .

SMB global mapping New Maps a remote SMB share to a drive letter that is accessible
to all users on the local host, including containers. This is
required to enable container I/O on the data volume to
traverse the remote mount point. Be aware that when using
SMB global mapping for containers, all users on the
container host can access the remote share. Any application
running on the container host also have access to the
mapped remote share. For details, see Container Storage
Support with Cluster Shared Volumes (CSV), Storage Spaces
Direct, SMB Global Mapping .

SMB dialect control New You can now set registry values to control the minimum SMB
version (dialect) and maximum SMB version used. For details,
see Controlling SMB Dialects .

Features added in SMB 3.1.1 with Windows


Server 2016 and Windows 10, version 1607
Feature/functionality New or Summary
updated

SMB Encryption Updated SMB 3.1.1 encryption with Advanced Encryption


Standard-Galois/Counter Mode (AES-GCM) is
faster than SMB Signing or previous SMB
encryption using AES-CCM.

Directory Caching New SMB 3.1.1 includes enhancements to directory


caching. Windows clients can now cache much
larger directories, approximately 500K entries.
Windows clients will attempt directory queries with
1 MB buffers to reduce round trips and improve
performance.
Feature/functionality New or Summary
updated

Pre-Authentication Integrity New In SMB 3.1.1, pre-authentication integrity provides


improved protection from a man-in-the-middle
attacker tampering with SMB’s connection
establishment and authentication messages. For
details, see SMB 3.1.1 Pre-authentication integrity
in Windows 10.

SMB Encryption Improvements New SMB 3.1.1 offers a mechanism to negotiate the
crypto algorithm per connection, with options for
AES-128-CCM and AES-128-GCM. AES-128-GCM is
the default for new Windows versions, while older
versions will continue to use AES-128-CCM.

Rolling cluster upgrade support New Enables rolling cluster upgrades by letting SMB
appear to support different max versions of SMB
for clusters in the process of being upgraded. For
more details on letting SMB communicate using
different versions (dialects) of the protocol, see the
blog post Controlling SMB Dialects .

SMB Direct client support in New Windows 10 Enterprise, Windows 10 Education,


Windows 10 and Windows 10 Pro for Workstations now include
SMB Direct client support.

Native support for New Adds native support for querying the normalized
FileNormalizedNameInformation name of a file. For details, see
API calls FileNormalizedNameInformation.

For additional details, see the blog post What’s new in SMB 3.1.1 in the Windows Server
2016 Technical Preview 2.

Features added in SMB 3.02 with Windows


Server 2012 R2 and Windows 8.1
Feature/functionality New or Summary
updated
Feature/functionality New or Summary
updated

Automatic rebalancing New Improves scalability and manageability for Scale-Out File
of Scale-Out File Servers. SMB client connections are tracked per file share
Server clients (instead of per server), and clients are then redirected to the
cluster node with the best access to the volume used by the
file share. This improves efficiency by reducing redirection
traffic between file server nodes. Clients are redirected
following an initial connection and when cluster storage is
reconfigured.

Performance over Updated Windows 8.1 and Windows 10 provide improved CopyFile
WAN SRV_COPYCHUNK over SMB support when you use File
Explorer for remote copies from one location on a remote
machine to another copy on the same server. You will copy
only a small amount of metadata over the network (1/2KiB
per 16MiB of file data is transmitted). This results in a
significant performance improvement. This is an OS-level and
File Explorer-level distinction for SMB.

SMB Direct Updated Improves performance for small I/O workloads by increasing
efficiency when hosting workloads with small I/Os (such as
an online transaction processing (OLTP) database in a virtual
machine). These improvements are evident when using
higher speed network interfaces, such as 40 Gbps Ethernet
and 56 Gbps InfiniBand.

SMB bandwidth limits New You can now use Set-SmbBandwidthLimit to set bandwidth
limits in three categories: VirtualMachine (Hyper-V over SMB
traffic), LiveMigration (Hyper-V Live Migration traffic over
SMB), or Default (all other types of SMB traffic).

For more information on new and changed SMB functionality in Windows Server 2012
R2, see What's New in SMB in Windows Server.

Features added in SMB 3.0 with Windows


Server 2012 and Windows 8
Feature/functionality New or Summary
updated
Feature/functionality New or Summary
updated

SMB Transparent New Enables administrators to perform hardware or software


Failover maintenance of nodes in a clustered file server without
interrupting server applications storing data on these file
shares. Also, if a hardware or software failure occurs on a
cluster node, SMB clients transparently reconnect to another
cluster node without interrupting server applications that are
storing data on these file shares.

SMB Scale Out New Support for multiple SMB instances on a Scale-Out File
Server. Using Cluster Shared Volumes (CSV) version 2,
administrators can create file shares that provide
simultaneous access to data files, with direct I/O, through all
nodes in a file server cluster. This provides better utilization
of network bandwidth and load balancing of the file server
clients, and optimizes performance for server applications.

SMB Multichannel New Enables aggregation of network bandwidth and network fault
tolerance if multiple paths are available between the SMB
client and server. This enables server applications to take full
advantage of all available network bandwidth and be resilient
to a network failure.

SMB Multichannel in SMB 3 contributes to a substantial


increase in performance compared to previous versions of
SMB.

SMB Direct New Supports the use of network adapters that have RDMA
capability and can function at full speed with very low
latency, while using very little CPU. For workloads such as
Hyper-V or Microsoft SQL Server, this enables a remote file
server to resemble local storage.

SMB Direct in SMB 3 contributes to a substantial increase in


performance compared to previous versions of SMB.

Performance Counters New The new SMB performance counters provide detailed, per-
for server applications share information about throughput, latency, and I/O per
second (IOPS), allowing administrators to analyze the
performance of SMB file shares where their data is stored.
These counters are specifically designed for server
applications, such as Hyper-V and SQL Server, which store
files on remote file shares.
Feature/functionality New or Summary
updated

Performance Updated Both the SMB client and server have been optimized for
optimizations small random read/write I/O, which is common in server
applications such as SQL Server OLTP. In addition, large
Maximum Transmission Unit (MTU) is turned on by default,
which significantly enhances performance in large sequential
transfers, such as SQL Server data warehouse, database
backup or restore, deploying or copying virtual hard disks.

SMB-specific Windows New With Windows PowerShell cmdlets for SMB, an administrator
PowerShell cmdlets can manage file shares on the file server, end to end, from
the command line.

SMB Encryption New Provides end-to-end encryption of SMB data and protects
data from eavesdropping occurrences on untrusted
networks. Requires no new deployment costs, and no need
for Internet Protocol security (IPsec), specialized hardware, or
WAN accelerators. It may be configured on a per share basis,
or for the entire file server, and may be enabled for a variety
of scenarios where data traverses untrusted networks.

SMB Directory Leasing New Improves application response times in branch offices. With
the use of directory leases, roundtrips from client to server
are reduced since metadata is retrieved from a longer living
directory cache. Cache coherency is maintained because
clients are notified when directory information on the server
changes. Directory leases work with scenarios for
HomeFolder (read/write with no sharing) and Publication
(read-only with sharing).

Performance over New Directory opportunistic locks (oplocks) and oplock leases
WAN were introduced in SMB 3.0. For typical office/client
workloads, oplocks/leases are shown to reduce network
round trips by approximately 15%.

In SMB 3, the Windows implementation of SMB has been


refined to improve the caching behavior on the client as well
as the ability to push higher throughputs.

SMB 3 features improvements to the CopyFile() API, as well


as to associated tools such as Robocopy, to push significantly
more data over the network.
Feature/functionality New or Summary
updated

Secure dialect New Helps protect against man-in-the-middle attempt to


negotiation downgrade dialect negotiation. The idea is to prevent an
eavesdropper from downgrading the initially negotiated
dialect and capabilities between the client and the server. For
details, see SMB3 Secure Dialect Negotiation. Note that this
has been superceded by the SMB 3.1.1 Pre-authentication
integrity in Windows 10 feature in SMB 3.1.1.

Hardware requirements
SMB Transparent Failover has the following requirements:

A failover cluster running Windows Server 2012 or Windows Server 2016 with at
least two nodes configured. The cluster must pass the cluster validation tests
included in the validation wizard.
File shares must be created with the Continuous Availability (CA) property, which is
the default.
File shares must be created on CSV volume paths to attain SMB Scale-Out.
Client computers must be running Windows® 8 or Windows Server 2012, both of
which include the updated SMB client that supports continuous availability.

7 Note

Down-level clients can connect to file shares that have the CA property, but
transparent failover will not be supported for these clients.

SMB Multichannel has the following requirements:

At least two computers running Windows Server 2012 are required. No extra
features need to be installed—the technology is on by default.
For information on recommended network configurations, see the See Also section
at the end of this overview topic.

SMB Direct has the following requirements:

At least two computers running Windows Server 2012 are required. No extra
features need to be installed—the technology is on by default.
Network adapters with RDMA capability are required. Currently, these adapters are
available in three different types: iWARP, Infiniband, or RoCE (RDMA over
Converged Ethernet).
More information
The following list provides additional resources on the web about SMB and related
technologies in Windows Server 2012 R2, Windows Server 2012, and Windows Server
2016.

Storage in Windows Server


Scale-Out File Server for Application Data
Improve Performance of a File Server with SMB Direct
Deploy Hyper-V over SMB
Deploy SMB Multichannel
Deploying Fast and Efficient File Servers for Server Applications
SMB: Troubleshooting Guide
SMB Direct
Article • 08/03/2023

Applies to: Windows Server 2022, Windows Server 2019, Windows Server 2016,
Windows Server 2012 R2, Windows Server 2012, Azure Stack HCI version 21H2

Windows Server includes a feature called SMB Direct, which supports the use of network
adapters that have Remote Direct Memory Access (RDMA) capability. Network adapters
that have RDMA can function at full speed with lower latency without compromising
CPU utilization. For workloads such as Hyper-V or Microsoft SQL Server, this enables a
remote file server to resemble local storage. SMB Direct is automatically configured and
enabled by default in Windows Server 2012 and future iterations.

Using SMB Direct provides:

Increased throughput: Leverages the full throughput of high speed networks


where the network adapters coordinate the transfer of large amounts of data at
line speed.
Low latency: Provides fast responses to network requests, which makes remote file
storage feel as if it's directly attached block storage.
Low CPU utilization: Uses fewer CPU cycles when transferring data over the
network, which leaves more power available to server applications.

You can use SMB Direct in a failover cluster; however, you need to make sure that the
cluster networks used for client access are adequate for SMB Direct. Failover clustering
supports using multiple networks for client access, along with network adapters that are
RSS (Receive Side Scaling)-capable and RDMA-capable.

7 Note

You can use SMB Direct on the Hyper-V management operating system to support
using Hyper-V over SMB, and to provide storage to a virtual machine that uses the
Hyper-V storage stack. However, RDMA-capable network adapters aren't directly
exposed to a Hyper-V client. If you connect an RDMA-capable network adapter to a
virtual switch, the virtual network adapters from the switch won't be RDMA-
capable.

Requirements
SMB Direct requires the following:

One or more network adapters with RDMA capability.


At least two computers running one or more of the following operating systems:
Windows Server 2012 and later.
Windows 10 Enterprise and later.
Windows 10 Education and later.
Windows 10 Pro and later.

7 Note

Windows 10 and Windows 11 family are restricted to client-only and can't act as an
SMB Direct server.

SMB Multichannel
SMB Multichannel is the feature responsible for detecting the RDMA capabilities of
network adapters to enable SMB Direct. Without SMB Multichannel, SMB uses regular
TCP/IP with the RDMA-capable network adapters (all network adapters provide a TCP/IP
stack along with the new RDMA stack).

With SMB Multichannel, SMB detects whether a network adapter has RDMA capability,
and creates multiple RDMA connections for that single session (two per interface). This
allows SMB to use the high throughput, low latency, and low CPU utilization offered by
RDMA-capable network adapters. It also offers fault tolerance if you're using multiple
RDMA interfaces.

You can team RDMA-capable network adapters using Switch Embedded Teaming (SET)
starting with Windows Server 2016. After at least one RDMA network connection is
created, the TCP/IP connection used for the original protocol negotiation is no longer
used. However, the TCP/IP connection is retained in case the RDMA network
connections fail.

Disabling SMB Multichannel also disables SMB Direct. Since SMB Multichannel detects
network adapter capabilities and determines whether a network adapter is RDMA-
capable, SMB Direct can't be used by the client if SMB Multichannel is disabled.

SMB Encryption
Beginning in Windows Server 2022 and Windows 11, SMB Direct now supports
encryption. Previously, enabling SMB encryption disabled direct data placement, making
RDMA performance as slow as TCP. Now data is encrypted before placement, leading to
relatively minor performance degradation while adding AES-128 and AES-256 protected
packet privacy. For more information on configuring SMB encryption, see SMB security
enhancements.

Furthermore, Windows Server failover clusters now support granular control of


encrypting intra-node storage communications for Cluster Shared Volumes (CSV) and
the storage bus layer (SBL). This means that when using Storage Spaces Direct and SMB
Direct, you can decide to encrypt east-west communications within the cluster itself for
higher security.

Disabling and enabling SMB Direct features


The SMB client automatically detects and uses multiple network connections if an
appropriate configuration is identified. As SMB Direct is enabled by default, once
disabled, it needs to be manually re-enabled whenever needed.

Disable

Typically, you won't need to disable SMB Direct, however, you can disable it along
with its features, by running the following Windows PowerShell commands.

To disable SMB Direct, type:

PowerShell

Disable-WindowsOptionalFeature -Online -FeatureName SMBDirect

To disable SMB Multichannel on the server-side, type:

PowerShell

Set-SmbServerConfiguration -EnableMultiChannel $false

To disable SMB Multichannel on the client-side, type:

PowerShell

Set-SmbClientConfiguration -EnableMultiChannel $false

To disable RDMA for a specific interface, type:


PowerShell

Disable-NetAdapterRdma <name>

To disable RDMA for all interfaces, type:

PowerShell

Set-NetOffloadGlobalSetting -NetworkDirect Disabled

When you disable RDMA on either the client or the server, the systems can't use it.
Network Direct is the internal name for Windows Server basic networking support
for RDMA interfaces.

To verify which state of operability SMB Direct is currently configured to, run the
following cmdlet:

PowerShell

Get-WindowsOptionalFeature -Online -FeatureName SMBDirect

Testing SMB Direct


You can test the performance of SMB Direct by measuring the throughput when running
a large file copy. Prior to testing, verify that the network adapter supports RDMA using
PowerShell.

On the server-side, type:

PowerShell

Get-SmbServerNetworkInterface

On the client-side, type:

PowerShell

Get-SmbClientNetworkInterface

Once the network adapter is verified RDMA-capable, perform the following test:
1. Disable RDMA on the network adapter, see Disabling and Enabling SMB Direct
features.
2. Measure the amount of time taken to run a large file copy without using SMB
Direct.
3. Re-enable RDMA on the network adapter, perform the same file copy, and then
compare the two results.
4. To avoid the impact of caching, perform the following:
a. Copy a large amount of data (more data than memory is capable of handling).
b. Copy the data twice, with the first copy as practice and then timing the second
copy.
c. Restart both the server and the client before each test to ensure they operate
under similar conditions.

Additionally, you can observe the performance counters during testing using the same
scenario utilizing the Performance Monitor tool by performing the following:

1. Select Start, type perfmon, hit Enter .


2. In the left pane, under Monitoring Tools > select Performance Monitor.
3. In the right pane, select the green "+" icon to add a new counter.
4. In the Add Counters dialog box, expand SMB Direct Connection.
5. Select both Bytes RDMA Read/sec and Bytes RDMA Written/sec, select Add, then
select OK.

SMB Direct failover capability


Here's how to confirm the failover capability of SMB Direct:

1. Ensure that SMB Direct is functioning in a multiple network adapter configuration.


2. Run a large file copy. During the copy process, simulate a failure of one of the
network paths by disconnecting one of the cables or by disabling one of the
network adapters.
3. Confirm that the file copying continues using one of the remaining network
adapters, and that there are no file copy errors.

 Tip

To avoid failures of a workload that does not use SMB Direct, make sure there are
no other workloads using the disconnected network path.

Additional references
Server Message Block overview
Increasing Server, Storage, and Network Availability: Scenario Overview
Deploy Hyper-V over SMB
Microsoft Defender Antivirus in
Windows
Article • 03/15/2023

Applies to:

Microsoft Defender for Endpoint Plans 1 and 2


Microsoft Defender for Business
Microsoft Defender Antivirus

Platforms

Windows

Microsoft Defender Antivirus is available in Windows 10 and Windows 11, and in


versions of Windows Server.

Microsoft Defender Antivirus is a major component of your next-generation protection


in Microsoft Defender for Endpoint. This protection brings together machine learning,
big-data analysis, in-depth threat resistance research, and the Microsoft cloud
infrastructure to protect devices (or endpoints) in your organization. Microsoft Defender
Antivirus is built into Windows, and it works with Microsoft Defender for Endpoint to
provide protection on your device and in the cloud.

Compatibility with other antivirus products


If you're using a non-Microsoft antivirus/antimalware product on your device, you might
be able to run Microsoft Defender Antivirus in passive mode alongside the non-
Microsoft antivirus solution. It depends on the operating system used and whether your
device is onboarded to Defender for Endpoint. To learn more, see Microsoft Defender
Antivirus compatibility.

Comparing active mode, passive mode, and


disabled mode
The following table describes what to expect when Microsoft Defender Antivirus is in
active mode, passive mode, or disabled.
Mode What happens

Active mode In active mode, Microsoft Defender Antivirus is used as the primary antivirus app
on the device. Files are scanned, threats are remediated, and detected threats are
listed in your organization's security reports and in your Windows Security app.

Passive mode In passive mode, Microsoft Defender Antivirus is not used as the primary
antivirus app on the device. Files are scanned, and detected threats are reported,
but threats are not remediated by Microsoft Defender Antivirus.

IMPORTANT: Microsoft Defender Antivirus can run in passive mode only on


endpoints that are onboarded to Microsoft Defender for Endpoint. See
Requirements for Microsoft Defender Antivirus to run in passive mode.

Disabled or When disabled or uninstalled, Microsoft Defender Antivirus is not used. Files are
uninstalled not scanned, and threats are not remediated. In general, we do not recommend
disabling or uninstalling Microsoft Defender Antivirus.

To learn more, see Microsoft Defender Antivirus compatibility.

Check the state of Microsoft Defender Antivirus


on your device
You can use one of several methods, such as the Windows Security app or Windows
PowerShell, to check the state of Microsoft Defender Antivirus on your device.

) Important

Beginning with platform version 4.18.2208.0 and later: If a server has been
onboarded to Microsoft Defender for Endpoint, the "Turn off Windows Defender"
group policy setting will no longer completely disable Windows Defender Antivirus
on Windows Server 2012 R2 and later. Instead, it will place it into passive mode. In
addition, the tamper protection feature will allow a switch to active mode but not
to passive mode.

If "Turn off Windows Defender" is already in place before onboarding to


Microsoft Defender for Endpoint, there will be no change and Defender
Antivirus will remain disabled.
To switch Defender Antivirus to passive mode, even if it was disabled before
onboarding, you can apply the ForceDefenderPassiveMode configuration
with a value of 1 . To place it into active mode, switch this value to 0 instead.
Note the modified logic for ForceDefenderPassiveMode when tamper protection is
enabled: Once Microsoft Defender Antivirus is toggled to active mode, tamper
protection will prevent it from going back into passive mode even when
ForceDefenderPassiveMode is set to 1 .

Use the Windows Security app to check the status of


Microsoft Defender Antivirus
1. On your Windows device, select the Start menu, and begin typing Security . Then
open the Windows Security app in the results.

2. Select Virus & threat protection.

3. Under Who's protecting me?, choose Manage Providers.

You'll see the name of your antivirus/antimalware solution on the security providers
page.

Use PowerShell to check the status of Microsoft Defender


Antivirus
1. Select the Start menu, and begin typing PowerShell . Then open Windows
PowerShell in the results.

2. Type Get-MpComputerStatus .

3. In the list of results, look at the AMRunningMode row.

Normal means Microsoft Defender Antivirus is running in active mode.

Passive mode means Microsoft Defender Antivirus running, but is not the
primary antivirus/antimalware product on your device. Passive mode is only
available for devices that are onboarded to Microsoft Defender for Endpoint
and that meet certain requirements. To learn more, see Requirements for
Microsoft Defender Antivirus to run in passive mode.

EDR Block Mode means Microsoft Defender Antivirus is running and


Endpoint detection and response (EDR) in block mode, a capability in
Microsoft Defender for Endpoint, is enabled. Check the
ForceDefenderPassiveMode registry key. If its value is 0, it is running in
normal mode; otherwise, it is running in passive mode.
SxS Passive Mode means Microsoft Defender Antivirus is running alongside
another antivirus/antimalware product, and limited periodic scanning is used.

 Tip

To learn more about the Get-MpComputerStatus PowerShell cmdlet, see the


reference article Get-MpComputerStatus.

 Tip

Performance tip Due to a variety of factors (examples listed below) Microsoft


Defender Antivirus, like other antivirus software, can cause performance issues on
endpoint devices. In some cases, you might need to tune the performance of
Microsoft Defender Antivirus to alleviate those performance issues. Microsoft's
Performance analyzer is a PowerShell command-line tool that helps determine
which files, file paths, processes, and file extensions might be causing performance
issues; some examples are:

Top paths that impact scan time


Top files that impact scan time
Top processes that impact scan time
Top file extensions that impact scan time
Combinations – for example:
top files per extension
top paths per extension
top processes per path
top scans per file
top scans per file per process

You can use the information gathered using Performance analyzer to better assess
performance issues and apply remediation actions. See: Performance analyzer for
Microsoft Defender Antivirus.

Get your antivirus/antimalware platform


updates
It's important to keep Microsoft Defender Antivirus (or any antivirus/antimalware
solution) up to date. Microsoft releases regular updates to help ensure that your devices
have the latest technology to protect against new malware and attack techniques. To
learn more, see Manage Microsoft Defender Antivirus updates and apply baselines.

 Tip

If you're looking for Antivirus related information for other platforms, see:

Set preferences for Microsoft Defender for Endpoint on macOS


Microsoft Defender for Endpoint on Mac
macOS Antivirus policy settings for Microsoft Defender Antivirus for Intune
Set preferences for Microsoft Defender for Endpoint on Linux
Microsoft Defender for Endpoint on Linux
Configure Defender for Endpoint on Android features
Configure Microsoft Defender for Endpoint on iOS features

See also
Performance analyzer for Microsoft Defender Antivirus
Microsoft Defender Antivirus management and configuration
Evaluate Microsoft Defender Antivirus protection
Exclusions for Microsoft Defender for Endpoint and Microsoft Defender Antivirus

 Tip

Do you want to learn more? Engage with the Microsoft Security community in our
Tech Community: Microsoft Defender for Endpoint Tech Community .
Attack surface reduction rules overview
Article • 09/29/2023

Applies to:

Microsoft Defender for Endpoint Plan 1


Microsoft Defender for Endpoint Plan 2
Microsoft 365 Defender
Microsoft Defender Antivirus

Platforms

Windows

Why attack surface reduction rules are


important
Your organization's attack surface includes all the places where an attacker could
compromise your organization's devices or networks. Reducing your attack surface
means protecting your organization's devices and network, which leaves attackers with
fewer ways to perform attacks. Configuring attack surface reduction rules in Microsoft
Defender for Endpoint can help!

Attack surface reduction rules target certain software behaviors, such as:

Launching executable files and scripts that attempt to download or run files
Running obfuscated or otherwise suspicious scripts
Performing behaviors that apps don't usually initiate during normal day-to-day
work

Such software behaviors are sometimes seen in legitimate applications. However, these
behaviors are often considered risky because they're commonly abused by attackers
through malware. Attack surface reduction rules can constrain software-based risky
behaviors and help keep your organization safe.

For a sequential, end-to-end process of how to manage attack surface reduction rules,
see:

Attack surface reduction rules deployment overview


Plan attack surface reduction rules deployment
Test attack surface reduction rules
Enable attack surface reduction rules
Operationalize attack surface reduction rules

Assess rules before deployment


You can assess how an attack surface reduction rule might affect your network by
opening the security recommendation for that rule in Microsoft Defender Vulnerability
Management.

In the recommendation details pane, check for user impact to determine what
percentage of your devices can accept a new policy enabling the rule in blocking mode
without adversely affecting productivity.

See Requirements in the "Enable attack surface reduction rules" article for information
about supported operating systems and other requirement information.

Audit mode for evaluation

Audit mode
Use audit mode to evaluate how attack surface reduction rules would affect your
organization if enabled. Run all rules in audit mode first so you can understand how
they affect your line-of-business applications. Many line-of-business applications are
written with limited security concerns, and they might perform tasks in ways that seem
similar to malware.

Exclusions
By monitoring audit data and adding exclusions for necessary applications, you can
deploy attack surface reduction rules without reducing productivity.

Per-rule exclusions
For information about configuring per-rule exclusions, see the section titled Configure
attack surface reduction rules per-rule exclusions in the article Test attack surface
reduction rules.

Warn mode for users


(NEW!) Prior to warn mode capabilities, attack surface reduction rules that are enabled
could be set to either audit mode or block mode. With the new warn mode, whenever
content is blocked by an attack surface reduction rule, users see a dialog box that
indicates the content is blocked. The dialog box also offers the user an option to
unblock the content. The user can then retry their action, and the operation completes.
When a user unblocks content, the content remains unblocked for 24 hours, and then
blocking resumes.

Warn mode helps your organization have attack surface reduction rules in place without
preventing users from accessing the content they need to perform their tasks.

Requirements for warn mode to work


Warn mode is supported on devices running the following versions of Windows:

Windows 10, version 1809 or later


Windows 11
Windows Server, version 1809 or later

Microsoft Defender Antivirus must be running with real-time protection in Active mode.

Also, make sure Microsoft Defender Antivirus and antimalware updates are installed.

Minimum platform release requirement: 4.18.2008.9


Minimum engine release requirement: 1.1.17400.5

For more information and to get your updates, see Update for Microsoft Defender
antimalware platform .

Cases where warn mode isn't supported


Warn mode isn't supported for three attack surface reduction rules when you configure
them in Microsoft Intune. (If you use Group Policy to configure your attack surface
reduction rules, warn mode is supported.) The three rules that don't support warn mode
when you configure them in Microsoft Intune are as follows:

Block JavaScript or VBScript from launching downloaded executable content (GUID


d3e037e1-3eb8-44c8-a917-57927947596d )

Block persistence through WMI event subscription (GUID e6db77e5-3df2-4cf1-


b95a-636979351e5b )

Use advanced protection against ransomware (GUID c1db55ab-c21a-4637-bb3f-


a12568109d35 )

Also, warn mode isn't supported on devices running older versions of Windows. In those
cases, attack surface reduction rules that are configured to run in warn mode runs in
block mode.

Notifications and alerts


Whenever an attack surface reduction rule is triggered, a notification is displayed on the
device. You can customize the notification with your company details and contact
information.

Also, when certain attack surface reduction rules are triggered, alerts are generated.

Notifications and any alerts that are generated can be viewed in the Microsoft 365
Defender portal .

For specific details about notification and alert functionality, see: Per rule alert and
notification details, in the article Attack surface reduction rules reference.

Advanced hunting and attack surface reduction


events
You can use advanced hunting to view attack surface reduction events. To streamline the
volume of incoming data, only unique processes for each hour are viewable with
advanced hunting. The time of an attack surface reduction event is the first time that
event is seen within the hour.

For example, suppose that an attack surface reduction event occurs on 10 devices
during the 2:00 PM hour. Suppose that the first event occurred at 2:15, and the last at
2:45. With advanced hunting, you see one instance of that event (even though it actually
occurred on 10 devices), and its timestamp will be 2:15 PM.

For more information about advanced hunting, see Proactively hunt for threats with
advanced hunting.

Attack surface reduction features across


Windows versions
You can set attack surface reduction rules for devices that are running any of the
following editions and versions of Windows:

Windows 10 Pro, version 1709 or later

Windows 10 Enterprise, version 1709 or later

Windows Server, version 1803 (Semi-Annual Channel) or later

Windows Server 2019

Windows Server 2016

Windows Server 2012 R2

7 Note

Windows Server 2016 and Windows Server 2012 R2 will need to be


onboarded using the instructions in Onboard Windows servers for this
feature to work.

Although attack surface reduction rules don't require a Windows E5 license, if you have
Windows E5, you get advanced management capabilities. The advanced capabilities -
available only in Windows E5 - include:

The monitoring, analytics, and workflows available in Defender for Endpoint


The reporting and configuration capabilities in Microsoft 365 Defender.

These advanced capabilities aren't available with a Windows Professional or Windows E3


license. However, if you do have those licenses, you can use Event Viewer and Microsoft
Defender Antivirus logs to review your attack surface reduction rule events.
Review attack surface reduction events in the
Microsoft 365 Defender portal
Defender for Endpoint provides detailed reporting for events and blocks as part of alert
investigation scenarios.

You can query Defender for Endpoint data in Microsoft 365 Defender by using advanced
hunting.

Here's an example query:

Kusto

DeviceEvents
| where ActionType startswith 'Asr'

Review attack surface reduction events in


Windows Event Viewer
You can review the Windows event log to view events generated by attack surface
reduction rules:

1. Download the Evaluation Package and extract the file cfa-events.xml to an easily
accessible location on the device.

2. Enter the words, Event Viewer, into the Start menu to open the Windows Event
Viewer.

3. Under Actions, select Import custom view....

4. Select the file cfa-events.xml from where it was extracted. Alternatively, copy the
XML directly.

5. Select OK.

You can create a custom view that filters events to only show the following events, all of
which are related to controlled folder access:

Event ID Description

5007 Event when settings are changed

1121 Event when rule fires in Block-mode


Event ID Description

1122 Event when rule fires in Audit-mode

The "engine version" listed for attack surface reduction events in the event log, is
generated by Defender for Endpoint, not by the operating system. Defender for
Endpoint is integrated with Windows 10 and Windows 11, so this feature works on all
devices with Windows 10 or Windows 11 installed.

See also
Attack surface reduction rules deployment overview
Plan attack surface reduction rules deployment
Test attack surface reduction rules
Enable attack surface reduction rules
Operationalize attack surface reduction rules
Attack surface reduction rules report
Exclusions for Microsoft Defender for Endpoint and Microsoft Defender Antivirus

 Tip

If you're looking for Antivirus related information for other platforms, see:

Set preferences for Microsoft Defender for Endpoint on macOS


Microsoft Defender for Endpoint on Mac
macOS Antivirus policy settings for Microsoft Defender Antivirus for Intune
Set preferences for Microsoft Defender for Endpoint on Linux
Microsoft Defender for Endpoint on Linux
Configure Defender for Endpoint on Android features
Configure Microsoft Defender for Endpoint on iOS features

 Tip

Do you want to learn more? Engage with the Microsoft Security community in our
Tech Community: Microsoft Defender for Endpoint Tech Community .
Protect security settings with tamper
protection
Article • 06/26/2023

Applies to:

Microsoft Defender for Endpoint Plan 1


Microsoft Defender for Endpoint Plan 2
Microsoft Defender Antivirus
Microsoft Defender for Business
Microsoft 365 Business Premium

Platforms

Windows
macOS

What is tamper protection?


Tamper protection is a capability in Microsoft Defender for Endpoint that helps protect
certain security settings, such as virus and threat protection, from being disabled or
changed. During some kinds of cyber attacks, bad actors try to disable security features
on devices. Disabling security features provides bad actors with easier access to your
data, the ability to install malware, and the ability to exploit your data, identity, and
devices. Tamper protection helps guard against these types of activities.

Tamper protection is part of anti-tampering capabilities that include standard protection


attack surface reduction rules. Tamper protection is an important part of built-in
protection.

What happens when tamper protection is


turned on?
When tamper protection is turned on, these tamper-protected settings can't be
changed:

Virus and threat protection remains enabled.


Real-time protection remains turned on.
Behavior monitoring remains turned on.
Antivirus protection, including IOfficeAntivirus (IOAV) remains enabled.
Cloud protection remains enabled.
Security intelligence updates occur.
Automatic actions are taken on detected threats.
Notifications are visible in the Windows Security app on Windows devices.
Archived files are scanned.

As of signature release 1.383.1159.0 , due to confusion around the default value for "Allow
Scanning Network Files", tamper protection no longer locks this setting to its default value.
In managed environments, the default value is enabled.

) Important

When tamper protection is turned on, tamper-protected settings cannot be


changed. To avoid breaking management experiences, including Intune and
Configuration Manager, keep in mind that changes made to tamper-protected
settings might appear to succeed but are actually blocked by tamper protection.
Depending on your particular scenario, you have several options available:

If you must make changes to a device and those changes are blocked by
tamper protection, you can use troubleshooting mode to temporarily disable
tamper protection on the device.
You can use Intune or Configuration Manager to exclude devices from tamper
protection.

Tamper protection doesn't prevent you from viewing your security settings. And, tamper
protection doesn't affect how non-Microsoft antivirus apps register with the Windows
Security app. If your organization is using Defender for Endpoint, individual users can't
change the tamper protection setting; in those cases, tamper protection is managed by
your security team. For more information, see How do I configure or manage tamper
protection?

On what devices can tamper protection be


enabled?
Tamper protection is available for devices that are running one of the following versions
of Windows:

Windows 10 and 11 (including Enterprise multi-session)


Windows Server 2022, Windows Server 2019, and Windows Server, version 1803 or
later
Windows Server 2016 and Windows Server 2012 R2 (using the modern, unified
solution)

Tamper protection is also available for Mac, although it works a little differently than on
Windows. For more information, see Protect macOS security settings with tamper
protection.

 Tip

Built-in protection includes turning tamper protection on by default. For more


information, see:

Built-in protection helps guard against ransomware (article)


Tamper protection will be turned on for all enterprise customers (Tech
Community blog post)

Tamper protection on Windows Server 2012 R2, 2016, or


Windows version 1709, 1803, or 1809
If you're using Windows Server 2012 R2 using the modern unified solution, Windows
Server 2016, Windows 10 version 1709, 1803, or 1809, you won't see Tamper Protection
in the Windows Security app. Instead, you can use PowerShell to determine whether
tamper protection is enabled.

) Important

On Windows Server 2016, the Settings app won't accurately reflect the status of
real-time protection when tamper protection is enabled.

Use PowerShell to determine whether tamper protection


and real-time protection are turned on
1. Open the Windows PowerShell app.

2. Use the Get-MpComputerStatus PowerShell cmdlet.

3. In the list of results, look for IsTamperProtected or RealTimeProtectionEnabled . (A


value of true means tamper protection is enabled.)
How do I configure or manage tamper
protection?
You can use Microsoft Intune and other methods to configure or manage tamper
protection, as listed in the following table:

Method What you can do

Use the Microsoft Turn tamper protection on (or off), tenant wide. See Manage tamper
365 Defender protection for your organization using Microsoft 365 Defender.
portal .
This method won't override settings that are managed in Microsoft Intune
or Configuration Manager with tenant attach.

Use the Microsoft Turn tamper protection on (or off), tenant wide, or apply tamper
Intune admin protection to some users/devices. You can exclude certain devices from
center . tamper protection. See Manage tamper protection for your organization
using Intune.

Protect Microsoft Defender Antivirus exclusions from tampering. See


Tamper protection for antivirus exclusions.

Use Configuration Turn tamper protection on (or off), tenant wide, or apply tamper
Manager with tenant protection to some users/devices. You can exclude certain devices from
attach. tamper protection. See Manage tamper protection for your organization
using tenant attach with Configuration Manager, version 2006.

Use the Windows Turn tamper protection on (or off) on an individual device that isn't
Security app. managed by a security team (such as devices for home use). See Manage
tamper protection on an individual device.

This method won't override tamper protection settings that are managed by
the Microsoft 365 Defender portal, Intune, or Configuration Manager, and it
isn't intended to be used by organizations.

 Tip

If you're using Group Policy to manage Microsoft Defender Antivirus settings, keep
in mind that any changes made to tamper-protected settings are ignored. If you
must make changes to a device and those changes are blocked by tamper
protection, use troubleshooting mode to temporarily disable tamper protection on
the device. After troubleshooting mode ends, any changes made to tamper-
protected settings are reverted to their configured state.
Protect Microsoft Defender Antivirus exclusions
Under certain conditions, tamper protection can protect exclusions that are defined for
Microsoft Defender Antivirus. For more information, see Tamper protection for
exclusions.

View information about tampering attempts


Tampering attempts typically indicate that a larger cyberattack has taken place. Bad
actors try to change security settings as a way to persist and stay undetected. If you're
part of your organization's security team, you can view information about such
attempts, and then take appropriate actions to mitigate threats.

Whenever a tampering attempt is detected, an alert is raised in the Microsoft 365


Defender portal (https://security.microsoft.com ).

Using endpoint detection and response and advanced hunting capabilities in Microsoft
Defender for Endpoint, your security operations team can investigate and address such
attempts.

Review your security recommendations


Tamper protection integrates with Microsoft Defender Vulnerability Management
capabilities. Security recommendations include making sure tamper protection is turned
on. For example, in your Vulnerability Management dashboard, you can search on
tamper. In the results, you can select Turn on Tamper Protection to learn more and turn
it on.

To learn more about Microsoft Defender Vulnerability Management, see Dashboard


insights - Defender Vulnerability Management.

See also
Protect macOS security settings with tamper protection
Built-in protection helps guard against ransomware
Frequently asked questions on tamper protection
Troubleshoot problems with tamper protection

 Tip
Do you want to learn more? Engage with the Microsoft Security community in our
Tech Community: Microsoft Defender for Endpoint Tech Community .
Protect important folders with
controlled folder access
Article • 01/06/2023

Applies to:

Microsoft Defender for Endpoint Plan 1


Microsoft Defender for Endpoint Plan 2
Microsoft 365 Defender
Microsoft Defender Antivirus

Applies to

Windows

Want to experience Defender for Endpoint? Sign up for a free trial.

What is controlled folder access?


Controlled folder access helps protect your valuable data from malicious apps and
threats, such as ransomware. Controlled folder access protects your data by checking
apps against a list of known, trusted apps. Supported on Windows Server 2012 R2,
Windows Server 2016, Windows Server 2019, Windows Server 2022, Windows 10, and
Windows 11 clients, controlled folder access can be turned on using the Windows
Security App, Microsoft Endpoint Configuration Manager, or Intune (for managed
devices).

7 Note

Scripting engines are not trusted and you cannot allow them access to controlled
protected folders. For example, PowerShell is not trusted by controlled folder
access, even if you allow with certificate and file indicators.

Controlled folder access works best with Microsoft Defender for Endpoint, which gives
you detailed reporting into controlled folder access events and blocks as part of the
usual alert investigation scenarios.

 Tip
Controlled folder access blocks don't generate alerts in the Alerts queue. However,
you can view information about controlled folder access blocks in the device
timeline view, while using advanced hunting, or with custom detection rules.

How does controlled folder access work?


Controlled folder access works by only allowing trusted apps to access protected
folders. Protected folders are specified when controlled folder access is configured.
Typically, commonly used folders, such as those used for documents, pictures,
downloads, and so on, are included in the list of controlled folders.

Controlled folder access works with a list of trusted apps. Apps that are included in the
list of trusted software work as expected. Apps that are not included in the list are
prevented from making any changes to files inside protected folders.

Apps are added to the list based upon their prevalence and reputation. Apps that are
highly prevalent throughout your organization and that have never displayed any
behavior deemed malicious are considered trustworthy. Those apps are added to the list
automatically.

Apps can also be added manually to the trusted list by using Configuration Manager or
Intune. Additional actions can be performed from the Microsoft 365 Defender portal.

Why controlled folder access is important


Controlled folder access is especially useful in helping to protect your documents and
information from ransomware . In a ransomware attack, your files can get encrypted
and held hostage. With controlled folder access in place, a notification appears on the
computer where an app attempted to make changes to a file in a protected folder. You
can customize the notification with your company details and contact information. You
can also enable the rules individually to customize what techniques the feature
monitors.

The protected folders include common system folders (including boot sectors), and you
can add more folders. You can also allow apps to give them access to the protected
folders.

You can use audit mode to evaluate how controlled folder access would impact your
organization if it were enabled.

Controlled folder access is supported on the following versions of Windows:


Windows 10, version 1709 and later
Windows 11
Windows 2012 R2
Windows 2016
Windows Server 2019
Windows Server 2022

Windows system folders are protected by


default
Windows system folders are protected by default, along with several other folders:

The protected folders include common system folders (including boot sectors), and you
can add additional folders. You can also allow apps to give them access to the protected
folders. The Windows systems folders that are protected by default are:

c:\Users\<username>\Documents
c:\Users\Public\Documents

c:\Users\<username>\Pictures
c:\Users\Public\Pictures

c:\Users\Public\Videos

c:\Users\<username>\Videos
c:\Users\<username>\Music

c:\Users\Public\Music
c:\Users\<username>\Favorites

Default folders appear in the user's profile, under This PC.


7 Note

You can configure additional folders as protected, but you cannot remove the
Windows system folders that are protected by default.
Requirements for controlled folder access
Controlled folder access requires enabling Microsoft Defender Antivirus real-time
protection.

Review controlled folder access events in the


Microsoft 365 Defender portal
Defender for Endpoint provides detailed reporting into events and blocks as part of its
alert investigation scenarios in the Microsoft 365 Defender portal; see Microsoft
Defender for Endpoint in Microsoft 365 Defender.

You can query Microsoft Defender for Endpoint data by using Advanced hunting. If
you're using audit mode, you can use advanced hunting to see how controlled folder
access settings would affect your environment if they were enabled.

Example query:

PowerShell

DeviceEvents
| where ActionType in
('ControlledFolderAccessViolationAudited','ControlledFolderAccessViolationBl
ocked')

Review controlled folder access events in


Windows Event Viewer
You can review the Windows event log to see events that are created when controlled
folder access blocks (or audits) an app:

1. Download the Evaluation Package and extract the file cfa-events.xml to an easily
accessible location on the device.
2. Type Event viewer in the Start menu to open the Windows Event Viewer.
3. On the left panel, under Actions, select Import custom view....
4. Navigate to where you extracted cfa-events.xml and select it. Alternatively, copy
the XML directly.
5. Select OK.

The following table shows events related to controlled folder access:


Event ID Description

5007 Event when settings are changed

1124 Audited controlled folder access event

1123 Blocked controlled folder access event

View or change the list of protected folders


You can use the Windows Security app to view the list of folders that are protected by
controlled folder access.

1. On your Windows 10 or Windows 11 device, open the Windows Security app.


2. Select Virus & threat protection.
3. Under Ransomware protection, select Manage ransomware protection.
4. If controlled folder access is turned off, you'll need to turn it on. Select protected
folders.
5. Do one of the following steps:

To add a folder, select + Add a protected folder.


To remove a folder, select it, and then select Remove.

7 Note

Windows system folders are protected by default, and you cannot remove them
from the list. Subfolders are also included in protection when you add a new folder
to the list.

 Tip

Do you want to learn more? Engage with the Microsoft Security community in our
Tech Community: Microsoft Defender for Endpoint Tech Community .
Protect devices from exploits
Article • 07/18/2023

Applies to:

Microsoft Defender for Endpoint Plan 1


Microsoft Defender for Endpoint Plan 2
Microsoft 365 Defender

Exploit protection automatically applies many exploit mitigation techniques to operating


system processes and apps. Exploit protection is supported beginning with Windows 10,
version 1709, Windows 11, and Windows Server, version 1803.

Exploit protection works best with Defender for Endpoint - which gives you detailed
reporting into exploit protection events and blocks as part of the usual alert
investigation scenarios.

You can enable exploit protection on an individual device, and then use Group Policy to
distribute the XML file to multiple devices at once.

When a mitigation is found on the device, a notification is displayed from the Action
Center. You can customize the notification with your company details and contact
information. You can also enable the rules individually to customize what techniques the
feature monitors.

You can also use audit mode to evaluate how exploit protection would affect your
organization if it were enabled.

Many of the features in the Enhanced Mitigation Experience Toolkit (EMET) are
included in exploit protection. In fact, you can convert and import existing your EMET
configuration profiles into exploit protection. To learn more, see Import, export, and
deploy exploit protection configurations.

) Important

If you are currently using EMET you should be aware that EMET reached end of
support on July 31, 2018 . Consider replacing EMET with exploit protection in
Windows 10.

2 Warning
Some security mitigation technologies may have compatibility issues with some
applications. You should test exploit protection in all target use scenarios by using
audit mode before deploying the configuration across a production environment
or the rest of your network.

Review exploit protection events in the


Microsoft 365 Defender portal
Defender for Endpoint provides detailed reporting into events and blocks as part of its
alert investigation scenarios.

You can query Defender for Endpoint data by using Advanced hunting. If you're using
audit mode, you can use advanced hunting to see how exploit protection settings could
affect your environment.

Here's an example query:

Kusto

DeviceEvents
| where ActionType startswith 'ExploitGuard' and ActionType !contains
'NetworkProtection'

Review exploit protection events in Windows


Event Viewer
You can review the Windows event log to see events that are created when exploit
protection blocks (or audits) an app:

Provider/source Event ID Description

Security-Mitigations 1 ACG audit

Security-Mitigations 2 ACG enforce

Security-Mitigations 3 Don't allow child processes audit

Security-Mitigations 4 Don't allow child processes block

Security-Mitigations 5 Block low integrity images audit


Provider/source Event ID Description

Security-Mitigations 6 Block low integrity images block

Security-Mitigations 7 Block remote images audit

Security-Mitigations 8 Block remote images block

Security-Mitigations 9 Disable win32k system calls audit

Security-Mitigations 10 Disable win32k system calls block

Security-Mitigations 11 Code integrity guard audit

Security-Mitigations 12 Code integrity guard block

Security-Mitigations 13 EAF audit

Security-Mitigations 14 EAF enforce

Security-Mitigations 15 EAF+ audit

Security-Mitigations 16 EAF+ enforce

Security-Mitigations 17 IAF audit

Security-Mitigations 18 IAF enforce

Security-Mitigations 19 ROP StackPivot audit

Security-Mitigations 20 ROP StackPivot enforce

Security-Mitigations 21 ROP CallerCheck audit

Security-Mitigations 22 ROP CallerCheck enforce

Security-Mitigations 23 ROP SimExec audit

Security-Mitigations 24 ROP SimExec enforce

WER-Diagnostics 5 CFG Block

Win32K 260 Untrusted Font

Mitigation comparison
The mitigations available in EMET are included natively in Windows 10 (starting with
version 1709), Windows 11, and Windows Server (starting with version 1803), under
Exploit protection.
The table in this section indicates the availability and support of native mitigations
between EMET and exploit protection.

Mitigation Available under exploit protection Available in


EMET

Arbitrary code guard (ACG) Yes Yes


As "Memory
Protection Check"

Block remote images Yes Yes


As "Load Library
Check"

Block untrusted fonts Yes Yes

Data Execution Prevention Yes Yes


(DEP)

Export address filtering (EAF) Yes Yes

Force randomization for Yes Yes


images (Mandatory ASLR)

NullPage Security Mitigation Yes Yes


Included natively in Windows 10 and
Windows 11
For more information, see Mitigate threats
by using Windows 10 security features

Randomize memory Yes Yes


allocations (Bottom-Up
ASLR)

Simulate execution (SimExec) Yes Yes

Validate API invocation Yes Yes


(CallerCheck)

Validate exception chains Yes Yes


(SEHOP)

Validate stack integrity Yes Yes


(StackPivot)

Certificate trust Windows 10 and Windows 11 provide Yes


(configurable certificate enterprise certificate pinning
pinning)
Mitigation Available under exploit protection Available in
EMET

Heap spray allocation Ineffective against newer browser-based Yes


exploits; newer mitigations provide better
protection
For more information, see Mitigate threats
by using Windows 10 security features

Block low integrity images Yes No

Code integrity guard Yes No

Disable extension points Yes No

Disable Win32k system calls Yes No

Don't allow child processes Yes No

Import address filtering (IAF) Yes No

Validate handle usage Yes No

Validate heap integrity Yes No

Validate image dependency Yes No


integrity

7 Note

The Advanced ROP mitigations that are available in EMET are superseded by ACG in
Windows 10 and Windows 11, which other EMET advanced settings are enabled by
default, as part of enabling the anti-ROP mitigations for a process. For more
information on how Windows 10 employs existing EMET technology, see the
Mitigation threats by using Windows 10 security features.

See also
Configure and audit exploit protection mitigations
Troubleshoot exploit protection
Optimize ASR rule deployment and detections

 Tip
Do you want to learn more? Engage with the Microsoft Security community in our
Tech Community: Microsoft Defender for Endpoint Tech Community .
Microsoft Defender SmartScreen
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10, ✅ Microsoft Edge

Microsoft Defender SmartScreen protects against phishing or malware websites and


applications, and the downloading of potentially malicious files.

Microsoft Defender SmartScreen determines whether a site is potentially malicious


by:

Analyzing visited webpages and looking for indications of suspicious behavior. If


Microsoft Defender SmartScreen determines that a page is suspicious, it shows a
warning page to advise caution.
Checking the visited sites against a dynamic list of reported phishing sites and
malicious software sites. If it finds a match, Microsoft Defender SmartScreen shows
a warning to let the user know that the site might be malicious.

Microsoft Defender SmartScreen determines whether a downloaded app or app


installer is potentially malicious by:

Checking downloaded files against a list of reported malicious software sites and
programs known to be unsafe. If it finds a match, Microsoft Defender SmartScreen
shows a warning to let the user know that the site might be malicious.
Checking downloaded files against a list of files that are well known and
downloaded frequently. If the file isn't on that list, Microsoft Defender SmartScreen
shows a warning, advising caution.

Benefits of Microsoft Defender SmartScreen


Microsoft Defender SmartScreen provide an early warning system against websites that
might engage in phishing attacks or attempt to distribute malware through a socially
engineered attack. The primary benefits are:

Anti-phishing and anti-malware support: Microsoft Defender SmartScreen helps


to protect users from sites that are reported to host phishing attacks or attempt to
distribute malicious software. It can also help protect against deceptive
advertisements, scam sites, and drive-by attacks. Drive-by attacks are web-based
attacks that tend to start on a trusted site, targeting security vulnerabilities in
commonly used software. Because drive-by attacks can happen even if the user
doesn't select or download anything on the page, the danger often goes
unnoticed. For more information about drive-by attacks, see Evolving Microsoft
Defender SmartScreen to protect you from drive-by attacks .
Reputation-based URL and app protection: Microsoft Defender SmartScreen
evaluates a website's URLs to determine if they're known to distribute or host
unsafe content. It also provides reputation checks for apps, checking downloaded
programs and the digital signature used to sign a file. If a URL, a file, an app, or a
certificate has an established reputation, users don't see any warnings. If there's no
reputation, the item is marked as a higher risk and presents a warning to the user.
Operating system integration: Microsoft Defender SmartScreen is integrated into
the Windows 10 operating system. It checks any files an app (including 3rd-party
browsers and email clients) that attempts to download and run.
Improved heuristics and diagnostic data: Microsoft Defender SmartScreen is
constantly learning and endeavoring to stay up to date, so it can help to protect
you against potentially malicious sites and files.
Management through group policy and Microsoft Intune: Microsoft Defender
SmartScreen supports using both group policy and Microsoft Intune settings. For
more info about all available settings, see Available Microsoft Defender
SmartScreen group policy and mobile device management (MDM) settings.
Blocking URLs associated with potentially unwanted applications: In Microsoft
Edge (based on Chromium), SmartScreen blocks URLs associated with potentially
unwanted applications, or PUAs. For more information on blocking URLs
associated with PUAs, see Detect and block potentially unwanted applications.

) Important

SmartScreen protects against malicious files from the internet. It does not protect
against malicious files on internal locations or network shares, such as shared
folders with UNC paths or SMB/CIFS shares.

Windows edition and licensing requirements


The following table lists the Windows editions that support Microsoft Defender
SmartScreen:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Microsoft Defender SmartScreen license entitlements are granted by the following


licenses:
Windows Pro/Pro Windows Windows Windows Windows
Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Submit files to Microsoft Defender


SmartScreen for review
If you believe a warning or block was incorrectly shown for a file or application, or if you
believe an undetected file is malware, submit a file to Microsoft for review. For more
information, see Submit files for analysis.

When submitting a file for Microsoft Defender SmartScreen, make sure to select
Microsoft Defender SmartScreen from the product menu.

Related articles
SmartScreen frequently asked questions
Configuration service provider reference
Available Microsoft Defender SmartScreen Group
Policy and mobile device management (MDM) settings
Article • 08/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Microsoft Defender SmartScreen works with Intune, Group Policy, and mobile device management (MDM) settings to
help you manage your organization's computer settings. Based on how you set up Microsoft Defender SmartScreen, you
can show employees a warning page and let them continue to the site, or you can block the site entirely.

See Windows 10 and Windows 11 settings to protect devices using Intune for the controls you can use in Intune.

Group Policy settings


SmartScreen uses registry-based Administrative Template policy settings.

Setting Supported on Description

Windows 10, version 2004: Administrative Windows 10, version 1703: Administrative This policy setting turns on Microsoft
Templates\Windows Components\Windows Templates\Windows Defender SmartScreen.
Defender SmartScreen\Explorer\Configure Components\Windows Defender
Windows Defender SmartScreen SmartScreen\Explorer\Configure Windows If you enable this setting, it turns on
Defender SmartScreen Microsoft Defender SmartScreen and
your employees are unable to turn it
Windows 10, Version 1607 and earlier: off. Additionally, when enabling this
Administrative Templates\Windows feature, you must also pick whether
Components\File Explorer\Configure Microsoft Defender SmartScreen
Windows SmartScreen should Warn your employees or Warn
and prevent bypassing the message
At least Windows Server 2012, Windows (effectively blocking the employee
8 or Windows RT from the site).

If you disable this setting, it turns off


Microsoft Defender SmartScreen and
your employees are unable to turn it
on.

If you don't configure this setting, your


employees can decide whether to use
Microsoft Defender SmartScreen.

Windows 10, version 2004: Administrative Windows 10, version 1703: Administrative This policy setting is intended to
Templates\Windows Components\Windows Templates\Windows prevent malicious content from
Defender SmartScreen\Explorer\Configure App Components\Windows Defender affecting your user's devices when
Install Control SmartScreen\Explorer\Configure App downloading executable content from
Install Control the internet.

This setting doesn't protect against


malicious content from USB devices,
network shares, or other non-internet
sources.

Important: Using a trustworthy


browser helps ensure that these
protections work as expected.

Windows 10, version 2004: Administrative Microsoft Edge on Windows 10 or This policy setting turns on Microsoft
Templates\Windows Components\Windows Windows 11 Defender SmartScreen.
Defender SmartScreen\Microsoft
Edge\Configure Windows Defender If you enable this setting, it turns on
SmartScreen (Microsoft Edge version 45 and Microsoft Defender SmartScreen and
earlier) your employees are unable to turn it
off.
Setting Supported on Description

Administrative Templates\Microsoft
Edge\SmartScreen settings\Configure Microsoft If you disable this setting, it turns off
Defender SmartScreen (Microsoft Edge version Microsoft Defender SmartScreen and
77 or later) your employees are unable to turn it
on.
Windows 10, version 1703: Administrative
Templates\Windows Components\Windows If you don't configure this setting, your
Defender SmartScreen\Microsoft employees can decide whether to use
Edge\Configure Windows Defender Microsoft Defender SmartScreen.
SmartScreen (Microsoft Edge version 45 and
earlier)

Administrative Templates\Microsoft
Edge\SmartScreen settings\Configure Microsoft
Defender SmartScreen (Microsoft Edge version
77 or later)

Windows 10, Version 1607 and earlier:


Administrative Templates\Windows
Components\Microsoft Edge\Configure
Windows SmartScreen

Windows 10, version 2004: Administrative Microsoft Edge on Windows 10, version This policy setting stops employees
Templates\Windows Components\Windows 1511 or later from bypassing the Microsoft
Defender SmartScreen\Microsoft Edge\Prevent Defender SmartScreen warnings about
bypassing Windows Defender SmartScreen potentially malicious files.
prompts for files (Microsoft Edge version 45 and
earlier) If you enable this setting, it stops
employees from bypassing the
Administrative Templates\Microsoft warning, stopping the file download.
Edge\SmartScreen settings\Prevent bypassing
of Microsoft Defender SmartScreen warnings If you disable or don't configure this
about downloads (Microsoft Edge version 77 or setting, your employees can bypass
later) the warnings and continue to
download potentially malicious files.
Windows 10, version 1703: Administrative
Templates\Windows Components\Windows
Defender SmartScreen\Microsoft Edge\Prevent
bypassing Windows Defender SmartScreen
prompts for files (Microsoft Edge version 45 and
earlier)

Administrative Templates\Microsoft
Edge\SmartScreen settings\Prevent bypassing
of Microsoft Defender SmartScreen warnings
about downloads (Microsoft Edge version 77 or
later)

Windows 10, Version 1511 and 1607:


Administrative Templates\Windows
Components\Microsoft Edge\Prevent bypassing
Windows SmartScreen prompts for files

Windows 10, version 2004: Administrative Microsoft Edge on Windows 10, version This policy setting stops employees
Templates\Windows Components\Windows 1511 or later from bypassing the Microsoft
Defender SmartScreen\Microsoft Edge\Prevent Defender SmartScreen warnings about
bypassing Windows Defender SmartScreen potentially malicious sites.
prompts for sites (Microsoft Edge version 45
and earlier) If you enable this setting, it stops
employees from bypassing the
Administrative Templates\Microsoft warning, stopping them from going to
Edge\SmartScreen settings\Prevent bypassing the site.
Microsoft Defender SmartScreen prompts for
sites (Microsoft Edge version 77 or later) If you disable or don't configure this
Setting Supported on Description

setting, your employees can bypass


Windows 10, version 1703: Administrative the warnings and continue to visit a
Templates\Windows Components\Windows potentially malicious site.
Defender SmartScreen\Microsoft Edge\Prevent
bypassing Windows Defender SmartScreen
prompts for sites (Microsoft Edge version 45
and earlier)

Administrative Templates\Microsoft
Edge\SmartScreen settings\Prevent bypassing
Microsoft Defender SmartScreen prompts for
sites (Microsoft Edge version 77 or later)

Windows 10, Version 1511 and 1607:


Administrative Templates\Windows
Components\Microsoft Edge\Prevent bypassing
Windows SmartScreen prompts for sites

Administrative Templates\Windows Internet Explorer 9 or later This policy setting prevents the
Components\Internet Explorer\Prevent employee from managing Microsoft
managing SmartScreen Filter Defender SmartScreen.

If you enable this policy setting, the


employee isn't prompted to turn on
Microsoft Defender SmartScreen. All
website addresses that aren't on the
filter's allowlist are sent automatically
to Microsoft without prompting the
employee.

If you disable or don't configure this


policy setting, the employee is
prompted to decide whether to turn
on Microsoft Defender SmartScreen
during the first-run experience.

Administrative Templates\Windows Internet Explorer 8 or later This policy setting determines whether
Components\Internet Explorer\Prevent an employee can bypass warnings
bypassing SmartScreen Filter warnings from Microsoft Defender SmartScreen.

If you enable this policy setting,


Microsoft Defender SmartScreen
warnings block the employee.

If you disable or don't configure this


policy setting, the employee can
bypass Microsoft Defender
SmartScreen warnings.

Administrative Templates\Windows Internet Explorer 9 or later This policy setting determines whether
Components\Internet Explorer\Prevent the employee can bypass warnings
bypassing SmartScreen Filter warnings about from Microsoft Defender SmartScreen.
files that aren't commonly downloaded from Microsoft Defender SmartScreen warns
the Internet the employee about executable files
that Internet Explorer users don't
commonly download from the
Internet.

If you enable this policy setting,


Microsoft Defender SmartScreen
warnings block the employee.

If you disable or don't configure this


policy setting, the employee can
Setting Supported on Description

bypass Microsoft Defender


SmartScreen warnings.

MDM settings
If you manage your policies using Microsoft Intune, use these MDM policy settings. All settings support desktop
computers running Windows 10/11 Pro or Windows 10/11 Enterprise, enrolled with Microsoft Intune.

For Microsoft Defender SmartScreen Microsoft Edge MDM policies, see Policy CSP - Browser.

Setting Supported Details


versions

AllowSmartScreen Windows URI full path. ./Vendor/MSFT/Policy/Config/Browser/AllowSmartScreen


10 Data type. Integer
Allowed values:

0 . Turns off Microsoft Defender SmartScreen in Microsoft Edge.


1. Turns on Microsoft Defender SmartScreen in Microsoft Edge.

EnableAppInstallControl Windows URI full path.


10, version ./Vendor/MSFT/Policy/Config/SmartScreen/EnableAppInstallControl
1703 Data type. Integer
Allowed values:

0 . Turns off Application Installation Control, allowing users to download


and install files from anywhere on the web.
1. Turns on Application Installation Control, allowing users to install apps
from the Microsoft Store only.

EnableSmartScreenInShell Windows URI full path.


10, version ./Vendor/MSFT/Policy/Config/SmartScreen/EnableSmartScreenInShell
1703 Data type. Integer
Allowed values:

0 . Turns off Microsoft Defender SmartScreen in Windows for app and file
execution.
1. Turns on Microsoft Defender SmartScreen in Windows for app and file
execution.

PreventOverrideForFilesInShell Windows URI full path.


10, version ./Vendor/MSFT/Policy/Config/SmartScreen/PreventOverrideForFilesInShell
1703 Data type. Integer
Allowed values:

0 . Employees can ignore Microsoft Defender SmartScreen warnings and run


malicious files.
1. Employees can't ignore Microsoft Defender SmartScreen warnings and
run malicious files.

PreventSmartScreenPromptOverride Windows URI full path.


10, Version ./Vendor/MSFT/Policy/Config/Browser/PreventSmartscreenPromptOverride
1511 and Data type. Integer
Windows Allowed values:
11
0 . Employees can ignore Microsoft Defender SmartScreen warnings.
1. Employees can't ignore Microsoft Defender SmartScreen warnings.

PreventSmartScreenPromptOverrideForFiles Windows URI full path.


10, Version ./Vendor/MSFT/Policy/Config/Browser/PreventSmartScreenPromptOverrideForFiles
Setting Supported Details
versions

1511 and Data type. Integer


Windows Allowed values:
11
0 . Employees can ignore Microsoft Defender SmartScreen warnings for files.
1. Employees can't ignore Microsoft Defender SmartScreen warnings for
files.

Recommended Group Policy and MDM settings for your


organization
By default, Microsoft Defender SmartScreen lets employees bypass warnings. Unfortunately, this feature can let
employees continue to an unsafe site or to continue to download an unsafe file, even after being warned. Because of this
possibility, we strongly recommend that you set up Microsoft Defender SmartScreen to block high-risk interactions
instead of providing just a warning.

To better help you protect your organization, we recommend turning on and using these specific Microsoft Defender
SmartScreen Group Policy and MDM settings.

Group Policy setting Recommendation

Administrative Templates\Windows Components\Microsoft Enable. Turns on Microsoft Defender SmartScreen.


Edge\Configure Windows Defender SmartScreen (Microsoft Edge
version 45 and earlier)

Administrative Templates\Microsoft Edge\SmartScreen


settings\Configure Microsoft Defender SmartScreen (Microsoft Edge
version 77 or later)

Administrative Templates\Windows Components\Microsoft Enable. Stops employees from ignoring warning messages
Edge\Prevent bypassing Windows Defender SmartScreen prompts for and continuing to a potentially malicious website.
sites (Microsoft Edge version 45 and earlier)

Administrative Templates\Microsoft Edge\SmartScreen settings\Prevent


bypassing Windows Defender SmartScreen prompts for sites (Microsoft
Edge version 77 or later)

Administrative Templates\Windows Components\Microsoft Enable. Stops employees from ignoring warning messages
Edge\Prevent bypassing Windows Defender SmartScreen prompts for and continuing to download potentially malicious files.
files (Microsoft Edge version 45 and earlier)

Administrative Templates\Microsoft Edge\SmartScreen settings\Prevent


bypassing of Microsoft Defender SmartScreen warnings about
downloads (Microsoft Edge version 77 or later)

Administrative Templates\Windows Components\File Enable with the Warn and prevent bypass option. Stops
Explorer\Configure Windows Defender SmartScreen employees from ignoring warning messages about
malicious files downloaded from the Internet.

MDM setting Recommendation

Browser/AllowSmartScreen 1. Turns on Microsoft Defender SmartScreen.

Browser/PreventSmartScreenPromptOverride 1. Stops employees from ignoring warning messages and continuing to a


potentially malicious website.

Browser/PreventSmartScreenPromptOverrideForFiles 1. Stops employees from ignoring warning messages and continuing to


download potentially malicious files.
MDM setting Recommendation

SmartScreen/EnableSmartScreenInShell 1. Turns on Microsoft Defender SmartScreen in Windows.

Requires at least Windows 10, version 1703.

SmartScreen/PreventOverrideForFilesInShell 1. Stops employees from ignoring warning messages about malicious files
downloaded from the Internet.

Requires at least Windows 10, version 1703.

Related articles
Available Group Policy and Mobile Device Management (MDM) settings for Microsoft Edge
Enhanced Phishing Protection in
Microsoft Defender SmartScreen
Article • 09/25/2023 • Applies to: ✅ Windows 11, version 22H2

Starting in Windows 11, version 22H2, Enhanced Phishing Protection in Microsoft


Defender SmartScreen helps protect Microsoft school or work passwords against
phishing and unsafe usage on sites and apps.

If a user signs into Windows using a password, Enhanced Phishing Protection works
alongside Windows security protections, and helps protect typed work or school
password used to sign into Windows 11 in these ways:

If users type or paste their work or school password on any browser, into a site
deemed malicious by Microsoft Defender SmartScreen, Enhanced Phishing
Protection alerts them. It also alerts them to change their password so attackers
can't gain access to their account.
Reusing work or school passwords makes it easy for attackers who compromise a
user's password to gain access to their other accounts. Enhanced Phishing
Protection can warn users if they reuse their work or school Microsoft account
password on sites and apps and alert them to change their password.
Since it's unsafe to store plaintext passwords in text editors, Enhanced Phishing
Protection can warn users if they store their work or school password in Notepad,
Word, or any Microsoft 365 Office app, and recommends they delete their
password from the file.
If users type their work or school password into a website or app that SmartScreen
finds suspicious, Enhanced Phishing Protection can automatically collect
information from that website or app to help identify security threats. For example,
the content displayed, sounds played, and application memory.

7 Note

When a user signs-in to a device using a Windows Hello for Business PIN or
biometric, Enhanced Phishing Protection does not alert the user or send events to
Microsoft Defender for Endpoint.

Benefits of Enhanced Phishing Protection in


Microsoft Defender SmartScreen
Enhanced Phishing Protection provides robust phishing protections for work or school
passwords that are used to sign into Windows 11. The benefits of Enhanced Phishing
Protection are:

Anti-phishing support: Phishing attacks trick users through convincing imitations


of safe content or through credential harvesting content hosted inside trusted sites
and applications. Enhanced Phishing Protection helps protect users from reported
phishing sites by evaluating the URLs a site or app is connecting to, along with
other characteristics, to determine if they're known to distribute or host unsafe
content.

Secure operating system integration: Enhanced Phishing Protection is integrated


directly into the Windows 11 operating system, so it can understand users'
password entry context (including process connections, URLs, certificate
information) in any browser or app. Because Enhanced Phishing Protection has
unparalleled insight into what is happening at the OS level, it can identify when
users type their work or school password unsafely. If users do use their work or
school password unsafely, the feature empowers users to change their password to
minimize chances of their compromised credential being weaponized against
them.

Unparalleled telemetry shared throughout Microsoft's security suite: Enhanced


Phishing Protection is constantly learning from phishing attacks seen throughout
the entire Microsoft security stack. It works alongside other Microsoft security
products, to provide a layered approach to password security, especially for
organizations early in their password-less authentication journey. If your
organization uses Microsoft Defender for Endpoint, you can see valuable phishing
sensors data in the Microsoft 365 Defender Portal. This portal lets you view
Enhanced Phishing Protection alerts and reports for unsafe password usage in your
environment.

Easy management through Group Policy and Microsoft Intune: Enhanced


Phishing Protection works with Group Policy and mobile device management
(MDM) settings to help you manage your organization's computer settings. Based
on how you set up Enhanced Phishing Protection, you can customize which
phishing protection scenarios show users warning dialogs. For example, the Service
Enabled setting determines whether the Enhanced Phishing Protection service is
on or off. The feature is in audit mode if the other settings, which correspond to
notification policies, aren't enabled.

Windows edition and licensing requirements


The following table lists the Windows editions that support Enhanced phishing
protection with SmartScreen:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Enhanced phishing protection with SmartScreen license entitlements are granted by the
following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Configure Enhanced Phishing Protection for


your organization
Enhanced Phishing Protection can be configured via Microsoft Intune, Group Policy
Objects (GPO) or Configuration Service Providers (CSP) with an MDM service. Follow
these instructions to configure your devices using either Microsoft Intune, GPO or CSP.

Intune

To configure devices using Microsoft Intune, create a Settings catalog policy, and
use the settings listed under the category SmartScreen > Enhanced Phishing
Protection :

Setting Description

Service This policy setting determines whether Enhanced Phishing Protection is in


Enabled audit mode or off. Users don't see any notifications for any protection
scenarios when Enhanced Phishing Protection is in audit mode. In audit mode,
Enhanced Phishing Protection captures unsafe password entry events and
sends diagnostic data through Microsoft Defender.
If you enable or don't configure this setting, Enhanced Phishing Protection
is enabled in audit mode, preventing users to turn it off.
If you disable this policy setting, Enhanced Phishing Protection is off. When
off, Enhanced Phishing Protection doesn't capture events, send data, or notify
users. Additionally, your users are unable to turn it on.
Setting Description

Notify This policy setting determines whether Enhanced Phishing Protection warns
Malicious your users if they type their work or school password into one of the following
malicious scenarios: into a reported phishing site, into a sign-in URL with an
invalid certificate, or into an application connecting to either a reported
phishing site or a sign-in URL with an invalid certificate
If you enable this policy setting, Enhanced Phishing Protection warns your
users if they type their work or school password into one of the malicious
scenarios described above and encourages them to change their password.
If you disable or don't configure this policy setting, Enhanced Phishing
Protection doesn't warn users if they type their work or school password into
one of the malicious scenarios described above.

Notify This policy setting determines whether Enhanced Phishing Protection warns
Password your users if they reuse their work or school password.
Reuse If you enable this policy setting, Enhanced Phishing Protection warns users
if they reuse their work, or school password and encourages them to change
it.
If you disable or don't configure this policy setting, Enhanced Phishing
Protection doesn't warn users if they reuse their work or school password.

Notify This policy setting determines whether Enhanced Phishing Protection warns
Unsafe App your users if they type their work or school passwords in Notepad or
Microsoft 365 Office Apps.
If you enable this policy setting, Enhanced Phishing Protection warns your
users if they store their password in Notepad or Microsoft 365 Office Apps.
If you disable or don't configure this policy setting, Enhanced Phishing
Protection doesn't warn users if they store their password in Notepad or
Microsoft 365 Office Apps.

Assign the policy to a security group that contains as members the devices or users
that you want to configure.

Recommended settings for your organization


By default, Enhanced Phishing Protection is deployed in audit mode, preventing
notifications to the users for any protection scenarios. In audit mode, Enhanced Phishing
Protection captures unsafe password entry events and sends diagnostic data through
Microsoft Defender. Users aren't warned if they enter their work or school password into
a phishing site, if they reuse their password, or if they unsafely store their password in
applications. Because of this possibility, it's recommended that you configure Enhanced
Phishing Protection to warn users during all protection scenarios.

To better help you protect your organization, we recommend turning on and using
these specific Microsoft Defender SmartScreen settings.
Intune

Settings Recommendation
catalog
element

Service Enable: Turns on Enhanced Phishing Protection in audit mode, which


Enabled captures work or school password entry events and sends diagnostic data
but doesn't show any notifications to your users.

Notify Enable: Turns on Enhanced Phishing Protection notifications when users


Malicious type their work or school password into one of the previously described
malicious scenarios and encourages them to change their password.

Notify Enable: Turns on Enhanced Phishing Protection notifications when users


Password reuse their work or school password and encourages them to change their
Reuse password.

Notify Unsafe Enable: Turns on Enhanced Phishing Protection notifications when users
App type their work or school passwords in Notepad and Microsoft 365 Office
Apps.

Related articles
SmartScreen frequently asked questions
WebThreatDefense CSP
Threat protection
Microsoft Defender for Endpoint
documentation
Microsoft Defender for Endpoint delivers preventative protection, post-breach
detection, automated investigation, and response.

Microsoft Defender for Endpoint

e OVERVIEW

What is Microsoft Defender for Endpoint?

What is Defender for Endpoint plan 1?

Compare Defender for Endpoint plans

h WHAT'S NEW

What's new in Microsoft Defender for Endpoint

Announcing Microsoft Defender for Endpoint Plan 1

q VIDEO

Overview video

Evaluate & deploy the service

b GET STARTED

Evaluate Microsoft Defender for Endpoint

Plan your deployment

` DEPLOY

Deployment guide

Onboard supported devices

Set up and configure Defender for Endpoint Plan 1

c HOW-TO GUIDE
Migration guide

q VIDEO

Onboarding video

Security operations

e OVERVIEW

Endpoint detection and response

Behavioral blocking and containment

Automated investigation and response (AIR)

Advanced hunting

Microsoft Threat Experts

Threat analytics

Use Microsoft Defender for Endpoint on other platforms

e OVERVIEW

Microsoft Defender for Endpoint on Mac

Microsoft Defender for Endpoint on iOS

Microsoft Defender for Endpoint on Linux

Microsoft Defender for Endpoint on Android

Reference

i REFERENCE

Management and APIs

Partner integration
Security administration

e OVERVIEW

Microsoft Defender Vulnerability Management

Attack surface reduction

Next-generation protection
Windows application security
Article • 08/02/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Cybercriminals can take advantage of poorly secured applications to access valuable


resources. With Windows, IT admins can combat common application attacks from the
moment a device is provisioned. For example, IT can remove local admin rights from
user accounts, so that PCs run with least privilege to prevent malicious applications from
accessing sensitive resources.

Learn more about application security features in Windows.

Application and driver control


Feature name Description

Smart App Smart App Control prevents users from running malicious applications on
Control Windows devices by blocking untrusted or unsigned applications. Smart App
Control goes beyond previous built-in browser protections, by adding another
layer of security that is woven directly into the core of the OS at the process
level. Using AI, our new Smart App Control only allows processes to run that are
predicted to be safe based on existing and new intelligence processed daily.
Smart App Control builds on top of the same cloud-based AI used in Windows
Defender Application Control (WDAC) to predict the safety of an application, so
people can be confident they're using safe and reliable applications on their new
Windows 11 devices, or Windows 11 devices that have been reset.

AppLocker

Windows Your organization is only as secure as the applications that run on your devices.
Defender With application control, apps must earn trust to run, in contrast to an
Application application trust model where all code is assumed trustworthy. By helping
Control prevent unwanted or malicious code from running, application control is an
(WDAC) important part of an effective security strategy. Many organizations cite
application control as one of the most effective means for addressing the threat
of executable file-based malware.

Windows 10 and above include Windows Defender Application Control (WDAC)


and AppLocker. WDAC is the next generation app control solution for Windows
and provides powerful control over what runs in your environment. Customers
who were using AppLocker on previous versions of Windows can continue to
use the feature as they consider whether to switch to WDAC for the stronger
protection.

User Account User Account Control (UAC) helps prevent malware from damaging a device.
Control (UAC) With UAC, apps and tasks always run in the security context of a non-
administrator account, unless an administrator authorizes administrator-level
Feature name Description

access to the system. UAC can block the automatic installation of unauthorized
apps and prevents inadvertent changes to system settings. Enabling UAC helps
to prevent malware from altering device settings and potentially gaining access
to networks and sensitive data. UAC can also block the automatic installation of
unauthorized apps and prevent inadvertent changes to system settings.

Microsoft The Windows kernel is the most privileged software and is therefore a
vulnerable compelling target for malware authors. Since Windows has strict requirements
driver for code running in the kernel, cybercriminals commonly exploit vulnerabilities
blocklist in kernel drivers to get access. Microsoft works with the ecosystem partners to
constantly identify and respond to potentially vulnerable kernel drivers.

Prior to Windows 11, version 22H2, the operating system enforced a block
policy when HVCI is enabled to prevent vulnerable versions of drivers from
running. Starting in Windows 11, version 22H2, the block policy is enabled by
default for all new Windows devices, and users can opt-in to enforce the policy
from the Windows Security app.

Application isolation
Feature name Description

Microsoft Defender Standalone mode allows Windows users to use hardware-isolated browsing
Application Guard sessions without any administrator or management policy configuration. In
(MDAG) for Edge this mode, user must manually start Microsoft Edge in Application Guard
standalone mode from Edge menu for browsing untrusted sites.

Microsoft Defender Microsoft Defender Application Guard protects users' desktop while they
Application Guard browse the Internet using Microsoft Edge browser. Application Guard in
(MDAG) for Edge enterprise mode automatically redirects untrusted website navigation in an
enterprise mode anonymous and isolated Hyper-V based container, which is separate from
and enterprise the host operating system. With Enterprise mode, you can define your
management corporate boundaries by explicitly adding trusted domains and can
customizing the Application Guard experience to meet and enforce your
organization needs on Windows devices.

Microsoft Defender Enable applications using them to be isolated Hyper-V based container,
Application Guard which is separate from the host operating system.
(MDAG) public
APIs

Microsoft Defender Application Guard protects Office files including Word, PowerPoint, and
Application Guard Excel. Application icons have a small shield if Application Guard has been
(MDAG) for enabled and they are under protection.
Microsoft Office
Feature name Description

Microsoft Defender The WindowsDefenderApplicationGuard configuration service provider


Application Guard (CSP) is used by the enterprise to configure the settings in Microsoft
(MDAG) configure Defender Application Guard.
via MDM

App containers Universal Windows Platform (UWP) applications run in Windows containers
known as app containers. Processes that run in app containers operate with
low integrity level, meaning they have limited access to resources they
don't own. Because the default integrity level of most resources is medium
integrity level, the UWP app can access only a subset of the filesystem,
registry, and other resources. The app container also enforces restrictions
on network connectivity; for example, access to a local host isn't allowed.
As a result, malware or infected apps have limited footprint for escape.

Windows Sandbox Windows Sandbox provides a lightweight desktop environment to safely


run untrusted Win32 applications in isolation, using the same hardware-
based Hyper-V virtualization technology to isolate apps without fear of
lasting impact to your PC.
Application Control for Windows
Article • 08/30/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

7 Note

Some capabilities of Windows Defender Application Control are only available on


specific Windows versions. Learn more about the Windows Defender Application
Control feature availability.

With thousands of new malicious files created every day, using traditional methods like
antivirus solutions-signature-based detection to fight against malware-provides an
inadequate defense against new attacks.

In most organizations, information is the most valuable asset, and ensuring that only
approved users have access to that information is imperative. However, when a user
runs a process, that process has the same level of access to data that the user has. As a
result, sensitive information could easily be deleted or transmitted out of the
organization if a user knowingly or unknowingly runs malicious software.

Application control can help mitigate these types of security threats by restricting the
applications that users are allowed to run and the code that runs in the System Core
(kernel). Application control policies can also block unsigned scripts and MSIs, and
restrict Windows PowerShell to run in Constrained Language Mode.

Application control is a crucial line of defense for protecting enterprises given today's
threat landscape, and it has an inherent advantage over traditional antivirus solutions.
Specifically, application control moves away from an application trust model where all
applications are assumed trustworthy to one where applications must earn trust in order
to run. Many organizations, like the Australian Signals Directorate, understand the
significance of application control and frequently cite application control as one of the
most effective means for addressing the threat of executable file-based malware (.exe,
.dll, etc.).

7 Note
Although application control can significantly harden your computers against
malicious code, we recommend that you continue to maintain an enterprise
antivirus solution for a well-rounded enterprise security portfolio.

Windows 10 and Windows 11 include two technologies that can be used for application
control depending on your organization's specific scenarios and requirements:

Windows Defender Application Control (WDAC); and


AppLocker

WDAC and Smart App Control


Starting in Windows 11 version 22H2, Smart App Control provides application control
for consumers. Smart App Control is based on WDAC, allowing enterprise customers to
create a policy that offers the same security and compatibility with the ability to
customize it to run line-of-business (LOB) apps. To make it easier to implement this
policy, an example policy is provided. The example policy includes Enabled:Conditional
Windows Lockdown Policy option that isn't supported for WDAC enterprise policies.
This rule must be removed before you use the example policy. To use this example
policy as a starting point for creating your own policy, see Create a custom base policy
using an example WDAC base policy.

Smart App Control is only available on clean installation of Windows 11 version 22H2 or
later, and starts in evaluation mode. Smart App Control is automatically turned off for
enterprise managed devices unless the user has turned it on first. To turn off Smart App
Control across your organization's endpoints, you can set the
VerifiedAndReputablePolicyState (DWORD) registry value under
HKLM\SYSTEM\CurrentControlSet\Control\CI\Policy as shown in the following table. After

you change the registry value, you must either restart the device or use CiTool.exe -r for
the change to take effect.

Value Description

0 Off

1 Enforce

2 Evaluation

) Important
Once you turn Smart App Control off, it can't be turned on without resetting or
reinstalling Windows.

Smart App Control Enforced Blocks


Smart App Control enforces the Microsoft Recommended Driver Block rules and the
Microsoft Recommended Block Rules, with a few exceptions for compatibility
considerations. The following aren't blocked by Smart App Control:

Infdefaultinstall.exe
Microsoft.Build.dll
Microsoft.Build.Framework.dll
Wslhost.dll

Windows edition and licensing requirements


The following table lists the Windows editions that support Windows Defender
Application Control (WDAC):

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Windows Defender Application Control (WDAC) license entitlements are granted by the
following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Related articles
WDAC design guide
WDAC deployment guide
WDAC operational guide
AppLocker overview
Application Control for Windows
Article • 08/30/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

7 Note

Some capabilities of Windows Defender Application Control are only available on


specific Windows versions. Learn more about the Windows Defender Application
Control feature availability.

With thousands of new malicious files created every day, using traditional methods like
antivirus solutions-signature-based detection to fight against malware-provides an
inadequate defense against new attacks.

In most organizations, information is the most valuable asset, and ensuring that only
approved users have access to that information is imperative. However, when a user
runs a process, that process has the same level of access to data that the user has. As a
result, sensitive information could easily be deleted or transmitted out of the
organization if a user knowingly or unknowingly runs malicious software.

Application control can help mitigate these types of security threats by restricting the
applications that users are allowed to run and the code that runs in the System Core
(kernel). Application control policies can also block unsigned scripts and MSIs, and
restrict Windows PowerShell to run in Constrained Language Mode.

Application control is a crucial line of defense for protecting enterprises given today's
threat landscape, and it has an inherent advantage over traditional antivirus solutions.
Specifically, application control moves away from an application trust model where all
applications are assumed trustworthy to one where applications must earn trust in order
to run. Many organizations, like the Australian Signals Directorate, understand the
significance of application control and frequently cite application control as one of the
most effective means for addressing the threat of executable file-based malware (.exe,
.dll, etc.).

7 Note
Although application control can significantly harden your computers against
malicious code, we recommend that you continue to maintain an enterprise
antivirus solution for a well-rounded enterprise security portfolio.

Windows 10 and Windows 11 include two technologies that can be used for application
control depending on your organization's specific scenarios and requirements:

Windows Defender Application Control (WDAC); and


AppLocker

WDAC and Smart App Control


Starting in Windows 11 version 22H2, Smart App Control provides application control
for consumers. Smart App Control is based on WDAC, allowing enterprise customers to
create a policy that offers the same security and compatibility with the ability to
customize it to run line-of-business (LOB) apps. To make it easier to implement this
policy, an example policy is provided. The example policy includes Enabled:Conditional
Windows Lockdown Policy option that isn't supported for WDAC enterprise policies.
This rule must be removed before you use the example policy. To use this example
policy as a starting point for creating your own policy, see Create a custom base policy
using an example WDAC base policy.

Smart App Control is only available on clean installation of Windows 11 version 22H2 or
later, and starts in evaluation mode. Smart App Control is automatically turned off for
enterprise managed devices unless the user has turned it on first. To turn off Smart App
Control across your organization's endpoints, you can set the
VerifiedAndReputablePolicyState (DWORD) registry value under
HKLM\SYSTEM\CurrentControlSet\Control\CI\Policy as shown in the following table. After

you change the registry value, you must either restart the device or use CiTool.exe -r for
the change to take effect.

Value Description

0 Off

1 Enforce

2 Evaluation

) Important
Once you turn Smart App Control off, it can't be turned on without resetting or
reinstalling Windows.

Smart App Control Enforced Blocks


Smart App Control enforces the Microsoft Recommended Driver Block rules and the
Microsoft Recommended Block Rules, with a few exceptions for compatibility
considerations. The following aren't blocked by Smart App Control:

Infdefaultinstall.exe
Microsoft.Build.dll
Microsoft.Build.Framework.dll
Wslhost.dll

Windows edition and licensing requirements


The following table lists the Windows editions that support Windows Defender
Application Control (WDAC):

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Windows Defender Application Control (WDAC) license entitlements are granted by the
following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Related articles
WDAC design guide
WDAC deployment guide
WDAC operational guide
AppLocker overview
Windows Defender Application Control
and virtualization-based protection of
code integrity
Article • 07/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Applies to

Windows 10
Windows 11
Windows Server 2016 and higher

Windows includes a set of hardware and OS technologies that, when configured


together, allow enterprises to "lock down" Windows systems so they behave more like
mobile devices. In this configuration, Windows Defender Application Control (WDAC)
is used to restrict devices to run only approved apps, while the OS is hardened against
kernel memory attacks using memory integrity.

7 Note

Memory integrity is sometimes referred to as hypervisor-protected code integrity


(HVCI) or hypervisor enforced code integrity, and was originally released as part of
Device Guard. Device Guard is no longer used except to locate memory integrity
and VBS settings in Group Policy or the Windows registry.

WDAC policies and memory integrity are powerful protections that can be used
separately. However, when these two technologies are configured to work together,
they present a strong protection capability for Windows devices.

Using WDAC to restrict devices to only authorized apps has these advantages over other
solutions:

1. The Windows kernel handles enforcement of WDAC policy and requires no other
services or agents.
2. The WDAC policy takes effect early in the boot sequence before nearly all other OS
code and before traditional antivirus solutions run.
3. WDAC lets you set application control policy for any code that runs on Windows,
including kernel mode drivers and even code that runs as part of Windows.
4. Customers can protect the WDAC policy even from local administrator tampering
by digitally signing the policy. Changing signed policy requires both administrative
privilege and access to the organization's digital signing process. Using signed
policies makes it difficult for an attacker, including one who has managed to gain
administrative privilege, to tamper with WDAC policy.
5. You can protect the entire WDAC enforcement mechanism with memory integrity.
Even if a vulnerability exists in kernel mode code, memory integrity greatly reduces
the likelihood that an attacker could successfully exploit it. Without memory
integrity, an attacker who compromises the kernel could normally disable most
system defenses, including application control policies enforced by WDAC or any
other application control solution.

There are no direct dependencies between WDAC and memory integrity. You can deploy
them individually or together and there's no order in which they must be deployed.

Memory integrity relies on Windows virtualization-based security, and has hardware,


firmware, and kernel driver compatibility requirements that some older systems can't
meet.

WDAC has no specific hardware or software requirements.

Related articles
Windows Defender Application Control
Memory integrity
Driver compatibility with memory integrity
User Account Control overview
Article • 05/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

User Account Control (UAC) is a Windows security feature designed to protect the
operating system from unauthorized changes. When changes to the system require
administrator-level permission, UAC notifies the user, giving the opportunity to approve
or deny the change. UAC improves the security of Windows devices by limiting the
access that malicious code has to execute with administrator privileges. UAC empowers
users to make informed decisions about actions that may affect the stability and security
of their device.

Unless you disable UAC, malicious software is prevented from disabling or interfering
with UAC settings. UAC is enabled by default, and you can configure it if you have
administrative privileges.

Benefits of UAC
UAC allows all users to sign in their devices using a standard user account. Processes
launched using a standard user token may perform tasks using access rights granted to a
standard user. For instance, Windows Explorer automatically inherits standard user level
permissions. Any applications that are started using Windows Explorer (for example, by
opening a shortcut) also run with the standard set of user permissions. Most
applications, including the ones included with the operating system, are designed to
work properly this way.
Other applications, like ones that aren't designed with security settings in mind, may
require more permissions to run successfully. These applications are referred to as
legacy apps.

When a user tries to perform an action that requires administrative privileges, UAC
triggers a consent prompt. The prompt notifies the user that a change is about to occur,
asking for their permission to proceed:

If the user approves the change, the action is performed with the highest available
privilege
If the user doesn't approve the change, the action isn't performed and the
application that requested the change is prevented from running
When an app requires to run with more than standard user rights, UAC allows users to
run apps with their administrator token (that is, with administrative rights and
permissions) instead of their default, standard user token. Users continue to operate in
the standard user security context, while enabling certain apps to run with elevated
privileges, if needed.

Windows edition and licensing requirements


The following table lists the Windows editions that support User Account Control (UAC):

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

User Account Control (UAC) license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Next steps
How User Account Control works
User Account Control settings and configuration
How User Account Control works
Article • 05/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

User Account Control (UAC) is a key part of Windows security. UAC reduces the risk of
malware by limiting the ability of malicious code to execute with administrator
privileges. This article describes how UAC works and how it interacts with the end-users.

UAC process and interactions


With UAC, each application that requires the administrator access token must prompt the
end user for consent. The only exception is the relationship that exists between parent
and child processes. Child processes inherit the user's access token from the parent
process. Both the parent and child processes, however, must have the same integrity
level.

Windows protects processes by marking their integrity levels. Integrity levels are
measurements of trust:

A high integrity application is one that performs tasks that modify system data,
such as a disk partitioning application
A low integrity application is one that performs tasks that could potentially
compromise the operating system, like as a Web brows

Applications with lower integrity levels can't modify data in applications with higher
integrity levels. When a standard user attempts to run an app that requires an
administrator access token, UAC requires that the user provides valid administrator
credentials.

To better understand how this process works, let's take a closer look at the Windows
sign in process.

Sign in process
The following diagram shows how the sign in process for an administrator differs from
the sign in process for a standard user.
By default, both standard and administrator users access resources and execute apps in
the security context of a standard user.
When a user signs in, the system creates an access token for that user. The access token
contains information about the level of access that the user is granted, including specific
security identifiers (SIDs) and Windows privileges.

When an administrator logs on, two separate access tokens are created for the user: a
standard user access token and an administrator access token. The standard user access
token:

Contains the same user-specific information as the administrator access token, but
the administrative Windows privileges and SIDs are removed
It's used to start applications that don't perform administrative tasks (standard user
apps)
It's used to display the desktop by executing the process explorer.exe. Explorer.exe
is the parent process from which all other user-initiated processes inherit their
access token. As a result, all apps run as a standard user unless a user provides
consent or credentials to approve an app to use a full administrative access token

A user that is a member of the Administrators group can sign in, browse the Web, and
read e-mail while using a standard user access token. When the administrator needs to
perform a task that requires the administrator access token, Windows automatically
prompts the user for approval. This prompt is called an elevation prompt, and its
behavior can be configured via policy or registry.

The UAC user experience


When UAC is enabled, the user experience for standard users is different from
administrator users. The recommended and more secure method of running Windows,
is to ensure your primary user account is a standard user. Running as a standard user
helps to maximize security for a managed environment. With the built-in UAC elevation
component, standard users can easily perform an administrative task by entering valid
credentials for a local administrator account.

The default, built-in UAC elevation component for standard users is the credential
prompt.

The alternative to running as a standard user is to run as an administrator in Admin


Approval Mode. With the built-in UAC elevation component, members of the local
Administrators group can easily perform an administrative task by providing approval.

The default, built-in UAC elevation component for an administrator account in Admin
Approval Mode is called the consent prompt.

The credential prompt


The credential prompt is presented when a standard user attempts to perform a task
that requires a user's administrative access token. Administrators can also be required to
provide their credentials by setting the User Account Control: Behavior of the elevation
prompt for administrators in Admin Approval Mode policy setting value to Prompt for
credentials.

The consent prompt


The consent prompt is presented when a user attempts to perform a task that requires a
user's administrative access token.
UAC elevation prompts
The UAC elevation prompts are color-coded to be app-specific, enabling for easier
identification of an application's potential security risk. When an app attempts to run
with an administrator's full access token, Windows first analyzes the executable file to
determine its publisher. Apps are first separated into three categories based on the file's
publisher:

Windows
Publisher verified (signed)
Publisher not verified (unsigned)

The elevation prompt color-coding is as follows:

Gray background: The application is a Windows administrative app, such as a


Control Panel item, or an application signed by a verified publisher
Yellow background: the application is unsigned or signed but isn't trusted

Shield icon
Some Control Panel items, such as Date and Time, contain a combination of
administrator and standard user operations. Standard users can view the clock and
change the time zone, but a full administrator access token is required to change the
local system time. The following is a screenshot of the Date and Time Control Panel
item.
The shield icon on the Change date and time... button indicates that the process
requires a full administrator access token.

Securing the elevation prompt


The elevation process is further secured by directing the prompt to the secure desktop.
The consent and credential prompts are displayed on the secure desktop by default.
Only Windows processes can access the secure desktop. For higher levels of security, we
recommend keeping the User Account Control: Switch to the secure desktop when
prompting for elevation policy setting enabled.
When an executable file requests elevation, the interactive desktop, also called the user
desktop, is switched to the secure desktop. The secure desktop dims the user desktop
and displays an elevation prompt that must be responded to before continuing. When
the user selects Yes or No, the desktop switches back to the user desktop.

7 Note

Starting in Windows Server 2019, it's not possible to paste the content of the
clipboard on the secure desktop. This is the same behavior of the currently
supported Windows client OS versions.

Malware can present an imitation of the secure desktop, but when the User Account
Control: Behavior of the elevation prompt for administrators in Admin Approval
Mode policy setting is set to Prompt for consent, the malware doesn't gain elevation if
the user selects Yes on the imitation. If the policy setting is set to Prompt for
credentials, malware imitating the credential prompt may be able to gather the
credentials from the user. However, the malware doesn't gain elevated privilege and the
system has other protections that mitigate malware from taking control of the user
interface even with a harvested password.

While malware could present an imitation of the secure desktop, this issue can't occur
unless a user previously installed the malware on the PC. Because processes requiring an
administrator access token can't silently install when UAC is enabled, the user must
explicitly provide consent by selecting Yes or by providing administrator credentials. The
specific behavior of the UAC elevation prompt is dependent upon security policies.

UAC Architecture
The following diagram details the UAC architecture.
To better understand each component, review the following tables:

User

Component Description

User performs If the operation changes the file system or registry, Virtualization is called.
operation requiring All other operations call ShellExecute.
privilege

ShellExecute ShellExecute calls CreateProcess. ShellExecute looks for the


ERROR_ELEVATION_REQUIRED error from CreateProcess. If it receives the
Component Description

error, ShellExecute calls the Application Information service to attempt to


perform the requested task with the elevated prompt.

CreateProcess If the application requires elevation, CreateProcess rejects the call with
ERROR_ELEVATION_REQUIRED.

System

Component Description

Application A system service that helps start apps that require one or more elevated
Information privileges or user rights to run, such as local administrative tasks, and apps that
service require higher integrity levels. The Application Information service helps start
such apps by creating a new process for the application with an administrative
user's full access token when elevation is required. Depending on the
configured policies, the user may give consent.

Elevating an If ActiveX isn't installed, the system checks the UAC slider level. If ActiveX is
ActiveX install installed, the User Account Control: Switch to the secure desktop when
prompting for elevation Group Policy setting is checked.

Check UAC UAC has a slider to select from four levels of notification.
slider level
Always notify will:
Notify you when programs try to install software or make changes to
your computer.
Notify you when you make changes to Windows settings.
Freeze other tasks until you respond.

Recommended if you often install new software or visit unfamiliar


websites.
Notify me only when programs try to make changes to my computer
will:
Notify you when programs try to install software or make changes to
your computer.
Not notify you when you make changes to Windows settings.
Freeze other tasks until you respond.

Recommended if you don't often install apps or visit unfamiliar websites.


Notify me only when programs try to make changes to my computer
(do not dim my desktop) will:
Notify you when programs try to install software or make changes to
your computer.
Not notify you when you make changes to Windows settings.
Not freeze other tasks until you respond.

Not recommended. Choose this only if it takes a long time to dim the
desktop on your computer.
Component Description

Never notify (Disable UAC prompts) will:


Not notify you when programs try to install software or make changes
to your computer.
Not notify you when you make changes to Windows settings.
Not freeze other tasks until you respond.

Not recommended due to security concerns.

Secure desktop The User Account Control: Switch to the secure desktop when prompting for
enabled elevation policy setting is checked:

If the secure desktop is enabled, all elevation requests go to the secure


desktop regardless of prompt behavior policy settings for administrators
and standard users.
If the secure desktop isn't enabled, all elevation requests go to the
interactive user's desktop, and the per-user settings for administrators
and standard users are used.

CreateProcess CreateProcess calls AppCompat, Fusion, and Installer detection to assess if the
app requires elevation. The file is then inspected to determine its requested
execution level, which is stored in the application manifest for the file.
CreateProcess fails if the requested execution level specified in the manifest
doesn't match the access token and returns an error
(ERROR_ELEVATION_REQUIRED) to ShellExecute.

AppCompat The AppCompat database stores information in the application compatibility fix
entries for an application.

Fusion The Fusion database stores information from application manifests that
describe the applications. The manifest schema is updated to add a new
requested execution level field.

Installer Installer detection detects setup files, which helps prevent installations from
detection being run without the user's knowledge and consent.

Kernel

Component Description

Virtualization Virtualization technology ensures that noncompliant apps don't silently fail to
run or fail in a way that the cause can't be determined. UAC also provides file
and registry virtualization and logging for applications that write to protected
areas.

File system and The per-user file and registry virtualization redirects per-computer registry and
registry file write requests to equivalent per-user locations. Read requests are
Component Description

redirected to the virtualized per-user location first and to the per-computer


location second.

The slider never turns off UAC completely. If you set it to Never notify, it will:

Keep the UAC service running


Cause all elevation request initiated by administrators to be auto-approved
without showing a UAC prompt
Automatically deny all elevation requests for standard users

) Important

In order to fully disable UAC you must disable the policy User Account Control:
Run all administrators in Admin Approval Mode.

2 Warning

Some Universal Windows Platform apps may not work when UAC is disabled.

Virtualization
Because system administrators in enterprise environments attempt to secure systems,
many line-of-business (LOB) applications are designed to use only a standard user
access token. As a result, you don't need to replace most apps when UAC is turned on.

Windows includes file and registry virtualization technology for apps that aren't UAC-
compliant and that requires an administrator's access token to run correctly. When an
administrative app that isn't UAC-compliant attempts to write to a protected folder,
such as Program Files, UAC gives the app its own virtualized view of the resource it's
attempting to change. The virtualized copy is maintained in the user's profile. This
strategy creates a separate copy of the virtualized file for each user that runs the
noncompliant app.

Most app tasks operate properly by using virtualization features. Although virtualization
allows most applications to run, it's a short-term fix and not a long-term solution. App
developers should modify their apps to be compliant as soon as possible, rather than
relying on file, folder, and registry virtualization.

Virtualization isn't an option in the following scenarios:


Virtualization doesn't apply to apps that are elevated and run with a full
administrative access token
Virtualization supports only 32-bit apps. Non-elevated 64-bit apps receive an
access denied message when they attempt to acquire a handle (a unique identifier)
to a Windows object. Native Windows 64-bit apps are required to be compatible
with UAC and to write data into the correct locations
Virtualization is disabled if the app includes an app manifest with a requested
execution level attribute

Request execution levels


An app manifest is an XML file that describes and identifies the shared and private side-
by-side assemblies that an app should bind to at run time. The app manifest includes
entries for UAC app compatibility purposes. Administrative apps that include an entry in
the app manifest prompt the user for permission to access the user's access token.
Although they lack an entry in the app manifest, most administrative app can run
without modification by using app compatibility fixes. App compatibility fixes are
database entries that enable applications that aren't UAC-compliant to work properly.

All UAC-compliant apps should have a requested execution level added to the
application manifest. If the application requires administrative access to the system,
marking the app with a requested execution level of require administrator ensures that
the system identifies this program as an administrative app, and performs the necessary
elevation steps. Requested execution levels specify the privileges required for an app.

Installer detection technology


Installation programs are apps designed to deploy software. Most installation programs
write to system directories and registry keys. These protected system locations are
typically writeable only by an administrator in Installer detection technology, which
means that standard users don't have sufficient access to install programs. Windows
heuristically detects installation programs and requests administrator credentials or
approval from the administrator user in order to run with access privileges. Windows
also heuristically detects updates and programs that uninstall applications. One of the
design goals of UAC is to prevent installations from being run without the user's
knowledge and consent because installation programs write to protected areas of the
file system and registry.

Installer detection only applies to:

32-bit executable files


Applications without a requested execution level attribute
Interactive processes running as a standard user with UAC enabled

Before a 32-bit process is created, the following attributes are checked to determine
whether it's an installer:

The file name includes keywords such as "install," "setup," or "update."


Versioning Resource fields contain the following keywords: Vendor, Company
Name, Product Name, File Description, Original Filename, Internal Name, and
Export Name
Keywords in the side-by-side manifest are embedded in the executable file
Keywords in specific StringTable entries are linked in the executable file
Key attributes in the resource script data are linked in the executable file
There are targeted sequences of bytes within the executable file

7 Note

The keywords and sequences of bytes were derived from common characteristics
observed from various installer technologies.

7 Note

The User Account Control: Detect application installations and prompt for elevation
policy must be enabled for installer detection to detect installation programs. For
more information, see User Account Control settings list.

Next steps
Learn more about User Account Control settings and configuration.
User Account Control settings and
configuration
Article • 07/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

User Account Control settings list


The following table lists the available settings to configure the UAC behavior, and their
default values.

Setting name Description

Admin Approval Controls the behavior of Admin Approval Mode for the built-in
Mode for the Built- Administrator account.
in Administrator
account Enabled: The built-in Administrator account uses Admin Approval Mode. By
default, any operation that requires elevation of privilege prompts the user
to approve the operation.
Disabled (default): The built-in Administrator account runs all applications
with full administrative privilege.

Allow UIAccess Controls whether User Interface Accessibility (UIAccess or UIA) programs
applications to can automatically disable the secure desktop for elevation prompts used by
prompt for a standard user.
elevation without
using the secure Enabled: UIA programs, including Remote Assistance, automatically disable
desktop the secure desktop for elevation prompts. If you don't disable the Switch to
the secure desktop when prompting for elevation policy setting, the
prompts appear on the interactive user's desktop instead of the secure
desktop. This setting allows the remote administrator to provide the
appropriate credentials for elevation. This policy setting doesn't change the
behavior of the UAC elevation prompt for administrators. If you plan to
enable this policy setting, you should also review the effect of the Behavior
of the elevation prompt for standard users policy setting: if it's' configured
as Automatically deny elevation requests, elevation requests aren't
presented to the user.
Disabled (default): The secure desktop can be disabled only by the user of
the interactive desktop or by disabling the Switch to the secure desktop
when prompting for elevation policy setting.

Behavior of the Controls the behavior of the elevation prompt for administrators.
elevation prompt
for administrators Elevate without prompting: Allows privileged accounts to perform an
operation that requires elevation without requiring consent or credentials.
Setting name Description

in Admin Approval Use this option only in the most constrained environments.
Mode Prompt for credentials on the secure desktop: When an operation requires
elevation of privilege, the user is prompted on the secure desktop to enter a
privileged user name and password. If the user enters valid credentials, the
operation continues with the user's highest available privilege.
Prompt for consent on the secure desktop: When an operation requires
elevation of privilege, the user is prompted on the secure desktop to select
either Permit or Deny. If the user selects Permit, the operation continues
with the user's highest available privilege.
Prompt for credentials: When an operation requires elevation of privilege,
the user is prompted to enter an administrative user name and password. If
the user enters valid credentials, the operation continues with the
applicable privilege.
Prompt for consent: When an operation requires elevation of privilege, the
user is prompted to select either Permit or Deny. If the user selects Permit,
the operation continues with the user's highest available privilege.
Prompt for consent for non-Windows binaries (default): When an
operation for a non-Microsoft application requires elevation of privilege,
the user is prompted on the secure desktop to select either Permit or Deny.
If the user selects Permit, the operation continues with the user's highest
available privilege.

Behavior of the Controls the behavior of the elevation prompt for standard users.
elevation prompt
for standard users Prompt for credentials (default): When an operation requires elevation of
privilege, the user is prompted to enter an administrative user name and
password. If the user enters valid credentials, the operation continues with
the applicable privilege.
Automatically deny elevation requests: When an operation requires
elevation of privilege, a configurable access denied error message is
displayed. An enterprise that is running desktops as standard user may
choose this setting to reduce help desk calls.
Prompt for credentials on the secure desktop When an operation requires
elevation of privilege, the user is prompted on the secure desktop to enter a
different user name and password. If the user enters valid credentials, the
operation continues with the applicable privilege.

Detect application Controls the behavior of application installation detection for the computer.
installations and
prompt for Enabled (default): When an app installation package is detected that
elevation requires elevation of privilege, the user is prompted to enter an
administrative user name and password. If the user enters valid credentials,
the operation continues with the applicable privilege.
Disabled: App installation packages aren't detected and prompted for
elevation. Enterprises that are running standard user desktops and use
delegated installation technologies, such as Microsoft Intune, should disable
this policy setting. In this case, installer detection is unnecessary.
Setting name Description

Only elevate Enforces signature checks for any interactive applications that request
executables that elevation of privilege. IT admins can control which applications are allowed
are signed and to run by adding certificates to the Trusted Publishers certificate store on
validated local devices.

Enabled: Enforces the certificate certification path validation for a given


executable file before it's permitted to run.
Disabled (default): Doesn't enforce the certificate certification path
validation before a given executable file is permitted to run.

Only elevate Controls whether applications that request to run with a User Interface
UIAccess Accessibility (UIAccess) integrity level must reside in a secure location in the
applications that file system. Secure locations are limited to the following folders:
are installed in - %ProgramFiles% , including subfolders
secure locations - %SystemRoot%\system32\
- %ProgramFiles(x86)% , including subfolders

Enabled (default): If an app resides in a secure location in the file system, it


runs only with UIAccess integrity.
Disabled: An app runs with UIAccess integrity even if it doesn't reside in a
secure location in the file system.

Note: Windows enforces a digital signature check on any interactive apps


that requests to run with a UIAccess integrity level regardless of the state of
this setting.

Run all Controls the behavior of all UAC policy settings.


administrators in
Admin Approval Enabled (default): Admin Approval Mode is enabled. This policy must be
Mode enabled and related UAC settings configured. The policy allows the built-in
Administrator account and members of the Administrators group to run in
Admin Approval Mode.
Disabled: Admin Approval Mode and all related UAC policy settings are
disabled. Note: If this policy setting is disabled, Windows Security notifies
you that the overall security of the operating system has been reduced.

Switch to the This policy setting controls whether the elevation request prompt is
secure desktop displayed on the interactive user's desktop or the secure desktop.
when prompting
for elevation Enabled (default): All elevation requests go to the secure desktop
regardless of prompt behavior policy settings for administrators and
standard users.
Disabled: All elevation requests go to the interactive user's desktop. Prompt
behavior policy settings for administrators and standard users are used.

Virtualize File And Controls whether application write failures are redirected to defined registry
Registry Write and file system locations. This setting mitigates applications that run as
Setting name Description

Failures To Per User administrator and write run-time application data to %ProgramFiles% ,
Locations %Windir% , %Windir%\system32 , or HKLM\Software .

Enabled (default): App write failures are redirected at run time to defined
user locations for both the file system and registry.
Disabled: Apps that write data to protected locations fail.

User Account Control configuration


To configure UAC, you can use:

Microsoft Intune/MDM
Group policy
Registry

The following instructions provide details how to configure your devices. Select the
option that best suits your needs.

Intune/MDM

Configure UAC with a Settings catalog policy


To configure devices using Microsoft Intune, create a Settings catalog policy, and
use the settings listed under the category Local Policies Security Options :


Assign the policy to a security group that contains as members the devices or users
that you want to configure.

Alternatively, you can configure devices using a custom policy with the
LocalPoliciesSecurityOptions Policy CSP.
The policy settings are located under:
./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions .

Setting

Setting name: Admin Approval Mode for the built-in Administrator account
Policy CSP name: UserAccountControl_UseAdminApprovalMode

Setting name: Allow UIAccess applications to prompt for elevation without using the secure
desktop
Policy CSP name: UserAccountControl_AllowUIAccessApplicationsToPromptForElevation

Setting name: Behavior of the elevation prompt for administrators in Admin Approval Mode
Policy CSP name: UserAccountControl_BehaviorOfTheElevationPromptForAdministrators

Setting name: Behavior of the elevation prompt for standard users


Policy CSP name: UserAccountControl_BehaviorOfTheElevationPromptForStandardUsers

Setting name: Detect application installations and prompt for elevation


Policy CSP name:
UserAccountControl_DetectApplicationInstallationsAndPromptForElevation

Setting name: Only elevate executables that are signed and validated
Policy CSP name:
UserAccountControl_OnlyElevateExecutableFilesThatAreSignedAndValidated

Setting name: Only elevate UIAccess applications that are installed in secure locations
Policy CSP name:
UserAccountControl_OnlyElevateUIAccessApplicationsThatAreInstalledInSecureLocations

Setting name: Run all administrators in Admin Approval Mode


Policy CSP name: UserAccountControl_RunAllAdministratorsInAdminApprovalMode

Setting name: Switch to the secure desktop when prompting for elevation
Policy CSP name: UserAccountControl_SwitchToTheSecureDesktopWhenPromptingForElevation

Setting name: Virtualize file and registry write failures to per-user locations
Policy CSP name:
UserAccountControl_VirtualizeFileAndRegistryWriteFailuresToPerUserLocations
Microsoft recommended driver block
rules
Article • 08/16/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

7 Note

Some capabilities of Windows Defender Application Control are only available on


specific Windows versions. Learn more about the Windows Defender Application
Control feature availability.

Microsoft has strict requirements for code running in kernel. So, malicious actors are
turning to exploit vulnerabilities in legitimate and signed kernel drivers to run malware
in kernel. One of the many strengths of the Windows platform is our strong
collaboration with independent hardware vendors (IHVs) and OEMs. Microsoft works
closely with our IHVs and security community to ensure the highest level of driver
security for our customers. When vulnerabilities in drivers are found, we work with our
partners to ensure they're quickly patched and rolled out to the ecosystem. The
vulnerable driver blocklist is designed to help harden systems against third party-
developed drivers across the Windows ecosystem with any of the following attributes:

Known security vulnerabilities that can be exploited by attackers to elevate


privileges in the Windows kernel
Malicious behaviors (malware) or certificates used to sign malware
Behaviors that aren't malicious but circumvent the Windows Security Model and
can be exploited by attackers to elevate privileges in the Windows kernel

Drivers can be submitted to Microsoft for security analysis at the Microsoft Security
Intelligence Driver Submission page . For more information about driver submission,
see Improve kernel security with the new Microsoft Vulnerable and Malicious Driver
Reporting Center . To report an issue or request a change to the vulnerable driver
blocklist, including updating a block rule once a driver vulnerability has been patched,
visit the Microsoft Security Intelligence portal or submit feedback on this article.

7 Note

Blocking drivers can cause devices or software to malfunction, and in rare cases,
lead to blue screen. The vulnerable driver blocklist is not guaranteed to block every
driver found to have vulnerabilities. Microsoft attempts to balance the security risks
from vulnerable drivers with the potential impact on compatibility and reliability to
produce the blocklist. As always, Microsoft recommends using an explicit allow list
approach to security wherever possible.

Microsoft vulnerable driver blocklist


With Windows 11 2022 update, the vulnerable driver blocklist is enabled by default for
all devices, and can be turned on or off via the Windows Security app. Except on
Windows Server 2016, the vulnerable driver blocklist is also enforced when either
memory integrity (also known as hypervisor-protected code integrity or HVCI), Smart
App Control, or S mode is active. Users can opt in to HVCI using the Windows Security
app, and HVCI is on by-default for most new Windows 11 devices.

7 Note

Windows Security is updated separately from the OS and ships out of box.
The version with the vulnerable driver blocklist toggle is in the final validation
ring and will ship to all customers very soon. Initially, you will be able to view
the configuration state only and the toggle will appear grayed out. The ability
to turn the toggle on or off will come with a future Windows update.

For Windows Insiders, the option to turn Microsoft's vulnerable driver blocklist
on or off using Windows Security settings is grayed out when HVCI, Smart
App Control, or S mode is enabled. You must disable HVCI or Smart App
Control, or switch the device out of S mode, and restart the device before you
can turn off the Microsoft vulnerable driver blocklist.

The blocklist is updated with each new major release of Windows, typically 1-2 times per
year, including most recently with the Windows 11 2022 update released in September
2022. The most current blocklist is now also available for Windows 10 20H2 and
Windows 11 21H2 users as an optional update from Windows Update. Microsoft will
occasionally publish future updates through regular Windows servicing.

Customers who always want the most up-to-date driver blocklist can also use Windows
Defender Application Control (WDAC) to apply the latest recommended driver blocklist
contained in this article. For your convenience, we've provided a download of the most
up-to-date vulnerable driver blocklist along with instructions to apply it on your
computer at the end of this article. Otherwise, you can use the XML provided below to
create your own custom WDAC policies.

Blocking vulnerable drivers using WDAC


Microsoft recommends enabling HVCI or S mode to protect your devices against
security threats. If this setting isn't possible, Microsoft recommends blocking this list of
drivers within your existing Windows Defender Application Control policy. Blocking
kernel drivers without sufficient testing can cause devices or software to malfunction,
and in rare cases, blue screen. It's recommended to first validate this policy in audit
mode and review the audit block events.

) Important

Microsoft also recommends enabling Attack Surface Reduction (ASR) rule Block
abuse of exploited vulnerable signed drivers to prevent an application from
writing a vulnerable signed driver to disk. The ASR rule doesn't block a driver
already existing on the system from loading, however enabling Microsoft
vulnerable driver blocklist or applying this WDAC policy will prevent the existing
driver from loading.

Steps to download and apply the vulnerable


driver blocklist binary
If you prefer to apply the vulnerable driver blocklist exactly as shown, follow these steps:

1. Download the WDAC policy refresh tool


2. Download and extract the vulnerable driver blocklist binaries
3. Select either the audit only version or the enforced version and rename the file to
SiPolicy.p7b
4. Copy SiPolicy.p7b to %windir%\system32\CodeIntegrity
5. Run the WDAC policy refresh tool you downloaded in Step 1 above to activate and
refresh all WDAC policies on your computer

To check that the policy was successfully applied on your computer:

1. Open Event Viewer


2. Browse to Applications and Services Logs - Microsoft - Windows - CodeIntegrity
- Operational
3. Select Filter Current Log...
4. Replace "<All Event IDs>" with "3099" and select OK.
5. Look for a 3099 event where the PolicyNameBuffer and PolicyIdBuffer match the
Name and Id PolicyInfo settings found at the bottom of the blocklist WDAC Policy
XML in this article. NOTE: Your computer may have more than one 3099 event if
other WDAC policies are also present.

7 Note

If any vulnerable drivers are already running that would be blocked by the policy,
you must reboot your computer for those drivers to be blocked. Running processes
aren't shutdown when activating a new WDAC policy without reboot.

Vulnerable driver blocklist XML

) Important

The policy listed below contains Allow All rules. If your version of Windows
supports WDAC multiple policies, we recommend deploying this policy alongside
any existing WDAC policies. If you do plan to merge this policy with another policy,
you may need to remove the Allow All rules before merging it if the other policy
applies an explicit allow list. For more information, see Create a WDAC Deny Policy.

7 Note

To use this policy with Windows Server 2016, you must convert the policy XML on a
device running a newer operating system.

XML

<?xml version="1.0" encoding="utf-8"?>


<SiPolicy xmlns="urn:schemas-microsoft-com:sipolicy">
<VersionEx>10.0.25930.0</VersionEx>
<PlatformID>{2E07F7E4-194C-4D20-B7C9-6F44A6C5A234}</PlatformID>
<Rules>
<Rule>
<Option>Enabled:Unsigned System Integrity Policy</Option>
</Rule>
<Rule>
<Option>Enabled:Advanced Boot Options Menu</Option>
</Rule>
<Rule>
<Option>Enabled:Audit Mode</Option>
</Rule>
<Rule>
<Option>Disabled:Script Enforcement</Option>
</Rule>
<Rule>
<Option>Enabled:Update Policy No Reboot</Option>
</Rule>
</Rules>
<!--EKUS-->
<EKUs />
<!--File Rules-->
<FileRules>
<Allow ID="ID_ALLOW_ALL_1" FriendlyName="" FileName="*" />
<Allow ID="ID_ALLOW_ALL_2" FriendlyName="" FileName="*" />
<Deny ID="ID_DENY_AGENT64_SHA1"
FriendlyName="Agent64\05f052_4045ae_694848_8cb62c_b1d962 Hash Sha1"
Hash="94F7575A6BB378D0CF85B3DC65941C95415E7A80" />
<Deny ID="ID_DENY_AGENT64_SHA256"
FriendlyName="Agent64\05f052_4045ae_694848_8cb62c_b1d962 Hash Sha256"
Hash="3BC0CEC99DCE687304DAD8F7A6DAF772E695CBD0169D346D03AE12500361A1E8" />
<Deny ID="ID_DENY_AGENT64_SHA1_PAGE"
FriendlyName="Agent64\05f052_4045ae_694848_8cb62c_b1d962 Hash Page Sha1"
Hash="E083142033C9653977D319B3DF4D2DE369756138" />
<Deny ID="ID_DENY_AGENT64_SHA256_PAGE"
FriendlyName="Agent64\05f052_4045ae_694848_8cb62c_b1d962 Hash Page Sha256"
Hash="68EFBAB6FEADAB076DC97DB359A287193C51199742F92E07B60417F093040FED" />
<Deny ID="ID_DENY_ASIO_32_SHA1" FriendlyName="ASIO32.sys Hash Sha1"
Hash="D569D4BAB86E70EFBCDFDAC9D822139D6F477B7C" />
<Deny ID="ID_DENY_ASIO_32_SHA256" FriendlyName="ASIO32.sys Hash Sha256"
Hash="80599708CE61EC5D6DCFC5977208A2A0BE2252820A88D9BA260D8CDF5DC7FBE4" />
<Deny ID="ID_DENY_ASIO_32_SHA1_PAGE" FriendlyName="ASIO32.sys Hash Page
Sha1" Hash="80FA962BDFB76DFCB9E5D13EFC38BB3D392F2E77" />
<Deny ID="ID_DENY_ASIO_32_SHA256_PAGE" FriendlyName="ASIO32.sys Hash
Page Sha256"
Hash="9091E044273FF624585235AC885EB2B05DFB12F3022DCF535B178FF1B2E012D1" />
<Deny ID="ID_DENY_ASIO_32_SHA1_1" FriendlyName="ASIO32.sys Hash Sha1"
Hash="5A7DD0DA0AEE0BDEDC14C1B7831B9CE9178A0346" />
<Deny ID="ID_DENY_ASIO_32_SHA256_1" FriendlyName="ASIO32.sys Hash
Sha256"
Hash="92EDD48DFAC025D4069EB6491B9730D9D131B77CCEAA480AF9B3C32BC8C5E3A9" />
<Deny ID="ID_DENY_ASIO_32_SHA1_PAGE_1" FriendlyName="ASIO32.sys Hash
Page Sha1" Hash="1ACC7A486B52C5EE6619DBDC3B4210B5F48B936F" />
<Deny ID="ID_DENY_ASIO_32_SHA256_PAGE_1" FriendlyName="ASIO32.sys Hash
Page Sha256"
Hash="F84634B5C0E83CA9BB25928DC3C4FC05D37451C23B780DBEEB1F10F056F1EEEE" />
<Deny ID="ID_DENY_ASIO_32_SHA1_2" FriendlyName="ASIO32.sys Hash Sha1"
Hash="55AB7E27412ECA433D76513EDC7E6E03BCDD7EDA" />
<Deny ID="ID_DENY_ASIO_32_SHA256_2" FriendlyName="ASIO32.sys Hash
Sha256"
Hash="C1B41D6B91448E2409BB2F4FBF4AEB952ADF373D0DECC9D052277B89BA401407" />
<Deny ID="ID_DENY_ASIO_32_SHA1_PAGE_2" FriendlyName="ASIO32.sys Hash
Page Sha1" Hash="1E7C241B9A9EA79061B50FB19B3D141DEE175C27" />
<Deny ID="ID_DENY_ASIO_32_SHA256_PAGE_2" FriendlyName="ASIO32.sys Hash
Page Sha256"
Hash="1056806F6508B4F5E8A00A6E8D07AEAC06A1BE5F9B92F1684F33682D2DA9349E" />
<Deny ID="ID_DENY_ASIO_64_SHA1" FriendlyName="ASIO64.sys Hash Sha1"
Hash="E5C090903A20744BA3583A8EA684D035E8CECC34" />
<Deny ID="ID_DENY_ASIO_64_SHA256" FriendlyName="ASIO64.sys Hash Sha256"
Hash="9DCFD796E244D0687CC35EAC9538F209F76C6DF12DE166F19DBC7D2C47FB16B3" />
<Deny ID="ID_DENY_ASIO_64_SHA1_PAGE" FriendlyName="ASIO64.sys Hash Page
Sha1" Hash="CA5FF4EB8CCBDE4EFF3491FD7941769E8D093D79" />
<Deny ID="ID_DENY_ASIO_64_SHA256_PAGE" FriendlyName="ASIO64.sys Hash
Page Sha256"
Hash="D8841803F181F735D8794C82BA52D8C484B3B0A95DBBB66114314F439B75B0E9" />
<Deny ID="ID_DENY_ASIO_64_SHA1_1" FriendlyName="ASIO64.sys Hash Sha1"
Hash="C92148D0666F2235500805975BE79738B84E48C2" />
<Deny ID="ID_DENY_ASIO_64_SHA256_1" FriendlyName="ASIO64.sys Hash
Sha256"
Hash="19C74EA0E0BAF04820E5642BD2FA224158801ED966BE1041539E3C55BD65C471" />
<Deny ID="ID_DENY_ASIO_64_SHA1_PAGE_1" FriendlyName="ASIO64.sys Hash
Page Sha1" Hash="F8270F774B3549079EA7D5F0D5406F307019BDFB" />
<Deny ID="ID_DENY_ASIO_64_SHA256_PAGE_1" FriendlyName="ASIO64.sys Hash
Page Sha256"
Hash="A3C9C5625BA6A6075D365543603A4DD4D7790850753D5289FF976EB2A839910F" />
<Deny ID="ID_DENY_ASIO_64_SHA1_2" FriendlyName="ASIO64.sys Hash Sha1"
Hash="61E1B497A5DF0797527D6D465A8F315A82AD35EB" />
<Deny ID="ID_DENY_ASIO_64_SHA256_2" FriendlyName="ASIO64.sys Hash
Sha256"
Hash="739C11FDB8673AB5B78F1A874DAF5BA3FADDB7910A6D4E0CC49ABD8B8537333F" />
<Deny ID="ID_DENY_ASIO_64_SHA1_PAGE_2" FriendlyName="ASIO64.sys Hash
Page Sha1" Hash="708855DB4202A792862E1139D673C3B4B713053C" />
<Deny ID="ID_DENY_ASIO_64_SHA256_PAGE_2" FriendlyName="ASIO64.sys Hash
Page Sha256"
Hash="BE5653E4C1ED75A451BE4297FF233A22C7AAB93B2126CA428834E83CADFF5E9C" />
<Deny ID="ID_DENY_ASRDRV10_SHA1" FriendlyName="AsrDrv10.sys Hash Sha1"
Hash="2E6D61FA32E12FE4ABF7B7D87AA6824F5F528000" />
<Deny ID="ID_DENY_ASRDRV10_SHA256" FriendlyName="AsrDrv10.sys Hash
Sha256"
Hash="C767A5895119154467AC3FCE8E82C20E6538A4E54F6C109001C61F8ABD58F9F8" />
<Deny ID="ID_DENY_ASRDRV10_SHA1_PAGE" FriendlyName="AsrDrv10.sys Hash
Page Sha1" Hash="085529E58BE3806D396F1BB15FF078FD4C471AAB" />
<Deny ID="ID_DENY_ASRDRV10_SHA256_PAGE" FriendlyName="AsrDrv10.sys Hash
Page Sha256"
Hash="14141F03EFF7C2F44BFED93524F4EC64ABDC8F3D45D55B1BCB5701CA354319FD" />
<Deny ID="ID_DENY_ASRDRV101_SHA1" FriendlyName="AsrDrv101.sys Hash Sha1"
Hash="D0580BFC31FAEFB7E017798121C5B8A4E68155F9" />
<Deny ID="ID_DENY_ASRDRV101_SHA256" FriendlyName="AsrDrv101.sys Hash
Sha256"
Hash="FEE4560F2160A951D83344857EB4587AB10C1CFD8C5CFC23B6F06BEF8EBCD984" />
<Deny ID="ID_DENY_ASRDRV101_SHA1_PAGE" FriendlyName="AsrDrv101.sys Hash
Page Sha1" Hash="55A90E7822A1444FAE81371DF7296CC5642FB353" />
<Deny ID="ID_DENY_ASRDRV101_SHA256_PAGE" FriendlyName="AsrDrv101.sys
Hash Page Sha256"
Hash="B00060733F88E3897D4B1E4732DF67FF277A8D615F84E6EFAB98C79C72CBA370" />
<Deny ID="ID_DENY_ASRDRV102_SHA1" FriendlyName="AsrDrv102.sys Hash Sha1"
Hash="5F9C7D3552FFA98C9DCF9A9B7AD1263D2AB24A2F" />
<Deny ID="ID_DENY_ASRDRV102_SHA256" FriendlyName="AsrDrv102.sys Hash
Sha256"
Hash="11EECF9E6E2447856ED4CF86EE1CB779CFE0672C808BBD5934CF2F09A62D6170" />
<Deny ID="ID_DENY_ASRDRV102_SHA1_PAGE" FriendlyName="AsrDrv102.sys Hash
Page Sha1" Hash="B419D69A4ED8D4EABD90A155ED15C3374BEA6FFC" />
<Deny ID="ID_DENY_ASRDRV102_SHA256_PAGE" FriendlyName="AsrDrv102.sys
Hash Page Sha256"
Hash="23E39D9E40235A5C456260E03CACCC186FE79FFD7D0439AEA7530EBB0380946D" />
<Deny ID="ID_DENY_ASRDRV103_SHA1" FriendlyName="AsrDrv103.sys Hash Sha1"
Hash="B3410021EA5A46818D9FF05A96C2809A9ABE8E4A" />
<Deny ID="ID_DENY_ASRDRV103_SHA256" FriendlyName="AsrDrv103.sys Hash
Sha256"
Hash="B6BF2460E023B1005CC60E107B14A3CFDF9284CC378A086D92E5DCDF6E432E2C" />
<Deny ID="ID_DENY_ASRDRV103_SHA1_PAGE" FriendlyName="AsrDrv103.sys Hash
Page Sha1" Hash="490F85E291C4D9ED0AB8457CE6B424C0F3F7E7AC" />
<Deny ID="ID_DENY_ASRDRV103_SHA256_PAGE" FriendlyName="AsrDrv103.sys
Hash Page Sha256"
Hash="E22B7BA6D064C75913C3BDADAF7AADA535DDDD83175D8A47467FED5ABC56D5AC" />
<Deny ID="ID_DENY_ASRDRV104_5A"
FriendlyName="asrdrv104\4bf974f5d3489638a48ee508b4a8cfa0f0262909778ccdd2e871
172b71654d89 Hash Sha1" Hash="6C1BB3A72EBFB5359B9E22CA44D0A1FF825A68F2" />
<Deny ID="ID_DENY_ASRDRV104_5B"
FriendlyName="asrdrv104\4bf974f5d3489638a48ee508b4a8cfa0f0262909778ccdd2e871
172b71654d89 Hash Sha256"
Hash="904D8D0DB7B3ED747ECFBB04386DFBE23B71FFD054F32AB17F65BC17D500F730" />
<Deny ID="ID_DENY_ASRDRV104_5C"
FriendlyName="asrdrv104\4bf974f5d3489638a48ee508b4a8cfa0f0262909778ccdd2e871
172b71654d89 Hash Page Sha1" Hash="E039C9DD21494DBD073B4823FC3A17FBB951EC6C"
/>
<Deny ID="ID_DENY_ASRDRV104_5D"
FriendlyName="asrdrv104\4bf974f5d3489638a48ee508b4a8cfa0f0262909778ccdd2e871
172b71654d89 Hash Page Sha256"
Hash="F292E6AADD8CB18DFC59A6B6734B5F68262E09BF1DFDB44CC2F70DF176C85F72" />
<Deny ID="ID_DENY_ASRDRV104_5E"
FriendlyName="asrdrv104\53bb076e81f6104f41bc284eedae36bd99b53e42719573fa5960
932720ebc854 Hash Sha1" Hash="7EEC3A1EDF3B021883A4B5DA450DB63F7C0AFEEB" />
<Deny ID="ID_DENY_ASRDRV104_5F"
FriendlyName="asrdrv104\53bb076e81f6104f41bc284eedae36bd99b53e42719573fa5960
932720ebc854 Hash Sha256"
Hash="3F44442F56F2CEB6213FCE103466862AC750FB99038030003C1B42DA35A43A83" />
<Deny ID="ID_DENY_ASRDRV104_60"
FriendlyName="asrdrv104\53bb076e81f6104f41bc284eedae36bd99b53e42719573fa5960
932720ebc854 Hash Page Sha1" Hash="E5021A98E55D514E2376AA573D143631E5EE1C13"
/>
<Deny ID="ID_DENY_ASRDRV104_61"
FriendlyName="asrdrv104\53bb076e81f6104f41bc284eedae36bd99b53e42719573fa5960
932720ebc854 Hash Page Sha256"
Hash="2B02B3C4F298B2B4F0B7A6714CD28B0410C1430AE6FF798056CB27EED90DD424" />
<Deny ID="ID_DENY_ASRDRV104_62"
FriendlyName="asrdrv104\6ed35f310c96920a271c59a097b382da07856e40179c2a4239f8
daa04eef38e7 Hash Sha1" Hash="729A8675665C61824F22F06C7B954BE4D14B52C4" />
<Deny ID="ID_DENY_ASRDRV104_63"
FriendlyName="asrdrv104\6ed35f310c96920a271c59a097b382da07856e40179c2a4239f8
daa04eef38e7 Hash Sha256"
Hash="6ED35F310C96920A271C59A097B382DA07856E40179C2A4239F8DAA04EEF38E7" />
<Deny ID="ID_DENY_ASRDRV104_64"
FriendlyName="asrdrv104\d20d8bf80017e98b6dfc9f6c3960271fa792a908758bef49a390
e2692a2a4341 Hash Sha1" Hash="2B4D0DEAD4C1A7CC95543748B3565CFA802E5256" />
<Deny ID="ID_DENY_ASRDRV104_65"
FriendlyName="asrdrv104\d20d8bf80017e98b6dfc9f6c3960271fa792a908758bef49a390
e2692a2a4341 Hash Sha256"
Hash="E6A2AC52A35D470DC336BAE5C48A2EBF2D80519BFD57B703DA6CE00DDD12163A" />
<Deny ID="ID_DENY_ASRDRV104_66"
FriendlyName="asrdrv104\d20d8bf80017e98b6dfc9f6c3960271fa792a908758bef49a390
e2692a2a4341 Hash Page Sha1" Hash="4A7D66874A0472A47087FABAA033A85D47413379"
/>
<Deny ID="ID_DENY_ASRDRV104_67"
FriendlyName="asrdrv104\d20d8bf80017e98b6dfc9f6c3960271fa792a908758bef49a390
e2692a2a4341 Hash Page Sha256"
Hash="C1FE339D15E5D59F9613688B85F9B627E72ED8ED3EFC53F9DD0CD7A7F0C55133" />
<Deny ID="ID_DENY_ASRSETUPDRV103_39"
FriendlyName="AsrSetupDrv103\9d9346e6f46f831e263385a9bd32428e01919cca26a035b
bb8e9cb00bf410bc3 Hash Sha1" Hash="0B6EC2AEDC518849A1C61A70B1F9FB068EDE2BC3"
/>
<Deny ID="ID_DENY_ASRSETUPDRV103_3A"
FriendlyName="AsrSetupDrv103\9d9346e6f46f831e263385a9bd32428e01919cca26a035b
bb8e9cb00bf410bc3 Hash Sha256"
Hash="399EFFE75D32BDAB6FA0A6BFFE02DBF0A59219D940B654837C3BE1C0BD02E9AA" />
<Deny ID="ID_DENY_ASRSETUPDRV103_3B"
FriendlyName="AsrSetupDrv103\9d9346e6f46f831e263385a9bd32428e01919cca26a035b
bb8e9cb00bf410bc3 Hash Page Sha1"
Hash="461882BD59887617CADC1C7B2B22D0A45458C070" />
<Deny ID="ID_DENY_ASRSETUPDRV103_3C"
FriendlyName="AsrSetupDrv103\9d9346e6f46f831e263385a9bd32428e01919cca26a035b
bb8e9cb00bf410bc3 Hash Page Sha256"
Hash="27CD05527FEB020084A4A76579C125458571DA8843CDFC3733211760A11DA970" />
<Deny ID="ID_DENY_ASRSETUPDRV103_3D"
FriendlyName="AsrSetupDrv103\a0728184caead84f2e88777d833765f2d8af6a20aad77b4
26e07e76ef91f5c3f Hash Sha1" Hash="A7948A4E9A3A1A9ED0E4E41350E422464D8313CD"
/>
<Deny ID="ID_DENY_ASRSETUPDRV103_3E"
FriendlyName="AsrSetupDrv103\a0728184caead84f2e88777d833765f2d8af6a20aad77b4
26e07e76ef91f5c3f Hash Sha256"
Hash="7AAF2AA194B936E48BC90F01EE854768C8383C0BE50CFB41B346666AEC0CF853" />
<Deny ID="ID_DENY_ASRSETUPDRV103_3F"
FriendlyName="AsrSetupDrv103\a0728184caead84f2e88777d833765f2d8af6a20aad77b4
26e07e76ef91f5c3f Hash Page Sha1"
Hash="F3CCE7E79AB5BD055F311BB3AC44A838779270B6" />
<Deny ID="ID_DENY_ASRSETUPDRV103_40"
FriendlyName="AsrSetupDrv103\a0728184caead84f2e88777d833765f2d8af6a20aad77b4
26e07e76ef91f5c3f Hash Page Sha256"
Hash="727E8BA66A8FF07BDC778EACB463B65F2D7167A6616CA2F259EA32571CACF8AF" />
<Deny ID="ID_DENY_ATILLK_2"
FriendlyName="atillk64\11a9787831ac4f0657aeb5e7019c23acc39d8833faf28f85bd10d
7590ea4cc5f Hash Sha1" Hash="6EE2E56413CE129EA2319D6DBA28BA4F27CF75B7" />
<Deny ID="ID_DENY_ATILLK_3"
FriendlyName="atillk64\11a9787831ac4f0657aeb5e7019c23acc39d8833faf28f85bd10d
7590ea4cc5f Hash Sha256"
Hash="94111DE210F6B3B48DDA16B3422F0F9180E30BCB5765B6858C451D1D89196199" />
<Deny ID="ID_DENY_ATILLK_4"
FriendlyName="atillk64\11a9787831ac4f0657aeb5e7019c23acc39d8833faf28f85bd10d
7590ea4cc5f Hash Page Sha1" Hash="E66E7DAA23A6F85459AB4F4CE6D74A4973E832B1"
/>
<Deny ID="ID_DENY_ATILLK_5"
FriendlyName="atillk64\11a9787831ac4f0657aeb5e7019c23acc39d8833faf28f85bd10d
7590ea4cc5f Hash Page Sha256"
Hash="29245340F8DCCC90F6CFA295EEE25C77C658965825DF27A501A5D951E7B8ECC4" />
<Deny ID="ID_DENY_ATILLK_6"
FriendlyName="atillk64\248dcc72d799d350d30b0f9e9ae93389cdcd11b43e38949ba9be4
14400657587 Hash Sha1" Hash="0116793210498AC83727C7B902FDBAE0FE76BB7E" />
<Deny ID="ID_DENY_ATILLK_7"
FriendlyName="atillk64\248dcc72d799d350d30b0f9e9ae93389cdcd11b43e38949ba9be4
14400657587 Hash Sha256"
Hash="248DCC72D799D350D30B0F9E9AE93389CDCD11B43E38949BA9BE414400657587" />
<Deny ID="ID_DENY_ATILLK_8"
FriendlyName="atillk64\321cc3f24a518c70fb537ee9472b1777d05727c649d5b6538082a
971c40ddcbe Hash Sha1" Hash="005C8117D7BF2E73E6139D3C91F24B70E22A844E" />
<Deny ID="ID_DENY_ATILLK_9"
FriendlyName="atillk64\321cc3f24a518c70fb537ee9472b1777d05727c649d5b6538082a
971c40ddcbe Hash Sha256"
Hash="73A0CCF3E32C262142BDE91C19F5B1F395878783F157C6BED5874EDE5A3AFDDD" />
<Deny ID="ID_DENY_ATILLK_A"
FriendlyName="atillk64\321cc3f24a518c70fb537ee9472b1777d05727c649d5b6538082a
971c40ddcbe Hash Page Sha1" Hash="CC6B5B9351457B5ED2FC46F4E7CEE62F5979D7C6"
/>
<Deny ID="ID_DENY_ATILLK_B"
FriendlyName="atillk64\321cc3f24a518c70fb537ee9472b1777d05727c649d5b6538082a
971c40ddcbe Hash Page Sha256"
Hash="D96511C6D3E244A892D80C5950256E158A3132B2FB25700F334EA0DA4FDE5B21" />
<Deny ID="ID_DENY_ATILLK_C"
FriendlyName="atillk64\4780da56667e01cdd7eff83c23c772d68deb4d9fdb69d5302f556
bb424151f51 Hash Sha1" Hash="6AE93DA169BFB914109E584371FD05914795F460" />
<Deny ID="ID_DENY_ATILLK_D"
FriendlyName="atillk64\4780da56667e01cdd7eff83c23c772d68deb4d9fdb69d5302f556
bb424151f51 Hash Sha256"
Hash="4780DA56667E01CDD7EFF83C23C772D68DEB4D9FDB69D5302F556BB424151F51" />
<Deny ID="ID_DENY_ATILLK_E"
FriendlyName="atillk64\61580186311f6260c6de7fa5bf9242d74687aa1c5c9fdf9d9a48e
b46d67d636f Hash Sha1" Hash="1FD4D8B13E73604E2BD8E14AC7BB4657CA17A5B3" />
<Deny ID="ID_DENY_ATILLK_F"
FriendlyName="atillk64\61580186311f6260c6de7fa5bf9242d74687aa1c5c9fdf9d9a48e
b46d67d636f Hash Sha256"
Hash="61580186311F6260C6DE7FA5BF9242D74687AA1C5C9FDF9D9A48EB46D67D636F" />
<Deny ID="ID_DENY_ATILLK_10"
FriendlyName="atillk64\6c6c5e35accc37c928d721c800476ccf4c4b5b06a1b0906dc5ff4
df71ff50943 Hash Sha1" Hash="0358BCBA83349CB23EA44D5C36B9E22ADAEC8D94" />
<Deny ID="ID_DENY_ATILLK_11"
FriendlyName="atillk64\6c6c5e35accc37c928d721c800476ccf4c4b5b06a1b0906dc5ff4
df71ff50943 Hash Sha256"
Hash="2952AE305F9E206BB0B6D7986F2B6942656C310F9D201CF2E2DD6E961C18804E" />
<Deny ID="ID_DENY_ATILLK_12"
FriendlyName="atillk64\6c6c5e35accc37c928d721c800476ccf4c4b5b06a1b0906dc5ff4
df71ff50943 Hash Page Sha1" Hash="3FCFCDCBC6AD3320E561AEB634492D2BDB38FA27"
/>
<Deny ID="ID_DENY_ATILLK_13"
FriendlyName="atillk64\6c6c5e35accc37c928d721c800476ccf4c4b5b06a1b0906dc5ff4
df71ff50943 Hash Page Sha256"
Hash="CCBE842ECDB34D64B1CD7AA558CE723DB66F30D431DF4BF4C5F6178952FF309C" />
<Deny ID="ID_DENY_ATILLK_14"
FriendlyName="atillk64\83ffcfaf429c8368194d7b73f7729d97d6a3b80fb203d57055f3e
4eec8228914 Hash Sha1" Hash="9DCBAA2ECD11D664DC13B8147442B3EB0EE172DB" />
<Deny ID="ID_DENY_ATILLK_15"
FriendlyName="atillk64\83ffcfaf429c8368194d7b73f7729d97d6a3b80fb203d57055f3e
4eec8228914 Hash Sha256"
Hash="83FFCFAF429C8368194D7B73F7729D97D6A3B80FB203D57055F3E4EEC8228914" />
<Deny ID="ID_DENY_ATILLK_16"
FriendlyName="atillk64\be66f3bbfed7d648cfd110853ddb8cef561f94a45405afc6be06e
846b697d2b0 Hash Sha1" Hash="5853E44EA0B6B4E9844651AA57D631193C1ED0F0" />
<Deny ID="ID_DENY_ATILLK_17"
FriendlyName="atillk64\be66f3bbfed7d648cfd110853ddb8cef561f94a45405afc6be06e
846b697d2b0 Hash Sha256"
Hash="BE66F3BBFED7D648CFD110853DDB8CEF561F94A45405AFC6BE06E846B697D2B0" />
<Deny ID="ID_DENY_ATILLK_18"
FriendlyName="atillk64\c825a47817399e988912bb75106befaefae0babc0743a7e32b46f
17469c78cad Hash Sha1" Hash="2E3CF3678D476420696EC7DF46B08D4D24D25644" />
<Deny ID="ID_DENY_ATILLK_19"
FriendlyName="atillk64\c825a47817399e988912bb75106befaefae0babc0743a7e32b46f
17469c78cad Hash Sha256"
Hash="C9B8ECD0657FDA14476920FE47783BD8A951D7A4A640935D9199B4A7AE4B8B69" />
<Deny ID="ID_DENY_ATILLK_1A"
FriendlyName="atillk64\c825a47817399e988912bb75106befaefae0babc0743a7e32b46f
17469c78cad Hash Page Sha1" Hash="5F70E4EA95468C0D651794665D9488A18991E54F"
/>
<Deny ID="ID_DENY_ATILLK_1B"
FriendlyName="atillk64\c825a47817399e988912bb75106befaefae0babc0743a7e32b46f
17469c78cad Hash Page Sha256"
Hash="A711C1C437BCB9916D203D7ED196446E976B346D3D635D0E75C9C2713694667E" />
<Deny ID="ID_DENY_ATILLK_1C"
FriendlyName="atillk64\d2182b6ef3255c7c1a69223cd3c2d68eb8ba3112ce433cd49cd80
3dc76412d4b Hash Sha1" Hash="FE625D7AD61B93EA376B4924FA088CB22B3FA28D" />
<Deny ID="ID_DENY_ATILLK_1D"
FriendlyName="atillk64\d2182b6ef3255c7c1a69223cd3c2d68eb8ba3112ce433cd49cd80
3dc76412d4b Hash Sha256"
Hash="FB19F241DDAE74EC4A0F87DFF025EC68DC809F9DD883649C0E58822DE28E6F1B" />
<Deny ID="ID_DENY_ATILLK_1E"
FriendlyName="atillk64\d2182b6ef3255c7c1a69223cd3c2d68eb8ba3112ce433cd49cd80
3dc76412d4b Hash Page Sha1" Hash="6698BB12B9D9D511C018D9EA8F70C61A03A041AD"
/>
<Deny ID="ID_DENY_ATILLK_1F"
FriendlyName="atillk64\d2182b6ef3255c7c1a69223cd3c2d68eb8ba3112ce433cd49cd80
3dc76412d4b Hash Page Sha256"
Hash="47F6DFDDDA4F164448F14C0417839DB860BC4E9C4679BE3980B05BE920462870" />
<Deny ID="ID_DENY_BANDAI_SHA1"
FriendlyName="bandainamcoonline.sys\7ec93f34eb323823eb199fbf8d06219086d517d0
e8f4b9e348d7afd41ec9fd5d Hash Sha1"
Hash="0F780B7ADA5DD8464D9F2CC537D973F5AC804E9C" />
<Deny ID="ID_DENY_BANDAI_SHA256"
FriendlyName="bandainamcoonline.sys\7ec93f34eb323823eb199fbf8d06219086d517d0
e8f4b9e348d7afd41ec9fd5d Hash Sha256"
Hash="7FD788358585E0B863328475898BB4400ED8D478466D1B7F5CC0252671456CC8" />
<Deny ID="ID_DENY_BANDAI_SHA1_PAGE"
FriendlyName="bandainamcoonline.sys\7ec93f34eb323823eb199fbf8d06219086d517d0
e8f4b9e348d7afd41ec9fd5d Hash Page Sha1"
Hash="EA360A9F23BB7CF67F08B88E6A185A699F0C5410" />
<Deny ID="ID_DENY_BANDAI_SHA256_PAGE"
FriendlyName="bandainamcoonline.sys\7ec93f34eb323823eb199fbf8d06219086d517d0
e8f4b9e348d7afd41ec9fd5d Hash Page Sha256"
Hash="BB83738210650E09307CE869ACA9BFA251024D3C47B1006B94FCE2846313F56E" />
<Deny ID="ID_DENY_BS_RCIO64_SHA1" FriendlyName="BS_RCIO64
73327429c505d8c5fd690a8ec019ed4fd5a726b607cabe71509111c7bfe9fc7e Hash Sha1"
Hash="4BFE9E5A5A25B7CDE6C81EBE31ED4ABEB5147FAF" />
<Deny ID="ID_DENY_BS_RCIO64_SHA256" FriendlyName="BS_RCIO64
73327429c505d8c5fd690a8ec019ed4fd5a726b607cabe71509111c7bfe9fc7e Hash
Sha256"
Hash="0381632CD236CD94FA9E64CCC958516AC50F9437F99092E231A607B1E6BE6CF8" />
<Deny ID="ID_DENY_BS_RCIO64_SHA1_PAGE" FriendlyName="BS_RCIO64
5651466512138240\73327429c505d8c5fd690a8ec019ed4fd5a726b607cabe71509111c7bfe
9fc7e Hash Page Sha1" Hash="C28B640BECA5E2834D2A373F139869CC309F6631" />
<Deny ID="ID_DENY_BS_RCIO64_SHA256_PAGE" FriendlyName="BS_RCIO64
5651466512138240\73327429c505d8c5fd690a8ec019ed4fd5a726b607cabe71509111c7bfe
9fc7e Hash Page Sha256"
Hash="9378F7DFF94D9409D38FA1A125C52734D6BAEA90913FC3CEE2659FD36AB0DA29" />
<Deny ID="ID_DENY_IOBITUNLOCKER_2"
FriendlyName="IoBitUnlocker\0209934453e9ce60b1a5e4b85412e6faf29127987505bfb1
185fc9296c578b09 Hash Sha1" Hash="0AA57861BA15DB6DC026C87F503FBE9635A29629"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_3"
FriendlyName="IoBitUnlocker\0209934453e9ce60b1a5e4b85412e6faf29127987505bfb1
185fc9296c578b09 Hash Sha256"
Hash="14E6F0D5F93DC52471AF549DE1C91C1FC1D9DBD175D5932C17E58E6B186694C9" />
<Deny ID="ID_DENY_IOBITUNLOCKER_4"
FriendlyName="IoBitUnlocker\0aff83f28d70f425539fee3d6a780210d0406264f8a4eb12
4e32b074e8ffd556 Hash Sha1" Hash="6093DCBB29DF29D365286D8D86B80E1027CF7D0A"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_5"
FriendlyName="IoBitUnlocker\0aff83f28d70f425539fee3d6a780210d0406264f8a4eb12
4e32b074e8ffd556 Hash Sha256"
Hash="E73BB03D54B40035558DF2E990367A1C4E9C1EF8E980DF6380A63F3BC23E6740" />
<Deny ID="ID_DENY_IOBITUNLOCKER_6"
FriendlyName="IoBitUnlocker\0aff83f28d70f425539fee3d6a780210d0406264f8a4eb12
4e32b074e8ffd556 Hash Page Sha1"
Hash="479D4A03B2A6B96ABDA21483DB0B2A69C42B4700" />
<Deny ID="ID_DENY_IOBITUNLOCKER_7"
FriendlyName="IoBitUnlocker\0aff83f28d70f425539fee3d6a780210d0406264f8a4eb12
4e32b074e8ffd556 Hash Page Sha256"
Hash="75ADF08F18E424728B8732D4BD1E70B75DAB7DE3E67D127DAD46934774A38F3F" />
<Deny ID="ID_DENY_IOBITUNLOCKER_8"
FriendlyName="IoBitUnlocker\103d7e0387358f7b44a2e4c2da483fe0e854b720b6544f91
4caeb5be9dccfb93 Hash Sha1" Hash="5A45FDDB943C698C99739BBA9E4157C3045FF644"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_9"
FriendlyName="IoBitUnlocker\103d7e0387358f7b44a2e4c2da483fe0e854b720b6544f91
4caeb5be9dccfb93 Hash Sha256"
Hash="103D7E0387358F7B44A2E4C2DA483FE0E854B720B6544F914CAEB5BE9DCCFB93" />
<Deny ID="ID_DENY_IOBITUNLOCKER_A"
FriendlyName="IoBitUnlocker\11bc55c0771d692279298211c1d434c04168e7c7f7c4328b
fd600215b88c819b Hash Sha1" Hash="7FB190DFA6CC3E34937991C839353331998B532F"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_B"
FriendlyName="IoBitUnlocker\11bc55c0771d692279298211c1d434c04168e7c7f7c4328b
fd600215b88c819b Hash Sha256"
Hash="1FE70267698BA60012CA4C2C0F21325236BAFC7B42FA977A09AFA6A0C5ED3784" />
<Deny ID="ID_DENY_IOBITUNLOCKER_C"
FriendlyName="IoBitUnlocker\11bc55c0771d692279298211c1d434c04168e7c7f7c4328b
fd600215b88c819b Hash Page Sha1"
Hash="D20076402DB9B38449FD52CA75E4A0BE2D567E30" />
<Deny ID="ID_DENY_IOBITUNLOCKER_D"
FriendlyName="IoBitUnlocker\11bc55c0771d692279298211c1d434c04168e7c7f7c4328b
fd600215b88c819b Hash Page Sha256"
Hash="2082040EAF4E10BEF875396E50F8F9340D94D6DE7B61556B21403CF6E2A702E4" />
<Deny ID="ID_DENY_IOBITUNLOCKER_E"
FriendlyName="IoBitUnlocker\29cf2d374d7afe009bbf60ba5f50db7016314de682cf3a6f
90c0996810c821ef Hash Sha1" Hash="9CFE5FDBDD41C4D4E026A588FC8DF412CC4620FC"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_F"
FriendlyName="IoBitUnlocker\29cf2d374d7afe009bbf60ba5f50db7016314de682cf3a6f
90c0996810c821ef Hash Sha256"
Hash="C025EC72D4B8297EE2E0FAC7747F39D256AAD26FBF0554E3729E3E381BC6EA86" />
<Deny ID="ID_DENY_IOBITUNLOCKER_10"
FriendlyName="IoBitUnlocker\4e1d75684923974c0333d33b789c5d1569ba5a39e8fa6816
e825eadaeaf51a2a Hash Sha1" Hash="03358C32022F0C9811D40A0BDF2BD58CAB170442"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_11"
FriendlyName="IoBitUnlocker\4e1d75684923974c0333d33b789c5d1569ba5a39e8fa6816
e825eadaeaf51a2a Hash Sha256"
Hash="4E1D75684923974C0333D33B789C5D1569BA5A39E8FA6816E825EADAEAF51A2A" />
<Deny ID="ID_DENY_IOBITUNLOCKER_12"
FriendlyName="IoBitUnlocker\5ea5f339b2e40dea57378626790ca7e9a82777aacdada5bc
61ebb7d82043fa07 Hash Sha1" Hash="3A54BE5A75468B20EF8E182A7AF6E6F314A5D633"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_13"
FriendlyName="IoBitUnlocker\5ea5f339b2e40dea57378626790ca7e9a82777aacdada5bc
61ebb7d82043fa07 Hash Sha256"
Hash="AFC1873543735D6299543D91D7C09EE1FA1588FF9F131BA4AEDCD32B984C8EC1" />
<Deny ID="ID_DENY_IOBITUNLOCKER_14"
FriendlyName="IoBitUnlocker\5ea5f339b2e40dea57378626790ca7e9a82777aacdada5bc
61ebb7d82043fa07 Hash Page Sha1"
Hash="AB531FCA04B89F8696B7064A3D00311B4093B704" />
<Deny ID="ID_DENY_IOBITUNLOCKER_15"
FriendlyName="IoBitUnlocker\5ea5f339b2e40dea57378626790ca7e9a82777aacdada5bc
61ebb7d82043fa07 Hash Page Sha256"
Hash="778C2B033BF6B1E1C2CB9C68902E2662BB427BE03B612048B989E36BD1A292BD" />
<Deny ID="ID_DENY_IOBITUNLOCKER_16"
FriendlyName="IoBitUnlocker\698353791261d5a9ca3245ae8f86334493df554690ec7962
895c2affe4050db2 Hash Sha1" Hash="3221D04A27D9BA6646668BEA02FE9538E6EEC58D"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_17"
FriendlyName="IoBitUnlocker\698353791261d5a9ca3245ae8f86334493df554690ec7962
895c2affe4050db2 Hash Sha256"
Hash="CE12D9C2996A6626F6FC68415F8A94851B3468C9C62CC408DBDC0227CF77939D" />
<Deny ID="ID_DENY_IOBITUNLOCKER_18"
FriendlyName="IoBitUnlocker\698353791261d5a9ca3245ae8f86334493df554690ec7962
895c2affe4050db2 Hash Page Sha1"
Hash="38262C3B3279CBBBB7993011A6F5DC1F73DF5B02" />
<Deny ID="ID_DENY_IOBITUNLOCKER_19"
FriendlyName="IoBitUnlocker\698353791261d5a9ca3245ae8f86334493df554690ec7962
895c2affe4050db2 Hash Page Sha256"
Hash="20E6A8AAC84E18C6FA90DFC0C8DCBB811BA76066495C296F4B076A9E324D7E46" />
<Deny ID="ID_DENY_IOBITUNLOCKER_1A"
FriendlyName="IoBitUnlocker\7c12d9151c57fef87d6e1c89f88bd1602bf64d215533ad3c
d627ddefbd220075 Hash Sha1" Hash="B2DD3C2E1748A4FC6CD691CCC5594C9B5EE56D6A"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_1B"
FriendlyName="IoBitUnlocker\7c12d9151c57fef87d6e1c89f88bd1602bf64d215533ad3c
d627ddefbd220075 Hash Sha256"
Hash="7C12D9151C57FEF87D6E1C89F88BD1602BF64D215533AD3CD627DDEFBD220075" />
<Deny ID="ID_DENY_IOBITUNLOCKER_1C"
FriendlyName="IoBitUnlocker\831b62145c21557928a694e6261e830f1545b5756ad51dcb
d28a15fde570f4e7 Hash Sha1" Hash="6954D40B1E566C42A720EE5C8E32D73CDB7DC36F"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_1D"
FriendlyName="IoBitUnlocker\831b62145c21557928a694e6261e830f1545b5756ad51dcb
d28a15fde570f4e7 Hash Sha256"
Hash="A298CC166FE3BAC9E9E4CAE967F8E3BB41B08A6A97117CA4F8E5C4F198DBCFFA" />
<Deny ID="ID_DENY_IOBITUNLOCKER_1E"
FriendlyName="IoBitUnlocker\831b62145c21557928a694e6261e830f1545b5756ad51dcb
d28a15fde570f4e7 Hash Page Sha1"
Hash="D08B95DCAF401EBF8DD96F8DFD8EA589117C3595" />
<Deny ID="ID_DENY_IOBITUNLOCKER_1F"
FriendlyName="IoBitUnlocker\831b62145c21557928a694e6261e830f1545b5756ad51dcb
d28a15fde570f4e7 Hash Page Sha256"
Hash="3CDECE4649556EB5DBF4F6EE2CC42A4032903E17268722B71EED48CA00EF5754" />
<Deny ID="ID_DENY_IOBITUNLOCKER_20"
FriendlyName="IoBitUnlocker\88d2a2262e7789180dfefeab0751d28814b87eb9d3b4bc20
1cc1d18cbc35e0cf Hash Sha1" Hash="9BBDD40E48A2732B8383EBD24518B1734BC938BC"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_21"
FriendlyName="IoBitUnlocker\88d2a2262e7789180dfefeab0751d28814b87eb9d3b4bc20
1cc1d18cbc35e0cf Hash Sha256"
Hash="392741DAD8EE5730B54637BCA112C6D15E71623A5B26C9079BE58AA432B598CA" />
<Deny ID="ID_DENY_IOBITUNLOCKER_22"
FriendlyName="IoBitUnlocker\88d2a2262e7789180dfefeab0751d28814b87eb9d3b4bc20
1cc1d18cbc35e0cf Hash Page Sha1"
Hash="B8F5C35E293E6F5B092F5DB8EE24F19D6D58DB21" />
<Deny ID="ID_DENY_IOBITUNLOCKER_23"
FriendlyName="IoBitUnlocker\88d2a2262e7789180dfefeab0751d28814b87eb9d3b4bc20
1cc1d18cbc35e0cf Hash Page Sha256"
Hash="D7BF8AC9C69347006236AB30B174DDECC563FF3F73DF707DA592D699041FE34C" />
<Deny ID="ID_DENY_IOBITUNLOCKER_24"
FriendlyName="IoBitUnlocker\969f73a1da331e43777a3c1f08ec0734e7cf8c8136e5d469
cbad8035fbfe3b47 Hash Sha1" Hash="F96BC840DDE4D24FCD3F2F4712FDB8143AEEDF99"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_25"
FriendlyName="IoBitUnlocker\969f73a1da331e43777a3c1f08ec0734e7cf8c8136e5d469
cbad8035fbfe3b47 Hash Sha256"
Hash="198A4DC1C4BD7EFF31FF4D1952A592170B25BFB5FEDCD9D5D4C4FD3707337E42" />
<Deny ID="ID_DENY_IOBITUNLOCKER_26"
FriendlyName="IoBitUnlocker\969f73a1da331e43777a3c1f08ec0734e7cf8c8136e5d469
cbad8035fbfe3b47 Hash Page Sha1"
Hash="5CA0A2BD84A064E2E5A24F66DA24197512AC032E" />
<Deny ID="ID_DENY_IOBITUNLOCKER_27"
FriendlyName="IoBitUnlocker\969f73a1da331e43777a3c1f08ec0734e7cf8c8136e5d469
cbad8035fbfe3b47 Hash Page Sha256"
Hash="BE0DB1AA6FC1CCCEDB2859ABFC07F67E4D072FD151CC90A9CCA2301742E13BEE" />
<Deny ID="ID_DENY_IOBITUNLOCKER_28"
FriendlyName="IoBitUnlocker\a7416a7d9573f1d8873ec1b3109ec683e85412ba817e0001
c3ab2d2c92043d4d Hash Sha1" Hash="68EC1D226DC2314C5F2ECC949C662B1F4D504824"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_29"
FriendlyName="IoBitUnlocker\a7416a7d9573f1d8873ec1b3109ec683e85412ba817e0001
c3ab2d2c92043d4d Hash Sha256"
Hash="773DC9256C4EADA182A5B41179A522740BA994EFF30F868641BC91574705B8E3" />
<Deny ID="ID_DENY_IOBITUNLOCKER_2A"
FriendlyName="IoBitUnlocker\a7416a7d9573f1d8873ec1b3109ec683e85412ba817e0001
c3ab2d2c92043d4d Hash Page Sha1"
Hash="90AE983059B8969DEA44147806B976A93C65541E" />
<Deny ID="ID_DENY_IOBITUNLOCKER_2B"
FriendlyName="IoBitUnlocker\a7416a7d9573f1d8873ec1b3109ec683e85412ba817e0001
c3ab2d2c92043d4d Hash Page Sha256"
Hash="BC484B73361100D2EDD14C58A79316F42EA09DC56EFB25E0F31DC551F2BE76F7" />
<Deny ID="ID_DENY_IOBITUNLOCKER_2C"
FriendlyName="IoBitUnlocker\c2e1a3dd0dfb3477a3e855368b23d12b8818df8fa3bc3508
abf069a0873d6bf8 Hash Sha1" Hash="D7FE09F414EA3A9F2B979C6D883079F0ED563A4B"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_2D"
FriendlyName="IoBitUnlocker\c2e1a3dd0dfb3477a3e855368b23d12b8818df8fa3bc3508
abf069a0873d6bf8 Hash Sha256"
Hash="89D96210BF36A88ACB14086C96E916B790D21B7ADF81D0907C823CA2AFBE0CE3" />
<Deny ID="ID_DENY_IOBITUNLOCKER_2E"
FriendlyName="IoBitUnlocker\c2e1a3dd0dfb3477a3e855368b23d12b8818df8fa3bc3508
abf069a0873d6bf8 Hash Page Sha1"
Hash="66B089368E0AB29137505D7B848B835CEC4A05F6" />
<Deny ID="ID_DENY_IOBITUNLOCKER_2F"
FriendlyName="IoBitUnlocker\c2e1a3dd0dfb3477a3e855368b23d12b8818df8fa3bc3508
abf069a0873d6bf8 Hash Page Sha256"
Hash="98D3783A58611FFA9953CDC4318F3A4A95C68C6E31E3379CC5615FC743D0E192" />
<Deny ID="ID_DENY_IOBITUNLOCKER_30"
FriendlyName="IoBitUnlocker\e41d4fd99252fcf9aea529b6e148b311aa26a4ab04f6b79c
ce4cd19c61db0c87 Hash Sha1" Hash="F96942DE94A05F1EE53F49CA4E806790C0AA780E"
/>
<Deny ID="ID_DENY_IOBITUNLOCKER_31"
FriendlyName="IoBitUnlocker\e41d4fd99252fcf9aea529b6e148b311aa26a4ab04f6b79c
ce4cd19c61db0c87 Hash Sha256"
Hash="5F4B06327FFBEC2A59725A57C357DAF54EA2F58AEF5DC7FF3F5370168AF09FB0" />
<Deny ID="ID_DENY_IOBITUNLOCKER_32"
FriendlyName="IoBitUnlocker\e41d4fd99252fcf9aea529b6e148b311aa26a4ab04f6b79c
ce4cd19c61db0c87 Hash Page Sha1"
Hash="0F36E2D38C26266AD1DF7E90C81BACF62065A5E4" />
<Deny ID="ID_DENY_IOBITUNLOCKER_33"
FriendlyName="IoBitUnlocker\e41d4fd99252fcf9aea529b6e148b311aa26a4ab04f6b79c
ce4cd19c61db0c87 Hash Page Sha256"
Hash="D8B64F61F2062850EE3E66167A5DCDC268B320FF8088B3278BAE2F17E57F4B31" />
<Deny ID="ID_DENY_CAPCOM_SHA1" FriendlyName="capcom.sys Hash Sha1"
Hash="1D1CAFC73C97C6BCD2331F8777D90FDCA57125A3" />
<Deny ID="ID_DENY_CAPCOM_SHA256" FriendlyName="capcom.sys Hash Sha256"
Hash="FAA08CB609A5B7BE6BFDB61F1E4A5E8ADF2F5A1D2492F262483DF7326934F5D4" />
<Deny ID="ID_DENY_CAPCOM_SHA1_PAGE" FriendlyName="capcom.sys Hash Page
Sha1" Hash="69006FBBD1B150FB9404867A5BCDC04FE0FC1BAD" />
<Deny ID="ID_DENY_CAPCOM_SHA256_PAGE" FriendlyName="capcom.sys Hash Page
Sha256"
Hash="42589C7CE89941060465096C4661654B43E38C1F9D05D66239825E8FCCF52705" />
<Deny ID="ID_DENY_DBUTIL_32_SHA1" FriendlyName="32-bit dell dbutil.sys
Hash Sha1" Hash="485C0B9710A196C7177B99EE95E5DDB35B26DDD1" />
<Deny ID="ID_DENY_DBUTIL_32_SHA256" FriendlyName="32-bit dell dbutil.sys
Hash Sha256"
Hash="96EE751F7C38731E97773E07E0F13F4DD361AF9AAA1D30B41652C2E6EFC3FB3E" />
<Deny ID="ID_DENY_DBUTIL_32_SHA1_PAGE" FriendlyName="32-bit dell
dbutil.sys Hash Page Sha1" Hash="50E2BC41F0186FDCE970B80E2A2CB296353AF586"
/>
<Deny ID="ID_DENY_DBUTIL_32_SHA256_PAGE" FriendlyName="32-bit dell
dbutil.sys Hash Page Sha256"
Hash="862A262E7AF92599E6B10035B8A3C988078B92BA791A6230A85FD6D1ECEC88C7" />
<Deny ID="ID_DENY_DBUTIL_64_SHA1" FriendlyName="64-bit dell dbutil.sys
Hash Sha1" Hash="E3C1DD569AA4758552566B0213EE4D1FE6382C4B" />
<Deny ID="ID_DENY_DBUTIL_64_SHA256" FriendlyName="64-bit dell dbutil.sys
Hash Sha256"
Hash="FE4270A61DBED978C28B2915FCC2826D011148DCB7533FA8BD072DDCE5944CEF" />
<Deny ID="ID_DENY_DBUTIL_64_SHA1_PAGE" FriendlyName="64-bit dell
dbutil.sys Hash Page Sha1" Hash="E09B5E80805B8FE853EA27D8773E31BFF262E3F7"
/>
<Deny ID="ID_DENY_DBUTIL_64_SHA256_PAGE" FriendlyName="64-bit dell
dbutil.sys Hash Page Sha256"
Hash="7E2AD3D6D76F4FCD4583B865FFC12DE6C44FC16CBCBB81D480CB067F2A860422" />
<Deny ID="ID_DENY_FIDDRV_SHA1" FriendlyName="fiddrv.sys Hash Sha1"
Hash="8CC8974A05E81678E3D28ACFE434E7804ABD019C" />
<Deny ID="ID_DENY_FIDDRV_SHA256" FriendlyName="fiddrv.sys Hash Sha256"
Hash="97B976F7E7E5DF7AF0781BBBB33CB5F3F7A59EFDD07995253B31DE8123352A67" />
<Deny ID="ID_DENY_FIDDRV_SHA1_PAGE" FriendlyName="fiddrv.sys Hash Page
Sha1" Hash="282BB241BDA5C4C1B8EB9BF56D018896649CA0E1" />
<Deny ID="ID_DENY_FIDDRV_SHA256_PAGE" FriendlyName="fiddrv.sys Hash Page
Sha256"
Hash="1ED9DA2DA2539284404E0701E6BA3C9EB37BE10353E826F425A194D247B8B7CE" />
<Deny ID="ID_DENY_FIDDRV64_SHA1" FriendlyName="fiddrv64.sys Hash Sha1"
Hash="10E15BA8FF8ED926DDD3636CEC66A0F08C9860A4" />
<Deny ID="ID_DENY_FIDDRV64_SHA256" FriendlyName="fiddrv64.sys Hash
Sha256"
Hash="FEEF191064D18B6FB63B7299415D1B1E2EC8FCDD742854AA96268D0EC4A0F7B6" />
<Deny ID="ID_DENY_FIDDRV64_SHA1_PAGE" FriendlyName="fiddrv64.sys Hash
Page Sha1" Hash="E4436C8C42BA5FFABD58A3B2256F6E86CCC907AB" />
<Deny ID="ID_DENY_FIDDRV64_SHA256_PAGE" FriendlyName="fiddrv64.sys Hash
Page Sha256"
Hash="2D48414647A7F9DEA30F19074EBF8F17E55E9031B8604794CEB88369C8C52532" />
<Deny ID="ID_DENY_FIDPCIDRV_SHA1" FriendlyName="fidpcidrv.sys Hash Sha1"
Hash="08596732304351B311970FF96B21F451F23B1E25" />
<Deny ID="ID_DENY_FIDPCIDRV_SHA256" FriendlyName="fidpcidrv.sys Hash
Sha256"
Hash="7B7E0E1453E733050B586A6FAC91883DBB85AE0775C84C4CEB967CFC9B4EFD10" />
<Deny ID="ID_DENY_FIDPCIDRV_SHA1_PAGE" FriendlyName="fidpcidrv.sys Hash
Page Sha1" Hash="7838FB56FDAB816BC1900A4720EEA2FC9972EF7A" />
<Deny ID="ID_DENY_FIDPCIDRV_SHA256_PAGE" FriendlyName="fidpcidrv.sys
Hash Page Sha256"
Hash="0893E186E236315FE78A7EF41ED71617E75D90D2D14FE93911E0D9344BEAF69F" />
<Deny ID="ID_DENY_FIDPCIDRV64_SHA1" FriendlyName="fidpcidrv64.sys Hash
Sha1" Hash="4789B910023A667BEE70FF1F1A8F369CFFB10FE8" />
<Deny ID="ID_DENY_FIDPCIDRV64_SHA256" FriendlyName="fidpcidrv64.sys Hash
Sha256"
Hash="7FB0F6FC5BDD22D53F8532CB19DA666A77A66FFB1CF3919A2E22B66C13B415B7" />
<Deny ID="ID_DENY_FIDPCIDRV64_SHA1_PAGE" FriendlyName="fidpcidrv64.sys
Hash Page Sha1" Hash="EEFF4EC4EBC12C6ACD2C930DC2EAAF877CFEC7EC" />
<Deny ID="ID_DENY_FIDPCIDRV64_SHA256_PAGE" FriendlyName="fidpcidrv64.sys
Hash Page Sha256"
Hash="B98E008DFEA10EC74C89D08F12F31C12F52234BE6FFFF06B6B9E749BFEA6CBED" />
<Deny ID="ID_DENY_GLCKIO2_SHA1" FriendlyName="GLCKIO2.sys Hash Sha1"
Hash="D99B80B3269D735CAC43AF5E43483E64CA7961C3" />
<Deny ID="ID_DENY_GLCKIO2_SHA256" FriendlyName="GLCKIO2.sys Hash Sha256"
Hash="47DBA240967FD0088BE618163672DFBDDF0138178CCCD45B54037F622B221220" />
<Deny ID="ID_DENY_GLCKIO2_SHA1_PAGE" FriendlyName="GLCKIO2.sys Hash Page
Sha1" Hash="51E0740AAEE5AE76B0095C92908C97B817DB8BEA" />
<Deny ID="ID_DENY_GLCKIO2_SHA256_PAGE" FriendlyName="GLCKIO2.sys Hash
Page Sha256"
Hash="E7F011E9857C7DB5AACBD424612CD7E3D12C363FDC8F072DDFAF9E2E5C85F5F3" />
<Deny ID="ID_DENY_GMER_1"
FriendlyName="gmer\4d922fcaf6f6c794218fd2db946a650fe96a6476ebeade84372b0c4de
fc730d6 Hash Sha1" Hash="483B2E96862C3384E7F8ECED28F83A040367D49B" />
<Deny ID="ID_DENY_GMER_2"
FriendlyName="gmer\4d922fcaf6f6c794218fd2db946a650fe96a6476ebeade84372b0c4de
fc730d6 Hash Sha256"
Hash="4D922FCAF6F6C794218FD2DB946A650FE96A6476EBEADE84372B0C4DEFC730D6" />
<Deny ID="ID_DENY_GMER_3"
FriendlyName="gmer\611223d444872a2ccea59cfa775e29fa0b84e9dc24c24cffe1316691d
48d9593 Hash Sha1" Hash="9771F476D64C1E269DC0FCE169C48881D3BD55B5" />
<Deny ID="ID_DENY_GMER_4"
FriendlyName="gmer\611223d444872a2ccea59cfa775e29fa0b84e9dc24c24cffe1316691d
48d9593 Hash Sha256"
Hash="611223D444872A2CCEA59CFA775E29FA0B84E9DC24C24CFFE1316691D48D9593" />
<Deny ID="ID_DENY_GMER_5"
FriendlyName="gmer\95707b3d009cd749a4352e59e4f1b1a4b291a02066bd45c3c338fa759
1749914 Hash Sha1" Hash="788652354009D1DAD75660F5FC7ED583C898AB8E" />
<Deny ID="ID_DENY_GMER_6"
FriendlyName="gmer\95707b3d009cd749a4352e59e4f1b1a4b291a02066bd45c3c338fa759
1749914 Hash Sha256"
Hash="95707B3D009CD749A4352E59E4F1B1A4B291A02066BD45C3C338FA7591749914" />
<Deny ID="ID_DENY_GVCIDRV64_SHA1" FriendlyName="GVCIDrv64.sys Hash Sha1"
Hash="4EAE38E9DC262EB7B6EDE4B3D3F4AD068933845E" />
<Deny ID="ID_DENY_GVCIDRV64_SHA256" FriendlyName="GVCIDrv64.sys Hash
Sha256"
Hash="2FF09BB919A9909068166C30322C4E904BEFEBA5429E9A11D011297FB8A73C07" />
<Deny ID="ID_DENY_GVCIDRV64_SHA1_PAGE" FriendlyName="GVCIDrv64.sys Hash
Page Sha1" Hash="6980122AEF4E2D5D7A6DDDB6DA76A166C460E0A1" />
<Deny ID="ID_DENY_GVCIDRV64_SHA256_PAGE" FriendlyName="GVCIDrv64.sys
Hash Page Sha256"
Hash="A69247025DD32DC15E06FEE362B494BCC6105D34B8D7091F7EC3D9000BD71501" />
<Deny ID="ID_DENY_WINFLASH64_SHA1" FriendlyName="WinFlash64.sys Hash
Sha1" Hash="DA21F5889F8374C3961856D681ADEC3D663D2964" />
<Deny ID="ID_DENY_WINFLASH64_SHA256" FriendlyName="WinFlash64.sys Hash
Sha256"
Hash="F2B51FBEEAD17F5EE34D5B4A3A83C848FB76F8F0E80769212E137A7AA539A3BC" />
<Deny ID="ID_DENY_WINFLASH64_SHA1_PAGE" FriendlyName="WinFlash64.sys
Hash Page Sha1" Hash="C5057A4FD3C9B58F4C9AB9FE356081DF8804BF98" />
<Deny ID="ID_DENY_WINFLASH64_SHA256_PAGE" FriendlyName="WinFlash64.sys
Hash Page Sha256"
Hash="C8FA1EC3D03050FBC1AA677F2C0348690521291219E8D2E94F0EA9E9174B9156" />
<Deny ID="ID_DENY_AMIFLDRV_1"
FriendlyName="amifldrv64\26ba58c9af9c8a7aebf222f491f786daa0626be44d34f170fea
3623d92828e63 Hash Sha1" Hash="40603C7230D74FF33524A11C0B09F9459E7AFE91" />
<Deny ID="ID_DENY_AMIFLDRV_2"
FriendlyName="amifldrv64\26ba58c9af9c8a7aebf222f491f786daa0626be44d34f170fea
3623d92828e63 Hash Sha256"
Hash="8B4CBD2BC16071A1868597EC86857DBA1140F981E3E943B0857341DAFFFF4E69" />
<Deny ID="ID_DENY_AMIFLDRV_3"
FriendlyName="amifldrv64\26ba58c9af9c8a7aebf222f491f786daa0626be44d34f170fea
3623d92828e63 Hash Page Sha1"
Hash="277E2D1EDB93CA4A3066014FB4D597864160A880" />
<Deny ID="ID_DENY_AMIFLDRV_4"
FriendlyName="amifldrv64\26ba58c9af9c8a7aebf222f491f786daa0626be44d34f170fea
3623d92828e63 Hash Page Sha256"
Hash="2FEFE2C489DD1442FD6DF3C44C6F7357BD942529CBA3782D29C35514AE99F2B8" />
<Deny ID="ID_DENY_AMIFLDRV_5"
FriendlyName="amifldrv64\2f60536b25ba8c9014e4a57d7a9a681bd3189fa414eea88c256
d029750e15cae Hash Sha1" Hash="73265B25F043D2520B81A68AD0342BAAFF30E7CF" />
<Deny ID="ID_DENY_AMIFLDRV_6"
FriendlyName="amifldrv64\2f60536b25ba8c9014e4a57d7a9a681bd3189fa414eea88c256
d029750e15cae Hash Sha256"
Hash="BEE62B69023212A5A964D323F60E5858D7CBD767A39F3D5EF87CACB080B1DBF2" />
<Deny ID="ID_DENY_AMIFLDRV_7"
FriendlyName="amifldrv64\2f60536b25ba8c9014e4a57d7a9a681bd3189fa414eea88c256
d029750e15cae Hash Page Sha1"
Hash="F58E305CEADEC6FF9666D696982CCCB9C6C121F0" />
<Deny ID="ID_DENY_AMIFLDRV_8"
FriendlyName="amifldrv64\2f60536b25ba8c9014e4a57d7a9a681bd3189fa414eea88c256
d029750e15cae Hash Page Sha256"
Hash="44CBDEDEA667F59B79D7A03FCBFB6D984C81C354D72CF98E39D68B5FD049E17C" />
<Deny ID="ID_DENY_AMIFLDRV_9"
FriendlyName="amifldrv64\42579a759f3f95f20a2c51d5ac2047a2662a2675b3fb9f46c1e
d7f23393a0f00 Hash Sha1" Hash="716BCE2CE697883EBA0C051ED487DE6304D73CD3" />
<Deny ID="ID_DENY_AMIFLDRV_A"
FriendlyName="amifldrv64\42579a759f3f95f20a2c51d5ac2047a2662a2675b3fb9f46c1e
d7f23393a0f00 Hash Sha256"
Hash="D7841EE6DAC956CC0923368D6722063A19C9FA131E55C6F3B7484CCE78D826F0" />
<Deny ID="ID_DENY_AMIFLDRV_B"
FriendlyName="amifldrv64\42579a759f3f95f20a2c51d5ac2047a2662a2675b3fb9f46c1e
d7f23393a0f00 Hash Page Sha1"
Hash="FA6273B17C4EAC8915A608E8D25774D8845688E2" />
<Deny ID="ID_DENY_AMIFLDRV_C"
FriendlyName="amifldrv64\42579a759f3f95f20a2c51d5ac2047a2662a2675b3fb9f46c1e
d7f23393a0f00 Hash Page Sha256"
Hash="6A6A03ECE1DE6F4A8931B221995E07FD2920A56036CC2907DD710385CC2084D0" />
<Deny ID="ID_DENY_AMIFLDRV_11"
FriendlyName="amifldrv64\65c26276cadda7a36f8977d1d01120edb5c3418be2317d50176
1092d5f9916c9 Hash Sha1" Hash="444CE1608768884D1E9742F80CCF4F53E0AA709D" />
<Deny ID="ID_DENY_AMIFLDRV_12"
FriendlyName="amifldrv64\65c26276cadda7a36f8977d1d01120edb5c3418be2317d50176
1092d5f9916c9 Hash Sha256"
Hash="D052299252F0F0BD70B5E7C46B9CA71A99A052B47F693582BECB6F0D567E8245" />
<Deny ID="ID_DENY_AMIFLDRV_13"
FriendlyName="amifldrv64\65c26276cadda7a36f8977d1d01120edb5c3418be2317d50176
1092d5f9916c9 Hash Page Sha1"
Hash="86586C412916BFEDC46BF83EE590EC0EA404DCD9" />
<Deny ID="ID_DENY_AMIFLDRV_14"
FriendlyName="amifldrv64\65c26276cadda7a36f8977d1d01120edb5c3418be2317d50176
1092d5f9916c9 Hash Page Sha256"
Hash="E41DAE8B3E17E7AEFD17C9476A52704EA27E2BB3C4C35BFD5C440B4F57F2CB48" />
<Deny ID="ID_DENY_AMIFLDRV_15"
FriendlyName="amifldrv64\6c64688444d3e004da77dcfb769d064bb38afceeef7ff915dfc
71e60e19ff18a Hash Sha1" Hash="2CEA31932E00C69E6F1BB0B0BF6B16B8C72DC3F6" />
<Deny ID="ID_DENY_AMIFLDRV_16"
FriendlyName="amifldrv64\6c64688444d3e004da77dcfb769d064bb38afceeef7ff915dfc
71e60e19ff18a Hash Sha256"
Hash="AEF3985CAA213C9E5E0A0D5E75A9A7918A92C08690B5A04A6B14D6372C2DD71C" />
<Deny ID="ID_DENY_AMIFLDRV_17"
FriendlyName="amifldrv64\6c64688444d3e004da77dcfb769d064bb38afceeef7ff915dfc
71e60e19ff18a Hash Page Sha1"
Hash="54671DD066E925CC7DB600CEBD53F96B234722E1" />
<Deny ID="ID_DENY_AMIFLDRV_18"
FriendlyName="amifldrv64\6c64688444d3e004da77dcfb769d064bb38afceeef7ff915dfc
71e60e19ff18a Hash Page Sha256"
Hash="94FDAB81FE82761D59C62B62E7EDD9B91E621399F4D2549ACC2F300C35A16717" />
<Deny ID="ID_DENY_AMIFLDRV_19"
FriendlyName="amifldrv64\7c942801884999057aabdc01707570371afdb077979ee2f318c
05276123b78e7 Hash Sha1" Hash="169D8790EC6C0415B111411FAF36C9E2626C3E98" />
<Deny ID="ID_DENY_AMIFLDRV_1A"
FriendlyName="amifldrv64\7c942801884999057aabdc01707570371afdb077979ee2f318c
05276123b78e7 Hash Sha256"
Hash="7CCC32E11372896CC01D7780E1176ED6FEDD17F846001BC3BF78699E4448105F" />
<Deny ID="ID_DENY_AMIFLDRV_1B"
FriendlyName="amifldrv64\7c942801884999057aabdc01707570371afdb077979ee2f318c
05276123b78e7 Hash Page Sha1"
Hash="E418335277DD6D885A8393C9F101671481127AD5" />
<Deny ID="ID_DENY_AMIFLDRV_1C"
FriendlyName="amifldrv64\7c942801884999057aabdc01707570371afdb077979ee2f318c
05276123b78e7 Hash Page Sha256"
Hash="D817E0F6FDA1762F2A677019032F2F1890FD993CD45CF480791C61D8E0956053" />
<Deny ID="ID_DENY_AMIFLDRV_1D"
FriendlyName="amifldrv64\990165725debccea7ca15aa4ed7a0e3a2a25b4a72cb309a27c8
99bd0e4b5148f Hash Sha1" Hash="A6D2266A4E27C71666CE5964570E87A8B0227E91" />
<Deny ID="ID_DENY_AMIFLDRV_1E"
FriendlyName="amifldrv64\990165725debccea7ca15aa4ed7a0e3a2a25b4a72cb309a27c8
99bd0e4b5148f Hash Sha256"
Hash="9022CDD52AA3420757D5C16FE61A4FD4D538FE74981DDF3F29DE00EB7A3BE849" />
<Deny ID="ID_DENY_AMIFLDRV_1F"
FriendlyName="amifldrv64\990165725debccea7ca15aa4ed7a0e3a2a25b4a72cb309a27c8
99bd0e4b5148f Hash Page Sha1"
Hash="9102B5601A65F60907703EE88BBEC9A33E7CB97B" />
<Deny ID="ID_DENY_AMIFLDRV_20"
FriendlyName="amifldrv64\990165725debccea7ca15aa4ed7a0e3a2a25b4a72cb309a27c8
99bd0e4b5148f Hash Page Sha256"
Hash="8CA23D2CFF4E5CFF459F037E680E8EA5233B8FDDC93DB674CC89571B74F42A9E" />
<Deny ID="ID_DENY_AMIFLDRV_21"
FriendlyName="amifldrv64\b95b2d9b29bd25659f1c7ba5a187f8d23cde01162d9b5b1a2c4
aea8f64b38441 Hash Sha1" Hash="D240DB93654CE2685D3B903DB809EDCC82322DFC" />
<Deny ID="ID_DENY_AMIFLDRV_22"
FriendlyName="amifldrv64\b95b2d9b29bd25659f1c7ba5a187f8d23cde01162d9b5b1a2c4
aea8f64b38441 Hash Sha256"
Hash="05E2D2F2B58DA5391598D30D7F5F33AE38CFEB0D9B9AE19B4312DE39C678F301" />
<Deny ID="ID_DENY_AMIFLDRV_23"
FriendlyName="amifldrv64\b95b2d9b29bd25659f1c7ba5a187f8d23cde01162d9b5b1a2c4
aea8f64b38441 Hash Page Sha1"
Hash="BBD9F4A225866767595F5F829A2AF7436482CDA7" />
<Deny ID="ID_DENY_AMIFLDRV_24"
FriendlyName="amifldrv64\b95b2d9b29bd25659f1c7ba5a187f8d23cde01162d9b5b1a2c4
aea8f64b38441 Hash Page Sha256"
Hash="4EFB08939946B3A74333BE0D28E654D5B3CCAC3BCD44D7C403140FB40934A6ED" />
<Deny ID="ID_DENY_AMIFLDRV_25"
FriendlyName="amifldrv64\bc7ebd191e0991fd0865a5c956a92e63792a0bb2ff888af43f7
a63bb65a22248 Hash Sha1" Hash="2D6CD59A2DF6883BFEC777DDFE7D10C50555E2CB" />
<Deny ID="ID_DENY_AMIFLDRV_26"
FriendlyName="amifldrv64\bc7ebd191e0991fd0865a5c956a92e63792a0bb2ff888af43f7
a63bb65a22248 Hash Sha256"
Hash="846CC7C9BF2EAB3400E66481568A010FB0DFBAC01416A99258A4BAABF1E10D35" />
<Deny ID="ID_DENY_AMIFLDRV_27"
FriendlyName="amifldrv64\bc7ebd191e0991fd0865a5c956a92e63792a0bb2ff888af43f7
a63bb65a22248 Hash Page Sha1"
Hash="D71D86D72427C8C6034B77457BDE6FA6AEC7B153" />
<Deny ID="ID_DENY_AMIFLDRV_28"
FriendlyName="amifldrv64\bc7ebd191e0991fd0865a5c956a92e63792a0bb2ff888af43f7
a63bb65a22248 Hash Page Sha256"
Hash="77ED6F5F604E811EA679547C05DF9BEC941C0202852990141C164B84E633298B" />
<Deny ID="ID_DENY_AMIFLDRV_29"
FriendlyName="amifldrv64\c2fcc0fec64d5647813b84b9049d430406c4c6a7b9f8b725da2
1bcae2ff12247 Hash Sha1" Hash="DC0D3D244D27B85E10135FFF8D34A76C17022EE1" />
<Deny ID="ID_DENY_AMIFLDRV_2A"
FriendlyName="amifldrv64\c2fcc0fec64d5647813b84b9049d430406c4c6a7b9f8b725da2
1bcae2ff12247 Hash Sha256"
Hash="96CB847FAB0BEFAB75A6F39080DD444D022D4BEC73017C9D7187FE6282A0FAA1" />
<Deny ID="ID_DENY_AMIFLDRV_2B"
FriendlyName="amifldrv64\c2fcc0fec64d5647813b84b9049d430406c4c6a7b9f8b725da2
1bcae2ff12247 Hash Page Sha1"
Hash="886779B4F7E05944171D2B5226C761605D9A19FD" />
<Deny ID="ID_DENY_AMIFLDRV_2C"
FriendlyName="amifldrv64\c2fcc0fec64d5647813b84b9049d430406c4c6a7b9f8b725da2
1bcae2ff12247 Hash Page Sha256"
Hash="664EB7057E9669F7FBE2C23CAB20421EA135475332782D1ABC0B9A99BD104DEF" />
<Deny ID="ID_DENY_AMIFLDRV_2D"
FriendlyName="amifldrv64\f06fdfe50ebc8d1d2daf5811b66288563f26a09a2ec9c2a21e2
a71ff19756062 Hash Sha1" Hash="89817CFA2603B582C1E9F7F66DB5847EC6661B36" />
<Deny ID="ID_DENY_AMIFLDRV_2E"
FriendlyName="amifldrv64\f06fdfe50ebc8d1d2daf5811b66288563f26a09a2ec9c2a21e2
a71ff19756062 Hash Sha256"
Hash="DF4566EDEA7C02E29D7DC56FF3F7DA6C1EF846E1063B2805A5180BB0D6DB37E8" />
<Deny ID="ID_DENY_AMIFLDRV_2F"
FriendlyName="amifldrv64\f06fdfe50ebc8d1d2daf5811b66288563f26a09a2ec9c2a21e2
a71ff19756062 Hash Page Sha1"
Hash="6A286329D0A387A61A582AB1FE483538852CD529" />
<Deny ID="ID_DENY_AMIFLDRV_30"
FriendlyName="amifldrv64\f06fdfe50ebc8d1d2daf5811b66288563f26a09a2ec9c2a21e2
a71ff19756062 Hash Page Sha256"
Hash="2809DF11B2D22649C77223D0E470523C7B8AB55B202F771118D1F14A1BC564F5" />
<Deny ID="ID_DENY_AMIFLDRV_31"
FriendlyName="amifldrv64\fc22977ff721b3d718b71c42440ee2d8a144f3fbc7755e4331d
dd5bcc65158d2 Hash Sha1" Hash="B0EC7D971DA8AE84C0ED8F88A5D46B23996E636C" />
<Deny ID="ID_DENY_AMIFLDRV_32"
FriendlyName="amifldrv64\fc22977ff721b3d718b71c42440ee2d8a144f3fbc7755e4331d
dd5bcc65158d2 Hash Sha256"
Hash="038F39558035292F1D794B7CF49F8E751E8633DAEC31454FE85CCCBEA83BA3FB" />
<Deny ID="ID_DENY_AMIFLDRV_33"
FriendlyName="amifldrv64\fc22977ff721b3d718b71c42440ee2d8a144f3fbc7755e4331d
dd5bcc65158d2 Hash Page Sha1"
Hash="C9CC3779ED67755220DBF9592EC2AC0E1DE363DC" />
<Deny ID="ID_DENY_AMIFLDRV_34"
FriendlyName="amifldrv64\fc22977ff721b3d718b71c42440ee2d8a144f3fbc7755e4331d
dd5bcc65158d2 Hash Page Sha256"
Hash="AA594D977312A944B14351C075634E7C59B42687928FBCDA8E2C4CEA46686DD9" />
<Deny ID="ID_DENY_AMIFLDRV_35"
FriendlyName="amifldrv64\fda506e2aa85dc41a4cbc23d3ecc71ab34e06f1def736e58862
dc449acbc2330 Hash Sha1" Hash="E91EA7FECE914EDC7F398A05BEC3FCFB765328BB" />
<Deny ID="ID_DENY_AMIFLDRV_36"
FriendlyName="amifldrv64\fda506e2aa85dc41a4cbc23d3ecc71ab34e06f1def736e58862
dc449acbc2330 Hash Sha256"
Hash="2EE914C20B3E4A321BCD2EA2F0F437CDA6DA09DC0819CD6F06960C0567F4CB19" />
<Deny ID="ID_DENY_AMIFLDRV_37"
FriendlyName="amifldrv64\fda506e2aa85dc41a4cbc23d3ecc71ab34e06f1def736e58862
dc449acbc2330 Hash Page Sha1"
Hash="ABD4616FF35256B5D52813FB80596326047D3768" />
<Deny ID="ID_DENY_AMIFLDRV_38"
FriendlyName="amifldrv64\fda506e2aa85dc41a4cbc23d3ecc71ab34e06f1def736e58862
dc449acbc2330 Hash Page Sha256"
Hash="BB52155AD4262C8995115147847BC740873F8AA036D0118E263FD8C84AF9C649" />
<Deny ID="ID_DENY_ASIO_1"
FriendlyName="asio\2da330a2088409efc351118445a824f11edbe51cf3d653b2980537850
97fe40e Hash Sha1" Hash="B25550309C902A21B03367AE27694C5A29B891B5" />
<Deny ID="ID_DENY_ASIO_2"
FriendlyName="asio\2da330a2088409efc351118445a824f11edbe51cf3d653b2980537850
97fe40e Hash Sha256"
Hash="C3E3719CA592BA65A67F594EC1A08D0D7AD724B088BE77D48CB33627C56F4614" />
<Deny ID="ID_DENY_ASIO_3"
FriendlyName="asio\2da330a2088409efc351118445a824f11edbe51cf3d653b2980537850
97fe40e Hash Page Sha1" Hash="EA7DBFB3ECFFAA134D4C3A76024F9B65126DFDC1" />
<Deny ID="ID_DENY_ASIO_4"
FriendlyName="asio\2da330a2088409efc351118445a824f11edbe51cf3d653b2980537850
97fe40e Hash Page Sha256"
Hash="EA9A321D58DD45D747C41AD6F0C30B3B11F134755CE3E69DC3DC34257E420493" />
<Deny ID="ID_DENY_ASIO_5"
FriendlyName="asio\923ebbe8111e73d5b8ecc2db10f8ea2629a3264c3a535d01c3c118a3b
4c91782 Hash Sha1" Hash="E471BA6D1327D1026EB2C6A905E2BAD3952DABBD" />
<Deny ID="ID_DENY_ASIO_6"
FriendlyName="asio\923ebbe8111e73d5b8ecc2db10f8ea2629a3264c3a535d01c3c118a3b
4c91782 Hash Sha256"
Hash="ED302EA33FEB557B879F64C4B7835947A9CA31054573E1487F5BBC38449753FF" />
<Deny ID="ID_DENY_ASUPIO64_SHA1" FriendlyName="AsUpIO64.sys Hash Sha1"
Hash="2A95F882DD9BAFCC57F144A2708A7EC67DD7844C" />
<Deny ID="ID_DENY_ASUPIO64_SHA256" FriendlyName="AsUpIO64.sys Hash
Sha256"
Hash="7F75D91844B0C162EEB24D14BCF63B7F230E111DAA7B0A26EAA489EEB22D9057" />
<Deny ID="ID_DENY_ASUPIO64_SHA1_PAGE" FriendlyName="AsUpIO64.sys Hash
Page Sha1" Hash="316E7872A227F0EAD483D244805E9FF4D3569F6F" />
<Deny ID="ID_DENY_ASUPIO64_SHA256_PAGE" FriendlyName="AsUpIO64.sys Hash
Page Sha256"
Hash="5958CBE6CF7170C4B66893777BDE66343F5536A98610BD188E10D47DB84BC04C" />
<Deny ID="ID_DENY_BEDAISY_22"
FriendlyName="BEDaisy.sys\0a9b608461d55815e99700607a52fbdb7d598f968126d38e10
cc4293ac4b1ad8 Hash Sha1" Hash="9F49C6DE4FF1375D8E0369D8FFB6935E37CFC365" />
<Deny ID="ID_DENY_BEDAISY_23"
FriendlyName="BEDaisy.sys\0a9b608461d55815e99700607a52fbdb7d598f968126d38e10
cc4293ac4b1ad8 Hash Sha256"
Hash="D27AF8F0BED1E4F4AEB2B20DA89D0FFA1B7B5F7F14148CDF09E6444A0AA5BB1B" />
<Deny ID="ID_DENY_BEDAISY_24"
FriendlyName="BEDaisy.sys\0a9b608461d55815e99700607a52fbdb7d598f968126d38e10
cc4293ac4b1ad8 Hash Page Sha1"
Hash="91887E3BFC91DE452C3914C15CC2349A6CE4F5FF" />
<Deny ID="ID_DENY_BEDAISY_25"
FriendlyName="BEDaisy.sys\0a9b608461d55815e99700607a52fbdb7d598f968126d38e10
cc4293ac4b1ad8 Hash Page Sha256"
Hash="1FE13DBC2787C09FE17CF411334C8673C40D9F768D76896FAF3894AF1431C4C7" />
<Deny ID="ID_DENY_BEDAISY_26"
FriendlyName="BEDaisy.sys\0bd164da36bd637bb76ca66602d732af912bd9299cb3d520d2
6db528cb54826d Hash Sha1" Hash="0CF32234E257819204C2881FA579F16F29DF7984" />
<Deny ID="ID_DENY_BEDAISY_27"
FriendlyName="BEDaisy.sys\0bd164da36bd637bb76ca66602d732af912bd9299cb3d520d2
6db528cb54826d Hash Sha256"
Hash="FB467E8C9EDF1AC9DDABBC666CD48FC37B05E9D9390BB347504C899E15BCE4D8" />
<Deny ID="ID_DENY_BEDAISY_28"
FriendlyName="BEDaisy.sys\0bd164da36bd637bb76ca66602d732af912bd9299cb3d520d2
6db528cb54826d Hash Page Sha1"
Hash="28F540C77863FFD8026FE52F90CDCFBC59922D6C" />
<Deny ID="ID_DENY_BEDAISY_29"
FriendlyName="BEDaisy.sys\0bd164da36bd637bb76ca66602d732af912bd9299cb3d520d2
6db528cb54826d Hash Page Sha256"
Hash="BCF02C23E9331A5BA566EC4D84C79B80778D60B8F98AFFDAFE41FDAFE8432022" />
<Deny ID="ID_DENY_BEDAISY_2A"
FriendlyName="BEDaisy.sys\2b120de80a5462f8395cfb7153c86dfd44f29f0776ea156ec4
a34fa64e5c4797 Hash Sha1" Hash="7131F7DA22882656C5E22EC033BB95E29273F182" />
<Deny ID="ID_DENY_BEDAISY_2B"
FriendlyName="BEDaisy.sys\2b120de80a5462f8395cfb7153c86dfd44f29f0776ea156ec4
a34fa64e5c4797 Hash Sha256"
Hash="35A12D81F7062A22644B500D91B1603B4F97756AD165C3EA571E7FEF55C24162" />
<Deny ID="ID_DENY_BEDAISY_2C"
FriendlyName="BEDaisy.sys\2b120de80a5462f8395cfb7153c86dfd44f29f0776ea156ec4
a34fa64e5c4797 Hash Page Sha1"
Hash="25A796B4B69D48BDAE784DEBAB835BEBBD8A67EA" />
<Deny ID="ID_DENY_BEDAISY_2D"
FriendlyName="BEDaisy.sys\2b120de80a5462f8395cfb7153c86dfd44f29f0776ea156ec4
a34fa64e5c4797 Hash Page Sha256"
Hash="84664340A212D394756FCED7D0B4B9D828E3B4CED5CC68ADEC228E58712CD97A" />
<Deny ID="ID_DENY_BEDAISY_2E"
FriendlyName="BEDaisy.sys\3b19a7207a55d752db1b366b1dea2fd2c7620a825a3f0dcffc
a10af76611118c Hash Sha1" Hash="06DAFE91FD89A1D1F88501BA04649E70770D04A4" />
<Deny ID="ID_DENY_BEDAISY_2F"
FriendlyName="BEDaisy.sys\3b19a7207a55d752db1b366b1dea2fd2c7620a825a3f0dcffc
a10af76611118c Hash Sha256"
Hash="8BE482157BDB504CC35F1126E31F240E0FAF6890790C65C58EC3328F58C780D8" />
<Deny ID="ID_DENY_BEDAISY_30"
FriendlyName="BEDaisy.sys\3b19a7207a55d752db1b366b1dea2fd2c7620a825a3f0dcffc
a10af76611118c Hash Page Sha1"
Hash="55719A4F2DECF01AC975FC72D39F336C727736CE" />
<Deny ID="ID_DENY_BEDAISY_31"
FriendlyName="BEDaisy.sys\3b19a7207a55d752db1b366b1dea2fd2c7620a825a3f0dcffc
a10af76611118c Hash Page Sha256"
Hash="221D4843D260A62D69A0963A9F9EABA0D3FA6833EA788B0037F0CBC1928ABC26" />
<Deny ID="ID_DENY_BEDAISY_32"
FriendlyName="BEDaisy.sys\3d8cfc9abea6d83dfea6da03260ff81be3b7b304321274f696
ff0fdb9920c645 Hash Sha1" Hash="E52946D26810573CE95DF496337D68246DBE0C47" />
<Deny ID="ID_DENY_BEDAISY_33"
FriendlyName="BEDaisy.sys\3d8cfc9abea6d83dfea6da03260ff81be3b7b304321274f696
ff0fdb9920c645 Hash Sha256"
Hash="0CF72A6D8C4ADD613209A1AF41C6B09013FA688C9841210B5FF1D2908D99BF00" />
<Deny ID="ID_DENY_BEDAISY_34"
FriendlyName="BEDaisy.sys\3d8cfc9abea6d83dfea6da03260ff81be3b7b304321274f696
ff0fdb9920c645 Hash Page Sha1"
Hash="77D750E465B8A020A125771FDBCF66491E801CF0" />
<Deny ID="ID_DENY_BEDAISY_35"
FriendlyName="BEDaisy.sys\3d8cfc9abea6d83dfea6da03260ff81be3b7b304321274f696
ff0fdb9920c645 Hash Page Sha256"
Hash="B0482670A5578792F05D09E3115C1289511B8150532DD850AACA4C1736E4ADEF" />
<Deny ID="ID_DENY_BEDAISY_36"
FriendlyName="BEDaisy.sys\4ba224af60a50cad10d0091c89134c72fc021da8d34a6f25c4
827184dc6ca5c7 Hash Sha1" Hash="489CB134EE754835A6A9C0D202E67E05434D8B95" />
<Deny ID="ID_DENY_BEDAISY_37"
FriendlyName="BEDaisy.sys\4ba224af60a50cad10d0091c89134c72fc021da8d34a6f25c4
827184dc6ca5c7 Hash Sha256"
Hash="FC7D726E0E803BB38C0F9E910D91970C3DD7444ACE1C071381E2E06939616205" />
<Deny ID="ID_DENY_BEDAISY_38"
FriendlyName="BEDaisy.sys\4ba224af60a50cad10d0091c89134c72fc021da8d34a6f25c4
827184dc6ca5c7 Hash Page Sha1"
Hash="418C3CA6E284CC9C057C64A38883711042F7DDA5" />
<Deny ID="ID_DENY_BEDAISY_39"
FriendlyName="BEDaisy.sys\4ba224af60a50cad10d0091c89134c72fc021da8d34a6f25c4
827184dc6ca5c7 Hash Page Sha256"
Hash="8CE69719A627CAD2ACC7FDCFDDBB21BE465053E47AC5E8F30EF15ECA6AAB49F6" />
<Deny ID="ID_DENY_BEDAISY_3A"
FriendlyName="BEDaisy.sys\5d7bfe05792189eaf7193bee85f0c792c33315cfcb40b2e62c
c7baef6cafbc5c Hash Sha1" Hash="B72D85F73296F5EF58082050DB39CA5F80B932C0" />
<Deny ID="ID_DENY_BEDAISY_3B"
FriendlyName="BEDaisy.sys\5d7bfe05792189eaf7193bee85f0c792c33315cfcb40b2e62c
c7baef6cafbc5c Hash Sha256"
Hash="C29E726448AD3E6452B5D186AFB4668E6FCC942BE512FE25ED72CFA1B73A6007" />
<Deny ID="ID_DENY_BEDAISY_3C"
FriendlyName="BEDaisy.sys\5d7bfe05792189eaf7193bee85f0c792c33315cfcb40b2e62c
c7baef6cafbc5c Hash Page Sha1"
Hash="8BB7F98F74A2D1158D4A60CA1A5CF4752988FF21" />
<Deny ID="ID_DENY_BEDAISY_3D"
FriendlyName="BEDaisy.sys\5d7bfe05792189eaf7193bee85f0c792c33315cfcb40b2e62c
c7baef6cafbc5c Hash Page Sha256"
Hash="D1E26C3E7F2927E935139620FD62E57CDCF94D7B28E3F87FCEF2B1FA3653A676" />
<Deny ID="ID_DENY_BEDAISY_3E"
FriendlyName="BEDaisy.sys\7108613244f16c2279c3c917aa49cef8acf0b92fdaa9ace19b
f5cf634360d727 Hash Sha1" Hash="28F9F951C83666C0A84493E2646693BFA0D227BB" />
<Deny ID="ID_DENY_BEDAISY_3F"
FriendlyName="BEDaisy.sys\7108613244f16c2279c3c917aa49cef8acf0b92fdaa9ace19b
f5cf634360d727 Hash Sha256"
Hash="55F736E288A101C08B7245CCAFE158F5A2E6F0A581F49A87D24E5CBBDE8961E1" />
<Deny ID="ID_DENY_BEDAISY_40"
FriendlyName="BEDaisy.sys\7108613244f16c2279c3c917aa49cef8acf0b92fdaa9ace19b
f5cf634360d727 Hash Page Sha1"
Hash="EE65DAAC6C8579676C377241ACA9477AB74D36F7" />
<Deny ID="ID_DENY_BEDAISY_41"
FriendlyName="BEDaisy.sys\7108613244f16c2279c3c917aa49cef8acf0b92fdaa9ace19b
f5cf634360d727 Hash Page Sha256"
Hash="0460FED15FEC99339739E436293174C5DACE21A9937400417D839AA90FCA38BC" />
<Deny ID="ID_DENY_BEDAISY_42"
FriendlyName="BEDaisy.sys\773999db2f07c50aad70e50c1983fa95804369d25a5b4f10bd
610f864c27f2fc Hash Sha1" Hash="6A6529FBB133C9535692D92148629418E2BC315E" />
<Deny ID="ID_DENY_BEDAISY_43"
FriendlyName="BEDaisy.sys\773999db2f07c50aad70e50c1983fa95804369d25a5b4f10bd
610f864c27f2fc Hash Sha256"
Hash="B5603B60137FED0DFCC95EC10563B0D5FA2E033944019BA5F338F7F7BD2AA45B" />
<Deny ID="ID_DENY_BEDAISY_44"
FriendlyName="BEDaisy.sys\773999db2f07c50aad70e50c1983fa95804369d25a5b4f10bd
610f864c27f2fc Hash Page Sha1"
Hash="5450B8A59A05A09460854D669A94758DC4348BA3" />
<Deny ID="ID_DENY_BEDAISY_45"
FriendlyName="BEDaisy.sys\773999db2f07c50aad70e50c1983fa95804369d25a5b4f10bd
610f864c27f2fc Hash Page Sha256"
Hash="5F5058FACB763C2C976256BA137D306CB6C1664EF23FD81D839BA3C7825977BB" />
<Deny ID="ID_DENY_BEDAISY_46"
FriendlyName="BEDaisy.sys\7c830ed39c9de8fe711632bf44846615f84b10db383f47b7d7
c9db29a2bd829a Hash Sha1" Hash="8B20C1EE70505588CDF27F5B1CF4BF1CE2EF3DD6" />
<Deny ID="ID_DENY_BEDAISY_47"
FriendlyName="BEDaisy.sys\7c830ed39c9de8fe711632bf44846615f84b10db383f47b7d7
c9db29a2bd829a Hash Sha256"
Hash="8483C5DC2323306D4EE3685B7E90A4C11E11B01D04CB607E0BC5AAD368FD3C6E" />
<Deny ID="ID_DENY_BEDAISY_48"
FriendlyName="BEDaisy.sys\7c830ed39c9de8fe711632bf44846615f84b10db383f47b7d7
c9db29a2bd829a Hash Page Sha1"
Hash="C72EDC483E14A906A39DC0F2B12C5B132A1E39E2" />
<Deny ID="ID_DENY_BEDAISY_49"
FriendlyName="BEDaisy.sys\7c830ed39c9de8fe711632bf44846615f84b10db383f47b7d7
c9db29a2bd829a Hash Page Sha256"
Hash="D5BEBFCA04C4DCD8077AA2BC438BAD7D2487823CFF012F14E40A6852458D122E" />
<Deny ID="ID_DENY_BEDAISY_4A"
FriendlyName="BEDaisy.sys\854bc946b557ed78c7d40547eb39e293e83942a693c94d0e79
8d1c4fbde7efa9 Hash Sha1" Hash="95EE60EEF4D011ED8E748BBC0B531B21CE95C66C" />
<Deny ID="ID_DENY_BEDAISY_4B"
FriendlyName="BEDaisy.sys\854bc946b557ed78c7d40547eb39e293e83942a693c94d0e79
8d1c4fbde7efa9 Hash Sha256"
Hash="7823833A22E11345C69D0C9687B3B75E0043492ED9546D6300A3F63017384538" />
<Deny ID="ID_DENY_BEDAISY_4C"
FriendlyName="BEDaisy.sys\854bc946b557ed78c7d40547eb39e293e83942a693c94d0e79
8d1c4fbde7efa9 Hash Page Sha1"
Hash="EC1739EA08E93E6342CC5F05619679F81A6BEB7D" />
<Deny ID="ID_DENY_BEDAISY_4D"
FriendlyName="BEDaisy.sys\854bc946b557ed78c7d40547eb39e293e83942a693c94d0e79
8d1c4fbde7efa9 Hash Page Sha256"
Hash="58A9F87335D3779BEDF10F15CC60611AFE9FA82FDE1B1FAE921BA4E95420D88D" />
<Deny ID="ID_DENY_BEDAISY_4E"
FriendlyName="BEDaisy.sys\8ae383546761069b26826dfbf2ac0233169d155bca6a941604
88092b4e70b222 Hash Sha1" Hash="2090E9738915845D1171561CB01D15CD043E80CF" />
<Deny ID="ID_DENY_BEDAISY_4F"
FriendlyName="BEDaisy.sys\8ae383546761069b26826dfbf2ac0233169d155bca6a941604
88092b4e70b222 Hash Sha256"
Hash="93F787E33A663311A6A553DB1C7D7E5B3F4CD20B0B7725B35DBD0DD67308CEF4" />
<Deny ID="ID_DENY_BEDAISY_50"
FriendlyName="BEDaisy.sys\8ae383546761069b26826dfbf2ac0233169d155bca6a941604
88092b4e70b222 Hash Page Sha1"
Hash="236D098D1F2D2C2201FAE1EE1B76362EF0080C3A" />
<Deny ID="ID_DENY_BEDAISY_51"
FriendlyName="BEDaisy.sys\8ae383546761069b26826dfbf2ac0233169d155bca6a941604
88092b4e70b222 Hash Page Sha256"
Hash="1624CE5E15EE55F048206B05274CFB3D393A779D2EFA54772BD68FB91551E086" />
<Deny ID="ID_DENY_BEDAISY_52"
FriendlyName="BEDaisy.sys\8bf01cd6d55502838853851703eb297ec71361fa9a0b088a30
c2434f4d2bf9c6 Hash Sha1" Hash="AABD3742AB7E0D8568ACBE964EF32FA7B85672B7" />
<Deny ID="ID_DENY_BEDAISY_53"
FriendlyName="BEDaisy.sys\8bf01cd6d55502838853851703eb297ec71361fa9a0b088a30
c2434f4d2bf9c6 Hash Sha256"
Hash="0A2D4815A03365D40B2B22981D4D8BEE81BFBD983DB1AF30CE497FCDF77F83C9" />
<Deny ID="ID_DENY_BEDAISY_54"
FriendlyName="BEDaisy.sys\8bf01cd6d55502838853851703eb297ec71361fa9a0b088a30
c2434f4d2bf9c6 Hash Page Sha1"
Hash="B325BF313471BADEA77F5FBE26F5B8A8DA469410" />
<Deny ID="ID_DENY_BEDAISY_55"
FriendlyName="BEDaisy.sys\8bf01cd6d55502838853851703eb297ec71361fa9a0b088a30
c2434f4d2bf9c6 Hash Page Sha256"
Hash="6B5CB7CBAF9E7B40640E34F0B58A785907FF0A2666A8CABBDA8E7574DC5F1C05" />
<Deny ID="ID_DENY_BEDAISY_56"
FriendlyName="BEDaisy.sys\9bd8b0289955a6eb791f45c3203f08a64cbd457fd1b9d598a6
fbbca5d0372e36 Hash Sha1" Hash="FAECBF954A50E1198B45635994BAEE4C72F08DBA" />
<Deny ID="ID_DENY_BEDAISY_57"
FriendlyName="BEDaisy.sys\9bd8b0289955a6eb791f45c3203f08a64cbd457fd1b9d598a6
fbbca5d0372e36 Hash Sha256"
Hash="DCB8DF13141708F0DD470B5411C065F8AD21688DAF424BD05C94EB6E63DD08AA" />
<Deny ID="ID_DENY_BEDAISY_58"
FriendlyName="BEDaisy.sys\9bd8b0289955a6eb791f45c3203f08a64cbd457fd1b9d598a6
fbbca5d0372e36 Hash Page Sha1"
Hash="4D1EBA7D62585B5123EC75A43DEA120CD6D5B8A4" />
<Deny ID="ID_DENY_BEDAISY_59"
FriendlyName="BEDaisy.sys\9bd8b0289955a6eb791f45c3203f08a64cbd457fd1b9d598a6
fbbca5d0372e36 Hash Page Sha256"
Hash="EEA91D45E1077D6C1567403B1C10BC2C60260A26183E993EBAC2411766A138B1" />
<Deny ID="ID_DENY_BEDAISY_5A"
FriendlyName="BEDaisy.sys\9e2622d8e7a0ec136ba1fff639833f05137f8a1ff03e7a93b9
a4aea25e7abb8d Hash Sha1" Hash="BD3558FB46FCB2165F4965F3BA08A0640E9259EF" />
<Deny ID="ID_DENY_BEDAISY_5B"
FriendlyName="BEDaisy.sys\9e2622d8e7a0ec136ba1fff639833f05137f8a1ff03e7a93b9
a4aea25e7abb8d Hash Sha256"
Hash="AC76256F8CA6608ABE84CA194D46BC581706ECC6813E1ABE5FA2B6CC3B4BDADE" />
<Deny ID="ID_DENY_BEDAISY_5C"
FriendlyName="BEDaisy.sys\9e2622d8e7a0ec136ba1fff639833f05137f8a1ff03e7a93b9
a4aea25e7abb8d Hash Page Sha1"
Hash="8117E3CE20280541125BBD416355FE669CEFCBBC" />
<Deny ID="ID_DENY_BEDAISY_5D"
FriendlyName="BEDaisy.sys\9e2622d8e7a0ec136ba1fff639833f05137f8a1ff03e7a93b9
a4aea25e7abb8d Hash Page Sha256"
Hash="A5CD24B88EF8DCA0D6F33D5644A61ECDA962B0D18B6493155B662B9C9FA56D6C" />
<Deny ID="ID_DENY_BEDAISY_5E"
FriendlyName="BEDaisy.sys\a0e583bd88eb198558442f69a8bbfc96f4c5c297befea29513
8cfd2070f745c5 Hash Sha1" Hash="40F77890FC527C559F222ACD91F3D1013FF82DF9" />
<Deny ID="ID_DENY_BEDAISY_5F"
FriendlyName="BEDaisy.sys\a0e583bd88eb198558442f69a8bbfc96f4c5c297befea29513
8cfd2070f745c5 Hash Sha256"
Hash="BDF49774A13D717C1F0B84BF82F4D9EC652994A475F0B8A0A3AB685CD5FD74A4" />
<Deny ID="ID_DENY_BEDAISY_60"
FriendlyName="BEDaisy.sys\a0e583bd88eb198558442f69a8bbfc96f4c5c297befea29513
8cfd2070f745c5 Hash Page Sha1"
Hash="359E5D9B0E4B5439E085E35667AAEDA67BE7AE8E" />
<Deny ID="ID_DENY_BEDAISY_61"
FriendlyName="BEDaisy.sys\a0e583bd88eb198558442f69a8bbfc96f4c5c297befea29513
8cfd2070f745c5 Hash Page Sha256"
Hash="2C5B7871F253F0806721B4F5AABCA2D1C5D28E67A750037EB1E2CB439975888A" />
<Deny ID="ID_DENY_BEDAISY_62"
FriendlyName="BEDaisy.sys\a19fc837ca342d2db43ee8ad7290df48a1b8b85996c58a19ca
3530101862a804 Hash Sha1" Hash="2B195297AE70B4858BA8DB425F1C807E996F10BF" />
<Deny ID="ID_DENY_BEDAISY_63"
FriendlyName="BEDaisy.sys\a19fc837ca342d2db43ee8ad7290df48a1b8b85996c58a19ca
3530101862a804 Hash Sha256"
Hash="425406152227F499013A6C3FBCF7700D98351A30E7813A30F0003F48ECEB08EC" />
<Deny ID="ID_DENY_BEDAISY_64"
FriendlyName="BEDaisy.sys\a19fc837ca342d2db43ee8ad7290df48a1b8b85996c58a19ca
3530101862a804 Hash Page Sha1"
Hash="B0C51B6D8158393F06C5F7BC12A1B3704C4625F8" />
<Deny ID="ID_DENY_BEDAISY_65"
FriendlyName="BEDaisy.sys\a19fc837ca342d2db43ee8ad7290df48a1b8b85996c58a19ca
3530101862a804 Hash Page Sha256"
Hash="6A486BE5B7D642AB14991BDCD23AD21228B04EFDEDCD013BB24B8CAF3BBD62CA" />
<Deny ID="ID_DENY_BEDAISY_66"
FriendlyName="BEDaisy.sys\af298d940b186f922464d2ef19ccfc129c77126a4f337ecf35
7b4fe5162a477c Hash Sha1" Hash="AA98203BB8C6FB612712A5E44DD118BEEA49B1AB" />
<Deny ID="ID_DENY_BEDAISY_67"
FriendlyName="BEDaisy.sys\af298d940b186f922464d2ef19ccfc129c77126a4f337ecf35
7b4fe5162a477c Hash Sha256"
Hash="E330DE98DB81F9B183EF37D31E111301DA669F1FC572E87ACF8B8C2FE4E602B5" />
<Deny ID="ID_DENY_BEDAISY_68"
FriendlyName="BEDaisy.sys\af298d940b186f922464d2ef19ccfc129c77126a4f337ecf35
7b4fe5162a477c Hash Page Sha1"
Hash="8FB917686DA50F43BF649111A4CBCAC82FE7FE1C" />
<Deny ID="ID_DENY_BEDAISY_69"
FriendlyName="BEDaisy.sys\af298d940b186f922464d2ef19ccfc129c77126a4f337ecf35
7b4fe5162a477c Hash Page Sha256"
Hash="5E724616ECBCE8DFF6B9E8CE6D168FFF04D3DBA3272FC6BD53D956E074241A37" />
<Deny ID="ID_DENY_BEDAISY_6A"
FriendlyName="BEDaisy.sys\b7bba82777c9912e6a728c3e873c5a8fd3546982e0d5fa88e6
4b3e2122f9bc3b Hash Sha1" Hash="2C7AC53B0D5F48FEA6816B561CCF1B925D878476" />
<Deny ID="ID_DENY_BEDAISY_6B"
FriendlyName="BEDaisy.sys\b7bba82777c9912e6a728c3e873c5a8fd3546982e0d5fa88e6
4b3e2122f9bc3b Hash Sha256"
Hash="7509D30B279E30893DB7851A2912A5FFB29EC7E839220890D76DE8E3A57B4872" />
<Deny ID="ID_DENY_BEDAISY_6C"
FriendlyName="BEDaisy.sys\b7bba82777c9912e6a728c3e873c5a8fd3546982e0d5fa88e6
4b3e2122f9bc3b Hash Page Sha1"
Hash="05A2D4EC406FC7F80B23E350A00043F3264D92AB" />
<Deny ID="ID_DENY_BEDAISY_6D"
FriendlyName="BEDaisy.sys\b7bba82777c9912e6a728c3e873c5a8fd3546982e0d5fa88e6
4b3e2122f9bc3b Hash Page Sha256"
Hash="BF8BD209AA5EE694FD7A6BB712E9668387E51ACA1EF9AC4665F2876836DDC09C" />
<Deny ID="ID_DENY_BEDAISY_6E"
FriendlyName="BEDaisy.sys\b9ed73af3aef69dc1fb91731d6d0a649e93f83d0f07ddb9729
d71c2d00ed0801 Hash Sha1" Hash="E647041E015042F8542CC042A07D0B0AC1D2F39F" />
<Deny ID="ID_DENY_BEDAISY_6F"
FriendlyName="BEDaisy.sys\b9ed73af3aef69dc1fb91731d6d0a649e93f83d0f07ddb9729
d71c2d00ed0801 Hash Sha256"
Hash="7128D13DC4269DE832723D4A3A6CFD7E6553576A9E96464583EB8BB5C2F243AA" />
<Deny ID="ID_DENY_BEDAISY_70"
FriendlyName="BEDaisy.sys\b9ed73af3aef69dc1fb91731d6d0a649e93f83d0f07ddb9729
d71c2d00ed0801 Hash Page Sha1"
Hash="7097B30017AD3920B0FE478A1D9E9CABAD0F3722" />
<Deny ID="ID_DENY_BEDAISY_71"
FriendlyName="BEDaisy.sys\b9ed73af3aef69dc1fb91731d6d0a649e93f83d0f07ddb9729
d71c2d00ed0801 Hash Page Sha256"
Hash="BAB5BF37B4D88A47514DC4662ACA51C143BF4B4750B9A0B5951E04A225E2D71F" />
<Deny ID="ID_DENY_BEDAISY_72"
FriendlyName="BEDaisy.sys\bceaf970b60b4457eca3c181f649a1c67f4602778171e53d9b
dc9b97a09603ca Hash Sha1" Hash="01A89DBC757ADA8B800C05E190AB5E527220D855" />
<Deny ID="ID_DENY_BEDAISY_73"
FriendlyName="BEDaisy.sys\bceaf970b60b4457eca3c181f649a1c67f4602778171e53d9b
dc9b97a09603ca Hash Sha256"
Hash="D7CC798804F07BA04CB1ED9233C5852D147B56DF612117C54667CF3EBBA975DE" />
<Deny ID="ID_DENY_BEDAISY_74"
FriendlyName="BEDaisy.sys\bceaf970b60b4457eca3c181f649a1c67f4602778171e53d9b
dc9b97a09603ca Hash Page Sha1"
Hash="06951F6ABED5B324F1DE55363CFD104C00C06774" />
<Deny ID="ID_DENY_BEDAISY_75"
FriendlyName="BEDaisy.sys\bceaf970b60b4457eca3c181f649a1c67f4602778171e53d9b
dc9b97a09603ca Hash Page Sha256"
Hash="BFAA101839761B77D242B0A3CE53774216DE271EA013C5F329F447F7002F8F14" />
<Deny ID="ID_DENY_BEDAISY_76"
FriendlyName="BEDaisy.sys\c0ae3349ebaac9a99c47ec55d5f7de00dc03bd7c5cd15799bc
00646d642aa8de Hash Sha1" Hash="604D6B46E39D0A635FDC853C8260C4DD003BAABC" />
<Deny ID="ID_DENY_BEDAISY_77"
FriendlyName="BEDaisy.sys\c0ae3349ebaac9a99c47ec55d5f7de00dc03bd7c5cd15799bc
00646d642aa8de Hash Sha256"
Hash="9F742D827A2E203A4C9D8FCCB1DAF2E85D451761FC9C0ACB962DD6C447EF10CA" />
<Deny ID="ID_DENY_BEDAISY_78"
FriendlyName="BEDaisy.sys\c0ae3349ebaac9a99c47ec55d5f7de00dc03bd7c5cd15799bc
00646d642aa8de Hash Page Sha1"
Hash="6DEC6F03E26A8BAB3137DA8A5DA0F845FDD5A4C0" />
<Deny ID="ID_DENY_BEDAISY_79"
FriendlyName="BEDaisy.sys\c0ae3349ebaac9a99c47ec55d5f7de00dc03bd7c5cd15799bc
00646d642aa8de Hash Page Sha256"
Hash="3946B7A043BDA62E630500FFA4A060B3AC62DDC42C41378D91EE2289E3B22806" />
<Deny ID="ID_DENY_BEDAISY_7A"
FriendlyName="BEDaisy.sys\c35f3a9da8e81e75642af20103240618b641d39724f9df438b
f0f361122876b0 Hash Sha1" Hash="B52B9BEC86703AF89322EBBC412DC499FA9CA13E" />
<Deny ID="ID_DENY_BEDAISY_7B"
FriendlyName="BEDaisy.sys\c35f3a9da8e81e75642af20103240618b641d39724f9df438b
f0f361122876b0 Hash Sha256"
Hash="DF101558CF68E3F50FB468248699E6F3938BE7A893680BD4803FC2AFE20BFD78" />
<Deny ID="ID_DENY_BEDAISY_7C"
FriendlyName="BEDaisy.sys\c35f3a9da8e81e75642af20103240618b641d39724f9df438b
f0f361122876b0 Hash Page Sha1"
Hash="AFBA960AEDDFD5D315CEE21CD2ED49B2E19AF6D9" />
<Deny ID="ID_DENY_BEDAISY_7D"
FriendlyName="BEDaisy.sys\c35f3a9da8e81e75642af20103240618b641d39724f9df438b
f0f361122876b0 Hash Page Sha256"
Hash="837D9F8F6FBAD1C04067D728136CE59072EA2EF93A37B89263F4DB065D8980E8" />
<Deny ID="ID_DENY_BEDAISY_7E"
FriendlyName="BEDaisy.sys\c640930c29ea3610a3a5cebee573235ec70267ed223b79b9fa
45a80081e686a4 Hash Sha1" Hash="5CB6613E446FA2D17036F6A63DE658C90BFB0070" />
<Deny ID="ID_DENY_BEDAISY_7F"
FriendlyName="BEDaisy.sys\c640930c29ea3610a3a5cebee573235ec70267ed223b79b9fa
45a80081e686a4 Hash Sha256"
Hash="6AE4D36CF42A3BD1DDF9DD98794B401CD995BC519A12FFBDE63E63B03A2424B3" />
<Deny ID="ID_DENY_BEDAISY_80"
FriendlyName="BEDaisy.sys\c640930c29ea3610a3a5cebee573235ec70267ed223b79b9fa
45a80081e686a4 Hash Page Sha1"
Hash="2DF5A98CEBDBAFAE8F6AF2F6C0838AF093EC08F6" />
<Deny ID="ID_DENY_BEDAISY_81"
FriendlyName="BEDaisy.sys\c640930c29ea3610a3a5cebee573235ec70267ed223b79b9fa
45a80081e686a4 Hash Page Sha256"
Hash="ED2B4148DC86521242982EC869EDE99E9F822A2AA34940468D9B56E70D859344" />
<Deny ID="ID_DENY_BEDAISY_82"
FriendlyName="BEDaisy.sys\c8ff7c9f510f7a2ed88d9b336d8c9339698d5e1ee14bfb91aa
89703ec06dce42 Hash Sha1" Hash="5AD637DCDB85221E5BBD23AE7C13745BC19D2F50" />
<Deny ID="ID_DENY_BEDAISY_83"
FriendlyName="BEDaisy.sys\c8ff7c9f510f7a2ed88d9b336d8c9339698d5e1ee14bfb91aa
89703ec06dce42 Hash Sha256"
Hash="F4222E186D23160C29FE2BDF163D29561139EAE8484D081457E7278872D7E9E2" />
<Deny ID="ID_DENY_BEDAISY_84"
FriendlyName="BEDaisy.sys\c8ff7c9f510f7a2ed88d9b336d8c9339698d5e1ee14bfb91aa
89703ec06dce42 Hash Page Sha1"
Hash="16B6874E55072CE5A00236428C0FA4338115C7CA" />
<Deny ID="ID_DENY_BEDAISY_85"
FriendlyName="BEDaisy.sys\c8ff7c9f510f7a2ed88d9b336d8c9339698d5e1ee14bfb91aa
89703ec06dce42 Hash Page Sha256"
Hash="CB1879A701834973650E69A3C252BD318DF2E7DF6A59281034766010DC76EAEB" />
<Deny ID="ID_DENY_BEDAISY_86"
FriendlyName="BEDaisy.sys\cf66fcbcb8b2ea7fb4398f398b7480c50f6a451b51367718c3
6330182c1bb496 Hash Sha1" Hash="72F17FFB8A9676A099207DDD28BC616E018173B4" />
<Deny ID="ID_DENY_BEDAISY_87"
FriendlyName="BEDaisy.sys\cf66fcbcb8b2ea7fb4398f398b7480c50f6a451b51367718c3
6330182c1bb496 Hash Sha256"
Hash="4AD2DF1AE0C1FFAA2492DE91BBE24FF6BF2B2BEB18A62366207DFB4257ED5C60" />
<Deny ID="ID_DENY_BEDAISY_88"
FriendlyName="BEDaisy.sys\cf66fcbcb8b2ea7fb4398f398b7480c50f6a451b51367718c3
6330182c1bb496 Hash Page Sha1"
Hash="B7B4D4C107377D1726B1300A611F45E9A4434875" />
<Deny ID="ID_DENY_BEDAISY_89"
FriendlyName="BEDaisy.sys\cf66fcbcb8b2ea7fb4398f398b7480c50f6a451b51367718c3
6330182c1bb496 Hash Page Sha256"
Hash="43C82F7AD5063B0DC4ED835DF42176B2E767B2CE445726E908AF0FBBC1621299" />
<Deny ID="ID_DENY_BEDAISY_8A"
FriendlyName="BEDaisy.sys\d2e843d9729da9b19d6085edf69b90b057c890a74142f52027
07057ee9c0b568 Hash Sha1" Hash="60FF2C96436F6CF2A1E0DB1C3DBB203F1F6C93A6" />
<Deny ID="ID_DENY_BEDAISY_8B"
FriendlyName="BEDaisy.sys\d2e843d9729da9b19d6085edf69b90b057c890a74142f52027
07057ee9c0b568 Hash Sha256"
Hash="761CA3AEE052D4A34F500DEE578EF55A4E481B1D6096EB3573F3F828ECFE4F89" />
<Deny ID="ID_DENY_BEDAISY_8C"
FriendlyName="BEDaisy.sys\d2e843d9729da9b19d6085edf69b90b057c890a74142f52027
07057ee9c0b568 Hash Page Sha1"
Hash="719F447D764F784A70C7412E887386DA96AFD66B" />
<Deny ID="ID_DENY_BEDAISY_8D"
FriendlyName="BEDaisy.sys\d2e843d9729da9b19d6085edf69b90b057c890a74142f52027
07057ee9c0b568 Hash Page Sha256"
Hash="8091674FF39789D6AA713E070E277A4482C3A4BA63BA28F16ADADC0005584795" />
<Deny ID="ID_DENY_BEDAISY_8E"
FriendlyName="BEDaisy.sys\dbebf6d463c2dbf61836b3eba09b643e1d79a02652a32482ca
58894703b9addb Hash Sha1" Hash="0BA998452DDE334262E0FE1C8FEC365805C8B199" />
<Deny ID="ID_DENY_BEDAISY_8F"
FriendlyName="BEDaisy.sys\dbebf6d463c2dbf61836b3eba09b643e1d79a02652a32482ca
58894703b9addb Hash Sha256"
Hash="5DB0FE4B16744F14B4AB1D255A4D3C63710D0073417BAE9BB3BFEEF4A09D38E0" />
<Deny ID="ID_DENY_BEDAISY_90"
FriendlyName="BEDaisy.sys\dbebf6d463c2dbf61836b3eba09b643e1d79a02652a32482ca
58894703b9addb Hash Page Sha1"
Hash="BE421332CF40788CEB89AB8C62D069C6BD179BC6" />
<Deny ID="ID_DENY_BEDAISY_91"
FriendlyName="BEDaisy.sys\dbebf6d463c2dbf61836b3eba09b643e1d79a02652a32482ca
58894703b9addb Hash Page Sha256"
Hash="095064C08AD9C955F752536BA67BC1AD34967EAC560BB9CC805C9CFA038B8834" />
<Deny ID="ID_DENY_BEDAISY_92"
FriendlyName="BEDaisy.sys\e89afd283d5789b8064d5487e04b97e2cd3fc0c711a8cec230
543ebdf9ffc534 Hash Sha1" Hash="48360C28FFA27E0316856C5D392A251ADD2A83B8" />
<Deny ID="ID_DENY_BEDAISY_93"
FriendlyName="BEDaisy.sys\e89afd283d5789b8064d5487e04b97e2cd3fc0c711a8cec230
543ebdf9ffc534 Hash Sha256"
Hash="74F9975737DD078C75048BB01549E7678EB61C065D1F50294B80CAEB65CBD65E" />
<Deny ID="ID_DENY_BEDAISY_94"
FriendlyName="BEDaisy.sys\e89afd283d5789b8064d5487e04b97e2cd3fc0c711a8cec230
543ebdf9ffc534 Hash Page Sha1"
Hash="090BC37ACFB05F90E3D5DD993D863730F6DD9E82" />
<Deny ID="ID_DENY_BEDAISY_95"
FriendlyName="BEDaisy.sys\e89afd283d5789b8064d5487e04b97e2cd3fc0c711a8cec230
543ebdf9ffc534 Hash Page Sha256"
Hash="F9129D38C028F21B711392353ABCCF9B897CA2E33DA57A558C1E318F9C27B703" />
<Deny ID="ID_DENY_BEDAISY_96"
FriendlyName="BEDaisy.sys\eba14a2b4cefd74edaf38d963775352dc3618977e30261aab5
2be682a76b536f Hash Sha1" Hash="36ED967BC3B6973B695AA18C57F5B3BE5E20BB6A" />
<Deny ID="ID_DENY_BEDAISY_97"
FriendlyName="BEDaisy.sys\eba14a2b4cefd74edaf38d963775352dc3618977e30261aab5
2be682a76b536f Hash Sha256"
Hash="9FB474B921371C4679582DF8484932B832345693DE94E3C4A158638B4D75A19C" />
<Deny ID="ID_DENY_BEDAISY_98"
FriendlyName="BEDaisy.sys\eba14a2b4cefd74edaf38d963775352dc3618977e30261aab5
2be682a76b536f Hash Page Sha1"
Hash="59CE8DB3A0337591D9C3E6A3160C581FB38373F6" />
<Deny ID="ID_DENY_BEDAISY_99"
FriendlyName="BEDaisy.sys\eba14a2b4cefd74edaf38d963775352dc3618977e30261aab5
2be682a76b536f Hash Page Sha256"
Hash="9D1E69EED4B37ECAD18DFF43A4F52012932EC6D0742A963DB24E67B3C5F11C2A" />
<Deny ID="ID_DENY_BEDAISY_9A"
FriendlyName="BEDaisy.sys\edfc38f91b5e198f3bf80ef6dcaebb5e86963936bcd2e52800
88ca90d6998b8c Hash Sha1" Hash="7ECBE0821F670B243837F7A98C08E3229F301339" />
<Deny ID="ID_DENY_BEDAISY_9B"
FriendlyName="BEDaisy.sys\edfc38f91b5e198f3bf80ef6dcaebb5e86963936bcd2e52800
88ca90d6998b8c Hash Sha256"
Hash="F8AEB50A115B4D35F15F876EB1A6E5EE5F3A142DE12EEC50B6BDF81196FFBEA4" />
<Deny ID="ID_DENY_BEDAISY_9C"
FriendlyName="BEDaisy.sys\edfc38f91b5e198f3bf80ef6dcaebb5e86963936bcd2e52800
88ca90d6998b8c Hash Page Sha1"
Hash="5742AAA5B78E3FC2CC142D4A3F2871B2C321D90A" />
<Deny ID="ID_DENY_BEDAISY_9D"
FriendlyName="BEDaisy.sys\edfc38f91b5e198f3bf80ef6dcaebb5e86963936bcd2e52800
88ca90d6998b8c Hash Page Sha256"
Hash="0403838956AF7219966A763D25B651831599C3C9188E6B2DF21BCACF8355853C" />
<Deny ID="ID_DENY_BEDAISY_9E"
FriendlyName="BEDaisy.sys\f2ed6c1906663016123559d9f3407bc67f64e0d235fa6f1081
0a3fa7bb322967 Hash Sha1" Hash="427DDACCCA98CFDA7F6778DA1E7FF824C9B49FF8" />
<Deny ID="ID_DENY_BEDAISY_9F"
FriendlyName="BEDaisy.sys\f2ed6c1906663016123559d9f3407bc67f64e0d235fa6f1081
0a3fa7bb322967 Hash Sha256"
Hash="1933F27EBEBDE55942291381219497019077548A074E8DCDB120C94DF1A2489E" />
<Deny ID="ID_DENY_BEDAISY_A0"
FriendlyName="BEDaisy.sys\f2ed6c1906663016123559d9f3407bc67f64e0d235fa6f1081
0a3fa7bb322967 Hash Page Sha1"
Hash="63D1ABBEC6614232F5E9D62D3CC06683F2D892E3" />
<Deny ID="ID_DENY_BEDAISY_A1"
FriendlyName="BEDaisy.sys\f2ed6c1906663016123559d9f3407bc67f64e0d235fa6f1081
0a3fa7bb322967 Hash Page Sha256"
Hash="28B614518E087735C18E961D10E0D3B1F65285074532553835EDC024F427DC93" />
<Deny ID="ID_DENY_BEDAISY_A2"
FriendlyName="BEDaisy.sys\fa21e3d2bfb9fafddec0488852377fbb2dbdd6c066ca05bb5c
4b6aa840fb7879 Hash Sha1" Hash="344BCC6E97EC8026C1684BB97C58FA37973176A0" />
<Deny ID="ID_DENY_BEDAISY_A3"
FriendlyName="BEDaisy.sys\fa21e3d2bfb9fafddec0488852377fbb2dbdd6c066ca05bb5c
4b6aa840fb7879 Hash Sha256"
Hash="FACC577070CF72CB8D9247E36054FCB30C60A35AE056CFFAC7411648C513E642" />
<Deny ID="ID_DENY_BEDAISY_A4"
FriendlyName="BEDaisy.sys\fa21e3d2bfb9fafddec0488852377fbb2dbdd6c066ca05bb5c
4b6aa840fb7879 Hash Page Sha1"
Hash="C108FFAA673FE8DA888ADEC33C14A72185B0B949" />
<Deny ID="ID_DENY_BEDAISY_A5"
FriendlyName="BEDaisy.sys\fa21e3d2bfb9fafddec0488852377fbb2dbdd6c066ca05bb5c
4b6aa840fb7879 Hash Page Sha256"
Hash="C621FB06937AFC35A944BA5F495D733E512F20E3A8305A8FC6ADF15993041ADB" />
<Deny ID="ID_DENY_BEDAISY_A6"
FriendlyName="BEDaisy.sys\ffd03584246730397e231eb8d16c1449aef2c3bc79bf9da3eb
f8400a21b20ae7 Hash Sha1" Hash="6A0FC9C1B6267BD2FB1C71D7EEE45CAF1F4E7B83" />
<Deny ID="ID_DENY_BEDAISY_A7"
FriendlyName="BEDaisy.sys\ffd03584246730397e231eb8d16c1449aef2c3bc79bf9da3eb
f8400a21b20ae7 Hash Sha256"
Hash="B1AD1AF005BD78E1EA1D1EEF5041C2BDB46F60A9BAA60F4B7BE21F9603F99DF0" />
<Deny ID="ID_DENY_BEDAISY_A8"
FriendlyName="BEDaisy.sys\ffd03584246730397e231eb8d16c1449aef2c3bc79bf9da3eb
f8400a21b20ae7 Hash Page Sha1"
Hash="7DCE104576DB9CB565DC9BD09955DF89782D7F44" />
<Deny ID="ID_DENY_BEDAISY_A9"
FriendlyName="BEDaisy.sys\ffd03584246730397e231eb8d16c1449aef2c3bc79bf9da3eb
f8400a21b20ae7 Hash Page Sha256"
Hash="B3C8D116CB3D8F3E75F216DEBDFBE2B1523D496CCF9D7E5916C476BFC8A7F477" />
<Deny ID="ID_DENY_BSFLASH64_SHA1" FriendlyName="BS_Flash64.sys Hash
Sha1" Hash="5107438A02164E1BCEDD556A786F37F59CD04231" />
<Deny ID="ID_DENY_BSFLASH64_SHA256" FriendlyName="BS_Flash64.sys Hash
Sha256"
Hash="543C3F024E4AFFD0AAFA3A229FA19DBE7A70972BB18ED6347D3492DD174EDAC5" />
<Deny ID="ID_DENY_BSFLASH64_SHA1_PAGE" FriendlyName="BS_Flash64.sys Hash
Page Sha1" Hash="26C398B86FD33B3E6C4348F780C4CF758C99C8FD" />
<Deny ID="ID_DENY_BSFLASH64_SHA256_PAGE" FriendlyName="BS_Flash64.sys
Hash Page Sha256"
Hash="8BF958AFA751D7AB66EBB1FAE25679E6F0FDE72078AEFC09F1824EEFA526005E" />
<Deny ID="ID_DENY_BSHWMIO64_SHA1" FriendlyName="BS_HWMIo64.sys Hash
Sha1" Hash="3281135748C9C7A9DDACE55C648C720AF810475F" />
<Deny ID="ID_DENY_BSHWMIO64_SHA256" FriendlyName="BS_HWMIo64.sys Hash
Sha256"
Hash="3DE51A3102DB7297D96B4DE5B60ACA5F3A07E8577BBBED7F755F1DE9A9C38E75" />
<Deny ID="ID_DENY_BSHWMIO64_SHA1_PAGE" FriendlyName="BS_HWMIo64.sys Hash
Page Sha1" Hash="FC5F231383FE72E298893010A9A3714B205C4110" />
<Deny ID="ID_DENY_BSHWMIO64_SHA256_PAGE" FriendlyName="BS_HWMIo64.sys
Hash Page Sha256"
Hash="6AD3624CA1DC38ECEEC75234E50934B1BAD7C72621DC57DEAB09044D0135877D" />
<Deny ID="ID_DENY_BSHWMIO64_SHA1_1"
FriendlyName="BS_HWMIo64.sys\6dafd15ee2fbce87fef1279312660fc399c4168f55b6e6d
463bf680f1979adcf Hash Sha1" Hash="EDDCDD3838C05F5B95661D5404BF5D510EF34EB3"
/>
<Deny ID="ID_DENY_BSHWMIO64_SHA256_1"
FriendlyName="BS_HWMIo64.sys\6dafd15ee2fbce87fef1279312660fc399c4168f55b6e6d
463bf680f1979adcf Hash Sha256"
Hash="7EA9B2420483183CF7B25D6577848F2DFE2AE064A61D931D6B8B65B31A1B2685" />
<Deny ID="ID_DENY_BSHWMIO64_SHA1_PAGE_1"
FriendlyName="BS_HWMIo64.sys\6dafd15ee2fbce87fef1279312660fc399c4168f55b6e6d
463bf680f1979adcf Hash Page Sha1"
Hash="7E21A9D03BCB6DD7597AD70B59CBD1F5930FFBF1" />
<Deny ID="ID_DENY_BSHWMIO64_SHA256_PAGE_1"
FriendlyName="BS_HWMIo64.sys\6dafd15ee2fbce87fef1279312660fc399c4168f55b6e6d
463bf680f1979adcf Hash Page Sha256"
Hash="74C425BFDDD93700379E677F5CED47FC0FB4FFFC8B2E416A5247D91E5F2704E3" />
<Deny ID="ID_DENY_BS_RCIO_08"
FriendlyName="BS_RCIO\1d0105b5e41fe0280f66d7a24eb00a04c03caaec Hash Sha1"
Hash="1D0105B5E41FE0280F66D7A24EB00A04C03CAAEC" />
<Deny ID="ID_DENY_BS_RCIO_09"
FriendlyName="BS_RCIO\d9111b2bedf78a769bb0799b964663cd119edaa8 Hash Sha1"
Hash="D9111B2BEDF78A769BB0799B964663CD119EDAA8" />
<Deny ID="ID_DENY_BS_RCIO_10"
FriendlyName="BS_RCIO\362c4f3dadc9c393682664a139d65d80e32caa2a97b6e0361dfd71
3a73267ecc Hash Sha1" Hash="3311E4E94E8A6DD81859719FBE0FCBF187F0BD8A" />
<Deny ID="ID_DENY_BS_RCIO_11"
FriendlyName="BS_RCIO\362c4f3dadc9c393682664a139d65d80e32caa2a97b6e0361dfd71
3a73267ecc Hash Sha256"
Hash="F67E60228084151FDCB84E94A48693DB864CF606B65FAEF5A1D829175380DBFA" />
<Deny ID="ID_DENY_BS_RCIO_12"
FriendlyName="BS_RCIO\362c4f3dadc9c393682664a139d65d80e32caa2a97b6e0361dfd71
3a73267ecc Hash Page Sha1" Hash="6C5340CA145D93FB04F8C45297B013D7A76CC816"
/>
<Deny ID="ID_DENY_BS_RCIO_13"
FriendlyName="BS_RCIO\362c4f3dadc9c393682664a139d65d80e32caa2a97b6e0361dfd71
3a73267ecc Hash Page Sha256"
Hash="DB004632D7E5EB01B13D826E476A45812BAD3E84A07D00F331D4C17A94A15366" />
<Deny ID="ID_DENY_BS_RCIO_14"
FriendlyName="BS_RCIO\6191c20426dd9b131122fb97e45be64a4d6ce98cc583406f384734
34636ddedc Hash Sha1" Hash="3C8CAB4C08A37A105200FEB8F07DD818C8F03BFF" />
<Deny ID="ID_DENY_BS_RCIO_15"
FriendlyName="BS_RCIO\6191c20426dd9b131122fb97e45be64a4d6ce98cc583406f384734
34636ddedc Hash Sha256"
Hash="545190E8B2A910E153B12559A9875154A1B40D6424CB4A6299A84B2DC99DF700" />
<Deny ID="ID_DENY_BS_RCIO_16"
FriendlyName="BS_RCIO\6191c20426dd9b131122fb97e45be64a4d6ce98cc583406f384734
34636ddedc Hash Page Sha1" Hash="0B20D30317527C83B72A0F5ED6416060BF005A02"
/>
<Deny ID="ID_DENY_BS_RCIO_17"
FriendlyName="BS_RCIO\6191c20426dd9b131122fb97e45be64a4d6ce98cc583406f384734
34636ddedc Hash Page Sha256"
Hash="A2BFCECB9099B2022B51EB15977DF4EF228305FC24A3AD0F36FF43F7309B2820" />
<Deny ID="ID_DENY_BS_RCIO_18"
FriendlyName="BS_RCIO\73327429c505d8c5fd690a8ec019ed4fd5a726b607cabe71509111
c7bfe9fc7e Hash Sha1" Hash="4BFE9E5A5A25B7CDE6C81EBE31ED4ABEB5147FAF" />
<Deny ID="ID_DENY_BS_RCIO_19"
FriendlyName="BS_RCIO\73327429c505d8c5fd690a8ec019ed4fd5a726b607cabe71509111
c7bfe9fc7e Hash Sha256"
Hash="0381632CD236CD94FA9E64CCC958516AC50F9437F99092E231A607B1E6BE6CF8" />
<Deny ID="ID_DENY_BS_RCIO_1A"
FriendlyName="BS_RCIO\73327429c505d8c5fd690a8ec019ed4fd5a726b607cabe71509111
c7bfe9fc7e Hash Page Sha1" Hash="C28B640BECA5E2834D2A373F139869CC309F6631"
/>
<Deny ID="ID_DENY_BS_RCIO_1B"
FriendlyName="BS_RCIO\73327429c505d8c5fd690a8ec019ed4fd5a726b607cabe71509111
c7bfe9fc7e Hash Page Sha256"
Hash="9378F7DFF94D9409D38FA1A125C52734D6BAEA90913FC3CEE2659FD36AB0DA29" />
<Deny ID="ID_DENY_BS_RCIO_1C"
FriendlyName="BS_RCIO\d55b675941da4cc9be05f2ef7cea15784074772da585e5bf56d5be
15afde4789 Hash Sha1" Hash="7297D6511634ECA91FEA5C5F3FAAB785DD13082B" />
<Deny ID="ID_DENY_BS_RCIO_1D"
FriendlyName="BS_RCIO\d55b675941da4cc9be05f2ef7cea15784074772da585e5bf56d5be
15afde4789 Hash Sha256"
Hash="B3346AA8A3760128C99D7A80E8BBEEE66840CE419B9819E30CB08354C096EF93" />
<Deny ID="ID_DENY_BS_RCIO_1E"
FriendlyName="BS_RCIO\d55b675941da4cc9be05f2ef7cea15784074772da585e5bf56d5be
15afde4789 Hash Page Sha1" Hash="F93F92147E77B2C40BB13A30B7A469961B6E37F6"
/>
<Deny ID="ID_DENY_BS_RCIO_1F"
FriendlyName="BS_RCIO\d55b675941da4cc9be05f2ef7cea15784074772da585e5bf56d5be
15afde4789 Hash Page Sha256"
Hash="1497746B441564887F2AE97FAAC17145C727F170B225073A3CC45CF6BBABACF0" />
<Deny ID="ID_DENY_BS_RCIO_20"
FriendlyName="BS_RCIO\e9e711056fada8681f3eb5578a0d449b68568bc812e29dfcc0b92b
9a9e481202 Hash Sha1" Hash="B798995FBAAB33D0DB4AC8C58551254768C76554" />
<Deny ID="ID_DENY_BS_RCIO_21"
FriendlyName="BS_RCIO\e9e711056fada8681f3eb5578a0d449b68568bc812e29dfcc0b92b
9a9e481202 Hash Sha256"
Hash="30591EA53FBA8BAD22A017CF5A268211790706B7863F007CE20A77F2E3459170" />
<Deny ID="ID_DENY_BS_RCIO_22"
FriendlyName="BS_RCIO\e9e711056fada8681f3eb5578a0d449b68568bc812e29dfcc0b92b
9a9e481202 Hash Page Sha1" Hash="AF5B84A2456E2621F920D61130DDAAD32CD4729F"
/>
<Deny ID="ID_DENY_BS_RCIO_23"
FriendlyName="BS_RCIO\e9e711056fada8681f3eb5578a0d449b68568bc812e29dfcc0b92b
9a9e481202 Hash Page Sha256"
Hash="6F698A9123CC763F0F035CF50177BF5690B4644802746C8C2F06F59CFC0D9F81" />
<Deny ID="ID_DENY_DHKERNEL_1"
FriendlyName="YY_DhKernel\80cbba9f404df3e642f22c476664d63d7c229d45d34f5cd0e1
9c65eb41becec3 Hash Sha1" Hash="B92959042D232605ABBA254BC0368B87EC047079" />
<Deny ID="ID_DENY_DHKERNEL_2"
FriendlyName="YY_DhKernel\80cbba9f404df3e642f22c476664d63d7c229d45d34f5cd0e1
9c65eb41becec3 Hash Sha256"
Hash="C786F3CA229DA18B2806AF4D57ECAD603859EE548549B19F71A623F477FC740E" />
<Deny ID="ID_DENY_DHKERNEL_3"
FriendlyName="YY_DhKernel\80cbba9f404df3e642f22c476664d63d7c229d45d34f5cd0e1
9c65eb41becec3 Hash Page Sha1"
Hash="CFE049C9BAB44EDD22D135330F7825063F1307B4" />
<Deny ID="ID_DENY_DHKERNEL_4"
FriendlyName="YY_DhKernel\80cbba9f404df3e642f22c476664d63d7c229d45d34f5cd0e1
9c65eb41becec3 Hash Page Sha256"
Hash="8146C482151930412A3A648CEFE80643FB1016214117BFF256153E52D01E4ED2" />
<Deny ID="ID_DENY_DHKERNEL_5"
FriendlyName="YY_DhKernel\bb50818a07b0eb1bd317467139b7eb4bad6cd89053fecdabfe
ae111689825955 Hash Sha1" Hash="508C1A26486188AA1268D6C23C65E57B8EFE71F6" />
<Deny ID="ID_DENY_DHKERNEL_6"
FriendlyName="YY_DhKernel\bb50818a07b0eb1bd317467139b7eb4bad6cd89053fecdabfe
ae111689825955 Hash Sha256"
Hash="F5215F83138901CA7ADE60C2222446FA3DD7E8900A745BD339F8A596CB29356C" />
<Deny ID="ID_DENY_DHKERNEL_8"
FriendlyName="YY_DhKernel\bb50818a07b0eb1bd317467139b7eb4bad6cd89053fecdabfe
ae111689825955 Hash Page Sha1"
Hash="475E1306D823702264DB8451D8A1D3512E7CA260" />
<Deny ID="ID_DENY_DHKERNEL_9"
FriendlyName="YY_DhKernel\bb50818a07b0eb1bd317467139b7eb4bad6cd89053fecdabfe
ae111689825955 Hash Page Sha256"
Hash="2BF083DCADC1CAE99AD5C5901317130C1230A228208F37DCB4DF341394442299" />
<Deny ID="ID_DENY_DHKERNEL_10"
FriendlyName="YY_DhKernel\dcd026fd2ff8d517e2779d67b3d2d5f9a7aa39f19c66fa8ff2
cab66d5c6461c6 Hash Sha1" Hash="39ED8A86F91A548AE05E71E9C1C337ED4FAD8EE4" />
<Deny ID="ID_DENY_DHKERNEL_11"
FriendlyName="YY_DhKernel\dcd026fd2ff8d517e2779d67b3d2d5f9a7aa39f19c66fa8ff2
cab66d5c6461c6 Hash Sha256"
Hash="8BCE2AFD04EC073143A2A4BA51671992451C8E747A84852458321F2D275B5433" />
<Deny ID="ID_DENY_DHKERNEL_12"
FriendlyName="YY_DhKernel\dcd026fd2ff8d517e2779d67b3d2d5f9a7aa39f19c66fa8ff2
cab66d5c6461c6 Hash Page Sha1"
Hash="890A839069A81D76EB8FB53C9D18F8BE09C101F2" />
<Deny ID="ID_DENY_DHKERNEL_13"
FriendlyName="YY_DhKernel\dcd026fd2ff8d517e2779d67b3d2d5f9a7aa39f19c66fa8ff2
cab66d5c6461c6 Hash Page Sha256"
Hash="F7365B2ECAD159FFD61261F114333765FD73E3039270F51837EB24A63455AE9A" />
<Deny ID="ID_DENY_DIRECTIO_12" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="E8F7E20061F9CC20583DCAB3B16054D106B8AA83" />
<Deny ID="ID_DENY_DIRECTIO_13" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="B8BF3BD441EBC5814C5D39D053FDCB263E8E58476CBDEE4B1226903305F547B6" />
<Deny ID="ID_DENY_DIRECTIO_14" FriendlyName="PassMark DirectIo.sys Hash
Page Sha1" Hash="36875A862D1E762E6CC75595EF37EA7460A1E1DF" />
<Deny ID="ID_DENY_DIRECTIO_15" FriendlyName="PassMark DirectIo.sys Hash
Page Sha256"
Hash="AC706D9ED906B5C879F6AD59FFB56FA6BC5E1395FE9ADF7C60F7EB94D044D018" />
<Deny ID="ID_DENY_DIRECTIO_16" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="DCDB7BF7E237B9BDA190F60E386A49A7C3494F8D" />
<Deny ID="ID_DENY_DIRECTIO_17" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="F34C667C0DA3CD813E60F11B67338723252BEB9BD43FC5E0C8C7265F263D2BD9" />
<Deny ID="ID_DENY_DIRECTIO_18" FriendlyName="PassMark DirectIo.sys Hash
Page Sha1" Hash="179601E33B5AE4E2EA13F34FD084B1FCBD56FBCE" />
<Deny ID="ID_DENY_DIRECTIO_19" FriendlyName="PassMark DirectIo.sys Hash
Page Sha256"
Hash="C7B193F92A943AFBC0EB57B23B5BE5E66F66574051BF838B6735E13733DA1809" />
<Deny ID="ID_DENY_DIRECTIO_1A" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="8B86E08D610BCC9AB7B7750F036DBB568F733BE0" />
<Deny ID="ID_DENY_DIRECTIO_1B" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="841F965977F33D621D126412032C47DD6118251623C380E5572F7553B620B0E1" />
<Deny ID="ID_DENY_DIRECTIO_1C" FriendlyName="PassMark DirectIo.sys Hash
Page Sha1" Hash="6BD3AB2E730561F7D1385DCFEF81C1FA67398C8C" />
<Deny ID="ID_DENY_DIRECTIO_1D" FriendlyName="PassMark DirectIo.sys Hash
Page Sha256"
Hash="D3ECCD41C75046CA9A72AF273C132AEDED1D6572A20D1A64ED08337204B9DA83" />
<Deny ID="ID_DENY_DIRECTIO_1E" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="02A7E085631ECFE031B76AFA883A266C850ED61B" />
<Deny ID="ID_DENY_DIRECTIO_1F" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="FB5E65AEC819C5A91EF0CE0FEC0A957826B5E1AC9BAC559A1B4201A3870462A3" />
<Deny ID="ID_DENY_DIRECTIO_20" FriendlyName="PassMark DirectIo.sys Hash
Page Sha1" Hash="C3596085C90D81C2C51A75558211AD44C853C358" />
<Deny ID="ID_DENY_DIRECTIO_21" FriendlyName="PassMark DirectIo.sys Hash
Page Sha256"
Hash="D402FE9EED2C0A26AAF2CB2311019FFF7004965AA2D22702974203A50A52C9B0" />
<Deny ID="ID_DENY_DIRECTIO_22" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="66941573DAFD7259CBA113C0FA9EACCD347355FD" />
<Deny ID="ID_DENY_DIRECTIO_23" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="A520FF5C754A1FB62BA88399A313D0C0FB99145BA2D3D91DBF4282388B77FA84" />
<Deny ID="ID_DENY_DIRECTIO_24" FriendlyName="PassMark DirectIo.sys Hash
Page Sha1" Hash="588A9F349E520AA5AC5BD650B75345419B28AE85" />
<Deny ID="ID_DENY_DIRECTIO_25" FriendlyName="PassMark DirectIo.sys Hash
Page Sha256"
Hash="2E7B3C52FE1541B51F814B82FCED59513DE249B6834B4B2C94ACD97CA889477C" />
<Deny ID="ID_DENY_DIRECTIO_26" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="8EC43D1DEF8BB20354AEBA49A9084BACD2C02817" />
<Deny ID="ID_DENY_DIRECTIO_27" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="AD44CFD9C6262A6FF36EE9D03E59BA4B0524EF87F6B980CE15ABB10A35D39F88" />
<Deny ID="ID_DENY_DIRECTIO_28" FriendlyName="PassMark DirectIo.sys Hash
Page Sha1" Hash="708EAD1221FB176AA9594F9E0AA7F783704FB962" />
<Deny ID="ID_DENY_DIRECTIO_29" FriendlyName="PassMark DirectIo.sys Hash
Page Sha256"
Hash="80BFD0EAD1EA54219D6A1A454242CAA6C2397FA94AF1B4E10D269B670AFDA898" />
<Deny ID="ID_DENY_DIRECTIO_2A" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="F1BDD3236F43338A119D74ECA730F0D464DED973" />
<Deny ID="ID_DENY_DIRECTIO_2B" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="96A5B3CD7C1A6DDA5B6F402E6C35BA535270467F56ADDC7448DBE4AA78428411" />
<Deny ID="ID_DENY_DIRECTIO_2C" FriendlyName="PassMark DirectIo.sys Hash
Page Sha1" Hash="A14331F63EC907BF3E472F1E0CB8F19DE06EF4E4" />
<Deny ID="ID_DENY_DIRECTIO_2D" FriendlyName="PassMark DirectIo.sys Hash
Page Sha256"
Hash="7F0A28CCF0AB76964D40E063F9D4B88193B77E4BADF66E8C8F87C97127885987" />
<Deny ID="ID_DENY_DIRECTIO_2E" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="FCA1EE04BE5D7752A1AD717A6AAC9C143C5C8BCD" />
<Deny ID="ID_DENY_DIRECTIO_2F" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="E219276A4068B1EEA5CE08F83A322845DCE4ECA89E05C71A0C2417065CE48813" />
<Deny ID="ID_DENY_DIRECTIO_30" FriendlyName="PassMark DirectIo.sys Hash
Page Sha1" Hash="0D1DC447860DC9B9B7FA278FF16120E14064517C" />
<Deny ID="ID_DENY_DIRECTIO_31" FriendlyName="PassMark DirectIo.sys Hash
Page Sha256"
Hash="EBFBFA7C84036A4CF0114BBB0C8017B532F37D846589AEB0004BC8B1F5F4D230" />
<Deny ID="ID_DENY_DIRECTIO_32" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="EBF8C7DC8292950ACC260A0E473678AE3C56B210" />
<Deny ID="ID_DENY_DIRECTIO_33" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="43B7715E38449BF82AD0BB6B11D03DA42150C1EE23148C5F396CC4AB1001622D" />
<Deny ID="ID_DENY_DIRECTIO_34" FriendlyName="PassMark DirectIo.sys Hash
Page Sha1" Hash="05E20D0274A4FCC5368F25C62174003A555917E7" />
<Deny ID="ID_DENY_DIRECTIO_35" FriendlyName="PassMark DirectIo.sys Hash
Page Sha256"
Hash="70344F2494D6B7EE4C5716E886D912447CFFE9695D2286814DC3CE0361727BBA" />
<Deny ID="ID_DENY_DIRECTIO_36" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="706686F2A1EF4738A1856D01AB10EB730FC7B327" />
<Deny ID="ID_DENY_DIRECTIO_37" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="B74246C8CB77B0364B7CECE38BFF5F462EEC983C" />
<Deny ID="ID_DENY_DIRECTIO_38" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="B423CA58603513B5D3A9669736D5E13C353FD6F9" />
<Deny ID="ID_DENY_DIRECTIO_39" FriendlyName="PassMark DirectIo.sys Hash
Sha256"
Hash="2FB5D7E6DB01C9090BBA92ABF580D38993E02CE9357E08FE1F224A9B18056E5A" />
<Deny ID="ID_DENY_DIRECTIO_3A" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="AE806CA05E141B71664D9C6F20CC2369EF26F996" />
<Deny ID="ID_DENY_DIRECTIO_3B" FriendlyName="PassMark DirectIo.sys Hash
Sha1" Hash="D0559503988DAA407FCC11E59079560CB456BB84" />
<Deny ID="ID_DENY_DIRECTIO_42"
FriendlyName="DirectIO32\035b96ff8b85d312be0f9df6271714392a802ec8bab59ae8229
812ddc67ced5a Hash Sha1" Hash="59C8F056DEA50A4B6F6F63E50037089965568910" />
<Deny ID="ID_DENY_DIRECTIO_43"
FriendlyName="DirectIO32\035b96ff8b85d312be0f9df6271714392a802ec8bab59ae8229
812ddc67ced5a Hash Sha256"
Hash="2FB5D7E6DB01C9090BBA92ABF580D38993E02CE9357E08FE1F224A9B18056E5A" />
<Deny ID="ID_DENY_DIRECTIO_44"
FriendlyName="DirectIO32\035b96ff8b85d312be0f9df6271714392a802ec8bab59ae8229
812ddc67ced5a Hash Page Sha1"
Hash="76F561B94050F02639B216A27D221DCE66135A43" />
<Deny ID="ID_DENY_DIRECTIO_45"
FriendlyName="DirectIO32\035b96ff8b85d312be0f9df6271714392a802ec8bab59ae8229
812ddc67ced5a Hash Page Sha256"
Hash="2C75CAEE18ECB8F6A3B41EF6CE13A65D847BC912423AB095CE760979D8D8E3B4" />
<Deny ID="ID_DENY_DIRECTIO_46"
FriendlyName="DirectIO32\0be4912bfd7a79f6ebfa1c06a59f0fb402bd4fe015826578050
9edd0e562eac1 Hash Sha1" Hash="956C004DBED19D2682F159E03D4FAA3E2E8FC56C" />
<Deny ID="ID_DENY_DIRECTIO_47"
FriendlyName="DirectIO32\0be4912bfd7a79f6ebfa1c06a59f0fb402bd4fe015826578050
9edd0e562eac1 Hash Sha256"
Hash="A8492A553EE840235FD12FA47B6CAF1E5A8C82C3F4B681921246D7F192ED9126" />
<Deny ID="ID_DENY_DIRECTIO_48"
FriendlyName="DirectIO32\0be4912bfd7a79f6ebfa1c06a59f0fb402bd4fe015826578050
9edd0e562eac1 Hash Page Sha1"
Hash="08B00DD47D591EE66BC89CFFA424EDC7A9D2F880" />
<Deny ID="ID_DENY_DIRECTIO_49"
FriendlyName="DirectIO32\0be4912bfd7a79f6ebfa1c06a59f0fb402bd4fe015826578050
9edd0e562eac1 Hash Page Sha256"
Hash="533C0CFEA1AF366C116F563D24F1D0845F6619330E2655BDD12CEF97E99B7F52" />
<Deny ID="ID_DENY_DIRECTIO_4A"
FriendlyName="DirectIO32\12d5a3d3f3226839c446bb5f7f2aa8dd7593d2bac8dd0d101d1
c95145d10b01e Hash Sha1" Hash="7AE9EB8FC6B922524C0A571AAA006731B5CD4F0B" />
<Deny ID="ID_DENY_DIRECTIO_4B"
FriendlyName="DirectIO32\12d5a3d3f3226839c446bb5f7f2aa8dd7593d2bac8dd0d101d1
c95145d10b01e Hash Sha256"
Hash="FCA8E921D56DF22EE5A9C9FCE349385F4C8C5D490A880CB65DD01F8F13D73510" />
<Deny ID="ID_DENY_DIRECTIO_4C"
FriendlyName="DirectIO32\12d5a3d3f3226839c446bb5f7f2aa8dd7593d2bac8dd0d101d1
c95145d10b01e Hash Page Sha1"
Hash="397D2707C1AE3FB2921278CF9ABA87160D4BBD6D" />
<Deny ID="ID_DENY_DIRECTIO_4D"
FriendlyName="DirectIO32\12d5a3d3f3226839c446bb5f7f2aa8dd7593d2bac8dd0d101d1
c95145d10b01e Hash Page Sha256"
Hash="EF081F46B22B000E24A64FB82439950F76350844B6276E3BD0409CD2114A6A58" />
<Deny ID="ID_DENY_DIRECTIO_4E"
FriendlyName="DirectIO32\16461fe1855e4cb4a5e3203f98a69376ad2dc8f69f1d4346320
6fdd6784b7fbf Hash Sha1" Hash="A48F4D7F1B02DACD4EB4FD51745765FCDB4BA0DE" />
<Deny ID="ID_DENY_DIRECTIO_4F"
FriendlyName="DirectIO32\16461fe1855e4cb4a5e3203f98a69376ad2dc8f69f1d4346320
6fdd6784b7fbf Hash Sha256"
Hash="FF8FDB301AD9AA29DCA21E43BA7946AF92E980C6CA448A58DD3EFE4D9BD336AE" />
<Deny ID="ID_DENY_DIRECTIO_50"
FriendlyName="DirectIO32\2fc5f41dd013af78fc594e427f462161f61bf72403b9795133c
c89d28d962722 Hash Sha1" Hash="01EB3760261439B8E230EBA09E9A63F5D3088C54" />
<Deny ID="ID_DENY_DIRECTIO_51"
FriendlyName="DirectIO32\2fc5f41dd013af78fc594e427f462161f61bf72403b9795133c
c89d28d962722 Hash Sha256"
Hash="BC0CBC6B88892F3EFF2B47F65CEA98D1E66E4FBC9D3423AEBA511854D5250A44" />
<Deny ID="ID_DENY_DIRECTIO_52"
FriendlyName="DirectIO32\2fc5f41dd013af78fc594e427f462161f61bf72403b9795133c
c89d28d962722 Hash Page Sha1"
Hash="E9141B742FA38ABDB1EA415D8431EE9A540CCCC8" />
<Deny ID="ID_DENY_DIRECTIO_53"
FriendlyName="DirectIO32\2fc5f41dd013af78fc594e427f462161f61bf72403b9795133c
c89d28d962722 Hash Page Sha256"
Hash="7FBBDD248A335EF984CD773BE07AD88894C8FA9FB252378EA830863BD8233AB5" />
<Deny ID="ID_DENY_DIRECTIO_54"
FriendlyName="DirectIO32\38b3eb8c86201d26353aab625cea672e60c2f66ce6f5e5eda67
3e8c3478bf305 Hash Sha1" Hash="1AD46A8E038A62E146DDB5A4FE8CA5A56C53F018" />
<Deny ID="ID_DENY_DIRECTIO_55"
FriendlyName="DirectIO32\38b3eb8c86201d26353aab625cea672e60c2f66ce6f5e5eda67
3e8c3478bf305 Hash Sha256"
Hash="542CD21B0C835B818E6B2EEA2EFE5B340FF3D554B2B7E13AF084F0817CC920FD" />
<Deny ID="ID_DENY_DIRECTIO_56"
FriendlyName="DirectIO32\38b3eb8c86201d26353aab625cea672e60c2f66ce6f5e5eda67
3e8c3478bf305 Hash Page Sha1"
Hash="7CB9C71D717C466A9AD64F61AFABAF30BFE7372D" />
<Deny ID="ID_DENY_DIRECTIO_57"
FriendlyName="DirectIO32\38b3eb8c86201d26353aab625cea672e60c2f66ce6f5e5eda67
3e8c3478bf305 Hash Page Sha256"
Hash="9683B754C9C90E54D066D8B9FD958BA0449883E77AC6DD6078F1607ED0377378" />
<Deny ID="ID_DENY_DIRECTIO_58"
FriendlyName="DirectIO32\3f9530c94b689f39cc83377d76979d443275012e022782a600d
cb5cad4cca6aa Hash Sha1" Hash="AE806CA05E141B71664D9C6F20CC2369EF26F996" />
<Deny ID="ID_DENY_DIRECTIO_59"
FriendlyName="DirectIO32\3f9530c94b689f39cc83377d76979d443275012e022782a600d
cb5cad4cca6aa Hash Sha256"
Hash="38FA9B5B66A11FD7387012C5C4BBD414ECA8361273D57DBA1E49AA6AF23337F3" />
<Deny ID="ID_DENY_DIRECTIO_5A"
FriendlyName="DirectIO32\3f9530c94b689f39cc83377d76979d443275012e022782a600d
cb5cad4cca6aa Hash Page Sha1"
Hash="C13AB8D1FEBD9E93E48E87CEA571C673DF3A10F3" />
<Deny ID="ID_DENY_DIRECTIO_5B"
FriendlyName="DirectIO32\3f9530c94b689f39cc83377d76979d443275012e022782a600d
cb5cad4cca6aa Hash Page Sha256"
Hash="32394AC2E1F86BC84C9DCFB55763F8AA48DC1B1890815F2AAF924220530A1E5B" />
<Deny ID="ID_DENY_DIRECTIO_5C"
FriendlyName="DirectIO32\65025741ecd0ef516da01319b42c2d96e13cb8d78de53fb7e39
cd53ea6d58c75 Hash Sha1" Hash="6E2EA1D108B9F05F2D077ED6C254A70E2B11251D" />
<Deny ID="ID_DENY_DIRECTIO_5D"
FriendlyName="DirectIO32\65025741ecd0ef516da01319b42c2d96e13cb8d78de53fb7e39
cd53ea6d58c75 Hash Sha256"
Hash="FB7CB120D51E217EE4CC50BEE619603BE5EB6091634DF45ACC5249AED283C9BE" />
<Deny ID="ID_DENY_DIRECTIO_5E"
FriendlyName="DirectIO32\65025741ecd0ef516da01319b42c2d96e13cb8d78de53fb7e39
cd53ea6d58c75 Hash Page Sha1"
Hash="B267D4B987B094591C411F3992595751D75FC16E" />
<Deny ID="ID_DENY_DIRECTIO_5F"
FriendlyName="DirectIO32\65025741ecd0ef516da01319b42c2d96e13cb8d78de53fb7e39
cd53ea6d58c75 Hash Page Sha256"
Hash="DB2CE6D1D435DA700134970EFED70EE117E653E8044BA16D08A089FC2DC828DD" />
<Deny ID="ID_DENY_DIRECTIO_60"
FriendlyName="DirectIO32\72288d4978ee87ea6c8b1566dbd906107357087cef7364fb3dd
1e1896d00baeb Hash Sha1" Hash="9703903219C7D7F88748FD68F277649B82F2DF83" />
<Deny ID="ID_DENY_DIRECTIO_61"
FriendlyName="DirectIO32\72288d4978ee87ea6c8b1566dbd906107357087cef7364fb3dd
1e1896d00baeb Hash Sha256"
Hash="C3A215473D836C1D7315F371BFF4DEA956D7D1B440E43B4671F6E3772BAE00DD" />
<Deny ID="ID_DENY_DIRECTIO_62"
FriendlyName="DirectIO32\72288d4978ee87ea6c8b1566dbd906107357087cef7364fb3dd
1e1896d00baeb Hash Page Sha1"
Hash="AB47DE03075B4AD717C0660CAA216067A78D6CEB" />
<Deny ID="ID_DENY_DIRECTIO_63"
FriendlyName="DirectIO32\72288d4978ee87ea6c8b1566dbd906107357087cef7364fb3dd
1e1896d00baeb Hash Page Sha256"
Hash="7B86328F3D0DAAF1E254D555F368CE95B687F30DE3D993E3D541AD20EA0DE20E" />
<Deny ID="ID_DENY_DIRECTIO_64"
FriendlyName="DirectIO32\7dfc2eb033d2e090540860b8853036f40736d02bd22099ff6cf
665a90be659cd Hash Sha1" Hash="ABE422F9289FE922F671CC70C78046E2BDE5E309" />
<Deny ID="ID_DENY_DIRECTIO_65"
FriendlyName="DirectIO32\7dfc2eb033d2e090540860b8853036f40736d02bd22099ff6cf
665a90be659cd Hash Sha256"
Hash="C0752DC13548FE8D3B5A7A73C04EBCD7BCFA5E4ECEC9BA233D193BD36ED4B54E" />
<Deny ID="ID_DENY_DIRECTIO_66"
FriendlyName="DirectIO32\7dfc2eb033d2e090540860b8853036f40736d02bd22099ff6cf
665a90be659cd Hash Page Sha1"
Hash="D0353D279CAF5B6AEEE6640E52B10E2EFE45A807" />
<Deny ID="ID_DENY_DIRECTIO_67"
FriendlyName="DirectIO32\7dfc2eb033d2e090540860b8853036f40736d02bd22099ff6cf
665a90be659cd Hash Page Sha256"
Hash="615C190AACB1BB2625960748710E8C5F9AA0D228FDC411B283CE87D27E601C15" />
<Deny ID="ID_DENY_DIRECTIO_68"
FriendlyName="DirectIO32\e3b257357be41a18319332df7023c4407e2b93ac4c9e0c67540
32e29f3763eac Hash Sha1" Hash="DE239BDA4C75F8B2CFBBF74823466491D2E1F76D" />
<Deny ID="ID_DENY_DIRECTIO_69"
FriendlyName="DirectIO32\e3b257357be41a18319332df7023c4407e2b93ac4c9e0c67540
32e29f3763eac Hash Sha256"
Hash="D6753D2E6CF2F11932B4FEDD4362AB57651F8F3BAA886EACE22FD98A14EBC2E8" />
<Deny ID="ID_DENY_DIRECTIO_6A"
FriendlyName="DirectIO32\e3b257357be41a18319332df7023c4407e2b93ac4c9e0c67540
32e29f3763eac Hash Page Sha1"
Hash="AADCEE4B8CF695774BD0B45C758AE442A67198A7" />
<Deny ID="ID_DENY_DIRECTIO_6B"
FriendlyName="DirectIO32\e3b257357be41a18319332df7023c4407e2b93ac4c9e0c67540
32e29f3763eac Hash Page Sha256"
Hash="4B451FD9DFCE1E5396171122D32F5282DA86F179187360D8C501C235636D48EF" />
<Deny ID="ID_DENY_DIRECTIO_6C"
FriendlyName="DirectIO32\e4c154a0073bbad3c9f8ab7218e9b3be252ae705c20c568861d
ae4088f17ffcc Hash Sha1" Hash="EF06513DC0F8456E09260857FD63EE1222C60C82" />
<Deny ID="ID_DENY_DIRECTIO_6D"
FriendlyName="DirectIO32\e4c154a0073bbad3c9f8ab7218e9b3be252ae705c20c568861d
ae4088f17ffcc Hash Sha256"
Hash="507CEE84E2924E81916C8BF090EFB1BEAB3C258A79E1E1BF3637B8B7824D0A86" />
<Deny ID="ID_DENY_DIRECTIO_6E"
FriendlyName="DirectIO32\e4c154a0073bbad3c9f8ab7218e9b3be252ae705c20c568861d
ae4088f17ffcc Hash Page Sha1"
Hash="5F0FA0C7FDB6B6EEC654050DC3263A80EFE09A9A" />
<Deny ID="ID_DENY_DIRECTIO_6F"
FriendlyName="DirectIO32\e4c154a0073bbad3c9f8ab7218e9b3be252ae705c20c568861d
ae4088f17ffcc Hash Page Sha256"
Hash="B511E7F23B0AC8DB6BA83C3099EE19F9B8FF6222988A1AA8F68B6ABD683EB4B4" />
<Deny ID="ID_DENY_DIRECTIO_70"
FriendlyName="DirectIO32\fac102ef0a36d2d7b4390776a9c3edded72e01e7316949179e6
fbe23495121fb Hash Sha1" Hash="6FED30DE2007FAD6EC008C640F74741DCCE3DF0D" />
<Deny ID="ID_DENY_DIRECTIO_71"
FriendlyName="DirectIO32\fac102ef0a36d2d7b4390776a9c3edded72e01e7316949179e6
fbe23495121fb Hash Sha256"
Hash="A9EB36FB737735DFF8245E1AA599054C0214FB9DE0CBA371357ED59FDE451308" />
<Deny ID="ID_DENY_DIRECTIO_72"
FriendlyName="DirectIO32\fac102ef0a36d2d7b4390776a9c3edded72e01e7316949179e6
fbe23495121fb Hash Page Sha1"
Hash="BCC1292F68AA179DA3EDFF5D5D6D1D991BEA7EB5" />
<Deny ID="ID_DENY_DIRECTIO_73"
FriendlyName="DirectIO32\fac102ef0a36d2d7b4390776a9c3edded72e01e7316949179e6
fbe23495121fb Hash Page Sha256"
Hash="AC8A4EE171C6E4905B370F7E01F6C11F7669BE4613E8DACACB5428B5E87DB390" />
<Deny ID="ID_DENY_ECHO_1" FriendlyName="Inspect
EchoDriver\a41e9bb037cf1dc2237659b1158f0ed4e49b752b2f9dae4cc310933a9d1f1e47
Hash Sha1" Hash="503901E0DA00E491F28389F17CAFD1F1D5243C60" />
<Deny ID="ID_DENY_ECHO_2" FriendlyName="Inspect
EchoDriver\a41e9bb037cf1dc2237659b1158f0ed4e49b752b2f9dae4cc310933a9d1f1e47
Hash Sha256"
Hash="48DC7FD16AACDC8792F8BAD1B1F7CA9D675DDAC7767E957EA8C4227150D64E2D" />
<Deny ID="ID_DENY_ECHO_3" FriendlyName="Inspect
EchoDriver\a41e9bb037cf1dc2237659b1158f0ed4e49b752b2f9dae4cc310933a9d1f1e47
Hash Page Sha1" Hash="0CE7E3B661DB16FBCFE93376127DC37EA23313A5" />
<Deny ID="ID_DENY_ECHO_4" FriendlyName="Inspect
EchoDriver\a41e9bb037cf1dc2237659b1158f0ed4e49b752b2f9dae4cc310933a9d1f1e47
Hash Page Sha256"
Hash="23C062104693B80CEC745DEC40B433D0D0B683C63496740B943CCB0D22F7361B" />
<Deny ID="ID_DENY_ECHO_5" FriendlyName="Inspect
EchoDriver\ada2b855757c9062231f5ed4e80365b8d8094e9adbce8f26d1ff5ea0b7a70c77
Hash Sha1" Hash="18CD81740893FA24F1AFBB9D187A60AF9C5B2902" />
<Deny ID="ID_DENY_ECHO_6" FriendlyName="Inspect
EchoDriver\ada2b855757c9062231f5ed4e80365b8d8094e9adbce8f26d1ff5ea0b7a70c77
Hash Sha256"
Hash="4160DAE22484062CCC3750CC9CAC8F929D8701694160A3B508715610814AA28D" />
<Deny ID="ID_DENY_ECHO_7" FriendlyName="Inspect
EchoDriver\ada2b855757c9062231f5ed4e80365b8d8094e9adbce8f26d1ff5ea0b7a70c77
Hash Page Sha1" Hash="2EFC7864E1E8AA87EFFEB13A2A3402CDC64FB6D2" />
<Deny ID="ID_DENY_ECHO_8" FriendlyName="Inspect
EchoDriver\ada2b855757c9062231f5ed4e80365b8d8094e9adbce8f26d1ff5ea0b7a70c77
Hash Page Sha256"
Hash="3709D170C4F5A7668C9180AFBDB8A4F6E9EE6E6A6C048B55D34FEA9DAA253127" />
<Deny ID="ID_DENY_ECHO_9" FriendlyName="Inspect
EchoDriver\ea3c5569405ed02ec24298534a983bcb5de113c18bc3fd01a4dd0b5839cd17b9
Hash Sha1" Hash="678620A9CC9E7FFE179BC5CDA0A2DD0597E231EE" />
<Deny ID="ID_DENY_ECHO_A" FriendlyName="Inspect
EchoDriver\ea3c5569405ed02ec24298534a983bcb5de113c18bc3fd01a4dd0b5839cd17b9
Hash Sha256"
Hash="92F9D73CEC5AB3352C4B3CBF4574D13B2E506CBA24CC74580E19E941063EAF7D" />
<Deny ID="ID_DENY_ECHO_B" FriendlyName="Inspect
EchoDriver\ea3c5569405ed02ec24298534a983bcb5de113c18bc3fd01a4dd0b5839cd17b9
Hash Page Sha1" Hash="832832028D40A3CFD08D364554FCE0B4F37317FF" />
<Deny ID="ID_DENY_ECHO_C" FriendlyName="Inspect
EchoDriver\ea3c5569405ed02ec24298534a983bcb5de113c18bc3fd01a4dd0b5839cd17b9
Hash Page Sha256"
Hash="49ED19D5E1E122936035A48EA99FFD68CA4915578107888D5C2B0BB9E30E67C0" />
<Deny ID="ID_DENY_EIO64_1" FriendlyName="Asus
EIO64\b17507a3246020fa0052a172485d7b3567e0161747927f2edf27c40e310852e0 Hash
Sha1" Hash="200BE5A696990EE97B4C3176234CDE46C3EBC2CE" />
<Deny ID="ID_DENY_EIO64_2" FriendlyName="Asus
EIO64\b17507a3246020fa0052a172485d7b3567e0161747927f2edf27c40e310852e0 Hash
Sha256"
Hash="72B36C64F0B349D7816C8E5E2D1A7F59807DE0C87D3F071A04DBC56BEC9C00DB" />
<Deny ID="ID_DENY_EIO64_3" FriendlyName="Asus
EIO64\b17507a3246020fa0052a172485d7b3567e0161747927f2edf27c40e310852e0 Hash
Page Sha1" Hash="DB88BFE5F3DE4E3CC778FE456B542EC4135433A4" />
<Deny ID="ID_DENY_EIO64_4" FriendlyName="Asus
EIO64\b17507a3246020fa0052a172485d7b3567e0161747927f2edf27c40e310852e0 Hash
Page Sha256"
Hash="609E8789D16176622F6EC629A8BEA7513A37CB6BBA7775971FD24056F8F3BCE0" />
<Deny ID="ID_DENY_EIO64_5" FriendlyName="Asus
EIO64\cf69704755ec2643dfd245ae1d4e15d77f306aeb1a576ffa159453de1a7345cb Hash
Sha1" Hash="ED54E23998978F8124BD1F97C265F708DDBA1DE0" />
<Deny ID="ID_DENY_EIO64_6" FriendlyName="Asus
EIO64\cf69704755ec2643dfd245ae1d4e15d77f306aeb1a576ffa159453de1a7345cb Hash
Sha256"
Hash="D4E7335A177E47688D68AD89940C272F82728C882623F1630E7FD2E03E16F003" />
<Deny ID="ID_DENY_EIO64_7" FriendlyName="Asus
EIO64\cf69704755ec2643dfd245ae1d4e15d77f306aeb1a576ffa159453de1a7345cb Hash
Page Sha1" Hash="D1AAAAF1EEA34073BAF39C7494E646C5AD2475F5" />
<Deny ID="ID_DENY_EIO64_8" FriendlyName="Asus
EIO64\cf69704755ec2643dfd245ae1d4e15d77f306aeb1a576ffa159453de1a7345cb Hash
Page Sha256"
Hash="796BEC283155309F2DF0B1779CABC78A3B2161FFCED9F521DB231550DCB376A1" />
<Deny ID="ID_DENY_HW_22"
FriendlyName="hw_sys\b8fcc8ef2b27c0c0622d069981e39f112d3b3b0dbede053340bc157
ba1316eab Hash Sha1" Hash="924A088149D6EE89551E15D45E7BC847B9561196" />
<Deny ID="ID_DENY_HW_23"
FriendlyName="hw_sys\b8fcc8ef2b27c0c0622d069981e39f112d3b3b0dbede053340bc157
ba1316eab Hash Sha256"
Hash="5E1E1489A1A01CFB466B527543D9D25112A83792BDE443DE9E34E4D3ADA697E3" />
<Deny ID="ID_DENY_HW_24"
FriendlyName="hw_sys\b8fcc8ef2b27c0c0622d069981e39f112d3b3b0dbede053340bc157
ba1316eab Hash Page Sha1" Hash="ADB70331BE7B68359C3EC3065C045349EA5B2EE2" />
<Deny ID="ID_DENY_HW_25"
FriendlyName="hw_sys\b8fcc8ef2b27c0c0622d069981e39f112d3b3b0dbede053340bc157
ba1316eab Hash Page Sha256"
Hash="F26A70215E2D851378D05F76BF1460615CF0C93E41A01DCE4EBC6D99F6E4AEA0" />
<Deny ID="ID_DENY_HWRWDRV_2"
FriendlyName="HwRwDrv.sys\42de79eb237293befb1b954beaf92b832f947195e3c359048a
aa464ead56b62d Hash Sha1" Hash="979029B931770F96FC0070868A1303C7D3EAACA5" />
<Deny ID="ID_DENY_HWRWDRV_3"
FriendlyName="HwRwDrv.sys\42de79eb237293befb1b954beaf92b832f947195e3c359048a
aa464ead56b62d Hash Sha256"
Hash="42DE79EB237293BEFB1B954BEAF92B832F947195E3C359048AAA464EAD56B62D" />
<Deny ID="ID_DENY_HWRWDRV_4"
FriendlyName="HwRwDrv.sys\d50ee14181cf60bbdffe1a891b9bb3a852c93019f1f05dde47
b3178b821b8f54 Hash Sha1" Hash="A0CD1505C42A8792FF19C88B8FB782C32702A48B" />
<Deny ID="ID_DENY_HWRWDRV_5"
FriendlyName="HwRwDrv.sys\d50ee14181cf60bbdffe1a891b9bb3a852c93019f1f05dde47
b3178b821b8f54 Hash Sha256"
Hash="D50EE14181CF60BBDFFE1A891B9BB3A852C93019F1F05DDE47B3178B821B8F54" />
<Deny ID="ID_DENY_HWRWDRV_6"
FriendlyName="HwRwDrv.sys\f2b95fc91fe33c1995c49c35e32124ece7d958ed7d3b7a5f32
5f2a30454b9256 Hash Sha1" Hash="A24B85D04D88B54FF3DF4CC2B4518CEF2E6A2776" />
<Deny ID="ID_DENY_HWRWDRV_7"
FriendlyName="HwRwDrv.sys\f2b95fc91fe33c1995c49c35e32124ece7d958ed7d3b7a5f32
5f2a30454b9256 Hash Sha256"
Hash="F2B95FC91FE33C1995C49C35E32124ECE7D958ED7D3B7A5F325F2A30454B9256" />
<Deny ID="ID_DENY_INPOUTX_11"
FriendlyName="inpoutx\7aed38beff4d59d57b43a32738a1a30a7e0eba6a Hash Sha1"
Hash="7aed38beff4d59d57b43a32738a1a30a7e0eba6a" />
<Deny ID="ID_DENY_INPOUTX_12"
FriendlyName="inpoutx\2d83ccb1ad9839c9f5b3f10b1f856177df1594c66cbbc7661677d4
b462ebf44d Hash Sha1" Hash="94B9B91A2ACC786B54E8DBC11B759B05BC15FC3F" />
<Deny ID="ID_DENY_INPOUTX_13"
FriendlyName="inpoutx\2d83ccb1ad9839c9f5b3f10b1f856177df1594c66cbbc7661677d4
b462ebf44d Hash Sha256"
Hash="9F70169F9541C8F5B13D3EC1F3514CC4F2607D572FFB4C7E5A98BE0856852DD8" />
<Deny ID="ID_DENY_INPOUTX_14"
FriendlyName="inpoutx\2d83ccb1ad9839c9f5b3f10b1f856177df1594c66cbbc7661677d4
b462ebf44d Hash Page Sha1" Hash="6FF4D24DC317C93D1B54195E80F858B9D6CFF2C1"
/>
<Deny ID="ID_DENY_INPOUTX_15"
FriendlyName="inpoutx\2d83ccb1ad9839c9f5b3f10b1f856177df1594c66cbbc7661677d4
b462ebf44d Hash Page Sha256"
Hash="9EA5E3FE2D978CD684C1E67513F24913EB24EB325287011249B6A9FACF69A59B" />
<Deny ID="ID_DENY_INPOUTX_16"
FriendlyName="inpoutx\945ee05244316ff2f877718cf0625d4eb34e6ec472f403f958f2a7
00f9092507 Hash Sha1" Hash="E7B4946A35ADCD07E8E0BDC61058B1611063CA74" />
<Deny ID="ID_DENY_INPOUTX_17"
FriendlyName="inpoutx\945ee05244316ff2f877718cf0625d4eb34e6ec472f403f958f2a7
00f9092507 Hash Sha256"
Hash="FB2E8E98A58329E86A1EE310FE9DFCE7056F4A0EDE380EEE8768C51B5870C433" />
<Deny ID="ID_DENY_INPOUTX_18"
FriendlyName="inpoutx\945ee05244316ff2f877718cf0625d4eb34e6ec472f403f958f2a7
00f9092507 Hash Page Sha1" Hash="1BF94F55A5CD6D0F3552E860ACCC10F89861CE69"
/>
<Deny ID="ID_DENY_INPOUTX_19"
FriendlyName="inpoutx\945ee05244316ff2f877718cf0625d4eb34e6ec472f403f958f2a7
00f9092507 Hash Page Sha256"
Hash="33163E3DB7B93415D24779E290E0D26D39F4193498C96F65870F475B42FAC28A" />
<Deny ID="ID_DENY_INPOUTX_1A"
FriendlyName="inpoutx\a88733b88cdc3f3cc040912ce5a3c44fa26f2ea8454cf6fc855b10
4a4910fa31 Hash Sha1" Hash="A46B2491C41794D8F0E662B321F2CBED0CE1C255" />
<Deny ID="ID_DENY_INPOUTX_1B"
FriendlyName="inpoutx\a88733b88cdc3f3cc040912ce5a3c44fa26f2ea8454cf6fc855b10
4a4910fa31 Hash Sha256"
Hash="A88733B88CDC3F3CC040912CE5A3C44FA26F2EA8454CF6FC855B104A4910FA31" />
<Deny ID="ID_DENY_INPOUTX_1C"
FriendlyName="inpoutx\b8ded5e10dfc997482ba4377c60e7902e6f755674be51b0e181ae4
65529fb2f2 Hash Sha1" Hash="A4DCE60EADCC112BDAA9562A92EDE168D981BDD7" />
<Deny ID="ID_DENY_INPOUTX_1D"
FriendlyName="inpoutx\b8ded5e10dfc997482ba4377c60e7902e6f755674be51b0e181ae4
65529fb2f2 Hash Sha256"
Hash="E288439705D9BE2C1F74CF8A44C3853AC3708E52C592B23398877006FADF6CCC" />
<Deny ID="ID_DENY_INPOUTX_1E"
FriendlyName="inpoutx\cfab93885e5129a86d13fd380d010cc8c204429973b776ab1b472d
84a767930f Hash Sha1" Hash="CF14350816192CA4824A32237DFCFFC641B4E979" />
<Deny ID="ID_DENY_INPOUTX_1F"
FriendlyName="inpoutx\cfab93885e5129a86d13fd380d010cc8c204429973b776ab1b472d
84a767930f Hash Sha256"
Hash="4530235508B99DFFE4E912CC9CAC7BDC237E79F5A331F601C43BA909D7A3AF4A" />
<Deny ID="ID_DENY_INPOUTX_20"
FriendlyName="inpoutx\d5cc046c2ae9ba6fe54def699f1c4fa92d3226304321bbf45cc338
83ce131138 Hash Sha1" Hash="77FB38438B9E3F3CE5721EC9C0ABA775E59A951B" />
<Deny ID="ID_DENY_INPOUTX_21"
FriendlyName="inpoutx\d5cc046c2ae9ba6fe54def699f1c4fa92d3226304321bbf45cc338
83ce131138 Hash Sha256"
Hash="D5CC046C2AE9BA6FE54DEF699F1C4FA92D3226304321BBF45CC33883CE131138" />
<Deny ID="ID_DENY_INPOUTX_22"
FriendlyName="inpoutx\e2c531a771b0df1585518a22427798e86611e6be3d357024797871
a1b3876e9c Hash Sha1" Hash="CCE8ED3969E52080B32BCC59E2EC174CA9C578EC" />
<Deny ID="ID_DENY_INPOUTX_23"
FriendlyName="inpoutx\e2c531a771b0df1585518a22427798e86611e6be3d357024797871
a1b3876e9c Hash Sha256"
Hash="E2C531A771B0DF1585518A22427798E86611E6BE3D357024797871A1B3876E9C" />
<Deny ID="ID_DENY_LGCORETEMP_1"
FriendlyName="lgcoretemp\e0cb07a0624ddfacaa882af49e3783ae02c9fbd0ab232541a05
a95b4a8abd8ef Hash Sha1" Hash="BF20C99129A768B3D2D5C621AB50375984AB9351" />
<Deny ID="ID_DENY_LGCORETEMP_2"
FriendlyName="lgcoretemp\e0cb07a0624ddfacaa882af49e3783ae02c9fbd0ab232541a05
a95b4a8abd8ef Hash Sha256"
Hash="9C4DB6EE983FD4FA74F8212031ADE343A1B9ABDB258D05BEF1AABD7AB49FBC16" />
<Deny ID="ID_DENY_LGCORETEMP_3"
FriendlyName="lgcoretemp\e0cb07a0624ddfacaa882af49e3783ae02c9fbd0ab232541a05
a95b4a8abd8ef Hash Page Sha1"
Hash="4DD5A5D9B4AF0708902DF52C6C42921DE296CC21" />
<Deny ID="ID_DENY_LGCORETEMP_4"
FriendlyName="lgcoretemp\e0cb07a0624ddfacaa882af49e3783ae02c9fbd0ab232541a05
a95b4a8abd8ef Hash Page Sha256"
Hash="211008964FAD760C1EDDB6221DF727D86695FCBFA83909225D6E5E9215D108E5" />
<Deny ID="ID_DENY_MHYPROT2_1"
FriendlyName="mhyprot2.sys\247AADAF17ED894FCACF3FC4E109B005540E3659FD0249190
EB33725D3D3082F Hash Sha1" Hash="05234D1A267C9B6C1754272658FBEBB22633CAC0"
/>
<Deny ID="ID_DENY_MHYPROT2_2"
FriendlyName="mhyprot2.sys\247AADAF17ED894FCACF3FC4E109B005540E3659FD0249190
EB33725D3D3082F Hash Sha256"
Hash="FAA37602095F25135312F87ED7ADB607FFA5E9B2931B58D00F7376ED0C6EC69A" />
<Deny ID="ID_DENY_MHYPROT2_3"
FriendlyName="mhyprot2.sys\247AADAF17ED894FCACF3FC4E109B005540E3659FD0249190
EB33725D3D3082F Hash Page Sha1"
Hash="9381E89C7BFCAE44C16E2C41D146F0198F04A9A7" />
<Deny ID="ID_DENY_MHYPROT2_4"
FriendlyName="mhyprot2.sys\247AADAF17ED894FCACF3FC4E109B005540E3659FD0249190
EB33725D3D3082F Hash Page Sha256"
Hash="E977DCF2843EB5543AD85336C00CA5D855A0132737AE6853CA646901013EBBC2" />
<Deny ID="ID_DENY_MHYPROT2_5"
FriendlyName="mhyprot2.sys\26D69E677D30BB53C7AC7F3FCE76291FE2C44720EF17EE386
F95F08EC5175288 Hash Sha1" Hash="DCF13F12B2429A0A50E0094776B59BEA641B142C"
/>
<Deny ID="ID_DENY_MHYPROT2_6"
FriendlyName="mhyprot2.sys\26D69E677D30BB53C7AC7F3FCE76291FE2C44720EF17EE386
F95F08EC5175288 Hash Sha256"
Hash="000E984D3EEBC54259A24A17745EED07D9C3658B86462CB5EBC26381302F7A38" />
<Deny ID="ID_DENY_MHYPROT2_7"
FriendlyName="mhyprot2.sys\26D69E677D30BB53C7AC7F3FCE76291FE2C44720EF17EE386
F95F08EC5175288 Hash Page Sha1"
Hash="FA569BD33B198E7D80C43CD5D8313346AAEA9901" />
<Deny ID="ID_DENY_MHYPROT2_8"
FriendlyName="mhyprot2.sys\26D69E677D30BB53C7AC7F3FCE76291FE2C44720EF17EE386
F95F08EC5175288 Hash Page Sha256"
Hash="BA2D76473E86CA72A30642C56207D59F9E826D07864FBE9AB8BCC76701F37D04" />
<Deny ID="ID_DENY_MHYPROT2_9"
FriendlyName="mhyprot2.sys\46CF46E1073B7C99142964B7C4BEF1E5285FABCF2C6DBE5BE
99000A393D9F474 Hash Sha1" Hash="F408AD59F7590D26AFC84A7109DD56CFE98EBEA9"
/>
<Deny ID="ID_DENY_MHYPROT2_A"
FriendlyName="mhyprot2.sys\46CF46E1073B7C99142964B7C4BEF1E5285FABCF2C6DBE5BE
99000A393D9F474 Hash Sha256"
Hash="DBCAD271FEDA00F614EF9866886CDE83E9FFFAC6E76694FD052790541BB7E993" />
<Deny ID="ID_DENY_MHYPROT2_B"
FriendlyName="mhyprot2.sys\46CF46E1073B7C99142964B7C4BEF1E5285FABCF2C6DBE5BE
99000A393D9F474 Hash Page Sha1"
Hash="71BB02DADA5A107997CFB2AEE91EF7A387741A91" />
<Deny ID="ID_DENY_MHYPROT2_C"
FriendlyName="mhyprot2.sys\46CF46E1073B7C99142964B7C4BEF1E5285FABCF2C6DBE5BE
99000A393D9F474 Hash Page Sha256"
Hash="6CBB71ED0F775A9141A18CEEDED43A3ABB0303E862B923C91E1945924F96924B" />
<Deny ID="ID_DENY_MHYPROT2_D"
FriendlyName="mhyprot2.sys\509628B6D16D2428031311D7BD2ADD8D5F5160E9ECC0CD909
F1E82BBBB3234D6 Hash Sha1" Hash="484C72DD4FD91083B249F3CCC733A3C8335E583F"
/>
<Deny ID="ID_DENY_MHYPROT2_E"
FriendlyName="mhyprot2.sys\509628B6D16D2428031311D7BD2ADD8D5F5160E9ECC0CD909
F1E82BBBB3234D6 Hash Sha256"
Hash="0C7809AC1FA074408518DDC0AC118912C9CD43ED9C89213BC4D59043016B040C" />
<Deny ID="ID_DENY_MHYPROT2_F"
FriendlyName="mhyprot2.sys\509628B6D16D2428031311D7BD2ADD8D5F5160E9ECC0CD909
F1E82BBBB3234D6 Hash Page Sha1"
Hash="D5720A52FCF9B78A9AB4F528E8DB97A0A309ADE9" />
<Deny ID="ID_DENY_MHYPROT2_10"
FriendlyName="mhyprot2.sys\509628B6D16D2428031311D7BD2ADD8D5F5160E9ECC0CD909
F1E82BBBB3234D6 Hash Page Sha256"
Hash="1B3EAC12BA5417CA18AFE88B4975994EDE99C32318FA44D306F2405447DD8C05" />
<Deny ID="ID_DENY_MHYPROT2_11"
FriendlyName="mhyprot2.sys\6E76764D750EBD835AA4BB055830D278DF530303585614C1D
C743F8D5ADF97D7 Hash Sha1" Hash="8E6248135AD596861D8F6D42703DEB79382F285A"
/>
<Deny ID="ID_DENY_MHYPROT2_12"
FriendlyName="mhyprot2.sys\6E76764D750EBD835AA4BB055830D278DF530303585614C1D
C743F8D5ADF97D7 Hash Sha256"
Hash="F18605A691056B446C6411B7FA841B8178059BDE8094CFE9013E59F4663CDF7F" />
<Deny ID="ID_DENY_MHYPROT2_13"
FriendlyName="mhyprot2.sys\6E76764D750EBD835AA4BB055830D278DF530303585614C1D
C743F8D5ADF97D7 Hash Page Sha1"
Hash="6B8EC268FD00F5832BEA41A4C20AB4537C91279D" />
<Deny ID="ID_DENY_MHYPROT2_14"
FriendlyName="mhyprot2.sys\6E76764D750EBD835AA4BB055830D278DF530303585614C1D
C743F8D5ADF97D7 Hash Page Sha256"
Hash="7B82DD9B35D55D4718E0BC1F24827AEA6162DB5C1BBD691C4525931DD9EC906F" />
<Deny ID="ID_DENY_MHYPROT2_15"
FriendlyName="mhyprot2.sys\AD2477632B9B07588CFE0E692F244C05FA4202975C1FE91DD
3B90FA911AC6058 Hash Sha1" Hash="BD2C5FDAE29B39DE9F862455FB2FB07FBF99ECE2"
/>
<Deny ID="ID_DENY_MHYPROT2_16"
FriendlyName="mhyprot2.sys\AD2477632B9B07588CFE0E692F244C05FA4202975C1FE91DD
3B90FA911AC6058 Hash Sha256"
Hash="DF3FD9FA267E12D7C6B65028373E21978041F0C94375B5C7316498FBAD6F4AE0" />
<Deny ID="ID_DENY_MHYPROT2_17"
FriendlyName="mhyprot2.sys\AD2477632B9B07588CFE0E692F244C05FA4202975C1FE91DD
3B90FA911AC6058 Hash Page Sha1"
Hash="830E26AB8ADD5C589A20C9CAADC31599E78A8D7C" />
<Deny ID="ID_DENY_MHYPROT2_18"
FriendlyName="mhyprot2.sys\AD2477632B9B07588CFE0E692F244C05FA4202975C1FE91DD
3B90FA911AC6058 Hash Page Sha256"
Hash="4F43AF4FA32E28A4232ACFA0EFAC492635FF5ECB2EAAF10A30637A98E77C289D" />
<Deny ID="ID_DENY_MHYPROT2_19"
FriendlyName="mhyprot2.sys\B8B94C2646B62F6AC08F16514B6EFAA9866AA3C581E4C0435
A7AEAFE569B2418 Hash Sha1" Hash="A3FD0D15889398830A61EED9DFAC17DFBDE792EF"
/>
<Deny ID="ID_DENY_MHYPROT2_1A"
FriendlyName="mhyprot2.sys\B8B94C2646B62F6AC08F16514B6EFAA9866AA3C581E4C0435
A7AEAFE569B2418 Hash Sha256"
Hash="8CED17D1EE92AE72749AFDFE40F5029223D97F0F977E718BD5AB1242D1FF7CB5" />
<Deny ID="ID_DENY_MHYPROT2_1B"
FriendlyName="mhyprot2.sys\B8B94C2646B62F6AC08F16514B6EFAA9866AA3C581E4C0435
A7AEAFE569B2418 Hash Page Sha1"
Hash="1C843C256936E700CEDE3DD444E1B6714EFF4E8B" />
<Deny ID="ID_DENY_MHYPROT2_1C"
FriendlyName="mhyprot2.sys\B8B94C2646B62F6AC08F16514B6EFAA9866AA3C581E4C0435
A7AEAFE569B2418 Hash Page Sha256"
Hash="84516365771430545C4D7D950B0F0699EC1573F316EF787983081F027E8A1FC5" />
<Deny ID="ID_DENY_MHYPROT3_11"
FriendlyName="mhyprot3.sys\475E5016C9C0F5A127896F9179A1B1577A67B357F399AB5A1
E68AAB07134729A Hash Sha1" Hash="82FE9B69F358EF5851EEAA26A9A03F2E1B231358"
/>
<Deny ID="ID_DENY_MHYPROT3_12"
FriendlyName="mhyprot3.sys\475E5016C9C0F5A127896F9179A1B1577A67B357F399AB5A1
E68AAB07134729A Hash Sha256"
Hash="AAC86A3143DE3E18DEA6EAB813B285DA0718E9FB6BC0BBB46C6E7638476061D8" />
<Deny ID="ID_DENY_MHYPROT3_13"
FriendlyName="mhyprot3.sys\475E5016C9C0F5A127896F9179A1B1577A67B357F399AB5A1
E68AAB07134729A Hash Page Sha1"
Hash="06D78F73E8C1C1417BE3F4E6EE0E6EBCE2E6D142" />
<Deny ID="ID_DENY_MHYPROT3_14"
FriendlyName="mhyprot3.sys\475E5016C9C0F5A127896F9179A1B1577A67B357F399AB5A1
E68AAB07134729A Hash Page Sha256"
Hash="7EB934683CDD6119123835D0A962D04EB73EC05646EB2F9F4761AC44F8FF8BC0" />
<Deny ID="ID_DENY_MHYPROT3_15"
FriendlyName="mhyprot3.sys\7FD90500B57F9AC959C87F713FE9CA59E669E6E1512F77FCC
B6A75CDC0DFEE8E Hash Sha1" Hash="DBC894F12AD8135AE58149761CE10C41CB3C4757"
/>
<Deny ID="ID_DENY_MHYPROT3_16"
FriendlyName="mhyprot3.sys\7FD90500B57F9AC959C87F713FE9CA59E669E6E1512F77FCC
B6A75CDC0DFEE8E Hash Sha256"
Hash="BB29EB4651E3276B14217628E96A1E5D83C4E883CD29EBD75AA704DDA462E82D" />
<Deny ID="ID_DENY_MHYPROT3_17"
FriendlyName="mhyprot3.sys\7FD90500B57F9AC959C87F713FE9CA59E669E6E1512F77FCC
B6A75CDC0DFEE8E Hash Page Sha1"
Hash="43D632EC2B3C75020ACB40E939B99A227C8C83E2" />
<Deny ID="ID_DENY_MHYPROT3_18"
FriendlyName="mhyprot3.sys\7FD90500B57F9AC959C87F713FE9CA59E669E6E1512F77FCC
B6A75CDC0DFEE8E Hash Page Sha256"
Hash="D721E921789AC50621E428FDFAB7CFF2245B2E72F304AFBC370F054C81007CFF" />
<Deny ID="ID_DENY_MHYPROT3_19"
FriendlyName="mhyprot3.sys\B531F0A11CA481D5125C93C977325E135A04058019F939169
CE3CDEDADDD422D Hash Sha1" Hash="E19E10D97D7ECD4A4376196F7E3DFA2365872867"
/>
<Deny ID="ID_DENY_MHYPROT3_1A"
FriendlyName="mhyprot3.sys\B531F0A11CA481D5125C93C977325E135A04058019F939169
CE3CDEDADDD422D Hash Sha256"
Hash="5A021532F0AC453256526428CCF3518CDBA4C6373CC72F340BA208B6C41B3A9E" />
<Deny ID="ID_DENY_MHYPROT3_1B"
FriendlyName="mhyprot3.sys\B531F0A11CA481D5125C93C977325E135A04058019F939169
CE3CDEDADDD422D Hash Page Sha1"
Hash="25C88C4312C3120547FE62EBF5E56FF1174AAFBC" />
<Deny ID="ID_DENY_MHYPROT3_1C"
FriendlyName="mhyprot3.sys\B531F0A11CA481D5125C93C977325E135A04058019F939169
CE3CDEDADDD422D Hash Page Sha256"
Hash="AADE26BCD9B435D7ED420134855428AFF84EDCF4E6E66A500A04135ADB4D97E0" />
<Deny ID="ID_DENY_MHYPROT3_1D"
FriendlyName="mhyprot3.sys\B617A072C578CEA38C460E2851F3D122BA1B7CFA1F5EE3E9F
5927663AC37AF61 Hash Sha1" Hash="DBA3175FBE67B69A002161D718AFB1507D9EB774"
/>
<Deny ID="ID_DENY_MHYPROT3_1E"
FriendlyName="mhyprot3.sys\B617A072C578CEA38C460E2851F3D122BA1B7CFA1F5EE3E9F
5927663AC37AF61 Hash Sha256"
Hash="91793BAA79B630F452267C408CC7509F25AA7AC0E39E88576E3DAED3DCD5D8E5" />
<Deny ID="ID_DENY_MHYPROT3_1F"
FriendlyName="mhyprot3.sys\B617A072C578CEA38C460E2851F3D122BA1B7CFA1F5EE3E9F
5927663AC37AF61 Hash Page Sha1"
Hash="55A28F91D985A760CF87DB7FC760B8E70E636922" />
<Deny ID="ID_DENY_MHYPROT3_20"
FriendlyName="mhyprot3.sys\B617A072C578CEA38C460E2851F3D122BA1B7CFA1F5EE3E9F
5927663AC37AF61 Hash Page Sha256"
Hash="8E95755EEDA61980074AE01285A80DAD32F0AE2F02A46810E7DF9AEB1B483694" />
<Deny ID="ID_DENY_MHYPROT3_21"
FriendlyName="mhyprot3.sys\8F3323053381B922681D26D9BA53A01D63B07D53BFCD36AE8
7B295BBCEC27F65 Hash Sha1" Hash="053E36AF7ECDDB09ED3C1844F43B10DE2156EDD1"
/>
<Deny ID="ID_DENY_MHYPROT3_22"
FriendlyName="mhyprot3.sys\8F3323053381B922681D26D9BA53A01D63B07D53BFCD36AE8
7B295BBCEC27F65 Hash Sha256"
Hash="FB9A3B53D03C4B8CED05823E64EA89EB9AF2CD9EF5AD0DFBBD5693EC9CECCE39" />
<Deny ID="ID_DENY_MHYPROTECT_1"
FriendlyName="mhyprotect.sys\8bdcf7457c2caf7fa0386571f972d7f5220d385ad686e2c
3536f4c67ba4333e6 Hash Sha1" Hash="2A40C0A92107D9B3FAA9AECDEDF5016C1EA564F1"
/>
<Deny ID="ID_DENY_MHYPROTECT_2"
FriendlyName="mhyprotect.sys\8bdcf7457c2caf7fa0386571f972d7f5220d385ad686e2c
3536f4c67ba4333e6 Hash Sha256"
Hash="25454028A4F56D3C58747811A86BE43397A6290D1A053BC30D97B41BF3C58C6F" />
<Deny ID="ID_DENY_MHYPROTECT_3"
FriendlyName="mhyprotect.sys\8bdcf7457c2caf7fa0386571f972d7f5220d385ad686e2c
3536f4c67ba4333e6 Hash Page Sha1"
Hash="1ABAEEFE3108C48BDEF2155626021D1D57F11E3E" />
<Deny ID="ID_DENY_MHYPROTECT_4"
FriendlyName="mhyprotect.sys\8bdcf7457c2caf7fa0386571f972d7f5220d385ad686e2c
3536f4c67ba4333e6 Hash Page Sha256"
Hash="93C00162B401C2F27331CDCDF6C7CE4615FC45FBE9661650B0C2AA0714752726" />
<Deny ID="ID_DENY_MHYPROTECT_5"
FriendlyName="mhyprotect.sys\edeb35e4341034b2de389017c4884b081a821f34349a620
897a2a845c84cb09e Hash Sha1" Hash="195171715AAD9D8F79C147CB045AC278115475E5"
/>
<Deny ID="ID_DENY_MHYPROTECT_6"
FriendlyName="mhyprotect.sys\edeb35e4341034b2de389017c4884b081a821f34349a620
897a2a845c84cb09e Hash Sha256"
Hash="14BD76F66FE5749D1812F7CF47CC5F9A8A830C53A7EDE5E42A14A4140A70F5D2" />
<Deny ID="ID_DENY_MHYPROTECT_7"
FriendlyName="mhyprotect.sys\edeb35e4341034b2de389017c4884b081a821f34349a620
897a2a845c84cb09e Hash Page Sha1"
Hash="F6B882E5D2965A8B98AB3AEC5D33AD839CFD49AA" />
<Deny ID="ID_DENY_MHYPROTECT_8"
FriendlyName="mhyprotect.sys\edeb35e4341034b2de389017c4884b081a821f34349a620
897a2a845c84cb09e Hash Page Sha256"
Hash="E6D48C1F7F92451556BA0A3F54B5F41027654FCDA6BC617B15B80F51B969B12F" />
<Deny ID="ID_DENY_MHYPROTNAP_1"
FriendlyName="mhyprotnap.sys\40263b08b3c3659529ab605d1daa3033db0fdc4b19c26aa
375be0c19686807e6 Hash Sha1" Hash="05B36EFE08674891C40DB96CBB5E69ABEA6F4DAF"
/>
<Deny ID="ID_DENY_MHYPROTNAP_2"
FriendlyName="mhyprotnap.sys\40263b08b3c3659529ab605d1daa3033db0fdc4b19c26aa
375be0c19686807e6 Hash Sha256"
Hash="9E428C1D1CD7358E2C2F25EDE45E718B22CB5D04634A4D1EC08A87E71248685B" />
<Deny ID="ID_DENY_MHYPROTNAP_3"
FriendlyName="mhyprotnap.sys\40263b08b3c3659529ab605d1daa3033db0fdc4b19c26aa
375be0c19686807e6 Hash Page Sha1"
Hash="1DB8A9105F9079B3E5BE5AF50D012AA0C6D138AF" />
<Deny ID="ID_DENY_MHYPROTNAP_4"
FriendlyName="mhyprotnap.sys\40263b08b3c3659529ab605d1daa3033db0fdc4b19c26aa
375be0c19686807e6 Hash Page Sha256"
Hash="EE07EAF68F2A77CFEF8D0F5F56E9818ADE95884CF1470A161CFB9403C5B34377" />
<Deny ID="ID_DENY_MHYPROTRG_1"
FriendlyName="mhyprotrpg.sys\8bf84bed9b5fa4576182c84d2f31679dc472acd0f83c981
3498e9f71ed9fef3e Hash Sha1" Hash="F631F67D11F2B06C0B3B0C7286997F2F7F538231"
/>
<Deny ID="ID_DENY_MHYPROTRG_2"
FriendlyName="mhyprotrpg.sys\8bf84bed9b5fa4576182c84d2f31679dc472acd0f83c981
3498e9f71ed9fef3e Hash Sha256"
Hash="8ECD15521B2C37D2FF02A138700007F2AFF28A0ACCFA6FB3480A4421194EF7D2" />
<Deny ID="ID_DENY_MHYPROTRG_3"
FriendlyName="mhyprotrpg.sys\8bf84bed9b5fa4576182c84d2f31679dc472acd0f83c981
3498e9f71ed9fef3e Hash Page Sha1"
Hash="754AA7D1F2B30E2023F30D98709EA369E185FA36" />
<Deny ID="ID_DENY_MHYPROTRG_4"
FriendlyName="mhyprotrpg.sys\8bf84bed9b5fa4576182c84d2f31679dc472acd0f83c981
3498e9f71ed9fef3e Hash Page Sha256"
Hash="9BC9A45B105D8F0C47EF3342150F4C7A61439D5D56EDF28EED098673BE857CEB" />
<Deny ID="ID_DENY_MHYPROTRG_5"
FriendlyName="mhyprotrpg.sys\f7d72d22cd4ad3e44fd617bdb4c90b9a884f4eb045688c0
e3fb64dd33e033eaa Hash Sha1" Hash="75F87F73836ACFEBCFD7680FF2CA7DA356A9720B"
/>
<Deny ID="ID_DENY_MHYPROTRG_6"
FriendlyName="mhyprotrpg.sys\f7d72d22cd4ad3e44fd617bdb4c90b9a884f4eb045688c0
e3fb64dd33e033eaa Hash Sha256"
Hash="5195443274EE3A382E947F03FD409437730434C2AF0C1BB1C99F5BA1953F989E" />
<Deny ID="ID_DENY_MHYPROTRG_7"
FriendlyName="mhyprotrpg.sys\f7d72d22cd4ad3e44fd617bdb4c90b9a884f4eb045688c0
e3fb64dd33e033eaa Hash Page Sha1"
Hash="54FB65D429E10B277EB7B980768CA828A538EF08" />
<Deny ID="ID_DENY_MHYPROTRG_8"
FriendlyName="mhyprotrpg.sys\f7d72d22cd4ad3e44fd617bdb4c90b9a884f4eb045688c0
e3fb64dd33e033eaa Hash Page Sha256"
Hash="FFEA367EECDCE7C46CDB2FF029D98AB95B8FB9CCD32F602E365DCE53E61C70B6" />
<Deny ID="ID_DENY_MSIO_1" FriendlyName="MsIo.sys Hash Sha1"
Hash="0CB0FD5BEA730E4EAAEC1426B0C15376CCAC6D83" />
<Deny ID="ID_DENY_MSIO_2" FriendlyName="MsIo.sys Hash Sha256"
Hash="0D0962DB9DC6879067270134801AD425C1F3E85B0DC39877C02AAA9C54ACA14E" />
<Deny ID="ID_DENY_MSIO_3" FriendlyName="MsIo.sys Hash Page Sha1"
Hash="D4E21C205DE75CDE70CD73C52C646E1E5D333A35" />
<Deny ID="ID_DENY_MSIO_4" FriendlyName="MsIo.sys Hash Page Sha256"
Hash="C1D2036235A489FDD8B3970C9EF01567443A87D17B0AD5C2A033D4C471D0ECDE" />
<Deny ID="ID_DENY_MSIO_5"
FriendlyName="MSIo\525d9b51a80ca0cd4c5889a96f857e73f3a80da1ffbae59851e0f51bd
fb0b6cd Hash Sha1" Hash="7E732ACB7CFAD9BA043A9350CDEFF25D742BECB8" />
<Deny ID="ID_DENY_MSIO_6"
FriendlyName="MSIo\525d9b51a80ca0cd4c5889a96f857e73f3a80da1ffbae59851e0f51bd
fb0b6cd Hash Sha256"
Hash="7018D515A6C781EA6097CA71D0F0603AD0D689F7EC99DB27FCACD492A9E86027" />
<Deny ID="ID_DENY_MSIO_7"
FriendlyName="MSIo\525d9b51a80ca0cd4c5889a96f857e73f3a80da1ffbae59851e0f51bd
fb0b6cd Hash Page Sha1" Hash="CDE1A50E1DF7870F8E4AFD8631E45A847C714C0A" />
<Deny ID="ID_DENY_MSIO_8"
FriendlyName="MSIo\525d9b51a80ca0cd4c5889a96f857e73f3a80da1ffbae59851e0f51bd
fb0b6cd Hash Page Sha256"
Hash="05736AB8B48DF84D81CB2CC0FBDC9D3DA34C22DB67A3E71C6F4B6B3923740DD5" />
<Deny ID="ID_DENY_MSIO_9" FriendlyName="MsIo.sys Hash Sha1"
Hash="07660D1867E20BE0212A96CBA6B5FE6BE7776EAF" />
<Deny ID="ID_DENY_MSIO_10" FriendlyName="MsIo.sys Hash Sha256"
Hash="BE0AF245444321E51F4DD8A90A19A0ABE05A060CBAD93701E23A02DF307957AE" />
<Deny ID="ID_DENY_MSIO_11" FriendlyName="MsIo.sys Hash Sha1"
Hash="B2CD3A63D04EAE427BEDE6C6FE8FACBA91ECECBF" />
<Deny ID="ID_DENY_MSIO_12" FriendlyName="MsIo.sys Hash Sha256"
Hash="D86D6732AC4D1CB41A2DCE40436B839C0DFDCEF9BA306CE5D0F97C0522ABFAC8" />
<Deny ID="ID_DENY_MSR_1" FriendlyName="Datapath
msr.sys\6c6a4d07e95ab4212c2afefcb0ce37dc485fa56120b0419b636bd8bd326038c1.sys
Hash Sha1" Hash="381CC2B974D440EDEA0BBC010C4BEF4CDC2169B7" />
<Deny ID="ID_DENY_MSR_2" FriendlyName="Datapath
msr.sys\6c6a4d07e95ab4212c2afefcb0ce37dc485fa56120b0419b636bd8bd326038c1.sys
Hash Sha256"
Hash="D23F28169D6E5C09A89E5136A4FF899A3B6F886535BB0254A27DD00A2753C412" />
<Deny ID="ID_DENY_MSR_3" FriendlyName="Datapath
msr.sys\6c6a4d07e95ab4212c2afefcb0ce37dc485fa56120b0419b636bd8bd326038c1.sys
Hash Page Sha1" Hash="5CB0D5676E465F6F389BED975B426705AC30DBC6" />
<Deny ID="ID_DENY_MSR_4" FriendlyName="Datapath
msr.sys\6c6a4d07e95ab4212c2afefcb0ce37dc485fa56120b0419b636bd8bd326038c1.sys
Hash Page Sha256"
Hash="F05027D011C6123FA6EFB78AEA60528568FC80F6D9FD5CD1232F9B79B4216D3B" />
<Deny ID="ID_DENY_MSR_5" FriendlyName="Datapath
msr.sys\ede9a3858a12d5ddea21a310e5721bf86c2248539f42c9e0c3c29ae5b0148ba5
Hash Sha1" Hash="2146BF058139453C0447786D6F6D5FC454AB955F" />
<Deny ID="ID_DENY_MSR_6" FriendlyName="Datapath
msr.sys\ede9a3858a12d5ddea21a310e5721bf86c2248539f42c9e0c3c29ae5b0148ba5
Hash Sha256"
Hash="1F8812611CF7120E89E769CC908FABC0C9E49B27FDED8DDE6A3DE51D9CE34F09" />
<Deny ID="ID_DENY_MSR_7" FriendlyName="Datapath
msr.sys\ede9a3858a12d5ddea21a310e5721bf86c2248539f42c9e0c3c29ae5b0148ba5
Hash Page Sha1" Hash="81DE92B2555D9A29C5E48CB4893ADF0131EAD233" />
<Deny ID="ID_DENY_MSR_8" FriendlyName="Datapath
msr.sys\ede9a3858a12d5ddea21a310e5721bf86c2248539f42c9e0c3c29ae5b0148ba5
Hash Page Sha256"
Hash="CA90FFB147D600E7F42E8790CBD9FE7D69C7463DE88B08723E210750E1E272BD" />
<Deny ID="ID_DENY_NVFLASH_1"
FriendlyName="nvflash.sys\0a89a6ab2fca486480b6e3dacf392d6ce0c59a5bdb4bcd18d6
72feb4ebb0543c Hash Sha1" Hash="213C4EC78132D6C0FDFDD7B640107E0CE4990A0E" />
<Deny ID="ID_DENY_NVFLASH_2"
FriendlyName="nvflash.sys\0a89a6ab2fca486480b6e3dacf392d6ce0c59a5bdb4bcd18d6
72feb4ebb0543c Hash Sha256"
Hash="91EE89520105CCBCECA6EE0E34070F28C8DC5A3D73EC65F384DA5DA4F2A36DC0" />
<Deny ID="ID_DENY_NVFLASH_3"
FriendlyName="nvflash.sys\0a89a6ab2fca486480b6e3dacf392d6ce0c59a5bdb4bcd18d6
72feb4ebb0543c Hash Page Sha1"
Hash="C24D6F9132486AF1EB2937D9366275126A5A35E1" />
<Deny ID="ID_DENY_NVFLASH_4"
FriendlyName="nvflash.sys\0a89a6ab2fca486480b6e3dacf392d6ce0c59a5bdb4bcd18d6
72feb4ebb0543c Hash Page Sha256"
Hash="EC1F0A277927B9C62B074FC4DC830A8C326BB7EDC667A09F2B3FC5684211A471" />
<Deny ID="ID_DENY_NVFLASH_5"
FriendlyName="nvflash.sys\0e9072759433abf3304667b332354e0c635964ff930de03429
4bf13d40da2a6f Hash Sha1" Hash="B76B53A72B66938BB3E9C787D0E075260F3E821C" />
<Deny ID="ID_DENY_NVFLASH_6"
FriendlyName="nvflash.sys\0e9072759433abf3304667b332354e0c635964ff930de03429
4bf13d40da2a6f Hash Sha256"
Hash="3CEE638C546EFE5BD23880DA9FA2B90E8DD0FD4A228FB0AD96F6C11D47A52593" />
<Deny ID="ID_DENY_NVFLASH_7"
FriendlyName="nvflash.sys\0e9072759433abf3304667b332354e0c635964ff930de03429
4bf13d40da2a6f Hash Page Sha1"
Hash="92A074CE4E5D2C89F709F63889BBE36EF92EA5AD" />
<Deny ID="ID_DENY_NVFLASH_8"
FriendlyName="nvflash.sys\0e9072759433abf3304667b332354e0c635964ff930de03429
4bf13d40da2a6f Hash Page Sha256"
Hash="19885E3CDADC4F226A1E71F69D463B93B8612C1D50F17BE831EC123D9A6BF09C" />
<Deny ID="ID_DENY_NVFLASH_9"
FriendlyName="nvflash.sys\159dcf37dc723d6db2bad46ed6a1b0e31d72390ec298a5413c
7be318aef4a241 Hash Sha1" Hash="892200C0BAE37AB60DECF28CE9E83D9CB56ACA24" />
<Deny ID="ID_DENY_NVFLASH_A"
FriendlyName="nvflash.sys\159dcf37dc723d6db2bad46ed6a1b0e31d72390ec298a5413c
7be318aef4a241 Hash Sha256"
Hash="DDE12D20A00F7987F6E53EEEEE3D5667482940F06D012A0003B80F217A105D74" />
<Deny ID="ID_DENY_NVFLASH_B"
FriendlyName="nvflash.sys\1ce9e4600859293c59d884ea721e9b20b2410f6ef80699f8a7
8a6b9fad505dfc Hash Sha1" Hash="2AE5A1F9C96F3935D58830D2FDF00B4517DACFD9" />
<Deny ID="ID_DENY_NVFLASH_C"
FriendlyName="nvflash.sys\1ce9e4600859293c59d884ea721e9b20b2410f6ef80699f8a7
8a6b9fad505dfc Hash Sha256"
Hash="51DBF446DEB54BEB8AEF1DE11E0F868AC062A9DB0C31D0E16EFF99203AEC86A9" />
<Deny ID="ID_DENY_NVFLASH_D"
FriendlyName="nvflash.sys\1ce9e4600859293c59d884ea721e9b20b2410f6ef80699f8a7
8a6b9fad505dfc Hash Page Sha1"
Hash="99039FEBE9EA08C480017C1278A864413449A0AD" />
<Deny ID="ID_DENY_NVFLASH_E"
FriendlyName="nvflash.sys\1ce9e4600859293c59d884ea721e9b20b2410f6ef80699f8a7
8a6b9fad505dfc Hash Page Sha256"
Hash="E47F294B4CB2CFDC42BD801F196FD9A7AF10DA5D4376043C55865549A661F224" />
<Deny ID="ID_DENY_NVFLASH_F"
FriendlyName="nvflash.sys\1e9ec6b3e83055ae90f3664a083c46885c506d33de5e2a49f5
f1189e89fa9f0a Hash Sha1" Hash="FD986601F23ED39308F35A13A54A080065E2B45D" />
<Deny ID="ID_DENY_NVFLASH_10"
FriendlyName="nvflash.sys\1e9ec6b3e83055ae90f3664a083c46885c506d33de5e2a49f5
f1189e89fa9f0a Hash Sha256"
Hash="4B38C075BA6523502DFD39ED10757DB58234A1C84D4952B65E30B4A8679BFCCA" />
<Deny ID="ID_DENY_NVFLASH_11"
FriendlyName="nvflash.sys\1e9ec6b3e83055ae90f3664a083c46885c506d33de5e2a49f5
f1189e89fa9f0a Hash Page Sha1"
Hash="85AF1545543975E4470A0A16C5825D863F7960C9" />
<Deny ID="ID_DENY_NVFLASH_12"
FriendlyName="nvflash.sys\1e9ec6b3e83055ae90f3664a083c46885c506d33de5e2a49f5
f1189e89fa9f0a Hash Page Sha256"
Hash="4B05EC4E5E0FB910E75ACDDFFC8E6D06F9024728AACCE13D659AE3C5B4E379CF" />
<Deny ID="ID_DENY_NVFLASH_13"
FriendlyName="nvflash.sys\20dd9542d30174585f2623642c7fbbda84e2347e4365e804e3
f3d81f530c4ece Hash Sha1" Hash="5087F7ED135DB66D4B58BEAF09F1245E65171466" />
<Deny ID="ID_DENY_NVFLASH_14"
FriendlyName="nvflash.sys\20dd9542d30174585f2623642c7fbbda84e2347e4365e804e3
f3d81f530c4ece Hash Sha256"
Hash="CC041A5C21339D62C9EA05215C2C42697F73A3820C83133EB6C6FA574A095384" />
<Deny ID="ID_DENY_NVFLASH_15"
FriendlyName="nvflash.sys\20dd9542d30174585f2623642c7fbbda84e2347e4365e804e3
f3d81f530c4ece Hash Page Sha1"
Hash="883179DAAFC0E08990285DA24BE8E63AFF983091" />
<Deny ID="ID_DENY_NVFLASH_16"
FriendlyName="nvflash.sys\20dd9542d30174585f2623642c7fbbda84e2347e4365e804e3
f3d81f530c4ece Hash Page Sha256"
Hash="928DF51B50A780687CF741F06429107A952238E020FE26CBA66F8FE7A7FED7BB" />
<Deny ID="ID_DENY_NVFLASH_17"
FriendlyName="nvflash.sys\3b2ad08123e8ed2516548240cfcdf5eefd89293f31070a6cd3
949ee1b66fed14 Hash Sha1" Hash="2C3D006C7C639BFFD8828AAE973238F570A3D74E" />
<Deny ID="ID_DENY_NVFLASH_18"
FriendlyName="nvflash.sys\3b2ad08123e8ed2516548240cfcdf5eefd89293f31070a6cd3
949ee1b66fed14 Hash Sha256"
Hash="D9434A50E1A6252F23AF362631A5576017CCE3EF109D7FC93748DE8BD46F9385" />
<Deny ID="ID_DENY_NVFLASH_19"
FriendlyName="nvflash.sys\3b2ad08123e8ed2516548240cfcdf5eefd89293f31070a6cd3
949ee1b66fed14 Hash Page Sha1"
Hash="1488153E8711789BFA0117E0573EB105F7BAA867" />
<Deny ID="ID_DENY_NVFLASH_1A"
FriendlyName="nvflash.sys\3b2ad08123e8ed2516548240cfcdf5eefd89293f31070a6cd3
949ee1b66fed14 Hash Page Sha256"
Hash="A384616C14E51F6F5E314174A1CBF9B47A7FE9395C2767DCF6013175E1B798C1" />
<Deny ID="ID_DENY_NVFLASH_1B"
FriendlyName="nvflash.sys\4115b7a30061d11a034188c0ec7a2223f3b032c8b3420cfffa
bf6c4df692920d Hash Sha1" Hash="D23911CE1E509163146B3661FA09031708BE327D" />
<Deny ID="ID_DENY_NVFLASH_1C"
FriendlyName="nvflash.sys\4115b7a30061d11a034188c0ec7a2223f3b032c8b3420cfffa
bf6c4df692920d Hash Sha256"
Hash="C2F5DB10A59577AEFF8550A58F9D96CE8AA8C1A13F96814CD0F4BB03274968E9" />
<Deny ID="ID_DENY_NVFLASH_1D"
FriendlyName="nvflash.sys\423d58265b22504f512a84faf787c1af17c44445ae68f7adca
a68b6f970e7bd5 Hash Sha1" Hash="E32288042163C61A55FD5CD05F7E1E0EBE2D3064" />
<Deny ID="ID_DENY_NVFLASH_1E"
FriendlyName="nvflash.sys\423d58265b22504f512a84faf787c1af17c44445ae68f7adca
a68b6f970e7bd5 Hash Sha256"
Hash="B62ECD7ECCDE402456EAB582B49705CC77065D7015E7D92BBC06E0FCFF097E58" />
<Deny ID="ID_DENY_NVFLASH_1F"
FriendlyName="nvflash.sys\423d58265b22504f512a84faf787c1af17c44445ae68f7adca
a68b6f970e7bd5 Hash Page Sha1"
Hash="66862B3470901C611EF69079594B631F262B643A" />
<Deny ID="ID_DENY_NVFLASH_20"
FriendlyName="nvflash.sys\423d58265b22504f512a84faf787c1af17c44445ae68f7adca
a68b6f970e7bd5 Hash Page Sha256"
Hash="EFFC8AB3AC97A9B0FEBA09792BF5CEC1AB1B8759A4E3A50834FDCDA5FFA90BCC" />
<Deny ID="ID_DENY_NVFLASH_21"
FriendlyName="nvflash.sys\4710acca9c4a61e2fc6daafb09d72e11b603ef8cd732e12a84
274ea9ad6d43be Hash Sha1" Hash="D4492258676968C5F3EABD0189F149CA143F16D4" />
<Deny ID="ID_DENY_NVFLASH_22"
FriendlyName="nvflash.sys\4710acca9c4a61e2fc6daafb09d72e11b603ef8cd732e12a84
274ea9ad6d43be Hash Sha256"
Hash="1E1F20CEB2BFE9F38B50D6C997DBAD032B2A79937EF6B3CE41B34BB74FBD24DB" />
<Deny ID="ID_DENY_NVFLASH_23"
FriendlyName="nvflash.sys\4737750788c72d2fc9cf95681c622357263075d65b23e54c4d
c3f31446cad37b Hash Sha1" Hash="26D406A4ED82F5F4550B4E3BEC84FB429A5B7952" />
<Deny ID="ID_DENY_NVFLASH_24"
FriendlyName="nvflash.sys\4737750788c72d2fc9cf95681c622357263075d65b23e54c4d
c3f31446cad37b Hash Sha256"
Hash="D4288C055C6D68B4A45DF501877443E544B31C193F8559C8C7EAC927AE738E8A" />
<Deny ID="ID_DENY_NVFLASH_25"
FriendlyName="nvflash.sys\4737750788c72d2fc9cf95681c622357263075d65b23e54c4d
c3f31446cad37b Hash Page Sha1"
Hash="1ADB9E0B8A2533D51026BA553BF49C7D46BCE794" />
<Deny ID="ID_DENY_NVFLASH_26"
FriendlyName="nvflash.sys\4737750788c72d2fc9cf95681c622357263075d65b23e54c4d
c3f31446cad37b Hash Page Sha256"
Hash="8C312288DAE8148CD93AC970F045E0E7981B4CD9DC21DE64E99633AAEABE9754" />
<Deny ID="ID_DENY_NVFLASH_27"
FriendlyName="nvflash.sys\50aa2b3a762abb1306fa003c60de3c78e89ea5d29aab8a9c64
79792d2be3c2d7 Hash Sha1" Hash="C905EDB291ECA91790FEC309CBC00E8A6CE0534D" />
<Deny ID="ID_DENY_NVFLASH_28"
FriendlyName="nvflash.sys\50aa2b3a762abb1306fa003c60de3c78e89ea5d29aab8a9c64
79792d2be3c2d7 Hash Sha256"
Hash="057E6A58E3515E56EAB85CCB8EC5086552B7DE98C886C37F6A5284C002615565" />
<Deny ID="ID_DENY_NVFLASH_29"
FriendlyName="nvflash.sys\50aa2b3a762abb1306fa003c60de3c78e89ea5d29aab8a9c64
79792d2be3c2d7 Hash Page Sha1"
Hash="79B21CAC909E73ABEF928A9587703CA2F6501B6D" />
<Deny ID="ID_DENY_NVFLASH_2A"
FriendlyName="nvflash.sys\50aa2b3a762abb1306fa003c60de3c78e89ea5d29aab8a9c64
79792d2be3c2d7 Hash Page Sha256"
Hash="61ED70302D3A3F42B99C319D8142E00446F9090A45817C2413BBEF4DF7545C1D" />
<Deny ID="ID_DENY_NVFLASH_2B"
FriendlyName="nvflash.sys\5cc6b647174c8efa0a81ec1d3cb0464c8a567456571d0939fb
2e76c6850bf7cb Hash Sha1" Hash="362773DD943A8FAF5C24FAF1F3DC59E6BC89C384" />
<Deny ID="ID_DENY_NVFLASH_2C"
FriendlyName="nvflash.sys\5cc6b647174c8efa0a81ec1d3cb0464c8a567456571d0939fb
2e76c6850bf7cb Hash Sha256"
Hash="E88617BF6581B7F48AB216F5A2CF40CFA728354F81A631568823426461902C87" />
<Deny ID="ID_DENY_NVFLASH_2D"
FriendlyName="nvflash.sys\5cc6b647174c8efa0a81ec1d3cb0464c8a567456571d0939fb
2e76c6850bf7cb Hash Page Sha1"
Hash="F2758B4DB78D45A969F6500A55F3303F8279A788" />
<Deny ID="ID_DENY_NVFLASH_2E"
FriendlyName="nvflash.sys\5cc6b647174c8efa0a81ec1d3cb0464c8a567456571d0939fb
2e76c6850bf7cb Hash Page Sha256"
Hash="B0E2CCA277AD545180769F454CF2EA25C1B9F7751F1B417E905D7DDA18C287A7" />
<Deny ID="ID_DENY_NVFLASH_2F"
FriendlyName="nvflash.sys\747a4dc50915053649c499a508853a42d9e325a5eec22e5865
71e338c6d32465 Hash Sha1" Hash="30DE853698F8DBF7063E647F6C6C50759CE233DE" />
<Deny ID="ID_DENY_NVFLASH_30"
FriendlyName="nvflash.sys\747a4dc50915053649c499a508853a42d9e325a5eec22e5865
71e338c6d32465 Hash Sha256"
Hash="DCEF3C2FE44A68992D2344A8EC129E9D35E7790F4317E9BD7BCA6BF217252D91" />
<Deny ID="ID_DENY_NVFLASH_31"
FriendlyName="nvflash.sys\747a4dc50915053649c499a508853a42d9e325a5eec22e5865
71e338c6d32465 Hash Page Sha1"
Hash="E9BB517823908DCFC0E47E7A6A81424BFCCBBB23" />
<Deny ID="ID_DENY_NVFLASH_32"
FriendlyName="nvflash.sys\747a4dc50915053649c499a508853a42d9e325a5eec22e5865
71e338c6d32465 Hash Page Sha256"
Hash="04ACDCE5167AF1D3F4F2AAEEBA143D7B610B275E29850F52C6DBA62E6359272D" />
<Deny ID="ID_DENY_NVFLASH_33"
FriendlyName="nvflash.sys\79aa2cedd1b8415ba6d00f4b3601e2363c8bdd07f860a3b8de
010f9e5187c0e9 Hash Sha1" Hash="C5AB13C024491029AA6F72020A4E44A8AF004EE9" />
<Deny ID="ID_DENY_NVFLASH_34"
FriendlyName="nvflash.sys\79aa2cedd1b8415ba6d00f4b3601e2363c8bdd07f860a3b8de
010f9e5187c0e9 Hash Sha256"
Hash="7680D9B4F66FE4FE9D4A45F2EBDB3F17E7D3E2519E0B61D691761A2222CF444B" />
<Deny ID="ID_DENY_NVFLASH_35"
FriendlyName="nvflash.sys\7c933f5d07ccb4bd715666cd6eb35a774b266ddd8d21284953
5a54192a44f667 Hash Sha1" Hash="2060F97A7138F29DFEEEF3258ECFE5256DA8AE87" />
<Deny ID="ID_DENY_NVFLASH_36"
FriendlyName="nvflash.sys\7c933f5d07ccb4bd715666cd6eb35a774b266ddd8d21284953
5a54192a44f667 Hash Sha256"
Hash="6694435663BF283A3D5F20E9C90CF1BC4D3687E381B32E1A004A9D24471EB95B" />
<Deny ID="ID_DENY_NVFLASH_37"
FriendlyName="nvflash.sys\7c933f5d07ccb4bd715666cd6eb35a774b266ddd8d21284953
5a54192a44f667 Hash Page Sha1"
Hash="399627D62A7B582DA2C0202AD46AE1FD50DF6DB8" />
<Deny ID="ID_DENY_NVFLASH_38"
FriendlyName="nvflash.sys\7c933f5d07ccb4bd715666cd6eb35a774b266ddd8d21284953
5a54192a44f667 Hash Page Sha256"
Hash="4346FCFFA68B2B532F4A40D48D4D052CE0106ABBEDE45DE2CBF9E474C379E559" />
<Deny ID="ID_DENY_NVFLASH_39"
FriendlyName="nvflash.sys\7ef8949637cb947f1a4e1d4e68d31d1385a600d1b1054b53e7
417767461fafa7 Hash Sha1" Hash="7BD52FAD60A897B26B0D447F7A84E5D00808B3B3" />
<Deny ID="ID_DENY_NVFLASH_3A"
FriendlyName="nvflash.sys\7ef8949637cb947f1a4e1d4e68d31d1385a600d1b1054b53e7
417767461fafa7 Hash Sha256"
Hash="48567FA742841208D4F93F54031218703241BAEC6F59B1E4AB8A71C26DE1CF85" />
<Deny ID="ID_DENY_NVFLASH_3B"
FriendlyName="nvflash.sys\7ef8949637cb947f1a4e1d4e68d31d1385a600d1b1054b53e7
417767461fafa7 Hash Page Sha1"
Hash="87581F7EB0804FA1114B8CA28EEDEFCB4E3BEFC2" />
<Deny ID="ID_DENY_NVFLASH_3C"
FriendlyName="nvflash.sys\7ef8949637cb947f1a4e1d4e68d31d1385a600d1b1054b53e7
417767461fafa7 Hash Page Sha256"
Hash="73EFDB51282A53B599A9DF6E94E0DB8BCEA3825613742FE2864915AFE7EE1869" />
<Deny ID="ID_DENY_NVFLASH_3D"
FriendlyName="nvflash.sys\8162811e8aae05884e8cb84b8dd87c310e5ed5ec588b9023a4
d849d558d6ae34 Hash Sha1" Hash="F3AD16A4376921F4F70E30F03B55DD87087CF8B4" />
<Deny ID="ID_DENY_NVFLASH_3E"
FriendlyName="nvflash.sys\8162811e8aae05884e8cb84b8dd87c310e5ed5ec588b9023a4
d849d558d6ae34 Hash Sha256"
Hash="AE7D7D8A5BC48F2FB1DC81806A5EED52C3EFC487CFDC8737D3EA3970DCA7CE27" />
<Deny ID="ID_DENY_NVFLASH_3F"
FriendlyName="nvflash.sys\835733590a778f48dae1df4e33da8455b89449fed3e04fa19b
64bbdcb6a530db Hash Sha1" Hash="239F1400AE2D6005DB03F92203723BC227CFEE7D" />
<Deny ID="ID_DENY_NVFLASH_40"
FriendlyName="nvflash.sys\835733590a778f48dae1df4e33da8455b89449fed3e04fa19b
64bbdcb6a530db Hash Sha256"
Hash="C349C8036B5EE61E7B0831943697BA98BFE70A52BAC0A06B497C229B0C0FFF27" />
<Deny ID="ID_DENY_NVFLASH_41"
FriendlyName="nvflash.sys\9155470dc24449977d1be15a116b08705dd4c113a2eb4ab19a
6000749ff4b100 Hash Sha1" Hash="A3B195EA5F9E63790FA575DBEF85D01B4E4D051F" />
<Deny ID="ID_DENY_NVFLASH_42"
FriendlyName="nvflash.sys\9155470dc24449977d1be15a116b08705dd4c113a2eb4ab19a
6000749ff4b100 Hash Sha256"
Hash="989E3234C1B61EA2DB590CB170F79E25E9C9A6262B7B9A751ECFC6BF4468B8C4" />
<Deny ID="ID_DENY_NVFLASH_43"
FriendlyName="nvflash.sys\9368e51ec98e2ad20893a5fc21e6a8b20c5bee158d5c49ca58
649cff84db9d68 Hash Sha1" Hash="0CB5FC2EE1BA75E5B8ED06F92D4EDAF08B136333" />
<Deny ID="ID_DENY_NVFLASH_44"
FriendlyName="nvflash.sys\9368e51ec98e2ad20893a5fc21e6a8b20c5bee158d5c49ca58
649cff84db9d68 Hash Sha256"
Hash="4AE065383A4EF5564A515D12ADF18427F8D74CC15140EDB95E5E2A51CA44FE42" />
<Deny ID="ID_DENY_NVFLASH_45"
FriendlyName="nvflash.sys\b715d5682ab59a0ce3f858e47bf79bdf876a899f618c12c22b
27cb1dd4daa8f4 Hash Sha1" Hash="01371BEB459717F8030A4F1F1B3C6E041D8A540D" />
<Deny ID="ID_DENY_NVFLASH_46"
FriendlyName="nvflash.sys\b715d5682ab59a0ce3f858e47bf79bdf876a899f618c12c22b
27cb1dd4daa8f4 Hash Sha256"
Hash="11E3D9AA67EF620A452458F67E101AA513C7FBCCA8F35E2E5D0E3403D9DEE937" />
<Deny ID="ID_DENY_NVFLASH_47"
FriendlyName="nvflash.sys\c11305fc8da85568b2d41cdf030ce260815fea848af91dc0e0
1076d461bab919 Hash Sha1" Hash="B4F0F313882C61FCE95FAA982CA2E36C7129B5BD" />
<Deny ID="ID_DENY_NVFLASH_48"
FriendlyName="nvflash.sys\c11305fc8da85568b2d41cdf030ce260815fea848af91dc0e0
1076d461bab919 Hash Sha256"
Hash="E52BB23D6E4572FDA5318ADDB4DAD602629C8F254B8E6C4BAF4033DDDF13D660" />
<Deny ID="ID_DENY_NVFLASH_49"
FriendlyName="nvflash.sys\c188b36f258f38193ace21a7d254f0aec36b59ad7e3f9bcb9c
2958108effebad Hash Sha1" Hash="C75BBD7F612B0BA6DAEDF6D399FB4E3405D70FCE" />
<Deny ID="ID_DENY_NVFLASH_4A"
FriendlyName="nvflash.sys\c188b36f258f38193ace21a7d254f0aec36b59ad7e3f9bcb9c
2958108effebad Hash Sha256"
Hash="6A95F3C5CEC52DA45F9B74660B81226B4314EC18E761490140173998500AE015" />
<Deny ID="ID_DENY_NVFLASH_4B"
FriendlyName="nvflash.sys\c188b36f258f38193ace21a7d254f0aec36b59ad7e3f9bcb9c
2958108effebad Hash Page Sha1"
Hash="56F1F0F49CBAAC3950ED462B5058988629146152" />
<Deny ID="ID_DENY_NVFLASH_4C"
FriendlyName="nvflash.sys\c188b36f258f38193ace21a7d254f0aec36b59ad7e3f9bcb9c
2958108effebad Hash Page Sha256"
Hash="81226C59A8FE8DFA7D3AF42BE35CF363D9460280947C3C13227FEE5EC55A013F" />
<Deny ID="ID_DENY_NVFLASH_4D"
FriendlyName="nvflash.sys\df996d5a06a2e2ecc087569358b1957d500b176ec7ed37031b
cee440963d9d80 Hash Sha1" Hash="507F08806CF4DB099860BFE6725E1705D2F04994" />
<Deny ID="ID_DENY_NVFLASH_4E"
FriendlyName="nvflash.sys\df996d5a06a2e2ecc087569358b1957d500b176ec7ed37031b
cee440963d9d80 Hash Sha256"
Hash="AB3FE6CBD9E3D70A64C5F3B186126CC38A04A624CEEFC46AFE4825F2001A3CAA" />
<Deny ID="ID_DENY_NVFLASH_4F"
FriendlyName="nvflash.sys\e2d6cdc3d8960a50d9f292bb337b3235956a61e4e8b16cf158
cb979b777f42aa Hash Sha1" Hash="1989E7DB7CE6B29F674BFF8E7EFA7056DD2711AA" />
<Deny ID="ID_DENY_NVFLASH_50"
FriendlyName="nvflash.sys\e2d6cdc3d8960a50d9f292bb337b3235956a61e4e8b16cf158
cb979b777f42aa Hash Sha256"
Hash="E69BBA9F8AAE090226841A02E6207FB37F784B83C6641EA15BD20E7BD3418D87" />
<Deny ID="ID_DENY_NVFLASH_51"
FriendlyName="nvflash.sys\e2d6cdc3d8960a50d9f292bb337b3235956a61e4e8b16cf158
cb979b777f42aa Hash Page Sha1"
Hash="885D09104754C54B888E40BA3FC87D6F31CFBA4C" />
<Deny ID="ID_DENY_NVFLASH_52"
FriendlyName="nvflash.sys\e2d6cdc3d8960a50d9f292bb337b3235956a61e4e8b16cf158
cb979b777f42aa Hash Page Sha256"
Hash="788D70F1F98CB804453B052363C3639447CE1DDE7B4D3CAFD1D7810CCF59A4A0" />
<Deny ID="ID_DENY_NVFLASH_53"
FriendlyName="nvflash.sys\eef68fdc5df91660410fb9bed005ed08c258c44d66349192fa
f5bb5f09f5fa90 Hash Sha1" Hash="D299F3E02E924746763838B6FBE37EBAB64CE698" />
<Deny ID="ID_DENY_NVFLASH_54"
FriendlyName="nvflash.sys\eef68fdc5df91660410fb9bed005ed08c258c44d66349192fa
f5bb5f09f5fa90 Hash Sha256"
Hash="B1B708DD7B10616693FD6B56E0B47D9FA6B90F9DB28CBF3893B815222E2FA2E5" />
<Deny ID="ID_DENY_NVFLASH_55"
FriendlyName="nvflash.sys\eef68fdc5df91660410fb9bed005ed08c258c44d66349192fa
f5bb5f09f5fa90 Hash Page Sha1"
Hash="8D92D3C3186E525F6810B807FA3AF080776BB5C9" />
<Deny ID="ID_DENY_NVFLASH_56"
FriendlyName="nvflash.sys\eef68fdc5df91660410fb9bed005ed08c258c44d66349192fa
f5bb5f09f5fa90 Hash Page Sha256"
Hash="6D4FD027E3B3D3B066092C58408392A8A9475CFEFDE0BDB03BD904228B180365" />
<Deny ID="ID_DENY_NVFLASH_57"
FriendlyName="nvflash.sys\f1fbec90c60ee4daba1b35932db9f3556633b2777b10391638
41a91cf997938e Hash Sha1" Hash="403101941F404B42ACFB5003D23357EFFD89AB09" />
<Deny ID="ID_DENY_NVFLASH_58"
FriendlyName="nvflash.sys\f1fbec90c60ee4daba1b35932db9f3556633b2777b10391638
41a91cf997938e Hash Sha256"
Hash="D510B3424178F80CBE926217D74BBECBF682A88F1B6052EF27FD27D601FC14F7" />
<Deny ID="ID_DENY_NVFLASH_59"
FriendlyName="nvflash.sys\f1fbec90c60ee4daba1b35932db9f3556633b2777b10391638
41a91cf997938e Hash Page Sha1"
Hash="1985EFCE1EA72048C2F80A259CA9EE1B74964910" />
<Deny ID="ID_DENY_NVFLASH_5A"
FriendlyName="nvflash.sys\f1fbec90c60ee4daba1b35932db9f3556633b2777b10391638
41a91cf997938e Hash Page Sha256"
Hash="CB1CD8AD059F553B7D9D93A343557891B4A126FE97FEA51767C404E85514117F" />
<Deny ID="ID_DENY_NVFLASH_5B"
FriendlyName="nvflash.sys\f2a4ddc38e68efd2eac27b2562529926f5ade93575a82e8d3e
0abb2b37347257 Hash Sha1" Hash="3B45A3E4C8BC157C97DE9D010FEEA486C8263CCA" />
<Deny ID="ID_DENY_NVFLASH_5C"
FriendlyName="nvflash.sys\f2a4ddc38e68efd2eac27b2562529926f5ade93575a82e8d3e
0abb2b37347257 Hash Sha256"
Hash="E5A6FE0D0A3894F55B7BA9B4D5A03022F6146544F1F874AE1EF32C29450535B7" />
<Deny ID="ID_DENY_NVFLASH_5D"
FriendlyName="nvflash.sys\f2a4ddc38e68efd2eac27b2562529926f5ade93575a82e8d3e
0abb2b37347257 Hash Page Sha1"
Hash="0FCFB7ED9D855A8D217C449FC01C7B6F1DDE6E09" />
<Deny ID="ID_DENY_NVFLASH_5E"
FriendlyName="nvflash.sys\f2a4ddc38e68efd2eac27b2562529926f5ade93575a82e8d3e
0abb2b37347257 Hash Page Sha256"
Hash="C5D82F33F4DEFA4430406C1A49320769E435184DC56A2DD167D4C82B0A5B0880" />
<Deny ID="ID_DENY_NVFLASH_5F"
FriendlyName="nvflash.sys\f583cfb8aab7d084dc052dbd0b9d56693308cbb26bd1b607c2
aedf8ee2b25e44 Hash Sha1" Hash="E127C3A0F3CF3A30A1A82F558B2BDCD995657B0C" />
<Deny ID="ID_DENY_NVFLASH_60"
FriendlyName="nvflash.sys\f583cfb8aab7d084dc052dbd0b9d56693308cbb26bd1b607c2
aedf8ee2b25e44 Hash Sha256"
Hash="46CB4AABE49917BE885F2C42ADE92ACEDA6B9D0B7739CF0E7C3C6D93820B67C3" />
<Deny ID="ID_DENY_NVFLASH_61"
FriendlyName="nvflash.sys\f583cfb8aab7d084dc052dbd0b9d56693308cbb26bd1b607c2
aedf8ee2b25e44 Hash Page Sha1"
Hash="E75DD0730EE08F55F2BA9BE713BE7D8A0532C7ED" />
<Deny ID="ID_DENY_NVFLASH_62"
FriendlyName="nvflash.sys\f583cfb8aab7d084dc052dbd0b9d56693308cbb26bd1b607c2
aedf8ee2b25e44 Hash Page Sha256"
Hash="71CFC85D9AB2BBE93C4E301B84E590E1067A0306BE04DE8CA7751734AD43C73B" />
<Deny ID="ID_DENY_NVFLASH_63"
FriendlyName="nvflash.sys\fd94be9ac97f06abe64426933fbee02871d5d181b1d9025daf
1aaa92d9342e90 Hash Sha1" Hash="E3908D3DF9154FD25DAE684C1E12750AB6C57FE1" />
<Deny ID="ID_DENY_NVFLASH_64"
FriendlyName="nvflash.sys\fd94be9ac97f06abe64426933fbee02871d5d181b1d9025daf
1aaa92d9342e90 Hash Sha256"
Hash="5C58C38E4737C750CCAFA621A18D875299BB5440BB1900EB8469DCF4130049C8" />
<Deny ID="ID_DENY_NVFLASH_65"
FriendlyName="nvflash.sys\fe2fb5d6cfcd64aeb62e6bf5b71fd2b2a87886eb97ab59e535
3ba740da9f5db5 Hash Sha1" Hash="28DE9CAD03C6F3F335B3B600666B6056A15E44BD" />
<Deny ID="ID_DENY_NVFLASH_66"
FriendlyName="nvflash.sys\fe2fb5d6cfcd64aeb62e6bf5b71fd2b2a87886eb97ab59e535
3ba740da9f5db5 Hash Sha256"
Hash="A00B50CC1D95ABC3ADA635F331C5911D1AAF9AE8B86D359DB6FC7F6FC5EB0C94" />
<Deny ID="ID_DENY_NVFLASH_67"
FriendlyName="nvflash.sys\fe2fb5d6cfcd64aeb62e6bf5b71fd2b2a87886eb97ab59e535
3ba740da9f5db5 Hash Page Sha1"
Hash="5C491461CB823CD8429367939B5823AAAF096AF1" />
<Deny ID="ID_DENY_NVFLASH_68"
FriendlyName="nvflash.sys\fe2fb5d6cfcd64aeb62e6bf5b71fd2b2a87886eb97ab59e535
3ba740da9f5db5 Hash Page Sha256"
Hash="0B0B8410AF9BACB119832C4884159D866EEEDF35C86F08BFB625F8ED782CF871" />
<Deny ID="ID_DENY_NVFLASH_69"
FriendlyName="nvflash.sys\ffd1aef19646ffed09b56a2ace4fc8cdf5b2f714fcca1e7ffb
82256264c94b18 Hash Sha1" Hash="7B16F47DAC151D8FF54B249F930A37B72CD7094C" />
<Deny ID="ID_DENY_NVFLASH_6A"
FriendlyName="nvflash.sys\ffd1aef19646ffed09b56a2ace4fc8cdf5b2f714fcca1e7ffb
82256264c94b18 Hash Sha256"
Hash="157CE9AE0D09766CFA3E5BE8F90E2AC510F0CE3A0BB7CD97E3A5F9AA20C76661" />
<Deny ID="ID_DENY_NVFLASH_6B"
FriendlyName="nvflash.sys\ffd1aef19646ffed09b56a2ace4fc8cdf5b2f714fcca1e7ffb
82256264c94b18 Hash Page Sha1"
Hash="C1DC399DF098A44F569BA80ECCFE0B5724362B16" />
<Deny ID="ID_DENY_NVFLASH_6C"
FriendlyName="nvflash.sys\ffd1aef19646ffed09b56a2ace4fc8cdf5b2f714fcca1e7ffb
82256264c94b18 Hash Page Sha256"
Hash="D6E111744E51D167F040AC43D426D852013241C717C557ECC8C8FCEAA0F01BBC" />
<Deny ID="ID_DENY_OTIPCIBUS_1"
FriendlyName="otipcibus.sys\4e3eb5b9bce2fd9f6878ae36288211f0997f6149aa8c290e
d91228ba4cdfae80 Hash Sha1" Hash="FD172C7F8BDC81988FCF1642881078A8CA8415F6"
/>
<Deny ID="ID_DENY_OTIPCIBUS_2"
FriendlyName="otipcibus.sys\4e3eb5b9bce2fd9f6878ae36288211f0997f6149aa8c290e
d91228ba4cdfae80 Hash Sha256"
Hash="1CDA1A6E33D14D5DD06344425102BF840F8149E817ECFB01C59A2190D3367024" />
<Deny ID="ID_DENY_OTIPCIBUS_3"
FriendlyName="otipcibus.sys\4e3eb5b9bce2fd9f6878ae36288211f0997f6149aa8c290e
d91228ba4cdfae80 Hash Page Sha1"
Hash="8DFBFD888C9A420AC7F3371E5443C26A2852E539" />
<Deny ID="ID_DENY_OTIPCIBUS_4"
FriendlyName="otipcibus.sys\4e3eb5b9bce2fd9f6878ae36288211f0997f6149aa8c290e
d91228ba4cdfae80 Hash Page Sha256"
Hash="FC6D1B67464228C2FA102AD121DCD40292054DC0FC8C4D86BEFACA7456535C57" />
<Deny ID="ID_DENY_PCHUNTER_3"
FriendlyName="PCHunter.sys\3f20ac5dac9171857fc5791865458fdb6eac4fab837d7eabc
42cb0a83cb522fc Hash Sha1" Hash="16269BB8D638D7753F49F739881FA5F89A535EB1"
/>
<Deny ID="ID_DENY_PCHUNTER_4"
FriendlyName="PCHunter.sys\3f20ac5dac9171857fc5791865458fdb6eac4fab837d7eabc
42cb0a83cb522fc Hash Sha256"
Hash="81B772E718E40E8D1D815CB3B16690C1EBD4E0BC555933DB306037CC3341537F" />
<Deny ID="ID_DENY_PCHUNTER_5"
FriendlyName="PCHunter.sys\3f20ac5dac9171857fc5791865458fdb6eac4fab837d7eabc
42cb0a83cb522fc Hash Page Sha1"
Hash="522BAC5667E523039DED356D81655594824F7516" />
<Deny ID="ID_DENY_PCHUNTER_6"
FriendlyName="PCHunter.sys\3f20ac5dac9171857fc5791865458fdb6eac4fab837d7eabc
42cb0a83cb522fc Hash Page Sha256"
Hash="845685B9E1AAA3BEF9512BC8E13842D0F05D3958B43EC74C84DE412FC1CB6A80" />
<Deny ID="ID_DENY_PIDDRV_SHA1" FriendlyName="piddrv.sys Hash Sha1"
Hash="877C6C36A155109888FE1F9797B93CB30B4957EF" />
<Deny ID="ID_DENY_PIDDRV_SHA256" FriendlyName="piddrv.sys Hash Sha256"
Hash="4E19D4CE649C28DD947424483796BEACE3656284FB0379D97DDDD320AA602BBC" />
<Deny ID="ID_DENY_PIDDRV_SHA1_PAGE" FriendlyName="piddrv.sys Hash Page
Sha1" Hash="A7D827A41B2C4B7638495CD1D77926F1BA902978" />
<Deny ID="ID_DENY_PIDDRV_SHA256_PAGE" FriendlyName="piddrv.sys Hash Page
Sha256"
Hash="EAC7316089DBAF7DF79A531355547BBDA22FA0921E31BBA0D27BCC88234E9ED3" />
<Deny ID="ID_DENY_PIDDRV64_SHA1" FriendlyName="piddrv64.sys Hash Sha1"
Hash="0C2599D738D01A82EC91725F499ACEBBCFB47CC9" />
<Deny ID="ID_DENY_PIDDRV64_SHA256" FriendlyName="piddrv64.sys Hash
Sha256"
Hash="B97F870C501714FA453CF18AE8A30C87D08FF1E6D784AFDBB0121AEA3DA2DC28" />
<Deny ID="ID_DENY_PIDDRV64_SHA1_PAGE" FriendlyName="piddrv64.sys Hash
Page Sha1" Hash="C978063E678233C5EFB8F002FEF000FD479CC632" />
<Deny ID="ID_DENY_PIDDRV64_SHA256_PAGE" FriendlyName="piddrv64.sys Hash
Page Sha256"
Hash="1081CCD57FD35998634103AE1E736638D82351092ACD30FE75084EA6A08CA0F7" />
<Deny ID="ID_DENY_PHYDMACC_1"
FriendlyName="phydmaccx64\f7b3112b9745b766c8359d25e315975d3159935a8ddb3e3035
d21ed124a9013f Hash Sha1" Hash="200ABD07303234FC114360D9DABC38DA1F1F2A22"/>
<Deny ID="ID_DENY_PHYDMACC_2"
FriendlyName="phydmaccx64\f7b3112b9745b766c8359d25e315975d3159935a8ddb3e3035
d21ed124a9013f Hash Sha256"
Hash="743302AF4224D5F44489290C01391C03B928126D726B72E7602FE5760E6D9519"/>
<Deny ID="ID_DENY_PHYDMACC_3"
FriendlyName="phydmaccx64\f7b3112b9745b766c8359d25e315975d3159935a8ddb3e3035
d21ed124a9013f Hash Page Sha1"
Hash="84B91B1AED8F83DE14323089148BE2577FDC826C"/>
<Deny ID="ID_DENY_PHYDMACC_4"
FriendlyName="phydmaccx64\f7b3112b9745b766c8359d25e315975d3159935a8ddb3e3035
d21ed124a9013f Hash Page Sha256"
Hash="B8502DB6B8947E5D852102166D0BEF8252EA3431D582E968EF44C35E56609C91"/>
<Deny ID="ID_DENY_PHYDMACC_5"
FriendlyName="PhyDMACCx86.sys\23787eb342fd38da73ce785023176f98304267c6f6fa8a
50e718da096c7a7951 Hash Sha1"
Hash="B4AF2981B9D94DF71083A1F0C2D68E0883AA1CD1" />
<Deny ID="ID_DENY_PHYDMACC_6"
FriendlyName="PhyDMACCx86.sys\23787eb342fd38da73ce785023176f98304267c6f6fa8a
50e718da096c7a7951 Hash Sha256"
Hash="5D10285D802FA793C217933C907D82DB58977B865B3DAD3848C6ED2550022413" />
<Deny ID="ID_DENY_PHYMEMX64_SHA1" FriendlyName="phymemx64 Hash Sha1"
Hash="3C9F40AC72B0202CB40627FDEB7298079187193A" />
<Deny ID="ID_DENY_PHYMEMX64_SHA256" FriendlyName="phymemx64 Hash Sha256"
Hash="A6AE7364FD188C10D6B5A729A7FF58A3EB11E7FEB0D107D18F9133655C11FB66" />
<Deny ID="ID_DENY_PHYMEMX64_SHA1_PAGE" FriendlyName="phymemx64 Hash Page
Sha1" Hash="6E7D8ABF7F81A2433F27B052B3952EFC4B9CC0B1" />
<Deny ID="ID_DENY_PHYMEMX64_SHA256_PAGE" FriendlyName="phymemx64 Hash
Page Sha256"
Hash="B7113B9A68E17428E2107B19BA099571AAFFC854B8FB9CBCEB79EF9E3FD1CC62" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_1" FriendlyName="80.sys Hash Sha1"
Hash="BC2F3850C7B858340D7ED27B90E63B036881FD6C" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_2" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="E74B6DDA8BC53BC687FC21218BD34062A78D8467" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_3" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="2C27ABBBBCF10DFB75AD79557E30ACE5ED314DF8" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_4" FriendlyName="81.sys Hash Sha1"
Hash="FAA870B0CB15C9AC2B9BBA5D0470BD501CCD4326" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_5" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="8241C9A5755A740811C8E8D2739B33146ACD3E6D" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_6" FriendlyName="full.sys Hash Sha1"
Hash="4B8C0445075F09AEEF542AB1C86E5DE6B06E91A3" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_7" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="E014C6BEBFDA944CE3A58AB9FE055D4F9367D49C" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_8" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="E5A152BB57060C2B27E825258698BD7FF67907FF" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_9" FriendlyName="81.sys Hash Sha1"
Hash="ACA8E53483B40A06DFDEE81BB364B1622F9156FE" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_10" FriendlyName="nstrwsk.sys Hash
Sha1" Hash="83767982B3A5F70615A386F4D6638F20509F3560" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_11" FriendlyName="nt2.sys Hash Sha1"
Hash="8F0B99B53EB921547AFECF1F12B3299818C4E5D1" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_12" FriendlyName="nt3.sys Hash Sha1"
Hash="295E590D49DF717C489C5C824E9C6896A14248BB" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_13" FriendlyName="nt5.sys Hash Sha1"
Hash="7A43BE821832E9BF55B1B781AE468179D0E4F56E" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_14" FriendlyName="81.sys Hash Sha1"
Hash="05AC1C64CA16AB0517FE85D4499D08199E63DF26" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_15" FriendlyName="b4.sys Hash Sha1"
Hash="4BBB9709D5F916FE78EAA15431F622761EFC496F" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_16" FriendlyName="bw.sys Hash Sha1"
Hash="150F5DAE8716B09A64CAC96862F5E2506A71E771" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_17" FriendlyName="bwrs.sys Hash Sha1"
Hash="3DEBE170B5A113407F9E86EE6ED9AE00C3D82C9F" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_18" FriendlyName="bwrsh.sys Hash Sha1"
Hash="73857ACDD7D7C9235F3E18C503A27E7C88C5FCB0" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_19" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="8BC75E18953B7B23991B2FBC79713E1E175F75E4" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_20" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="A2DA5C397F737FA55D8F93D3CED5EB70AE09801F" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_21" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="C58B6EF848CA87AD9EC4368C45C8F1EB7FA6BD16" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_22" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="74CBC407ACD9D2A4BC609B2F8C9A09B90912D10C" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_23" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="1923D1F21FAFFCD7D511E2B313FE9415E6AD90AE" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_24" FriendlyName="TGSafe.sys Hash Sha1"
Hash="F3E60B7B9C53315D6158F82596919209A00E1CDA" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_25" FriendlyName="BlackBoneDrv10.sys
Hash Sha1" Hash="AA97BF43E6BAD521F3A3D8081FB350C89382F06F" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_26" FriendlyName="LgDCatcher.sys Hash
Sha1" Hash="4604A20CAE2DFE42320FE8F6AED000EC204EFA7E" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_27" FriendlyName="gameink.sys Hash
Sha1" Hash="60A632E4B838731AAD553650D6BC8AF3D3D80B26" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_28" FriendlyName="windows-xp-64.sys
Hash Sha1" Hash="03F0DD3124EC3A4BB6D30865A488F54E74DED699" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_29" FriendlyName="windows8-10-32.sys
Hash Sha1" Hash="8A50E81D6E6C45410BF13F95B1A67CADA8C82221" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_30" FriendlyName="kbdcap64.sys Hash
Sha1" Hash="83660D245FE618ECAFE4900AC1E2AD0292C2DA2A" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_31" FriendlyName="netfilterdrv.sys Hash
Sha1" Hash="202D5A05E546740037F9A4DC2B21F71680C39D3B" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_32" FriendlyName="d3.sys Hash Sha1"
Hash="560D8869D48A71E59601B76240E9A6CFFB068C9C" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_33" FriendlyName="d.sys Hash Sha1"
Hash="7C1BA790CA2AA03F30413D02F3A812FCCA1AB29F" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_34" FriendlyName="b3.sys Hash Sha1"
Hash="969A945C93F54FCBF17548903131D4B86042DF7B" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_35" FriendlyName="2.sys Hash Sha1"
Hash="64309DB7AF8665368636186805745126B8BD5BFE" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_36" FriendlyName="b1.sys Hash Sha1"
Hash="1F7804D9185B1910C43BD4104D58B96994FF8E49" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_37" FriendlyName="My.sys Hash Sha1"
Hash="2A506E2512C9083419B7741B4499E012CDC60204" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_38" FriendlyName="Black.sys Hash Sha1"
Hash="1236573A309C4EDB52E050E53E73188183C23E7E" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_39" FriendlyName="WYProxy32.sys Hash
Sha1" Hash="22C5E127E7E7C567D8624607A6F8F5809DEACB55" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_40" FriendlyName="WYProxy64.sys Hash
Sha1" Hash="DC38CC55B84A1A7C0846FB5509B43B4FF97A9BE6" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_41" FriendlyName="Proxy64.sys Hash
Sha1" Hash="AA937F73A8AFCDA98E868F4AEEB0EB81A4150075" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_42" FriendlyName="LgDCatcher.sys Hash
Sha1" Hash="481488488CF7BB5CD470B62600A3570A1711ABAA" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_43" FriendlyName="LgDCatcher.sys Hash
Sha1" Hash="C58BEBEF6A92F5A5B37BE0394695E8E18A42867F" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_44" FriendlyName="LgDCatcher.sys Hash
Sha1" Hash="7AA2C4C51AFC1C82BEAE55AB9CA7BA0BB588B5C0" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_45" FriendlyName="ni.sys Hash Sha1"
Hash="FD081F7A372B939DB8523E222D118B87450D3D19" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_46" FriendlyName="d4.sys Hash Sha1"
Hash="E343AA3981393778F32DF94EFAC90FE35D6933A9" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_47" FriendlyName="d2.sys Hash Sha1"
Hash="002223FDDC5658EA22B7A8979984A9B54F63B316" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_48" FriendlyName="t.sys Hash Sha1"
Hash="1CF3B0A2A0B47477A840ADC2B520401E18AF16D6" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_49" FriendlyName="1.sys Hash Sha1"
Hash="F50B475D5FD1ED4F866BF43342676E449F779C67" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_50" FriendlyName="cpupress.sys Hash
Sha1" Hash="C4FE0CBB8DA5BF1E02EC6D7A0F97D740955DDD97" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_51" FriendlyName="gameink.sys Hash
Sha1" Hash="3AE56AB63230D6D9552360845B4A37B5801CC5EA" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_52" FriendlyName="NetFlt.sys Hash Sha1"
Hash="B04ECC8DD0D52FE4552D2C4D693D67FAE20C460F" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_53" FriendlyName="ProtectS.sys Hash
Sha1" Hash="710BBA7C3D6CAC7B62AB05E6B12274D1548985E6" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_54" FriendlyName="ProtectS.sys Hash
Sha1" Hash="67650BC9CDF0716BC7B5664723C38FC5327EC662" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_55" FriendlyName="GameTerSafe.sys Hash
Sha1" Hash="39F934078A060BAD2D58B5DBA8F8884903D697A7" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_56" FriendlyName="Lurker.sys Hash Sha1"
Hash="CEC5447D0529F97C4BF4A012EA58AAB07139FFE0" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_57" FriendlyName="TestBone.sys Hash
Sha1" Hash="0D523E8B0B96675AC2E5AC0D56C367564B260545" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_58" FriendlyName="Proxy32.sys Hash
Sha1" Hash="69D6B4032F1456506382885EBA5B396F1C36841B" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_59" FriendlyName="t7.sys Hash Sha1"
Hash="738CF0AFB7ECDF35A92667C8802D512A0CAF353C" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_60" FriendlyName="nt4.sys Hash Sha1"
Hash="EC7947AD1919C8F60BC973B96DA4132A1EA396E0" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_61" FriendlyName="t8.sys Hash Sha1"
Hash="D85C6097A2279301222B6A06B93296ACE669A76D" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_62" FriendlyName="nstr.sys Hash Sha1"
Hash="61258963D900C2A39408EF4B51F69F405F55E407" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_63" FriendlyName="nt6.sys Hash Sha1"
Hash="8403A17AE001FEF3488C2E641E2BE553CD5B478D" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_64" FriendlyName="t3.sys Hash Sha1"
Hash="0CE54B617DE11C24670064960B736EF9C47A5F15" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_65" FriendlyName="windows7-32.sys Hash
Sha1" Hash="82F8D4BA137FA4B0DA20E8CD1968A7AAEA803DBC" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_66" FriendlyName="NetProxyDriver.sys
Hash Sha1" Hash="00B4FDC0F7F28DDECD5B4E5880A71E7F08B5F825" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_67" FriendlyName="c.sys Hash Sha1"
Hash="3C20BB896FD16B5C698185FB176E820A448997B3" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_68" FriendlyName="gameink.sys Hash
Sha1" Hash="6A784D45517142C11D5CCA3FF9956B2ED6EAF4C9" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_69" FriendlyName="gameink.sys Hash
Sha1" Hash="4E5E719362CD48BB323803C1D00AFDE11D4B9D4C" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_70" FriendlyName="b.sys Hash Sha1"
Hash="FD8A340CD071BC98E6EEAC9BBD4AC8A78688BC17" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_71" FriendlyName="nt4.sys Hash Sha1"
Hash="EC7947AD1919C8F60BC973B96DA4132A1EA396E0" />
<Deny ID="ID_DENY_RETLIFTEN_SHA1_72" FriendlyName="d3.sys Hash Sha1"
Hash="560D8869D48A71E59601B76240E9A6CFFB068C9C" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_1" FriendlyName="80.sys Hash Sha256"
Hash="F08EBDDC11AEFCB46082C239F8D97CEEA247D846E22C4BCDD72AF75C1CBC6B0B" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_2" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="12A636449A491EF3DC8688C5D25BE9EBF785874F9C4573667EEFD42139201AA4" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_3" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="7F1772BDF7DD81CB00D30159D19D4EB9160B54D7609B36F781D08CA3AFBD29A7" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_4" FriendlyName="81.sys Hash Sha256"
Hash="5C206B569B7059B7C32EB5FC36922CB435C2B16C8D96DE1038C8BD298ED498FE" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_5" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="C56536F99207915E5A1F7D4F014AB942BD820E64FF7F371AD0462EF26ED27242" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_6" FriendlyName="full.sys Hash
Sha256"
Hash="0988D366572A57B3015D875B60704517D05115580678E8F2E126F771EDA28F7B" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_7" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="651FFA0C7AFF7B4A7695DDDD209DC3E7F68156E29A14D3FCC17AEF4F2A205DCC" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_8" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="7113DEE11925B346192F6EE5441974DB7D1FE9B5BE1497A6B295C06930FDD264" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_9" FriendlyName="81.sys Hash Sha256"
Hash="3D31118A2E92377ECB632BD722132C04AF4E65E24FF87743796C75EB07CFCD71" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_10" FriendlyName="nstrwsk.sys Hash
Sha256"
Hash="3390919BB28D5C36CC348F9EF23BE5FA49BFD81263EB7740826E4437CBE904CD" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_11" FriendlyName="nt2.sys Hash
Sha256"
Hash="CB9890D4E303A4C03095D7BC176C42DEE1B47D8AA58E2F442EC1514C8F9E3CEC" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_12" FriendlyName="nt3.sys Hash
Sha256"
Hash="7D8937C18D6E11A0952E53970A0934CF0E65515637AC24D6CA52CCF4B93D385F" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_13" FriendlyName="nt5.sys Hash
Sha256"
Hash="FD33FB2735CC5EF466A54807D3436622407287E325276FCD3ED1290C98BD0533" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_14" FriendlyName="81.sys Hash Sha256"
Hash="B430D3A0BDB837A5D6625D3B1CEF07ABD1953F969869FF6CF7BA398AE605431A" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_15" FriendlyName="b4.sys Hash Sha256"
Hash="DEC8A933DBA04463ED9BB7D53338FF87F2C23CFB79E0E988449FC631252C9DCC" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_16" FriendlyName="bw.sys Hash Sha256"
Hash="0EBAEF662B14410C198395B13347E1D175334EC67919709AD37D65EBA013ADFF" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_17" FriendlyName="bwrs.sys Hash
Sha256"
Hash="221DFBC74BBB255B0879360CCC71A74B756B2E0F16E9386B38A9CE9D4E2E34F9" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_18" FriendlyName="bwrsh.sys Hash
Sha256"
Hash="37DDE6BD8A7A36111C3AC57E0AC20BBB93CE3374D0852BCACC9A2C8C8C30079E" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_19" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="82774D5230C5B6604D6F67A32883F720B4695387F3F383AABC713FC2904FF45D" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_20" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="DDD83AF2E99C2E51F2BBBB5A1FAADF9F2DDBC3E39B086935621D6846A8530D76" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_21" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="E6D0C06DEB74F0448391F2C14A08D5C1B7D263DC444ACC5C1CF57ACFE82DA6BB" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_22" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="F05A1DF10900B05FB7211F3DADD15003FC91CFA28A08BCC6D7AFA02CD8AB3D5C" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_23" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="C174566743B47AE3C3BBB9F32D2856DE5959E06EC100B648853058EEFCDA43FA" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_24" FriendlyName="TGSafe.sys Hash
Sha256"
Hash="3A95CC82173032B82A0FFC7D2E438DF64C13BC16B4574214C9FE3BE37250925E" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_25" FriendlyName="BlackBoneDrv10.sys
Hash Sha256"
Hash="0BB5F2EAACD64398A66D73D4617AA0C1209D483FAFCBE99E4E12CA6C024DB2EC" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_26" FriendlyName="LgDCatcher.sys Hash
Sha256"
Hash="13B82D81D6EAC1A8B2E4655504DABECBD70673CDF45C244702A02F3397FDFF9A" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_27" FriendlyName="gameink.sys Hash
Sha256"
Hash="8168304169A2453C0C3E0A285C2A07D3B3B83433E0342F6B33400C371AF86221" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_28" FriendlyName="windows-xp-64.sys
Hash Sha256"
Hash="DFAEFD06B680F9EA837E7815FC1CC7D1F4CC375641AC850667AB20739F46AD22" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_29" FriendlyName="windows8-10-32.sys
Hash Sha256"
Hash="5B9623DA9BA8E5C80C49473F40FFE7AD315DCADFFC3230AFDC9D9226D60A715A" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_30" FriendlyName="kbdcap64.sys Hash
Sha256"
Hash="72B99147839BCFB062D29014EC09FE20A8F261748B5925B00171EF3CB849A4C1" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_31" FriendlyName="netfilterdrv.sys
Hash Sha256"
Hash="0391107305D76EB9DDF1A5B3B3C50DA361E8AB35B573DBD19BF9383436B9303E" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_32" FriendlyName="d3.sys Hash Sha256"
Hash="36875562E747136313EC5DB58174E5FAB870997A054CA8D3987D181599C7DB6A" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_33" FriendlyName="d.sys Hash Sha256"
Hash="0289FE12E675101CEE03934C1AF5CB73069A12170A88BD051E31A292B97F701B" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_34" FriendlyName="b3.sys Hash Sha256"
Hash="708016FBE22C813A251098F8F992B177B476BD1BBC48C2ED4A122FF74910A965" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_35" FriendlyName="2.sys Hash Sha256"
Hash="9385E4CDABD0AEE2670FB756598EA977161F45B71687ECB9E43533081629F661" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_36" FriendlyName="b1.sys Hash Sha256"
Hash="A3E507E713F11901017FC328186AE98E23DE7CEA5594687480229F77D45848D8" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_37" FriendlyName="My.sys Hash Sha256"
Hash="D25904FBF907E19F366D54962FF543D9F53B8FDFD2416C8B9796B6A8DD430E26" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_38" FriendlyName="Black.sys Hash
Sha256"
Hash="D5562FB90B0B3DEB633AB335BCBD82CE10953466A428B3F27CB5B226B453EAF3" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_39" FriendlyName="WYProxy32.sys Hash
Sha256"
Hash="DE6BF572D39E2611773E7A01F0388F84FB25DA6CBA2F1F8B9B36FFBA467DE6FA" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_40" FriendlyName="WYProxy64.sys Hash
Sha256"
Hash="FAFA1BB36F0AC34B762A10E9F327DCAB2152A6D0B16A19697362D49A31E7F566" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_41" FriendlyName="Proxy64.sys Hash
Sha256"
Hash="C60FCFF9C8E5243BBB22EC94618B9DCB02C59BB49B90C04D7D6AB3EBBD58DC3A" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_42" FriendlyName="LgDCatcher.sys Hash
Sha256"
Hash="BFCFFC82A564A2ADCD3522CD78CDF83795B6212F787230A5EA6B7EFB9F232784" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_43" FriendlyName="LgDCatcher.sys Hash
Sha256"
Hash="350E15BF24DCFDC052DB117718329A03E930C17AC8C835E51D001E74BAD784E4" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_44" FriendlyName="LgDCatcher.sys Hash
Sha256"
Hash="DF4E25990742FC8D3AED70F6CB4D402E111E7ED08FA5F76ACA685B8C03B98B93" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_45" FriendlyName="ni.sys Hash Sha256"
Hash="AE79E760C739D6214C1E314728A78A6CB6060CCE206FDE2440A69735D639A0A2" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_46" FriendlyName="d4.sys Hash Sha256"
Hash="823DA894B2C73FFCD39E77366B6F1ABF0AE9604D9B20140A54E6D55053AADEBA" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_47" FriendlyName="d2.sys Hash Sha256"
Hash="CB57F3A7FE9E1F8E63332C563B0A319B26C944BE839EABC03E9A3277756BA612" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_48" FriendlyName="t.sys Hash Sha256"
Hash="146D77E80CA70EA5CB17BFC9A5CEA92334F809CBDC87A51C2D10B8579A4B9C88" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_49" FriendlyName="1.sys Hash Sha256"
Hash="64F9E664BC6D4B8F5F68616DD50AE819C3E60452EFD5E589D6604B9356841B57" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_50" FriendlyName="cpupress.sys Hash
Sha256"
Hash="FCDFE570E6DC6E768EF75138033D9961F78045ADCA53BEB6FDB520F6417E0DF1" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_51" FriendlyName="gameink.sys Hash
Sha256"
Hash="E9B433A33DC72EB2622947B41F01D04A48CD71BEAC775A88F3F1E4C838090EE8" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_52" FriendlyName="NetFlt.sys Hash
Sha256"
Hash="F8886A9C759E0426E08D55E410B02C5B05AF3C287B15970175E4874316FFAF13" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_53" FriendlyName="ProtectS.sys Hash
Sha256"
Hash="9D58F640C7295952B71BDCB456CAE37213BACCDCD3032C1E3AEB54E79081F395" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_54" FriendlyName="ProtectS.sys Hash
Sha256"
Hash="4A9093E8DBCB867E1B97A0A67CE99A8511900658F5201C34FFB8035881F2DBBE" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_55" FriendlyName="GameTerSafe.sys
Hash Sha256"
Hash="3E9B62D2EA2BE50A2DA670746C4DBE807DB9601980AF3A1014BCD72D0248D84C" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_56" FriendlyName="Lurker.sys Hash
Sha256"
Hash="0FD2DF82341BF5EBB8A53682E60D08978100C01ACB0BED7B6CE2876ADA80F670" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_57" FriendlyName="TestBone.sys Hash
Sha256"
Hash="0DE4247E72D378713BCF22D5C5D3874D079203BB4364E25F67A90D5570BDCCE8" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_58" FriendlyName="Proxy32.sys Hash
Sha256"
Hash="49ED27460730B62403C1D2E4930573121AB0C86C442854BC0A62415CA445A810" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_59" FriendlyName="t7.sys Hash Sha256"
Hash="BE03E9541F56AC6ED1E81407DCD7CC85C0FFC538C3C2C2C8A9C747EDBCF13100" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_60" FriendlyName="nt4.sys Hash
Sha256"
Hash="D7BC7306CB489FE4C285BBEDDC6D1A09E814EF55CF30BD5B8DAF87A52396F102" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_61" FriendlyName="t8.sys Hash Sha256"
Hash="258359A7FA3D975620C9810DAB3A6493972876A024135FEAF3AC8482179B2E79" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_62" FriendlyName="nstr.sys Hash
Sha256"
Hash="455BC98BA32ADAB8B47D2D89BDBADCA4910F91C182AB2FC3211BA07D3784537B" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_63" FriendlyName="nt6.sys Hash
Sha256"
Hash="15C53EB3A0EA44BBD2901A45A6EBEAE29BB123F9C1115C38DFB2CDBEC0642229" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_64" FriendlyName="t3.sys Hash Sha256"
Hash="4CFF6E53430B81ECC4FAE453E59A0353BCFE73DD5780ABFC35F299C16A97998E" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_65" FriendlyName="windows7-32.sys
Hash Sha256"
Hash="4941C4298F4560FC1E59D0F16F84BAB5C060793700B82BE2FD7C63735F1657A8" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_66" FriendlyName="NetProxyDriver.sys
Hash Sha256"
Hash="8111085022BDA87E5F6AA4C195E743CC6DD6A3A6D41ADD475D267DC6B105A69F" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_67" FriendlyName="c.sys Hash Sha256"
Hash="CC383AD11E9D06047A1558ED343F389492DA3AC2B84B71462AEE502A2FA616C8" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_68" FriendlyName="gameink.sys Hash
Sha256"
Hash="E94E8A87459DB56837D1C58F9854794AA99F36566A9DED9B398BE9D4D3A2C2AF" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_69" FriendlyName="gameink.sys Hash
Sha256"
Hash="44A0599DEFEA351314663582DBC61069B3A095A4DDAD571BB17DD0D8B21E7FF2" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_70" FriendlyName="b.sys Hash Sha256"
Hash="84DF20B1D9D87E305C92E5FFAE21B10B325609D59D835A954DBD8750EF5DABF4" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_71" FriendlyName="nt4.sys Hash
Sha256"
Hash="D7BC7306CB489FE4C285BBEDDC6D1A09E814EF55CF30BD5B8DAF87A52396F102" />
<Deny ID="ID_DENY_RETLIFTEN_SHA256_72" FriendlyName="d3.sys Hash Sha256"
Hash="36875562E747136313EC5DB58174E5FAB870997A054CA8D3987D181599C7DB6A" />
<Deny ID="ID_DENY_RTCORE_29"
FriendlyName="RTCore\01aa278b07b58dc46c84bd0b1b5c8e9ee4e62ea0bf7a695862444af
32e87f1fd Hash Sha1" Hash="4A68C2D7A4C471E062A32C83A36EEDB45A619683" />
<Deny ID="ID_DENY_RTCORE_2A"
FriendlyName="RTCore\01aa278b07b58dc46c84bd0b1b5c8e9ee4e62ea0bf7a695862444af
32e87f1fd Hash Sha256"
Hash="478C36F8AF7844A80E24C1822507BEEF6314519185717EC7AE224A0E04B2F330" />
<Deny ID="ID_DENY_RTCORE_2B"
FriendlyName="RTCore\01aa278b07b58dc46c84bd0b1b5c8e9ee4e62ea0bf7a695862444af
32e87f1fd Hash Page Sha1" Hash="84152FA241C3808F8C7752964589C957E440403F" />
<Deny ID="ID_DENY_RTCORE_2C"
FriendlyName="RTCore\01aa278b07b58dc46c84bd0b1b5c8e9ee4e62ea0bf7a695862444af
32e87f1fd Hash Page Sha256"
Hash="A807532037A3549AE3E046F183D782BCB78B6193163EA448098140563CF857CB" />
<Deny ID="ID_DENY_RTCORE_2D"
FriendlyName="RTCore\077aa8ff5e01747723b6d24cc8af460a7a00f30cd3bc80e41cc245c
eb8305356 Hash Sha1" Hash="DA1BD3AD4A8FE1E28C1DE28A7BF66AD82DA0DD29" />
<Deny ID="ID_DENY_RTCORE_2E"
FriendlyName="RTCore\077aa8ff5e01747723b6d24cc8af460a7a00f30cd3bc80e41cc245c
eb8305356 Hash Sha256"
Hash="61A1F530A5D47339275657D7883911D64F64909569CF13D2E6868DF01A2A72CB" />
<Deny ID="ID_DENY_RTCORE_2F"
FriendlyName="RTCore\077aa8ff5e01747723b6d24cc8af460a7a00f30cd3bc80e41cc245c
eb8305356 Hash Page Sha1" Hash="BD2340853235FE2757829E7F899CE25BD65C5434" />
<Deny ID="ID_DENY_RTCORE_30"
FriendlyName="RTCore\077aa8ff5e01747723b6d24cc8af460a7a00f30cd3bc80e41cc245c
eb8305356 Hash Page Sha256"
Hash="74860E5563D3993635DC41E47BB34837C8B53ECBFF539244E1EC608E7B53D42D" />
<Deny ID="ID_DENY_RTCORE_31"
FriendlyName="RTCore\08828990218ebb4415c1bb33fa2b0a009efd0784b18b3f7ecd3bc07
8343f7208 Hash Sha1" Hash="38B353D8480885DE5DCF299DECA99CE4F26A1D20" />
<Deny ID="ID_DENY_RTCORE_32"
FriendlyName="RTCore\08828990218ebb4415c1bb33fa2b0a009efd0784b18b3f7ecd3bc07
8343f7208 Hash Sha256"
Hash="5182CAF10DE9CEC0740ECDE5A081C21CDC100D7EB328FFE6F3F63183889FEC6B" />
<Deny ID="ID_DENY_RTCORE_33"
FriendlyName="RTCore\08828990218ebb4415c1bb33fa2b0a009efd0784b18b3f7ecd3bc07
8343f7208 Hash Page Sha1" Hash="1A4F647C27D093675A674E5A8D83063A83231D28" />
<Deny ID="ID_DENY_RTCORE_34"
FriendlyName="RTCore\08828990218ebb4415c1bb33fa2b0a009efd0784b18b3f7ecd3bc07
8343f7208 Hash Page Sha256"
Hash="46D4A0CE75FA97837C7B6869D29AF9D6068F9023346E9D34C0E26E41198CDB80" />
<Deny ID="ID_DENY_RTCORE_35"
FriendlyName="RTCore\0aca4447ee54d635f76b941f6100b829dc8b2e0df27bdf584acb90f
15f12fbda Hash Sha1" Hash="5717BF3E520ACCFFF5AD9943E53A3B118FB67F2E" />
<Deny ID="ID_DENY_RTCORE_36"
FriendlyName="RTCore\0aca4447ee54d635f76b941f6100b829dc8b2e0df27bdf584acb90f
15f12fbda Hash Sha256"
Hash="918D2E68A724B58D37443AEA159E70BF8B1B5EBB089C395CAD1D62745ECDAA19" />
<Deny ID="ID_DENY_RTCORE_37"
FriendlyName="RTCore\0aca4447ee54d635f76b941f6100b829dc8b2e0df27bdf584acb90f
15f12fbda Hash Page Sha1" Hash="03E1FB2499B9361141E2AC4FCCB9CCE2A48A0342" />
<Deny ID="ID_DENY_RTCORE_38"
FriendlyName="RTCore\0aca4447ee54d635f76b941f6100b829dc8b2e0df27bdf584acb90f
15f12fbda Hash Page Sha256"
Hash="556B8ACD6EFF7D5A2A0320CD22CAD122254ABDEDCBBD749DB14CD8D314D609BE" />
<Deny ID="ID_DENY_RTCORE_39"
FriendlyName="RTCore\1c425793a8ce87be916969d6d7e9dd0687b181565c3b483ce53ad1e
c6fb72a17 Hash Sha1" Hash="43D3A3C1F7B14CFCC051CAE2534DBBBB4C7FC120" />
<Deny ID="ID_DENY_RTCORE_3A"
FriendlyName="RTCore\1c425793a8ce87be916969d6d7e9dd0687b181565c3b483ce53ad1e
c6fb72a17 Hash Sha256"
Hash="B8EB26B6F79020AE988E4FB752DC06E1B6779749BF4F8DF2872FC2B92BAB8020" />
<Deny ID="ID_DENY_RTCORE_3B"
FriendlyName="RTCore\1c425793a8ce87be916969d6d7e9dd0687b181565c3b483ce53ad1e
c6fb72a17 Hash Page Sha1" Hash="6AE84C64765F9271C4758D387AD1E07B64F7966D" />
<Deny ID="ID_DENY_RTCORE_3C"
FriendlyName="RTCore\1c425793a8ce87be916969d6d7e9dd0687b181565c3b483ce53ad1e
c6fb72a17 Hash Page Sha256"
Hash="AA60FC20276D6779BBEA2A629C2FBAA3CE60ED2C2AD26230101FFF01A6E79A24" />
<Deny ID="ID_DENY_RTCORE_3D"
FriendlyName="RTCore\3ff50c67d51553c08dcb7c98342f68a0f54ad6658c5346c428bdcd1
f185569f6 Hash Sha1" Hash="B3249BACDA6E43AA2C46C2AF802C9EE0B7E2FD7B" />
<Deny ID="ID_DENY_RTCORE_3E"
FriendlyName="RTCore\3ff50c67d51553c08dcb7c98342f68a0f54ad6658c5346c428bdcd1
f185569f6 Hash Sha256"
Hash="3C9829A16EB85272B0E1A2917FEFFAAB8DDB23E633B168B389669339A0CEE0B5" />
<Deny ID="ID_DENY_RTCORE_3F"
FriendlyName="RTCore\3ff50c67d51553c08dcb7c98342f68a0f54ad6658c5346c428bdcd1
f185569f6 Hash Page Sha1" Hash="060C4D64F67F9300F2DBD09F68B4B591AAAFA698" />
<Deny ID="ID_DENY_RTCORE_40"
FriendlyName="RTCore\3ff50c67d51553c08dcb7c98342f68a0f54ad6658c5346c428bdcd1
f185569f6 Hash Page Sha256"
Hash="BF0439DB3DCC00355291FEFF1D31F5B48CD1334DBBA3DAEB761E7084335D40E7" />
<Deny ID="ID_DENY_RTCORE_41"
FriendlyName="RTCore\40061b30b1243be76d5283cbc8abfe007e148097d4de7337670ff15
36c4c7ba1 Hash Sha1" Hash="8498265D4CA81B83EC1454D9EC013D7A9C0C87BF" />
<Deny ID="ID_DENY_RTCORE_42"
FriendlyName="RTCore\40061b30b1243be76d5283cbc8abfe007e148097d4de7337670ff15
36c4c7ba1 Hash Sha256"
Hash="606BECED7746CDB684D3A44F41E48713C6BBE5BFB1486C52B5CCA815E99D31B4" />
<Deny ID="ID_DENY_RTCORE_43"
FriendlyName="RTCore\40061b30b1243be76d5283cbc8abfe007e148097d4de7337670ff15
36c4c7ba1 Hash Page Sha1" Hash="3B05785D8AD770E4356BC8041606B08BDAB56C99" />
<Deny ID="ID_DENY_RTCORE_44"
FriendlyName="RTCore\40061b30b1243be76d5283cbc8abfe007e148097d4de7337670ff15
36c4c7ba1 Hash Page Sha256"
Hash="2DC771BED765E9FE8E79171A851BA158B8E84034FE0518A619F47F3450FFA2BC" />
<Deny ID="ID_DENY_RTCORE_45"
FriendlyName="RTCore\bea8c6728d57d4b075f372ac82b8134ac8044fe13f533696a58e886
4fa3efee3 Hash Sha1" Hash="A7CE1394D10DCFDE7B8A1C90667826DA68933673" />
<Deny ID="ID_DENY_RTCORE_46"
FriendlyName="RTCore\bea8c6728d57d4b075f372ac82b8134ac8044fe13f533696a58e886
4fa3efee3 Hash Sha256"
Hash="6279821BF9ECCED596F474C8FC547DAB0BDDBB3AB972390596BD4C5C7B85C685" />
<Deny ID="ID_DENY_RTCORE_47"
FriendlyName="RTCore\bea8c6728d57d4b075f372ac82b8134ac8044fe13f533696a58e886
4fa3efee3 Hash Page Sha1" Hash="9E504DB591D321F1F8CEA62A5A111DA0EFB26447" />
<Deny ID="ID_DENY_RTCORE_48"
FriendlyName="RTCore\bea8c6728d57d4b075f372ac82b8134ac8044fe13f533696a58e886
4fa3efee3 Hash Page Sha256"
Hash="BEDC7276543DAAFC11D44F5F603F8AA48C61837F7C4C9446F10FA522F3275D17" />
<Deny ID="ID_DENY_SEMAV6MSR64_SHA1" FriendlyName="semav6msr64.sys Hash
Sha1" Hash="E3DBE2AA03847DF621591A4CAD69A5609DE5C237" />
<Deny ID="ID_DENY_SEMAV6MSR64_SHA256" FriendlyName="semav6msr64.sys Hash
Sha256"
Hash="EB71A8ECEF692E74AE356E8CB734029B233185EE5C2CCB6CC87CC6B36BEA65CF" />
<Deny ID="ID_DENY_SEMAV6MSR64_SHA1_PAGE" FriendlyName="semav6msr64.sys
Hash Page Sha1" Hash="F3821EC0AEF270F749DF9F44FBA91AFA5C8C38E8" />
<Deny ID="ID_DENY_SEMAV6MSR64_SHA256_PAGE" FriendlyName="semav6msr64.sys
Hash Page Sha256"
Hash="4F12EE563E7496E7105D67BF64AF6B436902BE4332033AF0B5A242B206372CB7" />
<Deny ID="ID_DENY_SUPERBMC_2"
FriendlyName="superbmc.sys\1d804efc9a1a012e1f68288c0a2833b13d00eecd4a6e93258
ba100aa07e3406f Hash Sha1" Hash="989BDDC6B7076947277AB6EB7F002AB6731AAEAE"
/>
<Deny ID="ID_DENY_SUPERBMC_3"
FriendlyName="superbmc.sys\1d804efc9a1a012e1f68288c0a2833b13d00eecd4a6e93258
ba100aa07e3406f Hash Sha256"
Hash="5147B0F2CA9D0BDE1F9FCEB382C05F7FA9C333709D7BF081D6C00A4132D914AF" />
<Deny ID="ID_DENY_SUPERBMC_4"
FriendlyName="superbmc.sys\1d804efc9a1a012e1f68288c0a2833b13d00eecd4a6e93258
ba100aa07e3406f Hash Page Sha1"
Hash="4378B656A1C94CD885323B6D6E36038E8522E6CC" />
<Deny ID="ID_DENY_SUPERBMC_5"
FriendlyName="superbmc.sys\1d804efc9a1a012e1f68288c0a2833b13d00eecd4a6e93258
ba100aa07e3406f Hash Page Sha256"
Hash="034DB61D844ADA030BB9173F4B7448DD6CC355B4429266F5ABBA6AFDB481128B" />
<Deny ID="ID_DENY_SUPERBMC_6"
FriendlyName="superbmc.sys\1deae340bf619319adce00701de887f7434deab4d5547a174
2aeedb5634d23c6 Hash Sha1" Hash="AF3908C5DCB18E82A749AD06B82D2AEC3C2542AF"
/>
<Deny ID="ID_DENY_SUPERBMC_7"
FriendlyName="superbmc.sys\1deae340bf619319adce00701de887f7434deab4d5547a174
2aeedb5634d23c6 Hash Sha256"
Hash="85C5E66F38152D17D5B580126B3348579263BBC8FD22E5417C0090FD75A330AC" />
<Deny ID="ID_DENY_SUPERBMC_8"
FriendlyName="superbmc.sys\1deae340bf619319adce00701de887f7434deab4d5547a174
2aeedb5634d23c6 Hash Page Sha1"
Hash="ECDEED85F0046EC45B50E253B010DDDFDF7B4210" />
<Deny ID="ID_DENY_SUPERBMC_9"
FriendlyName="superbmc.sys\1deae340bf619319adce00701de887f7434deab4d5547a174
2aeedb5634d23c6 Hash Page Sha256"
Hash="53784E616D77F2CD75EDF0DBEA9E20795E5E9BC8499D5F71C3792AA937857D7A" />
<Deny ID="ID_DENY_SUPERBMC_A"
FriendlyName="superbmc.sys\326b53365f8486c78608139cac84619eff90be361f7ade9db
70f9867dd94dcc9 Hash Sha1" Hash="B73248A34FBAB95C9D4A1CF944CDC69B3F5E4995"
/>
<Deny ID="ID_DENY_SUPERBMC_B"
FriendlyName="superbmc.sys\326b53365f8486c78608139cac84619eff90be361f7ade9db
70f9867dd94dcc9 Hash Sha256"
Hash="22AFEE6F0EC783D59EF4F5D6C189B78FA26302F0ED09670B7BBC9BAE26BDB0E5" />
<Deny ID="ID_DENY_SUPERBMC_C"
FriendlyName="superbmc.sys\326b53365f8486c78608139cac84619eff90be361f7ade9db
70f9867dd94dcc9 Hash Page Sha1"
Hash="D3149002B0072DFB0ACDC28E34B8DE5EEC6F0C68" />
<Deny ID="ID_DENY_SUPERBMC_D"
FriendlyName="superbmc.sys\326b53365f8486c78608139cac84619eff90be361f7ade9db
70f9867dd94dcc9 Hash Page Sha256"
Hash="24D3142C62692D04B485778810369EDB17804E38DF9791D44345A80DA6D83611" />
<Deny ID="ID_DENY_SUPERBMC_E"
FriendlyName="superbmc.sys\a6f8aa3de5b4aea58eddd45807d722c864d4bc4a38ad57317
4af864e21f0d526 Hash Sha1" Hash="93018A3B82781979DD4759DADF5A4EC91DA86722"
/>
<Deny ID="ID_DENY_SUPERBMC_F"
FriendlyName="superbmc.sys\a6f8aa3de5b4aea58eddd45807d722c864d4bc4a38ad57317
4af864e21f0d526 Hash Sha256"
Hash="8CEF918675DFAEB50CACD36B9C06871FD05E9FFEA7ADDF98A396FAE131ABE30A" />
<Deny ID="ID_DENY_SUPERBMC_10"
FriendlyName="superbmc.sys\c9c60f560440ff16ad3c767ff5b7658d5bda61ea1166efe9b
7f450447557136e Hash Sha1" Hash="CDC476003A1310AA02271260CC9EB7BA07FF60CB"
/>
<Deny ID="ID_DENY_SUPERBMC_11"
FriendlyName="superbmc.sys\c9c60f560440ff16ad3c767ff5b7658d5bda61ea1166efe9b
7f450447557136e Hash Sha256"
Hash="2645298D84585FA987450AA11687B73739CBBC26ABAA8125099CAE5889BEB211" />
<Deny ID="ID_DENY_SUPERBMC_12"
FriendlyName="superbmc.sys\c9c60f560440ff16ad3c767ff5b7658d5bda61ea1166efe9b
7f450447557136e Hash Page Sha1"
Hash="53D29F61F890CE4576950E8B600420302BBB1A6A" />
<Deny ID="ID_DENY_SUPERBMC_13"
FriendlyName="superbmc.sys\c9c60f560440ff16ad3c767ff5b7658d5bda61ea1166efe9b
7f450447557136e Hash Page Sha256"
Hash="898EF622B286EE6E3A30644C073D5E09E33F1762C9B7AC458D2A5A5CC7CFEBE1" />
<Deny ID="ID_DENY_SUPERBMC_14"
FriendlyName="superbmc.sys\ee6bfdf5748fbbf579d6176026626ef39a0673e307c2029f5
633e80f0babef54 Hash Sha1" Hash="9A9A788B3E94272C74D1D6C2451491BB40277D04"
/>
<Deny ID="ID_DENY_SUPERBMC_15"
FriendlyName="superbmc.sys\ee6bfdf5748fbbf579d6176026626ef39a0673e307c2029f5
633e80f0babef54 Hash Sha256"
Hash="976C015B28197CCD15F807B776F705BDF612FC622FB0A4B9901B90F180BF2F8A" />
<Deny ID="ID_DENY_SUPERBMC_16"
FriendlyName="superbmc.sys\ee6bfdf5748fbbf579d6176026626ef39a0673e307c2029f5
633e80f0babef54 Hash Page Sha1"
Hash="2303BEAB201455CC543E0CCE9D4D8698338787EB" />
<Deny ID="ID_DENY_SUPERBMC_17"
FriendlyName="superbmc.sys\ee6bfdf5748fbbf579d6176026626ef39a0673e307c2029f5
633e80f0babef54 Hash Page Sha256"
Hash="161DC4F7ED741397F6BD6C2B012DBDF6E397CF02212C7DAAF303338206B1E3A7" />
<Deny ID="ID_DENY_SYSDRV3S_1" FriendlyName="CodeSys
SysDrv3S\0dd9daf0852a5b1b436199e9f2bf318f641f43173ab0dc22ad8c7e9cbaee9ad3
Hash Sha1" Hash="3AA0ABAF4EA1F90D1B5D2F26ABE7FE9F0BB14A76" />
<Deny ID="ID_DENY_SYSDRV3S_2" FriendlyName="CodeSys
SysDrv3S\0dd9daf0852a5b1b436199e9f2bf318f641f43173ab0dc22ad8c7e9cbaee9ad3
Hash Sha256"
Hash="8A4E6D1A5E0309EAD41B11CEB479C6A874CF6E57F2B416C12025E1B485009F37" />
<Deny ID="ID_DENY_SYSDRV3S_3" FriendlyName="CodeSys
SysDrv3S\0dd9daf0852a5b1b436199e9f2bf318f641f43173ab0dc22ad8c7e9cbaee9ad3
Hash Page Sha1" Hash="F4C12BA9B5B73C159EB920060B8E4CEE9D729187" />
<Deny ID="ID_DENY_SYSDRV3S_4" FriendlyName="CodeSys
SysDrv3S\0dd9daf0852a5b1b436199e9f2bf318f641f43173ab0dc22ad8c7e9cbaee9ad3
Hash Page Sha256"
Hash="841C8C6B5D9779B98FB3DB2B90695469FED42885E8F5A81983F35C6B470CCC8F" />
<Deny ID="ID_DENY_SYSDRV3S_5" FriendlyName="CodeSys
SysDrv3S\161a50482380727ffa0dd94e193a023f4445dddd3a05340fe2db07fc3ec5b5f3
Hash Sha1" Hash="80D203BB42A5D58D87C82481238BFF1A01ECAC6D" />
<Deny ID="ID_DENY_SYSDRV3S_6" FriendlyName="CodeSys
SysDrv3S\161a50482380727ffa0dd94e193a023f4445dddd3a05340fe2db07fc3ec5b5f3
Hash Sha256"
Hash="7A15788A9942659E061E0A51F806E564B2A49ADB7BCB8F6A3548EDD4528426A0" />
<Deny ID="ID_DENY_SYSDRV3S_7" FriendlyName="CodeSys
SysDrv3S\161a50482380727ffa0dd94e193a023f4445dddd3a05340fe2db07fc3ec5b5f3
Hash Page Sha1" Hash="B1723ED6AD1808E932C3040B5F4744BB9C85DD9F" />
<Deny ID="ID_DENY_SYSDRV3S_8" FriendlyName="CodeSys
SysDrv3S\161a50482380727ffa0dd94e193a023f4445dddd3a05340fe2db07fc3ec5b5f3
Hash Page Sha256"
Hash="20D30D12CAF158058ECDED6BE4282838CA1E328F777DE67D62681891B58E0A13" />
<Deny ID="ID_DENY_SYSDRV3S_9" FriendlyName="CodeSys
SysDrv3S\cf4efec43474c5aacf4b0971d44eaf8dd6357e594cdb1390085a5070a0df51d4
Hash Sha1" Hash="43D91E7B7B2E65263E40FC2E29F517552A1D2C41" />
<Deny ID="ID_DENY_SYSDRV3S_A" FriendlyName="CodeSys
SysDrv3S\cf4efec43474c5aacf4b0971d44eaf8dd6357e594cdb1390085a5070a0df51d4
Hash Sha256"
Hash="327DD7D2115ED486AD66181E3A0C86AD64F41A6D28943D3E76B1BDE937EAB628" />
<Deny ID="ID_DENY_SYSDRV3S_B" FriendlyName="CodeSys
SysDrv3S\cf4efec43474c5aacf4b0971d44eaf8dd6357e594cdb1390085a5070a0df51d4
Hash Page Sha1" Hash="1A38DD65ED3E011409F6146ECD6C513E4312D409" />
<Deny ID="ID_DENY_SYSDRV3S_C" FriendlyName="CodeSys
SysDrv3S\cf4efec43474c5aacf4b0971d44eaf8dd6357e594cdb1390085a5070a0df51d4
Hash Page Sha256"
Hash="65D44B0B174524208204C1BCD08A9628B851FB49E22719FF0BA9C05473CCC273" />
<Deny ID="ID_DENY_SYSINFO_1" FriendlyName="Noriyuki Miyazaki
SysInfo\4fea15aabc4fc63a3e991412caf17283bbd257172ef7e255f40f5e22e0286902
Hash Sha1" Hash="E833F4E364DC5EFBABF1570DA86D1FA3E55804A7" />
<Deny ID="ID_DENY_SYSINFO_2" FriendlyName="Noriyuki Miyazaki
SysInfo\4fea15aabc4fc63a3e991412caf17283bbd257172ef7e255f40f5e22e0286902
Hash Sha256"
Hash="0122CDCF450F03B95B04560F77C2BB4643F379FBD903B07EA1300F9B974D32A3" />
<Deny ID="ID_DENY_SYSINFO_3" FriendlyName="Noriyuki Miyazaki
SysInfo\7049f3c939efe76a5556c2a2c04386db51daf61d56b679f4868bb0983c996ebb
Hash Sha1" Hash="CA88F321631C1552E3E0BCD1F26AD3435CC9F1AE" />
<Deny ID="ID_DENY_SYSINFO_4" FriendlyName="Noriyuki Miyazaki
SysInfo\7049f3c939efe76a5556c2a2c04386db51daf61d56b679f4868bb0983c996ebb
Hash Sha256"
Hash="A82D08EF67BDFCCF0A2CF6D507C9FBB6AC42BD74BF2ADE46EC07FE253DEB6573" />
<Deny ID="ID_DENY_SYSINFO_5" FriendlyName="Noriyuki Miyazaki
SysInfo\7049f3c939efe76a5556c2a2c04386db51daf61d56b679f4868bb0983c996ebb
Hash Page Sha1" Hash="3131729221F49ADBC0ED9FC3529F0AC915CBEFA9" />
<Deny ID="ID_DENY_SYSINFO_6" FriendlyName="Noriyuki Miyazaki
SysInfo\7049f3c939efe76a5556c2a2c04386db51daf61d56b679f4868bb0983c996ebb
Hash Page Sha256"
Hash="954CCDEAB26CE6555FCD780AD646620DE11F32F2E8347E12C6C95CF6C14DF6CC" />
<Deny ID="ID_DENY_SYSINFO_7" FriendlyName="Noriyuki Miyazaki
SysInfo\b85e9b69ad23bfb37452fe0b67dfa71e5980a8e4310b021bc6f8c36f893bc625
Hash Sha1" Hash="D6E675670E57B3758C1D9F04F51F0C0C46956805" />
<Deny ID="ID_DENY_SYSINFO_8" FriendlyName="Noriyuki Miyazaki
SysInfo\b85e9b69ad23bfb37452fe0b67dfa71e5980a8e4310b021bc6f8c36f893bc625
Hash Sha256"
Hash="6EE124F31A765CDBBB27831B8F3297F844A5F375E408A5953693B2E65F20165B" />
<Deny ID="ID_DENY_WINIO_1" FriendlyName="PartnerTech
WinIo64A.sys\0c74d09da7baf7c05360346e4c3512d0cd433d59 Hash Sha1"
Hash="0C74D09DA7BAF7C05360346E4C3512D0CD433D59" />
<Deny ID="ID_DENY_WINIO_2" FriendlyName="PartnerTech
WinIo64B.sys\f18e669127c041431cde8f2d03b15cfc20696056 Hash Sha1"
Hash="F18E669127C041431CDE8F2D03B15CFC20696056" />
<Deny ID="ID_DENY_WINIO_3" FriendlyName="PartnerTech
WinIO32B.sys\f1c8c3926d0370459a1b7f0cf3d17b22ff9d0c7f Hash Sha1"
Hash="F1C8C3926D0370459A1B7F0CF3D17B22FF9D0C7F" />
<Deny ID="ID_DENY_WINIO_4" FriendlyName="PartnerTech
WinIO32A.sys\01779ee53f999464465ed690d823d160f73f10e7 Hash Sha1"
Hash="01779EE53F999464465ED690D823D160F73F10E7" />
<Deny ID="ID_DENY_WINIO_5" FriendlyName="PartnerTech
WinIo64C.sys\b242b0332b9c9e8e17ec27ef10d75503d20d97b6 Hash Sha1"
Hash="B242B0332B9C9E8E17EC27EF10D75503D20D97B6" />
<Deny ID="ID_DENY_WINIO_6" FriendlyName="PartnerTech
WinIO64C.sys\a65fabaf64aa1934314aae23f25cdf215cbaa4b6 Hash Sha1"
Hash="A65FABAF64AA1934314AAE23F25CDF215CBAA4B6" />
<Deny ID="ID_DENY_WINIO_7" FriendlyName="PartnerTech
WinIO\3243aab18e273a9b9c4280a57aecef278e10bfff19abb260d7a7820e41739099 Hash
Sha1" Hash="40CC2318FFFFD458023C8CD1E285A5AD51ADF538" />
<Deny ID="ID_DENY_WINIO_8" FriendlyName="PartnerTech
WinIO\3243aab18e273a9b9c4280a57aecef278e10bfff19abb260d7a7820e41739099 Hash
Sha256"
Hash="B3CBB2B364A494F096E68DC48CCA89799ED27E6B97B17633036E363A98FD4421" />
<Deny ID="ID_DENY_WINIO_9" FriendlyName="PartnerTech
WinIO\3243aab18e273a9b9c4280a57aecef278e10bfff19abb260d7a7820e41739099 Hash
Page Sha1" Hash="2C68648ABBCCA6420CA2FFB2AAAD16F7EF68BD9D" />
<Deny ID="ID_DENY_WINIO_10" FriendlyName="PartnerTech
WinIO\3243aab18e273a9b9c4280a57aecef278e10bfff19abb260d7a7820e41739099 Hash
Page Sha256"
Hash="6100C1247235D8DBC92ACA2E70F714E57B7793FD8B674394FA35580403E92ED5" />
<Deny ID="ID_DENY_WINIO_11" FriendlyName="PartnerTech
WinIO\3c9b6da610e409f92f4f95f6f3f92a6e60e24903298a0e9af508f28e8c8962b6 Hash
Sha1" Hash="8FB149FC476CF5BF18DC575334EDAD7CAF210996" />
<Deny ID="ID_DENY_WINIO_12" FriendlyName="PartnerTech
WinIO\3c9b6da610e409f92f4f95f6f3f92a6e60e24903298a0e9af508f28e8c8962b6 Hash
Sha256"
Hash="40A8FD2D1DE93611AC88F29352476FBE0C2607B1D973DAB8923FF0811F92F659" />
<Deny ID="ID_DENY_WINIO_13" FriendlyName="PartnerTech
WinIO\3c9b6da610e409f92f4f95f6f3f92a6e60e24903298a0e9af508f28e8c8962b6 Hash
Page Sha1" Hash="499B2E14CF3EBDC070364DDA7E911E697F331617" />
<Deny ID="ID_DENY_WINIO_14" FriendlyName="PartnerTech
WinIO\3c9b6da610e409f92f4f95f6f3f92a6e60e24903298a0e9af508f28e8c8962b6 Hash
Page Sha256"
Hash="570ED09D3E177FC64B3DBCC1F30880390CBE9D81EBC001AF80289DFA0F310CCF" />
<Deny ID="ID_DENY_WINIO_15" FriendlyName="PartnerTech
WinIO\51e280cd9d1d84d43fab4a7be894804f24a1ca4d39f1df16fd8c60ea0a43b786 Hash
Sha1" Hash="CC993C45125ED6917226511978DC6675B9E8BBD6" />
<Deny ID="ID_DENY_WINIO_16" FriendlyName="PartnerTech
WinIO\51e280cd9d1d84d43fab4a7be894804f24a1ca4d39f1df16fd8c60ea0a43b786 Hash
Sha256"
Hash="2BABEC61087FA6A5A56D2D32C4C5B5BCE57B2337989E7B29E6E68651375D54A0" />
<Deny ID="ID_DENY_WINIO_17" FriendlyName="PartnerTech
WinIO\51e280cd9d1d84d43fab4a7be894804f24a1ca4d39f1df16fd8c60ea0a43b786 Hash
Page Sha1" Hash="46DB3BB27A5FF81ADABCD894CA1D18749854C7E7" />
<Deny ID="ID_DENY_WINIO_18" FriendlyName="PartnerTech
WinIO\51e280cd9d1d84d43fab4a7be894804f24a1ca4d39f1df16fd8c60ea0a43b786 Hash
Page Sha256"
Hash="E25A654EDB45939F8E5DA3478A28207CDB05B2680519384A3386353A9553AE28" />
<Deny ID="ID_DENY_WINIO_19" FriendlyName="PartnerTech
WinIO\752565bab29cd2c63b4ff59a8c637bed02c2689781067ddf7cfc5c5221eb1d68 Hash
Sha1" Hash="B02CE0386B5753C74DD3519967C5B67F07C024FF" />
<Deny ID="ID_DENY_WINIO_20" FriendlyName="PartnerTech
WinIO\752565bab29cd2c63b4ff59a8c637bed02c2689781067ddf7cfc5c5221eb1d68 Hash
Sha256"
Hash="67B31C23313DB5920EEC365049927ABE826C3C529B29114BF8D05F71F4CBCC7E" />
<Deny ID="ID_DENY_WINIO_21" FriendlyName="PartnerTech
WinIO\752565bab29cd2c63b4ff59a8c637bed02c2689781067ddf7cfc5c5221eb1d68 Hash
Page Sha1" Hash="7097A32B166DF975810F5115D940BCDB20CF4F08" />
<Deny ID="ID_DENY_WINIO_22" FriendlyName="PartnerTech
WinIO\752565bab29cd2c63b4ff59a8c637bed02c2689781067ddf7cfc5c5221eb1d68 Hash
Page Sha256"
Hash="2B2C30493A4ADBF07FF05DC32BA7503AD718836B4D08B93DF85416C8F8064159" />
<Deny ID="ID_DENY_WINIO_23" FriendlyName="PartnerTech
WinIO\7cfa5e10dff8a99a5d544b011f676bc383991274c693e21e3af40cf6982adb8c Hash
Sha1" Hash="80CA9C9CCE4B5E6AFB92A56B5BFD954ECA0FF690" />
<Deny ID="ID_DENY_WINIO_24" FriendlyName="PartnerTech
WinIO\7cfa5e10dff8a99a5d544b011f676bc383991274c693e21e3af40cf6982adb8c Hash
Sha256"
Hash="9199979B9F3EA2108299D028373A6EFFCC41C81A46EECB430CC6653211D2913D" />
<Deny ID="ID_DENY_WINIO_25" FriendlyName="PartnerTech
WinIO\7cfa5e10dff8a99a5d544b011f676bc383991274c693e21e3af40cf6982adb8c Hash
Page Sha1" Hash="2F0B56687B6ABB6A88928D0E1D4515B29C4B0D26" />
<Deny ID="ID_DENY_WINIO_26" FriendlyName="PartnerTech
WinIO\7cfa5e10dff8a99a5d544b011f676bc383991274c693e21e3af40cf6982adb8c Hash
Page Sha256"
Hash="D1E90D9FEC3A58C6BAA9841721372377BF36994D77A9796BD29B32E97D560F98" />
<Deny ID="ID_DENY_WINIO_27" FriendlyName="PartnerTech
WinIO\c9b49b52b493b53cd49c12c3fa9553e57c5394555b64e32d1208f5b96a5b8c6e Hash
Sha1" Hash="C21043466942961203E751C9CEBCD159E661FA1A" />
<Deny ID="ID_DENY_WINIO_28" FriendlyName="PartnerTech
WinIO\c9b49b52b493b53cd49c12c3fa9553e57c5394555b64e32d1208f5b96a5b8c6e Hash
Sha256"
Hash="961012D06EEAABD9EFF9B36173E566BF148A5C8F743F3329C70D8918EBA26093" />
<Deny ID="ID_DENY_WINIO_29" FriendlyName="PartnerTech
WinIO\c9b49b52b493b53cd49c12c3fa9553e57c5394555b64e32d1208f5b96a5b8c6e Hash
Page Sha1" Hash="3F0F7100E95E977E4AE56C36169980D7AB3399B9" />
<Deny ID="ID_DENY_WINIO_30" FriendlyName="PartnerTech
WinIO\c9b49b52b493b53cd49c12c3fa9553e57c5394555b64e32d1208f5b96a5b8c6e Hash
Page Sha256"
Hash="76EA02A9E0406A3786E39BC11715A7026AB0F18D1C92152780040E94E0F1FED6" />
<Deny ID="ID_DENY_WINIO_31" FriendlyName="PartnerTech
WinIO\dc2b92f59fd8d059a58cc0761212f788d7041f708f4bd717d1738de909b4f781 Hash
Sha1" Hash="8E93E37A72A13DAC1C4C0BC1DA6BDFB8BA8D9CB3" />
<Deny ID="ID_DENY_WINIO_32" FriendlyName="PartnerTech
WinIO\dc2b92f59fd8d059a58cc0761212f788d7041f708f4bd717d1738de909b4f781 Hash
Sha256"
Hash="5B6C10E103D42B17E5DDD6BEEC295BBF51CE56547134CE8D675A008A8243F615" />
<Deny ID="ID_DENY_WINIO_33" FriendlyName="PartnerTech
WinIO\dc2b92f59fd8d059a58cc0761212f788d7041f708f4bd717d1738de909b4f781 Hash
Page Sha1" Hash="746414A878978FA039A6521F392167913CEA7C8D" />
<Deny ID="ID_DENY_WINIO_34" FriendlyName="PartnerTech
WinIO\dc2b92f59fd8d059a58cc0761212f788d7041f708f4bd717d1738de909b4f781 Hash
Page Sha256"
Hash="45DFA3B42C2789A741C5F29862A8CFC5998D889F96C5783C1A27AC03DE1A407A" />
<Deny ID="ID_DENY_WINRING0_SHA1" FriendlyName="WinRing0.sys Hash Sha1"
Hash="12EB825418A932B1E4C6697DC7647E89AE52CF3F" />
<Deny ID="ID_DENY_WINRING0_SHA256" FriendlyName="WinRing0.sys Hash
Sha256"
Hash="4582ADB2E67EEBAFF755AE740C1F24BC3AF78E0F28E8E8DECB99F86BF155AB23" />
<Deny ID="ID_DENY_WINRING0_SHA1_PAGE" FriendlyName="WinRing0.sys Hash
Page Sha1" Hash="497AFEB0D5B97D4B863704A2F77FFEF31220402D" />
<Deny ID="ID_DENY_WINRING0_SHA256_PAGE" FriendlyName="WinRing0.sys Hash
Page Sha256"
Hash="8D8A5696BDF11D2427016F91F9726AFF4F0C80FADBC3E6033662FA11C8B282BD" />
<!-- Deny and FileAttrib rules specifying FileName should always specify
MinimumFileVersion and MaximumFileVersion. SiPolicy checks matches minVer <=
ver && maxVer >= ver-->
<Deny ID="ID_DENY_PROCESSHACKER" FriendlyName="kprocesshacker.sys
FileRule" FileName="kprocesshacker.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="3.1.65535.65535" />
<Deny ID="ID_DENY_AMP" FriendlyName="System Mechanic CVE-2018-5701"
FileName="amp.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="5.4.11.1" />
<Deny ID="ID_DENY_ASMMAP" FriendlyName="Asus Memory Mapping Driver"
FileName="asmmap.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<Deny ID="ID_DENY_ASMMAP_64" FriendlyName="Asus Memory Mapping Driver"
FileName="asmmap64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<Deny ID="ID_DENY_DBK_32" FriendlyName="Cheat Engine Driver"
FileName="dbk32.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<Deny ID="ID_DENY_DBK_64" FriendlyName="Cheat Engine Driver"
FileName="dbk64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<Deny ID="ID_DENY_GDRV" FriendlyName="gdrv.sys" FileName="gdrv.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="65535.65535.65535.65535"/>
<Deny ID="ID_DENY_KLMD" FriendlyName="Kaspersky klmd.sys FileRule"
FileName="klmd.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="2.13.0.10"/>
<Deny ID="ID_DENY_PCHUNTER_1" FriendlyName="PCHunter Driver"
FileName="PCHunter.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<Deny ID="ID_DENY_PCHUNTER_2" FriendlyName="PCHunter Driver"
FileName="安全专用" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<Deny ID="ID_DENY_PHYMEMX_64" FriendlyName="Phymemx64 Memory Mapping
Driver" FileName="phymemx64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_ALSYSIO"
FriendlyName="ALSysIO\01af9b2e49907308312be623a125a4cd71da9e626a54dfa746336e
5d69c0a70a FileAttribute" FileName="ALSysIO.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="2.0.10.65535" />
<FileAttrib ID="ID_FILEATTRIB_AMD_RYZEN"
FriendlyName="amdryzenmaster.sys" FileName="AMDRyzenMasterDriver.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="1.5.0.0" />
<FileAttrib ID="ID_FILEATTRIB_AMDPP" FriendlyName="AMDPowerProfiler.sys
FileAttribute" FileName="AMDPowerProfiler.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="6.1.0.0" />
<FileAttrib ID="ID_FILEATTRIB_ASR_AUTOCHECK_1"
FriendlyName="ASRAutoCheck\2aa1b08f47fbb1e2bd2e4a492f5d616968e703e1359a921f6
2b38b8e4662f0c4 FileAttribute" FileName="AsrAutoChkUpdDrv.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_ASR_AUTOCHECK_2"
FriendlyName="ASRAutoCheck\4ae42c1f11a98dee07a0d7199f611699511f1fb95120fabc4
c3c349c485467fe FileAttribute" FileName="AsrAutoChkUpdDrv_1_0_32.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_ASWARPOT" FriendlyName="Avast aswArpot
FileAttribute" FileName="aswArPot.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="21.4.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_ASWSP" FriendlyName="Avast
aswSP.sys\1dccd1e13da17bd541a66b48d62e914df390818c15f5f599c636d42c05996ace
FileAttribute" FileName="aswSP.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="20.8.0.0"/>
<FileAttrib ID="ID_FILEATTRIB_ASWSNX" FriendlyName="Aswsnx
FileAttribute" FileName="aswSnx.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="17.1.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_ATILLK" FriendlyName="atillk64
FileAttribute" FileName="atillk64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_ATSZIO" FriendlyName="ATSZIO.sys
FileAttribute" FileName="ATSZIO.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_AVGELAM" FriendlyName="Avast
aswElam/avgElam Overpermissive ELAM FileAttribute" FileName="aswElam.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="21.6.400.65535" />
<FileAttrib ID="ID_FILEATTRIB_BS_DEF" FriendlyName="Bs_Def64
FileAttribute" FileName="Bs_Def64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_BS_DEF_64" FriendlyName="Bs_Def
FileAttribute" FileName="Bs_Def.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_BS_HWMIO64" FriendlyName=""
FileName="BS_HWMIO64_W10.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="10.0.1806.2200" />
<FileAttrib ID="ID_FILEATTRIB_BS_I2CIO" FriendlyName=""
FileName="BS_I2cIo.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="1.1.0.0" />
<FileAttrib ID="ID_FILEATTRIB_BS_RCIO" FriendlyName="BS_RCIO.sys
FileAttribute" FileName="BS_RCIO64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="10.0.0.1" />
<FileAttrib ID="ID_FILEATTRIB_BS_RCIO_W10"
FriendlyName="BS_RCIO\7c6f16af074c3f1c74fc69734f1c8b8a03b0594ac2085d5a0c582f
c8cc378858 FileAttribute" FileName="BS_RCIO64_W10.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_BS_MEM" FriendlyName="BSMEM64_W10
FileAttribute" FileName="BSMEM64_W10.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="10.0.1806.2201" />
<FileAttrib ID="ID_FILEATTRIB_BSMI" FriendlyName="" FileName="BSMI.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="1.0.0.3" />
<FileAttrib ID="ID_FILEATTRIB_CORSAIRLLACCESS"
FriendlyName="CorsairLLAccess\000547560fea0dd4b477eb28bf781ea67bf83c748945ce
8923f90fdd14eb7a4b FileAttribute" FileName="Corsair LL Access"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="1.0.23.65535" />
<FileAttrib ID="ID_FILEATTRIB_CPUZ_DRIVER" FriendlyName="CPUID
cpuz.sys\1e16a01ef44e4c56e87abfbe03b2989b0391b172c3ec162783ad640be65ab961"
FileName="cpuz.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="1.0.5.6" />
<FileAttrib ID="ID_FILEATTRIB_CTIIO" FriendlyName="MicSys
CtiIo\2121a2bb8ebbf2e6e82c782b6f3c6b7904f686aa495def25cf1cf52a42e16109
FileAttribute" FileName="CtiIo64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="1.1.23.0405" />
<FileAttrib ID="ID_FILEATTRIB_DRIVER7" FriendlyName="Asus
driver7.sys\1beb15c90dcf7a5234ed077833a0a3e900969b60be1d04fcebce0a9f8994bdbb
FileAttribute" FileName="Driver7" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535"/>
<FileAttrib ID="ID_FILEATTRIB_EIO64" FriendlyName="ASUS
EIO64.sys\1fac3fab8ea2137a7e81a26de121187bf72e7d16ffa3e9aec3886e2376d3c718
FileAttribute" FileName="EIO.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535"/>
<FileAttrib ID="ID_FILEATTRIB_EELAM" FriendlyName="ESET eelam
Overpermissive ELAM FileAttribute" FileName="eelam.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="10.0.16.0" />
<FileAttrib ID="ID_FILEATTRIB_ELBY_DRIVER" FriendlyName=""
FileName="ElbyCDIO.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="6.0.3.2" />
<FileAttrib ID="ID_FILEATTRIB_ETDSUPPORT" FriendlyName="HP
EtdSupport\0d383e469d0e27ebb713770f01f7f1a57068a7d30478221e6f2276125048d1c9
FileAttribute" FileName="etdsupp.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_FAIRPLAY" FriendlyName="Deny
FairplayKD.sys MTA San Andreas Versions 367.*" ProductName="MTA San Andreas"
MinimumFileVersion="367.0.0.0" MaximumFileVersion="367.65535.65535.65535"/>
<FileAttrib ID="ID_FILEATTRIB_GMER" FriendlyName="GMEREK gmer64
FileAttribute" FileName="gmer64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_HAXM" FriendlyName="haXM.sys
FileAttribute" FileName="HaXM.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_HPPORTIOX64"
FriendlyName="HpPortIox64.sys" FileName="HpPortIox64.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="1.2.0.9" />
<FileAttrib ID="ID_FILEATTRIB_HW"
FriendlyName="hw_sys\4880f40f2e557cff38100620b9aa1a3a753cb693af16cd3d9584158
3edcb57a8 FileAttribute" FileName="HW.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="4.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_HWINFO_1" FriendlyName="REALiX_HWiNFO32
FileAttribute" FileName="HWiNFO32.SYS" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="8.98.0.0" />
<FileAttrib ID="ID_FILEATTRIB_HWINFO_2" FriendlyName="REALiX_HWiNFO64A
FileAttribute" FileName="HWiNFO64A.SYS" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="8.98.0.0" />
<FileAttrib ID="ID_FILEATTRIB_HWINFO_3" FriendlyName="REALiX_HWiNFO64I
FileAttribute" FileName="HWiNFO64I.SYS" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="8.98.0.0" />
<FileAttrib ID="ID_FILEATTRIB_HWRWDRV" FriendlyName="HwRwDrv
FileAttribute" FileName="HwRwDrv.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_IOBITUNLOCKER" FriendlyName="IObitUnlocker
FileAttribute" FileName="IObitUnlocker.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="1.3.0.0" />
<FileAttrib ID="ID_FILEATTRIB_IOMEM" FriendlyName="DT Research
iomem\2b507e0ad4515d9d47fb7f0bfa1f1eb11de25db4fca49fc1417ea991dc33b6bf
FileAttribute" FileName="iomem.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535"/>
<FileAttrib ID="ID_FILEATTRIB_IQVW64" FriendlyName="IQVW64.sys
FileAttribute" FileName="iQVW64.SYS" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="1.4.0.0" />
<FileAttrib ID="ID_FILEATTRIB_KEVP64" FriendlyName="kevp64.sys
FileAttribute" FileName="kEvP64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_LGCORETEMP" FriendlyName="LogiTech
LgCoreTemp\93b266f38c3c3eaab475d81597abbd7cc07943035068bb6fd670dbbe15de0131
FileAttribute" FileName="LgCoreTemp.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_LHA" FriendlyName="LHA.sys FileAttribute"
FileName="LHA.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_LIBNICM_DRIVER" FriendlyName=""
FileName="libnicm.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="3.1.11.0" />
<FileAttrib ID="ID_FILEATTRIB_LV_DIAG"
FriendlyName="LenovoDiagnosticsDriver FileAttribute"
FileName="LenovoDiagnosticsDriver.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="2.0.0.0" />
<FileAttrib ID="ID_FILEATTRIB_LV561V64" FriendlyName="LV561V64 LogiTech
FileAttribute" FileName="Lv561av.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_MONITOR" FriendlyName="IOBit Monitor.sys
FileAttribute" FileName="Monitor.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="15.0.0.2" />
<FileAttrib ID="ID_FILEATTRIB_MSIO" FriendlyName="MicSys
MSIO\0f035948848432bc243704041739e49b528f35c82a5be922d9e3b8a4c44398ff
FileAttribute" FileName="MsIo64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_MTCBSV64" FriendlyName="mtcBSv64.sys
FileAttribute" FileName="mtcBSv64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="21.2.0.0" />
<FileAttrib ID="ID_FILEATTRIB_MYDRIVERS" FriendlyName="mydrivers.sys
FileAttribute" FileName="mydrivers.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_NCHGBIOS2X64" FriendlyName=""
FileName="NCHGBIOS2x64.SYS" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="4.2.4.0" />
<FileAttrib ID="ID_FILEATTRIB_NCPL_DRIVER" FriendlyName=""
FileName="NCPL.SYS" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="3.1.11.0" />
<FileAttrib ID="ID_FILEATTRIB_NICM_DRIVER" FriendlyName=""
FileName="NICM.SYS" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="3.1.11.0" />
<FileAttrib ID="ID_FILEATTRIB_NSCM_DRIVER" FriendlyName=""
FileName="nscm.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="3.1.11.0" />
<FileAttrib ID="ID_FILEATTRIB_NTIOLIB" FriendlyName=""
FileName="NTIOLib.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="1.0.0.0" />
<FileAttrib ID="ID_FILEATTRIB_NVFLASH" FriendlyName="Nvidia NVFlash
FileAttribute" FileName="nvflash.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="1.9.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_OPENLIBSYS"
FriendlyName="OpenLibSys\91314768da140999e682d2a290d48b78bb25a35525ea12c1b1f
9634d14602b2c FileAttribute" FileName="OpenLibSys.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_PANIO_1"
FriendlyName="PanIOx64\6b830ea0db6546a044c9900d3f335e7820c2a80e147b075164189
9d1a5aa8f74 FileAttribute" FileName="PanIOx64.sys"
MinimumFileVersion="1.0.0.1" />
<FileAttrib ID="ID_FILEATTRIB_PANIO_2"
FriendlyName="PanIO\f596e64f4c5d7c37a00493728d8756b243cfdc11e3372d6d6dfeffc1
3c9ab960 FileAttribute" FileName="PanIO.sys" MinimumFileVersion="1.0.0.1" />
<FileAttrib ID="ID_FILEATTRIB_PANIOMON_1"
FriendlyName="PanMonFltx64\06508aacb4ed0a1398a2b0da5fa2dbf7da435b56da76fd83c
759a50a51c75caf FileAttribute" FileName="PanMonFltX64.sys"
MinimumFileVersion="1.0.0.1" />
<FileAttrib ID="ID_FILEATTRIB_PANIOMON_2"
FriendlyName="PanMonFlt\7e0124fcc7c95fdc34408cf154cb41e654dade8b898c71ad587b
2090b1da30d7 FileAttribute" FileName="PanMonFlt.sys"
MinimumFileVersion="1.0.0.1" />
<FileAttrib ID="ID_FILEATTRIB_PCDOC" FriendlyName="PC-Doctor
pcdsrvc\06a5d8632ecdd64da4e44ddf3495a62657b513b1139cb8a3a78f641d4e31bf95
FileAttribute" FileName="pcdsrvc" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="6.2.65535.65535"/>
<FileAttrib ID="ID_FILEATTRIB_PHYMEM" FriendlyName="Phymem
FileAttribute" FileName="phymem.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_PHYSMEM" FriendlyName="Physmem.sys
FileAttribute" FileName="physmem.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_PROCEXP" FriendlyName="Sysinternals
Process Explorer FileAttribute" FileName="procexp.Sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="16.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_RTKIO_DRIVER" FriendlyName=""
FileName="rtkio.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_RTKIO64_DRIVER" FriendlyName=""
FileName="rtkio64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_RTKIOW10X64_DRIVER" FriendlyName=""
FileName="rtkiow10x64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_RTKIOW8X64_DRIVER" FriendlyName=""
FileName="rtkiow8x64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_RWDRV_DRIVER" FriendlyName=""
FileName="RwDrv.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_RZPNK" FriendlyName="Razer rzpnk.sys
FileAttribute" FileName="Rzpnk.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_SANDBOX" FriendlyName="Agnitum sandbox
FileAttribute" FileName="sandbox.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_SANDRA" FriendlyName="" FileName="SANDRA"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="10.12.0.0" />
<FileAttrib ID="ID_FILEATTRIB_SANDRA_DRIVER" FriendlyName=""
FileName="sandra.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="10.12.0.0" />
<FileAttrib ID="ID_FILEATTRIB_SEGWINDRVX64"
FriendlyName="segwindrvx64.sys FileAttribute" FileName="segwindrvx64.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="100.0.7.2" />
<FileAttrib ID="ID_FILEATTRIB_SUPERBMC" FriendlyName="Superbmc
FileAttribute" FileName="superbmc.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="2.2.1.0" />
<FileAttrib ID="ID_FILEATTRIB_SYMELAM"
FriendlyName="SymELAM\021badff5a3c84ee422d9fa40a842f89b1c60e0164eabd58da7374
327ea99d3c FileAttribute" FileName="SymELAM.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="2.4.0.83" />
<FileAttrib ID="ID_FILEATTRIB_SYSDRV3S"
FriendlyName="SysDrv3s\0dd9daf0852a5b1b436199e9f2bf318f641f43173ab0dc22ad8c7
e9cbaee9ad3 FileAttribute" FileName="SysDrv3S.sys"
MinimumFileVersion="0.0.0.0" MaximumFileVersion="3.6.0.0" />
<FileAttrib ID="ID_FILEATTRIB_TMEL" FriendlyName="TrendMicro TMEL
Overpermissive ELAM FileAttribute" FileName="Tmel.sys"
MinimumFileVersion="1.6.0.1002" MaximumFileVersion="1.6.0.1004" />
<FileAttrib ID="ID_FILEATTRIB_TREND_MICRO" FriendlyName="TmComm.sys"
FileName="TmComm.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="8.0.0.0" />
<FileAttrib ID="ID_FILEATTRIB_VBOX" FriendlyName="VBoxDrv.sys
FileAttribute" FileName="VBoxDrv.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="3.0.0.0" />
<FileAttrib ID="ID_FILEATTRIB_VIRAGT" FriendlyName="viragt.sys 32-bit"
FileName="viragt.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="1.80.0.0" />
<FileAttrib ID="ID_FILEATTRIB_VIRAGT64" FriendlyName="viragt64.sys"
FileName="viragt64.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="1.0.0.11" />
<FileAttrib ID="ID_FILEATTRIB_VMDRV" FriendlyName="vmdrv.sys
FileAttribute" FileName="vmdrv.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="10.0.10011.16384" />
<FileAttrib ID="ID_FILEATTRIB_WCPU"
FriendlyName="WCPU\159e7c5a12157af92e0d14a0d3ea116f91c09e21a9831486e6dc592c9
3c10980 FileAttribute" FileName="CPU Driver" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535"/>
<FileAttrib ID="ID_FILEATTRIB_WINRING0" FriendlyName="WinRing0.sys"
FileName="WinRing0.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="2.0.0.0" />
<FileAttrib ID="ID_FILEATTRIB_WISEUNLO" FriendlyName="WiseUnlo
FileAttribute" FileName="WiseUnlo.sys" MinimumFileVersion="0.0.0.0"
MaximumFileVersion="65535.65535.65535.65535" />
<FileAttrib ID="ID_FILEATTRIB_ZEMANA_1" FriendlyName="Zemana
Antilog\05ece4f6bda72e7fd61fa950e80b811d3dbe0b4b1d53b0532d8df051d1ff074c
FileAttribute" FileName="AntiLog32.sys" MinimumFileVersion="1.9.5.600" />
<FileAttrib ID="ID_FILEATTRIB_ZEMANA_2" FriendlyName="Zemana
Zam\40b62ba97ba2edd3e01ed62d26ae8c09f36144ab33db18b42e5f1ccf82db1754
FileAttribute" FileName="ZAM.exe" MinimumFileVersion="2.74.0.259" />
<FileAttrib ID="ID_FILEATTRIB_ZEMANA_3" FriendlyName="Zemana
PerfectGuard\fe48f38bc05a6f3d6590e0be572f1b5dd67fe0b7c97b891a586e3e67f5a5513
e FileAttribute" FileName="PerfectGuard.sys" MinimumFileVersion="1.9.5.104"
/>

</FileRules>
<!--Signers-->
<Signers>
<Signer ID="ID_SIGNER_VERISIGN_2010" Name="VeriSign Class 3 Code Signing
2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<FileAttribRef RuleID="ID_FILEATTRIB_AMDPP" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSP" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASR_AUTOCHECK_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASR_AUTOCHECK_2" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSNX" />
<FileAttribRef RuleID="ID_FILEATTRIB_ATSZIO" />
<FileAttribRef RuleID="ID_FILEATTRIB_CPUZ_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_DRIVER7" />
<FileAttribRef RuleID="ID_FILEATTRIB_ETDSUPPORT" />
<FileAttribRef RuleID="ID_FILEATTRIB_IOMEM" />
<FileAttribRef RuleID="ID_FILEATTRIB_IQVW64" />
<FileAttribRef RuleID="ID_FILEATTRIB_KEVP64" />
<FileAttribRef RuleID="ID_FILEATTRIB_LHA" />
<FileAttribRef RuleID="ID_FILEATTRIB_MONITOR" />
<FileAttribRef RuleID="ID_FILEATTRIB_MTCBSV64" />
<FileAttribRef RuleID="ID_FILEATTRIB_TREND_MICRO" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO64_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RWDRV_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RZPNK" />
<FileAttribRef RuleID="ID_FILEATTRIB_ZEMANA_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_ZEMANA_2" />
<FileAttribRef RuleID="ID_FILEATTRIB_ZEMANA_3" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_2010_2" Name="VeriSign Class 3 Code
Signing 2010 CA">
<CertRoot Type="TBS" Value="4678C6E4A8787A8E6ED2BCE8792B122F6C08AFD8"
/>
<FileAttribRef RuleID="ID_FILEATTRIB_TREND_MICRO" />
</Signer>
<Signer ID="ID_SIGNER_CAPCOM" Name="Symantec Class 3 SHA256 Code Signing
CA">
<CertRoot Type="TBS"
Value="A08E79C386083D875014C409C13D144E0A24386132980DF11FF59737C8489EB1" />
<CertPublisher Value="CAPCOM Co.,Ltd." />
</Signer>
<Signer ID="ID_SIGNER_CHEAT_ENGINE" Name="Microsoft Windows Third Party
Component CA 2014 Cheat Engine OPUS">
<CertRoot Type="TBS"
Value="D8BE9E4D9074088EF818BC6F6FB64955E90378B2754155126FEEBBBD969CF0AE" />
<CertOemID Value="Cheat Engine"/>
</Signer>
<Signer ID="ID_SIGNER_ENE" Name="Microsoft Windows Third Party Component
CA 2014 ENE Tech OPUS">
<CertRoot Type="TBS"
Value="D8BE9E4D9074088EF818BC6F6FB64955E90378B2754155126FEEBBBD969CF0AE" />
<CertOemID Value="ENE Technology Inc." />
</Signer>
<Signer ID="ID_SIGNER_MB_RB_HACKS" Name="Microsoft Windows Third Party
Component CA 2014 MB Rb online OPUS">
<CertRoot Type="TBS"
Value="D8BE9E4D9074088EF818BC6F6FB64955E90378B2754155126FEEBBBD969CF0AE" />
<CertOemID Value="MB Rb online" />
</Signer>
<Signer ID="ID_SIGNER_MAN_MUS" Name="Microsoft Windows Third Party
Component CA 2014 MANUEL OPUS">
<CertRoot Type="TBS"
Value="D8BE9E4D9074088EF818BC6F6FB64955E90378B2754155126FEEBBBD969CF0AE" />
<CertOemID Value="DIGITAL SERVICES OF MANUEL MUSARELLA" />
</Signer>
<Signer ID="ID_SIGNER_DIGICERT_EV" Name="DigiCert EV Code Signing CA
(SHA2)">
<CertRoot Type="TBS"
Value="EEC58131DC11CD7F512501B15FDBC6074C603B68CA91F7162D5A042054EDB0CF" />
<FileAttribRef RuleID="ID_FILEATTRIB_CPUZ_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_EIO64" />
<FileAttribRef RuleID="ID_FILEATTRIB_PCDOC" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO64_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIOW10X64_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIOW8X64_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_ELBY" Name="GlobalSign Primary Object Publishing
CA">
<CertRoot Type="TBS" Value="041750993D7C9E063F02DFE74699598640911AAB"
/>
<CertPublisher Value="Elaborate Bytes AG" />
<FileAttribRef RuleID="ID_FILEATTRIB_ELBY_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_2009" Name="VeriSign Class 3 Code Signing
2009-2 CA">
<CertRoot Type="TBS" Value="4CDC38C800761463749C3CBD94A12F32E49877BF"
/>
<FileAttribRef RuleID="ID_FILEATTRIB_ATSZIO" />
<FileAttribRef RuleID="ID_FILEATTRIB_DRIVER7" />
<FileAttribRef RuleID="ID_FILEATTRIB_IQVW64" />
<FileAttribRef RuleID="ID_FILEATTRIB_LIBNICM_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_NICM_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_NSCM_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_TREND_MICRO" />
<FileAttribRef RuleID="ID_FILEATTRIB_NCHGBIOS2X64" />
<FileAttribRef RuleID="ID_FILEATTRIB_NCPL_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_ZEMANA_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_ZEMANA_2" />
<FileAttribRef RuleID="ID_FILEATTRIB_ZEMANA_3" />
</Signer>
<Signer ID="ID_SIGNER_SANDRA" Name="GeoTrust TrustCenter CodeSigning CA
I">
<CertRoot Type="TBS" Value="172F39BCA3DDA7C6D5169C96B34A5FE7E96FF0BD"
/>
<CertPublisher Value="SiSoftware Ltd" />
<FileAttribRef RuleID="ID_FILEATTRIB_SANDRA" />
<FileAttribRef RuleID="ID_FILEATTRIB_SANDRA_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_SANDRA_THAWTE" Name="Thawte Code Signing CA">
<CertRoot Type="TBS" Value="F6297A00D3B2B4CE4750402B66E7EA018D54F683"
/>
<CertPublisher Value="SiSoftware Ltd" />
<FileAttribRef RuleID="ID_FILEATTRIB_SANDRA" />
<FileAttribRef RuleID="ID_FILEATTRIB_SANDRA_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_MIMIKATZ_KERNEL" Name="GlobalSign CodeSigning CA -
G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="Benjamin Delpy" />
</Signer>
<Signer ID="ID_SIGNER_MIMIKATZ_KERNEL_SHA2" Name="GlobalSign CodeSigning
CA - G2">
<CertRoot Type="TBS"
Value="F6CAE0B028995EB13B1C2CCE5B5107384AB7C77279AE5560933E345061D99CC0" />
<CertPublisher Value="Benjamin Delpy" />
</Signer>
<Signer ID="ID_SIGNER_MIMIKATZ_USER" Name="Certum Code Signing CA SHA2">
<CertRoot Type="TBS"
Value="F7B6EEB3A567223000A61F68C53B458193557C17E5D512D2825BCB13E5FC9BE5" />
<CertPublisher Value="Open Source Developer, Benjamin Delpy" />
</Signer>
<Signer ID="ID_SIGNER_SPEEDFAN" Name="VeriSign Class 3 Code Signing 2004
CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="Sokno S.R.L." />
</Signer>
<Signer ID="ID_SIGNER_RWEVERY" Name="GlobalSign CodeSigning CA - G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="ChongKim Chan" />
</Signer>
<Signer ID="ID_SIGNER_VBOX" Name="GlobalSign Primary Object Publishing
CA">
<CertRoot Type="TBS" Value="041750993D7C9E063F02DFE74699598640911AAB"
/>
<CertPublisher Value="innotek GmbH" />
</Signer>
<Signer ID="ID_SIGNER_REALTEK" Name="DigiCert EV Code Signing CA">
<CertRoot Type="TBS" Value="2D54C16A8F8B69CCDEA48D0603C132F547A5CF75"
/>
<CertPublisher Value="Realtek Semiconductor Corp." />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO64_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIOW10X64_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIOW8X64_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_2009_REALTEK" Name="VeriSign Class 3 Code
Signing 2009-2 CA">
<CertRoot Type="TBS" Value="4CDC38C800761463749C3CBD94A12F32E49877BF"
/>
<CertPublisher Value="Realtek Semiconductor Corp." />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO64_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_WINDOWS_3RD_PARTY_2012" Name="Microsoft Windows
Third Party Component CA 2012">
<CertRoot Type="TBS"
Value="CEC1AFD0E310C55C1DCC601AB8E172917706AA32FB5EAF826813547FDF02DD46" />
<CertPublisher Value="Microsoft Windows Hardware Compatibility
Publisher" />
<FileAttribRef RuleID="ID_FILEATTRIB_AMD_RYZEN" />
<FileAttribRef RuleID="ID_FILEATTRIB_AMDPP" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSNX" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSP" />
<FileAttribRef RuleID="ID_FILEATTRIB_ETDSUPPORT" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWRWDRV" />
<FileAttribRef RuleID="ID_FILEATTRIB_IQVW64" />
<FileAttribRef RuleID="ID_FILEATTRIB_TREND_MICRO" />
<FileAttribRef RuleID="ID_FILEATTRIB_HPPORTIOX64" />
<FileAttribRef RuleID="ID_FILEATTRIB_LV_DIAG" />
<FileAttribRef RuleID="ID_FILEATTRIB_MTCBSV64" />
<FileAttribRef RuleID="ID_FILEATTRIB_PCDOC" />
<FileAttribRef RuleID="ID_FILEATTRIB_PROCEXP" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO64_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_WINRING0" />
</Signer>
<Signer ID="ID_SIGNER_WINDOWS_3RD_PARTY_2014" Name="Microsoft Windows
Third Party Component CA 2014">
<CertRoot Type="TBS"
Value="D8BE9E4D9074088EF818BC6F6FB64955E90378B2754155126FEEBBBD969CF0AE" />
<CertPublisher Value="Microsoft Windows Hardware Compatibility
Publisher" />
<FileAttribRef RuleID="ID_FILEATTRIB_ALSYSIO" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSNX" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_HWMIO64" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_MEM" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_RCIO" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_RCIO_W10" />
<FileAttribRef RuleID="ID_FILEATTRIB_CORSAIRLLACCESS" />
<FileAttribRef RuleID="ID_FILEATTRIB_CPUZ_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_CTIIO" />
<FileAttribRef RuleID="ID_FILEATTRIB_HAXM" />
<FileAttribRef RuleID="ID_FILEATTRIB_HW" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_2" />
<FileAttribRef RuleID="ID_FILEATTRIB_IOBITUNLOCKER" />
<FileAttribRef RuleID="ID_FILEATTRIB_LHA" />
<FileAttribRef RuleID="ID_FILEATTRIB_LIBNICM_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_MSIO" />
<FileAttribRef RuleID="ID_FILEATTRIB_MYDRIVERS" />
<FileAttribRef RuleID="ID_FILEATTRIB_NICM_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_NSCM_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_NVFLASH" />
<FileAttribRef RuleID="ID_FILEATTRIB_PCDOC" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIO_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RTKIOW10X64_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_RZPNK" />
<FileAttribRef RuleID="ID_FILEATTRIB_SYSDRV3S" />
<FileAttribRef RuleID="ID_FILEATTRIB_VIRAGT" />
<FileAttribRef RuleID="ID_FILEATTRIB_VIRAGT64" />
<FileAttribRef RuleID="ID_FILEATTRIB_VMDRV" />
<FileAttribRef RuleID="ID_FILEATTRIB_WISEUNLO" />
</Signer>
<Signer ID="ID_SIGNER_WINDOWS_3RD_PARTY_2010" Name="Microsoft Third Party
Component Windows PCA 2010">
<CertRoot Type="TBS"
Value="90C9669670E75989159E6EEF69625EB6AD17CBA6209ED56F5665D55450A05212" />
<CertPublisher Value="Microsoft Windows Hardware Compatibility
Publisher" />
<FileAttribRef RuleID="ID_FILEATTRIB_HPPORTIOX64" />
<FileAttribRef RuleID="ID_FILEATTRIB_WINRING0" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_2004" Name="VeriSign Class 3 Code Signing
2004 CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<FileAttribRef RuleID="ID_FILEATTRIB_ALSYSIO" />
<FileAttribRef RuleID="ID_FILEATTRIB_CPUZ_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_IQVW64" />
<FileAttribRef RuleID="ID_FILEATTRIB_MTCBSV64" />
<FileAttribRef RuleID="ID_FILEATTRIB_PCDOC" />
<FileAttribRef RuleID="ID_FILEATTRIB_ZEMANA_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_ZEMANA_2" />
<FileAttribRef RuleID="ID_FILEATTRIB_ZEMANA_3" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_2004_BIOSTAR" Name="VeriSign Class 3 Code
Signing 2004 CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="BIOSTAR MICROTECH INT'L CORP" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_I2CIO" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_MEM" />
<FileAttribRef RuleID="ID_FILEATTRIB_BSMI" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_2004_ASUS_BS_DEF" Name="VeriSign Class
3 Code Signing 2004 CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="ASUSTeK Computer Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_DEF" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_DEF_64" />
<FileAttribRef RuleID="ID_FILEATTRIB_WCPU" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_2009_BIOSTAR" Name="VeriSign Class 3 Code
Signing 2009-2 CA">
<CertRoot Type="TBS" Value="4CDC38C800761463749C3CBD94A12F32E49877BF"
/>
<CertPublisher Value="BIOSTAR MICROTECH INT'L CORP" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_MEM" />
<FileAttribRef RuleID="ID_FILEATTRIB_BSMI" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_I2CIO" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_2010_BIOSTAR" Name="VeriSign Class 3 Code
Signing 2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="BIOSTAR MICROTECH INT'L CORP" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_I2CIO" />
<FileAttribRef RuleID="ID_FILEATTRIB_BS_MEM" />
<FileAttribRef RuleID="ID_FILEATTRIB_BSMI" />
</Signer>
<Signer ID="ID_SIGNER_GLOBALSIGN_G2_MICROSTAR" Name="GlobalSign
CodeSigning CA - G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="MICRO-STAR INTERNATIONAL CO., LTD." />
<FileAttribRef RuleID="ID_FILEATTRIB_NTIOLIB" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_TOSHIBA" Name="VeriSign Class 3 Code
Signing 2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="TOSHIBA CORPORATION" />
<FileAttribRef RuleID="ID_FILEATTRIB_NCHGBIOS2X64" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_NOVELL" Name="VeriSign Class 3 Code
Signing 2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Novell, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_LIBNICM_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_NICM_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_NSCM_DRIVER" />
<FileAttribRef RuleID="ID_FILEATTRIB_NCPL_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_GLOBALSIGN_MICROSTAR" Name="GlobalSign Primary
Object Publishing CA">
<CertRoot Type="TBS" Value="041750993D7C9E063F02DFE74699598640911AAB"
/>
<CertPublisher Value="Micro-Star Int'l Co. Ltd." />
<FileAttribRef RuleID="ID_FILEATTRIB_NTIOLIB" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_INSYDE" Name="VeriSign Class 3 Code
Signing 2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Insyde Software Corp." />
<FileAttribRef RuleID="ID_FILEATTRIB_SEGWINDRVX64" />
</Signer>
<Signer ID="ID_SIGNER_SYMANTEC_CLASS_3" Name="Symantec Class 3 SHA256
Code Signing CA">
<CertRoot Type="TBS"
Value="A08E79C386083D875014C409C13D144E0A24386132980DF11FF59737C8489EB1" />
<FileAttribRef RuleID="ID_FILEATTRIB_AMD_RYZEN" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSP" />
<FileAttribRef RuleID="ID_FILEATTRIB_AMDPP" />
<FileAttribRef RuleID="ID_FILEATTRIB_LGCORETEMP" />
<FileAttribRef RuleID="ID_FILEATTRIB_RZPNK" />
<FileAttribRef RuleID="ID_FILEATTRIB_TREND_MICRO" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_AMD" Name="VeriSign Class 3 Code Signing
2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Advanced Micro Devices, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_AMD_RYZEN" />
</Signer>
<Signer ID="ID_SIGNER_VERISIGN_TG_SOFT" Name="VeriSign Class 3 Code
Signing 2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="TG Soft S.a.s. Di Tonello Gianfranco e C." />
<FileAttribRef RuleID="ID_FILEATTRIB_VIRAGT" />
<FileAttribRef RuleID="ID_FILEATTRIB_VIRAGT64" />
</Signer>
<Signer ID="ID_SIGNER_GLOBALSIGN_TG_SOFT" Name="GlobalSign CodeSigning
CA - G3">
<CertRoot Type="TBS" Value="F478F0E790D5C8EC6056A3AB2567404A991D2837"
/>
<CertPublisher Value="TG Soft di Tonello Gianfranco ed Enrico S.r.l."
/>
<FileAttribRef RuleID="ID_FILEATTRIB_VIRAGT" />
<FileAttribRef RuleID="ID_FILEATTRIB_VIRAGT64" />
</Signer>
<Signer ID="ID_SIGNER_HP" Name="DigiCert SHA2 Assured ID Code Signing
CA">
<CertRoot Type="TBS"
Value="E767799478F64A34B3F53FF3BB9057FE1768F4AB178041B0DCC0FF1E210CBA65" />
<CertPublisher Value="HP Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_HPPORTIOX64" />
<FileAttribRef RuleID="ID_FILEATTRIB_WINRING0" />
</Signer>
<Signer ID="ID_SIGNER_GETAC" Name="Symantec Class 3 Extended Validation
Code Signing CA - G2">
<CertRoot Type="TBS"
Value="B3C925B4048C3F7C444D248A2B101186B57CBA39596EB5DCE0E17A4EE4B32F19" />
<CertPublisher Value="Getac Technology Corp." />
<FileAttribRef RuleID="ID_FILEATTRIB_MTCBSV64" />
</Signer>
<Signer ID="ID_SIGNER_GLOBALSIGN_CHEAT_ENGINE" Name="GlobalSign CA Cheat
Engine Publisher">
<CertRoot Type="TBS"
Value="BD1765C56594221373893EF26D97F88C144FB0E5A0111215B45D7239C3444DF7" />
<CertPublisher Value="Cheat Engine" />
</Signer>
<Signer ID="ID_SIGNER_GLOBALSIGN_G2_CHEAT_ENGINE" Name="GlobalSign
CodeSigning CA - G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="Cheat Engine" />
</Signer>
<Signer ID="ID_SIGNER_PHYSMEM" Name="GlobalSign CodeSigning CA - G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="Hilscher Gesellschaft fuer Systemautomation mbH"
/>
<FileAttribRef RuleID="ID_FILEATTRIB_PHYSMEM" />
</Signer>
<Signer ID="ID_SIGNER_VMDRV" Name="DigiCert EV Code Signing CA (SHA2)">
<CertRoot Type="TBS"
Value="EEC58131DC11CD7F512501B15FDBC6074C603B68CA91F7162D5A042054EDB0CF" />
<CertPublisher Value="Voicemod Sociedad Limitada" />
<FileAttribRef RuleID="ID_FILEATTRIB_VMDRV" />
</Signer>
<Signer ID="ID_SIGNER_INTEL_IQVW" Name="Intel External Basic Policy CA">
<CertRoot Type="TBS" Value="53B052BA209C525233293274854B264BC0F68B73"
/>
<FileAttribRef RuleID="ID_FILEATTRIB_IQVW64" />
</Signer>
<Signer ID="ID_SIGNER_COMODO_IQVW" Name="COMODO RSA Certification
Authority">
<CertRoot Type="TBS"
Value="7CE102D63C57CB48F80A65D1A5E9B350A7A618482AA5A36775323CA933DDFCB00DEF8
3796A6340DEC5EBF7596CFD8E5D" />
<FileAttribRef RuleID="ID_FILEATTRIB_IQVW64" />
</Signer>
<Signer ID="ID_SIGNER_AMDPP" Name="USERTrust RSA Certification
Authority">
<CertRoot Type="TBS"
Value="13BAA039635F1C5292A8C2F36AAE7E1D25C025202E9092F5B0F53F5F752DFA9C71B3D
1B8D9A6358FCEE6EC75622FABF9" />
<CertPublisher Value="Advanced Micro Devices Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_AMDPP" />
</Signer>
<Signer ID="ID_SIGNER_AGNITUM_2004" Name="VeriSign Class 3 Code Signing
2004 CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="Agnitum Ltd." />
<FileAttribRef RuleID="ID_FILEATTRIB_SANDBOX" />
</Signer>
<Signer ID="ID_SIGNER_AGNITUM_2009" Name="VeriSign Class 3 Code Signing
2009-2 CA">
<CertRoot Type="TBS" Value="4CDC38C800761463749C3CBD94A12F32E49877BF"
/>
<CertPublisher Value="Agnitum Ltd." />
<FileAttribRef RuleID="ID_FILEATTRIB_SANDBOX" />
</Signer>
<Signer ID="ID_SIGNER_AGNITUM_2010" Name="VeriSign Class 3 Code Signing
2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Agnitum Ltd." />
<FileAttribRef RuleID="ID_FILEATTRIB_SANDBOX" />
</Signer>
<Signer ID="ID_SIGNER_AGNITUM_2010_1" Name="VeriSign Class 3 Code
Signing 2010 CA">
<CertRoot Type="TBS" Value="4678C6E4A8787A8E6ED2BCE8792B122F6C08AFD8"
/>
<CertPublisher Value="Agnitum Ltd." />
<FileAttribRef RuleID="ID_FILEATTRIB_SANDBOX" />
</Signer>
<Signer ID="ID_SIGNER_PHYMEM" Name="VeriSign Class 3 Code Signing 2010
CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Super Micro Computer, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_PHYMEM" />
<FileAttribRef RuleID="ID_FILEATTRIB_SUPERBMC" />
</Signer>
<Signer ID="ID_SIGNER_PHYMEM_1" Name="Symantec Class 3 SHA256 Code
Signing CA">
<CertRoot Type="TBS"
Value="A08E79C386083D875014C409C13D144E0A24386132980DF11FF59737C8489EB1" />
<CertPublisher Value="Super Micro Computer, Inc. Taiwan" />
<FileAttribRef RuleID="ID_FILEATTRIB_PHYMEM" />
</Signer>
<Signer ID="ID_SIGNER_PHYMEM_2" Name="Symantec Class 3 SHA256 Code
Signing CA">
<CertRoot Type="TBS"
Value="A08E79C386083D875014C409C13D144E0A24386132980DF11FF59737C8489EB1" />
<CertPublisher Value="Super Micro Computer, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_PHYMEM" />
<FileAttribRef RuleID="ID_FILEATTRIB_SUPERBMC" />
</Signer>
<Signer ID="ID_SIGNER_NVFLASH" Name="VeriSign Class 3 Code Signing 2010
CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="NVIDIA Corporation" />
<FileAttribRef RuleID="ID_FILEATTRIB_NVFLASH" />
</Signer>
<Signer ID="ID_SIGNER_NVFLASH_2" Name="Symantec Class 3 SHA256 Code
Signing CA - G2">
<CertRoot Type="TBS"
Value="7F25CBD37DCDC0E0D93E0D477C4BC0C54231379E6CAF1023841E1F0D96467A6C" />
<CertPublisher Value="NVIDIA Corporation" />
<FileAttribRef RuleID="ID_FILEATTRIB_NVFLASH" />
</Signer>
<Signer ID="ID_SIGNER_NVFLASH_3" Name="Symantec Class 3 SHA256 Code
Signing CA">
<CertRoot Type="TBS"
Value="A08E79C386083D875014C409C13D144E0A24386132980DF11FF59737C8489EB1" />
<CertPublisher Value="NVIDIA Corporation" />
<FileAttribRef RuleID="ID_FILEATTRIB_NVFLASH" />
</Signer>
<Signer ID="ID_SIGNER_LV_LOGITECH" Name="VeriSign Class 3 Code Signing
2004 CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="Logitech Inc" />
<FileAttribRef RuleID="ID_FILEATTRIB_LV561V64" />
</Signer>
<Signer ID="ID_SIGNER_WISEUNLO" Name="DigiCert EV Code Signing CA">
<CertRoot Type="TBS" Value="2D54C16A8F8B69CCDEA48D0603C132F547A5CF75"
/>
<CertPublisher Value="Beijing Lang Xingda Network Technology Co., Ltd"
/>
<FileAttribRef RuleID="ID_FILEATTRIB_WISEUNLO" />
</Signer>
<Signer ID="ID_SIGNER_WISEUNLO_1" Name="DigiCert EV Code Signing CA
(SHA2)">
<CertRoot Type="TBS"
Value="EEC58131DC11CD7F512501B15FDBC6074C603B68CA91F7162D5A042054EDB0CF" />
<CertPublisher Value="Beijing Lang Xingda Network Technology Co., Ltd"
/>
<FileAttribRef RuleID="ID_FILEATTRIB_WISEUNLO" />
</Signer>
<Signer ID="ID_SIGNER_WISEUNLO_2" Name="VeriSign Class 3 Code Signing
2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Lespeed Technology Ltd." />
<FileAttribRef RuleID="ID_FILEATTRIB_WISEUNLO" />
</Signer>
<Signer ID="ID_SIGNER_LV_DIAG" Name="DigiCert SHA2 Assured ID Code
Signing CA">
<CertRoot Type="TBS"
Value="E767799478F64A34B3F53FF3BB9057FE1768F4AB178041B0DCC0FF1E210CBA65" />
<CertPublisher Value="Lenovo" />
<FileAttribRef RuleID="ID_FILEATTRIB_LV_DIAG" />
</Signer>
<Signer ID="ID_SIGNER_LV_DIAG_2" Name="DigiCert Trusted G4 Code Signing
RSA4096 SHA384 2021 CA1">
<CertRoot Type="TBS"
Value="65B1D4076A89AE273F57E6EEEDECB3EAE129B4168F76FA7671914CDF461D542255C59
D9B85B916AE0CA6FC0FCF7A8E64" />
<CertPublisher Value="Lenovo" />
<FileAttribRef RuleID="ID_FILEATTRIB_LV_DIAG" />
</Signer>
<Signer ID="ID_SIGNER_IOBITUNLOCKER_1" Name="DigiCert EV Code Signing
CA">
<CertRoot Type="TBS" Value="2D54C16A8F8B69CCDEA48D0603C132F547A5CF75"
/>
<CertPublisher Value="IObit CO., LTD" />
<FileAttribRef RuleID="ID_FILEATTRIB_IOBITUNLOCKER" />
<FileAttribRef RuleID="ID_FILEATTRIB_MONITOR" />
</Signer>
<Signer ID="ID_SIGNER_IOBITUNLOCKER_2" Name="VeriSign Class 3 Code
Signing 2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="IObit Information Technology" />
<FileAttribRef RuleID="ID_FILEATTRIB_IOBITUNLOCKER" />
<FileAttribRef RuleID="ID_FILEATTRIB_MONITOR" />
</Signer>
<Signer ID="ID_SIGNER_IOBITUNLOCKER_3" Name="DigiCert EV Code Signing CA
(SHA2)">
<CertRoot Type="TBS"
Value="EEC58131DC11CD7F512501B15FDBC6074C603B68CA91F7162D5A042054EDB0CF" />
<CertPublisher Value="IObit CO., LTD" />
<FileAttribRef RuleID="ID_FILEATTRIB_IOBITUNLOCKER" />
<FileAttribRef RuleID="ID_FILEATTRIB_MONITOR" />
</Signer>
<Signer ID="ID_SIGNER_IOBITUNLOCKER_4" Name="Symantec Class 3 SHA256
Code Signing CA">
<CertRoot Type="TBS"
Value="A08E79C386083D875014C409C13D144E0A24386132980DF11FF59737C8489EB1" />
<CertPublisher Value="IObit Information Technology" />
<FileAttribRef RuleID="ID_FILEATTRIB_IOBITUNLOCKER" />
<FileAttribRef RuleID="ID_FILEATTRIB_MONITOR" />
</Signer>
<Signer ID="ID_SIGNER_ATILLK" Name="VeriSign Class 3 Code Signing 2004
CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="ATI Technologies, Inc" />
<FileAttribRef RuleID="ID_FILEATTRIB_ATILLK" />
</Signer>
<Signer ID="ID_SIGNER_HW_A" Name="GlobalSign">
<CertRoot Type="TBS"
Value="DE1DA11668F0A8D5E13346ED3AB2755F5D25BEBFFCFD1D0BDE5B9F87BC292C91" />
<CertPublisher Value="Marvin Test Solutions, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_HW" />
</Signer>
<Signer ID="ID_SIGNER_HW_B" Name="GlobalSign CodeSigning CA - G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="Marvin Test Solutions, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_HW" />
</Signer>
<Signer ID="ID_SIGNER_HW_C" Name="GlobalSign">
<CertRoot Type="TBS"
Value="BD1765C56594221373893EF26D97F88C144FB0E5A0111215B45D7239C3444DF7" />
<CertPublisher Value="Marvin Test Solutions, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_HW" />
</Signer>
<Signer ID="ID_SIGNER_HW_D" Name="GlobalSign Primary Object Publishing
CA">
<CertRoot Type="TBS" Value="879269F3F467A6D59641960A62FE9CB419355FF6"
/>
<CertPublisher Value="Geotest - Marvin Test Systems, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_HW" />
</Signer>
<Signer ID="ID_SIGNER_HWRWDRV_1" Name="VeriSign Class 3 Code Signing
2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Shuttle Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_HWRWDRV" />
</Signer>
<Signer ID="ID_SIGNER_HWRWDRV_2" Name="Symantec Class 3 Extended
Validation Code Signing CA - G2">
<CertRoot Type="TBS"
Value="B3C925B4048C3F7C444D248A2B101186B57CBA39596EB5DCE0E17A4EE4B32F19" />
<CertPublisher Value="SHUTTLE INC." />
<FileAttribRef RuleID="ID_FILEATTRIB_HWRWDRV" />
</Signer>
<Signer ID="ID_SIGNER_MYDRIVERS_1" Name="VeriSign Class 3 Code Signing
2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Beijing Kingsoft Security software Co.,Ltd" />
<FileAttribRef RuleID="ID_FILEATTRIB_MYDRIVERS" />
</Signer>
<Signer ID="ID_SIGNER_MYDRIVERS_2" Name="GlobalSign">
<CertRoot Type="TBS"
Value="BD1765C56594221373893EF26D97F88C144FB0E5A0111215B45D7239C3444DF7" />
<CertPublisher Value="北京金山安全软件有限公司" />
<FileAttribRef RuleID="ID_FILEATTRIB_MYDRIVERS" />
</Signer>
<Signer ID="ID_SIGNER_MYDRIVERS_3" Name="Symantec Class 3 SHA256 Code
Signing CA">
<CertRoot Type="TBS"
Value="A08E79C386083D875014C409C13D144E0A24386132980DF11FF59737C8489EB1" />
<CertPublisher Value="Beijing Kingsoft Security software Co.,Ltd" />
<FileAttribRef RuleID="ID_FILEATTRIB_MYDRIVERS" />
</Signer>
<Signer ID="ID_SIGNER_PAN" Name="GlobalSign CodeSigning CA - G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="PAN YAZILIM BILISIM TEKNOLOJILERI TICARET LTD.
STI." />
<FileAttribRef RuleID="ID_FILEATTRIB_PANIOMON_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_PANIO_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_PANIOMON_2" />
<FileAttribRef RuleID="ID_FILEATTRIB_PANIO_2" />
</Signer>
<Signer ID="ID_SIGNER_ASWARPOT_1" Name="DigiCert High Assurance Code
Signing CA-1">
<CertRoot Type="TBS" Value="1D7E838ACCD498C2E5BA9373AF819EC097BB955C"
/>
<CertPublisher Value="Avast Software s.r.o." />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWARPOT" />
</Signer>
<Signer ID="ID_SIGNER_ASWARPOT_2" Name="Microsoft Windows Third Party
Component CA 2012">
<CertRoot Type="TBS"
Value="CEC1AFD0E310C55C1DCC601AB8E172917706AA32FB5EAF826813547FDF02DD46" />
<CertPublisher Value="Microsoft Windows Hardware Compatibility
Publisher" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWARPOT" />
</Signer>
<Signer ID="ID_SIGNER_ASWARPOT_3" Name="DigiCert EV Code Signing CA
(SHA2)">
<CertRoot Type="TBS"
Value="EEC58131DC11CD7F512501B15FDBC6074C603B68CA91F7162D5A042054EDB0CF" />
<CertPublisher Value="Avast plc" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWARPOT" />
</Signer>
<Signer ID="ID_SIGNER_ASWARPOT_4" Name="DigiCert SHA2 Assured ID Code
Signing CA">
<CertRoot Type="TBS"
Value="E767799478F64A34B3F53FF3BB9057FE1768F4AB178041B0DCC0FF1E210CBA65" />
<CertPublisher Value="Avast Software s.r.o." />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWARPOT" />
</Signer>
<Signer ID="ID_SIGNER_ASWARPOT_5" Name="DigiCert High Assurance Code
Signing CA-1">
<CertRoot Type="TBS" Value="1D7E838ACCD498C2E5BA9373AF819EC097BB955C"
/>
<CertPublisher Value="AVAST Software s.r.o." />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWARPOT" />
</Signer>
<Signer ID="ID_SIGNER_ASWARPOT_6" Name="DigiCert SHA2 Assured ID Code
Signing CA">
<CertRoot Type="TBS"
Value="E767799478F64A34B3F53FF3BB9057FE1768F4AB178041B0DCC0FF1E210CBA65" />
<CertPublisher Value="AVAST Software s.r.o." />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWARPOT" />
</Signer>
<Signer ID="ID_SIGNER_ASWSNX_1" Name="DigiCert Trusted G4 Code Signing
RSA4096 SHA384 2021 CA1">
<CertRoot Type="TBS"
Value="65B1D4076A89AE273F57E6EEEDECB3EAE129B4168F76FA7671914CDF461D542255C59
D9B85B916AE0CA6FC0FCF7A8E64" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSNX" />
</Signer>
<Signer ID="ID_SIGNER_ASWSNX_2" Name="DigiCert Trusted Root G4">
<CertRoot Type="TBS"
Value="11533EFD6B326A4E065A936DE300FE0586A479F93D569D2403BD62C7AD35F1B2199DA
EE3ADB510F429C4FC97B4B024E3" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSNX" />
</Signer>
<Signer ID="ID_SIGNER_ASWSNX_3" Name="DigiCert High Assurance Code
Signing CA-1">
<CertRoot Type="TBS" Value="1D7E838ACCD498C2E5BA9373AF819EC097BB955C"
/>
<CertPublisher Value="AVAST Software a.s." />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSNX" />
</Signer>
<Signer ID="ID_SIGNER_ASWSNX_4" Name="DigiCert Assured ID Code Signing
CA-1">
<CertRoot Type="TBS" Value="47F4B9898631773231B32844EC0D49990AC4EB1E"
/>
<CertPublisher Value="AVG Technologies USA, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSNX" />
</Signer>
<Signer ID="ID_SIGNER_MS_ELAM" Name="Microsoft Windows Third Party
Component CA 2014">
<CertRoot Type="TBS"
Value="D8BE9E4D9074088EF818BC6F6FB64955E90378B2754155126FEEBBBD969CF0AE" />
<FileAttribRef RuleID="ID_FILEATTRIB_AVGELAM" />
<FileAttribRef RuleID="ID_FILEATTRIB_EELAM" />
<FileAttribRef RuleID="ID_FILEATTRIB_TMEL" />
<FileAttribRef RuleID="ID_FILEATTRIB_SYMELAM" />
</Signer>
<Signer ID="ID_SIGNER_MS_ELAM_1" Name="Microsoft Code Signing PCA 2010">
<CertRoot Type="TBS"
Value="121AF4B922A74247EA49DF50DE37609CC1451A1FE06B2CB7E1E079B492BD8195" />
<FileAttribRef RuleID="ID_FILEATTRIB_AVGELAM" />
<FileAttribRef RuleID="ID_FILEATTRIB_EELAM" />
<FileAttribRef RuleID="ID_FILEATTRIB_TMEL" />
<FileAttribRef RuleID="ID_FILEATTRIB_SYMELAM" />
</Signer>
<Signer ID="ID_SIGNER_AVGELAM_1" Name="DigiCert High Assurance Code
Signing CA-1">
<CertRoot Type="TBS" Value="1D7E838ACCD498C2E5BA9373AF819EC097BB955C"
/>
<CertPublisher Value="AVAST Software s.r.o." />
<FileAttribRef RuleID="ID_FILEATTRIB_AVGELAM" />
</Signer>
<Signer ID="ID_SIGNER_AVGELAM_2" Name="DigiCert SHA2 Assured ID Code
Signing CA">
<CertRoot Type="TBS"
Value="E767799478F64A34B3F53FF3BB9057FE1768F4AB178041B0DCC0FF1E210CBA65" />
<CertPublisher Value="AVAST Software s.r.o." />
<FileAttribRef RuleID="ID_FILEATTRIB_AVGELAM" />
<FileAttribRef RuleID="ID_FILEATTRIB_ASWSNX" />
</Signer>
<Signer ID="ID_SIGNER_GMEREK" Name="GlobalSign CodeSigning CA - G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="GMEREK Systemy Komputerowe Przemyslaw Gmerek" />
</Signer>
<Signer ID="ID_SIGNER_GMER" Name="GlobalSign CodeSigning CA - G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="GMEREK Systemy Komputerowe Przemyslaw Gmerek" />
<FileAttribRef RuleID="ID_FILEATTRIB_GMER" />
</Signer>
<Signer ID="ID_SIGNER_HWINFO_1" Name="GlobalSign CodeSigning CA - G3">
<CertRoot Type="TBS" Value="F478F0E790D5C8EC6056A3AB2567404A991D2837"
/>
<CertPublisher Value="Zhengzhou Heng Kuai Information Technology Co.,
Ltd" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_2" />
</Signer>
<Signer ID="ID_SIGNER_HWINFO_2" Name="Certum Extended Validation Code
Signing 2021 CA">
<CertRoot Type="TBS"
Value="56F431D13FD6F7974905196A6367D252A955C5FE34DB1E48CFA3EB569707809D63DE4
A0FF8FEF57BE69C23284D9144EA" />
<CertPublisher Value="Martin Malik - REALiX" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_3" />
</Signer>
<Signer ID="ID_SIGNER_HWINFO_3" Name="GlobalSign Primary Object
Publishing CA">
<CertRoot Type="TBS" Value="879269F3F467A6D59641960A62FE9CB419355FF6"
/>
<CertPublisher Value="REALiX" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_3" />
</Signer>
<Signer ID="ID_SIGNER_HWINFO_4" Name="DigiCert EV Code Signing CA
(SHA2)">
<CertRoot Type="TBS"
Value="EEC58131DC11CD7F512501B15FDBC6074C603B68CA91F7162D5A042054EDB0CF" />
<CertPublisher Value="Martin Malik - REALiX" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_2" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_3" />
</Signer>
<Signer ID="ID_SIGNER_HWINFO_5" Name="GlobalSign CodeSigning CA - SHA256
- G3">
<CertRoot Type="TBS"
Value="06936BAC8D2F85D9CE6F7348EA421A1A949219182845192667B0E671FE0E4285" />
<CertPublisher Value="Zhengzhou Heng Kuai Information Technology Co.,
Ltd" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_2" />
</Signer>
<Signer ID="ID_SIGNER_HWINFO_6" Name="GlobalSign CodeSigning CA - G2">
<CertRoot Type="TBS" Value="589A7D4DF869395601BA7538A65AFAE8C4616385"
/>
<CertPublisher Value="Martin Malik - REALiX" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_1" />
<FileAttribRef RuleID="ID_FILEATTRIB_HWINFO_2" />
</Signer>
<Signer ID="ID_SIGNER_ASROCK_RWDRV" Name="VeriSign Class 3 Code Signing
2004 CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="ASROCK Incorporation" />
<FileAttribRef RuleID="ID_FILEATTRIB_RWDRV_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_FAIRPLAY_1" Name="Thawte Code Signing CA - G2">
<CertRoot Type="TBS" Value="95795D2AA2A554A423BC8C6E5B0A016D14887D35"
/>
<CertPublisher Value="Hans Roes" />
<FileAttribRef RuleID="ID_FILEATTRIB_FAIRPLAY" />
</Signer>
<Signer ID="ID_SIGNER_FAIRPLAY_2" Name="thawte SHA256 Code Signing CA">
<CertRoot Type="TBS"
Value="C734685D985B8EA13DB4FC1A6DCD26AA0DDE78B4C3B651EA5D58E32E081B2A41" />
<CertPublisher Value="Hans Roes" />
<FileAttribRef RuleID="ID_FILEATTRIB_FAIRPLAY" />
</Signer>
<Signer ID="ID_SIGNER_FAIRPLAY_3" Name="Thawte Code Signing CA - G2">
<CertRoot Type="TBS" Value="95795D2AA2A554A423BC8C6E5B0A016D14887D35"
/>
<CertPublisher Value="Hans Roes" />
<FileAttribRef RuleID="ID_FILEATTRIB_FAIRPLAY" />
</Signer>
<Signer ID="ID_SIGNER_FAIRPLAY_4" Name="thawte SHA256 Code Signing CA">
<CertRoot Type="TBS"
Value="C734685D985B8EA13DB4FC1A6DCD26AA0DDE78B4C3B651EA5D58E32E081B2A41" />
<CertPublisher Value="Hans Roes" />
<FileAttribRef RuleID="ID_FILEATTRIB_FAIRPLAY" />
</Signer>
<Signer ID="ID_SIGNER_HAXM_1" Name="Symantec Class 3 Extended Validation
Code Signing CA - G2">
<CertRoot Type="TBS"
Value="B3C925B4048C3F7C444D248A2B101186B57CBA39596EB5DCE0E17A4EE4B32F19" />
<CertPublisher Value="XM Cyber LTD" />
<FileAttribRef RuleID="ID_FILEATTRIB_HAXM" />
</Signer>
<Signer ID="ID_SIGNER_HAXM_2" Name="COMODO Code Signing CA 2">
<CertRoot Type="TBS" Value="EE6C8048E2AA17A6506ECC99D41B1BA6794C3252"
/>
<CertPublisher Value="XM LTD" />
<FileAttribRef RuleID="ID_FILEATTRIB_HAXM" />
</Signer>
<Signer ID="ID_SIGNER_HAXM_3" Name="Symantec Class 3 Extended Validation
Code Signing CA - G2">
<CertRoot Type="TBS"
Value="B3C925B4048C3F7C444D248A2B101186B57CBA39596EB5DCE0E17A4EE4B32F19" />
<CertPublisher Value="XM LTD" />
<FileAttribRef RuleID="ID_FILEATTRIB_HAXM" />
</Signer>
<Signer ID="ID_SIGNER_PROCEXP_1" Name="VeriSign Class 3 Code Signing
2009-2 CA">
<CertRoot Type="TBS" Value="4CDC38C800761463749C3CBD94A12F32E49877BF"
/>
<CertPublisher Value="Sysinternals" />
<FileAttribRef RuleID="ID_FILEATTRIB_PROCEXP" />
</Signer>
<Signer ID="ID_SIGNER_PROCEXP_2" Name="VeriSign Class 3 Code Signing
2004 CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="Sysinternals" />
<FileAttribRef RuleID="ID_FILEATTRIB_PROCEXP" />
</Signer>
<Signer ID="ID_SIGNER_PROCEXP_3" Name="Microsoft Windows Hardware
Compatibility PCA">
<CertRoot Type="TBS" Value="C5506BEE3C29254DC5B5A0E6E7A14046522708EF"
/>
<CertPublisher Value="Microsoft Windows Hardware Compatibility
Publisher" />
<FileAttribRef RuleID="ID_FILEATTRIB_PROCEXP" />
</Signer>
<Signer ID="ID_SIGNER_PROCEXP_4" Name="VeriSign Class 3 Code Signing
2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Sysinternals" />
<FileAttribRef RuleID="ID_FILEATTRIB_PROCEXP" />
</Signer>
<Signer ID="ID_SIGNER_PROCEXP_5" Name="Microsoft Windows Hardware
Compatibility PCA">
<CertRoot Type="TBS" Value="6B3242A9A639B0DA4D5882C7EEB402BE6615AD0C"
/>
<CertPublisher Value="Microsoft Windows Hardware Compatibility
Publisher" />
<FileAttribRef RuleID="ID_FILEATTRIB_PROCEXP" />
</Signer>
<Signer ID="ID_SIGNER_OPENLIBSYS" Name="GlobalSign Primary Object
Publishing CA">
<CertRoot Type="TBS" Value="041750993D7C9E063F02DFE74699598640911AAB"
/>
<CertPublisher Value="Noriyuki MIYAZAKI" />
<FileAttribRef RuleID="ID_FILEATTRIB_OPENLIBSYS" />
</Signer>
<Signer ID="ID_SIGNER_PCDOC" Name="DigiCert EV Code Signing CA">
<CertRoot Type="TBS" Value="2D54C16A8F8B69CCDEA48D0603C132F547A5CF75"
/>
<CertPublisher Value="PC-Doctor, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_PCDOC" />
</Signer>
<Signer ID="ID_SIGNER_SYSDRV3S" Name="GlobalSign 3S-Smart">
<CertRoot Type="TBS"
Value="BD1765C56594221373893EF26D97F88C144FB0E5A0111215B45D7239C3444DF7" />
<CertPublisher Value="3S-Smart Software Solutions GmbH" />
<FileAttribRef RuleID="ID_FILEATTRIB_SYSDRV3S" />
</Signer>
<Signer ID="ID_SIGNER_PAVEL_Y_1" Name="DigiCert SHA2 Assured ID Code
Signing CA">
<CertRoot Type="TBS"
Value="E767799478F64A34B3F53FF3BB9057FE1768F4AB178041B0DCC0FF1E210CBA65" />
<CertPublisher Value="Pavel Yosifovich" />
</Signer>
<Signer ID="ID_SIGNER_PAVEL_Y_2" Name="DigiCert SHA2 High Assurance Code
Signing CA">
<CertRoot Type="TBS"
Value="0BF095B845B69928B5D7DFD1C42AE4F90FEB8DC97F7830598C93E848877021FB" />
<CertPublisher Value="Pavel Yosifovich" />
</Signer>
<Signer ID="ID_SIGNER_ALSYSIO_1" Name="COMODO RSA Code Signing CA">
<CertRoot Type="TBS"
Value="4805A7E23D6C8FF5E149F197B744BCB2346E73F19A48835A2F64129183981109256B7
5EA371A331746D01FD4E135AB6E" />
<CertPublisher Value="ALCPU" />
<FileAttribRef RuleID="ID_FILEATTRIB_ALSYSIO" />
</Signer>
<Signer ID="ID_SIGNER_ALSYSIO_2" Name="UTN-USERFirst-Object">
<CertRoot Type="TBS" Value="C45627B5584BF62327DF60D6185744A2D2F2BCBF"
/>
<CertPublisher Value="ALCPU" />
<FileAttribRef RuleID="ID_FILEATTRIB_ALSYSIO" />
</Signer>
<Signer ID="ID_SIGNER_MICKS" Name="Microsoft Windows Third Party
Component CA 2014">
<CertRoot Type="TBS"
Value="D8BE9E4D9074088EF818BC6F6FB64955E90378B2754155126FEEBBBD969CF0AE" />
<CertOemID Value="Micks Auto Transport" />
</Signer>
<Signer ID="ID_SIGNER_ETDSUPPORT" Name="DigiCert Trusted G4 Code Signing
RSA4096 SHA384 2021 CA1">
<CertRoot Type="TBS"
Value="65B1D4076A89AE273F57E6EEEDECB3EAE129B4168F76FA7671914CDF461D542255C59
D9B85B916AE0CA6FC0FCF7A8E64" />
<CertPublisher Value="HP Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_ETDSUPPORT" />
</Signer>
<Signer ID="ID_SIGNER_CPUZ_1" Name="DigiCert EV Code Signing CA">
<CertRoot Type="TBS" Value="2D54C16A8F8B69CCDEA48D0603C132F547A5CF75"
/>
<CertPublisher Value="CPUID S.A.R.L.U." />
<FileAttribRef RuleID="ID_FILEATTRIB_CPUZ_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_CPUZ_2" Name="Certum Extended Validation Code
Signing 2021 CA">
<CertRoot Type="TBS"
Value="56F431D13FD6F7974905196A6367D252A955C5FE34DB1E48CFA3EB569707809D63DE4
A0FF8FEF57BE69C23284D9144EA" />
<CertPublisher Value="CPUID" />
<FileAttribRef RuleID="ID_FILEATTRIB_CPUZ_DRIVER" />
</Signer>
<Signer ID="ID_SIGNER_BAOJI" Name="VeriSign Class 3 Code Signing 2010 CA
- Baoji zhihengtaiye co.,ltd">
<CertRoot Type="TBS" Value="ED37AD43BC52426943019F77F35ED1A6B063B5B7"
/>
</Signer>
<Signer ID="ID_SIGNER_BEIJING_CHUNBAI" Name="VeriSign Class 3 Code
Signing 2010 CA - Beijing Chunbai Technology Development Co., Ltd">
<CertRoot Type="TBS" Value="C4CD7D2A3E12022BCFE2852A14438C7F2BD3A959"
/>
</Signer>
<Signer ID="ID_SIGNER_BEIJING_VSK" Name="Symantec Class 3 Code - Beijing
VSK Soft Development Co.,Ltd; Thumbprint:
49B76C0AD6085E2F7385644F36CECC09F320BCF4">
<CertRoot Type="TBS"
Value="399B4EC286EC1963F1BB36206F3200C23DBF1717E24CF0868335FF3E13A45EA0" />
</Signer>
<Signer ID="ID_SIGNER_GEOTRUST_SRL_2009" Name="HT Srl Digital ID Class 3
- Microsoft Software Validation v2">
<CertRoot Type="TBS" Value="D70EDFA009A76BD8250D74E9EE92EB9EAD7D4CB3"
/>
</Signer>
<Signer ID="ID_SIGNER_GEOTRUST_SRL_2010" Name="HT Srl Digital ID Class 3
- Microsoft Software Validation v2">
<CertRoot Type="TBS" Value="E5BA2ABBD1DC89F143A66A3CDCDA26D968758E2D"
/>
</Signer>
<Signer ID="ID_SIGNER_GLOBAL_SOFT" Name="Symantec Class 3 SHA256 Code
Signing CA - Global Software, LLC">
<CertRoot Type="TBS"
Value="A79C023D3452B2F27E7BC36D2588C28564B2ABABBF78AFAC844152B8DD3A89D4" />
</Signer>
<Signer ID="ID_SIGNER_GOOD_WEI" Name="thawte SHA256 Code Signing CA - 善
君 韦">
<CertRoot Type="TBS"
Value="8438D529DC1D87E288CE3C8830A782BB167E20A6E1FD37624D5DF21340FF6B25" />
</Signer>
<Signer ID="ID_SIGNER_HANDAN" Name="Handan City Congtai District LiKang
Daily Goods Department">
<CertRoot Type="TBS" Value="CCCAE21FBC083F5D1AF6997BB3F29ED9915E7324"
/>
</Signer>
<Signer ID="ID_SIGNER_HYPERTECH" Name="VeriSign Class 3 Code Signing
2010 CA - HYPER TECH CO., LTD.">
<CertRoot Type="TBS" Value="5CBF0640A92AB3779F2AF481DAF0ADFEF9BD99F5"
/>
</Signer>
<Signer ID="ID_SIGNER_NANJING" Name="Nanjing Zhixiao Information
Technology Co.,Ltd">
<CertRoot Type="TBS" Value="F5E1C4D98F9CE552EAD3776C16F3AD91FE5F3984"
/>
</Signer>
<Signer ID="ID_SIGNER_TRUST_ASIA" Name="上海域联软件技术有限公司">
<CertRoot Type="TBS" Value="232A71B4D1734EAC2CFC6EA554C86DE34F9F8B72"
/>
</Signer>
<Signer ID="ID_SIGNER_JEROMIN_CODY_ERIC" Name="Jeromin Cody Eric">
<CertRoot Type="TBS"
Value="DFA6171201B51A2EC174310E8FB9F4C0FDE2D365235E589DED0213C5279BEA6E" />
</Signer>
<Signer ID="ID_SIGNER_SAASAME" Name="SaaSaMe Ltd.">
<CertRoot Type="TBS" Value="A86DE66D8198E4272859881476A6F9936034A482"
/>
</Signer>
<Signer ID="ID_SIGNER_JCOS_1" Name="JCOS Media srvnetbus">
<CertRoot Type="TBS" Value="06530FA1FA2D0954A87C4AA1891699E7C81AB2CA"
/>
</Signer>
<Signer ID="ID_SIGNER_JCOS_2" Name="JCOS Media pshedmp">
<CertRoot Type="TBS" Value="8A3994CC7AA70F5480166A96A32EB10BAB0A7A36"
/>
</Signer>
<Signer ID="ID_SIGNER_HERMETICWIPER_1" Name="DigiCert Assured ID Code
Signing CA-1">
<CertRoot Type="TBS" Value="47F4B9898631773231B32844EC0D49990AC4EB1E"
/>
<CertPublisher Value="CHENGDU YIWO Tech Development Co., Ltd." />
</Signer>
<Signer ID="ID_SIGNER_HERMETICWIPER_2" Name="Symantec Class 3 Extended
Validation Code Signing CA - G2">
<CertRoot Type="TBS"
Value="B3C925B4048C3F7C444D248A2B101186B57CBA39596EB5DCE0E17A4EE4B32F19" />
<CertPublisher Value="Chengdu Yiwo Tech Development Co., Ltd." />
</Signer>
<Signer ID="ID_SIGNER_HERMETICWIPER_3" Name="VeriSign Class 3 Code
Signing 2004 CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="CHENGDU YIWO Tech Development Co., Ltd." />
</Signer>
<Signer ID="ID_SIGNER_HERMETICWIPER_4" Name="VeriSign Class 3 Code
Signing 2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="CHENGDU YIWO Tech Development Co., Ltd." />
</Signer>
<Signer ID="ID_SIGNER_NVIDIA_2007" Name="Leaked 2007 NVIDIA Corporation
Verisign Class 3 Code Signing 2004 CA">
<CertRoot Type="TBS" Value="80854F578E2A3B5552EA839BA4F98DDFE94B2381"
/>
</Signer>
<Signer ID="ID_SIGNER_NVIDIA_2011" Name="Leaked 2011 NVIDIA Corporation
Verisign Class 3 Code Signing 2010 CA">
<CertRoot Type="TBS" Value="15C37DBEBE6FCC77108E3D7AD982676D3D5E77F7"
/>
</Signer>
<Signer ID="ID_SIGNER_NVIDIA_2015" Name="Leaked 2015 NVIDIA Corporation
Verisign Class 3 Code Signing 2010 CA">
<CertRoot Type="TBS" Value="F049A238763D4A90B148AB10A500F96EBF1DC436"
/>
</Signer>
<Signer ID="ID_SIGNER_VBOX_ORCALE" Name="VeriSign Class 3 Code Signing
2010 CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Oracle Corporation" />
<FileAttribRef RuleID="ID_FILEATTRIB_VBOX" />
</Signer>
<Signer ID="ID_SIGNER_VBOX_SUN" Name="VeriSign Class 3 Code Signing 2004
CA">
<CertRoot Type="TBS" Value="C7FC1727F5B75A6421A1F95C73BBDB23580C48E5"
/>
<CertPublisher Value="Sun Microsystems, Inc." />
<FileAttribRef RuleID="ID_FILEATTRIB_VBOX" />
</Signer>
<Signer ID="ID_SIGNER_ZEMANA_1" Name="DigiCert High Assurance Code
Signing CA-1">
<CertRoot Type="TBS" Value="1D7E838ACCD498C2E5BA9373AF819EC097BB955C"
/>
<CertPublisher Value="Zemana Ltd." />
</Signer>
<Signer ID="ID_SIGNER_ZEMANA_2" Name="VeriSign Class 3 Code Signing 2010
CA">
<CertRoot Type="TBS" Value="4843A82ED3B1F2BFBEE9671960E1940C942F688D"
/>
<CertPublisher Value="Zemana Ltd." />
</Signer>
<Signer ID="ID_SIGNER_ZEMANA_3" Name="Microsoft Windows Third Party
Component CA 2014">
<CertRoot Type="TBS"
Value="D8BE9E4D9074088EF818BC6F6FB64955E90378B2754155126FEEBBBD969CF0AE" />
<CertOemID Value="ZEMANA A.Ş." />
</Signer>
</Signers>
<!--Driver Signing Scenarios-->
<SigningScenarios>
<SigningScenario Value="131"
ID="ID_SIGNINGSCENARIO_DENIED_VULN_MAL_SIGNERS" FriendlyName="Signers of
known vulnerable or malicious drivers">
<ProductSigners>
<DeniedSigners>
<DeniedSigner SignerId="ID_SIGNER_AGNITUM_2004" />
<DeniedSigner SignerId="ID_SIGNER_AGNITUM_2009" />
<DeniedSigner SignerId="ID_SIGNER_AGNITUM_2010" />
<DeniedSigner SignerId="ID_SIGNER_AGNITUM_2010_1" />
<DeniedSigner SignerId="ID_SIGNER_ALSYSIO_1" />
<DeniedSigner SignerId="ID_SIGNER_ALSYSIO_2" />
<DeniedSigner SignerId="ID_SIGNER_AMDPP" />
<DeniedSigner SignerId="ID_SIGNER_ATILLK" />
<DeniedSigner SignerId="ID_SIGNER_ASROCK_RWDRV" />
<DeniedSigner SignerId="ID_SIGNER_ASWARPOT_1" />
<DeniedSigner SignerId="ID_SIGNER_ASWARPOT_2" />
<DeniedSigner SignerId="ID_SIGNER_ASWARPOT_3" />
<DeniedSigner SignerId="ID_SIGNER_ASWARPOT_4" />
<DeniedSigner SignerId="ID_SIGNER_ASWARPOT_5" />
<DeniedSigner SignerId="ID_SIGNER_ASWARPOT_6" />
<DeniedSigner SignerId="ID_SIGNER_ASWSNX_1" />
<DeniedSigner SignerId="ID_SIGNER_ASWSNX_2" />
<DeniedSigner SignerId="ID_SIGNER_ASWSNX_3" />
<DeniedSigner SignerId="ID_SIGNER_ASWSNX_4" />
<DeniedSigner SignerId="ID_SIGNER_AVGELAM_1" />
<DeniedSigner SignerId="ID_SIGNER_AVGELAM_2" />
<DeniedSigner SignerId="ID_SIGNER_BAOJI" />
<DeniedSigner SignerId="ID_SIGNER_BEIJING_CHUNBAI" />
<DeniedSigner SignerId="ID_SIGNER_BEIJING_VSK" />
<DeniedSigner SignerId="ID_SIGNER_CAPCOM" />
<DeniedSigner SignerId="ID_SIGNER_CHEAT_ENGINE" />
<DeniedSigner SignerId="ID_SIGNER_COMODO_IQVW" />
<DeniedSigner SignerId="ID_SIGNER_CPUZ_1" />
<DeniedSigner SignerId="ID_SIGNER_CPUZ_2" />
<DeniedSigner SignerId="ID_SIGNER_DIGICERT_EV" />
<DeniedSigner SignerId="ID_SIGNER_ELBY" />
<DeniedSigner SignerId="ID_SIGNER_ENE" />
<DeniedSigner SignerId="ID_SIGNER_ETDSUPPORT" />
<DeniedSigner SignerId="ID_SIGNER_FAIRPLAY_1" />
<DeniedSigner SignerId="ID_SIGNER_FAIRPLAY_2" />
<DeniedSigner SignerId="ID_SIGNER_FAIRPLAY_3" />
<DeniedSigner SignerId="ID_SIGNER_FAIRPLAY_4" />
<DeniedSigner SignerId="ID_SIGNER_GEOTRUST_SRL_2009" />
<DeniedSigner SignerId="ID_SIGNER_GEOTRUST_SRL_2010" />
<DeniedSigner SignerId="ID_SIGNER_GETAC" />
<DeniedSigner SignerId="ID_SIGNER_GLOBAL_SOFT" />
<DeniedSigner SignerId="ID_SIGNER_GLOBALSIGN_CHEAT_ENGINE" />
<DeniedSigner SignerId="ID_SIGNER_GLOBALSIGN_G2_CHEAT_ENGINE" />
<DeniedSigner SignerId="ID_SIGNER_GLOBALSIGN_G2_MICROSTAR" />
<DeniedSigner SignerId="ID_SIGNER_GLOBALSIGN_MICROSTAR" />
<DeniedSigner SignerId="ID_SIGNER_GLOBALSIGN_TG_SOFT" />
<DeniedSigner SignerId="ID_SIGNER_GMER" />
<DeniedSigner SignerId="ID_SIGNER_GMEREK" />
<DeniedSigner SignerId="ID_SIGNER_GOOD_WEI" />
<DeniedSigner SignerId="ID_SIGNER_HANDAN" />
<DeniedSigner SignerId="ID_SIGNER_HAXM_1" />
<DeniedSigner SignerId="ID_SIGNER_HAXM_2" />
<DeniedSigner SignerId="ID_SIGNER_HAXM_3" />
<DeniedSigner SignerId="ID_SIGNER_HYPERTECH" />
<DeniedSigner SignerId="ID_SIGNER_HP" />
<DeniedSigner SignerId="ID_SIGNER_HW_A" />
<DeniedSigner SignerId="ID_SIGNER_HW_B" />
<DeniedSigner SignerId="ID_SIGNER_HW_C" />
<DeniedSigner SignerId="ID_SIGNER_HW_D" />
<DeniedSigner SignerId="ID_SIGNER_HWINFO_1" />
<DeniedSigner SignerId="ID_SIGNER_HWINFO_2" />
<DeniedSigner SignerId="ID_SIGNER_HWINFO_3" />
<DeniedSigner SignerId="ID_SIGNER_HWINFO_4" />
<DeniedSigner SignerId="ID_SIGNER_HWINFO_5" />
<DeniedSigner SignerId="ID_SIGNER_HWINFO_6" />
<DeniedSigner SignerId="ID_SIGNER_HWRWDRV_1" />
<DeniedSigner SignerId="ID_SIGNER_HWRWDRV_2" />
<DeniedSigner SignerId="ID_SIGNER_INTEL_IQVW" />
<DeniedSigner SignerId="ID_SIGNER_IOBITUNLOCKER_1" />
<DeniedSigner SignerId="ID_SIGNER_IOBITUNLOCKER_2" />
<DeniedSigner SignerId="ID_SIGNER_IOBITUNLOCKER_3" />
<DeniedSigner SignerId="ID_SIGNER_IOBITUNLOCKER_4" />
<DeniedSigner SignerId="ID_SIGNER_JCOS_1" />
<DeniedSigner SignerId="ID_SIGNER_JCOS_2" />
<DeniedSigner SignerId="ID_SIGNER_JEROMIN_CODY_ERIC" />
<DeniedSigner SignerId="ID_SIGNER_LV_DIAG" />
<DeniedSigner SignerId="ID_SIGNER_LV_DIAG_2" />
<DeniedSigner SignerId="ID_SIGNER_LV_LOGITECH" />
<DeniedSigner SignerId="ID_SIGNER_MAN_MUS" />
<DeniedSigner SignerId="ID_SIGNER_MB_RB_HACKS" />
<DeniedSigner SignerId="ID_SIGNER_MICKS" />
<DeniedSigner SignerId="ID_SIGNER_MIMIKATZ_KERNEL" />
<DeniedSigner SignerId="ID_SIGNER_MIMIKATZ_KERNEL_SHA2" />
<DeniedSigner SignerId="ID_SIGNER_MIMIKATZ_USER" />
<DeniedSigner SignerId="ID_SIGNER_MS_ELAM" />
<DeniedSigner SignerId="ID_SIGNER_MS_ELAM_1" />
<DeniedSigner SignerId="ID_SIGNER_MYDRIVERS_1" />
<DeniedSigner SignerId="ID_SIGNER_MYDRIVERS_2" />
<DeniedSigner SignerId="ID_SIGNER_MYDRIVERS_3" />
<DeniedSigner SignerId="ID_SIGNER_NANJING" />
<DeniedSigner SignerId="ID_SIGNER_NVFLASH" />
<DeniedSigner SignerId="ID_SIGNER_NVFLASH_2" />
<DeniedSigner SignerId="ID_SIGNER_NVFLASH_3" />
<DeniedSigner SignerId="ID_SIGNER_OPENLIBSYS"/>
<DeniedSigner SignerId="ID_SIGNER_PAN" />
<DeniedSigner SignerId="ID_SIGNER_PAVEL_Y_1" />
<DeniedSigner SignerId="ID_SIGNER_PAVEL_Y_2" />
<DeniedSigner SignerId="ID_SIGNER_PHYSMEM" />
<DeniedSigner SignerId="ID_SIGNER_PCDOC"/>
<DeniedSigner SignerId="ID_SIGNER_PROCEXP_1" />
<DeniedSigner SignerId="ID_SIGNER_PROCEXP_2" />
<DeniedSigner SignerId="ID_SIGNER_PROCEXP_3" />
<DeniedSigner SignerId="ID_SIGNER_PROCEXP_4" />
<DeniedSigner SignerId="ID_SIGNER_PROCEXP_5" />
<DeniedSigner SignerId="ID_SIGNER_REALTEK" />
<DeniedSigner SignerId="ID_SIGNER_RWEVERY" />
<DeniedSigner SignerId="ID_SIGNER_SAASAME" />
<DeniedSigner SignerId="ID_SIGNER_SANDRA" />
<DeniedSigner SignerId="ID_SIGNER_SANDRA_THAWTE" />
<DeniedSigner SignerId="ID_SIGNER_SPEEDFAN" />
<DeniedSigner SignerId="ID_SIGNER_SYSDRV3S" />
<DeniedSigner SignerId="ID_SIGNER_PHYMEM" />
<DeniedSigner SignerId="ID_SIGNER_PHYMEM_1" />
<DeniedSigner SignerId="ID_SIGNER_PHYMEM_2" />
<DeniedSigner SignerId="ID_SIGNER_SYMANTEC_CLASS_3" />
<DeniedSigner SignerId="ID_SIGNER_TRUST_ASIA" />
<DeniedSigner SignerId="ID_SIGNER_VBOX" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_2004" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_2004_BIOSTAR" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_2004_ASUS_BS_DEF" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_2009" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_2009_BIOSTAR" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_2009_REALTEK" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_2010" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_2010_2" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_2010_BIOSTAR" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_AMD" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_INSYDE" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_NOVELL" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_TG_SOFT" />
<DeniedSigner SignerId="ID_SIGNER_VERISIGN_TOSHIBA" />
<DeniedSigner SignerId="ID_SIGNER_VMDRV" />
<DeniedSigner SignerId="ID_SIGNER_WINDOWS_3RD_PARTY_2010" />
<DeniedSigner SignerId="ID_SIGNER_WINDOWS_3RD_PARTY_2012" />
<DeniedSigner SignerId="ID_SIGNER_WINDOWS_3RD_PARTY_2014" />
<DeniedSigner SignerId="ID_SIGNER_WISEUNLO" />
<DeniedSigner SignerId="ID_SIGNER_WISEUNLO_1" />
<DeniedSigner SignerId="ID_SIGNER_WISEUNLO_2" />
<DeniedSigner SignerId="ID_SIGNER_HERMETICWIPER_1" />
<DeniedSigner SignerId="ID_SIGNER_HERMETICWIPER_2" />
<DeniedSigner SignerId="ID_SIGNER_HERMETICWIPER_3" />
<DeniedSigner SignerId="ID_SIGNER_HERMETICWIPER_4" />
<DeniedSigner SignerId="ID_SIGNER_NVIDIA_2007" />
<DeniedSigner SignerId="ID_SIGNER_NVIDIA_2011" />
<DeniedSigner SignerId="ID_SIGNER_NVIDIA_2015" />
<DeniedSigner SignerId="ID_SIGNER_VBOX_ORCALE" />
<DeniedSigner SignerId="ID_SIGNER_VBOX_SUN" />
<DeniedSigner SignerId="ID_SIGNER_ZEMANA_1" />
<DeniedSigner SignerId="ID_SIGNER_ZEMANA_2" />
<DeniedSigner SignerId="ID_SIGNER_ZEMANA_3" />
</DeniedSigners>
<FileRulesRef>
<FileRuleRef RuleID="ID_ALLOW_ALL_1" />
<FileRuleRef RuleID="ID_DENY_AGENT64_SHA1" />
<FileRuleRef RuleID="ID_DENY_AGENT64_SHA256" />
<FileRuleRef RuleID="ID_DENY_AGENT64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_AGENT64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA1" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA256" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA1_1" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA256_1" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA1_PAGE_1" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA256_PAGE_1" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA1_2" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA256_2" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA1_PAGE_2" />
<FileRuleRef RuleID="ID_DENY_ASIO_32_SHA256_PAGE_2" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA1" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA256" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA1_1" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA256_1" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA1_PAGE_1" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA256_PAGE_1" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA1_2" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA256_2" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA1_PAGE_2" />
<FileRuleRef RuleID="ID_DENY_ASIO_64_SHA256_PAGE_2" />
<FileRuleRef RuleID="ID_DENY_ASRDRV10_SHA1" />
<FileRuleRef RuleID="ID_DENY_ASRDRV10_SHA256" />
<FileRuleRef RuleID="ID_DENY_ASRDRV10_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASRDRV10_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASRDRV101_SHA1" />
<FileRuleRef RuleID="ID_DENY_ASRDRV101_SHA256" />
<FileRuleRef RuleID="ID_DENY_ASRDRV101_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASRDRV101_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASRDRV102_SHA1" />
<FileRuleRef RuleID="ID_DENY_ASRDRV102_SHA256" />
<FileRuleRef RuleID="ID_DENY_ASRDRV102_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASRDRV102_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASRDRV103_SHA1" />
<FileRuleRef RuleID="ID_DENY_ASRDRV103_SHA256" />
<FileRuleRef RuleID="ID_DENY_ASRDRV103_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASRDRV103_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_5A" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_5B" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_5C" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_5D" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_5E" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_5F" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_60" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_61" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_62" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_63" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_64" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_65" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_66" />
<FileRuleRef RuleID="ID_DENY_ASRDRV104_67" />
<FileRuleRef RuleID="ID_DENY_ASRSETUPDRV103_39" />
<FileRuleRef RuleID="ID_DENY_ASRSETUPDRV103_3A" />
<FileRuleRef RuleID="ID_DENY_ASRSETUPDRV103_3B" />
<FileRuleRef RuleID="ID_DENY_ASRSETUPDRV103_3C" />
<FileRuleRef RuleID="ID_DENY_ASRSETUPDRV103_3D" />
<FileRuleRef RuleID="ID_DENY_ASRSETUPDRV103_3E" />
<FileRuleRef RuleID="ID_DENY_ASRSETUPDRV103_3F" />
<FileRuleRef RuleID="ID_DENY_ASRSETUPDRV103_40" />
<FileRuleRef RuleID="ID_DENY_ATILLK_2" />
<FileRuleRef RuleID="ID_DENY_ATILLK_3" />
<FileRuleRef RuleID="ID_DENY_ATILLK_4" />
<FileRuleRef RuleID="ID_DENY_ATILLK_5" />
<FileRuleRef RuleID="ID_DENY_ATILLK_6" />
<FileRuleRef RuleID="ID_DENY_ATILLK_7" />
<FileRuleRef RuleID="ID_DENY_ATILLK_8" />
<FileRuleRef RuleID="ID_DENY_ATILLK_9" />
<FileRuleRef RuleID="ID_DENY_ATILLK_A" />
<FileRuleRef RuleID="ID_DENY_ATILLK_B" />
<FileRuleRef RuleID="ID_DENY_ATILLK_C" />
<FileRuleRef RuleID="ID_DENY_ATILLK_D" />
<FileRuleRef RuleID="ID_DENY_ATILLK_E" />
<FileRuleRef RuleID="ID_DENY_ATILLK_F" />
<FileRuleRef RuleID="ID_DENY_ATILLK_10" />
<FileRuleRef RuleID="ID_DENY_ATILLK_11" />
<FileRuleRef RuleID="ID_DENY_ATILLK_12" />
<FileRuleRef RuleID="ID_DENY_ATILLK_13" />
<FileRuleRef RuleID="ID_DENY_ATILLK_14" />
<FileRuleRef RuleID="ID_DENY_ATILLK_15" />
<FileRuleRef RuleID="ID_DENY_ATILLK_16" />
<FileRuleRef RuleID="ID_DENY_ATILLK_17" />
<FileRuleRef RuleID="ID_DENY_ATILLK_18" />
<FileRuleRef RuleID="ID_DENY_ATILLK_19" />
<FileRuleRef RuleID="ID_DENY_ATILLK_1A" />
<FileRuleRef RuleID="ID_DENY_ATILLK_1B" />
<FileRuleRef RuleID="ID_DENY_ATILLK_1C" />
<FileRuleRef RuleID="ID_DENY_ATILLK_1D" />
<FileRuleRef RuleID="ID_DENY_ATILLK_1E" />
<FileRuleRef RuleID="ID_DENY_ATILLK_1F" />
<FileRuleRef RuleID="ID_DENY_BANDAI_SHA1" />
<FileRuleRef RuleID="ID_DENY_BANDAI_SHA256" />
<FileRuleRef RuleID="ID_DENY_BANDAI_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_BANDAI_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO64_SHA1" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO64_SHA256" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_2" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_3" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_4" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_5" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_6" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_7" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_8" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_9" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_A" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_B" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_C" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_D" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_E" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_F" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_10" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_11" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_12" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_13" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_14" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_15" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_16" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_17" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_18" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_19" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_1A" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_1B" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_1C" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_1D" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_1E" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_1F" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_20" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_21" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_22" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_23" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_24" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_25" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_26" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_27" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_28" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_29" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_2A" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_2B" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_2C" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_2D" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_2E" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_2F" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_30" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_31" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_32" />
<FileRuleRef RuleID="ID_DENY_IOBITUNLOCKER_33" />
<FileRuleRef RuleID="ID_DENY_CAPCOM_SHA1" />
<FileRuleRef RuleID="ID_DENY_CAPCOM_SHA256" />
<FileRuleRef RuleID="ID_DENY_CAPCOM_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_CAPCOM_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_DBUTIL_32_SHA1" />
<FileRuleRef RuleID="ID_DENY_DBUTIL_32_SHA256" />
<FileRuleRef RuleID="ID_DENY_DBUTIL_32_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_DBUTIL_32_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_DBUTIL_64_SHA1" />
<FileRuleRef RuleID="ID_DENY_DBUTIL_64_SHA256" />
<FileRuleRef RuleID="ID_DENY_DBUTIL_64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_DBUTIL_64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_FIDDRV_SHA1" />
<FileRuleRef RuleID="ID_DENY_FIDDRV_SHA256" />
<FileRuleRef RuleID="ID_DENY_FIDDRV_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_FIDDRV_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_FIDDRV64_SHA1" />
<FileRuleRef RuleID="ID_DENY_FIDDRV64_SHA256" />
<FileRuleRef RuleID="ID_DENY_FIDDRV64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_FIDDRV64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_FIDPCIDRV_SHA1" />
<FileRuleRef RuleID="ID_DENY_FIDPCIDRV_SHA256" />
<FileRuleRef RuleID="ID_DENY_FIDPCIDRV_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_FIDPCIDRV_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_FIDPCIDRV64_SHA1" />
<FileRuleRef RuleID="ID_DENY_FIDPCIDRV64_SHA256" />
<FileRuleRef RuleID="ID_DENY_FIDPCIDRV64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_FIDPCIDRV64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_GLCKIO2_SHA1" />
<FileRuleRef RuleID="ID_DENY_GLCKIO2_SHA256" />
<FileRuleRef RuleID="ID_DENY_GLCKIO2_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_GLCKIO2_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_GMER_1" />
<FileRuleRef RuleID="ID_DENY_GMER_2" />
<FileRuleRef RuleID="ID_DENY_GMER_3" />
<FileRuleRef RuleID="ID_DENY_GMER_4" />
<FileRuleRef RuleID="ID_DENY_GMER_5" />
<FileRuleRef RuleID="ID_DENY_GMER_6" />
<FileRuleRef RuleID="ID_DENY_GVCIDRV64_SHA1" />
<FileRuleRef RuleID="ID_DENY_GVCIDRV64_SHA256" />
<FileRuleRef RuleID="ID_DENY_GVCIDRV64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_GVCIDRV64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_WINFLASH64_SHA1" />
<FileRuleRef RuleID="ID_DENY_WINFLASH64_SHA256" />
<FileRuleRef RuleID="ID_DENY_WINFLASH64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_WINFLASH64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_1" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_2" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_3" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_4" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_5" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_6" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_7" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_8" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_9" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_A" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_B" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_C" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_11" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_12" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_13" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_14" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_15" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_16" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_17" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_18" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_19" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_1A" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_1B" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_1C" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_1D" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_1E" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_1F" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_20" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_21" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_22" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_23" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_24" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_25" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_26" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_27" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_28" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_29" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_2A" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_2B" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_2C" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_2D" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_2E" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_2F" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_30" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_31" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_32" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_33" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_34" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_35" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_36" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_37" />
<FileRuleRef RuleID="ID_DENY_AMIFLDRV_38" />
<FileRuleRef RuleID="ID_DENY_ASIO_1"/>
<FileRuleRef RuleID="ID_DENY_ASIO_2"/>
<FileRuleRef RuleID="ID_DENY_ASIO_3"/>
<FileRuleRef RuleID="ID_DENY_ASIO_4"/>
<FileRuleRef RuleID="ID_DENY_ASIO_5"/>
<FileRuleRef RuleID="ID_DENY_ASIO_6"/>
<FileRuleRef RuleID="ID_DENY_ASUPIO64_SHA1" />
<FileRuleRef RuleID="ID_DENY_ASUPIO64_SHA256" />
<FileRuleRef RuleID="ID_DENY_ASUPIO64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_ASUPIO64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_22" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_23" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_24" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_25" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_26" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_27" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_28" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_29" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_2A" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_2B" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_2C" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_2D" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_2E" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_2F" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_30" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_31" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_32" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_33" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_34" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_35" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_36" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_37" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_38" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_39" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_3A" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_3B" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_3C" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_3D" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_3E" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_3F" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_40" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_41" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_42" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_43" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_44" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_45" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_46" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_47" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_48" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_49" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_4A" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_4B" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_4C" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_4D" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_4E" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_4F" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_50" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_51" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_52" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_53" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_54" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_55" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_56" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_57" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_58" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_59" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_5A" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_5B" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_5C" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_5D" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_5E" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_5F" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_60" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_61" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_62" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_63" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_64" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_65" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_66" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_67" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_68" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_69" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_6A" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_6B" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_6C" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_6D" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_6E" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_6F" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_70" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_71" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_72" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_73" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_74" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_75" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_76" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_77" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_78" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_79" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_7A" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_7B" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_7C" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_7D" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_7E" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_7F" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_80" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_81" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_82" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_83" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_84" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_85" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_86" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_87" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_88" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_89" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_8A" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_8B" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_8C" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_8D" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_8E" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_8F" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_90" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_91" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_92" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_93" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_94" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_95" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_96" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_97" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_98" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_99" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_9A" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_9B" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_9C" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_9D" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_9E" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_9F" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A0" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A1" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A2" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A3" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A4" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A5" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A6" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A7" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A8" />
<FileRuleRef RuleID="ID_DENY_BEDAISY_A9" />
<FileRuleRef RuleID="ID_DENY_BSFLASH64_SHA1" />
<FileRuleRef RuleID="ID_DENY_BSFLASH64_SHA256" />
<FileRuleRef RuleID="ID_DENY_BSFLASH64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_BSFLASH64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_BSHWMIO64_SHA1" />
<FileRuleRef RuleID="ID_DENY_BSHWMIO64_SHA256" />
<FileRuleRef RuleID="ID_DENY_BSHWMIO64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_BSHWMIO64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_BSHWMIO64_SHA1_1" />
<FileRuleRef RuleID="ID_DENY_BSHWMIO64_SHA256_1" />
<FileRuleRef RuleID="ID_DENY_BSHWMIO64_SHA1_PAGE_1" />
<FileRuleRef RuleID="ID_DENY_BSHWMIO64_SHA256_PAGE_1" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_08" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_09" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_10" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_11" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_12" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_13" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_14" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_15" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_16" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_17" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_18" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_19" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_1A" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_1B" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_1C" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_1D" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_1E" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_1F" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_20" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_21" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_22" />
<FileRuleRef RuleID="ID_DENY_BS_RCIO_23" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_1" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_2" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_3" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_4" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_5" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_6" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_8" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_9" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_10"/>
<FileRuleRef RuleID="ID_DENY_DHKERNEL_11" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_12" />
<FileRuleRef RuleID="ID_DENY_DHKERNEL_13" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_12" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_13" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_14" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_15" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_16" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_17" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_18" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_19" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_1A" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_1B" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_1C" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_1D" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_1E" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_1F" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_20" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_21" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_22" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_23" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_24" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_25" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_26" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_27" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_28" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_29" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_2A" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_2B" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_2C" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_2D" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_2E" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_2F" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_30" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_31" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_32" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_33" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_34" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_35" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_36" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_37" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_38" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_39" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_3A" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_3B" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_42" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_43" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_44" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_45" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_46" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_47" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_48" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_49" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_4A" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_4B" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_4C" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_4D" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_4E" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_4F" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_50" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_51" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_52" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_53" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_54" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_55" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_56" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_57" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_58" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_59" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_5A" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_5B" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_5C" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_5D" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_5E" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_5F" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_60" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_61" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_62" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_63" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_64" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_65" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_66" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_67" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_68" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_69" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_6A" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_6B" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_6C" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_6D" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_6E" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_6F" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_70" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_71" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_72" />
<FileRuleRef RuleID="ID_DENY_DIRECTIO_73" />
<FileRuleRef RuleID="ID_DENY_ECHO_1" />
<FileRuleRef RuleID="ID_DENY_ECHO_2" />
<FileRuleRef RuleID="ID_DENY_ECHO_3" />
<FileRuleRef RuleID="ID_DENY_ECHO_4" />
<FileRuleRef RuleID="ID_DENY_ECHO_5" />
<FileRuleRef RuleID="ID_DENY_ECHO_6" />
<FileRuleRef RuleID="ID_DENY_ECHO_7" />
<FileRuleRef RuleID="ID_DENY_ECHO_8" />
<FileRuleRef RuleID="ID_DENY_ECHO_9" />
<FileRuleRef RuleID="ID_DENY_ECHO_A" />
<FileRuleRef RuleID="ID_DENY_ECHO_B" />
<FileRuleRef RuleID="ID_DENY_ECHO_C" />
<FileRuleRef RuleID="ID_DENY_EIO64_1" />
<FileRuleRef RuleID="ID_DENY_EIO64_2" />
<FileRuleRef RuleID="ID_DENY_EIO64_3" />
<FileRuleRef RuleID="ID_DENY_EIO64_4" />
<FileRuleRef RuleID="ID_DENY_EIO64_5" />
<FileRuleRef RuleID="ID_DENY_EIO64_6" />
<FileRuleRef RuleID="ID_DENY_EIO64_7" />
<FileRuleRef RuleID="ID_DENY_EIO64_8" />
<FileRuleRef RuleID="ID_DENY_HW_22" />
<FileRuleRef RuleID="ID_DENY_HW_23" />
<FileRuleRef RuleID="ID_DENY_HW_24" />
<FileRuleRef RuleID="ID_DENY_HW_25" />
<FileRuleRef RuleID="ID_DENY_HWRWDRV_2" />
<FileRuleRef RuleID="ID_DENY_HWRWDRV_3" />
<FileRuleRef RuleID="ID_DENY_HWRWDRV_4" />
<FileRuleRef RuleID="ID_DENY_HWRWDRV_5" />
<FileRuleRef RuleID="ID_DENY_HWRWDRV_6" />
<FileRuleRef RuleID="ID_DENY_HWRWDRV_7" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_11" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_12" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_13" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_14" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_15" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_16" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_17" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_18" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_19" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_1A" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_1B" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_1C" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_1D" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_1E" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_1F" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_20" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_21" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_22" />
<FileRuleRef RuleID="ID_DENY_INPOUTX_23" />
<FileRuleRef RuleID="ID_DENY_KLMD" />
<FileRuleRef RuleID="ID_DENY_LGCORETEMP_1" />
<FileRuleRef RuleID="ID_DENY_LGCORETEMP_2" />
<FileRuleRef RuleID="ID_DENY_LGCORETEMP_3" />
<FileRuleRef RuleID="ID_DENY_LGCORETEMP_4" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_1" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_2" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_3" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_4" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_5" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_6" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_7" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_8" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_9" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_A" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_B" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_C" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_D" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_E" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_F" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_10" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_11" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_12" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_13" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_14" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_15" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_16" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_17" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_18" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_19" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_1A" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_1B" />
<FileRuleRef RuleID="ID_DENY_MHYPROT2_1C" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_11" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_12" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_13" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_14" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_15" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_16" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_17" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_18" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_19" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_1A" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_1B" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_1C" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_1D" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_1E" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_1F" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_20" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_21" />
<FileRuleRef RuleID="ID_DENY_MHYPROT3_22" />
<FileRuleRef RuleID="ID_DENY_MHYPROTECT_1" />
<FileRuleRef RuleID="ID_DENY_MHYPROTECT_2" />
<FileRuleRef RuleID="ID_DENY_MHYPROTECT_3" />
<FileRuleRef RuleID="ID_DENY_MHYPROTECT_4" />
<FileRuleRef RuleID="ID_DENY_MHYPROTECT_5" />
<FileRuleRef RuleID="ID_DENY_MHYPROTECT_6" />
<FileRuleRef RuleID="ID_DENY_MHYPROTECT_7" />
<FileRuleRef RuleID="ID_DENY_MHYPROTECT_8" />
<FileRuleRef RuleID="ID_DENY_MHYPROTNAP_1" />
<FileRuleRef RuleID="ID_DENY_MHYPROTNAP_2" />
<FileRuleRef RuleID="ID_DENY_MHYPROTNAP_3" />
<FileRuleRef RuleID="ID_DENY_MHYPROTNAP_4" />
<FileRuleRef RuleID="ID_DENY_MHYPROTRG_1" />
<FileRuleRef RuleID="ID_DENY_MHYPROTRG_2" />
<FileRuleRef RuleID="ID_DENY_MHYPROTRG_3" />
<FileRuleRef RuleID="ID_DENY_MHYPROTRG_4" />
<FileRuleRef RuleID="ID_DENY_MHYPROTRG_5" />
<FileRuleRef RuleID="ID_DENY_MHYPROTRG_6" />
<FileRuleRef RuleID="ID_DENY_MHYPROTRG_7" />
<FileRuleRef RuleID="ID_DENY_MHYPROTRG_8" />
<FileRuleRef RuleID="ID_DENY_MSIO_1" />
<FileRuleRef RuleID="ID_DENY_MSIO_2" />
<FileRuleRef RuleID="ID_DENY_MSIO_3" />
<FileRuleRef RuleID="ID_DENY_MSIO_4" />
<FileRuleRef RuleID="ID_DENY_MSIO_5" />
<FileRuleRef RuleID="ID_DENY_MSIO_6" />
<FileRuleRef RuleID="ID_DENY_MSIO_7" />
<FileRuleRef RuleID="ID_DENY_MSIO_8" />
<FileRuleRef RuleID="ID_DENY_MSIO_9" />
<FileRuleRef RuleID="ID_DENY_MSIO_10" />
<FileRuleRef RuleID="ID_DENY_MSIO_11" />
<FileRuleRef RuleID="ID_DENY_MSIO_12" />
<FileRuleRef RuleID="ID_DENY_MSR_1" />
<FileRuleRef RuleID="ID_DENY_MSR_2" />
<FileRuleRef RuleID="ID_DENY_MSR_3" />
<FileRuleRef RuleID="ID_DENY_MSR_4" />
<FileRuleRef RuleID="ID_DENY_MSR_5" />
<FileRuleRef RuleID="ID_DENY_MSR_6" />
<FileRuleRef RuleID="ID_DENY_MSR_7" />
<FileRuleRef RuleID="ID_DENY_MSR_8" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_1" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_2" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_3" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_4" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_5" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_6" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_7" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_8" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_9" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_A" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_B" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_C" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_D" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_E" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_F" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_10" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_11" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_12" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_13" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_14" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_15" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_16" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_17" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_18" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_19" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_1A" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_1B" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_1C" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_1D" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_1E" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_1F" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_20" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_21" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_22" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_23" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_24" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_25" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_26" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_27" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_28" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_29" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_2A" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_2B" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_2C" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_2D" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_2E" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_2F" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_30" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_31" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_32" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_33" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_34" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_35" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_36" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_37" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_38" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_39" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_3A" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_3B" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_3C" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_3D" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_3E" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_3F" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_40" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_41" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_42" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_43" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_44" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_45" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_46" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_47" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_48" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_49" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_4A" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_4B" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_4C" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_4D" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_4E" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_4F" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_50" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_51" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_52" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_53" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_54" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_55" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_56" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_57" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_58" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_59" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_5A" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_5B" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_5C" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_5D" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_5E" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_5F" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_60" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_61" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_62" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_63" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_64" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_65" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_66" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_67" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_68" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_69" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_6A" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_6B" />
<FileRuleRef RuleID="ID_DENY_NVFLASH_6C" />
<FileRuleRef RuleID="ID_DENY_OTIPCIBUS_1" />
<FileRuleRef RuleID="ID_DENY_OTIPCIBUS_2" />
<FileRuleRef RuleID="ID_DENY_OTIPCIBUS_3" />
<FileRuleRef RuleID="ID_DENY_OTIPCIBUS_4" />
<FileRuleRef RuleID="ID_DENY_PCHUNTER_3" />
<FileRuleRef RuleID="ID_DENY_PCHUNTER_4" />
<FileRuleRef RuleID="ID_DENY_PCHUNTER_5" />
<FileRuleRef RuleID="ID_DENY_PCHUNTER_6" />
<FileRuleRef RuleID="ID_DENY_PIDDRV_SHA1" />
<FileRuleRef RuleID="ID_DENY_PIDDRV_SHA256" />
<FileRuleRef RuleID="ID_DENY_PIDDRV_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_PIDDRV_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_PIDDRV64_SHA1" />
<FileRuleRef RuleID="ID_DENY_PIDDRV64_SHA256" />
<FileRuleRef RuleID="ID_DENY_PIDDRV64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_PIDDRV64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_PHYDMACC_1" />
<FileRuleRef RuleID="ID_DENY_PHYDMACC_2" />
<FileRuleRef RuleID="ID_DENY_PHYDMACC_3" />
<FileRuleRef RuleID="ID_DENY_PHYDMACC_4" />
<FileRuleRef RuleID="ID_DENY_PHYDMACC_5" />
<FileRuleRef RuleID="ID_DENY_PHYDMACC_6" />
<FileRuleRef RuleID="ID_DENY_PHYMEMX64_SHA1" />
<FileRuleRef RuleID="ID_DENY_PHYMEMX64_SHA256" />
<FileRuleRef RuleID="ID_DENY_PHYMEMX64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_PHYMEMX64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_SEMAV6MSR64_SHA1" />
<FileRuleRef RuleID="ID_DENY_SEMAV6MSR64_SHA256" />
<FileRuleRef RuleID="ID_DENY_SEMAV6MSR64_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_SEMAV6MSR64_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_WINRING0_SHA1" />
<FileRuleRef RuleID="ID_DENY_WINRING0_SHA256" />
<FileRuleRef RuleID="ID_DENY_WINRING0_SHA1_PAGE" />
<FileRuleRef RuleID="ID_DENY_WINRING0_SHA256_PAGE" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_1" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_2" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_3" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_4" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_5" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_6" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_7" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_8" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_9" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_10" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_11" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_12" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_13" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_14" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_15" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_16" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_17" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_18" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_19" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_20" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_21" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_22" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_23" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_24" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_25" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_26" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_27" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_28" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_29" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_30" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_31" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_32" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_33" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_34" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_35" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_36" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_37" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_38" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_39" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_40" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_41" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_42" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_43" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_44" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_45" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_46" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_47" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_48" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_49" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_50" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_51" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_52" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_53" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_54" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_55" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_56" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_57" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_58" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_59" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_60" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_61" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_62" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_63" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_64" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_65" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_66" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_67" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_68" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_69" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_70" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_71" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA1_72" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_1" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_2" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_3" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_4" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_5" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_6" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_7" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_8" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_9" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_10" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_11" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_12" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_13" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_14" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_15" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_16" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_17" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_18" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_19" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_20" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_21" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_22" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_23" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_24" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_25" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_26" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_27" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_28" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_29" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_30" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_31" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_32" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_33" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_34" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_35" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_36" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_37" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_38" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_39" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_40" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_41" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_42" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_43" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_44" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_45" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_46" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_47" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_48" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_49" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_50" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_51" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_52" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_53" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_54" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_55" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_56" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_57" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_58" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_59" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_60" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_61" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_62" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_63" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_64" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_65" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_66" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_67" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_68" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_69" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_70" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_71" />
<FileRuleRef RuleID="ID_DENY_RETLIFTEN_SHA256_72" />
<FileRuleRef RuleID="ID_DENY_RTCORE_29" />
<FileRuleRef RuleID="ID_DENY_RTCORE_2A" />
<FileRuleRef RuleID="ID_DENY_RTCORE_2B" />
<FileRuleRef RuleID="ID_DENY_RTCORE_2C" />
<FileRuleRef RuleID="ID_DENY_RTCORE_2D" />
<FileRuleRef RuleID="ID_DENY_RTCORE_2E" />
<FileRuleRef RuleID="ID_DENY_RTCORE_2F" />
<FileRuleRef RuleID="ID_DENY_RTCORE_30" />
<FileRuleRef RuleID="ID_DENY_RTCORE_31" />
<FileRuleRef RuleID="ID_DENY_RTCORE_32" />
<FileRuleRef RuleID="ID_DENY_RTCORE_33" />
<FileRuleRef RuleID="ID_DENY_RTCORE_34" />
<FileRuleRef RuleID="ID_DENY_RTCORE_35" />
<FileRuleRef RuleID="ID_DENY_RTCORE_36" />
<FileRuleRef RuleID="ID_DENY_RTCORE_37" />
<FileRuleRef RuleID="ID_DENY_RTCORE_38" />
<FileRuleRef RuleID="ID_DENY_RTCORE_39" />
<FileRuleRef RuleID="ID_DENY_RTCORE_3A" />
<FileRuleRef RuleID="ID_DENY_RTCORE_3B" />
<FileRuleRef RuleID="ID_DENY_RTCORE_3C" />
<FileRuleRef RuleID="ID_DENY_RTCORE_3D" />
<FileRuleRef RuleID="ID_DENY_RTCORE_3E" />
<FileRuleRef RuleID="ID_DENY_RTCORE_3F" />
<FileRuleRef RuleID="ID_DENY_RTCORE_40" />
<FileRuleRef RuleID="ID_DENY_RTCORE_41" />
<FileRuleRef RuleID="ID_DENY_RTCORE_42" />
<FileRuleRef RuleID="ID_DENY_RTCORE_43" />
<FileRuleRef RuleID="ID_DENY_RTCORE_44" />
<FileRuleRef RuleID="ID_DENY_RTCORE_45" />
<FileRuleRef RuleID="ID_DENY_RTCORE_46" />
<FileRuleRef RuleID="ID_DENY_RTCORE_47" />
<FileRuleRef RuleID="ID_DENY_RTCORE_48" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_2" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_3" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_4" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_5" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_6" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_7" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_8" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_9" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_A" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_B" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_C" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_D" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_E" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_F" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_10" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_11" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_12" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_13" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_14" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_15" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_16" />
<FileRuleRef RuleID="ID_DENY_SUPERBMC_17" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_1" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_2" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_3" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_4" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_5" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_6" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_7" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_8" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_9" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_A" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_B" />
<FileRuleRef RuleID="ID_DENY_SYSDRV3S_C" />
<FileRuleRef RuleID="ID_DENY_SYSINFO_1" />
<FileRuleRef RuleID="ID_DENY_SYSINFO_2" />
<FileRuleRef RuleID="ID_DENY_SYSINFO_3" />
<FileRuleRef RuleID="ID_DENY_SYSINFO_4" />
<FileRuleRef RuleID="ID_DENY_SYSINFO_5" />
<FileRuleRef RuleID="ID_DENY_SYSINFO_6" />
<FileRuleRef RuleID="ID_DENY_SYSINFO_7" />
<FileRuleRef RuleID="ID_DENY_SYSINFO_8" />
<FileRuleRef RuleID="ID_DENY_WINIO_1" />
<FileRuleRef RuleID="ID_DENY_WINIO_2" />
<FileRuleRef RuleID="ID_DENY_WINIO_3" />
<FileRuleRef RuleID="ID_DENY_WINIO_4" />
<FileRuleRef RuleID="ID_DENY_WINIO_5" />
<FileRuleRef RuleID="ID_DENY_WINIO_6" />
<FileRuleRef RuleID="ID_DENY_WINIO_7" />
<FileRuleRef RuleID="ID_DENY_WINIO_8" />
<FileRuleRef RuleID="ID_DENY_WINIO_9" />
<FileRuleRef RuleID="ID_DENY_WINIO_10" />
<FileRuleRef RuleID="ID_DENY_WINIO_11" />
<FileRuleRef RuleID="ID_DENY_WINIO_12" />
<FileRuleRef RuleID="ID_DENY_WINIO_13" />
<FileRuleRef RuleID="ID_DENY_WINIO_14" />
<FileRuleRef RuleID="ID_DENY_WINIO_15" />
<FileRuleRef RuleID="ID_DENY_WINIO_16" />
<FileRuleRef RuleID="ID_DENY_WINIO_17" />
<FileRuleRef RuleID="ID_DENY_WINIO_18" />
<FileRuleRef RuleID="ID_DENY_WINIO_19" />
<FileRuleRef RuleID="ID_DENY_WINIO_20" />
<FileRuleRef RuleID="ID_DENY_WINIO_21" />
<FileRuleRef RuleID="ID_DENY_WINIO_22" />
<FileRuleRef RuleID="ID_DENY_WINIO_23" />
<FileRuleRef RuleID="ID_DENY_WINIO_24" />
<FileRuleRef RuleID="ID_DENY_WINIO_25" />
<FileRuleRef RuleID="ID_DENY_WINIO_26" />
<FileRuleRef RuleID="ID_DENY_WINIO_27" />
<FileRuleRef RuleID="ID_DENY_WINIO_28" />
<FileRuleRef RuleID="ID_DENY_WINIO_29" />
<FileRuleRef RuleID="ID_DENY_WINIO_30" />
<FileRuleRef RuleID="ID_DENY_WINIO_31" />
<FileRuleRef RuleID="ID_DENY_WINIO_32" />
<FileRuleRef RuleID="ID_DENY_WINIO_33" />
<FileRuleRef RuleID="ID_DENY_WINIO_34" />
<FileRuleRef RuleID="ID_DENY_PROCESSHACKER" />
<FileRuleRef RuleID="ID_DENY_AMP" />
<FileRuleRef RuleID="ID_DENY_ASMMAP" />
<FileRuleRef RuleID="ID_DENY_ASMMAP_64" />
<FileRuleRef RuleID="ID_DENY_DBK_32" />
<FileRuleRef RuleID="ID_DENY_DBK_64" />
<FileRuleRef RuleID="ID_DENY_GDRV" />
<FileRuleRef RuleID="ID_DENY_PCHUNTER_1" />
<FileRuleRef RuleID="ID_DENY_PCHUNTER_2" />
<FileRuleRef RuleID="ID_DENY_PHYMEMX_64" />
</FileRulesRef>
</ProductSigners>
</SigningScenario>
<SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_WINDOWS"
FriendlyName="Auto generated policy on 09-19-2022">
<ProductSigners>
<FileRulesRef>
<FileRuleRef RuleID="ID_ALLOW_ALL_2" />
</FileRulesRef>
</ProductSigners>
</SigningScenario>
</SigningScenarios>
<UpdatePolicySigners />
<CiSigners />
<HvciOptions>0</HvciOptions>
<Settings>
<Setting Provider="PolicyInfo" Key="Information" ValueName="Name">
<Value>
<String>Microsoft Windows Driver Policy</String>
</Value>
</Setting>
<Setting Provider="PolicyInfo" Key="Information" ValueName="Id">
<Value>
<String>10.0.25930.0</String>
</Value>
</Setting>
</Settings>
<PolicyTypeID>{A244370E-44C9-4C06-B551-F6016E563076}</PolicyTypeID>
</SiPolicy>

More information
Merge Windows Defender Application Control policies
Microsoft Defender Application Guard
overview
Article • 07/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Microsoft Defender Application Guard (MDAG) is designed to help prevent old and
newly emerging attacks to help keep employees productive. Using our unique hardware
isolation approach, our goal is to destroy the playbook that attackers use by making
current attack methods obsolete.

What is Application Guard and how does it


work?
For Microsoft Edge, Application Guard helps to isolate enterprise-defined untrusted
sites, protecting your company while your employees browse the Internet. As an
enterprise administrator, you define what is among trusted web sites, cloud resources,
and internal networks. Everything not on your list is considered untrusted. If an
employee goes to an untrusted site through either Microsoft Edge or Internet Explorer,
Microsoft Edge opens the site in an isolated Hyper-V-enabled container.

For Microsoft Office, Application Guard helps prevents untrusted Word, PowerPoint and
Excel files from accessing trusted resources. Application Guard opens untrusted files in
an isolated Hyper-V-enabled container. The isolated Hyper-V container is separate from
the host operating system. This container isolation means that if the untrusted site or
file turns out to be malicious, the host device is protected, and the attacker can't get to
your enterprise data. For example, this approach makes the isolated container
anonymous, so an attacker can't get to your employee's enterprise credentials.
What types of devices should use Application Guard?
Application Guard has been created to target several types of devices:

Enterprise desktops. These desktops are domain-joined and managed by your


organization. Configuration management is primarily done through Microsoft
Configuration Manager or Microsoft Intune. Employees typically have Standard
User privileges and use a high-bandwidth, wired, corporate network.

Enterprise mobile laptops. These laptops are domain-joined and managed by your
organization. Configuration management is primarily done through Microsoft
Configuration Manager or Microsoft Intune. Employees typically have Standard
User privileges and use a high-bandwidth, wireless, corporate network.

Bring your own device (BYOD) mobile laptops. These personally owned laptops
aren't domain-joined, but are managed by your organization through tools, such
as Microsoft Intune. The employee is typically an admin on the device and uses a
high-bandwidth wireless corporate network while at work and a comparable
personal network while at home.
Personal devices. These personally owned desktops or mobile laptops aren't
domain-joined or managed by an organization. The user is an admin on the device
and uses a high-bandwidth wireless personal network while at home or a
comparable public network while outside.

Windows edition and licensing requirements


The following table lists the Windows editions that support Microsoft Defender
Application Guard (MDAG) for Edge standalone mode:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Microsoft Defender Application Guard (MDAG) for Edge standalone mode license
entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

For more information about Microsoft Defender Application Guard (MDAG) for Edge
enterprise mode, Configure Microsoft Defender Application Guard policy settings.

Related articles
Article Description

System requirements for Microsoft Specifies the prerequisites necessary to install and use
Defender Application Guard Application Guard.

Prepare and install Microsoft Provides instructions about determining which mode to
Defender Application Guard use, either Standalone or Enterprise-managed, and how to
install Application Guard in your organization.

Configure the Group Policy settings Provides info about the available Group Policy and MDM
for Microsoft Defender Application settings.
Guard

Testing scenarios using Microsoft Provides a list of suggested testing scenarios that you can
Defender Application Guard in your use to test Application Guard in your organization.
business or organization
Article Description

Microsoft Defender Application Describes the Application Guard extension for Chrome
Guard Extension for web browsers and Firefox, including known issues, and a
troubleshooting guide

Microsoft Defender Application Describes Application Guard for Microsoft Office,


Guard for Microsoft Office including minimum hardware requirements, configuration,
and a troubleshooting guide

Frequently asked questions - Provides answers to frequently asked questions about


Microsoft Defender Application Application Guard features, integration with the Windows
Guard operating system, and general configuration.

Use a network boundary to add Network boundary, a feature that helps you protect your
trusted sites on Windows devices in environment from sites that aren't trusted by your
Microsoft Intune organization.
Microsoft Defender Application Guard
overview
Article • 07/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Microsoft Defender Application Guard (MDAG) is designed to help prevent old and
newly emerging attacks to help keep employees productive. Using our unique hardware
isolation approach, our goal is to destroy the playbook that attackers use by making
current attack methods obsolete.

What is Application Guard and how does it


work?
For Microsoft Edge, Application Guard helps to isolate enterprise-defined untrusted
sites, protecting your company while your employees browse the Internet. As an
enterprise administrator, you define what is among trusted web sites, cloud resources,
and internal networks. Everything not on your list is considered untrusted. If an
employee goes to an untrusted site through either Microsoft Edge or Internet Explorer,
Microsoft Edge opens the site in an isolated Hyper-V-enabled container.

For Microsoft Office, Application Guard helps prevents untrusted Word, PowerPoint and
Excel files from accessing trusted resources. Application Guard opens untrusted files in
an isolated Hyper-V-enabled container. The isolated Hyper-V container is separate from
the host operating system. This container isolation means that if the untrusted site or
file turns out to be malicious, the host device is protected, and the attacker can't get to
your enterprise data. For example, this approach makes the isolated container
anonymous, so an attacker can't get to your employee's enterprise credentials.
What types of devices should use Application Guard?
Application Guard has been created to target several types of devices:

Enterprise desktops. These desktops are domain-joined and managed by your


organization. Configuration management is primarily done through Microsoft
Configuration Manager or Microsoft Intune. Employees typically have Standard
User privileges and use a high-bandwidth, wired, corporate network.

Enterprise mobile laptops. These laptops are domain-joined and managed by your
organization. Configuration management is primarily done through Microsoft
Configuration Manager or Microsoft Intune. Employees typically have Standard
User privileges and use a high-bandwidth, wireless, corporate network.

Bring your own device (BYOD) mobile laptops. These personally owned laptops
aren't domain-joined, but are managed by your organization through tools, such
as Microsoft Intune. The employee is typically an admin on the device and uses a
high-bandwidth wireless corporate network while at work and a comparable
personal network while at home.
Personal devices. These personally owned desktops or mobile laptops aren't
domain-joined or managed by an organization. The user is an admin on the device
and uses a high-bandwidth wireless personal network while at home or a
comparable public network while outside.

Windows edition and licensing requirements


The following table lists the Windows editions that support Microsoft Defender
Application Guard (MDAG) for Edge standalone mode:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Microsoft Defender Application Guard (MDAG) for Edge standalone mode license
entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

For more information about Microsoft Defender Application Guard (MDAG) for Edge
enterprise mode, Configure Microsoft Defender Application Guard policy settings.

Related articles
Article Description

System requirements for Microsoft Specifies the prerequisites necessary to install and use
Defender Application Guard Application Guard.

Prepare and install Microsoft Provides instructions about determining which mode to
Defender Application Guard use, either Standalone or Enterprise-managed, and how to
install Application Guard in your organization.

Configure the Group Policy settings Provides info about the available Group Policy and MDM
for Microsoft Defender Application settings.
Guard

Testing scenarios using Microsoft Provides a list of suggested testing scenarios that you can
Defender Application Guard in your use to test Application Guard in your organization.
business or organization
Article Description

Microsoft Defender Application Describes the Application Guard extension for Chrome
Guard Extension for web browsers and Firefox, including known issues, and a
troubleshooting guide

Microsoft Defender Application Describes Application Guard for Microsoft Office,


Guard for Microsoft Office including minimum hardware requirements, configuration,
and a troubleshooting guide

Frequently asked questions - Provides answers to frequently asked questions about


Microsoft Defender Application Application Guard features, integration with the Windows
Guard operating system, and general configuration.

Use a network boundary to add Network boundary, a feature that helps you protect your
trusted sites on Windows devices in environment from sites that aren't trusted by your
Microsoft Intune organization.
Microsoft Edge support for Microsoft
Defender Application Guard
Article • 08/21/2023

7 Note

Microsoft Edge for Business is now available in Edge stable version 116! Learn
more about the new, dedicated work experience with native enterprise grade
security, productivity, manageability, and AI built in.

This article describes how Microsoft Edge supports Microsoft Defender Application
Guard (Application Guard).

7 Note

This article applies to Microsoft Edge version 77 or later.

Overview
Security architects in the enterprise must deal with the tension that exists between
productivity and security. It's relatively easy to lock down a browser and only allow a
handful of trusted sites to load. This approach will improve the overall security posture
but is arguably less productive. If you make it less restrictive to improve productivity,
you increase the risk profile. It's a hard balance to strike!

It's even harder to keep up with new emerging threats in this constantly changing threat
landscape. Browsers remain the primary attack surface on client devices because the
browser's basic job is to let users access, download, and open untrusted content from
untrusted sources. Malicious actors are constantly working to social engineer new forms
of attacks against the browser. Security incident prevention or detection/response
strategies can't guarantee 100% safety.

A key security strategy to consider is the Assume Breach Methodology, which means
there's an acceptance that an attack is going to succeed at least once regardless of
efforts to prevent it. This mindset requires building defenses to contain the damage,
which ensures that corporate network and other resources remain protected in this
scenario. Deploying Application Guard for Microsoft Edge fits right into this strategy.
About Application Guard
Designed for Windows 10 and Microsoft Edge, Application Guard uses a hardware
isolation approach. This approach lets untrusted site navigation launch inside a
container. Hardware isolation helps enterprises safeguard their corporate network and
data in case users visit a site that is compromised or is malicious.

The enterprise administrator defines what are trusted sites, cloud resources, and internal
networks. Everything that's not in the trusted sites list is considered untrusted. These
sites are isolated from the corporate network and data on the user's device.

For more information:

watch our video Microsoft Edge browser isolation using Application Guard
read What is Application Guard and how does it work?

The next screenshot shows an example of Application Guard's message showing that
the user is browsing in a safe space.

What's new
Application Guard support in the new Microsoft Edge browser has functional parity with
Microsoft Edge Legacy and includes several improvements.
Enable Upload Blocking
Starting from Microsoft Edge 96, admins now have the option to block uploads while in
the container, meaning that users cannot upload files from their local device to their
Application Guard instance. This support can be controlled via policy. You can update
the Edge policy ApplicationGuardUploadBlockingEnabled to enable or disable uploads
in the container.

Enable Application Guard in passive mode and browse


Edge normally
Starting from Microsoft Edge 94, users now have the option to configure passive mode,
meaning that Application Guard ignores the site list configuration and users can browse
Edge normally. This support can be controlled via policy. You can update the Edge policy
ApplicationGuardPassiveModeEnabled to enable or disable passive mode.

7 Note

This policy ONLY impacts Edge, so navigations from other browsers might get
redirected to the Application Guard Container if you have the corresponding
extensions enabled.

Favorites synchronizing from the host to the container


Some of our customers have been asking for favorites sync between the host browser
and the container in Application Guard. Starting from Microsoft Edge 91, users now have
the option to configure Application Guard to synchronize their favorites from the host
to the container. This ensures new favorites appear on the container as well.

This support can be controlled via policy. You can update the Edge policy
ApplicationGuardFavoritesSyncEnabled to enable or disable favorites sync.

7 Note

For security reasons, favorites sync is only possible from the host to the container
and not the other way around. To ensure a unified list of favorites across the host
and the container, we have disabled favorites management inside the container.

Identify network traffic originating from the container


Several customers are using WDAG in a specific configuration where they want to
identify network traffic coming from the container. Some of the scenarios for this are:

To restrict access to only a handful of untrusted sites


To allow internet access from the container only

Starting with Microsoft Edge version 91, there's built in support to tag network traffic
originating from Application Guard containers, allowing enterprises to use proxy to filter
out traffic and apply specific policies. You can use the header to identify which traffic is
through the container or the host using ApplicationGuardTrafficIdentificationEnabled.

Extension support inside the container


Extension support inside the container has been one of the top requests from the
customers. Scenarios ranged from wanting to run ad-blockers inside the container to
boost browser performance to having the ability to run custom home-grown extensions
inside the container.

Extension installs in the container is now supported, starting from Microsoft Edge
version 81. This support can be controlled via policy. The updateURL that gets used in
ExtensionInstallForcelist policy should be added as Neutral Resources in the Network
Isolation policies used by Application Guard.

Some examples of container support include the following scenarios:

Force installs of an extension on the host


Removing an extension from the host
Extensions blocked on the host

7 Note

It's also possible to manually install individual extensions inside the container from
the extension store. Manually installed extensions will only persist in the container
when Allow Persistence policy is enabled.

Identifying Application Guard traffic via Dual Proxy


Some enterprise customers are deploying Application Guard with a specific use case
where they need to identify web traffic coming out of a Microsoft Defender Application
Guard container at the proxy level. Starting with Stable Channel version 84, Microsoft
Edge will support dual proxy to address this requirement. You can configure this
functionality using the ApplicationGuardContainerProxy policy.
The following drawing shows the dual proxy architecture for Microsoft Edge.

Diagnostic page for troubleshooting


Another user pain point is troubleshooting the Application Guard configuration on a
device when a problem is reported. Microsoft Edge has a diagnostics page
( edge://application-guard-internals ) to troubleshoot user issues. One of these
diagnostics is being able to check the URL trust based on the configuration on the user's
device.

The next screenshot shows a multiple tab diagnostics page to help diagnose user
reported issues on the device.
Microsoft Edge updates in the container
Microsoft Edge Legacy updates in the container are part of the Windows OS update
cycle. Because the new version of Microsoft Edge updates itself independent of the
Windows OS, there is no longer any dependency on container updates. The channel and
version of the host Microsoft Edge is replicated inside the container.

Prerequisites
The following requirements apply to devices using Application Guard with Microsoft
Edge:

Windows 10 1809 (RS5) and above.

Only Windows client SKUs

7 Note

Application Guard is only supported on Windows 10 Pro and Windows 10


Enterprise SKUs.

One of the management solutions described in Software requirements

How to install Application Guard


The following articles provide the information you need to install, configure, and test
Application Guard with Microsoft Edge.
System requirements
Install Microsoft Defender Application Guard
Configure Application Guard group policy settings
Test Application Guard

Frequently Asked Questions

Does Application Guard work in IE mode?


IE mode supports Application Guard functionality, but we don't anticipate much use of
this feature in IE Mode. IE mode is recommended to be deployed for a list of trusted
internal sites, and Application Guard is for untrusted sites only. Make sure all the IE
mode sites or IP addresses are also added to the Network Isolation policy to be
considered as trusted resource by Application Guard.

Do I need to install the Application Guard Chrome


extension?
No, the Application Guard feature is natively supported in Microsoft Edge. In fact, the
Application Guard Chrome extension isn't a supported configuration in Microsoft Edge.

Can employees download documents from the


Application Guard Edge session onto host devices?
In Windows 10 Enterprise edition, version 1803, users are able to download documents
from the isolated Application Guard container to the host PC. This capability is managed
by policy.

In Windows 10 Enterprise edition, version 1709, or Windows 10 Professional edition,


version 1803, it is not possible to download files from the isolated Application Guard
container to the host computer. However, employees can use the Print as PDF or Print
as XPS options and save those files to the host device.

Can employees copy and paste between the host device


and the Application Guard Edge session?
Depending on your organization's settings, employees can copy and paste images
(.bmp) and text to and from the isolated container.
Why don't employees see their favorites in the
Application Guard Edge session?
Depending on your organization's settings, it might be that Favorites Sync is turned off.
To manage the policy, see: Microsoft Edge and Microsoft Defender Application Guard |
Microsoft Docs.

Why aren't employees able to see their extensions in the


Application Guard Edge session?
Make sure to enable the extensions policy on your Application Guard configuration.

My extension doesn't seem to work in Edge Application


Guard?
If the extensions policy is enabled for MDAG in configuration, check if your extension
requires Native Message Handling components, those extensions are not supported in
the Application Guard container.

I'm trying to watch playback video with HDR, why is the


HDR option missing?
In order for HDR video playback to work in the container, vGPU Hardware Acceleration
needs to be enabled in Application Guard.

Are there any other platform related FAQs?


Yes. Frequently asked questions - Microsoft Defender Application Guard

See also
Microsoft Edge Enterprise landing page
Microsoft Defender Advanced Threat Protection
Video: Microsoft Edge browser isolation using Application Guard
WindowsDefenderApplicationGuard
CSP
Article • 08/14/2023

The WindowsDefenderApplicationGuard configuration service provider (CSP) is used by


the enterprise to configure the settings in Microsoft Defender Application Guard. This
CSP was added in Windows 10, version 1709.

Windows edition and licensing requirements


The following table lists the Windows editions that support Microsoft Defender
Application Guard (MDAG) configure via MDM:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

No Yes No Yes

Microsoft Defender Application Guard (MDAG) configure via MDM license entitlements
are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

No Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

The following list shows the WindowsDefenderApplicationGuard configuration service


provider nodes:

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard
Audit
AuditApplicationGuard
InstallWindowsDefenderApplicationGuard
PlatformStatus
Settings
AllowCameraMicrophoneRedirection
AllowPersistence
AllowVirtualGPU
AllowWindowsDefenderApplicationGuard
BlockNonEnterpriseContent
CertificateThumbprints
ClipboardFileType
ClipboardSettings
PrintingSettings
SaveFilesToHost
Status

Audit
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Audit

Interior node for Audit.

Description framework properties:

Property name Property value

Format node

Access Type Get

Audit/AuditApplicationGuard

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device
./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Audit/AuditApplicationG
uard

This policy setting allows you to decide whether auditing events can be collected from
Application Guard.

Description framework properties:

Property name Property value

Format int

Access Type Add, Delete, Get, Replace

Default Value 0

Allowed values:

Value Description

0 Audit event logs aren't collected for Application Guard.


(Default)

1 Application Guard inherits its auditing policies from system and starts to audit
security events for Application Guard container.

Group policy mapping:

Name Value

Name AppHVSI_AuditApplicationGuardConfig

Friendly Name Allow auditing events in Microsoft Defender Application Guard

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard

Registry Key Name SOFTWARE\Policies\Microsoft\AppHVSI

Registry Value Name AuditApplicationGuard

ADMX File Name AppHVSI.admx

InstallWindowsDefenderApplicationGuard
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/InstallWindowsDefenderA
pplicationGuard

Initiates remote installation of Application Guard feature.

Description framework properties:

Property name Property value

Format chr (string)

Access Type Exec, Get

Allowed values:

Value Description

Install Will initiate feature install.

Uninstall Will initiate feature uninstall.

PlatformStatus
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 2004 [10.0.19041] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device
./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/PlatformStatus

Returns bitmask that indicates status of Application Guard platform installation and
prerequisites on the device. Bit 0 - Set to 1 when Application Guard is enabled into
enterprise manage mode. Bit 1 - Set to 1 when the client machine is Hyper-V capable.
Bit 2 - Reserved for Microsoft. Bit 3 - Set to 1 when Application Guard is installed on the
client machine. Bit 4 - Reserved for Microsoft. Bit 5 - Set to 1 when the client machine
meets minimum hardware requirements.

Description framework properties:

Property name Property value

Format int

Access Type Get

Settings
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings

Interior Node for Settings.

Description framework properties:

Property name Property value

Format node

Access Type Get

Settings/AllowCameraMicrophoneRedirection
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1809 [10.0.17763] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/AllowCameraMic
rophoneRedirection

This policy setting allows you to determine whether applications inside Microsoft
Defender Application Guard can access the device's camera and microphone when these
settings are enabled on the user's device.

If you enable this policy setting, applications inside Microsoft Defender Application
Guard will be able to access the camera and microphone on the user's device.

If you disable or don't configure this policy setting, applications inside Microsoft
Defender Application Guard will be unable to access the camera and microphone
on the user's device.

Description framework properties:

Property name Property value

Format int

Access Type Add, Delete, Get, Replace

Default Value 0

Allowed values:

Value Description

0 Microsoft Defender Application Guard can't access the device’s camera and
(Default) microphone. When the policy isn't configured, it's the same as disabled (0).

1 Turns on the functionality to allow Microsoft Defender Application Guard to access


the device’s camera and microphone.

Group policy mapping:


Name Value

Name AppHVSI_AllowCameraMicrophoneRedirectionConfig

Friendly Name Allow camera and microphone access in Microsoft Defender Application
Guard

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard

Registry Key Name SOFTWARE\Policies\Microsoft\AppHVSI

Registry Value AllowCameraMicrophoneRedirection


Name

ADMX File Name AppHVSI.admx

Settings/AllowPersistence

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/AllowPersisten
ce

This policy setting allows you to decide whether data should persist across different
sessions in Application Guard.

Description framework properties:

Property name Property value

Format int

Access Type Add, Delete, Get, Replace

Allowed values:
Value Description

0 Application Guard discards user-downloaded files and other items (such as, cookies,
Favorites, and so on) during machine restart or user log-off.

1 Application Guard saves user-downloaded files and other items (such as, cookies,
Favorites, and so on) for use in future Application Guard sessions.

Group policy mapping:

Name Value

Name AppHVSI_AllowPersistence

Friendly Name Allow data persistence for Microsoft Defender Application Guard

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard

Registry Key Name SOFTWARE\Policies\Microsoft\AppHVSI

Registry Value Name AllowPersistence

ADMX File Name AppHVSI.admx

Settings/AllowVirtualGPU

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1803 [10.0.17134] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/AllowVirtualGP
U

This policy setting allows you to determine whether Application Guard can use the
virtual Graphics Processing Unit (GPU) to process graphics. If you enable this setting,
Microsoft Defender Application Guard uses Hyper-V to access supported, high-security
rendering graphics hardware (GPUs). These GPUs improve rendering performance and
battery life while using Microsoft Defender Application Guard, particularly for video
playback and other graphics-intensive use cases. If you enable this setting without
connecting any high-security rendering graphics hardware, Microsoft Defender
Application Guard will automatically revert to software-based (CPU) rendering.

2 Warning

Enabling this setting with potentially compromised graphics devices or drivers


might pose a risk to the host device.

Description framework properties:

Property name Property value

Format int

Access Type Add, Delete, Get, Replace

Default Value 0

Allowed values:

Value Description

0 Cannot access the vGPU and uses the CPU to support rendering graphics. When the
(Default) policy isn't configured, it's the same as disabled (0).

1 Turns on the functionality to access the vGPU offloading graphics rendering from the
CPU. This can create a faster experience when working with graphics intense websites
or watching video within the container.

Group policy mapping:

Name Value

Name AppHVSI_AllowVirtualGPU

Friendly Name Allow hardware-accelerated rendering for Microsoft Defender Application


Guard

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard

Registry Key Name SOFTWARE\Policies\Microsoft\AppHVSI

Registry Value AllowVirtualGPU


Name
Name Value

ADMX File Name AppHVSI.admx

Settings/AllowWindowsDefenderApplicationGuard

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/AllowWindowsDe
fenderApplicationGuard

Turn on Microsoft Defender Application Guard in Enterprise Mode.

Description framework properties:

Property name Property value

Format int

Access Type Add, Delete, Get, Replace

Allowed values:

Value Description

0 Disable Microsoft Defender Application Guard.

1 Enable Microsoft Defender Application Guard for Microsoft Edge ONLY.

2 Enable Microsoft Defender Application Guard for isolated Windows environments ONLY.

3 Enable Microsoft Defender Application Guard for Microsoft Edge AND isolated Windows
environments.

Group policy mapping:


Name Value

Name AllowAppHVSI

Path Windows Components > Microsoft Defender Application Guard

Settings/BlockNonEnterpriseContent

7 Note

This policy is deprecated and may be removed in a future release.

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/BlockNonEnterp
riseContent

This policy setting allows you to decide whether websites can load non-enterprise
content in Microsoft Edge and Internet Explorer.

7 Note

This policy setting is no longer supported in the new Microsoft Edge browser. The
policy will be deprecated and removed in a future release. Webpages that contain
mixed content, both enterprise and non-enterprise, may load incorrectly or fail
completely if this feature is enabled.

Description framework properties:

Property name Property value

Format int

Access Type Add, Delete, Get, Replace


Property name Property value

Default Value 0

Allowed values:

Value Description

0 Non-enterprise content embedded in enterprise sites is allowed to open outside of


(Default) the Microsoft Defender Application Guard container, directly in Internet Explorer and
Microsoft Edge.

1 Non-enterprise content embedded on enterprise sites are stopped from opening in


Internet Explorer or Microsoft Edge outside of Microsoft Defender Application Guard.

Group policy mapping:

Name Value

Name AppHVSI_BlockNonEnterpriseContentConfig

Friendly Name Prevent enterprise websites from loading non-enterprise content in Microsoft
Edge and Internet Explorer

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard

Registry Key SOFTWARE\Policies\Microsoft\AppHVSI


Name

Registry Value BlockNonEnterpriseContent


Name

ADMX File AppHVSI.admx


Name

Settings/CertificateThumbprints

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1809 [10.0.17763] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC
Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/CertificateThu
mbprints

This policy setting allows certain device level Root Certificates to be shared with the
Microsoft Defender Application Guard container.

If you enable this setting, certificates with a thumbprint matching the ones
specified will be transferred into the container. Multiple certificates can be
specified by using a comma to separate the thumbprints for each certificate you
want to transfer. Here's an example:
b4e72779a8a362c860c36a6461f31e3aa7e58c14,1b1d49f06d2a697a544a1059bd59
a7b058cda924.

If you disable or don't configure this setting, certificates aren't shared with the
Microsoft Defender Application Guard container.

7 Note

To enforce this policy, device restart or user logon/logoff is required.

Description framework properties:

Property name Property value

Format chr (string)

Access Type Add, Delete, Get, Replace

Allowed Values List (Delimiter: , )

Group policy mapping:

Name Value

Name AppHVSI_CertificateThumbprints

Friendly Name Allow Microsoft Defender Application Guard to use Root Certificate Authorities
from the user’s device

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard


Name Value

Registry Key SOFTWARE\Policies\Microsoft\AppHVSI


Name

ADMX File AppHVSI.admx


Name

Settings/ClipboardFileType

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/ClipboardFileT
ype

Determines the type of content that can be copied from the host to Application Guard
environment and vice versa.

Description framework properties:

Property name Property value

Format int

Access Type Add, Delete, Get, Replace

Allowed values:

Value Description

1 Allow text copying.

2 Allow image copying.

3 Allow text and image copying.

Group policy mapping:


Name Value

Name AppHVSI_ClipboardConfig

Friendly Name Configure Microsoft Defender Application Guard clipboard settings

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard

Registry Key Name SOFTWARE\Policies\Microsoft\AppHVSI

ADMX File Name AppHVSI.admx

Settings/ClipboardSettings

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/ClipboardSetti
ngs

This policy setting allows you to decide how the clipboard behaves while in Application
Guard.

Description framework properties:

Property name Property value

Format int

Access Type Add, Delete, Get, Replace

Default Value 0

Allowed values:
Value Description

0 (Default) Completely turns Off the clipboard functionality for the Application Guard.

1 Turns On clipboard operation from an isolated session to the host.

2 Turns On clipboard operation from the host to an isolated session.

3 Turns On clipboard operation in both the directions.

Group policy mapping:

Name Value

Name AppHVSI_ClipboardConfig

Friendly Name Configure Microsoft Defender Application Guard clipboard settings

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard

Registry Key Name SOFTWARE\Policies\Microsoft\AppHVSI

ADMX File Name AppHVSI.admx

Settings/PrintingSettings

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/PrintingSettin
gs

This policy setting allows you to decide how the print functionality behaves while in
Application Guard.

Description framework properties:


Property name Property value

Format int

Access Type Add, Delete, Get, Replace

Default Value 0

Allowed values:

Value Description

0 (Default) Disables all print functionality.

1 Enables only XPS printing.

2 Enables only PDF printing.

3 Enables both PDF and XPS printing.

4 Enables only local printing.

5 Enables both local and XPS printing.

6 Enables both local and PDF printing.

7 Enables local, PDF, and XPS printing.

8 Enables only network printing.

9 Enables both network and XPS printing.

10 Enables both network and PDF printing.

11 Enables network, PDF, and XPS printing.

12 Enables both network and local printing.

13 Enables network, local, and XPS printing.

14 Enables network, local, and PDF printing.

15 Enables all printing.

Group policy mapping:

Name Value

Name AppHVSI_PrintingConfig

Friendly Name Configure Microsoft Defender Application Guard print settings


Name Value

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard

Registry Key Name SOFTWARE\Policies\Microsoft\AppHVSI

ADMX File Name AppHVSI.admx

Settings/SaveFilesToHost

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1803 [10.0.17134] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Settings/SaveFilesToHos
t

This policy setting allows you to determine whether users can elect to download files
from Edge in the container and persist files them from container to the host operating
system.

Description framework properties:

Property name Property value

Format int

Access Type Add, Delete, Get, Replace

Default Value 0

Allowed values:

Value Description

0 The user can't download files from Edge in the container to the host file system.
(Default) When the policy isn't configured, it's the same as disabled (0).
Value Description

1 Turns on the functionality to allow users to download files from Edge in the container
to the host file system.

Group policy mapping:

Name Value

Name AppHVSI_SaveFilesToHost

Friendly Name Allow files to download and save to the host operating system from Microsoft
Defender Application Guard

Location Computer Configuration

Path Windows Components > Microsoft Defender Application Guard

Registry Key SOFTWARE\Policies\Microsoft\AppHVSI


Name

Registry Value SaveFilesToHost


Name

ADMX File AppHVSI.admx


Name

Status
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/WindowsDefenderApplicationGuard/Status

Returns bitmask that indicates status of Application Guard installation and pre-requisites
on the device. Bit 0 - Set to 1 when Application Guard is enabled into enterprise manage
mode. Bit 1 - Set to 1 when the client machine is Hyper-V capable. Bit 2 - Set to 1 when
the client machine has a valid OS license and SKU. Bit 3 - Set to 1 when Application
Guard installed on the client machine. Bit 4 - Set to 1 when required Network Isolation
Policies are configured. Bit 5 - Set to 1 when the client machine meets minimum
hardware requirements. Bit 6 - Set to 1 when system reboot is required.

Description framework properties:

Property name Property value

Format int

Access Type Get

Related articles
Configuration service provider reference
Windows and containers
Article • 03/20/2023

Applies to: Windows Server 2022, Windows Server 2019, Windows Server 2016

Containers are a technology for packaging and running Windows and Linux applications
across diverse environments on-premises and in the cloud. Containers provide a
lightweight, isolated environment that makes apps easier to develop, deploy, and
manage. Containers start and stop quickly, making them ideal for apps that need to
rapidly adapt to changing demand. The lightweight nature of containers also make
them a useful tool for increasing the density and utilization of your infrastructure.

To view a roadmap of planned and currently available features, see the Windows Server
containers roadmap . Also, see Events to view recent video presentations and blog
posts for Windows Containers.

The Microsoft container ecosystem


Microsoft provides a number of tools and platforms to help you develop and deploy
apps in containers:

Run Windows-based or Linux-based containers on Windows 10 for development


and testing using Docker Desktop , which makes use of containers functionality
built-in to Windows. You can also run containers natively on Windows Server.
Develop, test, publish, and deploy Windows-based containers using the powerful
container support in Visual Studio and Visual Studio Code , which include
support for Docker, Docker Compose, Kubernetes, Helm, and other useful
technologies.

Publish your apps as container images to the public DockerHub for others to use,
or to a private Azure Container Registry for your org's own development and
deployment, pushing and pulling directly from within Visual Studio and Visual
Studio Code.

Deploy containers at scale on Azure or other clouds:


Pull your app (container image) from a container registry, such as the Azure
Container Registry, and then deploy and manage it at scale using an
orchestrator such as Azure Kubernetes Service (AKS).
Azure Kubernetes Service deploys containers to Azure virtual machines and
manages them at scale, whether that's dozens of containers, hundreds, or even
thousands. The Azure virtual machines run either a customized Windows Server
image (if you're deploying a Windows-based app), or a customized Ubuntu
Linux image (if you're deploying a Linux-based app).

Deploy containers on-premises by using AKS on Azure Stack HCI, Azure Stack with
the AKS Engine, or Azure Stack with OpenShift. You can also set up Kubernetes
yourself on Windows Server (see Kubernetes on Windows), and we're working on
support for running Windows containers on RedHat OpenShift Container
Platform as well.

How containers work


A container is an isolated, lightweight package for running an application on the host
operating system. Containers build on top of the host operating system's kernel (which
can be thought of as the buried plumbing of the operating system), as shown in the
diagram below.

Container Container

Apps Services Apps Services Apps Services

OS Kernel

Hardware
While a container shares the host operating system's kernel, the container doesn't get
unfettered access to it. Instead, the container gets an isolated–and in some cases
virtualized–view of the system. For example, a container can access a virtualized version
of the file system and registry, but any changes affect only the container and are
discarded when it stops. To save data, the container can mount persistent storage such
as an Azure Disk or a file share (including Azure Files ).

A container builds on top of the kernel, but the kernel doesn't provide all of the APIs
and services an app needs to run–most of these are provided by system files (libraries)
that run above the kernel in user mode. Because a container is isolated from the host's
user mode environment, the container needs its own copy of these user mode system
files, which are packaged into something known as a base image. The base image serves
as the foundational layer upon which your container is built, providing it with operating
system services not provided by the kernel. But we'll talk more about container images
later.

Containers vs. virtual machines


In contrast to a container, a virtual machine (VMs) runs a complete operating system–
including its own kernel–as shown in this diagram.

Virtual Machine

Apps Services Apps Services

OS Kernel OS Kernel

Hardware

Containers and virtual machines each have their uses–in fact, many deployments of
containers use virtual machines as the host operating system rather than running
directly on the hardware, especially when running containers in the cloud.

For more details on the similarities and differences of these complementary


technologies, see Containers vs. virtual machines.

Container images
All containers are created from container images. A container image is a bundle of files
organized into a stack of layers that resides on your local machine or in a remote
container registry. The container image consists of the user mode operating system files
needed to support your app, any runtimes or dependencies of your app, and any other
miscellaneous configuration file your app needs to run properly.

Microsoft offers several images (called base images) that you can use as a starting point
to build your own container image:

Windows - contains the full set of Windows APIs and system services (minus server
roles).
Windows Server - contains the full set of Windows APIs and system services.
Windows Server Core - a smaller image that contains a subset of the Windows
Server APIs–namely the full .NET framework. It also includes most but not all server
roles (for example Fax Server is not included).
Nano Server - the smallest Windows Server image and includes support for the
.NET Core APIs and some server roles.

As mentioned earlier, container images are composed of a series of layers. Each layer
contains a set of files that, when overlaid together, represent your container image.
Because of the layered nature of containers, you don't have to always target a base
image to build a Windows container. Instead, you could target another image that
already carries the framework you want. For example, the .NET team publishes a .NET
core image that carries the .NET core runtime. It saves users from needing to
duplicate the process of installing .NET core–instead they can reuse the layers of this
container image. The .NET core image itself is built based upon Nano Server.

For more details, see Container Base Images.

Container users

Containers for developers


Containers help developers build and ship higher-quality apps, faster. With containers,
developers can create a container image that deploys in seconds, identically across
environments. Containers act as an easy mechanism to share code across teams and to
bootstrap a development environment without impacting your host filesystem.

Containers are portable and versatile, can run apps written in any language, and they're
compatible with any machine running Windows 10, version 1607 or later, or Windows
Server 2016 or later. Developers can create and test a container locally on their laptop or
desktop, and then deploy that same container image to their company's private cloud,
public cloud, or service provider. The natural agility of containers supports modern app
development patterns in large-scale, virtualized cloud environments. The most useful
benefit to developers is perhaps the ability to isolate your environment so that your app
always gets the version of libraries that you specify, avoiding conflicts with
dependencies.

Containers for IT professionals


Containers help admins create infrastructure that's easier to update and maintain, and
that more fully utilizes hardware resources. IT professionals can use containers to
provide standardized environments for their development, QA, and production teams.
By using containers, systems administrators abstract away differences in operating
system installations and the underlying infrastructure.

You can also use the interactive mode of containers to run conflicting instances of a
command line tool on the the same system.

Container orchestration
Orchestrators are a critical piece of infrastructure when setting up a container-based
environment. While you can manage a few containers manually using Docker and
Windows, apps often make use of five, ten, or even hundreds of containers, which is
where orchestrators come in.

Container orchestrators were built to help manage containers at scale and in


production. Orchestrators provide functionality for:

Orchestrators help you grow containerized apps at scale, providing functionality for:

Deploying at scale
Workload scheduling
Health monitoring
Failing over when a node fails
Scaling up or down
Networking
Service discovery
Coordinating app upgrades
Cluster node affinity

There are many different orchestrators that you can use with Windows containers; here
are the options Microsoft provides:

Azure Kubernetes Service (AKS) - use a managed Azure Kubernetes service


Azure Kubernetes Service (AKS) on Azure Stack HCI - use Azure Kubernetes Service
on-premises

Try containers on Windows


To get started with containers on Windows Server or Windows 10, see the following:

Get started: Configure Your Environment for Containers

For help deciding which Azure services are right for your scenario, see Azure container
services and Choosing what Azure services to use to host your application.

Resources
To view resources for using Windows Server containers:

For current issues and planned feature upgrades, see the Windows Server
containers roadmap .

To view container events, see Windows container and the Azure Kubernetes
Service} and other recent containers events and slideshows.

To contact the Windows Server containers team, send email to Windows


Containers Customers.
Windows Sandbox
Article • 05/25/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Sandbox provides a lightweight desktop environment to safely run


applications in isolation. Software installed inside the Windows Sandbox environment
remains "sandboxed" and runs separately from the host machine.

A sandbox is temporary. When it's closed, all the software and files and the state are
deleted. You get a brand-new instance of the sandbox every time you open the
application. Note, however, that as of Windows 11, version 22H2, your data will persist
through a restart initiated from inside the virtualized environment—useful for installing
applications that require the OS to reboot.

Software and applications installed on the host aren't directly available in the sandbox. If
you need specific applications available inside the Windows Sandbox environment, they
must be explicitly installed within the environment.

Windows Sandbox has the following properties:

Part of Windows: Everything required for this feature is included in Windows 10


Pro and Enterprise. There's no need to download a VHD.
Pristine: Every time Windows Sandbox runs, it's as clean as a brand-new
installation of Windows.
Disposable: Nothing persists on the device. Everything is discarded when the user
closes the application.
Secure: Uses hardware-based virtualization for kernel isolation. It relies on the
Microsoft hypervisor to run a separate kernel that isolates Windows Sandbox from
the host.
Efficient: Uses the integrated kernel scheduler, smart memory management, and
virtual GPU.

) Important

Windows Sandbox enables network connection by default. It can be disabled using


the Windows Sandbox configuration file.

Windows edition and licensing requirements


The following table lists the Windows editions that support Windows Sandbox:
Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Windows Sandbox license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Prerequisites
ARM64 (for Windows 11, version 22H2 and later) or AMD64 architecture
Virtualization capabilities enabled in BIOS
At least 4 GB of RAM (8 GB recommended)
At least 1 GB of free disk space (SSD recommended)
At least two CPU cores (four cores with hyper-threading recommended)

7 Note

Windows Sandbox is currently not supported on Windows Home edition

Installation
1. Ensure that your machine is using Windows 10 Pro or Enterprise, build version
18305 or Windows 11.

2. Enable virtualization on the machine.

If you're using a physical machine, make sure virtualization capabilities are


enabled in the BIOS.

If you're using a virtual machine, you need to enable nested virtualization. If


needed, also update the VM to support nested virtualization. Run the
following PowerShell commands on the host:

PowerShell

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions


$true
Update-VMVersion -VMName <VMName>

3. Use the search bar on the task bar and type Turn Windows Features on or off to
access the Windows Optional Features tool. Select Windows Sandbox and then
OK. Restart the computer if you're prompted.

If the Windows Sandbox option is unavailable, your computer doesn't meet the
requirements to run Windows Sandbox. If you think this analysis is incorrect,
review the prerequisite list and steps 1 and 2.

7 Note

To enable Sandbox using PowerShell, open PowerShell as Administrator and


run the following command:

PowerShell

Enable-WindowsOptionalFeature -FeatureName "Containers-


DisposableClientVM" -All -Online

4. Locate and select Windows Sandbox on the Start menu to run it for the first time.

7 Note

Windows Sandbox does not adhere to the mouse settings of the host system,
so if the host system is set to use a left-handed mouse, you must apply these
settings in Windows Sandbox manually when Windows Sandbox starts.
Alternatively, you can use a sandbox configuration file to run a logon
command to swap the mouse setting. For an example, see Example 3.

Usage
1. Copy an executable file (and any other files needed to run the application) from
the host and paste them into the Windows Sandbox window.

2. Run the executable file or installer inside the sandbox.

3. When you're finished experimenting, close the sandbox. A dialog box will state
that all sandbox content will be discarded and permanently deleted. Select Ok.
4. Confirm that your host machine doesn't exhibit any of the modifications that you
made in Windows Sandbox.
Windows Sandbox architecture
Article • 05/25/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Sandbox benefits from new container technology in Windows to achieve a


combination of security, density, and performance that isn't available in traditional VMs.

Dynamically generated image


Rather than requiring a separate copy of Windows to boot the sandbox, Dynamic Base
Image technology uses the copy of Windows already installed on the host.

Most OS files are immutable and can be freely shared with Windows Sandbox. A small
subset of operating system files are mutable and can't be shared, so the sandbox base
image contains pristine copies of them. A complete Windows image can be constructed
from a combination of the sharable immutable files on the host and the pristine copies
of the mutable files. With the help of this scheme, Windows Sandbox has a full Windows
installation to boot from without needing to download or store an extra copy of
Windows.

Before Windows Sandbox is installed, the dynamic base image package is stored as a
compressed 30-MB package. Once it's installed, the dynamic base image occupies about
500 MB of disk space.

Memory management
Traditional VMs apportion statically sized allocations of host memory. When resource
needs change, classic VMs have limited mechanisms for adjusting their resource needs.
On the other hand, containers collaborate with the host to dynamically determine how
host resources are allocated. This method is similar to how processes normally compete
for memory on the host. If the host is under memory pressure, it can reclaim memory
from the container much like it would with a process.
Memory sharing
Because Windows Sandbox runs the same operating system image as the host, it has
been enhanced to use the same physical memory pages as the host for operating
system binaries via a technology referred to as "direct map." For example, when ntdll.dll
is loaded into memory in the sandbox, it uses the same physical pages as those pages of
the binary when loaded on the host. Memory sharing between the host and the
sandbox results in a smaller memory footprint when compared to traditional VMs,
without compromising valuable host secrets.

Integrated kernel scheduler


With ordinary virtual machines, the Microsoft hypervisor controls the scheduling of the
virtual processors running in the VMs. Windows Sandbox uses a new technology called
"integrated scheduling," which allows the host scheduler to decide when the sandbox
gets CPU cycles.
Windows Sandbox employs a unique policy that allows the virtual processors of the
Sandbox to be scheduled like host threads. Under this scheme, high-priority tasks on
the host can preempt less important work in the Sandbox. This preemption means that
the most important work will be prioritized, whether it's on the host or in the container.

WDDM GPU virtualization


Hardware accelerated rendering is key to a smooth and responsive user experience,
especially for graphics-intensive use cases. Microsoft works with its graphics ecosystem
partners to integrate modern graphics virtualization capabilities directly into DirectX and
Windows Display Driver Model (WDDM), the driver model used by Windows.

This feature allows programs running inside the sandbox to compete for GPU resources
with applications that are running on the host.

To take advantage of these benefits, a system with a compatible GPU and graphics
drivers (WDDM 2.5 or newer) is required. Incompatible systems will render apps in
Windows Sandbox with Microsoft's CPU-based rendering technology, Windows
Advanced Rasterization Platform (WARP).
Battery pass-through
Windows Sandbox is also aware of the host's battery state, which allows it to optimize
its power consumption. This functionality is critical for technology that is used on
laptops, where battery life is often critical.
Windows Sandbox configuration
Article • 05/25/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Sandbox supports simple configuration files, which provide a minimal set of
customization parameters for Sandbox. This feature can be used with Windows 10 build
18342 or Windows 11. Windows Sandbox configuration files are formatted as XML and
are associated with Sandbox via the .wsb file extension.

A configuration file enables the user to control the following aspects of Windows
Sandbox:

vGPU (virtualized GPU): Enable or disable the virtualized GPU. If vGPU is disabled,
the sandbox will use Windows Advanced Rasterization Platform (WARP).
Networking: Enable or disable network access within the sandbox.
Mapped folders: Share folders from the host with read or write permissions.
Exposing host directories may allow malicious software to affect the system or
steal data.
Logon command: A command that's executed when Windows Sandbox starts.
Audio input: Shares the host's microphone input into the sandbox.
Video input: Shares the host's webcam input into the sandbox.
Protected client: Places increased security settings on the RDP session to the
sandbox.
Printer redirection: Shares printers from the host into the sandbox.
Clipboard redirection: Shares the host clipboard with the sandbox so that text and
files can be pasted back and forth.
Memory in MB: The amount of memory, in megabytes, to assign to the sandbox.

7 Note

The size of the sandbox window currently isn't configurable.

Creating a configuration file


To create a configuration file:

1. Open a plain text editor or source code editor (for example, Notepad, Visual Studio
Code, etc.)

2. Insert the following lines:


XML

<Configuration>
</Configuration>

3. Add appropriate configuration text between the two lines. For details, see the
correct syntax and the examples below.

4. Save the file with the desired name, but make sure its filename extension is .wsb .
In Notepad, you should enclose the filename and the extension inside double
quotation marks, for example, "My config file.wsb" .

Using a configuration file


To use a configuration file, double-click it to start Windows Sandbox according to its
settings. You can also invoke it via the command line as shown here:

batch

C:\Temp> MyConfigFile.wsb

Keywords, values, and limits

vGPU
Enables or disables GPU sharing.

<vGPU>value</vGPU>

Supported values:

Enable: Enables vGPU support in the sandbox.


Disable: Disables vGPU support in the sandbox. If this value is set, the sandbox will
use software rendering, which may be slower than virtualized GPU.
Default This value is the default value for vGPU support. Currently, this default
value denotes that vGPU is disabled.

7 Note

Enabling virtualized GPU can potentially increase the attack surface of the sandbox.
Networking
Enables or disables networking in the sandbox. You can disable network access to
decrease the attack surface exposed by the sandbox.

<Networking>value</Networking>

Supported values:

Enable: Enables networking in the sandbox.


Disable: Disables networking in the sandbox.
Default: This value is the default value for networking support. This value enables
networking by creating a virtual switch on the host and connects the sandbox to it
via a virtual NIC.

7 Note

Enabling networking can expose untrusted applications to the internal network.

Mapped folders
An array of folders, each representing a location on the host machine that will be shared
into the sandbox at the specified path. At this time, relative paths aren't supported. If no
path is specified, the folder will be mapped to the container user's desktop.

XML

<MappedFolders>
<MappedFolder>
<HostFolder>absolute path to the host folder</HostFolder>
<SandboxFolder>absolute path to the sandbox folder</SandboxFolder>
<ReadOnly>value</ReadOnly>
</MappedFolder>
<MappedFolder>
...
</MappedFolder>
</MappedFolders>

HostFolder: Specifies the folder on the host machine to share into the sandbox. The
folder must already exist on the host, or the container will fail to start.

SandboxFolder: Specifies the destination in the sandbox to map the folder to. If the
folder doesn't exist, it will be created. If no sandbox folder is specified, the folder will be
mapped to the container desktop.
ReadOnly: If true, enforces read-only access to the shared folder from within the
container. Supported values: true/false. Defaults to false.

7 Note

Files and folders mapped in from the host can be compromised by apps in the
sandbox or potentially affect the host.

Logon command
Specifies a single command that will be invoked automatically after the sandbox logs
on. Apps in the sandbox are run under the container user account. The container user
account should be an administrator account.

XML

<LogonCommand>
<Command>command to be invoked</Command>
</LogonCommand>

Command: A path to an executable or script inside the container that will be executed
after signing in.

7 Note

Although very simple commands will work (such as launching an executable or


script), more complicated scenarios involving multiple steps should be placed into a
script file. This script file may be mapped into the container via a shared folder, and
then executed via the LogonCommand directive.

Audio input
Enables or disables audio input to the sandbox.

<AudioInput>value</AudioInput>

Supported values:

Enable: Enables audio input in the sandbox. If this value is set, the sandbox will be
able to receive audio input from the user. Applications that use a microphone may
require this capability.
Disable: Disables audio input in the sandbox. If this value is set, the sandbox can't
receive audio input from the user. Applications that use a microphone may not
function properly with this setting.
Default: This value is the default value for audio input support. Currently, this
default value denotes that audio input is enabled.

7 Note

There may be security implications of exposing host audio input to the container.

Video input
Enables or disables video input to the sandbox.

<VideoInput>value</VideoInput>

Supported values:

Enable: Enables video input in the sandbox.


Disable: Disables video input in the sandbox. Applications that use video input may
not function properly in the sandbox.
Default: This value is the default value for video input support. Currently, this
default value denotes that video input is disabled. Applications that use video
input may not function properly in the sandbox.

7 Note

There may be security implications of exposing host video input to the container.

Protected client
When Protected Client mode is enabled, Sandbox adds a new layer of security boundary
by running inside an AppContainer Isolation execution environment.

AppContainer Isolation provides Credential, Device, File, Network, Process, and Window
isolation.

<ProtectedClient>value</ProtectedClient>

Supported values:
Enable: Runs Windows sandbox in Protected Client mode. If this value is set, the
Sandbox runs in AppContainer Isolation.
Disable: Runs the Sandbox in the standard mode without extra security mitigations.
Default: This value is the default value for Protected Client mode. Currently, this
default value denotes that the sandbox doesn't run in Protected Client mode.

7 Note

This setting may restrict the user's ability to copy/paste files in and out of the
sandbox.

Printer redirection
Enables or disables printer sharing from the host into the sandbox.

<PrinterRedirection>value</PrinterRedirection>

Supported values:

Enable: Enables sharing of host printers into the sandbox.


Disable: Disables printer redirection in the sandbox. If this value is set, the sandbox
can't view printers from the host.
Default: This value is the default value for printer redirection support. Currently,
this default value denotes that printer redirection is disabled.

Clipboard redirection
Enables or disables sharing of the host clipboard with the sandbox.

<ClipboardRedirection>value</ClipboardRedirection>

Supported values:

Enable: Enables sharing of the host clipboard with the sandbox.


Disable: Disables clipboard redirection in the sandbox. If this value is set,
copy/paste in and out of the sandbox will be restricted.
Default: This value is the default value for clipboard redirection. Currently,
copy/paste between the host and sandbox are permitted under Default.

Memory in MB
Specifies the amount of memory that the sandbox can use in megabytes (MB).
<MemoryInMB>value</MemoryInMB>

If the memory value specified is insufficient to boot a sandbox, it will be automatically


increased to the required minimum amount.

Example 1
The following config file can be used to easily test the downloaded files inside the
sandbox. To achieve this testing, networking and vGPU are disabled, and the sandbox is
allowed read-only access to the shared downloads folder. For convenience, the logon
command opens the downloads folder inside the sandbox when it's started.

Downloads.wsb
XML

<Configuration>
<VGpu>Disable</VGpu>
<Networking>Disable</Networking>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\Users\Public\Downloads</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>explorer.exe C:\users\WDAGUtilityAccount\Downloads</Command>
</LogonCommand>
</Configuration>

Example 2
The following config file installs Visual Studio Code in the sandbox, which requires a
slightly more complicated LogonCommand setup.

Two folders are mapped into the sandbox; the first (SandboxScripts) contains
VSCodeInstall.cmd, which will install and run Visual Studio Code. The second folder
(CodingProjects) is assumed to contain project files that the developer wants to modify
using Visual Studio Code.

With the Visual Studio Code installer script already mapped into the sandbox, the
LogonCommand can reference it.
VSCodeInstall.cmd
Download vscode to downloads folder and run from downloads folder.

batch

REM Download Visual Studio Code


curl -L "https://update.code.visualstudio.com/latest/win32-x64-user/stable"
--output C:\users\WDAGUtilityAccount\Downloads\vscode.exe

REM Install and run Visual Studio Code


C:\users\WDAGUtilityAccount\Downloads\vscode.exe /verysilent
/suppressmsgboxes

VSCode.wsb
XML

<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\SandboxScripts</HostFolder>

<SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads\sandbox</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
<MappedFolder>
<HostFolder>C:\CodingProjects</HostFolder>

<SandboxFolder>C:\Users\WDAGUtilityAccount\Documents\Projects</SandboxFolder
>
<ReadOnly>false</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>

<Command>C:\Users\WDAGUtilityAccount\Downloads\sandbox\VSCodeInstall.cmd</Co
mmand>
</LogonCommand>
</Configuration>

Example 3
The following config file runs a PowerShell script as a logon command to swap the
primary mouse button for left-handed users.
C:\sandbox folder on the host is mapped to the C:\sandbox folder in the sandbox, so

the SwapMouse.ps1 script can be referenced in the sandbox configuration file.

SwapMouse.ps1
Create a powershell script using the following code, and save it in the C:\sandbox
directory as SwapMouse.ps1 .

PowerShell

[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-
Null

$SwapButtons = Add-Type -MemberDefinition @'


[DllImport("user32.dll")]
public static extern bool SwapMouseButton(bool swap);
'@ -Name "NativeMethods" -Namespace "PInvoke" -PassThru

$SwapButtons::SwapMouseButton(!
([System.Windows.Forms.SystemInformation]::MouseButtonsSwapped))

SwapMouse.wsb
XML

<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\sandbox</HostFolder>
<SandboxFolder>C:\sandbox</SandboxFolder>
<ReadOnly>True</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>powershell.exe -ExecutionPolicy Bypass -File
C:\sandbox\SwapMouse.ps1</Command>
</LogonCommand>
</Configuration>
Windows identity protection
Article • 07/27/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Learn more about identity protection technologies in Windows.

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

Passwordless Sign In
Security Features & Capabilities
Measures

Windows Hello Windows 11 devices can protect user identities by removing the need to use
for Business passwords from day one. It's easy to get started with the method that's right for
your organization. A password may only need to be used once during the
provisioning process, after which people use a PIN, face, or fingerprint to unlock
credentials and sign into the device.

Windows Hello for Business replaces the username and password by combining
a security key or certificate with a PIN or biometrics data, and then mapping the
credentials to a user account during setup. There are multiple ways to deploy
Windows Hello for Business, depending on your organization's needs.
Organizations that rely on certificates typically use on-premises public key
infrastructure (PKI) to support authentication through Certificate Trust.
Organizations using key trust deployment require root-of-trust provided by
certificates on domain controllers.

Windows Windows presence sensing provides another layer of data security protection
presence for hybrid workers. Windows 11 devices can intelligently adapt to your presence
sensing to help you stay secure and productive, whether you're working at home, the
office, or a public environment. Windows presence sensing combines presence
detection sensors with Windows Hello facial recognition to automatically lock
your device when you leave, and then unlock your device and sign you in using
Windows Hello facial recognition when you return. Requires OEM supporting
hardware.
Security Features & Capabilities
Measures

Windows Hello Windows Hello biometrics also supports enhanced sign-in security, which uses
for Business specialized hardware and software components to raise the security bar even
Enhanced higher for biometric sign in.
Security Sign-
in (ESS) Enhanced sign-in security biometrics uses VBS and the TPM to isolate user
authentication processes and data and secure the pathway by which the
information is communicated. These specialized components protect against a
class of attacks that include biometric sample injection, replay, tampering, and
more.

For example, fingerprint readers must implement Secure Device Connection


Protocol, which uses key negotiation and a Microsoft-issued certificate to
protect and securely store user authentication data. For facial recognition,
components such as the Secure Devices (SDEV) table and process isolation with
trustlets help prevent additional class of attacks.

Fast Identity Fast Identity Online (FIDO) defined CTAP and WebAuthN specifications are
Online (FIDO2) becoming the open standard for providing strong authentication that is non-
security key phishable, user-friendly, and privacy-respecting with implementations from
major platform providers and relying parties. FIDO standards and certifications
are becoming recognized as the leading standard for creating secure
authentication solutions across enterprises, governments, and consumer
markets.

Windows 11 can use external FIDO2 security keys for authentication alongside
or in addition to Windows Hello which is also a FIDO2 certified passwordless
solution. Windows 11 can be used as a FIDO authenticator for many popular
identity management services.

Federated Windows 11 Education editions support federated sign-in with third-party


sign-in identity providers. Federated sign-in enables secure sign in through methods
like QR codes or pictures.

Smart Cards Organizations also have the option of using smart cards, an authentication
for Windows method that pre-dates biometric sign in. Smart cards are tamper-resistant,
Service portable storage devices that can enhance Windows security when
authenticating clients, signing code, securing e-mail, and signing in with
Windows domain accounts. Smart cards can only be used to sign into domain
accounts, not local accounts. When a password is used to sign into a domain
account, Windows uses the Kerberos version 5 (v5) protocol for authentication.
If you use a smart card, the operating system uses Kerberos v5 authentication
with X.509 v3 certificates.

Advanced Credential Protection


Security Features & Capabilities
Measures

Windows LAPS Windows Local Administrator Password Solution (Windows LAPS) is a


Windows feature that automatically manages and backs up the password of
a local administrator account on your Azure Active Directory-joined or
Windows Server Active Directory-joined devices. You also can use Windows
LAPS to automatically manage and back up the Directory Services Restore
Mode (DSRM) account password on your Windows Server Active Directory
domain controllers. An authorized administrator can retrieve the DSRM
password and use it.

Account Lockout
Policy

Enhanced Users who are still using passwords can benefit from powerful credential
phishing protection. Microsoft Defender SmartScreen includes enhanced phishing
protection with protection to automatically detect when a user enters their Microsoft
SmartScreen password into any app or website. Windows then identifies if the app or site
is securely authenticating to Microsoft and warns if the credentials are at risk.
Since users are alerted at the moment of potential credential theft, they can
take preemptive action before their password is used against them or their
organization.

Access Control Access control in Windows ensures that shared resources are available to
(ACLs/SCALS) users and groups other than the resource's owner and are protected from
unauthorized use. IT administrators can manage users', groups', and
computers' access to objects and assets on a network or computer. After a
user is authenticated, the Windows operating system implements the second
phase of protecting resources by using built-in authorization and access
control technologies to determine if an authenticated user has the correct
permissions.

Access Control Lists (ACL) describe the permissions for a specific object and
can also contain System Access Control Lists (SACL). SACLs provide a way to
audit specific system level events, such as when a user attempt to access file
system objects. These events are essential for tracking activity for objects that
are sensitive or valuable and require extra monitoring. Being able to audit
when a resource attempts to read or write part of the operating system is
critical to understanding a potential attack.

Windows Enabled by default in Windows 11 Enterprise, Windows Credential Guard


Defender uses hardware-backed, Virtualization-based security (VBS) to protect against
Credential Guard credential theft. With Windows Credential Guard, the Local Security Authority
(LSA) stores and protects secrets in an isolated environment that isn't
accessible to the rest of the operating system. LSA uses remote procedure
calls to communicate with the isolated LSA process.

By protecting the LSA process with Virtualization-based security, Windows


Credential Guard shields systems from credential theft attack techniques like
Security Features & Capabilities
Measures

pass-the-hash or pass-the-ticket. It also helps prevent malware from


accessing system secrets even if the process is running with admin privileges.

Windows Window Defender Remote Credential Guard helps you protect your
Defender Remote credentials over a Remote Desktop connection by redirecting the Kerberos
Credential Guard requests back to the device that is requesting the connection. It also provides
single sign-on experiences for Remote Desktop sessions.

Administrator credentials are highly privileged and must be protected. When


you use Windows Defender Remote Credential Guard to connect during
Remote Desktop sessions, your credential and credential derivatives are
never passed over the network to the target device. If the target device is
compromised, your credentials aren't exposed.
Password-less strategy
Article • 12/06/2022 • Applies to: ✅ Windows 11, ✅ Windows 10

This article describes Windows' password-less strategy and how Windows Hello for
Business implements this strategy.

Four steps to password freedom


Over the past few years, Microsoft has continued their commitment to enabling a world
without passwords.

1. Develop a password replacement offering


Before you move away from passwords, you need something to replace them. With
Windows 10 and Windows 11, Microsoft introduced Windows Hello for Business, a
strong, hardware protected two-factor credential that enables single sign-on to Azure
Active Directory and Active Directory.

Deploying Windows Hello for Business is the first step towards a password-less
environment. Windows Hello for Business coexists nicely with existing password-based
security. Users are likely to use Windows Hello for Business because of its convenience,
especially when combined with biometrics. However, some workflows and applications
may still need passwords. This early stage is about implementing an alternative and
getting users used to it.
2. Reduce user-visible password surface area
With Windows Hello for Business and passwords coexisting in your environment, the
next step is to reduce the password surface. The environment and workflows need to
stop asking for passwords. The goal of this step is to achieve a state where the users
know they have a password, but they never use it. This state helps decondition users
from providing a password anytime a password prompt shows on their computer. This
behavior is how passwords are phished. Users who rarely, if at all, use their password are
unlikely to provide it. Password prompts are no longer the norm.

3. Transition into a password-less deployment


Once the user-visible password surface has been eliminated, your organization can
begin to transition those users into a password-less world. A world where:

The users never type their password.


The users never change their password.
The users don't know their password.

In this world, the user signs in to Windows using Windows Hello for Business and enjoys
single sign-on to Azure and Active Directory resources. If the user is forced to
authenticate, their authentication uses Windows Hello for Business.

4. Eliminate passwords from the identity directory


The final step of the password-less story is where passwords simply don't exist. At this
step, identity directories no longer persist any form of the password. This stage is where
Microsoft achieves the long-term security promise of a truly password-less environment.

Methodology
Four steps to password freedom provide an overall view of how Microsoft envisions the
road to eliminating passwords. But this road is frequently traveled and derailed by many.
The scope of work is vast and filled with many challenges and frustrations. Nearly
everyone wants the instant gratification of achieving a password-less environment, but
can easily become overwhelmed by any of the steps. You aren't alone and Microsoft
understands. While there are many ways to accomplish freedom from passwords, here's
one recommendation based on several years of research, investigation, and customer
conversations.
Prepare for the journey
The road to being password-less is a journey. The duration of that journey varies for
each organization. It's important for IT decision-makers to understand the criteria
influencing the length of that journey.

The most intuitive answer is the size of the organization, and that would be correct.
However, what exactly determines size? One way to break down the size of the
organization is by creating a summary of the following components:

Number of departments
Organization or department hierarchy
Number and type of applications and services
Number of work personas
Organization's IT structure

Number of departments

The number of departments within an organization varies. Most organizations have a


common set of departments such as executive leadership, human resources, accounting,
sales, and marketing. Other organizations will have those departments and others such
as research and development or support. Small organizations may not explicitly
segment their departments, while larger ones may. Additionally, there may be
subdepartments, and subdepartments of those subdepartments as well.

You need to know all the departments within your organization and you need to know
which departments use computers and which ones don't. It's fine if a department
doesn't use computers (probably rare, but acceptable). This circumstance means there's
one less department with which you need to concern yourself. Nevertheless, ensure this
department is in your list and you've assessed that it's not applicable.

Your count of the departments must be thorough and accurate, as well as knowing the
stakeholders for those departments that will put you and your staff on the road to
password freedom. Realistically, many of us lose sight of our organizational chart and
how it grows or shrinks over time. This realization is why you need to inventory all of
them. Also, don't forget to include external departments such as vendors or federated
partners. If your organization goes password-free, but your partners continue to use
passwords and then access your corporate resources, you should know about it and
include them in your password-less strategy.

Organization or department hierarchy


Organization and department hierarchy is the management layers within the
departments or the organization as a whole. How the device is used, what applications
and how they're used, most likely differs between each department, but also within the
structure of the department. To determine the correct password-less strategy, you need
to know these differences across your organization. An executive leader is likely to use
their device differently compared to a member of middle management in the sales
department. Both of those user cases are probably different to how an individual
contributor in the customer service department uses their device.

Number and type of applications and services


Most organizations have many applications and rarely do they have one centralized list
that's accurate. Applications and services are the most critical items in your password-
less assessment. Applications and services take considerable effort to move to a
different type of authentication. Changing policies and procedures can be a daunting
task. Consider the trade-off between updating your standard operating procedures and
security policies compared to changing 100 lines (or more) of authentication code in the
critical path of your internally developed CRM application.

Capturing the number of applications used is easier once you have the departments,
their hierarchy, and their stakeholders. In this approach, you should have an organized
list of departments and the hierarchy in each. You can now associate the applications
that are used by all levels within each department. You'll also want to document whether
the application is internally developed or commercially available off-the-shelf (COTS). If
the latter, document the manufacturer and the version. Also, don't forget web-based
applications or services when inventorying applications.

Number of work personas


Work personas are where the three previous efforts converge. You know the
departments, the organizational levels within each department, the numbers of
applications used by each, respectively, and the type of application. From this
information, you want to create a work persona.

A work persona classifies a category of user, title or role (individual contributor,


manager, middle manager, etc.), within a specific department to a collection of
applications used. There's a high probability that you'll have many work personas. These
work personas will become units of work, and you'll refer to them in documentation and
in meetings. You need to give them a name.
Give your personas easy and intuitive names like Abby Accounting, Mark Marketing, or
Sue Sales. If the organization levels are common across departments, then decide on a
first name that represents the common levels in a department. For example, Abby could
be the first name of an individual contributor in any given department, while the first
name Sue could represent someone from middle management in any given department.
Additionally, you can use suffixes such as (I, II, Senior, etc.) to further define
departmental structure for a given persona.

Ultimately, create a naming convention that doesn't require your stakeholders and
partners to read through a long list of tables or a secret decoder ring. Also, if possible,
try to keep the references as names of people. After all, you're talking about a person
who is in that department and who uses that specific software.

Organization's IT structure
IT department structures can vary more than the organization. Some IT departments are
centralized while others are decentralized. Also, the road to password freedom will
probably have you interacting with the client authentication team, the deployment
team, the security team, the PKI team, the Active Directory team, the cloud team, and
the list continues. Most of these teams will be your partner on your journey to password
freedom. Ensure there's a password-less stakeholder on each of these teams, and that
the effort is understood and funded.

Assess your organization

You have a ton of information. You've created your work personas, you've identified
your stakeholders throughout the different IT groups. Now what?

By now you can see why it's a journey and not a weekend project. You need to
investigate user-visible password surfaces for each of your work personas. Once you've
identified the password surfaces, you need to mitigate them. Resolving some password
surfaces are simple - meaning a solution already exists in the environment and it's only a
matter of moving users to it. Resolution to some passwords surfaces may exist, but
aren't deployed in your environment. That resolution results in a project that must be
planned, tested, and then deployed. That project is likely to span multiple IT
departments with multiple people, and potentially one or more distributed systems.
Those types of projects take time and need dedicated cycles. This same sentiment is true
with in-house software development. Even with agile development methodologies,
changing the way someone authenticates to an application is critical. Without the
proper planning and testing, it has the potential to severely affect productivity.
How long does it take to become password-less? The answer is "it depends". It depends
on the organizational alignment of a password-less strategy. Top-down agreement that
a password-less environment is the organization's goal makes conversations much
easier. Easier conversations mean less time spent convincing people and more time
spent moving forward toward the goal. Top-down agreement, as a priority within the
ranks of other on-going IT projects, helps everyone understand how to prioritize
existing projects. Agreeing on priorities should reduce and minimize manager and
executive level escalations. After these organizational discussions, modern project
management techniques are used to continue the password-less effort. The
organization allocates resources based on the priority (after they've agreed on the
strategy). Those resources will:

Work through the work personas.


Organize and deploy user acceptance testing.
Evaluate user acceptance testing results for user visible password surfaces.
Work with stakeholders to create solutions that mitigate user visible password
surfaces.
Add the solution to the project backlog and prioritize against other projects.
Deploy the solution.
Perform user acceptance testing to confirm that the solution mitigates the user
visible password surface.
Repeat the testing as needed.

Your organization's journey to password freedom may take some time. Counting the
number of work personas and the number of applications is probably a good indicator
of the investment. Hopefully, your organization is growing, which means that the list of
personas and the list of applications is unlikely to shrink. If the work to go password-less
today is n, then it's likely that to go password-less tomorrow is n x 2 or more, n x n.
Don't let the size or duration of the project be a distraction. As you progress through
each work persona, the actions and tasks will become more familiar for you and your
stakeholders. Scope the project to sizable, realistic phases, pick the correct work
personas, and soon you'll see parts of your organization transition to a password-less
state.

Where to start?
What's the best guidance for kicking off the journey to password freedom? You'll want
to show your management a proof of concept as soon as possible. Ideally, you want to
show it at each step of your password-less journey. Keeping your password-less strategy
top of mind and showing consistent progress keeps everyone focused.
Work persona
You begin with your work personas. These were part of your preparation process. They
have a persona name, such as Abby Accounting II, or any other naming convention your
organization defined. That work persona includes a list of all the applications Abby uses
to perform her assigned duties in the accounting department. To start, you need to pick
a work persona. It's the targeted work persona you'll enable so that you can climb the
steps to password freedom.

) Important

Avoid using any work personas from your IT department. This method is probably
the worst way to start the password-less journey. IT roles are very difficult and time
consuming. IT workers typically have multiple credentials, run a multitude of scripts
and custom applications, and are the worst offenders of password usage. It is
better to save these work personas for the middle or end of your journey.

Review your collection of work personas. Early in your password-less journey, identify
personas with the fewest applications. These work personas could represent an entire
department or two. These roles are the perfect work personas for your proof-of-concept
or pilot.

Most organizations host their proof of concept in a test lab or environment. If you do
that test with a password-free strategy, it may be more challenging and take more time.
To test in a lab, you must first duplicate the environment of the targeted persona. This
process could take a few days or several weeks, depending on the complexity of the
targeted work persona.

You'll want to balance lab testing with providing results to management quickly.
Continuing to show forward progress on your journey to password freedom is always a
good thing. If there are ways you can test in production with low or no risk, it may be
advantageous to your timeline.

The process
The journey to password freedom is to take each work persona through each step of the
process. In the beginning, we encourage working with one persona at a time to ensure
team members and stakeholders are familiar with the process. Once comfortable with
the process, you can cover as many work personas in parallel as resources allow. The
process looks something like this:
1. Password-less replacement offering (step 1)
a. Identify test users representing the targeted work persona.
b. Deploy Windows Hello for Business to test users.
c. Validate that passwords and Windows Hello for Business work.
2. Reduce user-visible password surface (step 2)
a. Survey test user workflow for password usage.
b. Identify password usage and plan, develop, and deploy password mitigations.
c. Repeat until all user password usage is mitigated.
d. Remove password capabilities from Windows.
e. Validate that none of the workflows need passwords.
3. Transition into a password-less scenario (step 3)
a. Awareness campaign and user education.
b. Include remaining users who fit the work persona.
c. Validate that none of the users of the work personas need passwords.
d. Configure user accounts to disallow password authentication.

After successfully moving a work persona to password freedom, you can prioritize the
remaining work personas and repeat the process.

Password-less replacement offering (step 1)


The first step to password freedom is providing an alternative to passwords. Windows
10 and Windows 11 provide an affordable and easy in-box alternative to passwords,
Windows Hello for Business, a strong, two-factor authentication to Azure Active
Directory and Active Directory.

Identify test users that represent the targeted work persona

A successful transition relies on user acceptance testing. It's impossible for you to know
how every work persona goes about their day-to-day activities, or how to accurately
validate them. You need to enlist the help of users who fit the targeted work persona.
You only need a few users from the targeted work persona. As you cycle through step 2,
you may want to change a few of the users (or add a few) as part of your validation
process.

Deploy Windows Hello for Business to test users

Next, you'll want to plan your Windows Hello for Business deployment. Your test users
will need an alternative way to sign-in during step 2 of the journey to becoming
password-less. Use the Windows Hello for Business planning guide to help learning
which deployment is best suited for your environment. Next, use the Windows Hello for
Business deployment guides to deploy Windows Hello for Business.

With the Windows Hello for Business infrastructure in place, you can limit Windows
Hello for Business enrollments to the targeted work personas. The great news is that
you'll only need to deploy the infrastructure once. When other targeted work personas
need to start using Windows Hello for Business, add them to a group. You'll use the first
work persona to validate your Windows Hello for Business deployment.

7 Note

There are many different ways to connect a device to Azure. Deployments may vary
based on how the device is joined to Azure Active Directory. Review your planning
guide and deployment guide to ensure additional infrastructure is not needed for
an additional Azure joined devices.

Validate that passwords and Windows Hello for Business work

In this first step, passwords and Windows Hello for Business must coexist. You want to
validate that while your targeted work personas can sign in and unlock using Windows
Hello for Business, but they can also sign-in, unlock, and use passwords as needed.
Reducing the user-visible password surface too soon can create frustration and
confusion with your targeted user personas.

Reduce user-visible password surface (step 2)


Before you move to step 2, make sure you've:

Selected your targeted work persona.


Identified your test users who represent the targeted work persona.
Deployed Windows Hello for Business to test users.
Validated passwords and Windows Hello for Business both work for the test users.

Survey test user workflow for password usage

Now is the time to learn more about the targeted work persona. You have a list of
applications they use, but you don't know what, why, when, and how frequently. This
information is important as you further your progress through step 2.

Test users create the workflows associated with the targeted work persona. Their initial
goal is to do one simple task: Document password usage. This list isn't a comprehensive
one, but it gives you an idea of the type of information you want. The general idea is to
learn about all the scenarios in which that work persona encounters a password. A good
approach is to ask yourself the following set of questions:

What's the name of the application that asked for a password?


Why do they use the application that asked for a password? For example, is there
more than one application that can do the same thing?
What part of their workflow makes them use the application? Try to be as specific
as possible. For example, "I use application x to issue credit card refunds for
amounts over y."
How frequently do you use this application in a given day or week?
Is the password you type into the application the same as the password you use to
sign-in to Windows?

Some organizations will empower their users to write this information while some may
insist on having a member of the IT department shadow them. An objective viewer may
notice a password prompt that the user overlooks simply because of muscle memory. As
previously mentioned, this information is critical. You could miss one password prompt
that could delay the transition to being password-less.

Identify password usage and plan, develop, and deploy password


mitigations
Your test users have provided you valuable information that describes how, what, why,
and when they use a password. It's now time for your team to identify each of these
password use cases and understand why the user must use a password.

Create a list of the scenarios. Each scenario should have a clear problem statement.
Name the scenario with a one-sentence summary of the problem statement. Include in
the scenario the results of your team's investigation as to why the user is prompted by a
password. Include relevant, but accurate details. If it's policy or procedure driven, then
include the name and section of the policy that dictates why the workflow uses a
password.

Keep in mind your test users won't uncover all scenarios. Some scenarios you'll need to
force on your users because they're low percentage scenarios. Remember to include the
following scenarios:

Provisioning a new brand new user without a password.


Users who forget the PIN or other remediation flows when the strong credential is
unusable.
Next, review your list of scenarios. You can start with the workflows that are dictated by
process or policy, or you can begin with workflows that need technical solutions,
whichever of the two is easier or quicker. This choice will certainly vary by organization.

Start mitigating password usages based on the workflows of your targeted personas.
Document the mitigation as a solution to your scenario. Don't worry about the
implementation details for the solution. An overview of the changes needed to reduce
the password usages is all you need. If there are technical changes needed, either
infrastructure or code changes, the exact details will likely be included in the project
documentation. However your organization tracks projects, create a new project in that
system. Associate your scenario to that project and start the processes needed to get
that project funded.

Mitigating password usage with applications is one of the more challenging obstacles in
the password-less journey. If your organization develops the application, then you are in
better shape the common-off-the-shelf software (COTS).

The ideal mitigation for applications that prompt the user for a password is to enable
those applications to use an existing authenticated identity, such as Azure Active
Directory or Active Directory. Work with the applications vendors to have them add
support for Azure identities. For on-premises applications, have the application use
Windows integrated authentication. The goal for your users should be a seamless single
sign-on experience where each user authenticates once when they sign-in to Windows.
Use this same strategy for applications that store their own identities in their own
databases.

Each scenario on your list should now have a problem statement, an investigation as to
why the password was used, and a mitigation plan on how to make the password usage
go away. Armed with this data, one-by-one, close the gaps on user-visible passwords.
Change policies and procedures as needed, make infrastructure changes where possible.
Convert in-house applications to use federated identities or Windows integrated
authentication. Work with third-party software vendors to update their software to
support federated identities or Windows integrated authentication.

Repeat until all user password usage is mitigated

Some or all of your mitigations are in place. You need to validate that your solutions
have solved their problem statements. This stage is where you rely on your test users.
You want to keep a good portion of your first test users, but this point is a good
opportunity to replace a few or add a few. Survey test users workflow for password
usage. If all goes well, you've closed most or all of the gaps. A few are likely to remain.
Evaluate your solutions and what went wrong, change your solution as needed until you
reach a solution that removes your user's need to type a password. If you're stuck,
others might be too. Use the forums from various sources or your network of IT
colleagues to describe your problem and see how others are solving it. If you're out of
options, contact Microsoft for assistance.

Remove password capabilities from Windows

You believe you've mitigated all the password usage for the targeted work persona.
Now comes the true test: configure Windows so the user can't use a password.

Windows provides two ways to prevent your users from using passwords. You can use
an interactive logon security policy to only allow Windows Hello for Business sign-in and
unlocks, or you can exclude the password credential provider.

Security policy

You can use Group Policy to deploy an interactive logon security policy setting to the
computer. This policy setting is found under Computer Configuration > Policies >
Windows Settings > Local Policy > Security Options. The name of the policy setting
depends on the version of the operating systems you use to configure Group Policy.

Windows Server 2016 and earlier The policy name for these operating systems is
Interactive logon: Require smart card.
Windows 10, version 1703 or later using Remote Server Administrator Tools The policy
name for these operating systems is Interactive logon: Require Windows Hello for
Business or smart card.
When you enable this security policy setting, Windows prevents users from signing in or
unlocking with a password. The password credential provider remains visible to the user.
If a user tries to use a password, Windows informs the user they must use Windows
Hello for Business or a smart card.

Excluding the password credential provider


You can use Group Policy to deploy an administrative template policy setting to the
computer. This policy setting is found under Computer Configuration > Policies >
Administrative Templates > System > Logon:
The name of the policy setting is Exclude credential providers. The value to enter in the
policy to hide the password credential provider is {60b78e88-ead8-445c-9cfd-
0b87f74ea6cd} .
Excluding the password credential provider hides the password credential provider from
Windows and any application that attempts to load it. This configuration prevents the
user from entering a password using the credential provider. However, this change
doesn't prevent applications from creating their own password collection dialogs and
prompting the user for a password using custom dialogs.

Validate that none of the workflows needs passwords

This stage is the significant moment. You have identified password usage, developed
solutions to mitigate password usage, and have removed or disabled password usage
from Windows. In this configuration, your users won't be able to use a password. Users
will be blocked if any of their workflows ask them for a password. Ideally, your test users
should be able to complete all the work flows of the targeted work persona without any
password usage. Don't forget those low percentage work flows, such as provisioning a
new user or a user that forgot their PIN or can't use their strong credential. Ensure those
scenarios are validated as well.
Transition into a password-less deployment (step 3)
Congratulations! You're ready to transition one or more portions of your organization to
a password-less deployment. You've validated that the targeted work persona is ready
to go where the user no longer needs to know or use their password. You're just a few
steps away from declaring success.

Awareness and user education

In this last step, you're going to include the remaining users that fit the targeted work
persona to the wonderful world of password freedom. Before you do this step, you want
to invest in an awareness campaign.

An awareness campaign introduces the users to the new way of authenticating to their
device, such as using Windows Hello for Business. The idea of the campaign is to
positively promote the change to the users in advance. Explain the value and why your
company is changing. The campaign should provide dates and encourage questions and
feedback. This campaign can coincide with user education, where you can show the
users the changes and, if your environment allows, enable the users to try out the
experience.

Including remaining users that fit the work persona


You've implemented the awareness campaign for the targeted users. These users are
informed and ready to transition to being password-less. Add the remaining users that
match the targeted work persona to your deployment.

Validate that none of the users of the work personas needs


passwords

You've successfully transitioned all users for the targeted work persona to being
password-less. Monitor the users within the work persona to ensure they don't
encounter any issues while working in a password-less environment.

Track all reported issues. Set priority and severity to each reported issue and have your
team triage the issues appropriately. As you triage issues, consider the following
questions:

Is the reporting user performing a task outside the work persona?


Is the reported issue affecting the entire work persona, or only specific users?
Is the outage a result of a misconfiguration?
Is the outage an overlooked gap from step 2?

Each organization's priority and severity will differ. However, most organizations
consider work stoppages to be fairly significant. Your team should predefine levels of
priority and severity. With each of these levels, create service level agreements (SLAs) for
each combination of severity and priority, and hold everyone accountable to those
agreements. Reactive planning enables people to spend more time on the issue and
resolving it, and less time on the process.

Resolve the issues per your service level agreements. Higher severity items may require
returning some or all of the user's password surface. Clearly this outcome isn't the end
goal, but don't let it slow down your momentum towards becoming password-less.
Refer to how you reduced the user's password surface in step 2 and progress forward to
a solution, deploying that solution and validating it.

Configure user accounts to disallow password authentication

You transitioned all the users for the targeted work persona to a password-less
environment and you've successfully validated all their workflows. The last step to
complete the password-less transition is to remove the user's knowledge of the
password and prevent the authenticating authority from accepting passwords.

You can change the user's password to random data and prevent domain controllers
from allowing users to use passwords for interactive sign-ins using an account
configuration on the user object.

The account options on a user account include the option Smart card is required for
interactive logon, also known as SCRIL.

7 Note

Do not confuse the Interactive Logon security policy for SCRIL. Security policies are
enforced on the client (locally). A user account configured for SCRIL is enforced at
the domain controller.

The following image shows the SCRIL setting for a user in Active Directory Users and
Computers:
When you configure a user account for SCRIL, Active Directory changes the affected
user's password to a random 128 bits of data. Additionally, domain controllers hosting
the user account don't allow the user to sign-in interactively with a password. Users will
no longer need to change their password when it expires, because passwords for SCRIL
users don't expire. The users are effectively password-less because:

They don't know their password.


Their password is 128 random bits of data and is likely to include non-typable
characters.
The user isn't asked to change their password.
Domain controllers don't allow passwords for interactive authentication.

The following image shows the SCRIL setting for a user in Active Directory
Administrative Center on Windows Server 2012:

7 Note

Although a SCRIL user's password never expires in early domains, you can toggle
the SCRIL configuration on a user account to generate a new random 128 bit
password. Use the following process to toggle this configuration:

1. Disable the setting.


2. Save changes.
3. Enable the setting.
4. Save changes again.

When you upgrade the domain functional level to Windows Server 2016 or later,
the domain controller automatically does this action for you.
The following image shows the SCRIL setting for a user in Active Directory
Administrative Center on Windows Server 2016:

 Tip

Windows Hello for Business was formerly known as Microsoft Passport.

Automatic password change for SCRIL configured users

Domains configured for Windows Server 2016 or later domain functional level can
further secure the unknown password for SCRIL-enabled users by configuring the
domain to automatically change the password for SCRIL users.

In this configuration, passwords for SCRIL-configured users expire based on Active


Directory password policy settings. When the SCRIL user authenticates from a domain
controller, the domain controller recognizes the password has expired, and
automatically generates a new random 128-bit password for the user as part of the
authentication. This feature is great because your users don't experience any change
password notifications or any authentication outages.
7 Note

Some components within Windows 10, such as Data Protection APIs and NTLM
authentication, still need artifacts of a user possessing a password. This
configuration provides interoperability by reducing the usage surface while
Microsoft continues to close the gaps to remove the password completely.
Windows Hello for Business Overview
Article • 07/27/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Hello for Business replaces passwords with strong two-factor authentication
on devices. This authentication consists of a type of user credential that is tied to a
device and uses a biometric or PIN.

7 Note

When Windows 10 first shipped, it included Microsoft Passport and Windows Hello,
which worked together to provide multi-factor authentication. To simplify
deployment and improve supportability, Microsoft has combined these
technologies into a single solution under the Windows Hello name. Customers who
have already deployed these technologies will not experience any change in
functionality. Customers who have yet to evaluate Windows Hello will find it easier
to deploy due to simplified policies, documentation, and semantics.

Windows Hello addresses the following problems with passwords:

Strong passwords can be difficult to remember, and users often reuse passwords
on multiple sites.
Server breaches can expose symmetric network credentials (passwords).
Passwords are subject to replay attacks.
Users can inadvertently expose their passwords due to phishing attacks.

Windows Hello lets users authenticate to:

A Microsoft account.
An Active Directory account.
A Microsoft Azure Active Directory (Azure AD) account.
Identity Provider Services or Relying Party Services that support Fast ID Online
(FIDO) v2.0 authentication.

After an initial two-step verification of the user during enrollment, Windows Hello is set
up on the user's device and Windows asks the user to set a gesture, which can be a
biometric, such as a fingerprint, or a PIN. The user provides the gesture to verify their
identity. Windows then uses Windows Hello to authenticate users.

As an administrator in an enterprise or educational organization, you can create policies


to manage Windows Hello for Business use on Windows 10-based devices that connect
to your organization.
Biometric sign-in
Windows Hello provides reliable, fully integrated biometric authentication based on
facial recognition or fingerprint matching. Windows Hello uses a combination of special
infrared (IR) cameras and software to increase accuracy and guard against spoofing.
Major hardware vendors are shipping devices that have integrated Windows Hello-
compatible cameras. Fingerprint reader hardware can be used or added to devices that
don't currently have it. On devices that support Windows Hello, an easy biometric
gesture unlocks users' credentials.

Facial recognition. This type of biometric recognition uses special cameras that see
in IR light, which allows them to reliably tell the difference between a photograph
or scan and a living person. Several vendors are shipping external cameras that
incorporate this technology, and major laptop manufacturers are incorporating it
into their devices, as well.
Fingerprint recognition. This type of biometric recognition uses a capacitive
fingerprint sensor to scan your fingerprint. Fingerprint readers have been available
for Windows computers for years, but the current generation of sensors is more
reliable and less error-prone. Most existing fingerprint readers work with Windows
10 and Windows 11, whether they're external or integrated into laptops or USB
keyboards.
Iris Recognition. This type of biometric recognition uses cameras to perform scan
of your iris. HoloLens 2 is the first Microsoft device to introduce an Iris scanner.
These iris scanners are the same across all HoloLens 2 devices.

Windows stores biometric data that is used to implement Windows Hello securely on
the local device only. The biometric data doesn't roam and is never sent to external
devices or servers. Because Windows Hello only stores biometric identification data on
the device, there's no single collection point an attacker can compromise to steal
biometric data. For more information about biometric authentication with Windows
Hello for Business, see Windows Hello biometrics in the enterprise.

The difference between Windows Hello and


Windows Hello for Business
Individuals can create a PIN or biometric gesture on their personal devices for
convenient sign-in. This use of Windows Hello is unique to the device on which it's
set up, but can use a password hash depending on an individual's account type.
This configuration is referred to as Windows Hello convenience PIN and it's not
backed by asymmetric (public/private key) or certificate-based authentication.
Windows Hello for Business, which is configured by group policy or mobile device
management (MDM) policy, always uses key-based or certificate-based
authentication. This behavior makes it more secure than Windows Hello
convenience PIN.

Benefits of Windows Hello


Reports of identity theft and large-scale hacking are frequent headlines. Nobody wants
to be notified that their user name and password have been exposed.

You may wonder how a PIN can help protect a device better than a password. Passwords
are shared secrets; they're entered on a device and transmitted over the network to the
server. An intercepted account name and password can be used by anyone, anywhere.
Because they're stored on the server, a server breach can reveal those stored credentials.

In Windows 10 and later, Windows Hello replaces passwords. When an identity provider
supports keys, the Windows Hello provisioning process creates a cryptographic key pair
bound to the Trusted Platform Module (TPM), if a device has a TPM 2.0, or in software.
Access to these keys and obtaining a signature to validate user possession of the private
key is enabled only by the PIN or biometric gesture. The two-step verification that takes
place during Windows Hello enrollment creates a trusted relationship between the
identity provider and the user when the public portion of the public/private key pair is
sent to an identity provider and associated with a user account. When a user enters the
gesture on the device, the identity provider knows that it's a verified identity, because of
the combination of Windows Hello keys and gestures. It then provides an authentication
token that allows Windows to access resources and services.

7 Note

Windows Hello as a convenience sign-in uses regular username and password


authentication, without the user entering the password.

Imagine that someone is looking over your shoulder as you get money from an ATM
and sees the PIN that you enter. Having that PIN won't help them access your account
because they don't have your ATM card. In the same way, learning your PIN for your
device doesn't allow that attacker to access your account because the PIN is local to
your specific device and doesn't enable any type of authentication from any other
device.

Windows Hello helps protect user identities and user credentials. Because the user
doesn't enter a password (except during provisioning), it helps circumvent phishing and
brute force attacks. It also helps prevent server breaches because Windows Hello
credentials are an asymmetric key pair, which helps prevent replay attacks when these
keys are protected by TPMs.

Windows edition and licensing requirements


The following table lists the Windows editions that support Windows Hello for Business:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Windows Hello for Business license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.
How Windows Hello for Business works: key
points
Windows Hello credentials are based on certificate or asymmetrical key pair.
Windows Hello credentials can be bound to the device, and the token that is
obtained using the credential is also bound to the device.

An identity provider validates the user identity and maps the Windows Hello public
key to a user account during the registration step. Example providers are Active
Directory, Azure AD, or a Microsoft account.

Keys can be generated in hardware (TPM 1.2 or 2.0 for enterprises, and TPM 2.0 for
consumers) or software, based on the policy. To guarantee that keys are generated
in hardware, you must set policy.

Authentication is the two-factor authentication with the combination of a key or


certificate tied to a device and something that the person knows (a PIN) or
something that the person is (biometrics). The Windows Hello gesture doesn't
roam between devices and isn't shared with the server. Biometrics templates are
stored locally on a device. The PIN is never stored or shared.

The private key never leaves a device when using TPM. The authenticating server
has a public key that is mapped to the user account during the registration
process.

PIN entry and biometric gesture both trigger Windows 10 and later to use the
private key to cryptographically sign data that is sent to the identity provider. The
identity provider verifies the user's identity and authenticates the user.

Personal (Microsoft account) and corporate (Active Directory or Azure AD)


accounts use a single container for keys. All keys are separated by identity
providers' domains to help ensure user privacy.

Certificate private keys can be protected by the Windows Hello container and the
Windows Hello gesture.

For details, see How Windows Hello for Business works.

Comparing key-based and certificate-based


authentication
Windows Hello for Business can use either keys (hardware or software) or certificates in
hardware or software. Enterprises that have a public key infrastructure (PKI) for issuing
and managing end user certificates can continue to use PKI in combination with
Windows Hello for Business. Enterprises that don't use PKI or want to reduce the effort
associated with managing user certificates can rely on key-based credentials for
Windows Hello. This functionality still uses certificates on the domain controllers as a
root of trust. Starting with Windows 10 version 21H2, there's a feature called cloud
Kerberos trust for hybrid deployments, which uses Azure AD as the root of trust. cloud
Kerberos trust uses key-based credentials for Windows Hello but doesn't require
certificates on the domain controller.

Windows Hello for Business with a key, including cloud Kerberos trust, doesn't support
supplied credentials for RDP. RDP doesn't support authentication with a key or a self
signed certificate. RDP with Windows Hello for Business is supported with certificate
based deployments as a supplied credential. Windows Hello for Business with a key
credential can be used with Remote Credential Guard.

Learn more
Implementing strong user authentication with Windows Hello for Business

Implementing Windows Hello for Business at Microsoft

Windows Hello for Business: Authentication : In this video, learn about Windows Hello
for Business and how it's used to sign-in and access resources.

Windows Hello face authentication

Related articles
How Windows Hello for Business works
Manage Windows Hello for Business in your organization
Why a PIN is better than a password
Prepare people to use Windows Hello
Windows Hello and password changes
Windows Hello errors during PIN creation
Event ID 300 - Windows Hello successfully created
Windows Hello biometrics in the enterprise
Why a PIN is better than an online
password
Article • 03/16/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Hello enables users to sign in to their device using a PIN. How is a PIN
different from (and better than) a local password? On the surface, a PIN looks much like
a password. A PIN can be a set of numbers, but enterprise policy might enforce complex
PINs that include special characters and letters, both upper-case and lower-case.
Something like t758A! could be an account password or a complex Hello PIN. It isn't the
structure of a PIN (length, complexity) that makes it better than an online password, it's
how it works. First, we need to distinguish between two types of passwords: local
passwords are validated against the machine's password store, whereas online passwords
are validated against a server. This article mostly covers the benefits a PIN has over an
online password, and also why it can be considered even better than a local password.

Watch Dana Huang explain why a Windows Hello for Business PIN is more secure than
an online password.
https://www.youtube-nocookie.com/embed/cC24rPBvdhA

A PIN is tied to the device


One important difference between an online password and a Hello PIN is that the PIN is
tied to the specific device on which it was set up. That PIN is useless to anyone without
that specific hardware. Someone who obtains your online password can sign in to your
account from anywhere, but if they obtain your PIN, they'd have to access your device
too.

The PIN can't be used anywhere except on that specific device. If you want to sign in on
multiple devices, you have to set up Hello on each device.

PIN is local to the device


An online password is transmitted to the server. The password can be intercepted in
transmission or obtained from a server. A PIN is local to the device, never transmitted
anywhere, and it isn't stored on the server. When the PIN is created, it establishes a
trusted relationship with the identity provider and creates an asymmetric key pair that is
used for authentication. When you enter your PIN, you unlock the authentication key,
which is used to sign the request that is sent to the authenticating server. Even though
local passwords are local to the device, they're less secure than a PIN, as described in
the next section.

7 Note

For details on how Hello uses asymmetric key pairs for authentication, see
Windows Hello for Business.

PIN is backed by hardware


The Hello PIN is backed by a Trusted Platform Module (TPM) chip, which is a secure
crypto-processor that is designed to carry out cryptographic operations. The chip
includes multiple physical security mechanisms to make it tamper resistant, and
malicious software is unable to tamper with the security functions of the TPM. Windows
doesn't link local passwords to TPM, therefore PINs are considered more secure than
local passwords.

User key material is generated and available within the TPM of the device. The TPM
protects the key material from attackers who want to capture and reuse it. Since Hello
uses asymmetric key pairs, users credentials can't be stolen in cases where the identity
provider or websites the user accesses have been compromised.

The TPM protects against various known and potential attacks, including PIN brute-
force attacks. After too many incorrect guesses, the device is locked.

PIN can be complex


The Windows Hello for Business PIN is subject to the same set of IT management
policies as a password, such as complexity, length, expiration, and history. Although we
generally think of a PIN as a simple four-digit code, administrators can set policies for
managed devices to require a PIN complexity similar to a password. You can require or
block: special characters, uppercase characters, lowercase characters, and digits.

What if someone steals the device?


To compromise a Windows Hello credential that TPM protects, an attacker must have
access to the physical device. Then, the attacker must find a way to spoof the user's
biometrics or guess the PIN. All these actions must be done before TPM anti-
hammering protection locks the device. You can provide more protection for laptops
that don't have TPM by enabling BitLocker and setting a policy to limit failed sign-ins.
Configure BitLocker without TPM
To enable BitLocker without TPM, follow these steps:

1. Open the Local Group Policy Editor (gpedit.msc) and enable the policy: Computer
Configuration > Administrative Templates > Windows Components > BitLocker
Drive Encryption > Operating System Drives > Require additional authentication
at startup
2. In the policy option, select Allow BitLocker without a compatible TPM > OK
3. On the device, open Control Panel > System and Security > BitLocker Drive
Encryption
4. Select the operating system drive to protect

Set account lockout threshold


To configure account lockout threshold, follow these steps:

1. Open the Local Group Policy Editor (gpedit.msc) and enable the policy: Computer
Configuration > Windows Settings > Security Settings > Account Policies >
Account Lockout Policy > Account lockout threshold
2. Set the number of invalid logon attempts to allow, and then select OK

Why do you need a PIN to use biometrics?


Windows Hello enables biometric sign-in for Windows: fingerprint, iris, or facial
recognition. When you set up Windows Hello, you're asked to create a PIN after the
biometric setup. The PIN enables you to sign in when you can't use your preferred
biometric because of an injury or because the sensor is unavailable or not working
properly.

If you only had a biometric sign-in configured and, for any reason, were unable to use
that method to sign in, you would have to sign in using your account and password,
which doesn't provide you with the same level of protection as Hello.
Windows Hello biometrics in the
enterprise
Article • 02/21/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Hello is the biometric authentication feature that helps strengthen


authentication and helps to guard against potential spoofing through fingerprint
matching and facial recognition.

7 Note

When Windows 10 first shipped, it included Microsoft Passport and Windows Hello,
which worked together to provide multi-factor authentication. To simplify
deployment and improve supportability, Microsoft has combined these
technologies into a single solution under the Windows Hello name. Customers who
have already deployed these technologies will not experience any change in
functionality. Customers who have yet to evaluate Windows Hello will find it easier
to deploy due to simplified policies, documentation, and semantics.

Because we realize your employees are going to want to use this new technology in
your enterprise, we've been actively working with the device manufacturers to create
strict design and performance recommendations that help to ensure that you can more
confidently introduce Windows Hello biometrics into your organization.

How does Windows Hello work?


Windows Hello lets your employees use fingerprint, facial recognition, or iris recognition
as an alternative method to unlocking a device. With Windows Hello, authentication
happens when the employee provides his or her unique biometric identifier while
accessing the device-specific Windows Hello credentials.

The Windows Hello authenticator works to authenticate and allow employees onto your
enterprise network. Authentication doesn't roam among devices, isn't shared with a
server, and can't easily be extracted from a device. If multiple employees share a device,
each employee will use his or her own biometric data on the device.

Why should I let my employees use Windows


Hello?
Windows Hello provides many benefits, including:

It helps to strengthen your protections against credential theft. Because an


attacker must have both the device and the biometric info or PIN, it's much more
difficult to gain access without the employee's knowledge.

Employees get a simple authentication method (backed up with a PIN) that's


always with them, so there's nothing to lose. No more forgetting passwords!

Support for Windows Hello is built into the operating system so you can add
additional biometric devices and policies as part of a coordinated rollout or to
individual employees or groups using Group Policy or Mobile Device Management
(MDM) configurations service provider (CSP) policies.
For more info about the available Group Policies and MDM CSPs, see the
Implement Windows Hello for Business in your organization topic.

Where is Windows Hello data stored?


The biometric data used to support Windows Hello is stored on the local device only. It
doesn't roam and is never sent to external devices or servers. This separation helps to
stop potential attackers by providing no single collection point that an attacker could
potentially compromise to steal biometric data. Additionally, even if an attacker was
actually able to get the biometric data from a device, it cannot be converted back into a
raw biometric sample that could be recognized by the biometric sensor.

7 Note

Each sensor on a device will have its own biometric database file where template
data is stored. Each database has a unique, randomly generated key that is
encrypted to the system. The template data for the sensor will be encrypted with
this per-database key using AES with CBC chaining mode. The hash is SHA256.
Some fingerprint sensors have the capability to complete matching on the
fingerprint sensor module instead of in the OS. These sensors will store biometric
data on the fingerprint module instead of in the database file.

Has Microsoft set any device requirements for


Windows Hello?
We've been working with the device manufacturers to help ensure a high-level of
performance and protection is met by each sensor and device, based on these
requirements:

False Accept Rate (FAR). Represents the instance a biometric identification


solution verifies an unauthorized person. This is normally represented as a ratio of
number of instances in a given population size, for example 1 in 100 000. This can
also be represented as a percentage of occurrence, for example, 0.001%. This
measurement is heavily considered the most important with regard to the security
of the biometric algorithm.

False Reject Rate (FRR). Represents the instances a biometric identification


solution fails to verify an authorized person correctly. Usually represented as a
percentage, the sum of the True Accept Rate and False Reject Rate is 1. Can be with
or without anti-spoofing or liveness detection.

Fingerprint sensor requirements


To allow fingerprint matching, you must have devices with fingerprint sensors and
software. Fingerprint sensors, or sensors that use an employee's unique fingerprint as an
alternative logon option, can be touch sensors (large area or small area) or swipe
sensors. Each type of sensor has its own set of detailed requirements that must be
implemented by the manufacturer, but all of the sensors must include anti-spoofing
measures (required).

Acceptable performance range for small to large size touch sensors

False Accept Rate (FAR): <0.001 – 0.002%

Effective, real world FRR with Anti-spoofing or liveness detection: <10%

Acceptable performance range for swipe sensors

False Accept Rate (FAR): <0.002%

Effective, real world FRR with Anti-spoofing or liveness detection: <10%

Facial recognition sensors


To allow facial recognition, you must have devices with integrated special infrared (IR)
sensors and software. Facial recognition sensors use special cameras that see in IR light,
letting them tell the difference between a photo and a living person while scanning an
employee's facial features. These sensors, like the fingerprint sensors, must also include
anti-spoofing measures (required) and a way to configure them (optional).

False Accept Rate (FAR): <0.001%


False Reject Rate (FRR) without Anti-spoofing or liveness detection: <5%

Effective, real world FRR with Anti-spoofing or liveness detection: <10%

7 Note

Windows Hello face authentication does not currently support wearing a mask
during enrollment or authentication. Wearing a mask to enroll is a security concern
because other users wearing a similar mask may be able to unlock your device. The
product group is aware of this behavior and is investigating this topic further.
Please remove a mask if you are wearing one when you enroll or unlock with
Windows Hello face authentication. If your working environment doesn't allow you
to remove a mask temporarily, please consider unenrolling from face
authentication and only using PIN or fingerprint.

Iris recognition sensor requirements


To use Iris authentication, you'll need a HoloLens 2 device. All HoloLens 2 editions are
equipped with the same sensors. Iris is implemented the same way as other Windows
Hello technologies and achieves biometrics security FAR of 1/100K.

Related topics
Windows Hello for Business
How Windows Hello for Business works
Manage Windows Hello for Business in your organization
Why a PIN is better than a password
Prepare people to use Windows Hello
Windows Hello and password changes
Windows Hello errors during PIN creation
Event ID 300 - Windows Hello successfully created
How Windows Hello for Business works
in Windows Devices
Article • 02/21/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Hello for Business is a two-factor credential that is a more secure alternative to
passwords. Whether you are cloud or on-premises, Windows Hello for Business has a
deployment option for you. For cloud deployments, you can use Windows Hello for
Business with Azure Active Directory-joined, Hybrid Azure Active Directory-joined, or
Azure AD registered devices. Windows Hello for Business also works for domain joined
devices.

Watch this quick video where Pieter Wigleven gives a simple explanation of how
Windows Hello for Business works and some of its supporting features.
https://www.youtube-nocookie.com/embed/G-GJuDWbBE8

Technical Deep Dive


Windows Hello for Business is a distributed system that uses several components to
accomplish device registration, provisioning, and authentication. Use this section to gain
a better understanding of each of the categories and how they support Windows Hello
for Business.

Device Registration
Registration is a fundamental prerequisite for Windows Hello for Business. Without
registration, Windows Hello for Business provisioning cannot start. Registration is where
the device registers its identity with the identity provider. For cloud and hybrid
deployments, the identity provider is Azure Active Directory and the device registers
with the Azure Device Registration Service (ADRS). For on-premises deployments, the
identity provider is Active Directory Federation Services (AD FS), and the device registers
with the enterprise device registration service hosted on the federation servers (AD FS).

For more information, read how device registration works.

Provisioning
Provisioning is when the user uses one form of authentication to request a new
Windows Hello for Business credential. Typically the user signs in to Windows using user
name and password. The provisioning flow requires a second factor of authentication
before it will create a strong, two-factor Windows Hello for Business credential.

Watch Matthew Palko and Ravi Vennapusa explain how Windows Hello for Business
provisioning works.
https://www.youtube-nocookie.com/embed/RImGsIjSJ1s

For more information, read how provisioning works.

Authentication
With the device registered and provisioning complete, users can sign-in to Windows
using biometrics or a PIN. PIN is the most common gesture and is available on all
computers unless restricted by policy requiring a TPM. Regardless of the gesture used,
authentication occurs using the private portion of the Windows Hello for Business
credential. Neither the PIN nor the private portion of the credential are ever sent to the
identity provider, and the PIN is not stored on the device. It is user provided entropy
when performing operations that use the private portion of the credential.

Watch Matthew Palko and Ravi Vennapusa explain how Windows Hello for Business
authentication works.
https://www.youtube-nocookie.com/embed/WPmzoP_vMek

For more information read how authentication works.

Related topics
Technology and Terminology
Windows Hello for Business
Manage Windows Hello for Business in your organization
Why a PIN is better than a password
Prepare people to use Windows Hello
Windows Hello and password changes
Windows Hello errors during PIN creation
Event ID 300 - Windows Hello successfully created
Windows Hello biometrics in the enterprise
Windows Hello for Business
Deployment Overview
Article • 02/21/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Hello for Business is the springboard to a world without passwords. It replaces
username and password sign-in to Windows with strong user authentication based on
an asymmetric key pair.

This deployment overview is to guide you through deploying Windows Hello for
Business. Your first step should be to use the Passwordless Wizard in the Microsoft 365
admin center or the Planning a Windows Hello for Business Deployment guide to
determine the right deployment model for your organization.

Once you've chosen a deployment model, the deployment guide for that model will
provide you with the information needed to successfully deploy Windows Hello for
Business in your environment. Read the Windows Hello for Business Deployment
Prerequisite Overview for a summary of the prerequisites for each different Windows
Hello for Business deployment model.

Assumptions
This guide assumes that baseline infrastructure exists which meets the requirements for
your deployment. For either hybrid or on-premises deployments, it is expected that you
have:

A well-connected, working network


Internet access
Multi-factor Authentication is required during Windows Hello for Business
provisioning
Proper name resolution, both internal and external names
Active Directory and an adequate number of domain controllers per site to support
authentication
Active Directory Certificate Services 2012 or later (Note: certificate services are not
needed for cloud Kerberos trust deployments)
One or more workstation computers running Windows 10, version 1703 or later

If you are installing a server role for the first time, ensure the appropriate server
operating system is installed, updated with the latest patches, and joined to the domain.
This document provides guidance to install and configure the specific roles on that
server.
Do not begin your deployment until the hosting servers and infrastructure (not roles)
identified in your prerequisite worksheet are configured and properly working.

Deployment and trust models


Windows Hello for Business has three deployment models: Azure AD cloud only, hybrid,
and on-premises. Hybrid has three trust models: Key Trust, Certificate Trust, and cloud
Kerberos trust. On-premises deployment models only support Key Trust and Certificate
Trust.

Hybrid deployments are for enterprises that use Azure Active Directory. On-premises
deployments are for enterprises who exclusively use on-premises Active Directory.
Remember that the environments that use Azure Active Directory must use the hybrid
deployment model for all domains in that forest.

The trust model determines how you want users to authenticate to the on-premises
Active Directory:

The key-trust model is for enterprises who do not want to issue end-entity
certificates to their users and have an adequate number of 2016 domain
controllers in each site to support authentication. This still requires Active Directory
Certificate Services for domain controller certificates.
The cloud-trust model is also for hybrid enterprises who do not want to issue end-
entity certificates to their users and have an adequate number of 2016 domain
controllers in each site to support authentication. This trust model is simpler to
deploy than key trust and does not require Active Directory Certificate Services. We
recommend using cloud Kerberos trust instead of Key Trust if the clients in your
enterprise support it.
The certificate-trust model is for enterprises that do want to issue end-entity
certificates to their users and have the benefits of certificate expiration and
renewal, similar to how smart cards work today.
The certificate trust model also supports enterprises which are not ready to deploy
Windows Server 2016 Domain Controllers.

7 Note

RDP does not support authentication with Windows Hello for Business Key Trust or
cloud Kerberos trust deployments as a supplied credential. RDP is only supported
with certificate trust deployments as a supplied credential at this time. Windows
Hello for Business Key Trust and cloud Kerberos trust can be used with Remote
Credential Guard.
Following are the various deployment guides and models included in this topic:

Hybrid Azure AD Joined cloud Kerberos trust Deployment


Hybrid Azure AD Joined Key Trust Deployment
Hybrid Azure AD Joined Certificate Trust Deployment
Azure AD Join Single Sign-on Deployment Guides
On Premises Key Trust Deployment
On Premises Certificate Trust Deployment

For Windows Hello for Business hybrid certificate trust prerequisites and key trust
prerequisites deployments, you will need Azure Active Directory Connect to synchronize
user accounts in the on-premises Active Directory with Azure Active Directory. For on-
premises deployments, both key and certificate trust, use the Azure MFA server where
the credentials are not synchronized to Azure Active Directory. Learn how to deploy
Multifactor Authentication Services (MFA) for key trust and for certificate trust
deployments.

Provisioning
Windows Hello for Business provisioning begins immediately after the user has signed
in, after the user profile is loaded, but before the user receives their desktop. Windows
only launches the provisioning experience if all the prerequisite checks pass. You can
determine the status of the prerequisite checks by viewing the User Device Registration
in the Event Viewer under Applications and Services Logs\Microsoft\Windows.

Note that you need to allow access to the URL account.microsoft.com to initiate
Windows Hello for Business provisioning. This URL launches the subsequent steps in the
provisioning process and is required to successfully complete Windows Hello for
Business provisioning. This URL does not require any authentication and as such, does
not collect any user data.
Planning a Windows Hello for Business
Deployment
Article • 02/21/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Congratulations! You are taking the first step forward in helping move your
organizations away from password to a two-factor, convenience authentication for
Windows — Windows Hello for Business. This planning guide helps you understand the
different topologies, architectures, and components that encompass a Windows Hello
for Business infrastructure.

This guide explains the role of each component within Windows Hello for Business and
how certain deployment decisions affect other aspects of the infrastructure. Armed with
your planning worksheet, you'll use that information to select the correct deployment
guide for your needs.

7 Note

If you have an Azure tenant, you can use our online, interactive Passwordless
Wizard which walks through the same choices instead of using our manual guide
below. The Passwordless Wizard is available in the Microsoft 365 admin center .

Using this guide


There are many options from which you can choose when deploying Windows Hello for
Business. Providing multiple options ensures nearly every organization can deploy
Windows Hello for Business. Providing many options makes the deployment appear
complex, however, most organization will realize they've already implemented most of
the infrastructure on which the Windows Hello for Business deployment depends. It is
important to understand that Windows Hello for Business is a distributed system and
does take proper planning across multiple teams within an organization.

This guide removes the appearance of complexity by helping you make decisions on
each aspect of your Windows Hello for Business deployment and the options you'll need
to consider. Using this guide also identifies the information needed to help you make
decisions about the deployment that best suits your environment. Download the
Windows Hello for Business planning worksheet from the Microsoft Download Center
to help track your progress and make your planning easier.
How to Proceed
Read this document and record your decisions on the worksheet. When finished, your
worksheet has all the necessary information for your Windows Hello for Business
deployment.

There are six major categories you need to consider for a Windows Hello for Business
deployment. Those categories are:

Deployment Options
Client
Management
Active Directory
Public Key Infrastructure
Cloud

Baseline Prerequisites
Windows Hello for Business has a few baseline prerequisites with which you can begin.
These baseline prerequisites are provided in the worksheet.

Deployment Options
The goal of Windows Hello for Business is to enable deployments for all organizations of
any size or scenario. To provide this type of granular deployment, Windows Hello for
Business offers a diverse choice of deployment options.

Deployment models

There are three deployment models from which you can choose: cloud only, hybrid, and
on-premises.

Cloud only

The cloud only deployment model is for organizations who only have cloud identities
and do not access on-premises resources. These organizations typically join their
devices to the cloud and exclusively use resources in the cloud such as SharePoint,
OneDrive, and others. Also, because these users do not use on-premises resources, they
do not need certificates for things like VPN because everything they need is hosted in
Azure.
Hybrid

The hybrid deployment model is for organizations that:

Are federated with Azure Active Directory


Have identities synchronized to Azure Active Directory using Azure Active Directory
Connect
Use applications hosted in Azure Active Directory, and want a single sign-in user
experience for both on-premises and Azure Active Directory resources

) Important

Hybrid deployments support non-destructive PIN reset that works with both the
certificate trust and key trust models.

Requirements:

Microsoft PIN Reset Service - Windows 10, versions 1709 to 1809, Enterprise
Edition. There is no licensing requirement for this service since version 1903
Reset above lock screen (I forgot my PIN link) - Windows 10, version 1903

On-premises

The on-premises deployment model is for organizations that do not have cloud
identities or use applications hosted in Azure Active Directory.

) Important

On-premises deployments support destructive PIN reset that works with both the
certificate trust and the key trust models.

Requirements:

Reset from settings - Windows 10, version 1703, Professional


Reset above lock screen - Windows 10, version 1709, Professional
Reset above lock screen (I forgot my PIN link) - Windows 10, version 1903

It's fundamentally important to understand which deployment model to use for a


successful deployment. Some aspects of the deployment may have already been
decided for you based on your current infrastructure.
Trust types
A deployment's trust type defines how each Windows Hello for Business client
authenticates to the on-premises Active Directory. There are two trust types: key trust
and certificate trust.

7 Note

Windows Hello for Business introduced a new trust model called cloud Kerberos
trust, in early 2022. This model enables deployment of Windows Hello for Business
using the infrastructure introduced for supporting security key sign-in on Hybrid
Azure AD-joined devices and on-premises resource access on Azure AD Joined
devices. For more information, see Hybrid Cloud Kerberos Trust Deployment.

The key trust type does not require issuing authentication certificates to end users.
Users authenticate using a hardware-bound key created during the built-in provisioning
experience. This requires an adequate distribution of Windows Server 2016 or later
domain controllers relative to your existing authentication and the number of users
included in your Windows Hello for Business deployment. Read the Planning an
adequate number of Windows Server 2016 or later Domain Controllers for Windows
Hello for Business deployments to learn more.

The certificate trust type issues authentication certificates to end users. Users
authenticate using a certificate requested using a hardware-bound key created during
the built-in provisioning experience. Unlike key trust, certificate trust does not require
Windows Server 2016 domain controllers (but still requires Windows Server 2016 or later
Active Directory schema). Users can use their certificate to authenticate to any Windows
Server 2008 R2, or later, domain controller.

7 Note

RDP does not support authentication with Windows Hello for Business key trust
deployments as a supplied credential. RDP is only supported with certificate trust
deployments as a supplied credential at this time. Windows Hello for Business key
trust can be used with Remote Credential Guard.

Device registration
All devices included in the Windows Hello for Business deployment must go through
device registration. Device registration enables devices to authenticate to identity
providers. For cloud only and hybrid deployment, the identity provider is Azure Active
Directory. For on-premises deployments, the identity provider is the on-premises server
running the Windows Server 2016 Active Directory Federation Services (AD FS) role.

Key registration
The built-in Windows Hello for Business provisioning experience creates a hardware
bound asymmetric key pair as their user's credentials. The private key is protected by
the device's security modules; however, the credential is a user key (not a device key).
The provisioning experience registers the user's public key with the identity provider. For
cloud only and hybrid deployments, the identity provider is Azure Active Directory. For
on-premises deployments, the identity provider is the on-premises server running
Windows Server 2016 Active Directory Federation Services (AD FS) role.

Multifactor authentication

) Important

As of July 1, 2019, Microsoft will no longer offer MFA Server for new deployments.
New customers who require multi-factor authentication for their users should use
cloud-based Azure AD Multi-Factor Authentication. Existing customers who have
activated MFA Server prior to July 1, 2019 will be able to download the latest
version, future updates and generate activation credentials as usual. See Getting
started with the Azure AD Multi-Factor Authentication Server for more details.

The goal of Windows Hello for Business is to move organizations away from passwords
by providing them a strong credential that provides easy two-factor authentication. The
built-in provisioning experience accepts the user's weak credentials (username and
password) as the first factor authentication; however, the user must provide a second
factor of authentication before Windows provisions a strong credential.

Cloud only and hybrid deployments provide many choices for multi-factor
authentication. On-premises deployments must use a multi-factor authentication that
provides an AD FS multi-factor adapter to be used in conjunction with the on-premises
Windows Server 2016 AD FS server role. Organizations can use the on-premises Azure
AD Multi-Factor Authentication server, or choose from several third parties (Read
Microsoft and third-party additional authentication methods for more information).

7 Note
Azure AD Multi-Factor Authentication is available through:

Microsoft Enterprise Agreement


Open Volume License Program
Cloud Solution Providers program
Bundled with
Azure Active Directory Premium
Enterprise Mobility Suite
Enterprise Cloud Suite

Directory synchronization

Hybrid and on-premises deployments use directory synchronization, however, each for a
different purpose. Hybrid deployments use Azure Active Directory Connect to
synchronize Active Directory identities or credentials between itself and Azure Active
Directory. This helps enable single sign-on to Azure Active Directory and its federated
components. On-premises deployments use directory synchronization to import users
from Active Directory to the Azure MFA Server, which sends data to the Azure MFA
cloud service to perform the verification.

Management
Windows Hello for Business provides organizations with a rich set of granular policy
settings with which they can use to manage their devices and users. There are three
ways in which you can manage Windows Hello for Business: Group Policy, Modern
Management, and Mixed.

Group Policy

Group Policy is the easiest and most popular way to manage Windows Hello for
Business on domain joined devices. Simply create a Group Policy object with the settings
you desire. Link the Group Policy object high in your Active Directory and use security
group filtering to target specific sets of computers or users. Or, link the GPO directly to
the organizational units.

Modern management
Modern management is an emerging device management paradigm that leverages the
cloud for managing domain joined and non-domain joined devices. Organizations can
unify their device management into one platform and apply policy settings using a
single platform

Client
Windows Hello for Business is an exclusive Windows 10 and Windows 11 feature. As part
of the Windows as a Service strategy, Microsoft has improved the deployment,
management, and user experience with each new release of Windows and introduced
support for new scenarios.

Most deployment scenarios require a minimum of Windows 10, version 1511, also
known as the November Update. The client requirement may change based on different
components in your existing infrastructure, or other infrastructure choices made later in
planning your deployment. Those components and choices may require a minimum
client running Windows 10, version 1703, also known as the Creators Update.

Active Directory
Hybrid and on-premises deployments include Active Directory as part of their
infrastructure. Most of the Active Directory requirements, such as schema, and domain
and forest functional levels are predetermined. However, your trust type choice for
authentication determines the version of domain controller needed for the deployment.

Public Key Infrastructure


The Windows Hello for Business deployment depends on an enterprise public key
infrastructure as a trust anchor for authentication. Domain controllers for hybrid and on-
premises deployments need a certificate in order for Windows devices to trust the
domain controller as legitimate. Deployments using the certificate trust type need an
enterprise public key infrastructure and a certificate registration authority to issue
authentication certificates to users. Hybrid deployments may need to issue VPN
certificates to users to enable connectivity on-premises resources.

Cloud
Some deployment combinations require an Azure account, and some require Azure
Active Directory for user identities. These cloud requirements may only need an Azure
account while other features need an Azure Active Directory Premium subscription. The
planning process identifies and differentiates the components that are needed from
those that are optional.
Planning a Deployment
Planning your Windows Hello for Business deployment begins with choosing a
deployment type. Like all distributed systems, Windows Hello for Business depends on
multiple components within your organization's infrastructure.

Use the remainder of this guide to help with planning your deployment. As you make
decisions, write the results of those decisions in your planning worksheet. When
finished, you'll have all the information needed to complete the planning process and
the appropriate deployment guide that best helps you with your deployment.

Deployment Model
Choose the deployment model based on the resources your users access. Use the
following guidance to make your decision.

If your organization does not have on-premises resources, write Cloud Only in box 1a on
your planning worksheet.

If your organization is federated with Azure or uses any service, such as AD Connect,
Office365 or OneDrive, or your users access cloud and on-premises resources, write
Hybrid in box 1a on your planning worksheet.

If your organization does not have cloud resources, write On-Premises in box 1a on your
planning worksheet.

7 Note

Main use case of On-Premises deployment is for "Enhanced Security


Administrative Environments" also known as "Red Forests".
Migration from on-premise to hybrid deployment will require redeployment.

Trust type
Hybrid Azure AD-joined devices managed by Group Policy need the Windows Server
2016 AD FS role to issue certificates. Hybrid Azure AD-joined devices and Azure AD-
joined devices managed by Intune or a compatible MDM need the Windows Server
NDES server role to issue certificates.

Choose a trust type that is best suited for your organizations. Remember, the trust type
determines two things. Whether you issue authentication certificates to your users and if
your deployment needs Windows Server 2016 domain controllers.

One trust model is not more secure than the other. The major difference is based on the
organization comfort with deploying Windows Server 2016 domain controllers and not
enrolling users with end entity certificates (key-trust) against using existing domain
controllers and needing to enroll certificates for all their users (certificate trust).

Because the certificate trust types issues certificates, there is more configuration and
infrastructure needed to accommodate user certificate enrollment, which could also be a
factor to consider in your decision. Additional infrastructure needed for certificate-trust
deployments includes a certificate registration authority. In a federated environment,
you need to activate the Device Writeback option in Azure AD Connect.

If your organization wants to use the key trust type, write key trust in box 1b on your
planning worksheet. Write Windows Server 2016 in box 4d. Write N/A in box 5b.

If your organization wants to use the certificate trust type, write certificate trust in box
1b on your planning worksheet. Write Windows Server 2008 R2 or later in box 4d. In
box 5c, write smart card logon under the Template Name column and write users
under the Issued To column on your planning worksheet.

Device Registration
A successful Windows Hello for Business requires all devices to register with the identity
provider. The identity provider depends on the deployment model.

If box 1a on your planning worksheet reads cloud only or hybrid, write Azure in box 1c
on your planning worksheet.

If box 1a on your planning worksheet reads on-premises, write AD FS in box 1c on your


planning worksheet.

Key Registration
All users provisioning Windows Hello for Business have their public key registered with
the identity provider. The identity provider depends on the deployment model.

If box 1a on your planning worksheet reads cloud only or hybrid, write Azure in box 1d
on your planning worksheet.

If box 1a on your planning worksheet reads on-premises, write AD FS in box 1d on your


planning worksheet.
Directory Synchronization
Windows Hello for Business is strong user authentication, which usually means there is
an identity (a user or username) and a credential (typically a key pair). Some operations
require writing or reading user data to or from the directory. For example, reading the
user's phone number to perform multi-factor authentication during provisioning or
writing the user's public key.

If box 1a on your planning worksheet reads cloud only, write N/A in box 1e. User
information is written directly to Azure Active Directory and there is not another
directory with which the information must be synchronized.

If box 1a on your planning worksheet reads hybrid, then write Azure AD Connect in box
1e on your planning worksheet.

If box 1a on your planning worksheet reads on-premises, then write Azure MFA Server.
This deployment exclusively uses Active Directory for user information with the
exception of the multi-factor authentication. The on-premises Azure MFA server
synchronizes a subset of the user information, such as phone number, to provide multi-
factor authentication while the user's credentials remain on the on-premises network.

Multifactor Authentication
The goal of Windows Hello for Business is to move user authentication away from
passwords to a strong, key-based user authentication. Passwords are weak credentials
and cannot be trusted by themselves as an attacker with a stolen password could be
attempting to enroll in Windows Hello for Business. To keep the transition from a weak
to a strong credential secure, Windows Hello for Business relies on multi-factor
authentication during provisioning to have some assurances that the user identity
provisioning a Windows Hello for Business credential is the proper identity.

If box 1a on your planning worksheet reads cloud only, then your only option is to use
the Azure MFA cloud service. Write Azure MFA in box 1f on your planning worksheet.

If box 1a on your planning worksheet reads hybrid, then you have a few options, some
of which depend on your directory synchronization configuration. The options from
which you may choose include:

Directly use Azure MFA cloud service


Use AD FS w/Azure MFA cloud service adapter
Use AD FS w/Azure MFA Server adapter
Use AD FS w/3rd Party MFA Adapter
You can directly use the Azure MFA cloud service for the second factor of authentication.
Users contacting the service must authenticate to Azure prior to using the service.

If your Azure AD Connect is configured to synchronize identities (usernames only), then


your users are redirected to your local on-premises federation server for authentication
and then redirected back to the Azure MFA cloud service. Otherwise, your Azure AD
Connect is configured to synchronize credentials (username and passwords), which
enables your users to authenticate to Azure Active Directory and use the Azure MFA
cloud service. If you choose to use the Azure MFA cloud service directly, write Azure
MFA in box 1f on your planning worksheet.

You can configure your on-premises Windows Server 2016 AD FS role to use the Azure
MFA service adapter. In this configuration, users are redirected to the on premises AD FS
server (synchronizing identities only). The AD FS server uses the MFA adapter to
communicate to the Azure MFA service to perform the second factor of authentication.
If you choose to use AD FS with the Azure MFA cloud service adapter, write AD FS with
Azure MFA cloud adapter in box 1f on your planning worksheet.

Alternatively, you can use AD FS with an on-premises Azure MFA server adapter. Rather
than AD FS communicating directly with the Azure MFA cloud service, it communicates
with an on-premises Azure MFA server that synchronizes user information with the on-
premises Active Directory. The Azure MFA server communicates with Azure MFA cloud
services to perform the second factor of authentication. If you choose to use AD FS with
the Azure MFA server adapter, write AD FS with Azure MFA server adapter in box 1f on
your planning worksheet.

The last option is for you to use AD FS with a third-party adapter as the second factor of
authentication. If you choose to use AD FS with a third-party MFA adapter, write AD FS
with third party in box 1f on your planning worksheet.

If box 1a on your planning worksheet reads on-premises, then you have two second
factor authentication options. You must use Windows Server 2016 AD FS with your
choice of the on-premises Azure MFA server or with a third-party MFA adapter.

If you choose to use AD FS with the Azure MFA server adapter, write AD FS with Azure
MFA server adapter in box 1f on your planning worksheet. If you choose to use AD FS
with a third-party MFA adapter, write AD FS with third party in box 1f on your planning
worksheet.

Management
Windows Hello for Business provides organizations with many policy settings and
granular control on how these settings may be applied to both computers and users.
The type of policy management you can use depends on your selected deployment and
trust models.

If box 1a on your planning worksheet reads cloud only, write N/A in box 2a on your
planning worksheet. You have the option to manage non-domain joined devices. If you
choose to manage Azure Active Directory-joined devices, write modern management in
box 2b on your planning worksheet. Otherwise, write** N/A** in box 2b.

7 Note

Azure Active Directory-joined devices without modern management automatically


enroll in Windows Hello for Business using the default policy settings. Use modern
management to adjust policy settings to match the business needs of your
organization.

If box 1a on your planning worksheet reads on-prem, write GP in box 2a on your


planning worksheet. Write N/A in box 2b on your worksheet.

Managing hybrid deployments includes two categories of devices to consider for your
Windows Hello for Business deployment—domain joined and non-domain joined. All
devices are registered, however, not all devices are domain joined. You have the option
of using Group Policy for domain joined devices and modern management for non-
domain joined devices. Or, you can use modern management for both domain and non-
domain joined devices.

If you use Group Policy to manage your domain joined devices, write GP in box 2a on
your planning worksheet. Write modern management in box 2b if you decide to
manage non-domain joined devices; otherwise, write N/A.

If you use modern management for both domain and non-domain joined devices, write
modern management in box 2a and 2b on your planning worksheet.

Client
Windows Hello for Business is a feature exclusive to Windows 10 and Windows 11. Some
deployments and features are available using earlier versions of Windows 10. Others
need the latest versions.

If box 1a on your planning worksheet reads cloud only, write N/A in box 3a on your
planning worksheet. Optionally, you may write 1511 or later in box 3b on your planning
worksheet if you plan to manage non-domain joined devices.
7 Note

Azure Active Directory-joined devices without modern management automatically


enroll in Windows Hello for Business using the default policy settings. Use modern
management to adjust policy settings to match the business needs of your
organization.

Write 1511 or later in box 3a on your planning worksheet if any of the following are true.

Box 2a on your planning worksheet read modern management.


Optionally, you may write 1511 or later in box 3b on your planning worksheet if
you plan to manage non-domain joined devices.
Box 1a on your planning worksheet reads hybrid, box 1b reads key trust, and box
2a reads GP. Optionally, you may write *1511 or later in box 3b on your planning
worksheet if you plan to manage non-domain joined devices.

Write 1703 or later in box 3a on your planning worksheet if any of the following are
true.

Box 1a on your planning worksheet reads on-premises.


Write N/A in box 3b on your planning worksheet.
Box 1a on your planning worksheet reads hybrid, box 1b reads certificate trust,
and box 2a reads GP.
Optionally, you may write 1511 or later in box 3b on your planning worksheet if
you plan to manage non-domain joined devices.

Active Directory
The Active Directory portion of the planning guide should be complete. Most of the
conditions are baseline prerequisites except for your domain controllers. The domain
controllers used in your deployment are decided by the chosen trust type.

Review the trust type portion of this section if box 4d on your planning worksheet
remains empty.

Public Key Infrastructure


Public key infrastructure prerequisites already exist in your planning worksheet. These
conditions are the minimum requirements for any hybrid or on-premises deployment.
Additional conditions may be needed based on your trust type.
If box 1a on your planning worksheet reads cloud only, ignore the public key
infrastructure section of your planning worksheet. Cloud only deployments do not use a
public key infrastructure.

If box 1b on your planning worksheet reads key trust, write N/A in box 5b on your
planning worksheet. Key trust doesn't require any change in public key infrastructure,
skip this part and go to Cloud section.

The registration authority only relates to certificate trust deployments and the
management used for domain and non-domain joined devices. Hybrid Azure AD-joined
devices managed by Group Policy need the Windows Server 2016 AD FS role to issue
certificates. Hybrid Azure AD-joined devices and Azure AD-joined devices managed by
Intune or a compatible MDM need the Windows Server NDES server role to issue
certificates.

If box 2a reads GP and box 2b reads modern management, write AD FS RA and NDES
in box 5b on your planning worksheet. In box 5c, write the following certificate
templates names and issuances:

Certificate Template Name Issued To

Exchange Enrollment Agent AD FS RA

Web Server AD FS RA

Exchange Enrollment Agent NDES

Web Server NDES

CEP Encryption NDES

If box 2a reads GP and box 2b reads N/A, write AD FS RA in box 5b and write the
following certificate template names and issuances in box 5c on your planning
worksheet.

Certificate Template Name Issued To

Exchange Enrollment Agent AD FS RA

Web Server AD FS RA

If box 2a or 2b reads modern management, write NDES in box 5b and write the
following certificate template names and issuances in box 5c on your planning
worksheet.
Certificate Template Name Issued To

Exchange Enrollment Agent NDES

Web Server NDES

CEP Encryption NDES

Cloud
Nearly all deployments of Windows Hello for Business require an Azure account.

If box 1a on your planning worksheet reads cloud only or hybrid, write Yes in boxes 6a
and 6b on your planning worksheet.

If box 1a on your planning worksheet reads on-premises, and box 1f reads AD FS with
third party, write No in box 6a on your planning worksheet. Otherwise, write Yes in box
6a as you need an Azure account for per-consumption MFA billing. Write No in box 6b
on your planning worksheet—on-premises deployments do not use the cloud directory.

Windows Hello for Business does not require an Azure AD premium subscription.
However, some dependencies, such as MDM automatic enrollment and Conditional
Access do.

If box 1a on your planning worksheet reads on-premises, write No in box 6c on your


planning worksheet.

If box 1a on your planning worksheet reads hybrid and box 1b reads key trust, write No
in box 6c on your planning worksheet. You can deploy Windows Hello for Business using
the Azure Active Directory free tier. All Azure Active Directory free accounts can use
Azure AD Multi-Factor Authentication through the use of security defaults. Some Azure
AD Multi-Factor Authentication features require a license. For more details, see Features
and licenses for Azure AD Multi-Factor Authentication.

If box 5b on your planning worksheet reads AD FS RA, write Yes in box 6c on your
planning worksheet. Enrolling a certificate using the AD FS registration authority
requires devices to authenticate to the AD FS server, which requires device write-back,
an Azure AD Premium feature.

Modern managed devices do not require an Azure AD premium subscription. By


forgoing the subscription, your users must manually enroll devices in the modern
management software, such as Intune or a supported third-party MDM.
If boxes 2a or 2b read modern management and you want devices to automatically
enroll in your modern management software, write Yes in box 6c on your planning
worksheet. Otherwise, write No in box 6c.

Congratulations, You're Done


Your Windows Hello for Business planning worksheet should be complete. This guide
provided understanding of the components used in the Windows Hello for Business
infrastructure and rationalization of why they are used. The worksheet gives you an
overview of the requirements needed to continue the next phase of the deployment.
With this worksheet, you'll be able to identify key elements of your Windows Hello for
Business deployment.
Windows Hello for Business
Deployment Prerequisite Overview
Article • 07/06/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article lists the infrastructure requirements for the different deployment models for
Windows Hello for Business.

Azure AD Cloud Only Deployment


Azure Active Directory
Azure AD Multifactor Authentication
Device management solution (Intune or supported third-party MDM), optional
Azure AD Premium subscription - optional, needed for automatic MDM enrollment
when the device joins Azure Active Directory

Hybrid Deployments
The table shows the minimum requirements for each deployment. For key trust in a
multi-domain/multi-forest deployment, the following requirements are applicable for
each domain/forest that hosts Windows Hello for business components or is involved in
the Kerberos referral process.

Requirement Cloud Kerberos Key trust Certificate Trust Certificate Trust


trust Group Policy or Mixed managed Modern
Group Policy or Modern managed
Modern managed
managed

Windows Any supported Any supported Any supported


Version Windows client Windows client Windows client
versions versions versions

Schema No specific Windows Server Windows Server Windows Server


Version Schema 2016 or later 2016 or later 2016 or later
requirement schema schema schema

Domain and Windows Server Windows Server Windows Server Windows Server
Forest 2008 R2 2008 R2 2008 R2 2008 R2
Requirement Cloud Kerberos Key trust Certificate Trust Certificate Trust
trust Group Policy or Mixed managed Modern
Group Policy or Modern managed
Modern managed
managed

Functional Domain/Forest Domain/Forest Domain/Forest Domain/Forest


Level functional level functional level functional level functional level

Domain Any supported Any supported Any supported Any supported


Controller Windows Server Windows Server Windows Server Windows Server
Version versions versions versions versions

Certificate Not required Any supported Any supported Any supported


Authority Windows Server Windows Server Windows Server
versions versions versions

AD FS Version Not required Not required Any supported Any supported


Windows Server Windows Server
versions versions

MFA Azure MFA, or Azure MFA Azure MFA Azure MFA


Requirement AD FS w/Azure tenant, or tenant, or tenant, or
MFA adapter, or AD FS w/Azure AD FS w/Azure AD FS w/Azure
AD FS w/Azure MFA adapter, or MFA adapter, or MFA adapter, or
MFA Server AD FS w/Azure AD FS w/Azure AD FS w/Azure
adapter, or MFA Server MFA Server MFA Server
AD FS w/3rd adapter, or adapter, or adapter, or
Party MFA AD FS w/3rd AD FS w/3rd AD FS w/3rd
Adapter Party MFA Party MFA Party MFA
Adapter Adapter Adapter

Azure AD Not required Required Required Required


Connect

Azure AD Azure AD Azure AD Azure AD Azure AD


License Premium, Premium, Premium, needed Premium,
optional optional for device write- optional. Intune
back license required

On-premises Deployments
The table shows the minimum requirements for each deployment.

Key trust Certificate trust


Group Policy managed Group Policy managed

Any supported Windows client versions Any supported Windows client versions
Key trust Certificate trust
Group Policy managed Group Policy managed

Windows Server 2016 Schema Windows Server 2016 Schema

Windows Server 2008 R2 Domain/Forest Windows Server 2008 R2 Domain/Forest


functional level functional level

Any supported Windows Server versions Any supported Windows Server versions

Any supported Windows Server versions Any supported Windows Server versions

Any supported Windows Server versions Any supported Windows Server versions

AD FS with 3rd Party MFA Adapter AD FS with 3rd Party MFA Adapter
Cloud-only deployment
Article • 10/03/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: cloud


Join type: Azure AD join

Introduction
When you Microsoft Entra join a Windows device, the system prompts you to enroll in
Windows Hello for Business by default. If you want to use Windows Hello for Business in
a cloud-only environment, there's no additional configuration needed.

You may wish to disable the automatic Windows Hello for Business enrollment prompts
if you aren't ready to use it in your environment. This article describes how to disable
Windows Hello for Business enrollment in a cloud only environment.

7 Note

During the out-of-box experience (OOBE) flow of an Microsoft Entra join, you will
see a provisioning PIN when you don't have Intune. You can always cancel the PIN
screen and set this cancellation with registry keys to prevent future prompts.

Prerequisites
Cloud only deployments will use Microsoft Entra multifactor authentication (MFA)
during Windows Hello for Business enrollment, and there's no additional MFA
configuration needed. If you aren't already registered in MFA, you'll be guided through
the MFA registration as part of the Windows Hello for Business enrollment process.

The necessary Windows Hello for Business prerequisites are located at Cloud Only
Deployment.

It's possible for federated domains to configure the FederatedIdpMfaBehavior flag. The
flag instructs Microsoft Entra ID to accept, enforce, or reject the MFA challenge from the
federated IdP. For more information, see federatedIdpMfaBehavior values. To check this
setting, use the following PowerShell command:
PowerShell

Connect-MgGraph
$DomainId = "<your federated domain name>"
Get-MgDomainFederationConfiguration -DomainId $DomainId |fl

To reject the MFA claim from the federated IdP, use the following command. This
change impacts all MFA scenarios for the federated domain.

PowerShell

Update-MgDomainFederationConfiguration -DomainId $DomainId -


FederatedIdpMfaBehavior rejectMfaByFederatedIdp

If you use configure the flag with a value of either acceptIfMfaDoneByFederatedIdp


(default) or enforceMfaByFederatedIdp , you must verify that your federated IDP is
correctly configured and working with the MFA adapter and provider used by your IdP.

Use Intune to disable Windows Hello for


Business enrollment
We recommend that you disable or manage Windows Hello for Business provisioning
behavior through an Intune policy. For more specific information, see Integrate
Windows Hello for Business with Microsoft Intune.

Disable Windows Hello for Business using Intune


Enrollment policy
The following method explains how to disable Windows Hello for Business enrollment
using Intune.

1. Sign into the Microsoft Intune admin center .

2. Go to Devices > Enrollment > Enroll devices > Windows enrollment > Windows
Hello for Business. The Windows Hello for Business pane opens.

3. If you don't want to enable Windows Hello for Business during device enrollment,
select Disabled for Configure Windows Hello for Business.

When disabled, users can't provision Windows Hello for Business. When set to
Disabled, you can still configure the subsequent settings for Windows Hello for
Business even though this policy won't enable Windows Hello for Business.
7 Note

This policy is only applied during new device enrollments. For currently enrolled
devices, you can set the same settings in a device configuration policy.

Disable Windows Hello for Business enrollment


without Intune
If you don't use Intune in your organization, then you can disable Windows Hello for
Business using the registry. You can use a third-party MDM, or some other method that
you use to manage these devices. Because these systems are Azure AD Joined only, and
not domain joined, these settings can also be made manually in the registry.

Intune uses the following registry keys:


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Policies\PassportForWork\<Tenant-

ID>\Device\Policies

To look up your Tenant ID, see How to find your Microsoft Entra tenant ID or try the
following, ensuring to sign-in with your organization's account:

HTTP

GET https://graph.microsoft.com/v1.0/organization?$select=id

These registry settings are pushed from Intune for user policies:

Intune User Policy:


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Policies\PassportForWork\<Tenant-

ID>\UserSid\Policies

DWORD: UsePassportForWork
Value = 0 for Disable, or Value = 1 for Enable

These registry settings can be applied from Local or Group Policies:

Local/GPO User Policy:


HKEY_USERS\UserSID\SOFTWARE\Policies\Microsoft\PassportForWork
Local/GPO Device Policy:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\PassportForWork

DWORD: Enabled
Value = 0 for Disable or Value = 1 for Enable
If there's a conflicting Device policy and User policy, the User policy would take
precedence. We don't recommend creating Local/GPO registry settings that could
conflict with an Intune policy. This conflict could lead to unexpected results.
Cloud Kerberos trust deployment
Article • 06/20/2023 • Applies to: ✅ Windows 10, version 21H2 and later

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: cloud Kerberos trust
Join type: Azure AD join , hybrid Azure AD join

Windows Hello for Business replaces password sign-in with strong authentication, using
an asymmetric key pair. This deployment guide provides the information to deploy
Windows Hello for Business in a cloud Kerberos trust scenario.

Introduction to cloud Kerberos trust


The goal of Windows Hello for Business cloud Kerberos trust is to bring the simplified
deployment experience of passwordless security key sign-in to Windows Hello for
Business, and it can be used for new or existing Windows Hello for Business
deployments.

Windows Hello for Business cloud Kerberos trust uses Azure AD Kerberos, which enables
a simpler deployment when compared to the key trust model:

No need to deploy a public key infrastructure (PKI) or to change an existing PKI


No need to synchronize public keys between Azure AD and Active Directory for
users to access on-premises resources. There isn't any delay between the user's
Windows Hello for Business provisioning, and being able to authenticate to Active
Directory
Passwordless security key sign-in can be deployed with minimal extra setup

7 Note

Windows Hello for Business cloud Kerberos trust is the recommended deployment
model when compared to the key trust model. It is also the preferred deployment
model if you do not need to support certificate authentication scenarios.
Azure AD Kerberos and cloud Kerberos trust
authentication
Key trust and certificate trust use certificate authentication-based Kerberos for
requesting kerberos ticket-granting-tickets (TGTs) for on-premises authentication. This
type of authentication requires a PKI for DC certificates, and requires end-user
certificates for certificate trust.

Cloud Kerberos trust uses Azure AD Kerberos, which doesn't require a PKI to request
TGTs.
With Azure AD Kerberos, Azure AD can issue TGTs for one or more AD domains.
Windows can request a TGT from Azure AD when authenticating with Windows Hello for
Business, and use the returned TGT for sign-in or to access AD-based resources. The on-
premises domain controllers are still responsible for Kerberos service tickets and
authorization.

When Azure AD Kerberos is enabled in an Active Directory domain, an AzureADKerberos


computer object is created in the domain. This object:

Appears as a Read Only Domain Controller (RODC) object, but isn't associated with
any physical servers

Is only used by Azure AD to generate TGTs for the Active Directory domain

7 Note

Similar rules and restrictions used for RODCs apply to the AzureADKerberos
computer object. For example, users that are direct or indirect members of
priviliged built-in security groups won't be able to use cloud Kerberos trust.
For more information about how Azure AD Kerberos enables access to on-premises
resources, see enabling passwordless security key sign-in to on-premises resources.
For more information about how Azure AD Kerberos works with Windows Hello for
Business cloud Kerberos trust, see Windows Hello for Business authentication technical
deep dive.

) Important

When implementing the cloud Kerberos trust deployment model, you must ensure
that you have an adequate number of read-write domain controllers in each Active
Directory site where users will be authenticating with Windows Hello for Business.
For more information, see Capacity planning for Active Directory.

Prerequisites
Requirement Notes

Multi-factor This requirement can be met using Azure AD multi-factor authentication, multi-
Authentication factor authentication provided through AD FS, or a comparable solution.

Windows 10, If you're using Windows 10 21H2, KB5010415 must be installed. If you're using
version 21H2 Windows 11 21H2, KB5010414 must be installed. There's no Windows version
or Windows 11 support difference between Azure AD joined and Hybrid Azure AD-joined
and later devices.
Requirement Notes

Windows If you're using Windows Server 2016, KB3534307 must be installed. If you're
Server 2016 or using Server 2019, KB4534321 must be installed.
later Domain
Controllers

Azure AD This module is used for enabling and managing Azure AD Kerberos. It's
Kerberos available through the PowerShell Gallery .
PowerShell
module

Device Windows Hello for Business cloud Kerberos trust can be managed with group
management policy or through mobile device management (MDM) policy. This feature is
disabled by default and must be enabled using policy.

Unsupported scenarios
The following scenarios aren't supported using Windows Hello for Business cloud
Kerberos trust:

On-premises only deployments


RDP/VDI scenarios using supplied credentials (RDP/VDI can be used with Remote
Credential Guard or if a certificate is enrolled into the Windows Hello for Business
container)
Using cloud Kerberos trust for "Run as"
Signing in with cloud Kerberos trust on a Hybrid Azure AD joined device without
previously signing in with DC connectivity

7 Note

The default Password Replication Policy configured on the AzureADKerberos


computer object doesn't allow to sign high privilege accounts on to on-premises
resources with cloud Kerberos trust or FIDO2 security keys.

Due to possible attack vectors from Azure AD to Active Directory, it isn't


recommended to unblock these accounts by relaxing the Password Replication
Policy of the computer object CN=AzureADKerberos,OU=Domain Controllers,<domain-
DN> .

Next steps
Once the prerequisites are met, deploying Windows Hello for Business with a cloud
Kerberos trust model consists of the following steps:

" Deploy Azure AD Kerberos


" Configure Windows Hello for Business settings
" Provision Windows Hello for Business on Windows clients

Next: configure and provision Windows Hello for Business >


Configure and provision Windows Hello
for Business - cloud Kerberos trust
Article • 03/16/2023 • Applies to: ✅ Windows 10, version 21H2 and later

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: cloud Kerberos trust
Join type: Azure AD join , hybrid Azure AD join

Deployment steps
Deploying Windows Hello for Business cloud Kerberos trust consists of two steps:

1. Set up Azure AD Kerberos.


2. Configure a Windows Hello for Business policy and deploy it to the devices.

Deploy Azure AD Kerberos


If you've already deployed on-premises SSO for passwordless security key sign-in, then
you've already deployed Azure AD Kerberos in your hybrid environment. You don't need
to redeploy or change your existing Azure AD Kerberos deployment to support
Windows Hello for Business and you can skip this section.

If you haven't deployed Azure AD Kerberos, follow the instructions in the Enable
passwordless security key sign-in to on-premises resources by using Azure AD
documentation. This page includes information on how to install and use the Azure AD
Kerberos PowerShell module. Use the module to create an Azure AD Kerberos Server
object for the domains where you want to use Windows Hello for Business cloud
Kerberos trust.

Configure Windows Hello for Business policy


After setting up the Azure AD Kerberos object, Windows Hello for business cloud
Kerberos trust must be enabled on your Windows devices. Follow the instructions below
to configure your devices using either Microsoft Intune or group policy (GPO).
Intune

For devices managed by Intune, you can use Intune policies to configure Windows
Hello for Business.

There are different ways to enable and configure Windows Hello for Business in
Intune:

When the device is enrolled in Intune, a tenant-wide policy is applied to the


device. This policy is applied at enrollment time only, and any changes to its
configuration won't apply to devices already enrolled in Intune. For this
reason, this policy is usually disabled, and Windows Hello for Business can be
enabled using a policy targeted to a security group.
After the device is enrolled in Intune, you can apply a device configuration
policy. Any changes to the policy will be applied to the devices during regular
policy refresh intervals. There are different policy types to choose from:
Settings catalog
Security baselines
Custom policy, via the PassportForWork CSP
Account protection policy
Identity protection policy template

Verify the tenant-wide policy


To check the Windows Hello for Business policy applied at enrollment time:

1. Sign in to the Microsoft Intune admin center .


2. Select Devices > Windows > Windows Enrollment.
3. Select Windows Hello for Business.
4. Verify the status of Configure Windows Hello for Business and any settings
that may be configured.

If the tenant-wide policy is enabled and configured to your needs, you can skip to
Configure cloud Kerberos trust policy. Otherwise, follow the instructions below to
create a policy using an account protection policy.

Enable Windows Hello for Business


To configure Windows Hello for Business using an account protection policy:

1. Sign in to the Microsoft Intune admin center .


2. Select Endpoint security > Account protection.
3. Select + Create Policy.
4. For Platform, select Windows 10 and later and for Profile select Account
protection.
5. Select Create.
6. Specify a Name and, optionally, a Description > Next.
7. Under Block Windows Hello for Business, select Disabled and multiple
policies become available.

These policies are optional to configure, but it's recommended to


configure Enable to use a Trusted Platform Module (TPM) to Yes.
For more information about these policies, see MDM policy settings for
Windows Hello for Business.

8. Under Enable to certificate for on-premises resources, select Not configured


9. Select Next.
10. Optionally, add scope tags and select Next.
11. Assign the policy to a security group that contains as members the devices or
users that you want to configure > Next.
12. Review the policy configuration and select Create.

 Tip

If you want to enforce the use of digits for your Windows Hello for Business
PIN, use the settings catalog and choose Digits or Digits (User) instead of
using the Account protection template.

Assign the policy to a security group that contains as members the devices or users
that you want to configure.

Configure the cloud Kerberos trust policy


The cloud Kerberos trust policy can be configured using a custom template, and it's
configured separately from enabling Windows Hello for Business.

To configure the cloud Kerberos trust policy:

1. Sign in to the Microsoft Intune admin center .

2. Select Devices > Windows > Configuration Profiles > Create profile.

3. For Profile Type, select Templates and select the Custom Template.

4. Name the profile with a familiar name, for example, "Windows Hello for
Business cloud Kerberos trust".

5. In Configuration Settings, add a new configuration with the following settings:


Name: Windows Hello for Business cloud Kerberos trust or another
familiar name
Description (optional): Enable Windows Hello for Business cloud Kerberos
trust for sign-in and on-premises SSO
OMA-URI: ./Device/Vendor/MSFT/PassportForWork/ <tenant
ID> /Policies/UseCloudTrustForOnPremAuth
Data type: Boolean
Value: True

) Important

Tenant ID in the OMA-URI must be replaced with the tenant ID for your
Azure AD tenant. See How to find your Azure AD tenant ID for
instructions on looking up your tenant ID.

6. Assign the policy to a security group that contains as members the devices or
users that you want to configure.

) Important

If the Use certificate for on-premises authentication policy is enabled, certificate


trust will take precedence over cloud Kerberos trust. Ensure that the machines that
you want to enable cloud Kerberos trust have this policy not configured.
Provision Windows Hello for Business
The Windows Hello for Business provisioning process begins immediately after a user
has signed in if certain prerequisite checks are passed. Windows Hello for Business cloud
Kerberos trust adds a prerequisite check for Hybrid Azure AD-joined devices when cloud
Kerberos trust is enabled by policy.

You can determine the status of the prerequisite check by viewing the User Device
Registration admin log under Applications and Services Logs > Microsoft > Windows.
This information is also available using the dsregcmd /status command from a console.
For more information, see dsregcmd.

The cloud Kerberos trust prerequisite check detects whether the user has a partial TGT
before allowing provisioning to start. The purpose of this check is to validate whether
Azure AD Kerberos is set up for the user's domain and tenant. If Azure AD Kerberos is
set up, the user will receive a partial TGT during sign-in with one of their other unlock
methods. This check has three states: Yes, No, and Not Tested. The Not Tested state is
reported if cloud Kerberos trust isn't being enforced by policy or if the device is Azure
AD joined.

7 Note

The cloud Kerberos trust prerequisite check isn't done on Azure AD-joined devices.
If Azure AD Kerberos isn't provisioned, a user on an Azure AD joined device will still
be able to sign in, but won't have SSO to on-premises resources secured by Active
Directory.
PIN Setup
After a user signs in, this is the process that occurs to enroll in Windows Hello for
Business:

1. The user is prompted with a full screen page to use Windows Hello with the
organization account. The user selects OK.
2. The provisioning flow proceeds to the multi-factor authentication portion of the
enrollment. Provisioning informs the user that it's actively attempting to contact
the user through their configured form of MFA. The provisioning process doesn't
proceed until authentication succeeds, fails or times out. A failed or timeout MFA
results in an error and asks the user to retry.
3. After a successful MFA, the provisioning flow asks the user to create and validate a
PIN. This PIN must observe any PIN complexity policies configured on the device.

Sign-in
Once a user has set up a PIN with cloud Kerberos trust, it can be used immediately for
sign-in. On a Hybrid Azure AD joined device, the first use of the PIN requires line of
sight to a DC. Once the user has signed in or unlocked with the DC, cached sign-in can
be used for subsequent unlocks without line of sight or network connectivity.

Migrate from key trust deployment model to


cloud Kerberos trust
If you deployed Windows Hello for Business using the key trust model, and want to
migrate to the cloud Kerberos trust model, follow these steps:

1. Set up Azure AD Kerberos in your hybrid environment.


2. Enable cloud Kerberos trust via Group Policy or Intune.
3. For Azure AD joined devices, sign out and sign in to the device using Windows
Hello for Business.

7 Note

For hybrid Azure AD joined devices, users must perform the first sign in with new
credentials while having line of sight to a DC.

Migrate from certificate trust deployment


model to cloud Kerberos trust

) Important

There is no direct migration path from a certificate trust deployment to a cloud


Kerberos trust deployment. The Windows Hello container must be deleted before
you can migrate to cloud Kerberos trust.

If you deployed Windows Hello for Business using the certificate trust model, and want
to use the cloud Kerberos trust model, you must redeploy Windows Hello for Business
by following these steps:

1. Disable the certificate trust policy.


2. Enable cloud Kerberos trust via Group Policy or Intune.
3. Remove the certificate trust credential using the command certutil -
deletehellocontainer from the user context.

4. Sign out and sign back in.


5. Provision Windows Hello for Business using a method of your choice.

7 Note

For hybrid Azure AD joined devices, users must perform the first sign-in with new
credentials while having line of sight to a DC.
Frequently Asked Questions
For a list of frequently asked questions about Windows Hello for Business cloud
Kerberos trust, see Windows Hello for Business Frequently Asked Questions.
Hybrid key trust deployment
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: key trust
Join type: Azure AD join , hybrid Azure AD join

Hybrid environments are distributed systems that enable organizations to use on-
premises and Azure AD-protected resources. Windows Hello for Business uses the
existing distributed system as a foundation on which organizations can provide two-
factor authentication and single sign-on to modern resources.

This deployment guide describes how to deploy Windows Hello for Business in a hybrid
key trust scenario.

) Important

Windows Hello for Business cloud Kerberos trust is the recommended deployment
model when compared to the key trust model. For more information, see cloud
Kerberos trust deployment.

It is recommended that you review the Windows Hello for Business planning guide prior
to using the deployment guide. The planning guide helps you make decisions by
explaining the available options with each aspect of the deployment and explains the
potential outcomes based on each of these decisions.

Prerequisites
The following prerequisites must be met for a hybrid key trust deployment:

" Directories and directory synchronization


" Authentication to Azure AD
" Device registration
" Public Key Infrastructure
" Multi-factor authentication
" Device management

Directories and directory synchronization


Hybrid Windows Hello for Business needs two directories:

An on-premises Active Directory


An Azure Active Directory tenant

The two directories must be synchronized with Azure AD Connect Sync, which
synchronizes user accounts from the on-premises Active Directory to Azure AD.
During the Window Hello for Business provisioning process, users register the public
portion of their Windows Hello for Business credential with Azure AD. Azure AD Connect
Sync synchronizes the Windows Hello for Business public key to Active Directory.

7 Note

Windows Hello for Business hybrid key trust is not supported if the users' on-
premises UPN suffix cannot be added as a verified domain in Azure AD.

Authentication to Azure AD
Authentication to Azure AD can be configured with or without federation:

Password hash synchronization or Azure Active Directory pass-through-


authentication is required for non-federated environments
Active Directory Federation Services (AD FS) or a third-party federation service is
required for federated environments

Device registration
The Windows devices must be registered in Azure AD. Devices can be registered in
Azure AD using either Azure AD join or hybrid Azure AD join.
For hybrid Azure AD joined devices, review the guidance on the Plan your hybrid Azure
Active Directory join implementation page.

Public Key Infrastructure


An enterprise PKI is required as trust anchor for authentication. Domain controllers
require a certificate for Windows clients to trust them.
Multi-factor authentication
The Windows Hello for Business provisioning process lets a user enroll in Windows Hello
for Business using their user name and password as one factor, but requires a second
factor of authentication.
Hybrid deployments can use:

Azure AD Multi-Factor Authentication


A multi-factor authentication provided by AD FS, which includes an adapter model
that enables third parties to integrate their MFA into AD FS

For more information how to configure Azure AD Multi-Factor Authentication, see


Configure Azure AD Multi-Factor Authentication settings.
For more information how to configure AD FS to provide multi-factor authentication,
see Configure Azure MFA as authentication provider with AD FS.

Device management
To configure Windows Hello for Business, devices can be configured through a mobile
device management (MDM) solution like Intune, or via group policy.

Next steps
Once the prerequisites are met, deploying Windows Hello for Business with a hybrid key
trust model consists of the following steps:

" Configure and validate the PKI


" Configure Windows Hello for Business settings
" Provision Windows Hello for Business on Windows clients
" Configure single sign-on (SSO) for Azure AD joined devices

Next: configure and validate the Public Key Infrastructure >


Configure and validate the Public Key
Infrastructure - hybrid key trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: key trust
Join type: Azure AD join , hybrid Azure AD join

Windows Hello for Business must have a Public Key Infrastructure (PKI) when using the
key trust model. The domain controllers must have a certificate, which serves as a root of
trust for clients. The certificate ensures that clients don't communicate with rogue
domain controllers.

Key trust deployments do not need client-issued certificates for on-premises


authentication. Active Directory user accounts are configured for public key mapping by
Azure AD Connect Sync, which synchronizes the public key of the Windows Hello for
Business credential to an attribute on the user's Active Directory object ( msDS-
KeyCredentialLink ).

A Windows Server-based PKI or a third-party Enterprise certification authority can be


used. The requirements for the domain controller certificate are shown below. For more
details, see Requirements for domain controller certificates from a third-party CA.

Deploy an enterprise certification authority


This guide assumes most enterprises have an existing public key infrastructure. Windows
Hello for Business depends on an enterprise PKI running the Windows Server Active
Directory Certificate Services role.
If you don't have an existing PKI, review Certification Authority Guidance to properly
design your infrastructure. Then, consult the Test Lab Guide: Deploying an AD CS Two-
Tier PKI Hierarchy for instructions on how to configure your PKI using the information
from your design session.

Lab-based PKI
The following instructions may be used to deploy simple public key infrastructure that is
suitable for a lab environment.

Sign in using Enterprise Administrator equivalent credentials on a Windows Server where


you want the certification authority (CA) installed.

7 Note

Never install a certification authority on a domain controller in a production


environment.

1. Open an elevated Windows PowerShell prompt


2. Use the following command to install the Active Directory Certificate Services role.

PowerShell

Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools

3. Use the following command to configure the CA using a basic certification


authority configuration

PowerShell

Install-AdcsCertificationAuthority

Configure the enterprise PKI

Configure domain controller certificates


Clients must trust the domain controllers, and the best way to enable the trust is to
ensure that each domain controller has a Kerberos Authentication certificate. Installing a
certificate on the domain controllers enables the Key Distribution Center (KDC) to prove
its identity to other members of the domain. The certificates provide clients a root of
trust external to the domain, namely the enterprise certification authority.

Domain controllers automatically request a domain controller certificate (if published)


when they discover an enterprise CA is added to Active Directory. The certificates based
on the Domain Controller and Domain Controller Authentication certificate templates
don't include the KDC Authentication object identifier (OID), which was later added to
the Kerberos RFC. Therefore, domain controllers need to request a certificate based on
the Kerberos Authentication certificate template.
By default, the Active Directory CA provides and publishes the Kerberos Authentication
certificate template. The cryptography configuration included in the template is based
on older and less performant cryptography APIs. To ensure domain controllers request
the proper certificate with the best available cryptography, use the Kerberos
Authentication certificate template as a baseline to create an updated domain controller
certificate template.

) Important

The certificates issued to the domain controllers must meet the following
requirements:

The Certificate Revocation List (CRL) distribution point extension must point to
a valid CRL, or an Authority Information Access (AIA) extension that points to
an Online Certificate Status Protocol (OCSP) responder
Optionally, the certificate Subject section could contain the directory path of
the server object (the distinguished name)
The certificate Key Usage section must contain Digital Signature and Key
Encipherment
Optionally, the certificate Basic Constraints section should contain: [Subject
Type=End Entity, Path Length Constraint=None]

The certificate extended key usage section must contain Client Authentication
( 1.3.6.1.5.5.7.3.2 ), Server Authentication ( 1.3.6.1.5.5.7.3.1 ), and KDC
Authentication ( 1.3.6.1.5.2.3.5 )
The certificate Subject Alternative Name section must contain the Domain
Name System (DNS) name
The certificate template must have an extension that has the value
DomainController , encoded as a BMPstring. If you are using Windows Server

Enterprise Certificate Authority, this extension is already included in the


domain controller certificate template
The domain controller certificate must be installed in the local computer's
certificate store

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates > Manage
3. In the Certificate Template Console, right-click the Kerberos Authentication
template in the details pane and select Duplicate Template
4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list

5. On the General tab

Type Domain Controller Authentication (Kerberos) in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

7 Note

If you use different template names, you'll need to remember and substitute
these names in different portions of the lab.

6. On the Subject Name tab:

Select the Build from this Active Directory information button if it isn't
already selected
Select None from the Subject name format list
Select DNS name from the Include this information in alternate subject list
Clear all other items

7. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

8. Select OK
9. Close the console

7 Note

Inclusion of the KDC Authentication OID in domain controller certificate is not


required for hybrid Azure AD-joined devices. The OID is required for enabling
authentication with Windows Hello for Business to on-premises resources by Azure
AD-joined devices.
) Important

For Azure AD joined devices to authenticate to on-premises resources, ensure to:

Install the root CA certificate in the device's trusted root certificate store. See
how to deploy a trusted certificate profile via Intune
Publish your certificate revocation list to a location that is available to Azure
AD-joined devices, such as a web-based URL

Supersede existing domain controller certificates


The domain controllers may have an existing domain controller certificate. The Active
Directory Certificate Services provides a default certificate template for domain
controllers called domain controller certificate. Later releases of Windows Server
provided a new certificate template called domain controller authentication certificate.
These certificate templates were provided prior to the update of the Kerberos
specification that stated Key Distribution Centers (KDCs) performing certificate
authentication needed to include the KDC Authentication extension.

The Kerberos Authentication certificate template is the most current certificate template
designated for domain controllers, and should be the one you deploy to all your domain
controllers.
The autoenrollment feature allows you to replace the domain controller certificates. Use
the following configuration to replace older domain controller certificates with new
ones, using the Kerberos Authentication certificate template.

Sign in to a CA or management workstations with Enterprise Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates > Manage
3. In the Certificate Template Console, right-click the Domain Controller
Authentication (Kerberos) (or the name of the certificate template you created in
the previous section) template in the details pane and select Properties
4. Select the Superseded Templates tab. Select Add
5. From the Add Superseded Template dialog, select the Domain Controller
certificate template and select OK > Add
6. From the Add Superseded Template dialog, select the Domain Controller
Authentication certificate template and select OK
7. From the Add Superseded Template dialog, select the Kerberos Authentication
certificate template and select OK
8. Add any other enterprise certificate templates that were previously configured for
domain controllers to the Superseded Templates tab
9. Select OK and close the Certificate Templates console

The certificate template is configured to supersede all the certificate templates provided
in the superseded templates list.
However, the certificate template and the superseding of certificate templates isn't
active until the template is published to one or more certificate authorities.

7 Note

The domain controller's certificate must chain to a root in the NTAuth store. By
default, the Active Directory Certificate Authority's root certificate is added to the
NTAuth store. If you are using a third-party CA, this may not be done by default. If
the domain controller certificate does not chain to a root in the NTAuth store, user
authentication will fail. To see all certificates in the NTAuth store, use the following
command:

Certutil -viewstore -enterprise NTAuth

Unpublish Superseded Certificate Templates


The certification authority only issues certificates based on published certificate
templates. For security, it's a good practice to unpublish certificate templates that the
CA isn't configured to issue, including the pre-published templates from the role
installation and any superseded templates.

The newly created domain controller authentication certificate template supersedes


previous domain controller certificate templates. Therefore, you need to unpublish these
certificate templates from all issuing certificate authorities.

Sign in to the CA or management workstation with Enterprise Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Expand the parent node from the navigation pane > Certificate Templates
3. Right-click the Domain Controller certificate template and select Delete. Select Yes
on the Disable certificate templates window
4. Repeat step 3 for the Domain Controller Authentication and Kerberos
Authentication certificate templates
Publish the certificate template to the CA
A certification authority can only issue certificates for certificate templates that are
published to it. If you have more than one CA, and you want more CAs to issue
certificates based on the certificate template, then you must publish the certificate
template to them.

Sign in to the CA or management workstations with Enterprise Admin equivalent


credentials.

1. Open the Certification Authority management console


2. Expand the parent node from the navigation pane
3. Select Certificate Templates in the navigation pane
4. Right-click the Certificate Templates node. Select New > Certificate Template to
issue
5. In the Enable Certificates Templates window, select the Domain Controller
Authentication (Kerberos) template you created in the previous steps > select OK
6. Close the console

) Important

If you plan to deploy Azure AD joined devices, and require single sign-on (SSO) to
on-premises resources when signing in with Windows Hello for Business, follow the
procedures to update your CA to include an http-based CRL distribution point.

Configure and deploy certificates to domain


controllers

Configure automatic certificate enrollment for the


domain controllers
Domain controllers automatically request a certificate from the Domain controller
certificate template. However, domain controllers are unaware of newer certificate
templates or superseded configurations on certificate templates. For domain controllers
to automatically enroll and renew of certificates, configure a GPO for automatic
certificate enrollment, and link it to the Domain Controllers OU.

1. Open the Group Policy Management Console (gpmc.msc)


2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Right-click Group Policy object and select New
4. Type Domain Controller Auto Certificate Enrollment in the name box and select OK
5. Right-click the Domain Controller Auto Certificate Enrollment Group Policy object
and select Edit
6. In the navigation pane, expand Policies under Computer Configuration
7. Expand Windows Settings > Security Settings > Public Key Policies
8. In the details pane, right-click Certificate Services Client - Auto-Enrollment and
select Properties
9. Select Enabled from the Configuration Model list
10. Select the Renew expired certificates, update pending certificates, and remove
revoked certificates check box
11. Select the Update certificates that use certificate templates check box
12. Select OK
13. Close the Group Policy Management Editor

Deploy the domain controller auto certificate enrollment


GPO
Sign in to domain controller or management workstations with Domain Administrator
equivalent credentials.

1. Start the Group Policy Management Console (gpmc.msc)


2. In the navigation pane, expand the domain and expand the node with the Active
Directory domain name. Right-click the Domain Controllers organizational unit
and select Link an existing GPO…
3. In the Select GPO dialog box, select Domain Controller Auto Certificate Enrollment
or the name of the domain controller certificate enrollment Group Policy object
you previously created
4. Select OK

Validate the configuration


Windows Hello for Business is a distributed system, which on the surface appears
complex and difficult. The key to a successful deployment is to validate phases of work
prior to moving to the next phase.

Confirm your domain controllers enroll the correct certificates and not any superseded
certificate templates. Check that each domain controller completed the certificate
autoenrollment.
Use the event logs
Sign in to domain controller or management workstations with Domain Administrator
equivalent credentials.

1. Using the Event Viewer, navigate to the Application and Services > Microsoft >
Windows > CertificateServices-Lifecycles-System event log
2. Look for an event indicating a new certificate enrollment (autoenrollment):

The details of the event include the certificate template on which the
certificate was issued
The name of the certificate template used to issue the certificate should
match the certificate template name included in the event
The certificate thumbprint and EKUs for the certificate are also included in the
event
The EKU needed for proper Windows Hello for Business authentication is
Kerberos Authentication, in addition to other EKUs provide by the certificate
template

Certificates superseded by your new domain controller certificate generate an archive


event in the event log. The archive event contains the certificate template name and
thumbprint of the certificate that was superseded by the new certificate.

Certificate Manager
You can use the Certificate Manager console to validate the domain controller has the
properly enrolled certificate based on the correct certificate template with the proper
EKUs. Use certlm.msc to view certificate in the local computers certificate stores. Expand
the Personal store and view the certificates enrolled for the computer. Archived
certificates don't appear in Certificate Manager.

Certutil.exe
You can use certutil.exe command to view enrolled certificates in the local computer.
Certutil shows enrolled and archived certificates for the local computer. From an
elevated command prompt, run certutil.exe -q -store my to view locally enrolled
certificates.

To view detailed information about each certificate in the store, use certutil.exe -q -v
-store my to validate automatic certificate enrollment enrolled the proper certificates.
Troubleshooting
Windows triggers automatic certificate enrollment for the computer during boot, and
when Group Policy updates. You can refresh Group Policy from an elevated command
prompt using gpupdate.exe /force .

Alternatively, you can forcefully trigger automatic certificate enrollment using


certreq.exe -autoenroll -q from an elevated command prompt.

Use the event logs to monitor certificate enrollment and archive. Review the
configuration, such as publishing certificate templates to issuing certification authority
and the allow auto enrollment permissions.

Section review and next steps


Before moving to the next section, ensure the following steps are complete:

" Configure domain controller certificates


" Supersede existing domain controller certificates
" Unpublish superseded certificate templates
" Publish the certificate template to the CA
" Deploy certificates to the domain controllers
" Validate the domain controllers configuration

Next: configure and provision Windows Hello for Business >


Configure and enroll in Windows Hello
for Business - hybrid key trust
Article • 02/22/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: key trust
Join type: Azure AD join , hybrid Azure AD join

After the prerequisites are met and the PKI configuration is validated, Windows Hello for
business must be enabled on the Windows devices. Follow the instructions below to
configure your devices using either Microsoft Intune or group policy (GPO).

Intune

Configure Windows Hello for Business using


Microsoft Intune
For Azure AD joined devices and hybrid Azure AD joined devices enrolled in Intune,
you can use Intune policies to manage Windows Hello for Business.

There are different ways to enable and configure Windows Hello for Business in
Intune:

Using a policy applied at the tenant level. The tenant policy:


Is only applied at enrollment time, and any changes to its configuration
won't apply to devices already enrolled in Intune
It applies to all devices getting enrolled in Intune. For this reason, the policy
is usually disabled and Windows Hello for Business is enabled using a
policy targeted to a security group
A device configuration policy that is applied after device enrollment. Any
changes to the policy will be applied to the devices during regular policy
refresh intervals. There are different policy types to choose from:
Settings catalog
Security baselines
Custom policy, via the PassportForWork CSP
Account protection policy
Identity protection policy template

Verify the tenant-wide policy


To check the Windows Hello for Business policy applied at enrollment time:

1. Sign in to the Microsoft Intune admin center .


2. Select Devices > Windows > Windows Enrollment
3. Select Windows Hello for Business
4. Verify the status of Configure Windows Hello for Business and any settings
that may be configured

If the tenant-wide policy is enabled and configured to your needs, you can skip to
Enroll in Windows Hello for Business. Otherwise, follow the instructions below to
create a policy using an account protection policy.

Enable and configure Windows Hello for Business


To configure Windows Hello for Business using an account protection policy:

1. Go to the Microsoft Intune admin center .


2. Select Endpoint security > Account protection
3. Select + Create Policy
4. For Platform*, select Windows 10 and later and for Profile select Account
protection
5. Select Create
6. Specify a Name and, optionally, a Description > Next
7. Under Block Windows Hello for Business, select Disabled and multiple policies
become available

These policies are optional to configure, but it's recommended to


configure Enable to use a Trusted Platform Module (TPM) to Yes
For more information about these policies, see MDM policy settings for
Windows Hello for Business

8. Select Next
9. Optionally, add scope tags > Next
10. Assign the policy to a security group that contains as members the devices or
users that you want to configure > Next
11. Review the policy configuration and select Create

Enroll in Windows Hello for Business


The Windows Hello for Business provisioning process begins immediately after the user
profile is loaded and before the user receives their desktop. For the provisioning process
to begin, all prerequisite checks must pass.

You can determine the status of the prerequisite checks by viewing the User Device
Registration admin log under Applications and Services Logs > Microsoft > Windows.
This information is also available using the dsregcmd /status command from a console.
For more information, see dsregcmd.

PIN Setup
The following process occurs after a user signs in, to enroll in Windows Hello for
Business:

1. The user is prompted with a full screen page to use Windows Hello with the
organization account. The user selects OK
2. The enrollment flow proceeds to the multi-factor authentication phase. The
process informs the user that there's an MFA contact attempt, using the configured
form of MFA. The provisioning process doesn't proceed until authentication
succeeds, fails or times out. A failed or timeout MFA results in an error and asks the
user to retry
3. After a successful MFA, the provisioning flow asks the user to create and validate a
PIN. This PIN must observe any PIN complexity policies configured on the device
4. The remainder of the provisioning includes Windows Hello for Business requesting
an asymmetric key pair for the user, preferably from the TPM (or required if
explicitly set through policy). Once the key pair is acquired, Windows
communicates with Azure Active Directory to register the public key. When key
registration completes, Windows Hello for Business provisioning informs the user
they can use their PIN to sign-in. The user may close the provisioning application
and see their desktop. While the user has completed provisioning, Azure AD
Connect synchronizes the user's key to Active Directory

) Important

The minimum time needed to synchronize the user's public key from Azure Active
Directory to the on-premises Active Directory is 30 minutes. The Azure AD Connect
scheduler controls the synchronization interval. This synchronization latency
delays the user's ability to authenticate and use on-premises resources until the
user's public key has synchronized to Active Directory. Once synchronized, the
user can authenticate and use on-premises resources. Read Azure AD Connect
sync: Scheduler to view and adjust the synchronization cycle for your organization.
Configure single sign-on for Azure AD
joined devices
Article • 02/22/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: key trust , certificate trust
Join type: Azure AD join

Windows Hello for Business combined with Azure AD-joined devices makes it easy for
users to securely access cloud-based resources using a strong, two-factor credential.
Some resources may remain on-premises as enterprises transition resources to the
cloud and Azure AD-joined devices may need to access these resources. With additional
configurations to the hybrid deployment, you can provide single sign-on to on-premises
resources for Azure AD-joined devices using Windows Hello for Business, using a key or
a certificate.

7 Note

These steps are not needed when using the cloud Kerberos trust model.

Prerequisites
Unlike hybrid Azure AD-joined devices, Azure AD-joined devices don't have a
relationship with your Active Directory domain. This factor changes the way in which
users authenticate to Active Directory. Validate the following configurations to ensure
they support Azure AD-joined devices:

" Certificate Revocation List (CRL) Distribution Point


" Domain controller certificates
" Network infrastructure in place to reach the on-premises domain controllers. If the
machines are external, you can use any VPN solution

CRL Distribution Point (CDP)


Certificates issued by a certificate authority can be revoked. When a certificate authority
revokes as certificate, it writes information about the certificate into a certificate
revocation list (CRL).
During certificate validation, Windows compares the current certificate with information
in the CRL to determine if the certificate is valid.

The preceding domain controller certificate shows a CRL distribution point (CDP) in
Active Directory. The value in the URL begins with ldap. Using Active Directory for
domain joined devices provides a highly available CRL distribution point. However,
Azure AD joined devices can't read data from Active Directory, and certificate validation
doesn't provide an opportunity to authenticate prior to reading the CRL. The
authentication becomes a circular problem: the user is attempting to authenticate, but
must read Active Directory to complete the authentication, but the user can't read
Active Directory because they haven't authenticated.

To resolve this issue, the CRL distribution point must be a location accessible by Azure
AD joined devices that doesn't require authentication. The easiest solution is to publish
the CRL distribution point on a web server that uses HTTP (not HTTPS).
If your CRL distribution point doesn't list an HTTP distribution point, then you need to
reconfigure the issuing certificate authority to include an HTTP CRL distribution point,
preferably first, in the list of distribution points.

7 Note

If your CA has published both the Base and the Delta CRL, make sure to publish the
Delta CRL in the HTTP path. Include web server to fetch the Delta CRL by allowing
double escaping in the (IIS) web server.

Domain controller certificates


Certificate authorities write CDP information in certificates as they're issued. If the
distribution point changes, then previously issued certificates must be reissued for the
certificate authority to include the new CDP. The domain controller certificate is one the
critical components of Azure AD-joined devices authenticating to Active Directory.

Why does Windows need to validate the domain controller


certificate?
Windows Hello for Business enforces the strict KDC validation security feature when
authenticating from an Azure AD joined device to a domain. This enforcement imposes
more restrictive criteria that must be met by the Key Distribution Center (KDC). When
authenticating using Windows Hello for Business on an Azure AD joined device, the
Windows client validates the reply from the domain controller by ensuring all of the
following are met:

The domain controller has the private key for the certificate provided
The root CA that issued the domain controller's certificate is in the device's Trusted
Root Certificate Authorities
Use the Kerberos Authentication certificate template instead of any other older
template
The domain controller's certificate has the KDC Authentication extended key usage
(EKU)
The domain controller's certificate's subject alternate name has a DNS Name that
matches the name of the domain
The domain controller's certificate's signature hash algorithm is sha256
The domain controller's certificate's public key is RSA (2048 Bits)
Authenticating from a Hybrid Azure AD joined device to a domain using Windows Hello
for Business doesn't enforce that the domain controller certificate includes the KDC
Authentication EKU. If you're adding Azure AD-joined devices to an existing domain
environment, make sure to verify that your domain controller certificate has been
updated to include the KDC Authentication EKU.

Configure a CRL distribution point for an


issuing CA
Use this set of procedures to update the CA that issues domain controller certificates to
include an http-based CRL distribution point.

Configure Internet Information Services to host CRL


distribution point
You need to host your new certificate revocation list on a web server so Azure AD-joined
devices can easily validate certificates without authentication. You can host these files on
web servers many ways. The following steps are just one and may be useful for admins
unfamiliar with adding a new CRL distribution point.

) Important

Do not configure the IIS server hosting your CRL distribution point to use https or a
server authentication certificate. Clients should access the distribution point using
http.

Install the web server


1. Sign-in to your server as a local administrator and start Server Manager if it didn't
start during your sign in
2. Select the Local Server node in the navigation pane. Select Manage and select
Add Roles and Features
3. In the Add Role and Features Wizard, select Server Selection. Verify the selected
server is the local server. Select Server Roles. Select the check box next to Web
Server (IIS)
4. Select Next through the remaining options in the wizard, accepting the defaults,
and install the Web Server role
Configure the web server
1. From Windows Administrative Tools, Open Internet Information Services (IIS)
Manager

2. Expand the navigation pane to show Default Web Site. Select and then right-click
Default Web site and select Add Virtual Directory...

3. In the Add Virtual Directory dialog box, type cdp in alias. For physical path, type
or browse for the physical file location where you'll host the certificate revocation
list. For this example, the path c:\cdp is used. Select OK

7 Note

Make note of this path as you will use it later to configure share and file
permissions.

4. Select CDP under Default Web Site in the navigation pane. Open Directory
Browsing in the content pane. Select Enable in the details pane

5. Select CDP under Default Web Site in the navigation pane. Open Configuration
Editor
6. In the Section list, navigate to system.webServer/security/requestFiltering

7. In the list of named value-pairs in the content pane, configure


allowDoubleEscaping to True. Select Apply in the actions pane

8. Close Internet Information Services (IIS) Manager


Create a DNS resource record for the CRL distribution
point URL
1. On your DNS server or from an administrative workstation, open DNS Manager
from Administrative Tools
2. Expand Forward Lookup Zones to show the DNS zone for your domain. Right-click
your domain name in the navigation pane and select New Host (A or AAAA)...
3. In the New Host dialog box, type crl in Name. Type the IP address of the web
server you configured in IP Address. Select Add Host. Select OK to close the DNS
dialog box. Select Done

4. Close the DNS Manager

Prepare a file share to host the certificate revocation list


These procedures configure NTFS and share permissions on the web server to allow the
certificate authority to automatically publish the certificate revocation list.

Configure the CDP file share


1. On the web server, open Windows Explorer and navigate to the cdp folder you
created in step 3 of Configure the Web Server
2. Right-click the cdp folder and select Properties. Select the Sharing tab. Select
Advanced Sharing
3. Select Share this folder. Type cdp$ in Share name. Select Permissions

4. In the Permissions for cdp$ dialog box, select Add


5. In the Select Users, Computers, Service Accounts, or Groups dialog box, select
Object Types. In the Object Types dialog box, select Computers, and then select
OK
6. In the Select Users, Computers, Service Accounts, or Groups dialog box, in Enter
the object names to select, type the name of the server running the certificate
authority issuing the certificate revocation list, and then select Check Names.
Select OK
7. In the Permissions for cdp$ dialog box, select the certificate authority from the
Group or user names list. In the Permissions for section, select Allow for Full
control. Select OK

8. In the Advanced Sharing dialog box, select OK

 Tip

Make sure that users can access \\Server FQDN\sharename.

Disable Caching
1. On the web server, open Windows Explorer and navigate to the cdp folder you
created in step 3 of Configure the Web Server
2. Right-click the cdp folder and select Properties. Select the Sharing tab. Select
Advanced Sharing
3. Select Caching. Select No files or programs from the shared folder are available
offline
4. Select OK

Configure NTFS permission for the CDP folder


1. On the web server, open Windows Explorer and navigate to the cdp folder you
created in step 3 of Configure the Web Server
2. Right-click the cdp folder and select Properties. Select the Security tab
3. On the Security tab, select Edit
4. In the Permissions for cdp dialog box, select Add

5. In the Select Users, Computers, Service Accounts, or Groups dialog box, select
Object Types. In the Object Types dialog box, select Computers. Select OK
6. In the Select Users, Computers, Service Accounts, or Groups dialog box, in Enter
the object names to select, type the name of the certificate authority, and then
select Check Names. Select OK
7. In the Permissions for cdp dialog box, select the name of the certificate authority
from the Group or user names list. In the Permissions for section, select Allow for
Full control. Select OK
8. Select Close in the cdp Properties dialog box

Configure the new CDP and publishing location in the


issuing CA
The web server is ready to host the CRL distribution point. Now, configure the issuing
certificate authority to publish the CRL at the new location and to include the new CRL
distribution point.

Configure the CRL distribution Point


1. On the issuing certificate authority, sign-in as a local administrator. Start the
Certification Authority console from Administrative Tools
2. In the navigation pane, right-click the name of the certificate authority and select
Properties
3. Select Extensions. On the Extensions tab, select CRL Distribution Point (CDP) from
the Select extension list
4. On the Extensions tab, select Add. Type http://crl.[domainname]/cdp/ in location.
For example, <http://crl.corp.contoso.com/cdp/> or
<http://crl.contoso.com/cdp/> (don't forget the trailing forward slash)

5. Select <CaName> from the Variable list and select Insert. Select
<CRLNameSuffix> from the Variable list and select Insert. Select
<DeltaCRLAllowed> from the Variable list and select Insert
6. Type .crl at the end of the text in Location. Select OK
7. Select the CDP you just created

8. Select Include in CRLs. Clients use this to find Delta CRL locations
9. Select Include in the CDP extension of issued certificates
10. Select Apply save your selections. Select No when ask to restart the service

7 Note

Optionally, you can remove unused CRL distribution points and publishing
locations.

Configure the CRL publishing location


1. On the issuing certificate authority, sign-in as a local administrator. Start the
Certificate Authority console from Administrative Tools
2. In the navigation pane, right-click the name of the certificate authority and select
Properties
3. Select Extensions. On the Extensions tab, select CRL Distribution Point (CDP) from
the Select extension list
4. On the Extensions tab, select Add. Type the computer and share name you create
for your CRL distribution point in Configure the CDP file share. For example,
\\app\cdp$\ (don't forget the trailing backwards slash)
5. Select <CaName> from the Variable list and select Insert. Select
<CRLNameSuffix> from the Variable list and select Insert. Select
<DeltaCRLAllowed> from the Variable list and select Insert
6. Type .crl at the end of the text in Location. Select OK
7. Select the CDP you just created

8. Select Publish CRLs to this location


9. Select Publish Delta CRLs to this location
10. Select Apply save your selections. Select Yes when ask to restart the service. Select
OK to close the properties dialog box

Publish a new CRL


1. On the issuing certificate authority, sign-in as a local administrator. Start the
Certificate Authority console from Administrative Tools
2. In the navigation pane, right-click Revoked Certificates, hover over All Tasks, and
select Publish
3. In the Publish CRL dialog box, select New CRL and select OK

Validate CDP Publishing


Validate the new CRL distribution point is working.

1. Open a web browser. Navigate to http://crl.[yourdomain].com/cdp . You should


see two files created from publishing the new CRL
Reissue domain controller certificates

With the CA properly configured with a valid HTTP-based CRL distribution point, you
need to reissue certificates to domain controllers as the old certificate doesn't have the
updated CRL distribution point.

1. Sign-in a domain controller using administrative credentials


2. Open the Run dialog box. Type certlm.msc to open the Certificate Manager for
the local computer
3. In the navigation pane, expand Personal. Select Certificates. In the details pane,
select the existing domain controller certificate that includes KDC Authentication
in the list of Intended Purposes

4. Right-click the selected certificate. Hover over All Tasks and then select Renew
Certificate with New Key.... In the Certificate Enrollment wizard, select Next

5. In the Request Certificates page of the wizard, verify the selected certificate has
the correct certificate template and ensure the status is available. Select Enroll
6. After the enrollment completes, select Finish to close the wizard
7. Repeat this procedure on all your domain controllers

7 Note

You can configure domain controllers to automatically enroll and renew their
certificates. Automatic certificate enrollment helps prevent authentication outages
due to expired certificates. Refer to the Windows Hello Deployment Guides to
learn how to deploy automatic certificate enrollment for domain controllers.

) Important

If you are not using automatic certificate enrollment, create a calendar reminder to
alert you two months before the certificate expiration date. Send the reminder to
multiple people in the organization to ensure more than one or two people know
when these certificates expire.

Validate CDP in the new certificate


1. Sign-in a domain controller using administrative credentials
2. Open the Run dialog box. Type certlm.msc to open the Certificate Manager for
the local computer
3. In the navigation pane, expand Personal. Select Certificates. In the details pane,
double-click the existing domain controller certificate includes KDC Authentication
in the list of Intended Purposes
4. Select the Details tab. Scroll down the list until CRL Distribution Points is visible in
the Field column of the list. Select CRL Distribution Point
5. Review the information below the list of fields to confirm the new URL for the CRL
distribution point is present in the certificate. Select OK
Deploy the root CA certificate to Azure AD-
joined devices
The domain controllers have a certificate that includes the new CRL distribution point.
Next, you need the enterprise root certificate so you can deploy it to Azure AD-joined
devices. When you deploy the enterprise root certificates to a device, it ensures the
device trusts any certificates issued by the certificate authority. Without the certificate,
Azure AD-joined devices don't trust domain controller certificates and authentication
fails.

Export the enterprise root certificate


1. Sign-in a domain controller using administrative credentials
2. Open the Run dialog box. Type certlm.msc to open the Certificate Manager for
the local computer
3. In the navigation pane, expand Personal. Select Certificates. In the details pane,
double-click the existing domain controller certificate includes KDC Authentication
in the list of Intended Purposes
4. Select the Certification Path tab. In the Certification path view, select the topmost
node and select View Certificate

5. In the new Certificate dialog box, select the Details tab. Select Copy to File

6. In the Certificate Export Wizard, select Next


7. On the Export File Format page of the wizard, select Next
8. On the File to Export page in the wizard, type the name and location of the root
certificate and select Next. Select Finish and then select OK to close the success
dialog box

9. Select OK two times to return to the Certificate Manager for the local computer.
Close the Certificate Manager

Deploy the certificate via Intune


To configure devices with Microsoft Intune, use a custom policy:

1. Go to the Microsoft Intune admin center


2. Select Devices > Configuration profiles > Create profile
3. Select Platform > Windows 8.1 and later and Profile type > Trusted certificate
4. Select Create
5. In Configuration settings, select the folder icon and browse for the enterprise root
certificate file. Once the file is selected, select Open to upload it to Intune
6. Under Destination store dropdown, select Computer certificate store - Root
7. Select Next
8. Under Assignment, select a security group that contains as members the devices
or users that you want to configure > Next
9. Review the policy configuration and select Create

If you plan on using certificates for on-premises single-sign on, perform the additional
steps in Using Certificates for On-premises Single-sign On. Otherwise, you can sign in to
an Azure AD joined device with Windows Hello for Business and test SSO to an on-
premises resource.
Hybrid certificate trust deployment
Article • 03/16/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: certificate trust
Join type: Azure AD join , hybrid Azure AD join

Hybrid environments are distributed systems that enable organizations to use on-
premises and Azure AD-protected resources. Windows Hello for Business uses the
existing distributed system as a foundation on which organizations can provide two-
factor authentication and single sign-on to modern resources.

This deployment guide describes how to deploy Windows Hello for Business in a hybrid
certificate trust scenario.

) Important

Windows Hello for Business cloud Kerberos trust is the recommended deployment
model when compared to the key trust model. It is also the recommended
deployment model if you don't need to deploy certificates to the end users. For
more information, see cloud Kerberos trust deployment.

It's recommended that you review the Windows Hello for Business planning guide prior
to using the deployment guide. The planning guide helps you make decisions by
explaining the available options with each aspect of the deployment and explains the
potential outcomes based on each of these decisions.

Prerequisites
The following prerequisites must be met for a hybrid certificate trust deployment:

" Directories and directory synchronization


" Federated authentication to Azure AD
" Device registration
" Public Key Infrastructure
" Multi-factor authentication
" Device management

Directories and directory synchronization


Hybrid Windows Hello for Business needs two directories:

An on-premises Active Directory


An Azure Active Directory tenant with an Azure AD Premium subscription

The two directories must be synchronized with Azure AD Connect Sync, which
synchronizes user accounts from the on-premises Active Directory to Azure AD. The
hybrid-certificate trust deployment needs an Azure Active Directory Premium
subscription because it uses the device write-back synchronization feature.

7 Note

Windows Hello for Business hybrid certificate trust is not supported if the users' on-
premises UPN suffix cannot be added as a verified domain in Azure AD.

) Important

Windows Hello for Business is tied between a user and a device. Both the user and
device object must be synchronized between Azure Active Directory and Active
Directory.

Federated authentication to Azure AD


Windows Hello for Business hybrid certificate trust doesn't support Azure AD Pass-
through Authentication (PTA) or password hash sync (PHS).
Windows Hello for Business hybrid certificate trust requires Active Directory to be
federated with Azure Active Directory using AD FS. Additionally, you need to configure
your AD FS farm to support Azure registered devices.

If you're new to AD FS and federation services:

Review key AD FS concepts prior to deploying the AD FS farm


Review the AD FS design guide to design and plan your federation service

Once you have your AD FS design ready:


Review deploying a federation server farm to configure AD FS in your environment

The AD FS farm used with Windows Hello for Business must be Windows Server 2016
with minimum update of KB4088889 (14393.2155) .

Device registration and device write-back


Windows devices must be registered in Azure AD. Devices can be registered in Azure AD
using either Azure AD join or hybrid Azure AD join.
For hybrid Azure AD joined devices, review the guidance on the plan your hybrid Azure
Active Directory join implementation page.

Refer to the Configure hybrid Azure Active Directory join for federated domains guide to
learn more about using Azure AD Connect Sync to configure Azure AD device
registration.
For a manual configuration of your AD FS farm to support device registration, review
the Configure AD FS for Azure AD device registration guide.

Hybrid certificate trust deployments require the device write-back feature.


Authentication to AD FS needs both the user and the device to authenticate. Typically
the users are synchronized, but not devices. This prevents AD FS from authenticating the
device and results in Windows Hello for Business certificate enrollment failures. For this
reason, Windows Hello for Business deployments need device write-back.

7 Note

Windows Hello for Business is tied between a user and a device. Both the user and
device need to be synchronized between Azure Active Directory and Active
Directory. Device write-back is used to update the msDS-KeyCredentialLink
attribute on the computer object.

If you manually configured AD FS, or if you ran Azure AD Connect Sync using Custom
Settings, you must ensure that you have configured device write-back and device
authentication in your AD FS farm. For more information, see Configure Device Write
Back and Device Authentication.

Public Key Infrastructure


An enterprise public key infrastructure (PKI) is required as trust anchor for
authentication. Domain controllers require a certificate for Windows clients to trust
them.
The enterprise PKI and a certificate registration authority (CRA) are required to issue
authentication certificates to users. Hybrid certificate trust deployment uses AD FS as a
CRA.

During Windows Hello for Business provisioning, users receive a sign-in certificate
through the CRA.

Multi-factor authentication
The Windows Hello for Business provisioning process lets a user enroll in Windows Hello
for Business using their user name and password as one factor, but requires a second
factor of authentication.
Hybrid deployments can use:

Azure AD Multi-Factor Authentication


A multi-factor authentication provided by AD FS, which includes an adapter model
that enables third parties to integrate their MFA into AD FS

For more information how to configure Azure AD Multi-Factor Authentication, see


Configure Azure AD Multi-Factor Authentication settings.
For more information how to configure AD FS to provide multi-factor authentication,
see Configure Azure MFA as authentication provider with AD FS.

Device management
To configure Windows Hello for Business, devices can be configured through a mobile
device management (MDM) solution like Intune, or via group policy.

Next steps
Once the prerequisites are met, deploying Windows Hello for Business with a hybrid key
trust model consists of the following steps:

" Configure and validate the PKI


" Configure AD FS
" Configure Windows Hello for Business settings
" Provision Windows Hello for Business on Windows clients
" Configure single sign-on (SSO) for Azure AD joined devices

Next: configure and validate the Public Key Infrastructure >


Configure and validate the Public Key
Infrastructure - hybrid certificate trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: certificate trust
Join type: Azure AD join , hybrid Azure AD join

Windows Hello for Business must have a Public Key Infrastructure (PKI) when using the
key trust or certificate trust models. The domain controllers must have a certificate, which
serves as a root of trust for clients. The certificate ensures that clients don't communicate
with rogue domain controllers.

Hybrid certificate trust deployments issue users a sign-in certificate, enabling them to
authenticate to Active Directory using Windows Hello for Business credentials.
Additionally, hybrid certificate trust deployments issue certificates to registration
authorities to provide defense-in-depth security when issuing user authentication
certificates.

Deploy an enterprise certification authority


This guide assumes most enterprises have an existing public key infrastructure. Windows
Hello for Business depends on an enterprise PKI running the Windows Server Active
Directory Certificate Services role.
If you don't have an existing PKI, review Certification Authority Guidance to properly
design your infrastructure. Then, consult the Test Lab Guide: Deploying an AD CS Two-
Tier PKI Hierarchy for instructions on how to configure your PKI using the information
from your design session.

Lab-based PKI
The following instructions may be used to deploy simple public key infrastructure that is
suitable for a lab environment.
Sign in using Enterprise Administrator equivalent credentials on a Windows Server where
you want the certification authority (CA) installed.

7 Note

Never install a certification authority on a domain controller in a production


environment.

1. Open an elevated Windows PowerShell prompt


2. Use the following command to install the Active Directory Certificate Services role.

PowerShell

Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools

3. Use the following command to configure the CA using a basic certification


authority configuration

PowerShell

Install-AdcsCertificationAuthority

Configure the enterprise PKI

Configure domain controller certificates


Clients must trust the domain controllers, and the best way to enable the trust is to
ensure that each domain controller has a Kerberos Authentication certificate. Installing a
certificate on the domain controllers enables the Key Distribution Center (KDC) to prove
its identity to other members of the domain. The certificates provide clients a root of
trust external to the domain, namely the enterprise certification authority.

Domain controllers automatically request a domain controller certificate (if published)


when they discover an enterprise CA is added to Active Directory. The certificates based
on the Domain Controller and Domain Controller Authentication certificate templates
don't include the KDC Authentication object identifier (OID), which was later added to
the Kerberos RFC. Therefore, domain controllers need to request a certificate based on
the Kerberos Authentication certificate template.

By default, the Active Directory CA provides and publishes the Kerberos Authentication
certificate template. The cryptography configuration included in the template is based
on older and less performant cryptography APIs. To ensure domain controllers request
the proper certificate with the best available cryptography, use the Kerberos
Authentication certificate template as a baseline to create an updated domain controller
certificate template.

) Important

The certificates issued to the domain controllers must meet the following
requirements:

The Certificate Revocation List (CRL) distribution point extension must point to
a valid CRL, or an Authority Information Access (AIA) extension that points to
an Online Certificate Status Protocol (OCSP) responder
Optionally, the certificate Subject section could contain the directory path of
the server object (the distinguished name)
The certificate Key Usage section must contain Digital Signature and Key
Encipherment
Optionally, the certificate Basic Constraints section should contain: [Subject
Type=End Entity, Path Length Constraint=None]

The certificate extended key usage section must contain Client Authentication
( 1.3.6.1.5.5.7.3.2 ), Server Authentication ( 1.3.6.1.5.5.7.3.1 ), and KDC
Authentication ( 1.3.6.1.5.2.3.5 )
The certificate Subject Alternative Name section must contain the Domain
Name System (DNS) name
The certificate template must have an extension that has the value
DomainController , encoded as a BMPstring. If you are using Windows Server

Enterprise Certificate Authority, this extension is already included in the


domain controller certificate template
The domain controller certificate must be installed in the local computer's
certificate store

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates > Manage
3. In the Certificate Template Console, right-click the Kerberos Authentication
template in the details pane and select Duplicate Template
4. On the Compatibility tab:
Clear the Show resulting changes check box
Select Windows Server 2016 from the Certification Authority list
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list

5. On the General tab

Type Domain Controller Authentication (Kerberos) in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

7 Note

If you use different template names, you'll need to remember and substitute
these names in different portions of the lab.

6. On the Subject Name tab:

Select the Build from this Active Directory information button if it isn't
already selected
Select None from the Subject name format list
Select DNS name from the Include this information in alternate subject list
Clear all other items

7. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

8. Select OK
9. Close the console

7 Note

Inclusion of the KDC Authentication OID in domain controller certificate is not


required for hybrid Azure AD-joined devices. The OID is required for enabling
authentication with Windows Hello for Business to on-premises resources by Azure
AD-joined devices.

) Important

For Azure AD joined devices to authenticate to on-premises resources, ensure to:


Install the root CA certificate in the device's trusted root certificate store. See
how to deploy a trusted certificate profile via Intune
Publish your certificate revocation list to a location that is available to Azure
AD-joined devices, such as a web-based URL

Supersede existing domain controller certificates


The domain controllers may have an existing domain controller certificate. The Active
Directory Certificate Services provides a default certificate template for domain
controllers called domain controller certificate. Later releases of Windows Server
provided a new certificate template called domain controller authentication certificate.
These certificate templates were provided prior to the update of the Kerberos
specification that stated Key Distribution Centers (KDCs) performing certificate
authentication needed to include the KDC Authentication extension.

The Kerberos Authentication certificate template is the most current certificate template
designated for domain controllers, and should be the one you deploy to all your domain
controllers.
The autoenrollment feature allows you to replace the domain controller certificates. Use
the following configuration to replace older domain controller certificates with new
ones, using the Kerberos Authentication certificate template.

Sign in to a CA or management workstations with Enterprise Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates > Manage
3. In the Certificate Template Console, right-click the Domain Controller
Authentication (Kerberos) (or the name of the certificate template you created in
the previous section) template in the details pane and select Properties
4. Select the Superseded Templates tab. Select Add
5. From the Add Superseded Template dialog, select the Domain Controller
certificate template and select OK > Add
6. From the Add Superseded Template dialog, select the Domain Controller
Authentication certificate template and select OK
7. From the Add Superseded Template dialog, select the Kerberos Authentication
certificate template and select OK
8. Add any other enterprise certificate templates that were previously configured for
domain controllers to the Superseded Templates tab
9. Select OK and close the Certificate Templates console
The certificate template is configured to supersede all the certificate templates provided
in the superseded templates list.
However, the certificate template and the superseding of certificate templates isn't
active until the template is published to one or more certificate authorities.

7 Note

The domain controller's certificate must chain to a root in the NTAuth store. By
default, the Active Directory Certificate Authority's root certificate is added to the
NTAuth store. If you are using a third-party CA, this may not be done by default. If
the domain controller certificate does not chain to a root in the NTAuth store, user
authentication will fail. To see all certificates in the NTAuth store, use the following
command:

Certutil -viewstore -enterprise NTAuth

Configure an enrollment agent certificate template


A certificate registration authority (CRA) is a trusted authority that validates certificate
request. Once it validates the request, it presents the request to the certification
authority (CA) for issuance. The CA issues the certificate, returns it to the CRA, which
returns the certificate to the requesting user. Windows Hello for Business certificate trust
deployments use AD FS as the CRA.

The CRA enrolls for an enrollment agent certificate. Once the CRA verifies the certificate
request, it signs the certificate request using its enrollment agent certificate and sends it
to the CA. The Windows Hello for Business Authentication certificate template is
configured to only issue certificates to certificate requests that have been signed with an
enrollment agent certificate. The CA only issues a certificate for that template if the
registration authority signs the certificate request.

) Important

Follow the procedures below based on the AD FS service account used in your
environment.

Create an enrollment agent certificate for Group Managed Service


Accounts (GMSA)
Sign in to a CA or management workstations with Domain Administrator equivalent
credentials.

1. Open the Certification Authority management console

2. Right-click Certificate Templates and select Manage

3. In the Certificate Template Console, right-click on the Exchange Enrollment Agent


(Offline request) template details pane and select Duplicate Template

4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list.
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list

5. On the General tab:

Type WHFB Enrollment Agent in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

6. On the Subject tab, select the Supply in the request button if it isn't already
selected

7 Note

Group Managed Service Accounts (GMSA) do not support the Build from this
Active Directory information option and will result in the AD FS server failing
to enroll the enrollment agent certificate. You must configure the certificate
template with Supply in the request to ensure that AD FS servers can perform
the automatic enrollment and renewal of the enrollment agent certificate.

7. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

8. On the Security tab, select Add

9. Select Object Types and select the Service Accounts check box. Select OK

10. Type adfssvc in the Enter the object names to select text box and select OK
11. Select the adfssvc from the Group or users names list. In the Permissions for
adfssvc section:

In the Permissions for adfssvc section, select the Allow check box for the
Enroll permission
Excluding the adfssvc user, clear the Allow check box for the Enroll and
Autoenroll permissions for all other items in the Group or users names list
Select OK

12. Close the console

Create an enrollment agent certificate for a standard service


account

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates and select Manage
3. In the Certificate Template Console, right-click on the Exchange Enrollment Agent
(Offline request) template details pane and select Duplicate Template
4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list.
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list

5. On the General tab:

Type WHFB Enrollment Agent in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

6. On the Subject tab:

Select the Build from this Active Directory information button


Select Fully distinguished name from the Subject name format
Select the User Principal Name (UPN) check box under Include this
information in alternative subject name

7. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

8. On the Security tab, select Add


9. Select Object Types and select the Service Accounts check box. Select OK
10. Type adfssvc in the Enter the object names to select text box and select OK
11. Select the adfssvc from the Group or users names list. In the Permissions for
adfssvc section:

In the Permissions for adfssvc section, select the Allow check box for the
Enroll permission
Excluding the adfssvc user, clear the Allow check box for the Enroll and
Autoenroll permissions for all other items in the Group or users names list
Select OK

12. Close the console

Configure a Windows Hello for Business authentication


certificate template
During Windows Hello for Business provisioning, Windows clients request an
authentication certificate from AD FS, which requests the authentication certificate on
behalf of the user. This task configures the Windows Hello for Business authentication
certificate template.

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates and select Manage
3. Right-click the Smartcard Logon template and choose Duplicate Template
4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list

5. On the General tab:

Type WHFB Authentication in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

7 Note
If you use different template names, you'll need to remember and substitute
these names in different portions of the deployment.

6. On the Cryptography tab

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

7. On the Extensions tab, verify the Application Policies extension includes Smart
Card Logon
8. On the Issuance Requirements tab,

Select the This number of authorized signatures check box. Type 1 in the
text box
Select Application policy from the Policy type required in signature
Select Certificate Request Agent from in the Application policy list
Select the Valid existing certificate option

9. On the Subject tab,

Select the Build from this Active Directory information button


Select Fully distinguished name from the Subject name format list
Select the User Principal Name (UPN) check box under Include this
information in alternative subject name

10. On the Request Handling tab, select the Renew with same key check box
11. On the Security tab, select Add. Target an Active Directory security group that
contains the users that you want to enroll in Windows Hello for Business. For
example, if you have a group called Window Hello for Business Users, type it in the
Enter the object names to select text box and select OK
12. Select the Windows Hello for Business Users from the Group or users names list.
In the Permissions for Windows Hello for Business Users section:

Select the Allow check box for the Enroll permission


Excluding the group above (for example, Window Hello for Business Users),
clear the Allow check box for the Enroll and Autoenroll permissions for all
other entries in the Group or users names section if the check boxes aren't
already cleared
Select OK

13. If you previously issued Windows Hello for Business sign-in certificates using
Configuration Manger and are switching to an AD FS registration authority, then
on the Superseded Templates tab, add the previously used Windows Hello for
Business Authentication template(s), so they'll be superseded by this template for
the users that have Enroll permission for this template
14. Select on the Apply to save changes and close the console

Mark the template as the Windows Hello Sign-in template

Sign in to a CA or management workstations with Enterprise Administrator equivalent


credentials

Open an elevated command prompt end execute the following command

Windows Command Prompt

certutil.exe -dsTemplate WHFBAuthentication msPKI-Private-Key-Flag


+CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY

If the template was changed successfully, the output of the command will contain old
and new values of the template parameters. The new value must contain the
CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY parameter. Example:

Windows Command Prompt

CN=Certificate Templates,CN=Public Key


Services,CN=Services,CN=Configuration,DC=[yourdomain]:WHFBAuthentication

Old Value:
msPKI-Private-Key-Flag REG_DWORD = 5050080 (84213888)
CTPRIVATEKEY_FLAG_REQUIRE_SAME_KEY_RENEWAL -- 80 (128)
CTPRIVATEKEY_FLAG_ATTEST_NONE -- 0
TEMPLATE_SERVER_VER_WINBLUE<<CTPRIVATEKEY_FLAG_SERVERVERSION_SHIFT -- 50000
(327680)
TEMPLATE_CLIENT_VER_WINBLUE<<CTPRIVATEKEY_FLAG_CLIENTVERSION_SHIFT --
5000000 (83886080)

New Value:
msPKI-Private-Key-Flag REG_DWORD = 5250080 (86311040)
CTPRIVATEKEY_FLAG_REQUIRE_SAME_KEY_RENEWAL -- 80 (128)
CTPRIVATEKEY_FLAG_ATTEST_NONE -- 0
TEMPLATE_SERVER_VER_WINBLUE<<CTPRIVATEKEY_FLAG_SERVERVERSION_SHIFT -- 50000
(327680)
CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY -- 200000 (2097152)
TEMPLATE_CLIENT_VER_WINBLUE<<CTPRIVATEKEY_FLAG_CLIENTVERSION_SHIFT --
5000000 (83886080)
CertUtil: -dsTemplate command completed successfully."

7 Note
If you gave your Windows Hello for Business Authentication certificate template a
different name, then replace WHFBAuthentication in the above command with the
name of your certificate template. It's important that you use the template name
rather than the template display name. You can view the template name on the
General tab of the certificate template using the Certificate Template management
console (certtmpl.msc). Or, you can view the template name using the Get-
CATemplate ADCS Administration Windows PowerShell cmdlet on your certification
authority.

Unpublish Superseded Certificate Templates


The certification authority only issues certificates based on published certificate
templates. For security, it's a good practice to unpublish certificate templates that the
CA isn't configured to issue, including the pre-published templates from the role
installation and any superseded templates.

The newly created domain controller authentication certificate template supersedes


previous domain controller certificate templates. Therefore, you need to unpublish these
certificate templates from all issuing certificate authorities.

Sign in to the CA or management workstation with Enterprise Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Expand the parent node from the navigation pane > Certificate Templates
3. Right-click the Domain Controller certificate template and select Delete. Select Yes
on the Disable certificate templates window
4. Repeat step 3 for the Domain Controller Authentication and Kerberos
Authentication certificate templates

Publish the certificate templates to the CA


A certification authority can only issue certificates for certificate templates that are
published to it. If you have more than one CA, and you want more CAs to issue
certificates based on the certificate template, then you must publish the certificate
template to them.

Sign in to the CA or management workstations with Enterprise Admin equivalent


credentials.

1. Open the Certification Authority management console


2. Expand the parent node from the navigation pane
3. Select Certificate Templates in the navigation pane
4. Right-click the Certificate Templates node. Select New > Certificate Template to
issue
5. In the Enable Certificates Templates window, select the Domain Controller
Authentication (Kerberos), WHFB Enrollment Agent and WHFB Authentication
templates you created in the previous steps > select OK
6. Close the console

) Important

If you plan to deploy Azure AD joined devices, and require single sign-on (SSO) to
on-premises resources when signing in with Windows Hello for Business, follow the
procedures to update your CA to include an http-based CRL distribution point.

Configure and deploy certificates to domain


controllers

Configure automatic certificate enrollment for the


domain controllers
Domain controllers automatically request a certificate from the Domain controller
certificate template. However, domain controllers are unaware of newer certificate
templates or superseded configurations on certificate templates. For domain controllers
to automatically enroll and renew of certificates, configure a GPO for automatic
certificate enrollment, and link it to the Domain Controllers OU.

1. Open the Group Policy Management Console (gpmc.msc)


2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Right-click Group Policy object and select New
4. Type Domain Controller Auto Certificate Enrollment in the name box and select OK
5. Right-click the Domain Controller Auto Certificate Enrollment Group Policy object
and select Edit
6. In the navigation pane, expand Policies under Computer Configuration
7. Expand Windows Settings > Security Settings > Public Key Policies
8. In the details pane, right-click Certificate Services Client - Auto-Enrollment and
select Properties
9. Select Enabled from the Configuration Model list
10. Select the Renew expired certificates, update pending certificates, and remove
revoked certificates check box
11. Select the Update certificates that use certificate templates check box
12. Select OK
13. Close the Group Policy Management Editor

Deploy the domain controller auto certificate enrollment


GPO
Sign in to domain controller or management workstations with Domain Administrator
equivalent credentials.

1. Start the Group Policy Management Console (gpmc.msc)


2. In the navigation pane, expand the domain and expand the node with the Active
Directory domain name. Right-click the Domain Controllers organizational unit
and select Link an existing GPO…
3. In the Select GPO dialog box, select Domain Controller Auto Certificate Enrollment
or the name of the domain controller certificate enrollment Group Policy object
you previously created
4. Select OK

Validate the configuration


Windows Hello for Business is a distributed system, which on the surface appears
complex and difficult. The key to a successful deployment is to validate phases of work
prior to moving to the next phase.

Confirm your domain controllers enroll the correct certificates and not any superseded
certificate templates. Check that each domain controller completed the certificate
autoenrollment.

Use the event logs


Sign in to domain controller or management workstations with Domain Administrator
equivalent credentials.

1. Using the Event Viewer, navigate to the Application and Services > Microsoft >
Windows > CertificateServices-Lifecycles-System event log
2. Look for an event indicating a new certificate enrollment (autoenrollment):
The details of the event include the certificate template on which the
certificate was issued
The name of the certificate template used to issue the certificate should
match the certificate template name included in the event
The certificate thumbprint and EKUs for the certificate are also included in the
event
The EKU needed for proper Windows Hello for Business authentication is
Kerberos Authentication, in addition to other EKUs provide by the certificate
template

Certificates superseded by your new domain controller certificate generate an archive


event in the event log. The archive event contains the certificate template name and
thumbprint of the certificate that was superseded by the new certificate.

Certificate Manager
You can use the Certificate Manager console to validate the domain controller has the
properly enrolled certificate based on the correct certificate template with the proper
EKUs. Use certlm.msc to view certificate in the local computers certificate stores. Expand
the Personal store and view the certificates enrolled for the computer. Archived
certificates don't appear in Certificate Manager.

Certutil.exe
You can use certutil.exe command to view enrolled certificates in the local computer.
Certutil shows enrolled and archived certificates for the local computer. From an
elevated command prompt, run certutil.exe -q -store my to view locally enrolled
certificates.

To view detailed information about each certificate in the store, use certutil.exe -q -v
-store my to validate automatic certificate enrollment enrolled the proper certificates.

Troubleshooting
Windows triggers automatic certificate enrollment for the computer during boot, and
when Group Policy updates. You can refresh Group Policy from an elevated command
prompt using gpupdate.exe /force .

Alternatively, you can forcefully trigger automatic certificate enrollment using


certreq.exe -autoenroll -q from an elevated command prompt.
Use the event logs to monitor certificate enrollment and archive. Review the
configuration, such as publishing certificate templates to issuing certification authority
and the allow auto enrollment permissions.

Section review and next steps


Before moving to the next section, ensure the following steps are complete:

" Configure domain controller certificates


" Supersede existing domain controller certificates
" Unpublish superseded certificate templates
" Configure an enrollment agent certificate template
" Configure an authentication certificate template
" Publish the certificate templates to the CA
" Deploy certificates to the domain controllers
" Validate the domain controllers configuration

Next: configure AD FS >


Configure Active Directory Federation
Services - hybrid certificate trust
Article • 03/16/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: certificate trust
Join type: Azure AD join , hybrid Azure AD join

The Windows Hello for Business certificate-based deployments use AD FS as the


certificate registration authority (CRA). The CRA is responsible for issuing and revoking
certificates to users. Once the registration authority verifies the certificate request, it
signs the certificate request using its enrollment agent certificate and sends it to the
certificate authority.
The CRA enrolls for an enrollment agent certificate, and the Windows Hello for Business
authentication certificate template is configured to only issue certificates to certificate
requests that have been signed with an enrollment agent certificate.

7 Note

In order for AD FS to verify user certificate requests for Windows Hello for Business,
it needs to be able to access the https://enterpriseregistration.windows.net
endpoint.

Configure the certificate registration authority


Sign-in the AD FS server with domain administrator equivalent credentials.

Open a Windows PowerShell prompt and type the following command:

PowerShell

Set-AdfsCertificateAuthority -EnrollmentAgent -
EnrollmentAgentCertificateTemplate WHFBEnrollmentAgent -
WindowsHelloCertificateTemplate WHFBAuthentication -
WindowsHelloCertificateProxyEnabled $true
7 Note

If you gave your Windows Hello for Business Enrollment Agent and Windows Hello
for Business Authentication certificate templates different names, then replace
WHFBEnrollmentAgent and WHFBAuthentication in the above command with the
name of your certificate templates. It's important that you use the template name
rather than the template display name. You can view the template name on the
General tab of the certificate template by using the Certificate Template
management console (certtmpl.msc). Or, you can view the template name by using
the Get-CATemplate PowerShell cmdlet on a CA.

Enrollment agent certificate enrollment


AD FS performs its own certificate lifecycle management. Once the registration authority
is configured with the proper certificate template, the AD FS server attempts to enroll
the certificate on the first certificate request or when the service first starts.

Approximately 60 days prior to enrollment agent certificate's expiration, the AD FS


service attempts to renew the certificate until it is successful. If the certificate fails to
renew, and the certificate expires, the AD FS server will request a new enrollment agent
certificate. You can view the AD FS event logs to determine the status of the enrollment
agent certificate.

Group Memberships for the AD FS service account


The AD FS service account must be member of the security group targeted by the
authentication certificate template auto-enrollment (e.g. Window Hello for Business
Users). The security group provides the AD FS service with the permissions needed to
enroll a Windows Hello for Business authentication certificate on behalf of the
provisioning user.

 Tip

The adfssvc account is the AD FS service account.

Sign-in a domain controller or management workstation with Domain Admin equivalent


credentials.
1. Open Active Directory Users and Computers
2. Search for the security group targeted by the authentication certificate template
auto-enrollment (e.g. Window Hello for Business Users)
3. Select the Members tab and select Add
4. In the Enter the object names to select text box, type adfssvc or substitute the
name of the AD FS service account in your AD FS deployment > OK
5. Select OK to return to Active Directory Users and Computers
6. Restart the AD FS server

7 Note

For AD FS 2019 in a hybrid certificate trust model, a PRT issue exists. You may
encounter this error in the AD FS Admin event logs: Received invalid Oauth request.
The client 'NAME' is forbidden to access the resource with scope 'ugs'. To remediate
this error:

1. Launch AD FS management console and browse to Services > Scope


Descriptions
2. Right click Scope Descriptions and select Add Scope Description
3. Under name type ugs and select Apply > OK
4. Launch PowerShell as an administrator
5. Obtain the ObjectIdentifier of the application permission with the
ClientRoleIdentifier parameter equal to 38aa3b87-a06d-4817-b275-

7a316988d93b :

PowerShell

(Get-AdfsApplicationPermission -ServerRoleIdentifiers
'http://schemas.microsoft.com/ws/2009/12/identityserver/selfscope' | ?{
$_.ClientRoleIdentifier -eq '38aa3b87-a06d-4817-b275-7a316988d93b'
}).ObjectIdentifier

1. Execute the command Set-AdfsApplicationPermission -TargetIdentifier


<ObjectIdentifier from step 5> -AddScope 'ugs' .

2. Restart the AD FS service


3. On the client: Restart the client. User should be prompted to provision
Windows Hello for Business

Section review and next steps


Before moving to the next section, ensure the following steps are complete:

" Configure the certificate registration authority


" Update group memberships for the AD FS service account

Next: configure policy settings >


Configure and provision Windows Hello
for Business - hybrid certificate trust
Article • 02/22/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: certificate trust
Join type: Azure AD join , hybrid Azure AD join

Policy Configuration
After the prerequisites are met and the PKI and AD FS configurations are validated,
Windows Hello for business must be enabled on the Windows devices. Follow the
instructions below to configure your devices using either Microsoft Intune or group
policy (GPO).

GPO

) Important

The information in this section applies to hybrid Azure AD joined devices only.

For hybrid Azure AD joined devices, you can use group policies to configure
Windows Hello for Business. It is suggested to create a security group (for example,
Windows Hello for Business Users) to make it easy to deploy Windows Hello for
Business in phases. You assign the Group Policy and Certificate template
permissions to this group to simplify the deployment by adding the users to the
group. This provides users with the proper permissions to provision Windows Hello
for Business and to enroll in the Windows Hello for Business authentication
certificate.

Enable Windows Hello for Business group policy


setting
The Enable Windows Hello for Business group policy setting is the configuration
needed for Windows to determine if a user should attempt to enroll for Windows
Hello for Business. A user will only attempt enrollment if this policy setting is
configured to enabled.
You can configure the Enable Windows Hello for Business setting for computer or
users:

Deploying this policy setting to computers (or group of computers) results in


all users that sign-in that computer to attempt a Windows Hello for Business
enrollment
Deploying this policy setting to a user (or group of users), results in only that
user attempting a Windows Hello for Business enrollment

If both user and computer policy settings are deployed, the user policy setting has
precedence.

Use certificate for on-premises authentication group


policy setting
The Use certificate for on-premises authentication group policy setting determines if
the deployment uses the key-trust or certificate trust authentication model. You
must configure this Group Policy setting to configure Windows to enroll for a
Windows Hello for Business authentication certificate. If you do not configure this
policy setting, Windows considers the deployment to use key-trust authentication.

Enable automatic enrollment of certificates group


policy setting
Windows Hello for Business provisioning performs the initial enrollment of the
Windows Hello for Business authentication certificate. This certificate expires based
on the duration configured in the Windows Hello for Business authentication
certificate template.

The process requires no user interaction, provided the user signs-in using Windows
Hello for Business. The certificate is renewed in the background before it expires.

Enable and configure Windows Hello for Business


Sign-in a domain controller or management workstations with Domain Admin
equivalent credentials.
1. Start the Group Policy Management Console (gpmc.msc)
2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Right-click Group Policy object and select New
4. Type Enable Windows Hello for Business in the name box and select OK
5. In the content pane, right-click the Enable Windows Hello for Business group
policy object and select Edit
6. In the navigation pane, expand Policies under User Configuration
7. Expand Administrative Templates > Windows Component, and select
Windows Hello for Business
8. In the content pane, open Use Windows Hello for Business. Select Enable >
OK
9. Open Use certificate for on-premises authentication. Select Enable > OK
10. Expand Windows Settings > Security Settings > Public Key Policies
11. In the details pane, right-click Certificate Services Client - Auto-Enrollment
and select Properties
12. Select Enabled from the Configuration Model list
13. Select the Renew expired certificates, update pending certificates, and
remove revoked certificates check boxes
14. Select the Update certificates that use certificate templates check box
15. Select OK
16. Close the Group Policy Management Editor

7 Note

Windows Hello for Business can be configured using different policies. These
policies are optional to configure, but it's recommended to enable Use a
hardware security device.

For more information about these policies, see Group Policy settings for
Windows Hello for Business.

Configure security for GPO


The best way to deploy the Windows Hello for Business GPO is to use security
group filtering. Only members of the targeted security group will provision
Windows Hello for Business, enabling a phased rollout.

1. Start the Group Policy Management Console (gpmc.msc)


2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Open the Enable Windows Hello for Business GPO
4. In the Security Filtering section of the content pane, select Add. Type the
name of the security group you previously created (for example, Windows
Hello for Business Users) and select OK
5. Select the Delegation tab. Select Authenticated Users > Advanced
6. In the Group or User names list, select Authenticated Users. In the
Permissions for Authenticated Users list, clear the Allow check box for the
Apply Group Policy permission. Select OK

Deploy the Windows Hello for Business Group Policy


object
The application of Group Policy object uses security group filtering. This solution
allows linking the GPO to the domain, ensuring the GPO is scoped to all users. The
security group filtering ensures that only the members of the Windows Hello for
Business Users global group receive and apply the GPO, which results in the
provisioning of Windows Hello for Business.

1. Start the Group Policy Management Console (gpmc.msc)


2. In the navigation pane, expand the domain and right-click the node that has
your Active Directory domain name and select Link an existing GPO
3. In the Select GPO dialog box, select Enable Windows Hello for Business or the
name of the Windows Hello for Business Group Policy object you previously
created and select OK

Add members to the targeted group


Users (or devices) must receive the Windows Hello for Business group policy
settings and have the proper permission to provision Windows Hello for Business.
You can provide users with these settings and permissions by adding members to
the Windows Hello for Business Users group. Users and groups who aren't members
of this group won't attempt to enroll for Windows Hello for Business.

Enroll in Windows Hello for Business


The Windows Hello for Business provisioning process begins immediately after the user
profile is loaded and before the user receives their desktop. For the provisioning process
to begin, all prerequisite checks must pass.
You can determine the status of the prerequisite checks by viewing the User Device
Registration admin log under Applications and Services Logs > Microsoft > Windows.
This information is also available using the dsregcmd /status command from a console.
For more information, see dsregcmd.

PIN Setup
This is the process that occurs after a user signs in, to enroll in Windows Hello for
Business:

1. The user is prompted with a full screen page to use Windows Hello with the
organization account. The user selects OK
2. The provisioning flow proceeds to the multi-factor authentication portion of the
enrollment. Provisioning informs the user that it's actively attempting to contact
the user through their configured form of MFA. The provisioning process doesn't
proceed until authentication succeeds, fails or times out. A failed or timeout MFA
results in an error and asks the user to retry
3. After a successful MFA, the provisioning flow asks the user to create and validate a
PIN. This PIN must observe any PIN complexity policies configured on the device
4. The remainder of the provisioning includes Windows Hello for Business requesting
an asymmetric key pair for the user, preferably from the TPM (or required if
explicitly set through policy). Once the key pair is acquired, Windows
communicates with Azure Active Directory to register the public key. When key
registration completes, Windows Hello for Business provisioning informs the user
they can use their PIN to sign-in. The user may close the provisioning application
and see their desktop. While the user has completed provisioning, Azure AD
Connect synchronizes the user's key to Active Directory
) Important

The following is the enrollment behavior prior to Windows Server 2016 update
KB4088889 (14393.2155) .

The minimum time needed to synchronize the user's public key from Azure Active
Directory to the on-premises Active Directory is 30 minutes. The Azure AD Connect
scheduler controls the synchronization interval. This synchronization latency
delays the user's ability to authenticate and use on-premises resources until the
user's public key has synchronized to Active Directory. Once synchronized, the
user can authenticate and use on-premises resources. Read Azure AD Connect
sync: Scheduler to view and adjust the synchronization cycle for your organization.

7 Note

Windows Server 2016 update KB4088889 (14393.2155) provides synchronous


certificate enrollment during hybrid certificate trust provisioning. With this update,
users no longer need to wait for Azure AD Connect to sync their public key on-
premises. Users enroll their certificate during provisioning and can use the
certificate for sign-in immediately after completing the provisioning. The update
needs to be installed on the federation servers.

After a successful key registration, Windows creates a certificate request using the same
key pair to request a certificate. Windows send the certificate request to the AD FS
server for certificate enrollment.
The AD FS registration authority verifies the key used in the certificate request matches
the key that was previously registered. On a successful match, the AD FS registration
authority signs the certificate request using its enrollment agent certificate and sends it
to the certificate authority.

7 Note

In order for AD FS to verify the key used in the certificate request, it needs to be
able to access the https://enterpriseregistration.windows.net endpoint.

The certificate authority validates the certificate was signed by the registration authority.
On successful validation of the signature, it issues a certificate based on the request and
returns the certificate to the AD FS registration authority. The registration authority
returns the certificate to Windows where it then installs the certificate in the current
user's certificate store. Once this process completes, the Windows Hello for Business
provisioning workflow informs the user that they can use their PIN to sign-in through
the Windows Action Center.
Configure single sign-on for Azure AD
joined devices
Article • 02/22/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: key trust , certificate trust
Join type: Azure AD join

Windows Hello for Business combined with Azure AD-joined devices makes it easy for
users to securely access cloud-based resources using a strong, two-factor credential.
Some resources may remain on-premises as enterprises transition resources to the
cloud and Azure AD-joined devices may need to access these resources. With additional
configurations to the hybrid deployment, you can provide single sign-on to on-premises
resources for Azure AD-joined devices using Windows Hello for Business, using a key or
a certificate.

7 Note

These steps are not needed when using the cloud Kerberos trust model.

Prerequisites
Unlike hybrid Azure AD-joined devices, Azure AD-joined devices don't have a
relationship with your Active Directory domain. This factor changes the way in which
users authenticate to Active Directory. Validate the following configurations to ensure
they support Azure AD-joined devices:

" Certificate Revocation List (CRL) Distribution Point


" Domain controller certificates
" Network infrastructure in place to reach the on-premises domain controllers. If the
machines are external, you can use any VPN solution

CRL Distribution Point (CDP)


Certificates issued by a certificate authority can be revoked. When a certificate authority
revokes as certificate, it writes information about the certificate into a certificate
revocation list (CRL).
During certificate validation, Windows compares the current certificate with information
in the CRL to determine if the certificate is valid.

The preceding domain controller certificate shows a CRL distribution point (CDP) in
Active Directory. The value in the URL begins with ldap. Using Active Directory for
domain joined devices provides a highly available CRL distribution point. However,
Azure AD joined devices can't read data from Active Directory, and certificate validation
doesn't provide an opportunity to authenticate prior to reading the CRL. The
authentication becomes a circular problem: the user is attempting to authenticate, but
must read Active Directory to complete the authentication, but the user can't read
Active Directory because they haven't authenticated.

To resolve this issue, the CRL distribution point must be a location accessible by Azure
AD joined devices that doesn't require authentication. The easiest solution is to publish
the CRL distribution point on a web server that uses HTTP (not HTTPS).
If your CRL distribution point doesn't list an HTTP distribution point, then you need to
reconfigure the issuing certificate authority to include an HTTP CRL distribution point,
preferably first, in the list of distribution points.

7 Note

If your CA has published both the Base and the Delta CRL, make sure to publish the
Delta CRL in the HTTP path. Include web server to fetch the Delta CRL by allowing
double escaping in the (IIS) web server.

Domain controller certificates


Certificate authorities write CDP information in certificates as they're issued. If the
distribution point changes, then previously issued certificates must be reissued for the
certificate authority to include the new CDP. The domain controller certificate is one the
critical components of Azure AD-joined devices authenticating to Active Directory.

Why does Windows need to validate the domain controller


certificate?
Windows Hello for Business enforces the strict KDC validation security feature when
authenticating from an Azure AD joined device to a domain. This enforcement imposes
more restrictive criteria that must be met by the Key Distribution Center (KDC). When
authenticating using Windows Hello for Business on an Azure AD joined device, the
Windows client validates the reply from the domain controller by ensuring all of the
following are met:

The domain controller has the private key for the certificate provided
The root CA that issued the domain controller's certificate is in the device's Trusted
Root Certificate Authorities
Use the Kerberos Authentication certificate template instead of any other older
template
The domain controller's certificate has the KDC Authentication extended key usage
(EKU)
The domain controller's certificate's subject alternate name has a DNS Name that
matches the name of the domain
The domain controller's certificate's signature hash algorithm is sha256
The domain controller's certificate's public key is RSA (2048 Bits)
Authenticating from a Hybrid Azure AD joined device to a domain using Windows Hello
for Business doesn't enforce that the domain controller certificate includes the KDC
Authentication EKU. If you're adding Azure AD-joined devices to an existing domain
environment, make sure to verify that your domain controller certificate has been
updated to include the KDC Authentication EKU.

Configure a CRL distribution point for an


issuing CA
Use this set of procedures to update the CA that issues domain controller certificates to
include an http-based CRL distribution point.

Configure Internet Information Services to host CRL


distribution point
You need to host your new certificate revocation list on a web server so Azure AD-joined
devices can easily validate certificates without authentication. You can host these files on
web servers many ways. The following steps are just one and may be useful for admins
unfamiliar with adding a new CRL distribution point.

) Important

Do not configure the IIS server hosting your CRL distribution point to use https or a
server authentication certificate. Clients should access the distribution point using
http.

Install the web server


1. Sign-in to your server as a local administrator and start Server Manager if it didn't
start during your sign in
2. Select the Local Server node in the navigation pane. Select Manage and select
Add Roles and Features
3. In the Add Role and Features Wizard, select Server Selection. Verify the selected
server is the local server. Select Server Roles. Select the check box next to Web
Server (IIS)
4. Select Next through the remaining options in the wizard, accepting the defaults,
and install the Web Server role
Configure the web server
1. From Windows Administrative Tools, Open Internet Information Services (IIS)
Manager

2. Expand the navigation pane to show Default Web Site. Select and then right-click
Default Web site and select Add Virtual Directory...

3. In the Add Virtual Directory dialog box, type cdp in alias. For physical path, type
or browse for the physical file location where you'll host the certificate revocation
list. For this example, the path c:\cdp is used. Select OK

7 Note

Make note of this path as you will use it later to configure share and file
permissions.

4. Select CDP under Default Web Site in the navigation pane. Open Directory
Browsing in the content pane. Select Enable in the details pane

5. Select CDP under Default Web Site in the navigation pane. Open Configuration
Editor
6. In the Section list, navigate to system.webServer/security/requestFiltering

7. In the list of named value-pairs in the content pane, configure


allowDoubleEscaping to True. Select Apply in the actions pane

8. Close Internet Information Services (IIS) Manager


Create a DNS resource record for the CRL distribution
point URL
1. On your DNS server or from an administrative workstation, open DNS Manager
from Administrative Tools
2. Expand Forward Lookup Zones to show the DNS zone for your domain. Right-click
your domain name in the navigation pane and select New Host (A or AAAA)...
3. In the New Host dialog box, type crl in Name. Type the IP address of the web
server you configured in IP Address. Select Add Host. Select OK to close the DNS
dialog box. Select Done

4. Close the DNS Manager

Prepare a file share to host the certificate revocation list


These procedures configure NTFS and share permissions on the web server to allow the
certificate authority to automatically publish the certificate revocation list.

Configure the CDP file share


1. On the web server, open Windows Explorer and navigate to the cdp folder you
created in step 3 of Configure the Web Server
2. Right-click the cdp folder and select Properties. Select the Sharing tab. Select
Advanced Sharing
3. Select Share this folder. Type cdp$ in Share name. Select Permissions

4. In the Permissions for cdp$ dialog box, select Add


5. In the Select Users, Computers, Service Accounts, or Groups dialog box, select
Object Types. In the Object Types dialog box, select Computers, and then select
OK
6. In the Select Users, Computers, Service Accounts, or Groups dialog box, in Enter
the object names to select, type the name of the server running the certificate
authority issuing the certificate revocation list, and then select Check Names.
Select OK
7. In the Permissions for cdp$ dialog box, select the certificate authority from the
Group or user names list. In the Permissions for section, select Allow for Full
control. Select OK

8. In the Advanced Sharing dialog box, select OK

 Tip

Make sure that users can access \\Server FQDN\sharename.

Disable Caching
1. On the web server, open Windows Explorer and navigate to the cdp folder you
created in step 3 of Configure the Web Server
2. Right-click the cdp folder and select Properties. Select the Sharing tab. Select
Advanced Sharing
3. Select Caching. Select No files or programs from the shared folder are available
offline
4. Select OK

Configure NTFS permission for the CDP folder


1. On the web server, open Windows Explorer and navigate to the cdp folder you
created in step 3 of Configure the Web Server
2. Right-click the cdp folder and select Properties. Select the Security tab
3. On the Security tab, select Edit
4. In the Permissions for cdp dialog box, select Add

5. In the Select Users, Computers, Service Accounts, or Groups dialog box, select
Object Types. In the Object Types dialog box, select Computers. Select OK
6. In the Select Users, Computers, Service Accounts, or Groups dialog box, in Enter
the object names to select, type the name of the certificate authority, and then
select Check Names. Select OK
7. In the Permissions for cdp dialog box, select the name of the certificate authority
from the Group or user names list. In the Permissions for section, select Allow for
Full control. Select OK
8. Select Close in the cdp Properties dialog box

Configure the new CDP and publishing location in the


issuing CA
The web server is ready to host the CRL distribution point. Now, configure the issuing
certificate authority to publish the CRL at the new location and to include the new CRL
distribution point.

Configure the CRL distribution Point


1. On the issuing certificate authority, sign-in as a local administrator. Start the
Certification Authority console from Administrative Tools
2. In the navigation pane, right-click the name of the certificate authority and select
Properties
3. Select Extensions. On the Extensions tab, select CRL Distribution Point (CDP) from
the Select extension list
4. On the Extensions tab, select Add. Type http://crl.[domainname]/cdp/ in location.
For example, <http://crl.corp.contoso.com/cdp/> or
<http://crl.contoso.com/cdp/> (don't forget the trailing forward slash)

5. Select <CaName> from the Variable list and select Insert. Select
<CRLNameSuffix> from the Variable list and select Insert. Select
<DeltaCRLAllowed> from the Variable list and select Insert
6. Type .crl at the end of the text in Location. Select OK
7. Select the CDP you just created

8. Select Include in CRLs. Clients use this to find Delta CRL locations
9. Select Include in the CDP extension of issued certificates
10. Select Apply save your selections. Select No when ask to restart the service

7 Note

Optionally, you can remove unused CRL distribution points and publishing
locations.

Configure the CRL publishing location


1. On the issuing certificate authority, sign-in as a local administrator. Start the
Certificate Authority console from Administrative Tools
2. In the navigation pane, right-click the name of the certificate authority and select
Properties
3. Select Extensions. On the Extensions tab, select CRL Distribution Point (CDP) from
the Select extension list
4. On the Extensions tab, select Add. Type the computer and share name you create
for your CRL distribution point in Configure the CDP file share. For example,
\\app\cdp$\ (don't forget the trailing backwards slash)
5. Select <CaName> from the Variable list and select Insert. Select
<CRLNameSuffix> from the Variable list and select Insert. Select
<DeltaCRLAllowed> from the Variable list and select Insert
6. Type .crl at the end of the text in Location. Select OK
7. Select the CDP you just created

8. Select Publish CRLs to this location


9. Select Publish Delta CRLs to this location
10. Select Apply save your selections. Select Yes when ask to restart the service. Select
OK to close the properties dialog box

Publish a new CRL


1. On the issuing certificate authority, sign-in as a local administrator. Start the
Certificate Authority console from Administrative Tools
2. In the navigation pane, right-click Revoked Certificates, hover over All Tasks, and
select Publish
3. In the Publish CRL dialog box, select New CRL and select OK

Validate CDP Publishing


Validate the new CRL distribution point is working.

1. Open a web browser. Navigate to http://crl.[yourdomain].com/cdp . You should


see two files created from publishing the new CRL
Reissue domain controller certificates

With the CA properly configured with a valid HTTP-based CRL distribution point, you
need to reissue certificates to domain controllers as the old certificate doesn't have the
updated CRL distribution point.

1. Sign-in a domain controller using administrative credentials


2. Open the Run dialog box. Type certlm.msc to open the Certificate Manager for
the local computer
3. In the navigation pane, expand Personal. Select Certificates. In the details pane,
select the existing domain controller certificate that includes KDC Authentication
in the list of Intended Purposes

4. Right-click the selected certificate. Hover over All Tasks and then select Renew
Certificate with New Key.... In the Certificate Enrollment wizard, select Next

5. In the Request Certificates page of the wizard, verify the selected certificate has
the correct certificate template and ensure the status is available. Select Enroll
6. After the enrollment completes, select Finish to close the wizard
7. Repeat this procedure on all your domain controllers

7 Note

You can configure domain controllers to automatically enroll and renew their
certificates. Automatic certificate enrollment helps prevent authentication outages
due to expired certificates. Refer to the Windows Hello Deployment Guides to
learn how to deploy automatic certificate enrollment for domain controllers.

) Important

If you are not using automatic certificate enrollment, create a calendar reminder to
alert you two months before the certificate expiration date. Send the reminder to
multiple people in the organization to ensure more than one or two people know
when these certificates expire.

Validate CDP in the new certificate


1. Sign-in a domain controller using administrative credentials
2. Open the Run dialog box. Type certlm.msc to open the Certificate Manager for
the local computer
3. In the navigation pane, expand Personal. Select Certificates. In the details pane,
double-click the existing domain controller certificate includes KDC Authentication
in the list of Intended Purposes
4. Select the Details tab. Scroll down the list until CRL Distribution Points is visible in
the Field column of the list. Select CRL Distribution Point
5. Review the information below the list of fields to confirm the new URL for the CRL
distribution point is present in the certificate. Select OK
Deploy the root CA certificate to Azure AD-
joined devices
The domain controllers have a certificate that includes the new CRL distribution point.
Next, you need the enterprise root certificate so you can deploy it to Azure AD-joined
devices. When you deploy the enterprise root certificates to a device, it ensures the
device trusts any certificates issued by the certificate authority. Without the certificate,
Azure AD-joined devices don't trust domain controller certificates and authentication
fails.

Export the enterprise root certificate


1. Sign-in a domain controller using administrative credentials
2. Open the Run dialog box. Type certlm.msc to open the Certificate Manager for
the local computer
3. In the navigation pane, expand Personal. Select Certificates. In the details pane,
double-click the existing domain controller certificate includes KDC Authentication
in the list of Intended Purposes
4. Select the Certification Path tab. In the Certification path view, select the topmost
node and select View Certificate

5. In the new Certificate dialog box, select the Details tab. Select Copy to File

6. In the Certificate Export Wizard, select Next


7. On the Export File Format page of the wizard, select Next
8. On the File to Export page in the wizard, type the name and location of the root
certificate and select Next. Select Finish and then select OK to close the success
dialog box

9. Select OK two times to return to the Certificate Manager for the local computer.
Close the Certificate Manager

Deploy the certificate via Intune


To configure devices with Microsoft Intune, use a custom policy:

1. Go to the Microsoft Intune admin center


2. Select Devices > Configuration profiles > Create profile
3. Select Platform > Windows 8.1 and later and Profile type > Trusted certificate
4. Select Create
5. In Configuration settings, select the folder icon and browse for the enterprise root
certificate file. Once the file is selected, select Open to upload it to Intune
6. Under Destination store dropdown, select Computer certificate store - Root
7. Select Next
8. Under Assignment, select a security group that contains as members the devices
or users that you want to configure > Next
9. Review the policy configuration and select Create

If you plan on using certificates for on-premises single-sign on, perform the additional
steps in Using Certificates for On-premises Single-sign On. Otherwise, you can sign in to
an Azure AD joined device with Windows Hello for Business and test SSO to an on-
premises resource.
Using Certificates for AADJ On-premises
Single-sign On
Article • 02/22/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: certificate trust
Join type: Azure AD join

If you plan to use certificates for on-premises single-sign on, then follow these
additional steps to configure the environment to enroll Windows Hello for Business
certificates for Azure AD-joined devices.

) Important

Ensure you have performed the configurations in Azure AD-joined devices for On-
premises Single-Sign On before you continue.

Steps you'll perform include:

Prepare Azure AD Connect


Prepare the Network Device Enrollment Services Service Account
Prepare Active Directory Certificate Services
Install the Network Device Enrollment Services Role
Configure Network Device Enrollment Services to work with Microsoft Intune
Download, Install and Configure the Intune Certificate Connector
Create and Assign a Simple Certificate Enrollment Protocol (SCEP) Certificate
Profile

Requirements
You need to install and configure additional infrastructure to provide Azure AD-joined
devices with on-premises single-sign on.

An existing Windows Server 2012 R2 or later Enterprise Certificate Authority


A Windows Server 2012 R2 domain joined server that hosts the Network Device
Enrollment Services role
High Availability
The Network Device Enrollment Services (NDES) server role acts as a certificate
registration authority. Certificate registration servers enroll certificates on behalf of the
user. Users request certificates from the NDES service rather than directly from the
issuing certificate authority.

The architecture of the NDES server prevents it from being clustered or load balanced
for high availability. To provide high availability, you need to install more than one
identically configured NDES servers, and use Microsoft Intune to load balance then (in
round-robin fashion).

The Network Device Enrollment Service (NDES) server role can issue up to three unique
certificate templates. The server role accomplishes this by mapping the purpose of the
certificate request to a configured certificate template. The certificate request purpose
has three options:

Signature
Encryption
Signature and Encryption

If you need to deploy more than three types of certificates to the Azure AD joined
device, you need additional NDES servers. Alternatively, consider consolidating
certificate templates to reduce the number of certificate templates.

Network Requirements
All communication occurs securely over port 443.

Prepare Azure AD Connect


Successful authentication to on-premises resources using a certificate requires the
certificate to provide a hint about the on-premises domain. The hint can be the user's
Active Directory distinguished name as the subject of the certificate, or the hint can be
the user's user principal name where the suffix matches the Active Directory domain
name.

Most environments change the user principal name suffix to match the organization's
external domain name (or vanity domain), which prevents the user principal name as a
hint to locate a domain controller. Therefore, the certificate needs the user's on-
premises distinguished name in the subject to properly locate a domain controller.
To include the on-premises distinguished name in the certificate's subject, Azure AD
Connect must replicate the Active Directory distinguishedName attribute to the Azure
Active Directory onPremisesDistinguishedName attribute. Azure AD Connect version
1.1.819 includes the proper synchronization rules needed for these attributes.

Verify Azure Active Directory Connect version


Sign-in to computer running Azure AD Connect with access equivalent to local
administrator.

1. Open Synchronization Services from the Azure AD Connect folder.

2. In the Synchronization Service Manager, select Help and then select About.

3. If the version number isn't 1.1.819 or later, then upgrade Azure AD Connect to the
latest version.

Verify the onPremisesDistinguishedName attribute is


synchronized
The easiest way to verify that the onPremisesDistingushedNamne attribute is
synchronized is to use the Graph Explorer for Microsoft Graph.

1. Open a web browser and navigate to Graph Explorer.

2. Select Sign in to Graph Explorer and provide Azure credentials.

7 Note

To successfully query the Graph API, adequate permissions must be granted.

3. Select Modify permissions (Preview). Scroll down and locate User.Read.All (or any
other required permission) and select Consent. You'll now be prompted for
delegated permissions consent.

4. In the Graph Explorer URL, enter


https://graph.microsoft.com/v1.0/users/[userid]?
$select=displayName,userPrincipalName,onPremisesDistinguishedName , where

[userid] is the user principal name of a user in Azure Active Directory. Select Run
query.

7 Note
Because the v1.0 endpoint of the Graph API only provides a limited set of
parameters, we will use the $select Optional OData query parameter. For
convenience, it is possible to switch the API version selector from v1.0 to beta
before performing the query. This will provide all available user information, but
remember, beta endpoint queries should not be used in production scenarios.

Request

HTTP

GET https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}?


$select=displayName,userPrincipalName,onPremisesDistinguishedName

5. In the returned results, review the JSON data for the


onPremisesDistinguishedName attribute. Ensure the attribute has a value and that
the value is accurate for the given user. If the onPremisesDistinguishedName
attribute isn't synchronized the value will be null.

Response

HTTP

HTTP/1.1 200 OK
Content-type: application/json

{
"@odata.context":
"https://graph.microsoft.com/v1.0/$metadata#users(displayName,userPrincipalN
ame,onPremisesDistinguishedName)/$entity",
"displayName": "Nestor Wilke",
"userPrincipalName": "NestorW@contoso.com",
"onPremisesDistinguishedName" : "CN=Nestor
Wilke,OU=Operations,DC=contoso,DC=com"
}

Prepare the Network Device Enrollment


Services (NDES) Service Account

Create the NDES Servers global security group


The deployment uses the NDES Servers security group to assign the NDES service the
proper user right assignments.

Sign-in to a domain controller or management workstation with access equivalent to


domain administrator.

1. Open Active Directory Users and Computers.

2. Expand the domain node from the navigation pane.

3. Right-click the Users container. Hover over New and select Group.

4. Type NDES Servers in the Group Name text box.

5. Select OK.

Add the NDES server to the NDES Servers global security


group
Sign-in to a domain controller or management workstation with access equivalent to
domain administrator.

1. Open Active Directory Users and Computers.

2. Expand the domain node from the navigation pane.

3. Select Computers from the navigation pane. Right-click the name of the NDES
server that will host the NDES server role. Select Add to a group.

4. Type NDES Servers in Enter the object names to select. Select OK. Select OK on
the Active Directory Domain Services success dialog.

7 Note

For high-availability, you should have more than one NDES server to service
Windows Hello for Business certificate requests. You should add additional
Windows Hello for Business NDES servers to this group to ensure they receive the
proper configuration.

Create the NDES Service Account


The Network Device Enrollment Services (NDES) role runs under a service account.
Typically, it's preferential to run services using a Group Managed Service Account
(GMSA). While the NDES role can be configured to run using a GMSA, the Intune
Certificate Connector wasn't designed nor tested using a GMSA and is considered an
unsupported configuration. The deployment uses a normal services account.

Sign-in to a domain controller or management workstation with access equivalent to


domain administrator.

1. In the navigation pane, expand the node that has your domain name. Select Users.

2. Right-click the Users container. Hover over New and then select User. Type
NDESSvc in Full Name and User logon name. Select Next.

3. Type a secure password in Password. Confirm the secure password in Confirm


Password. Clear User must change password at next logon. Select Next.

4. Select Finish.

) Important

Configuring the service's account password to Password never expires may be


more convenient, but it presents a security risk. Normal service account passwords
should expire in accordance with the organizations user password expiration policy.
Create a reminder to change the service account's password two weeks before it
will expire. Share the reminder with others that are allowed to change the password
to ensure the password is changed before it expires.

Create the NDES Service User Rights Group Policy object


The Group Policy object ensures the NDES Service account has the proper user right to
assign all the NDES servers in the NDES Servers group. As you add new NDES servers to
your environment and this group, the service account automatically receives the proper
user rights through the Group Policy.

Sign-in a domain controller or management workstations with Domain Admin


equivalent credentials.

1. Start the Group Policy Management Console (gpmc.msc)

2. Expand the domain and select the Group Policy Object node in the navigation
pane.

3. Right-click Group Policy object and select New.

4. Type NDES Service Rights in the name box and select OK.
5. In the content pane, right-click the NDES Service Rights Group Policy object and
select Edit.

6. In the navigation pane, expand Policies under Computer Configuration.

7. Expand Windows Settings > Security Settings > Local Policies. Select User Rights
Assignments.

8. In the content pane, double-click Allow log on locally. Select Define these policy
settings and select OK. Select Add User or Group.... In the Add User or Group
dialog box, select Browse. In the Select Users, Computers, Service Accounts, or
Groups dialog box, type Administrators;Backup
Operators;DOMAINNAME\NDESSvc;Users where DOMAINNAME is the NetBios
name of the domain (Example CONTOSO\NDESSvc) in User and group names.
Select OK twice.

9. In the content pane, double-click Log on as a batch job. Select Define these policy
settings and select OK. Select Add User or Group.... In the Add User or Group
dialog box, select Browse. In the Select Users, Computers, Service Accounts, or
Groups dialog box, type Administrators;Backup
Operators;DOMAINNAME\NDESSvc;Performance Log Users where
DOMAINNAME is the NetBios name of the domain (Example CONTOSO\NDESSvc)
in User and group names. Select OK twice.

10. In the content pane, double-click Log on as a service. Select Define these policy
settings and select OK. Select Add User or Group.... In the Add User or Group
dialog box, select Browse. In the Select Users, Computers, Service Accounts, or
Groups dialog box, type NT SERVICE\ALL SERVICES;DOMAINNAME\NDESSvc
where DOMAINNAME is the NetBios name of the domain (Example
CONTOSO\NDESSvc) in User and group names. Select OK three times.

11. Close the Group Policy Management Editor.

Configure security for the NDES Service User Rights


Group Policy object
The best way to deploy the NDES Service User Rights Group Policy object is to use
security group filtering. This enables you to easily manage the computers that receive
the Group Policy settings by adding them to a group.

Sign-in to a domain controller or management workstation with access equivalent to


domain administrator.
1. Start the Group Policy Management Console (gpmc.msc)

2. Expand the domain and select the Group Policy Object node in the navigation
pane.

3. Double-click the NDES Service User Rights Group Policy object.

4. In the Security Filtering section of the content pane, select Add. Type NDES
Servers or the name of the security group you previously created and select OK.

5. Select the Delegation tab. Select Authenticated Users and select Advanced.

6. In the Group or User names list, select Authenticated Users. In the Permissions for
Authenticated Users list, clear the Allow check box for the Apply Group Policy
permission. Select OK.

Deploy the NDES Service User Rights Group Policy object


The application of the NDES Service User Rights Group Policy object uses security
group filtering. This enables you to link the Group Policy object at the domain, ensuring
the Group Policy object is within scope to all computers. However, the security group
filtering ensures only computers included in the NDES Servers global security group
receive and apply the Group Policy object, which results in providing the NDESSvc
service account with the proper user rights.

Sign-in to a domain controller or management workstation with access equivalent to


domain administrator.

1. Start the Group Policy Management Console (gpmc.msc)

2. In the navigation pane, expand the domain and right-click the node that has your
Active Directory domain name and select Link an existing GPO

3. In the Select GPO dialog box, select NDES Service User Rights or the name of the
Group Policy object you previously created and select OK.

) Important

Linking the NDES Service User Rights Group Policy object to the domain ensures
the Group Policy object is in scope for all computers. However, not all computers
will have the policy settings applied to them. Only computers that are members of
the NDES Servers global security group receive the policy settings. All others
computers ignore the Group Policy object.
Prepare Active Directory Certificate Authority
You must prepare the public key infrastructure and the issuing certificate authority to
support issuing certificates using Microsoft Intune and the Network Devices Enrollment
Services (NDES) server role. In this task, you'll

Configure the certificate authority to let Intune provide validity periods


Create an NDES-Intune Authentication Certificate template
Create an Azure AD joined Windows Hello for Business authentication certificate
template
Publish certificate templates

Configure the certificate authority to let Intune provide


validity periods
When deploying certificates using Microsoft Intune, you have the option of providing
the validity period in the SCEP certificate profile rather than relying on the validity
period in the certificate template. If you need to issue the same certificate with different
validity periods, it may be advantageous to use the SCEP profile, given the limited
number of certificates a single NDES server can issue.

7 Note

Skip this step if you do not want to enable Microsoft Intune to specify the validity
period of the certificate. Without this configuration, the certificate request uses the
validity period configured in the certificate template.

Sign-in to the issuing certificate authority with access equivalent to local administrator.

1. Open an elevated command prompt and type the following command:

Console

certutil -setreg Policy\EditFlags +EDITF_ATTRIBUTEENDDATE

2. Restart the Active Directory Certificate Services service.

Create an NDES-Intune authentication certificate


template
NDES uses a server authentication certificate to authenticate the server endpoint, which
encrypts the communication between it and the connecting client. The Intune Certificate
Connector uses a client authentication certificate template to authenticate to the
certificate registration point.

Sign-in to the issuing certificate authority or management workstations with Domain


Admin equivalent credentials.

1. Open the Certificate Authority management console.

2. Right-click Certificate Templates and select Manage.

3. In the Certificate Template Console, right-click the Computer template in the


details pane and select Duplicate Template.

4. On the General tab, type NDES-Intune Authentication in Template display name.


Adjust the validity and renewal period to meet your enterprise's needs.

7 Note

If you use different template names, you'll need to remember and substitute
these names in different portions of the lab.

5. On the Subject tab, select Supply in the request.

6. On the Cryptography tab, validate the Minimum key size is 2048.

7. On the Security tab, select Add.

8. Select Object Types, then in the window that appears, choose Computers and
select OK.

9. Type NDES server in the Enter the object names to select text box and select OK.

10. Select NDES server from the Group or users names list. In the Permissions for
section, select the Allow check box for the Enroll permission. Clear the Allow check
box for the Enroll and Autoenroll permissions for all other items in the Group or
users names list if the check boxes aren't already cleared. Select OK.

11. Select on the Apply to save changes and close the console.

Create an Azure AD joined Windows Hello for Business


authentication certificate template
During Windows Hello for Business provisioning, Windows requests an authentication
certificate from Microsoft Intune, which requests the authentication certificate on behalf
of the user. This task configures the Windows Hello for Business authentication
certificate template. You use the name of the certificate template when configuring the
NDES Server.

Sign in a certificate authority or management workstations with Domain Admin


equivalent credentials.

1. Open the Certificate Authority management console.

2. Right-click Certificate Templates and select Manage.

3. Right-click the Smartcard Logon template and choose Duplicate Template.

4. On the Compatibility tab, clear the Show resulting changes check box. Select
Windows Server 2012 or Windows Server 2012 R2 from the Certification
Authority list. Select Windows Server 2012 or Windows Server 2012 R2 from the
Certificate Recipient list.

5. On the General tab, type AADJ WHFB Authentication in Template display name.
Adjust the validity and renewal period to meet your enterprise's needs.

7 Note

If you use different template names, you'll need to remember and substitute
these names in different portions of the deployment.

6. On the Cryptography tab, select Key Storage Provider from the Provider
Category list. Select RSA from the Algorithm name list. Type 2048 in the
Minimum key size text box. Select SHA256 from the Request hash list.

7. On the Extensions tab, verify the Application Policies extension includes Smart
Card Logon.

8. On the Subject tab, select Supply in the request.

9. On the Request Handling tab, select Signature and encryption from the Purpose
list. Select the Renew with same key check box. Select Enroll subject without
requiring any user input.

10. On the Security tab, select Add. Type NDESSvc in the Enter the object names to
select text box and select OK.
11. Select NDESSvc from the Group or users names list. In the Permissions for NDES
Servers section, select the Allow check box for Read and Enroll. Clear the Allow
check box for the Enroll and Autoenroll permissions for all other entries in the
Group or users names section if the check boxes aren't already cleared. Select OK.

12. Close the console.

Publish certificate templates


The certificate authority may only issue certificates for certificate templates that are
published to that certificate authority. If you have more than one certificate authority
and you want that certificate authority to issue certificates based on a specific certificate
template, then you must publish the certificate template to all certificate authorities that
are expected to issue the certificate.

) Important

Ensure you publish the AADJ WHFB Authentication certificate templates to the
certificate authority that Microsoft Intune uses by way of the NDES servers. The
NDES configuration asks you to choose a certificate authority from which it
requests certificates. You need to publish that certificate templates to that issuing
certificate authority. The NDES-Intune Authentication certificate is directly enrolled
and can be published to any certificate authority.

Sign in to the certificate authority or management workstations with an enterprise admin


-equivalent credential.

1. Open the Certificate Authority management console.

2. Expand the parent node from the navigation pane.

3. Select Certificate Templates in the navigation pane.

4. Right-click the Certificate Templates node. Select New, and select Certificate
Template to issue.

5. In the Enable Certificates Templates window, select the NDES-Intune


Authentication and AADJ WHFB Authentication templates you created in the
previous steps. Select OK to publish the selected certificate templates to the
certificate authority.

6. Close the console.


Install and Configure the NDES Role
This section includes the following articles:

Install the Network Device Enrollment Service Role


Configure the NDES service account
Configure the NDES role and Certificate Templates
Create a Web Application Proxy for the Internal NDES URL.
Enroll for an NDES-Intune Authentication Certificate
Configure the Web Server Certificate for NDES
Verify the configuration

Install the Network Device Enrollment Services Role


Install the Network Device Enrollment Service role on a computer other than the issuing
certificate authority.

Sign-in to the certificate authority or management workstations with an Enterprise


Admin equivalent credential.

1. Open Server Manager on the NDES server.

2. Select Manage. Select Add Roles and Features.

3. In the Add Roles and Features Wizard, on the Before you begin page, select Next.
Select Role-based or feature-based installation on the Select installation type
page. Select Next. Select Select a server from the server pool. Select the local
server from the Server Pool list. Select Next.
4. On the Select server roles page, select Active Directory Certificate Services from
the Roles list.

Select Add Features on the Add Roles and Feature Wizard dialog box. Select
Next.
5. On the Features page, expand .NET Framework 3.5 Features. Select HTTP
Activation. Select Add Features on the Add Roles and Feature Wizard dialog box.
Expand .NET Framework 4.5 Features. Expand WCF Services. Select HTTP
Activation. Select Add Features on the Add Roles and Feature Wizard dialog box.
Select Next.
6. On the Select role services page, clear the Certificate Authority check box. Select
the Network Device Enrollment Service. Select Add Features on the Add Roles
and Features Wizard dialog box. Select Next.

7. Select Next on the Web Server Role (IIS) page.


8. On the Select role services page for the Web Serve role, Select the following
additional services if they aren't already selected and then select Next.

Web Server > Security > Request Filtering


Web Server > Application Development > ASP.NET 3.5.
Web Server > Application Development > ASP.NET 4.5. .
Management Tools > IIS 6 Management Compatibility > IIS 6 Metabase
Compatibility
Management Tools > IIS 6 Management Compatibility > IIS 6 WMI
Compatibility

9. Select Install. When the installation completes, continue with the next procedure.
Do not click Close.

) Important

.NET Framework 3.5 is not included in the typical installation. If the server is
connected to the Internet, the installation attempts to get the files using
Windows Update. If the server is not connected to the Internet, you need to
Specify an alternate source path such as <driveLetter>:\Sources\SxS\
Configure the NDES service account
This task adds the NDES service account to the local IIS_USRS group. The task also
configures the NDES service account for Kerberos authentication and delegation

Add the NDES service account to the IIS_USRS group

Sign-in the NDES server with access equivalent to local administrator.

1. Start the Local Users and Groups management console ( lusrmgr.msc ).

2. Select Groups from the navigation pane. Double-click the IIS_IUSRS group.

3. In the IIS_IUSRS Properties dialog box, select Add. Type NDESSvc or the name of
your NDES service account. Select Check Names to verify the name and then select
OK. Select OK to close the properties dialog box.

4. Close the management console.

Register a Service Principal Name on the NDES Service account


Sign-in the NDES server with access equivalent to Domain Admins.
1. Open an elevated command prompt.

2. Type the following command to register the service principal name

Console

setspn -s http/[FqdnOfNdesServer] [DomainName\\NdesServiceAccount]

where [FqdnOfNdesServer] is the fully qualified domain name of the NDES server
and [DomainName\NdesServiceAccount] is the domain name and NDES service
account name separated by a backslash (\). An example of the command looks like
the following:

Console

setspn -s http/ndes.corp.contoso.com contoso\ndessvc

7 Note

If you use the same service account for multiple NDES Servers, repeat the following
task for each NDES server under which the NDES service runs.

Configure the NDES Service account for delegation

The NDES service enrolls certificates on behalf of users. Therefore, you want to limit the
actions it can perform on behalf of the user. You do this through delegation.

Sign-in a domain controller with a minimum access equivalent to Domain Admins.

1. Open Active Directory Users and Computers


2. Locate the NDES Service account (NDESSvc). Right-click and select Properties.
Select the Delegation tab.

3. Select Trust this user for delegation to specified services only.

4. Select Use any authentication protocol.

5. Select Add.
6. Select Users or Computers... Type the name of the NDES Server you use to issue
Windows Hello for Business authentication certificates to Azure AD-joined devices.
From the Available services list, select HOST. Select OK.

7. Repeat steps 5 and 6 for each NDES server using this service account. Select Add.

8. Select Users or computers... Type the name of the issuing certificate authority this
NDES service account uses to issue Windows Hello for Business authentication
certificates to Azure AD-joined devices. From the Available services list, select
dcom. Hold the CTRL key and select HOST. Select OK.

9. Repeat steps 8 and 9 for each issuing certificate authority from which one or more
NDES servers request certificates.

10. Select OK. Close Active Directory Users and Computers.

Configure the NDES Role and Certificate Templates


This task configures the NDES role and the certificate templates the NDES server issues.

Configure the NDES Role


Sign-in to the certificate authority or management workstations with an Enterprise
Admin equivalent credential.

7 Note

If you closed Server Manger from the last set of tasks, start Server Manager and
click the action flag that shows a yellow exclamation point.

1. Select the Configure Active Directory Certificate Services on the destination


server link.

2. On the Credentials page, select Next.


3. On the Role Services page, select Network Device Enrollment Service and then
select Next

4. On the Service Account for NDES page, select Specify service account
(recommended). Select Select.... Type the user name and password for the NDES
service account in the Windows Security dialog box. Select Next.
5. On the CA for NDES page, select CA name. Select Select.... Select the issuing
certificate authority from which the NDES server requests certificates. Select Next.

6. On the RA Information, select Next.

7. On the Cryptography for NDES page, select Next.


8. Review the Confirmation page. Select Configure.

9. Select Close after the configuration completes.

Configure Certificate Templates on NDES

A single NDES server can request a maximum of three certificate templates. The NDES
server determines which certificate to issue based on the incoming certificate request
that is assigned in the Microsoft Intune SCEP certificate profile. The Microsoft Intune
SCEP certificate profile has three values.

Digital Signature
Key Encipherment
Key Encipherment, Digital Signature

Each value maps to a registry value name in the NDES server. The NDES server translates
an incoming SCEP provided value into the corresponding certificate template. The table
below shows the SCEP profile values of the NDES certificate template registry value
names.

SCEP Profile Key usage NDES Registry Value Name

Digital Signature SignatureTemplate

Key Encipherment EncryptionTemplate


SCEP Profile Key usage NDES Registry Value Name

Key Encipherment GeneralPurposeTemplate


Digital Signature

Ideally, you should match the certificate request with the registry value name to keep
the configuration intuitive (encryption certificates use the encryption template, signature
certificates use the signature template, etc.). A result of this intuitive design is the
potential exponential growth in the NDES server. Imagine an organization that needs to
issue nine unique signature certificates across their enterprise.

If the need arises, you can configure a signature certificate in the encryption registry
value name or an encryption certificate in the signature registry value to maximize the
use of your NDES infrastructure. This unintuitive design requires current and accurate
documentation of the configuration to ensure the SCEP certificate profile is configured
to enroll the correct certificate, regardless of the actual purpose. Each organization
needs to balance ease of configuration and administration with additional NDES
infrastructure and the management overhead that comes with it.

Sign-in to the NDES Server with local administrator equivalent credentials.

1. Open an elevated command prompt.

2. Using the table above, decide which registry value name you'll use to request
Windows Hello for Business authentication certificates for Azure AD-joined
devices.

3. Type the following command:

Console

reg add HKLM\Software\Microsoft\Cryptography\MSCEP /v


[registryValueName] /t REG_SZ /d [certificateTemplateName]

where registryValueName is one of the three value names from the above table
and where certificateTemplateName is the name of the certificate template you
created for Windows Hello for Business Azure AD-joined devices. Example:

Console

reg add HKLM\Software\Microsoft\Cryptography\MSCEP /v SignatureTemplate


/t REG_SZ /d AADJWHFBAuthentication

4. Type Y when the command asks for permission to overwrite the existing value.
5. Close the command prompt.

) Important

Use the name of the certificate template; not the display name. The certificate
template name does not include spaces. You can view the certificate names by
looking at the General tab of the certificate template's properties in the Certificates
Templates management console ( certtmpl.msc ).

Create a Web Application Proxy for the internal NDES


URL.
Certificate enrollment for Azure AD-joined devices occurs over the Internet. As a result,
the internal NDES URLs must be accessible externally. You can do this easily and securely
using Azure Active Directory Application Proxy. Azure AD Application Proxy provides
single sign-on and secure remote access for web applications hosted on-premises, such
as Network Device Enrollment Services.

Ideally, you configure your Microsoft Intune SCEP certificate profile to use multiple
external NDES URLs. This enables Microsoft Intune to round-robin load balance the
certificate requests to identically configured NDES Servers (each NDES server can
accommodate approximately 300 concurrent requests). Microsoft Intune sends these
requests to Azure AD Application Proxies.

Azure AD Application proxies are serviced by lightweight Application Proxy Connector


agents. See What is Application Proxy for more details. These agents are installed on
your on-premises, domain joined devices and make authenticated secure outbound
connection to Azure, waiting to process requests from Azure AD Application Proxies.
You can create connector groups in Azure Active Directory to assign specific connectors
to service specific applications.

Connector group automatically round-robin, load balance the Azure AD Application


proxy requests to the connectors within the assigned connector group. This ensures
Windows Hello for Business certificate requests have multiple dedicated Azure AD
Application Proxy connectors exclusively available to satisfy enrollment requests. Load
balancing the NDES servers and connectors should ensure users enroll their Windows
Hello for Business certificates in a timely manner.

Download and Install the Application Proxy Connector Agent

Sign-in a workstation with access equivalent to a domain user.


1. Sign-in to the Azure portal with access equivalent to Global Administrator.

2. Select All Services. Type Azure Active Directory to filter the list of services. Under
SERVICES, select Azure Active Directory.

3. Under MANAGE, select Application proxy.

4. Select Download connector service. Select Accept terms & Download. Save the
file (AADApplicationProxyConnectorInstaller.exe) in a location accessible by others
on the domain.

5. Sign-in the computer that will run the connector with access equivalent to a
domain user.

) Important

Install a minimum of two Azure Active Directory Proxy connectors for each
NDES Application Proxy. Strategically locate Azure AD application proxy
connectors throughout your organization to ensure maximum availability.
Remember, devices running the connector must be able to communicate with
Azure and the on-premises NDES servers.

6. Start AADApplicationProxyConnectorInstaller.exe.

7. Read the license terms and then select I agree to the license terms and
conditions. Select Install.
8. Sign-in to Microsoft Azure with access equivalent to Global Administrator.
9. When the installation completes. Read the information regarding outbound proxy
servers. Select Close.

10. Repeat steps 5 - 10 for each device that will run the Azure AD Application Proxy
connector for Windows Hello for Business certificate deployments.

Create a Connector Group


Sign-in a workstation with access equivalent to a domain user.

1. Sign-in to the Azure portal with access equivalent to Global Administrator.

2. Select All Services. Type Azure Active Directory to filter the list of services. Under
SERVICES, select Azure Active Directory.

3. Under MANAGE, select Application proxy.


4. Select New Connector Group. Under Name, type NDES WHFB Connectors.

5. Select each connector agent in the Connectors list that will service Windows Hello
for Business certificate enrollment requests.

6. Select Save.

Create the Azure Application Proxy


Sign-in a workstation with access equivalent to a domain user.
1. Sign-in to the Azure portal with access equivalent to Global Administrator.

2. Select All Services. Type Azure Active Directory to filter the list of services. Under
SERVICES, select Azure Active Directory.

3. Under MANAGE, select Application proxy.

4. Select Configure an app.

5. Under Basic Settings next to Name, type WHFB NDES 01. Choose a name that
correlates this Azure AD Application Proxy setting with the on-premises NDES
server. Each NDES server must have its own Azure AD Application Proxy as two
NDES servers can't share the same internal URL.

6. Next to Internal URL, type the internal, fully qualified DNS name of the NDES
server associated with this Azure AD Application Proxy. For example,
https://ndes.corp.mstepdemo.net . You need to match the primary host name (AD
Computer Account name) of the NDES server, and prefix the URL with https.

7. Under Internal URL, select https:// from the first list. In the text box next to
https://, type the hostname you want to use as your external hostname for the
Azure AD Application Proxy. In the list next to the hostname you typed, select a
DNS suffix you want to use externally for the Azure AD Application Proxy. It's
recommended to use the default, -[tenantName].msapproxy.net where
[tenantName] is your current Azure Active Directory tenant name (-
mstephendemo.msappproxy.net).

8. Select Passthrough from the Pre Authentication list.


9. Select NDES WHFB Connectors from the Connector Group list.

10. Under Additional Settings, select Default from Backend Application Timeout.
Under the Translate URLs In section, select Yes next to Headers and select No next
to Application Body.

11. Select Add.

12. Sign-out of the Azure portal.

) Important

Write down the internal and external URLs. You will need this information
when you enroll the NDES-Intune Authentication certificate.

Enroll the NDES-Intune Authentication certificate


This task enrolls a client and server authentication certificate used by the Intune
connector and the NDES server.

Sign-in the NDES server with access equivalent to local administrators.

1. Start the Local Computer Certificate Manager (certlm.msc).

2. Expand the Personal node in the navigation pane.

3. Right-click Personal. Select All Tasks and Request New Certificate.

4. Select Next on the Before You Begin page.

5. Select Next on the Select Certificate Enrollment Policy page.

6. On the Request Certificates page, Select the NDES-Intune Authentication check


box.

7. Select the More information is required to enroll for this certificate. Click here to
configure settings link
8. Under Subject name, select Common Name from the Type list. Type the internal
URL used in the previous task (without the https://, for example
ndes.corp.mstepdemo.net) and then select Add.

9. Under Alternative name, select DNS from the Type list. Type the internal URL used
in the previous task (without the https://, for example ndes.corp.mstepdemo.net).
Select Add. Type the external URL used in the previous task (without the https://,
for example ndes-mstephendemo.msappproxy.net). Select Add. Select OK when
finished.

10. Select Enroll

11. Repeat these steps for all NDES Servers used to request Windows Hello for
Business authentication certificates for Azure AD-joined devices.

Configure the Web Server Role


This task configures the Web Server role on the NDES server to use the server
authentication certificate.

Sign-in the NDES server with access equivalent to local administrator.

1. Start Internet Information Services (IIS) Manager from Administrative Tools.

2. Expand the node that has the name of the NDES server. Expand Sites and select
Default Web Site.

3. Select Bindings... under Actions. Select Add.


4. Select https from Type. Confirm the value for Port is 443.

5. Select the certificate you previously enrolled from the SSL certificate list. Select
OK.

6. Select http from the Site Bindings list. Select Remove.

7. Select Close on the Site Bindings dialog box.

8. Close Internet Information Services (IIS) Manager.

Verify the configuration


This task confirms the TLS configuration for the NDES server.

Sign-in the NDES server with access equivalent to local administrator.

Disable Internet Explorer Enhanced Security Configuration


1. Open Server Manager. Select Local Server from the navigation pane.

2. Select On next to IE Enhanced Security Configuration in the Properties section.

3. In the Internet Explorer Enhanced Security Configuration dialog, under


Administrators, select Off. Select OK.

4. Close Server Manager.


Test the NDES web server
1. Open Internet Explorer.

2. In the navigation bar, type

https

https://[fqdnHostName]/certsrv/mscep/mscep.dll

where [fqdnHostName] is the fully qualified internal DNS host name of the NDES
server.

A web page similar to the following should appear in your web browser. If you don't see
a similar page, or you get a 503 Service unavailable message, ensure the NDES Service
account has the proper user rights. You can also review the Application event log for
events with the NetworkDeviceEnrollmentService source.

Confirm the web site uses the server authentication certificate.


Configure Network Device Enrollment Services
to work with Microsoft Intune
You have successfully configured the Network Device Enrollment Services. You must now
modify the configuration to work with the Intune Certificate Connector. In this task,
you'll enable the NDES server and http.sys to handle long URLs.

Configure NDES to support long URLs

Configure NDES and HTTP to support long URLs


Sign-in the NDES server with access equivalent to local administrator.

Configure the Default Web Site


1. Start Internet Information Services (IIS) Manager from Administrative Tools.

2. Expand the node that has the name of the NDES server. Expand Sites and select
Default Web Site.

3. In the content pane, double-click Request Filtering. Select Edit Feature Settings...
in the action pane.

4. Select Allow unlisted file name extensions.

5. Select Allow unlisted verbs.


6. Select Allow high-bit characters.

7. Type 30000000 in Maximum allowed content length (Bytes).

8. Type 65534 in Maximum URL length (Bytes).

9. Type 65534 in Maximum query string (Bytes).

10. Select OK. Close Internet Information Services (IIS) Manager.

Configure Parameters for HTTP.SYS


1. Open an elevated command prompt.

2. Run the following commands:

Console

reg add HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters /v


MaxFieldLength /t REG_DWORD /d 65534
reg add HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters /v
MaxRequestBytes /t REG_DWORD /d 65534

3. Restart the NDES server.

Download, Install and Configure the Intune


Certificate Connector
The Intune Certificate Connector application enables Microsoft Intune to enroll
certificates using your on-premises PKI for users on devices managed by Microsoft
Intune.

To learn how to download, install, and configure the Intune Certificate Connector, see
Install the Certificate Connector for Microsoft Intune.

Configure the NDES Connector for certificate revocation


(Optional)
Optionally (not required), you can configure the Intune connector for certificate
revocation when a device is wiped, unenrolled, or when the certificate profile falls out of
scope for the targeted user (users are removed, deleted, or the profile is deleted). You
need to select the Certificate revocation option during the connector configuration to
enable automatic certificate revocation for certificates issued from a Microsoft Active
Directory Certification Authority. Additionally, you need to enable the NDES Service
account for revocation.

1. Sign in the certificate authority used by the NDES Connector with access
equivalent to domain administrator.

2. Start the Certification Authority management console.

3. In the navigation pane, right-click the name of the certificate authority and select
Properties.

4. Select the Security tab, then select Add. In the Enter the object names to select
box, enter NDESSvc (or the name you gave the NDES Service account). Select
Check Names, then select OK. Select the NDES Service account from the Group or
user names list. Select Allow for the Issue and Manage Certificates permission.
Select OK.

5. Close the Certification Authority.

Create and Assign a Simple Certificate


Enrollment Protocol (SCEP) Certificate Profile

Create an AADJ WHFB Certificate Users Group


Sign-in a workstation with access equivalent to a domain user.

1. Sign-in to the Azure portal with access equivalent to Global Administrator.

2. Select All Services. Type Azure Active Directory to filter the list of services. Under
SERVICES, select Azure Active Directory.

3. Select Groups. Select New group.

4. Select Security from the Group type list.

5. Under Group Name, type the name of the group. For example, AADJ WHFB
Certificate Users.

6. Provide a Group description, if applicable.

7. Select Assigned from the Membership type list.

8. Select Members. Use the Select members pane to add members to this group.
When finished, select Select.

9. Select Create.

Create a SCEP Certificate Profile


Sign-in a workstation with access equivalent to a domain user.

1. Sign in to the Microsoft Intune admin center .


2. Select Devices, and then select Configuration Profiles.

3. Select Create Profile.

4. Select Windows 10 and later from the Platform list.

5. Choose SCEP certificate from the Profile list, and select Create.

6. The SCEP Certificate wizard should open. Next to Name, type WHFB Certificate
Enrollment.

7. Next to Description, provide a description meaningful for your environment, then


select Next.

8. Select User as a certificate type.

9. Configure Certificate validity period to match your organization.

) Important

Remember that you need to configure your certificate authority to allow


Microsoft Intune to configure certificate validity.

10. Select Enroll to Windows Hello for Business, otherwise fail (Windows 10 and
later) from the Key storage provider (KSP) list.

11. Next to Subject name format, type CN={{OnPrem_Distinguished_Name}} to make


the on-premises distinguished name the subject of the issued certificate.

7 Note
If the distinguished name contains special characters like a plus sign ("+"), comma
(","), semicolon (";"), or equal sign ("="), the bracketed name must be enclosed in
quotation marks: CN=”{{OnPrem_Distinguished_Name}}”. If the length of the
distinguished name is more than 64 characters, the name length enforcement on
the Certification Authority must be disabled.

12. Specify User Principal Name (UPN) as a Subject Alternative Name parameter. Set
its value as {{UserPrincipalName}}.

13. Refer to the "Configure Certificate Templates on NDES" task for how you
configured the AADJ WHFB Authentication certificate template in the registry.
Select the appropriate combination of key usages from the Key Usages list that
map to the configured NDES template in the registry. In this example, the AADJ
WHFB Authentication certificate template was added to the SignatureTemplate
registry value name. The Key usage that maps to that registry value name is Digital
Signature.

14. Select a previously configured Trusted certificate profile that matches the root
certificate of the issuing certificate authority as a root certificate for the profile.

15. Under Extended key usage, type Smart Card Logon under Name. Type
1.3.6.1.4.1.311.20.2.2 under Object identifier. Select Add.

16. Type a percentage (without the percent sign) next to Renewal Threshold to
determine when the certificate should attempt to renew. The recommended value
is 20.

17. Under SCEP Server URLs, type the fully qualified external name of the Azure AD
Application proxy you configured. Append to the name /certsrv/mscep/mscep.dll.
For example, https://ndes-mtephendemo.msappproxy.net/certsrv/mscep/mscep.dll .
Select Add. Repeat this step for each additional NDES Azure AD Application Proxy
you configured to issue Windows Hello for Business certificates. Microsoft Intune
round-robin load balances requests among the URLs listed in the SCEP certificate
profile.

18. Select Next.

19. Select Next several times to skip the Scope tags, Assignments, and Applicability
Rules steps of the wizard and select Create.

Assign Group to the WHFB Certificate Enrollment


Certificate Profile
Sign-in a workstation with access equivalent to a domain user.

1. Sign-in to the Microsoft Intune admin center .

2. Select Devices, and then select Configuration Profiles.

3. Select WHFB Certificate Enrollment.

4. Select Properties, and then select Edit next to the Assignments section.

5. In the Assignments pane, select Selected Groups from the Assign to list. Select
Select groups to include.
6. Select the AADJ WHFB Certificate Users group. Select Select.

7. Select Review + Save, and then Save.

You have successfully completed the configuration. Add users that need to enroll a
Windows Hello for Business authentication certificate to the AADJ WHFB Certificate
Users group. This group, combined with the device enrollment Windows Hello for
Business configuration prompts the user to enroll for Windows Hello for Business and
enroll a certificate that can be used to authentication to on-premises resources.

7 Note

The Passport for Work configuration service provider (CSP) which is used to
manage Windows Hello for Business with Mobile Device Management (MDM)
contains a policy called UseCertificateForOnPremAuth. This policy is not needed
when deploying certificates to Windows Hello for Business users through the
instructions outlined in this document and should not be configured. Devices
managed with MDM where UseCertificateForOnPremAuth is enabled will fail a
prerequisite check for Windows Hello for Business provisioning. This failure will
block users from setting up Windows Hello for Business if they don't already have it
configured.

Section Review
" Requirements
" Prepare Azure AD Connect
" Prepare the Network Device Enrollment Services (NDES) Service Account
" Prepare Active Directory Certificate Authority
" Install and Configure the NDES Role
" Configure Network Device Enrollment Services to work with Microsoft Intune
" Download, Install, and Configure the Intune Certificate Connector
" Create and Assign a Simple Certificate Enrollment Protocol (SCEP Certificate Profile)
Deployment guide overview - on-
premises key trust
Article • 01/24/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: key trust
Join type: domain join

Windows Hello for Business replaces username and password authentication to


Windows with an asymmetric key pair. This deployment guide provides the information
to deploy Windows Hello for Business in an on-premises environment::

1. Validate Active Directory prerequisites


2. Validate and configure a PKI
3. Prepare and deploy AD FS
4. Validate and deploy multi-factor authentication (MFA)
5. Configure Windows Hello for Business Policy settings
Validate Active Directory prerequisites -
on-premises key trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: key trust
Join type: domain join

Key trust deployments need an adequate number of domain controllers to ensure


successful user authentication with Windows Hello for Business. To learn more about
domain controller planning for key trust deployments, read the Windows Hello for
Business planning guide and the Planning an adequate number of Domain Controllers
for Windows Hello for Business deployments section.

The key registration process for the on-premises deployment of Windows Hello for
Business requires the Windows Server 2016 Active Directory or later schema.

Create the Windows Hello for Business Users


security group
The Windows Hello for Business Users group is used to make it easy to deploy Windows
Hello for Business in phases. You assign Group Policy permissions to this group to
simplify the deployment by adding the users to the group. This provides users with the
proper permissions to provision Windows Hello for Business.

Sign-in to a domain controller or to a management workstation with a Domain


Administrator equivalent credentials.

1. Open Active Directory Users and Computers


2. Select View > Advanced Features
3. Expand the domain node from the navigation pane
4. Right-click the Users container. Select New > Group
5. Type Windows Hello for Business Users in the Group Name
6. Select OK
Next: validate and configure PKI >
Configure and validate the Public Key
Infrastructure - on-premises key trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: key trust
Join type: domain join

Windows Hello for Business must have a Public Key Infrastructure (PKI) when using the
key trust or certificate trust models. The domain controllers must have a certificate, which
serves as a root of trust for clients. The certificate ensures that clients don't
communicate with rogue domain controllers.

Deploy an enterprise certification authority


This guide assumes most enterprises have an existing public key infrastructure. Windows
Hello for Business depends on an enterprise PKI running the Windows Server Active
Directory Certificate Services role.
If you don't have an existing PKI, review Certification Authority Guidance to properly
design your infrastructure. Then, consult the Test Lab Guide: Deploying an AD CS Two-
Tier PKI Hierarchy for instructions on how to configure your PKI using the information
from your design session.

Lab-based PKI
The following instructions may be used to deploy simple public key infrastructure that is
suitable for a lab environment.

Sign in using Enterprise Administrator equivalent credentials on a Windows Server where


you want the certification authority (CA) installed.

7 Note
Never install a certification authority on a domain controller in a production
environment.

1. Open an elevated Windows PowerShell prompt


2. Use the following command to install the Active Directory Certificate Services role.

PowerShell

Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools

3. Use the following command to configure the CA using a basic certification


authority configuration

PowerShell

Install-AdcsCertificationAuthority

Configure the enterprise PKI

Configure domain controller certificates


Clients must trust the domain controllers, and the best way to enable the trust is to
ensure that each domain controller has a Kerberos Authentication certificate. Installing a
certificate on the domain controllers enables the Key Distribution Center (KDC) to prove
its identity to other members of the domain. The certificates provide clients a root of
trust external to the domain, namely the enterprise certification authority.

Domain controllers automatically request a domain controller certificate (if published)


when they discover an enterprise CA is added to Active Directory. The certificates based
on the Domain Controller and Domain Controller Authentication certificate templates
don't include the KDC Authentication object identifier (OID), which was later added to
the Kerberos RFC. Therefore, domain controllers need to request a certificate based on
the Kerberos Authentication certificate template.

By default, the Active Directory CA provides and publishes the Kerberos Authentication
certificate template. The cryptography configuration included in the template is based
on older and less performant cryptography APIs. To ensure domain controllers request
the proper certificate with the best available cryptography, use the Kerberos
Authentication certificate template as a baseline to create an updated domain controller
certificate template.
) Important

The certificates issued to the domain controllers must meet the following
requirements:

The Certificate Revocation List (CRL) distribution point extension must point to
a valid CRL, or an Authority Information Access (AIA) extension that points to
an Online Certificate Status Protocol (OCSP) responder
Optionally, the certificate Subject section could contain the directory path of
the server object (the distinguished name)
The certificate Key Usage section must contain Digital Signature and Key
Encipherment
Optionally, the certificate Basic Constraints section should contain: [Subject
Type=End Entity, Path Length Constraint=None]

The certificate extended key usage section must contain Client Authentication
( 1.3.6.1.5.5.7.3.2 ), Server Authentication ( 1.3.6.1.5.5.7.3.1 ), and KDC
Authentication ( 1.3.6.1.5.2.3.5 )
The certificate Subject Alternative Name section must contain the Domain
Name System (DNS) name
The certificate template must have an extension that has the value
DomainController , encoded as a BMPstring. If you are using Windows Server

Enterprise Certificate Authority, this extension is already included in the


domain controller certificate template
The domain controller certificate must be installed in the local computer's
certificate store

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates > Manage
3. In the Certificate Template Console, right-click the Kerberos Authentication
template in the details pane and select Duplicate Template
4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list
5. On the General tab

Type Domain Controller Authentication (Kerberos) in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

7 Note

If you use different template names, you'll need to remember and substitute
these names in different portions of the lab.

6. On the Subject Name tab:

Select the Build from this Active Directory information button if it isn't
already selected
Select None from the Subject name format list
Select DNS name from the Include this information in alternate subject list
Clear all other items

7. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

8. Select OK
9. Close the console

Supersede existing domain controller certificates


The domain controllers may have an existing domain controller certificate. The Active
Directory Certificate Services provides a default certificate template for domain
controllers called domain controller certificate. Later releases of Windows Server
provided a new certificate template called domain controller authentication certificate.
These certificate templates were provided prior to the update of the Kerberos
specification that stated Key Distribution Centers (KDCs) performing certificate
authentication needed to include the KDC Authentication extension.

The Kerberos Authentication certificate template is the most current certificate template
designated for domain controllers, and should be the one you deploy to all your domain
controllers.
The autoenrollment feature allows you to replace the domain controller certificates. Use
the following configuration to replace older domain controller certificates with new
ones, using the Kerberos Authentication certificate template.

Sign in to a CA or management workstations with Enterprise Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates > Manage
3. In the Certificate Template Console, right-click the Domain Controller
Authentication (Kerberos) (or the name of the certificate template you created in
the previous section) template in the details pane and select Properties
4. Select the Superseded Templates tab. Select Add
5. From the Add Superseded Template dialog, select the Domain Controller
certificate template and select OK > Add
6. From the Add Superseded Template dialog, select the Domain Controller
Authentication certificate template and select OK
7. From the Add Superseded Template dialog, select the Kerberos Authentication
certificate template and select OK
8. Add any other enterprise certificate templates that were previously configured for
domain controllers to the Superseded Templates tab
9. Select OK and close the Certificate Templates console

The certificate template is configured to supersede all the certificate templates provided
in the superseded templates list.
However, the certificate template and the superseding of certificate templates isn't
active until the template is published to one or more certificate authorities.

7 Note

The domain controller's certificate must chain to a root in the NTAuth store. By
default, the Active Directory Certificate Authority's root certificate is added to the
NTAuth store. If you are using a third-party CA, this may not be done by default. If
the domain controller certificate does not chain to a root in the NTAuth store, user
authentication will fail. To see all certificates in the NTAuth store, use the following
command:

Certutil -viewstore -enterprise NTAuth

Configure an internal web server certificate template


Windows clients communicate with AD FS via HTTPS. To meet this need, a server
authentication certificate must be issued to all the nodes in the AD FS farm. On-
premises deployments can use a server authentication certificate issued by the
enterprise PKI. A server authentication certificate template must be configured, so the
AD FS nodes can request a certificate.

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates and select Manage
3. In the Certificate Template Console, right-click the Web Server template in the
details pane and select Duplicate Template
4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list

5. On the General tab:

Type Internal Web Server in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

7 Note

If you use different template names, you'll need to remember and substitute
these names in different portions of the lab.

6. On the Request Handling tab, select Allow private key to be exported


7. On the Subject tab, select the Supply in the request button if it isn't already
selected
8. On the Security tab:

Select Add
Type Domain Computers in the Enter the object names to select box
Select OK
Select the Allow check box next to the Enroll permission

9. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list
Select OK
10. Close the console

Unpublish Superseded Certificate Templates


The certification authority only issues certificates based on published certificate
templates. For security, it's a good practice to unpublish certificate templates that the
CA isn't configured to issue, including the pre-published templates from the role
installation and any superseded templates.

The newly created domain controller authentication certificate template supersedes


previous domain controller certificate templates. Therefore, you need to unpublish these
certificate templates from all issuing certificate authorities.

Sign in to the CA or management workstation with Enterprise Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Expand the parent node from the navigation pane > Certificate Templates
3. Right-click the Domain Controller certificate template and select Delete. Select Yes
on the Disable certificate templates window
4. Repeat step 3 for the Domain Controller Authentication and Kerberos
Authentication certificate templates

Publish certificate templates to the CA


A certification authority can only issue certificates for certificate templates that are
published to it. If you have more than one CA, and you want more CAs to issue
certificates based on the certificate template, then you must publish the certificate
template to them.

Sign in to the CA or management workstations with Enterprise Admin equivalent


credentials.

1. Open the Certification Authority management console


2. Expand the parent node from the navigation pane
3. Select Certificate Templates in the navigation pane
4. Right-click the Certificate Templates node. Select New > Certificate Template to
issue
5. In the Enable Certificates Templates window, select the Domain Controller
Authentication (Kerberos), and Internal Web Server templates you created in the
previous steps. Select OK to publish the selected certificate templates to the
certification authority
6. If you published the Domain Controller Authentication (Kerberos) certificate
template, then unpublish the certificate templates you included in the superseded
templates list

To unpublish a certificate template, right-click the certificate template you


want to unpublish and select Delete. Select Yes to confirm the operation

7. Close the console

Configure and deploy certificates to domain


controllers

Configure automatic certificate enrollment for the


domain controllers
Domain controllers automatically request a certificate from the Domain controller
certificate template. However, domain controllers are unaware of newer certificate
templates or superseded configurations on certificate templates. For domain controllers
to automatically enroll and renew of certificates, configure a GPO for automatic
certificate enrollment, and link it to the Domain Controllers OU.

1. Open the Group Policy Management Console (gpmc.msc)


2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Right-click Group Policy object and select New
4. Type Domain Controller Auto Certificate Enrollment in the name box and select OK
5. Right-click the Domain Controller Auto Certificate Enrollment Group Policy object
and select Edit
6. In the navigation pane, expand Policies under Computer Configuration
7. Expand Windows Settings > Security Settings > Public Key Policies
8. In the details pane, right-click Certificate Services Client - Auto-Enrollment and
select Properties
9. Select Enabled from the Configuration Model list
10. Select the Renew expired certificates, update pending certificates, and remove
revoked certificates check box
11. Select the Update certificates that use certificate templates check box
12. Select OK
13. Close the Group Policy Management Editor
Deploy the domain controller auto certificate enrollment
GPO
Sign in to domain controller or management workstations with Domain Administrator
equivalent credentials.

1. Start the Group Policy Management Console (gpmc.msc)


2. In the navigation pane, expand the domain and expand the node with the Active
Directory domain name. Right-click the Domain Controllers organizational unit
and select Link an existing GPO…
3. In the Select GPO dialog box, select Domain Controller Auto Certificate Enrollment
or the name of the domain controller certificate enrollment Group Policy object
you previously created
4. Select OK

Validate the configuration


Windows Hello for Business is a distributed system, which on the surface appears
complex and difficult. The key to a successful deployment is to validate phases of work
prior to moving to the next phase.

Confirm your domain controllers enroll the correct certificates and not any superseded
certificate templates. Check that each domain controller completed the certificate
autoenrollment.

Use the event logs


Sign in to domain controller or management workstations with Domain Administrator
equivalent credentials.

1. Using the Event Viewer, navigate to the Application and Services > Microsoft >
Windows > CertificateServices-Lifecycles-System event log
2. Look for an event indicating a new certificate enrollment (autoenrollment):

The details of the event include the certificate template on which the
certificate was issued
The name of the certificate template used to issue the certificate should
match the certificate template name included in the event
The certificate thumbprint and EKUs for the certificate are also included in the
event
The EKU needed for proper Windows Hello for Business authentication is
Kerberos Authentication, in addition to other EKUs provide by the certificate
template

Certificates superseded by your new domain controller certificate generate an archive


event in the event log. The archive event contains the certificate template name and
thumbprint of the certificate that was superseded by the new certificate.

Certificate Manager
You can use the Certificate Manager console to validate the domain controller has the
properly enrolled certificate based on the correct certificate template with the proper
EKUs. Use certlm.msc to view certificate in the local computers certificate stores. Expand
the Personal store and view the certificates enrolled for the computer. Archived
certificates don't appear in Certificate Manager.

Certutil.exe
You can use certutil.exe command to view enrolled certificates in the local computer.
Certutil shows enrolled and archived certificates for the local computer. From an
elevated command prompt, run certutil.exe -q -store my to view locally enrolled
certificates.

To view detailed information about each certificate in the store, use certutil.exe -q -v
-store my to validate automatic certificate enrollment enrolled the proper certificates.

Troubleshooting
Windows triggers automatic certificate enrollment for the computer during boot, and
when Group Policy updates. You can refresh Group Policy from an elevated command
prompt using gpupdate.exe /force .

Alternatively, you can forcefully trigger automatic certificate enrollment using


certreq.exe -autoenroll -q from an elevated command prompt.

Use the event logs to monitor certificate enrollment and archive. Review the
configuration, such as publishing certificate templates to issuing certification authority
and the allow auto enrollment permissions.

Next: prepare and deploy AD FS >


Prepare and deploy Active Directory
Federation Services - on-premises key
trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: key trust
Join type: domain join

Windows Hello for Business works exclusively with the Active Directory Federation
Service (AD FS) role included with Windows Server. The on-premises key trust
deployment model uses AD FS for key registration and device registration.

The following guidance describes the deployment of a new instance of AD FS using the
Windows Information Database (WID) as the configuration database.
WID is ideal for environments with no more than 30 federation servers and no more
than 100 relying party trusts. If your environment exceeds either of these factors, or
needs to provide SAML artifact resolution, token replay detection, or needs AD FS to
operate as a federated provider role, then the deployment requires the use of SQL as a
configuration database.
To deploy AD FS using SQL as its configuration database, review the Deploying a
Federation Server Farm checklist.

A new AD FS farm should have a minimum of two federation servers for proper load
balancing, which can be accomplished with external networking peripherals, or with
using the Network Load Balancing Role included in Windows Server.

Prepare the AD FS deployment by installing and updating two Windows Servers.

Enroll for a TLS server authentication certificate


Typically, a federation service is an edge facing role. However, the federation services
and instance used with the on-premises deployment of Windows Hello for Business
does not need Internet connectivity.
The AD FS role needs a server authentication certificate for the federation services, and
you can use a certificate issued by your enterprise (internal) CA. The server
authentication certificate should have the following names included in the certificate, if
you are requesting an individual certificate for each node in the federation farm:

Subject Name: the internal FQDN of the federation server


Subject Alternate Name: the federation service name (e.g. sts.corp.contoso.com) or
an appropriate wildcard entry (e.g. *.corp.contoso.com)

The federation service name is set when the AD FS role is configured. You can choose
any name, but that name must be different than the name of the server or host. For
example, you can name the host server adfs and the federation service sts. In this
example, the FQDN of the host is adfs.corp.contoso.com and the FQDN of the federation
service is sts.corp.contoso.com.

You can also issue one certificate for all hosts in the farm. If you chose this option, leave
the subject name blank, and include all the names in the subject alternate name when
creating the certificate request. All names should include the FQDN of each host in the
farm and the federation service name.

When creating a wildcard certificate, mark the private key as exportable, so that the
same certificate can be deployed across each federation server and web application
proxy within the AD FS farm. Note that the certificate must be trusted (chain to a trusted
root CA). Once you have successfully requested and enrolled the server authentication
certificate on one node, you can export the certificate and private key to a PFX file using
the Certificate Manager console. You can then import the certificate on the remaining
nodes in the AD FS farm.

Be sure to enroll or import the certificate into the AD FS server's computer certificate
store. Also, ensure all nodes in the farm have the proper TLS server authentication
certificate.

AD FS authentication certificate enrollment


Sign-in the federation server with domain administrator equivalent credentials.

1. Start the Local Computer Certificate Manager (certlm.msc)


2. Expand the Personal node in the navigation pane
3. Right-click Personal. Select All Tasks > Request New Certificate
4. Select Next on the Before You Begin page
5. Select Next on the Select Certificate Enrollment Policy page
6. On the Request Certificates page, select the Internal Web Server check box
7. Select the ⚠️More information is required to enroll for this certificate. Click
here to configure settings link

8. Under Subject name, select Common Name from the Type list. Type the FQDN of
the computer hosting the AD FS role and then select Add
9. Under Alternative name, select DNS from the Type list. Type the FQDN of the
name that you will use for your federation services (sts.corp.contoso.com). The
name you use here MUST match the name you use when configuring the AD FS
server role. Select Add and OK when finished
10. Select Enroll

A server authentication certificate should appear in the computer's personal certificate


store.

Deploy the AD FS role


AD FS provides device registration and key registration services to support the Windows
Hello for Business on-premises deployments.

) Important

Finish the entire AD FS configuration on the first server in the farm before adding
the second server to the AD FS farm. Once complete, the second server receives the
configuration through the shared configuration database when it is added the AD
FS farm.

Sign-in the federation server with Enterprise Administrator equivalent credentials.

1. Start Server Manager. Select Local Server in the navigation pane


2. Select Manage > Add Roles and Features
3. Select Next on the Before you begin page
4. On the Select installation type page, select Role-based or feature-based
installation > Next
5. On the Select destination server page, choose Select a server from the server
pool. Select the federation server from the Server Pool list and Next
6. On the Select server roles page, select Active Directory Federation Services and
Next
7. Select Next on the Select features page
8. Select Next on the Active Directory Federation Service page
9. Select Install to start the role installation

Review to validate the AD FS deployment


Before you continue with the deployment, validate your deployment progress by
reviewing the following items:

" Confirm the AD FS farm uses the correct database configuration


" Confirm the AD FS farm has an adequate number of nodes and is properly load
balanced for the anticipated load
" Confirm all AD FS servers in the farm have the latest updates installed
" Confirm all AD FS servers have a valid server authentication certificate

Device registration service account


prerequisites
The use of Group Managed Service Accounts (GMSA) is the preferred way to deploy
service accounts for services that support them. GMSAs have security advantages over
normal user accounts because Windows handles password management. This means
the password is long, complex, and changes periodically. AD FS supports GMSAs, and it
should be configured using them for additional security.

GSMA uses the Microsoft Key Distribution Service that is located on the domain
controllers. Before you can create a GSMA, you must first create a root key for the
service. You can skip this if your environment already uses GSMA.

Create KDS Root Key


Sign-in a domain controller with Enterprise Administrator equivalent credentials.
Start an elevated PowerShell console and execute the following command:

PowerShell

Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)

Configure the Active Directory Federation


Service Role
Use the following procedures to configure AD FS.

Sign-in to the federation server with Domain Administrator equivalent credentials. These
procedures assume you are configuring the first federation server in a federation server
farm.

1. Start Server Manager


2. Select the notification flag in the upper right corner and select Configure the
federation services on this server
3. On the Welcome page, select Create the first federation server farm > Next
4. On the Connect to Active Directory Domain Services page, select Next
5. On the Specify Service Properties page, select the recently enrolled or imported
certificate from the SSL Certificate list. The certificate is likely named after your
federation service, such as sts.corp.contoso.com
6. Select the federation service name from the Federation Service Name list
7. Type the Federation Service Display Name in the text box. This is the name users
see when signing in. Select Next
8. On the Specify Service Account page, select Create a Group Managed Service
Account. In the Account Name box, type adfssvc
9. On the Specify Configuration Database page, select Create a database on this
server using Windows Internal Database and select Next
10. On the Review Options page, select Next
11. On the Pre-requisite Checks page, select Configure
12. When the process completes, select Close

Add the AD FS service account to the Key Admins group


During Windows Hello for Business enrollment, the public key is registered in an
attribute of the user object in Active Directory. To ensure that the AD FS service can add
and remove keys are part of its normal workflow, it must be a member of the Key
Admins global group.
Sign-in to a domain controller or management workstation with Domain Administrator
equivalent credentials.

1. Open Active Directory Users and Computers


2. Select the Users container in the navigation pane
3. Right-click Key Admins in the details pane and select Properties
4. Select the Members > Add…
5. In the Enter the object names to select text box, type adfssvc. Select OK
6. Select OK to return to Active Directory Users and Computers
7. Change to server hosting the AD FS role and restart it

Configure the device registration service


Sign-in to the federation server with Enterprise Administrator equivalent credentials.
These instructions assume you are configuring the first federation server in a federation
server farm.

1. Open the AD FS management console


2. In the navigation pane, expand Service. Select Device Registration
3. In the details pane, select Configure device registration
4. In the Configure Device Registration dialog, Select OK

Triggering device registration from AD FS, creates the service connection point (SCP) in
the Active Directory configuration partition. The SCP is used to store the device
registration information that Windows clients will automatically discover.

Review to validate the AD FS and Active


Directory configuration
Before you continue with the deployment, validate your deployment progress by
reviewing the following items:

" Record the information about the AD FS certificate, and set a renewal reminder at
least six weeks before it expires. Relevant information includes: certificate serial
number, thumbprint, common name, subject alternate name, name of the physical
host server, the issued date, the expiration date, and issuing CA vendor (if a third-
party certificate)
" Confirm you added the AD FS service account to the KeyAdmins group
" Confirm you enabled the Device Registration service

Additional federation servers


Organizations should deploy more than one federation server in their federation farm
for high-availability. You should have a minimum of two federation services in your AD
FS farm, however most organizations are likely to have more. This largely depends on
the number of devices and users using the services provided by the AD FS farm.

Server authentication certificate


Each server you add to the AD FS farm must have a proper server authentication
certificate. Refer to the Enroll for a TLS Server Authentication Certificate section of this
document to determine the requirements for your server authentication certificate. As
previously stated, AD FS servers used exclusively for on-premises deployments of
Windows Hello for Business can use enterprise server authentication certificates rather
than server authentication certificates issued by public certificate authorities.

Install additional servers


Adding federation servers to the existing AD FS farm begins with ensuring the server are
fully patched, to include Windows Server 2016 Update needed to support Windows
Hello for Business deployments (https://aka.ms/whfbadfs1703 ). Next, install the Active
Directory Federation Service role on the additional servers and then configure the server
as an additional server in an existing farm.

Load balance AD FS
Many environments load balance using hardware devices. Environments without
hardware load-balancing capabilities can take advantage the network load-balancing
feature included in Windows Server to load balance the AD FS servers in the federation
farm. Install the Windows Network Load Balancing feature on all nodes participating in
the AD FS farm that should be load balanced.

Install Network Load Balancing Feature on AD FS Servers


Sign-in the federation server with Enterprise Administrator equivalent credentials.

1. Start Server Manager. Select Local Server in the navigation pane


2. Select Manage and then select Add Roles and Features
3. Select Next On the Before you begin page
4. On the Select installation type page, select Role-based or feature-based
installation and select Next
5. On the Select destination server page, choose Select a server from the server
pool. Select the federation server from the Server Pool list. Select Next
6. On the Select server roles page, select Next
7. Select Network Load Balancing on the Select features page
8. Select Install to start the feature installation

Configure Network Load Balancing for AD FS


Before you can load balance all the nodes in the AD FS farm, you must first create a new
load balance cluster. Once you have created the cluster, then you can add new nodes to
that cluster.

Sign-in a node of the federation farm with Administrator equivalent credentials.

1. Open Network Load Balancing Manager from Administrative Tools


2. Right-click Network Load Balancing Clusters, and then select New Cluster
3. To connect to the host that is to be a part of the new cluster, in the Host text box,
type the name of the host, and then select Connect
4. Select the interface that you want to use with the cluster, and then select Next (the
interface hosts the virtual IP address and receives the client traffic to load balance)
5. In Host Parameters, select a value in Priority (Unique host identifier). This
parameter specifies a unique ID for each host. The host with the lowest numerical
priority among the current members of the cluster handles all of the cluster's
network traffic that is not covered by a port rule. Select Next
6. In Cluster IP Addresses, select Add and type the cluster IP address that is shared
by every host in the cluster. NLB adds this IP address to the TCP/IP stack on the
selected interface of all hosts that are chosen to be part of the cluster. Select Next
7. In Cluster Parameters, select values in IP Address and Subnet mask (for IPv6
addresses, a subnet mask value is not needed). Type the full Internet name that
users will use to access this NLB cluster
8. In Cluster operation mode, select Unicast to specify that a unicast media access
control (MAC) address should be used for cluster operations. In unicast mode, the
MAC address of the cluster is assigned to the network adapter of the computer,
and the built-in MAC address of the network adapter is not used. We recommend
that you accept the unicast default settings. Select Next
9. In Port Rules, select Edit to modify the default port rules to use port 443

Additional AD FS Servers
1. To add more hosts to the cluster, right-click the new cluster, and then select Add
Host to Cluster
2. Configure the host parameters (including host priority, dedicated IP addresses, and
load weight) for the additional hosts by following the same instructions that you
used to configure the initial host. Because you are adding hosts to an already
configured cluster, all the cluster-wide parameters remain the same

Configure DNS for Device Registration


Sign-in the domain controller or administrative workstation with domain administrator
equivalent credentials.
You'll need the federation service name to complete this task. You can view the
federation service name by selecting Edit Federation Service Properties from the Action
pan of the AD FS management console, or by using (Get-AdfsProperties).Hostname.
(PowerShell) on the AD FS server.

1. Open the DNS Management console


2. In the navigation pane, expand the domain controller name node and Forward
Lookup Zones
3. In the navigation pane, select the node that has the name of your internal Active
Directory domain name
4. In the navigation pane, right-click the domain name node and select New Host (A
or AAAA)
5. In the name box, type the name of the federation service. In the IP address box,
type the IP address of your federation server. Select Add Host
6. Right-click the <domain_name> node and select New Alias (CNAME)
7. In the New Resource Record dialog box, type enterpriseregistration in the Alias
name box
8. In the fully qualified domain name (FQDN) of the target host box, type
federation_service_farm_name.<domain_name_fqdn , and select OK

9. Close the DNS Management console

7 Note

If your forest has multiple UPN suffixes, please make sure that
enterpriseregistration.<upnsuffix_fqdn> is present for each suffix.

Configure the Intranet Zone to include the


federation service
The Windows Hello provisioning presents web pages from the federation service.
Configuring the intranet zone to include the federation service enables the user to
authenticate to the federation service using integrated authentication. Without this
setting, the connection to the federation service during Windows Hello provisioning
prompts the user for authentication.

Create an Intranet Zone Group Policy


Sign-in the domain controller or administrative workstation with Domain Admin
equivalent credentials
1. Start the Group Policy Management Console (gpmc.msc)
2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Right-click Group Policy object and select New
4. Type Intranet Zone Settings in the name box and select OK
5. In the content pane, right-click the Intranet Zone Settings Group Policy object and
select Edit
6. In the navigation pane, expand Policies under Computer Configuration
7. Expand Administrative Templates > Windows Component > Internet Explorer >
Internet Control Panel >Security Page. Open Site to Zone Assignment List
8. Select Enable > Show. In the Value Name column, type the url of the federation
service beginning with https. In the Value column, type the number 1. Select OK
twice, then close the Group Policy Management Editor

Deploy the Intranet Zone Group Policy object


1. Start the Group Policy Management Console (gpmc.msc)
2. In the navigation pane, expand the domain and right-click the node that has your
Active Directory domain name and select Link an existing GPO…
3. In the Select GPO dialog box, select Intranet Zone Settings or the name of the
Windows Hello for Business Group Policy object you previously created and select
OK

Review to validate the configuration


Before you continue with the deployment, validate your deployment progress by
reviewing the following items:

" Confirm all AD FS servers have a valid server authentication certificate. The subject
of the certificate is the common name (FQDN) of the host or a wildcard name. The
alternate name of the certificate contains a wildcard or the FQDN of the federation
service
" Confirm the AD FS farm has an adequate number of nodes and is properly load
balanced for the anticipated load
" Confirm you restarted the AD FS service
" Confirm you created a DNS A Record for the federation service and the IP address
used is the load-balanced IP address
" Confirm you created and deployed the Intranet Zone settings to prevent double
authentication to the federation server
Next: validate and deploy multi-factor authentication (MFA)
Validate and deploy multi-factor
authentication - on-premises key trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: key trust
Join type: domain join

Windows Hello for Business requires users perform multi-factor authentication (MFA)
prior to enroll in the service. On-premises deployments can use, as MFA option:

certificates
third-party authentication providers for AD FS
custom authentication provider for AD FS

) Important

As of July 1, 2019, Microsoft will no longer offer MFA Server for new deployments.
New customers who would like to require multi-factor authentication from their
users should use cloud-based Azure AD Multi-Factor Authentication. Existing
customers who have activated MFA Server prior to July 1 will be able to download
the latest version, future updates and generate activation credentials as usual.

For information on available third-party authentication methods see Configure


Additional Authentication Methods for AD FS. For creating a custom authentication
method see Build a Custom Authentication Method for AD FS in Windows Server

Follow the integration and deployment guide for the authentication provider you select
to integrate and deploy it to AD FS. Make sure that the authentication provider is
selected as a multi-factor authentication option in the AD FS authentication policy. For
information on configuring AD FS authentication policies see Configure Authentication
Policies.

Next: configure Windows Hello for Business Policy settings


Configure Windows Hello for Business
group policy settings - on-premises key
trust
Article • 01/24/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: key trust
Join type: domain join

On-premises key trust deployments of Windows Hello for Business need one Group
Policy setting: Enable Windows Hello for Business. The Group Policy setting determines
whether users are allowed, and prompted, to enroll for Windows Hello for Business. It
can be configured for computers or users.

If you configure the Group Policy for computers, all users that sign-in to those
computers will be allowed and prompted to enroll for Windows Hello for Business. If
you configure the Group Policy for users, only those users will be allowed and prompted
to enroll for Windows Hello for Business.

Enable Windows Hello for Business group


policy setting
The Group Policy setting determines whether users are allowed, and prompted, to enroll
for Windows Hello for Business. It can be configured for computers or users.

If you configure the Group Policy for computers, all users that sign-in to those
computers will be allowed and prompted to enroll for Windows Hello for Business. If
you configure the Group Policy for users, only those users will be allowed and prompted
to enroll for Windows Hello for Business.

Create the GPO


Sign in to a domain controller or management workstations with Domain Administrator
equivalent credentials.
1. Start the Group Policy Management Console (gpmc.msc)
2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Right-click Group Policy object and select New
4. Type Enable Windows Hello for Business in the name box and select OK
5. In the content pane, right-click the Enable Windows Hello for Business Group
Policy object and select Edit
6. In the navigation pane, select **User Configuration > Policies > Administrative
Templates > Windows Component > Windows Hello for Business
7. In the content pane, double-click Use Windows Hello for Business. Select Enable
and OK
8. Close the Group Policy Management Editor

Configure security in the Windows Hello for


Business GPO
The best way to deploy the Windows Hello for Business Group Policy object is to use
security group filtering. The enables you to easily manage the users that should receive
Windows Hello for Business by simply adding them to a group. This enables you to
deploy Windows Hello for Business in phases.

Sign in to a domain controller or management workstations with Domain Administrator


equivalent credentials.

1. Start the Group Policy Management Console (gpmc.msc)


2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Double-click the Enable Windows Hello for Business Group Policy object
4. In the Security Filtering section of the content pane, select Add. Type Windows
Hello for Business Users or the name of the security group you previously created
and select OK
5. Select the Delegation tab. Select Authenticated Users and Advanced
6. In the Group or User names list, select Authenticated Users. In the Permissions for
Authenticated Users list, clear the Allow check box for the Apply Group Policy
permission. Select OK

Deploy the Windows Hello for Business Group


Policy object
The application of the Windows Hello for Business Group Policy object uses security
group filtering. This solution enables you to link the Group Policy object at the domain
level, ensuring the GPO is within scope to all users. However, the security group filtering
ensures that only the users included in the Windows Hello for Business Users global
group receive and apply the Group Policy object, which results in the provisioning of
Windows Hello for Business.

1. Start the Group Policy Management Console (gpmc.msc)


2. In the navigation pane, expand the domain and right-click the node that has your
Active Directory domain name and select Link an existing GPO…
3. In the Select GPO dialog box, select Enable Windows Hello for Business or the
name of the Windows Hello for Business Group Policy object you previously
created and select OK

Other Related Group Policy settings


There are other Windows Hello for Business policy settings you can configure to
manage your Windows Hello for Business deployment. These policy settings are
computer-based policy setting; so they are applicable to any user that sign-in from a
computer with these policy settings.

Use a hardware security device


The default configuration for Windows Hello for Business is to prefer hardware
protected credentials; however, not all computers are able to create hardware protected
credentials. When Windows Hello for Business enrollment encounters a computer that
cannot create a hardware protected credential, it will create a software-based credential.

You can enable and deploy the Use a hardware security device Group Policy Setting to
force Windows Hello for Business to only create hardware protected credentials. Users
that sign-in from a computer incapable of creating a hardware protected credential do
not enroll for Windows Hello for Business.

Another policy setting becomes available when you enable the Use a hardware security
device Group Policy setting that enables you to prevent Windows Hello for Business
enrollment from using version 1.2 Trusted Platform Modules (TPM). Version 1.2 TPMs
typically perform cryptographic operations slower than version 2.0 TPMs and are more
unforgiving during anti-hammering and PIN lockout activities. Some organizations may
not want slow sign-in performance and management overhead associated with version
1.2 TPMs. To prevent Windows Hello for Business from using version 1.2 TPMs, select
the TPM 1.2 check box after you enable the Use a hardware security device Group Policy
object.

Use biometrics
Windows Hello for Business provides a great user experience when combined with the
use of biometrics. Rather than providing a PIN to sign-in, a user can use a fingerprint or
facial recognition to sign-in to Windows, without sacrificing security.

The default Windows Hello for Business enables users to enroll and use biometrics.
However, some organization may want more time before using biometrics and want to
disable their use until they are ready. To not allow users to use biometrics, configure the
Use biometrics Group Policy setting to disabled and apply it to your computers. The
policy setting disables all biometrics. Currently, Windows does not provide the ability to
set granular policies that enable you to disable specific modalities of biometrics, such as
allowing facial recognition, but disallowing fingerprint recognition.

PIN Complexity
PIN complexity is not specific to Windows Hello for Business. Windows enables users to
use PINs outside of Windows Hello for Business. PIN Complexity Group Policy settings
apply to all uses of PINs, even when Windows Hello for Business is not deployed.

Windows provides eight PIN Complexity Group Policy settings that give you granular
control over PIN creation and management. You can deploy these policy settings to
computers, where they affect all users creating PINs on that computer; or, you can
deploy these settings to users, where they affect those users creating PINs regardless of
the computer they use. If you deploy both computer and user PIN complexity Group
Policy settings, the user policy settings have precedence over computer policy settings.
Also, this conflict resolution is based on the last applied policy. Windows does not
merge the policy settings automatically. The policy settings included are:

Require digits
Require lowercase letters
Maximum PIN length
Minimum PIN length
Expiration
History
Require special characters
Require uppercase letters
The settings can be found in Administrative Templates\System\PIN Complexity, under
both the Computer and User Configuration nodes of the Group Policy editor.

Review to validate the configuration


Before you continue with the deployment, validate your deployment progress by
reviewing the following items:

" Confirm you configured the Enable Windows Hello for Business to the scope that
matches your deployment (Computer vs. User)
" Confirm you configured the proper security settings for the Group Policy object
" Confirm you removed the allow permission for Apply Group Policy for Domain
Users (Domain Users must always have the read permissions)
" Confirm you added the Windows Hello for Business Users group to the Group
Policy object, and gave the group the allow permission to Apply Group Policy
" Linked the Group Policy object to the correct locations within Active Directory
" Deployed any additional Windows Hello for Business Group Policy settings

Add users to the Windows Hello for Business


Users group
Users must receive the Windows Hello for Business group policy settings and have the
proper permission to enroll for the Windows Hello for Business Authentication
certificate. You can provide users with these settings and permissions by adding the
group used synchronize users to the Windows Hello for Business Users group. Users and
groups that are not members of this group will not attempt to enroll for Windows Hello
for Business.
Deployment guide overview - on-
premises certificate trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: certificate trust
Join type: domain join

Windows Hello for Business replaces username and password authentication to


Windows with an asymmetric key pair. This deployment guide provides the information
to deploy Windows Hello for Business in an on-premises environment:

1. Validate Active Directory prerequisites


2. Validate and configure a PKI
3. Prepare and deploy AD FS
4. Validate and deploy multi-factor authentication (MFA)
5. Configure Windows Hello for Business Policy settings
Validate Active Directory prerequisites -
on-premises certificate trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: certificate trust
Join type: domain join

The key registration process for the on-premises deployment of Windows Hello for
Business requires the Windows Server 2016 Active Directory or later schema.

Create the Windows Hello for Business Users


security group
The Windows Hello for Business Users group is used to make it easy to deploy Windows
Hello for Business in phases. You assign Group Policy permissions to this group to
simplify the deployment by adding the users to the group. This provides users with the
proper permissions to provision Windows Hello for Business.

Sign-in to a domain controller or to a management workstation with a Domain


Administrator equivalent credentials.

1. Open Active Directory Users and Computers


2. Select View > Advanced Features
3. Expand the domain node from the navigation pane
4. Right-click the Users container. Select New > Group
5. Type Windows Hello for Business Users in the Group Name
6. Select OK

Next: validate and configure PKI >


Configure and validate the Public Key
Infrastructure - on-premises certificate
trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: certificate trust
Join type: domain join

Windows Hello for Business must have a Public Key Infrastructure (PKI) when using the
key trust or certificate trust models. The domain controllers must have a certificate, which
serves as a root of trust for clients. The certificate ensures that clients don't
communicate with rogue domain controllers. The certificate trust model extends
certificate issuance to client computers. During Windows Hello for Business
provisioning, the user receives a sign-in certificate.

Deploy an enterprise certification authority


This guide assumes most enterprises have an existing public key infrastructure. Windows
Hello for Business depends on an enterprise PKI running the Windows Server Active
Directory Certificate Services role.
If you don't have an existing PKI, review Certification Authority Guidance to properly
design your infrastructure. Then, consult the Test Lab Guide: Deploying an AD CS Two-
Tier PKI Hierarchy for instructions on how to configure your PKI using the information
from your design session.

Lab-based PKI
The following instructions may be used to deploy simple public key infrastructure that is
suitable for a lab environment.

Sign in using Enterprise Administrator equivalent credentials on a Windows Server where


you want the certification authority (CA) installed.
7 Note

Never install a certification authority on a domain controller in a production


environment.

1. Open an elevated Windows PowerShell prompt


2. Use the following command to install the Active Directory Certificate Services role.

PowerShell

Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools

3. Use the following command to configure the CA using a basic certification


authority configuration

PowerShell

Install-AdcsCertificationAuthority

Configure the enterprise PKI

Configure domain controller certificates


Clients must trust the domain controllers, and the best way to enable the trust is to
ensure that each domain controller has a Kerberos Authentication certificate. Installing a
certificate on the domain controllers enables the Key Distribution Center (KDC) to prove
its identity to other members of the domain. The certificates provide clients a root of
trust external to the domain, namely the enterprise certification authority.

Domain controllers automatically request a domain controller certificate (if published)


when they discover an enterprise CA is added to Active Directory. The certificates based
on the Domain Controller and Domain Controller Authentication certificate templates
don't include the KDC Authentication object identifier (OID), which was later added to
the Kerberos RFC. Therefore, domain controllers need to request a certificate based on
the Kerberos Authentication certificate template.

By default, the Active Directory CA provides and publishes the Kerberos Authentication
certificate template. The cryptography configuration included in the template is based
on older and less performant cryptography APIs. To ensure domain controllers request
the proper certificate with the best available cryptography, use the Kerberos
Authentication certificate template as a baseline to create an updated domain controller
certificate template.

) Important

The certificates issued to the domain controllers must meet the following
requirements:

The Certificate Revocation List (CRL) distribution point extension must point to
a valid CRL, or an Authority Information Access (AIA) extension that points to
an Online Certificate Status Protocol (OCSP) responder
Optionally, the certificate Subject section could contain the directory path of
the server object (the distinguished name)
The certificate Key Usage section must contain Digital Signature and Key
Encipherment
Optionally, the certificate Basic Constraints section should contain: [Subject
Type=End Entity, Path Length Constraint=None]

The certificate extended key usage section must contain Client Authentication
( 1.3.6.1.5.5.7.3.2 ), Server Authentication ( 1.3.6.1.5.5.7.3.1 ), and KDC
Authentication ( 1.3.6.1.5.2.3.5 )
The certificate Subject Alternative Name section must contain the Domain
Name System (DNS) name
The certificate template must have an extension that has the value
DomainController , encoded as a BMPstring. If you are using Windows Server

Enterprise Certificate Authority, this extension is already included in the


domain controller certificate template
The domain controller certificate must be installed in the local computer's
certificate store

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates > Manage
3. In the Certificate Template Console, right-click the Kerberos Authentication
template in the details pane and select Duplicate Template
4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list
5. On the General tab

Type Domain Controller Authentication (Kerberos) in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

7 Note

If you use different template names, you'll need to remember and substitute
these names in different portions of the lab.

6. On the Subject Name tab:

Select the Build from this Active Directory information button if it isn't
already selected
Select None from the Subject name format list
Select DNS name from the Include this information in alternate subject list
Clear all other items

7. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

8. Select OK
9. Close the console

Supersede existing domain controller certificates


The domain controllers may have an existing domain controller certificate. The Active
Directory Certificate Services provides a default certificate template for domain
controllers called domain controller certificate. Later releases of Windows Server
provided a new certificate template called domain controller authentication certificate.
These certificate templates were provided prior to the update of the Kerberos
specification that stated Key Distribution Centers (KDCs) performing certificate
authentication needed to include the KDC Authentication extension.

The Kerberos Authentication certificate template is the most current certificate template
designated for domain controllers, and should be the one you deploy to all your domain
controllers.
The autoenrollment feature allows you to replace the domain controller certificates. Use
the following configuration to replace older domain controller certificates with new
ones, using the Kerberos Authentication certificate template.

Sign in to a CA or management workstations with Enterprise Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates > Manage
3. In the Certificate Template Console, right-click the Domain Controller
Authentication (Kerberos) (or the name of the certificate template you created in
the previous section) template in the details pane and select Properties
4. Select the Superseded Templates tab. Select Add
5. From the Add Superseded Template dialog, select the Domain Controller
certificate template and select OK > Add
6. From the Add Superseded Template dialog, select the Domain Controller
Authentication certificate template and select OK
7. From the Add Superseded Template dialog, select the Kerberos Authentication
certificate template and select OK
8. Add any other enterprise certificate templates that were previously configured for
domain controllers to the Superseded Templates tab
9. Select OK and close the Certificate Templates console

The certificate template is configured to supersede all the certificate templates provided
in the superseded templates list.
However, the certificate template and the superseding of certificate templates isn't
active until the template is published to one or more certificate authorities.

7 Note

The domain controller's certificate must chain to a root in the NTAuth store. By
default, the Active Directory Certificate Authority's root certificate is added to the
NTAuth store. If you are using a third-party CA, this may not be done by default. If
the domain controller certificate does not chain to a root in the NTAuth store, user
authentication will fail. To see all certificates in the NTAuth store, use the following
command:

Certutil -viewstore -enterprise NTAuth

Configure an internal web server certificate template


Windows clients communicate with AD FS via HTTPS. To meet this need, a server
authentication certificate must be issued to all the nodes in the AD FS farm. On-
premises deployments can use a server authentication certificate issued by the
enterprise PKI. A server authentication certificate template must be configured, so the
AD FS nodes can request a certificate.

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates and select Manage
3. In the Certificate Template Console, right-click the Web Server template in the
details pane and select Duplicate Template
4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list

5. On the General tab:

Type Internal Web Server in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

7 Note

If you use different template names, you'll need to remember and substitute
these names in different portions of the lab.

6. On the Request Handling tab, select Allow private key to be exported


7. On the Subject tab, select the Supply in the request button if it isn't already
selected
8. On the Security tab:

Select Add
Type Domain Computers in the Enter the object names to select box
Select OK
Select the Allow check box next to the Enroll permission

9. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list
Select OK
10. Close the console

Configure an enrollment agent certificate template


A certificate registration authority (CRA) is a trusted authority that validates certificate
request. Once it validates the request, it presents the request to the certification
authority (CA) for issuance. The CA issues the certificate, returns it to the CRA, which
returns the certificate to the requesting user. Windows Hello for Business certificate trust
deployments use AD FS as the CRA.

The CRA enrolls for an enrollment agent certificate. Once the CRA verifies the certificate
request, it signs the certificate request using its enrollment agent certificate and sends it
to the CA. The Windows Hello for Business Authentication certificate template is
configured to only issue certificates to certificate requests that have been signed with an
enrollment agent certificate. The CA only issues a certificate for that template if the
registration authority signs the certificate request.

) Important

Follow the procedures below based on the AD FS service account used in your
environment.

Create an enrollment agent certificate for Group Managed Service


Accounts (GMSA)

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console

2. Right-click Certificate Templates and select Manage

3. In the Certificate Template Console, right-click on the Exchange Enrollment Agent


(Offline request) template details pane and select Duplicate Template

4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list.
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list
5. On the General tab:

Type WHFB Enrollment Agent in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

6. On the Subject tab, select the Supply in the request button if it isn't already
selected

7 Note

Group Managed Service Accounts (GMSA) do not support the Build from this
Active Directory information option and will result in the AD FS server failing
to enroll the enrollment agent certificate. You must configure the certificate
template with Supply in the request to ensure that AD FS servers can perform
the automatic enrollment and renewal of the enrollment agent certificate.

7. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

8. On the Security tab, select Add

9. Select Object Types and select the Service Accounts check box. Select OK

10. Type adfssvc in the Enter the object names to select text box and select OK

11. Select the adfssvc from the Group or users names list. In the Permissions for
adfssvc section:

In the Permissions for adfssvc section, select the Allow check box for the
Enroll permission
Excluding the adfssvc user, clear the Allow check box for the Enroll and
Autoenroll permissions for all other items in the Group or users names list
Select OK

12. Close the console

Create an enrollment agent certificate for a standard service


account
Sign in to a CA or management workstations with Domain Administrator equivalent
credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates and select Manage
3. In the Certificate Template Console, right-click on the Exchange Enrollment Agent
(Offline request) template details pane and select Duplicate Template
4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list.
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list

5. On the General tab:

Type WHFB Enrollment Agent in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

6. On the Subject tab:

Select the Build from this Active Directory information button


Select Fully distinguished name from the Subject name format
Select the User Principal Name (UPN) check box under Include this
information in alternative subject name

7. On the Cryptography tab:

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

8. On the Security tab, select Add


9. Select Object Types and select the Service Accounts check box. Select OK
10. Type adfssvc in the Enter the object names to select text box and select OK
11. Select the adfssvc from the Group or users names list. In the Permissions for
adfssvc section:

In the Permissions for adfssvc section, select the Allow check box for the
Enroll permission
Excluding the adfssvc user, clear the Allow check box for the Enroll and
Autoenroll permissions for all other items in the Group or users names list
Select OK

12. Close the console


Configure a Windows Hello for Business authentication
certificate template
During Windows Hello for Business provisioning, Windows clients request an
authentication certificate from AD FS, which requests the authentication certificate on
behalf of the user. This task configures the Windows Hello for Business authentication
certificate template.

Sign in to a CA or management workstations with Domain Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Right-click Certificate Templates and select Manage
3. Right-click the Smartcard Logon template and choose Duplicate Template
4. On the Compatibility tab:

Clear the Show resulting changes check box


Select Windows Server 2016 from the Certification Authority list
Select Windows 10 / Windows Server 2016 from the Certificate Recipient list

5. On the General tab:

Type WHFB Authentication in Template display name


Adjust the validity and renewal period to meet your enterprise's needs

7 Note

If you use different template names, you'll need to remember and substitute
these names in different portions of the deployment.

6. On the Cryptography tab

Select Key Storage Provider from the Provider Category list


Select RSA from the Algorithm name list
Type 2048 in the Minimum key size text box
Select SHA256 from the Request hash list

7. On the Extensions tab, verify the Application Policies extension includes Smart
Card Logon
8. On the Issuance Requirements tab,

Select the This number of authorized signatures check box. Type 1 in the
text box
Select Application policy from the Policy type required in signature
Select Certificate Request Agent from in the Application policy list
Select the Valid existing certificate option
9. On the Subject tab,

Select the Build from this Active Directory information button


Select Fully distinguished name from the Subject name format list
Select the User Principal Name (UPN) check box under Include this
information in alternative subject name

10. On the Request Handling tab, select the Renew with same key check box
11. On the Security tab, select Add. Target an Active Directory security group that
contains the users that you want to enroll in Windows Hello for Business. For
example, if you have a group called Window Hello for Business Users, type it in the
Enter the object names to select text box and select OK
12. Select the Windows Hello for Business Users from the Group or users names list.
In the Permissions for Windows Hello for Business Users section:

Select the Allow check box for the Enroll permission


Excluding the group above (for example, Window Hello for Business Users),
clear the Allow check box for the Enroll and Autoenroll permissions for all
other entries in the Group or users names section if the check boxes aren't
already cleared
Select OK

13. If you previously issued Windows Hello for Business sign-in certificates using
Configuration Manger and are switching to an AD FS registration authority, then
on the Superseded Templates tab, add the previously used Windows Hello for
Business Authentication template(s), so they'll be superseded by this template for
the users that have Enroll permission for this template
14. Select on the Apply to save changes and close the console

Mark the template as the Windows Hello Sign-in template

Sign in to a CA or management workstations with Enterprise Administrator equivalent


credentials

Open an elevated command prompt end execute the following command

Windows Command Prompt

certutil.exe -dsTemplate WHFBAuthentication msPKI-Private-Key-Flag


+CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY
If the template was changed successfully, the output of the command will contain old
and new values of the template parameters. The new value must contain the
CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY parameter. Example:

Windows Command Prompt

CN=Certificate Templates,CN=Public Key


Services,CN=Services,CN=Configuration,DC=[yourdomain]:WHFBAuthentication

Old Value:
msPKI-Private-Key-Flag REG_DWORD = 5050080 (84213888)
CTPRIVATEKEY_FLAG_REQUIRE_SAME_KEY_RENEWAL -- 80 (128)
CTPRIVATEKEY_FLAG_ATTEST_NONE -- 0
TEMPLATE_SERVER_VER_WINBLUE<<CTPRIVATEKEY_FLAG_SERVERVERSION_SHIFT -- 50000
(327680)
TEMPLATE_CLIENT_VER_WINBLUE<<CTPRIVATEKEY_FLAG_CLIENTVERSION_SHIFT --
5000000 (83886080)

New Value:
msPKI-Private-Key-Flag REG_DWORD = 5250080 (86311040)
CTPRIVATEKEY_FLAG_REQUIRE_SAME_KEY_RENEWAL -- 80 (128)
CTPRIVATEKEY_FLAG_ATTEST_NONE -- 0
TEMPLATE_SERVER_VER_WINBLUE<<CTPRIVATEKEY_FLAG_SERVERVERSION_SHIFT -- 50000
(327680)
CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY -- 200000 (2097152)
TEMPLATE_CLIENT_VER_WINBLUE<<CTPRIVATEKEY_FLAG_CLIENTVERSION_SHIFT --
5000000 (83886080)
CertUtil: -dsTemplate command completed successfully."

7 Note

If you gave your Windows Hello for Business Authentication certificate template a
different name, then replace WHFBAuthentication in the above command with the
name of your certificate template. It's important that you use the template name
rather than the template display name. You can view the template name on the
General tab of the certificate template using the Certificate Template management
console (certtmpl.msc). Or, you can view the template name using the Get-
CATemplate ADCS Administration Windows PowerShell cmdlet on your certification

authority.

Unpublish Superseded Certificate Templates


The certification authority only issues certificates based on published certificate
templates. For security, it's a good practice to unpublish certificate templates that the
CA isn't configured to issue, including the pre-published templates from the role
installation and any superseded templates.

The newly created domain controller authentication certificate template supersedes


previous domain controller certificate templates. Therefore, you need to unpublish these
certificate templates from all issuing certificate authorities.

Sign in to the CA or management workstation with Enterprise Administrator equivalent


credentials.

1. Open the Certification Authority management console


2. Expand the parent node from the navigation pane > Certificate Templates
3. Right-click the Domain Controller certificate template and select Delete. Select Yes
on the Disable certificate templates window
4. Repeat step 3 for the Domain Controller Authentication and Kerberos
Authentication certificate templates

Publish certificate templates to the CA


A certification authority can only issue certificates for certificate templates that are
published to it. If you have more than one CA, and you want more CAs to issue
certificates based on the certificate template, then you must publish the certificate
template to them.

Sign in to the CA or management workstations with Enterprise Admin equivalent


credentials.

1. Open the Certification Authority management console


2. Expand the parent node from the navigation pane
3. Select Certificate Templates in the navigation pane
4. Right-click the Certificate Templates node. Select New > Certificate Template to
issue
5. In the Enable Certificates Templates window, select the Domain Controller
Authentication (Kerberos), Internal Web Server, WHFB Enrollment Agent and WHFB
Authentication templates you created in the previous steps. Select OK to publish
the selected certificate templates to the certification authority
6. If you published the Domain Controller Authentication (Kerberos) certificate
template, then unpublish the certificate templates you included in the superseded
templates list

To unpublish a certificate template, right-click the certificate template you


want to unpublish and select Delete. Select Yes to confirm the operation
7. Close the console

Configure and deploy certificates to domain


controllers

Configure automatic certificate enrollment for the


domain controllers
Domain controllers automatically request a certificate from the Domain controller
certificate template. However, domain controllers are unaware of newer certificate
templates or superseded configurations on certificate templates. For domain controllers
to automatically enroll and renew of certificates, configure a GPO for automatic
certificate enrollment, and link it to the Domain Controllers OU.

1. Open the Group Policy Management Console (gpmc.msc)


2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Right-click Group Policy object and select New
4. Type Domain Controller Auto Certificate Enrollment in the name box and select OK
5. Right-click the Domain Controller Auto Certificate Enrollment Group Policy object
and select Edit
6. In the navigation pane, expand Policies under Computer Configuration
7. Expand Windows Settings > Security Settings > Public Key Policies
8. In the details pane, right-click Certificate Services Client - Auto-Enrollment and
select Properties
9. Select Enabled from the Configuration Model list
10. Select the Renew expired certificates, update pending certificates, and remove
revoked certificates check box
11. Select the Update certificates that use certificate templates check box
12. Select OK
13. Close the Group Policy Management Editor

Deploy the domain controller auto certificate enrollment


GPO
Sign in to domain controller or management workstations with Domain Administrator
equivalent credentials.

1. Start the Group Policy Management Console (gpmc.msc)


2. In the navigation pane, expand the domain and expand the node with the Active
Directory domain name. Right-click the Domain Controllers organizational unit
and select Link an existing GPO…
3. In the Select GPO dialog box, select Domain Controller Auto Certificate Enrollment
or the name of the domain controller certificate enrollment Group Policy object
you previously created
4. Select OK

Validate the configuration


Windows Hello for Business is a distributed system, which on the surface appears
complex and difficult. The key to a successful deployment is to validate phases of work
prior to moving to the next phase.

Confirm your domain controllers enroll the correct certificates and not any superseded
certificate templates. Check that each domain controller completed the certificate
autoenrollment.

Use the event logs


Sign in to domain controller or management workstations with Domain Administrator
equivalent credentials.

1. Using the Event Viewer, navigate to the Application and Services > Microsoft >
Windows > CertificateServices-Lifecycles-System event log
2. Look for an event indicating a new certificate enrollment (autoenrollment):

The details of the event include the certificate template on which the
certificate was issued
The name of the certificate template used to issue the certificate should
match the certificate template name included in the event
The certificate thumbprint and EKUs for the certificate are also included in the
event
The EKU needed for proper Windows Hello for Business authentication is
Kerberos Authentication, in addition to other EKUs provide by the certificate
template

Certificates superseded by your new domain controller certificate generate an archive


event in the event log. The archive event contains the certificate template name and
thumbprint of the certificate that was superseded by the new certificate.
Certificate Manager
You can use the Certificate Manager console to validate the domain controller has the
properly enrolled certificate based on the correct certificate template with the proper
EKUs. Use certlm.msc to view certificate in the local computers certificate stores. Expand
the Personal store and view the certificates enrolled for the computer. Archived
certificates don't appear in Certificate Manager.

Certutil.exe
You can use certutil.exe command to view enrolled certificates in the local computer.
Certutil shows enrolled and archived certificates for the local computer. From an
elevated command prompt, run certutil.exe -q -store my to view locally enrolled
certificates.

To view detailed information about each certificate in the store, use certutil.exe -q -v
-store my to validate automatic certificate enrollment enrolled the proper certificates.

Troubleshooting
Windows triggers automatic certificate enrollment for the computer during boot, and
when Group Policy updates. You can refresh Group Policy from an elevated command
prompt using gpupdate.exe /force .

Alternatively, you can forcefully trigger automatic certificate enrollment using


certreq.exe -autoenroll -q from an elevated command prompt.

Use the event logs to monitor certificate enrollment and archive. Review the
configuration, such as publishing certificate templates to issuing certification authority
and the allow auto enrollment permissions.

Next: prepare and deploy AD FS >


Prepare and deploy Active Directory
Federation Services - on-premises
certificate trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: certificate trust
Join type: domain join

Windows Hello for Business works exclusively with the Active Directory Federation
Service (AD FS) role included with Windows Server. The on-premises certificate trust
deployment model uses AD FS for certificate enrollment and device registration.

The following guidance describes the deployment of a new instance of AD FS using the
Windows Information Database (WID) as the configuration database.
WID is ideal for environments with no more than 30 federation servers and no more
than 100 relying party trusts. If your environment exceeds either of these factors, or
needs to provide SAML artifact resolution, token replay detection, or needs AD FS to
operate as a federated provider role, then the deployment requires the use of SQL as a
configuration database.
To deploy AD FS using SQL as its configuration database, review the Deploying a
Federation Server Farm checklist.

A new AD FS farm should have a minimum of two federation servers for proper load
balancing, which can be accomplished with external networking peripherals, or with
using the Network Load Balancing Role included in Windows Server.

Prepare the AD FS deployment by installing and updating two Windows Servers.

Enroll for a TLS server authentication certificate


Typically, a federation service is an edge facing role. However, the federation services
and instance used with the on-premises deployment of Windows Hello for Business
does not need Internet connectivity.
The AD FS role needs a server authentication certificate for the federation services, and
you can use a certificate issued by your enterprise (internal) CA. The server
authentication certificate should have the following names included in the certificate, if
you are requesting an individual certificate for each node in the federation farm:

Subject Name: the internal FQDN of the federation server


Subject Alternate Name: the federation service name (e.g. sts.corp.contoso.com) or
an appropriate wildcard entry (e.g. *.corp.contoso.com)

The federation service name is set when the AD FS role is configured. You can choose
any name, but that name must be different than the name of the server or host. For
example, you can name the host server adfs and the federation service sts. In this
example, the FQDN of the host is adfs.corp.contoso.com and the FQDN of the federation
service is sts.corp.contoso.com.

You can also issue one certificate for all hosts in the farm. If you chose this option, leave
the subject name blank, and include all the names in the subject alternate name when
creating the certificate request. All names should include the FQDN of each host in the
farm and the federation service name.

When creating a wildcard certificate, mark the private key as exportable, so that the
same certificate can be deployed across each federation server and web application
proxy within the AD FS farm. Note that the certificate must be trusted (chain to a trusted
root CA). Once you have successfully requested and enrolled the server authentication
certificate on one node, you can export the certificate and private key to a PFX file using
the Certificate Manager console. You can then import the certificate on the remaining
nodes in the AD FS farm.

Be sure to enroll or import the certificate into the AD FS server's computer certificate
store. Also, ensure all nodes in the farm have the proper TLS server authentication
certificate.

AD FS authentication certificate enrollment


Sign-in the federation server with domain administrator equivalent credentials.

1. Start the Local Computer Certificate Manager (certlm.msc)


2. Expand the Personal node in the navigation pane
3. Right-click Personal. Select All Tasks > Request New Certificate
4. Select Next on the Before You Begin page
5. Select Next on the Select Certificate Enrollment Policy page
6. On the Request Certificates page, select the Internal Web Server check box
7. Select the ⚠️More information is required to enroll for this certificate. Click
here to configure settings link

8. Under Subject name, select Common Name from the Type list. Type the FQDN of
the computer hosting the AD FS role and then select Add
9. Under Alternative name, select DNS from the Type list. Type the FQDN of the
name that you will use for your federation services (sts.corp.contoso.com). The
name you use here MUST match the name you use when configuring the AD FS
server role. Select Add and OK when finished
10. Select Enroll

A server authentication certificate should appear in the computer's personal certificate


store.

Deploy the AD FS role


AD FS provides the following services to support Windows Hello for Business on-
premises deployments in a certificate trust model:

Device registration
Key registration
Certificate registration authority (CRA)

) Important

Finish the entire AD FS configuration on the first server in the farm before adding
the second server to the AD FS farm. Once complete, the second server receives the
configuration through the shared configuration database when it is added the AD
FS farm.

Sign-in the federation server with Enterprise Administrator equivalent credentials.

1. Start Server Manager. Select Local Server in the navigation pane


2. Select Manage > Add Roles and Features
3. Select Next on the Before you begin page
4. On the Select installation type page, select Role-based or feature-based
installation > Next
5. On the Select destination server page, choose Select a server from the server
pool. Select the federation server from the Server Pool list and Next
6. On the Select server roles page, select Active Directory Federation Services and
Next
7. Select Next on the Select features page
8. Select Next on the Active Directory Federation Service page
9. Select Install to start the role installation

Review to validate the AD FS deployment


Before you continue with the deployment, validate your deployment progress by
reviewing the following items:

" Confirm the AD FS farm uses the correct database configuration


" Confirm the AD FS farm has an adequate number of nodes and is properly load
balanced for the anticipated load
" Confirm all AD FS servers in the farm have the latest updates installed
" Confirm all AD FS servers have a valid server authentication certificate

Device registration service account


prerequisites
The use of Group Managed Service Accounts (GMSA) is the preferred way to deploy
service accounts for services that support them. GMSAs have security advantages over
normal user accounts because Windows handles password management. This means
the password is long, complex, and changes periodically. AD FS supports GMSAs, and it
should be configured using them for additional security.

GSMA uses the Microsoft Key Distribution Service that is located on the domain
controllers. Before you can create a GSMA, you must first create a root key for the
service. You can skip this if your environment already uses GSMA.

Create KDS Root Key


Sign-in a domain controller with Enterprise Administrator equivalent credentials.

Start an elevated PowerShell console and execute the following command:

PowerShell

Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)

Configure the Active Directory Federation


Service Role
Use the following procedures to configure AD FS.

Sign-in to the federation server with Domain Administrator equivalent credentials. These
procedures assume you are configuring the first federation server in a federation server
farm.

1. Start Server Manager


2. Select the notification flag in the upper right corner and select Configure the
federation services on this server
3. On the Welcome page, select Create the first federation server farm > Next
4. On the Connect to Active Directory Domain Services page, select Next
5. On the Specify Service Properties page, select the recently enrolled or imported
certificate from the SSL Certificate list. The certificate is likely named after your
federation service, such as sts.corp.contoso.com
6. Select the federation service name from the Federation Service Name list
7. Type the Federation Service Display Name in the text box. This is the name users
see when signing in. Select Next
8. On the Specify Service Account page, select Create a Group Managed Service
Account. In the Account Name box, type adfssvc
9. On the Specify Configuration Database page, select Create a database on this
server using Windows Internal Database and select Next
10. On the Review Options page, select Next
11. On the Pre-requisite Checks page, select Configure
12. When the process completes, select Close
7 Note

For AD FS 2019 and later in a certificate trust model, a known PRT issue exists. You
may encounter this error in AD FS Admin event logs: Received invalid Oauth
request. The client 'NAME' is forbidden to access the resource with scope 'ugs'. To
remediate this error:

1. Launch AD FS management console. Browse to *Services > Scope


Descriptions
2. Right-click Scope Descriptions and select Add Scope Description
3. Under name type ugs and select Apply > OK
4. Launch PowerShell as an administrator and execute the following commands:

PowerShell

$id = (Get-AdfsApplicationPermission -ServerRoleIdentifiers


'http://schemas.microsoft.com/ws/2009/12/identityserver/selfscope' | ?{
$_.ClientRoleIdentifier -eq '38aa3b87-a06d-4817-b275-7a316988d93b'
}).ObjectIdentifier
Set-AdfsApplicationPermission -TargetIdentifier $id -AddScope 'ugs'

7. Restart the AD FS service


8. Restart the client. User should be prompted to provision Windows Hello for
Business

Add the AD FS service account to the Key Admins group


During Windows Hello for Business enrollment, the public key is registered in an
attribute of the user object in Active Directory. To ensure that the AD FS service can add
and remove keys are part of its normal workflow, it must be a member of the Key
Admins global group.

Sign-in to a domain controller or management workstation with Domain Administrator


equivalent credentials.

1. Open Active Directory Users and Computers


2. Select the Users container in the navigation pane
3. Right-click Key Admins in the details pane and select Properties
4. Select the Members > Add…
5. In the Enter the object names to select text box, type adfssvc. Select OK
6. Select OK to return to Active Directory Users and Computers
7. Change to server hosting the AD FS role and restart it

Sign-in to the federation server with Enterprise Administrator equivalent credentials.


These instructions assume you are configuring the first federation server in a federation
server farm.

1. Open the AD FS management console


2. In the navigation pane, expand Service. Select Device Registration
3. In the details pane, select Configure device registration
4. In the Configure Device Registration dialog, Select OK

Triggering device registration from AD FS, creates the service connection point (SCP) in
the Active Directory configuration partition. The SCP is used to store the device
registration information that Windows clients will automatically discover.

Review to validate the AD FS and Active


Directory configuration
Before you continue with the deployment, validate your deployment progress by
reviewing the following items:

" Record the information about the AD FS certificate, and set a renewal reminder at
least six weeks before it expires. Relevant information includes: certificate serial
number, thumbprint, common name, subject alternate name, name of the physical
host server, the issued date, the expiration date, and issuing CA vendor (if a third-
party certificate)
" Confirm you added the AD FS service account to the KeyAdmins group
" Confirm you enabled the Device Registration service

Configure the certificate registration authority


The Windows Hello for Business on-premises certificate-based deployment uses AD FS
as the certificate registration authority (CRA). The registration authority is responsible
for issuing certificates to users and devices. The registration authority is also responsible
for revoking certificates when users or devices are removed from the environment.

Sign-in the AD FS server with domain administrator equivalent credentials.

Open a Windows PowerShell prompt and type the following command:

PowerShell
Set-AdfsCertificateAuthority -EnrollmentAgent -
EnrollmentAgentCertificateTemplate WHFBEnrollmentAgent -
WindowsHelloCertificateTemplate WHFBAuthentication

7 Note

If you gave your Windows Hello for Business Enrollment Agent and Windows Hello
for Business Authentication certificate templates different names, then replace
WHFBEnrollmentAgent and WHFBAuthentication in the above command with the
name of your certificate templates. It's important that you use the template name
rather than the template display name. You can view the template name on the
General tab of the certificate template by using the Certificate Template
management console (certtmpl.msc). Or, you can view the template name by using
the Get-CATemplate PowerShell cmdlet on a CA.

Enrollment agent certificate enrollment


AD FS performs its own certificate lifecycle management. Once the registration authority
is configured with the proper certificate template, the AD FS server attempts to enroll
the certificate on the first certificate request or when the service first starts.

Approximately 60 days prior to enrollment agent certificate's expiration, the AD FS


service attempts to renew the certificate until it is successful. If the certificate fails to
renew, and the certificate expires, the AD FS server will request a new enrollment agent
certificate. You can view the AD FS event logs to determine the status of the enrollment
agent certificate.

Additional federation servers


Organizations should deploy more than one federation server in their federation farm
for high-availability. You should have a minimum of two federation services in your AD
FS farm, however most organizations are likely to have more. This largely depends on
the number of devices and users using the services provided by the AD FS farm.

Server authentication certificate


Each server you add to the AD FS farm must have a proper server authentication
certificate. Refer to the Enroll for a TLS Server Authentication Certificate section of this
document to determine the requirements for your server authentication certificate. As
previously stated, AD FS servers used exclusively for on-premises deployments of
Windows Hello for Business can use enterprise server authentication certificates rather
than server authentication certificates issued by public certificate authorities.

Install additional servers


Adding federation servers to the existing AD FS farm begins with ensuring the server are
fully patched, to include Windows Server 2016 Update needed to support Windows
Hello for Business deployments (https://aka.ms/whfbadfs1703 ). Next, install the Active
Directory Federation Service role on the additional servers and then configure the server
as an additional server in an existing farm.

Load balance AD FS
Many environments load balance using hardware devices. Environments without
hardware load-balancing capabilities can take advantage the network load-balancing
feature included in Windows Server to load balance the AD FS servers in the federation
farm. Install the Windows Network Load Balancing feature on all nodes participating in
the AD FS farm that should be load balanced.

Install Network Load Balancing Feature on AD FS Servers


Sign-in the federation server with Enterprise Administrator equivalent credentials.

1. Start Server Manager. Select Local Server in the navigation pane


2. Select Manage and then select Add Roles and Features
3. Select Next On the Before you begin page
4. On the Select installation type page, select Role-based or feature-based
installation and select Next
5. On the Select destination server page, choose Select a server from the server
pool. Select the federation server from the Server Pool list. Select Next
6. On the Select server roles page, select Next
7. Select Network Load Balancing on the Select features page
8. Select Install to start the feature installation

Configure Network Load Balancing for AD FS


Before you can load balance all the nodes in the AD FS farm, you must first create a new
load balance cluster. Once you have created the cluster, then you can add new nodes to
that cluster.
Sign-in a node of the federation farm with Administrator equivalent credentials.

1. Open Network Load Balancing Manager from Administrative Tools


2. Right-click Network Load Balancing Clusters, and then select New Cluster
3. To connect to the host that is to be a part of the new cluster, in the Host text box,
type the name of the host, and then select Connect
4. Select the interface that you want to use with the cluster, and then select Next (the
interface hosts the virtual IP address and receives the client traffic to load balance)
5. In Host Parameters, select a value in Priority (Unique host identifier). This
parameter specifies a unique ID for each host. The host with the lowest numerical
priority among the current members of the cluster handles all of the cluster's
network traffic that is not covered by a port rule. Select Next
6. In Cluster IP Addresses, select Add and type the cluster IP address that is shared
by every host in the cluster. NLB adds this IP address to the TCP/IP stack on the
selected interface of all hosts that are chosen to be part of the cluster. Select Next
7. In Cluster Parameters, select values in IP Address and Subnet mask (for IPv6
addresses, a subnet mask value is not needed). Type the full Internet name that
users will use to access this NLB cluster
8. In Cluster operation mode, select Unicast to specify that a unicast media access
control (MAC) address should be used for cluster operations. In unicast mode, the
MAC address of the cluster is assigned to the network adapter of the computer,
and the built-in MAC address of the network adapter is not used. We recommend
that you accept the unicast default settings. Select Next
9. In Port Rules, select Edit to modify the default port rules to use port 443

Additional AD FS Servers
1. To add more hosts to the cluster, right-click the new cluster, and then select Add
Host to Cluster
2. Configure the host parameters (including host priority, dedicated IP addresses, and
load weight) for the additional hosts by following the same instructions that you
used to configure the initial host. Because you are adding hosts to an already
configured cluster, all the cluster-wide parameters remain the same

Configure DNS for Device Registration


Sign-in the domain controller or administrative workstation with domain administrator
equivalent credentials.
You'll need the federation service name to complete this task. You can view the
federation service name by selecting Edit Federation Service Properties from the Action
pan of the AD FS management console, or by using (Get-AdfsProperties).Hostname.
(PowerShell) on the AD FS server.

1. Open the DNS Management console


2. In the navigation pane, expand the domain controller name node and Forward
Lookup Zones
3. In the navigation pane, select the node that has the name of your internal Active
Directory domain name
4. In the navigation pane, right-click the domain name node and select New Host (A
or AAAA)
5. In the name box, type the name of the federation service. In the IP address box,
type the IP address of your federation server. Select Add Host
6. Right-click the <domain_name> node and select New Alias (CNAME)
7. In the New Resource Record dialog box, type enterpriseregistration in the Alias
name box
8. In the fully qualified domain name (FQDN) of the target host box, type
federation_service_farm_name.<domain_name_fqdn , and select OK

9. Close the DNS Management console

7 Note

If your forest has multiple UPN suffixes, please make sure that
enterpriseregistration.<upnsuffix_fqdn> is present for each suffix.

Configure the Intranet Zone to include the


federation service
The Windows Hello provisioning presents web pages from the federation service.
Configuring the intranet zone to include the federation service enables the user to
authenticate to the federation service using integrated authentication. Without this
setting, the connection to the federation service during Windows Hello provisioning
prompts the user for authentication.

Create an Intranet Zone Group Policy


Sign-in the domain controller or administrative workstation with Domain Admin
equivalent credentials

1. Start the Group Policy Management Console (gpmc.msc)


2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Right-click Group Policy object and select New
4. Type Intranet Zone Settings in the name box and select OK
5. In the content pane, right-click the Intranet Zone Settings Group Policy object and
select Edit
6. In the navigation pane, expand Policies under Computer Configuration
7. Expand Administrative Templates > Windows Component > Internet Explorer >
Internet Control Panel >Security Page. Open Site to Zone Assignment List
8. Select Enable > Show. In the Value Name column, type the url of the federation
service beginning with https. In the Value column, type the number 1. Select OK
twice, then close the Group Policy Management Editor

Deploy the Intranet Zone Group Policy object


1. Start the Group Policy Management Console (gpmc.msc)
2. In the navigation pane, expand the domain and right-click the node that has your
Active Directory domain name and select Link an existing GPO…
3. In the Select GPO dialog box, select Intranet Zone Settings or the name of the
Windows Hello for Business Group Policy object you previously created and select
OK

Review to validate the configuration


Before you continue with the deployment, validate your deployment progress by
reviewing the following items:

" Confirm only the AD FS service account has the allow enroll permission for the
enrollment agent certificate template
" Consider using an HSM to protect the enrollment agent certificate; however,
understand the frequency and quantity of signature operations the enrollment
agent server makes and understand the impact it has on overall performance
" Confirm you properly configured the Windows Hello for Business authentication
certificate template
" Confirm all certificate templates were properly published to the appropriate issuing
certificate authorities
" Confirm the AD FS service account has the allow enroll permission for the Windows
Hello Business authentication certificate template
" Confirm the AD FS certificate registration authority is properly configured using the
Get-AdfsCertificateAuthority Windows PowerShell cmdlet Confirm you restarted
the AD FS service
" Confirm you properly configured load-balancing (hardware or software)
" Confirm you created a DNS A Record for the federation service and the IP address
used is the load-balanced IP address
" Confirm you created and deployed the Intranet Zone settings to prevent double
authentication to the federation server.

Event Logs
Use the event logs on the AD FS service to confirm the service account enrolled for an
enrollment agent certificate. First, look for the AD FS event ID 443 that confirms
certificate enrollment cycle has finished. Once confirmed the AD FS certificate
enrollment cycle completed review the CertificateLifecycle-User event log. In this event
log, look for event ID 1006, which indicates a new certificate was installed. Details of the
event log should show:

The account name under which the certificate was enrolled


The action, which should read enroll -_ The thumbprint of the certificate
The certificate template used to issue the certificate

You cannot use the Certificate Manager to view enrolled certificates for group managed
service accounts. Use the event log information to confirm the AD FS service account
enrolled a certificate. Use certutil.exe to view the details of the certificate shown in the
event log.

Group managed service accounts use user profiles to store user information, which
included enrolled certificates. On the AD FS server, use a command prompt and
navigate to %systemdrive%\users\
<adfsGMSA_name>\appdata\roaming\Microsoft\systemcertificates\my\certificates .

Each file in this folder represents a certificate in the service account's Personal store (You
may need to use dir.exe /A to view the files in the folder). Match the thumbprint of the
certificate from the event log to one of the files in this folder. That file is the certificate.
Use the Certutil -q <certificateThumbprintFileName> to view the basic information
about the certificate.

For detailed information about the certificate, use Certutil -q -v


<certificateThumbprintFileName> .

Next: validate and deploy multi-factor authentication (MFA)


Validate and deploy multi-factor
authentication - on-premises certificate
trust
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: certificate trust
Join type: domain join

Windows Hello for Business requires users perform multi-factor authentication (MFA)
prior to enroll in the service. On-premises deployments can use, as MFA option:

third-party authentication providers for AD FS


custom authentication provider for AD FS

) Important

As of July 1, 2019, Microsoft will no longer offer MFA Server for new deployments.
New customers who would like to require multi-factor authentication from their
users should use cloud-based Azure AD Multi-Factor Authentication. Existing
customers who have activated MFA Server prior to July 1 will be able to download
the latest version, future updates and generate activation credentials as usual.

For information about third-party authentication methods, see Configure Additional


Authentication Methods for AD FS. To create a custom authentication method, see Build
a Custom Authentication Method for AD FS in Windows Server.

Follow the integration and deployment guide for the authentication provider you plan
to integrate to AD FS. Make sure that the authentication provider is selected as a multi-
factor authentication option in the AD FS authentication policy. For information on
configuring AD FS authentication policies, see Configure Authentication Policies.

Next: configure Windows Hello for Business Policy settings


Configure Windows Hello for Business
group policy settings - on-premises
certificate Trust
Article • 02/17/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: on-premises


Trust type: certificate trust
Join type: domain join

On-premises certificate-based deployments of Windows Hello for Business need three


Group Policy settings:

Enable Windows Hello for Business


Use certificate for on-premises authentication
Enable automatic enrollment of certificates

Enable Windows Hello for Business group


policy setting
The group policy setting determines whether users are allowed, and prompted, to enroll
for Windows Hello for Business. It can be configured for computers or users.

If you configure the group policy for computers, all users that sign-in to those
computers will be allowed and prompted to enroll for Windows Hello for Business. If
you configure the group policy for users, only those users will be allowed and prompted
to enroll for Windows Hello for Business.

Use certificate for on-premises authentication


group policy setting
The group policy setting determines if the on-premises deployment uses the key-trust
or certificate trust on-premises authentication model. You must configure this group
policy setting to configure Windows to enroll for a Windows Hello for Business
authentication certificate. If you do not configure this policy setting, Windows considers
the deployment to use key-trust on-premises authentication.

You can configure this setting for computer or users. Deploying this setting to
computers results in all users requesting a Windows Hello for Business authentication
certificate. Deploying this policy setting to a user results in only that user requesting a
Windows Hello for Business authentication certificate. Additionally, you can deploy the
policy setting to a group of users so only those users request a Windows Hello for
Business authentication certificate. If both user and computer policy settings are
deployed, the user policy setting has precedence.

Enable automatic enrollment of certificates


group policy setting
Windows Hello for Business provisioning performs the initial enrollment of the Windows
Hello for Business authentication certificate. This certificate expires based on the
duration configured in the Windows Hello for Business authentication certificate
template. The process requires no user interaction provided the user signs-in using
Windows Hello for Business. The certificate is renewed in the background before it
expires.

Create the GPO


Sign in to a domain controller or management workstations with Domain Administrator
equivalent credentials.

1. Start the Group Policy Management Console (gpmc.msc)


2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Right-click Group Policy object and select New
4. Type Enable Windows Hello for Business in the name box and select OK
5. In the content pane, right-click the Enable Windows Hello for Business Group
Policy object and select Edit
6. In the navigation pane, select User Configuration > Policies > Administrative
Templates > Windows Component > Windows Hello for Business
7. In the content pane, double-click Use Windows Hello for Business. Select Enable
and OK
8. Select Use certificate for on-premises authentication > Enable > OK
9. In the navigation pane, expand Policies > User Configuration
10. Expand Windows Settings > Security Settings > Public Key Policies
11. In the details pane, right-click Certificate Services Client - Auto-Enrollment and
select Properties
12. Select Enabled from the Configuration Model list
13. Select the Renew expired certificates, update pending certificates, and remove
revoked certificates check box
14. Select the Update certificates that use certificate templates check box
15. Select OK and close the Group Policy Management Editor.

Configure security in the Windows Hello for


Business GPO
The best way to deploy the Windows Hello for Business Group Policy object is to use
security group filtering. The enables you to easily manage the users that should receive
Windows Hello for Business by simply adding them to a group. This enables you to
deploy Windows Hello for Business in phases.

Sign in to a domain controller or management workstations with Domain Administrator


equivalent credentials.

1. Start the Group Policy Management Console (gpmc.msc)


2. Expand the domain and select the Group Policy Object node in the navigation
pane
3. Double-click the Enable Windows Hello for Business Group Policy object
4. In the Security Filtering section of the content pane, select Add. Type Windows
Hello for Business Users or the name of the security group you previously created
and select OK
5. Select the Delegation tab. Select Authenticated Users and Advanced
6. In the Group or User names list, select Authenticated Users. In the Permissions for
Authenticated Users list, clear the Allow check box for the Apply Group Policy
permission. Select OK

Deploy the Windows Hello for Business Group


Policy object
The application of the Windows Hello for Business Group Policy object uses security
group filtering. This solution enables you to link the Group Policy object at the domain
level, ensuring the GPO is within scope to all users. However, the security group filtering
ensures that only the users included in the Windows Hello for Business Users global
group receive and apply the Group Policy object, which results in the provisioning of
Windows Hello for Business.
1. Start the Group Policy Management Console (gpmc.msc)
2. In the navigation pane, expand the domain and right-click the node that has your
Active Directory domain name and select Link an existing GPO…
3. In the Select GPO dialog box, select Enable Windows Hello for Business or the
name of the Windows Hello for Business Group Policy object you previously
created and select OK

Other Related Group Policy settings


There are other Windows Hello for Business policy settings you can configure to
manage your Windows Hello for Business deployment. These policy settings are
computer-based policy setting; so they are applicable to any user that sign-in from a
computer with these policy settings.

Use a hardware security device


The default configuration for Windows Hello for Business is to prefer hardware
protected credentials; however, not all computers are able to create hardware protected
credentials. When Windows Hello for Business enrollment encounters a computer that
cannot create a hardware protected credential, it will create a software-based credential.

You can enable and deploy the Use a hardware security device Group Policy Setting to
force Windows Hello for Business to only create hardware protected credentials. Users
that sign-in from a computer incapable of creating a hardware protected credential do
not enroll for Windows Hello for Business.

Another policy setting becomes available when you enable the Use a hardware security
device Group Policy setting that enables you to prevent Windows Hello for Business
enrollment from using version 1.2 Trusted Platform Modules (TPM). Version 1.2 TPMs
typically perform cryptographic operations slower than version 2.0 TPMs and are more
unforgiving during anti-hammering and PIN lockout activities. Some organizations may
not want slow sign-in performance and management overhead associated with version
1.2 TPMs. To prevent Windows Hello for Business from using version 1.2 TPMs, select
the TPM 1.2 check box after you enable the Use a hardware security device Group Policy
object.

Use biometrics
Windows Hello for Business provides a great user experience when combined with the
use of biometrics. Rather than providing a PIN to sign-in, a user can use a fingerprint or
facial recognition to sign-in to Windows, without sacrificing security.
The default Windows Hello for Business enables users to enroll and use biometrics.
However, some organization may want more time before using biometrics and want to
disable their use until they are ready. To not allow users to use biometrics, configure the
Use biometrics Group Policy setting to disabled and apply it to your computers. The
policy setting disables all biometrics. Currently, Windows does not provide the ability to
set granular policies that enable you to disable specific modalities of biometrics, such as
allowing facial recognition, but disallowing fingerprint recognition.

PIN Complexity
PIN complexity is not specific to Windows Hello for Business. Windows enables users to
use PINs outside of Windows Hello for Business. PIN Complexity Group Policy settings
apply to all uses of PINs, even when Windows Hello for Business is not deployed.

Windows provides eight PIN Complexity Group Policy settings that give you granular
control over PIN creation and management. You can deploy these policy settings to
computers, where they affect all users creating PINs on that computer; or, you can
deploy these settings to users, where they affect those users creating PINs regardless of
the computer they use. If you deploy both computer and user PIN complexity Group
Policy settings, the user policy settings have precedence over computer policy settings.
Also, this conflict resolution is based on the last applied policy. Windows does not
merge the policy settings automatically. The policy settings included are:

Require digits
Require lowercase letters
Maximum PIN length
Minimum PIN length
Expiration
History
Require special characters
Require uppercase letters

The settings can be found in Administrative Templates\System\PIN Complexity, under


both the Computer and User Configuration nodes of the Group Policy editor.

Review to validate the configuration


Before you continue with the deployment, validate your deployment progress by
reviewing the following items:

" Confirm you configured the Enable Windows Hello for Business to the scope that
matches your deployment (Computer vs. User)
" Confirm you configure the Use Certificate enrollment for on-premises
authentication policy setting
" Confirm you configured the proper security settings for the Group Policy object
" Confirm you removed the allow permission for Apply Group Policy for Domain
Users (Domain Users must always have the read permissions)
" Confirm you added the Windows Hello for Business Users group to the Group
Policy object, and gave the group the allow permission to Apply Group Policy
" Linked the Group Policy object to the correct locations within Active Directory
" Deployed any additional Windows Hello for Business Group Policy settings

Add users to the Windows Hello for Business


Users group
Users must receive the Windows Hello for Business group policy settings and have the
proper permission to enroll for the Windows Hello for Business Authentication
certificate. You can provide users with these settings and permissions by adding the
group used synchronize users to the Windows Hello for Business Users group. Users and
groups that are not members of this group will not attempt to enroll for Windows Hello
for Business.
Plan an adequate number of Domain
Controllers for Windows Hello for
Business deployments
Article • 03/10/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

7 Note

There was an issue with key trust authentication on Windows Server 2019. To fix it,
refer to KB4487044 .

How many is adequate


How can you find out how many domain controllers are needed? You can use
performance monitoring on your domain controllers to determine existing
authentication traffic. Windows Server 2016 and above includes the KDC AS Requests
performance counter. You can use this counter to determine how much of a domain
controller's load is due to initial Kerberos authentication. It's important to remember
that authentication for a Windows Hello for Business key trust deployment does not
affect Kerberos authentication - it remains unchanged.

Windows 10 or Windows 11 accomplishes Windows Hello for Business key trust


authentication by mapping an Active Directory user account to one or more public keys.
This mapping occurs on the domain controller, which is why the deployment needs
Windows Server 2016 or later domain controllers. Public key mapping is only supported
by Windows Server 2016 domain controllers and above. Therefore, users in a key trust
deployment must authenticate to a Windows Server 2016 and above domain controller.

Determining an adequate number of Windows Server domain controllers is important to


ensure you have enough domain controllers to satisfy all authentication requests,
including users mapped with public key trust. What many administrators do not realize
is that adding a domain controller that supports public key mapping (in this case
Windows Server 2016 or later) to a deployment of existing domain controllers which do
not support public key mapping (Windows Server 2008R2, Windows Server 2012R2)
instantly makes that single domain controller susceptible to carrying the most load, or
what is commonly referred to as "piling on". To illustrate the "piling on" concept,
consider the following scenario:
Consider a controlled environment where there are 1000 client computers and the
authentication load of these 1000 client computers is evenly distributed across 10
domain controllers in the environment. The Kerberos AS requests load would look
something like the following:

The environment changes. The first change includes DC1 upgraded to Windows Server
2016 or later to support Windows Hello for Business key-trust authentication. Next, 100
clients enroll for Windows Hello for Business using the public key trust deployment.
Given all other factors stay constant, the authentication would now look like the
following:

The Windows Server 2016 or later domain controller is handling 100 percent of all public
key trust authentication. However, it is also handling 10 percent of password
authentication. Why? This behavior occurs because domain controllers 2 - 10 only
support password and certificate trust authentication; only a Windows Server 2016 and
above domain controller supports public key trust authentication. The Windows Server
2016 and above domain controller still understands how to authenticate password and
certificate trust authentication and will continue to share the load of authenticating
those clients. Because DC1 can handle all forms of authentication, it will bear more of
the authentication load, and easily become overloaded. What if another Windows Server
2016 or later domain controller is added, but without deploying Windows Hello for
Business to any more clients?

Upgrading another domain controller to Windows Server 2016 or later distributes the
public key trust authentication across two domain controllers - each supporting 50
percent of the load. But it doesn't change the distribution of password and certificate
trust authentication. Both Windows Server 2019 domain controllers still share 10 percent
of this load. Now look at the scenario when half of the domain controllers are upgraded
to Windows Server 2016 or later, but the number of Windows Hello for Business clients
remains the same.
Domain controllers 1 through 5 now share the public key trust authentication load
where each domain controller handles 20 percent of the public key trust load but they
each still handle 10 percent of the password and certificate trust authentication. These
domain controllers still have a heavier load than domain controllers 6 through 10;
however, the load is adequately distributed. Now look the scenario when half of the
client computers are upgraded to Windows Hello for Business using a key-trust
deployment.

You'll notice the distribution did not change. Each Windows Server 2016 or later domain
controller handles 20 percent of the public key trust authentication. However, increasing
the volume of authentication (by increasing the number of clients) increases the amount
of work that is represented by the same 20 percent. In the previous example, 20 percent
of public key trust authentication equated to a volume of 20 authentications per domain
controller capable of public key trust authentication. However, with upgraded clients,
that same 20 percent represents a volume of 100 public key trust authentications per
public key trust capable domain controller. Also, the distribution of non-public key trust
authentication remained at 10 percent, but the volume of password and certificate trust
authentications decreased across the older domain controllers.

There are several conclusions here:

Upgrading domain controllers changes the distribution of new authentication, but


doesn't change the distribution of older authentication.
Upgrading domain controllers does not affect the distribution of password and
certificate trust authentication because newer domain controllers can support
password and certificate trust authentication.
Upgraded domain controllers typically carry a heavier authentication load than
down-level domain controllers because they support more forms of authentication.
Upgrading clients to Windows Hello for Business, increases the volume of public
key trust authentication distributed across domain controllers which support it
and, reduces the volume of password and certificate trust authentication across all
domain controllers
Upgrading clients to Windows Hello for Business but does not affect the
distribution of authentication; only the volume of authentication.
The preceding was an example to show why it's unrealistic to have a "one-size-fits-all"
number to describe what "an adequate amount" means. In the real world, authentication
is not evenly distributed across domain controllers.

Determining total AS Request load


Each organization needs to have a baseline of the AS request load that occurs in their
environment. Windows Server provides the KDC AS Requests performance counter that
helps you determine this.

Pick a site where you plan to upgrade the clients to Windows Hello for Business public
key trust. Pick a time when authentication traffic is most significant--Monday morning is
great time as everyone is returning to the office. Enable the performance counter on all
the domain controllers in that site. Collect KDC AS Requests performance counters for
two hours:

A half-hour before you expect initial authentication (sign-ins and unlocks) to be


significant
The hour you believe initial authentication to be significant
And a half-hour after you expect initial authentication to be significant

For example, if employees are scheduled to come into the office at 9:00am. Your
performance capture should begin at 8:30am and end at 10:30am. Ensure your
performance logs do not wrap the data. You want to see authentication trend upward,
peak, and trend downward.

7 Note

To capture all the authentication traffic. Ensure that all computers are powered
down to get the most accurate authentication information (computers and services
authenticate at first power up--you need to consider this authentication in your
evaluation).

Aggregate the performance data of all domain controllers. Look for the maximum KDC
AS Requests for each domain controller. Find the median time when the maximum
number of requests occurred for the site, this should represent when the site is
experiencing the highest amount of authentication.

Add the number of authentications for each domain controller for the median time. You
now have the total authentication for the site during a peak time. Using this metric, you
can determine the distribution of authentication across the domain controllers in the
site by dividing the domain controller's authentication number for the median time by
the total authentication. Multiply the quotient by 10 to convert the distribution to a
percentage. To validate your math, all the distributions should equal 100 percent.

Review the distribution of authentication. Hopefully, none of these are above 70


percent. It's always good to reserve some capacity for the unexpected. Also, the primary
purposes of a domain controller are to provide authentication and handle Active
Directory operations. Identify domain controllers with lower distributions of
authentication as potential candidates for the initial domain controller upgrades in
conjunction with a reasonable distribution of clients provisioned for Windows Hello for
Business.

Monitoring Authentication
Using the same methods described above, monitor the Kerberos authentication after
upgrading a domain controller and your first phase of Windows Hello for Business
deployments. Make note of the delta of authentication before and after upgrading the
domain controller to Windows Server 2016 or newer. This delta is representative of
authentication resulting from the first phase of your Windows Hello for Business clients.
It gives you a baseline for your environment to where you can form a statement such as:

"Every n Windows Hello for Business clients results in x percentage of key-trust

authentication."

Where n equals the number of clients you switched to Windows Hello for Business and x
equals the increased percentage of authentication from the upgraded domain
controller. Armed with this information, you can apply the observations of upgrading
domain controllers and increasing Windows Hello for Business client count to
appropriately phase your deployment.

Remember, increasing the number of clients changes the volume of authentication


distributed across the Windows Server 2016 or newer domain controllers. If there is only
one Windows Server 2016 or newer domain controller, there's no distribution and you
are simply increasing the volume of authentication for which THAT domain controller is
responsible.

Increasing the number of domain controllers distributes the volume of authentication,


but doesn't change it. Therefore, as you add more domain controllers, the burden of
authentication, for which each domain controller is responsible, decreases. Upgrading
two domain controller changes the distribution to 50 percent. Upgrading three domain
controllers changes the distribution to 33 percent, and so on.
Strategy
The simplest strategy you can employ is to upgrade one domain controller and monitor
the single domain controller as you continue to phase in new Windows Hello for
Business key-trust clients until it reaches a 70 or 80 percent threshold.

Then, upgrade a second domain controller. Monitor the authentication on both domain
controllers to determine how the authentication distributes between the two domain
controllers. Introduce more Windows Hello for Business clients while monitoring the
authentication on the two upgraded domain controllers. Once those reach your
environment's designated capacity, you can upgrade another domain controller.

Repeat until your deployment for that site is complete. Now, monitor authentication
across all your domain controllers like you did the very first time. Determine the
distribution of authentication for each domain controller. Identify the percentage of
distribution for which it is responsible. If a single domain controller is responsible for 70
percent of more of the authentication, you may want to consider adding a domain
controller to reduce the distribution of authentication volume.

However, before considering this, ensure the high load of authentication is not a result
of applications and services where their configuration has a statically-configured domain
controller. Adding domain controllers will not resolve the additional authentication load
problem in this scenario. Instead, manually distribute the authentication to different
domain controllers among all the services or applications. Alternatively, try simply using
the domain name rather than a specific domain controller. Each domain controller has
an A record registered in DNS for the domain name, which DNS will round robin with
each DNS query. It's not the best load balancer, however, it is a better alternative to
static domain controller configurations, provided the configuration is compatible with
your service or application.
Deploy certificates for remote desktop
(RDP) sign-in
Article • 07/25/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This document describes Windows Hello for Business functionalities or scenarios that
apply to:

Deployment type: hybrid


Trust type: cloud Kerberos trust , key trust
Join type: Azure AD join , hybrid Azure AD join

Windows Hello for Business supports using a certificate as the supplied credential, when
establishing a remote desktop connection to another Windows device. This document
discusses three approaches for cloud Kerberos trust and key trust deployments, where
authentication certificates can be deployed to an existing Windows Hello for Business
user:

Deploy certificates to hybrid joined devices using an on-premises Active Directory


Certificate Services enrollment policy
Deploy certificates to hybrid or Azure AD-joined devices using Intune
Work with third-party PKIs

Deploy certificates via Active Directory


Certificate Services (AD CS)

7 Note

This process is applicable to hybrid Azure AD joined devices only.

To deploy certificates using an on-premises Active Directory Certificate Services


enrollment policy, you must first create a certificate template, and then deploy
certificates based on that template.

Create a Windows Hello for Business certificate template


Follow these steps to create a certificate template:

1. Sign in to your issuing certificate authority (CA) and open Server Manager
2. Select Tools > Certification Authority. The Certification Authority Microsoft
Management Console (MMC) opens

3. In the MMC, expand the CA name and right-click Certificate Templates > Manage

4. The Certificate Templates console opens. All of the certificate templates are
displayed in the details pane

5. Right-click the Smartcard Logon template and select Duplicate Template

6. Use the following table to configure the template:

Tab Name Configurations

Compatibility Clear the Show resulting changes check box


Select Windows Server 2012 or Windows Server 2012 R2 from the
Certification Authority list
Select Windows Server 2012 or Windows Server 2012 R2 from the
Certification Recipient list

General Specify a Template display name, for example WHfB Certificate


Authentication
Set the validity period to the desired value
Take note of the Template name for later, which should be the same
as the Template display name minus spaces
(WHfBCertificateAuthentication in this example)

Extensions Verify the Application Policies extension includes Smart Card Logon

Subject Name Select the Build from this Active Directory information button if it
isn't already selected
Select Fully distinguished name from the Subject name format list if
Fully distinguished name isn't already selected
Select the User Principal Name (UPN) check box under Include this
information in alternative subject name

Note: If you deploy certificates via Intune, select Supply in the request
instead of Build from this Active Directory.

Request Set the Purpose to Signature and smartcard logon and select Yes
Handling when prompted to change the certificate purpose
Select the Renew with same key check box
Select Prompt the user during enrollment

Cryptography Set the Provider Category to Key Storage Provider


Set the Algorithm name to RSA
Set the minimum key size to 2048
Tab Name Configurations

Select Requests must use one of the following providers


Select Microsoft Software Key Storage Provider
Set the Request hash to SHA256

Security Add the security group that you want to give Enroll access to. For example,
if you want to give access to all users, select the Authenticated users
group, and then select Enroll permissions for them

7. Select OK to finalize your changes and create the new template. Your new
template should now appear in the list of Certificate Templates

8. Close the Certificate Templates console

9. Open an elevated command prompt and change to a temporary working directory

10. Execute the following command, replacing <TemplateName> with the Template
display name noted above

Windows Command Prompt

certutil.exe -dstemplate <TemplateName> > <TemplateName.txt>

11. Open the text file created by the command above.

Delete the last line of the output from the file that reads
CertUtil: -dsTemplate command completed successfully.

Modify the line that reads


pKIDefaultCSPs = "1,Microsoft Software Key Storage Provider" to

pKIDefaultCSPs = "1,Microsoft Passport Key Storage Provider"

12. Save the text file

13. Update the certificate template by executing the following command:

Windows Command Prompt

certutil.exe -dsaddtemplate <TemplateName.txt>

14. In the Certificate Authority console, right-click Certificate Templates, select New >
Certificate Template to Issue

15. From the list of templates, select the template you previously created (WHFB
Certificate Authentication) and select OK. It can take some time for the template
to replicate to all servers and become available in this list

16. After the template replicates, in the MMC, right-click in the Certification Authority
list, select All Tasks > Stop Service. Right-click the name of the CA again, select All
Tasks > Start Service

Request a certificate
1. Sign in to a client that is hybrid Azure AD joined, ensuring that the client has line
of sight to a domain controller and the issuing CA
2. Open the Certificates - Current User Microsoft Management Console (MMC). To
do so, you can execute the command certmgr.msc
3. In the left pane of the MMC, right-click Personal > All Tasks > Request New
Certificate…
4. On the Certificate Enrollment screen, select Next
5. Under Select Certificate Enrollment Policy, select Active Directory Enrollment
Policy > Next
6. Under Request Certificates, select the check-box for the certificate template you
created in the previous section (WHfB Certificate Authentication) and then select
Enroll
7. After a successful certificate request, select Finish on the Certificate Installation
Results screen

Deploy certificates via Intune

U Caution

This process is applicable to both Azure AD joined and hybrid Azure AD joined
devices that are managed via Intune.

If you deploy certificates via Intune and configure Windows Hello for Business via
group policy, the devices will fail to obtain a certificate, logging the error code
0x82ab0011 in the DeviceManagement-Enterprise-Diagnostic-Provider log.

To avoid the error, configure Windows Hello for Business via Intune instead of
group policy.

Deploying a certificate to Azure AD joined or hybrid Azure AD joined devices may be


achieved using the Simple Certificate Enrollment Protocol (SCEP) or PKCS (PFX) via
Intune. For guidance deploying the required infrastructure, refer to:
Configure infrastructure to support SCEP certificate profiles with Microsoft Intune
Configure and use PKCS certificates with Intune

Next, you should deploy the root CA certificate (and any other intermediate certificate
authority certificates) to Azure AD joined Devices using a Trusted root certificate policy
with Intune. For guidance, refer to Create trusted certificate profiles in Microsoft Intune.

Once these requirements are met, a policy can be configured in Intune that provisions
certificates for the users on the targeted device.

Create a policy in Intune


This section describes how to configure a SCEP policy in Intune. Similar steps can be
followed to configure a PKCS policy.

1. Go to the Microsoft Intune admin center

2. Select Devices > Configuration profiles > Create profile

3. Select Platform > Windows 10 and later and Profile type > Templates > SCEP
Certificate

4. Select Create

5. In the Basics panel, provide a Name and, optionally, a Description > Next

6. In the Configuration settings panel, use the following table to configure the policy:

Setting Configurations

Certificate Type User

Subject name CN={{UserPrincipalName}}


format

Subject alternative From the dropdown, select User principal name (UPN) with a value of
name {{UserPrincipalName}}

Certificate validity Configure a value of your choosing


period

Key storage Enroll to Windows Hello for Business, otherwise fail (Windows 10
provider (KSP) and later)

Key usage Digital Signature

Key size (bits) 2048


Setting Configurations

For Hash SHA-2


algorithm

Root Certificate Select +Root Certificate and select the trusted certificate profile
created earlier for the Root CA Certificate

Extended key Name: Smart Card Logon


usage Object Identifier: 1.3.6.1.4.1.311.20.2.2
Predefined Values: Not configured

Name: Client Authentication


Object Identifier: 1.3.6.1.5.5.7.3.2
Predefined Values: Client Authentication

Renewal threshold Configure a value of your choosing


(%)

SCEP Server URLs Provide the public endpoint(s) that you configured during the
deployment of your SCEP infrastructure

7. Select Next

8. In the Assignments panel, assign the policy to a security group that contains as
members the devices or users that you want to configure and select Next

9. In the Applicability Rules panel, configure issuance restrictions, if needed, and


select Next

10. In the Review + create panel, review the policy configuration and select Create

For more information how to configure SCEP policies, see Configure SCEP certificate
profiles in Intune. To configure PKCS policies, see Configure and use PKCS certificate
with Intune.

Request a certificate for Intune clients


Once the Intune policy is created, targeted clients will request a certificate during their
next policy refresh cycle. To validate that the certificate is present in the user store,
follow these steps:

1. Sign in to a client targeted by the Intune policy


2. Open the Certificates - Current User Microsoft Management Console (MMC). To
do so, you can execute the command certmgr.msc
3. In the left pane of the MMC, expand Personal and select Certificates
4. In the right-hand pane of the MMC, check for the new certificate

Use third-party certification authorities


If you're using a non-Microsoft PKI, the certificate templates published to the on-
premises Active Directory may not be available. For guidance with integration of
Intune/SCEP with non-Microsoft PKI deployments, refer to Use third-party certification
authorities (CA) with SCEP in Microsoft Intune.

As an alternative to using SCEP or if none of the previously covered solutions will work
in your environment, you can manually generate Certificate Signing Requests (CSR) for
submission to your PKI. To assist with this approach, you can use the Generate-
CertificateRequest PowerShell commandlet.

The Generate-CertificateRequest commandlet will generate an .inf file for a pre-existing


Windows Hello for Business key. The .inf can be used to generate a certificate request
manually using certreq.exe . The commandlet will also generate a .req file, which can be
submitted to your PKI for a certificate.

RDP sign-in with Windows Hello for Business


certificate authentication
After obtaining a certificate, users can RDP to any Windows devices in the same Active
Directory forest as the user's Active Directory account.

7 Note

The certificate chain of the issuing CA must be trusted by the target server.

1. Open the Remote Desktop Client ( mstsc.exe ) on the client where the
authentication certificate has been deployed
2. Attempt an RDP session to a target server
3. Use the certificate credential protected by your Windows Hello for Business
gesture to authenticate
Prepare people to use Windows Hello
Article • 02/27/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

When you set a policy to require Windows Hello for Business in the workplace, you will
want to prepare people in your organization by explaining how to use Hello.

After enrollment in Hello, users should use their gesture (such as a PIN or fingerprint) for
access to corporate resources. Their gesture is only valid on the enrolled device.

Although the organization may require users to change their Active Directory or Azure
Active Directory (AD) account password at regular intervals, changes to their passwords
have no effect on Hello.

People who are currently using virtual or physical smart cards for authentication can use
their virtual smart card to verify their identity when they set up Hello.

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

On devices owned by the organization


When someone sets up a new device, they are prompted to choose who owns the
device. For corporate devices, they select This device belongs to my organization.

Next, they select a way to connect. Tell the people in your enterprise which option they
should pick here.
They sign in, and are then asked to verify their identity. People have options to choose
from a text message, phone call, or the authentication application. After verification,
they create their PIN. The Create a PIN screen displays any complexity requirements that
you have set, such as minimum length.

After Hello is set up, people use their PIN to unlock the device, and that will
automatically log them on.

On personal devices
People who want to access work resources on their personal devices can add a work or
school account in Settings > Accounts > Work or school, and then sign in with work
credentials. The person selects the method for receiving the verification code, such as
text message or email. The verification code is sent and the person then enters the
verification code. After verification, the person enters and confirms new PIN. The person
can access any token-based resource using this device without being asked for
credentials.

People can go to Settings > Accounts > Work or school, select the work account, and
then select Unjoin to remove the account from their device.

Using Windows Hello and biometrics


If your policy allows it, people can use biometrics (fingerprint, iris, and facial recognition)
with Windows Hello for Business, if the hardware supports it.
Related topics
Windows Hello for Business
How Windows Hello for Business works
Manage Windows Hello for Business in your organization
Why a PIN is better than a password
Windows Hello and password changes
Windows Hello errors during PIN creation
Event ID 300 - Windows Hello successfully created
Windows Hello biometrics in the enterprise
Manage Windows Hello for Business in
your organization
Article • 09/25/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

You can create a Group Policy or mobile device management (MDM) policy to configure
Windows Hello for Business on Windows devices.

) Important

Windows Hello as a convenience PIN is disabled by default on all domain joined


and Azure AD joined devices. To enable a convenience PIN, enable the Group Policy
setting Turn on convenience PIN sign-in.

Use PIN Complexity policy settings to manage PINs for Windows Hello for
Business.

Group Policy settings for Windows Hello for


Business
The following table lists the Group Policy settings that you can configure for Windows
Hello use in your organization. These policy settings are available in User configuration
and Computer Configuration under Policies > Administrative Templates > Windows
Components > Windows Hello for Business.

7 Note

The location of the PIN complexity section of the Group Policy is: Computer
Configuration > Administrative Templates > System > PIN Complexity.

Policy Scope Options

Use Windows Hello Computer - Not configured: Device doesn't provision Windows Hello
for Business or user for Business for any user.
- Enabled: Device provisions Windows Hello for Business
using keys or certificates for all users.
- Disabled: Device doesn't provision Windows Hello for
Business for any user.

Use a hardware Computer - Not configured: Windows Hello for Business will be
security device provisioned using TPM if available, and will be provisioned
Policy Scope using software if TPM isn't available.
Options
- Enabled: Windows Hello for Business will only be
provisioned using TPM. This feature will provision
Windows Hello for Business using TPM 1.2 unless the
option to exclude them is explicitly set.
- Disabled: Windows Hello for Business will be provisioned
using TPM if available, and will be provisioned using
software if TPM isn't available.

Use certificate for on- Computer - Not configured: Windows Hello for Business enrolls a
premises or user key that is used for on-premises authentication.
authentication - Enabled: Windows Hello for Business enrolls a sign-in
certificate using ADFS that is used for on-premises
authentication.
- Disabled: Windows Hello for Business enrolls a key that
is used for on-premises authentication.

Use PIN recovery Computer - Added in Windows 10, version 1703


- Not configured: Windows Hello for Business doesn't
create or store a PIN recovery secret. PIN reset doesn't use
the Azure-based PIN recovery service
- Enabled: Windows Hello for Business uses the Azure-
based PIN recovery service for PIN reset
- Disabled: Windows Hello for Business doesn't create or
store a PIN recovery secret. PIN reset doesn't use the
Azure-based PIN recovery service.
- For more information about using the PIN recovery
service for PIN reset see Windows Hello for Business PIN
Reset.

Use biometrics Computer - Not configured: Biometrics can be used as a gesture in


place of a PIN
- Enabled: Biometrics can be used as a gesture in place of
a PIN.
- Disabled: Only a PIN can be used as a gesture.

PIN Complexity

Policy Scope Options

Require digits Computer - Not configured: Users must include a digit in their PIN.
- Enabled: Users must include a digit in their PIN.
- Disabled: Users can't use digits in their PIN.

Require Computer - Not configured: Users can't use lowercase letters in their PIN
lowercase letters - Enabled: Users must include at least one lowercase letter in
their PIN.
- Disabled: Users can't use lowercase letters in their PIN.
Policy Scope Options

Maximum PIN Computer - Not configured: PIN length must be less than or equal to 127.
length - Enabled: PIN length must be less than or equal to the number
you specify.
- Disabled: PIN length must be less than or equal to 127.

Minimum PIN Computer - Not configured: PIN length must be greater than or equal to 4.
length - Enabled: PIN length must be greater than or equal to the
number you specify.
- Disabled: PIN length must be greater than or equal to 4.

Expiration Computer - Not configured: PIN doesn't expire.


- Enabled: PIN can be set to expire after any number of days
between 1 and 730, or PIN can be set to never expire by setting
policy to 0.
- Disabled: PIN doesn't expire.

History Computer - Not configured: Previous PINs aren't stored.


- Enabled: Specify the number of previous PINs that can be
associated to a user account that can't be reused.
- Disabled: Previous PINs aren't stored.
Note Current PIN is included in PIN history.

Require special Computer - Not configured: Windows allows, but doesn't require, special
characters characters in the PIN.
- Enabled: Windows requires the user to include at least one
special character in their PIN.
- Disabled: Windows doesn't allow the user to include special
characters in their PIN.

Require Computer - Not configured: Users can't include an uppercase letter in their
uppercase PIN.
letters - Enabled: Users must include at least one uppercase letter in
their PIN.
- Disabled: Users can't include an uppercase letter in their PIN.

Phone Sign-in

Policy Scope Options

Use Phone Sign-in Computer Not currently supported.

MDM policy settings for Windows Hello for


Business
The following table lists the MDM policy settings that you can configure for Windows
Hello for Business use in your workplace. These MDM policy settings use the
PassportForWork configuration service provider (CSP).

) Important

All devices only have one PIN associated with Windows Hello for Business. This
means that any PIN on a device will be subject to the policies specified in the
PassportForWork CSP. The values specified take precedence over any complexity
rules set via Exchange ActiveSync (EAS) or the DeviceLock CSP.

Policy Scope Default Options

UsePassportForWork Device True - True: Windows Hello for Business will be


or user provisioned for all users on the device.
- False: Users won't be able to provision Windows
Hello for Business.
Note: If Windows Hello for Business is enabled, and
then the policy is changed to False, users who
previously set up Windows Hello for Business can
continue to use it, but won't be able to set up
Windows Hello for Business on other devices

RequireSecurityDevice Device False - True: Windows Hello for Business will only be
or user provisioned using TPM.
- False: Windows Hello for Business will be
provisioned using TPM if available, and will be
provisioned using software if TPM isn't available.

ExcludeSecurityDevice Device False Added in Windows 10, version 1703


- TPM12 - True: TPM revision 1.2 modules will be disallowed
from being used with Windows Hello for Business.
- False: TPM revision 1.2 modules will be allowed to
be used with Windows Hello for Business.

EnablePinRecovery Device False - Added in Windows 10, version 1703


or use - True: Windows Hello for Business uses the Azure-
based PIN recovery service for PIN reset.
- False: Windows Hello for Business doesn't create
or store a PIN recovery secret. PIN reset doesn't use
the Azure-based PIN recovery service. For more
information about using the PIN recovery service for
PIN reset see Windows Hello for Business PIN Reset.

Biometrics
Policy Scope Default Options

UseBiometrics Device False - True: Biometrics can be used as a gesture in


place of a PIN for domain sign-in.
- False: Only a PIN can be used as a gesture
for domain sign-in.

- FacialFeaturesUser Device Not - Not configured: users can choose whether


- EnhancedAntiSpoofing configured to turn on enhanced anti-spoofing.
- True: Enhanced anti-spoofing is required on
devices which support it.
- False: Users can't turn on enhanced anti-
spoofing.

PINComplexity

Policy Scope Default Options

Digits Device 1 - 0: Digits are allowed.


or user - 1: At least one digit is required.
- 2: Digits aren't allowed.

Lowercase Device 2 - 0: Lowercase letters are allowed.


letters or user - 1: At least one lowercase letter is required.
- 2: Lowercase letters aren't allowed.

Special Device 2 - 0: Special characters are allowed.


characters or user - 1: At least one special character is required.
- 2: Special characters aren't allowed.

Uppercase Device 2 - 0: Uppercase letters are allowed.


letters or user - 1: At least one uppercase letter is required.
- 2: Uppercase letters aren't allowed.

Maximum Device 127 - Maximum length that can be set is 127. Maximum length
PIN length or user can't be less than minimum setting.

Minimum Device 6 - Minimum length that can be set is 6. Minimum length can't
PIN length or user be greater than maximum setting.

Expiration Device 0 - Integer value specifies the period of time (in days) that a PIN
or user can be used before the system requires the user to change it.
The largest number you can configure for this policy setting is
730. The lowest number you can configure for this policy
setting is 0. If this policy is set to 0, then the user's PIN will
never expire.

History Device 0 - Integer value that specifies the number of past PINs that can
or user be associated to a user account that can't be reused. The
Policy Scope Default Options

largest number you can configure for this policy setting is 50.
The lowest number you can configure for this policy setting is
0. If this policy is set to 0, then storage of previous PINs isn't
required.

Remote

Policy Scope Default Options

UseRemotePassport Device or user False Not currently supported.

7 Note

If a policy isn't explicitly configured to require letters or special characters, users


can optionally set an alphanumeric PIN.

Policy conflicts from multiple policy sources


Windows Hello for Business is designed to be managed by group policy or MDM, but
not a combination of both. Avoid mixing group policy and MDM policy settings for
Windows Hello for Business. If you mix group policy and MDM policy settings, the MDM
settings are ignored until all group policy settings are cleared.

) Important

The MDMWinsOverGP policy setting doesn't apply to Windows Hello for Business.
MDMWinsOverGP only applies to policies in the Policy CSP, while the Windows
Hello for Business policies are in the PassportForWork CSP.

Policy precedence
Windows Hello for Business user policies take precedence over computer policies. If a
user policy is set, the corresponded computer policy is ignored. If a user policy is not set,
the computer policy is used.
Windows Hello and password changes
Article • 03/16/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

When you set up Windows Hello, the PIN or biometric gesture that you use is specific to
that device. You can set up Hello for the same account on multiple devices. If Windows
Hello for Business isn't deployed and the password for that account changes, you must
provide the new password on each device to continue to use Hello.

7 Note

This article doesn't apply to Windows Hello for Business. Change the account
password will not affect sign-in or unlock, since Windows Hello for Business uses a
key or certificate.

Example 1

Let's suppose that you have set up a PIN for your Microsoft account on Device A. You
use your PIN to sign in on Device A and then change the password for your Microsoft
account. Since you were using Device A when you changed your password, the PIN on
Device A will continue to work with no other action on your part.

Example 2

Suppose that you sign in on Device B and change your password for your Microsoft
account. The next time that you try to sign in on Device A using your PIN, sign-in will
fail because the account credentials that Hello on Device A knows will be outdated.

7 Note

This example also applies to an Active Directory account when Windows Hello for
Business is not implemented.

How to update Hello after you change your


password on another device
1. When you try to sign in using your PIN or biometric, you'll see the following
message: Your password was changed on a different device. You must sign in to
this device once with your new password, and then you can sign in with your
PIN.
2. Select OK
3. Select Sign-in options
4. Select Password
5. Sign in with new password
6. The next time that you sign in, you can select Sign-in options > PIN to resume
using your PIN.
PIN reset
Article • 08/15/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

This article describes how Microsoft PIN reset service enables your users to recover a
forgotten Windows Hello for Business PIN.

Overview
Windows Hello for Business provides the capability for users to reset forgotten PINs.
There are two forms of PIN reset:

Destructive PIN reset: with this option, the user's existing PIN and underlying
credentials, including any keys or certificates added to their Windows Hello
container, are deleted from the client and a new sign in key and PIN are
provisioned. Destructive PIN reset is the default option, and doesn't require
configuration
Non-destructive PIN reset: with this option, the user's Windows Hello for Business
container and keys are preserved, but the user's PIN that they use to authorize key
usage is changed. For non-destructive PIN reset, you must deploy the Microsoft
PIN reset service and configure your clients' policy to enable the PIN recovery
feature

How non-destructive PIN reset works


Requirements:

Hybrid or cloud-only Windows Hello for Business deployments


Windows Enterprise, Education and Pro editions. There's no licensing requirement
for this feature

When non-destructive PIN reset is enabled on a client, a 256-bit AES key is generated
locally. The key is added to a user's Windows Hello for Business container and keys as
the PIN reset protector. This PIN reset protector is encrypted using a public key retrieved
from the Microsoft PIN reset service and then stored on the client for later use during
PIN reset. After a user initiates a PIN reset, completes authentication and multi-factor
authentication to Azure AD, the encrypted PIN reset protector is sent to the Microsoft
PIN reset service, decrypted, and returned to the client. The decrypted PIN reset
protector is used to change the PIN used to authorize Windows Hello for Business keys
and it's then cleared from memory.
Using Group Policy, Microsoft Intune or a compatible MDM solution, you can configure
Windows devices to securely use the Microsoft PIN reset service, which enables users to
reset their forgotten PIN without requiring re-enrollment.

The following table compares destructive and non-destructive PIN reset:

Category Destructive PIN reset Non-Destructive PIN reset

Functionality The user's existing PIN and underlying You must deploy the Microsoft
credentials, including any keys or PIN reset service and client
certificates added to their Windows Hello policy to enable the PIN
container, are deleted from the client and a recovery feature. During a non-
new sign in key and PIN are provisioned. destructive PIN reset, the user's
Windows Hello for Business
container and keys are
preserved, but the user's PIN
that they use to authorize key
usage is changed.

Azure Active Cert Trust, Key Trust, and cloud Kerberos Cert Trust, Key Trust, and cloud
Directory Joined trust Kerberos trust

Hybrid Azure Cert Trust and cloud Kerberos trust for Cert Trust, Key Trust, and cloud
Active Directory both settings and above the lock support Kerberos trust for both settings
Joined destructive PIN reset. Key Trust doesn't and above the lock support
support this option from above the lock non-destructive PIN reset. No
screen. This is due to the sync delay network connection is required
between when a user provisions their for the DC.
Windows Hello for Business credential and
being able to use it for sign-in. It does
support from the settings page and the
users must have a corporate network
connectivity to the DC.

On Premises If AD FS is used for on premises The PIN reset service relies on


deployments, users must have a corporate Azure Active Directory
network connectivity to federation services. identities, so it's only available
for hybrid Azure AD joined and
Azure AD Joined devices.

Additional Supported by default and doesn't require Deploy the Microsoft PIN reset
configuration configuration service and client policy to
required enable the PIN recovery
feature.

MSA/Enterprise MSA and Enterprise Enterprise only.


Enable the Microsoft PIN Reset Service in your
Azure AD tenant
Before you can use non-destructive PIN reset, you must register two applications in your
Azure Active Directory tenant:

Microsoft Pin Reset Service Production


Microsoft Pin Reset Client Production

To register the applications, follow these steps:

1. Go to the Microsoft PIN Reset Service Production website, and sign in using a
Global Administrator account you use to manage your Azure Active Directory
tenant. Review the permissions requested by the Microsoft Pin Reset Service
Production application and select Accept to give consent to the application to
access your organization

2. Go to the Microsoft PIN Reset Client Production website, and sign in using a Global
Administrator account you use to manage your Azure Active Directory tenant.
Review the permissions requested by the Microsoft Pin Reset Client Production
application, and select Next.

3. Review the permissions requested by the Microsoft Pin Reset Service Production
application and select Accept to confirm consent to both applications to access
your organization.
7 Note

After accepance, the redirect page will show a blank page. This is a known behavior.

Confirm that the two PIN Reset service principals are


registered in your tenant
1. Sign in to the Microsoft Entra Manager admin center
2. Select Azure Active Directory > Applications > Enterprise applications
3. Search by application name "Microsoft PIN" and verify that both Microsoft Pin
Reset Service Production and Microsoft Pin Reset Client Production are in the list

Enable PIN recovery on the clients


To enable PIN recovery on the clients, you can use:

Microsoft Intune/MDM
Group policy

The following instructions provide details how to configure your devices. Select the
option that best suits your needs.

Intune

To configure devices using Microsoft Intune, create a Settings catalog policy and
use the following settings:

Category Setting name Value

Windows Hello For Business Enable Pin Recovery True

Assign the policy to a group that contains as members the devices or users that you
want to configure.

7 Note

You can also configure PIN recovery from the Endpoint security blade:

1. Sign in to the Microsoft Intune admin center


2. Select Endpoint security > Account protection > Create Policy
Alternatively, you can configure devices using a custom policy with the
PassportForWork CSP.

OMA-URI Data Value


type

./Vendor/MSFT/Policy/PassportForWork/ TenantId /Policies/EnablePinRecovery Boolean True

7 Note

You must replace TenantId with the identifier of your Azure Active Directory
tenant. To look up your Tenant ID, see How to find your Azure Active
Directory tenant ID or try the following, ensuring to sign-in with your
organization's account::

HTTP

GET https://graph.microsoft.com/v1.0/organization?$select=id

Confirm that PIN Recovery policy is enforced on the devices


The PIN reset configuration can be viewed by running dsregcmd /status from the
command line. This state can be found under the output in the user state section as the
CanReset line item. If CanReset reports as DestructiveOnly, then only destructive PIN
reset is enabled. If CanReset reports DestructiveAndNonDestructive, then non-
destructive PIN reset is enabled.

Sample User state Output for Destructive PIN Reset

Windows Command Prompt

+----------------------------------------------------------------------+
| User State |
+----------------------------------------------------------------------+

NgcSet : YES
NgcKeyId : {FA0DB076-A5D7-4844-82D8-50A2FB42EC7B}
CanReset : DestructiveOnly
WorkplaceJoined : NO
WamDefaultSet : YES
WamDefaultAuthority : organizations
WamDefaultId : https://login.microsoft.com
WamDefaultGUID : { B16898C6-A148-4967-9171-64D755DA8520 }
(AzureAd)
+----------------------------------------------------------------------+

Sample User state Output for Non-Destructive PIN Reset

Windows Command Prompt

+----------------------------------------------------------------------+
| User State |
+----------------------------------------------------------------------+

NgcSet : YES
NgcKeyId : {FA0DB076-A5D7-4844-82D8-50A2FB42EC7B}
CanReset : DestructiveAndNonDestructive
WorkplaceJoined : NO
WamDefaultSet : YES
WamDefaultAuthority : organizations
WamDefaultId : https://login.microsoft.com
WamDefaultGUID : { B16898C6-A148-4967-9171-64D755DA8520 }
(AzureAd)

+----------------------------------------------------------------------+

Configure allowed URLs for federated identity


providers on Azure AD joined devices
Applies to: Azure AD joined devices

PIN reset on Azure AD-joined devices uses a flow called web sign-in to authenticate
users in the lock screen. Web sign-in only allows navigation to specific domains. If web
sign-in attempts to navigate to a domain that isn't allowed, it displays a page with the
error message: "We can't open that page right now".
If you have a federated environment and authentication is handled using AD FS or a
third-party identity provider, then you must configure your devices with a policy to
allow a list of domains that can be reached during PIN reset flows. When set, it ensures
that authentication pages from that identity provider can be used during Azure AD
joined PIN reset.

To configure devices using Microsoft Intune, create a Settings catalog policy and use the
following settings:

Category Setting name Value

Authentication Configure Provide a semicolon delimited list of domains needed for


Web Sign In authentication during the PIN reset scenario. An example value
Category Setting name Value

Allowed Urls would be signin.contoso.com;portal.contoso.com

Assign the policy to a group that contains as members the devices or users that you
want to configure.

Alternatively, you can configure devices using a custom policy with the Policy CSP.

Setting

OMA-URI: ./Vendor/MSFT/Policy/Config/Authentication/ConfigureWebSignInAllowedUrls
Data type: String
Value: Provide a semicolon delimited list of domains needed for authentication during the PIN
reset scenario. An example value would be signin.contoso.com;portal.contoso.com

7 Note

For Azure Government, there is a known issue with PIN reset on Azure AD Joined
devices failing. When the user attempts to launch PIN reset, the PIN reset UI shows
an error page that says, "We can't open that page right now". The
ConfigureWebSignInAllowedUrls policy can be used to work around this issue. If
you are experiencing this problem and you are using Azure US Government cloud,
set login.microsoftonline.us as the value for the ConfigureWebSignInAllowedUrls
policy.

Use PIN reset


Destructive and non-destructive PIN reset scenarios use the same steps for initiating a
PIN reset. If users have forgotten their PINs, but have an alternate sign-in method, they
can navigate to Sign-in options in Settings and initiate a PIN reset from the PIN options.
If users don't have an alternate way to sign into their devices, PIN reset can also be
initiated from the Windows lock screen with the PIN credential provider. Users must
authenticate and complete multi-factor authentication to reset their PIN. After PIN reset
is complete, users can sign in using their new PIN.

) Important

For hybrid Azure AD-joined devices, users must have corporate network
connectivity to domain controllers to complete destructive PIN reset. If AD FS is
being used for certificate trust or for on-premises only deployments, users must
also have corporate network connectivity to federation services to reset their PIN.

Reset PIN from Settings


1. Sign-in to Windows 10 using an alternate credential
2. Open Settings > Accounts > Sign-in options
3. Select PIN (Windows Hello) > I forgot my PIN and follow the instructions

Reset PIN from the lock screen


For Azure AD-joined devices:

1. If the PIN credential provider isn't selected, expand the Sign-in options link, and
select the PIN pad icon
2. Select I forgot my PIN from the PIN credential provider
3. Select an authentication option from the list of presented options. This list is based
on the different authentication methods enabled in your tenant (like Password,
PIN, Security key)
4. Follow the instructions provided by the provisioning process
5. When finished, unlock your desktop using your newly created PIN

For Hybrid Azure AD-joined devices:

1. If the PIN credential provider isn't selected, expand the Sign-in options link, and
select the PIN pad icon
2. Select I forgot my PIN from the PIN credential provider
3. Enter your password and press enter
4. Follow the instructions provided by the provisioning process
5. When finished, unlock your desktop using your newly created PIN

7 Note

Key trust on hybrid Azure AD-joined devices doesn't support destructive PIN reset
from above the Lock Screen. This is due to the sync delay between when a user
provisions their Windows Hello for Business credential and being able to use it for
sign-in. For this deployment model, you must deploy non-destructive PIN reset for
above lock PIN reset to work.

You may find that PIN reset from Settings only works post sign in. Also, the lock screen
PIN reset function doesn't work if you have any matching limitation of self-service
password reset from the lock screen. For more information, see Enable Azure Active
Directory self-service password reset at the Windows sign-in screen.
Windows Hello Enhanced Sign-in
Security
Article • 06/27/2023

Windows Hello enables a user to authenticate using their biometrics or a PIN


eliminating the need for a password. Biometric authentication uses facial recognition or
fingerprint to prove a user’s identity in a way that is secure, personal, and convenient.
Enhanced Sign-in Security provides an additional level of security to biometric data by
leveraging specialized hardware and software components, such as Virtualization Based
Security (VBS) and Trusted Platform Module 2.0 to isolate and protect a user’s
authentication data and secure the channel by which that data is communicated.

How does Enhanced Sign-in Security protect


biometric data

Face
When Enhanced Sign-in Security is enabled, the face algorithm is protected using VBS
to isolate it from the rest of Windows. The hypervisor is used to specify and protect
memory regions, so that they can only be accessed by processes running in VBS. The
hypervisor allows the face camera to write to these memory regions providing an
isolated pathway to deliver face data from the camera to the face matching algorithm.

Face templates are generated in VBS by the protected face algorithm. When not in use,
face template data is encrypted using keys generated and only accessible to VBS, and
then stored on disk.

Fingerprint
Enhanced Sign-in Security is only supported on fingerprint sensors with match on
sensor capabilities. This type of sensor includes a microprocessor and memory which
can be used to isolate fingerprint matching and template storage using hardware.

Sensors that support Enhanced Sign-in Security have a certificate embedded during
manufacturing. This certificate can be validated by the Windows biometric components
running in VBS and is used to establish a secure session with the sensor. The sensor and
Windows biometric components use this session to communicate enrollment operations
and match results securely.
Credential Operations
The Windows biometric components running in VBS establish a secure channel to the
TPM using information shared with VBS by the TPM during boot. When a matching
operation is a success, the biometric components in VBS use this channel to authorize
the usage of Windows Hello keys for authenticating the user with their identity provider,
applications, and services.

How do I get Enhanced Sign-in Security


Enablement is dependent on specialized hardware, drivers, and firmware that are being
pre-installed on the system. Device manufacturers can choose to enable Enhanced Sign-
in Security on their devices during configuration of the device in factory.

System Compatibility
Compatible hardware and software components are required to enable Enhanced Sign-
in Security:

Devices with Windows 10 October 2020 update configured from factory


Meet the requirements for Virtualization-Based Security (VBS) including Device
Guard Enablement and Trusted Platform Module 2.0
Biometric sensor hardware that supports Enhanced Sign-in Security
Biometric sensor drivers compatible with Enhanced Sign-in Security
Device firmware with a Secure Devices (SDEV) ACPI table properly configured by
the device manufacturer for the included biometric hardware

Biometric Sensor Compatibility

Face Biometric Sensor


Enhanced Sign-in Security only supports some IR cameras on a limited number of chip
sets. Supported cameras must support Enhanced Sign-in Security in firmware. Usage of
the Windows inbox UVC camera driver is required. To check if the camera module is
Enhanced Sign-in Security-capable, first go to Device Manager and expand the
“Universal Serial Bus controllers” section. Right click on the device that has eXtensible
Host Controller in the name and select the Properties option to view the device
properties. If there are multiple entries for a host controller, check the properties section
for all. Navigate to the Details tab of the driver and select Capabilities from the Property
drop down menu. One of the devices should show it has the
“CM_DEVCAP_SECUREDEVICE” capability.

Next, check the properties sections of the PC Cameras by going to the “Cameras”
section in Device Manager. If there are multiple entries for PC Cameras, check the
properties section for all. Navigate to the Details tab of the drivers and select
Capabilities from the Property drop down menu. One of the PC camera devices should
have the “CM_DEVCAP_SECUREDEVICE” capability.
Fingerprint Biometric Sensor
Enhanced Sign-in Security capable fingerprint sensors must be match on chip. The
sensor must have a Microsoft issued certificate burned into the device during
manufacturing. The device driver and firmware must support Enhanced Sign-in Security
functionality. To check if a fingerprint module is Enhanced Sign-in Security-capable, first
navigate open device manager and expand the Biometric devices section. There should
be an entry for a fingerprint sensor. Right click the fingerprint reader entry and go to
Properties, then Details. Under the Property option, select “Device instance path”.
Open regedit.exe and navigate to HKLM\SYSTEM\CurrentControlSet\Enum\
[DeviceInstancePath]\Device Parameters\WinBio\Configurations where

DeviceInstancePath is the path listed in Device Manager. Select “Configurations”. There


should be a registry key listed named “SecureFingerprint” with a data value of 1. If it
does not exist, the device is not secure-capable.

Configurations should also have two folders beneath it: one labelled “0” and one
labelled “1”. If there is only one folder and not two, the device is not secure-capable.

How do I know if Enhanced Sign-in Security is


enabled

Security Center
In the Device Security section of the Windows Security application, there will be an entry
for Enhanced Sign-in Security if it is enabled on the system. This entry will describe the
hardware capability of the system. If the Enhanced Sign-in Security section is not
present, the feature is not enabled on the system.
If there is a biometric sensor embedded in the device that does not support Enhanced
Sign-in Security or that type of biometric hardware is absent from the system, it will be
indicated by the “Unavailable due to incompatible hardware” description next to the
corresponding sensor. This message indicates that the hardware does not follow the
sensor requirements needed to support Enhanced Sign-in Security.
Event Viewer
The Windows biometric framework generates logs events when each sensor on a system
is enumerated. These logs include information indicating whether a sensor is operating
with Enhanced Sign-in Security enabled. Biometric event logs are found in Event Viewer
under Event Viewer > Applications and Services Logs > Microsoft > Windows >
Biometrics > Operational.

If the biometric device has been loaded properly by the Windows biometric framework
there will be a log event with ID 1108 for the corresponding sensor. If the device is
operating with Enhanced Sign-in Security enabled, the sensor will be specified as
isolated in a “Virtual Secure Mode” process. If the device is not using Enhanced Sign-in
Security, it will be specified as isolated in a “System” process.
In the event 1108, cameras will be described using “Windows Hello Face Software Device
(ROOT\WINDOWSHELLOFACESOFTWAREDRIVER\0000)” and fingerprint devices will be
described using the device’s specific module and device ID. For fingerprint devices, the
device ID can be found in device Manager under Biometric Devices > [Fingerprint
Module] > Properties > Details > Device Instance Path.

Application Compatibility
For devices with Enhanced Sign-in Security-capable cameras, a Secure Devices (SDEV)
table is required. When an SDEV table is implemented and VBS is turned on, the SDEV
table is parsed by the Secure Kernel and restrictions are enforced on accessing
Peripheral Component Interconnect (PCI) device configuration space. These restrictions
are enacted to prevent malicious processes from manipulating the configuration space
of secured devices specified in the SDEV table.

Applications that attempt to read/write the PCI configuration space, except by means
explicitly supported by Windows, will result in bug checks when the SDEV table is parsed
and enforced.
All drivers and software included in the device image must be tested for compatibility,
given these software restrictions. Software or drivers that are distributed to the system
via Windows Update, the Microsoft Store, or other acceptable channels by the device
manufacturer should also be checked for compatibility. Without this verification, there
may be unexpected behavior on the system.

Unsupported Scenarios

Enabling Enhanced Sign-in Support on Windows Upgrade


Enhanced Sign-in Security is currently only supported on devices configured by a device
manufacturer to enable the capability with Windows 10 October 2020 update. In market
devices that are hardware-capable that upgrade to this OS build are not currently
supported.

Non-Enhanced Sign-in Supported Sensors


When Enhanced Sign-in Security is enabled, only biometric sensors that support
Enhanced Sign-in Security will work on the system. All non-capable sensors will not be
enumerated by the Windows Biometric framework.

It is the manufacturer’s decision on what hardware they include in the system and
whether Enhanced Sign-in Security is enabled by default. If there are any concerns
around biometric modalities being blocked, contact the device manufacturer for
support.

Pluggable/Peripheral Biometric Sensors


Enhanced Sign-in Security is not supported for external fingerprint sensors or camera
modules. With Enhanced Sign-in Security enabled, external or peripheral biometric
sensor operations will be blocked, regardless of whether they are secure-capable or not.
If you would like to use a peripheral with Enhanced Sign-in Security to log in with
Windows Hello, see Disabling/Enabling Enhanced Sign-in Security

Wake on touch for fingerprint sensors


Wake on Touch (WoT) describes the ability for the fingerprint sensor to wake the system
and login the user without requiring the user to touch the sensor twice. Devices that
support Modern Standby enable Wake on Touch sensor behavior.
Starting in Windows 11 SE, version 22H2 and Windows 11 Pro Edu/Education, version
22H2 with KB5027303, WoT will be available for ESS devices.

Troubleshooting

Face/Fingerprint authentication is not working


If biometric authentication is not working, first check that VBS is running and that the
secure component has started. To check if VBS is running, open System Information and
check under “System Summary”; there should be an entry for “Virtualization Based
Security” listed as Running.

Also check that the biometric isolation trust-lets are running. These should be listed
under System Information > Software Environment > Running Tasks as “bioiso.exe” and
“ngciso.exe”. If either of these checks fail, the system may not meet the requirements for
Enhanced Sign-in Security. Attempt to restart the biometric service using (3) below.

To check that the secure connection succeeded, refer to the “How do I know if Enhanced
Sign-in Security is enabled?” section.

1. In Settings under Sign-in Options, remove the non-functioning enrollment and re-
enroll; if the entry for Windows Hello Face/Fingerprint is unavailable with the
condition “We couldn’t find a fingerprint scanner compatible with Windows Hello
Face”, or something similar skip to (2) Check if authentication is working.
2. In device manager, the sensor should be listed under Biometrics devices. Reinstall
the driver by right clicking the name of the device and select Uninstall Device.
Restart the device, at which point Windows will attempt to reinstall the driver.
Check if authentication is working.
3. To restart the biometric service, first remove PIN from the system by going to Sign-
in Options and removing PIN. Open a command prompt as administrator and
enter “net stop wbiosrvc” then “net start wbiosrvc”. Check if fingerprint
authentication is working.
4. If biometrics are still not working on the device, file a feedback item using
Feedback Hub.
PIN is not working
PIN can be reset in the lock screen under Sign-in options. To do so, remove PIN and add
it again. This will prompt PIN reset, which should restore PIN functionality.

Disabling/Enabling Enhanced Sign-in Security


Starting in Windows 11 SE, version 22H2 and Windows 11 Pro Edu/Education, version
22H2 with KB5027303, users can temporarily turn off ESS if they would like to use an
external peripheral to authenticate with Windows Hello on their device.

7 Note

You do not need to temporarily disable ESS to use your peripherals device for
things such as Teams calls.

To enable peripherals, use the following command. This action needs to be performed
only once.

Open a command prompt window and run as an administrator:

Windows Command Prompt

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WinBio" /v


SupportPeripheralsWithEnhancedSignInSecurity /t REG_DWORD /d 1 /f

Restart your computer

7 Note

Upon restart, your fingerprint enrollment will be present but you will have to
re-enroll for Windows Hello Face.

If you find you are switching between your built-in sensors and peripherals, we
recommend that you perform the "Improve Recognition" action with whichever
peripheral you did not do your initial enrollment. This will ensure that you have the
most appropriate profile for each sensor.

If you’d like to stop using peripherals and re-enable ESS, use the following command.
This action needs to be performed once.

Open a command prompt window and run as an administrator:


Windows Command Prompt

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WinBio" /v


SupportPeripheralsWithEnhancedSignInSecurity /t REG_DWORD /d 0 /f

Restart your computer

7 Note

Upon restart, your fingerprint enrollment will be present but you will have to
re-enroll for Windows Hello Face.
Dual Enrollment
Article • 07/25/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Requirements

Hybrid and On-premises Windows Hello for Business deployments


Enterprise joined or Hybrid Azure joined devices
Certificate trust

) Important

Dual enrollment does not replace or provide the same security as Privileged Access
Workstations feature. Microsoft encourages enterprises to use the Privileged Access
Workstations for their privileged credential users. Enterprises can consider Windows
Hello for Business dual enrollment in situations where the Privileged Access feature
cannot be used. Read Privileged Access Workstations for more information.

Dual enrollment enables administrators to perform elevated, administrative functions by


enrolling both their non-privileged and privileged credentials on their device.

By design, Windows does not enumerate all Windows Hello for Business users from
within a user's session. Using the computer Group Policy setting, Allow enumeration of
emulated smart card for all users, you can configure a device to enumerate all enrolled
Windows Hello for Business credentials on selected devices.

With this setting, administrative users can sign in to Windows 10, version 1709 or later
using their non-privileged Windows Hello for Business credentials for normal work flow
such as email, but can launch Microsoft Management Consoles (MMCs), Remote
Desktop Services clients, and other applications by selecting Run as different user or
Run as administrator, selecting the privileged user account, and providing their PIN.
Administrators can also take advantage of this feature with command-line applications
by using runas.exe combined with the /smartcard argument. This enables
administrators to perform their day-to-day operations without needing to sign in and
out, or use fast user switching when alternating between privileged and non-privileged
workloads.

) Important

You must configure a Windows computer for Windows Hello for Business dual
enrollment before either user (privileged or non-privileged) provisions Windows
Hello for Business. Dual enrollment is a special setting that is configured on the
Windows Hello container during creation.

Configure Windows Hello for Business Dual


Enrollment
In this task, you will

Configure Active Directory to support Domain Administrator enrollment


Configure Dual Enrollment using Group Policy

Configure Active Directory to support Domain


Administrator enrollment
The designed Windows Hello for Business configuration gives the Key Admins (or
KeyCredential Admins when using domain controllers prior to Windows Server 2016)
group read and write permissions to the msDS-KeyCredentialsLink attribute. You
provided these permissions at root of the domain and use object inheritance to ensure
the permissions apply to all users in the domain regardless of their location within the
domain hierarchy.

Active Directory Domain Services uses AdminSDHolder to secure privileged users and
groups from unintentional modification by comparing and replacing the security on
privileged users and groups to match those defined on the AdminSDHolder object on
an hourly cycle. For Windows Hello for Business, your domain administrator account
may receive the permissions but they will disappear from the user object unless you give
the AdminSDHolder read and write permissions to the msDS-KeyCredential attribute.

Sign in to a domain controller or management workstation with access equivalent to


domain administrator.

1. Type the following command to add the allow read and write property permissions
for msDS-KeyCredentialLink attribute for the Key Admins (or KeyCredential
Admins) group on the AdminSDHolder object.
dsacls "CN=AdminSDHolder,CN=System,DC=domain,DC=com" /g "
[domainName\keyAdminGroup]":RPWP;msDS-KeyCredentialLink

where DC=domain,DC=com is the LDAP path of your Active Directory domain and
domainName\keyAdminGroup] is the NetBIOS name of your domain and the
name of the group you use to give access to keys based on your deployment. For
example:
dsacls "CN=AdminSDHolder,CN=System,DC=corp,DC=mstepdemo,DC=net" /g
"mstepdemo\Key Admins":RPWP;msDS-KeyCredentialLink

2. To trigger security descriptor propagation, open ldp.exe.


3. Click Connection and select Connect... Next to Server, type the name of the
domain controller that holds the PDC role for the domain. Next to Port, type 389
and click OK.
4. Click Connection and select Bind... Click OK to bind as the currently signed-in user.
5. Click Browser and select Modify. Leave the DN text box blank. Next to Attribute,
type RunProtectAdminGroupsTask. Next to Values, type 1. Click Enter to add this
to the Entry List.
6. Click Run to start the task.
7. Close LDP.

Configuring Dual Enrollment using Group Policy


You configure Windows 10 or Windows 11 to support dual enrollment using the
computer configuration portion of a Group Policy object.

1. Using the Group Policy Management Console (GPMC), create a new domain-based
Group Policy object and link it to an organizational Unit that contains Active
Directory computer objects used by privileged users.
2. Edit the Group Policy object from step 1.
3. Enable the Allow enumeration of emulated smart cards for all users policy setting
located under Computer Configuration->Administrative Templates->Windows
Components->Windows Hello for Business.
4. Close the Group Policy Management Editor to save the Group Policy object. Close
the GPMC.
5. Restart computers targeted by this Group Policy object.

The computer is ready for dual enrollment. Sign in as the privileged user first and enroll
for Windows Hello for Business. Once completed, sign out and sign in as the non-
privileged user and enroll for Windows Hello for Business. You can now use your
privileged credential to perform privileged tasks without using your password and
without needing to switch users.
Dynamic lock
Article • 03/10/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Dynamic lock is a feature that automatically locks a Windows device when a Bluetooth
paired phone signal falls below the maximum Received Signal Strength Indicator (RSSI)
value. The feature makes it more difficult for someone to gain access to your device if
you step away from your PC and forget to lock it.

) Important

The dynamic lock feature only locks the device if the Bluetooth signal falls and the
system is idle. If the system isn't idle (for example, an intruder gets access before
the Bluetooth signal falls below the limit), the device won't lock. Therefore, the
dynamic lock feature is an additional barrier. It doesn't replace the need for the
user to lock the computer. It only reduces the probability of someone gaining
access if the user forgets to lock it.

You can configure Windows devices to use the dynamic lock using a Group Policy
Object (GPO).

1. Using the Group Policy Management Console (GPMC), scope a domain-based


Group Policy to computer accounts in Active Directory.
2. Edit the Group Policy object from Step 1.
3. Enable the Configure dynamic lock factors policy setting located under Computer
Configuration > Administrative Templates > Windows Components > Windows
Hello for Business.
4. Close the Group Policy Management Editor to save the Group Policy object.

The Group Policy Editor, when the policy is enabled, creates a default signal rule policy
with the following value:

XML

<rule schemaVersion="1.0">
<signal type="bluetooth" scenario="Dynamic Lock" classOfDevice="512"
rssiMin="-10" rssiMaxDelta="-10"/>
</rule>

) Important
Microsoft recommends using the default values for this policy settings.
Measurements are relative based on the varying conditions of each environment.
Therefore, the same values may produce different results. Test policy settings in
each environment prior to broadly deploying the setting.

For this policy setting, the type and scenario attribute values are static and can't change.
The classofDevice is configurable but Phone is the only currently supported
configuration. The attribute defaults to Phone and uses the values from the following
table:

Description Value

Miscellaneous 0

Computer 256

Phone 512

LAN/Network Access Point 768

Audio/Video 1024

Peripheral 1280

Imaging 1536

Wearable 1792

Toy 2048

Health 2304

Uncategorized 7936

The rssiMin attribute value signal indicates the strength needed for the device to be
considered in-range. The default value of -10 enables a user to move about an average
size office or cubicle without triggering Windows to lock the device. The rssiMaxDelta
has a default value of -10, which instruct Windows to lock the device once the signal
strength weakens by more than measurement of 10.

RSSI measurements are relative and lower as the bluetooth signals between the two
paired devices reduces. Therefore a measurement of 0 is stronger than -10, which is
stronger than -60, which is an indicator the devices are moving further apart from each
other.
Multi-factor unlock
Article • 03/30/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Hello for Business supports the use of a single credential (PIN and biometrics)
for unlocking a device. Therefore, if any of those credentials are compromised (shoulder
surfed), an attacker could gain access to the system.

Windows Hello for Business can be configured with multi-factor unlock, by extending
Windows Hello with trusted signals. Administrators can configure devices to request a
combination of factors and trusted signals to unlock them.

Multi-factor unlock is ideal for organizations that:

Have expressed that PINs alone don't meet their security needs
Want to prevent Information Workers from sharing credentials
Want their organizations to comply with regulatory two-factor authentication
policy
Want to retain the familiar Windows sign-in user experience and not settle for a
custom solution

How it works
First unlock factor credential provider and Second unlock credential provider are
responsible for the bulk of the configuration. Each of these components contains a
globally unique identifier (GUID) that represents a different Windows credential
provider. With the policy setting enabled, users unlock the device using at least one
credential provider from each category before Windows allows the user to proceed to
their desktop.

The policy setting has three components:

First unlock factor credential provider


Second unlock factor credential provider
Signal rules for device unlock

Configure unlock factors

U Caution
When the DontDisplayLastUserName security policy is enabled, it is known to
interfere with the ability to use multi factor unlock.

The First unlock factor credential providers and Second unlock factor credential
providers portion of the policy setting each contain a comma separated list of credential
providers.

Supported credential providers include:

Credential Provider GUID

PIN {D6886603-9D2F-4EB2-B667-1971041FA96B}

Fingerprint {BEC09223-B018-416D-A0AC-523971B639F5}

Facial Recognition {8AF662BF-65A0-4D0A-A540-A338A999D36F}

Trusted Signal {27FBDB57-B613-4AF2-9D7E-4FA7A66C21AD}


(Phone proximity, Network location)

7 Note

Multifactor unlock does not support third-party credential providers or credential


providers not listed in the above table.

The default credential providers for the First unlock factor credential provider include:

PIN
Fingerprint
Facial Recognition

The default credential providers for the Second unlock factor credential provider
include:

Trusted Signal
PIN

Configure a comma separated list of credential provider GUIDs you want to use as first
and second unlock factors. While a credential provider can appear in both lists, a
credential supported by that provider can only satisfy one of the unlock factors. Listed
credential providers don't need to be in any specific order.

For example, if you include the PIN and fingerprint credential providers in both first and
second factor lists, a user can use their fingerprint or PIN as the first unlock factor.
Whichever factor you use to satisfy the first unlock factor can't be used to satisfy the
second unlock factor. Each factor can therefore be used exactly once. The Trusted Signal
provider can only be specified as part of the Second unlock factor credential provider
list.

Configure Signal Rules for the Trusted Signal


Credential Provider
The Signal rules for device unlock setting contains the rules the Trusted Signal
credential provider uses to satisfy unlocking the device.

Rule element
You represent signal rules in XML. Each signal rule has a starting and ending rule
element that contains the schemaVersion attribute and value. The current supported
schema version is 1.0 .

Example

XML

<rule schemaVersion="1.0">
</rule>

Signal element
Each rule element has a signal element. All signal elements have a type element and
value . The values supported are:

bluetooth
ipConfig
wifi

Bluetooth
You define the bluetooth signal with more attributes in the signal element. The
bluetooth configuration doesn't use any other elements. You can end the signal element
with short ending tag /> .
Attribute Value Required

type bluetooth yes

scenario Authentication yes

classOfDevice "number" no

rssiMin "number" no

rssiMaxDelta "number" no

For example:

XML

<rule schemaVersion="1.0">
<signal type="bluetooth" scenario="Authentication" classOfDevice="512"
rssiMin="-10" rssiMaxDelta="-10"/>
</rule>

The classofDevice attribute defaults to Phone and uses the values from the following
table:

Description Value

Miscellaneous 0

Computer 256

Phone 512

LAN/Network Access Point 768

Audio/Video 1024

Peripheral 1280

Imaging 1536

Wearable 1792

Toy 2048

Health 2304

Uncategorized 7936

The rssiMin attribute value signal indicates the strength needed for the device to be
considered "in-range". The default value of -10 enables a user to move about an average
size office or cubicle without triggering Windows to lock the device. The rssiMaxDelta
has a default value of -10, which instruct Windows to lock the device once the signal
strength weakens by more than measurement of 10.

RSSI measurements are relative, and lower as the bluetooth signals between the two
paired devices reduces. A measurement of 0 is stronger than -10. A measurement of -10
is stronger than -60, and indicates that the devices are moving further apart from each
other.

) Important

Microsoft recommends using the default values for this policy setting.
Measurements are relative, based on the varying conditions of each environment.
Therefore, the same values may produce different results. Test policy settings in
each environment prior to broadly deploying the setting. Use the rssiMIN and
rssiMaxDelta values from the XML file created by the Group Policy Management
Editor or remove both attributes to use the default values.

IP Configuration

You define IP configuration signals using one or more ipConfiguration elements. Each
element has a string value. IpConfiguration elements don't have attributes or nested
elements.

IPv4Prefix

The IPv4 network prefix represented in Internet standard dotted-decimal notation. A


network prefix that uses the Classless Inter-Domain Routing (CIDR) notation is required
as part of the network string. A network port must not be present in the network string.
A signal element may only contain one ipv4Prefix element. For example:

XML

<ipv4Prefix>192.168.100.0/24</ipv4Prefix>

The assigned IPv4 addresses in the range of 192.168.100.1 to 192.168.100.254 match


this signal configuration.

IPv4Gateway
The IPv4 network gateway represented in Internet standard dotted-decimal notation. A
network port or prefix must not be present in the network string. A signal element may
only contain one ipv4Gateway element. For example:

XML

<ipv4Gateway>192.168.100.10</ipv4Gateway>

IPv4DhcpServer

The IPv4 DHCP server represented in Internet standard dotted-decimal notation. A


network port or prefix must not be present in the network string. A signal element may
only contain one ipv4DhcpServer element. For example:

XML

<ipv4DhcpServer>192.168.100.10</ipv4DhcpServer>

IPv4DnsServer

The IPv4 DNS server represented in Internet standard dotted-decimal notation. A


network port or prefix must not be present in the network string.The signal element
may contain one or more ipv4DnsServer elements.

Example:

XML

<ipv4DnsServer>192.168.100.10</ipv4DnsServer>

IPv6Prefix

The IPv6 network prefix represented in IPv6 network using Internet standard
hexadecimal encoding. A network prefix in CIDR notation is required as part of the
network string. A network port or scope ID must not be present in the network string. A
signal element may only contain one ipv6Prefix element. For example:

XML

<ipv6Prefix>21DA:D3::/48</ipv6Prefix>
IPv6Gateway

The IPv6 network gateway represented in Internet standard hexadecimal encoding. An


IPv6 scope ID may be present in the network string. A network port or prefix must not
be present in the network string. A signal element may only contain one ipv6Gateway
element. For example:

XML

<ipv6Gateway>21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A%2</ipv6Gateway>

IPv6DhcpServer

The IPv6 DNS server represented in Internet standard hexadecimal encoding. An IPv6
scope ID may be present in the network string. A network port or prefix must not be
present in the network string. A signal element may only contain one ipv6DhcpServer
element. For example:

XML

<ipv6DhcpServer>21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A%2</ipv6DhcpServer

IPv6DnsServer

The IPv6 DNS server represented in Internet standard hexadecimal encoding. An IPv6
scope ID may be present in the network string. A network port or prefix must not be
present in the network string. The signal element may contain one or more
ipv6DnsServer elements. For example:

XML

<ipv6DnsServer>21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A%2</ipv6DnsServer>

dnsSuffix

The fully qualified domain name of your organization's internal DNS suffix where any
part of the fully qualified domain name in this setting exists in the computer's primary
DNS suffix. The signal element may contain one or more dnsSuffix elements. For
example:

XML
<dnsSuffix>corp.contoso.com</dnsSuffix>

Wi-Fi
You define Wi-Fi signals using one or more wifi elements. Each element has a string
value. Wifi elements don't have attributes or nested elements.

SSID

Contains the service set identifier (SSID) of a wireless network. The SSID is the name of
the wireless network. The SSID element is required. For example:

XML

<ssid>corpnetwifi</ssid>

BSSID

Contains the basic service set identifier (BSSID) of a wireless access point. the BSSID is
the mac address of the wireless access point. The BSSID element is optional. For
example:

XML

<bssid>12-ab-34-ff-e5-46</bssid>

Security

Contains the type of security the client uses when connecting to the wireless network.
The security element is required and must contain one of the following values:

Value Description

Open The wireless network is an open network that doesn't require any authentication
or encryption.

WEP The wireless network is protected using Wired Equivalent Privacy.

WPA-Personal The wireless network is protected using Wi-Fi Protected Access.

WPA- The wireless network is protected using Wi-Fi Protected Access-Enterprise.


Enterprise
Value Description

WPA2- The wireless network is protected using Wi-Fi Protected Access 2, which typically
Personal uses a pre-shared key.

WPA2- The wireless network is protected using Wi-Fi Protected Access 2-Enterprise.
Enterprise

For example:

XML

<security>WPA2-Enterprise</security>

TrustedRootCA
Contains the thumbprint of the trusted root certificate of the wireless network. You can
use any valid trusted root certificate. The value is represented as hexadecimal string,
where each byte in the string is separated by a single space. The element is optional. For
example:

XML

<trustedRootCA>a2 91 34 aa 22 3a a2 3a 4a 78 a2 aa 75 a2 34 2a 3a 11 4a
aa</trustedRootCA>

Sig_quality

Contains numeric value ranging from 0 to 100 to represent the wireless network's signal
strength needed to be considered a trusted signal.

For example:

XML

<sig_quality>80</sig_quality>

Sample Trusted Signal Configurations

) Important
These examples are wrapped for readability. Once properly formatted, the entire
XML contents must be a single line.

Example 1

The following example configures an IPConfig signal type using Ipv4Prefix,


Ipv4DnsServer, and DnsSuffix elements.

XML

<rule schemaVersion="1.0">
<signal type="ipConfig">
<ipv4Prefix>10.10.10.0/24</ipv4Prefix>
<ipv4DnsServer>10.10.0.1</ipv4DnsServer>
<ipv4DnsServer>10.10.0.2</ipv4DnsServer>
<dnsSuffix>corp.contoso.com</dnsSuffix>
</signal>
</rule>

Example 2
The following example configures an IpConfig signal type using a dnsSuffix element
and a bluetooth signal for phones. The example implies that either the IpConfig or the
Bluetooth rule must evaluate to true, for the resulting signal evaluation to be true.

7 Note

Separate each rule element using a comma.

XML

<rule schemaVersion="1.0">
<signal type="ipConfig">
<dnsSuffix>corp.contoso.com</dnsSuffix>
</signal>
</rule>,
<rule schemaVersion="1.0">
<signal type="bluetooth" scenario="Authentication" classOfDevice="512"
rssiMin="-10" rssiMaxDelta="-10"/>
</rule>

Example 3
The following example configures the same as example 2 using compounding and
elements. The example implies that the IpConfig and the Bluetooth rule must evaluate
to true, for the resulting signal evaluation to be true.

XML

<rule schemaVersion="1.0">
<and>
<signal type="ipConfig">
<dnsSuffix>corp.microsoft.com</dnsSuffix>
</signal>
<signal type="bluetooth" scenario="Authentication" classOfDevice="512"
rssiMin="-10" rssiMaxDelta="-10"/>
</and>
</rule>

Example 4
The following example configures Wi-Fi as a trusted signal.

XML

<rule schemaVersion="1.0">
<signal type="wifi">
<ssid>contoso</ssid>
<bssid>12-ab-34-ff-e5-46</bssid>
<security>WPA2-Enterprise</security>
<trustedRootCA>a2 91 34 aa 22 3a a2 3a 4a 78 a2 aa 75 a2 34 2a 3a 11 4a
aa</trustedRootCA>
<sig_quality>80</sig_quality>
</signal>
</rule>

Deploy Multifactor Unlock

) Important

You need to remove all third party credential providers to ensure users cannot
unlock their devices if they do not have the required factors. The fall back options
are to use passwords or smart cards (both of which could be disabled as needed).

Create the Multifactor Unlock Group Policy object


The Group Policy object contains the policy settings needed to trigger Windows Hello
for Business provisioning and to ensure Windows Hello for Business authentication
certificates are automatically renewed.

) Important

PIN must be in at least one of the groups


Trusted signals must be combined with another credential provider
You cannot use the same unlock factor to satisfy both categories. Therefore, if
you include any credential provider in both categories, it means it can satisfy
either category, but not both
The multifactor unlock feature is also supported via the Passport for Work
CSP. For more information, see Passport For Work CSP.

1. Start the Group Policy Management Console ( gpmc.msc ).


2. Expand the domain and select the Group Policy Object node in the navigation
pane.
3. Right-click Group Policy object and select New.
4. Type Multifactor Unlock in the name box and select OK.
5. In the content pane, right-click the Multifactor Unlock Group Policy object and
select Edit.
6. In the navigation pane, expand Policies under Computer Configuration.
7. Expand Administrative Templates > Windows Component, and select Windows
Hello for Business.
8. In the content pane, open Configure device unlock factors. Select Enable. The
Options section populates the policy setting with default values.
9. Configure first and second unlock factors using the information in Configure
Unlock Factors.
10. If using trusted signals, configure the trusted signals used by the unlock factor
using the information in Configure Signal Rules for the Trusted Signal Credential
Provider.
11. Select OK to close the Group Policy Management Editor. Use the Group Policy
Management Console to deploy the newly created Group Policy object to your
organization's computers.

Troubleshoot
Multi-factor unlock writes events to event log under Application and Services
Logs\Microsoft\Windows\HelloForBusiness with the category name Device Unlock.

Events

Event ID Details

3520 Unlock attempt initiated

5520 Unlock policy not configured

6520 Warning event

7520 Error event

8520 Success event


Remote Desktop
Article • 09/05/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Requirements

Hybrid and On-premises Windows Hello for Business deployments


Azure AD joined, Hybrid Azure AD joined, and Enterprise joined devices

Windows Hello for Business supports using a certificate deployed to a Windows Hello
for Business container as a supplied credential to establish a remote desktop connection
to a server or another device. This feature takes advantage of the redirected smart card
capabilities of the remote desktop protocol. Windows Hello for Business key trust can be
used with Remote Credential Guard to establish a remote desktop protocol connection.

Microsoft continues to investigate supporting using keys trust for supplied credentials in
a future release.

Remote Desktop with Biometrics


Requirements

Hybrid and On-premises Windows Hello for Business deployments


Azure AD joined, Hybrid Azure AD joined, and Enterprise joined devices
Biometric enrollments

The ability for users to authenticate to a remote desktop session using their Windows
Hello for Business biometric is on by default.

How does it work


Windows generates and stores cryptographic keys using a software component called a
key storage provider (KSP). Software-based keys are created and stored using the
Microsoft Software Key Storage Provider. Smart card keys are created and stored using
the Microsoft Smart Card Key Storage Provider. Keys created and protected by Windows
Hello for Business are created and stored using the Microsoft Passport Key Storage
Provider.

A certificate on a smart card starts with creating an asymmetric key pair using the
Microsoft Smart Card KSP. Windows requests a certificate based on the key pair from
your enterprises issuing certificate authority, which returns a certificate that is stored in
the user's Personal certificate store. The private key remains on the smart card and the
public key is stored with the certificate. Metadata on the certificate (and the key) stores
the key storage provider used to create the key (remember the certificate contains the
public key).

The same concept applies to Windows Hello for Business, except that the keys are
created using the Microsoft Passport KSP. The user's private key remains protected by
the device's security module (TPM) and the user's gesture (PIN/biometric). The
certificate APIs hide the complexity. When an application uses a certificate, the
certificate APIs locate the keys using the saved key storage provider. The key storage
providers direct the certificate APIs on which provider they use to find the private key
associated with the certificate. This is how Windows knows you have a smart card
certificate without the smart card inserted (and prompts you to insert the smart card).

Windows Hello for Business emulates a smart card for application compatibility, and the
Microsoft Passport KSP prompts the user for their biometric gesture or PIN.

Compatibility
Users appreciate convenience of biometrics and administrators value the security
however, you may experience compatibility issues with your applications and Windows
Hello for Business certificates. You can relax knowing a Group Policy setting and a MDM
URI exist to help you revert to the previous behavior for those users who need it.
) Important

The remote desktop with biometric feature does not work with Dual Enrollment
feature or scenarios where the user provides alternative credentials. Microsoft
continues to investigate supporting the feature.
Windows Hello for Business known
deployment issues
Article • 06/02/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

The content of this article is to help troubleshoot known deployment issues for
Windows Hello for Business.

PIN reset on Azure AD join devices fails with


We can't open that page right now error
PIN reset on Azure AD-joined devices uses a flow called web sign-in to authenticate the
user above lock. Web sign in only allows navigation to specific domains. If web sign-in
attempts to navigate to a domain that isn't allowed, it displays a page with the error
message We can't open that page right now.

Identify PIN Reset allowed domains issue


The user can launch the PIN reset flow from the lock screen using the I forgot my PIN
link in the PIN credential provider. Selecting the link launches a full screen UI for the PIN
experience on Azure AD Join devices. Typically, the UI displays an Azure authentication
page, where the user authenticates using Azure AD credentials and completes MFA.

In federated environments, authentication may be configured to route to AD FS or a


third-party identity provider. If the PIN reset flow is launched and attempts to navigate
to a federated identity provider server page, it fails and displays the We can't open that
page right now error, if the domain for the server page isn't included in an allowlist.

If you're a customer of Azure US Government cloud, PIN reset also attempts to navigate
to a domain that isn't included in the default allowlist. The result is the message We
can't open that page right now.

Resolve PIN Reset allowed domains issue


To resolve the error, you can configure a list of allowed domains for PIN reset using the
ConfigureWebSignInAllowedUrls policy. For information on how to configure the policy,
see Configure allowed URLs for federated identity providers on Azure AD joined devices.
Hybrid key trust sign in broken due to user
public key deletion
Applies to:

Hybrid key trust deployments


Windows Server 2016, builds 14393.3930 to 14393.4048
Windows Server 2019, builds 17763.1457 to 17763.1613

In Hybrid key trust deployments with domain controllers running certain builds of
Windows Server 2016 and Windows Server 2019, the user's Windows Hello for Business
key is deleted after they sign-in. Subsequent sign-ins will fail until the user's key is
synced during the next Azure AD Connect delta sync cycle.

Identify user public key deletion issue


After the user provisions a Windows Hello for Business credential in a hybrid key trust
environment, the key must sync from Azure AD to AD during an Azure AD Connect sync
cycle. The user's public key is written to the msDS-KeyCredentialLink attribute of the user
object.

Before the user's Windows Hello for Business key syncs, sign-ins with Windows Hello for
Business fail with the error message That option is temporarily unavailable. For now,
please use a different method to sign in. After the key syncs successfully, the user can
sign in and unlock with their PIN or enrolled biometrics.

In environments with the issue, after the first sign-in with Windows Hello for Business
and provisioning is complete, the next sign-in attempt fails. In environments where
domain controllers are running a mix of builds, some users may be impacted by the
issue, and subsequent sign in attempts may be sent to different domain controllers. The
result is intermittent sign-in failures.

After the initial sign-in attempt, the user's Windows Hello for Business public key is
deleted from the msDS-KeyCredentialLink attribute . You can verify the deletion by
querying a user's msDS-KeyCredentialLink attribute before and after sign-in. You can
query the msDS-KeyCredentialLink in AD using Get-ADUser and specifying msds-
keycredentiallink for the -Properties parameter.

Resolve user public key deletion issue


To resolve the issue, update Windows Server 2016 and 2019 domain controllers with the
latest patches. For Windows Server 2016, the behavior is fixed in build 14393.4104
(KB4593226 ) and later. For Windows Server 2019, the behavior is fixed in build
17763.1637 (KB4592440 ).

Azure AD joined device access to on-premises


resources using key trust and third-party
Certificate Authority (CA)
Applies to:

Azure AD joined key trust deployments


Third-party certificate authority (CA) issuing domain controller certificates

Windows Hello for Business uses smart-card based authentication for many operations.
This type of authentication has special guidelines when using a third-party CA for
certificate issuance, some of which apply to the domain controllers. Not all Windows
Hello for Business deployment types require these configurations. Accessing on-
premises resources from an Azure AD Joined device does require special configuration
when using a third-party CA to issue domain controller certificates.

For more information, read Guidelines for enabling smart card sign in with third-party
certification authorities.

Identify on-premises resource access issues with third


party CAs
The issue can be identified using network traces or Kerberos logging from the client. In
the network trace, the client fails to place a TGS_REQ request when a user attempts to
access a resource. On the client, it can be observed in the Kerberos operation event log
under Application and Services/Microsoft/Windows/Security-Kerberos/Operational . The
logs are disabled by default. The failure event for this case includes the following
information:

Console

Log Name: Microsoft-Windows-Kerberos/Operational


Source: Microsoft-Windows-Security-Kerberos
Event ID: 107
GUID: {98e6cfcb-ee0a-41e0-a57b-622d4e1b30b1}
Task Category: None
Level: Error
Keywords:
User: SYSTEM
Description:

The Kerberos client received a KDC certificate that does not have a matched
domain name.
Expected Domain Name: ad.contoso.com
Error Code: 0xC000006D

Resolve on-premises resource access issue with third


party CAs
To resolve the issue, domain controller certificates must be updated so that the
certificate subject contains the directory path of the server object (distinguished name).
Example Subject: CN=DC1,OU=Domain Controllers,DC=ad,DC=contoso,DC=com

Alternatively, you can set the subject alternative name (SAN) of the domain controller
certificate to contain the server object's fully qualified domain name and the NETBIOS
name of the domain. Example Subject Alternative Name:

dns=dc1.ad.contoso.com

dns=ad.contoso.com
dns=ad

Key trust authentication broken for Windows


Server 2019
Applies to:

Windows Server 2019


Hybrid key trust deployments
On-premises key trust deployments

Domain controllers running early versions of Windows Server 2019 have an issue that
prevents key trust authentication from working properly. Networks traces report
KDC_ERR_CLIENT_NAME_MISMATCH.

Identify Windows Server 2019 key trust authentication


issue
On the client, authentication with Windows Hello for Business fails with the error
message, That option is temporarily unavailable. For now, please use a different method
to sign in.

The error is presented on hybrid Azure AD-joined devices in key trust deployments after
Windows Hello for Business is provisioned, but before a user's key is synced from Azure
AD to AD. If a user's key isn't synced from Azure AD and the msDS-keycredentiallink
attribute on the user object in AD is populated for NGC, then it's possible that the error
occurs.

Another indicator of the failure can be identified using network traces. If you capture
network traces for a key trust sign-in event, the traces show Kerberos failing with the
error KDC_ERR_CLIENT_NAME_MISMATCH.

Resolve Server 2019 key trust authentication issue


The issue is resolved in Windows Server 2019, build 17763.316 (KB4487044 ). Upgrade
all Windows Server 2019 domain controllers to the build 17763.316 or newer to resolve
the issue.

Certificate trust provisioning with AD FS


broken on windows server 2019
Applies to:

Windows Server 2019


Hybrid certificate trust deployments
On-premises certificate trust deployments

AD FS running on Windows Server 2019 fails to complete device authentication due to


an invalid check of incoming scopes in the request. Device authentication to AD FS is a
requirement for Windows Hello for Business to enroll a certificate using AD FS. The
client blocks Windows Hello for Business provisioning until the authentication is
successful.

Identify certificate trust with AD FS 2019 enrollment issue


The provisioning experience for Windows Hello for Business launches if the prerequisite
checks are successful. The result of the provisioningAdmin checks is available in event
logs under Microsoft-Windows-User Device Registration. If provisioning is blocked
because device authentication doesn't succeed, event ID 362 is logged stating User has
successfully authenticated to the enterprise STS: No.
Console

Log Name: Microsoft-Windows-User Device Registration/Admin


Source: Microsoft-Windows-User Device Registration
Date: <Date and time>
Event ID: 362
Task Category: None
Level: Warning
Keywords:
User: <User SID>
Computer: <Computer name>
Description:
Windows Hello for Business provisioning will not be launched.
Device is Azure Active Directory-joined ( AADJ or DJ++ ): Yes
User has logged on with Azure Active Directory credentials: Yes
Windows Hello for Business policy is enabled: Yes
Windows Hello for Business post-logon provisioning is enabled: Yes
Local computer meets Windows hello for business hardware requirements: Yes
User is not connected to the machine via Remote Desktop: Yes
User certificate for on premise auth policy is enabled: Yes
Enterprise user logon certificate enrollment endpoint is ready: Not Tested
Enterprise user logon certificate template is : No ( 1 : StateNoPolicy )
User has successfully authenticated to the enterprise STS: No
Certificate enrollment method: enrollment authority
See https://go.microsoft.com/fwlink/?linkid=832647 for more details.

If a device recently joined a domain, there may be a delay before the device
authentication occurs. If the failing state of this prerequisite check persists, then it can
indicate an issue with the AD FS configuration.

If the AD FS scope issue is present, event logs on the AD FS server indicate an


authentication failure from the client. The error is logged in event logs under AD
FS/Admin as event ID 1021 and the event specifies that the client is forbidden access to
resource http://schemas.microsoft.com/ws/2009/12/identityserver/selfscope with
scope ugs :

Console

Log Name: AD FS/Admin


Source: AD FS
Date: <Date and time>
Event ID: 1021
Task Category: None
Level: Error
Keywords: AD FS
User: <ADFS service Account>
Computer: <Date and time>
Description:
Encountered error during OAuth token request.
Additional Data
Exception details:
Microsoft.IdentityServer.Web.Protocols.OAuth.Exceptions.OAuthUnauthorizedCli
entException: MSIS9368: Received invalid OAuth request. The client
'38aa3b87-a06d-4817-b275-7a316988d93b' is forbidden to access the resource
'http://schemas.microsoft.com/ws/2009/12/identityserver/selfscope' with
scope 'ugs'.
at
Microsoft.IdentityServer.Web.Protocols.OAuth.OAuthProtocolContext.ValidateSc
opes(String scopeParameter, String clientId, String relyingPartyId)
at
Microsoft.IdentityServer.Web.Protocols.OAuth.OAuthToken.OAuthJWTBearerReques
tContext.ValidateCore()

Resolve certificate trust with AD FS 2019 enrollment issue


This issue is fixed in Windows Server, version 1903 and later. For Windows Server 2019,
the issue can be remediated by adding the ugs scope manually.

1. Launch AD FS management console. Browse to Services > Scope Descriptions.

2. Right select Scope Descriptions and select Add Scope Description.

3. Under name type ugs, and select Apply > OK.

4. Launch PowerShell as an administrator.

5. Get the ObjectIdentifier of the application permission with the ClientRoleIdentifier


parameter equal to "38aa3b87-a06d-4817-b275-7a316988d93b":

PowerShell

(Get-AdfsApplicationPermission -ServerRoleIdentifiers
'http://schemas.microsoft.com/ws/2009/12/identityserver/selfscope' | ?{
$_.ClientRoleIdentifier -eq '38aa3b87-a06d-4817-b275-7a316988d93b'
}).ObjectIdentifier

6. Execute the command Set-AdfsApplicationPermission -TargetIdentifier


<ObjectIdentifier from step 5> -AddScope 'ugs' .

7. Restart the AD FS service.

8. On the client: Restart the client. The user should be prompted to provision
Windows Hello for Business.
Windows Hello errors during PIN creation
Article • 04/26/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

When you set up Windows Hello in Windows client, you may get an error during the Create a PIN step. This topic lists some of
the error codes with recommendations for mitigating the problem. If you get an error code that is not listed here, contact
Microsoft Support.

Where is the error code?


The following image shows an example of an error during Create a PIN.

Error mitigations
When a user encounters an error when creating the work PIN, advise the user to try the following steps. Many errors can be
mitigated by one of these steps.

1. Try to create the PIN again. Some errors are transient and resolve themselves.
2. Sign out, sign in, and try to create the PIN again.
3. Reboot the device and then try to create the PIN again.
4. Unjoin the device from Azure Active Directory (Azure AD), rejoin, and then try to create the PIN again. To unjoin a device,
go to Settings > System > About > Disconnect from organization.

If the error occurs again, check the error code against the following table to see if there is another mitigation for that error.
When no mitigation is listed in the table, contact Microsoft Support for assistance.

Hex Cause Mitigation

0x80090005 NTE_BAD_DATA Unjoin the device from Azure AD and rejoin.

0x8009000F The container or key already Unjoin the device from Azure AD and rejoin.
exists.

0x80090011 The container or key was not Unjoin the device from Azure AD and rejoin.
found.

0x80090029 TPM is not set up. Sign on with an administrator account. Select Start, type tpm.msc , and select tpm.msc Microsoft
Common Console Document. In the Actions pane, select Prepare the TPM.

0x8009002A NTE_NO_MEMORY Close programs which are taking up memory and try again.

0x80090031 NTE_AUTHENTICATION_IGNORED Reboot the device. If the error occurs again after rebooting, reset the TPM or run Clear-TPM.
Hex Cause Mitigation

0x80090035 Policy requires TPM and the Change the Windows Hello for Business policy to not require a TPM.
device does not have TPM.

0x80090036 User canceled an interactive User will be asked to try again.


dialog.

0x801C0003 User is not authorized to enroll. Check if the user has permission to perform the operation​.

0x801C000E Registration quota reached. Unjoin some other device that is currently joined using the same account or increase the maximum
number of devices per user.

0x801C000F Operation successful, but the Reboot the device.


device requires a reboot.

0x801C0010 The AIK certificate is not valid or Sign out and then sign in again.
trusted.

0x801C0011 The attestation statement of the Sign out and then sign in again.
transport key is invalid.

0x801C0012 Discovery request is not in a valid Sign out and then sign in again.
format.

0x801C0015 The device is required to be Join the device to an Active Directory domain.
joined to an Active Directory
domain.

0x801C0016 The federation provider Go to http://clientconfig.microsoftonline-p.net/FPURL.xml and verify that the file is not empty.
configuration is empty

0x801C0017 The federation provider domain is Go to http://clientconfig.microsoftonline-p.net/FPURL.xml and verify that the FPDOMAINNAME
empty element is not empty.

0x801C0018 The federation provider client Go to http://clientconfig.microsoftonline-p.net/FPURL.xml and verify that the CLIENTCONFIG
configuration URL is empty element contains a valid URL.

0x801C03E9 Server response message is Sign out and then sign in again.
invalid

0x801C03EA Server failed to authorize user or Check if the token is valid and user has permission to register Windows Hello for Business keys.
device.

0x801C03EB Server response http status is not Sign out and then sign in again.
valid

0x801C03EC Unhandled exception from server. sign out and then sign in again.
Hex Cause Mitigation

0x801C03ED Multi-factor authentication is Sign out and then sign in again. If that doesn't resolve the issue, unjoin the device from Azure AD
required for a 'ProvisionKey' and rejoin.
operation, but was not Allow user(s) to join to Azure AD under Azure AD Device settings.
performed.

-or-

Token was not found in the


Authorization header.

-or-

Failed to read one or more


objects.

-or-

The request sent to the server


was invalid.

-or-

User does not have permissions


to join to Azure AD.

0x801C03EE Attestation failed. Sign out and then sign in again.

0x801C03EF The AIK certificate is no longer Sign out and then sign in again.
valid.

0x801C03F2 Windows Hello key registration ERROR_BAD_DIRECTORY_REQUEST. Another object with the same value for property
failed. proxyAddresses already exists. To resolve the issue, refer to Duplicate Attributes Prevent Dirsync.
Also, if no sync conflict exists, please verify that the "Mail/Email address" in Azure Active Directory
and the Primary SMTP address are the same in the proxy address.

0x801C044D Authorization token does not Unjoin the device from Azure AD and rejoin.
contain device ID.

Unable to obtain user token. Sign out and then sign in again. Check network and credentials.

0x801C044E Failed to receive user credentials Sign out and then sign in again.
input.

0x801C0451 User token switch account. Delete the Web Account Manager token broker files located in
%LOCALAPPDATA%\Packages\Microsoft.AAD.BrokerPlugin_cw5n1h2txyewy\AC\TokenBroker\Accounts\*.*\
and reboot.

0xC00000BB Your PIN or this option is The destination domain controller doesn't support the login method. Most often the KDC service
temporarily unavailable. doesn't have the proper certificate to support the login. Another common cause can be the client
cannot verify the KDC certificate CRL. Use a different login method.

Errors with unknown mitigation


For errors listed in this table, contact Microsoft Support for assistance.

Hex Cause

0x80070057 Invalid parameter or argument is passed.

0X80072F0C Unknown

0x80072F8F A mismatch happens between the system's clock and the activation server's clock when attempting to activate Windows.

0x80090010 NTE_PERM

0x80090020 NTE_FAIL
Hex Cause

0x80090027 Caller provided a wrong parameter. If third-party code receives this error, they must change their code.

0x8009002D NTE_INTERNAL_ERROR

0x801C0001 ADRS server response is not in a valid format.

0x801C0002 Server failed to authenticate the user.

0x801C0006 Unhandled exception from server.

0x801C000B Redirection is needed and redirected location is not a well known server.

0x801C000C Discovery failed.

0x801C0013 Tenant ID is not found in the token.

0x801C0014 User SID is not found in the token.

0x801C0019 ​The federation provider client configuration is empty

0x801C001A The DRS endpoint in the federation provider client configuration is empty.

0x801C001B ​The device certificate is not found.

0x801C03F0 ​There is no key registered for the user.

0x801C03F1 ​There is no UPN in the token.

​0x801C044C There is no core window for the current thread.

0x801c004D DSREG_NO_DEFAULT_ACCOUNT: NGC provisioning is unable to find the default WAM account to use to request Azure Active
Directory token for provisioning. Unable to enroll a device to use a PIN for login.

0xCAA30193 HTTP 403 Request Forbidden: it means request left the device, however either Server, proxy or firewall generated this response.
Windows Hello for Business
Provisioning
Article • 11/23/2022 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Hello for Business provisioning enables a user to enroll a new, strong, two-
factor credential that they can use for passwordless authentication. Provisioning
experience vary based on:

How the device is joined to Azure Active Directory


The Windows Hello for Business deployment type
If the environment is managed or federated

List of provisioning flows:

Azure AD joined provisioning in a managed environment


Azure AD joined provisioning in a federated environment
Hybrid Azure AD joined provisioning in a cloud Kerberos trust deployment in a
managed environment
Hybrid Azure AD joined provisioning in a key trust deployment in a managed
environment
Hybrid Azure AD joined provisioning in a synchronous certificate trust deployment
in a federated environment
Domain joined provisioning in an On-premises key trust deployment
Domain joined provisioning in an On-premises certificate trust deployment

7 Note

The flows in this section are not exhaustive for every possible scenario. For
example, Federated Key Trust is also a supported configuration.

Azure AD joined provisioning in a managed


environment
Full size image

Phase Description

A The provisioning application hosted in the Cloud Experience Host (CXH) starts
provisioning by requesting an access token for the Azure Device Registration Service
(ADRS). The application makes the request using the Azure Active Directory Web Account
Manager plug-in.
Users must provide two factors of authentication. In this phase, the user has already
provided one factor of authentication, typically user name and password. The Azure MFA
service provides the second factor of authentication. If the user has performed Azure
MFA within the last 10 minutes, such as when registering the device from the out-of-box-
experience (OOBE), then they are not prompted for MFA because the current MFA
remains valid.
Azure Active Directory validates the access token request and the MFA claim associated
with it, creates an ADRS access token, and returns it to the application.

B After receiving an ADRS access token, the application detects if the device has a
Windows Hello biometric compatible sensor. If the application detects a biometric
sensor, it gives the user the choice to enroll biometrics. After completing or skipping
biometric enrollment, the application requires the user to create a PIN and the default
(and fall-back gesture when used with biometrics). The user provides and confirms their
PIN. Next, the application requests a Windows Hello for Business key pair from the key
pre-generation pool, which includes attestation data. This is the user key (ukpub/ukpriv).
Phase Description

C The application sends the ADRS token, ukpub, attestation data, and device information to
ADRS for user key registration. Azure DRS validates the MFA claim remains current. On
successful validation, Azure DRS locates the user's object in Azure Active Directory, writes
the key information to a multi-values attribute. The key information includes a reference
to the device from which it was created. Azure Active Directory returns a key ID to the
application which signals the end of user provisioning and the application exits.

Return to top

Azure AD joined provisioning in a federated


environment

Full size image

Phase Description

A The provisioning application hosted in the Cloud Experience Host (CXH) starts
provisioning by requesting an access token for the Azure Device Registration Service
(ADRS). The application makes the request using the Azure Active Directory Web Account
Manager plug-in.
In a federated environment, the plug-in sends the token request to the on-premises STS,
Phase Description

such as Active Directory Federation Services. The on-premises STS authenticates the user
and determines if the user should perform another factor of authentication.
Users must provide two factors of authentication. In this phase, the user has already
provided one factor of authentication, typically user name and password. The Azure MFA
service provides the second factor of authentication. If the user has performed Azure
MFA within the last 10 minutes, such as when registering the device from the out-of-box-
experience (OOBE), then they are not prompted for MFA because the current MFA
remains valid.
The on-premises STS server issues an enterprise token on successful MFA. The
application sends the token to Azure Active Directory.
Azure Active Directory validates the access token request and the MFA claim associated
with it, creates an ADRS access token, and returns it to the application.

B After receiving an ADRS access token, the application detects if the device has a
Windows Hello biometric compatible sensor. If the application detects a biometric
sensor, it gives the user the choice to enroll biometrics. After completing or skipping
biometric enrollment, the application requires the user to create a PIN and the default
(and fall-back gesture when used with biometrics). The user provides and confirms their
PIN. Next, the application requests a Windows Hello for Business key pair from the key
pre-generation pool, which includes attestation data. This is the user key (ukpub/ukpriv).

C The application sends the ADRS token, ukpub, attestation data, and device information to
ADRS for user key registration. Azure DRS validates MFA claim remains current. On
successful validation, Azure DRS locates the user's object in Azure Active Directory, writes
the key information to a multi-values attribute. The key information includes a reference
to the device from which it was created. Azure Active Directory returns key ID to the
application which signals the end of user provisioning and the application exits.

Return to top

Hybrid Azure AD joined provisioning in a cloud


Kerberos trust deployment in a managed
environment
Full size image

Phase Description

A The provisioning application hosted in the Cloud Experience Host (CXH) starts
provisioning by requesting an access token for the Azure Device Registration Service
(ADRS). The application makes the request using the Azure Active Directory Web Account
Manager plug-in.
Users must provide two factors of authentication. In this phase, the user has already
provided one factor of authentication, typically user name and password. The Azure MFA
service provides the second factor of authentication. If the user has performed Azure
MFA within the last 10 minutes, such as when registering the device from the out-of-box-
experience (OOBE), then they are not prompted for MFA because the current MFA
remains valid.
Azure Active Directory validates the access token request and the MFA claim associated
with it, creates an ADRS access token, and returns it to the application.

B After receiving an ADRS access token, the application detects if the device has a
Windows Hello biometric compatible sensor. If the application detects a biometric
sensor, it gives the user the choice to enroll biometrics. After completing or skipping
biometric enrollment, the application requires the user to create a PIN and the default
(and fall-back gesture when used with biometrics). The user provides and confirms their
PIN. Next, the application requests a Windows Hello for Business key pair from the key
pre-generation pool, which includes attestation data. This is the user key (ukpub/ukpriv).

C The application sends the ADRS token, ukpub, attestation data, and device information to
ADRS for user key registration. Azure DRS validates the MFA claim remains current. On
successful validation, Azure DRS locates the user's object in Azure Active Directory, writes
the key information to a multi-values attribute. The key information includes a reference
Phase Description

to the device from which it was created. Azure Active Directory returns a key ID to the
application which signals the end of user provisioning and the application exits.

7 Note

Windows Hello for Business cloud Kerberos trust does not require users' keys to be
synced from Azure AD to AD. Users can immediately authenticate to Azure Active
Directory and AD after provisioning their credential.

Return to top

Hybrid Azure AD joined provisioning in a key


trust deployment in a managed environment

Full size image

Phase Description

A The provisioning application hosted in the Cloud Experience Host (CXH) starts
provisioning by requesting an access token for the Azure Device Registration Service
Phase Description

(ADRS). The application makes the request using the Azure Active Directory Web Account
Manager plug-in.
Users must provide two factors of authentication. In this phase, the user has already
provided one factor of authentication, typically user name and password. The Azure MFA
service provides the second factor of authentication. If the user has performed Azure
MFA within the last 10 minutes, such as when registering the device from the out-of-box-
experience (OOBE), then they are not prompted for MFA because the current MFA
remains valid.
Azure Active Directory validates the access token request and the MFA claim associated
with it, creates an ADRS access token, and returns it to the application.

B After receiving an ADRS access token, the application detects if the device has a
Windows Hello biometric compatible sensor. If the application detects a biometric
sensor, it gives the user the choice to enroll biometrics. After completing or skipping
biometric enrollment, the application requires the user to create a PIN and the default
(and fall-back gesture when used with biometrics). The user provides and confirms their
PIN. Next, the application requests a Windows Hello for Business key pair from the key
pre-generation pool, which includes attestation data. This is the user key (ukpub/ukpriv).

C The application sends the ADRS token, ukpub, attestation data, and device information to
ADRS for user key registration. Azure DRS validates the MFA claim remains current. On
successful validation, Azure DRS locates the user's object in Azure Active Directory, writes
the key information to a multi-values attribute. The key information includes a reference
to the device from which it was created. Azure Active Directory returns a key ID to the
application which signals the end of user provisioning and the application exits.

D Azure AD Connect requests updates on its next synchronization cycle. Azure Active
Directory sends the user's public key that was securely registered through provisioning.
Azure Active Directory Connect receives the public key and writes it to user's msDS-
KeyCredentialLink attribute in Active Directory.

) Important

The newly provisioned user will not be able to sign in using Windows Hello for
Business until Azure AD Connect successfully synchronizes the public key to the on-
premises Active Directory.

Return to top

Hybrid Azure AD joined provisioning in a


synchronous certificate trust deployment in a
federated environment
Full size image

Phase Description

A The provisioning application hosted in the Cloud Experience Host (CXH) starts
provisioning by requesting an access token for the Azure Device Registration Service
(ADRS). The application makes the request using the Azure Active Directory Web Account
Manager plug-in.
In a federated environment, the plug-in sends the token request to the on-premises STS,
such as Active Directory Federation Services. The on-premises STS authenticates the user
and determines if the user should perform another factor of authentication.
Users must provide two factors of authentication. In this phase, the user has already
provided one factor of authentication, typically user name and password. The Azure MFA
service (or a third party MFA service) provides the second factor of authentication.
The on-premises STS server issues an enterprise token on successful MFA. The
application sends the token to Azure Active Directory.
Azure Active Directory validates the access token request and the MFA claim associated
with it, creates an ADRS access token, and returns it to the application.

B After receiving an ADRS access token, the application detects if the device has a
Windows Hello biometric compatible sensor. If the application detects a biometric
sensor, it gives the user the choice to enroll biometrics. After completing or skipping
biometric enrollment, the application requires the user to create a PIN and the default
(and fall-back gesture when used with biometrics). The user provides and confirms their
Phase Description

PIN. Next, the application requests a Windows Hello for Business key pair from the key
pre-generation pool, which includes attestation data. This is the user key (ukpub/ukpriv).

C The application sends the ADRS token, ukpub, attestation data, and device information to
ADRS for user key registration. Azure DRS validates the MFA claim remains current. On
successful validation, Azure DRS locates the user's object in Azure Active Directory, writes
the key information to a multi-values attribute. The key information includes a reference
to the device from which it was created. Azure Active Directory returns a key ID and a key
receipt to the application, which represents the end of user key registration.

D The certificate request portion of provisioning begins after the application receives a
successful response from key registration. The application creates a PKCS#10 certificate
request. The key used in the certificate request is the same key that was securely
provisioned.
The application sends the key receipt and certificate request, which includes the public
key, to the certificate registration authority hosted on the Active Directory Federation
Services (AD FS) farm.
After receiving the certificate request, the certificate registration authority queries Active
Directory for the msDS-KeyCredentialsLink for a list of registered public keys.

E The registration authority validates the public key in the certificate request matches a
registered key for the user.
If the public key in the certificate is not found in the list of registered public keys, it then
validates the key receipt to confirm the key was securely registered with Azure.
After validating the key receipt or public key, the registration authority signs the
certificate request using its enrollment agent certificate.

F The registration authority sends the certificate request to the enterprise issuing certificate
authority. The certificate authority validates the certificate request is signed by a valid
enrollment agent and, on success, issues a certificate and returns it to the registration
authority that then returns the certificate to the application.

G The application receives the newly issued certificate and installs it into the Personal store
of the user. This signals the end of provisioning.

) Important

Synchronous certificate enrollment does not depend on Azure AD Connect to


synchronize the user's public key to issue the Windows Hello for Business
authentication certificate. Users can sign-in using the certificate immediately after
provisioning completes. Azure AD Connect continues to synchronize the public key
to Active Directory, but is not shown in this flow.

Return to top
Domain joined provisioning in an On-premises
Key Trust deployment

Full size image

Phase Description

A The provisioning application hosted in the Cloud Experience Host (CXH) starts
provisioning by requesting an access token for the Enterprise Device Registration Service
(EDRS). The application makes the request using the Azure Active Directory Web Account
Manager plug-in.
In an on-premises deployment, the plug-in sends the token request to the on-premises
STS, such as Active Directory Federation Services. The on-premises STS authenticates the
user and determines if the user should perform another factor of authentication.
Users must provide two factors of authentication. In this phase, the user has already
provided one factor of authentication, typically user name and password. Azure MFA
server (or a third party MFA service) provides the second factor of authentication.
The on-premises STS server issues an enterprise DRS token on successful MFA.

B After receiving an EDRS access token, the application detects if the device has a Windows
Hello biometric compatible sensor. If the application detects a biometric sensor, it gives
the user the choice to enroll biometrics. After completing or skipping biometric
enrollment, the application requires the user to create a PIN and the default (and fall-
back gesture when used with biometrics). The user provides and confirms their PIN. Next,
Phase Description

the application requests a Windows Hello for Business key pair from the key pre-
generation pool, which includes attestation data. This is the user key (ukpub/ukpriv).

C The application sends the EDRS token, ukpub, attestation data, and device information to
the Enterprise DRS for user key registration. Enterprise DRS validates the MFA claim
remains current. On successful validation, the Enterprise DRS locates the user's object in
Active Directory, writes the key information to a multi-values attribute. The key
information includes a reference to the device from which it was created. The Enterprise
DRS returns a key ID to the application, which represents the end of user key registration.

Return to top

Domain joined provisioning in an On-premises


Certificate Trust deployment

Full size image


Phase Description

A The provisioning application hosted in the Cloud Experience Host (CXH) starts
provisioning by requesting an access token for the Enterprise Device Registration Service
(EDRS). The application makes the request using the Azure Active Directory Web Account
Manager plug-in.
In an on-premises deployment, the plug-in sends the token request to the on-premises
STS, such as Active Directory Federation Services. The on-premises STS authenticates the
user and determines if the user should perform another factor of authentication.
Users must provide two factors of authentication. In this phase, the user has already
provided one factor of authentication, typically user name and password. Azure MFA
server (or a third party MFA service) provides the second factor of authentication.
The on-premises STS server issues an enterprise DRS token on successful MFA.

B After receiving an EDRS access token, the application detects if the device has a Windows
Hello biometric compatible sensor. If the application detects a biometric sensor, it gives
the user the choice to enroll biometrics. After completing or skipping biometric
enrollment, the application requires the user to create a PIN and the default (and fall-
back gesture when used with biometrics). The user provides and confirms their PIN. Next,
the application requests a Windows Hello for Business key pair from the key pre-
generation pool, which includes attestation data. This is the user key (ukpub/ukpriv).

C The application sends the EDRS token, ukpub, attestation data, and device information to
the Enterprise DRS for user key registration. Enterprise DRS validates the MFA claim
remains current. On successful validation, the Enterprise DRS locates the user's object in
Active Directory, writes the key information to a multi-values attribute. The key
information includes a reference to the device from which it was created. The Enterprise
DRS returns a key ID to the application, which represents the end of user key registration.

D The certificate request portion of provisioning begins after the application receives a
successful response from key registration. The application creates a PKCS#10 certificate
request. The key used in the certificate request is the same key that was securely
provisioned.
The application sends the certificate request, which includes the public key, to the
certificate registration authority hosted on the Active Directory Federation Services (AD
FS) farm.
After receiving the certificate request, the certificate registration authority queries Active
Directory for the msDS-KeyCredentialsLink for a list of registered public keys.

E The registration authority validates the public key in the certificate request matches a
registered key for the user.
After validating the public key, the registration authority signs the certificate request
using its enrollment agent certificate.

F The registration authority sends the certificate request to the enterprise issuing certificate
authority. The certificate authority validates the certificate request is signed by a valid
enrollment agent and, on success, issues a certificate and returns it to the registration
authority that then returns the certificate to the application.
Phase Description

G The application receives the newly issued certificate and installs it into the Personal store
of the user. This signals the end of provisioning.

Return to top
Windows Hello for Business
authentication
Article • 05/24/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Windows Hello for Business authentication is a passwordless, two-factor authentication.


Authenticating with Windows Hello for Business provides a convenient sign-in
experience that authenticates the user to both Azure Active Directory and Active
Directory resources.

Azure AD-joined devices authenticate to Azure AD during sign-in and can, optionally,
authenticate to Active Directory. Hybrid Azure AD-joined devices authenticate to Active
Directory during sign-in, and authenticate to Azure AD in the background.

Azure AD join authentication to Azure AD

7 Note

All Azure AD-joined devices authenticate with Windows Hello for Business to Azure
AD the same way. The Windows Hello for Business trust type only impacts how the
device authenticates to on-premises AD.

Phase Description
Phase Description

A Authentication begins when the user dismisses the lock screen, which triggers Winlogon
to show the Windows Hello for Business credential provider. The user provides their
Windows Hello gesture (PIN or biometrics). The credential provider packages these
credentials and returns them to Winlogon. Winlogon passes the collected credentials to
lsass. Lsass passes the collected credentials to the Cloud Authentication security support
provider, referred to as the Cloud AP provider.

B The Cloud AP provider requests a nonce from Azure Active Directory. Azure AD returns a
nonce. The Cloud AP provider signs the nonce using the user's private key and returns
the signed nonce to the Azure Active Directory.

C Azure Active Directory validates the signed nonce using the user's securely registered
public key against the nonce signature. Azure AD then validates the returned signed
nonce, and creates a PRT with session key that is encrypted to the device's transport key
and returns it to the Cloud AP provider.

D The Cloud AP provider receives the encrypted PRT with session key. Using the device's
private transport key, the Cloud AP provider decrypt the session key and protects the
session key using the device's TPM.

E The Cloud AP provider returns a successful authentication response to lsass. Lsass caches
the PRT, and informs Winlogon of the success authentication. Winlogon creates a logon
session, loads the user's profile, and starts explorer.exe.

Azure AD join authentication to Active


Directory using cloud Kerberos trust

Phase Description
Phase Description

A Authentication to Active Directory from an Azure AD joined device begins with the user
first attempts to use a resource that needs Kerberos authentication. The Kerberos
security support provider, hosted in lsass, uses metadata from the Windows Hello for
Business key to get a hint of the user's domain. Using the hint, the provider uses the
DClocator service to locate a 2016 domain controller.

B After locating a domain controller, the Kerberos provider sends a partial TGT that it
received from Azure AD from a previous Azure AD authentication to the domain
controller. The partial TGT contains only the user SID, and it's signed by Azure AD
Kerberos. The domain controller verifies that the partial TGT is valid. On success, the KDC
returns a TGT to the client.

Azure AD join authentication to Active


Directory using a key

Phase Description

A Authentication to Active Directory from an Azure AD joined device begins with the user
first attempts to use a resource that needs Kerberos authentication. The Kerberos
security support provider, hosted in lsass, uses metadata from the Windows Hello for
Business key to get a hint of the user's domain. Using the hint, the provider uses the
DClocator service to locate a 2016 domain controller. After the provider locates a domain
controller, the provider uses the private key to sign the Kerberos preauthentication data.
Phase Description

B The Kerberos provider sends the signed preauthentication data and its public key (in the
form of a self-signed certificate) to the Key Distribution Center (KDC) service running on
the 2016 domain controller in the form of a KERB_AS_REQ.
The 2016 domain controller determines the certificate is a self-signed certificate. It
retrieves the public key from the certificate included in the KERB_AS_REQ and searches
for the public key in Active Directory. It validates the UPN for authentication request
matches the UPN registered in Active Directory and validates the signed
preauthentication data using the public key from Active Directory. On success, the KDC
returns a TGT to the client with its certificate in a KERB_AS_REP.

C The Kerberos provider ensures it can trust the response from the domain controller. First,
it ensures the KDC certificate chains to a root certificate that is trusted by the device.
Next, it ensures the certificate is within its validity period and that it hasn't been revoked.
The Kerberos provider then verifies the certificate has the KDC Authentication present
and that the subject alternate name listed in the KDC's certificate matches the domain
name to which the user is authenticating. After passing this criteria, Kerberos returns the
TGT to lsass, where it's cached and used for subsequent service ticket requests.

7 Note

You might have an on-premises domain federated with Azure AD. Once you have
successfully provisioned Windows Hello for Business PIN/Bio on the Azure AD
joined device, any future login of Windows Hello for Business (PIN/Bio) sign-in will
directly authenticate against Azure AD to get PRT and trigger authenticate against
your DC (if LOS to DC is available) to get Kerberos. It no longer uses AD FS to
authenticate for Windows Hello for Business sign-ins.

Azure AD join authentication to Active


Directory using a certificate
Phase Description

A Authentication to Active Directory from an Azure AD joined device begins with the user
first attempts to use a resource that needs Kerberos authentication. The Kerberos
security support provider, hosted in lsass, uses information from the certificate to get a
hint of the user's domain. Kerberos can use the distinguished name of the user found in
the subject of the certificate, or it can use the user principal name of the user found in
the subject alternate name of the certificate. Using the hint, the provider uses the
DClocator service to locate a domain controller. After the provider locates an active
domain controller, the provider uses the private key to sign the Kerberos
preauthentication data.

B The Kerberos provider sends the signed preauthentication data and user's certificate,
which includes the public key, to the Key Distribution Center (KDC) service running on
the domain controller in the form of a KERB_AS_REQ.
The domain controller determines the certificate isn't self-signed certificate. The domain
controller ensures the certificate chains to trusted root certificate, is within its validity
period, can be used for authentication, and hasn't been revoked. It retrieves the public
key and UPN from the certificate included in the KERB_AS_REQ and searches for the UPN
in Active Directory. It validates the signed preauthentication data using the public key
from the certificate. On success, the KDC returns a TGT to the client with its certificate in
a KERB_AS_REP.
Phase Description

C The Kerberos provider ensures it can trust the response from the domain controller. First,
it ensures the KDC certificate chains to a root certificate that is trusted by the device.
Next, it ensures the certificate is within its validity period and that it hasn't been revoked.
The Kerberos provider then verifies the certificate has the KDC Authentication present
and that the subject alternate name listed in the KDC's certificate matches the domain
name to which the user is authenticating. After passing this criteria, Kerberos returns the
TGT to lsass, where it's cached and used for subsequent service ticket requests.

7 Note

You may have an on-premises domain federated with Azure AD. Once you have
successfully provisioned Windows Hello for Business PIN/Bio on, any future login of
Windows Hello for Business (PIN/Bio) sign-in will directly authenticate against
Azure AD to get PRT, as well as authenticate against your DC (if LOS to DC is
available) to get Kerberos as mentioned previously. AD FS federation is used only
when Enterprise PRT calls are placed from the client. You need to have device write-
back enabled to get "Enterprise PRT" from your federation.

Hybrid Azure AD join authentication using


cloud Kerberos trust
Phase Description

A Authentication begins when the user dismisses the lock screen, which triggers Winlogon
to show the Windows Hello for Business credential provider. The user provides their
Windows Hello gesture (PIN or biometrics). The credential provider packages these
credentials and returns them to Winlogon. Winlogon passes the collected credentials to
lsass. Lsass queries Windows Hello for Business policy to check if cloud Kerberos trust is
enabled. If cloud Kerberos trust is enabled, Lsass passes the collected credentials to the
Cloud Authentication security support provider, or Cloud AP. Cloud AP requests a nonce
from Azure Active Directory. Azure AD returns a nonce.

B Cloud AP signs the nonce using the user's private key and returns the signed nonce to
Azure AD.

C Azure AD validates the signed nonce using the user's securely registered public key
against the nonce signature. After validating the signature, Azure AD then validates the
returned signed nonce. After validating the nonce, Azure AD creates a PRT with session
key that is encrypted to the device's transport key and creates a Partial TGT from Azure
AD Kerberos and returns them to Cloud AP.

D Cloud AP receives the encrypted PRT with session key. Using the device's private
transport key, Cloud AP decrypts the session key and protects the session key using the
device's TPM (if available). Cloud AP returns a successful authentication response to lsass.
Lsass caches the PRT and the Partial TGT.
Phase Description

E The Kerberos security support provider, hosted in lsass, uses metadata from the Windows
Hello for Business key to get a hint of the user's domain. Using the hint, the provider
uses the DClocator service to locate a 2016 domain controller. After locating an active
2016 domain controller, the Kerberos provider sends the partial TGT that it received from
Azure AD to the domain controller. The partial TGT contains only the user SID and is
signed by Azure AD Kerberos. The domain controller verifies that the partial TGT is valid.
On success, the KDC returns a TGT to the client. Kerberos returns the TGT to lsass, where
it's cached and used for subsequent service ticket requests. Lsass informs Winlogon of
the success authentication. Winlogon creates a logon session, loads the user's profile,
and starts explorer.exe.

Hybrid Azure AD join authentication using a


key

Phase Description
Phase Description

A Authentication begins when the user dismisses the lock screen, which triggers Winlogon
to show the Windows Hello for Business credential provider. The user provides their
Windows Hello gesture (PIN or biometrics). The credential provider packages these
credentials and returns them to Winlogon. Winlogon passes the collected credentials to
lsass. Lsass passes the collected credentials to the Kerberos security support provider.
The Kerberos provider gets domain hints from the domain joined workstation to locate a
domain controller for the user.

B The Kerberos provider sends the signed preauthentication data and the user's public key
(in the form of a self-signed certificate) to the Key Distribution Center (KDC) service
running on the 2016 domain controller in the form of a KERB_AS_REQ.
The 2016 domain controller determines the certificate is a self-signed certificate. It
retrieves the public key from the certificate included in the KERB_AS_REQ and searches
for the public key in Active Directory. It validates the UPN for authentication request
matches the UPN registered in Active Directory and validates the signed
preauthentication data using the public key from Active Directory. On success, the KDC
returns a TGT to the client with its certificate in a KERB_AS_REP.

C The Kerberos provider ensures it can trust the response from the domain controller. First,
it ensures the KDC certificate chains to a root certificate that is trusted by the device.
Next, it ensures the certificate is within its validity period and that it hasn't been revoked.
The Kerberos provider then verifies the certificate has the KDC Authentication present
and that the subject alternate name listed in the KDC's certificate matches the domain
name to which the user is authenticating.

D After passing this criteria, Kerberos returns the TGT to lsass, where it's cached and used
for subsequent service ticket requests.

E Lsass informs Winlogon of the success authentication. Winlogon creates a logon session,
loads the user's profile, and starts explorer.exe.

F While Windows loads the user's desktop, lsass passes the collected credentials to the
Cloud Authentication security support provider, referred to as the Cloud AP provider. The
Cloud AP provider requests a nonce from Azure Active Directory. Azure AD returns a
nonce.

G The Cloud AP provider signs the nonce using the user's private key and returns the
signed nonce to the Azure Active Directory. Azure Active Directory validates the signed
nonce using the user's securely registered public key against the nonce signature. After
validating the signature, Azure AD then validates the returned signed nonce. After
validating the nonce, Azure AD creates a PRT with session key that is encrypted to the
device's transport key and returns it to the Cloud AP provider.
The Cloud AP provider receives the encrypted PRT with session key. Using the device's
private transport key, the Cloud AP provider decrypt the session key and protects the
session key using the device's TPM.
The Cloud AP provider returns a successful authentication response to lsass. Lsass caches
the PRT.
) Important

In the above deployment model, a newly provisioned user will not be able to sign
in using Windows Hello for Business until (a) Azure AD Connect successfully
synchronizes the public key to the on-premises Active Directory and (b) device has
line of sight to the domain controller for the first time.

Hybrid Azure AD join authentication using a


certificate

Phase Description

A Authentication begins when the user dismisses the lock screen, which triggers Winlogon
to show the Windows Hello for Business credential provider. The user provides their
Windows Hello gesture (PIN or biometrics). The credential provider packages these
credentials and returns them to Winlogon. Winlogon passes the collected credentials to
lsass. Lsass passes the collected credentials to the Kerberos security support provider.
The Kerberos provider gets domain hints from the domain joined workstation to locate a
domain controller for the user.
Phase Description

B The Kerberos provider sends the signed preauthentication data and user's certificate,
which includes the public key, to the Key Distribution Center (KDC) service running on
the domain controller in the form of a KERB_AS_REQ.
The domain controller determines the certificate isn't self-signed certificate. The domain
controller ensures the certificate chains to trusted root certificate, is within its validity
period, can be used for authentication, and hasn't been revoked. It retrieves the public
key and UPN from the certificate included in the KERB_AS_REQ and searches for the UPN
in Active Directory. It validates the signed preauthentication data using the public key
from the certificate. On success, the KDC returns a TGT to the client with its certificate in
a KERB_AS_REP.

C The Kerberos provider ensures it can trust the response from the domain controller. First,
it ensures the KDC certificate chains to a root certificate that is trusted by the device.
Next, it ensures the certificate is within its validity period and that it hasn't been revoked.
The Kerberos provider then verifies the certificate has the KDC Authentication present
and that the subject alternate name listed in the KDC's certificate matches the domain
name to which the user is authenticating.

D After passing this criteria, Kerberos returns the TGT to lsass, where it's cached and used
for subsequent service ticket requests.

E Lsass informs Winlogon of the success authentication. Winlogon creates a logon session,
loads the user's profile, and starts explorer.exe.

F While Windows loads the user's desktop, lsass passes the collected credentials to the
Cloud Authentication security support provider, referred to as the Cloud AP provider. The
Cloud AP provider requests a nonce from Azure Active Directory. Azure AD returns a
nonce.

G The Cloud AP provider signs the nonce using the user's private key and returns the
signed nonce to the Azure Active Directory. Azure Active Directory validates the signed
nonce using the user's securely registered public key against the nonce signature. After
validating the signature, Azure AD then validates the returned signed nonce. After
validating the nonce, Azure AD creates a PRT with session key that is encrypted to the
device's transport key and returns it to the Cloud AP provider.
The Cloud AP provider receives the encrypted PRT with session key. Using the device's
private transport key, the Cloud AP provider decrypt the session key and protects the
session key using the device's TPM.
The Cloud AP provider returns a successful authentication response to lsass. Lsass caches
the PRT.

) Important

In the above deployment model, a newly provisioned user will not be able to sign
in using Windows Hello for Business unless the device has line of sight to the
domain controller.
WebAuthn APIs for passwordless
authentication on Windows
Article • 07/27/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Passwords can leave your customers vulnerable to data breaches and security attacks by
malicious users.

Microsoft has long been a proponent of passwordless authentication, and has


introduced the W3C/Fast IDentity Online 2 (FIDO2) Win32 WebAuthn platform APIs in
Windows 10 (version 1903).

Starting in Windows 11, version 22H2, WebAuthn APIs support ECC algorithms.

What does this mean?


By using WebAuthn APIs, developer partners and the developer community can use
Windows Hello or FIDO2 Security Keys to implement passwordless multi-factor
authentication for their applications on Windows devices.

Users of these apps or sites can use any browser that supports WebAuthn APIs for
passwordless authentication. Users will have a familiar and consistent experience on
Windows, no matter which browser they use.

Developers should use the WebAuthn APIs to support FIDO2 authentication keys in a
consistent way for users. Additionally, developers can use all the transports that are
available per FIDO2 specifications (USB, NFC, and BLE) while avoiding the interaction
and management overhead.

7 Note

When these APIs are in use, Windows 10 browsers or applications don't have direct
access to the FIDO2 transports for FIDO-related messaging.

The big picture


The Client to Authenticator Protocol 2 (CTAP2) and WebAuthn define an abstraction
layer that creates an ecosystem for strongly authenticated credentials. In this ecosystem,
any interoperable client (such as a native app or browser) that runs on a given client
device uses a standardized method to interact with any interoperable authenticator.
Interoperable authenticators include authenticators that are built into the client device
(platform authenticators) and authenticators that connect to the client device by using
USB, BLE, or NFC connections (roaming authenticators).

The authentication process starts when the user makes a specific user gesture that
indicates consent for the operation. At the request of the client, the authenticator
securely creates strong cryptographic keys and stores them locally.

After these client-specific keys are created, clients can request attestations for
registration and authentication. The type of signature that the private key uses reflects
the user gesture that was made.

The following diagram shows how CTAP and WebAuthn interact. The light blue dotted
arrows represent interactions that depend on the specific implementation of the
platform APIs.

Relationships of the components that participate in passwordless authentication

A combined WebAuthn/CTAP2 dance includes the following cast of characters:

Client device. The client device is the hardware that hosts a given strong
authentication. Laptops and phones are examples of client devices.

Relying parties and clients. Relying parties are web or native applications that
consume strong credentials. The relying parties run on client devices.

As a relying party, a native application can also act as a WebAuthn client to


make direct WebAuthn calls.

As a relying party, a web application can't directly interact with the WebAuthn
API. The relying party must broker the deal through the browser.
7 Note

The preceding diagram doesn't depict Single Sign-On (SSO) authentication.


Be careful not to confuse FIDO relying parties with federated relying parties.

WebAuthn API. The WebAuthn API enables clients to make requests to


authenticators. The client can request the authenticator to create a key, provide an
assertion about a key, report capabilities, manage a PIN, and so on.

CTAP2 platform/host. The platform (also called the host in the CTAP2 spec) is the
part of the client device that negotiates with authenticators. The platform is
responsible for securely reporting the origin of the request and for calling the
CTAP2 Concise Binary Object Representation (CBOR) APIs. If the platform isn't
CTAP2-aware, the clients themselves take on more of the burden. In this case, the
components and interactions shown in the preceding diagram may differ.

Platform authenticator. A platform authenticator usually resides on a client device.


Examples of platform authenticators include fingerprint recognition technology
that uses a built-in laptop fingerprint reader and facial recognition technology that
uses a built-in smartphone camera. Cross-platform transport protocols such as
USB, NFC or BLE can't access platform authenticators.

Roaming authenticator. A roaming authenticator can connect to multiple client


devices. Client devices must use a supported transport protocol to negotiate
interactions. Examples of roaming authenticators include USB security keys, BLE-
enabled smartphone applications, and NFC-enabled proximity cards. Roaming
authenticators can support CTAP1, CTAP2, or both protocols.

Many relying parties and clients can interact with many authenticators on a single client
device. A user can install multiple browsers that support WebAuthn, and might
simultaneously have access to a built-in fingerprint reader, a plugged-in security key,
and a BLE-enabled mobile application.

Interoperability
Before WebAuthn and CTAP2, there were U2F and CTAP1. U2F is the FIDO Alliance
universal second-factor specification. There are many authenticators that speak CTAP1
and manage U2F credentials. WebAuthn was designed to be interoperable with CTAP1
Authenticators. A relying party that uses WebAuthn can still use U2F credentials if the
relying party doesn't require FIDO2-only functionality.
FIDO2 authenticators have already been implemented and WebAuthn relying parties
might require the following optional features:

Keys for multiple accounts (keys can be stored per relying party)
Client PIN
Location (the authenticator returns a location)
Hash-based Message Authentication Code (HMAC)-secret (enables offline
scenarios)

The following options might be useful in the future, but haven't been observed in the
wild yet:

Transactional approval
User verification index (servers can determine whether biometric data that's stored
locally has changed over time)
User verification method (the authenticator returns the exact method)
Biometric performance bounds (the relying party can specify acceptable false
acceptance and false rejection rates)

Microsoft implementation
The Microsoft FIDO2 implementation has been years in the making. Software and
services are implemented independently as standards-compliant entities. As of the
Windows 10, version 1809 (October 2018) release, all Microsoft components use the
latest WebAuthn Candidate Release. It's a stable release that's not expected to
normatively change before the specification is finally ratified. Because Microsoft is
among the first in the world to deploy FIDO2, some combinations of popular non-
Microsoft components won't be interoperable yet.

Here's an approximate layout of where the Microsoft bits go:


Microsoft's implementation of WebAuthn and CATP2 APIs

WebAuthn relying party: Microsoft Account. If you aren't familiar with Microsoft
Account, it's the sign-in service for Xbox, Outlook, and many other sites. The sign-
in experience uses client-side JavaScript to trigger Microsoft Edge to talk to the
WebAuthn APIs. Microsoft Account requires that authenticators have the following
characteristics:
Keys are stored locally on the authenticator and not on a remote server
Offline scenarios work (enabled by using HMAC)
Users can put keys for multiple user accounts on the same authenticator
If it's necessary, authenticators can use a client PIN to unlock a TPM

) Important

Because Microsoft Account requires features and extensions that are unique
to FIDO2 CTAP2 authenticators, it doesn't accept CTAP1 (U2F) credentials.

WebAuthn client: Microsoft Edge. Microsoft Edge can handle the user interface
for the WebAuthn and CTAP2 features that this article describes. It also supports
the AppID extension. Microsoft Edge can interact with both CTAP1 and CTAP2
authenticators. This scope for interaction means that it can create and use both
U2F and FIDO2 credentials. However, Microsoft Edge doesn't speak the U2F
protocol. Therefore, relying parties must use only the WebAuthn specification.
Microsoft Edge on Android doesn't support WebAuthn.

7 Note
For authoritative information about Microsoft Edge support for WebAuthn
and CTAP, see Legacy Microsoft Edge developer documentation.

Platform: Windows 10, Windows 11. Windows 10 and Windows 11 host the Win32
Platform WebAuthn APIs.

Roaming Authenticators. You might notice that there's no Microsoft roaming


authenticator. The reason is because there's already a strong ecosystem of
products that specialize in strong authentication, and every customer (whether
corporations or individuals) has different requirements for security, ease of use,
distribution, and account recovery. For more information on the ever-growing list
of FIDO2-certified authenticators, see FIDO Certified Products . The list includes
built-in authenticators, roaming authenticators, and even chip manufacturers who
have certified designs.

Developer references
The WebAuthn APIs are documented in the Microsoft/webauthn GitHub repo. To
understand how FIDO2 authenticators work, review the following two specifications:

Web Authentication: An API for accessing Public Key Credentials (available on


the W3C site). This document is known as the WebAuthn spec.
Client to Authenticator Protocol (CTAP) . This document is available at the FIDO
Alliance site, on which hardware and platform teams are working together to
solve the problem of FIDO authentication.
Technology and terms
Article • 02/21/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Attestation identity keys


Because the endorsement certificate is unique for each device and doesn't change, the
usage of it may present privacy concerns because it's theoretically possible to track a
specific device. To avoid this privacy problem, Windows issues a derived attestation
anchor based on the endorsement certificate. This intermediate key, which can be
attested to an endorsement key, is the Attestation Identity Key (AIK) and the
corresponding certificate is called the AIK certificate. This AIK certificate is issued by a
Microsoft cloud service.

7 Note

The AIK certificate must be provisioned in conjunction with a third-party service like
the Microsoft Cloud CA service. After it is provisioned, the AIK private key can be
used to report platform configuration. Windows creates a signature over the
platform log state (and a monotonic counter value) at each boot by using the AIK.
The AIK is an asymmetric (public/private) key pair that is used as a substitute for
the EK as an identity for the TPM for privacy purposes. The private portion of an AIK
is never revealed or used outside the TPM and can only be used inside the TPM for
a limited set of operations. Furthermore, it can only be used for signing, and only
for limited, TPM-defined operations.

Windows creates AIKs protected by the TPM, if available, that are 2048-bit RSA signing
keys. Microsoft hosts a cloud service called Microsoft Cloud CA to establish
cryptographically that it's communicating with a real TPM and that the TPM possesses
the presented AIK. After the Microsoft Cloud CA service has established these facts, it
will issue an AIK certificate to the Windows device.

Many existing devices that will upgrade to Windows 10 won't have a TPM, or the TPM
won't contain an endorsement certificate. To accommodate those devices, Windows 10
or Windows 11 allows the issuance of AIK certificates without the presence of an
endorsement certificate. Such AIK certificates aren't issued by Microsoft Cloud CA. This
behavior isn't as trustworthy as an endorsement certificate that is burned into the device
during manufacturing, but it will provide compatibility for advanced scenarios like
Windows Hello for Business without TPM.
In the issued AIK certificate, a special OID is added to attest that endorsement certificate
was used during the attestation process. This information can be used by a relying party
to decide whether to reject devices that are attested using AIK certificates without an
endorsement certificate or accept them. Another scenario can be to not allow access to
high-value assets from devices that are attested by an AIK certificate that's not backed
by an endorsement certificate.

Related to attestation identity keys


Endorsement key
Storage root key
Trusted platform module

More information about attestation identity keys


Windows client certificate enrollment protocol: glossary
TPM library specification

Azure Active Directory join


Azure Active Directory (Azure AD) join is intended for organizations that desire to be
cloud-first or cloud-only. There's no restriction on the size or type of organizations that
can deploy Azure AD join. Azure AD join also works in a hybrid environment and can
enable access to on-premises applications and resources.

Related to Azure AD join


Join type
Hybrid Azure AD join

More information about Azure AD join


Introduction to device identity in Azure AD.

Azure AD registration
The goal of Azure AD-registered devices is to provide you with support for the bring
your own device (BYOD) scenario. In this scenario, a user can access your organization's
Azure AD-controlled resources using a personal device.
Related to Azure AD registration
Azure AD join
Hybrid Azure AD join
Join type

More information about Azure AD registration


Introduction to device identity in Azure AD.

Certificate trust
The certificate trust model uses a securely issued certificate based on the user's
Windows Hello for Business identity to authenticate to on-premises Active Directory.
The certificate trust model is supported in hybrid and on-premises deployments and is
compatible with Windows Server 2008 R2 and later domain controllers.

Related to certificate trust


Deployment type
Hybrid Azure AD join
Hybrid deployment
Cloud Kerberos trust
Key trust
On-premises deployment
Trust type

More information about certificate trust


Windows Hello for Business planning guide

Cloud deployment
The Windows Hello for Business cloud deployment is exclusively for organizations using
cloud-based identities and resources. Device management is accomplished using Intune
or a modern management alternative. Cloud deployments use Azure AD-joined or Azure
AD-registered devices.

Related to cloud deployment


Azure AD join
Azure AD registration
Deployment type
Join type

Cloud experience host


In Windows 10 and Windows 11, cloud experience host is an application used while
joining the workplace environment or Azure AD for rendering the experience when
collecting your company-provided credentials. Once you enroll your device to your
workplace environment or Azure AD, your organization will be able to manage your PC
and collect information about you (including your location). It might add or remove
apps or content, change settings, disable features, prevent you from removing your
company account, or reset your PC.

Related to cloud experience host


Windows Hello for Business
Managed Windows Hello in organization

More information on cloud experience host


Windows Hello for Business and device registration

Cloud Kerberos trust


The cloud Kerberos trust model offers a simplified deployment experience, when
compared to the other trust types.
With cloud Kerberos trust, there's no need to deploy certificates to the users or to the
domain controllers, which is ideal for environments without an existing PKI.

Giving the simplicity offered by this model, cloud Kerberos trust is the recommended
model when compared to the key trust model. It is also the preferred deployment
model if you do not need to support certificate authentication scenarios.

Related to cloud Kerberos trust


Deployment type
Hybrid Azure AD join
Hybrid deployment
Key trust
On-premises deployment
Trust type

More information about cloud Kerberos trust


Cloud Kerberos trust deployment

Deployment type
Windows Hello for Business has three deployment models to accommodate the needs
of different organizations. The three deployment models include:

Cloud
Hybrid
On-premises

Related to deployment type


Cloud deployment
Hybrid deployment
On-premises deployment

More information about deployment type


Windows Hello for Business planning guide

Endorsement key
The TPM has an embedded unique cryptographic key called the endorsement key. The
TPM endorsement key is a pair of asymmetric keys (RSA size 2048 bits).

The endorsement key public key is used for sending securely sensitive parameters, such
as when taking possession of the TPM that contains the defining hash of the owner
password. The EK private key is used when creating secondary keys like AIKs.

The endorsement key acts as an identity card for the TPM.

The endorsement key is often accompanied by one or two digital certificates:


One certificate is produced by the TPM manufacturer and is called the
endorsement certificate. The endorsement certificate is used to prove the
authenticity of the TPM (for example, that it's a real TPM manufactured by a
specific chip maker) to local processes, applications, or cloud services. The
endorsement certificate is created during manufacturing or the first time the TPM
is initialized by communicating with an online service.

The other certificate is produced by the platform builder and is called the platform
certificate to indicate that a specific TPM is integrated with a certain device.

For certain devices that use firmware-based TPM produced by Intel or Qualcomm, the
endorsement certificate is created when the TPM is initialized during the OOBE of
Windows 10 and Windows 11.

Related to endorsement key


Attestation identity keys
Storage root key
Trusted platform module

More information about endorsement key


Understand the TPM endorsement key
TPM library specification

Federated environment
Primarily for large enterprise organizations with more complex authentication
requirements, on-premises directory objects are synchronized with Azure AD and users
accounts are managed on-premises. With AD FS, users have the same password on-
premises and in the cloud and they don't have to sign in again to use Microsoft cloud
services. This federated authentication model can provide extra authentication
requirements, such as smart card-based authentication or a third-party multi-factor
authentication and is typically required when organizations have an authentication
requirement not natively supported by Azure AD.

Related to federated environment


Hybrid deployment
Managed environment
Pass-through authentication
Password hash sync

More information about federated environment


Choose the right authentication method for your Azure AD hybrid identity solution

Hybrid Azure AD join


For more than a decade, many organizations have used the domain join to their on-
premises Active Directory to enable:

IT departments to manage work-owned devices from a central location.


Users to sign in to their devices with their Active Directory work or school
accounts.

Typically, organizations with an on-premises footprint rely on imaging methods to


provision devices, and they often use or group policy to manage them.

If your environment has an on-premises AD footprint and you also want benefit from
the capabilities provided by Azure AD, you can implement hybrid Azure AD-joined
devices. These devices are joined to both your on-premises Active Directory and your
Azure AD.

Related to hybrid Azure AD join


Azure AD join
Azure AD registration
Hybrid deployment

More information about hybrid Azure AD join


Introduction to device identity in Azure AD

Hybrid deployment
The Windows Hello for Business hybrid deployment is for organizations that have both
on-premises and cloud resources that are accessed using a managed or federated
identity that's synchronized with Azure AD. Hybrid deployments support devices that
are Azure AD-registered, Azure AD-joined, and hybrid Azure AD-joined. The Hybrid
deployment model supports three trust types for on-premises authentication: cloud
Kerberos trust, key trust and certificate trust.
Related to hybrid deployment
Azure AD join
Azure AD registration
Hybrid Azure AD join

More information about hybrid deployment


Windows Hello for Business planning guide

Join type
Join type is how devices are associated with Azure AD. For a device to authenticate to
Azure AD it must be registered or joined.

Registering a device to Azure AD enables you to manage a device's identity. When a


device is registered, Azure AD device registration provides the device with an identity
that is used to authenticate the device when a user signs-in to Azure AD. You can use
the identity to enable or disable a device.

When combined with a mobile device management (MDM) solution such as Microsoft
Intune, the device attributes in Azure AD are updated with additional information about
the device. This behavior allows you to create conditional access rules that enforce
access from devices to meet your standards for security and compliance. For more
information on enrolling devices in Microsoft Intune, see Enroll devices for management
in Intune.

Joining a device is an extension to registering a device. This method provides you with
all the benefits of registering a device, and changes the local state of a device. Changing
the local state enables your users to sign-in to a device using an organizational work or
school account instead of a personal account.

Related to join type


Azure AD join
Azure AD registration
Hybrid Azure AD join

More information about join type


Introduction to device identity in Azure AD
Key trust
The key trust model uses the user's Windows Hello for Business identity to authenticate
to on-premises Active Directory. The key trust model is supported in hybrid and on-
premises deployments and requires Windows Server 2016 domain controllers.

Related to key trust


Cloud Kerberos trust
Certificate trust
Deployment type
Hybrid Azure AD join
Hybrid deployment
On-premises deployment
Trust type

More information about key trust


Windows Hello for Business planning guide

Managed environment
Managed environments are for non-federated environments where Azure AD manages
the authentication using technologies such as Password Hash Synchronization and Pass-
through Authentication rather than a federation service such as Active Directory
Federation Services (ADFS).

Related to managed environment


Federated environment
Pass-through authentication
Password hash synchronization

On-premises deployment
The Windows Hello for Business on-premises deployment is for organizations that
exclusively have on-premises resources that are accessed using Active Directory
identities. On-premises deployments support domain joined devices. The on-premises
deployment model supports two authentication trust types, key trust and certificate
trust.

Related to on-premises deployment


Cloud deployment
Deployment type
Hybrid deployment

More information about on-premises deployment


Windows Hello for Business planning guide

Pass-through authentication
Pass-through authentication provides a simple password validation for Azure AD
authentication services. It uses a software agent that runs on one or more on-premises
servers to validate the users directly with your on-premises Active Directory. With pass-
through authentication (PTA), you synchronize on-premises Active Directory user
account objects with Azure AD and manage your users on-premises. Allows your users
to sign in to both on-premises and Microsoft cloud resources and applications using
their on-premises account and password. This configuration validates users' passwords
directly against your on-premises Active Directory without sending password hashes to
Azure AD. Companies with a security requirement to immediately enforce on-premises
user account states, password policies, and sign-in hours would use this authentication
method. With seamless single sign-on, users are automatically signed in to Azure AD
when they are on their corporate devices and connected to your corporate network.

Related to pass-through authentication


Federated environment
Managed environment
Password hash synchronization

More information about pass-through authentication


Choose the right authentication method for your Azure AD hybrid identity solution

Password hash sync


Password hash sync is the simplest way to enable authentication for on-premises
directory objects in Azure AD. With password hash sync (PHS), you synchronize your on-
premises Active Directory user account objects with Azure AD and manage your users
on-premises. Hashes of user passwords are synchronized from your on-premises Active
Directory to Azure AD so that the users have the same password on-premises and in the
cloud. When passwords are changed or reset on-premises, the new password hashes are
synchronized to Azure AD so that your users can always use the same password for
cloud resources and on-premises resources. The passwords are never sent to Azure AD
or stored in Azure AD in clear text. Some premium features of Azure AD, such as Identity
Protection, require PHS regardless of which authentication method is selected. With
seamless single sign-on, users are automatically signed in to Azure AD when they are on
their corporate devices and connected to your corporate network.

Related to password hash sync


Federated environment
Managed environment
Pass-through authentication

More information about password hash sync


Choose the right authentication method for your Azure AD hybrid identity solution

Primary refresh token


Single sign on (SSO) relies on special tokens obtained for each of the types of
applications above. These special tokens are then used to obtain access tokens to
specific applications. In the traditional Windows Integrated authentication case using
Kerberos, this token is a Kerberos TGT (ticket-granting ticket). For Azure AD and AD FS
applications, this token is a primary refresh token (PRT). It's a JSON Web Token that
contains claims about both the user and the device.

The PRT is initially obtained during Windows user sign-in or unlock in a similar way the
Kerberos TGT is obtained. This behavior is true for both Azure AD joined and hybrid
Azure AD-joined devices. For personal devices registered with Azure AD, the PRT is
initially obtained upon Add Work or School Account. For a personal device the account
to unlock the device isn't the work account, but a consumer account. For example,
hotmail.com, live.com, or outlook.com.

The PRT is needed for SSO. Without it, the user will be prompted for credentials when
accessing applications every time. The PRT also contains information about the device. If
you have any device-based conditional access policy set on an application, without the
PRT, access will be denied.

Storage root key


The storage root key (SRK) is also an asymmetric key pair (RSA with a minimum of 2048-
bits length). The SRK has a major role and is used to protect TPM keys, so that these
keys can't be used without the TPM. The SRK key is created when the ownership of the
TPM is taken.

Related to storage root key


Attestation identity keys
Endorsement key
Trusted platform module

More information about storage root key


TPM library specification

Trust type
The trust type determines how a user authenticates to the Active Directory to access on-
premises resources. There are two trust types, key trust and certificate trust. The hybrid
and on-premises deployment models support both trust types. The trust type doesn't
affect authentication to Azure AD. Windows Hello for Business authentication to Azure
AD always uses the key, not a certificate (excluding smart card authentication in a
federated environment).

Related to trust type


Cloud Kerberos trust
Certificate trust
Hybrid deployment
Key trust
On-premises deployment

More information about trust type


Windows Hello for Business planning guide

Trusted platform module


A trusted platform module (TPM) is a hardware component that provides unique
security features.

Windows uses security characteristics of a TPM for the following functions:

Measuring boot integrity sequence. Based on that sequence, it automatically


unlocks BitLocker-protected drives
Protecting credentials
Health attestation

A TPM implements controls that meet the specification described by the Trusted
Computing Group (TCG). There are currently two versions of the TPM specification
produced by TCG that aren't compatible with each other:

The first TPM specification, version 1.2, was published in February 2005 by the TCG
and standardized under ISO / IEC 11889 standard.
The latest TPM specification, referred to as TPM 2.0, was released in April 2014 and
has been approved by the ISO/IEC Joint Technical Committee (JTC) as ISO/IEC
11889:2015.

Windows 10 and Windows 11 use the TPM for cryptographic calculations as part of
health attestation and to protect the keys for BitLocker, Windows Hello, virtual smart
cards, and other public key certificates. For more information, see TPM requirements in
Windows.

Windows recognizes versions 1.2 and 2.0 TPM specifications produced by the TCG. For
the most recent and modern security features, Windows 10 and Windows 11 support
only TPM 2.0.

TPM 2.0 provides a major revision to the capabilities over TPM 1.2:

Update cryptography strength to meet modern security needs


Support for SHA-256 for PCRs
Support for HMAC command
Cryptographic algorithms flexibility to support government needs
TPM 1.2 is severely restricted in terms of what algorithms it can support
TPM 2.0 can support arbitrary algorithms with minor updates to the TCG
specification documents
Consistency across implementations
The TPM 1.2 specification allows vendors wide latitude when choosing
implementation details
TPM 2.0 standardizes much of this behavior

In a simplified manner, the TPM is a passive component with limited resources. It can
calculate random numbers, RSA keys, decrypt short data, store hashes taken when
booting the device. A TPM incorporates in a single component:

An RSA 2048-bit key generator


A random number generator
Nonvolatile memory for storing EK, SRK, and AIK keys
A cryptographic engine to encrypt, decrypt, and sign
Volatile memory for storing the PCRs and RSA keys

Related to trusted platform module


Attestation identity keys
Endorsement key
Storage root key

More information about trusted platform module


TPM library specification
Common questions about
Windows Hello for Business
FAQ

Windows Hello for Business replaces password sign-in with strong authentication, using
an asymmetric key pair. This Frequently Asked Questions (FAQ) article is intended to
help you learn more about Windows Hello for Business.

Concepts
What's the difference between Windows Hello
and Windows Hello for Business?
Windows Hello represents the biometric framework provided in Windows. Windows
Hello lets users use biometrics to sign in to their devices by securely storing their user
name and password and releasing it for authentication when the user successfully
identifies themselves using biometrics. Windows Hello for Business uses asymmetric
keys protected by the device's security module that requires a user gesture (PIN or
biometrics) to authenticate.

How can a PIN be more secure than a password?


When using Windows Hello for Business, the PIN isn't a symmetric key, whereas the
password is a symmetric key. With passwords, there's a server that has some
representation of the password. With Windows Hello for Business, the PIN is user-
provided entropy used to load the private key in the Trusted Platform Module (TPM).
The server doesn't have a copy of the PIN. For that matter, the Windows client doesn't
have a copy of the current PIN either. The user must provide the entropy, the TPM-
protected key, and the TPM that generated that key in order to successfully access the
private key. The statement "PIN is stronger than Password" is not directed at the
strength of the entropy used by the PIN. It's about the difference between providing
entropy versus continuing the use of a symmetric key (the password). The TPM has anti-
hammering features that thwart brute-force PIN attacks (an attacker's continuous
attempt to try all combination of PINs). Some organizations may worry about shoulder
surfing. For those organizations, rather than increase the complexity of the PIN,
implement the Multifactor Unlock feature.
How does Windows Hello for Business
authentication work?
When a user wants to access protected key material, the authentication process begins
with the user entering a PIN or biometric gesture to unlock the device, a process
sometimes called releasing the key. Think of it like using a physical key to unlock a door:
before you can unlock the door, you need to remove the key from your pocket or purse.
The user's PIN unlocks the protector key for the container on the device. When that
container is unlocked, applications (and thus the user) can use whatever IDP keys reside
inside the container. These keys are used to sign requests that are sent to the IDP,
requesting access to specified resources. It's important to understand that although the
keys are unlocked, applications cannot use them at will. Applications can use specific
APIs to request operations that require key material for particular actions (for example,
decrypt an email message or sign in to a website). Access through these APIs doesn't
require explicit validation through a user gesture, and the key material isn't exposed to
the requesting application. Rather, the application asks for authentication, encryption, or
decryption, and the Windows Hello layer handles the actual work and returns the results.
Where appropriate, an application can request a forced authentication even on an
unlocked device. Windows prompts the user to reenter the PIN or perform an
authentication gesture, which adds an extra level of protection for sensitive data or
actions. For example, you can configure an application to require re-authentication
anytime a specific operation is performed, even though the same account and PIN or
gesture were already used to unlock the device. For more information about the
different authentication flows used by Windows Hello for Business, see Windows Hello
for Business and Authentication.

What happens after a user registers a PIN during


the Windows Hello for Business enrollment
process?
Windows Hello generates a new public-private key pair on the device. The TPM
generates and protects this private key; if the device doesn't have a TPM, the private key
is encrypted and stored in software. This initial key is referred to as the protector key. It's
associated only with a single gesture; in other words, if a user registers a PIN, a
fingerprint, and a face on the same device, each of those gestures will have a unique
protector key. Each unique gesture generates a unique protector key. The protector
key securely wraps the authentication key. The container has only one authentication
key, but there can be multiple copies of that key wrapped with different unique
protector keys. Windows Hello also generates an administrative key that the user or
administrator can use to reset credentials, when necessary (for example, when using the
PIN reset service). In addition to the protector key, TPM-enabled devices generate a
block of data that contains attestations from the TPM. At this point, the user has a PIN
gesture defined on the device and an associated protector key for that PIN gesture. That
means the user is able to securely sign in to the device with the PIN and thus be able to
establish a trusted session with the device to add support for a biometric gesture as an
alternative for the PIN. When you add a biometric gesture, it follows the same basic
sequence: the user authenticates to the system by using the PIN, and then registers the
new biometric, after which Windows generates a unique key pair and stores it securely.
Future sign-ins can then use either the PIN or the registered biometric gestures.

What's a container?
In the context of Windows Hello for Business, a container is a logical grouping of key
material or data. Windows Hello uses a single container that holds user key material for
personal accounts, including key material associated with the user's Microsoft account
or with other consumer identity providers, and credentials associated with a workplace
or school account. The container holds enterprise credentials only on devices that have
been registered with an organization; it contains key material for the enterprise IDP,
such as on-premises Active Directory or Azure AD.

7 Note

There are no physical containers on disk, in the registry, or elsewhere. Containers


are logical units used to group related items. The keys, certificates, and credentials
that Windows Hello stores, are protected without the creation of actual containers
or folders.

The container contains a set of keys, some of which are used to protect other keys. The
following image shows an example: the protector key is used to encrypt the
authentication key, and the authentication key is used to encrypt the individual keys
stored in the container. Each logical container holds one or more sets of keys.

Containers can contain several types of key material:

An authentication key, which is always an asymmetric public-private key pair. This


key pair is generated during registration. It must be unlocked each time it's
accessed, by using either the user's PIN or a biometric gesture. The authentication
key exists until the user resets the PIN, at which time a new key will be generated.
When the new key is generated, all the key material that the old key previously
protected must be decrypted and re-encrypted using the new key.
The IDP key. These keys can be either symmetric or asymmetric, depending on
which IDP you use. A single container may contain zero or more IDP keys, with
some restrictions (for example, the enterprise container can contain zero or one
IDP key). IDP keys are stored in the container. For certificate-based Windows Hello
for Work, when the container is unlocked, applications that require access to the
IDP key or key pair can request access. IDP keys are used to sign or encrypt
authentication requests or tokens sent from this device to the IDP. IDP keys are
typically long-lived but could have a shorter lifetime than the authentication key.
Microsoft accounts, Active Directory accounts, and Azure AD accounts all require
the use of asymmetric key pairs. The device generates public and private keys,
registers the public key with the IDP (which stores it for later verification), and
securely stores the private key. For enterprises, the IDP keys can be generated in
two ways:
The IDP key pair can be associated with an enterprise Certificate Authority (CA)
through the Windows Network Device Enrollment Service (NDES). In this case,
Windows Hello requests a new certificate with the same key as the certificate
from the existing PKI. This option lets organizations that have an existing PKI
continue to use it where appropriate. Given that many applications, such as VPN
solutions, require the use of certificates, when you deploy Windows Hello in this
mode, it allows a faster transition away from user passwords while still
preserving certificate-based functionality. This option also allows the enterprise
to store additional certificates in the protected container.
The IDP can generate the IDP key pair directly, which allows quick, lower-
overhead deployment of Windows Hello in environments that don't have or
need a PKI.

How are keys protected?


Anytime key material is generated, it must be protected against attack. The most robust
way to do this is through specialized hardware. There's a long history of using hardware
security modules (HSMs) to generate, store, and process keys for security-critical
applications. Smart cards are a special type of HSM, as are devices that are compliant
with the Trusted Computing Group TPM standard. Wherever possible, the Windows
Hello for Business implementation takes advantage of onboard TPM hardware to
generate and protect keys. Administrators can choose to allow key operations in
software, but it's recommended the use of TPM hardware. The TPM protects against a
variety of known and potential attacks, including PIN brute-force attacks. The TPM
provides an additional layer of protection after an account lockout, too. When the TPM
has locked the key material, the user will have to reset the PIN (which means the user
will have to use MFA to reauthenticate to the IDP before the IDP allows re-registration).
Resetting the PIN means that all keys and certificates encrypted with the old key
material will be removed.

How does PIN caching work with Windows Hello


for Business?
Windows Hello for Business provides a PIN caching user experience by using a ticketing
system. Rather than caching a PIN, processes cache a ticket they can use to request
private key operations. Azure AD and Active Directory sign-in keys are cached under
lock. This means the keys remain available for use without prompting, as long as the
user is interactively signed-in. Microsoft Account sign-in keys are transactional keys,
which means the user is always prompted when accessing the key.

Beginning with Windows 10, version 1709, Windows Hello for Business used as a smart
card (smart card emulation that is enabled by default) provides the same user
experience of default smart card PIN caching. Each process requesting a private key
operation will prompt the user for the PIN on first use. Subsequent private key
operations won't prompt the user for the PIN.

The smart card emulation feature of Windows Hello for Business verifies the PIN and
then discards the PIN in exchange for a ticket. The process doesn't receive the PIN, but
rather the ticket that grants them private key operations. Windows 10 doesn't provide
any Group Policy settings to adjust this caching.

Where is Windows Hello biometrics data stored?


When you enroll in Windows Hello, a representation of your biometrics, called an
enrollment profile, is created more information can be found on Windows Hello face
authentication. This enrollment profile biometrics data is device specific, is stored locally
on the device, and does not leave the device or roam with the user. Some external
fingerprint sensors store biometric data on the fingerprint module itself rather than on
Windows device. Even in this case, the biometrics data is stored locally on those
modules, is device specific, doesn't roam, never leaves the module, and is never sent to
Microsoft cloud or external server. For more details, see Windows Hello biometrics in
the enterprise.

What is the format used to store Windows Hello


biometrics data on the device?
Windows Hello biometrics data is stored on the device as an encrypted template
database. The data from the biometrics sensor (like face camera or fingerprint reader)
creates a data representation—or graph—that is then encrypted before it's stored on
the device. Each biometrics sensor on the device which is used by Windows Hello (face
or fingerprint) will have its own biometric database file where template data is stored.
Each biometrics database file is encrypted with unique, randomly generated key that is
encrypted to the system using AES encryption producing an SHA256 hash.

Who has access on Windows Hello biometrics


data?
Since Windows Hello biometrics data is stored in encrypted format, no user, or any
process other than Windows Hello has access to it.

What's the difference between non-destructive


and destructive PIN reset?
Windows Hello for Business has two types of PIN reset: non-destructive and destructive.
Organizations running Windows 10 version 1903 and later and Azure Active Directory
can take advantage of the Microsoft PIN Reset service. Once on-boarded to a tenant
and deployed to computers, users who have forgotten their PINs can authenticate to
Azure, provide a second factor of authentication, and reset their PIN without
reprovisioning a new Windows Hello for Business enrollment. This flow is a non-
destructive PIN reset because the user doesn't delete the current credential and obtain a
new one. For more information, see PIN Reset.

Organizations that have the on-premises deployment of Windows Hello for Business, or
those not using Windows 10 version 1903 and later can use destructive PIN reset. With
destructive PIN reset, users that have forgotten their PIN can authenticate by using their
password and then performing a second factor of authentication to reprovision their
Windows Hello for Business credential. Reprovisioning deletes the old credential and
requests a new credential and certificate. On-premises deployments need network
connectivity to their domain controllers, Active Directory Federation Services, and their
issuing certificate authority to perform a destructive PIN reset. For hybrid Azure Active
Directory joined devices, destructive PIN reset is only supported with the certificate trust
model and the latest updates to Active Directory Federation Services.

When is Windows Hello biometrics database file


created? How is a user enrolled into Windows
Hello face or fingerprint authentication?
Windows Hello biometrics template database file is created on the device only when a
user is enrolled into Windows Hello biometrics-based authentication. Your workplace or
IT administrator may have turned certain authentication functionality, however, it is
always your choice if you want to use Windows Hello or an alternative method, like a
PIN. Users can check their current enrollment into Windows Hello biometrics by going
to sign-in options on their device. Go to Start > Settings > Accounts > Sign-in options.
If you don't see Windows Hello in Sign-in options, then it may not be available for your
device or blocked by admin via policy. Admins can request users to enroll into Windows
Hello during Autopilot or during the initial setup of the device. Admins can disallow
users to enroll into biometrics via Windows Hello for Business policy configurations.
However, when allowed via policy configurations, enrollment into Windows Hello
biometrics is always optional for users.

When is Windows Hello biometrics database file


deleted? How can a user be unenrolled from
Windows Hello face or fingerprint
authentication?
To remove Windows Hello and any associated biometric identification data from the
device, user can go to Start > Settings > Accounts > Sign-in options. Select the
Windows Hello biometrics authentication method you want to remove, and then select
Remove. This will u-enroll the user from Windows Hello biometrics authentication and
will also delete the associated biometrics template database file. For more details, see
Windows sign-in options and account protection (microsoft.com) .

Management and operations


Can I deploy and manage Windows Hello for
Business using Microsoft Intune?
Yes, hybrid and cloud-only Windows Hello for Business deployments can use Microsoft
Intune. For more information, see Integrate Windows Hello for Business with Microsoft
Intune.

Can I deploy and manage Windows Hello for


Business by using Microsoft Configuration
Manager?
Starting in Configuration Manager, version 2203, Windows Hello for Business
deployments using Configuration Manager are no longer supported.

How do I delete a Windows Hello for Business


container on a device?
You can effectively disable Windows Hello for Business by launching certutil.exe -
deleteHelloContainer on the end device under a user account, and then restarting the

device.

What happens when a user forgets their PIN?


If the user can sign in with a password, they can reset their PIN by selecting the I forgot
my PIN link in the Settings app. Users can reset also their PIN from the lock screen by
selecting the I forgot my PIN link on the PIN credential provider.
For on-premises deployments, devices must be connected to their on-premises network
(domain controllers and/or certificate authority) to reset their PINs. Hybrid deployments
can onboard their Azure tenant to use the Windows Hello for Business PIN reset service
to reset their PINs. Non-destructive PIN reset works without access to the corporate
network. Destructive PIN reset requires access to the corporate network. For more
details about destructive and non-destructive PIN reset, see PIN reset.

Does Windows Hello for Business prevent the


use of simple PINs?
Yes. Our simple PIN algorithm looks for and disallows any PIN that has a constant delta
from one digit to the next. The algorithm counts the number of steps required to reach
the next digit, overflowing at 10 ('zero'). So, for example:

The PIN 1111 has a constant delta of (0,0,0), so it isn't allowed


The PIN 1234 has a constant delta of (1,1,1), so it isn't allowed
The PIN 1357 has a constant delta of (2,2,2), so it isn't allowed
The PIN 9630 has a constant delta of (7,7,7), so it isn't allowed
The PIN 1593 has a constant delta of (4,4,4), so it isn't allowed
The PIN 7036 has a constant delta of (3,3,3), so it isn't allowed
The PIN 1231 doesn't have a constant delta (1,1,2), so it's allowed
The PIN 1872 doesn't have a constant delta (7,9,5), so it's allowed

This check prevents repeating numbers, sequential numbers, and simple patterns. It
always results in a list of 100 disallowed PINs (independent of the PIN length). This
algorithm doesn't apply to alphanumeric PINs.

Which diagnostic data is collected when


Windows Hello for Business is enabled?
To help Microsoft keep things working properly, to help detecting and preventing fraud,
and to continue improving Windows Hello, diagnostic data about how people use
Windows Hello is collected. For example:

Data about whether people sign in with their face, iris, fingerprint, or PIN
The number of times they use it
Whether it works or not All this is valuable information that helps Microsoft
building a better product. The data is pseudonymized, does not include biometric
information, and is encrypted before it is transmitted to Microsoft. You can choose
to stop sending diagnostic data to Microsoft at any time. Learn more about
diagnostic data in Windows .
Can I disable the PIN while using Windows Hello
for Business?
No. The movement away from passwords is accomplished by gradually reducing the use
of the password. In situations where you can't authenticate by using biometrics, you
need a fallback mechanism that isn't a password. The PIN is the fallback mechanism.
Disabling or hiding the PIN credential provider will disable the use of biometrics.

What is Event ID 300?


This event is created when Windows Hello for Business is successfully created and
registered with Azure Active Directory (Azure AD). Applications or services can trigger
actions on this event. For example, a certificate provisioning service can listen to this
event and trigger a certificate request. This is a normal condition and no further action is
required.

What happens when an unauthorized user gains


possession of a device enrolled in Windows
Hello for Business?
The unauthorized user won't be able to utilize any biometric options and will have the
only option to enter a PIN.

If the user attempts to unlock the device by entering random PINs, after three
unsuccessful attempts the credential provider will display the following message: You've
entered an incorrect PIN several times. To try again, enter A1B2C3 below. Upon
entering the challenge phrase A1B2C3, the user will be granted one more opportunity
to enter the PIN. If unsuccessful, the provider will be disabled, leaving the user with the
only option to reboot the device. Following the reboot, the aforementioned pattern
repeats.

If unsuccessful attempts continue, the device will enter a lockout state, lasting for 1
minute after the first reboot, 2 minutes after the fourth reboot, and 10 minutes after the
fifth reboot. The duration of each lockout increases accordingly. This behavior is a result
of the TPM 2.0 anti-hammering feature. For more information about the TPM anti-
hammering feature, see TPM 2.0 anti-hammering.

Design and planning


Can Windows Hello for Business work in air-
gapped environments?
Yes. You can use the on-premises Windows Hello for Business deployment and combine
it with a third-party MFA provider that doesn't require internet connectivity to achieve
an air-gapped Windows Hello for Business deployment.

How many users can enroll for Windows Hello


for Business on a single Windows device?
The maximum number of supported enrollments on a single device is 10. This lets 10
users each enroll their face and up to 10 fingerprints. For devices with more than 10
users, or for users that sign-in to many devices (for example, a support technician), it's
recommended the use of FIDO2 security keys.

I have extended Active Directory to Azure Active


Directory. Can I use the on-premises deployment
model?
No. If your organization is using Microsoft cloud services, then you must use a hybrid
deployment model. On-premises deployments are exclusive to organizations who need
more time before moving to the cloud and exclusively use Active Directory.

What attributes are synchronized by Azure AD


Connect with Windows Hello for Business?
Review Azure AD Connect sync: Attributes synchronized to Azure Active Directory for a
list of attributes that sync based on scenarios. The base scenarios that include Windows
Hello for Business are the Windows 10 scenario and the Device writeback scenario. Your
environment may include other attributes.

Can I use third-party MFA providers with


Windows Hello for Business?
Yes, if you're using federated hybrid deployment, you can use any third-party that
provides an AD FS MFA adapter. A list of third-party MFA adapters can be found here.
Does Windows Hello for Business work with
third-party federation servers?
Windows Hello for Business works with any third-party federation servers that support
the protocols used during the provisioning experience.

Protocol Description

[MS-KPP]: Key Specifies the Key Provisioning Protocol, which defines a mechanism
Provisioning for a client to register a set of cryptographic keys on a user and
Protocol device pair.

[MS-OAPX]: OAuth Specifies the OAuth 2.0 Protocol Extensions, which are used to
2.0 Protocol extend the OAuth 2.0 Authorization Framework. These extensions
Extensions enable authorization features such as resource specification, request
identifiers, and log in hints.

[MS-OAPXBC]: Specifies the OAuth 2.0 Protocol Extensions for Broker Clients,
OAuth 2.0 Protocol extensions to RFC6749 (the OAuth 2.0 Authorization Framework)
Extensions for that allow a broker client to obtain access tokens on behalf of calling
Broker Clients clients.

[MS-OIDCE]: Specifies the OpenID Connect 1.0 Protocol Extensions. These


OpenID Connect extensions define other claims to carry information about the user,
1.0 Protocol including the user principal name, a locally unique identifier, a time
Extensions for password expiration, and a URL for password change. These
extensions also define more provider meta-data that enables the
discovery of the issuer of access tokens and gives additional
information about provider capabilities.

Can I enroll local Windows accounts in Windows


Hello for Business?
Windows Hello for Business is not designed to work with local accounts.

What are the biometric requirements for


Windows Hello for Business?
Read Windows Hello biometric requirements for more information.
Can I wear a mask to enroll or unlock using
Windows Hello face authentication?
Wearing a mask to enroll is a security concern because other users wearing a similar
mask may be able to unlock your device. The product group is aware of this behavior
and is investigating this article further. Remove a mask if you're wearing one when you
enroll or unlock with Windows Hello face authentication. If your working environment
doesn't allow you to remove a mask temporarily, consider un-enrolling from face
authentication and only using PIN or fingerprint.

How does Windows Hello for Business work with


Azure AD registered devices?
A user will be prompted to set up a Windows Hello for Business key on an Azure AD
registered devices if the feature is enabled by policy. If the user has an existing Windows
Hello container, the Windows Hello for Business key will be enrolled in that container
and will be protected using existing gestures.

If a user has signed into their Azure AD registered device with Windows Hello, their
Windows Hello for Business key will be used to authenticate the user's work identity
when they try to use Azure AD resources. The Windows Hello for Business key meets
Azure AD multifactor authentication (MFA) requirements and reduces the number of
MFA prompts users will see when accessing resources.

It's possible to Azure AD register a domain joined device. If the domain joined device
has a convenience PIN, sign in with the convenience PIN will no longer work. This
configuration isn't supported by Windows Hello for Business.

For more information, please read Azure AD registered devices.

Does Windows Hello for Business work with


non-Windows operating systems?
Windows Hello for Business is a feature of the Windows platform. At this time, Microsoft
isn't developing clients for other platforms. However, Microsoft is open to third-parties
who are interested in moving these platforms away from passwords. Interested third-
parties can get more information by emailing whfbfeedback@microsoft.com.

Does Windows Hello for Business work with


Azure Active Directory Domain Services (Azure
AD DS) clients?
No, Azure AD DS is a separately managed environment in Azure, and hybrid device
registration with cloud Azure AD isn't available for it via Azure AD Connect. Hence,
Windows Hello for Business doesn't work with Azure AD DS.

Is Windows Hello for Business considered


multifactor authentication?
Windows Hello for Business is two-factor authentication based on the observed
authentication factors of: something you have, something you know, and something that's
part of you. Windows Hello for Business incorporates two of these factors: something
you have (the user's private key protected by the device's security module) and
something you know (your PIN). With the proper hardware, you can enhance the user
experience by introducing biometrics. By using biometrics, you can replace the
"something you know" authentication factor with the "something that is part of you"
factor, with the assurances that users can fall back to the "something you know factor".

7 Note

The Windows Hello for Business key meets Azure AD multifactor authentication
(MFA) requirements and reduces the number of MFA prompts users will see when
accessing resources. For more information, see What is a Primary Refresh Token.

Which is a better or more secure for of


authentication, key or certificate?
Both types of authentication provide the same security; one is not more secure than the
other. The trust models of your deployment determine how you authenticate to Active
Directory (on-premises). Both key trust and certificate trust use the same hardware-
backed, two-factor credential. The difference between the two trust types is the issuance
of end-entity certificates:

The key trust model authenticates to Active Directory by using a raw key. Key trust
doesn't require an enterprise-issued certificate, therefore you don't need to issue
certificates to users (domain controller certificates are still needed)
The certificate trust model authenticates to Active Directory by using a certificate.
Therefore, you need to issue certificates to users. The certificate used in certificate
trust uses the TPM-protected private key to request a certificate from your
enterprise's issuing CA

What is convenience PIN?


Convenience PIN provides a simpler way to sign in to Windows than passwords, but it
still uses a password for authentication. When the correct convenience PIN is provided
to Windows, the password information is loaded from its cache and authenticates the
user. Organizations using convenience PINs should move to Windows Hello for
Business. New Windows deployments should deploy Windows Hello for Business and
not convenience PINs.

Can I use a convenience PIN with Azure Active


Directory?
No. While it's possible to set a convenience PIN on Azure AD joined and hybrid Azure
AD joined devices, convenience PIN isn't supported for Azure AD user accounts
(including synchronized identities). Convenience PIN is only supported for on-premises
Active Directory users and local account users.

What about virtual smart cards?


Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using virtual
smart cards are strongly encouraged to move to Windows Hello for Business. Microsoft
will publish the deprecation date to ensure customers have adequate lead time to move
to Windows Hello for Business. We recommend that new Windows deployments use
Windows Hello for Business.

What URLs do I need to allow for a hybrid


deployment?
For a list of required URLs, see Microsoft 365 Common and Office Online.

If your environment uses Microsoft Intune, see Network endpoints for Microsoft Intune.

Features
Can I use an external Windows Hello compatible
camera when my computer has a built-in
Windows Hello compatible camera?
Yes, you can use an external Windows Hello compatible camera if a device has an
internal Windows Hello camera. When both cameras are present, the external camera is
used for face authentication. For more information, see IT tools to support Windows 10,
version 21H1 . If ESS is enabled, see Windows Hello Enhanced Sign-in Security.

Can I use an external Windows Hello compatible


camera or other Windows Hello compatible
accessory when my laptop lid is closed or
docked?
Some laptops and tablets with keyboards that close may not use an external Windows
Hello compatible camera or other Windows Hello compatible accessory when the
computer is docked with the lid closed. The issue has been addressed in Windows 11,
version 22H2.

Can I use Windows Hello for Business credentials


in private browser mode or "incognito" mode?
Windows Hello for Business credentials need access to device state, which is not
available in private browser mode or incognito mode. Hence it can't be used in private
browser or Incognito mode.

Can I use both a PIN and biometrics to unlock


my device?
You can use multifactor unlock to require users to provide an extra factor to unlock their
device. Authentication remains two-factor, but another factor is required before
Windows allows the user to reach the desktop. To learn more, see Multifactor Unlock.

Cloud Kerberos trust


What is Windows Hello for Business cloud
Kerberos trust?
Windows Hello for Business cloud Kerberos trust is a trust model that enables Windows
Hello for Business deployment using the infrastructure introduced for supporting
security key sign-in on Hybrid Azure AD-joined devices and on-premises resource
access on Azure AD Joined devices. Cloud Kerberos trust is the preferred deployment
model if you do not need to support certificate authentication scenarios. For more
information, see cloud Kerberos trust deployment.

Does Windows Hello for Business cloud Kerberos


trust work in my on-premises environment?
This feature doesn't work in a pure on-premises AD domain services environment.

Does Windows Hello for Business cloud Kerberos


trust work in a Windows sign-in with RODC
present in the hybrid environment?
Windows Hello for Business cloud Kerberos trust looks for a writeable DC to exchange
the partial TGT. As long as you have at least one writeable DC per site, login with cloud
Kerberos trust will work.

Do I need line of sight to a domain controller to


use Windows Hello for Business cloud Kerberos
trust?
Windows Hello for Business cloud Kerberos trust requires line of sight to a domain
controller when:

a user signs-in for the first time or unlocks with Windows Hello for Business after
provisioning
attempting to access on-premises resources secured by Active Directory

Can I use RDP/VDI with Windows Hello for


Business cloud Kerberos trust?
Windows Hello for Business cloud Kerberos trust can't be used as a supplied credential
with RDP/VDI. Similar to key trust, cloud Kerberos trust can be used for RDP with
Remote Credential Guard or if a certificate is enrolled into Windows Hello for Business
for this purpose.

Do all my domain controllers need to be fully


patched as per the prerequisites for me to use
Windows Hello for Business cloud Kerberos
trust?
No, only the number necessary to handle the load from all cloud Kerberos trust devices.

Key trust
Why does authentication fail immediately after
provisioning hybrid key trust?
In a hybrid deployment, a user's public key must sync from Azure AD to AD before it can
be used to authenticate against a domain controller. This sync is handled by Azure AD
Connect and will occur during a normal sync cycle.

Can I use Windows Hello for Business key trust


and RDP?
Remote Desktop Protocol (RDP) doesn't currently support using key-based
authentication and self-signed certificates as supplied credentials. However, you can
deploy certificates in the key trust model to enable RDP. For more information, see
Deploying certificates to key trust users to enable RDP. In addition, Windows Hello for
Business key trust can be also used with RDP with Remote Credential Guard without
deploying certificates.
Windows Hello for Business Videos
Article • 03/09/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Overview of Windows Hello for Business and


Features
Watch Pieter Wigleven explain Windows Hello for Business, Multi-factor Unlock, and
Dynamic Lock
https://www.youtube-nocookie.com/embed/G-GJuDWbBE8

Why PIN is more secure than a password


Watch Dana Huang explain why a Windows Hello for Business PIN is more secure than a
password.
https://www.youtube-nocookie.com/embed/cC24rPBvdhA

Microsoft's passwordless strategy


Watch Karanbir Singh's Ignite 2017 presentation Microsoft's guide for going password-
less
https://www.youtube-nocookie.com/embed/mXJS615IGLM

Windows Hello for Business Provisioning


Watch Matthew Palko and Ravi Vennapusa explain how Windows Hello for Business
provisioning works.
https://www.youtube-nocookie.com/embed/RImGsIjSJ1s

Windows Hello for Business Authentication


Watch Matthew Palko and Ravi Vennapusa explain how Windows Hello for Business
authentication works.
https://www.youtube-nocookie.com/embed/WPmzoP_vMek
Enable passwordless security key sign-in
Article • 09/20/2023

For enterprises that use passwords today and have a shared PC environment, security
keys provide a seamless way for workers to authenticate without entering a username or
password. Security keys provide improved productivity for workers, and have better
security.

This document focuses on enabling security key based passwordless authentication. At


the end of this article, you'll be able to sign in to web-based applications with your
Microsoft Entra account using a FIDO2 security key.

Requirements
Microsoft Entra multifactor authentication
Enable Combined security information registration
Compatible FIDO2 security keys
WebAuthN requires Windows 10 version 1903 or higher

To use security keys for logging in to web apps and services, you must have a browser
that supports the WebAuthN protocol. These include Microsoft Edge, Chrome, Firefox,
and Safari. For more information about, see Browser support of FIDO2 passwordless
authentication.

Prepare devices
For Microsoft Entra joined devices, the best experience is on Windows 10 version 1903
or higher.

Microsoft Entra hybrid joined devices must run Windows 10 version 2004 or higher.

Enable passwordless authentication method

Enable the combined registration experience


Registration features for passwordless authentication methods rely on the combined
registration feature. Follow the steps in the article Enable combined security information
registration, to enable combined registration.
Enable FIDO2 security key method

 Tip

Steps in this article may vary slightly based on the portal you start from.

1. Sign in to the Microsoft Entra admin center as at least an Authentication Policy


Administrator.

2. Browse to Protection > Authentication methods > Authentication method policy.

3. Under the method FIDO2 Security Key, click All users, or click Add groups to
select specific groups. Only security groups are supported.

4. Save the configuration.

7 Note

If you see an error when you try to save, the cause might be due to the
number of users or groups being added. As a workaround, replace the users
and groups you are trying to add with a single group, in the same operation,
and then click Save again.

FIDO Security Key optional settings


There are some optional settings on the Configure tab to help manage how security
keys can be used for sign-in.
Allow self-service set up should remain set to Yes. If set to no, your users won't be
able to register a FIDO key through MySecurityInfo, even if enabled by
Authentication Methods policy.
Enforce attestation setting to Yes requires the FIDO security key metadata to be
published and verified with the FIDO Alliance Metadata Service, and also pass
Microsoft’s additional set of validation testing. For more information, see What is a
Microsoft-compatible security key?

Key Restriction Policy

Enforce key restrictions should be set to Yes only if your organization wants to
only allow or disallow certain FIDO security keys, which are identified by their
AAGuids. You can work with your security key provider to determine the AAGuids
of their devices. If the key is already registered, AAGUID can also be found by
viewing the authentication method details of the key per user.

Disable a key
To remove a FIDO2 key associated with a user account, delete the key from the user’s
authentication method.

1. Sign in to the Microsoft Entra admin center and search for the user account from
which the FIDO key is to be removed.

2. Select Authentication methods > right-click FIDO2 security key and click Delete.
Security key Authenticator Attestation GUID
(AAGUID)
The FIDO2 specification requires each security key provider to provide an Authenticator
Attestation GUID (AAGUID) during attestation. An AAGUID is a 128-bit identifier
indicating the key type, such as the make and model.

7 Note

The manufacturer must ensure that the AAGUID is identical across all substantially
identical keys made by that manufacturer, and different (with high probability) from
the AAGUIDs of all other types of keys. To ensure, the AAGUID for a given type of
security key should be randomly generated. For more information, see Web
Authentication: An API for accessing Public Key Credentials - Level 2 (w3.org) .

There are two ways to get your AAGUID. You can either ask your security key provider or
view the authentication method details of the key per user.
User registration and management of FIDO2
security keys
1. Browse to https://myprofile.microsoft.com .
2. Sign in if not already.
3. Click Security Info.
a. If the user already has at least one Microsoft Entra multifactor authentication
method registered, they can immediately register a FIDO2 security key.
b. If they don't have at least one Microsoft Entra multifactor authentication
method registered, they must add one.
c. An Administrator can issue a Temporary Access Pass to allow the user to register
a Passwordless authentication method.
4. Add a FIDO2 Security key by clicking Add method and choosing Security key.
5. Choose USB device or NFC device.
6. Have your key ready and choose Next.
7. A box will appear and ask the user to create/enter a PIN for your security key, then
perform the required gesture for the key, either biometric or touch.
8. The user will be returned to the combined registration experience and asked to
provide a meaningful name for the key to identify it easily. Click Next.
9. Click Done to complete the process.

Sign in with passwordless credential


In the example below a user has already provisioned their FIDO2 security key. The user
can choose to sign in on the web with their FIDO2 security key inside of a supported
browser on Windows 10 version 1903 or higher.
Troubleshooting and feedback
If you'd like to share feedback or encounter issues with this feature, share via the
Windows Feedback Hub app using the following steps:

1. Launch Feedback Hub and make sure you're signed in.


2. Submit feedback under the following categorization:

Category: Security and Privacy


Subcategory: FIDO

3. To capture logs, use the option to Recreate my Problem.

Known issues

Security key provisioning


Administrator provisioning and de-provisioning of security keys isn't available.

UPN changes
If a user's UPN changes, you can no longer modify FIDO2 security keys to account for
the change. The solution for a user with a FIDO2 security key is to sign in to
MySecurityInfo, delete the old key, and add a new one.

Next steps
FIDO2 security key Windows 10 sign in

Enable FIDO2 authentication to on-premises resources

Learn more about device registration

Learn more about Microsoft Entra multifactor authentication


Windows passwordless experience
Article • 09/27/2023 • Applies to: ✅ Windows 11

Starting in Windows 11, version 22H2 with KB5030310 , Windows passwordless


experience is a security policy that promotes a user experience without passwords on
Microsoft Entra joined devices.
When the policy is enabled, certain Windows authentication scenarios don't offer users
the option to use a password, helping organizations and preparing users to gradually
move away from passwords.

With Windows passwordless experience, users who sign in with Windows Hello or a
FIDO2 security key:

Can't use the password credential provider on the Windows lock screen

Aren't prompted to use a password during in-session authentications (for example,


UAC elevation, password manager in the browser, etc.)

Don't have the option Accounts > Change password in the Settings app

7 Note

Users can reset their password using CTRL + ALT + DEL > Manage your
account

Windows passwordless experience doesn't affect the initial sign-in experience and local
accounts. It only applies to subsequent sign-ins for Microsoft Entra ID accounts. It also
doesn't prevent a user from signing in with a password when using the Other user
option in the lock screen.
The password credential provider is hidden only for the last signed in user who signed in
Windows Hello or a FIDO2 security key. Windows passwordless experience isn't about
preventing users from using passwords, rather to guide and educate them to not use
passwords.

This article explains how to enable Windows passwordless experience and describes the
user experiences.

 Tip

Windows Hello for Business users can achieve passwordless sign-in from the first
sign-in using the Web sign-in feature. For more information about Web sign-in, see
Web sign-in for Windows devices.

System requirements
Windows passwordless experience has the following requirements:

Windows 11, version 22H2 with KB5030310 or later


Microsoft Entra joined
Windows Hello for Business credentials enrolled for the user, or a FIDO2 security
key
MDM-managed: Microsoft Intune or other MDM solution

7 Note

Microsoft Entra hybrid joined devices and Active Directory domain joined devices
are currently out of scope.

Windows edition and licensing requirements


The following table lists the Windows editions that support Windows passwordless
experience:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Windows passwordless experience license entitlements are granted by the following


licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Enable Windows passwordless experience with


Intune
To configure devices using Microsoft Intune, create a Settings catalog policy and use the
following settings:

Category Setting name Value

Authentication Enable Passwordless Experience Enabled

Assign the policy to a group that contains as members the devices or users that you
want to configure.

Alternatively, you can configure devices using a custom policy with the Policy CSP.

Setting

- OMA-URI: ./Device/Vendor/MSFT/Policy/Config/Authentication/EnablePasswordlessExperience
- Data type: int
- Value: 1

User experiences

Lock screen experience

Passwordless experience turned off: users can sign in using a password, as indicated by
the presence of the password credential provider in the Windows lock screen.


Passwordless experience turned on: the password credential provider is missing for
the last user who signed in with strong credentials. A user can either sign in using a
strong credential or opt to use the Other user option to sign in with a password.

In-session authentication experiences


When Windows passwordless experience is enabled, users can't use the password
credential provider for in-session authentication scenarios. In-session authentication
scenarios include:

Password Manager in a web browser


Connecting to file shares or intranet sites
User Account Control (UAC) elevation, except if a local user account is used for
elevation

7 Note

RDP sign in defaults to the credential provider used during sign-in. However, a user
can select the option Use a different account to sign in with a password.

Run as different user is not impacted by Windows passwordless experience.

Example of UAC elevation experience:


Passwordless experience turned off: UAC elevation allows the user to authenticate
using a password.

Passwordless experience turned on: UAC elevation doesn't allow the user to use the
password credential provider for the currently logged on user. The user can authenticate
using Windows Hello, a FIDO2 security key or a local user account, if available.


Recommendations
Here's a list of recommendations to consider before enabling Windows passwordless
experience:

If Windows Hello for Business is enabled, configure the PIN reset feature to allow
users to reset their PIN from the lock screen. The PIN reset experience is improved
starting in Windows 11, version 22H2 with KB5030310
Don't configure the security policy Interactive logon: Don't display last signed-in, as
it prevents Windows passwordless experience from working
Don't disable the password credential provider using the Exclude credential
providers policy. The key differences between the two policies are:
The Exclude credential providers policy disables passwords for all accounts,
including local accounts. Windows passwordless experience only applies to
Microsoft Entra ID accounts that sign in with Windows Hello or a FIDO2 security
key. It also excludes Other User from the policy, so users have a backup sign in
option
Exclude credential providers policy prevents the use of passwords for RDP and
Run as authentication scenarios
To facilitate helpdesk support operations, consider enabling the local administrator
account or create a separate one, randomizing its password using the Windows
Local Administrator Password Solution (LAPS)

Known issues
There's a known issue affecting the in-session authentication experience when using
FIDO2 security keys, where security keys aren't always an available option. The product
group is aware of this behavior and plans to improve this in the future.

Provide feedback
To provide feedback for Windows passwordless experience, open Feedback Hub and
use the category Security and Privacy > Passwordless experience.
Support for passkeys in Windows
Article • 09/27/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Passkeys provide a more secure and convenient method to logging into websites and
applications compared to passwords. Unlike passwords, which users must remember
and type, passkeys are stored as secrets on a device and can use a device's unlock
mechanism (such as biometrics or a PIN). Passkeys can be used without the need for
other sign-in challenges, making the authentication process faster, secure, and more
convenient.

You can use passkeys with any applications or websites that support them, to create and
sign in with Windows Hello. Once a passkey is created and stored with Windows Hello,
you can use your device's biometrics or PIN to sign in. Alternatively, you can use a
companion device (phone or tablet) to sign in.

7 Note

Starting in Windows 11, version 22H2 with KB5030310 , Windows provides a


native experience for passkey management. However, passkeys can be used in all
supported versions of Windows clients.

This article describes how to create and use passkeys on Windows devices.

How passkeys work


Microsoft has long been a founding member of the FIDO Alliance and has helped to
define and use passkeys natively within a platform authenticator like Windows Hello.
Passkeys utilize the FIDO industry security standard, which is adopted by all major
platforms. Leading technology companies like Microsoft are backing passkeys as part of
the FIDO Alliance, and numerous websites and apps are integrating support for
passkeys.

The FIDO protocols rely on standard public/private key cryptography techniques to offer
more secure authentication. When a user registers with an online service, their client
device generates a new key pair. The private key is stored securely on the user's device,
while the public key is registered with the service. To authenticate, the client device must
prove that it possesses the private key by signing a challenge. The private keys can only
be used after they're unlocked by the user using the Windows Hello unlock factor
(biometrics or PIN).
FIDO protocols prioritize user privacy, as they're designed to prevent online services
from sharing information or tracking users across different services. Additionally, any
biometric information used in the authentication process remains on the user's device
and isn't transmitted across the network or to the service.

Passkeys compared to passwords


Passkeys have several advantages over passwords, including their ease of use and
intuitive nature. Unlike passwords, passkeys are easy to create, don't need to be
remembered, and don't need to be safeguarded. Additionally, passkeys are unique to
each website or application, preventing their reuse. They're highly secure because
they're only stored on the user's devices, with the service only storing public keys.
Passkeys are designed to prevent attackers to guess or obtain them, which helps to
make them resistant to phishing attempts where the attacker may try to trick the user
into revealing the private key. Passkeys are enforced by the browsers or operating
systems to only be used for the appropriate service, rather than relying on human
verification. Finally, passkeys provide cross-device and cross-platform authentication,
meaning that a passkey from one device can be used to sign in on another device.

Windows edition and licensing requirements


The following table lists the Windows editions that support passkeys:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Passkeys license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

User experiences

Create a passkey
Follow these steps to create a passkey from a Windows device:
1. Open a website or app that supports passkeys

2. Create a passkey from your account settings

3. Choose where to save the passkey. By default, Windows offers to save the passkey
locally if you're using Windows Hello or Windows Hello for Business. If you select
the option Use another device, you can choose to save the passkey in one of the
following locations:

This Windows device: the passkey is saved locally on your Windows device, and
protected by Windows Hello (biometrics and PIN)
iPhone, iPad or Android device: the passkey is saved on a phone or tablet,
protected by the device's biometrics, if offered by the device. This option requires
you to scan a QR code with your phone or tablet, which must be in proximity of
the Windows device
Linked device: the passkey is saved on a phone or tablet, protected by the device's
biometrics, if offered by the device. This option requires the linked device to be in
proximity of the Windows device, and it's only supported for Android devices
Security key: the passkey is saved to a FIDO2 security key, protected by the key's
unlock mechanism (for example, biometrics or PIN)

4. Select Next

Pick one of the following options to learn how to save a passkey, based on where you
want to store it.

Windows device

5. Select a Windows Hello verification method and proceed with the verification,
then select OK

6. The passkey is saved to your Windows device. To confirm select OK


Use a passkey
Follow these steps to use a passkey:

1. Open a website or app that supports passkeys

2. Select Sign in with a passkey, or a similar option


3. If a passkey is stored locally and protected by Windows Hello, you're prompted to
use Windows Hello to sign in. If you select the option Use another device, you can
choose one of the following options:

This Windows device: use this option to use a passkey that is stored locally on
your Windows device, and protected by Windows Hello
iPhone, iPad or Android device: use this option if you want to sign in with a
passkey stored on a phone or tablet. This option requires you to scan a QR code
with your phone or tablet, which must be in proximity of the Windows device
Linked device: use this option if you want to sign in with a passkey stored on a
device that is in proximity of the Windows device. This option is only supported for
Android devices
Security key: use this option if you want to sign in with a passkey stored on a
FIDO2 security key

Pick one of the following options to learn how to use a passkey, based on where you
saved it.

Windows device

4. Select a Windows Hello unlock option


5. Select OK to continue signing in


Manage passkeys
Starting in Windows 11, version 22H2 with KB5030310 , you can use the Settings app
to view and manage passkeys saved for apps or websites. Go to Settings > Accounts >
Passkeys, or use the following shortcut:

Manage passkeys

A list of saved passkeys is displayed and you can filter them by name
To delete a passkey, select ... > Delete passkey next to the passkey name

7 Note

Some passkeys for login.microsoft.com can't be deleted, as they're used with


Microsoft Entra ID and/or Microsoft Account for signing in to the device and
Microsoft services.

Provide feedback
To provide feedback for passkeys, open Feedback Hub and use the category Security
and Privacy > Passkey.
Smart Card Technical Reference
Article • 02/27/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

The Smart Card Technical Reference describes the Windows smart card infrastructure for
physical smart cards and how smart card-related components work in Windows. This
document also contains information about tools that information technology (IT)
developers and administrators can use to troubleshoot, debug, and deploy smart card-
based strong authentication in the enterprise.

Audience
This document explains how the Windows smart card infrastructure works. To
understand this information, you should have basic knowledge of public key
infrastructure (PKI) and smart card concepts. This document is intended for:

Enterprise IT developers, managers, and staff who are planning to deploy or are
using smart cards in their organization.

Smart card vendors who write smart card minidrivers or credential providers.

What are smart cards?


Smart cards are tamper-resistant portable storage devices that can enhance the security
of tasks such as authenticating clients, signing code, securing e-mail, and signing in with
a Windows domain account.

Smart cards provide:

Tamper-resistant storage for protecting private keys and other forms of personal
information.

Isolation of security-critical computations that involve authentication, digital


signatures, and key exchange from other parts of the computer. These
computations are performed on the smart card.

Portability of credentials and other private information between computers at


work, home, or on the road.
Smart cards can be used to sign in to domain accounts only, not local accounts. When
you use a password to sign in interactively to a domain account, Windows uses the
Kerberos version 5 (v5) protocol for authentication. If you use a smart card, the
operating system uses Kerberos v5 authentication with X.509 v3 certificates.

Virtual smart cards were introduced in Windows Server 2012 and Windows 8 to
alleviate the need for a physical smart card, the smart card reader, and the associated
administration of that hardware.

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

In this technical reference


This reference contains the following topics.

How Smart Card Sign-in Works in Windows

Smart Card Architecture

Certificate Requirements and Enumeration

Smart Card and Remote Desktop Services

Smart Cards for Windows Service

Certificate Propagation Service

Smart Card Removal Policy Service

Smart Card Tools and Settings

Smart Cards Debugging Information

Smart Card Group Policy and Registry Settings

Smart Card Events


How Smart Card Sign-in Works in
Windows
Article • 05/11/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic for IT professional provides links to resources about the implementation of
smart card technologies in the Windows operating system. It includes the following
resources about the architecture, certificate management, and services that are related
to smart card use:

Smart Card Architecture: Learn about enabling communications with smart cards
and smart card readers, which can be different according to the vendor that
supplies them.

Certificate Requirements and Enumeration: Learn about requirements for smart


card certificates based on the operating system, and about the operations that are
performed by the operating system when a smart card is inserted into the
computer.

Smart Card and Remote Desktop Services: Learn about using smart cards for
remote desktop connections.

Smart Cards for Windows Service: Learn about how the Smart Cards for Windows
service is implemented.

Certificate Propagation Service: Learn about how the certificate propagation


service works when a smart card is inserted into a computer.

Smart Card Removal Policy Service: Learn about using Group Policy to control what
happens when a user removes a smart card.

Windows edition and licensing requirements


The following table lists the Windows editions that support Smart Cards for Windows
Service:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes


Smart Cards for Windows Service license entitlements are granted by the following
licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.
Smart Card Architecture
Article • 12/09/2022 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic for the IT professional describes the system architecture that supports smart
cards in the Windows operating system, including credential provider architecture and
the smart card subsystem architecture.

Authentication is a process for verifying the identity of an object or person. When you
authenticate an object, such as a smart card, the goal is to verify that the object is
genuine. When you authenticate a person, the goal is to verify that you are not dealing
with an imposter.

In a networking context, authentication is the act of proving identity to a network


application or resource. Typically, identity is proven by a cryptographic operation that
uses a key only the user knows (such as with public key cryptography), or a shared key.
The server side of the authentication exchange compares the signed data with a known
cryptographic key to validate the authentication attempt. Storing the cryptographic keys
in a secure central location makes the authentication process scalable and maintainable.

For smart cards, Windows supports a provider architecture that meets the secure
authentication requirements and is extensible so that you can include custom credential
providers. This topic includes information about:

Credential provider architecture

Smart card subsystem architecture

Credential provider architecture


The following table lists the components that are included in the interactive sign-in
architecture of the Windows Server and Windows operating systems.

Component Description

Winlogon Provides an interactive sign-in infrastructure.

Logon UI Provides interactive UI rendering.

Credential providers Describes credential information and serializing credentials.


(password and smart card)
Component Description

Local Security Authority (LSA) Processes sign-in credentials.

Authentication packages Includes NTLM and the Kerberos protocol. Communicates with
server authentication packages to authenticate users.

Interactive sign-in in Windows begins when the user presses CTRL+ALT+DEL. The
CTRL+ALT+DEL key combination is called a secure attention sequence (SAS). To keep
other programs and processes from using it, Winlogon registers this sequence during
the boot process.

After receiving the SAS, the UI then generates the sign-in tile from the information
received from the registered credential providers. The following graphic shows the
architecture for credential providers in the Windows operating system.

Figure 1 Credential provider architecture

Typically, a user who signs in to a computer by using a local account or a domain


account must enter a user name and password. These credentials are used to verify the
user's identity. For smart card sign-in, a user's credentials are contained on the smart
card's security chip. A smart card reader lets the computer interact with the security chip
on the smart card. When users sign in with a smart card, they enter a personal
identification number (PIN) instead of a user name and password.
Credential providers are in-process COM objects that run on the local system and are
used to collect credentials. The Logon UI provides interactive UI rendering, Winlogon
provides interactive sign-in infrastructure, and credential providers work with both of
these components to help gather and process credentials.

Winlogon instructs the Logon UI to display credential provider tiles after it receives an
SAS event. The Logon UI queries each credential provider for the number of credentials
it wants to enumerate. Credential providers have the option of specifying one of these
tiles as the default. After all providers have enumerated their tiles, the Logon UI displays
them to the user. The user interacts with a tile to supply the proper credentials. The
Logon UI submits these credentials for authentication.

Combined with supporting hardware, credential providers can extend the Windows
operating system to enable users to sign in by using biometrics (for example,
fingerprint, retinal, or voice recognition), password, PIN, smart card certificate, or any
custom authentication package. Enterprises and IT professionals can develop and
deploy custom authentication mechanisms for all domain users, and they may explicitly
require users to use this custom sign-in mechanism.

Note Credential providers are not enforcement mechanisms. They are used to
gather and serialize credentials. The LSA and authentication packages enforce
security.

Credential providers can be designed to support single sign-in (SSO). In this process,
they authenticate users to a secure network access point (by using RADIUS and other
technologies) for signing in to the computer. Credential providers are also designed to
support application-specific credential gathering, and they can be used for
authentication to network resources, joining computers to a domain, or to provide
administrator consent for User Account Control (UAC).

Multiple credential providers can coexist on a computer.

Credential providers must be registered on a computer running Windows, and they are
responsible for:

Describing the credential information that is required for authentication.

Handling communication and logic with external authentication authorities.

Packaging credentials for interactive and network sign-in.

Note The Credential Provider API does not render the UI. It describes what needs to
be rendered.
Only the password credential provider is available in safe mode.
The smart card credential provider is available in safe mode during networking.

Smart card subsystem architecture


Vendors provide smart cards and smart card readers, and in many cases the vendors are
different for the smart card and the smart card reader. Drivers for smart card readers are
written to the Personal Computer/Smart Card (PC/SC) standard . Each smart card must
have a Cryptographic Service Provider (CSP) that uses the CryptoAPI interfaces to enable
cryptographic operations, and the WinSCard APIs to enable communications with smart
card hardware.

Base CSP and smart card minidriver architecture


Figure 2 illustrates the relationship between the CryptoAPI, CSPs, the Smart Card Base
Cryptographic Service Provider (Base CSP), and smart card minidrivers.

Figure 2 Base CSP and smart card minidriver architecture

Caching with Base CSP and smart card KSP


Smart card architecture uses caching mechanisms to assist in streamlining operations
and to improve a user's access to a PIN.

Data caching: The data cache provides for a single process to minimize smart card
I/O operations.

PIN caching: The PIN cache helps the user from having to reenter a PIN each time
the smart card is unauthenticated.

Data caching
Each CSP implements the current smart card data cache separately. The Base CSP
implements a robust caching mechanism that allows a single process to minimize smart
card I/O operations.

The existing global cache works as follows:

1. The application requests a cryptographic operation. For example, a user certificate


is to be read from the smart card.

2. The CSP checks its cache for the item.

3. If the item is not found in the cache, or if the item is cached but is not up-to-date,
the item is read from the smart card.

4. After any item has been read from the smart card, it is added to the cache. Any
existing out-of-date copy of that item is replaced.

Three types of objects or data are cached by the CSP: pins (for more information, see
PIN caching), certificates, and files. If any of the cached data changes, the corresponding
object is read from the smart card in successive operations. For example, if a file is
written to the smart card, the CSP cache becomes out-of-date for the files, and other
processes read the smart card at least once to refresh their CSP cache.

The global data cache is hosted in the Smart Cards for Windows service. Windows
includes two public smart card API calls, SCardWriteCache and SCardReadCache. These
API calls make global data caching functionality available to applications. Every smart
card that conforms to the smart card minidriver specification has a 16-byte card
identifier. This value is used to uniquely identify cached data that pertains to a given
smart card. The standard Windows GUID type is used. These APIs allow an application to
add data to and read data from the global cache.

PIN caching
The PIN cache protects the user from entering a PIN every time the smart card is
unauthenticated. After a smart card is authenticated, it will not differentiate among
host-side applications—any application can access private data on the smart card.

To mitigate this, the smart card enters an exclusive state when an application
authenticates to the smart card. However, this means that other applications cannot
communicate with the smart card and will be blocked. Therefore, such exclusive
connections are minimized. The issue is that a protocol (such as the Kerberos protocol)
requires multiple signing operations. Therefore, the protocol requires exclusive access to
the smart card over an extended period, or it requires multiple authentication
operations. This is where the PIN cache is used to minimize exclusive use of the smart
card without forcing the user to enter a PIN multiple times.

The following example illustrates how this works. In this scenario, there are two
applications: Outlook and Internet Explorer. The applications use smart cards for
different purposes.

1. The user starts Outlook and tries to send a signed e-mail. The private key is on the
smart card.

2. Outlook prompts the user for the smart card PIN. The user enters the correct PIN.

3. E-mail data is sent to the smart card for the signature operation. The Outlook
client formats the response and sends the e-mail.

4. The user opens Internet Explorer and tries to access a protected site that requires
Transport Layer Security (TLS) authentication for the client.

5. Internet Explorer prompts the user for the smart card PIN. The user enters the
correct PIN.

6. The TLS-related private key operation occurs on the smart card, and the user is
authenticated and signed in.

7. The user returns to Outlook to send another signed e-mail. This time, the user is
not prompted for a PIN because the PIN is cached from the previous operation.
Similarly, if the user uses Internet Explorer again for another operation, Internet
Explorer will not prompt the user for a PIN.

The Base CSP internally maintains a per-process cache of the PIN. The PIN is encrypted
and stored in memory. The functions that are used to secure the PIN are
RtlEncryptMemory, RtlDecryptMemory, and RtlSecureZeroMemory, which will empty
buffers that contained the PIN.
Smart card selection
The following sections in this topic describe how Windows leverages the smart card
architecture to select the correct smart card reader software, provider, and credentials
for a successful smart card sign-in:

Container specification levels

Container operations

Context flags

Create a new container in silent context

Smart card selection behavior

Make a smart card reader match

Make a smart card match

Open an existing default container (no reader specified)

Open an existing GUID-named container (no reader specified)

Create a new container (no reader specified)

Delete a container

Container specification levels

In response to a CryptAcquireContext call in CryptoAPI, the Base CSP tries to match the
container that the caller specifies to a specific smart card and reader. The caller can
provide a container name with varying levels of specificity, as shown in the following
table, and sorted from most-specific to least-specific requests.

Similarly, in response to a NCryptOpenKey call in CNG, the smart card KSP tries to match
the container the same way, and it takes the same container format, as shown in the
following table.

Note Before opening a key by using the smart card KSP, a call to
NCryptOpenStorageProvider (MS_SMART_CARD_KEY_STORAGE_PROVIDER) must be
made.
Type Name Format

I Reader Name and Container Name \\.\<Reader Name>\<Container Name>

II Reader Name and Container Name (NULL) \\.\<Reader Name>

III Container Name Only <Container Name>

IV Default Container (NULL) Only NULL

The Base CSP and smart card KSP cache smart card handle information about the calling
process and about the smart cards the process has accessed. When searching for a
smart card container, the Base CSP or smart card KSP first checks its cache for the
process. If the cached handle is invalid or no match is found, the SCardUIDlg API is
called to get the card handle.

Container operations
The following three container operations can be requested by using
CryptAcquireContext:

1. Create a new container. (The CNG equivalent of CryptAcquireContext with dwFlags


set to CRYPT_NEWKEYSET is NCryptCreatePersistedKey.)

2. Open an existing container. (The CNG equivalent of CryptAcquireContext to open


the container is NCryptOpenKey.)

3. Delete a container. (The CNG equivalent of CryptAcquireContext with dwFlags set


to CRYPT_DELETEKEYSET is NCryptDeleteKey.)

The heuristics that are used to associate a cryptographic handle with a particular smart
card and reader are based on the container operation requested and the level of
container specification used.

The following table shows the restrictions for the container creation operation.

Specification Restriction

No silent context Key container creation must always be able to show UI, such as the
PIN prompt.

No overwriting existing If the specified container already exists on the chosen smart card,
containers choose another smart card or cancel the operation.

Context flags
The following table shows the context flags used as restrictions for the container
creation operation.

Flag Description

CRYPT_SILENT No UI can be displayed during this operation.

CRYPT_MACHINE_KEYSET No cached data should be used during this operation.

CRYPT_VERIFYCONTEXT Only public data can be accessed on the smart card.

In addition to container operations and container specifications, you must consider


other user options, such as the CryptAcquireContext flags, during smart card selection.

Important The CRYPT_SILENT flag cannot be used to create a new container.

Create a new container in silent context

Applications can call the Base CSP with CRYPT_DEFAULT_CONTAINER_OPTIONAL, set the
PIN in silent context, and then create a new container in silent context. This operation
occurs as follows:

1. Call CryptAcquireContext by passing the smart card reader name in as a type II


container specification level, and specifying the
CRYPT_DEFAULT_CONTAINER_OPTIONAL flag.

2. Call CryptSetProvParam by specifying PP_KEYEXCHANGE_PIN or


PP_SIGNATURE_PIN and a null-terminated ASCII PIN.

3. Release the context acquired in Step 1.

4. Call CryptAcquireContext with CRYPT_NEWKEYSET, and specify the type I container


specification level.

5. Call CryptGenKey to create the key.

Smart card selection behavior


In some of the following scenarios, the user can be prompted to insert a smart card. If
the user context is silent, this operation fails and no UI is displayed. Otherwise, in
response to the UI, the user can insert a smart card or click Cancel. If the user cancels
the operation, the operation fails. The flow chart in Figure 3 shows the selection steps
performed by the Windows operating system.
Figure 3 Smart card selection behavior

In general, smart card selection behavior is handled by the SCardUIDlgSelectCard API.


The Base CSP interacts with this API by calling it directly. The Base CSP also sends
callback functions that have the purpose of filtering and matching candidate smart
cards. Callers of CryptAcquireContext provide smart card matching information.
Internally, the Base CSP uses a combination of smart card serial numbers, reader names,
and container names to find specific smart cards.

Each call to SCardUI * may result in additional information read from a candidate smart
card. The Base CSP smart card selection callbacks cache this information.

Make a smart card reader match


For type I and type II container specification levels, the smart card selection process is
less complex because only the smart card in the named reader can be considered a
match. The process for matching a smart card with a smart card reader is:

1. Find the requested smart card reader. If it cannot be found, the process fails. (This
requires a cache search by reader name.)

2. If no smart card is in the reader, the user is prompted to insert a smart card. (This is
only in non-silent mode; if the call is made in silent mode, it will fail.)

3. For container specification level II only, the name of the default container on the
chosen smart card is determined.
4. To open an existing container or delete an existing container, find the specified
container. If the specified container cannot be found on this smart card, the user is
prompted to insert a smart card.

5. If the system attempts to create a new container, if the specified container already
exists on this smart card, the process fails.

Make a smart card match


For container specification levels III and IV, a broader method is used to match an
appropriate smart card with a user context, because multiple cached smart cards might
meet the criteria provided.

Open an existing default container (no reader specified)

Note This operation requires that you use the smart card with the Base CSP.

1. For each smart card that has been accessed by the Base CSP and the handle and
container information are cached, the Base CSP looks for a valid default container.
An operation is attempted on the cached SCARDHANDLE to verify its validity. If the
smart card handle is not valid, the Base CSP continues to search for a new smart
card.

2. If a matching smart card is not found in the Base CSP cache, the Base CSP calls to
the smart card subsystem. SCardUIDlgSelectCard() is used with an appropriate
callback filter to find a matching smart card with a valid default container.

Open an existing GUID-named container (no reader specified)

Note This operation requires that you use the smart card with the Base CSP.

1. For each smart card that is already registered with the Base CSP, search for the
requested container. Attempt an operation on the cached SCARDHANDLE to verify
its validity. If the smart card handle is not valid, the smart card's serial number is
passed to the SCardUI * API to continue searching for this specific smart card
(rather than only a general match for the container name).

2. If a matching smart card is not found in the Base CSP cache, a call is made to the
smart card subsystem. SCardUIDlgSelectCard() is used with an appropriate callback
filter to find a matching smart card with the requested container. Or, if a smart
card serial number resulted from the search in Step 1, the callback filter attempts
to match the serial number, not the container name.

Create a new container (no reader specified)

Note This operation requires that you use the smart card with the Base CSP.

If the PIN is not cached, no CRYPT_SILENT is allowed for the container creation because
the user must be prompted for a PIN, at a minimum.

For other operations, the caller may be able to acquire a "verify" context against the
default container (CRYPT_DEFAULT_CONTAINER_OPTIONAL) and then make a call with
CryptSetProvParam to cache the user PIN for subsequent operations.

1. For each smart card already known by the CSP, refresh the stored SCARDHANDLE
and make the following checks:

a. If the smart card has been removed, continue the search.

b. If the smart card is present, but it already has the named container, continue the
search.

c. If the smart card is available, but a call to CardQueryFreeSpace indicates that the
smart card has insufficient storage for an additional key container, continue the
search.

d. Otherwise, use the first available smart card that meets the above criteria for the
container creation.

2. If a matching smart card is not found in the CSP cache, make a call to the smart
card subsystem. The callback that is used to filter enumerated smart cards verifies
that a candidate smart card does not already have the named container, and that
CardQueryFreeSpace indicates the smart card has sufficient space for an additional
container. If no suitable smart card is found, the user is prompted to insert a smart
card.

Delete a container
1. If the specified container name is NULL, the default container is deleted. Deleting
the default container causes a new default container to be selected arbitrarily. For
this reason, this operation is not recommended.
2. For each smart card already known by the CSP, refresh the stored SCARDHANDLE
and make the following checks:

a. If the smart card does not have the named container, continue the search.

b. If the smart card has the named container, but the smart card handle is no
longer valid, store the serial number of the matching smart card and pass it to
SCardUI *.

3. If a matching smart card is not found in the CSP cache, make a call to the smart
card subsystem. The callback that is used to filter enumerated smart cards should
verify that a candidate smart card has the named container. If a serial number was
provided as a result of the previous cache search, the callback should filter
enumerated smart cards on serial number rather than on container matches. If the
context is non-silent and no suitable smart card is found, display UI that prompts
the user to insert a smart card.

Base CSP and KSP-based architecture in Windows


Figure 4 shows the Cryptography architecture that is used by the Windows operating
system.
Figure 4 Cryptography architecture

Base CSP and smart card KSP properties in Windows


Note The API definitions are located in WinCrypt.h and WinSCard.h.

Property Description

PP_USER_CERTSTORE - Used to return an HCERTSTORE that contains all user certificates on


the smart card
- Read-only (used only by CryptGetProvParam)
- Caller responsible for closing the certificate store
- Certificate encoded using PKCS_7_ASN_ENCODING or
X509_ASN_ENCODING
Property Description

- CSP should set KEY_PROV_INFO on certificates


- Certificate store should be assumed to be an in-memory store
- Certificates should have a valid CRYPT_KEY_PROV_INFO as a
property

PP_ROOT_CERTSTORE - Read and Write (used by CryptGetProvParam and


CryptSetProvParam)
- Used to write a collection of root certificates to the smart card or
return HCERTSTORE, which contains root certificates from the smart
card
- Used primarily for joining a domain by using a smart card
- Caller responsible for closing the certificate store

PP_SMARTCARD_READER - Read-only (used only by CryptGetProvParam)


- Returns the smart card reader name as an ANSI string that is used to
construct a fully qualified container name (that is, a smart card reader
plus a container)

PP_SMARTCARD_GUID - Return smart card GUID (also known as a serial number), which
should be unique for each smart card
- Used by the certificate propagation service to track the source of a
root certificate

PP_UI_PROMPT - Used to set the search string for the SCardUIDlgSelectCard card
insertion dialog box
- Persistent for the entire process when it is set
- Write-only (used only by CryptSetProvParam)

Implications for CSPs in Windows


Cryptographic Service Providers (CSPs), including custom smart card CSPs, continue to
be supported but this approach is not recommended. Using the existing Base CSP and
smart card KSP with the smart card minidriver model for smart cards provides significant
benefits in terms of performance, and PIN and data caching. One minidriver can be
configured to work under CryptoAPI and CNG layers. This provides benefits from
enhanced cryptographic support, including elliptic curve cryptography and AES.

If a smart card is registered by a CSP and a smart card minidriver, the one that was
installed most recently will be used to communicate with the smart card.

Write a smart card minidriver, CSP, or KSP


CSPs and KSPs are meant to be written only if specific functionality is not available in the
current smart card minidriver architecture. For example, the smart card minidriver
architecture supports hardware security modules, so a minidriver could be written for a
hardware security module, and a CSP or KSP may not be required unless it is needed to
support algorithms that are not implemented in the Base CSP or smart card KSP.

For more information about how to write a smart card minidriver, CSP, or KSP, see Smart
Card Minidrivers.
Certificate Requirements and
Enumeration
Article • 01/24/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic for the IT professional and smart card developers describes how certificates
are managed and used for smart card sign-in.

When a smart card is inserted, the following steps are performed.

Note Unless otherwise mentioned, all operations are performed silently


(CRYPT_SILENT is passed to CryptAcquireContext).

1. The smart card resource manager database searches for the smart card's
cryptographic service provider (CSP).

2. A qualified container name is constructed by using the smart card reader name,
and it is passed to the CSP. The format is \\.\<Reader name>\

3. CryptAcquireContext is called to retrieve a context to the default container. If a


failure occurs, the smart card will be unusable for smart card sign-in.

4. The name of the container is retrieved by using the PP_CONTAINER parameter with
CryptGetProvParam.

5. Using the context acquired in Step 3, the CSP is queried for the
PP_USER_CERTSTORE parameter (added in Windows Vista). For more information,
see Smart Card Architecture. If the operation is successful, the name of a certificate
store is returned, and the program flow skips to Step 8.

6. If the operation in Step 5 fails, the default container context from Step 3 is queried
for the AT_KEYEXCHANGE key.

7. The certificate is then queried from the key context by using KP_CERTIFICATE. The
certificate is added to an in-memory certificate store.

8. For each certificate in the certificate store from Step 5 or Step 7, the following
checks are performed:

a. The certificate must be valid, based on the computer system clock (not expired
or valid with a future date).
b. The certificate must not be in the AT_SIGNATURE part of a container.

c. The certificate must have a valid user principal name (UPN).

d. The certificate must have the digital signature key usage.

e. The certificate must have the smart card logon EKU.

Any certificate that meets these requirements is displayed to the user with the
certificate's UPN (or e-mail address or subject, depending on the presence of the
certificate extensions).

Note These requirements are the same as those in Windows Server 2003, but
they are performed before the user enters the PIN. You can override many of
them by using Group Policy settings.

9. The process then chooses a certificate, and the PIN is entered.

10. LogonUI.exe packages the information and sends it to Lsass.exe to process the
sign-in attempt.

11. If successful, LogonUI.exe closes. This causes the context acquired in Step 3 to be
released.

About Certificate support for compatibility


Although versions of Windows earlier than Windows Vista include support for smart
cards, the types of certificates that smart cards can contain are limited. The limitations
are:

Each certificate must have a user principal name (UPN) and the smart card sign-in
object identifier (also known as OID) in the extended key usage (EKU) attribute
field. There is a Group Policy setting, Allow ECC certificates to be used for logon
and authentication, to make the EKU optional.

Each certificate must be stored in the AT_KEYEXCHANGE portion of the default


CryptoAPI container, and non-default CryptoAPI containers are not supported.

The following table lists the certificate support in older Windows operating system
versions.

Operating system Certificate support

Windows Server 2008 R2 Support for smart card sign-in with ECC-based certificates. ECC
and Windows 7 smart card sign-in is enabled through Group Policy.
Operating system Certificate support

ECDH_P256
ECDH
Curve P-256 from FIPS 186-2

ECDSA_P256
ECDSA
Curve P-256 from FIPS 186-2

ECDH_P384
ECDH
Curve P-384 from FIPS 186-2

ECDH_P521
ECDH
Curve P-521 from FIPS 186-2

ECDSA_P256
ECDH
Curve P-256 from FIPS 186-2

ECDSA_P384
ECDSA
Curve P-384 from FIPS 186-2

ECDSA_P521
ECDSA
Curve P-384 from FIPS 186-2

Windows Server 2008 and Valid certificates are enumerated and displayed from all smart cards
Windows Vista and presented to the user.
Keys are no longer restricted to the default container, and
certificates in different containers can be chosen.
Elliptic curve cryptography (ECC)-based certificates are not
supported for smart card sign-in

Smart card sign-in flow in Windows


Most issues during authentication occur because of session behavior changes. When
changes occur, the Local Security Authority (LSA) does not reacquire the session context;
it relies instead on the Cryptographic Service Provider to handle the session change.

Client certificates that do not contain a UPN in the subjectAltName (SAN) field of the
certificate can be enabled for sign-in, which supports a wider variety of certificates and
supports multiple sign-in certificates on the same card.
Support for multiple certificates on the same card is enabled by default. New certificate
types must be enabled through Group Policy.

If you enable the Allow signature keys valid for Logon credential provider policy, any
certificates that are available on the smart card with a signature-only key are listed on
the sign-in screen. This allows users to select their sign-in experience. If the policy is
disabled or not configured, smart card signature-key-based certificates are not listed on
the sign-in screen.

The following diagram illustrates how smart card sign-in works in the supported
versions of Windows.

Smart card sign-in flow

Following are the steps that are performed during a smart card sign-in:

1. Winlogon requests the sign-in UI credential information.

2. Asynchronously, smart card resource manager starts, and the smart card credential
provider does the following:
a. Gets credential information (a list of known credentials, or if no credentials exist,
the smart card reader information that Windows detected).

b. Gets a list of smart card readers (by using the WinSCard API) and the list of
smart cards inserted in each of them.

c. Enumerates each card to verify that a sign-in certificate that is controlled by


Group Policy is present. If the certificate is present, the smart card credential
provider copies it into a temporary, secure cache on the computer or terminal.

Note Smartcard cache entries are created for certificates with a subject name
or with a subject key identifier. If the certificate has a subject name, it is stored
with an index that is based on the subject name and certificate issuer. If
another certificate with the same subject name and certificate issuer is used, it
will replace the existing cached entry. A change in this behavior after Windows
Vista, allows for the condition when the certificate does not have a subject
name, the cache is created with an index that is based on the subject key
identifier and certificate issuer. If another certificate has the same the subject
key identifier and certificate issuer, the cache entry is replaced. When
certificates have neither a subject name nor subject key identifier, a cached
entry is not created.

d. Notifies the sign-in UI that it has new credentials.

3. The sign-in UI requests the new credentials from the smart card credential
provider. As a response, the smart card credential provider provides each sign-in
certificate to the sign-in UI, and corresponding sign-in tiles are displayed. The user
selects a smart card-based sign-in certificate tile, and Windows displays a PIN
dialog box.

4. The user enters the PIN, and then presses ENTER. The smart card credential
provider encrypts the PIN.

5. The credential provider that resides in the LogonUI system collects the PIN. As part
of packaging credentials in the smart card credential provider, the data is
packaged in a KERB_CERTIFICATE_LOGON structure. The main contents of the
KERB_CERTIFICATE_LOGON structure are the smart card PIN, CSP data (such as
reader name and container name), user name, and domain name. User name is
required if the sign-in domain is not in the same forest because it enables a
certificate to be mapped to multiple user accounts.

6. The credential provider wraps the data (such as the encrypted PIN, container name,
reader name, and card key specification) and sends it back to LogonUI.
7. Winlogon presents the data from LogonUI to the LSA with the user information in
LSALogonUser.

8. LSA calls the Kerberos authentication package (Kerberos SSP) to create a Kerberos
authentication service request (KRB_AS_REQ), which containing a preauthenticator
(as specified in RFC 4556: Public Key Cryptography for Initial Authentication in
Kerberos (PKINIT) ).

If the authentication is performed by using a certificate that uses a digital


signature, the preauthentication data consists of the user's public certificate and
the certificate that is digitally signed with the corresponding private key.
If the authentication is performed by using a certificate that uses key
encipherment, the preauthentication data consists of the user's public certificate
and the certificate that is encrypted with the corresponding private key.

9. To sign the request digitally (as per RFC 4556), a call is made to the corresponding
CSP for a private key operation. Because the private key in this case is stored in a
smart card, the smart card subsystem is called, and the necessary operation is
completed. The result is sent back to the Kerberos security support provider (SSP).

10. The Kerberos SSP sends an authentication request for a ticket-granting-ticket (TGT)
(per RFC 4556) to the Key Distribution Center (KDC) service that runs on a domain
controller.

11. The KDC finds the user's account object in Active Directory Domain Services (AD
DS), as detailed in Client certificate requirements and mappings, and uses the
user's certificate to verify the signature.

12. The KDC validates the user's certificate (time, path, and revocation status) to
ensure that the certificate is from a trusted source. The KDC uses CryptoAPI to
build a certification path from the user's certificate to a root certification authority
(CA) certificate that resides in the root store on the domain controller. The KDC
then uses CryptoAPI to verify the digital signature on the signed authenticator that
was included in the preauthentication data fields. The domain controller verifies
the signature and uses the public key from the user's certificate to prove that the
request originated from the owner of the private key that corresponds to the
public key. The KDC also verifies that the issuer is trusted and appears in the
NTAUTH certificate store.

13. The KDC service retrieves user account information from AD DS. The KDC
constructs a TGT, which is based on the user account information that it retrieves
from AD DS. The TGT's authorization data fields include the user's security
identifier (SID), the SIDs for universal and global domain groups to which the user
belongs, and (in a multidomain environment) the SIDs for any universal groups of
which the user is a member.

14. The domain controller returns the TGT to the client as part of the KRB_AS_REP
response.

Note The KRB_AS_REP packet consists of:

Privilege attribute certificate (PAC)


User's SID
SIDs of any groups of which the user is a member
A request for ticket-granting service (TGS)
Preauthentication data

TGT is encrypted with the master key of the KDC, and the session key is encrypted
with a temporary key. This temporary key is derived based on RFC 4556. Using
CryptoAPI, the temporary key is decrypted. As part of the decryption process, if the
private key is on a smart card, a call is made to the smart card subsystem by using
the specified CSP to extract the certificate corresponding to the user's public key.
(Programmatic calls for the certificate include CryptAcquireContext,
CryptSetProvParam with the PIN, CryptgetUserKey, and CryptGetKeyParam.) After
the temporary key is obtained, the Kerberos SSP decrypts the session key.

15. The client validates the reply from the KDC (time, path, and revocation status). It
first verifies the KDC's signature by the construction of a certification path from the
KDC's certificate to a trusted root CA, and then it uses the KDC's public key to
verify the reply signature.

16. Now that a TGT has been obtained, the client obtains a service ticket, which is used
to sign in to the local computer.

17. With success, LSA stores the tickets and returns a success message to
LSALogonUser. After this success message is issued, user profile for the device is
selected and set, Group Policy refresh is instantiated, and other actions are
performed.

18. After the user profile is loaded, the Certification Propagation Service (CertPropSvc)
detects this event, reads the certificates from the smart card (including the root
certificates), and then populates them into the user's certificate store (MYSTORE).

19. CSP to smart card resource manager communication happens on the LRPC
Channel.
20. On successful authentication, certificates are propagated to the user's store
asynchronously by the Certificate Propagation Service (CertPropSvc).

21. When the card is removed, certificates in the temporary secure cache store are
removed. The Certificates are no longer available for sign-in, but they remain in the
user's certificate store.

Note A SID is created for each user or group at the time a user account or a group
account is created within the local security accounts database or within AD DS. The
SID never changes, even if the user or group account is renamed.

For more information about the Kerberos protocol, see Microsoft Kerberos.

By default, the KDC verifies that the client's certificate contains the smart card client
authentication EKU szOID_KP_SMARTCARD_LOGON. However, if enabled, the Allow
certificates with no extended key usage certificate attribute Group Policy setting
allows the KDC to not require the SC-LOGON EKU. SC-LOGON EKU is not required for
account mappings that are based on the public key.

KDC certificate
Active Directory Certificate Services provides three kinds of certificate templates:

Domain controller

Domain controller authentication

Kerberos authentication

Depending on the configuration of the domain controller, one of these types of


certificates is sent as a part of the AS_REP packet.

Client certificate requirements and mappings


Certificate requirements are listed by versions of the Windows operating system.
Certificate mapping describes how information from the certificate is mapped to the
user account.

Certificate requirements
The smart card certificate has specific format requirements when it is used with
Windows XP and earlier operating systems. You can enable any certificate to be visible
for the smart card credential provider.

Component Requirements Requirements for Windows XP


for Windows
8.1, Windows 8,
Windows 7,
Windows Vista,
Windows 10,
and Windows
11

CRL distribution Not required The location must be specified, online, and available, for
point location example:
[1]CRL Distribution Point
Distribution Point Name:
Full Name:
URL=
<http://server1.contoso.com/CertEnroll/caname.crl>

Key usage Digital Digital signature


signature

Basic constraints Not required [Subject Type=End Entity, Path Length Constraint=None]
(Optional)

extended key The smart card - Client Authentication (1.3.6.1.5.5.7.3.2)


usage (EKU) sign-in object The client authentication object identifier is required
identifier is not only if a certificate is used for SSL authentication.
required.
- Smart Card Sign-in (1.3.6.1.4.1.311.20.2.2)
Note If an EKU
is present, it
must contain
the smart card
sign-in EKU.
Certificates with
no EKU can be
used for sign-in.

Subject alternative E-mail ID is not Other Name: Principal Name=(UPN), for example:
name required for UPN=user1@contoso.com
smart card sign- The UPN OtherName object identifier is
in. 1.3.6.1.4.1.311.20.2.3.
The UPN OtherName value must be an ASN1-encoded
UTF8 string.

Subject Not required Distinguished name of user. This field is a mandatory


extension, but the population of this field is optional.
Component Requirements Requirements for Windows XP
for Windows
8.1, Windows 8,
Windows 7,
Windows Vista,
Windows 10,
and Windows
11

Key exchange Not required for Not required


(AT_KEYEXCHANGE smart card sign-
field) in certificates if
a Group Policy
setting is
enabled. (By
default, Group
Policy settings
are not
enabled.)

CRL Not required Not required

UPN Not required Not required

Notes You can enable There are two predefined types of private keys. These
any certificate keys are Signature Only (AT_SIGNATURE) and Key
to be visible for Exchange (AT_KEYEXCHANGE). Smart card sign-in
the smart card certificates must have a Key Exchange
credential (AT_KEYEXCHANGE) private key type.
provider.

Client certificate mappings


Certificate mapping is based on the UPN that is contained in the subjectAltName (SAN)
field of the certificate. Client certificates that do not contain information in the SAN field
are also supported.

SSL/TLS can map certificates that do not have SAN, and the mapping is done by using
the AltSecID attributes on client accounts. The X509 AltSecID, which is used by SSL/TLS
client authentication is of the form "X509: <I>"<Issuer Name>"<S>"<Subject Name>.
The <Issuer Name> and <Subject Name> are taken from the client certificate, with '\r'
and '\n' replaced with ','.

Certificate revocation list distribution points


UPN in Subject Alternative Name field
Subject and Issuer fields
This account mapping is supported by the KDC in addition to six other mapping
methods. The following figure demonstrates a flow of user account mapping logic that
is used by the KDC.

High-level flow of certificate processing for sign-in


The certificate object is parsed to look for content to perform user account mapping.

When a user name is provided with the certificate, the user name is used to locate
the account object. This operation is the fastest, because string matching occurs.

When only the certificate object is provided, a series of operations are performed
to locate the user name to map the user name to an account object.

When no domain information is available for authentication, the local domain is


used by default. If any other domain is to be used for lookup, a domain name hint
should be provided to perform the mapping and binding.

Mapping based on generic attributes is not possible because there is no generic API to
retrieve attributes from a certificate. Currently, the first method that locates an account
successfully stops the search. But a configuration error occurs if two methods map the
same certificate to different user accounts when the client does not supply the client
name through the mapping hints.

The following figure illustrates the process of mapping user accounts for sign-in in the
directory by viewing various entries in the certificate.

Certificate processing logic


NT_AUTH policy is best described in the CERT_CHAIN_POLICY_NT_AUTH parameter
section of the CertVerifyCertificateChainPolicy function. For more information, see
CertVerifyCertificateChainPolicy.

Smart card sign-in for a single user with one


certificate into multiple accounts
A single user certificate can be mapped to multiple accounts. For example, a user might
be able to sign in to a user account and also to sign in as a domain administrator. The
mapping is done by using the constructed AltSecID based on attributes from client
accounts. For information about how this mapping is evaluated, see Client certificate
requirements and mappings.

Note Because each account has a different user name, we recommend that you
enable the Allow user name hint Group Policy setting (X509HintsNeeded registry
key) to provide the optional fields that allow users to enter their user names and
domain information to sign in.

Based on the information that is available in the certificate, the sign-in conditions are:

1. If no UPN is present in the certificate:

a. Sign-in can occur in the local forest or in another forest if a single user with one
certificate needs to sign in to different accounts.

b. A hint must be supplied if mapping is not unique (for example, if multiple users
are mapped to the same certificate).

2. If a UPN is present in the certificate:

a. The certificate cannot be mapped to multiple users in the same forest.

b. The certificate can be mapped to multiple users in different forests. For a user to
sign in to other forests, an X509 hint must be supplied to the user.

Smart card sign-in for multiple users into a


single account
A group of users might sign in to a single account (for example, an administrator
account). For that account, user certificates are mapped so that they are enabled for
sign-in.

Several distinct certificates can be mapped to a single account. For this to work properly,
the certificate cannot have UPNs.

For example, if Certificate1 has CN=CNName1, Certificate2 has CN=User1, and


Certificate3 has CN=User2, the AltSecID of these certificates can be mapped to a single
account by using the Active Directory Users and Computers name mapping.

Smart card sign-in across forests


For account mapping to work across forests, particularly in cases where there is not
enough information available on the certificate, the user might enter a hint in the form
of a user name, such as domain\user, or a fully qualified UPN such as user@contoso.com.

Note For the hint field to appear during smart card sign-in, the Allow user name
hint Group Policy setting (X509HintsNeeded registry key) must be enabled on the
client.

OCSP support for PKINIT


Online Certificate Status Protocol (OCSP), which is defined in RFC 2560, enables
applications to obtain timely information about the revocation status of a certificate.
Because OCSP responses are small and well bound, constrained clients might want to
use OCSP to check the validity of the certificates for Kerberos on the KDC, to avoid
transmission of large CRLs, and to save bandwidth on constrained networks. For
information about CRL registry keys, see Smart Card Group Policy and Registry Settings.

The KDCs in Windows attempt to get OCSP responses and use them when available.
This behavior cannot be disabled. CryptoAPI for OCSP caches OCSP responses and the
status of the responses. The KDC supports only OCSP responses for the signer
certificate.

Windows client computers attempt to request the OCSP responses and use them in the
reply when they are available. This behavior cannot be disabled.

Smart card root certificate requirements for use


with domain sign-in
For sign-in to work in a smart card-based domain, the smart card certificate must meet
the following conditions:

The KDC root certificate on the smart card must have an HTTP CRL distribution
point listed in its certificate.

The smart card sign-in certificate must have the HTTP CRL distribution point listed
in its certificate.

The CRL distribution point must have a valid CRL published and a delta CRL, if
applicable, even if the CRL distribution point is empty.

The smart card certificate must contain one of the following:


A subject field that contains the DNS domain name in the distinguished name. If
it does not, resolution to an appropriate domain fails, so Remote Desktop
Services and the domain sign-in with the smart card fail.

A UPN where the domain name resolves to the actual domain. For example, if
the domain name is Engineering.Corp.Contoso, the UPN is
username@engineering.corp.contoso.com. If any part of the domain name is
omitted, the Kerberos client cannot find the appropriate domain.

Although the HTTP CRL distribution points are on by default in Windows Server 2008,
subsequent versions of the Windows Server operating system do not include HTTP CRL
distribution points. To allow smart card sign-in to a domain in these versions, do the
following:

1. Enable HTTP CRL distribution points on the CA.

2. Restart the CA.

3. Reissue the KDC certificate.

4. Issue or reissue the smart card sign-in certificate.

5. Propagate the updated root certificate to the smart card that you want to use for
the domain sign-in.

The workaround is to enable the Allow user name hint Group Policy setting
(X509HintsNeeded registry key), which allows the user to supply a hint in the
credentials user interface for domain sign-in.

If the client computer is not joined to the domain or if it is joined to a different domain,
the client computer can resolve the server domain only by looking at the distinguished
name on the certificate, not the UPN. For this scenario to work, the certificate requires a
full subject, including DC=<DomainControllerName>, for domain name resolution.

To deploy root certificates on a smart card for the currently joined domain, you can use
the following command:

certutil -scroots update

For more information about this option for the command-line tool, see -SCRoots.

See also
How Smart Card Sign-in Works in Windows
Smart Card and Remote Desktop
Services
Article • 03/31/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic for the IT professional describes the behavior of Remote Desktop Services
when you implement smart card sign-in.

Smart card redirection logic and WinSCard API are combined to support multiple
redirected sessions into a single process.

Smart card support is required to enable many Remote Desktop Services scenarios.
These include:

Using Fast User Switching or Remote Desktop Services. A user is not able to
establish a redirected smart card-based remote desktop connection. That is, the
connect attempt is not successful in Fast User Switching or from a Remote Desktop
Services session.

Enabling Encrypting File System (EFS) to locate the user's smart card reader from
the Local Security Authority (LSA) process in Fast User Switching or in a Remote
Desktop Services session. If EFS is not able to locate the smart card reader or
certificate, EFS cannot decrypt user files.

Remote Desktop Services redirection


In a Remote Desktop scenario, a user is using a remote server for running services, and
the smart card is local to the computer that the user is using. In a smart card sign-in
scenario, the smart card service on the remote server redirects to the smart card reader
that is connected to the local computer where the user is trying to sign in.
Remote Desktop redirection

Notes about the redirection model:

1. This scenario is a remote sign-in session on a computer with Remote Desktop


Services. In the remote session (labeled as "Client session"), the user runs net use
/smartcard.

2. Arrows represent the flow of the PIN after the user types the PIN at the command
prompt until it reaches the user's smart card in a smart card reader that is
connected to the Remote Desktop Connection (RDC) client computer.

3. The authentication is performed by the LSA in session 0.

4. The CryptoAPI processing is performed in the LSA (Lsass.exe). This is possible


because RDP redirector (rdpdr.sys) allows per-session, rather than per-process,
context.

5. The WinScard and SCRedir components, which were separate modules in


operating systems earlier than Windows Vista, are now included in one module.
The ScHelper library is a CryptoAPI wrapper that is specific to the Kerberos
protocol.

6. The redirection decision is made on a per smart card context basis, based on the
session of the thread that performs the SCardEstablishContext call.
7. Changes to WinSCard.dll implementation were made in Windows Vista to improve
smart card redirection.

RD Session Host server single sign-in


experience
As a part of the Common Criteria compliance, the RDC client must be configurable to
use Credential Manager to acquire and save the user's password or smart card PIN.
Common Criteria compliance requires that applications not have direct access to the
user's password or PIN.

Common Criteria compliance requires specifically that the password or PIN never leave
the LSA unencrypted. A distributed scenario should allow the password or PIN to travel
between one trusted LSA and another, and it cannot be unencrypted during transit.

When smart card-enabled single sign-in (SSO) is used for Remote Desktop Services
sessions, users still need to sign in for every new Remote Desktop Services session.
However, the user is not prompted for a PIN more than once to establish a Remote
Desktop Services session. For example, after the user double-clicks a Microsoft Word
document icon that resides on a remote computer, the user is prompted to enter a PIN.
This PIN is sent by using a secure channel that the credential SSP has established. The
PIN is routed back to the RDC client over the secure channel and sent to Winlogon. The
user does not receive any additional prompts for the PIN, unless the PIN is incorrect or
there are smart card-related failures.

Remote Desktop Services and smart card sign-in


Remote Desktop Services enables users to sign in with a smart card by entering a PIN on
the RDC client computer and sending it to the RD Session Host server in a manner
similar to authentication that is based on user name and password.

In addition, Group Policy settings that are specific to Remote Desktop Services need to
be enabled for smart card-based sign-in.

To enable smart card sign-in to a Remote Desktop Session Host (RD Session Host)
server, the Key Distribution Center (KDC) certificate must be present on the RDC client
computer. If the computer is not in the same domain or workgroup, the following
command can be used to deploy the certificate:

certutil -dspublish NTAuthCA "DSCDPContainer"


The DSCDPContainer Common Name (CN) is usually the name of the certification
authority.

Example:

certutil -dspublish NTAuthCA <CertFile> "CN=NTAuthCertificates,CN=Public Key


Services,CN=Services,CN=Configuration,DC=engineering,DC=contoso,DC=com"

For information about this option for the command-line tool, see -dsPublish.

Remote Desktop Services and smart card sign-in across


domains
To enable remote access to resources in an enterprise, the root certificate for the
domain must be provisioned on the smart card. From a computer that is joined to a
domain, run the following command at the command line:

certutil -scroots update

For information about this option for the command-line tool, see -SCRoots.

For Remote Desktop Services across domains, the KDC certificate of the RD Session Host
server must also be present in the client computer's NTAUTH store. To add the store, run
the following command at the command line:

certutil -addstore -enterprise NTAUTH <CertFile>

Where <CertFile> is the root certificate of the KDC certificate issuer.

For information about this option for the command-line tool, see -addstore.

7 Note

To sign in with a smart card from a computer that is not joined to a domain, the
smart card must contain the root certification of the domain controller. A public key
infrastructure (PKI) secure channel cannot be established without the root
certification of the domain controller.

Sign-in to Remote Desktop Services across a domain works only if the UPN in the
certificate uses the following form: <ClientName>@<DomainDNSName>

The UPN in the certificate must include a domain that can be resolved. Otherwise, the
Kerberos protocol cannot determine which domain to contact. You can resolve this issue
by enabling GPO X509 domain hints. For more information about this setting, see Smart
Card Group Policy and Registry Settings.

See also
How Smart Card Sign-in Works in Windows
Smart Cards for Windows Service
Article • 12/09/2022 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic for the IT professional and smart card developers describes how the Smart
Cards for Windows service (formerly called Smart Card Resource Manager) manages
readers and application interactions.

The Smart Cards for Windows service provides the basic infrastructure for all other smart
card components as it manages smart card readers and application interactions on the
computer. It is fully compliant with the specifications set by the PC/SC Workgroup. For
information about these specifications, see the PC/SC Workgroup Specifications
website .

The Smart Cards for Windows service runs in the context of a local service, and it is
implemented as a shared service of the services host (svchost) process. The Smart Cards
for Windows service, Scardsvr, has the following service description:

PowerShell

<serviceData
dependOnService="PlugPlay"
description="@%SystemRoot%\System32\SCardSvr.dll,-5"
displayName="@%SystemRoot%\System32\SCardSvr.dll,-1"
errorControl="normal"
group="SmartCardGroup"
imagePath="%SystemRoot%\system32\svchost.exe -k
LocalServiceAndNoImpersonation"
name="SCardSvr"
objectName="NT AUTHORITY\LocalService"
requiredPrivileges="SeCreateGlobalPrivilege,SeChangeNotifyPrivilege"
sidType="unrestricted"
start="demand"
type="win32ShareProcess"
>
<failureActions resetPeriod="900">
<actions>
<action
delay="120000"
type="restartService"
/>
<action
delay="300000"
type="restartService"
/>
<action
delay="0"
type="none"
/>
</actions>
</failureActions>
<securityDescriptor name="ServiceXSecurity"/>
</serviceData>

<registryKeys buildFilter="">
<registryKey
keyName="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SCardSvr\Param
eters">
<registryValue
name="ServiceDll"
value="%SystemRoot%\System32\SCardSvr.dll"
valueType="REG_EXPAND_SZ"
/>
<registryValue
name="ServiceMain"
value="CalaisMain"
valueType="REG_SZ"
/>
<registryValue
name="ServiceDllUnloadOnStop"
value="1"
valueType="REG_DWORD"
/>
</registryKey>
</registryKeys>

Note For winscard.dll to be invoked as the proper class installer, the INF file for a
smart card reader must specify the following for Class and ClassGUID:
Class=SmartCardReader
ClassGuid={50DD5230-BA8A-11D1-BF5D-0000F805F530}

By default, the service is configured for manual mode. Creators of smart card reader
drivers must configure their INFs so that they start the service automatically and
winscard.dll files call a predefined entry point to start the service during installation. The
entry point is defined as part of the SmartCardReader class, and it is not called directly.
If a device advertises itself as part of this class, the entry point is automatically invoked
to start the service when the device is inserted. Using this method ensures that the
service is enabled when it is needed, but it is also disabled for users who do not use
smart cards.

When the service is started, it performs several functions:

1. It registers itself for service notifications.


2. It registers itself for Plug and Play (PnP) notifications related to device removal and
additions.

3. It initializes its data cache and a global event that signals that the service has
started.

Note For smart card implementations, consider sending all communications in


Windows operating systems with smart card readers through the Smart Cards for
Windows service. This provides an interface to track, select, and communicate with
all drivers that declare themselves members of the smart card reader device group.

The Smart Cards for Windows service categorizes each smart card reader slot as a
unique reader, and each slot is also managed separately, regardless of the device's
physical characteristics. The Smart Cards for Windows service handles the following
high-level actions:

Device introduction

Reader initialization

Notifying clients of new readers

Serializing access to readers

Smart card access

Tunneling of reader-specific commands

See also
How Smart Card Sign-in Works in Windows
Certificate Propagation Service
Article • 12/09/2022 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic for the IT professional describes the certificate propagation service
(CertPropSvc), which is used in smart card implementation.

The certificate propagation service activates when a signed-in user inserts a smart card
in a reader that is attached to the computer. This action causes the certificate to be read
from the smart card. The certificates are then added to the user's Personal store.
Certificate propagation service actions are controlled by using Group Policy. For more
information, see Smart Card Group Policy and Registry Settings.

Note The certificate propagation service must be running for smart card Plug and
Play to work.

The following figure shows the flow of the certificate propagation service. The action
begins when a signed-in user inserts a smart card.

1. The arrow labeled 1 indicates that the Service Control Manager (SCM) notifies the
certificate propagation service (CertPropSvc) when a user signs in, and CertPropSvc
begins to monitor the smart cards in the user session.

2. The arrow labeled R represents the possibility of a remote session and the use of
smart card redirection.

3. The arrow labeled 2 indicates the certification to the reader.

4. The arrow labeled 3 indicates the access to the certificate store during the client
session.

Certificate propagation service


1. A signed-in user inserts a smart card.

2. CertPropSvc is notified that a smart card was inserted.

3. CertPropSvc reads all certificates from all inserted smart cards. The certificates are
written to the user's personal certificate store.

Note The certificate propagation service is started as a Remote Desktop Services


dependency.

Properties of the certificate propagation service include:

CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES adds certificates to a


user's Personal store.

If the certificate has the CERT_ENROLLMENT_PROP_ID property (as defined by


wincrypt.h), it filters empty requests and places them in the current user's request
store, but it does not propagate them to the user's Personal store.

The service does not propagate any computer certificates to a user's Personal store
or propagate user certificates to a computer store.

The service propagates certificates according to Group Policy options that are set,
which may include:
Turn on certificate propagation from the smart card specifies whether a user's
certificate should be propagated.

Turn on root certificate propagation from smart card specifies whether root
certificates should be propagated.

Configure root certificate cleanup specifies how root certificates are removed.

Root certificate propagation service


Root certificate propagation is responsible for the following smart card deployment
scenarios when public key infrastructure (PKI) trust has not yet been established:

Joining the domain

Accessing a network remotely

In both cases, the computer is not joined to a domain, and therefore, trust is not being
managed by Group Policy. However, the objective is to authenticate to a remote server,
such as the domain controller. Root certificate propagation provides the ability to use
the smart card to include the missing trust chain.

When the smart card is inserted, the certificate propagation service propagates any root
certificates on the card to the trusted smart card root computer certificate stores. This
process establishes a trust relationship with the enterprise resources. You may also use a
subsequent cleanup action when the user's smart card is removed from the reader, or
when the user signs out. This is configurable with Group Policy. For more information,
see Smart Card Group Policy and Registry Settings.

For more information about root certificate requirements, see Smart card root certificate
requirements for use with domain sign-in.

See also
How Smart Card Sign-in Works in Windows
Smart Card Removal Policy Service
Article • 12/09/2022 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic for the IT professional describes the role of the removal policy service
(ScPolicySvc) in smart card implementation.

The smart card removal policy service is applicable when a user has signed in with a
smart card and then removes that smart card from the reader. The action that is
performed when the smart card is removed is controlled by Group Policy settings. For
more information, see Smart Card Group Policy and Registry Settings.

Smart card removal policy service

The numbers in the previous figure represent the following actions:

1. Winlogon is not directly involved in monitoring for smart card removal events. The
sequence of steps that are involved when a smart card is removed begins with the
smart card credential provider in the sign-in UI process. When a user successfully
signs in with a smart card, the smart card credential provider captures the reader
name. This information is then stored in the registry with the session identifier
where the sign-in was initiated.

2. The smart card resource manager service notifies the smart card removal policy
service that a sign-in has occurred.

3. ScPolicySvc retrieves the smart card information that the smart card credential
provider stored in the registry. This call is redirected if the user is in a remote
session. If the smart card is removed, ScPolicySvc is notified.

4. ScPolicySvc calls Remote Desktop Services to take the appropriate action if the
request is to sign out the user or to disconnect the user's session, which might
result in data loss. If the setting is configured to lock the computer when the smart
card is removed, ScPolicySvc sends a message to Winlogon to lock the computer.

See also
How Smart Card Sign-in Works in Windows
Smart Card Tools and Settings
Article • 12/09/2022 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic for the IT professional and smart card developer links to information about
smart card debugging, settings, and events.

This section of the Smart Card Technical Reference contains information about the
following:

Smart Cards Debugging Information: Learn about tools and services in supported
versions of Windows to help identify certificate issues.

Smart Card Group Policy and Registry Settings: Learn about smart card-related
Group Policy settings and registry keys that can be set on a per-computer basis,
including how to edit and apply Group Policy settings to local or domain
computers.

Smart Card Events: Learn about events that can be used to manage smart cards in
an organization, including how to monitor installation, use, and errors.

See also
Smart Card Technical Reference
Smart Card Troubleshooting
Article • 02/17/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article explains tools and services that smart card developers can use to help
identify certificate issues with the smart card deployment.

Debugging and tracing smart card issues requires a variety of tools and approaches. The
following sections provide guidance about tools and approaches you can use.

Certutil

Debugging and tracing using Windows software trace preprocessor (WPP)

Kerberos protocol, Key Distribution Center (KDC), and NTLM debugging and
tracing

Smart Card service

Smart card readers

CryptoAPI 2.0 Diagnostics

Certutil
For a complete description of Certutil including examples that show how to use it, see
Certutil [W2012].

List certificates available on the smart card


To list certificates that are available on the smart card, type certutil -scinfo .

7 Note

Entering a PIN is not required for this operation. You can press ESC if you are
prompted for a PIN.

Delete certificates on the smart card


Each certificate is enclosed in a container. When you delete a certificate on the smart
card, you're deleting the container for the certificate.

To find the container value, type certutil -scinfo .

To delete a container, type certutil -delkey -csp "Microsoft Base Smart Card Crypto
Provider" "<ContainerValue>".

Debugging and tracing using WPP


WPP simplifies tracing the operation of the trace provider. It provides a mechanism for
the trace provider to log real-time binary messages. Logged messages can be converted
to a human-readable trace of the operation. For more information, see Diagnostics with
WPP - The NDIS blog.

Enable the trace


Using WPP, use one of the following commands to enable tracing:

tracelog.exe -kd -rt -start <FriendlyName> -guid #<GUID> -f .\


<LogFileName>.etl -flags <flags> -ft 1

logman start <FriendlyName> -ets -p {<GUID>} -<Flags> -ft 1 -rt -o .\


<LogFileName>.etl -mode 0x00080000

You can use the parameters in the following table.

Friendly name GUID Flags

scardsvr 13038e47-ffec-425d-bc69-5707708075fe 0xffff

winscard 3fce7c5f-fb3b-4bce-a9d8-55cc0ce1cf01 0xffff

basecsp 133a980d-035d-4e2d-b250-94577ad8fced 0x7

scksp 133a980d-035d-4e2d-b250-94577ad8fced 0x7

msclmd fb36caf4-582b-4604-8841-9263574c4f2c 0x7

credprov dba0e0e0-505a-4ab6-aa3f-22f6f743b480 0xffff

certprop 30eae751-411f-414c-988b-a8bfa8913f49 0xffff

scfilter eed7f3c9-62ba-400e-a001-658869df9a91 0xffff

wudfusbccid a3c09ba3-2f62-4be5-a50f-8278a646ac9d 0xffff


Examples

To enable tracing for the SCardSvr service:

tracelog.exe -kd -rt -start scardsvr -guid #13038e47-ffec-425d-bc69-


5707708075fe -f .\scardsvr.etl -flags 0xffff -ft 1

logman start scardsvr -ets -p {13038e47-ffec-425d-bc69-5707708075fe} 0xffff -


ft 1 -rt -o .\scardsvr.etl -mode 0x00080000

To enable tracing for scfilter.sys:

tracelog.exe -kd -rt -start scfilter -guid #eed7f3c9-62ba-400e-a001-


658869df9a91 -f .\scfilter.etl -flags 0xffff -ft 1

Stop the trace


Using WPP, use one of the following commands to stop the tracing:

tracelog.exe -stop <FriendlyName>

logman -stop <FriendlyName> -ets

Examples

To stop a trace:

tracelog.exe -stop scardsvr

logman -stop scardsvr -ets

Kerberos protocol, KDC, and NTLM debugging


and tracing
You can use these resources to troubleshoot these protocols and the KDC:

Kerberos and LDAP Troubleshooting Tips.

Windows Driver Kit (WDK) and Debugging Tools for Windows (WinDbg). You can
use the trace log tool in this SDK to debug Kerberos authentication failures.

To begin tracing, you can use Tracelog . Different components use different control
GUIDs as explained in these examples. For more information, see Tracelog.
NTLM
To enable tracing for NTLM authentication, run the following command on the
command line:

tracelog.exe -kd -rt -start ntlm -guid #5BBB6C18-AA45-49b1-A15F-


085F7ED0AA90 -f .\ntlm.etl -flags 0x15003 -ft 1

To stop tracing for NTLM authentication, run this command:

tracelog -stop ntlm

Kerberos authentication
To enable tracing for Kerberos authentication, run this command:

tracelog.exe -kd -rt -start kerb -guid #6B510852-3583-4e2d-AFFE-


A67F9F223438 -f .\kerb.etl -flags 0x43 -ft 1

To stop tracing for Kerberos authentication, run this command:

tracelog.exe -stop kerb

KDC
To enable tracing for the KDC, run the following command on the command line:

tracelog.exe -kd -rt -start kdc -guid #1BBA8B19-7F31-43c0-9643-6E911F79A06B -


f .\kdc.etl -flags 0x803 -ft 1

To stop tracing for the KDC, run the following command on the command line:

tracelog.exe -stop kdc

To stop tracing from a remote computer, run this command: logman.exe -s


<ComputerName>.

7 Note

The default location for logman.exe is %systemroot%system32\. Use the -s option


to supply a computer name.

Configure tracing with the registry


You can also configure tracing by editing the Kerberos registry values shown in the
following table.

Element Registry Key Setting

NTLM HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
Value name: NtLmInfoLevel
Value type: DWORD
Value data: c0015003

Kerberos HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos
Value name: LogToFile
Value type: DWORD
Value data: 00000001

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Value name: KerbDebugLevel
Value type: DWORD
Value data: c0000043

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Value name: LogToFile
Value type: DWORD
Value data: 00000001

KDC HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
Value name: KdcDebugLevel
Value type: DWORD
Value data: c0000803

If you used Tracelog , look for the following log file in your current directory:
kerb.etl/kdc.etl/ntlm.etl.

If you used the registry key settings shown in the previous table, look for the trace log
files in the following locations:

NTLM: %systemroot%\tracing\msv1_0

Kerberos: %systemroot%\tracing\kerberos

KDC: %systemroot%\tracing\kdcsvc

To decode event trace files, you can use Tracefmt (tracefmt.exe). Tracefmt is a
command-line tool that formats and displays trace messages from an event trace log
file (.etl) or a real-time trace session. Tracefmt can display the messages in the
Command Prompt window or save them in a text file. It is located in the \tools\tracing
subdirectory of the Windows Driver Kit (WDK). For more information, see Tracefmt.
Smart Card service
The smart card resource manager service runs in the context of a local service. It's
implemented as a shared service of the services host (svchost) process.

To check if Smart Card service is running

1. Press CTRL+ALT+DEL, and then select Start Task Manager.

2. In the Windows Task Manager dialog box, select the Services tab.

3. Select the Name column to sort the list alphabetically, and then type s.

4. In the Name column, look for SCardSvr, and then look under the Status column to
see if the service is running or stopped.

To restart Smart Card service

1. Run as administrator at the command prompt.

2. If the User Account Control dialog box appears, confirm that the action it displays
is what you want, and then select Yes.

3. At the command prompt, type net stop SCardSvr .

4. At the command prompt, type net start SCardSvr .

You can use the following command at the command prompt to check whether the
service is running: sc queryex scardsvr .

The following code sample is an example output from this command:

Console

SERVICE_NAME: scardsvr
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 1320
FLAGS :
C:\>

Smart card readers


As with any device connected to a computer, Device Manager can be used to view
properties and begin the debug process.

To check if smart card reader is working

1. Navigate to Computer.

2. Right-click Computer, and then select Properties.

3. Under Tasks, select Device Manager.

4. In Device Manager, expand Smart card readers, select the name of the smart card
reader you want to check, and then select Properties.

7 Note

If the smart card reader is not listed in Device Manager, in the Action menu, select
Scan for hardware changes.

CryptoAPI 2.0 Diagnostics


CryptoAPI 2.0 Diagnostics is available in Windows versions that support CryptoAPI 2.0
and can help you troubleshoot public key infrastructure (PKI) issues.

CryptoAPI 2.0 Diagnostics logs events in the Windows event log. The logs contain
detailed information about certificate chain validation, certificate store operations, and
signature verification. This information makes it easier to identify the causes of issues
and reduces the time required for diagnosis.

For more information about CryptoAPI 2.0 Diagnostics, see Troubleshooting an


Enterprise PKI.

See also
Smart Card Technical Reference
Smart Card Group Policy and Registry Settings
Article • 01/24/2023 •
Applies to: ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019, ✅ Windows Server 2016

This article for IT professionals and smart card developers describes the Group Policy settings, registry key settings, local
security policy settings, and credential delegation policy settings that are available for configuring smart cards.

The following sections and tables list the smart card-related Group Policy settings and registry keys that can be set on a
per-computer basis. If you use domain Group Policy Objects (GPOs), you can edit and apply Group Policy settings to local
or domain computers.

Primary Group Policy settings for smart cards

Allow certificates with no extended key usage certificate attribute

Allow ECC certificates to be used for logon and authentication

Allow Integrated Unblock screen to be displayed at the time of logon

Allow signature keys valid for Logon

Allow time invalid certificates

Allow user name hint

Configure root certificate clean up

Display string when smart card is blocked

Filter duplicate logon certificates

Force the reading of all certificates from the smart card

Notify user of successful smart card driver installation

Prevent plaintext PINs from being returned by Credential Manager

Reverse the subject name stored in a certificate when displaying

Turn on certificate propagation from smart card

Turn on root certificate propagation from smart card

Turn on Smart Card Plug and Play service

Base CSP and Smart Card KSP registry keys

CRL checking registry keys

Additional smart card Group Policy settings and registry keys

Primary Group Policy settings for smart cards


The following smart card Group Policy settings are in Computer Configuration\Administrative Templates\Windows
Components\Smart Card.

The registry keys are in the following locations:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\ScPnP\EnableScPnP

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\SmartCardCredentialProvider
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CertProp

7 Note

Smart card reader registry information is in


HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Calais\Readers.
Smart card registry information is in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Calais\SmartCards.

The following table lists the default values for these GPO settings. Variations are documented under the policy
descriptions in this article.

Server type or GPO Default value

Default Domain Policy Not configured

Default Domain Controller Policy Not configured

Stand-Alone Server Default Settings Not configured

Domain Controller Effective Default Settings Disabled

Member Server Effective Default Settings Disabled

Client Computer Effective Default Settings Disabled

Allow certificates with no extended key usage certificate attribute


You can use this policy setting to allow certificates without an extended key usage (EKU) set to be used for sign-in.

7 Note

extended key usage certificate attribute is also known as extended key usage.

In versions of Windows before Windows Vista, smart card certificates that are used to sign in require an EKU
extension with a smart card logon object identifier. This policy setting can be used to modify that restriction.

When this policy setting is turned on, certificates with the following attributes can also be used to sign in with a smart
card:

Certificates with no EKU

Certificates with an All Purpose EKU

Certificates with a Client Authentication EKU

When this policy setting isn't turned on, only certificates that contain the smart card logon object identifier can be used to
sign in with a smart card.

Item Description

Registry key AllowCertificatesWithNoEKU

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy management Restart requirement: None


Sign off requirement: None
Policy conflicts: None

Notes and resources


Allow ECC certificates to be used for logon and authentication
You can use this policy setting to control whether elliptic curve cryptography (ECC) certificates on a smart card can be
used to sign in to a domain.

When this setting is turned on, ECC certificates on a smart card can be used to sign in to a domain.

When this setting isn't turned on, ECC certificates on a smart card can't be used to sign in to a domain.

Item Description

Registry key EnumerateECCCerts

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy Restart requirement: None


management Sign off requirement: None
Policy conflicts: None

Notes and This policy setting only affects a user's ability to sign in to a domain. ECC certificates on a smart card that are used
resources for other applications, such as document signing, aren't affected by this policy setting.
If you use an ECDSA key to sign in, you must also have an associated ECDH key to permit sign in when you're not
connected to the network.

Allow Integrated Unblock screen to be displayed at the time of logon


You can use this policy setting to determine whether the integrated unblock feature is available in the sign-in user
interface (UI). The feature was introduced as a standard feature in the Credential Security Support Provider in Windows
Vista.

When this setting is turned on, the integrated unblock feature is available.

When this setting isn't turned on, the feature is not available.

Item Description

Registry key AllowIntegratedUnblock

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy Restart requirement: None


management Sign off requirement: None
Policy conflicts: None

Notes and To use the integrated unblock feature, the smart card must support it. Check with the hardware manufacturer to
resources verify that the smart card supports this feature.
You can create a custom message that the user sees when the smart card is blocked by configuring the policy
setting Display string when smart card is blocked.

Allow signature keys valid for Logon


You can use this policy setting to allow signature key–based certificates to be enumerated and available for sign-in.

When this setting is turned on, any certificates that are available on the smart card with a signature-only key are listed on
the sign-in screen.

When this setting isn't turned on, certificates available on the smart card with a signature-only key aren't listed on the
sign-in screen.
Item Description

Registry key AllowSignatureOnlyKeys

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy management Restart requirement: None


Sign off requirement: None
Policy conflicts: None

Notes and resources

Allow time invalid certificates


You can use this policy setting to permit certificates that are expired or not yet valid to be displayed for sign-in.

7 Note

Before Windows Vista, certificates were required to contain a valid time and to not expire. For a certificate to be used,
it must be accepted by the domain controller. This policy setting only controls which certificates are displayed on the
client computer.

When this setting is turned on, certificates are listed on the sign-in screen whether they have an invalid time, or their time
validity has expired.

When this policy setting isn't turned on, certificates that are expired or not yet valid aren't listed on the sign-in screen.

Item Description

Registry key AllowTimeInvalidCertificates

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy management Restart requirement: None


Sign off requirement: None
Policy conflicts: None

Notes and resources

Allow user name hint


You can use this policy setting to determine whether an optional field appears during sign-in and provides a subsequent
elevation process where users can enter their username or username and domain, which associates a certificate with the
user.

When this policy setting is turned on, users see an optional field where they can enter their username or username and
domain.

When this policy setting isn't turned on, users don't see this optional field.

Item Description

Registry key X509HintsNeeded

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy management Restart requirement: None


Sign off requirement: None
Item Description

Policy conflicts: None

Notes and resources

Configure root certificate clean-up


You can use this policy setting to manage the cleanup behavior of root certificates. Certificates are verified by using a trust
chain, and the trust anchor for the digital certificate is the Root Certification Authority (CA). A CA can issue multiple
certificates with the root certificate as the top certificate of the tree structure. A private key is used to sign other
certificates. This creates an inherited trustworthiness for all certificates immediately under the root certificate.

When this policy setting is turned on, you can set the following cleanup options:

No cleanup. When the user signs out or removes the smart card, the root certificates used during their session
persist on the computer.

Clean up certificates on smart card removal. When the smart card is removed, the root certificates are removed.

Clean up certificates on log off. When the user signs out of Windows, the root certificates are removed.

When this policy setting isn't turned on, root certificates are automatically removed when the user signs out of Windows.

Item Description

Registry key RootCertificateCleanupOption

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy management Restart requirement: None


Sign off requirement: None
Policy conflicts: None

Notes and resources

Display string when smart card is blocked


You can use this policy setting to change the default message that a user sees if their smart card is blocked.

When this policy setting is turned on, you can create and manage the displayed message that the user sees when a smart
card is blocked.

When this policy setting isn't turned on (and the integrated unblock feature is also enabled), the user sees the system's
default message when the smart card is blocked.

Item Description

Registry key IntegratedUnblockPromptString

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy Restart requirement: None


management Sign off requirement: None
Policy conflicts: This policy setting is only effective when the Allow Integrated Unblock screen to be displayed at the
time of logon policy is enabled.

Notes and
resources
Filter duplicate logon certificates
You can use this policy setting to configure which valid sign-in certificates are displayed.

7 Note

During the certificate renewal period, a user's smart card can have multiple valid sign-in certificates issued from the
same certificate template, which can cause confusion about which certificate to select. This behavior can occur when
a certificate is renewed and the old certificate has not expired yet.

If two certificates are issued from the same template with the same major version and they are for the same user (this
is determined by their UPN), they are determined to be the same.

When this policy setting is turned on, filtering occurs so that the user can select from only the most current valid
certificates.

If this policy setting isn't turned on, all the certificates are displayed to the user.

This policy setting is applied to the computer after the Allow time invalid certificates policy setting is applied.

Item Description

Registry key FilterDuplicateCerts

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy Restart requirement: None


management Sign off requirement: None
Policy conflicts: None

Notes and If there are two or more of the same certificates on a smart card and this policy setting is enabled, the certificate that
resources is used to sign in to computers running Windows 2000, Windows XP, or Windows Server 2003 will be displayed.
Otherwise, the certificate with the most distant expiration time will be displayed.

Force the reading of all certificates from the smart card


You can use this policy setting to manage how Windows reads all certificates from the smart card for sign-in. During sign-
in, Windows reads only the default certificate from the smart card unless it supports retrieval of all certificates in a single
call. This policy setting forces Windows to read all the certificates from the smart card.

When this policy setting is turned on, Windows attempts to read all certificates from the smart card, regardless of the CSP
feature set.

When this policy isn't turned on, Windows attempts to read only the default certificate from smart cards that don't
support retrieval of all certificates in a single call. Certificates other than the default aren't available for sign-in.

Item Description

Registry key ForceReadingAllCertificates

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy management Restart requirement: None


Sign off requirement: None
Policy conflicts: None

Important: Enabling this policy setting can adversely impact performance during the sign-in process in certain
situations.
Item Description

Notes and Contact the smart card vendor to determine if your smart card and associated CSP support the required behavior.
resources

Notify user of successful smart card driver installation


You can use this policy setting to control whether the user sees a confirmation message when a smart card device driver is
installed.

When this policy setting is turned on, the user sees a confirmation message when a smart card device driver is installed.

When this setting isn't turned on, the user doesn't see a smart card device driver installation message.

Item Description

Registry key ScPnPNotification

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy Restart requirement: None


management Sign off requirement: None
Policy conflicts: None

Notes and This policy setting applies only to smart card drivers that have passed the Windows Hardware Quality Labs
resources (WHQL) testing process.

Prevent plaintext PINs from being returned by Credential Manager


You can use this policy setting to prevent Credential Manager from returning plaintext PINs.

7 Note

Credential Manager is controlled by the user on the local computer, and it stores credentials from supported
browsers and Windows applications. Credentials are saved in special encrypted folders on the computer under the
user's profile.

When this policy setting is turned on, Credential Manager doesn't return a plaintext PIN.

When this setting isn't turned on, Credential Manager can return plaintext PINs.

Item Description

Registry key DisallowPlaintextPin

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy Restart requirement: None


management Sign off requirement: None
Policy conflicts: None

Notes and If this policy setting is enabled, some smart cards might not work in computers running Windows. Consult the smart
resources card manufacturer to determine whether this policy setting should be enabled.

Reverse the subject name stored in a certificate when displaying


You can use this policy setting to control the way the subject name appears during sign-in.
7 Note

To help users distinguish one certificate from another, the user principal name (UPN) and the common name are
displayed by default. For example, when this setting is enabled, if the certificate subject is CN=User1, OU=Users,
DN=example, DN=com and the UPN is user1@example.com, "User1" is displayed with "user1@example.com." If the
UPN is not present, the entire subject name is displayed. This setting controls the appearance of that subject name,
and it might need to be adjusted for your organization.

When this policy setting is turned on, the subject name during sign-in appears reversed from the way that it's stored in
the certificate.

When this policy setting isn't turned on, the subject name appears the same as it's stored in the certificate.

Item Description

Registry key ReverseSubject

Default values No changes per operating system versions


Disabled and not configured are equivalent

Policy management Restart requirement: None


Sign off requirement: None
Policy conflicts: None

Notes and resources

Turn on certificate propagation from smart card


You can use this policy setting to manage the certificate propagation that occurs when a smart card is inserted.

7 Note

The certificate propagation service applies when a signed-in user inserts a smart card in a reader that is attached to
the computer. This action causes the certificate to be read from the smart card. The certificates are then added to the
user's Personal store.

When this policy setting is turned on, certificate propagation occurs when the user inserts the smart card.

When this policy setting is turned off, certificate propagation doesn't occur, and the certificates aren't available to
applications, like Outlook.

Item Description

Registry key CertPropEnabled

Default values No changes per operating system versions


Enabled and not configured are equivalent

Policy Restart requirement: None


management Sign off requirement: None
Policy conflicts: This policy setting must be enabled to allow the Turn on root certificate propagation from smart
card setting to work when it is enabled.

Notes and
resources

Turn on root certificate propagation from smart card


You can use this policy setting to manage the root certificate propagation that occurs when a smart card is inserted.
7 Note

The certificate propagation service applies when a signed-in user inserts a smart card in a reader that is attached to
the computer. This action causes the certificate to be read from the smart card. The certificates are then added to the
user's Personal store.

When this policy setting is turned on, root certificate propagation occurs when the user inserts the smart card.

When this policy setting isn't turned on, root certificate propagation doesn't occur when the user inserts the smart card.

Item Description

Registry key EnableRootCertificate Propagation

Default values No changes per operating system versions


Enabled and not configured are equivalent

Policy Restart requirement: None


management Sign off requirement: None
Policy conflicts: For this policy setting to work, the Turn on certificate propagation from smart card policy setting
must also be enabled.

Notes and
resources

Turn on Smart Card Plug and Play service


You can use this policy setting to control whether Smart Card Plug and Play is enabled.

7 Note

Your users can use smart cards from vendors who have published their drivers through Windows Update without
needing special middleware. These drivers will be downloaded in the same way as drivers for other devices in
Windows. If an appropriate driver isn't available from Windows Update, a PIV-compliant mini driver that's included
with any of the supported versions of Windows is used for these cards.

When this policy setting is turned on, the system attempts to install a smart card device driver the first time a smart card is
inserted in a smart card reader.

When this policy setting isn't turned on, a device driver isn't installed when a smart card is inserted in a smart card reader.

Item Description

Registry key EnableScPnP

Default values No changes per operating system versions


Enabled and not configured are equivalent

Policy Restart requirement: None


management Sign off requirement: None
Policy conflicts: None

Notes and This policy setting applies only to smart card drivers that have passed the Windows Hardware Quality Labs
resources (WHQL) testing process.

Base CSP and Smart Card KSP registry keys


The following registry keys can be configured for the base cryptography service provider (CSP) and the smart card key
storage provider (KSP). The following tables list the keys. All keys use the DWORD type.
The registry keys for the Base CSP are in the registry in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\Microsoft Base Smart Card Crypto
Provider.

The registry keys for the smart card KSP are in


HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Cryptography\Providers\Microsoft Smart Card Key Storage
Provider.

Registry keys for the base CSP and smart card KSP

Registry Key Description

AllowPrivateExchangeKeyImport A non-zero value allows RSA exchange (for example, encryption) private keys to be imported for use
in key archival scenarios.
Default value: 00000000

AllowPrivateSignatureKeyImport A non-zero value allows RSA signature private keys to be imported for use in key archival scenarios.
Default value: 00000000

DefaultPrivateKeyLenBits Defines the default length for private keys, if desired.


Default value: 00000400
Default key generation parameter: 1024-bit keys

RequireOnCardPrivateKeyGen This key sets the flag that requires on-card private key generation (default). If this value is set, a key
generated on a host can be imported into the smart card. This is used for smart cards that don't
support on-card key generation or where key escrow is required.
Default value: 00000000

TransactionTimeoutMilliseconds Default timeout values allow you to specify whether transactions that take an excessive amount of
time will fail.
Default value: 000005dc
The default timeout for holding transactions to the smart card is 1.5 seconds.

Additional registry keys for the smart card KSP

Registry Key Description

AllowPrivateECDHEKeyImport This value allows Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) private keys to be imported for use
in key archival scenarios.
Default value: 00000000

AllowPrivateECDSAKeyImport This value allows Elliptic Curve Digital Signature Algorithm (ECDSA) private keys to be imported for use
in key archival scenarios.
Default value: 00000000

CRL checking registry keys


The following table lists the keys and the corresponding values to turn off certificate revocation list (CRL) checking at the
Key Distribution Center (KDC) or client. To manage CRL checking, you must configure settings for both the KDC and the
client.

CRL checking registry keys

Registry Key Details

HKEY_LOCAL_MACHINE\SYSTEM\CCS\Services\Kdc\UseCachedCRLOnlyAndIgnoreRevocationUnknownErrors Type =
DWORD
Value =
1

HKEY_LOCAL_MACHINE\SYSTEM\CCS\Control\LSA\Kerberos\Parameters\UseCachedCRLOnlyAndIgnoreRevocationUnknownErrors Type =
DWORD
Registry Key Details

Value =
1

Additional smart card Group Policy settings and registry keys


In a smart card deployment, additional Group Policy settings can be used to enhance ease-of-use or security. Two of these
policy settings that can complement a smart card deployment are:

Turning off delegation for computers

Interactive logon: Do not require CTRL+ALT+DEL (not recommended)

The following smart card-related Group Policy settings are in Computer Configuration\Windows Settings\Security
Settings\Local Policies\Security Options.

Local security policy settings

Group Policy setting Default Description


and registry key

Interactive logon: Disabled This security policy setting requires users to sign in to a computer by using a smart
Require smart card card.

scforceoption Enabled Users can sign in to the computer only by using a smart card.
Disabled Users can sign in to the computer by using any method.

Interactive logon: This policy setting isn't This setting determines what happens when the smart card for a signed-in user is
Smart card removal defined, which means removed from the smart card reader. The options are:
behavior that the system treats No Action
it as No Action. Lock Workstation: The workstation is locked when the smart card is removed, so
scremoveoption users can leave the area, take their smart card with them, and still maintain a
protected session.
Force Logoff: The user is automatically signed out when the smart card is removed.
Disconnect if a Remote Desktop Services session: Removal of the smart card
disconnects the session without signing out the user. The user can reinsert the smart
card and resume the session later, or at another computer that's equipped with a
smart card reader, without having to sign in again. If the session is local, this policy
setting functions identically to the Lock Workstation option.

Note: In earlier versions of Windows Server, Remote Desktop Services was called
Terminal Services.

From the Local Security Policy Editor (secpol.msc), you can edit and apply system policies to manage credential delegation
for local or domain computers.

The following smart card-related Group Policy settings are in Computer Configuration\Administrative
Templates\System\Credentials Delegation.

Registry keys are in HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa\Credssp\PolicyDefaults.

7 Note

In the following table, fresh credentials are those that you are prompted for when running an application.

Credential delegation policy settings

Group Policy setting and registry key Default Description

Allow Delegating Fresh Credentials Not This policy setting applies:


configured When server authentication was achieved through a trusted X509
AllowFreshCredentials
Group Policy setting and registry key Default certificate
Description or Kerberos protocol.
To applications that use the CredSSP component (for example, Remote
Desktop Services).

Enabled: You can specify the servers where the user's fresh credentials can
be delegated.
Not configured: After proper mutual authentication, delegation of fresh
credentials is permitted to Remote Desktop Services running on any
computer.
Disabled: Delegation of fresh credentials to any computer isn't permitted.

Note: This policy setting can be set to one or more service principal names
(SPNs). The SPN represents the target server where the user credentials
can be delegated. A single wildcard character is permitted when specifying
the SPN, for example:
Use *TERMSRV/** for Remote Desktop Session Host (RD Session Host)
running on any computer.
Use TERMSRV/host.humanresources.fabrikam.com for RD Session Host
running on the host.humanresources.fabrikam.com computer.
Use TERMSRV/*.humanresources.fabrikam.com for RD Session Host running
on all computers in .humanresources.fabrikam.com

Allow Delegating Fresh Credentials with Not This policy setting applies:
NTLM-only Server Authentication configured When server authentication was achieved by using NTLM.
To applications that use the CredSSP component (for example, Remote
AllowFreshCredentialsWhenNTLMOnly Desktop).

Enabled: You can specify the servers where the user's fresh credentials can
be delegated.
Not configured: After proper mutual authentication, delegation of fresh
credentials is permitted to RD Session Host running on any computer
(TERMSRV/*).
Disabled: Delegation of fresh credentials isn't permitted to any computer.

Note: This policy setting can be set to one or more SPNs. The SPN
represents the target server where the user credentials can be delegated. A
single wildcard character (*) is permitted when specifying the SPN.
See the Allow Delegating Fresh Credentials policy setting description for
examples.

Deny Delegating Fresh Credentials Not This policy setting applies to applications that use the CredSSP component
configured (for example, Remote Desktop).
DenyFreshCredentials
Enabled: You can specify the servers where the user's fresh credentials
can't be delegated.
Disabled or Not configured: A server is not specified.

Note: This policy setting can be set to one or more SPNs. The SPN
represents the target server where the user credentials can't be delegated.
A single wildcard character (*) is permitted when specifying the SPN.
For examples, see the "Allow delegating fresh credentials" policy setting.

If you're using Remote Desktop Services with smart card logon, you can't delegate default and saved credentials. The
registry keys in the following table, which are at
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa\Credssp\PolicyDefaults, and the corresponding Group
Policy settings are ignored.

Registry key Corresponding Group Policy setting

AllowDefaultCredentials Allow Delegating Default Credentials

AllowDefaultCredentialsWhenNTLMOnly Allow Delegating Default Credentials with NTLM-only Server Authentication

AllowSavedCredentials Allow Delegating Saved Credentials


Registry key Corresponding Group Policy setting

AllowSavedCredentialsWhenNTLMOnly Allow Delegating Saved Credentials with NTLM-only Server Authentication

See also
Smart Card Technical Reference
Smart card events
Article • 06/02/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article describes the events related to smart card deployment and development.

Many events can be used to monitor smart card activities on a device, including
installation, use, and errors. The next sections describe the events and information that
you can use to manage smart cards in an organization.

Smart card reader name


The Smart Card Resource Manager doesn't use the device name from Device Manager to
describe a smart card reader. Instead, the name is constructed from three device
attributes that are queried directly from the smart card reader driver.

The following three attributes are used to construct the smart card reader name:

Vendor name
Interface device type
Device unit

The smart card reader device name is constructed in the form <VendorName><Type>
<DeviceUnit> . For example Contoso Smart Card Reader 0 is constructed from the
following information:

Vendor name: Contoso


Interface device type: Smart Card Reader
Device unit: 0

Smart card warning events

7 Note

IOCTL in the following table refers to input and output control.

Event Warning Message Description


ID
Event Warning Message Description
ID

620 Smart Card Resource Manager This occurs if the Resource Manager attempts to
was unable to cancel IOCTL %3 cancel a command to the smart card reader when the
for reader '%2': %1. The reader smart card service is shutting down or after a smart
may no longer be responding. If card is removed from the smart card reader and the
this error persists, your smart command couldn't be canceled. This can leave the
card or reader may not be smart card reader in an unusable state until it's
functioning correctly. removed from the computer or the computer is
%n%nCommand Header: %4 restarted.

%1 = Windows error code


%2 = Smart card reader name
%3 = IOCTL being canceled
%4 = First 4 bytes of the command that was sent to
the smart card

619 Smart Card Reader '%2' hasn't This occurs when a reader hasn't responded to an
responded to IOCTL %3 in %1 IOCTL after an unusually long period of time.
seconds. If this error persists, Currently, this error is sent after a reader doesn't
your smart card or reader may respond for 150 seconds. This can leave the smart
not be functioning correctly. card reader in an unusable state until it's removed
%n%nCommand Header: %4 from the computer or the computer is restarted.

%1 = Number of seconds the IOCTL has been waiting


%2 = Smart card reader name
%3 = IOCTL sent
%4 = First 4 bytes of the command that was sent to
the smart card

Smart card error events


Event Error Message Description
ID

202 Failed to initialize Server An error occurred, and the service can't initialize properly.
Application Restarting the computer may resolve the issue.

203 Server Control has no Internal, unrecoverable error that indicates a failure in the
memory for reader smart card service. The most common cause is limited
reference object. computer resources. Restarting the computer may resolve
the issue.
Event Error Message Description
ID

204 Server Control failed to Internal, unrecoverable error that indicates a failure in the
create shutdown event: %1 smart card service. The most common cause is limited
computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code

205 Reader object has duplicate There are two smart card readers that have the same name.
name: %1 Remove the smart card reader that is causing this error
message.
%1 = Name of the smart card reader that is duplicated

206 Failed to create global Internal, unrecoverable error that indicates a failure in the
reader change event. smart card service. The most common cause is limited
computer resources. Restarting the computer may resolve
the issue.

401 Reader shutdown A smart card reader couldn't eject a smart card while the
exception from eject smart smart card reader was shutting down.
card command

406 Reader object can't Identify A smart card reader didn't properly respond to a request
Device for information about the device, which is required for
constructing the smart card reader name. The smart card
reader won't be recognized by the service until it's
removed from the computer and reinserted or until the
computer is restarted.

502 Initialization of Service Internal, unrecoverable error that indicates a failure in the
Status Critical Section failed smart card service. The most common cause is limited
computer resources. Restarting the computer may resolve
the issue.

504 Resource Manager can't Internal, unrecoverable error that indicates a failure in the
create shutdown event flag: smart card service. The most common cause is limited
%1 computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code

506 Smart Card Resource Internal, unrecoverable error that indicates a failure in the
Manager failed to register smart card service. The most common cause is limited
service: %1 computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code
Event Error Message Description
ID

506 Smart Card Resource An attempt to add a Plug and Play reader failed. The device
Manager received may already be in use or may be defective. To resolve this
unexpected exception from error message, try to add the device again or restart the
PnP event %1 computer.
%1 = The affected handle name

507 No memory available for There isn't enough system memory available. This prevents
Service Status Critical the service from managing the status. Restarting the
Section computer may resolve the issue.

508 Smart Card Resource An attempt to add a Plug and Play reader failed. The device
Manager received may already be in use or may be defective. To resolve this
unexpected exception from error message, try to add the device again or restart the
PnP event %1 computer.
%1 = The affected handle name

509 Smart Card Resource An attempt to add a Plug and Play reader failed. The device
Manager received may already be in use or may be defective. To resolve this
unexpected exception from error message, try to add the device again or restart the
PnP event %1 computer.
%1 = The affected handle name

510 Smart Card Resource An attempt to add a Plug and Play smart card reader failed.
Manager received NULL The device may already be in use or may be defective. To
handle from PnP event %1 resolve this error message, try to add the device again or
restart the computer.
%1 = The affected handle name

511 Smart Card Resource An attempt to add a Plug and Play reader failed. The device
Manager received may already be in use or may be defective. To resolve this
unexpected exception from error message, try to add the device again or restart the
PnP event %1 computer.
%1 = The affected handle name

512 Smart Card Resource An attempt to add a Plug and Play smart card reader failed.
Manager received NULL The device may already be in use or may be defective. To
handle from PnP event %1 resolve this error message, try to add the device again or
restart the computer.
%1 = The affected handle name

513 Smart Card Resource An attempt to add a Plug and Play reader failed. The device
Manager received may already be in use or may be defective. To resolve this
unexpected exception from error message, try to add the device again or restart the
PnP event %1 computer.
%1 = The affected handle name
Event Error Message Description
ID

514 Smart Card Resource Internal, unrecoverable error that indicates a failure in the
Manager failed to add smart card service. The most common cause is limited
reader %2: %1 computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code
%2 = Smart card reader name

515 Smart Card Resource Internal, unrecoverable error that indicates a failure in the
Manager failed to declare smart card service. The smart card service may not operate
state: %1 properly. Restarting the service or computer may resolve
this issue.
%1 = Windows error code

516 Smart Card Resource Internal, unrecoverable error that indicates a failure in the
Manager Failed to declare smart card service. The smart card service may not be able
shutdown: %1 to stop. Restarting the computer may resolve this issue.
%1 = Windows error code

517 Smart Card Resource Internal, unrecoverable error that indicates a failure in the
Manager received smart card service. The most common cause is limited
unexpected exception computer resources. Restarting the computer may resolve
attempting to add reader the issue.
%1 %1 = Smart card reader name

521 Smart Card Resource An attempt to add a Plug and Play smart card reader failed.
Manager received NULL The device may already be in use or may be defective. To
handle from PnP event %1 resolve this error message, try to add the device again or
restart the computer.
%1 = The affected handle name

523 Smart Card Resource An attempt to add a Plug and Play smart card reader failed.
Manager received NULL The device may already be in use or may be defective. To
handle from PnP event %1 resolve this error message, try to add the device again or
restart the computer.
%1 = The affected handle name

602 WDM Reader driver The service can't open a communication channel with the
initialization can't open smart card reader. You can't use the smart card reader until
reader device: %1 the issue is resolved.
%1 = Windows error code

603 WDM Reader driver There isn't enough system memory available. This prevents
initialization has no the service from managing the smart card reader that was
memory available to added. Restarting the computer may resolve the issue.
control device %1 %1 = Name of affected reader
Event Error Message Description
ID

604 Server control can't set Internal, unrecoverable error that indicates a failure in the
reader removal event: %1 smart card service. The most common cause is limited
computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code

605 Reader object failed to Internal, unrecoverable error that indicates a failure in the
create overlapped event: smart card service. The most common cause is limited
%1 computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code

606 Reader object failed to Internal, unrecoverable error that indicates a failure in the
create removal event: %1 smart card service. The most common cause is limited
computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code

607 Reader object failed to start Internal, unrecoverable error that indicates a failure in the
monitor thread: %1 smart card service. The most common cause is limited
computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code

608 Reader monitor failed to Internal, unrecoverable error that indicates a failure in the
create power down timer: smart card service. The most common cause is limited
%1 computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code

609 Reader monitor failed to Internal, unrecoverable error that indicates a failure in the
create overlapped event: smart card service. The most common cause is limited
%1 computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code
Event Error Message Description
ID

610 Smart Card Reader '%2' The reader can't successfully transmit the indicated IOCTL
rejected IOCTL %3: %1 If to the smart card. This can indicate hardware failure, but
this error persists, your this error can also occur if a smart card or smart card
smart card or reader may reader is removed from the system while an operation is in
not be functioning progress.
correctly.%n%nCommand %1 = Windows error code
Header: %4 %2 = Name of the smart card reader
%3 = IOCTL that was sent
%4 = First 4 bytes of the command sent to the smart card
These events are caused by legacy functionality in the
smart card stack. It can be ignored if there's no noticeable
failure in the smart card usage scenarios. You might also
see this error if your eSIM is recognized as a smartcard
controller.

611 Smart Card Reader Internal, unrecoverable error that indicates a failure in the
initialization failed smart card service. The most common cause is limited
computer resources. Restarting the computer may resolve
this issue.

612 Reader insertion monitor This occurs when a smart card reader fails several times to
error retry threshold respond properly to the IOCTL, which indicates whether a
reached: %1 smart card is present in the reader. The smart card reader is
marked as defective, and it isn't recognized by the service
until it's removed from the computer and reinserted or
until the computer is restarted.
%1 = Windows error code

615 Reader removal monitor This occurs when a smart card reader fails several times to
error retry threshold respond properly to the IOCTL, which indicates whether a
reached: %1 smart card is present in the reader. The smart card reader is
marked as defective, and it isn't recognized by the service
until it's removed from the computer and reinserted or
until the computer is restarted.
%1 = Windows error code

616 Reader monitor '%2' This occurs when a smart card reader fails several times to
received uncaught error respond properly to the IOCTL, which indicates whether a
code: %1 smart card is present in the reader. The smart card reader is
marked as defective, and it isn't recognized by the service
until it's removed from the computer and reinserted or
until the computer is restarted.
%1 = Windows error code
%2 = Reader name
Event Error Message Description
ID

617 Reader monitor '%1' An unknown error occurred while monitoring a smart card
exception -- exiting thread reader for smart card insertions and removals. The smart
card reader is marked as defective, and it isn't recognized
by the service until it's removed from the computer and
reinserted or until the computer is restarted.
%1 = Smart card reader name

618 Smart Card Resource Internal, unrecoverable error that indicates a failure in the
Manager encountered an smart card service. The most common cause is limited
unrecoverable internal computer resources. Restarting the computer may resolve
error. the issue.

621 Server Control failed to Internal, unrecoverable error that indicates a failure in the
access start event: %1 smart card service. The most common cause is limited
computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code
These events are caused by legacy functionality in the
smart card stack. It can be ignored if there's no noticeable
failure in the smart card usage scenarios.

622 Server Control failed to Internal, unrecoverable error that indicates a failure in the
access stop event: %1 smart card service. The most common cause is limited
computer resources. Restarting the computer may resolve
the issue.
%1 = Windows error code

Smart card Plug and Play events


Event Event type Event Message Description
ID

1000 Error Couldn't get device ID Smart card Plug and Play couldn't obtain the
for smart card in reader device ID for the smart card. This information is
%1. The return code is required to determine the correct driver. The
%2. smart card may be defective.
%1 = Smart card reader name
%2 = Windows error code

1001 Information Software successfully Smart card Plug and Play successfully installed a
installed for smart card minidriver for the inserted card.
in reader %1. The smart %1 = Smart card reader name
card name is %2. %2 = Name of new smart card device
See also
Smart Card Technical Reference
Virtual Smart Card Overview
Article • 02/27/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

This article provides an overview of the virtual smart card technology.

Feature description
Virtual smart card technology offers comparable security benefits to physical smart
cards by using two-factor authentication. Virtual smart cards emulate the functionality of
physical smart cards, but they use the Trusted Platform Module (TPM) chip that is
available on devices. Virtual smart cards don't require the use of a separate physical
smart card and reader. You create virtual smart cards in the TPM, where the keys used
for authentication are stored in cryptographically-secured hardware.

By utilizing TPM devices that provide the same cryptographic capabilities as physical
smart cards, virtual smart cards accomplish the three key properties that are desired for
smart cards: non-exportability, isolated cryptography, and anti-hammering.

Practical applications
Virtual smart cards are functionally similar to physical smart cards, appearing in
Windows as smart cards that are always-inserted. Virtual smart cards can be used for
authentication to external resources, protection of data by encryption, and integrity
through signing. You can deploy virtual smart cards by using in-house methods or a
purchased solution, and they can be a replacement for other methods of strong
authentication in a corporate setting of any scale.
Authentication use cases
Two-factor authentication‒based remote access

After a user has a fully functional TPM virtual smart card, provisioned with a sign-in
certificate, the certificate is used to gain authenticated access to corporate resources.
When the proper certificate is provisioned to the virtual card, the user need only provide
the PIN for the virtual smart card, as if it was a physical smart card, to sign in to the
domain.

In practice, this is as easy as entering a password to access the system. Technically, it's
far more secure. Using the virtual smart card to access the system proves to the domain
that the user who is requesting authentication has possession of the personal computer
upon which the card has been provisioned and knows the virtual smart card PIN.
Because this request couldn't have possibly originated from a system other than the
system certified by the domain for this user's access, and the user couldn't have initiated
the request without knowing the PIN, a strong two-factor authentication is established.

Client authentication

Virtual smart cards can also be used for client authentication by using TLS/SSL or a
similar technology. Similar to domain access with a virtual smart card, an authentication
certificate can be provisioned for the virtual smart card, provided to a remote service, as
requested in the client authentication process. This adheres to the principles of two-
factor authentication because the certificate is only accessible from the computer that
hosts the virtual smart card, and the user is required to enter the PIN for initial access to
the card.

Virtual smart card redirection for remote desktop connections

The concept of two-factor authentication associated with virtual smart cards relies on
the proximity of users to the devices that they use to access domain. When you connect
to a device that is hosting virtual smart cards, you can't use the virtual smart cards
located on the remote device during the remote session. However, you can access the
virtual smart cards on the connecting device (which is under your physical control),
which are loaded onto the remote device. You can use the virtual smart cards as if they
were installed by using the remote devices' TPM, extending your privileges to the
remote device, while maintaining the principles of two-factor authentication.

Confidentiality use cases


S/MIME email encryption
Physical smart cards are designed to hold private keys. You can use the private keys for
email encryption and decryption. The same functionality exists in virtual smart cards. By
using S/MIME with a user's public key to encrypt email, the sender of an email is assured
that only the person with the corresponding private key can decrypt the email. This
assurance is a result of the non-exportability of the private key. It never exists within
reach of malicious software, and it remains protected by the TPM—even during
decryption.

BitLocker for data volumes

BitLocker Drive Encryption technology makes use of symmetric-key encryption to


protect the content of a user's hard drive. BitLocker ensures that if the physical
ownership of a hard drive is compromised, an adversary won't be able to read data off
the drive. The key used to encrypt the drive can be stored in a virtual smart card, which
necessitates knowledge of the virtual smart card PIN to access the drive, and possession
of the device that is hosting the TPM virtual smart card. If the drive is obtained without
access to the TPM that hosts the virtual smart card, any brute force attack will be
difficult.

You can use BitLocker to encrypt portable drives, storing keys in virtual smart cards. In
this scenario, unlike using BitLocker with a physical smart card, the encrypted drive can
be used only when it's connected to device for the virtual smart card that is used to
encrypt the drive, because the BitLocker key is only accessible from the device. This
method can be useful to ensure the security of backup drives and personal storage uses
outside the main hard drive, too.

Data integrity use case


Signing data

To verify authorship of data, a user can sign it by using a private key stored in the virtual
smart card. Digital signatures confirm the integrity and origin of the data.

Storing the key in an operating system that is accessible, malicious users could
access it and use it to modify already signed data or to spoof the key owner's
identity
Storing the key in a virtual smart card, means that you can only use it to sign data
on the host device. You can't export the key to other systems (intentionally or
unintentionally, such as with malware theft), making digital signatures more secure
than other methods for private key storage

Hardware requirements
To use the virtual smart card technology, TPM 1.2 is the minimum required for devices
running a supported operating system.
Understand and Evaluate Virtual Smart
Cards
Article • 02/27/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

This article describes the virtual smart card technology and how it can fit into your
authentication design.

Virtual smart card technology uses cryptographic keys that are stored on computers that
have the Trusted Platform Module (TPM) installed. Virtual smart cards offer comparable
security benefits to conventional smart cards by using two-factor authentication. The
technology also offers more convenience for users and has a lower cost to deploy. By
utilizing TPM devices that provide the same cryptographic capabilities as conventional
smart cards, virtual smart cards accomplish the three key properties that are desired for
smart cards: non-exportability, isolated cryptography, and anti-hammering.

Virtual smart cards are functionally similar to physical smart cards. They appear as
always-inserted smart cards, and they can be used for authentication to external
resources, protection of data by secure encryption, and integrity through reliable
signing. Because TPM-enabled hardware is readily available and virtual smart cards can
be easily deployed by using existing certificate enrollment methods, virtual smart cards
can become a full replacement for other methods of strong authentication in a
corporate setting of any scale.

This topic contains the following sections:

Comparing virtual smart cards with physical smart cards: Compares properties,
functional aspects, security, and cost.
Authentication design options: Describes how passwords, smart cards, and virtual
smart cards can be used to reach authentication goals in your organization.

Comparing virtual smart cards with physical


smart cards
Virtual smart cards function much like physical smart cards, but they differ in that they
protect private keys by using the TPM of the computer instead of smart card media.

A virtual smart card appears to applications as a conventional smart card. Private keys in
the virtual smart card are protected, not by isolation of physical memory, but by the
cryptographic capabilities of the TPM. All sensitive information is encrypted by using the
TPM and then stored on the hard drive in its encrypted form.

All cryptographic operations occur in the secure, isolated environment of the TPM, and
the unencrypted private keys are never used outside this environment. So like physical
smart cards, virtual smart cards remain secure from any malware on the host.
Additionally, if the hard drive is compromised in some way, a malicious user won't be
able to access keys that are stored in the virtual smart card because they're securely
encrypted by using the TPM. Keys can also be protected by BitLocker Drive Encryption.

Virtual smart cards maintain the three key properties of physical smart cards:

Non-exportability: Because all private information on the virtual smart card is


encrypted by using the TPM on the host computer, it can't be used on a different
computer with a different TPM. Additionally, TPMs are designed to be tamper-
resistant and non-exportable, so a malicious user can't reverse engineer an
identical TPM or install the same TPM on a different computer. For more
information, see Evaluate Virtual Smart Card Security.

Isolated cryptography: TPMs provide the same properties of isolated


cryptography that are offered by physical smart cards, and this is utilized by virtual
smart cards. Unencrypted copies of private keys are loaded only within the TPM
and never into memory that is accessible by the operating system. All
cryptographic operations with these private keys occur inside the TPM.

Anti-hammering: If a user enters a PIN incorrectly, the virtual smart card responds
by using the anti-hammering logic of the TPM, which rejects further attempts for a
period of time instead of blocking the card. This is also known as lockout. For more
information, see Evaluate Virtual Smart Card Security.
The following subsections compare the functionality, security, and cost of virtual smart
cards and physical smart cards.

Functionality

The virtual smart card system that was designed by Microsoft closely mimics the
functionality of conventional smart cards. The most striking difference to the end user is
that the virtual smart card is essentially a smart card that is always inserted into the
computer. There's no method to export the user's virtual smart card for use on other
computers, which adds to the security of virtual smart cards. If a user requires access to
network resources on multiple computers, multiple virtual smart cards can be issued for
that user. Additionally, a computer that is shared among multiple users can host
multiple virtual smart cards for different users.

The basic user experience for a virtual smart card is as simple as using a password to
access a network. Because the smart card is loaded by default, the user must simply
enter the PIN that is tied to the card to gain access. Users are no longer required to
carry cards and readers or to take physical action to use the card.

Additionally, although the anti-hammering functionality of the virtual smart card is


equally secure to that of a physical smart card, virtual smart card users are never
required to contact an administrator to unblock the card. Instead, they simply wait a
period of time (depending on the TPM specifications) before they reattempt to enter the
PIN. Alternatively, the administrator can reset the lockout by providing owner
authentication data to the TPM on the host computer.

Security

Physical smart cards and virtual smart cards offer comparable levels of security. They
both implement two-factor authentication for using network resources. However, they
differ in certain aspects, including physical security and the practicality of an attack. Due
to their compact and portable design, conventional smart cards are most frequently
kept close to their intended user. They offer little opportunity for acquisition by a
potential adversary, so any sort of interaction with the card is difficult without
committing some variety of theft.

TPM virtual smart cards, however, reside on a user's computer that may frequently be
left unattended, which provides an opportunity for a malicious user to hammer the TPM.
Although virtual smart cards are fully protected from hammering (as are physical smart
cards), this accessibility makes the logistics of an attack somewhat simpler. Additionally,
the anti-hammering behavior of a TPM smart card differs in that it only presents a time
delay in response to repeated PIN failures, as opposed to fully blocking the user.
However, there are several advantages provided by virtual smart cards to mitigate these
slight security deficits. Most importantly, a virtual smart card is much less likely to be
lost. Virtual smart cards are integrated into computers and devices that the user already
owns for other purposes and has incentive to keep safe. If the computer or device that
hosts the virtual smart card is lost or stolen, a user will more immediately notice its loss
than the loss of a physical smart card. When a computer or device is identified as lost,
the user can notify the administrator of the system, who can revoke the certificate that is
associated with the virtual smart card on that device. This precludes any future
unauthorized access on that computer or device if the PIN for the virtual smart card is
compromised.

Cost

If a company wants to deploy physical smart cards, they need to purchase smart cards
and smart card readers for all employees. Although relatively inexpensive options can be
found, options that ensure the three key properties of smart card security (most notably,
non-exportability) are more expensive. If employees have computers with a built-in
TPM, virtual smart cards can be deployed with no additional material costs. These
computers and devices are relatively common in the market.

The maintenance cost of virtual smart cards is less than that for physical smart cards,
which are easily lost, stolen, or broken from normal wear. TPM virtual smart cards are
only lost or broken if the host computer or device is lost or broken, which in most cases
is much less frequently.

Comparison summary

Physical Smart Cards TPM virtual smart cards

Protects private keys by using the built-in Protects private keys by using the
cryptographic functionality of the card. cryptographic functionality of the TPM.

Stores private keys in isolated non-volatile memory Stores encrypted private keys on the hard
on the card, which means that access to private drive. The encryption ensures that these
keys is only from the card, and access is never keys can only be decrypted and used in the
allowed to the operating system. TPM, not in the accessible memory of the
operating system.

Guarantees non-exportability through the card Guarantees non-exportability through the


manufacturer, which includes isolating private TPM manufacturer, which includes the
information from operating system access. inability of an adversary to replicate or
remove the TPM.

Performs and isolates cryptographic operations Performs and isolates cryptographic


within the built-in capabilities of the card. operations in the TPM of the user's
computer or device.
Physical Smart Cards TPM virtual smart cards

Provides anti-hammering through the card. After a Provides anti-hammering through the TPM.
certain number of failed PIN entry attempts, the Successive failed attempts increase the
card blocks further access until administrative device lockout time (the time the user has
action is taken. to wait before trying again). This can be
reset by an administrator.

Requires that users carry their smart card and Allows users to access their TPM-enabled
smart card reader with them to access network computers or devices, and potentially
resources. access the network, without other
equipment.

Enables credential portability by inserting the Prevents exporting credentials from a given
smart card into smart card readers that are computer or device. However, virtual smart
attached to other computers. cards can be issued for the same user on
multiple computers or devices by using
additional certificates.

Enables multiple users to access network resources Enables multiple users to access network
through the same computer by inserting their resources through the same computer or
personal smart cards. device by issuing a virtual smart card for
each user on that computer or device.

Requires the user to carry the card, making it more Stores virtual smart card on the user's
difficult for an attacker to access the device and computer, which may be left unattended
launch a hammering attempt. and allow a greater risk window for
hammering attempts.

Provides a generally single-purpose device that is Installs the virtual smart card on a device
carried explicitly for the purpose of authentication. that has other purposes for the user, so the
The smart card can be easily misplaced or user has greater incentive to be responsible
forgotten. for the computer or device.

Alerts users that their card is lost or stolen only Installs the virtual smart card on a device
when they need to sign in and notice it's missing. that the user likely needs for other
purposes, so users will notice its loss much
more quickly. This reduces the associated
risk window.

Requires companies to invest in smart cards and Requires that companies ensure all
smart card readers for all employees. employees have TPM-enabled computers,
which are relatively common.

Enables using a smart card removal policy to affect Eliminates the necessity for a smart card
system behavior when the smart card is removed. removal policy because a TPM virtual smart
For example, the policy can dictate if the user's card is always present and can't be removed
sign-in session is locked or terminated when the from the computer.
user removes the card.
Authentication design options
The following section presents several commonly used options and their respective
strengths and weaknesses, which organizations can consider for authentication.

Passwords

A password is a secret string of characters that is tied to the identification credentials for
a user's account. This establishes the user's identity. Although passwords are the most
commonly used form of authentication, they're also the weakest. In a system where
passwords are used as the sole method of user authentication, only individuals who
know their passwords are considered valid users.

Password authentication places a great deal of responsibility on the user. Passwords


must be sufficiently complex so they can't be easily guessed, but they must be simple
enough to be committed to memory and not stored in a physical location. Even if this
balance is successfully achieved, a wide variety of attacks exist (such as brute force
attacks, eavesdropping, and social engineering tactics) where a malicious user can
acquire a user's password and impersonate that person's identity. A user often won't
realize that the password is compromised, which makes it's easy for a malicious user to
maintain access to a system if a valid password has been obtained.

One-time passwords

A one-time password (OTP) is similar to a traditional password, but it's more secure in
that it can be used only once to authenticate a user. The method for determining each
new password varies by implementation. Assuming a secure deployment of each new
password, OTPs have several advantages over the classic password model of
authentication. Most importantly, if a given OTP token is intercepted in transmission
between the user and the system, the interceptor can't use it for any future transactions.
Similarly, if a malicious user obtains a valid user's OTP, the interceptor will have limited
access to the system (only one session).

Smart cards

Smart cards are physical authentication devices, which improve on the concept of a
password by requiring that users actually have their smart card device with them to
access the system, in addition to knowing the PIN that provides access to the smart
card. Smart cards have three key properties that help maintain their security:

Non-exportability: Information stored on the card, such as the user's private keys,
can't be extracted from one device and used in another medium
Isolated cryptography: Any cryptographic operations that are related to the card
(such as secure encryption and decryption of data) occur in a cryptographic
processor on the card, so malicious software on the host computer can't observe
the transactions
Anti-hammering: To prevent access to the card by a brute-force attack, a set
number of consecutive unsuccessful PIN entry attempts blocks the card until
administrative action is taken

Smart cards provide greatly enhanced security over passwords alone, because it's much
more difficult for a malicious user to gain and maintain access to a system. Most
importantly, access to a smart card system requires that users have a valid card and that
they know the PIN that provides access to that card. It's difficult for a thief to acquire the
card and the PIN.

Additional security is achieved by the singular nature of the card because only one copy
of the card exists, only one individual can use the sign-in credentials, and users will
quickly notice if the card has been lost or stolen. This greatly reduces the risk window of
credential theft when compared to using a password alone.

The additional security comes with added material and support costs. Traditional smart
cards are expensive to purchase (cards and card readers must be supplied to
employees), and users can misplace or lose them.

Virtual smart cards

Virtual smart cards emulate the functionality of traditional smart cards. Instead of
requiring the purchase of additional hardware, virtual smart cards utilize technology that
users already own and are more likely to always have with them. Theoretically, any
device that can provide the three key properties of smart cards (non-exportability,
isolated cryptography, and anti-hammering) can be commissioned as a virtual smart
card. The virtual smart card platform is limited to the use of the Trusted Platform
Module (TPM) chip, which is on most modern devices.

Virtual smart cards that utilize a TPM provide the three main security principles of
traditional smart cards: non-exportability, isolated cryptography, and anti-hammering.
Virtual smart cards are less expensive to implement and more convenient for users.
Since many corporate computers already have a built-in TPM, there's no cost associated
with purchasing new hardware. The user's possession of a computer or device is
equivalent to the possession of a smart card, and a user's identity can't be assumed
from any other computer or device without administrative provisioning of further
credentials. Thus, two-factor authentication is achieved because the user must have a
computer that is set up with a virtual smart card and know the PIN to use the virtual
smart card.
Get Started with Virtual Smart Cards:
Walkthrough Guide
Article • 02/27/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

This topic for the IT professional describes how to set up a basic test environment for
using TPM virtual smart cards.

Virtual smart cards are a technology from Microsoft that offer comparable security
benefits in two-factor authentication to physical smart cards. They also offer more
convenience for users and lower cost for organizations to deploy. By utilizing Trusted
Platform Module (TPM) devices that provide the same cryptographic capabilities as
physical smart cards, virtual smart cards accomplish the three key properties that are
desired by smart cards: non-exportability, isolated cryptography, and anti-hammering.

This step-by-step walkthrough shows you how to set up a basic test environment for
using TPM virtual smart cards. After you complete this walkthrough, you will have a
functional virtual smart card installed on the Windows computer.

Time requirements

You should be able to complete this walkthrough in less than one hour, excluding
installing software and setting up the test domain.

Walkthrough steps

Prerequisites

Step 1: Create the certificate template

Step 2: Create the TPM virtual smart card


Step 3: Enroll for the certificate on the TPM Virtual Smart Card

Important This basic configuration is for test purposes only. It is not intended for
use in a production environment.

Prerequisites
You will need:

A computer running Windows 10 with an installed and fully functional TPM


(version 1.2 or version 2.0).

A test domain to which the computer listed above can be joined.

Access to a server in that domain with a fully installed and running certification
authority (CA).

Step 1: Create the certificate template


On your domain server, you need to create a template for the certificate that you will
request for the virtual smart card.

To create the certificate template


1. On your server, open the Microsoft Management Console (MMC). One way to do
this is to type mmc.exe from the Start menu, right-click mmc.exe, and click Run as
administrator.

2. Click File, and then click Add/Remove Snap-in.

3. In the available snap-ins list, click Certificate Templates, and then click Add.
4. Certificate Templates is now located under Console Root in the MMC. Double-click
it to view all the available certificate templates.

5. Right-click the Smartcard Logon template, and click Duplicate Template.

6. On the Compatibility tab, under Certification Authority, review the selection, and
change it if needed.

7. On the General tab:


a. Specify a name, such as TPM Virtual Smart Card Logon.

b. Set the validity period to the desired value.

8. On the Request Handling tab:

a. Set the Purpose to Signature and smartcard logon.

b. Click Prompt the user during enrollment.

9. On the Cryptography tab:

a. Set the minimum key size to 2048.

b. Click Requests must use one of the following providers, and then select
Microsoft Base Smart Card Crypto Provider.

10. On the Security tab, add the security group that you want to give Enroll access to.
For example, if you want to give access to all users, select the Authenticated users
group, and then select Enroll permissions for them.

11. Click OK to finalize your changes and create the new template. Your new template
should now appear in the list of Certificate Templates.

12. Select File, then click Add/Remove Snap-in to add the Certification Authority
snap-in to your MMC console. When asked which computer you want to manage,
select the computer on which the CA is located, probably Local Computer.

13. In the left pane of the MMC, expand Certification Authority (Local), and then
expand your CA within the Certification Authority list.
14. Right-click Certificate Templates, click New, and then click Certificate Template to
Issue.

15. From the list, select the new template that you just created (TPM Virtual Smart
Card Logon), and then click OK.

Note It can take some time for your template to replicate to all servers and
become available in this list.

16. After the template replicates, in the MMC, right-click in the Certification Authority
list, click All Tasks, and then click Stop Service. Then, right-click the name of the CA
again, click All Tasks, and then click Start Service.
Step 2: Create the TPM virtual smart card
In this step, you will create the virtual smart card on the client computer by using the
command-line tool, Tpmvscmgr.exe.

To create the TPM virtual smart card


1. On a domain-joined computer, open a Command Prompt window with
Administrative credentials.

2. At the command prompt, type the following, and then press ENTER:

tpmvscmgr.exe create /name TestVSC /pin default /adminkey random /generate


This will create a virtual smart card with the name TestVSC, omit the unlock key,
and generate the file system on the card. The PIN will be set to the default,
12345678. To be prompted for a PIN, instead of /pin default you can type /pin
prompt.

For more information about the Tpmvscmgr command-line tool, see Use Virtual
Smart Cards and Tpmvscmgr.

3. Wait several seconds for the process to finish. Upon completion, Tpmvscmgr.exe
will provide you with the device instance ID for the TPM Virtual Smart Card. Store
this ID for later reference because you will need it to manage or remove the virtual
smart card.

Step 3: Enroll for the certificate on the TPM


Virtual Smart Card
The virtual smart card must be provisioned with a sign-in certificate for it to be fully
functional.

To enroll the certificate


1. Open the Certificates console by typing certmgr.msc on the Start menu.

2. Right-click Personal, click All Tasks, and then click Request New Certificate.

3. Follow the prompts and when offered a list of templates, select the TPM Virtual
Smart Card Logon check box (or whatever you named the template in Step 1).
4. If prompted for a device, select the Microsoft virtual smart card that corresponds
to the one you created in the previous section. It displays as Identity Device
(Microsoft Profile).

5. Enter the PIN that was established when you created the TPM virtual smart card,
and then click OK.

6. Wait for the enrollment to finish, and then click Finish.

The virtual smart card can now be used as an alternative credential to sign in to your
domain. To verify that your virtual smart card configuration and certificate enrollment
were successful, sign out of your current session, and then sign in. When you sign in,
you will see the icon for the new TPM virtual smart card on the Secure Desktop (sign in)
screen or you will be automatically directed to the TPM smart card sign-in dialog box.
Click the icon, enter your PIN (if necessary), and then click OK. You should be signed in
to your domain account.

See also
Understanding and Evaluating Virtual Smart Cards

Use Virtual Smart Cards

Deploy Virtual Smart Cards


Use Virtual Smart Cards
Article • 02/27/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

Learn about the requirements for virtual smart cards, how to use and manage them.

Requirements, restrictions, and limitations


Area Requirements and details

Supported Windows Server 2016


operating Windows Server 2012 R2
systems Windows Server 2012
Windows 10
Windows 8.1
Windows 8

Supported Any TPM that adheres to the TPM main specifications for version 1.2 or version
Trusted 2.0 (as set by the Trusted Computing Group) is supported for use as a virtual
Platform smart card. For more information, see the TPM Main Specification .
Module (TPM)

Supported Ten smart cards can be connected to a computer or device at one time. This
virtual smart includes physical and virtual smart cards combined.
cards per
computer Note
You can create more than one virtual smart card; however, after creating more
than four virtual smart cards, you may start to notice performance degradation.
Because all smart cards appear as if they're always inserted, if more than one
person shares a computer or device, each person can see all the virtual smart
cards that are created on that computer or device. If the user knows the PIN
values for all the virtual smart cards, the user will also be able to use them.
Area Requirements and details

Supported A single TPM virtual smart card can contain 30 distinct certificates with the
number of corresponding private keys. Users can continue to renew certificates on the card
certificates on until the total number of certificates on a card exceeds 90. The reason that the
a virtual smart total number of certificates is different from the total number of private keys is
card that sometimes the renewal can be done with the same private key—in which
case a new private key isn't generated.

PIN, PIN The PIN and the PUK must be a minimum of eight characters that can include
Unlock Key numerals, alphabetic characters, and special characters.
(PUK), and The Administrative key must be entered as 48 hexadecimal characters. It's a 3-
Administrative key triple DES with ISO/IEC 9797 padding method 2 in CBC chaining mode.
key
requirements

Using Tpmvscmgr.exe
To create and delete TPM virtual smart cards for end users, the Tpmvscmgr command-
line tool is included as a command-line tool with the operating system. You can use the
Create and Delete parameters to manage virtual smart cards on local or remote
computers. For information about using this tool, see Tpmvscmgr.

Create and delete virtual smart cards


programmatically
Virtual smart cards can also be created and deleted by using APIs. For more information,
see the following classes and interfaces:

TpmVirtualSmartCardManager

RemoteTpmVirtualSmartCardManager

ITpmVirtualSmartCardManager

ITPMVirtualSmartCardManagerStatusCallBack

You can use APIs that were introduced in the Windows.Device.SmartCards namespace in
Windows Server 2012 R2 and Windows 8.1 to build Microsoft Store apps to manage the
full lifecycle of virtual smart cards. For information about how to build an app to do this,
see Strong Authentication: Building Apps That Leverage Virtual Smart Cards in
Enterprise, BYOD, and Consumer Environments | Build 2013 | Channel 9 .
The following table describes the features that can be developed in a Microsoft Store
app:

Feature Physical Virtual


Smart Card Smart
Card

Query and monitor smart card readers Yes Yes

List available smart cards in a reader, and retrieve the card name and Yes Yes
card ID

Verify if the administrative key of a card is correct Yes Yes

Provision (or reformat) a card with a given card ID Yes Yes

Change the PIN by entering the old PIN and specifying a new PIN Yes Yes

Change the administrative key, reset the PIN, or unblock the smart Yes Yes
card by using a challenge/response method

Create a virtual smart card Not Yes


applicable

Delete a virtual smart card Not Yes


applicable

Set PIN policies No Yes

For more information about these Windows APIs, see:

Windows.Devices.SmartCards namespace (Windows)

Windows.Security.Cryptography.Certificates namespace (Windows)

Distinguishing TPM-based virtual smart cards


from physical smart cards
To help users visually distinguish a Trusted Platform Module (TPM)-based virtual smart
card from physical smart cards, the virtual smart card has a different icon. The following
icon is displayed during sign-in, and on other screens that require the user to enter the
PIN for a virtual smart card.
A TPM-based virtual smart card is labeled Security Device in the user interface.

Changing the PIN


The PIN for a virtual smart card can be changed by following these steps:

Sign in with the old PIN or password.


Press Ctrl+Alt+Del and choose Change a password.
Select Sign-in Options.
Select the virtual smart card icon.
Enter and confirm the new PIN.

Resolving issues

TPM not provisioned


For a TPM-based virtual smart card to function properly, a provisioned TPM must be
available on the computer. If the TPM is disabled in the BIOS, or it isn't provisioned with
full ownership and the storage root key, the TPM virtual smart card creation will fail.

If the TPM is initialized after creating a virtual smart card, the card will no longer
function, and it will need to be re-created.

If the TPM ownership was established on a Windows Vista installation, the TPM won't be
ready to use virtual smart cards. The system administrator needs to clear and initialize
the TPM for it to be suitable for creating TPM virtual smart cards.

If the operating system is reinstalled, prior TPM virtual smart cards are no longer
available and need to be re-created. If the operating system is upgraded, prior TPM
virtual smart cards will be available to use in the upgraded operating system.

TPM in lockout state


Sometimes, due to frequent incorrect PIN attempts from a user, the TPM may enter the
lockout state. To resume using the TPM virtual smart card, it's necessary to reset the
lockout on the TPM by using the owner's password or to wait for the lockout to expire.
Unblocking the user PIN doesn't reset the lockout in the TPM. When the TPM is in
lockout, the TPM virtual smart card appears as if it's blocked. When the TPM enters the
lockout state because the user entered an incorrect PIN too many times, it may be
necessary to reset the user PIN by using the virtual smart card management tools, such
as Tpmvscmgr command-line tool.

See also
For information about authentication, confidentiality, and data integrity use cases, see
Virtual Smart Card Overview.
Deploy Virtual Smart Cards
Article • 02/27/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

This article discusses the factors to consider when you deploy a virtual smart card
authentication solution.

Traditional identity devices, such as physical smart cards, follow a predictable lifecycle in
any deployment, as shown in the following diagram.

A device manufacturer creates physical devices, and then an organization purchase and
deploy them. The device passes through the personalization stage, where its unique
properties are set. In smart cards, these properties are the administrator key, Personal
Identification Number (PIN), PIN Unlock Key (PUK), and its physical appearance. During
the device provisioning phase, the required certificates are installed, such as a sign-in
certificate. After you provision the device, it's ready for use. You'll maintain the device,
for example you may replace cards when they're lost or stolen, or reset PINs when users
forget them. Finally, you'll retire devices when they exceed their intended lifetime or
when employees leave the company.

This topic contains information about the following phases in a virtual smart card
lifecycle:

Create and personalize virtual smart cards

Provision virtual smart cards

Maintain virtual smart cards

Create and personalize virtual smart cards


A corporation purchases the devices to deploy then. The device passes through the
personalization stage, where its unique properties are set. In smart cards, these
properties are the administrator key, Personal Identification Number (PIN), PIN Unlock
Key (PUK), and its physical appearance. The security that is provided for a TPM virtual
smart card is fully provisioned in the host TPM.

Trusted Platform Module readiness


The TPM Provisioning Wizard, which is launched from the TPM Management Console,
takes the user through all the steps to prepare the TPM for use.

When you create virtual smart cards, consider the following actions in the TPM:

Enable and Activate: TPMs are built into many devices. In some cases, the TPM
must be enabled and activated through the BIOS
Take ownership: When you provision the TPM, you set an owner password for
managing the TPM in the future, and you establish the storage root key. To provide
anti-hammering protection for virtual smart cards, the user or a domain
administrator must be able to reset the TPM owner password. For corporate use of
TPM virtual smart cards, the domain administrator should restrict access to the
TPM owner password by storing it in Active Directory, and not in the local registry.
When TPM ownership is set, you must clear and reinitialize the TPM
Manage: You can manage ownership of a virtual smart card by changing the owner
password, and you can manage anti-hammering logic by resetting the lockout
time

A TPM might operate in reduced functionality mode, which may occur if the operating
system can't determine if the owner password is available to the user. During reduce
functionality mode, you can use the TPM to create a virtual smart card, but it's
preferable to bring the TPM to a fully ready state so that any unexpected circumstances
won't leave the user blocked from using the device.

Those smart card deployment management tools that require a status check of a TPM
before attempting to create a TPM virtual smart card can do so using the TPM WMI
interface.

Depending on the setup of the device designated for installing TPM virtual smart cards,
it may be necessary to provision the TPM before continuing with the virtual smart card
deployment. For more information about provisioning, see Use Virtual Smart Cards.

For more information about managing TPMs by using built-in tools, see Trusted
Platform Module Services Group Policy Settings.

Creation
A TPM virtual smart card simulates a physical smart card, using the TPM to provide the
same functionality as physical smart card hardware.
A virtual smart card appears within the operating system as a physical smart card that is
always inserted. Windows presents a virtual smart card reader and a virtual smart card to
applications using the same interface as physical smart cards. The messages to and from
the virtual smart card are translated to TPM commands, ensuring the integrity of the
virtual smart card through the three properties of smart card security:

Non-exportability: Because all private information on the virtual smart card is


encrypted by using the TPM on the host computer, it can't be used on a different
computer with a different TPM. Additionally, TPMs are designed to be tamper-
resistant and non-exportable, so a malicious user can't reverse engineer an
identical TPM or install the same TPM on a different computer. For more
information, see Evaluate Virtual Smart Card Security.

Isolated cryptography: TPMs provide the same properties of isolated


cryptography that is offered by physical smart cards, which is utilized by virtual
smart cards. Unencrypted copies of private keys are loaded only within the TPM
and never into memory that is accessible by the operating system. All
cryptographic operations with these private keys occur inside the TPM.

Anti-hammering: If a user enters a PIN incorrectly, the virtual smart card responds
by using the anti-hammering logic of the TPM, which rejects further attempts for
some time instead of blocking the card. This is also known as lockout. For more
information, see Blocked virtual smart card and Evaluate Virtual Smart Card
Security.
There are several options for creating virtual smart cards, depending on the size of the
deployment and budget of the organization. The lowest cost option is using
tpmvscmgr.exe to create cards individually on users' computers. Alternatively, a virtual

smart card management solution can be purchased to more easily accomplish virtual
smart card creation on a larger scale and aid in further phases of deployment. Virtual
smart cards can be created on computers that are to be provisioned for an employee or
on those that are already in an employee's possession. In either approach, there should
be some central control over personalization and provisioning. If a computer is intended
for use by multiple employees, multiple virtual smart cards can be created on a
computer.

For information about the TPM Virtual Smart Card command-line tool, see Tpmvscmgr.

Personalization
During virtual smart card personalization, the values for the administrator key, PIN, and
PUK are assigned. As with a physical card, knowing the administrator key is important
for resetting the PIN or for deleting the card in the future. (If you set a PUK, you can't
use the administrator key to reset the PIN.)

Because the administrator key is critical to the security of the card, it's important to
consider the deployment environment and decide on the proper administrator key
setting strategy. Options for these strategies include:

Uniform: Administrator keys for all the virtual smart cards deployed in the
organization are the same. Although using the same key makes the maintenance
infrastructure easy (only one key needs to be stored), it's highly insecure. This
strategy might be sufficient for small organizations, but if the administrator key is
compromised, all virtual smart cards that use the key must be reissued.

Random, not stored: Administrator keys are assigned randomly for all virtual smart
cards, and they aren't recorded. This is a valid option if the deployment
administrators don't require the ability to reset PINs, and instead prefer to delete
and reissue virtual smart cards. This is a viable strategy if the administrator prefers
to set PUK values for the virtual smart cards and then use this value to reset PINs, if
necessary.

Random, stored: you assign the administrator keys randomly, storing them in a
central location. Each card's security is independent of the others. This is a secure
strategy on a large scale, unless the administrator key database is compromised.

Deterministic: Administrator keys are the result of some function or known


information. For example, the user ID could be used to randomly generate data
that can be further processed through a symmetric encryption algorithm by using
a secret. This administrator key can be similarly regenerated when needed, and it
doesn't need to be stored. The security of this method relies on the security of the
secret used.

Although the PUK and the administrator key methodologies provide unlocking and
resetting functionality, they do so in different ways. The PUK is a PIN that is entered on
the computer to enable a user PIN reset.

The administrator key methodology takes a challenge-response approach. The card


provides a set of random data after users verify their identity to the deployment
administrator. The administrator then encrypts the data with the administrator key and
gives the encrypted data back to the user. If the encrypted data matches that produced
by the card during verification, the card will allow PIN reset. Because the administrator
key is never accessible by anyone other than the deployment administrator, it can't be
intercepted or recorded by any other party (including employees). This provides
significant security benefits beyond using a PUK, an important consideration during the
personalization process.

TPM virtual smart cards can be personalized on an individual basis when they're created
with the Tpmvscmgr command-line tool. Or organizations can purchase a management
solution that can incorporate personalization into an automated routine. Another
advantage of such a solution is the automated creation of administrator keys.
Tpmvscmgr.exe allows users to create their own administrator keys, which can be
detrimental to the security of the virtual smart cards.

Provision virtual smart cards


Provisioning is the process of loading specific credentials onto a TPM virtual smart card.
These credentials consist of certificates that are created to give users access to a specific
service, such as domain sign-in. A maximum of 30 certificates is allowed on each virtual
smart card. As with physical smart cards, several decisions must be made regarding the
provisioning strategy, based on the environment of the deployment and the desired
level of security.

A high-assurance level of secure provisioning requires absolute certainty about the


identity of the individual who is receiving the certificate. Therefore, one method of high-
assurance provisioning is utilizing previously provisioned strong credentials, such as a
physical smart card, to validate identity during provisioning. In-person proofing at
enrollment stations is another option, because an individual can easily and securely
prove his or her identity with a passport or driver's license, although this can become
infeasible on a larger scale. To achieve a similar level of assurance, a large organization
can implement an "enroll-on-behalf-of" strategy, in which employees are enrolled with
their credentials by a superior who can personally verify their identities. This creates a
chain of trust that ensures individuals are checked in person against their proposed
identities, but without the administrative strain of provisioning all virtual smart cards
from a single central enrollment station.

For deployments in which a high-assurance level isn't a primary concern, you can use
self-service solutions. These can include using an online portal to obtain credentials or
simply enrolling for certificates by using Certificate Manager, depending on the
deployment. Consider that virtual smart card authentication is only as strong as the
method of provisioning. For example, if weak domain credentials (such as a password
alone) are used to request the authentication certificate, virtual smart card
authentication will be equivalent to using only the password, and the benefits of two-
factor authentication are lost.

For information about using Certificate Manager to configure virtual smart cards, see
Get Started with Virtual Smart Cards: Walkthrough Guide.

High-assurance and self-service solutions approach virtual smart card provisioning by


assuming that the user's computer has been issued prior to the virtual smart card
deployment, but this isn't always the case. If virtual smart cards are being deployed with
new computers, they can be created, personalized, and provisioned on the computer
before the user has contact with that computer.

In this situation, provisioning becomes relatively simple, but identity checks must be put
in place to ensure that the recipient of the computer is the individual who was expected
during provisioning. This can be accomplished by requiring the employee to set the
initial PIN under the supervision of the deployment administrator or manager.

When you're provisioning your computers, you should also consider the longevity of
credentials that are supplied for virtual smart cards. This choice must be based on the
risk threshold of the organization. Although longer lived credentials are more
convenient, they're also more likely to become compromised during their lifetime. To
decide on the appropriate lifetime for credentials, the deployment strategy must take
into account the vulnerability of their cryptography (how long it could take to crack the
credentials), and the likelihood of attack.

For compromised virtual smart cards, administrators should be able to revoke the
associated credentials, like they would with a lost or stolen laptop. Revoking credentials
requires a record of which credentials match which user and device, but the functionality
doesn't natively exist in Windows. Deployment administrators might want to consider
add-on solutions to maintain a record.
Virtual smart cards on consumer devices used for
corporate access
There are techniques that allow employees to provision virtual smart cards and enroll for
certificates that can be used to authenticate the users. This is useful when employees
attempt to access corporate resources from devices that aren't joined to the corporate
domain. Those devices can be further defined to not allow users to download and run
applications from sources other than the Microsoft Store.

You can use APIs to build Microsoft Store apps that you can use to manage the full
lifecycle of virtual smart cards. For more information, see Create and delete virtual smart
cards programmatically.

TPM ownerAuth in the registry


When a device or computer isn't joined to a domain, the TPM ownerAuth is stored in
the registry under HKEY_LOCAL_MACHINE. This exposes some threats. Most of the
threat vectors are protected by BitLocker, but threats that aren't protected include:

A malicious user possesses a device that has an active local sign-in session before
the device locks. The malicious user could attempt a brute-force attack on the
virtual smart card PIN, and then access the corporate secrets.

A malicious user possesses a device that has an active virtual private network (VPN)
session. The device is then compromised.

The proposed mitigation for the previous scenarios is to use Exchange ActiveSync (EAS)
policies to reduce the automatic lockout time from five minutes to 30 seconds of
inactivity. You can set policies for automatic lockout while provisioning virtual smart
cards. If an organization wants more security, they can also configure a setting to
remove the ownerAuth from the local device.

For configuration information about the TPM ownerAuth registry key, see the Group
Policy setting Configure the level of TPM owner authorization information available to
the operating system.

For information about EAS policies, see Exchange ActiveSync Policy Engine Overview.

Managed and unmanaged cards

The following table describes the important differences between managed and
unmanaged virtual smart cards that exist on consumer devices:
Operation Managed and unmanaged Unmanaged cards
cards

Reset PIN when the user forgets Yes No. Delete and recreate the
the PIN card.

Allow user to change the PIN Yes No. Delete and recreate the
card.

Managed cards
A managed virtual smart card can be serviced by the IT administrator or another person
in that designated role. It allows the IT administrator to have influence or complete
control over specific aspects of the virtual smart card from its creation to deletion. To
manage these cards, a virtual smart card deployment management tool is often
required.

Managed card creation


A user can create blank virtual smart card by using the Tpmvscmgr command-line tool,
which is a built-in tool executed with administrative credentials through an elevated
command prompt. The virtual smart card must be created with well-known parameters
(such as default values), and it should be left unformatted (specifically, the /generate
option shouldn't be specified).

The following command creates a virtual smart card that can later be managed by a
smart card management tool launched from another computer (as explained in the next
section):

tpmvscmgr.exe create /name "VirtualSmartCardForCorpAccess" /AdminKey DEFAULT /PIN


PROMPT

Alternatively, instead of using a default administrator key, a user can enter an


administrator key at the command line:

tpmvscmgr.exe create /name "VirtualSmartCardForCorpAccess" /AdminKey PROMPT /PIN

PROMPT

In either case, the card management system needs to be aware of the initial
administrator key. The requirement is so that the card management system can take
ownership of the virtual smart card and change the administrator key to a value that is
only accessible through the card management tool operated by the IT administrator. For
example, when you use the default, the administrator key is set to:
10203040506070801020304050607080102030405060708

For information about using this command-line tool, see Tpmvscmgr.

Managed card management


After the virtual smart card is created, the user needs to open a remote desktop
connection to an enrollment station, for example, in a computer that is joined to the
domain. Virtual smart cards that are associated with a client computer are available for
use in the remote desktop connection. The user can open a card management tool
inside the remote session that can take ownership of the card and provision it for use by
the user. This requires that a user is allowed to establish a remote desktop connection
from a non-domain-joined computer to a domain-joined computer. This might require a
specific network configuration, such as through IPsec policies.

When users need to reset or change a PIN, they need to use the remote desktop
connection to complete these operations. They can use the built-in tools for PIN unlock
and PIN change or the smart card management tool.

Certificate management for managed cards


Similar to physical smart cards, virtual smart cards require certificate enrollment.

Certificate issuance

Users can enroll for certificates from within a remote desktop session that is established
to provision the card. This process can also be managed by the smart card management
tool that the user runs through the remote desktop connection. This model works for
deployments that require the user to sign a request for enrollment by using a physical
smart card. The driver for the physical smart card doesn't need to be installed on the
client computer if it's installed on the remote computer. This is made possible by smart
card redirection functionality that was introduced in Windows Server 2003, which
ensures that smart cards that are connected to the client computer are available for use
during a remote session.

Alternatively, without establishing a remote desktop connection, users can enroll for
certificates from the Certificate Management console (certmgr.msc) on a client
computer. Users can also create a request and submit it to a server from within a custom
certificate enrollment application (for example, a registration authority) that has
controlled access to the certification authority (CA). This requires specific enterprise
configuration and deployments for Certificate Enrollment Policies (CEP) and Certificate
Enrollment Services (CES).

Certificate lifecycle management

You can renew certificates through remote desktop connections, certificate enrollment
policies, or certificate enrollment services. Renewal requirements could be different from
the initial issuance requirements, based on the renewal policy.

Certificate revocation requires careful planning. When information about the certificate
to be revoked is reliably available, the specific certificate can be easily revoked. When
information about the certificate to be revoked isn't easy to determine, all certificates
that are issued to the user under the policy that was used to issue the certificate might
need to be revoked. For example, this could occur if an employee reports a lost or
compromised device, and information that associates the device with a certificate isn't
available.

Unmanaged cards
Unmanaged virtual smart cards aren't serviceable by an IT administrator. Unmanaged
cards might be suitable if an organization doesn't have an elaborate smart card
deployment management tool and using remote desktop connections to manage the
card isn't desirable. Because unmanaged cards aren't serviceable by the IT administrator,
when a user needs help with a virtual smart card (for example, resetting or unlocking a
PIN), the only option available to the user is to delete the card and create it again. This
results in loss of the user's credentials and he or she must re-enroll.

Unmanaged card creation


A user can create a virtual smart card by using the Tpmvscmgr command-line tool,
which is run with administrative credentials through an elevated command prompt. The
following command creates an unmanaged card that can be used to enroll certificates:

tpmvscmgr.exe create /name "VirtualSmartCardForCorpAccess" /AdminKey RANDOM /PIN


PROMPT /generate

This command creates a card with a randomized administrator key. The key is
automatically discarded after the creation of the card. If users forget or want to change
their PIN, they need to delete the card and create it again. To delete the card, a user can
run the following command:
tpmvscmgr.exe destroy /instance <instance ID>

where <instance ID> is the value that is printed on the screen when the user creates the
card. Specifically, for the first card created, the instance ID is
ROOT\SMARTCARDREADER\0000).

Certificate management for unmanaged cards


Depending on the security requirements that are unique to an organization, users can
initially enroll for certificates from the certificate management console (certmgr.msc) or
from within custom certificate enrollment applications. The latter method can create a
request and submit it to a server that has access to the Certification Authority. This
requires specific organizational configurations and deployments for certificate
enrollment policies and certificate enrollment services. Windows has built-in tools,
specifically Certreq.exe and Certutil.exe, which can be used by scripts to perform the
enrollment from the command line.

Requesting the certificate by providing domain credentials only


The simplest way for users to request certificates is to provide their domain credentials
through a script that can perform the enrollment through built-in components you have
in place for certificate requests.

Alternatively, an application (such as a line-of-business app) can be installed on the


computer to perform enrollment by generating a request on the client. The request is
submitted to an HTTP server, which can forward it to a registration authority.

Another option is to have the user access an enrollment portal that is available through
Internet Explorer. The webpage can use the scripting APIs to perform certificate
enrollment.

Signing the request with another certificate


You can provide users with a short-term certificate through a Personal Information
Exchange (.pfx) file. You can generate the .pfx file by initiating a request from a domain-
joined computer. You can enforce other policy constraints on the .pfx file to assert the
identity of the user.

The user can import the certificate into the MY store (which is the user's certificate
store). And your organization can present the user with a script that can be used to sign
the request for the short-term certificate and to request a virtual smart card.
For deployments that require users to use a physical smart card to sign the certificate
request, you can use the procedure:

1. Users initiate a request on a domain-joined computer.

2. Users complete the request by using a physical smart card to sign the request.

3. Users download the request to the virtual smart card on their client computer.

Using one-time password for enrollment


Another option to ensure that users are strongly authenticated before virtual smart card
certificates are issued, is to send a user a one-time password through SMS, email, or
phone. The user then types the one-time password during the certificate enrollment
from an application or a script on a desktop that invokes built-in command-line tools.

Certificate lifecycle management


Certificate renewal can be done from the same tools that are used for the initial
certificate enrollment. Certificate enrollment policies and certificate enrollment services
can also be used to perform automatic renewal.

Certificate revocation requires careful planning. When information about the certificate
to be revoked is reliably available, the specific certificate can be easily revoked. When
information about the certificate to be revoked isn't easy to determine, all certificates
issued to the user under the policy that was used to issue the certificate might need to
be revoked. For example, if an employee reports a lost or compromised device, and
information that associates the device with a certificate isn't available.

Maintain virtual smart cards


Maintenance is a significant portion of the virtual smart card lifecycle and one of the
most important considerations from a management perspective. After virtual smart
cards are created, personalized, and provisioned, they can be used for convenient two-
factor authentication. Deployment administrators must be aware of several common
administrative scenarios, which can be approached by using a purchased virtual smart
card solution or on a case-by-case basis with in-house methods.

Renewal: Renewing virtual smart card credentials is a regular task that is necessary to
preserve the security of a virtual smart card deployment. Renewal is the result of a
signed request from a user who specifies the key pair desired for the new credentials.
Depending on user's choice or deployment specification, the user can request
credentials with the same key pair as previously used, or choose a newly generated key
pair.

When renewing with a previously used key, no extra steps are required because a strong
certificate with this key was issued during the initial provisioning. However, when the
user requests a new key pair, you must take the same steps that were used during
provisioning to assure the strength of the credentials. Renewal with new keys should
occur periodically to counter sophisticated long-term attempts by malicious users to
infiltrate the system. When new keys are assigned, you must ensure that the new keys
are being used by the expected individuals on the same virtual smart cards.

Resetting PINs: Resetting virtual smart card PINs is also a frequent necessity, because
employees forget their PINs. There are two ways to accomplish this, depending on
choices made earlier in the deployment: Use a PUK (if the PUK is set), or use a
challenge-response approach with the administration key. Before resetting the PIN, the
user's identity must be verified by using some means other than the card—most likely
the verification method that you used during initial provisioning (for example, in-person
proofing). This is necessary in user-error scenarios when users forget their PINs.
However, you should never reset a PIN if it has been compromised because the level of
vulnerability after the PIN is exposed is difficult to identify. The entire card should be
reissued.

Lockout reset: A frequent precursor to resetting a PIN is the necessity of resetting the
TPM lockout time because the TPM anti-hammering logic will be engaged with multiple
PIN entry failures for a virtual smart card. This is currently device specific.

Retiring cards: The final aspect of virtual smart card management is retiring cards when
they're no longer needed. When an employee leaves the company, it's desirable to
revoke domain access. Revoking sign-in credentials from the certification authority (CA)
accomplishes this goal.

The card should be reissued if the same computer is used by other employees without
reinstalling the operating system. Reusing the former card can allow the former
employee to change the PIN after leaving the organization, and then hijack certificates
that belong to the new user to obtain unauthorized domain access. However, if the
employee takes the virtual smart card-enabled computer, it's only necessary to revoke
the certificates that are stored on the virtual smart card.

Emergency preparedness

Card reissuance
The most common scenario in an organization is reissuing virtual smart cards, which can
be necessary if the operating system is reinstalled or if the virtual smart card is
compromised in some manner. Reissuance is essentially the recreation of the card,
which involves establishing a new PIN and administrator key and provisioning a new set
of associated certificates. This is an immediate necessity when a card is compromised,
for example, if the virtual smart card-protected computer is exposed to an adversary
who might have access to the correct PIN. Reissuance is the most secure response to an
unknown exposure of a card's privacy. Additionally, reissuance is necessary after an
operating system is reinstalled because the virtual smart card device profile is removed
with all other user data when the operating system is reinstalled.

Blocked virtual smart card


The anti-hammering behavior of a TPM virtual smart card is different from that of a
physical smart card. A physical smart card blocks itself after the user enters the wrong
PIN a few times. A TPM virtual smart card enters a timed delay after the user enters the
wrong PIN a few times. If the TPM is in the timed-delay mode, when the user attempts
to use the TPM virtual smart card, the user is notified that the card is blocked.
Furthermore, if you enable the integrated unlock functionality, the user can see the user
interface to unlock the virtual smart card and change the PIN. Unlocking the virtual
smart card doesn't reset the TPM lockout. The user needs to perform an extra step to
reset the TPM lockout or wait for the timed delay to expire.

For more information about setting the Allow Integrated Unblock policy, see Allow
Integrated Unblock screen to be displayed at the time of logon.
Evaluate Virtual Smart Card Security
Article • 02/27/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

In this article, you'll learn about security characteristics and considerations when
deploying TPM virtual smart cards.

Virtual smart card non-exportability details


A crucial aspect of TPM virtual smart cards is their ability to securely store and use secret
data. Specifically, that the secured data is non-exportable.
Data can be accessed and used within the virtual smart card system, but it's meaningless
outside of its intended environment. In TPM virtual smart cards, security is ensured with
a secure key hierarchy, which includes several chains of encryption. The chain originates
with the TPM storage root key, which is generated and stored within the TPM and never
exposed outside the chip. The TPM key hierarchy is designed to allow encryption of user
data with the storage root key, but it authorizes decryption with the user PIN so that
changing the PIN doesn't require re-encryption of the data.

The following diagram illustrates the secure key hierarchy and the process of accessing
the user key.

The following keys are stored on the hard disk:

User key
Smart card key, which is encrypted by the storage root key
Authorization key for the user key decryption, which is encrypted by the public
portion of the smart card key

When the user enters a PIN, the use of the decrypted smart card key is authorized with
this PIN. If this authorization succeeds, the decrypted smart card key is used to decrypt
the auth key. The auth key is then provided to the TPM to authorize the decryption and
use of the user's key that is stored on the virtual smart card.

The auth key is the only sensitive data used as plaintext outside the TPM, but its
presence in memory is protected by Microsoft Data Protection API (DPAPI), such that
before being stored in any way, it's encrypted. All data other than the auth key is
processed only as plaintext within the TPM, which is isolated from external access.

Virtual smart card anti-hammering details


The anti-hammering functionality of virtual smart cards relies on the anti-hammering
functionality of the TPM that is enabling the virtual smart card. However, the TPM
version 1.2 and subsequent specifications (as designed by the Trusted Computing
Group) provide flexible guidelines for responding to hammering. The spec requires only
that the TPM implement protection against trial-and-error attacks on the user PIN, PUK,
and challenge/response mechanism.

The Trusted Computing Group specifies that if the response to attacks involves
suspending proper function of the TPM for some period of time, or until administrative
action is taken, the TPM must prevent running the authorized TPM commands. The TPM
can prevent running any TPM commands until the termination of the attack response.
Beyond using a time delay or requiring administrative action, a TPM could also force a
reboot when an attack is detected. The Trusted Computing Group allows manufacturers
a level of creativity in their choice of implementation. The methodology used by TPM
manufacturers determines the anti-hammering response of TPM virtual smart cards.
Some typical aspects of protection from attacks include:

1. Allow only a limited number of wrong PIN attempts before enabling a lockout that
enforces a time delay before any further commands are accepted by the TPM.

7 Note

If the user enters the wrong PIN five consecutive times for a virtual smart card
(which works in conjunction with the TPM), the card is blocked. When the card
is blocked, it must be unblocked by using the administrative key or the PUK.

2. Increase the time delay exponentially as the user enters the wrong PIN so that an
excessive number of wrong PIN attempts quickly trigger long delays in accepting
commands.

3. Have a failure leakage mechanism to allow the TPM to reset the timed delays over
a period of time. This is useful in cases where a valid user has entered the wrong
PIN occasionally, for example, due to complexity of the PIN.

For example, it will take 14 years to guess an eight character PIN for a TPM that
implements the following protection:

1. Number of wrong PINs allowed before entering lockout (threshold): 9


2. Time the TPM is in lockout after the threshold is reached: 10 seconds
3. Timed delay doubles for each wrong PIN after the threshold is reached
Tpmvscmgr
Article • 02/27/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

2 Warning

Windows Hello for Business is the modern, two-factor authentication for Windows.
Microsoft will deprecate virtual smart cards in the near future. Customers using
virtual smart cards are strongly encouraged to move to Windows Hello for
Business. Microsoft will publish the deprecation date to ensure customers have
adequate lead time to move to Windows Hello for Business. We recommend that
new Windows deployments use Windows Hello for Business.

The Tpmvscmgr command-line tool allows users with Administrative credentials to


create and delete TPM virtual smart cards on a computer. For examples of how this
command can be used, see Examples.

Syntax
Tpmvscmgr create [/quiet] /name <name> /AdminKey {DEFAULT | PROMPT | RANDOM} [/PIN

{DEFAULT | PROMPT}] [/PUK {DEFAULT | PROMPT}] [/generate] [/machine <machine name>]

[/pinpolicy [policy options]] [/attestation {AIK_AND_CERT | AIK_ONLY}] [/?]

Tpmvscmgr destroy [/quiet] [/instance <device instance ID>] [/machine <machine

name>] [/?]

Parameters for Create command


The Create command sets up new virtual smart cards on the user's system. It returns the
instance ID of the newly created card for later reference if deletion is required. The
instance ID is in the format ROOT\SMARTCARDREADER\000n where n starts from 0 and is
increased by 1 each time you create a new virtual smart card.

Parameter Description

/name Required. Indicates the name of the new virtual smart card.
Parameter Description

/AdminKey Indicates the desired administrator key that can be used to reset the PIN of the card
if the user forgets the PIN.
DEFAULT Specifies the default value of
010203040506070801020304050607080102030405060708.
PROMPT Prompts the user to enter a value for the administrator key.
RANDOM Results in a random setting for the administrator key for a card that is
not returned to the user. This creates a card that might not be manageable by using
smart card management tools. When generated with RANDOM, the administrator
key is set as 48 hexadecimal characters.

/PIN Indicates desired user PIN value.


DEFAULT Specifies the default PIN of 12345678.
PROMPT Prompts the user to enter a PIN at the command line. The PIN must be a
minimum of eight characters, and it can contain numerals, characters, and special
characters.

/PUK Indicates the desired PIN Unlock Key (PUK) value. The PUK value must be a
minimum of eight characters, and it can contain numerals, characters, and special
characters. If the parameter is omitted, the card is created without a PUK.
DEFAULT Specifies the default PUK of 12345678.
PROMPT Prompts the user to enter a PUK at the command line.

/generate Generates the files in storage that are necessary for the virtual smart card to
function. If the /generate parameter is omitted, it's equivalent to creating a card
without this file system. A card without a file system can be managed only by a
smart card management system such as Microsoft Configuration Manager.

/machine Allows you to specify the name of a remote computer on which the virtual smart
card can be created. This can be used in a domain environment only, and it relies
on DCOM. For the command to succeed in creating a virtual smart card on a
different computer, the user running this command must be a member in the local
administrators group on the remote computer.

/pinpolicy If /pin prompt is used, /pinpolicy allows you to specify the following PIN policy
options:
minlen <minimum PIN length>
If not specified, defaults to 8. The lower bound is 4.
maxlen <maximum PIN length>
If not specified, defaults to 127. The upper bound is 127.
uppercase Can be ALLOWED, DISALLOWED, or REQUIRED. Default is ALLOWED.
lowercase Can be ALLOWED, DISALLOWED, or REQUIRED. Default is ALLOWED.
digits Can be ALLOWED, DISALLOWED, or REQUIRED. Default is ALLOWED.
specialchars Can be ALLOWED, DISALLOWED, or REQUIRED. Default is ALLOWED.

When using /pinpolicy, PIN characters must be printable ASCII characters.


Parameter Description

/attestation Configures attestation (subject only). This attestation uses an Attestation Identity
Key (AIK) certificate as a trust anchor to vouch that the virtual smart card keys and
certificates are truly hardware bound. The attestation methods are:
AIK_AND_CERT Creates an AIK and obtains an AIK certificate from the Microsoft
cloud certification authority (CA). This requires the device to have a TPM with an EK
certificate. If this option is specified and there's no network connectivity, it's
possible that creation of the virtual smart card will fail.
AIK_ONLY Creates an AIK but doesn't obtain an AIK certificate.

/? Displays Help for this command.

Parameters for Destroy command


The Destroy command securely deletes a virtual smart card from a computer.

2 Warning

When a virtual smart card is deleted, it cannot be recovered.

Parameter Description

/instance Specifies the instance ID of the virtual smart card to be removed. The instanceID was
generated as output by Tpmvscmgr.exe when the card was created. The /instance
parameter is a required field for the Destroy command.

/machine Allows you to specify the name of a remote computer on which the virtual smart
card will be deleted. This can be used in a domain environment only, and it relies on
DCOM. For the command to succeed in deleting a virtual smart card on a different
computer, the user running this command must be a member in the local
administrators group on the remote computer.

/? Displays Help for this command.

Remarks
Membership in the Administrators group (or equivalent) on the target computer is the
minimum required to run all the parameters of this command.

For alphanumeric inputs, the full 127 character ASCII set is allowed.

Examples
The following command shows how to create a virtual smart card that can be later
managed by a smart card management tool launched from another computer.

Console

tpmvscmgr.exe create /name "VirtualSmartCardForCorpAccess" /AdminKey DEFAULT


/PIN PROMPT

Alternatively, instead of using a default administrator key, you can create an


administrator key at the command line. The following command shows how to create an
administrator key.

Console

tpmvscmgr.exe create /name "VirtualSmartCardForCorpAccess" /AdminKey PROMPT


/PIN PROMPT

The following command will create the unmanaged virtual smart card that can be used
to enroll certificates.

Console

tpmvscmgr.exe create /name "VirtualSmartCardForCorpAccess" /AdminKey RANDOM


/PIN PROMPT /generate

The preceding command will create a virtual smart card with a randomized
administrator key. The key is automatically discarded after the card is created. This
means that if the user forgets the PIN or wants to the change the PIN, the user needs to
delete the card and create it again. To delete the card, the user can run the following
command.

Console

tpmvscmgr.exe destroy /instance <instance ID>

where <instance ID> is the value printed on the screen when the user created the card.
Specifically, for the first card created, the instance ID is
ROOT\SMARTCARDREADER\0000.

The following command will create a TPM virtual smart card with the default value for
the administrator key and a specified PIN policy and attestation method:

Console
tpmvscmgr.exe create /name "VirtualSmartCardForCorpAccess" /PIN PROMPT
/pinpolicy minlen 4 maxlen 8 /AdminKey DEFAULT /attestation AIK_AND_CERT
/generate
Enterprise certificate pinning overview
Article • 05/31/2023 • Applies to: ✅ Windows 11, ✅ Windows 10

Enterprise certificate pinning is a Windows feature for remembering (pinning), a root issuing
certificate authority, or end-entity certificate, to a domain name.
The feature helps to reduce man-in-the-middle attacks by protecting internal domain names from
chaining to unwanted or fraudulently issued certificates.

7 Note

External domain names, where the certificate issued to these domains is issued by a public
certificate authority, are not ideal for enterprise certificate pinning.

Windows Certificate APIs (CertVerifyCertificateChainPolicy and WinVerifyTrust) are updated to


check if the site's chain that authenticates servers matches a restricted set of certificates.
The restrictions are encapsulated in a Pin Rules Certificate Trust List (CTL) that is configured and
deployed to Windows devices.
Any site certificates that trigger a name mismatch causes Windows to write an event to the CAPI2
event log, and prevents the user from browsing the web site.

7 Note

Enterprise Certificate Pinning feature triggering doesn't cause clients other than Microsoft
Edge to block the connection.

Deployment
To deploy enterprise certificate pinning, you need to:

Create a well-formatted certificate pinning rule XML file


Create a pin rules certificate trust list file from the XML file
Apply the pin rules certificate trust list file to a reference administrative computer
Deploy the registry configuration on the reference computer via group policy

Create a pin rules XML file


The XML-based pin rules file consists of a sequence of PinRule elements. Each PinRule element
contains a sequence of one or more Site elements and a sequence of zero or more Certificate
elements.

XML

<PinRules ListIdentifier="PinRulesExample" Duration="P28D">


<PinRule Name="AllCertificateAttributes" Error="None" Log="true">
<Certificate File="Single.cer"/>
<Certificate File="Multiple.p7b"/>
<Certificate File="Multiple.sst"/>
<Certificate Directory="Multiple"/>
<Certificate Base64="MIIBy … QFzuM"/>
<Certificate File="WillExpire.cer" EndDate="2015-05-12T00:00:00Z"/>
<Site Domain="xyz.com"/>
</PinRule>

<PinRule Name="MultipleSites" Log="false">


<Certificate File="Root.cer"/>
<Site Domain="xyz.com"/>
<Site Domain=".xyz.com"/>
<Site Domain="*.abc.xyz.com" AllSubdomains="true"/>
<Site Domain="WillNormalize.com"/>
</PinRule>

</PinRules>

PinRules element
The PinRules element can have the following attributes. For help with formatting Pin Rules, see
Represent a date in XML or Represent a duration in XML.

Attribute Description Required

Duration or Specifies when the Pin Rules expires. Either is required. NextUpdate Required? Yes. At
NextUpdate takes precedence if both are specified. least one is
Duration, represented as an XML TimeSpan data type, doesn't allow required.
years and months. You represent the NextUpdate attribute as an
XML DateTime data type in UTC.

LogDuration or Configures auditing only to extend beyond the expiration of No.


LogEndDate enforcing the Pin Rules.
LogEndDate, represented as an XML DateTime data type in UTC,
takes precedence if both are specified.
You represent LogDuration as an XML TimeSpan data type, which
doesn't allow years and months.
If `none of the attributes are specified, auditing expiration uses
Duration or NextUpdate attributes.

ListIdentifier Provides a friendly name for the list of pin rules. Windows doesn't No.
use this attribute for certificate pinning enforcement; however, it's
included when the pin rules are converted to a certificate trust list
(CTL).

PinRule element

The PinRule element can have the following attributes.


Attribute Description Required

Name Uniquely identifies the PinRule. Windows uses the attribute to identify the element Yes.
for a parsing error or for verbose output. The attribute isn't included in the
generated certificate trust list (CTL).

Error Describes the action Windows performs when it encounters a PIN mismatch. You can No.
choose from the following string values:
- Revoked - Windows reports the certificate protecting the site as if it was revoked.
This typically prevents the user from accessing the site.
- InvalidName - Windows reports the certificate protecting the site as if the name on
the certificate doesn't match the name of the site. This typically results in prompting
the user before accessing the site.
- None - The default value. No error is returned. You can use the setting to audit the
pin rules without introducing any user friction.

Log A Boolean value represents a string that equals true or false. By default, logging is No.
enabled (true).

Certificate element
The Certificate element can have the following attributes.

Attribute Description Required

File Path to a file containing one or more certificates. Where the Yes (File, Directory, or
certificate(s) can be encoded as: Base64 must be
- single certificate present).
- p7b
- sst
These files can also be Base64 formatted. All Site elements included in
the same PinRule element can match any of these certificates.

Directory Path to a directory containing one or more of the above certificate files. Yes (File, Directory, or
Skips any files not containing any certificates. Base64 must be
present).

Base64 Base64 encoded certificate(s). Where the certificate(s) can be encoded Yes (File, Directory, or
as: Base64 must be
- single certificate present).
- p7b
- sst
This allows the certificates to be included in the XML file without a file
directory dependency.
Note:
You can use certutil -encode to convert a .cer file into base64. You can
then use Notepad to copy and paste the base64 encoded certificate
into the pin rule.

EndDate Enables you to configure an expiration date for when the certificate is No.
no longer valid in the pin rule.
If you are in the process of switching to a new root or CA, you can set
the EndDate to allow matching of this element's certificates.
If the current time is past the EndDate, when creating the certificate
Attribute Description Required

trust list (CTL) the parser outputs a warning message and excludes the
certificate(s) from the Pin Rule in the generated CTL.
For help with formatting Pin Rules, see Represent a date in XML.

Site element
The Site element can have the following attributes.

Attribute Description Required

Domain Contains the DNS name to be matched for this pin rule. When you create the Yes.
certificate trust list, the parser normalizes the input name string value as
follows:
- If the DNS name has a leading "*", it's removed.
- Non-ASCII DNS name is converted to ASCII Puny Code.
- Upper case ASCII characters are converted to lower case.
If the normalized name has a leading ".", then wildcard left-hand label
matching is enabled. For example, ".xyz.com" would match "abc.xyz.com".

AllSubdomains By default, wildcard left-hand label matching is restricted to a single left-hand No.
label. This attribute can be set to "true" to enable wildcard matching of all of
the left-hand labels.
For example, setting this attribute would also match "123.abc.xyz.com" for the
".xyz.com" domain value.

Create a pin rules certificate trust list


The Certutil.exe command includes the generatePinRulesCTL argument. The argument parses the
XML file and generates the encoded certificate trust list (CTL) that you add to your reference
Windows device and then deploy. The syntax is:

Windows Command Prompt

CertUtil [Options] -generatePinRulesCTL XMLFile CTLFile [SSTFile]


Generate Pin Rules CTL
XMLFile -- input XML file to be parsed.
CTLFile -- output CTL file to be generated.
SSTFile -- optional .sst file to be created.
The .sst file contains all of the certificates
used for pinning.

Options:
-f -- Force overwrite
-v -- Verbose operation

The same certificate(s) can occur in multiple PinRule elements


The same domain can occur in multiple PinRule elements
Certutil coalesces these in the resultant pin rules certificate trust list
Certutil.exe doesn't strictly enforce the XML schema definition
Certutil performs the following to enable other tools to add/consume their own specific elements
and attributes:

Skips elements before and after the PinRules element


Skips any element not matching Certificate or Site within the PinRules element
Skips any attributes not matching the above names for each element type

Use the certutil command with the generatePinRulesCTL argument along with your XML file that
contains your certificate pinning rules. Lastly, provide the name of an output file that will include
your certificate pinning rules in the form of a certificate trust list.

Windows Command Prompt

certutil -generatePinRulesCTL certPinRules.xml pinrules.stl

Apply certificate pinning rules to a reference computer


Now that your certificate pinning rules are in the certificate trust list format, you need to apply the
settings to a reference computer as a prerequisite to deploying the setting to your enterprise. To
simplify the deployment configuration, it's best to apply your certificate pinning rules to a
computer that has the Group Policy Management Console (GPMC) included in the Remote Server
Administration Tools (RSAT).

Use certutil.exe to apply your certificate pinning rules to your reference computer using the setreg
argument.
The setreg argument takes a secondary argument that determines the location of where certutil
writes the certificate pining rules.
The secondary argument is chain\PinRules.
The last argument you provide is the name of file that contains your certificate pinning rules in
certificate trust list format ( .stl ).
You pass the name of the file as the last argument. You must prefix the file name with the @
symbol as in the following example:

Windows Command Prompt

Certutil -setreg chain\PinRules @pinrules.stl

7 Note

You must execute the command from an elevated command prompt.

Certutil writes the binary information to the following registration location:

Name Value

Key HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType0\CertDllCreateCertificateChainEngine\Config
Name
Name Value
PinRules

Value Binary contents from the certificate pin rules certificate trust list file

Data REG_BINARY
type

Deploy enterprise pin rule settings using group policy


From the XML file, you've created a certificate pinning trust list file. Then, you've applied the
content of the file to your reference device from which you can run the Group Policy Management
Console.

The next step consists of configuring a group policy object that includes the applied certificate pin
rule settings, and deploy it in your environment.

Sign-in to the reference computer using domain administrator equivalent credentials.

1. Start the Group Policy Management Console (gpmc.msc)


2. In the navigation pane, expand the forest node and then expand the domain node
3. Expand the node that contains your Active Directory's domain name
4. Select the Group Policy objects node. Right-click the Group Policy objects node and select
New
5. In the New GPO dialog box, type Enterprise Certificate Pinning Rules in the Name text box
and select OK
6. In the content pane, right-click the Enterprise Certificate Pinning Rules Group Policy object
and select Edit
7. In the Group Policy Management Editor, in the navigation pane, expand the Preferences
node under Computer Configuration. Expand Windows Settings
8. Right-click the Registry node and select New
9. In the New Registry Properties dialog box, select Update from the Action list. Select
HKEY_LOCAL_MACHINE from the Hive list
10. For the Key Path, select … to launch the Registry Item Browser. Navigate to the following
registry key and select the PinRules registry value name:

HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType0\CertDllCreateCertificateChainEngine\C

onfig

Select Select to close the Registry Item Browser

1. The Key Path should contain the selected registry key. The Value name configuration should
contain the registry value name PinRules. Value type should read REG_BINARY and Value
data should contain a long series of numbers from 0-9 and letters ranging from A-F
(hexadecimal). Select OK to save your settings and close the dialog box

1. Close the Group Policy Management Editor to save your settings


2. Link the Enterprise Certificate Pinning Rules GPO to the OU containing the devices that you
want to configure

Additional pin rules logging


To help constructing certificate pinning rules, you can configure the PinRulesLogDir setting under
the certificate chain configuration registry key to include a parent directory to log pin rules.

Name Value

Key HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType0\CertDllCreateCertificateChainEngine\Config
Name Value

Name PinRulesLogDir

Value The Parent directory where Windows should write the additional pin rule logs

Data REG_SZ
type

Permission for the pin rule log folder


The folder in which Windows writes the additional pin rule logs must have permissions so that all
users and applications have full access. You can run the following commands from an elevated
command prompt to achieve the proper permissions.

Windows Command Prompt

set PinRulesLogDir=c:\PinRulesLog
mkdir %PinRulesLogDir%
icacls %PinRulesLogDir% /grant *S-1-15-2-1:(OI)(CI)(F)
icacls %PinRulesLogDir% /grant *S-1-1-0:(OI)(CI)(F)
icacls %PinRulesLogDir% /grant *S-1-5-12:(OI)(CI)(F)
icacls %PinRulesLogDir% /inheritance:e /setintegritylevel (OI)(CI)L

When an application verifies a TLS/SSL certificate chain that contains a server name matching a
DNS name in the server certificate, Windows writes a .p7b file consisting of all the certificates in
the server's chain to one of three child folders:

AdminPinRules : Matched a site in the enterprise certificate pinning rules

AutoUpdatePinRules : Matched a site in the certificate pinning rules managed by Microsoft


NoPinRules : Didn't match any site in the certificate pin rules

The output file name consists of the leading eight ASCII hex digits of the root's SHA1 thumbprint
followed by the server name. For example:

D4DE20D0_xsi.outlook.com.p7b

DE28F4A4_www.yammer.com.p7b

If there's either an enterprise certificate pin rule or a Microsoft certificate pin rule mismatch, then
Windows writes the .p7b file to the MismatchPinRules child folder. If the pin rules have expired,
then Windows writes the .p7b to the ExpiredPinRules child folder.

Represent a date in XML


Many attributes within the pin rules xml file are dates.
These dates must be properly formatted and represented in UTC.
You can use Windows PowerShell to format these dates.
You can then copy and paste the output of the cmdlet into the XML file.
For simplicity, you can truncate decimal point (.) and the numbers after it. However, be certain to
append the uppercase "Z" to the end of the XML date string.

Windows Command Prompt

2015-05-11T07:00:00.2655691Z
2015-05-11T07:00:00Z

Convert an XML date


You can also use Windows PowerShell to validate and convert an XML date into a human readable
date to validate it's the correct date.

Represent a duration in XML


Some elements may be configured to use a duration rather than a date. You must represent the
duration as an XML timespan data type. You can use Windows PowerShell to properly format and
validate durations (timespans) and copy and paste them into your XML file.
Convert an XML duration
You can convert an XML formatted timespan into a timespan variable that you can read.
Certificate trust list XML schema definition (XSD)
XML

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"


xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="PinRules">
<xs:complexType>
<xs:sequence>
<xs:element name="PinRule" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Certificate" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:dateTime" name="EndDate"
use="optional"/>
<xs:attribute type="xs:string" name="File" use="optional"/>
<xs:attribute type="xs:string" name="Directory"
use="optional"/>
<xs:attribute type="xs:base64Binary" name="Base64"
use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Site" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="Domain"/>
<xs:attribute type="xs:boolean" name="AllSubdomains"
use="optional" default="false"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="Name"/>
<xs:attribute name="Error" use="optional" default="None">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value ="Revoked"/>
<xs:enumeration value ="InvalidName"/>
<xs:enumeration value ="None"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:boolean" name="Log" use="optional"
default="true"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:duration" name="Duration" use="optional"/>
<xs:attribute type="xs:duration" name="LogDuration" use="optional"/>
<xs:attribute type="xs:dateTime" name="NextUpdate" use="optional"/>
<xs:attribute type="xs:dateTime" name="LogEndDate" use="optional"/>
<xs:attribute type="xs:string" name="ListIdentifier" use="optional"/>
</xs:complexType>
</xs:element>
</xs:schema>
Web sign-in for Windows
Article • 09/27/2023 • Applies to: ✅ Windows 11

Starting in Windows 11, version 22H2 with KB5030310 , you can enable a web-based sign-in experience
on Microsoft Entra joined devices, unlocking new sign-in options and capabilities. This feature is called
Web sign-in.

Web sign-in is a credential provider, and it was initially introduced in Windows 10 with support for
Temporary Access Pass (TAP) only. With the release of Windows 11, the supported scenarios and
capabilities of Web sign-in are expanded.
For example, you can sign in with the Microsoft Authenticator app or with a SAML-P federated identity.

This article describes how to configure Web sign-in and the supported key scenarios.

System requirements
To use web sign-in, the clients must meet the following prerequisites:

Windows 11, version 22H2 with 5030310 , or later


Must be Microsoft Entra joined
Must have Internet connectivity, as the authentication is done over the Internet

Windows edition and licensing requirements


The following table lists the Windows editions that support Web sign-in:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Web sign-in license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Configure web sign-in


To use web sign-in, your devices must be configured with different policies. Review the following
instructions to configure your devices using either Microsoft Intune or a provisioning package (PPKG).

Intune

To configure devices using Microsoft Intune, create a Settings catalog policy and use the following
settings:
Category Setting name Value

Authentication Enable Web Sign Enabled


In

Authentication Configure Web This setting is optional, and it contains a list of domains required for sign
Sign In Allowed in, for example:
Urls - idp.example.com
- example.com

Authentication Configure This setting is optional, and it should be configured if you need to use the
Webcam Access webcam during the sign-in process. Specify the list of domains that are
Domain Names allowed to use the webcam during the sign-in process, for example:
example.com

Assign the policy to a group that contains as members the devices or users that you want to
configure.

Alternatively, you can configure devices using a custom policy with the following settings:

OMA-URI More information

./Vendor/MSFT/Policy/Config/Authentication/EnableWebSignIn EnableWebSignIn

./Vendor/MSFT/Policy/Config/Authentication/ConfigureWebSignInAllowedUrls ConfigureWebSignInAllowedUrls

./Vendor/MSFT/Policy/Config/Authentication/ConfigureWebCamAccessDomainNames ConfigureWebcamAccessDomainNames

User experiences
Once the devices are configured, a new sign-in experience becomes available, as indicated by the
presence of the Web sign-in credential provider in the Windows lock screen.

Here's a list of key scenarios supported by Web sign-in, and a brief animation showing the user
experience. Select the thumbnail to start the animation.

Passwordless sign-in

Users can sign in to Windows passwordless, even before enrolling in Windows Hello for Business. For
example, by using the Microsoft Authenticator app as a sign-in method.

 Tip
When used in conjuction with Windows Hello for Business passwordless, you can hide the password
credential provider from the lock screen as well as in-session authentication scenarios. This enables a
truly passwordless Windows experience.

To learn more:

Enable passwordless sign-in with Microsoft Authenticator


Passwordless authentication options for Microsoft Entra ID
Windows passwordless experience

Windows Hello for Business PIN reset

The Windows Hello PIN reset flow is seamless and more robust than in previous versions.

For more information, see PIN reset.

Temporary Access Pass (TAP)

A Temporary Access Pass (TAP) is a time-limited passcode granted by an administrator to a user. Users
can sign in with a TAP using the Web sign-in credential provider. For example:
to onboard Windows Hello for Business or a FIDO2 security key
if lost or forgotten FIDO2 security key and unknown password

For more information, see Use a Temporary Access Pass.

Sign in with a federated identity

If the Microsoft Entra ID tenant is federated with a third-party SAML-P identity provider (IdP), federated
users can sign using the Web sign-in credential provider.

 Tip

To improve the user experience for federated identities:


Configure the preferred Azure AD tenant name feature, which allows users to select the domain
name during the sign-in process. The users are then automatically redirected to the identity
provider sign-in page.
Enable Windows Hello for Business. Once the user signs in, the user can enroll in Windows
Hello for Business and then use it to sign in to the device

For more information about preferred tenant name, see Authentication CSP -
PreferredAadTenantDomainName.

Important considerations
Here's a list of important considerations to keep in mind when configuring or using Web sign-in:

Cached credentials aren't supported with Web sign-in. If the device is offline, the user can't use the
Web sign-in credential provider to sign in
After sign out, the user isn't displayed in the user selection list
Once enabled, the Web sign-in credential provider is the default credential provider for new users
signing in to the device. To change the default credential provider, you can use the
DefaultCredentialProvider ADMX-backed policy
The user can exit the Web sign-in flow by pressing Ctrl + Alt + Delete to get back to the Windows
lock screen

Known issues
If you attempt to sign in while the device is offline, you get the following message: It doesn't look
that you're connected to the Internet. Check your connection and try again. Selecting the Back to sign-
in option doesn't bring you back to the lock screen. As a workaround, you can press Ctrl + Alt +
Delete to get back to the lock screen.

Provide feedback
To provide feedback for web sign-in, open Feedback Hub and use the category Security and Privacy >
Passwordless experience.
Configure federated sign-in for
Windows devices
Article • 09/11/2023 • Applies to: ✅ Windows 11, ✅ Windows 11 SE

Starting in Windows 11 SE, version 22H2 and Windows 11 Pro Edu/Education, version
22H2 with KB5022913 , you can enable your users to sign-in using a federated identity
provider (IdP) via web sign-in.
This feature is called federated sign-in.
Federated sign-in is a great way to simplify the sign-in process for your users: instead of
having to remember a username and password defined in Azure AD, they can sign-in
using their existing credentials from the IdP. For example, students and educators can
use QR code badges to sign-in.

Benefits of federated sign-in


Federated sign-in enables students to sign-in in less time, and with less friction. With
fewer credentials to remember and a simplified sign-in process, students are more
engaged and focused on learning.

) Important

Currently, this feature is designed for 1:1 devices. For an optimal experience, you
should not enable federated sign-in on shared devices.

Prerequisites
To implement federated sign-in, the following prerequisites must be met:

1. An Azure AD tenant, with one or multiple domains federated to a third-party IdP.


For more information, see What is federation with Azure AD? and Use a SAML 2.0
IdP for Single Sign On

7 Note

If your organization uses a third-party federation solution, you can configure


single sign-on to Azure Active Directory if the solution is compatible with
Azure Active Directory. For questions regarding compatibility, contact your
identity provider. If you're an IdP, and would like to validate your solution for
interoperability, refer to these guidelines .

For a step-by-step guide on how to configure Google Workspace as an


identity provider for Azure AD, see Configure federation between Google
Workspace and Azure AD
For a step-by-step guide on how to configure Clever as an identity provider
for Azure AD, see Setup guide for Badges into Windows and Azure AD

2. Individual IdP accounts created: each user requires an account defined in the third-
party IdP platform

3. Individual Azure AD accounts created: each user requires a matching account


defined in Azure AD. These accounts are commonly created through automated
solutions, for example:

School Data Sync (SDS)


Azure AD Connect sync for environment with on-premises AD DS
PowerShell scripts that call the Microsoft Graph API
provisioning tools offered by the IdP

For more information about identity matching, see Identity matching in Azure AD.

4. Licenses assigned to the Azure AD user accounts. It's recommended to assign


licenses to a dynamic group: when new users are provisioned in Azure AD, the
licenses are automatically assigned. For more information, see Assign licenses to
users by group membership in Azure Active Directory

5. Enable federated sign-in on the Windows devices

To use federated sign-in, the devices must have Internet access. This feature doesn't
work without it, as the authentication is done over the Internet.

) Important

WS-Fed is the only supported federated protocol to join a device to Azure AD. If
you have a SAML 2.0 IdP, it's recommended to complete the Azure AD join process
using one of the following methods:

Provisioning packages (PPKG)


Windows Autopilot self-deploying mode
Windows edition and licensing requirements
The following table lists the Windows editions that support Federated sign-in:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

No No Yes Yes

Federated sign-in license entitlements are granted by the following licenses:

Windows Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes No No

For more information about Windows licensing, see Windows licensing overview.

Federated sign-in for student assigned (1:1) devices is supported on the following
Windows editions and versions:

Windows 11 SE, version 22H2 and later


Windows 11 Pro Edu/Education, version 22H2 with KB5022913

Federated sign-in for shared devices is supported starting in Windows 11 SE/Pro


Edu/Education, version 22H2 with KB5026446 .

Configure federated sign-in


You can configure federated sign-in for student assigned (1:1) devices or student shared
devices:

When federated sign-in is configured for student assigned (1:1) devices, the first
user who signs in to the device with a federated identity becomes the primary user.
The primary user is always displayed in the bottom left corner of the sign-in screen
When federated sign-in is configured for student shared devices, there's no
primary user. The sign-in screen displays, by default, the last user who signed in to
the device

The configuration is different for each scenario, and is described in the following
sections.

Configure federated sign-in for student assigned (1:1)


devices
To use web sign-in with a federated identity provider, your devices must be configured
with different policies. Review the following instructions to configure your devices using
either Microsoft Intune or a provisioning package (PPKG).

Intune

To configure devices using Microsoft Intune, create a Settings catalog policy and
use the following settings:

Category Setting name Value

Education Is Education Enabled


Environment

Federated Enable Web Enabled


Authentication Sign In For
Primary User

Authentication Configure Web Semicolon separated list of domains, for example:


Sign In samlidp.clever.com;clever.com;mobile-
Allowed Urls redirector.clever.com

Authentication Configure This setting is optional, and it should be configured if


Webcam you need to use the webcam during the sign-in process.
Access Specify the list of domains that are allowed to use the
Domain webcam during the sign-in process, separated by a
Names semicolon. For example: clever.com

Assign the policy to a group that contains as members the devices or users that you
want to configure.

Alternatively, you can configure devices using a custom policy with the following
settings:

Setting

OMA-URI: ./Vendor/MSFT/Policy/Config/Education/IsEducationEnvironment
Data type: int
Value: 1

OMA-URI:
./Vendor/MSFT/Policy/Config/FederatedAuthentication/EnableWebSignInForPrimaryUser
Data type: int
Value: 1

OMA-URI: ./Vendor/MSFT/Policy/Config/Authentication/ConfigureWebSignInAllowedUrls
Data type: String
Setting

Value: Semicolon separated list of domains, for example:


samlidp.clever.com;clever.com;mobile-redirector.clever.com

OMA-URI:
./Vendor/MSFT/Policy/Config/Authentication/ConfigureWebCamAccessDomainNames **
Data type: String
Value: This setting is optional, and it should be configured if you need to use the webcam
during the sign-in process. Specify the list of domains that are allowed to use the webcam
during the sign-in process, separated by a semicolon. For example: clever.com

Configure federated sign-in for student shared devices


To use web sign-in with a federated identity provider, your devices must be configured
with different policies. Review the following instructions to configure your shared
devices using either Microsoft Intune or a provisioning package (PPKG).

Intune

To configure devices using Microsoft Intune, create a Settings catalog policy and
use the following settings:

Category Setting name Value

Education Is Education Enabled


Environment

SharedPC Enable Shared True


PC Mode With
OneDrive Sync

Authentication Enable Web Enabled


Sign In

Authentication Configure Web Semicolon separated list of domains, for example:


Sign In samlidp.clever.com;clever.com;mobile-
Allowed Urls redirector.clever.com

Authentication Configure This setting is optional, and it should be configured if you


Webcam need to use the webcam during the sign-in process.
Access Domain Specify the list of domains that are allowed to use the
Names webcam during the sign-in process, separated by a
semicolon. For example: clever.com
Assign the policy to a group that contains as members the devices or users that you
want to configure.

Alternatively, you can configure devices using a custom policy with the following
settings:

Setting

OMA-URI: ./Vendor/MSFT/Policy/Config/Education/IsEducationEnvironment
Data type: int
Value: 1

OMA-URI: ./Vendor/MSFT/SharedPC/EnableSharedPCModeWithOneDriveSync
Data type: Boolean
Value: True

OMA-URI: ./Vendor/MSFT/Policy/Config/Authentication/EnableWebSignIn
Data type: Integer
Value: 1

OMA-URI: ./Vendor/MSFT/Policy/Config/Authentication/ConfigureWebSignInAllowedUrls
Data type: String
Value: Semicolon separated list of domains, for example:
samlidp.clever.com;clever.com;mobile-redirector.clever.com

OMA-URI: ./Vendor/MSFT/Policy/Config/Authentication/ConfigureWebCamAccessDomainNames
Data type: String
Value: This setting is optional, and it should be configured if you need to use the webcam
during the sign-in process. Specify the list of domains that are allowed to use the webcam
during the sign-in process, separated by a semicolon. For example: clever.com

How to use federated sign-in


Once the devices are configured, a new sign-in experience becomes available.

As users enter their username, they're redirected to the identity provider sign-in page.
Once the Idp authenticates the users, they're signed-in. In the following animation, you
can observe how the first sign-in process works for a student assigned (1:1) device:
) Important

For student assigned (1:1) devices, once the policy is enabled, the first user who
sign-in to the device will also set the disambiguation page to the identity provider
domain on the device. This means that the device will be defaulting to that IdP. The
user can exit the federated sign-in flow by pressing Ctrl + Alt + Delete to get back
to the standard Windows sign-in screen. The behavior is different for student
shared devices, where the disambiguation page is always shown, unless preferred
Azure AD tenant name is configured.

Important considerations

Known issues affecting student assigned (1:1) devices


Federated sign-in for student assigned (1:1) devices doesn't work with the following
settings enabled:

EnableSharedPCMode or EnableSharedPCModeWithOneDriveSync, which are


part of the SharedPC CSP
Interactive logon: do not display last signed in, which is a security policy part of
the Policy CSP
Take a Test in kiosk mode, since it uses the security policy above

Known issues affecting student shared devices


The following issues are known to affect student shared devices:

Non-federated users can't sign-in to the devices, including local accounts


Take a Test in kiosk mode, since it uses a local guest account to sign in

Account management
For student shared devices, it's recommended to configure the account management
policies to automatically delete the user profiles after a certain period of inactivity or
disk levels. For more information, see Set up a shared or guest Windows device.

Preferred Azure AD tenant name


To improve the user experience, you can configure the preferred Azure AD tenant name
feature.
When using preferred AAD tenant name, the users bypass the disambiguation page and
are redirected to the identity provider sign-in page. This configuration can be especially
useful for student shared devices, where the disambiguation page is always shown.

For more information about preferred tenant name, see Authentication CSP -
PreferredAadTenantDomainName.

Identity matching in Azure AD


When an Azure AD user is federated, the user's identity from the IdP must match an
existing user object in Azure AD. After the token sent by the IdP is validated, Azure AD
searches for a matching user object in the tenant by using an attribute called
ImmutableId.

7 Note

The ImmutableId is a string value that must be unique for each user in the tenant,
and it shouldn't change over time. For example, the ImmutableId could be the
student ID or SIS ID. The ImmutableId value should be based on the federation
setup and configuration with your IdP, so confirm with your IdP before setting it.

If the matching object is found, the user is signed-in. Otherwise, the user is presented
with an error message. The following picture shows that a user with the ImmutableId
260051 can't be found:

) Important

The ImmutableId matching is case-sensitive.

The ImmutableId is typically configured when the user is created in Azure AD, but it can
also be updated later.
In a scenario where a user is federated and you want to change the ImmutableId, you
must:

1. Convert the federated user to a cloud-only user (update the UPN to a non-
federated domain)
2. Update the ImmutableId
3. Convert the user back to a federated user

Here's a PowerShell example to update the ImmutableId for a federated user:

PowerShell

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force


Install-Module Microsoft.Graph -Scope CurrentUser
Import-Module Microsoft.Graph
Connect-MgGraph -Scopes 'User.Read.All', 'User.ReadWrite.All'

#1. Convert the user from federated to cloud-only


Update-MgUser -UserId alton@example.com -UserPrincipalName
alton@example.onmicrosoft.com

#2. Convert the user back to federated, while setting the immutableId
Update-MgUser -UserId alton@example.onmicrosoft.com -UserPrincipalName
alton@example.com -OnPremisesImmutableId '260051'

Troubleshooting
The user can exit the federated sign-in flow by pressing Ctrl + Alt + Delete to get
back to the standard Windows sign-in screen
Select the Other User button, and the standard username/password credentials are
available to log into the device
What is Windows LAPS?
Article • 09/06/2023

Windows Local Administrator Password Solution (Windows LAPS) is a Windows feature


that automatically manages and backs up the password of a local administrator account
on your Azure Active Directory-joined or Windows Server Active Directory-joined
devices. You also can use Windows LAPS to automatically manage and back up the
Directory Services Restore Mode (DSRM) account password on your Windows Server
Active Directory domain controllers. An authorized administrator can retrieve the DSRM
password and use it.

Windows LAPS supported platforms and Azure


AD LAPS preview status
Windows LAPS is now available on the following OS platforms with the specified update
or later installed:

Windows 11 22H2 - April 11 2023 Update


Windows 11 21H2 - April 11 2023 Update
Windows 10 - April 11 2023 Update
Windows Server 2022 - April 11 2023 Update
Windows Server 2019 - April 11 2023 Update

All supported editions of the above platforms have been updated with Windows LAPS,
including LTSC editions. The introduction of the Windows LAPS feature doesn't modify
in any way whatsoever the standard Microsoft product lifecycle policies.

The Windows LAPS on-premises Active Directory scenarios are fully supported as of the
above updates.

) Important

Windows LAPS with Microsoft Entra (Azure AD) and Microsoft Intune support is
now in public preview as of April 21st 2023.

For more information, see:

Introducing Windows Local Administrator Password Solution with Azure AD

Windows Local Administrator Password Solution in Azure AD (preview)


Microsoft Intune support for Windows LAPS

Benefits of using Windows LAPS


Use Windows LAPS to regularly rotate and manage local administrator account
passwords and get these benefits:

Protection against pass-the-hash and lateral-traversal attacks


Improved security for remote help desk scenarios
Ability to sign in to and recover devices that are otherwise inaccessible
A fine-grained security model (access control lists and optional password
encryption) for securing passwords that are stored in Windows Server Active
Directory
Support for the Azure role-based access control model for securing passwords that
are stored in Azure Active Directory

Informational videos
The following videos offer an informative way to learn more about the Windows LAPS
feature.

Windows Technical Takeoff presentation (November 2022):


https://www.youtube-nocookie.com/embed/jdEDIXm4JgU

Windows Tackling Tech discussion (August 2023):


https://www.youtube-nocookie.com/embed/bcs1gPB4dOQ

Key Windows LAPS scenarios


You can use Windows LAPS for several primary scenarios:

Back up local administrator account passwords to Azure Active Directory (for Azure
Active Directory-joined devices)

Back up local administrator account passwords to Windows Server Active Directory


(for Windows Server Active Directory-joined clients and servers)

Back up DSRM account passwords to Windows Server Active Directory (for


Windows Server Active Directory domain controllers)
Back up local administrator account passwords to Windows Server Active Directory
by using legacy Microsoft LAPS

In each scenario, you can apply different policy settings.

Understand device join state restrictions


Whether a device is joined to Azure Active Directory or Windows Server Active Directory
determines how you can use Windows LAPS.

Devices that are joined only to Azure Active Directory can back up passwords only to
Azure Active Directory.

Devices that are joined only to Windows Server Active Directory can back up passwords
only to Windows Server Active Directory.

Devices that are hybrid-joined (joined to both Azure Active Directory and Windows
Server Active Directory) can back up their passwords either to Azure Active Directory or
to Windows Server Active Directory. You can't back up passwords to both Azure Active
Directory and Windows Server Active Directory.

Windows LAPS doesn't support Azure Active Directory workplace-joined clients.

Set Windows LAPS policy


To set up and manage policy for your Windows LAPS deployment, you have multiple
options:

Windows LAPS configuration service provider (CSP)


Windows LAPS Group Policy
Legacy Microsoft LAPS

Manage and monitor Windows LAPS


You also have various options to manage and monitor Windows LAPS.

Options for Windows include:

The Windows Server Active Directory Users and Computers properties dialog
A dedicated event log channel
A Windows PowerShell module that's specific to Windows LAPS
Azure-based monitoring and reporting solutions are available when you back up
passwords to Azure Active Directory.

Windows LAPS vs. legacy Microsoft LAPS


You can still download an earlier version of Local Administrator Password Solution,
legacy Microsoft LAPS .

Windows LAPS inherits many design concepts from legacy Microsoft LAPS. If you're
familiar with legacy Microsoft LAPS, many Windows LAPS features are familiar. A key
difference is that Windows LAPS is an entirely separate implementation that's native to
Windows. Windows LAPS also adds many features that aren't available in legacy
Microsoft LAPS. You can use Windows LAPS to back up passwords to Azure Active
Directory, encrypt passwords in Windows Server Active Directory, and store your
password history.

) Important

Windows LAPS doesn't require you to install legacy Microsoft LAPS. You can fully
deploy and use all Windows LAPS features without installing or referring to legacy
Microsoft LAPS. But to help migrate an existing legacy Microsoft LAPS deployment,
Windows LAPS offers legacy Microsoft LAPS emulation mode.

Support statement
Microsoft released the legacy Microsoft LAPS product in calendar year 2016 on the
Microsoft Download Center . Windows LAPS shipped as part of Windows Updates
released on April 11, 2023 for the platforms listed in Windows LAPS supported
platforms and Azure AD LAPS preview status.

Microsoft and its support delivery organization offer assisted support for both Microsoft
LAPS and Windows LAPS including interoperability between the two products.

Microsoft strongly recommends that customers begin planning now to migrate their
Windows LAPS-capable systems from using legacy Microsoft LAPS over to the new
Windows LAPS feature. Windows LAPS offers many new security features and improved
product servicing.

Questions about limitations and\or interoperability concerns between 3rd-party local


account password management tools and Windows LAPS should be directed to the 3rd-
party application developer not Microsoft.
Licensing requirements
The Windows LAPS feature itself is available for free in all supported Windows platforms.

You can back up passwords to your on-premises Active Directory with no other licensing
requirements.

You can back up passwords to Azure AD with an Azure AD Free or higher license.

Other Azure- or Intune-related features may have other licensing requirements.

Submitting feedback
Want to send us feedback? Feel free to submit doc-specific questions via the Feedback
links at the bottom of these doc pages.

You may also submit feedback and other requests via the Windows LAPS feedback
Tech Community page.

If your feedback is specific to the Azure AD- or Intune-related LAPS functionality, you
may submit feedback via the Azure AD feedback forum .

If you aren't sure where your feedback should go, submit it using any of the above
options.

See also
Introducing Windows Local Administrator Password Solution with Azure AD
Windows Local Administrator Password Solution in Azure AD (preview)
Microsoft Intune support for Windows LAPS
Windows LAPS CSP
Legacy Microsoft LAPS
Windows LAPS Troubleshooting Guidance
LAPS PowerShell module reference

Next steps
Key concepts in Windows LAPS
Get started with Windows LAPS for Windows Server Active Directory
Get started with Windows LAPS for Azure Active Directory
Get started with Windows LAPS in legacy Microsoft LAPS emulation mode
Account Lockout Policy
Article • 05/11/2023

Applies to

Windows 11
Windows 10

Describes the Account Lockout Policy settings and links to information about each
policy setting.

Someone who attempts to use more than a few unsuccessful passwords while trying to
log on to your system might be a malicious user who is attempting to determine an
account password by trial and error. Windows domain controllers keep track of logon
attempts, and domain controllers can be configured to respond to this type of potential
attack by disabling the account for a preset period of time. Account Lockout Policy
settings control the threshold for this response and the actions to be taken after the
threshold is reached. The Account Lockout Policy settings can be configured in the
following location in the Group Policy Management Console: Computer
Configuration\Policies\Windows Settings\Security Settings\Account Policies\Account
Lockout Policy.

The following topics provide a discussion of each policy setting's implementation and
best practices considerations, policy location, default values for the server type or Group
Policy Object (GPO), relevant differences in operating system versions, and security
considerations (including the possible vulnerabilities of each policy setting),
countermeasures that you can implement, and the potential impact of implementing the
countermeasures.

7 Note

Account lockout settings for remote access clients can be configured separately by
editing the Registry on the server that manages the remote access. For more
information, see How to configure remote access client account lockout.

Windows edition and licensing requirements


The following table lists the Windows editions that support Account Lockout Policy:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education


Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Account Lockout Policy license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

In this section
Topic Description

Account lockout Describes the best practices, location, values, and security considerations for
threshold the Account lockout threshold security policy setting.

Account lockout Describes the best practices, location, values, and security considerations for
duration the Account lockout duration security policy setting.

Reset account Describes the best practices, location, values, and security considerations for
lockout counter the Reset account lockout counter after security policy setting.
after

Related topics
Configure security policy settings
Enhanced Phishing Protection in
Microsoft Defender SmartScreen
Article • 09/25/2023 • Applies to: ✅ Windows 11, version 22H2

Starting in Windows 11, version 22H2, Enhanced Phishing Protection in Microsoft


Defender SmartScreen helps protect Microsoft school or work passwords against
phishing and unsafe usage on sites and apps.

If a user signs into Windows using a password, Enhanced Phishing Protection works
alongside Windows security protections, and helps protect typed work or school
password used to sign into Windows 11 in these ways:

If users type or paste their work or school password on any browser, into a site
deemed malicious by Microsoft Defender SmartScreen, Enhanced Phishing
Protection alerts them. It also alerts them to change their password so attackers
can't gain access to their account.
Reusing work or school passwords makes it easy for attackers who compromise a
user's password to gain access to their other accounts. Enhanced Phishing
Protection can warn users if they reuse their work or school Microsoft account
password on sites and apps and alert them to change their password.
Since it's unsafe to store plaintext passwords in text editors, Enhanced Phishing
Protection can warn users if they store their work or school password in Notepad,
Word, or any Microsoft 365 Office app, and recommends they delete their
password from the file.
If users type their work or school password into a website or app that SmartScreen
finds suspicious, Enhanced Phishing Protection can automatically collect
information from that website or app to help identify security threats. For example,
the content displayed, sounds played, and application memory.

7 Note

When a user signs-in to a device using a Windows Hello for Business PIN or
biometric, Enhanced Phishing Protection does not alert the user or send events to
Microsoft Defender for Endpoint.

Benefits of Enhanced Phishing Protection in


Microsoft Defender SmartScreen
Enhanced Phishing Protection provides robust phishing protections for work or school
passwords that are used to sign into Windows 11. The benefits of Enhanced Phishing
Protection are:

Anti-phishing support: Phishing attacks trick users through convincing imitations


of safe content or through credential harvesting content hosted inside trusted sites
and applications. Enhanced Phishing Protection helps protect users from reported
phishing sites by evaluating the URLs a site or app is connecting to, along with
other characteristics, to determine if they're known to distribute or host unsafe
content.

Secure operating system integration: Enhanced Phishing Protection is integrated


directly into the Windows 11 operating system, so it can understand users'
password entry context (including process connections, URLs, certificate
information) in any browser or app. Because Enhanced Phishing Protection has
unparalleled insight into what is happening at the OS level, it can identify when
users type their work or school password unsafely. If users do use their work or
school password unsafely, the feature empowers users to change their password to
minimize chances of their compromised credential being weaponized against
them.

Unparalleled telemetry shared throughout Microsoft's security suite: Enhanced


Phishing Protection is constantly learning from phishing attacks seen throughout
the entire Microsoft security stack. It works alongside other Microsoft security
products, to provide a layered approach to password security, especially for
organizations early in their password-less authentication journey. If your
organization uses Microsoft Defender for Endpoint, you can see valuable phishing
sensors data in the Microsoft 365 Defender Portal. This portal lets you view
Enhanced Phishing Protection alerts and reports for unsafe password usage in your
environment.

Easy management through Group Policy and Microsoft Intune: Enhanced


Phishing Protection works with Group Policy and mobile device management
(MDM) settings to help you manage your organization's computer settings. Based
on how you set up Enhanced Phishing Protection, you can customize which
phishing protection scenarios show users warning dialogs. For example, the Service
Enabled setting determines whether the Enhanced Phishing Protection service is
on or off. The feature is in audit mode if the other settings, which correspond to
notification policies, aren't enabled.

Windows edition and licensing requirements


The following table lists the Windows editions that support Enhanced phishing
protection with SmartScreen:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Enhanced phishing protection with SmartScreen license entitlements are granted by the
following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Configure Enhanced Phishing Protection for


your organization
Enhanced Phishing Protection can be configured via Microsoft Intune, Group Policy
Objects (GPO) or Configuration Service Providers (CSP) with an MDM service. Follow
these instructions to configure your devices using either Microsoft Intune, GPO or CSP.

Intune

To configure devices using Microsoft Intune, create a Settings catalog policy, and
use the settings listed under the category SmartScreen > Enhanced Phishing
Protection :

Setting Description

Service This policy setting determines whether Enhanced Phishing Protection is in


Enabled audit mode or off. Users don't see any notifications for any protection
scenarios when Enhanced Phishing Protection is in audit mode. In audit mode,
Enhanced Phishing Protection captures unsafe password entry events and
sends diagnostic data through Microsoft Defender.
If you enable or don't configure this setting, Enhanced Phishing Protection
is enabled in audit mode, preventing users to turn it off.
If you disable this policy setting, Enhanced Phishing Protection is off. When
off, Enhanced Phishing Protection doesn't capture events, send data, or notify
users. Additionally, your users are unable to turn it on.
Setting Description

Notify This policy setting determines whether Enhanced Phishing Protection warns
Malicious your users if they type their work or school password into one of the following
malicious scenarios: into a reported phishing site, into a sign-in URL with an
invalid certificate, or into an application connecting to either a reported
phishing site or a sign-in URL with an invalid certificate
If you enable this policy setting, Enhanced Phishing Protection warns your
users if they type their work or school password into one of the malicious
scenarios described above and encourages them to change their password.
If you disable or don't configure this policy setting, Enhanced Phishing
Protection doesn't warn users if they type their work or school password into
one of the malicious scenarios described above.

Notify This policy setting determines whether Enhanced Phishing Protection warns
Password your users if they reuse their work or school password.
Reuse If you enable this policy setting, Enhanced Phishing Protection warns users
if they reuse their work, or school password and encourages them to change
it.
If you disable or don't configure this policy setting, Enhanced Phishing
Protection doesn't warn users if they reuse their work or school password.

Notify This policy setting determines whether Enhanced Phishing Protection warns
Unsafe App your users if they type their work or school passwords in Notepad or
Microsoft 365 Office Apps.
If you enable this policy setting, Enhanced Phishing Protection warns your
users if they store their password in Notepad or Microsoft 365 Office Apps.
If you disable or don't configure this policy setting, Enhanced Phishing
Protection doesn't warn users if they store their password in Notepad or
Microsoft 365 Office Apps.

Assign the policy to a security group that contains as members the devices or users
that you want to configure.

Recommended settings for your organization


By default, Enhanced Phishing Protection is deployed in audit mode, preventing
notifications to the users for any protection scenarios. In audit mode, Enhanced Phishing
Protection captures unsafe password entry events and sends diagnostic data through
Microsoft Defender. Users aren't warned if they enter their work or school password into
a phishing site, if they reuse their password, or if they unsafely store their password in
applications. Because of this possibility, it's recommended that you configure Enhanced
Phishing Protection to warn users during all protection scenarios.

To better help you protect your organization, we recommend turning on and using
these specific Microsoft Defender SmartScreen settings.
Intune

Settings Recommendation
catalog
element

Service Enable: Turns on Enhanced Phishing Protection in audit mode, which


Enabled captures work or school password entry events and sends diagnostic data
but doesn't show any notifications to your users.

Notify Enable: Turns on Enhanced Phishing Protection notifications when users


Malicious type their work or school password into one of the previously described
malicious scenarios and encourages them to change their password.

Notify Enable: Turns on Enhanced Phishing Protection notifications when users


Password reuse their work or school password and encourages them to change their
Reuse password.

Notify Unsafe Enable: Turns on Enhanced Phishing Protection notifications when users
App type their work or school passwords in Notepad and Microsoft 365 Office
Apps.

Related articles
SmartScreen frequently asked questions
WebThreatDefense CSP
Threat protection
Access Control Overview
Article • 05/11/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This topic for the IT professional describes access control in Windows, which is the
process of authorizing users, groups, and computers to access objects on the network or
computer. Key concepts that make up access control are permissions, ownership of
objects, inheritance of permissions, user rights, and object auditing.

Feature description
Computers that are running a supported version of Windows can control the use of
system and network resources through the interrelated mechanisms of authentication
and authorization. After a user is authenticated, the Windows operating system uses
built-in authorization and access control technologies to implement the second phase
of protecting resources: determining if an authenticated user has the correct
permissions to access a resource.

Shared resources are available to users and groups other than the resource's owner, and
they need to be protected from unauthorized use. In the access control model, users
and groups (also referred to as security principals) are represented by unique security
identifiers (SIDs). They are assigned rights and permissions that inform the operating
system what each user and group can do. Each resource has an owner who grants
permissions to security principals. During the access control check, these permissions
are examined to determine which security principals can access the resource and how
they can access it.

Security principals perform actions (which include Read, Write, Modify, or Full control)
on objects. Objects include files, folders, printers, registry keys, and Active Directory
Domain Services (AD DS) objects. Shared resources use access control lists (ACLs) to
assign permissions. This enables resource managers to enforce access control in the
following ways:

Deny access to unauthorized users and groups


Set well-defined limits on the access that is provided to authorized users and
groups

Object owners generally grant permissions to security groups rather than to individual
users. Users and computers that are added to existing groups assume the permissions
of that group. If an object (such as a folder) can hold other objects (such as subfolders
and files), it is called a container. In a hierarchy of objects, the relationship between a
container and its content is expressed by referring to the container as the parent. An
object in the container is referred to as the child, and the child inherits the access
control settings of the parent. Object owners often define permissions for container
objects, rather than individual child objects, to ease access control management.

This content set contains:

Dynamic Access Control Overview


Security identifiers
Security Principals
Local Accounts
Active Directory Accounts
Microsoft Accounts
Service Accounts
Active Directory Security Groups

Windows edition and licensing requirements


The following table lists the Windows editions that support Access Control (ACL/SACL):

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Access Control (ACL/SACL) license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Practical applications
Administrators who use the supported version of Windows can refine the application
and management of access control to objects and subjects to provide the following
security:

Protect a greater number and variety of network resources from misuse.


Provision users to access resources in a manner that is consistent with
organizational policies and the requirements of their jobs.
Enable users to access resources from a variety of devices in numerous locations.
Update users' ability to access resources on a regular basis as an organization's
policies change or as users' jobs change.
Account for a growing number of use scenarios (such as access from remote
locations or from a rapidly expanding variety of devices, such as tablet computers
and mobile phones).
Identify and resolve access issues when legitimate users are unable to access
resources that they need to perform their jobs.

Permissions
Permissions define the type of access that is granted to a user or group for an object or
object property. For example, the Finance group can be granted Read and Write
permissions for a file named Payroll.dat.

By using the access control user interface, you can set NTFS permissions for objects such
as files, Active Directory objects, registry objects, or system objects such as processes.
Permissions can be granted to any user, group, or computer. It is a good practice to
assign permissions to groups because it improves system performance when verifying
access to an object.

For any object, you can grant permissions to:

Groups, users, and other objects with security identifiers in the domain.
Groups and users in that domain and any trusted domains.
Local groups and users on the computer where the object resides.

The permissions attached to an object depend on the type of object. For example, the
permissions that can be attached to a file are different from those that can be attached
to a registry key. Some permissions, however, are common to most types of objects.
These common permissions are:

Read
Modify
Change owner
Delete

When you set permissions, you specify the level of access for groups and users. For
example, you can let one user read the contents of a file, let another user make changes
to the file, and prevent all other users from accessing the file. You can set similar
permissions on printers so that certain users can configure the printer and other users
can only print.
When you need to change the permissions on a file, you can run Windows Explorer,
right-click the file name, and click Properties. On the Security tab, you can change
permissions on the file. For more information, see Managing Permissions.

7 Note

Another kind of permissions, called share permissions, is set on the Sharing tab of a
folder's Properties page or by using the Shared Folder Wizard. For more
information see Share and NTFS Permissions on a File Server.

Ownership of objects
An owner is assigned to an object when that object is created. By default, the owner is
the creator of the object. No matter what permissions are set on an object, the owner of
the object can always change the permissions. For more information, see Manage
Object Ownership.

Inheritance of permissions
Inheritance allows administrators to easily assign and manage permissions. This feature
automatically causes objects within a container to inherit all the inheritable permissions
of that container. For example, the files within a folder inherit the permissions of the
folder. Only permissions marked to be inherited will be inherited.

User rights
User rights grant specific privileges and sign-in rights to users and groups in your
computing environment. Administrators can assign specific rights to group accounts or
to individual user accounts. These rights authorize users to perform specific actions,
such as signing in to a system interactively or backing up files and directories.

User rights are different from permissions because user rights apply to user accounts,
and permissions are associated with objects. Although user rights can apply to
individual user accounts, user rights are best administered on a group account basis.
There is no support in the access control user interface to grant user rights. However,
user rights assignment can be administered through Local Security Settings.

For more information about user rights, see User Rights Assignment.
Object auditing
With administrator's rights, you can audit users' successful or failed access to objects.
You can select which object access to audit by using the access control user interface,
but first you must enable the audit policy by selecting Audit object access under Local
Policies in Local Security Settings. You can then view these security-related events in
the Security log in Event Viewer.

For more information about auditing, see Security Auditing Overview.

See also
For more information about access control and authorization, see Access Control
and Authorization Overview.
Credential Guard overview
Article • 09/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Credential Guard prevents credential theft attacks by protecting NTLM password hashes,
Kerberos Ticket Granting Tickets (TGTs), and credentials stored by applications as
domain credentials.

Credential Guard uses Virtualization-based security (VBS) to isolate secrets so that only
privileged system software can access them. Unauthorized access to these secrets can
lead to credential theft attacks like pass the hash and pass the ticket.

When enabled, Credential Guard provides the following benefits:

Hardware security: NTLM, Kerberos, and Credential Manager take advantage of


platform security features, including Secure Boot and virtualization, to protect
credentials
Virtualization-based security: NTLM, Kerberos derived credentials and other
secrets run in a protected environment that is isolated from the running operating
system
Protection against advanced persistent threats: when credentials are protected
using VBS, the credential theft attack techniques and tools used in many targeted
attacks are blocked. Malware running in the operating system with administrative
privileges can't extract secrets that are protected by VBS

7 Note

While Credential Guard is a powerful mitigation, persistent threat attacks will likely
shift to new attack techniques, and you should also incorporate other security
strategies and architectures.

) Important

Starting in Windows 11, version 22H2, VBS and Credential Guard are enabled by
default on all devices that meet the system requirements.
For information about known issues related to the default enablement of Credential
Guard, see Credential Guard: Known Issues.
System requirements
For Credential Guard to provide protection, the devices must meet certain hardware,
firmware, and software requirements.

Devices that meet more hardware and firmware qualifications than the minimum
requirements, receive additional protections and are more hardened against certain
threats.

Hardware and software requirements


Credential Guard requires the features:

Virtualization-based security (VBS)

7 Note

VBS has different requirements to enable it on different hardware platforms.


For more information, see Virtualization-based Security requirements

Secure Boot

While not required, the following features are recommended to provide additional
protections:

Trusted Platform Module (TPM), as it provides binding to hardware. TPM versions


1.2 and 2.0 are supported, either discrete or firmware
UEFI lock, as it prevents attackers from disabling Credential Guard with a registry
key change

For detailed information on protections for improved security that are associated with
hardware and firmware options, see additional security qualifications.

Credential Guard in virtual machines


Credential Guard can protect secrets in Hyper-V virtual machines, just as it would on a
physical machine. When Credential Guard is enabled on a VM, secrets are protected
from attacks inside the VM. Credential Guard doesn't provide protection from privileged
system attacks originating from the host.

The requirements to run Credential Guard in Hyper-V virtual machines are:

The Hyper-V host must have an IOMMU


The Hyper-V virtual machine must be generation 2

7 Note

Credential Guard is not supported on Hyper-V or Azure generation 1 VMs.


Credential Guard is available on generation 2 VMs only.

Windows edition and licensing requirements


The following table lists the Windows editions that support Credential Guard:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

No Yes No Yes

Credential Guard license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

No Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Application requirements
When Credential Guard is enabled, certain authentication capabilities are blocked.
Applications that require such capabilities break. We refer to these requirements as
application requirements.

Applications should be tested prior to deployment to ensure compatibility with the


reduced functionality.

2 Warning

Enabling Credential Guard on domain controllers isn't recommended. Credential


Guard doesn't provide any added security to domain controllers, and can cause
application compatibility issues on domain controllers.

7 Note
Credential Guard doesn't provide protections for the Active Directory database or
the Security Accounts Manager (SAM). The credentials protected by Kerberos and
NTLM when Credential Guard is enabled are also in the Active Directory database
(on domain controllers) and the SAM (for local accounts).

Applications break if they require:

Kerberos DES encryption support


Kerberos unconstrained delegation
Extracting the Kerberos TGT
NTLMv1

Applications prompt and expose credentials to risk if they require:

Digest authentication
Credential delegation
MS-CHAPv2

Applications may cause performance issues when they attempt to hook the isolated
Credential Guard process LSAIso.exe .

Services or protocols that rely on Kerberos, such as file shares or remote desktop,
continue to work and aren't affected by Credential Guard.

Next steps
Learn how Credential Guard works
Learn how to configure Credential Guard
Review the advice and sample code for making your environment more secure and
robust with Credential Guard in the Additional mitigations article
Review considerations and known issues when using Credential Guard
How Credential Guard works
Article • 09/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

Kerberos, NTLM, and Credential Manager isolate secrets by using Virtualization-based


security (VBS). Previous versions of Windows stored secrets in its process memory, in the
Local Security Authority (LSA) process lsass.exe . With Credential Guard enabled, the
LSA process in the operating system talks to a component called the isolated LSA process
that stores and protects those secrets, LSAIso.exe . Data stored by the isolated LSA
process is protected using VBS and isn't accessible to the rest of the operating system.
LSA uses remote procedure calls to communicate with the isolated LSA process.

For security reasons, the isolated LSA process doesn't host any device drivers. Instead, it
only hosts a small subset of operating system binaries that are needed for security and
nothing else. All the binaries are signed with a certificate that VBS trusts, and the
signatures are validated before launching the file in the protected environment.

Here's a high-level overview on how the LSA is isolated by using Virtualization-based


security:

Credential Guard protection limits


Some ways to store credentials aren't protected by Credential Guard, including:

Software that manages credentials outside of Windows feature protection


Local accounts and Microsoft Accounts
Credential Guard doesn't protect the Active Directory database running on
Windows Server domain controllers. It also doesn't protect credential input
pipelines, such as Windows Server running Remote Desktop Gateway. If you're
using a Windows Server OS as a client PC, it will get the same protection as it
would when running a Windows client OS
Key loggers
Physical attacks
Doesn't prevent an attacker with malware on the PC from using the privileges
associated with any credential. We recommend using dedicated PCs for high value
accounts, such as IT Pros and users with access to high value assets in your
organization
Third-party security packages
When Credential Guard is enabled, NTLMv1, MS-CHAPv2, Digest, and CredSSP
can't use the signed-in credentials. Thus, single sign-on doesn't work with these
protocols. However, applications can prompt for credentials or use credentials
stored in the Windows Vault, which aren't protected by Credential Guard with any
of these protocols

U Caution

It's recommended that valuable credentials, such as the sign-in credentials,


aren't used with NTLMv1, MS-CHAPv2, Digest, or CredSSP protocols. If these
protocols must be used by domain or Azure AD users, secondary credentials
should be provisioned for these use cases.

Supplied credentials for NTLM authentication aren't protected. If a user is


prompted for and enters credentials for NTLM authentication, these credentials are
vulnerable to be read from LSASS memory. These same credentials are vulnerable
to key loggers as well
Kerberos service tickets aren't protected by Credential Guard, but the Kerberos
Ticket Granting Ticket (TGT) is protected
When Credential Guard is enabled, Kerberos doesn't allow unconstrained Kerberos
delegation or DES encryption, not only for signed-in credentials, but also prompted
or saved credentials
When Credential Guard is enabled on a VM, it protects secrets from attacks inside
the VM. However, it doesn't provide protection from privileged system attacks
originating from the host
Windows logon cached password verifiers (commonly called cached credentials)
don't qualify as credentials because they can't be presented to another computer
for authentication, and can only be used locally to verify credentials. They're stored
in the registry on the local computer and provide validation for credentials when a
domain-joined computer can't connect to AD DS during user logon. These cached
logons, or more specifically, cached domain account information, can be managed
using the security policy setting Interactive logon: Number of previous logons to
cache if a domain controller isn't available

Next steps
Learn how to configure Credential Guard
Review the advice and sample code for making your environment more secure and
robust with Credential Guard in the Additional mitigations article
Review considerations and known issues when using Credential Guard
Configure Credential Guard
Article • 09/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article describes how to configure Credential Guard using Microsoft Intune, Group
Policy, or the registry.

Default enablement
Starting in Windows 11, version 22H2, Credential Guard is turned on by default on
devices that meet the requirements. The default enablement is without UEFI Lock, which
allows administrators to disable Credential Guard remotely, if needed.

If Credential Guard or VBS are disabled before a device is updated to Windows 11,
version 22H2 or later, default enablement doesn't overwrite the existing settings.

While the default state of Credential Guard changed, system administrators can enable
or disable it using one of the methods described in this article.

) Important

For information about known issues related to default enablement, see Credential
Guard: known issues.

7 Note

Devices running Windows 11 Pro/Pro Edu 22H2 or later may have Virtualization-
based Security (VBS) and/or Credential Guard automatically enabled if they meet
the other requirements for default enablement, and have previously run Credential
Guard. For example if Credential Guard was enabled on an Enterprise device that
later downgraded to Pro.

To determine whether the Pro device is in this state, check if the following registry
key exists:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\Isolat

edCredentialsRootSecret . In this scenario, if you wish to disable VBS and Credential


Guard, follow the instructions to disable Virtualization-based Security. If you wish
to disable Credential Guard only, without disabling VBS, use the procedures to
disable Credential Guard.

Enable Credential Guard


Credential Guard should be enabled before a device is joined to a domain or before a
domain user signs in for the first time. If Credential Guard is enabled after domain join,
the user and device secrets may already be compromised.

To enable Credential Guard, you can use:

Microsoft Intune/MDM
Group policy
Registry

The following instructions provide details how to configure your devices. Select the
option that best suits your needs.

Intune/MDM

Configure Credential Guard with Intune


To configure devices using Microsoft Intune, create a Settings catalog policy and
use the following settings:

Category Setting name Value

Device Guard Credential Guard Select one of the options:


- Enabled with UEFI lock
- Enabled without lock

) Important

If you want to be able to turn off Credential Guard remotely, choose the option
Enabled without lock.

Assign the policy to a group that contains as members the devices or users that you
want to configure.

 Tip
You can also configure Credential Guard by using an account protection profile
in endpoint security. For more information, see Account protection policy
settings for endpoint security in Microsoft Intune.

Alternatively, you can configure devices using a custom policy with the DeviceGuard
Policy CSP.

Setting

Setting name: Turn On Virtualization Based Security


OMA-URI:
./Device/Vendor/MSFT/Policy/Config/DeviceGuard/EnableVirtualizationBasedSecurity
Data type: int
Value: 1

Setting name: Credential Guard Configuration


OMA-URI: ./Device/Vendor/MSFT/Policy/Config/DeviceGuard/LsaCfgFlags
Data type: int
Value:
Enabled with UEFI lock: 1
Enabled without lock: 2

Once the policy is applied, restart the device.

Verify if Credential Guard is enabled


Checking Task Manager if LsaIso.exe is running isn't a recommended method for
determining whether Credential Guard is running. Instead, use one of the following
methods:

System Information
PowerShell
Event Viewer

System Information

You can use System Information to determine whether Credential Guard is running on a
device.

1. Select Start, type msinfo32.exe , and then select System Information


2. Select System Summary
3. Confirm that Credential Guard is shown next to Virtualization-based Security
Services Running
PowerShell
You can use PowerShell to determine whether Credential Guard is running on a device.
From an elevated PowerShell session, use the following command:

PowerShell

(Get-CimInstance -ClassName Win32_DeviceGuard -Namespace


root\Microsoft\Windows\DeviceGuard).SecurityServicesRunning

The command generates the following output:

0: Credential Guard is disabled (not running)


1: Credential Guard is enabled (running)

Event viewer

Perform regular reviews of the devices that have Credential Guard enabled, using
security audit policies or WMI queries.
Open the Event Viewer ( eventvwr.exe ) and go to Windows Logs\System and filter the
event sources for WinInit:

Event ID

Description

13 (Information)
logging

Credential Guard (LsaIso.exe) was started and will protect LSA credentials.

14 (Information)

logging

Credential Guard (LsaIso.exe) configuration: [**0x0** | **0x1** | **0x2**],


**0**

The first variable: 0x1 or 0x2 means that Credential Guard is configured to run. 0x0
means that it's not configured to run.
The second variable: 0 means that it's configured to run in protect mode. 1 means
that it's configured to run in test mode. This variable should always be 0.
15 (Warning)

logging

Credential Guard (LsaIso.exe) is configured but the secure kernel isn't


running;
continuing without Credential Guard.

16 (Warning)

logging

Credential Guard (LsaIso.exe) failed to launch: [error code]

17

logging

Error reading Credential Guard (LsaIso.exe) UEFI configuration: [error code]

The following event indicates whether TPM is used for key protection. Path:
Applications and Services logs > Microsoft > Windows > Kernel-Boot

Event ID

Description

51 (Information)
logging

VSM Master Encryption Key Provisioning. Using cached copy status: 0x0.
Unsealing cached copy status: 0x1. New key generation status: 0x1. Sealing
status: 0x1. TPM PCR mask: 0x0.

If you're running with a TPM, the TPM PCR mask value is something other than 0.

Disable Credential Guard


There are different options to disable Credential Guard. The option you choose depends
on how Credential Guard is configured:

Credential Guard running in a virtual machine can be disabled by the host


If Credential Guard is enabled with UEFI Lock, follow the procedure described in
disable Credential Guard with UEFI Lock
If Credential Guard is enabled without UEFI Lock, or as part of the automatic
enablement in the Windows 11, version 22H2 update, use one of the following
options to disable it:
Microsoft Intune/MDM
Group policy
Registry

The following instructions provide details how to configure your devices. Select the
option that best suits your needs.

Intune/MDM

Disable Credential Guard with Intune


If Credential Guard is enabled via Intune and without UEFI Lock, disabling the same
policy setting disables Credential Guard.

To configure devices using Microsoft Intune, create a Settings catalog policy and
use the following settings:

Category Setting name Value

Device Guard Credential Guard Disabled

Assign the policy to a group that contains as members the devices or users that you
want to configure.

Alternatively, you can configure devices using a custom policy with the DeviceGuard
Policy CSP.

Setting

Setting name: Credential Guard Configuration


OMA-URI: ./Device/Vendor/MSFT/Policy/Config/DeviceGuard/LsaCfgFlags
Data type: int
Value: 0

Once the policy is applied, restart the device.


For information on disabling Virtualization-based Security (VBS), see disable
Virtualization-based Security.

Disable Credential Guard with UEFI lock


If Credential Guard is enabled with UEFI lock, follow this procedure since the settings are
persisted in EFI (firmware) variables.

7 Note

This scenario requires physical presence at the machine to press a function key to
accept the change.

1. Follow the steps in Disable Credential Guard

2. Delete the Credential Guard EFI variables by using bcdedit. From an elevated
command prompt, type the following commands:

Windows Command Prompt

mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi
X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool"
/application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path
"\EFI\Microsoft\Boot\SecConfig.efi"
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-
d86a476d7215}
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions
DISABLE-LSA-ISO
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
mountvol X: /d

3. Restart the device. Before the OS boots, a prompt appears notifying that UEFI was
modified, and asking for confirmation. The prompt must be confirmed for the
changes to persist.

Disable Credential Guard for a virtual machine


From the host, you can disable Credential Guard for a virtual machine with the following
command:

PowerShell
Set-VMSecurity -VMName <VMName> -VirtualizationBasedSecurityOptOut $true

Disable Virtualization-based Security


If you disable Virtualization-based Security (VBS), you'll automatically disable Credential
Guard and other features that rely on VBS.

) Important

Other security features beside Credential Guard rely on VBS. Disabling VBS may
have unintended side effects.

Use one of the following options to disable VBS:

Microsoft Intune/MDM
Group policy
Registry

The following instructions provide details how to configure your devices. Select the
option that best suits your needs.

Intune/MDM

Disable VBS with Intune


If VBS is enabled via Intune and without UEFI Lock, disabling the same policy setting
disables VBS.

To configure devices using Microsoft Intune, create a Settings catalog policy and
use the following settings:

Category Setting name Value

Device Guard Enable Virtualization Based Security Disabled

Assign the policy to a group that contains as members the devices or users that you
want to configure.

Alternatively, you can configure devices using a custom policy with the DeviceGuard
Policy CSP.
Setting

Setting name: Turn On Virtualization Based Security


OMA-URI:
./Device/Vendor/MSFT/Policy/Config/DeviceGuard/EnableVirtualizationBasedSecurity
Data type: int
Value: 0

Once the policy is applied, restart the device.

If Credential Guard is enabled with UEFI Lock, the EFI variables stored in firmware must
be cleared using the command bcdedit.exe . From an elevated command prompt, run
the following commands:

Windows Command Prompt

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-


ISO,DISABLE-VBS
bcdedit /set vsmlaunchtype off

Next steps
Review the advice and sample code for making your environment more secure and
robust with Credential Guard in the Additional mitigations article
Review considerations and known issues when using Credential Guard
Additional mitigations
Article • 09/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019, ✅
to: Windows Server 2016

Credential Guard offers mitigations against attacks on derived credentials, preventing the
use of stolen credentials elsewhere. However, devices can still be vulnerable to certain
attacks, even if the derived credentials are protected by Credential Guard. These attacks
can include abusing privileges and use of derived credentials directly from a compromised
device, re-using stolen credentials prior to the enablement of Credential Guard, and abuse
of management tools and weak application configurations. Because of this, additional
mitigation also must be deployed to make the domain environment more robust.

Additional security qualifications


All devices that meet baseline protections for hardware, firmware, and software can use
Credential Guard.
Devices that meet more qualifications can provide added protections to further reduce the
attack surface.

The following table list qualifications for improved security. We recommend meeting the
additional qualifications to strengthen the level of security that Credential Guard can
provide.

Protection Requirements Security Benefits

Secure Boot - BIOS password or stronger authentication must be supported - Prevent other
configuration - In the BIOS configuration, BIOS authentication must be set operating systems
and - There must be support for protected BIOS option to configure list of from starting
management permitted boot devices (for example, Boot only from internal hard -Prevent changes
drive) and boot device order, overriding BOOTORDER modification made to the BIOS
by the operating system settings

Hardware - Boot Integrity (Platform Secure Boot) must be supported. See the - Boot Integrity
Rooted Trust Windows Hardware Compatibility Program requirements under (Platform Secure
Platform System.Fundamentals.Firmware.CS.UEFISecureBoot.ConnectedStandby Boot) from Power-
Secure Boot - Hardware Security Test Interface (HSTI) must be implemented. See On provides
Hardware Security Testability Specification protections against
physically present
attackers, and
defense-in-depth
against malware.
- HSTI provides
security assurance
for correctly
Protection Requirements Security Benefits

secured silicon and


platform

Firmware - Firmware must support field updates through Windows Update and Helps ensure that
Update UEFI encapsulation update firmware updates
through are fast, secure,
Windows and reliable.
Update

Securing - Required BIOS capabilities: ability of OEM to add ISV, OEM, or - Enterprises can
Boot Enterprise Certificate in Secure Boot DB at manufacturing time choose to allow
Configuration - Required configurations: Microsoft UEFI CA must be removed from proprietary EFI
and Secure Boot DB. Support for 3rd-party UEFI modules is permitted but drivers/applications
Management should use ISV-provided certificates or OEM certificate for the specific to run
UEFI software - Removing
Microsoft UEFI CA
from Secure Boot
DB provides full
control to
enterprises over
software that runs
before the
operating system
boots

VBS - VBS enables NX protection on UEFI runtime service code and data - Vulnerabilities in
enablement memory regions. UEFI runtime service code must support read-only UEFI runtime, if
of No- page protections, and UEFI runtime service data must not be any, are blocked
Execute (NX) executable. UEFI runtime service must meet the following from
protection requirements: compromising VBS
for UEFI - Implement UEFI 2.6 EFI_MEMORY_ATTRIBUTES_TABLE . All UEFI (such as in
runtime runtime service memory (code and data) must be described by this functions like
services table UpdateCapsule and
- PE sections must be page-aligned in memory (not required for in SetVariable)
non-volatile storage). - Reduces the
- The Memory Attributes Table needs to correctly mark code and attack surface to
data as RO/NX for configuration by the OS VBS from system
- All entries must include attributes EFI_MEMORY_RO , EFI_MEMORY_XP , firmware.
or both.
- No entries may be left with neither of the above attributes,
indicating memory that is both executable and writable. Memory
must be either readable and executable or writable and non-
executable
(SEE IMPORTANT INFORMATION AFTER THIS TABLE)

Firmware - The Windows SMM Security Mitigations Table (WSMT) - Protects against
support for specification contains details of an ACPI table that was created for potential
SMM use with Windows operating systems that support Windows vulnerabilities in
protection virtualization-based features. UEFI runtime
services, if any, will
Protection Requirements Security Benefits

be blocked from
compromising VBS
(such as in
functions like
UpdateCapsule
and SetVariable)
- Reduces the
attack surface to
VBS from system
firmware
- Blocks additional
security attacks
against SMM

) Important

Regarding VBS enablement of NX protection for UEFI runtime services:

It only applies to UEFI runtime service memory, and not UEFI boot service
memory
The protection is applied by VBS on OS page tables
Don't use sections that are both writable and executable
Don't attempt to directly modify executable system memory
Don't use dynamic code

Restrict domain users to specific domain-joined


devices
Credential theft attacks allow the attacker to steal secrets from one device and use them
from another device. If a user can sign on to multiple devices then any device could be
used to steal credentials. How do you ensure that users only sign on with devices that have
Credential Guard enabled? By deploying authentication policies that restrict them to
specific domain-joined devices that have been configured with Credential Guard. For the
domain controller to know what device a user is signing on from, Kerberos armoring must
be used.

Kerberos armoring
Kerberos armoring is part of RFC 6113. When a device supports Kerberos armoring, its TGT
is used to protect the user's proof of possession which can mitigate offline dictionary
attacks. Kerberos armoring also provides the additional benefit of signed KDC errors this
mitigates tampering which can result in things such as downgrade attacks.

To enable Kerberos armoring for restricting domain users to specific domain-joined


devices:

Users need to be in domains that are running Windows Server 2012 R2 or higher
All the domain controllers in these domains must be configured to support Kerberos
armoring. Set the KDC support for claims, compound authentication, and Kerberos
armoring Group Policy setting to either Supported or Always provide claims.
All the devices with Credential Guard that the users will be restricted to must be
configured to support Kerberos armoring. Enable the Kerberos client support for
claims, compound authentication and Kerberos armoring Group Policy settings
under Computer Configuration -> Administrative Templates -> System -> Kerberos.

Protect domain-joined device secrets


Since domain-joined devices also use shared secrets for authentication, attackers can steal
those secrets as well. By deploying device certificates with Credential Guard, the private key
can be protected. Then authentication policies can require that users sign on to devices
that authenticate using those certificates. This prevents shared secrets stolen from the
device to be used with stolen user credentials to sign on as the user.

Domain-joined device certificate authentication has the following requirements:

Devices' accounts are in Windows Server 2012 domain functional level or higher.
All domain controllers in those domains have KDC certificates which satisfy strict KDC
validation certificate requirements:
KDC EKU present
DNS domain name matches the DNSName field of the SubjectAltName (SAN)
extension
Windows devices have the CA issuing the domain controller certificates in the
enterprise store.
A process is established to ensure the identity and trustworthiness of the device in a
similar manner as you would establish the identity and trustworthiness of a user
before issuing them a smartcard.

Deploy domain-joined device certificates

To guarantee that certificates with the required issuance policy are only installed on the
devices these users must use, they must be deployed manually on each device. The same
security procedures used for issuing smart cards to users should be applied to device
certificates.
For example, let's say you wanted to use the High Assurance policy only on these devices.
Using a Windows Server Enterprise certificate authority, you would create a new template.

Create a new certificate template

1. From the Certificate Manager console, right-click Certificate Templates > Manage
2. Right-click Workstation Authentication > Duplicate Template
3. Right-click the new template, and then select Properties
4. On the Extensions tab, select Application Policies > Edit
5. Select Client Authentication, and then select Remove
6. Add the ID-PKInit-KPClientAuth EKU. Select Add > New, and then specify the
following values:

Name: Kerberos Client Auth


Object Identifier: 1.3.6.1.5.2.3.4

7. On the Extensions tab, select Issuance Policies > Edit


8. Under Issuance Policies, select High Assurance
9. On the Subject name tab, clear the DNS name check box, and then select the User
Principal Name (UPN) check box

Then on the devices that are running Credential Guard, enroll the devices using the
certificate you just created.

Enroll devices in a certificate

Run the following command:

PowerShell

CertReq -EnrollCredGuardCert MachineAuthentication

7 Note

You must restart the device after enrolling the machine authentication certificate.

How a certificate issuance policy can be used for access control

Beginning with the Windows Server 2008 R2 domain functional level, domain controllers
support for authentication mechanism assurance provides a way to map certificate
issuance policy OIDs to universal security groups. Windows Server 2012 domain controllers
with claim support can map them to claims. To learn more about authentication
mechanism assurance, see Authentication Mechanism Assurance for AD DS in Windows
Server 2008 R2 Step-by-Step Guide on TechNet.
To see the issuance policies available

The get-IssuancePolicy.ps1 shows all of the issuance policies that are available on the
certificate authority.
From a Windows PowerShell command prompt, run the following command:

PowerShell

.\get-IssuancePolicy.ps1 -LinkedToGroup:All

To link an issuance policy to a universal security group

The set-IssuancePolicyToGroupLink.ps1 creates a Universal security group, creates an


organizational unit, and links the issuance policy to that Universal security group.
From a Windows PowerShell command prompt, run the following command:

PowerShell

.\set-IssuancePolicyToGroupLink.ps1 -IssuancePolicyName:"<name of issuance


policy>" -groupOU:"<Name of OU to create>" -groupName:"<name of Universal
security group to create>"

Restrict user sign-on


So we now have completed the following:

Created a special certificate issuance policy to identify devices that meet the
deployment criteria required for the user to be able to sign on
Mapped that policy to a universal security group or claim
Provided a way for domain controllers to get the device authorization data during
user sign-on using Kerberos armoring. Now what is left to do is to configure the
access check on the domain controllers. This is done using authentication policies.

Authentication policies have the following requirements:

User accounts are in a Windows Server 2012 domain functional level or higher
domain.

Creating an authentication policy restricting users to the specific universal security


group

1. Open Active Directory Administrative Center


2. Select Authentication > New > Authentication Policy
3. In the Display name box, enter a name for this authentication policy
4. Under the Accounts heading, select Add
5. In the Select Users, Computers, or Service Accounts dialog box, type the name of
the user account you wish to restrict, and then select OK
6. Under the User Sign On heading, select the Edit button
7. Select Add a condition
8. In the Edit Access Control Conditions box, ensure that it reads User > Group >
Member of each > Value, and then select Add items
9. In the Select Users, Computers, or Service Accounts dialog box, type the name of
the universal security group that you created with the set-IssuancePolicyToGroupLink
script, and then select OK
10. Select OK to close the Edit Access Control Conditions box
11. Select OK to create the authentication policy
12. Select Active Directory Administrative Center

7 Note

When the authentication policy enforces policy restrictions, users will not be able to
sign on using devices that do not have a certificate with the appropriate issuance
policy deployed. This applies to both local and remote sign on scenarios. Therefore, it
is strongly recommended to first only audit policy restrictions to ensure you don't
have unexpected failures.

Discover authentication failures due to authentication policies


To make tracking authentication failures due to authentication policies easier, an
operational log exists with just those events. To enable the logs on the domain controllers,
in Event Viewer, navigate to Applications and Services
Logs\Microsoft\Windows\Authentication, right-click AuthenticationPolicyFailures-
DomainController, and then select Enable Log.

To learn more about authentication policy events, see Authentication Policies and
Authentication Policy Silos.

Appendix: Scripts
Here is a list of scripts mentioned in this topic.

Get the available issuance policies on the certificate


authority
Save this script file as get-IssuancePolicy.ps1.
PowerShell

#######################################
## Parameters to be defined ##
## by the user ##
#######################################
Param (
$Identity,
$LinkedToGroup
)
#######################################
## Strings definitions ##
#######################################
Data getIP_strings {
# culture="en-US"
ConvertFrom-StringData -stringdata @'
help1 = This command can be used to retrieve all available Issuance Policies
in a forest. The forest of the currently logged on user is targeted.
help2 = Usage:
help3 = The following parameter is mandatory:
help4 = -LinkedToGroup:<yes|no|all>
help5 = "yes" will return only Issuance Policies that are linked to groups.
Checks that the linked Issuance Policies are linked to valid groups.
help6 = "no" will return only Issuance Policies that are not currently linked
to any group.
help7 = "all" will return all Issuance Policies defined in the forest. Checks
that the linked Issuance policies are linked to valid groups.
help8 = The following parameter is optional:
help9 = -Identity:<Name, Distinguished Name or Display Name of the Issuance
Policy that you want to retrieve>. If you specify an identity, the option
specified in the "-LinkedToGroup" parameter is ignored.
help10 = Output: This script returns the Issuance Policy objects meeting the
criteria defined by the above parameters.
help11 = Examples:
errorIPNotFound = Error: no Issuance Policy could be found with Identity "{0}"
ErrorNotSecurity = Error: Issuance Policy "{0}" is linked to group "{1}" which
is not of type "Security".
ErrorNotUniversal = Error: Issuance Policy "{0}" is linked to group "{1}"
whose scope is not "Universal".
ErrorHasMembers = Error: Issuance Policy "{0}" is linked to group "{1}" which
has a non-empty membership. The group has the following members:
LinkedIPs = The following Issuance Policies are linked to groups:
displayName = displayName : {0}
Name = Name : {0}
dn = distinguishedName : {0}
InfoName = Linked Group Name: {0}
InfoDN = Linked Group DN: {0}
NonLinkedIPs = The following Issuance Policies are NOT linked to groups:
'@
}
##Import-LocalizedData getIP_strings
import-module ActiveDirectory
#######################################
## Help ##
#######################################
function Display-Help {
""
$getIP_strings.help1
""
$getIP_strings.help2
""
$getIP_strings.help3
" " + $getIP_strings.help4
" " + $getIP_strings.help5
" " + $getIP_strings.help6
" " + $getIP_strings.help7
""
$getIP_strings.help8
" " + $getIP_strings.help9
""
$getIP_strings.help10
""
""
$getIP_strings.help11
" " + '$' + "myIPs = .\get-IssuancePolicy.ps1 -LinkedToGroup:All"
" " + '$' + "myLinkedIPs = .\get-IssuancePolicy.ps1 -
LinkedToGroup:yes"
" " + '$' + "myIP = .\get-IssuancePolicy.ps1 -Identity:""Medium
Assurance"""
""
}
$root = get-adrootdse
$domain = get-addomain -current loggedonuser
$configNCDN = [String]$root.configurationNamingContext
if ( !($Identity) -and !($LinkedToGroup) ) {
display-Help
break
}
if ($Identity) {
$OIDs = get-adobject -Filter {(objectclass -eq "msPKI-Enterprise-Oid") -
and ((name -eq $Identity) -or (displayname -eq $Identity) -or
(distinguishedName -like $Identity)) } -searchBase $configNCDN -properties *
if ($OIDs -eq $null) {
$errormsg = $getIP_strings.ErrorIPNotFound -f $Identity
write-host $errormsg -ForegroundColor Red
}
foreach ($OID in $OIDs) {
if ($OID."msDS-OIDToGroupLink") {
# In case the Issuance Policy is linked to a group, it is good to check
whether there is any problem with the mapping.
$groupDN = $OID."msDS-OIDToGroupLink"
$group = get-adgroup -Identity $groupDN
$groupName = $group.Name
# Analyze the group
if ($group.groupCategory -ne "Security") {
$errormsg = $getIP_strings.ErrorNotSecurity -f $Identity, $groupName
write-host $errormsg -ForegroundColor Red
}
if ($group.groupScope -ne "Universal") {
$errormsg = $getIP_strings.ErrorNotUniversal -f $Identity,
$groupName
write-host $errormsg -ForegroundColor Red
}
$members = Get-ADGroupMember -Identity $group
if ($members) {
$errormsg = $getIP_strings.ErrorHasMembers -f $Identity,
$groupName
write-host $errormsg -ForegroundColor Red
foreach ($member in $members) {
write-host " " $member -ForeGroundColor Red
}
}
}
}
return $OIDs
break
}
if (($LinkedToGroup -eq "yes") -or ($LinkedToGroup -eq "all")) {
$LDAPFilter = "(&(objectClass=msPKI-Enterprise-Oid)(msDS-OIDToGroupLink=*)
(flags=2))"
$LinkedOIDs = get-adobject -searchBase $configNCDN -LDAPFilter $LDAPFilter
-properties *
write-host ""
write-host "*****************************************************"
write-host $getIP_strings.LinkedIPs
write-host "*****************************************************"
write-host ""
if ($LinkedOIDs -ne $null){
foreach ($OID in $LinkedOIDs) {
# Display basic information about the Issuance Policies
""
$getIP_strings.displayName -f $OID.displayName
$getIP_strings.Name -f $OID.Name
$getIP_strings.dn -f $OID.distinguishedName
# Get the linked group.
$groupDN = $OID."msDS-OIDToGroupLink"
$group = get-adgroup -Identity $groupDN
$getIP_strings.InfoName -f $group.Name
$getIP_strings.InfoDN -f $groupDN
# Analyze the group
$OIDName = $OID.displayName
$groupName = $group.Name
if ($group.groupCategory -ne "Security") {
$errormsg = $getIP_strings.ErrorNotSecurity -f $OIDName, $groupName
write-host $errormsg -ForegroundColor Red
}
if ($group.groupScope -ne "Universal") {
$errormsg = $getIP_strings.ErrorNotUniversal -f $OIDName, $groupName
write-host $errormsg -ForegroundColor Red
}
$members = Get-ADGroupMember -Identity $group
if ($members) {
$errormsg = $getIP_strings.ErrorHasMembers -f $OIDName, $groupName
write-host $errormsg -ForegroundColor Red
foreach ($member in $members) {
write-host " " $member -ForeGroundColor Red
}
}
write-host ""
}
}else{
write-host "There are no issuance policies that are mapped to a group"
}
if ($LinkedToGroup -eq "yes") {
return $LinkedOIDs
break
}
}
if (($LinkedToGroup -eq "no") -or ($LinkedToGroup -eq "all")) {
$LDAPFilter = "(&(objectClass=msPKI-Enterprise-Oid)(!(msDS-
OIDToGroupLink=*))(flags=2))"
$NonLinkedOIDs = get-adobject -searchBase $configNCDN -LDAPFilter
$LDAPFilter -properties *
write-host ""
write-host "*********************************************************"
write-host $getIP_strings.NonLinkedIPs
write-host "*********************************************************"
write-host ""
if ($NonLinkedOIDs -ne $null) {
foreach ($OID in $NonLinkedOIDs) {
# Display basic information about the Issuance Policies
write-host ""
$getIP_strings.displayName -f $OID.displayName
$getIP_strings.Name -f $OID.Name
$getIP_strings.dn -f $OID.distinguishedName
write-host ""
}
}else{
write-host "There are no issuance policies which are not mapped to groups"
}
if ($LinkedToGroup -eq "no") {
return $NonLinkedOIDs
break
}
}

7 Note

If you're having trouble running this script, try replacing the single quote after the
ConvertFrom-StringData parameter.

Link an issuance policy to a group


Save the script file as set-IssuancePolicyToGroupLink.ps1.

PowerShell

#######################################
## Parameters to be defined ##
## by the user ##
#######################################
Param (
$IssuancePolicyName,
$groupOU,
$groupName
)
#######################################
## Strings definitions ##
#######################################
Data ErrorMsg {
# culture="en-US"
ConvertFrom-StringData -stringdata @'
help1 = This command can be used to set the link between a certificate
issuance policy and a universal security group.
help2 = Usage:
help3 = The following parameters are required:
help4 = -IssuancePolicyName:<name or display name of the issuance policy that
you want to link to a group>
help5 = -groupName:<name of the group you want to link the issuance policy
to>. If no name is specified, any existing link to a group is removed from the
Issuance Policy.
help6 = The following parameter is optional:
help7 = -groupOU:<Name of the Organizational Unit dedicated to the groups
which are linked to issuance policies>. If this parameter is not specified,
the group is looked for or created in the Users container.
help8 = Examples:
help9 = This command will link the issuance policy whose display name is "High
Assurance" to the group "HighAssuranceGroup" in the Organizational Unit
"OU_FOR_IPol_linked_groups". If the group or the Organizational Unit do not
exist, you will be prompted to create them.
help10 = This command will unlink the issuance policy whose name is
"402.164959C40F4A5C12C6302E31D5476062" from any group.
MultipleIPs = Error: Multiple Issuance Policies with name or display name "
{0}" were found in the subtree of "{1}"
NoIP = Error: no issuance policy with name or display name "{0}" could be
found in the subtree of "{1}".
IPFound = An Issuance Policy with name or display name "{0}" was successfully
found: {1}
MultipleOUs = Error: more than 1 Organizational Unit with name "{0}" could be
found in the subtree of "{1}".
confirmOUcreation = Warning: The Organizational Unit that you specified does
not exist. Do you want to create it?
OUCreationSuccess = Organizational Unit "{0}" successfully created.
OUcreationError = Error: Organizational Unit "{0}" could not be created.
OUFoundSuccess = Organizational Unit "{0}" was successfully found.
multipleGroups = Error: More than one group with name "{0}" was found in
Organizational Unit "{1}".
confirmGroupCreation = Warning: The group that you specified does not exist.
Do you want to create it?
groupCreationSuccess = Univeral Security group "{0}" successfully created.
groupCreationError = Error: Univeral Security group "{0}" could not be
created.
GroupFound = Group "{0}" was successfully found.
confirmLinkDeletion = Warning: The Issuance Policy "{0}" is currently linked
to group "{1}". Do you really want to remove the link?
UnlinkSuccess = Certificate issuance policy successfully unlinked from any
group.
UnlinkError = Removing the link failed.
UnlinkExit = Exiting without removing the link from the issuance policy to the
group.
IPNotLinked = The Certificate issuance policy is not currently linked to any
group. If you want to link it to a group, you should specify the -groupName
option when starting this script.
ErrorNotSecurity = Error: You cannot link issuance Policy "{0}" to group "{1}"
because this group is not of type "Security".
ErrorNotUniversal = Error: You cannot link issuance Policy "{0}" to group "
{1}" because the scope of this group is not "Universal".
ErrorHasMembers = Error: You cannot link issuance Policy "{0}" to group "{1}"
because it has a non-empty membership. The group has the following members:
ConfirmLinkReplacement = Warning: The Issuance Policy "{0}" is currently
linked to group "{1}". Do you really want to update the link to point to group
"{2}"?
LinkSuccess = The certificate issuance policy was successfully linked to the
specified group.
LinkError = The certificate issuance policy could not be linked to the
specified group.
ExitNoLinkReplacement = Exiting without setting the new link.
'@
}
# import-localizeddata ErrorMsg
function Display-Help {
""
write-host $ErrorMsg.help1
""
write-host $ErrorMsg.help2
""
write-host $ErrorMsg.help3
write-host "`t" $ErrorMsg.help4
write-host "`t" $ErrorMsg.help5
""
write-host $ErrorMsg.help6
write-host "`t" $ErrorMsg.help7
""
""
write-host $ErrorMsg.help8
""
write-host $ErrorMsg.help9
".\Set-IssuancePolicyToGroupMapping.ps1 -IssuancePolicyName ""High Assurance""
-groupOU ""OU_FOR_IPol_linked_groups"" -groupName ""HighAssuranceGroup"" "
""
write-host $ErrorMsg.help10
'.\Set-IssuancePolicyToGroupMapping.ps1 -IssuancePolicyName
"402.164959C40F4A5C12C6302E31D5476062" -groupName $null '
""
}
# Assumption: The group to which the Issuance Policy is going
# to be linked is (or is going to be created) in
# the domain the user running this script is a member of.
import-module ActiveDirectory
$root = get-adrootdse
$domain = get-addomain -current loggedonuser
if ( !($IssuancePolicyName) ) {
display-Help
break
}
#######################################
## Find the OID object ##
## (aka Issuance Policy) ##
#######################################
$searchBase = [String]$root.configurationnamingcontext
$OID = get-adobject -searchBase $searchBase -Filter { ((displayname -eq
$IssuancePolicyName) -or (name -eq $IssuancePolicyName)) -and (objectClass -eq
"msPKI-Enterprise-Oid")} -properties *
if ($OID -eq $null) {
$tmp = $ErrorMsg.NoIP -f $IssuancePolicyName, $searchBase
write-host $tmp -ForeGroundColor Red
break;
}
elseif ($OID.GetType().IsArray) {
$tmp = $ErrorMsg.MultipleIPs -f $IssuancePolicyName, $searchBase
write-host $tmp -ForeGroundColor Red
break;
}
else {
$tmp = $ErrorMsg.IPFound -f $IssuancePolicyName, $OID.distinguishedName
write-host $tmp -ForeGroundColor Green
}
#######################################
## Find the container of the group ##
#######################################
if ($groupOU -eq $null) {
# default to the Users container
$groupContainer = $domain.UsersContainer
}
else {
$searchBase = [string]$domain.DistinguishedName
$groupContainer = get-adobject -searchBase $searchBase -Filter { (Name -eq
$groupOU) -and (objectClass -eq "organizationalUnit")}
if ($groupContainer.count -gt 1) {
$tmp = $ErrorMsg.MultipleOUs -f $groupOU, $searchBase
write-host $tmp -ForegroundColor Red
break;
}
elseif ($groupContainer -eq $null) {
$tmp = $ErrorMsg.confirmOUcreation
write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
$userChoice = read-host
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
new-adobject -Name $groupOU -displayName $groupOU -Type "organizationalUnit" -
ProtectedFromAccidentalDeletion $true -path $domain.distinguishedName
if ($?){
$tmp = $ErrorMsg.OUCreationSuccess -f $groupOU
write-host $tmp -ForegroundColor Green
}
else{
$tmp = $ErrorMsg.OUCreationError -f $groupOU
write-host $tmp -ForeGroundColor Red
break;
}
$groupContainer = get-adobject -searchBase $searchBase -Filter { (Name -eq
$groupOU) -and (objectClass -eq "organizationalUnit")}
}
else {
break;
}
}
else {
$tmp = $ErrorMsg.OUFoundSuccess -f $groupContainer.name
write-host $tmp -ForegroundColor Green
}
}
#######################################
## Find the group ##
#######################################
if (($groupName -ne $null) -and ($groupName -ne "")){
##$searchBase = [String]$groupContainer.DistinguishedName
$searchBase = $groupContainer
$group = get-adgroup -Filter { (Name -eq $groupName) -and (objectClass -eq
"group") } -searchBase $searchBase
if ($group -ne $null -and $group.gettype().isarray) {
$tmp = $ErrorMsg.multipleGroups -f $groupName, $searchBase
write-host $tmp -ForeGroundColor Red
break;
}
elseif ($group -eq $null) {
$tmp = $ErrorMsg.confirmGroupCreation
write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
$userChoice = read-host
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
new-adgroup -samAccountName $groupName -path $groupContainer.distinguishedName
-GroupScope "Universal" -GroupCategory "Security"
if ($?){
$tmp = $ErrorMsg.GroupCreationSuccess -f $groupName
write-host $tmp -ForegroundColor Green
}else{
$tmp = $ErrorMsg.groupCreationError -f $groupName
write-host $tmp -ForeGroundColor Red
break
}
$group = get-adgroup -Filter { (Name -eq $groupName) -and (objectClass -eq
"group") } -searchBase $searchBase
}
else {
break;
}
}
else {
$tmp = $ErrorMsg.GroupFound -f $group.Name
write-host $tmp -ForegroundColor Green
}
}
else {
#####
## If the group is not specified, we should remove the link if any exists
#####
if ($OID."msDS-OIDToGroupLink" -ne $null) {
$tmp = $ErrorMsg.confirmLinkDeletion -f $IssuancePolicyName, $OID."msDS-
OIDToGroupLink"
write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
$userChoice = read-host
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
set-adobject -Identity $OID -Clear "msDS-OIDToGroupLink"
if ($?) {
$tmp = $ErrorMsg.UnlinkSuccess
write-host $tmp -ForeGroundColor Green
}else{
$tmp = $ErrorMsg.UnlinkError
write-host $tmp -ForeGroundColor Red
}
}
else {
$tmp = $ErrorMsg.UnlinkExit
write-host $tmp
break
}
}
else {
$tmp = $ErrorMsg.IPNotLinked
write-host $tmp -ForeGroundColor Yellow
}
break;
}
#######################################
## Verify that the group is ##
## Universal, Security, and ##
## has no members ##
#######################################
if ($group.GroupScope -ne "Universal") {
$tmp = $ErrorMsg.ErrorNotUniversal -f $IssuancePolicyName, $groupName
write-host $tmp -ForeGroundColor Red
break;
}
if ($group.GroupCategory -ne "Security") {
$tmp = $ErrorMsg.ErrorNotSecurity -f $IssuancePolicyName, $groupName
write-host $tmp -ForeGroundColor Red
break;
}
$members = Get-ADGroupMember -Identity $group
if ($members -ne $null) {
$tmp = $ErrorMsg.ErrorHasMembers -f $IssuancePolicyName, $groupName
write-host $tmp -ForeGroundColor Red
foreach ($member in $members) {write-host " $member.name" -ForeGroundColor
Red}
break;
}
#######################################
## We have verified everything. We ##
## can create the link from the ##
## Issuance Policy to the group. ##
#######################################
if ($OID."msDS-OIDToGroupLink" -ne $null) {
$tmp = $ErrorMsg.ConfirmLinkReplacement -f $IssuancePolicyName, $OID."msDS-
OIDToGroupLink", $group.distinguishedName
write-host $tmp "( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
$userChoice = read-host
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
$tmp = @{'msDS-OIDToGroupLink'= $group.DistinguishedName}
set-adobject -Identity $OID -Replace $tmp
if ($?) {
$tmp = $Errormsg.LinkSuccess
write-host $tmp -Foreground Green
}else{
$tmp = $ErrorMsg.LinkError
write-host $tmp -Foreground Red
}
} else {
$tmp = $Errormsg.ExitNoLinkReplacement
write-host $tmp
break
}
}
else {
$tmp = @{'msDS-OIDToGroupLink'= $group.DistinguishedName}
set-adobject -Identity $OID -Add $tmp
if ($?) {
$tmp = $Errormsg.LinkSuccess
write-host $tmp -Foreground Green
}else{
$tmp = $ErrorMsg.LinkError
write-host $tmp -Foreground Red
}
}

7 Note

If you're having trouble running this script, try replacing the single quote after the
ConvertFrom-StringData parameter.
Considerations and known issues when
using Credential Guard
Article • 09/05/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

It's recommended that in addition to deploying Credential Guard, organizations move


away from passwords to other authentication methods, such as Windows Hello for
Business, FIDO 2 security keys or smart cards.

Wi-fi and VPN considerations


When you enable Credential Guard, you can no longer use NTLM classic authentication
for single sign-on. You'll be forced to enter your credentials to use these protocols and
can't save the credentials for future use.

If you're using WiFi and VPN endpoints that are based on MS-CHAPv2, they're subject
to similar attacks as for NTLMv1.

For WiFi and VPN connections, it's recommended to move from MSCHAPv2-based
connections (such as PEAP-MSCHAPv2 and EAP-MSCHAPv2), to certificate-based
authentication (such as PEAP-TLS or EAP-TLS).

Kerberos considerations
When you enable Credential Guard, you can no longer use Kerberos unconstrained
delegation or DES encryption. Unconstrained delegation could allow attackers to extract
Kerberos keys from the isolated LSA process.
Use constrained or resource-based Kerberos delegation instead.

Third party Security Support Providers


considerations
Some third party Security Support Providers (SSPs and APs) might not be compatible
with Credential Guard because it doesn't allow third-party SSPs to ask for password
hashes from LSA. However, SSPs and APs still get notified of the password when a user
logs on and/or changes their password. Any use of undocumented APIs within custom
SSPs and APs aren't supported.
It's recommended that custom implementations of SSPs/APs are tested with Credential
Guard. SSPs and APs that depend on any undocumented or unsupported behaviors fail.
For example, using the KerbQuerySupplementalCredentialsMessage API isn't supported.
Replacing the NTLM or Kerberos SSPs with custom SSPs and APs.

For more information, see Restrictions around Registering and Installing a Security
Package.

Upgrade considerations
As the depth and breadth of protections provided by Credential Guard are increased,
new releases of Windows with Credential Guard running may affect scenarios that were
working in the past. For example, Credential Guard may block the use of a particular
type of credential or a particular component to prevent malware from taking advantage
of vulnerabilities.

Test scenarios required for operations in an organization before upgrading a device


using Credential Guard.

Saved Windows credentials considerations


Credential Manager allows you to store three types of credentials:

Windows credentials
Certificate-based credentials
Generic credentials

Domain credentials that are stored in Credential Manager are protected with Credential
Guard.

Generic credentials, such as user names and passwords that you use to sign in websites,
aren't protected since the applications require your clear-text password. If the
application doesn't need a copy of the password, they can save domain credentials as
Windows credentials that are protected. Windows credentials are used to connect to
other computers on a network.

The following considerations apply to the Credential Guard protections for Credential
Manager:

Windows credentials saved by the Remote Desktop client can't be sent to a remote
host. Attempts to use saved Windows credentials fail, displaying the error message
Logon attempt failed
Applications that extract Windows credentials fail
When credentials are backed up from a PC that has Credential Guard enabled, the
Windows credentials can't be restored. If you need to back up your credentials,
you must do so before you enable Credential Guard

TPM clearing considerations


Virtualization-based Security (VBS) uses the TPM to protect its key. When the TPM is
cleared, the TPM protected key used to encrypt VBS secrets is lost.

2 Warning

Clearing the TPM results in loss of protected data for all features that use VBS to
protect data.

When a TPM is cleared, all features that use VBS to protect data can no longer
decrypt their protected data.

As a result, Credential Guard can no longer decrypt protected data. VBS creates a new
TPM protected key for Credential Guard. Credential Guard uses the new key to protect
new data. However, the previously protected data is lost forever.

7 Note

Credential Guard obtains the key during initialization. The data loss will only impact
persistent data and occur after the next system startup.

Windows credentials saved to Credential Manager


Since Credential Manager can't decrypt saved Windows Credentials, they're deleted.
Applications should prompt for credentials that were previously saved. If saved again,
then Windows credentials are protected Credential Guard.

Domain-joined device's automatically provisioned public


key
Active Directory domain-joined devices automatically provision a bound public key, for
more information about automatic public key provisioning, see Domain-joined Device
Public Key Authentication.
Since Credential Guard can't decrypt the protected private key, Windows uses the
domain-joined computer's password for authentication to the domain. Unless other
policies are deployed, there shouldn't be a loss of functionality. If a device is configured
to only use public key, then it can't authenticate with password until that policy is
disabled. For more information on Configuring devices to only use public key, see
Domain-joined Device Public Key Authentication.

Also if any access control checks including authentication policies require devices to
have either the KEY TRUST IDENTITY (S-1-18-4) or FRESH PUBLIC KEY IDENTITY (S-1-18-
3) well-known SIDs, then those access checks fail. For more information about

authentication policies, see Authentication Policies and Authentication Policy Silos. For
more information about well-known SIDs, see [MS-DTYP] Section 2.4.2.4 Well-known
SID Structures.

Breaking DPAPI on domain-joined devices


On domain-joined devices, DPAPI can recover user keys using a domain controller from
the user's domain. If a domain-joined device has no connectivity to a domain controller,
then recovery isn't possible.

) Important

Best practice when clearing a TPM on a domain-joined device is to be on a network


with connectivity to domain controllers. This ensures DPAPI functions and the user
does not experience strange behavior.

Auto VPN configuration is protected with user DPAPI. User may not be able to use VPN
to connect to domain controllers since the VPN configurations are lost. If you must clear
the TPM on a domain-joined device without connectivity to domain controllers, then
you should consider the following.

Domain user sign-in on a domain-joined device after clearing a TPM for as long as
there's no connectivity to a domain controller:

Credential Type Behavior

Certificate (smart card or All data protected with user DPAPI is unusable and user DPAPI
Windows Hello for Business) doesn't work at all.

Password If the user signed in with a certificate or password prior to clearing


the TPM, then they can sign-in with password and user DPAPI is
unaffected.
Once the device has connectivity to the domain controllers, DPAPI recovers the user's
key and data protected prior to clearing the TPM can be decrypted.

Impact of DPAPI failures on Windows Information Protection

When data protected with user DPAPI is unusable, then the user loses access to all work
data protected by Windows Information Protection. The impact includes: Outlook is
unable to start and work protected documents can't be opened. If DPAPI is working,
then newly created work data is protected and can be accessed.

Workaround: Users can resolve the problem by connecting their device to the domain
and rebooting or using their Encrypting File System Data Recovery Agent certificate. For
more information about Encrypting File System Data Recovery Agent certificate, see
Create and verify an Encrypting File System (EFS) Data Recovery Agent (DRA) certificate.

Known issues
Credential Guard blocks certain authentication capabilities. Applications that require
such capabilities won't function when Credential Guard is enabled.

This article describes known issues when Credential Guard is enabled.

Single sign-on for Network services breaks after


upgrading to Windows 11, version 22H2
Devices that use 802.1x wireless or wired network, RDP, or VPN connections that rely on
insecure protocols with password-based authentication are unable to use SSO to sign in
and are forced to manually re-authenticate in every new Windows session when
Credential Guard is running.

Affected devices
Any device with Credential Guard enabled may encounter the issue. As part of the
Windows 11, version 22H2 update, eligible devices that didn't disable Credential Guard,
have it enabled by default. This affected all devices on Enterprise (E3 and E5) and
Education licenses, as well as some Pro licenses, as long as they met the minimum
hardware requirements.

All Windows Pro devices that previously ran Credential Guard on an eligible license and
later downgraded to Pro, and which still meet the minimum hardware requirements, will
receive default enablement.
 Tip

To determine if a Windows Pro device receives default enablement when upgraded


to Windows 11, version 22H2, check if the registry key
IsolatedCredentialsRootSecret is present in

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 . If it's

present, the device enables Credential Guard after the update.

You can Credential Guard can be disabled after upgrade by following the
disablement instructions.

Cause of the issue


Applications and services are affected by the issue when they rely on insecure protocols
that use password-based authentication. Such protocols are considered insecure
because they can lead to password disclosure on the client or the server, and Credential
Guard blocks them. Affected protocols include:

Kerberos unconstrained delegation (both SSO and supplied credentials are


blocked)
Kerberos when PKINIT uses RSA encryption instead of Diffie-Hellman (both SSO
and supplied credentials are blocked)
MS-CHAP (only SSO is blocked)
WDigest (only SSO is blocked)
NTLM v1 (only SSO is blocked)

7 Note

Since only SSO is blocked for MS-CHAP, WDigest, and NTLM v1, these protocols
can still be used by prompting the user to supply credentials.

How to confirm the issue


MS-CHAP and NTLMv1 are relevant to the SSO breakage after the Windows 11, version
22H2 update. To confirm if Credential Guard is blocking MS-CHAP or NTLMv1, open the
Event Viewer ( eventvwr.exe ) and go to Application and Services
Logs\Microsoft\Windows\NTLM\Operational . Check the following logs:

Event ID (type)
Description

4013 (Warning)
logging

<string
id="NTLMv1BlockedByCredGuard"
value="Attempt to use NTLMv1 failed.
Target server: %1%nSupplied user: %2%nSupplied domain: %3%nPID
of client process: %4%nName
of client process: %5%nLUID
of client process: %6%nUser identity
of client process: %7%nDomain name
of user identity of client process: %8%nMechanism OID: 9%n%n
This device doesn't support NTLMv1.
/>

4014 (Error)
logging

<string
id="NTLMGetCredentialKeyBlockedByCredGuard"
value="Attempt to get credential key by call package blocked by Credential
Guard.%n%n
Calling Process Name: %1%nService Host Tag: %2"
/>

How to fix the issue


We recommend moving away from MSCHAPv2-based connections, such as PEAP-
MSCHAPv2 and EAP-MSCHAPv2, to certificate-based authentication, like PEAP-TLS or
EAP-TLS. Credential Guard doesn't block certificate-based authentication.

For a more immediate, but less secure fix, disable Credential Guard. Credential Guard
doesn't have per-protocol or per-application policies, and it can either be turned on or
off. If you disable Credential Guard, you leave stored domain credentials vulnerable to
theft.

 Tip

To prevent default enablement, configure your devices to disable Credential Guard


before updating to Windows 11, version 22H2. If the setting is not configured
(which is the default state) and if the device is eligible, the device automatically
enable Credential Guard after the update.

If Credential Guard is explicitly disabled, the device won't automatically enable


Credential Guard after the update.

Issues with third-party applications


The following issue affects MSCHAPv2:

Credential guard doesn't work with MSCHAPv2 configurations, of which Cisco ISE
is a common enterprise implementation .

The following issue affects the Java GSS API. See the following Oracle bug database
article:

JDK-8161921: Credential Guard doesn't allow sharing of TGT with Java

When Credential Guard is enabled on Windows, the Java GSS API doesn't authenticate.
Credential Guard blocks specific application authentication capabilities and doesn't
provide the TGT session key to applications, regardless of registry key settings. For more
information, see Application requirements.

The following issue affects McAfee Application and Change Control (MACC):

KB88869 Windows machines exhibit high CPU usage with McAfee Application and
Change Control (MACC) installed when Credential Guard is enabled

The following issue affects Citrix applications:

Windows machines exhibit high CPU usage with Citrix applications installed when
Credential Guard is enabled.

7 Note

Products that connect to Virtualization Based Security (VBS) protected processes


can cause Credential Guard-enabled devices to exhibit high CPU usage. For
technical and troubleshooting information, see KB4032786 High CPU usage in the
LSAISO process on Windows.

For more technical information on LSAISO.exe, see Isolated User Mode (IUM)
Processes.
Vendor support
The following products and services don't support Credential Guard:

Check Point Endpoint Security Client support for Microsoft Credential Guard and
Hypervisor-Protected Code Integrity features
VMware Workstation and Device/Credential Guard aren't compatible error in
VMware Workstation on Windows 10 host (2146361)
ThinkPad support for Hypervisor-Protected Code Integrity and Credential Guard in
Microsoft Windows
Windows devices with Credential Guard and Symantec Endpoint Protection 12.1

) Important

This list isn't comprehensive. Check whether your product vendor, product version,
or computer system supports Credential Guard on systems that run a specific
version of Windows. Specific computer system models may be incompatible with
Credential Guard.
Remote Credential Guard
Article • 09/06/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019, ✅ Windows
to: Server 2016

Overview
Remote Credential Guard helps protecting credentials over a Remote Desktop (RDP) connection by
redirecting Kerberos requests back to the device that's requesting the connection. If the target
device is compromised, the credentials aren't exposed because both credential and credential
derivatives are never passed over the network to the target device. Remote Credential Guard also
provides single sign-on experiences for Remote Desktop sessions.

This article describes how to configure and use Remote Credential Guard.

) Important

For information on Remote Desktop connection scenarios involving helpdesk support, see
Remote Desktop connections and helpdesk support scenarios in this article.

Compare Remote Credential Guard with other


connection options
Using a Remote Desktop session without Remote Credential Guard has the following security
implications:

Credentials are sent to and stored on the remote host


Credentials aren't protected from attackers on the remote host
Attacker can use credentials after disconnection

The security benefits of Remote Credential Guard include:

Credentials aren't sent to the remote host


During the remote session you can connect to other systems using SSO
An attacker can act on behalf of the user only when the session is ongoing

The security benefits of Restricted Admin mode include:

Credentials aren't sent to the remote host


The Remote Desktop session connects to other resources as the remote host's identity
An attacker can't act on behalf of the user and any attack is local to the server

Use the following table to compare different Remote Desktop connection security options:
Feature Remote Desktop Remote Credential Restricted Admin mode
Guard

Single sign-on (SSO) to ✅ ✅ ❌


other systems as signed in
user

Multi-hop RDP ✅ ✅ ❌

Prevent use of user's ❌ ❌ ✅


identity during connection

Prevent use of credentials ❌ ✅ ✅


after disconnection

Prevent Pass-the-Hash ❌ ✅ ✅
(PtH)

Supported authentication Any negotiable protocol Kerberos only Any negotiable protocol

Credentials supported - Signed on credentials - Signed on credentials - Signed on credentials


from the remote desktop - Supplied credentials - Supplied credentials - Supplied credentials
client device - Saved credentials - Saved credentials

RDP access granted with Membership of Remote Membership of Remote Membership of


Desktop Users group on Desktop Users group on Administrators group on
remote host remote host remote host

Remote Credential Guard requirements


To use Remote Credential Guard, the remote host and the client must meet the following
requirements.

The remote host:

Must allow the user to access via Remote Desktop connections


Must allow delegation of nonexportable credentials to the client device

The client device:

Must be running the Remote Desktop Windows application. The Remote Desktop Universal
Windows Platform (UWP) application doesn't support Remote Credential Guard
Must use Kerberos authentication to connect to the remote host. If the client can't connect to
a domain controller, then RDP attempts to fall back to NTLM. Remote Credential Guard does
not allow NTLM fallback because this would expose credentials to risk

Windows edition and licensing requirements


The following table lists the Windows editions that support Remote Credential Guard:
Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Remote Credential Guard license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

Enable delegation of nonexportable credentials on


the remote hosts
This policy is required on the remote hosts to support Remote Credential Guard and Restricted
Admin mode. It allows the remote host to delegate nonexportable credentials to the client device.
If you disable or don't configure this setting, Restricted Admin and Remote Credential Guard mode
aren't supported. User will always need to pass their credentials to the host, exposing users to the
risk of credential theft from attackers on the remote host.

To enable delegation of nonexportable credentials on the remote hosts, you can use:

Microsoft Intune/MDM
Group policy
Registry

The following instructions provide details how to configure your devices. Select the option that best
suits your needs.

Intune/MDM

To configure devices using Microsoft Intune, create a Settings catalog policy and use the
following settings:

Category Setting name Value

Administrative Templates > System > Remote host allows delegation of Enabled
Credentials Delegation nonexportable credentials

Assign the policy to a group that contains as members the devices or users that you want to
configure.

Alternatively, you can configure devices using a custom policy with the Policy CSP.
Setting

- OMA-URI:
./Device/Vendor/MSFT/Policy/Config/CredentialsDelegation/RemoteHostAllowsDelegationOfNonExportableCredentials
- Data type: string
- Value: <enabled/>

Configure delegation of credentials on the clients


To enable Remote Credential Guard on the clients, you can configure a policy that prevents the
delegation of credentials to the remote hosts.

 Tip

If you don't want to configure your clients to enforce Remote Credential Guard, you can use
the following command to use Remote Credential Guard for a specific RDP session:

Windows Command Prompt

mstsc.exe /remoteGuard

The policy can have different values, depending on the level of security you want to enforce:

Disabled: Restricted Admin and Remote Credential Guard mode aren't enforced and the
Remote Desktop Client can delegate credentials to remote devices
Require Restricted Admin: the Remote Desktop Client must use Restricted Admin to connect
to remote hosts
Require Remote Credential Guard: Remote Desktop Client must use Remote Credential Guard
to connect to remote hosts
Restrict credential delegation: Remote Desktop Client must use Restricted Admin or Remote
Credential Guard to connect to remote hosts. In this configuration, Remote Credential Guard
is preferred, but it uses Restricted Admin mode (if supported) when Remote Credential Guard
can't be used

7 Note

When Restrict Credential Delegation is enabled, the /restrictedAdmin switch will be ignored.
Windows enforces the policy configuration instead and uses Remote Credential Guard.

To configure your clients, you can use:

Microsoft Intune/MDM
Group policy
The following instructions provide details how to configure your devices. Select the option that best
suits your needs.

Intune/MDM

To configure devices using Microsoft Intune, create a Settings catalog policy and use the
following settings:

Category Setting name Value

Administrative Templates > System Restrict delegation of Select Enabled and in the
> Credentials Delegation credentials to remote servers dropdown, select one of the
options:
- Restrict Credential Delegation
- Require Remote Credential
Guard

Assign the policy to a group that contains as members the devices or users that you want to
configure.

Alternatively, you can configure devices using a custom policy with the Policy CSP.

Setting

- OMA-URI: ./Device/Vendor/MSFT/Policy/Config/ADMX_CredSsp/RestrictedRemoteAdministration
- Data type: string
- Value: <enabled/><data id=\"RestrictedRemoteAdministrationDrop\" value=\"2\"/>

Possible values for RestrictedRemoteAdministrationDrop are:


- 0 : Disabled
- 1 : Require Restricted Admin
- 2 : Require Remote Credential Guard
- 3 : Restrict credential delegation

Use Remote Credential Guard


Once a client receives the policy, you can connect to the remote host using Remote Credential
Guard by opening the Remote Desktop Client ( mstsc.exe ). The user is automatically authenticated
to the remote host:
7 Note

The user must be authorized to connect to the remote server using the Remote Desktop
protocol, for example by being a member of the Remote Desktop Users local group on the
remote host.

Remote Desktop connections and helpdesk support


scenarios
For helpdesk support scenarios in which personnel require administrative access via Remote
Desktop sessions, it isn't recommended the use of Remote Credential Guard. If an RDP session is
initiated to an already compromised client, the attacker could use that open channel to create
sessions on the user's behalf. The attacker can access any of the user's resources for a limited time
after the session disconnects.

We recommend using Restricted Admin mode option instead. For helpdesk support scenarios, RDP
connections should only be initiated using the /RestrictedAdmin switch. This helps to ensure that
credentials and other user resources aren't exposed to compromised remote hosts. For more
information, see Mitigating Pass-the-Hash and Other Credential Theft v2 .

To further harden security, we also recommend that you implement Windows Local Administrator
Password Solution (LAPS), which automates local administrator password management. LAPS
mitigates the risk of lateral escalation and other cyberattacks facilitated when customers use the
same administrative local account and password combination on all their computers.

For more information about LAPS, see What is Windows LAPS.


Additional considerations
Here are some additional considerations for Remote Credential Guard:

Remote Credential Guard doesn't support compound authentication. For example, if you're
trying to access a file server from a remote host that requires a device claim, access will be
denied
Remote Credential Guard can be used only when connecting to a device that is joined to an
Active Directory domain. It can't be used when connecting to remote devices joined to Azure
Active Directory (Azure AD)
Remote Credential Guard can be used from an Azure AD joined client to connect to an Active
Directory joined remote host, as long as the client can authenticate using Kerberos
Remote Credential Guard only works with the RDP protocol
No credentials are sent to the target device, but the target device still acquires Kerberos
Service Tickets on its own
The server and client must authenticate using Kerberos
Remote Credential Guard is only supported for direct connections to the target machines and
not for the ones via Remote Desktop Connection Broker and Remote Desktop Gateway
Configure added LSA protection
Article • 09/27/2023

This article explains how to configure added protection for the Local Security Authority (LSA)
process to prevent code injection that could compromise credentials.

The LSA, which includes the Local Security Authority Server Service (LSASS) process, validates
users for local and remote sign-ins and enforces local security policies. Starting with
Windows 8.1 and later, added protection for the LSA is provided to prevent reading memory
and code injection by nonprotected processes. This feature provides added security for the
credentials that LSA stores and manages. Further protection is achieved when using UEFI lock
and Secure Boot, because disabling the
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa registry key has no effect.

Protected process requirements for plug-ins or


drivers
For an LSA plug-in or driver to successfully load as a protected process, it must meet the
following criteria:

Signature verification
Protected mode requires any plug-in that's loaded into the LSA to be digitally signed with a
Microsoft signature. Any plug-ins that are unsigned or aren't signed with a Microsoft
signature fail to load in LSA. Examples of plug-ins are smart card drivers, cryptographic plug-
ins, and password filters.

LSA plug-ins that are drivers, such as smart card drivers, need to be signed by using the
WHQL Certification. For more information, see WHQL Release Signature.
LSA plug-ins that don't have a WHQL Certification process must be signed by using the
file signing service for LSA.

Adherence to Microsoft Security Development Lifecycle


(SDL) process guidance
All plug-ins must conform to the applicable SDL process guidance. For more
information, see the Microsoft Security Development Lifecycle (SDL) – Process
Guidance.
Even if the plug-ins are properly signed with a Microsoft signature, noncompliance with
the SDL process can result in failure to load a plug-in.
Recommended practices
Use the following list to thoroughly test enabling LSA protection before you broadly deploy
the feature:

Identify all of the LSA plug-ins and drivers that your organization uses. Include non-
Microsoft drivers or plug-ins such as smart card drivers and cryptographic plug-ins, and
any internally developed software that's used to enforce password filters or password
change notifications.
Ensure that all of the LSA plug-ins are digitally signed with a Microsoft certificate so
they don't fail to load under LSA protection.
Ensure that all of the correctly signed plug-ins can successfully load into LSA and that
they perform as expected.
Use the audit logs to identify LSA plug-ins and drivers that fail to run as a protected
process.

Limitations of enabling LSA protection


If added LSA protection is enabled, you can't debug a custom LSA plug-in. You can't attach a
debugger to LSASS when it's a protected process. In general, there's no supported way to
debug a running protected process.

Audit for LSA plug-ins and drivers that won't load


as a protected process
Before you enable LSA protection, use audit mode to identify LSA plug-ins and drivers that
will fail to load in LSA protected mode. While in audit mode, the system generates event logs
that identify all of the plug-ins and drivers that fail to load under LSA if LSA protection is
enabled. The messages are logged without actually blocking the plug-ins or drivers.

The events described in this section are located in Event Viewer in the Operational log under
Applications and Services Logs > Microsoft > Windows > CodeIntegrity. These events can
help you identify LSA plug-ins and drivers that fail to load due to signing reasons. To manage
these events, you can use the wevtutil command-line tool. For information about this tool,
see Wevtutil.

) Important

Audit events aren't generated if Smart App Control is enabled on a device. To check
or change the enablement state of Smart App Control, open the Windows Security
Application and go to the App & browser control page. Select Smart App Control
settings to check the enablement state, and change the configuration to Off if you're
trying to audit added LSA protection.

7 Note

Audit mode for added LSA protection is enabled by default on devices running
Windows 11 version 22H2 and higher. If your device is running this build or later, no
other actions are needed to audit added LSA protection.

Enable audit mode for LSASS.exe on a single computer


1. Open the Registry Editor (RegEdit.exe) and navigate to the registry key at
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image
File Execution Options\LSASS.exe.
2. Set the value of the registry key to AuditLevel=dword:00000008.
3. Restart the computer.

After taking these steps, analyze the results of event 3065 and event 3066. In Event Viewer,
check for these events in the Operational log under Applications and Services Logs >
Microsoft > Windows > CodeIntegrity.

Event 3065 records that a code integrity check determined that a process, usually
LSASS.exe, attempted to load a driver that didn't meet the security requirements for
Shared Sections. However, due to the system policy currently set, the image was
allowed to load.
Event 3066 records that a code integrity check determined that a process, usually
LSASS.exe, attempted to load a driver that didn't meet the Microsoft signing level
requirements. However, due to the system policy currently set, the image was allowed
to load.

If a plug-in or driver contains Shared Sections, Event 3066 is logged with Event 3065.
Removing the Shared Sections should prevent both events from occurring unless the plug-in
doesn't meet the Microsoft signing level requirements.

) Important

These operational events aren't generated when a kernel debugger is attached and
enabled on a system.

Enable audit mode for LSASS.exe on multiple computers


To enable audit mode for multiple computers in a domain, you can use the Registry Client-
Side Extension for Group Policy to deploy the LSASS.exe audit-level registry value. You need
to modify the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Image File Execution Options\LSASS.exe registry key.

1. Open the Group Policy Management Console (GPMC) by entering gpmc.msc in the Run
dialog box or selecting Group Policy Management Console from the Start menu.
2. Create a new Group Policy Object (GPO) that's linked at the domain level or linked to
the organizational unit that contains your computer accounts. Or, select a GPO that's
already deployed.
3. Right-click the GPO, and then select Edit to open the Group Policy Management Editor.
4. Expand Computer Configuration > Preferences > Windows Settings.
5. Right-click Registry, point to New, and then select Registry Item. The New Registry
Properties dialog box appears.
6. In the Hive list, select HKEY_LOCAL_MACHINE.
7. In the Key Path list, browse to SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Image File Execution Options\LSASS.exe.
8. In the Value name box, type AuditLevel.
9. In the Value type box, select REG_DWORD.
10. In the Value data box, type 00000008.
11. Select OK.

7 Note

For the GPO to take effect, the GPO change must be replicated to all domain controllers
in the domain.

To opt in for added LSA protection on multiple computers, you can use the Registry Client-
Side Extension for Group Policy to modify
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa. For instructions, see
Configure added LSA credentials protection later in this article.

Identify plug-ins and drivers that LSASS.exe fails to load


When LSA protection is enabled, the system generates event logs that identify all of the
plug-ins and drivers that fail to load under LSA. After you opt in to added LSA protection,
you can use the event log to identify LSA plug-ins and drivers that failed to load in LSA
protection mode.

Check for the following events in Event Viewer Applications and Services Logs > Microsoft
> Windows > CodeIntegrity > Operational:
Event 3033 records that a code integrity check determined that a process, usually
LSASS.exe, attempted to load a driver that didn't meet the Microsoft signing level
requirements.
Event 3063 records that a code integrity check determined that a process, usually
LSASS.exe, attempted to load a driver that didn't meet the security requirements for
Shared Sections.

Shared Sections are typically the result of programming techniques that allow instance data
to interact with other processes that use the same security context, which can create security
vulnerabilities.

Enable and configure added LSA credentials


protection
You can configure added LSA protection for devices running Windows 8.1 or later, or
Windows Server 2012 R2 or later, by using the procedures in this section.

Devices that use Secure Boot and UEFI


When you enable LSA protection on x86-based or x64-based devices that use Secure Boot or
UEFI, you can store a UEFI variable in the UEFI firmware by using a registry key or policy.
When enabled with UEFI lock, LSASS runs as a protected process and this setting is stored in
a UEFI variable in the firmware.

When the setting is stored in the firmware, the UEFI variable can't be deleted or changed to
configure added LSA protection by modifying the registry or by policy. The UEFI variable
must be reset by using the instructions at Remove the LSA protection UEFI variable.

When enabled without a UEFI lock, LSASS runs as a protected process and this setting isn't
stored in a UEFI variable. This setting is applied by default on devices with a new install of
Windows 11 version 22H2 or later.

On x86-based or x64-based devices that don't support UEFI or where Secure Boot is
disabled, you can't store the configuration for LSA protection in the firmware. These devices
rely solely on the presence of the registry key. In this scenario, it's possible to disable LSA
protection by using remote access to the device. Disablement of LSA protection doesn't take
effect until the device reboots.

Automatic enablement
For client devices running Windows 11 version 22H2 and later, added LSA protection is
enabled by default if the following criteria are met:
The device is a new install of Windows 11 version 22H2 or later, not upgraded from a
previous release.
The device is enterprise joined (Active Directory domain joined, Azure AD domain
joined, or hybrid Azure AD domain joined).
The device is capable of Hypervisor-protected code integrity (HVCI).

Automatic enablement of added LSA protection on Windows 11 version 22H2 and later
doesn't set a UEFI variable for the feature. If you want to set a UEFI variable, you can use a
registry configuration or policy.

7 Note

For devices running Windows RT 8.1, added LSA protection is always enabled, and it
can't be turned off.

Enable LSA protection on a single computer


You can enable LSA protection on a single computer by using the registry or by using Local
Group Policy.

Enable by using the registry


1. Open the Registry Editor RegEdit.exe, and navigate to the registry key
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa.
2. Set the value of the registry key to:

"RunAsPPL"=dword:00000001 to configure the feature with a UEFI variable.


"RunAsPPL"=dword:00000002 to configure the feature without a UEFI variable,
only enforced on Windows 11 build 22H2 and higher.

3. Restart the computer.

Enable by using Local Group Policy on Windows 11 version 22H2 and


later
1. Open the Local Group Policy Editor by entering gpedit.msc.
2. Expand Computer Configuration > Administrative Templates > System > Local
Security Authority.
3. Open the Configure LSASS to run as a protected process policy.
4. Set the policy to Enabled.
5. Under Options, select one of the following options.

Enabled with UEFI Lock to configure the feature with a UEFI variable.
Enabled without UEFI Lock to configure the feature without a UEFI variable.
6. Select OK.
7. Restart the computer.

Enable LSA protection by using Group Policy


1. Open the GPMC by entering gpmc.msc in the Run dialog box or selecting Group Policy
Management Console from the Start menu.
2. Create a new GPO that's linked at the domain level or linked to the organizational unit
that contains your computer accounts. Or, select a GPO that's already deployed.
3. Right-click the GPO, and then select Edit to open the Group Policy Management Editor.
4. Expand Computer Configuration > Preferences > Windows Settings.
5. Right-click Registry, point to New, and then select Registry Item. The New Registry
Properties dialog box appears.
6. In the Hive list, select HKEY_LOCAL_MACHINE.
7. In the Key Path list, browse to SYSTEM\CurrentControlSet\Control\Lsa.
8. In the Value name box, type RunAsPPL.
9. In the Value type box, select REG_DWORD.
10. In the Value data box, type:

00000001 to enable LSA protection with a UEFI variable.


00000002 to enable LSA protection without a UEFI variable, only enforced on
Windows 11 version 22H2 and later.

11. Select OK.

Enable LSA protection by creating a custom device


configuration profile
For devices running Windows 11 version 22H2 and later, you can enable and configure LSA
protection by creating a custom device configuration profile in the Microsoft Intune admin
center .

1. In the Intune admin center, navigate to Devices > Windows > Configuration profiles
and select Create profile.
2. On the Create a profile screen, select the following options:

Platform: Windows 10 and later


Profile type: Select Templates, and then select Custom.

3. Select Create.
4. On the Basics screen, enter a Name and optional Description for the profile, and then
select Next.
5. On the Configuration settings screen, select Add.
6. On the Add row screen, provide the following information:

Name: Provide a name for the OMA-URI setting.


OMA-URI: Enter
./Device/Vendor/MSFT/Policy/Config/LocalSecurityAuthority/ConfigureLsaProtectedProcess.
Data type: Select Integer.
Value: Enter 1 to configure LSASS to run as a protected process with UEFI lock, or
2 to configure LSASS to run as a protected process without UEFI lock.

7. Select Save, and then select Next.


8. On the Assignments page, configure the assignments, and then select Next.
9. On the Applicability Rules page, configure any applicability rules, and then select Next.
10. On the Review + create page, verify the configuration, and then select Create.
11. Restart the computer.

For more information about this Policy CSP, see LocalSecurityAuthority -


ConfigureLsaProtectedProcess.

Disable LSA protection


You can disable LSA protection by using the registry or by using Local Group Policy. If the
device is using Secure Boot and you set the LSA protection UEFI variable in the firmware, you
can use a tool to remove the UEFI variable.

Disable by using the registry


1. Open the Registry Editor, RegEdit.exe, and navigate to the registry key
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa.
2. Set the value of the registry key to "RunAsPPL"=dword:00000000, or delete the
DWORD.
3. If PPL was enabled with a UEFI variable, use the Local Security Authority Protected
Process Opt-out tool to remove the UEFI variable.
4. Restart the computer.

Disable by using local policy on Windows 11 version 22H2


and later
1. Open the Local Group Policy Editor by entering gpedit.msc.
2. Expand Computer Configuration > Administrative Templates > System > Local
Security Authority.
3. Open the Configure LSASS to run as a protected process policy.
4. Set the policy to Enabled.
5. Under Options, select Disabled.
6. Select OK.
7. Restart the computer.

7 Note

If you set this policy to Not Configured and the policy was previously enabled, the prior
setting doesn't get cleaned up and continues to be enforced. You must set the policy to
Disabled under the Options dropdown to disable the feature.

Remove the LSA protection UEFI variable


You can use the Local Security Authority (LSA) Protected Process Opt-out tool
(LSAPPLConfig) from the Microsoft Download Center to delete the UEFI variable if the
device is using Secure Boot.

7 Note

The Download Center offers two files named LsaPplConfig.efi. The smaller file is for x86-
based systems and the larger file is for x64-based systems.

For more information about managing Secure Boot, see UEFI Firmware.

U Caution

When Secure Boot is turned off, all the Secure Boot and UEFI-related configurations are
reset. You should turn off Secure Boot only when all other means to disable LSA
protection have failed.

Verify LSA protection


To determine whether LSA started in protected mode when Windows started, check
Windows Logs > System in Event Viewer for the following WinInit event:

12: LSASS.exe was started as a protected process with level: 4

LSA and Credential Guard


LSA protection is a security feature that defends sensitive information like credentials from
theft by blocking untrusted LSA code injection and process memory dumping. LSA
protection runs in the background by isolating the LSA process in a container and preventing
other processes, like malicious actors or apps, from accessing the feature. This isolation
makes LSA Protection a vital security feature, which is why it's enabled by default in Windows
11.

Starting in Windows 10, Credential Guard also helps prevent credential theft attacks by
protecting NTLM password hashes, Kerberos Ticket Granting Tickets (TGTs), and credentials
stored by applications as domain credentials. Kerberos, NTLM, and Credential Manager
isolate secrets by using virtualization-based security (VBS).

With Credential Guard enabled, the LSA process talks to a component called the isolated LSA
process, or LSAIso.exe, that stores and protects secrets. Data stored by the isolated LSA
process is protected by using VBS and isn't accessible to the rest of the operating system.
LSA uses remote procedure calls to communicate with the isolated LSA process.

Starting in Windows 11 version 22H2, VBS and Credential Guard are enabled by default on all
devices that meet the system requirements. Credential Guard is supported on 64-bit Secure
Boot devices only. LSA protection and Credential Guard are complementary, and systems
that support Credential Guard or have it enabled by default can also enable and benefit from
LSA protection. For more information about Credential Guard, see Credential Guard
overview.

More resources
Credential protection and management
Partner Center for Windows Hardware
Local Accounts
Article • 08/03/2023 •
Applies ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019,
to: ✅ Windows Server 2016

This article describes the default local user accounts for Windows operating systems,
and how to manage the built-in accounts.

About local user accounts


Local user accounts are defined locally on a device, and can be assigned rights and
permissions on the device only. Local user accounts are security principals that are used
to secure and manage access to the resources on a device, for services or users.

Default local user accounts


The default local user accounts are built-in accounts that are created automatically when
the operating system is installed. The default local user accounts can't be removed or
deleted and don't provide access to network resources.

Default local user accounts are used to manage access to the local device's resources
based on the rights and permissions that are assigned to the account. The default local
user accounts, and the local user accounts that you create, are located in the Users
folder. The Users folder is located in the Local Users and Groups folder in the local
Computer Management Microsoft Management Console (MMC). Computer Management
is a collection of administrative tools that you can use to manage a local or remote
device.

Default local user accounts are described in the following sections. Expand each section
for more information.

Administrator
The default local Administrator account is a user account for system administration.
Every computer has an Administrator account (SID S-1-5-domain-500, display name
Administrator). The Administrator account is the first account that is created during the
Windows installation.

The Administrator account has full control of the files, directories, services, and other
resources on the local device. The Administrator account can create other local users,
assign user rights, and assign permissions. The Administrator account can take control
of local resources at any time by changing the user rights and permissions.

The default Administrator account can't be deleted or locked out, but it can be renamed
or disabled.

Windows setup disables the built-in Administrator account and creates another local
account that is a member of the Administrators group.

Members of the Administrators groups can run apps with elevated permissions without
using the Run as Administrator option. Fast User Switching is more secure than using
runas or different-user elevation.

Account group membership

By default, the Administrator account is a member of the Administrators group. It's a


best practice to limit the number of users in the Administrators group because members
of the Administrators group have Full Control permissions on the device.

The Administrator account can't be removed from the Administrators group.

Security considerations

Because the Administrator account is known to exist on many versions of the Windows
operating system, it's a best practice to disable the Administrator account when possible
to make it more difficult for malicious users to gain access to the server or client
computer.

You can rename the Administrator account. However, a renamed Administrator account
continues to use the same automatically assigned security identifier (SID), which can be
discovered by malicious users. For more information about how to rename or disable a
user account, see Disable or activate a local user account and Rename a local user
account.

As a security best practice, use your local (non-Administrator) account to sign in and
then use Run as administrator to accomplish tasks that require a higher level of rights
than a standard user account. Don't use the Administrator account to sign in to your
computer unless it's entirely necessary. For more information, see Run a program with
administrative credentials.

Group Policy can be used to control the use of the local Administrators group
automatically. For more information about Group Policy, see Group Policy Overview.
) Important

Blank passwords are not allowed


Even when the Administrator account is disabled, it can still be used to gain
access to a computer by using safe mode. In the Recovery Console or in safe
mode, the Administrator account is automatically enabled. When normal
operations are resumed, it's disabled.

Guest
The Guest account lets occasional or one-time users, who don't have an account on the
computer, temporarily sign in to the local server or client computer with limited user
rights. By default, the Guest account is disabled and has a blank password. Since the
Guest account can provide anonymous access, it's considered a security risk. For this
reason, it's a best practice to leave the Guest account disabled, unless its use is
necessary.

Guest account group membership

By default, the Guest account is the only member of the default Guests group SID S-1-
5-32-546 , which lets a user sign in to a device.

Guest account security considerations


When enabling the Guest account, only grant limited rights and permissions. For
security reasons, the Guest account shouldn't be used over the network and made
accessible to other computers.

In addition, the guest user in the Guest account shouldn't be able to view the event logs.
After the Guest account is enabled, it's a best practice to monitor the Guest account
frequently to ensure that other users can't use services and other resources. This
includes resources that were unintentionally left available by a previous user.

HelpAssistant
The HelpAssistant account is a default local account that is enabled when a Remote
Assistance session is run. This account is automatically disabled when no Remote
Assistance requests are pending.
HelpAssistant is the primary account that is used to establish a Remote Assistance
session. The Remote Assistance session is used to connect to another computer running
the Windows operating system, and it's initiated by invitation. For solicited remote
assistance, a user sends an invitation from their computer, through e-mail or as a file, to
a person who can provide assistance. After the user's invitation for a Remote Assistance
session is accepted, the default HelpAssistant account is automatically created to give
the person who provides assistance limited access to the computer. The HelpAssistant
account is managed by the Remote Desktop Help Session Manager service.

HelpAssistant account security considerations


The SIDs that pertain to the default HelpAssistant account include:

SID: S-1-5-<domain>-13 , display name Terminal Server User. This group includes all
users who sign in to a server with Remote Desktop Services enabled.
SID: S-1-5-<domain>-14 , display name Remote Interactive Logon. This group
includes all users who connect to the computer by using a remote desktop
connection. This group is a subset of the Interactive group. Access tokens that
contain the Remote Interactive Logon SID also contain the Interactive SID.

For the Windows Server operating system, Remote Assistance is an optional component
that isn't installed by default. You must install Remote Assistance before it can be used.

For details about the HelpAssistant account attributes, see the following table.

HelpAssistant account attributes

Attribute Value

Well-Known SID/RID S-1-5-<domain>-13 (Terminal Server User), S-1-5-


<domain>-14 (Remote Interactive Logon)

Type User

Default container CN=Users, DC=<domain>

Default members None

Default member of Domain Guests

Guests

Protected by ADMINSDHOLDER? No

Safe to move out of default container? Can be moved out, but we don't recommend it.
Attribute Value

Safe to delegate management of this No


group to non-Service admins?

DefaultAccount
The DefaultAccount account, also known as the Default System Managed Account
(DSMA), is a well-known user account type. DefaultAccount can be used to run
processes that are either multi-user aware or user-agnostic.

The DSMA is disabled by default on the desktop editions and on the Server operating
systems with the desktop experience.

The DSMA has a well-known RID of 503 . The security identifier (SID) of the DSMA will
thus have a well-known SID in the following format: S-1-5-21-\
<ComputerIdentifier>-503 .

The DSMA is a member of the well-known group System Managed Accounts Group,
which has a well-known SID of S-1-5-32-581 .

The DSMA alias can be granted access to resources during offline staging even before
the account itself has been created. The account and the group are created during first
boot of the machine within the Security Accounts Manager (SAM).

How Windows uses the DefaultAccount


From a permission perspective, the DefaultAccount is a standard user account. The
DefaultAccount is needed to run multi-user-manifested-apps (MUMA apps). MUMA
apps run all the time and react to users signing in and signing out of the devices. Unlike
Windows Desktop where apps run in context of the user and get terminated when the
user signs off, MUMA apps run by using the DSMA.

MUMA apps are functional in shared session SKUs such as Xbox. For example, Xbox shell
is a MUMA app. Today, Xbox automatically signs in as Guest account and all apps run in
this context. All the apps are multi-user-aware and respond to events fired by user
manager. The apps run as the Guest account.

Similarly, Phone auto logs in as a DefApps account, which is akin to the standard user
account in Windows but with a few extra privileges. Brokers, some services and apps run
as this account.
In the converged user model, the multi-user-aware apps and multi-user-aware brokers
will need to run in a context different from that of the users. For this purpose, the
system creates DSMA.

How the DefaultAccount gets created on domain controllers


If the domain was created with domain controllers running Windows Server 2016, the
DefaultAccount will exist on all domain controllers in the domain. If the domain was
created with domain controllers running an earlier version of Windows Server, the
DefaultAccount will be created after the PDC Emulator role is transferred to a domain
controller that runs Windows Server 2016. The DefaultAccount will then be replicated to
all other domain controllers in the domain.

Recommendations for managing the Default Account (DSMA)


Microsoft doesn't recommend changing the default configuration, where the account is
disabled. There's no security risk with having the account in the disabled state. Changing
the default configuration could hinder future scenarios that rely on this account.

Default local system accounts

SYSTEM
The SYSTEM account is used by the operating system and by services running under
Windows. There are many services and processes in the Windows operating system that
need the capability to sign in internally, such as during a Windows installation. The
SYSTEM account was designed for that purpose, and Windows manages the SYSTEM
account's user rights. It's an internal account that doesn't show up in User Manager, and
it can't be added to any groups.

On the other hand, the SYSTEM account does appear on an NTFS file system volume in
File Manager in the Permissions portion of the Security menu. By default, the SYSTEM
account is granted Full Control permissions to all files on an NTFS volume. Here the
SYSTEM account has the same functional rights and permissions as the Administrator
account.

7 Note

To grant the account Administrators group file permissions does not implicitly give
permission to the SYSTEM account. The SYSTEM account's permissions can be
removed from a file, but we do not recommend removing them.

NETWORK SERVICE
The NETWORK SERVICE account is a predefined local account used by the service
control manager (SCM). A service that runs in the context of the NETWORK SERVICE
account presents the computer's credentials to remote servers. For more information,
see NetworkService Account.

LOCAL SERVICE
The LOCAL SERVICE account is a predefined local account used by the service control
manager. It has minimum privileges on the local computer and presents anonymous
credentials on the network. For more information, see LocalService Account.

How to manage local user accounts


The default local user accounts, and the local user accounts you create, are located in
the Users folder. The Users folder is located in Local Users and Groups. For more
information about creating and managing local user accounts, see Manage Local Users.

You can use Local Users and Groups to assign rights and permissions on only the local
server to limit the ability of local users and groups to perform certain actions. A right
authorizes a user to perform certain actions on a server, such as backing up files and
folders or shutting down a server. An access permission is a rule that is associated with
an object, usually a file, folder, or printer. It regulates which users can have access to an
object on the server and in what manner.

You can't use Local Users and Groups on a domain controller. However, you can use
Local Users and Groups on a domain controller to target remote computers that aren't
domain controllers on the network.

7 Note

You use Active Directory Users and Computers to manage users and groups in
Active Directory.

You can also manage local users by using NET.EXE USER and manage local groups by
using NET.EXE LOCALGROUP, or by using various PowerShell cmdlets and other scripting
technologies.
Restrict and protect local accounts with administrative
rights
An administrator can use many approaches to prevent malicious users from using stolen
credentials such as a stolen password or password hash, for a local account on one
computer from being used to authenticate on another computer with administrative
rights. This is also called lateral movement.

The simplest approach is to sign in to your computer with a standard user account,
instead of using the Administrator account for tasks. For example, use a standard
account to browse the Internet, send email, or use a word processor. When you want to
perform administrative tasks such as installing a new program or changing a setting that
affects other users, you don't have to switch to an Administrator account. You can use
User Account Control (UAC) to prompt you for permission or an administrator password
before performing the task, as described in the next section.

The other approaches that can be used to restrict and protect user accounts with
administrative rights include:

Enforce local account restrictions for remote access


Deny network logon to all local Administrator accounts
Create unique passwords for local accounts with administrative rights

Each of these approaches is described in the following sections.

7 Note

These approaches do not apply if all administrative local accounts are disabled.

Enforce local account restrictions for remote access


User Account Control (UAC) is a security feature that informs you when a program
makes a change that requires administrative permissions. UAC works by adjusting the
permission level of your user account. By default, UAC is set to notify you when
applications try to make changes to your computer, but you can change when UAC
notifies you.

UAC makes it possible for an account with administrative rights to be treated as a


standard user non-administrator account until full rights, also called elevation, is
requested and approved. For example, UAC lets an administrator enter credentials
during a non-administrator's user session to perform occasional administrative tasks
without having to switch users, sign out, or use the Run as command.
In addition, UAC can require administrators to specifically approve applications that
make system-wide changes before those applications are granted permission to run,
even in the administrator's user session.

For example, a default feature of UAC is shown when a local account signs in from a
remote computer by using Network logon (for example, by using NET.EXE USE). In this
instance, it's issued a standard user token with no administrative rights, but without the
ability to request or receive elevation. Consequently, local accounts that sign in by using
Network logon can't access administrative shares such as C$, or ADMIN$, or perform
any remote administration.

For more information about UAC, see User Account Control.

The following table shows the Group Policy and registry settings that are used to
enforce local account restrictions for remote access.

No. Setting Detailed Description

Policy Computer Configuration\Windows Settings\Security Settings\Local Policies\Security


location Options

1 Policy User Account Control: Admin Approval Mode for the Built-in Administrator account
name

Policy Enabled
setting

2 Policy Computer Configuration\Windows Settings\Security Settings\Local Policies\Security


location Options

Policy User Account Control: Run all administrators in Admin Approval Mode
name

Policy Enabled
setting

3 Registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
key

Registry LocalAccountTokenFilterPolicy
value
name

Registry DWORD
value
type

Registry 0
value
No. Setting Detailed Description

data

7 Note

You can also enforce the default for LocalAccountTokenFilterPolicy by using the
custom ADMX in Security Templates.

To enforce local account restrictions for remote access

1. Start the Group Policy Management Console (GPMC)


2. In the console tree, expand <Forest>\Domains\<Domain>, and then Group Policy
Objects where forest is the name of the forest, and domain is the name of the
domain where you want to set the Group Policy Object (GPO)
3. In the console tree, right-click Group Policy Objects > New
4. In the New GPO dialog box, type <gpo_name>, and > OK where gpo_name is the
name of the new GPO. The GPO name indicates that the GPO is used to restrict
local administrator rights from being carried over to another computer
5. In the details pane, right-click <gpo_name>, and > Edit
6. Ensure that UAC is enabled and that UAC restrictions apply to the default
Administrator account by following these steps:

Navigate to the Computer Configuration\Windows Settings\Security Settings\Local


Policies\, and > Security Options
Double-click User Account Control: Run all administrators in Admin Approval
Mode > Enabled > OK
Double-click User Account Control: Admin Approval Mode for the Built-in
Administrator account > Enabled > OK

1. Ensure that the local account restrictions are applied to network interfaces by
following these steps:

Navigate to Computer Configuration\Preferences and Windows Settings, and >


Registry
Right-click Registry, and > New > Registry Item
In the New Registry Properties dialog box, on the General tab, change the setting
in the Action box to Replace
Ensure that the Hive box is set to HKEY_LOCAL_MACHINE
Select (…), browse to the following location for Key Path > Select for:
SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
In the Value name area, type LocalAccountTokenFilterPolicy
In the Value type box, from the drop-down list, select REG_DWORD to change the
value
In the Value data box, ensure that the value is set to 0
Verify this configuration, and > OK

1. Link the GPO to the first Workstations organizational unit (OU) by doing the
following:

Navigate to the *Forest*\<Domains>\*Domain*\*OU* path


Right-click the Workstations > Link an existing GPO
Select the GPO that you created, and > OK

1. Test the functionality of enterprise applications on the workstations in that first OU


and resolve any issues caused by the new policy
2. Create links to all other OUs that contain workstations
3. Create links to all other OUs that contain servers

Deny network logon to all local Administrator accounts


Denying local accounts the ability to perform network logons can help prevent a local
account password hash from being reused in a malicious attack. This procedure helps to
prevent lateral movement by ensuring that stolen credentials for local accounts from a
compromised operating system can't be used to compromise other computers that use
the same credentials.

7 Note

To perform this procedure, you must first identify the name of the local, default
Administrator account, which might not be the default user name "Administrator",
and any other accounts that are members of the local Administrators group.

The following table shows the Group Policy settings that are used to deny network
logon for all local Administrator accounts.

No. Setting Detailed Description

Policy Computer Configuration\Windows Settings\Security Settings\Local


location Policies\User Rights Assignment

1 Policy name Deny access to this computer from the network


No. Setting Detailed Description

Policy Local account and member of Administrators group


setting

2 Policy Computer Configuration\Windows Settings\Security Settings\Local


location Policies\User Rights Assignment

Policy name Deny log on through Remote Desktop Services

Policy Local account and member of Administrators group


setting

To deny network logon to all local administrator accounts


1. Start the Group Policy Management Console (GPMC)
2. In the console tree, expand <Forest>\Domains\<Domain>, and then Group Policy
Objects, where forest is the name of the forest, and domain is the name of the
domain where you want to set the Group Policy Object (GPO)
3. In the console tree, right-click Group Policy Objects, and > New
4. In the New GPO dialog box, type <gpo_name>, and then > OK where gpo_name is
the name of the new GPO indicates that it's being used to restrict the local
administrative accounts from interactively signing in to the computer
5. In the details pane, right-click <gpo_name>, and > Edit
6. Configure the user rights to deny network logons for administrative local accounts
as follows:
7. Navigate to the Computer Configuration\Windows Settings\Security Settings\, and
> User Rights Assignment
8. Double-click Deny access to this computer from the network
9. Select Add User or Group, type Local account and member of Administrators
group, and > OK
10. Configure the user rights to deny Remote Desktop (Remote Interactive) logons for
administrative local accounts as follows:
11. Navigate to Computer Configuration\Policies\Windows Settings and Local Policies,
and then select User Rights Assignment
12. Double-click Deny log on through Remote Desktop Services
13. Select Add User or Group, type Local account and member of Administrators
group, and > OK
14. Link the GPO to the first Workstations OU as follows:

Navigate to the <Forest>\Domains\<Domain>\OU path


Right-click the Workstations OU, and > Link an existing GPO
Select the GPO that you created, and > OK
1. Test the functionality of enterprise applications on the workstations in that first OU
and resolve any issues caused by the new policy
2. Create links to all other OUs that contain workstations
3. Create links to all other OUs that contain servers

7 Note

You might have to create a separate GPO if the user name of the default
Administrator account is different on workstations and servers.

Create unique passwords for local accounts with


administrative rights
Passwords should be unique per individual account. While it's true for individual user
accounts, many enterprises have identical passwords for common local accounts, such
as the default Administrator account. This also occurs when the same passwords are
used for local accounts during operating system deployments.

Passwords that are left unchanged or changed synchronously to keep them identical
add a significant risk for organizations. Randomizing the passwords mitigates "pass-the-
hash" attacks by using different passwords for local accounts, which hamper the ability
of malicious users to use password hashes of those accounts to compromise other
computers.

Passwords can be randomized by:

Purchasing and implementing an enterprise tool to accomplish this task. These


tools are commonly referred to as "privileged password management" tools
Configuring Local Administrator Password Solution (LAPS) to accomplish this task
Creating and implementing a custom script or solution to randomize local account
passwords
Windows and cloud security
Article • 08/02/2023

Today's workforce has more freedom and mobility than ever before, and the risk of data
exposure is also at its highest. We are focused on getting customers to the cloud to
benefit from modern hybrid workstyles while improving security management. Built on
zero-trust principles, Windows works with Microsoft cloud services to safeguard
sensitive information while controlling access and mitigating threats.

From identity and device management to Office apps and data storage, Windows and
integrated cloud services can help improve productivity, security, and resilience
anywhere.

Learn more about cloud security features in Windows.

Protect your work information


Feature name Description

Azure AD join, Active Microsoft Azure Active Directory is a comprehensive cloud-based


Directory domain join, identity management solution that helps enable secure access to
and Hybrid Azure AD applications, networks, and other resources and guard against threats.
join with single sign-
on (SSO)

Security baselines Windows 11 supports modern device management so that IT pros can
manage company security policies and business applications without
compromising user privacy on corporate or employee-owned devices.
With MDM solutions, IT can manage Windows 11 using industry-
standard protocols. To simplify setup for users, management features
are built directly into Windows, eliminating the need for a separate
MDM client.

Windows 11 can be configured with Microsoft's MDM security baseline


backed by ADMX policies, which functions like the Microsoft GP-based
security baseline. The security baseline enables IT administrators to
easily address security concerns and compliance needs for modern
cloud-managed devices.

Remote wipe When a device is lost or stolen, IT administrators may want to remotely
wipe data stored on the device. A helpdesk agent may also want to
reset devices to fix issues encountered by remote workers.

With the Remote Wipe configuration service provider (CSP), an MDM


solution can remotely initiate any of the following operations on a
Feature name Description

Windows device: reset the device and remove user accounts and data,
reset the device and clean the drive, reset the device but persist user
accounts and data.

Modern device Windows 11 supports modern device management through mobile


management through device management (MDM) protocols.
(MDM)
IT pros can manage company security policies and business
applications without compromising user privacy on corporate or
employee-owned devices. With MDM solutions, IT can manage
Windows 11 using industry-standard protocols.

To simplify setup for users, management features are built directly into
Windows, eliminating the need for a separate MDM client.

Universal Print Unlike traditional print solutions that rely on Windows print servers,
Universal Print is a Microsoft hosted cloud subscription service that
supports a zero-trust security model by enabling network isolation of
printers, including the Universal Print connector software, from the rest
of the organization's resources.

Windows Autopatch With the Autopatch service, IT teams can delegate management of
updates to Windows 10/11, Microsoft Edge, and Microsoft 365 apps to
Microsoft. Under the hood, Autopatch takes over configuration of the
policies and deployment service of Windows Update for Business. What
the customer gets are endpoints that are up to date, thanks to
dynamically generated rings for progressive deployment that will pause
and/or roll back updates (where possible) when issues arise.

The goal is to provide peace of mind to IT pros, encourage rapid


adoption of updates, and to reduce bandwidth required to deploy
them successfully, thereby closing gaps in protection that may have
been open to exploitation by malicious actors.

Windows Autopilot Windows Autopilot simplifies the way devices get deployed, reset, and
repurposed, with an experience that is zero touch for IT.
Microsoft Entra joined devices
Article • 09/21/2023

Any organization can deploy Microsoft Entra joined devices no matter the size or
industry. Microsoft Entra join works even in hybrid environments, enabling access to
both cloud and on-premises apps and resources.

Microsoft Entra Description


join

Definition Joined only to Microsoft Entra ID requiring organizational account to sign


in to the device

Primary audience Suitable for both cloud-only and hybrid organizations.

Applicable to all users in an organization

Device ownership Organization

Operating Systems All Windows 11 and Windows 10 devices except Home editions

Windows Server 2019 and newer Virtual Machines running in Azure (Server
core isn't supported)

Provisioning Self-service: Windows Out of Box Experience (OOBE) or Settings

Bulk enrollment

Windows Autopilot

Device sign in Organizational accounts using:


options

Password

Passwordless options like Windows Hello for Business and FIDO2.0 security
keys.

Device Mobile Device Management (example: Microsoft Intune)


management

Configuration Manager standalone or co-management with Microsoft


Intune

Key capabilities SSO to both cloud and on-premises resources

Conditional Access through MDM enrollment and MDM compliance


evaluation

Self-service Password Reset and Windows Hello PIN reset on lock screen
Microsoft Entra joined devices are signed in to using an organizational Microsoft Entra
account. Access to resources can be controlled based on Microsoft Entra account and
Conditional Access policies applied to the device.

Administrators can secure and further control Microsoft Entra joined devices using
Mobile Device Management (MDM) tools like Microsoft Intune or in co-management
scenarios using Microsoft Configuration Manager. These tools provide a means to
enforce organization-required configurations like:

Requiring storage to be encrypted


Password complexity
Software installation
Software updates

Administrators can make organization applications available to Microsoft Entra joined


devices using Configuration Manager to Manage apps from the Microsoft Store for
Business and Education.

Microsoft Entra join can be accomplished using self-service options like the Out of Box
Experience (OOBE), bulk enrollment, or Windows Autopilot.

Microsoft Entra joined devices can still maintain single sign-on access to on-premises
resources when they are on the organization's network. Devices that are Microsoft Entra
joined can still authenticate to on-premises servers like file, print, and other applications.

Scenarios
Microsoft Entra join can be used in various scenarios like:

You want to transition to cloud-based infrastructure using Microsoft Entra ID and


MDM like Intune.
You can’t use an on-premises domain join, for example, if you need to get mobile
devices such as tablets and phones under control.
Your users primarily need to access Microsoft 365 or other SaaS apps integrated
with Microsoft Entra ID.
You want to manage a group of users in Microsoft Entra ID instead of in Active
Directory. This scenario can apply, for example, to seasonal workers, contractors, or
students.
You want to provide joining capabilities to workers who work from home or are in
remote branch offices with limited on-premises infrastructure.

You can configure Microsoft Entra join for all Windows 11 and Windows 10 devices
except for Home editions.
The goal of Microsoft Entra joined devices is to simplify:

Windows deployments of work-owned devices


Access to organizational apps and resources from any Windows device
Cloud-based management of work-owned devices
Users to sign in to their devices with their Microsoft Entra ID or synced Active
Directory work or school accounts.

Microsoft Entra join can be deployed by using any of the following methods:

Windows Autopilot
Bulk deployment
Self-service experience

Next steps
Plan your Microsoft Entra join implementation
Co-management using Configuration Manager and Microsoft Intune
How to manage the local administrators group on Microsoft Entra joined devices
Manage device identities
Manage stale devices in Microsoft Entra ID
Use security baselines to configure
Windows devices in Intune
Article • 05/24/2023

With Microsoft Intune’s security baselines, you can rapidly deploy a recommended
security posture to your managed Windows devices for Windows security baselines to
help you secure and protect your users and devices.

Even though Windows and Windows Server are designed to be secure out-of-the-box,
many organizations still want more granular control over their security configurations.
To navigate the large number of controls, organizations often seek guidance on
configuring various security features. Microsoft provides this guidance in the form of
security baselines.

Each security baseline is a group of preconfigured Windows settings that help you apply
and enforce granular security settings that the relevant security teams recommend. You
can also customize each baseline you deploy to enforce only those settings and values
you require. When you create a security baseline profile in Intune, you're creating a
template that consists of multiple device configuration profiles.

The settings in each baseline are device configuration settings like those found in
various Intune policies. Each setting in a baseline works with the configuration service
provider for the relevant product that is present on a managed windows device.

To learn more about why and when you might want to deploy security baselines, see
Windows security baselines in the Windows security documentation.

This feature applies to:

Windows 10 version 1809 and later


Windows 11

Intune security baseline overview

7 Note

In May 2023, Intune began rollout of a new security baseline format for each new
baseline release or version update. The new format updates the baseline settings to
directly take their name and configuration options from the configuration service
provider (CSP) that the baseline setting manages.
Intune also introduced a new process to help you migrate an existing security
baseline profile to the newer baseline version. This new behavior is a one-time
process that replaces the normal update behavior when you move from the most
recent version of an older profile to a newer version that became available in May
2023 or later.

You deploy security baselines to groups of users or devices in Intune, and the settings
apply to devices that run Windows 10 or 11. For example, the default configuration of
the Security Baseline for Windows 10 and later automatically enables BitLocker for
removable drives, automatically requires a password to unlock a device, automatically
disables basic authentication, and more. When a default value doesn't work for your
environment, customize the baseline to apply the settings you need.

Benefits of using baselines:


Security baselines can help you to have an end-to-end secure workflow when working
with Microsoft 365. Some of the benefits include:

By default, each security baseline is configured to meet the best practices and
recommendations for the settings that affect security. Intune partners with the
same Windows security team that creates group policy security baselines. These
recommendations are based on guidance and extensive experience.
If you're new to Intune, and not sure where to start, security baselines give you an
advantage. You can quickly create and deploy a secure profile, knowing that you're
helping protect your organization's resources and data.
If you currently use group policy, migrating to Intune for management is easier
with these baselines. These baselines are natively built into Intune, and include a
modern management experience.

Default settings across multiple baselines:


Separate baseline types, like the MDM security baseline for Windows and the baseline
for Microsoft Defender, might include the same settings and use different default values
for those settings. Intune can’t determine which configuration is best for you, or even in
which environment or scenario you might want to use one baselines default
recommendation over another:

It's important to understand the defaults in the baselines you use, and to then
modify each baseline to fit your organizational needs.
By default, each baseline is preconfigured using the recommendations that are
specific to the product it applies to.
In some cases, a configuration that Microsoft Defender recommends might not be
the default configuration for similar settings when recommended by Windows. In
such situations, it’s important to review each setting so you can understand its
intent based on the configuration service provider details, and larger scope of the
two products.

In almost all scenarios, the default settings in the security baselines are the most
restrictive. You should confirm that these settings don't conflict with other policy
settings or features in your environment.

For example, the default settings for firewall configuration might not merge connection
security rules and local policy rules with MDM rules. So, if you're using delivery
optimization, then you should validate these configurations before assigning the
security baseline.

7 Note

Microsoft doesn't recommend using preview versions of security baselines in a


production environment. The settings in a preview baseline might change over the
course of the preview.

Available security baselines


The following security baseline instances are available for use with Intune. Use the links
to view the settings for recent instances of each baseline.

Security Baseline for Windows 10 and later


November 2021
December 2020
August 2020

Microsoft Defender for Endpoint baseline


(To use this baseline your environment must meet the prerequisites for using
Microsoft Defender for Endpoint).
Version 6
Version 5
Version 4
Version 3

7 Note

The Microsoft Defender for Endpoint security baseline has been optimized for
physical devices and is currently not recommended for use on virtual
machines (VMs) or VDI endpoints. Certain baseline settings can impact
remote interactive sessions on virtualized environments. For more
information, see Increase compliance to the Microsoft Defender for
Endpoint security baseline in the Windows documentation.

Microsoft 365 Apps for Enterprise


May 2023 (Office baseline)

Microsoft Edge Baseline


May 2023 (Edge Version 112 and later)
September 2020 (Edge version 85 and later)
April 2020 (Edge version 80 and later)
Preview: October 2019 (Edge version 77 and later)

Windows 365 Security Baseline


October 2021

When a new version for a profile becomes available, settings in profiles based on the
older versions become read-only. You can continue to use those older profiles. You can
also edit the profile names, description, and assignments, but they don't support a
change to their settings configuration and you can't create new profiles based on the
older versions.

When you're ready to use the more recent baseline version, you can create new profiles
or update your existing profiles to the new version. See Change the baseline version for
a profile in the Manage security baseline profiles article.

About baseline versions and instances


Each new version instance of a baseline can add or remove settings or introduce other
changes. For example, as new Windows settings become available with new versions of
Windows 10/11, Security Baseline for Windows 10 and later might receive a new version
instance that includes the newest settings.

You can view the list of available baselines in the Microsoft Intune admin center ,
under Endpoint security > Security baselines. The list includes:

The name of each security baseline template.


How many profiles you have that use that type of baseline.
How many separate instances (versions) of the baseline type are available.
A Last Published date that identifies when the latest version of the baseline
template became available.
To view more information about the baseline versions you use, select a baseline type,
like Security Baseline for Windows 10 and later to open its Profiles pane, and then select
Versions. Intune displays details about the versions of that baseline that are in use by
your profiles. The details include the most recent and current baseline version. You can
select a single version to view deeper details about the profiles that use that version.

You can choose to change of the version of a baseline that's in use with a given profile.
When you change the version, you don't have to create a new baseline profile to take
advantage of updated versions. Instead you can select a baseline profile and use the
built-in option to change the instance version for that profile to a new one.

Avoid conflicts
You can use one or more of the available baselines in your Intune environment at the
same time. You can also use multiple instances of the same security baselines that have
different customizations.

When you use multiple security baselines, review the settings in each one to identify
when your different baseline configurations introduce conflicting values for the same
setting. Because you can deploy security baselines that are designed for different
intents, and deploy multiple instances of the same baseline that includes customized
settings, you might create configuration conflicts for devices that must be investigated
and resolved.

In addition, security baselines often manage the same settings you might set with device
configuration profiles or other types of policy. Therefore, remain aware of and consider
your other policies and profiles for settings when seeking to avoid or resolve conflicts.

Use the information at the following links to help identify and resolve conflicts:

Troubleshoot policies and profiles in Intune


Monitor your security baselines

Q&A

Why these settings?


The Microsoft security team has years of experience working directly with Windows
developers and the security community to create these recommendations. The settings
in this baseline are considered the most relevant security-related configuration options.
In each new build of Windows, the team adjusts its recommendations based on newly
released features.

Is there a difference in the recommendations for


Windows security baselines for group policy vs. Intune?
The same Microsoft security team chose and organized the settings for each baseline.
Intune includes all the relevant settings in the Intune security baseline. There are some
settings in the group policy baseline that are specific to an on-premises domain
controller. These settings are excluded from Intune's recommendations. All the other
settings are the same.

Are the Intune security baselines CIS or NIST compliant?


Strictly speaking, no. The Microsoft security team consults organizations, such as CIS, to
compile its recommendations. However, there isn't a one-to-one mapping between
"CIS-compliant" and Microsoft baselines.

What certifications do Microsoft's security baselines


have?
Microsoft continues to publish security baselines for group policies (GPOs) and the
Security Compliance Toolkit, as it has for many years. These baselines are used by many
organizations. The recommendations in these baselines are from the Microsoft security
team's engagement with enterprise customers and external agencies, including the
Department of Defense (DoD), National Institute of Standards and Technology (NIST),
and more. We share our recommendations and baselines with these organizations.
These organizations also have their own recommendations that closely mirror
Microsoft's recommendations. As mobile device management (MDM) continues to grow
into the cloud, Microsoft created equivalent MDM recommendations of these group
policy baselines. These additional baselines are built into Microsoft Intune, and include
compliance reports on users, groups, and devices that follow (or don't follow) the
baseline.

Many customers use the Intune baseline recommendations as a starting point, and then
customize them to meet their IT and security demands. Microsoft's Windows 10 and
later baseline template was the first baseline to release. This baseline is built as a generic
infrastructure that allows customers to eventually import other security baselines based
on CIS, NIST, and other standards.
Migrating from on-premises Active Directory group policies to a pure cloud solution
using Azure Active Directory (AD) with Microsoft Intune is a journey. To help, use the
various tools from the Security Compliance Toolkit that can help you identify cloud-
based options from security baselines that can replace your on-premises GPO
configurations.

Where can I find details about using or configuring the


settings that are available in a security baseline?
Each security baseline manages device configurations by applying the options found in
a configuration service provider on a device. For example, settings that apply to
Microsoft Defender are taken from th Microsoft Defender CSP. Because Intune is a
configuration vehicle for those options and doesn’t determine their functionality or
scope, the CSP documentation owns the content for how to configure each option.

Within the Intune security baseline policy UI, Intune provides information text that is
taken from the source CSP and provides a link to that CSP. In some cases, the CSP might
be part of a larger content set that includes proactive guidance that remains beyond the
scope of Intune to include or duplicate in our content. However, Intune does document
the list of settings in each security baseline version and its default configuration.

Next steps
Create security baseline profiles

Check the status and monitor the baseline and profile

View the settings in the latest versions of the available baselines:


Windows 10 and later - MDM security baseline
Microsoft Defender for Endpoint baseline

- [Microsoft 365 Apps for Enterprise (Office baseline)](security-baseline-settings-


office.md) -->

Microsoft Edge (Version 107 and later)


Windows 365 Security Baseline
RemoteWipe CSP
Article • 08/14/2023

The RemoteWipe configuration service provider can be used by mobile operators DM


server or enterprise management server to remotely reset a device. The RemoteWipe
configuration service provider can make the data stored in memory and hard disks
difficult to recover if the device is remotely reset after being lost or stolen. Enterprise IT
Professionals can update these settings by using the Exchange Server.

Windows edition and licensing requirements


The following table lists the Windows editions that support Remote wipe:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

Yes Yes Yes Yes

Remote wipe license entitlements are granted by the following licenses:

Windows Pro/Pro Windows Windows Windows Windows


Education/SE Enterprise E3 Enterprise E5 Education A3 Education A5

Yes Yes Yes Yes Yes

For more information about Windows licensing, see Windows licensing overview.

The following list shows the RemoteWipe configuration service provider nodes:

./Device/Vendor/MSFT/RemoteWipe
AutomaticRedeployment
doAutomaticRedeployment
LastError
Status
doWipe
doWipeCloud
doWipeCloudPersistProvisionedData
doWipeCloudPersistUserData
doWipePersistProvisionedData
doWipePersistUserData
doWipeProtected
AutomaticRedeployment
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1809 [10.0.17763] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/AutomaticRedeployment

Node for the Autopilot Reset operation.

Description framework properties:

Property name Property value

Format node

Access Type Get

AutomaticRedeployment/doAutomaticRedeployment

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1809 [10.0.17763] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/AutomaticRedeployment/doAutomaticRedeploymen
t

Exec on this node triggers Autopilot Reset operation. This works like PC Reset, similar to
other existing nodes in this RemoteWipe CSP, except that it keeps the device enrolled in
Azure AD and MDM, keeps Wi-Fi profiles, and a few other settings like region, language,
keyboard.

Description framework properties:

Property name Property value

Format chr (string)

Access Type Exec

AutomaticRedeployment/LastError

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1809 [10.0.17763] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/AutomaticRedeployment/LastError

Error value, if any, associated with Automatic Redeployment operation (typically an


HRESULT).

Description framework properties:

Property name Property value

Format int

Access Type Get

Default Value 0

AutomaticRedeployment/Status

Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1809 [10.0.17763] and


Device ✅ Enterprise later
Scope Editions Applicable OS

❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/AutomaticRedeployment/Status

Status value indicating current state of an Automatic Redeployment operation. 0: Never


run (not started). The default state. 1: Complete. 10: Reset has been scheduled. 20: Reset
is scheduled and waiting for a reboot. 30: Failed during CSP Execute ("Exec" in SyncML).
40: Failed: power requirements not met. 50: Failed: reset internals failed during reset
attempt.

Description framework properties:

Property name Property value

Format int

Access Type Get

Default Value 0

doWipe
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1511 [10.0.10586] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/doWipe

Exec on this node will perform a remote wipe on the device. The return status code
shows whether the device accepted the Exec command. When used with OMA Client
Provisioning, a dummy value of "1" should be included for this element.

A remote reset is equivalent to running Reset this PC > Remove everything from the
Settings app, with Clean Data set to No and Delete Files set to Yes. If a doWipe reset is
started and then interrupted, the PC will attempt to roll-back to the pre-reset state. If
the PC can't be rolled-back, the recovery environment will take no additional actions
and the PC could be in an unusable state and Windows will have to be reinstalled.

Description framework properties:

Property name Property value

Format chr (string)

Access Type Exec

doWipeCloud
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 11, version 22H2 [10.0.22621] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/doWipeCloud

Exec on this node will perform a cloud-based remote wipe on the device. The return
status code shows whether the device accepted the Exec command.

Description framework properties:

Property name Property value

Format chr (string)

Access Type Exec

doWipeCloudPersistProvisionedData
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 11, version 22H2 [10.0.22621] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/doWipeCloudPersistProvisionedData

Exec on this node will back up provisioning data to a persistent location and perform a
cloud-based remote wipe on the device. The information that was backed up will be
restored and applied to the device when it resumes. The return status code shows
whether the device accepted the Exec command.

Description framework properties:

Property name Property value

Format chr (string)

Access Type Exec

doWipeCloudPersistUserData
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 11, version 22H2 [10.0.22621] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/doWipeCloudPersistUserData

Exec on this node will perform a cloud-based remote reset on the device and persist
user accounts and data. The return status code shows whether the device accepted the
Exec command.
Description framework properties:

Property name Property value

Format chr (string)

Access Type Exec

doWipePersistProvisionedData
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1511 [10.0.10586] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/doWipePersistProvisionedData

Exec on this node will back up provisioning data to a persistent location and perform a
remote wipe on the device. The information that was backed up will be restored and
applied to the device when it resumes. The return status code shows whether the device
accepted the Exec command. When used with OMA Client Provisioning, a dummy value
of "1" should be included for this element. The information that was backed up will be
restored and applied to the device when it resumes. The return status code shows
whether the device accepted the Exec command.

Provisioning packages are persisted in


%SystemDrive%\ProgramData\Microsoft\Provisioning directory.

Description framework properties:

Property name Property value

Format chr (string)

Access Type Exec

doWipePersistUserData
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1709 [10.0.16299] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/doWipePersistUserData

Exec on this node will perform a remote reset on the device and persist user accounts
and data. The return status code shows whether the device accepted the Exec
command.

This setting is equivalent to selecting Reset this PC > Keep my files when manually
starting a reset from the Settings app.

Description framework properties:

Property name Property value

Format chr (string)

Access Type Exec

doWipeProtected
Scope Editions Applicable OS

✅ ✅ Pro ✅ Windows 10, version 1703 [10.0.15063] and


Device ✅ Enterprise later
❌ User ✅ Education
❌ Windows SE
✅ IoT Enterprise / IoT Enterprise
LTSC

Device

./Device/Vendor/MSFT/RemoteWipe/doWipeProtected
Exec on this node will perform a remote wipe on the device and fully clean the internal
drive. In some device configurations, this command may leave the device unable to
boot. The return status code shows whether the device accepted the Exec command.
The doWipeProtected is functionally similar to doWipe. But unlike doWipe, which can be
easily circumvented by simply power cycling the device, doWipeProtected will keep
trying to reset the device until it's done.

7 Note

Because doWipeProtected will clean the partitions in case of failure or interruption,


use doWipeProtected in lost/stolen device scenarios.

Description framework properties:

Property name Property value

Format chr (string)

Access Type Exec

Related articles
Configuration service provider reference
Configuration Service Provider
Learn more about the configuration service provider (CSP) policies available on
Windows 10 and Windows 11.

Configuration service provider reference

i REFERENCE

Support scenarios

Device description framework (DDF) files

BitLocker CSP

DynamicManagement CSP

Policy CSP

i REFERENCE

Policy CSP

Policy DDF file

Policy CSP - Start

Policy CSP - Update

Policy CSP support scenarios

i REFERENCE

ADMX policies

Policies supported by group policy

Policies supported by HoloLens 2

Policies supported by Microsoft Surface Hub


Universal Print service documentation
Universal Print is a multi-tenant, cloud-based modern print service.

OVERVIEW GET STARTED HOW-TO…


What is Onboarding to Registering a
Universal Print? Universal Print printer

Get started Universal Print Printer Device IHV


connector
Y Architecture e Overview
b Managing printers e Overview c Create printer client app
c Deploy printers using a Download i Onboarding a printer
Microsoft Endpoint i Building a connector
Manager
i Latest connector updates
d Frequently asked questions
(FAQ)

See more T

Microsoft 365 Azure Active Directory User Privacy


Explore Microsoft 365, a (AD) Learn how Universal Print
complete solution that Learn how to manage user supports user privacy.
includes Universal Print. identity with Azure AD.
Windows Autopatch documentation
Windows Autopatch is a cloud service that automates Windows, Microsoft 365 Apps for
enterprise, Microsoft Edge, and Microsoft Teams updates to improve security and
productivity across your organization.

About Windows Autopatch

e OVERVIEW

What is Windows Autopatch?

Windows Autopatch FAQ

Articles and blog posts

d TRAINING

[Blog] Get current and stay current with Windows Autopatch


Windows Autopilot documentation
Windows Autopilot is a collection of technologies used to set up and pre-configure new
devices, getting them ready for productive use.

Understand Windows Autopilot

e OVERVIEW

Overview of Windows Autopilot

Device registration overview

Enrollment Status Page

Requirements

What's new

Deployment scenarios

p CONCEPT

Windows Autopilot scenarios and capabilities

d TRAINING

User-driven mode

Self-deploying mode

Windows Autopilot Reset

Pre-provisioning

Support for existing devices

Support information

i REFERENCE

Frequenty asked questions


Support contacts

Registration authorization

Device guidelines

Motherboard replacement guidance

Administer Windows Autopilot

c HOW-TO GUIDE

Manually register devices

Create device groups

Create deployment profiles

Deploy hybrid devices

BitLocker encryption

DFCI management

Troubleshoot Windows Autopilot

i REFERENCE

Troubleshooting overview

Policy conflicts

Known issues

Resolved issues

Resources

i REFERENCE

Windows Autopilot deployment process poster

Participant device manufacturers

Introducing Windows Autopilot video


Windows Autopilot @ Windows IT Pro Blog

Windows Autopilot and Surface devices

Windows Autopilot for HoloLens 2


Windows Privacy
Get ready for General Data Protection Regulation (GDPR) by viewing and configuring Windows
diagnostic data in your organization.

OVERVIEW HOW-TO… HOW-TO…


Windows Configure View Windows
privacy & Windows diagnostic data
compliance… diagnostic data

Understand Windows diagnostic data in Windows 10


and Windows 11
For the latest Windows 10 version and Windows 11, learn more about what Windows diagnostic data is
collected under the different settings.

Windows 11 required Windows 10 required Optional diagnostic data


diagnostic data diagnostic data Get examples of the types of
Learn more about basic See what changes Windows is optional diagnostic data
Windows diagnostic data making to align to the new collected from Windows
events and fields collected. data collection taxonomy

View and manage Additional resources


Windows 10 connection
Windows 10 on Trust Center
endpoints
GDPR on Microsoft 365
Manage Windows 10 Compliance solutions
connection endpoints
Support for GDPR
Manage connection endpoints Accountability on Service Trust
for non-Enterprise editions of Portal
Windows 10
Manage connections from
Windows to Microsoft services

You might also like