ASP.NET Core 对数据保护的计算机范围策略支持
在 Windows 上运行时,数据保护系统对以下操作提供有限支持:为使用 ASP.NET Core 数据保护的所有应用设置默认计算机范围策略。 一般的想法是,管理员可能希望更改默认设置,例如所用算法或密钥生存期,而不需要手动更新计算机上的每个应用。
警告
系统管理员可以设置默认策略,但不能强制执行。 应用开发人员始终可以使用自己选择的值来替代任何值。 默认策略仅影响开发人员尚未为设置指定显式值的应用。
设置默认策略
若要设置默认策略,管理员可以在系统注册表中的以下注册表项下设置已知值:
HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection
如果你使用的是 64 位操作系统并希望影响 32 位应用的行为,请记住配置与上述注册表项等效的 Wow6432Node。
支持的值如下所示。
值 | 类型 | 说明 |
---|---|---|
EncryptionType | 字符串 | 指定应使用哪些算法进行数据保护。 该值必须为 CNG-CBC、CNG-GCM 或 Managed,下面将详细说明。 |
DefaultKeyLifetime | DWORD | 指定新生成的密钥的生存期。 该值以天为单位指定,并且必须 >= 7。 |
KeyEscrowSinks | 字符串 | 指定用于密钥托管的类型。 该值是以分号分隔的密钥托管接收器列表,列表中的每个元素都是实现 IKeyEscrowSink 的类型的程序集限定名称。 |
加密类型
如果 EncryptionType 为 CNG-CBC,则系统配置为使用 CBC 模式对称分组加密来保证机密性,并使用 HMAC 来保证 Windows CNG 提供的服务的真实性(有关更多详细信息,请参阅指定自定义 Windows CNG 算法)。 支持以下附加值,其中每个值对应于 CngCbcAuthenticatedEncryptionSettings 类型上的一个属性。
值 | 类型 | 说明 |
---|---|---|
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 类型上的一个属性。
值 | 类型 | 说明 |
---|---|---|
EncryptionAlgorithm | 字符串 | CNG 理解的对称分组加密算法的名称。 此算法在 Galois/Counter Mode 下打开。 |
EncryptionAlgorithmProvider | 字符串 | 可以生成 EncryptionAlgorithm 算法的 CNG 提供程序实现的名称。 |
EncryptionAlgorithmKeySize | DWORD | 要为对称分组加密算法派生的密钥的长度(以位为单位)。 |
如果 EncryptionType 为 Managed,则系统配置为使用托管 SymmetricAlgorithm 来保证机密性,并使用 KeyedHashAlgorithm 来保证真实性(有关更多详细信息,请参阅指定自定义托管算法)。 支持以下附加值,其中每个值对应于 ManagedAuthenticatedEncryptionSettings 类型上的一个属性。
值 | 类型 | 说明 |
---|---|---|
EncryptionAlgorithmType | 字符串 | 实现 SymmetricAlgorithm 的类型的程序集限定名称。 |
EncryptionAlgorithmKeySize | DWORD | 要为对称加密算法派生的密钥的长度(以位为单位)。 |
ValidationAlgorithmType | 字符串 | 实现 KeyedHashAlgorithm 的类型的程序集限定名称。 |
如果 EncryptionType 具有除 null 或空值之外的任何其他值,数据保护系统将在启动时引发异常。
警告
配置涉及类型名称(EncryptionAlgorithmType、ValidationAlgorithmType、KeyEscrowSinks)的默认策略设置时,这些类型必须可供应用使用。 这意味着,对于在桌面 CLR 上运行的应用,包含这些类型的程序集应存在于全局程序集缓存 (GAC) 中。 对于在 .NET Core 上运行的 ASP.NET Core 应用,应安装包含这些类型的包。