Suporte a política de todo o computador de proteção de dados no ASP.NET CoreData Protection machine-wide policy support in ASP.NET Core

Por Rick AndersonBy Rick Anderson

Quando em execução no Windows, o sistema de proteção de dados tem suporte limitado para definir uma política de todo o computador padrão para todos os aplicativos que consomem a proteção de dados do ASP.NET Core.When running on Windows, the Data Protection system has limited support for setting a default machine-wide policy for all apps that consume ASP.NET Core Data Protection. A ideia geral é que um administrador pode querer alterar uma configuração padrão, como os algoritmos usados ou a vida útil da chave, sem a necessidade de atualizar manualmente cada aplicativo no computador.The general idea is that an administrator might wish to change a default setting, such as the algorithms used or key lifetime, without the need to manually update every app on the machine.

Aviso

O administrador do sistema pode definir a política padrão, mas eles não não obrigatório.The system administrator can set default policy, but they can't enforce it. O desenvolvedor do aplicativo sempre pode substituir qualquer valor com uma das suas próprias escolhendo.The app developer can always override any value with one of their own choosing. A política padrão afeta apenas aplicativos em que o desenvolvedor não foi especificado um valor explícito para uma configuração.The default policy only affects apps where the developer hasn't specified an explicit value for a setting.

Configuração de política padrãoSetting default policy

Para definir a política padrão, um administrador pode definir os valores conhecidos no registro do sistema na seguinte chave do registro:To set default policy, an administrator can set known values in the system registry under the following registry key:

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

Se você estiver em um sistema operacional de 64 bits e deseja afetar o comportamento de aplicativos de 32 bits, lembre-se de configurar o equivalente a Wow6432Node a chave acima.If you're on a 64-bit operating system and want to affect the behavior of 32-bit apps, remember to configure the Wow6432Node equivalent of the above key.

Os valores com suporte são mostrados abaixo.The supported values are shown below.

ValorValue TipoType DescriçãoDescription
EncryptionTypeEncryptionType cadeia de caracteresstring Especifica quais algoritmos devem ser usados para proteção de dados.Specifies which algorithms should be used for data protection. O valor deve ser CBC CNG, GCM CNG ou gerenciado e é descrito mais detalhadamente abaixo.The value must be CNG-CBC, CNG-GCM, or Managed and is described in more detail below.
DefaultKeyLifetimeDefaultKeyLifetime DWORDDWORD Especifica o tempo de vida para as chaves recentemente geradas.Specifies the lifetime for newly-generated keys. O valor é especificado em dias e deve ser > = 7.The value is specified in days and must be >= 7.
KeyEscrowSinksKeyEscrowSinks cadeia de caracteresstring Especifica os tipos que são usados para caução de chaves.Specifies the types that are used for key escrow. O valor é uma lista delimitada por ponto e vírgula de Coletores de caução de chave, onde cada elemento na lista é o nome qualificado pelo assembly de um tipo que implementa IKeyEscrowSink.The value is a semicolon-delimited list of key escrow sinks, where each element in the list is the assembly-qualified name of a type that implements IKeyEscrowSink.

Tipos de criptografiaEncryption types

Se EncryptionType é CBC CNG, o sistema está configurado para usar uma codificação de bloco simétrica de modo CBC para confidencialidade e HMAC para autenticidade com os serviços oferecidos pela CNG do Windows (consulte especificando algoritmos personalizados de Windows CNG para mais detalhes).If EncryptionType is CNG-CBC, the system is configured to use a CBC-mode symmetric block cipher for confidentiality and HMAC for authenticity with services provided by Windows CNG (see Specifying custom Windows CNG algorithms for more details). Os seguintes valores adicionais são suportados, cada um dos quais corresponde a uma propriedade no tipo CngCbcAuthenticatedEncryptionSettings.The following additional values are supported, each of which corresponds to a property on the CngCbcAuthenticatedEncryptionSettings type.

ValorValue TipoType DescriçãoDescription
EncryptionAlgorithmEncryptionAlgorithm cadeia de caracteresstring O nome de um algoritmo de criptografia de bloco simétricas compreendido pela CNG.The name of a symmetric block cipher algorithm understood by CNG. Esse algoritmo é aberto no modo CBC.This algorithm is opened in CBC mode.
EncryptionAlgorithmProviderEncryptionAlgorithmProvider cadeia de caracteresstring O nome da implementação do provedor CNG que pode produzir o algoritmo EncryptionAlgorithm.The name of the CNG provider implementation that can produce the algorithm EncryptionAlgorithm.
EncryptionAlgorithmKeySizeEncryptionAlgorithmKeySize DWORDDWORD O comprimento (em bits) da chave para derivar para o algoritmo de criptografia de bloco simétricas.The length (in bits) of the key to derive for the symmetric block cipher algorithm.
HashAlgorithmHashAlgorithm cadeia de caracteresstring O nome de um algoritmo de hash compreendido pela CNG.The name of a hash algorithm understood by CNG. Esse algoritmo é aberto no modo HMAC.This algorithm is opened in HMAC mode.
HashAlgorithmProviderHashAlgorithmProvider cadeia de caracteresstring O nome da implementação do provedor CNG que pode produzir o algoritmo HashAlgorithm.The name of the CNG provider implementation that can produce the algorithm HashAlgorithm.

Se EncryptionType é CNG-GCM, o sistema está configurado para usar uma codificação de bloco simétrica de modo Galois/contador para a confidencialidade e a autenticidade com os serviços oferecidos pela CNG do Windows (consulte especificando algoritmos personalizados de Windows CNG Para obter mais detalhes).If EncryptionType is CNG-GCM, the system is configured to use a Galois/Counter Mode symmetric block cipher for confidentiality and authenticity with services provided by Windows CNG (see Specifying custom Windows CNG algorithms for more details). Os seguintes valores adicionais são suportados, cada um dos quais corresponde a uma propriedade no tipo CngGcmAuthenticatedEncryptionSettings.The following additional values are supported, each of which corresponds to a property on the CngGcmAuthenticatedEncryptionSettings type.

ValorValue TipoType DescriçãoDescription
EncryptionAlgorithmEncryptionAlgorithm cadeia de caracteresstring O nome de um algoritmo de criptografia de bloco simétricas compreendido pela CNG.The name of a symmetric block cipher algorithm understood by CNG. Esse algoritmo é aberto no modo de Galois/contador.This algorithm is opened in Galois/Counter Mode.
EncryptionAlgorithmProviderEncryptionAlgorithmProvider cadeia de caracteresstring O nome da implementação do provedor CNG que pode produzir o algoritmo EncryptionAlgorithm.The name of the CNG provider implementation that can produce the algorithm EncryptionAlgorithm.
EncryptionAlgorithmKeySizeEncryptionAlgorithmKeySize DWORDDWORD O comprimento (em bits) da chave para derivar para o algoritmo de criptografia de bloco simétricas.The length (in bits) of the key to derive for the symmetric block cipher algorithm.

Se EncryptionType for gerenciado, o sistema está configurado para usar um SymmetricAlgorithm gerenciado para a confidencialidade e KeyedHashAlgorithm para autenticidade (consulte especificação personalizada gerenciada algoritmos para obter mais detalhes).If EncryptionType is Managed, the system is configured to use a managed SymmetricAlgorithm for confidentiality and KeyedHashAlgorithm for authenticity (see Specifying custom managed algorithms for more details). Os seguintes valores adicionais são suportados, cada um dos quais corresponde a uma propriedade no tipo ManagedAuthenticatedEncryptionSettings.The following additional values are supported, each of which corresponds to a property on the ManagedAuthenticatedEncryptionSettings type.

ValorValue TipoType DescriçãoDescription
EncryptionAlgorithmTypeEncryptionAlgorithmType cadeia de caracteresstring O nome qualificado pelo assembly de um tipo que implementa SymmetricAlgorithm.The assembly-qualified name of a type that implements SymmetricAlgorithm.
EncryptionAlgorithmKeySizeEncryptionAlgorithmKeySize DWORDDWORD O comprimento (em bits) da chave para derivar o algoritmo de criptografia simétrica.The length (in bits) of the key to derive for the symmetric encryption algorithm.
ValidationAlgorithmTypeValidationAlgorithmType cadeia de caracteresstring O nome qualificado pelo assembly de um tipo que implementa KeyedHashAlgorithm.The assembly-qualified name of a type that implements KeyedHashAlgorithm.

Se EncryptionType tiver qualquer outro valor diferente de nulo ou vazio, o sistema de proteção de dados gera uma exceção na inicialização.If EncryptionType has any other value other than null or empty, the Data Protection system throws an exception at startup.

Aviso

Ao configurar uma configuração de política padrão que envolve os nomes de tipo (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), os tipos devem ser disponíveis para o aplicativo.When configuring a default policy setting that involves type names (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), the types must be available to the app. Isso significa que para aplicativos em execução no CLR de área de trabalho, os assemblies que contêm esses tipos devem estar presentes no Cache de Assembly Global (GAC).This means that for apps running on Desktop CLR, the assemblies that contain these types should be present in the Global Assembly Cache (GAC). Para aplicativos do ASP.NET Core em execução no .NET Core, os pacotes que contêm esses tipos devem ser instalados.For ASP.NET Core apps running on .NET Core, the packages that contain these types should be installed.