Recomendações para criptografia de dados

Aplica-se à recomendação da lista de verificação de segurança do Well-Architected Framework:

SE:07 Criptografe dados usando métodos modernos padrão do setor para proteger a confidencialidade e a integridade. Alinhe o escopo da criptografia com as classificações de dados; Priorize os métodos de criptografia de plataforma nativa.

Se seus dados não estiverem protegidos, eles podem ser modificados maliciosamente, o que leva à perda de integridade e confidencialidade.

Este guia descreve as recomendações para criptografar e proteger seus dados. Criptografia é o processo de usar algoritmos de criptografia para tornar os dados ilegíveis e bloqueá-los com uma chave. No estado criptografado, os dados não podem ser decifrados. Ele só pode ser descriptografado usando uma chave emparelhada com a chave de criptografia.

Definições

Termos Definição
Certificados Arquivos digitais que contêm as chaves públicas para criptografia ou descriptografia.
Pacote de criptografia Um conjunto de algoritmos usados para criptografar e descriptografar informações para proteger uma conexão de rede por meio do Transport Layer Security (TLS).
Computação Confidencial A Computação Confidencial é a proteção dos dados em uso, realizando a computação em um Ambiente de Execução Confiável atestado e baseado em hardware.
Descriptografia O processo no qual os dados criptografados são desbloqueados com um código secreto.
Criptografia dupla O processo de criptografar dados usando duas ou mais camadas independentes de criptografia.
Criptografia O processo pelo qual os dados são tornados ilegíveis e bloqueados com um código secreto.
Hash O processo de transformação de dados em texto ou números com a intenção de ocultar informações.
Chaves Um código secreto usado para bloquear ou desbloquear dados criptografados.
Signature Um carimbo criptografado de autenticação nos dados.
Assinando O processo de verificação da autenticidade dos dados usando uma assinatura.
X.509 Um padrão que define o formato dos certificados de chave pública.

Principais estratégias de design

Mandatos organizacionais ou requisitos regulatórios podem impor mecanismos de criptografia. Por exemplo, pode haver um requisito de que os dados devem permanecer apenas na região selecionada e as cópias dos dados são mantidas nessa região.

Esses requisitos geralmente são o mínimo básico. Esforce-se para obter um nível mais alto de proteção. Você é responsável por evitar vazamentos de confidencialidade e adulteração de dados confidenciais, sejam dados de usuários externos ou dados de funcionários.

Os mecanismos de criptografia provavelmente precisam proteger os dados em três estágios:

  • Os dados em repouso são todas as informações mantidas em objetos de armazenamento.

    Um exemplo de proteção de dados em repouso é usar o BitLocker para criptografar dados salvos no armazenamento em um disco.

  • Dados em trânsito são informações transferidas entre componentes, locais ou programas.

    Um exemplo de proteção de dados em trânsito é criptografar dados com TLS para que os pacotes que se movem por redes públicas e privadas sejam seguros.

  • Os dados em uso são dados que estão sendo trabalhados ativamente na memória.

    Um exemplo de proteção de dados em uso é a criptografia com computação confidencial para proteger os dados à medida que são processados.

As opções anteriores não são mutuamente exclusivas. Eles geralmente são usados juntos no contexto de toda a solução. Um estágio pode atuar como um controle de compensação. Por exemplo, talvez seja necessário isolar os dados para evitar adulteração quando os dados são lidos da memória.

Determinar os requisitos de criptografia

Classifique os dados por sua finalidade e nível de confidencialidade para determinar quais dados você precisa criptografar. Para dados que devem ser criptografados, determine o nível de proteção necessário. Você precisa de criptografia TLS de ponta a ponta para todos os dados em trânsito? Para dados em repouso, quais recursos do Azure podem atender às suas necessidades? Você precisa criptografar dados duas vezes em cada ponto de armazenamento? Como você implementa a proteção de informações?

É importante equilibrar suas decisões de criptografia porque há compensações significativas.

Compensação: cada salto de criptografia pode introduzir latência de desempenho. Complexidades operacionais podem ocorrer em relação à solução de problemas e à observabilidade. A recuperação pode ser um desafio.

Defina o escopo dessas compensações. Antecipe compensações para dados classificados como confidenciais. Os requisitos podem até determinar as compensações, por exemplo, se um determinado tipo de dados deve ser criptografado e armazenado dentro de determinados limites.

Há casos em que a criptografia não é possível devido a limitações técnicas, investimento ou outros motivos. Certifique-se de que esses motivos sejam claros, válidos e documentados.

Mecanismos de criptografia fortes não devem ser sua única forma de defesa. Implemente processos de prevenção de roubo de dados, métodos de teste adequados e detecção de anomalias.

Para obter informações sobre classificação, consulte Recomendações sobre classificação de dados.

Use mecanismos de criptografia nativos

A maioria dos serviços do Azure fornece um nível básico de criptografia. Explore as opções de criptografia fornecidas pela plataforma.

É altamente recomendável que você não desabilite os recursos da plataforma para desenvolver sua própria funcionalidade. Os recursos de criptografia de plataforma usam padrões modernos do setor, são desenvolvidos por especialistas e são altamente testados.

Em raras ocasiões, se você precisar substituir a criptografia fornecida pela plataforma, avalie os prós e contras e use algoritmos criptográficos padrão do setor.

Os desenvolvedores devem usar APIs de criptografia incorporadas ao sistema operacional em vez de bibliotecas de criptografia que não sejam de plataforma. Para o .NET, siga o modelo de criptografia do .NET.

Escolher uma abordagem de chaves de criptografia

Por padrão, os serviços do Azure usam chaves de criptografia gerenciadas pela Microsoft para criptografar e descriptografar dados. O Azure é responsável pelo gerenciamento de chaves.

Você pode optar por chaves gerenciadas pelo cliente. O Azure ainda usa suas chaves, mas você é responsável pelas operações de chave. Você tem a flexibilidade de mudar as teclas quando quiser. A descriptografia é um motivo convincente para usar chaves gerenciadas pelo cliente.

Você deve emparelhar criptografia forte com descriptografia forte. Do ponto de vista da segurança, proteger uma chave de descriptografia é importante porque a rotação é uma maneira comum de controlar o raio de explosão se uma chave for comprometida. Monitore o acesso para detectar acesso e atividades anômalos.

Armazene chaves separadas dos dados criptografados. Esse desacoplamento ajuda a garantir que o comprometimento de uma entidade não afete a outra. Se você usar chaves gerenciadas pelo cliente, armazene-as em um repositório de chaves. Armazene dados altamente confidenciais em um HSM (módulo de segurança de hardware) gerenciado.

Ambas as lojas são protegidas com acesso baseado em identidade. Esse recurso permite que você negue o acesso, até mesmo à plataforma.

Use algoritmos de criptografia padrão

Use algoritmos de criptografia bem estabelecidos e que sigam os padrões do setor em vez de criar implementações personalizadas.

Os padrões do setor para algoritmos exigem que os esquemas de criptografia tenham um certo nível de entropia. As fontes de entropia são injetadas durante a criptografia. A entropia torna o algoritmo forte e dificulta a extração de informações por um invasor. Determine os limiares toleráveis de entropia. Os procedimentos de criptografia exigem muito do processador. Encontre o equilíbrio certo para maximizar os ciclos de computação gastos na criptografia, em relação às metas de desempenho geral da solicitação de computação.

Compensação: se você escolher um algoritmo altamente complexo ou injetar mais do que uma quantidade razoável de entropia, isso degradará o desempenho do sistema.

Usar hashes e somas de verificação

Normalmente, o hash é uma técnica de detecção de erros. Você também pode usar o hash para segurança, pois ele detecta alterações nos dados que podem ser causadas por adulteração. As funções de hash são baseadas em criptografia, mas não usam chaves. As funções de hash usam algoritmos para produzir somas de verificação. As somas de verificação podem comparar dados para verificar a integridade deles.

Os aplicativos devem usar a família SHA-2 de algoritmos de hash, como SHA-256, SHA-384 ou SHA-512.

Criptografar dados em repouso

Classifique e proteja os objetos de armazenamento de informações de acordo com os requisitos de conformidade internos e externos. Veja as seguintes recomendações:

  • Criptografe dados usando opções nativas fornecidas para serviços de armazenamento, armazenamentos de dados e outros recursos usados para persistir dados. Criptografe esses dados mesmo que você armazene dados nesses serviços ou recursos de armazenamento apenas temporariamente. Criptografe também seus dados de backup para manter o mesmo nível de segurança da fonte original.

    Para obter mais informações, consulte Proteção de dados em repouso.

  • Use criptografia dupla. Se seus requisitos de negócios exigirem maior garantia, você poderá executar criptografia dupla. Criptografe dados em duas ou mais camadas usando chaves independentes gerenciadas pelo cliente. Armazene os dados em um HSM gerenciado. Para ler os dados, você precisa de acesso a ambas as chaves. Se uma chave for comprometida, a outra ainda protegerá os dados. Essa técnica visa aumentar os custos do invasor.

    Você também pode usar a criptografia fornecida pela plataforma para criptografar dados duas vezes. A criptografia fornecida pela plataforma protege a mídia de armazenamento no nível da infraestrutura e você aplica outra camada de criptografia no nível dos dados. Por exemplo, um serviço de agente de mensagens tem criptografia fornecida pela plataforma por meio de chaves gerenciadas pela Microsoft que protegem o pipe de mensagens. Esse método permite criptografar as mensagens com chaves gerenciadas pelo cliente.

    Use mais de uma chave de criptografia. Use uma chave de criptografia de chave (KEK) para proteger sua chave de criptografia de dados (DEK).

  • Use controles de acesso baseados em identidade para controlar o acesso aos dados. Adicione firewalls de rede para fornecer uma camada extra de segurança que bloqueia o acesso inesperado e inseguro.

    Para obter mais informações, consulte Recomendações de gerenciamento de identidade e acesso.

  • Armazene chaves em um HSM gerenciado que tenha controle de acesso com privilégios mínimos. Separe os dados das chaves para os dados.

  • Armazene uma quantidade limitada de dados para criptografar apenas o necessário. Seus dados não devem durar mais do que seu ciclo de criptografia. Quando os dados não forem mais necessários, exclua os dados criptografados sem gastar ciclos de descriptografia.

Criptografar dados em trânsito

  • Use protocolos seguros para comunicação cliente-servidor. Os protocolos de transporte têm uma camada interna de segurança. O TLS é o padrão do setor para a troca de dados entre pontos de extremidade de cliente e servidor.

    Não use versões inferiores ao TLS 1.2. Migre soluções para dar suporte ao TLS 1.2 e use essa versão por padrão. Todos os serviços do Azure permitem TLS 1.2 em pontos de extremidade HTTPS públicos.

    Risco: clientes mais antigos que não dão suporte ao TLS 1.2 podem não funcionar corretamente se a compatibilidade com versões anteriores não for compatível.

    Toda a comunicação do site deve usar HTTPS, independentemente da sensibilidade dos dados transferidos. Durante um handshake cliente-servidor, negocie o uso da política HTTP Strict Transport Security (HSTS) para que o transporte HTTPS seja mantido e não caia para HTTP durante a comunicação. Essa política protege contra ataques man-in-the-middle.

    O suporte para HSTS é para versões mais recentes. Você pode quebrar a compatibilidade com navegadores mais antigos.

    Observação

    Você também pode criptografar protocolos para estabelecer conexões seguras para bancos de dados. Por exemplo, o Banco de Dados SQL do Azure dá suporte ao protocolo TDS (Tabular Data Stream), que integra um handshake TLS.

    Um conjunto de criptografia é um conjunto de algoritmos usados para padronizar o handshake entre o cliente e o servidor. As cifras garantem que a troca seja criptografada e autenticada. A escolha das cifras depende da versão do TLS que o servidor usa. Para alguns serviços, como o Gateway de Aplicativo do Azure, você pode escolher a versão do TLS e os pacotes de criptografia aos quais deseja dar suporte. Implemente conjuntos de criptografia que usam o AES (Advanced Encryption Standard) como uma criptografia de bloco simétrica. AES-128, AES-192 e AES-256 são aceitáveis.

  • Gerencie o ciclo de vida dos certificados. Os certificados têm uma vida útil predeterminada. Não mantenha certificados de longa duração e não os deixe expirar por conta própria. Implemente um processo que renove certificados em uma frequência aceitável. Você pode automatizar o processo de renovações que ocorrem em intervalos curtos.

    Observação

    Se você usar a fixação de certificado, familiarize-se com as limitações de agilidade e gerenciamento de certificados.

    Seu fluxo de trabalho não deve permitir que certificados inválidos sejam aceitos no ambiente. O processo de fixação de certificado deve validar certificados e impor essa verificação de validação. Você deve monitorar os logs de acesso para garantir que a chave de assinatura seja usada com as permissões adequadas.

    Se uma chave estiver comprometida, o certificado deverá ser revogado imediatamente. Uma autoridade de certificação (CA) fornece uma lista de certificados revogados (CRL) que indica os certificados que são invalidados antes de sua expiração. Sua verificação de validação deve considerar CRLs.

    Compensação: O processo de validação da certificação pode ser complicado e geralmente envolve uma CA. Determine os dados que você deve criptografar com certificados. Para outros tipos de comunicação, determine se você pode implementar controles de compensação localizados para adicionar segurança.

    Uma maneira de localizar controles é com TLS mútuo (mTLS). Ele estabelece confiança em ambas as direções entre o cliente e o servidor. O cliente e o servidor têm seus próprios certificados, e cada certificado é autenticado com seu par de chaves públicas ou privadas. Com o mTLS, você não depende da CA externa. A desvantagem é a complexidade adicional de gerenciar dois certificados.

  • Criptografe duas vezes as conexões VPN, se necessário. Execute criptografia dupla para adicionar defesa em profundidade ao seu túnel VPN. Ao usar dois servidores VPN, você pode ocultar o endereço IP entre os servidores e também ocultar o endereço IP entre o servidor e o destino. Durante esse processo, os dados em trânsito também são criptografados duas vezes.

    Compensação: Em comparação com as configurações de VPN única, as configurações de VPN dupla geralmente são mais caras e as conexões geralmente são mais lentas.

  • Implemente processos de registro e monitoramento. Acompanhe os recursos de entrada de acesso que armazenam informações sobre clientes, como IP de origem, porta e protocolo. Use essas informações para detectar anomalias.

Criptografar dados em uso

Para cargas de trabalho de alta segurança, segmentação, isolamento e privilégios mínimos são padrões de design recomendados.

No contexto da proteção em uso, os limites de hardware podem exigir criptografia de dados enquanto eles estão em uso na CPU física e na memória para garantir o isolamento de VMs, código de gerenciamento de host e outros componentes. A criptografia e a descriptografia de dados só devem ser feitas dentro desses limites de isolamento.

Requisitos regulatórios ou de segurança mais rigorosos também podem exigir evidências baseadas em hardware e assinadas criptograficamente de que os dados estão sendo criptografados durante o uso, isso pode ser obtido por meio de atestado. A computação confidencial é uma dessas tecnologias que suporta o requisito. Serviços específicos no Azure oferecem a capacidade de proteger dados enquanto eles estão sendo calculados. Para obter mais informações, consulte Facilitação do Azure: Computação Confidencial do Azure.

Considere o ciclo de vida final dos dados que você está protegendo Os dados geralmente se movem por vários sistemas em seu tempo de vida, certifique-se de que todas as partes componentes de uma solução possam fornecer os níveis necessários de proteção ou certifique-se de que sua estratégia de gerenciamento de dados forneça segmentação ou mascaramento apropriado.

Facilitação do Azure

As seções a seguir descrevem os serviços e recursos do Azure que você pode usar para criptografar seus dados.

Chaves gerenciadas pelo cliente

Armazene chaves gerenciadas pelo cliente no Azure Key Vault ou em um HSM gerenciado pelo Key Vault.

O Key Vault trata as chaves como qualquer outro segredo. Os RBAC (controles de acesso baseados em função) do Azure acessam as chaves por meio de um modelo de permissão. Esse controle baseado em identidade deve ser usado com políticas de acesso do Key Vault.

Para obter mais informações, consulte Fornecer acesso a chaves, certificados e segredos do Key Vault usando o RBAC.

O Azure Key Vault Premium e o HSM Gerenciado aprimoram ainda mais a oferta, incluindo recursos de computação confidencial e Versão de Chave Segura, que dá suporte a uma política para garantir que uma chave seja liberada apenas para uma carga de trabalho que possa provar criptograficamente que ela está sendo executada dentro de um TEE (Ambiente de Execução Confiável).

Proteção de dados em repouso
  • O Armazenamento do Azure criptografa automaticamente seus dados com criptografias de bloco quando os dados são persistidos em uma conta de armazenamento. Para o Armazenamento de Blobs do Azure e o Armazenamento de Filas do Azure, o Armazenamento também fornece criptografia do lado do cliente por meio de bibliotecas.

    Para obter mais informações, consulte Criptografia de armazenamento.

  • As Máquinas Virtuais do Azure têm arquivos de disco que servem como volumes de armazenamento virtual. Você pode criptografar os arquivos de disco virtual para que o conteúdo não possa ser acessado.

    Os discos gerenciados podem ser exportados do portal. A criptografia do lado do servidor e a criptografia no host podem proteger os dados somente depois que eles são exportados. No entanto, você deve proteger os dados durante o processo de exportação. Você pode usar o Azure Disk Encryption para proteger seus dados durante o processo de exportação.

    O Azure oferece várias opções de criptografia para discos gerenciados. Para obter mais informações, consulte Visão geral das opções de criptografia de disco gerenciado.

  • O Banco de Dados SQL oferece um recurso de criptografia de dados transparente que é usado para criptografar um arquivo de banco de dados no nível da página.

Proteção de dados em trânsito

Com o Key Vault, você pode provisionar, gerenciar e implantar certificados SSL (Secure Sockets Layer) ou TLS públicos e privados. Você pode usar os certificados com o Azure e com seus recursos internos conectados.

Proteção de dados em uso

Serviços específicos no Azure oferecem a capacidade de proteger dados enquanto são computados na CPU física e na memória de um host usando a computação confidencial do Azure.

  • As Máquinas Virtuais Confidenciais oferecem uma máquina virtual inteira em execução dentro de um TEE, a memória e a execução do conteúdo da CPU da máquina virtual são criptografadas, oferecendo uma abordagem simples de "lift & shift" para mover aplicativos não modificados com altos requisitos de segurança para o Azure. Cada VM confidencial do Azure tem seu próprio TPM (Módulo de Plataforma de Confiança) virtual dedicado. A criptografia é executada enquanto os componentes do sistema operacional são inicializados com segurança.

  • Os nós de trabalho confidenciais do AKS, os contêineres confidenciais no AKS ou os contêineres confidenciais nas ACI (instâncias de contêiner do Azure) oferecem a capacidade de executar e gerenciar contêineres não modificados dentro de um TEE , o que permite que os clientes se beneficiem da proteção em uso. As ofertas de contêiner são baseadas em Máquinas Virtuais Confidenciais e se beneficiam das mesmas proteções.

  • As soluções do Application Enclave são aplicativos especialmente criados que aproveitam as extensões de CPU específicas oferecidas por SKUs de máquina virtual que oferecem suporte ao Intel Software Guard Extensions (SGX), que oferecem uma TCB (Trusted Compute Base) muito granular, mas exigem que os aplicativos sejam codificados especificamente para aproveitar os recursos.

  • O Secure Key Release pode ser combinado com essas tecnologias para garantir que os dados criptografados sejam descriptografados apenas dentro de um TEE, o que prova que ele fornece o nível necessário de proteção por meio de um processo conhecido como Atestado.

Gerenciamento de segredos

Você pode usar o Key Vault para armazenar e controlar com segurança o acesso a tokens, senhas, certificados, chaves de API e outros segredos. Use o Key Vault como uma solução de gerenciamento de chaves e certificados. O SKU Premium dá suporte a HSMs.

Exemplo

O exemplo a seguir mostra soluções de criptografia que você pode usar para gerenciar chaves, certificados e segredos.

Diagrama que mostra soluções de criptografia para gerenciar chaves, certificados e segredos.

Lista de verificação de segurança

Consulte o conjunto completo de recomendações.

Lista de verificação de segurança