Política de suporte da Proteção de Dados em todo o computador no ASP.NET Core

De Rick Anderson

Durante a execução 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 Proteção de Dados. 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.

Aviso

O administrador do sistema pode definir a política padrão, mas não pode aplicá-la. O desenvolvedor do aplicativo 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.

Como definir 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 de 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 ao wow6432Node da chave acima.

Os valores compatíveis estão mostrados abaixo.

Valor Type Descrição
EncryptionType string Especifica quais algoritmos devem ser usados para a proteção de dados. O valor deve ser CNG-CBC, CNG-GCM ou Gerenciado 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 string Especifica os tipos usados para a caução de chave. O valor é uma lista delimitada por ponto e vírgula de coletores de escrow de chave, em que cada elemento na lista é o nome qualificado para assembly de um tipo que implementa IKeyEscrowSink.

Tipos de criptografia

Se o 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 CNG do Windows (consulte Como especificar algoritmos CNG personalizados do Windows para obter mais detalhes). Os seguintes valores adicionais são compatíveis e cada um deles corresponde a uma propriedade no tipo CngCbcAuthenticatedEncryptionSettings.

Valor Type Descrição
EncryptionAlgorithm string O nome de um algoritmo de codificação de bloco simétrico compreendido pelo CNG. Esse algoritmo é aberto no modo CBC.
EncryptionAlgorithmProvider string 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 string O nome de um algoritmo de hash compreendido pelo CNG. Esse algoritmo é aberto no modo HMAC.
Classe HashAlgorithmProvider string O nome da implementação do provedor CNG que pode produzir o algoritmo HashAlgorithm.

Se o 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 CNG do Windows (consulte Como especificar algoritmos CNG personalizados do Windows para obter mais detalhes). Os seguintes valores adicionais são compatíveis e cada um deles corresponde a uma propriedade no tipo CngGcmAuthenticatedEncryptionSettings.

Valor Type Descrição
EncryptionAlgorithm string O nome de um algoritmo de codificação de bloco simétrico compreendido pelo CNG. Esse algoritmo é aberto no Modo Galois/Contador.
EncryptionAlgorithmProvider string 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 EncryptionType for Gerenciado, o sistema será configurado para usar um SymmetricAlgorithm gerenciado para confidencialidade e KeyedHashAlgorithm para obter autenticidade (consulte Como especificar algoritmos gerenciados personalizados para obter mais detalhes). Os seguintes valores adicionais são compatíveis e cada um deles corresponde a uma propriedade no tipo ManagedAuthenticatedEncryptionSettings.

Valor Type Descrição
EncryptionAlgorithmType string O nome qualificado pelo assembly de um tipo que implementa SymmetricAlgorithm.
EncryptionAlgorithmKeySize DWORD O comprimento (em bits) da chave a ser derivada para o algoritmo de criptografia simétrica.
ValidationAlgorithmType string O nome qualificado pelo assembly de um tipo que implementa KeyedHashAlgorithm.

Se o 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.

Aviso

Ao definir uma configuração de política padrão que envolve nomes de tipo (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), os tipos devem estar disponíveis para o aplicativo. Isso significa que, para aplicativos em execução no CLR da Área de Trabalho, os assemblies que contêm esses tipos devem estar presentes no Cache de Assembly Global (GAC). Para aplicativos do ASP.NET Core em execução no .NET Core, os pacotes que contêm esses tipos devem ser instalados.