Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 2915|Resposta: 0

[Fonte] ASP.NET Core (22) é baseado na proteção de dados IDataProtectionProvider

[Copiar link]
Publicado em 15/08/2023 10:21:16 | | | |
Requisitos: Durante o processo de desenvolvimento, você pode frequentemente encontrar alguns cenários de criptografia e descriptografia, por exemplo, a autenticação de e-mail pode carregar uma string criptografada, e quando o usuário clica no link para pular para a interface, o sistema pode descriptografar o conteúdo da string normalmente, realizando assim a função de autenticação de e-mail.

Gerar elementos usando PowerShell <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Criptografar dados com ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET O papel da machineKey e como usá-la
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core oferece recursos de proteção de dados:O login do hiperlink está visível.

Pacote Principal

Os principais pacotes envolvidos na Proteção de Dados são os seguintes, referenciados conforme necessário:

  • Padrão Microsoft.AspNetCore.DataProtection.Abstractions. Nomeação de componentes da camada de abstração NET Core. Inclui serviços de interface importantes como IDataProtectionProvider e IDataProtector.
  • Microsoft.AspNetCore.DataProtection, incluindo operações criptográficas centrais, gerenciamento de chaves, configuração e extensibilidade.
  • Extensão Microsoft.AspNetCore.DataProtection.Extensions. Fornece um método de fábrica para criar instâncias e um método de extensão de armazenamento para chaves. Este pacote é usado em modo não-DI.
  • O Microsoft.AspNetCore.DataProtection.SystemWeb implementa <machineKey>compatibilidade com os mecanismos de criptografia e descriptografia da ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation fornece uma implementação da rotina de hashing de senhas PBKDF2. Use quando precisar usar criptografia hash.


IDataProtectionProvider vs IDataProtector

O IDataProtectionProvider é baseado no modelo Provider da Microsoft e é usado para fornecer políticas para a criação de instâncias. Crie um objeto IDataProtector chamando o método IDataProtectionProvider.CreateProtector(purpose).
O IDataProtector é um serviço responsável por criptografia e descriptografia, que fornece principalmente dois tipos de métodos: protect e unprotect (cada tipo possui muitos métodos de sobrecarga e extensão). Entendendo simplesmente: protect é usado para criptografia e unprotect é usado para descriptografia.
O parâmetro Create method do IDataProtectionProvider é uma string que fornece funcionalidade de isolamento. IDataProtectors criados com strings não passáveis terão resultados de criptografia diferentes mesmo que criptografem o mesmo objeto. O próprio IDataProtector também é um IDataProtectionProvider implícito, que também fornece o método CreateProtector(purpose). Isso significa que pode ser facilmente implementadoModo de aplicação multi-inquilino



Aqui estão algumas coisas para ter em mente:

Instâncias IDataProtectionProvider e IDataProtectorSegurança da roscaAlvo.
O método unprotect é informar ao chamador que a descriptografia falhou, lançando uma exceção. A classe de exceção é CryptographicException.

ASP.NET Core é uma proteção de dados simples de usar

Uma nova interface é adicionada para criptografar e descriptografar dados, e o código é o seguinte:

O teste é o seguinte:



IDataProtectionProvider é um padrão singleton com o seguinte código:O login do hiperlink está visível.



Gestão de chaves

Se o perfil de usuário estiver disponível, a chave é mantida para%LOCALAPPDATA%\ASP.NET\DataProtection-Keyspasta. Se o sistema operacional for Windows, a chave é criptografada em repouso usando DPAPI. Como mostrado abaixo:



Vida importante

Por padrão, a chaveO ciclo de vida é de 90 dias。 Quando a chave expira, o aplicativo gera automaticamente uma nova chave e define a nova chave como a chave ativa. Enquanto as chaves desativadas permanecerem no sistema, sua aplicação pode descriptografar quaisquer dados protegidos por elas. Para mais informações, veja Gestão de chaves.O login do hiperlink está visível.

Algoritmo padrão

Os algoritmos padrão de proteção de carga usados são AES-256-CBC (para confidencialidade) e HMACSHA256 (para autenticidade). A chave mestra de 512 bits, que muda a cada 90 dias, é usada para derivar duas subchaves para esses algoritmos com base em cada carga útil.

ASP.NET provedor de armazenamento chave no Core

Sistema de Arquivos: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, que requer referência: Azure.Extensions.AspNetCore.DataProtection.Blobs
Armazenamento Redis: PersistKeysToStackExchangeRedis, referência necessária: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Referência:O login do hiperlink está visível.

Agrupado e distribuído

Se a chave do servidor for inconsistente, por exemplo: criptografia do servidor A e descriptografia do servidor B, uma exceção será lançada (como mostrado na figura abaixo) e a mesma chave precisará ser implantada.



Configure a mesma chave da seguinte forma:

Uma vez que o programa está rodando, ele gera automaticamente um arquivo de chave key-*.xml na pasta publish_itsvse, mantenha este arquivo consistente em servidores diferentes! Como mostrado abaixo:



ASP.NET Configuração de proteção do núcleo

ASP.NET CORE oferece suporte rico à API, persistência de senhas, configurações e funções de personalização.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Cenário de armazenamento em nuvem Azure.
  • PersistKeysToFileSystem。 Esquema de armazenamento de sistema de arquivos local que registra algoritmos, chaves e dependências de criptografia.
  • ProtegerChavesCom*。 A criptografia é fornecida por meio de extensões desse método de nomenclatura. Por exemplo, ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Defina a vida útil da chave para 90 dias por padrão.
  • SetApplicationName。 Defina o nome do app. Por padrão, os mecanismos de proteção de dados são absolutamente isolados de cada aplicação. O compartilhamento de chaves entre aplicativos pode ser feito definindo o mesmo nome do app.
  • DisableAutomaticKeyGeneration。 Evite que a chave seja automaticamente revertida. Muitas vezes não queremos que as senhas mudem ou, em um serviço de cluster, temos um serviço dedicado responsável pelo rollback de atualizações de chaves, e outros payloads só precisam obter de um lugar compartilhado.
  • UseCryptographicAlgorithms。 Use algoritmos personalizados de criptografia e descriptografia


Referência:O login do hiperlink está visível.





Anterior:Use o PowerShell para gerar o elemento &lt;machineKey&gt;
Próximo:Compare Tailscale, ZeroTier, WireGuard, OmniEdge e Ngrok para soluções de geo-rede
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com