Software · Segurança & Identidade

Criptografia de Dados: Proteção em Repouso, Envelope Encryption e TLS em Trânsito

Como salvaguardar dados confidenciais através de cifras modernas: do aperto de mão no TLS 1.3 à técnica de criptografia em envelope com chaves mestras e KMS.

Diagrama de segurança criptográfica ilustrando cifragem de dados em trânsito com TLS 1 3 e criptografia em envelope em repouso com KMS
Neste artigo

Em tempos de conformidade regulatória estrita (como LGPD no Brasil e GDPR na Europa) e com o aumento exponencial de incidentes cibernéticos sofisticados, a presunção de que a rede corporativa é um perímetro seguro e impenetrável tornou-se obsoleta. Se um invasor obtiver acesso físico aos discos rígidos virtuais de um servidor ou se conseguir interceptar o tráfego que trafega pelos roteadores e cabos de fibra óptica, a criptografia atua como a última e definitiva linha de defesa: a garantia matemática de que o dado capturado permanecerá como um bloco indecifrável e inútil de texto cifrado.

No entanto, aplicar criptografia em sistemas corporativos de alta escala exige muito mais do que simplesmente invocar funções de hash ou bibliotecas prontas. É indispensável compreender os estados físicos da informação e dominar padrões arquiteturais robustos como o TLS 1.3 para dados em trânsito e a Criptografia em Envelope (Envelope Encryption) para dados em repouso.

Os Estados da Informação e as Camadas de Proteção

A segurança da informação classifica os dados em três estados físicos e lógicos fundamentais:

Estado da Informação Definição Operacional Riscos de Segurança Mecanismos de Proteção Criptográfica
Em Trânsito (In Transit) Dados trafegando ativamente por redes públicas ou conexões internas entre serviços. Interceptação (Man-in-the-Middle), espionagem de rede e injeção de pacotes maliciosos. TLS 1.3 na borda, mTLS (Mutual TLS) entre microsserviços e túneis VPN/IPsec.
Em Repouso (At Rest) Informações gravadas em blocos de disco físico, bancos de dados ou storages de backup. Furto de mídias físicas, leitura indevida de snapshots e vazamento de arquivos de dump. AES-256 (GCM), criptografia transparente (TDE) e chaves protegidas em KMS/HSM.
Em Uso (In Use) Dados descriptografados residentes na memória RAM e nos registradores da CPU em execução. Dumps de memória física por processos com root, ataques de canal lateral e hypervisor infectado. Computação Confidencial (Confidential Computing), enclaves seguros (Intel SGX, AMD SEV).

Dados em Trânsito: A Revolução do TLS 1.3

A proteção de dados em movimento impede ataques de interceptação do tipo Man-in-the-Middle (MitM), escuta clandestina e manipulação de pacotes de rede. O protocolo TLS 1.3 (Transport Layer Security) consolidou-se como o padrão absoluto da internet moderna, trazendo avanços cruciais sobre as versões legadas:

  1. Aperto de Mão de Uma Viagem de Ida e Volta (1-RTT Handshake): Enquanto o TLS 1.2 exigia duas viagens completas de pacotes de rede (2-RTT) para negociar parâmetros criptográficos e certificados antes do envio do primeiro byte de dados úteis, o TLS 1.3 reduziu essa negociação pela metade (1-RTT), diminuindo sensivelmente a latência de conexão para APIs e clientes web.
  2. Segredo de Encaminhamento Perfeito (PFS - Perfect Forward Secrecy): No TLS 1.3, algoritmos estáticos legados de troca de chaves (como trocas RSA tradicionais) foram totalmente banidos. Utiliza-se exclusivamente ECDHE (Elliptic Curve Diffie-Hellman Ephemeral). Mesmo que a chave privada mestre do servidor web seja roubada no futuro por um atacante, ele não conseguirá descriptografar o histórico de tráfego capturado no passado, pois cada sessão de conexão gerou um par efêmero de chaves que é sumariamente destruído após o encerramento da comunicação.
  3. Cifras Modernas Autenticadas (AEAD): O TLS 1.3 removeu suporte a algoritmos vulneráveis (como MD5, SHA-1, RC4 e CBC com padding), mantendo apenas suítes de cifra que garantem simultaneamente confidencialidade e autenticidade (como AES-256-GCM e ChaCha20-Poly1305).

Dados em Repouso e o Padrão de Criptografia em Envelope

Proteger dados armazenados em bancos de dados relacionais, armazenamentos de objetos (Blob Storage) e sistemas de arquivos é essencial para evitar vazamentos decorrentes de cópias não autorizadas de backups ou invasão física de servidores.

No entanto, tentar criptografar terabytes de dados corporativos utilizando diretamente uma única Chave Mestra mantida em um serviço de gerenciamento de chaves (como AWS KMS ou Azure Key Vault) é um grave anti-pattern de engenharia:

  • O KMS do provedor de nuvem cobraria por cada chamada de API, tornando o custo astronômico.
  • A latência de rede para enviar gigabytes de arquivos para o KMS criptografar e devolver geraria gargalos severos de throughput.

A engenharia corporativa resolve esse desafio através da Criptografia em Envelope (Envelope Encryption):

sequenceDiagram
    participant App as Aplicação
    participant KMS as Key Management Service
    participant Storage as Armazenamento

    App->>KMS: Solicita uma nova chave de dados
    KMS-->>App: DEK em memória + DEK criptografada
    App->>App: Criptografa o arquivo com AES-256-GCM
    App->>App: Destrói a DEK em texto puro
    App->>Storage: Salva arquivo cifrado + DEK criptografada

Por Que Esse Padrão é Tão Seguro e Eficiente?

  • Desempenho Extremo: A criptografia pesada do volume de dados ocorre localmente na máquina da aplicação em milissegundos, sem enviar os arquivos através da rede para o KMS.
  • Isolamento de Chaves: Cada registro ou arquivo recebe sua própria DEK exclusiva. Se uma DEK específica for comprometida, apenas aquele único registro é exposto, preservando todo o restante da base de dados.
  • Como Recuperar o Dado: Quando a aplicação precisa ler o dado, ela envia apenas a pequena DEK criptografada (poucos bytes) ao KMS. O KMS a descriptografa utilizando a Chave Mestra e devolve a DEK em texto puro temporariamente para que a aplicação decifre o conteúdo localmente.

Criptografia versus Hashing: A Fronteira Conceitual

É comum encontrar confusão conceitual entre criptografia e hashing:

Critério Criptografia (Encryption) Algoritmos de Hash Criptográfico
Reversibilidade Bidirecional. O dado cifrado pode ser totalmente revertido ao texto original mediante apresentação da chave correta. Unidirecional. É matematicamente impossível reverter o hash para obter o valor original gerador.
Tamanho da Saída Proporcional ao tamanho do texto original de entrada. Tamanho fixo e constante (ex: SHA-256 sempre gera 256 bits).
Casos de Uso Primários Documentos confidenciais, números de telefone, dados médicos, mensagens seguras de chat. Verificação de integridade de arquivos, assinaturas digitais, armazenamento de senhas com sal (Argon2, bcrypt).

Aviso de Segurança: Nunca utilize algoritmos de criptografia reversível para armazenar senhas de usuários. Senhas devem ser salgadas com valores aleatórios (salt) e protegidas com funções de hash deliberadamente lentas e resistentes a força bruta por GPUs, como Argon2id ou bcrypt.

Boas Práticas de Governança Criptográfica

Em ambientes corporativos seguros, a governança criptográfica é orientada por padrões internacionais consolidados:

  1. Envelope Encryption por Padrão para Dados Sensíveis: Informações financeiras e documentos regulatórios recebem dupla camada de proteção, garantindo que mesmo um despejo não autorizado (dump) completo da base de dados PostgreSQL resulte apenas em bytes cifrados sem valor prático.
  2. mTLS na Malha Interna de Serviços: Nas comunicações críticas entre microsserviços dentro do cluster, exigimos autenticação mútua via TLS (mTLS), onde não apenas o servidor apresenta um certificado válido, mas o cliente também comprova sua identidade criptográfica antes de receber autorização de conexão.
  3. Chaves Mestras com Rotação Automatizada: Nenhuma chave mestra é perpétua. Configuramos políticas automáticas de rotação periódica de chaves em Hardware Security Modules (HSM) dedicados e proibimos estritamente o armazenamento de chaves criptográficas em arquivos de configuração ou variáveis de ambiente de containers.
Explorar este tema no Grafo de Conhecimento