在 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 应用,应安装包含这些类型的包。