Partilhar via


Suporte à política de proteção de dados em toda a máquina no ASP.NET Core

Por Rick Anderson

Quando executado no Windows, o sistema de Proteção de Dados tem suporte limitado para definir uma política padrão em toda a máquina para todos os aplicativos que consomem ASP.NET Proteção de Dados Principal. A ideia geral é que um administrador pode querer alterar uma configuração padrão, como os algoritmos usados ou o tempo de vida da chave, sem a necessidade de atualizar manualmente todos os aplicativos na máquina.

Warning

O administrador do sistema pode definir a política padrão, mas não pode impô-la. O desenvolvedor do aplicativo sempre pode substituir qualquer valor com um de sua própria escolha. A política padrão afeta apenas aplicativos em que o desenvolvedor não especificou um valor explícito para uma configuração.

Definindo a política padrão

Para definir a política padrão, um administrador pode definir valores conhecidos no registro do sistema sob a seguinte chave do Registro:

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

Se você estiver em um sistema operacional de 64 bits e quiser afetar o comportamento de aplicativos de 32 bits, lembre-se de configurar o equivalente Wow6432Node da chave acima.

Os valores suportados são mostrados abaixo.

Value Tipo Description
EncryptionType cadeia (de caracteres) Especifica quais algoritmos devem ser usados para proteção de dados. O valor deve ser CNG-CBC, CNG-GCM ou Gerenciado e é descrito com mais detalhes abaixo.
DefaultKeyLifetime DWORD Especifica o tempo de vida das chaves recém-geradas. O valor é especificado em dias e deve ser >= 7.
KeyEscrowSinks cadeia (de caracteres) Especifica os tipos que são usados para custódia de chave. O valor é uma lista delimitada por ponto-e-vírgula de coletores de depósito de chave, onde cada elemento na lista é o nome qualificado para assembly de um tipo que implementa IKeyEscrowSink.

Tipos de encriptação

Se EncryptionType for CNG-CBC, o sistema está configurado para usar o modo de cifra de bloco simétrico (CBC) para confidencialidade e HMAC para garantir a autenticidade com serviços fornecidos pelo Windows CNG (consulte Especificando algoritmos CNG personalizados do Windows para obter mais detalhes). Os seguintes valores adicionais são suportados, cada um dos quais corresponde a uma propriedade no tipo CngCbcAuthenticatedEncryptionSettings.

Value Tipo Description
EncryptionAlgorithm cadeia (de caracteres) O nome de um algoritmo de cifra de bloco simétrico entendido por CNG. Este algoritmo é aberto no modo CBC.
Fornecedor de Algoritmo de Encriptação cadeia (de caracteres) O nome da implementação do provedor CNG que pode produzir o algoritmo EncryptionAlgorithm.
TamanhoDaChaveDoAlgoritmoDeCriptografia DWORD O comprimento (em bits) da chave a derivar para o algoritmo de cifra de bloco simétrico.
HashAlgorithm cadeia (de caracteres) O nome de um algoritmo de hash reconhecido por CNG. Este algoritmo é aberto no modo HMAC.
HashAlgorithmProvider cadeia (de caracteres) O nome da implementação do provedor CNG que pode produzir o algoritmo HashAlgorithm.

Se EncryptionType for CNG-GCM, o sistema está configurado para usar uma cifra de bloco simétrico do Modo Galois/Counter para confidencialidade e autenticidade com os serviços fornecidos pelo Windows CNG (consulte Especificando algoritmos CNG personalizados do Windows para obter mais detalhes). Os seguintes valores adicionais são suportados, cada um dos quais corresponde a uma propriedade no tipo CngGcmAuthenticatedEncryptionSettings.

Value Tipo Description
EncryptionAlgorithm cadeia (de caracteres) O nome de um algoritmo de cifra de bloco simétrico entendido por CNG. Este algoritmo é aberto no modo Galois/Counter.
Fornecedor de Algoritmos de Encriptação cadeia (de caracteres) O nome da implementação do provedor CNG que pode produzir o algoritmo EncryptionAlgorithm.
TamanhoDaChaveDoAlgoritmoDeEncriptação DWORD O comprimento (em bits) da chave a derivar para o algoritmo de cifra de bloco simétrico.

Se o EncryptionType for gerido, o sistema será configurado para usar um SymmetricAlgorithm gerido para confidencialidade e um KeyedHashAlgorithm para autenticidade (consulte Especificação de algoritmos geridos personalizados para mais detalhes). Os seguintes valores adicionais são suportados, cada um dos quais corresponde a uma propriedade no tipo ManagedAuthenticatedEncryptionSettings.

Value Tipo Description
EncryptionAlgorithmType cadeia (de caracteres) O nome qualificado para assembly de um tipo que implementa SymmetricAlgorithm.
TamanhoDaChaveDoAlgoritmoDeEncriptação DWORD O comprimento (em bits) da chave a derivar para o algoritmo de encriptação simétrica.
TipoDeAlgoritmoDeValidação cadeia (de caracteres) O nome qualificado para assembly de um tipo que implementa KeyedHashAlgorithm.

Se EncryptionType tiver qualquer outro valor diferente de nulo ou vazio, o sistema de Proteção de Dados lançará uma exceção na inicialização.

Warning

Ao definir uma configuração de política padrão que envolva nomes de tipo (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), os tipos devem estar disponíveis para o aplicativo. Para aplicativos ASP.NET Core, os pacotes que contêm esses tipos devem ser instalados.