Compartilhar via


Suporte a políticas de proteção de dados em todo o computador no ASP.NET Core

Por Rick Anderson

Ao executar no Windows, o sistema de Proteção de Dados tem suporte limitado para definir uma política padrão em todo o computador para todos os aplicativos que consomem ASP.NET Core Data Protection. A ideia geral é que um administrador possa 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 no computador.

Warning

O administrador do sistema pode definir a política padrão, mas não pode aplicá-la. O desenvolvedor de aplicativos sempre pode substituir qualquer valor com uma de suas próprias escolhas. A política padrão afeta apenas aplicativos em que o desenvolvedor não especificou um valor explícito para uma configuração.

Configurando a política padrão

Para definir a política padrão, um administrador pode definir valores conhecidos no registro do sistema na 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 com suporte são mostrados abaixo.

Value Tipo Description
EncryptionType cadeia Especifica quais algoritmos devem ser usados para proteção de dados. O valor deve ser CNG-CBC, CNG-GCM ou Managed e é descrito em 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 Especifica os tipos que são usados para o escrow de chaves. O valor é uma lista delimitada por ponto-e-vírgula de destinos de custódia de chaves, em que cada elemento na lista é o nome qualificado do assembly de um tipo que implementa IKeyEscrowSink.

Tipos de criptografia

Se EncryptionType for CNG-CBC, o sistema será configurado para usar uma criptografia de bloco simétrico no modo CBC para confidencialidade e HMAC para obter autenticidade com os serviços fornecidos pelo Windows CNG (consulte Especificando algoritmos CNG personalizados do Windows para obter mais detalhes). Há suporte para os seguintes valores adicionais, cada um deles corresponde a uma propriedade no tipo CngCbcAuthenticatedEncryptionSettings.

Value Tipo Description
EncryptionAlgorithm cadeia O nome de um algoritmo de criptografia de bloco simétrico compreendido pelo CNG. Esse algoritmo é aberto no modo CBC.
EncryptionAlgorithmProvider cadeia O nome da implementação do provedor CNG que pode produzir o algoritmo EncryptionAlgorithm.
EncryptionAlgorithmKeySize dword O comprimento (em bits) da chave a ser derivada para o algoritmo de criptografia de bloco simétrico.
HashAlgorithm cadeia O nome de um algoritmo de hash compreendido pelo CNG. Esse algoritmo é aberto no modo HMAC.
HashAlgorithmProvider cadeia O nome da implementação do provedor CNG que pode produzir o algoritmo HashAlgorithm.

Se EncryptionType é CNG-GCM, o sistema será configurado para usar uma cifra de bloco simétrico no 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). Há suporte para os seguintes valores adicionais, cada um deles corresponde a uma propriedade no tipo CngGcmAuthenticatedEncryptionSettings.

Value Tipo Description
EncryptionAlgorithm cadeia O nome de um algoritmo de criptografia de bloco simétrico compreendido pelo CNG. Esse algoritmo está no Modo Galois/Counter.
EncryptionAlgorithmProvider cadeia O nome da implementação do provedor CNG que pode produzir o algoritmo EncryptionAlgorithm.
EncryptionAlgorithmKeySize dword O comprimento (em bits) da chave a ser derivada para o algoritmo de criptografia de bloco simétrico.

Se o EncryptionType for Gerenciado, o sistema será configurado para usar um SymmetricAlgorithm gerenciado para confidencialidade e um KeyedHashAlgorithm para garantir a autenticidade (consulte Especificando algoritmos gerenciados personalizados para mais detalhes). Há suporte para os seguintes valores adicionais, cada um deles corresponde a uma propriedade no tipo ManagedAuthenticatedEncryptionSettings.

Value Tipo Description
EncryptionAlgorithmType cadeia O nome qualificado do assembly de um tipo que implementa SymmetricAlgorithm.
EncryptionAlgorithmKeySize dword O comprimento (em bits) da chave a derivar para o algoritmo de criptografia simétrica.
ValidationAlgorithmType cadeia 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 configurar 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.