ASP.NET Core 中的数据保护计算机范围策略支持

作者:Rick Anderson

在 Windows 上运行时,数据保护系统对为所有使用 ASP.NET Core Data Protection 的应用设置默认计算机范围的策略的支持有限。 一般的想法是,管理员可能希望更改默认设置,例如使用的算法或密钥生存期,而无需手动更新计算机上的每个应用。

Warning

系统管理员可以设置默认策略,但无法强制实施。 应用开发人员始终可以使用自己的选择之一替代任何值。 默认策略仅影响开发人员未为设置指定显式值的应用。

设置默认策略

若要设置默认策略,管理员可以在以下注册表项下在系统注册表中设置已知值:

HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection

如果使用的是 64 位作系统并想要影响 32 位应用的行为,请记住配置与上述键等效的 Wow6432Node。

支持的值如下所示。

Value 类型 Description
EncryptionType 字符串 指定应用于数据保护的算法。 该值必须是 CNG-CBC、CNG-GCM 或托管值,下面更详细地进行了介绍。
DefaultKeyLifetime DWORD 指定新生成的密钥的生存期。 该值以天为单位指定,并且必须为 >7。
KeyEscrowSinks 字符串 指定用于密钥托管的类型。 该值是键托管接收器的分号分隔列表,其中列表中的每个元素都是实现 IKeyEscrowSink的类型的程序集限定名称。

Encryption types

如果 EncryptionType 为 CNG-CBC,则系统将系统配置为使用 CBC 模式对称块密码进行机密性和 HMAC,以便通过 Windows CNG 提供的服务进行身份验证(有关详细信息,请参阅 指定自定义 Windows CNG 算法 )。 支持以下附加值,每个值对应于 CngCbcAuthenticatedEncryptionSettings 类型的属性。

Value 类型 Description
EncryptionAlgorithm 字符串 CNG 理解的对称块密码算法的名称。 此算法在 CBC 模式下打开。
EncryptionAlgorithmProvider 字符串 可以生成算法 EncryptionAlgorithm 的 CNG 提供程序实现的名称。
EncryptionAlgorithmKeySize DWORD 要为对称块密码算法派生的密钥的长度(以位为单位)。
HashAlgorithm 字符串 CNG 理解的哈希算法的名称。 此算法在 HMAC 模式下打开。
HashAlgorithmProvider 字符串 可以生成算法 HashAlgorithm 的 CNG 提供程序实现的名称。

如果 EncryptionType 为 CNG-GCM,系统会配置为使用 Galois/Counter Mode 对称块密码,以便使用 Windows CNG 提供的服务进行机密性和真实性(有关详细信息,请参阅 指定自定义 Windows CNG 算法 )。 支持以下附加值,每个值对应于 CngGcmAuthenticatedEncryptionSettings 类型的属性。

Value 类型 Description
EncryptionAlgorithm 字符串 CNG 理解的对称块密码算法的名称。 此算法在 Galois/Counter 模式下打开。
EncryptionAlgorithmProvider 字符串 可以生成算法 EncryptionAlgorithm 的 CNG 提供程序实现的名称。
EncryptionAlgorithmKeySize DWORD 要为对称块密码算法派生的密钥的长度(以位为单位)。

如果 EncryptionType 是托管的,系统将系统配置为使用托管 SymmetricAlgorithm 进行机密性和 KeyedHashAlgorithm 进行身份验证(有关详细信息,请参阅 指定自定义托管算法 )。 支持以下附加值,每个值对应于 ManagedAuthenticatedEncryptionSettings 类型的属性。

Value 类型 Description
EncryptionAlgorithmType 字符串 实现 SymmetricAlgorithm 的类型的程序集限定名称。
EncryptionAlgorithmKeySize DWORD 要为对称加密算法派生的密钥的长度(以位为单位)。
ValidationAlgorithmType 字符串 实现 KeyedHashAlgorithm 的类型的程序集限定名称。

如果 EncryptionType 具有除 null 或空以外的任何其他值,则数据保护系统在启动时引发异常。

Warning

配置涉及类型名称的默认策略设置(EncryptionAlgorithmType、ValidationAlgorithmType、KeyEscrowSinks)时,类型必须可供应用使用。 对于 ASP.NET Core 应用,应安装包含这些类型的包。