4.7 KiB
Manufacturer Firmware Configuration Interface (MFCI)
Overview
In a Sentence
Manufacturer Firmware Configuration Interface (MFCI) is a UEFI BIOS feature that provides a secure mechanism for an authorized agent, such as an OEM or ODM, to modify firmware security properties of a specific device, typically for the purposes of remanufacturing or refurbishment.
Background
Manufacturing and remanufacturing (refurbishment) of devices requires configuration of settings related to safety (batteries, thermals), compliance (radio calibration, anti-theft), licensing (OA3, serial numbers), & security. These sensitive settings are typically secured by the OEM / ODM at end of manufacturing to ensure that they are not modified with malicious intent. During initial manufacturing, a device is typically not secured until the final provisioning station, after calibration and other secure data have been provisioned. After a device is secured, product demand may deviate from forecasts and a device may need to be reprovisioned for a different region, requiring modification of secured settings. Remanufacturing of devices requires executing tools and workflows that bypass this security, allowing modification of these sensitive settings, and performing potentially destructive diagnostics. The Windows 10X Compatibility Requirements prohibit unauthorized execution of these dangerous tools. The MFCI feature provides a secure path to enable remanufacturing while maintaining the Windows 10X security promise.
Building an End-to-End MFCI Solution
An MFCI-based solution requires:
- Devices with MFCI integrated into their UEFI BIOS
- An authority that produces signed MFCI policy blobs, for example, Microsoft's cloud MFCI service from Hardware Dev Center
- A manufacturer process that connects the MFCI-enabled device to an MFCI policy service
The Project Mu MfciPkg provides the reference code to enable device-side UEFI BIOS, and includes examples of signing authorities & processes needed to implement a solution.
A Remanufacturing Example
Conceptual Workflow
- Determine the desired 64-bit MFCI policy to be applied to the device based upon the type of remanufacturing to be performed (see MFCI Structures for more information)
- Read targeting information stored in OS-visible UEFI variables from the device
- Combine the 64-bit MFCI policy and targeting information to construct an unsigned MFCI blob
- Digitally sign the MFCI blob using the specified digital signing format and trusted signing keys
- Write the signed MFCI Policy blob to the "next" policy blob mailbox (a UEFI variable) on the target device
- Reboot the target device to trigger an installation attempt
Prior to OS launch, UEFI attempts to verify the digital signature and targeting information- If verification fails, the policy is deleted from the "next" policy blob mailbox, and the device proceeds with boot to the OS
- If verification succeeds, MFCI policy is applied:
- Callbacks are notified to perform any 1-time actions
- Designated action bit ranges are cleared from the policy
- If the policy contains persistent states, it is moved to the "current" policy blob mailbox, otherwise it is deleted from the "next" policy blob mailbox
- The device reboots for the new policy to take effect
- The device's UEFI code should now modify its behavior based upon the persistent state bits or device changes resulting from the 1-time actions
- If a persistent MFCI Policy was installed, it is removed by deleting the "current" policy blob mailbox
Example Workflow Using Microsoft Tools & Services
- Boot device to FFU mode
- Use Microsoft-supplied tool ImageUtility.exe to read the targeting variables from the device
- Use Microsoft Hardware Dev Center (web portal or REST APIs) to generate the signed policy
- Authenticate from an authorized account
- Supply the targeting and policy parameters
- Receive the signed MFCI Policy blob for your device
- Use the Microsoft-supplied tool ImageUtility.exe to set the signed policy blob to a mailbox
- Reboot, and the new policy should take effect
- OEM performs customer service or re-manufacturing as needed. Note that if the device make, model, serial number, or related UEFI variables change or are deleted, the policy may no longer be valid on subsequent boots.
- After re-manufacturing, remove the policy using MS-supplied tool ImageUtility.exe to delete the policy