Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
ASP.NET Core fornece uma API criptográfica para proteger os dados, incluindo gestão e rotação de chaves.
As aplicações web muitas vezes precisam de armazenar dados sensíveis. A API de proteção de dados do Windows (DPAPI) não se destina a aplicações web.
A pilha de proteção de dados ASP.NET Core foi concebida para:
- Forneça uma solução integrada para a maioria dos cenários Web.
- Corrigir muitas das deficiências do sistema de encriptação anterior.
- Serve como substituto do
<machineKey>elemento em ASP.NET 1.x - 4.x.
Declaração do problema
Preciso de persistir informação fidedigna para recuperação posterior, mas não confio no mecanismo de armazenamento. Em termos web, isto pode ser escrito como Preciso de realizar uma comunicação de ida e volta de um estado confiável através de um cliente não confiável.
Autenticidade, integridade e proteção contra adulterações são um requisito. O exemplo canónico disto é um token de autenticação cookie ou token de portador. O servidor gera um token de I am Groot e tem permissões xyz e envia-o ao cliente. O cliente apresenta esse token de volta ao servidor, mas este precisa de algum tipo de garantia de que o cliente não falsificou o token.
A confidencialidade é um requisito. Como o estado persistente é confiável pelo servidor, este estado pode conter informações que não devem ser divulgadas a um cliente não confiável. Por exemplo:
- Um caminho de ficheiro.
- Uma permissão.
- Um handle ou outra referência indireta.
- Alguns dados específicos do servidor.
O isolamento é um requisito. Como as aplicações modernas são componentizadas, os componentes individuais querem tirar partido deste sistema sem se preocuparem com outros componentes do sistema. Por exemplo, considere um componente de token portador usando esta pilha. Deve operar sem qualquer interferência, por exemplo, de um mecanismo anti-CSRF que também utilize a mesma pilha.
Algumas suposições comuns podem restringir o âmbito dos requisitos:
- Todos os serviços que operam dentro do criptosistema são igualmente confiáveis.
- Os dados não precisam de ser gerados ou consumidos fora dos serviços sob o nosso controlo direto.
- As operações devem ser rápidas, pois cada pedido ao serviço web pode passar pelo criptosistema uma ou mais vezes. O requisito de velocidade torna a criptografia simétrica ideal. A criptografia assimétrica não é usada até ser necessária.
Filosofia de design
A proteção de dados do ASP.NET Core é uma pilha de proteção de dados fácil de usar. Baseia-se nos seguintes princípios:
- Facilidade de configuração. O sistema procura não necessitar de configuração. Em situações em que os programadores precisam de configurar um aspeto específico, como o repositório de chaves, essas configurações específicas não são difíceis.
- Oferecer uma API básica voltada para o consumidor. As APIs são simples de usar corretamente e difíceis de usar incorretamente.
- Os programadores não precisam de aprender princípios de gestão-chave. O sistema trata da seleção do algoritmo e da duração da chave em nome do programador. O programador não tem acesso ao material bruto-chave.
- As chaves são protegidas da melhor forma possível quando não estão em uso. O sistema descobre um mecanismo de proteção padrão adequado e aplica-o automaticamente.
As APIs de proteção de dados não se destinam principalmente à persistência indefinida de cargas confidenciais. Outras tecnologias, como o Windows CNG, DPAPI e Azure Rights Management , são mais adequadas ao cenário de armazenamento indefinido. Têm capacidades de gestão de chaves igualmente fortes. Dito isto, as APIs ASP.NET Core de proteção de dados podem ser usadas para a proteção a longo prazo de dados confidenciais.
Público-alvo
O sistema de proteção de dados fornece APIs que visam três públicos principais:
As APIs de consumo destinam-se a programadores de aplicações e frameworks.
Não quero aprender sobre a operação da pilha ou como está configurada. Só quero realizar alguma operação com alta probabilidade de usar as APIs com sucesso.
As APIs de configuração visam programadores de aplicações e administradores de sistemas.
Preciso de dizer ao sistema de proteção de dados que o meu ambiente requer caminhos ou definições não padrão.
As APIs de extensibilidade destinam-se aos programadores responsáveis pela implementação de políticas personalizadas. A utilização destas APIs está limitada a situações raras e a programadores com experiência em segurança.
Preciso de substituir um componente inteiro dentro do sistema porque tenho requisitos comportamentais verdadeiramente únicos. Estou disposto a aprender partes invulgarmente usadas da superfície API para construir um plugin que cumpra os meus requisitos.
Layout do pacote
A pilha de proteção de dados consiste em cinco pacotes:
Microsoft.AspNetCore.DataProtection.Abstractions contém:
- IDataProtectionProvider e IDataProtector interfaces para criar serviços de proteção de dados.
- Métodos úteis de extensão para trabalhar com estes tipos. por exemplo, IDataProtector.Protect
Se o sistema de proteção de dados for instanciado noutro local e estiver a consumir a API, consulte
Microsoft.AspNetCore.DataProtection.Abstractions.Microsoft.AspNetCore.DataProtection contém a implementação central do sistema de proteção de dados, incluindo:
- Operações criptográficas centrais.
- Gestão de chaves.
- Configuração e extensibilidade.
Para instanciar o sistema de proteção de dados, consulte
Microsoft.AspNetCore.DataProtection. Pode precisar de consultar o sistema de proteção de dados quando:- Adicionando-o a um IServiceCollection.
- Modificar ou expandir o seu comportamento.
Microsoft.AspNetCore.DataProtection.Extensions contém APIs adicionais que os programadores podem achar úteis, mas que não pertencem ao pacote base. Por exemplo, este pacote contém:
- Métodos de fábrica para instanciar o sistema de proteção de dados para armazenar chaves num local do sistema de ficheiros sem injeção de dependências. Consulte DataProtectionProvider.
- Métodos de extensão para limitar o tempo de vida de cargas protegidas. Consulte ITimeLimitedDataProtector.
O Microsoft.AspNetCore.DataProtection.SystemWeb pode ser instalado numa aplicação existente ASP.NET 4.x para redirecionar as suas
<machineKey>operações para usar a nova pilha de proteção de dados ASP.NET Core. Para obter mais informações, consulte Substituir a machineKey do ASP.NET no ASP.NET Core.O Microsoft.AspNetCore.Cryptography.KeyDerivation fornece uma implementação da rotina de hashing de palavras-passe PBKDF2 e pode ser usado por sistemas que devem lidar com palavras-passe de utilizador de forma segura. Para mais informações, consulte Palavras-passe de hash no ASP.NET Core.
Recursos adicionais
ASP.NET Core fornece uma API criptográfica para proteger os dados, incluindo gestão e rotação de chaves.
As aplicações web muitas vezes precisam de armazenar dados sensíveis. A API de proteção de dados do Windows (DPAPI) não se destina a aplicações web.
A pilha de proteção de dados ASP.NET Core foi concebida para:
- Forneça uma solução integrada para a maioria dos cenários Web.
- Corrigir muitas das deficiências do sistema de encriptação anterior.
- Serve como substituto do
<machineKey>elemento em ASP.NET 1.x - 4.x.
Declaração do problema
Preciso de persistir informação fidedigna para recuperação posterior, mas não confio no mecanismo de armazenamento. Em termos web, isto pode ser escrito como Preciso de realizar uma comunicação de ida e volta de um estado confiável através de um cliente não confiável.
Autenticidade, integridade e proteção contra adulterações são um requisito. O exemplo canónico disto é um token de autenticação cookie ou token de portador. O servidor gera um token de I am Groot e tem permissões xyz e envia-o ao cliente. O cliente apresenta esse token de volta ao servidor, mas este precisa de algum tipo de garantia de que o cliente não falsificou o token.
A confidencialidade é um requisito. Como o estado persistente é confiável pelo servidor, este estado pode conter informações que não devem ser divulgadas a um cliente não confiável. Por exemplo:
- Um caminho de ficheiro.
- Uma permissão.
- Um handle ou outra referência indireta.
- Alguns dados específicos do servidor.
O isolamento é um requisito. Como as aplicações modernas são componentizadas, os componentes individuais querem tirar partido deste sistema sem se preocuparem com outros componentes do sistema. Por exemplo, considere um componente "bearer token" utilizando esta pilha. Deve operar sem qualquer interferência, por exemplo, de um mecanismo anti-CSRF que também utilize a mesma pilha.
Algumas suposições comuns podem restringir o âmbito dos requisitos:
- Todos os serviços que operam dentro do criptosistema são igualmente confiáveis.
- Os dados não precisam de ser gerados ou consumidos fora dos serviços sob o nosso controlo direto.
- As operações devem ser rápidas, pois cada pedido ao serviço web pode passar pelo criptosistema uma ou mais vezes. O requisito de velocidade torna a criptografia simétrica ideal. A criptografia assimétrica não é usada até ser necessária.
Filosofia de design
ASP.NET Core é uma pilha de proteção de dados fácil de usar. Baseia-se nos seguintes princípios:
- Facilidade de configuração. O sistema visa uma configuração mínima. Em situações em que os programadores precisam de configurar um aspeto específico, como o repositório de chaves, essas configurações específicas não são difíceis.
- Oferecer uma API básica voltada para o consumidor. As APIs são simples de usar corretamente e difíceis de usar incorretamente.
- Os programadores não precisam de aprender princípios de gestão-chave. O sistema trata da seleção do algoritmo e da duração da chave em nome do programador. O programador não tem acesso ao material bruto-chave.
- As chaves são protegidas em repouso tanto quanto possível. O sistema descobre um mecanismo de proteção padrão adequado e aplica-o automaticamente.
As APIs de proteção de dados não se destinam principalmente à persistência indefinida de cargas confidenciais. Outras tecnologias, como o Windows CNG, DPAPI e Azure Rights Management , são mais adequadas ao cenário de armazenamento indefinido. Têm capacidades de gestão de chaves igualmente fortes. Dito isto, as APIs ASP.NET Core de proteção de dados podem ser usadas para a proteção a longo prazo de dados confidenciais.
Público-alvo
O sistema de proteção de dados fornece APIs que visam três públicos principais:
As APIs de consumo destinam-se a programadores de aplicações e frameworks.
Não quero aprender sobre a operação da pilha ou como está configurada. Só quero realizar alguma operação com alta probabilidade de usar as APIs com sucesso.
As APIs de configuração visam programadores de aplicações e administradores de sistemas.
Preciso de dizer ao sistema de proteção de dados que o meu ambiente requer caminhos ou definições não padrão.
As APIs de extensibilidade destinam-se aos programadores responsáveis pela implementação de políticas personalizadas. A utilização destas APIs está limitada a situações raras e a programadores com experiência em segurança.
Preciso de substituir um componente inteiro dentro do sistema porque tenho requisitos comportamentais verdadeiramente únicos. Estou disposto a aprender partes invulgarmente usadas da superfície API para construir um plugin que cumpra os meus requisitos.
Layout do pacote
A pilha de proteção de dados consiste em cinco pacotes:
Microsoft.AspNetCore.DataProtection.Abstractions contém:
- IDataProtectionProvider e IDataProtector interfaces para criar serviços de proteção de dados.
- Métodos úteis de extensão para trabalhar com estes tipos. por exemplo, IDataProtector.Protect
Se o sistema de proteção de dados for instanciado noutro local e estiver a consumir a API, consulte
Microsoft.AspNetCore.DataProtection.Abstractions.Microsoft.AspNetCore.DataProtection contém a implementação central do sistema de proteção de dados, incluindo:
- Operações criptográficas centrais.
- Gestão de chaves.
- Configuração e extensibilidade.
Para instanciar o sistema de proteção de dados, consulte
Microsoft.AspNetCore.DataProtection. Pode precisar de consultar o sistema de proteção de dados quando:- Adicionando-o a um IServiceCollection.
- Modificar ou expandir o seu comportamento.
Microsoft.AspNetCore.DataProtection.Extensions contém APIs adicionais que os programadores podem achar úteis, mas que não pertencem ao pacote base. Por exemplo, este pacote contém:
- Métodos de fábrica para instanciar o sistema de proteção de dados para armazenar chaves num local do sistema de ficheiros sem injeção de dependências. Consulte DataProtectionProvider.
- Métodos de extensão para limitar o tempo de vida de cargas protegidas. Consulte ITimeLimitedDataProtector.
O Microsoft.AspNetCore.DataProtection.SystemWeb pode ser instalado numa aplicação existente ASP.NET 4.x para redirecionar as suas
<machineKey>operações para usar a nova pilha de proteção de dados ASP.NET Core. Para obter mais informações, consulte Substituir a machineKey do ASP.NET no ASP.NET Core.O Microsoft.AspNetCore.Cryptography.KeyDerivation fornece uma implementação da rotina de hashing de palavras-passe PBKDF2 e pode ser usado por sistemas que devem lidar com palavras-passe de utilizador de forma segura. Para mais informações, consulte Palavras-passe de hash no ASP.NET Core.