Recomendações para encriptação 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. Alinhar o escopo da criptografia com as classificações de dados; Priorize métodos de criptografia de plataforma nativa.

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

Este guia descreve as recomendações para criptografar e proteger seus dados. A encriptação é o processo de utilização de algoritmos de encriptação para tornar os dados ilegíveis e bloquear os dados com uma chave. No estado criptografado, os dados não podem ser decifrados. Só pode ser desencriptado usando uma chave emparelhada com a chave de encriptação.

Definições

Termos Definição
Certificados Ficheiros digitais que contêm as chaves públicas para encriptação ou desencriptação.
Suíte Cipher Um conjunto de algoritmos que são usados para criptografar e descriptografar informações para proteger uma conexão de rede por TLS (Transport Layer Security).
Computação confidencial Computação Confidencial é a proteção de dados em uso através da realização de computação em um ambiente de execução confiável baseado em hardware e atestado.
Desencriptação O processo no qual os dados criptografados são desbloqueados com um código secreto.
Encriptação dupla O processo de encriptação de dados utilizando duas ou mais camadas independentes de encriptação.
Encriptação O processo pelo qual os dados são tornados ilegíveis e bloqueados com um código secreto.
Hashing 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.
Assinatura Um carimbo criptografado de autenticação nos dados.
Assinatura de 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 cópias dos dados são mantidas nessa região.

Estes requisitos são muitas vezes o mínimo de base. Procure um nível mais elevado 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.

É provável que os mecanismos de encriptação protejam os dados em três fases:

  • 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.

  • Dados em uso são dados que estão sendo ativamente trabalhados 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 escolhas anteriores não são mutuamente exclusivas. Eles geralmente são usados juntos no contexto de toda a solução. Uma etapa pode funcionar como um controle compensador. Por exemplo, talvez seja necessário isolar dados para evitar adulterações quando os dados são lidos da memória.

Determinar os requisitos de criptografia

Classifique os dados por sua finalidade e nível de sensibilidade para determinar quais dados você precisa criptografar. Para dados que devem ser criptografados, determine o nível necessário de proteção. 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 em todos os pontos de armazenamento? Como implementar 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 tiver de ser encriptado e armazenado dentro de determinados limiares.

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 encriptação fortes não devem ser a sua única forma de defesa. Implemente processos de prevenção de roubo de dados, métodos de teste adequados e deteção de anomalias.

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

Usar 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 desative os recursos da plataforma para desenvolver sua própria funcionalidade. Os recursos de criptografia de plataforma usam padrões modernos da indústria, são desenvolvidos por especialistas e são altamente testados.

Para 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 sem plataforma. Para .NET, siga o modelo de criptografia .NET.

Escolha 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 desencriptação é uma razão convincente para usar chaves geridas pelo cliente.

Deve emparelhar encriptação forte com desencriptação forte. Do ponto de vista da segurança, proteger uma chave de desencriptação é importante porque a rotação é uma forma comum de controlar o raio de explosão se uma chave estiver comprometida. Monitore o acesso para detetar acessos e atividades anômalos.

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

Ambas as lojas são protegidas com acesso baseado em identidade. Esse recurso permite negar 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 da indústria para algoritmos exigem que os esquemas de criptografia tenham um certo nível de entropia. As fontes de entropia são injetadas durante a encriptação. A entropia torna o algoritmo forte e torna difícil para um invasor extrair informações. Determinar 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 gerais de desempenho da solicitação de computação.

Compensação: Se você escolher um algoritmo que é altamente complexo ou injeta mais do que uma quantidade razoável de entropia, isso degrada o desempenho do seu sistema.

Usar hashes e checksums

Normalmente, o hashing é uma técnica de deteção de erros. Você também pode usar hashing para segurança, pois ele deteta 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 dos mesmos.

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

Encriptar dados inativos

Classifique e proteja 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 se você armazenar dados nesses serviços ou recursos de armazenamento apenas temporariamente. Criptografe também os 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 os 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 acessar ambas as chaves. Se uma chave for comprometida, a outra chave ainda protege os dados. Esta técnica visa aumentar os custos do atacante.

    Você também pode usar a criptografia fornecida pela plataforma para criptografar dados duplamente. 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 protege 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 acessos inesperados e inseguros.

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

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

  • Armazene uma quantidade limitada de dados para criptografar apenas o necessário. Os seus dados não devem durar mais do que o seu ciclo de encriptação. 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. TLS é o padrão do setor para troca de dados entre pontos de extremidade cliente e servidor.

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

    Risco: Clientes mais antigos que não suportam TLS 1.2 podem não funcionar corretamente se a compatibilidade com versões anteriores não for suportada.

    Toda a comunicação do site deve usar HTTPS, independentemente da sensibilidade dos dados transferidos. Durante um handshake cliente-servidor, negocie o uso da diretiva HSTS (HTTP Strict Transport Security) para que o transporte HTTPS seja mantido e não caia para HTTP durante a comunicação. Esta 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.

    Nota

    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 (Fluxo de Dados Tabulares), que integra um handshake TLS.

    Um conjunto de codificação é um conjunto de algoritmos que são 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 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 codificação aos quais deseja dar suporte. Implemente pacotes de codificação que usam o AES (Advanced Encryption Standard) como uma cifra de bloco simétrico. 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 guarde certificados de longa duração e não os deixe expirar por conta própria. Implemente um processo que renove certificados com uma frequência aceitável. Você pode automatizar o processo para renovações que ocorrem em intervalos curtos.

    Nota

    Se você usa a fixação de certificados, familiarize-se com a agilidade e as limitações do 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 certificados 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 for comprometida, o certificado deve ser revogado imediatamente. Uma autoridade de certificação (CA) fornece uma lista de revogação de certificados (CRL) que indica os certificados que são invalidados antes de sua expiração. Sua verificação de validação deve levar em conta as CRLs.

    Compensação: O processo de validação da certificação pode ser complicado e geralmente envolve uma autoridade de certificação. 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. Tanto o cliente quanto 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 autoridade de certificação externa. A contrapartida é 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 configurações de VPN únicas, as configurações de VPN duplas geralmente são mais caras e as conexões geralmente são mais lentas.

  • Implementar processos de registo e monitorização. Acompanhe os recursos de entrada de acesso que armazenam informações sobre os clientes, como o IP de origem, a porta e o protocolo. Use essas informações para detetar 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 encriptação e a desencriptação dos dados só devem ser feitas dentro desses limites de isolamento.

Requisitos de segurança ou regulatórios mais rigorosos também podem exigir evidências criptograficamente assinadas com base em hardware 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 computados. 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 são movidos por vários sistemas durante sua vida útil, cuide para garantir que todos os componentes de uma solução possam fornecer os níveis necessários de proteção ou garanta que sua estratégia de gerenciamento de dados forneça segmentação ou mascaramento apropriados.

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 geridas pelo cliente

Armazene chaves gerenciadas pelo cliente no Cofre de Chaves do Azure ou em um HSM gerenciado pelo Cofre de Chaves.

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

Para obter mais informações, consulte Fornecer acesso a chaves, certificados e segredos do Cofre de Chaves usando RBAC.

O Azure Key Vault Premium e o Managed-HSM aprimoram ainda mais a oferta, incluindo capacidades de computação confidenciais e Secure Key Release que dá suporte a uma política para garantir que uma chave só seja liberada para uma carga de trabalho que possa provar criptograficamente que está sendo executada dentro de um Ambiente de Execução Confiável (TEE).

Proteção de dados em repouso
  • O Armazenamento do Azure criptografa automaticamente seus dados com cifras de bloco quando os dados são persistentes 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 ficheiros 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 e 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 transparente de criptografia de dados 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 o conteúdo da CPU em execução da máquina virtual são criptografados, 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 (Trusted Platform Module) 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 instâncias de contêiner do Azure (ACI) 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 incorporadas em Máquinas Virtuais Confidenciais e se beneficiam das mesmas proteções.

  • As soluções de Enclave de aplicativos são aplicativos especialmente construídos aproveitando extensões de CPU específicas oferecidas por SKUs de máquinas virtuais que suportam Intel Software Guard Extensions (SGX), que oferecem uma Base de Computação Confiável (TCB) muito granular, mas exigem que os aplicativos sejam especificamente codificados para aproveitar os recursos.

  • O Secure Key Release pode ser combinado com essas tecnologias para garantir que os dados criptografados só sejam descriptografados 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 Attestation.

Gestão de segredos

Você pode usar o Cofre de Chaves para armazenar e controlar com segurança o acesso a tokens, senhas, certificados, chaves de API e outros segredos. Use o Cofre de Chaves como uma solução de gerenciamento de chaves e certificados. O Premium SKU suporta 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