Background and motivation
One of the Windows 11 builds has added framework to help secure Windows keys with virtualization-based security (VBS). With this new capability, keys can be protected from admin-level key theft attacks with negligible effect on performance, reliability, or scale.
Blog post:
https://techcommunity.microsoft.com/t5/windows-it-pro-blog/advancing-key-protection-in-windows-using-vbs/ba-p/4050988
Win API:
https://learn.microsoft.com/en-us/windows/win32/api/ncrypt/nf-ncrypt-ncryptcreatepersistedkey
The proposal is to extend existing CngKeyCreationOptions API to include the new flags.
API Proposal
namespaceSystem.Security.Cryptography;[Flags]publicenumCngKeyCreationOptions:int{// existing:// None = 0x00000000,// MachineKey = 0x00000020, // NCRYPT_MACHINE_KEY_FLAG// OverwriteExistingKey = 0x00000080, // NCRYPT_OVERWRITE_KEY_FLAG// new APIs:PreferVbs=0x00010000,// NCRYPT_PREFER_VBS_FLAGRequireVbs=0x00020000,// NCRYPT_REQUIRE_VBS_FLAGUsePerBootKey=0x00040000,// NCRYPT_USE_PER_BOOT_KEY_FLAG}API Usage
// Note: this API is Windows onlyusingSystem.Security.Cryptography;CngKeyCreationParameterscngCreationParams=new(){Provider=CngProvider.MicrosoftSoftwareKeyStorageProvider,KeyCreationOptions=CngKeyCreationOptions.RequireVbs|CngKeyCreationOptions.OverwriteExistingKey,};using(CngKeykey=CngKey.Create(CngAlgorithm.ECDsaP256,"mySoftwareKey",cngCreationParams))using(ECDsaCngecdsa=newECDsaCng(key)){// do stuff with the key}Alternative Designs
No response
Risks
Very low - new flags to existing API
Background and motivation
One of the Windows 11 builds has added framework to help secure Windows keys with virtualization-based security (VBS). With this new capability, keys can be protected from admin-level key theft attacks with negligible effect on performance, reliability, or scale.
Blog post:
https://techcommunity.microsoft.com/t5/windows-it-pro-blog/advancing-key-protection-in-windows-using-vbs/ba-p/4050988
Win API:
https://learn.microsoft.com/en-us/windows/win32/api/ncrypt/nf-ncrypt-ncryptcreatepersistedkey
The proposal is to extend existing
CngKeyCreationOptionsAPI to include the new flags.API Proposal
API Usage
Alternative Designs
No response
Risks
Very low - new flags to existing API