Capa do Ebook gratuito Criptografia Aplicada para Profissionais: o que usar, quando e por quê

Criptografia Aplicada para Profissionais: o que usar, quando e por quê

Novo curso

22 páginas

KMS e HSM: quando usar, como integrar e requisitos de conformidade

Capítulo 14

Tempo estimado de leitura: 17 minutos

+ Exercício

KMS (Key Management Service) e HSM (Hardware Security Module) são componentes centrais quando a pergunta deixa de ser “qual algoritmo usar” e passa a ser “como proteger e operar chaves em escala, com auditoria e conformidade”. Em ambientes profissionais, eles aparecem como resposta para problemas recorrentes: reduzir exposição de chaves em aplicações, padronizar controles, automatizar rotação e políticas, e atender requisitos regulatórios que exigem evidências de controle criptográfico.

O que é um KMS (e o que ele não é)

Um KMS é um serviço (geralmente centralizado) que gerencia chaves criptográficas e operações associadas: criação, armazenamento lógico, controle de acesso, rotação, versionamento, desativação, auditoria e, em muitos casos, execução de operações criptográficas (por exemplo, criptografar/decriptografar dados ou “embrulhar” chaves). O objetivo é tirar a responsabilidade de “guardar segredo” do código da aplicação e colocá-la em um componente com políticas, logs e controles consistentes.

Na prática, um KMS costuma oferecer:

  • Chaves mestras (CMK/KEK) com políticas de uso (quem pode usar, para qual finalidade, em quais ambientes).
  • APIs para criptografar/decriptografar pequenos blobs (por exemplo, chaves de dados) e para gerar material de chave.
  • Envelope encryption como padrão operacional: o KMS protege a chave que protege os dados.
  • Auditoria de chamadas (quem, quando, qual chave, qual operação).
  • Integração com IAM (controle de acesso baseado em identidade, papéis, atributos e contexto).
  • Rotação e versionamento com mínimo impacto para consumidores.

O que um KMS não é: ele não substitui controles de aplicação (autorização de negócio, segregação de funções, validação de entrada), não resolve sozinho vazamentos de dados já descriptografados em memória, e não elimina a necessidade de classificar dados e definir políticas de retenção. Ele também não é, por definição, um hardware resistente a adulteração; alguns KMS são “software-backed” e outros são “HSM-backed”.

O que é um HSM (e por que ele muda o modelo de risco)

Um HSM é um dispositivo (ou appliance, ou serviço dedicado) projetado para gerar, armazenar e usar chaves criptográficas dentro de um limite físico e lógico mais rígido, com resistência a adulteração e mecanismos para evitar extração de chaves. Em termos operacionais, o HSM é usado quando você precisa reduzir drasticamente a probabilidade de exfiltração de chaves, inclusive diante de comprometimento do sistema operacional, de administradores, ou de processos internos.

Continue em nosso aplicativo

Você poderá ouvir o audiobook com a tela desligada, ganhar gratuitamente o certificado deste curso e ainda ter acesso a outros 5.000 cursos online gratuitos.

ou continue lendo abaixo...
Download App

Baixar o aplicativo

Características típicas de um HSM:

  • Chaves não exportáveis (ou exportáveis apenas sob condições estritas, como “key wrapping” com outra chave protegida).
  • Operações criptográficas dentro do módulo (assinatura, decriptação, derivação, wrapping), com a chave permanecendo interna.
  • Controles de acesso fortes, frequentemente com múltiplos papéis (ex.: Security Officer, Crypto Officer, Auditor) e autenticação multifator.
  • Auditoria e trilhas com foco em não repúdio operacional.
  • Certificações (ex.: FIPS 140-2/140-3) que servem como evidência de conformidade.

Um ponto prático: HSM não é sinônimo de “mais rápido”. Ele pode ser mais lento para operações em massa (especialmente assimétricas), e por isso é comum usar HSM para operações de alto valor (assinatura de certificados, chaves mestras, chaves de tokenização) e usar chaves derivadas/embrulhadas para o volume.

KMS vs HSM: quando usar cada um

Use KMS quando

  • Você precisa padronizar gestão de chaves para múltiplas aplicações e times, com políticas e auditoria centralizadas.
  • O principal risco é operacional (chaves espalhadas em variáveis de ambiente, arquivos, repositórios, pipelines) e você quer reduzir erro humano.
  • Você quer automação de rotação, versionamento e controle de acesso via IAM.
  • Você usa envelope encryption para dados em repouso (bancos, objetos, backups) e precisa de uma raiz de confiança gerenciada.

Use HSM quando

  • Há exigência regulatória/contratual explícita de HSM ou de chaves “non-exportable” (com evidência).
  • Você opera uma PKI (CA raiz/intermediária) e precisa proteger chaves de assinatura com alto impacto.
  • Você faz assinatura de alto valor (documentos, transações, firmware, código) e precisa reduzir risco de uso indevido de chaves.
  • Você precisa de segregação forte entre administradores de infraestrutura e operadores de chaves, com cerimônias e múltiplos controles.

Use KMS + HSM quando

  • Você quer a experiência de KMS (APIs, IAM, rotação, integração) com raízes de confiança em hardware.
  • Você precisa escalar consumo de chaves (muitas aplicações) mantendo chaves mestras em HSM.
  • Você precisa de evidências de conformidade e também de integração simples com serviços e pipelines.

Em muitos ambientes, o desenho mais comum é: HSM protege chaves mestras (ou chaves de assinatura), e o KMS fornece a camada de orquestração, políticas e integração para o restante do ecossistema.

Padrões de integração: como aplicações usam KMS/HSM

1) Envelope encryption (padrão mais comum)

Em vez de criptografar grandes volumes diretamente no KMS/HSM (o que pode ser caro e lento), a aplicação gera uma DEK (Data Encryption Key) para criptografar os dados localmente e usa o KMS/HSM para proteger essa DEK, gerando um wrapped key (DEK criptografada por uma KEK/CMK).

Fluxo típico:

  • Aplicação pede ao KMS: “gere uma DEK e me devolva a DEK em claro + a DEK embrulhada”.
  • Aplicação criptografa o dado com a DEK em claro.
  • Aplicação descarta a DEK em claro da memória o quanto antes.
  • Aplicação armazena: ciphertext do dado + DEK embrulhada + metadados (ID da chave mestra, versão, contexto).
  • Para ler, a aplicação envia a DEK embrulhada ao KMS para desembrulhar e obtém a DEK em claro para decriptar.

Por que isso é importante: o KMS/HSM vê apenas pequenas chaves e metadados, não o dado inteiro; você ganha escala e mantém a raiz de confiança centralizada.

2) “Encrypt/Decrypt API” para pequenos segredos

Alguns segredos são pequenos (por exemplo, tokens, credenciais de integração, chaves de API de terceiros). Nesses casos, pode ser aceitável usar diretamente a API de criptografia do KMS para armazenar o segredo criptografado em um banco/configuração. O cuidado aqui é evitar transformar o KMS em gargalo e garantir que o segredo não circule em logs.

3) Assinatura e verificação (especialmente com HSM)

Para assinatura digital, o padrão é manter a chave privada não exportável no HSM e expor apenas uma operação “sign”. A aplicação envia o hash (ou a mensagem, dependendo do desenho) e recebe a assinatura. Isso reduz o risco de extração da chave privada e facilita auditoria de cada assinatura.

4) Tokenização e chaves de alto valor

Em cenários de tokenização (por exemplo, substituir um identificador sensível por um token), as chaves que protegem o mapeamento ou o algoritmo de tokenização são frequentemente tratadas como “crown jewels”. É comum exigir HSM para essas chaves e controles operacionais mais rígidos (dupla custódia, segregação de funções, trilhas de auditoria).

Passo a passo prático: integrar uma aplicação com KMS usando envelope encryption

A seguir está um roteiro genérico, aplicável a diferentes provedores e também a KMS on-premises. O foco é a sequência de decisões e controles, não comandos específicos.

Passo 1: classifique o dado e defina o objetivo operacional

  • Qual dado será protegido (PII, segredo comercial, credencial)?
  • Qual o impacto se for exposto?
  • Qual o volume e a latência esperada?
  • Qual a necessidade de auditoria (por registro, por usuário, por serviço)?

Essa etapa direciona se você precisa apenas de KMS, de HSM, ou de ambos, e define se o padrão será envelope encryption, assinatura, ou ambos.

Passo 2: crie a chave mestra (CMK/KEK) com propósito e escopo

  • Defina um escopo: por aplicação, por domínio de dados, por ambiente (dev/stage/prod), por região.
  • Defina política de uso: quais identidades podem “Encrypt”, “Decrypt”, “GenerateDataKey”, “Sign”.
  • Defina política de rotação: automática (quando suportada) ou manual com procedimento.

Boas práticas: separar chaves por ambiente e por criticidade; evitar uma única chave global para tudo; limitar “Decrypt” ao mínimo necessário.

Passo 3: integre IAM e segregação de funções

  • Crie papéis distintos: administrador de chaves (criar/rotacionar), consumidor (encrypt/decrypt), auditor (read-only de logs).
  • Exija autenticação forte para operações administrativas.
  • Implemente “break-glass” (acesso emergencial) com trilha e aprovação.

Um erro comum é permitir que o mesmo papel que faz deploy também altere políticas de chave. Isso reduz a efetividade do controle.

Passo 4: implemente o fluxo de escrita (criptografar e armazenar)

Fluxo recomendado:

  • Ao persistir um registro sensível, chame “GenerateDataKey” (ou equivalente) para obter DEK em claro + DEK embrulhada.
  • Criptografe o payload localmente com a DEK (em memória), gerando ciphertext e metadados.
  • Armazene junto: ciphertext, DEK embrulhada, ID da CMK, versão/alias, e um contexto (AAD) que vincule o ciphertext ao seu uso (ex.: tenant, tipo de dado, ID do serviço).

O “contexto” (AAD) é um controle importante: ele impede que um ciphertext válido seja movido para outro contexto e descriptografado indevidamente, desde que o KMS valide esse contexto na operação de decrypt/unwrap.

Passo 5: implemente o fluxo de leitura (descriptografar com controle)

  • Recupere ciphertext + DEK embrulhada + metadados.
  • Envie a DEK embrulhada ao KMS para desembrulhar, fornecendo o mesmo contexto (AAD).
  • Decripte localmente e descarte a DEK imediatamente após uso.

Cuidados: não logar ciphertext com metadados sensíveis; não manter DEKs em cache sem política clara; tratar erros de decrypt como eventos de segurança (pode indicar adulteração ou uso indevido).

Passo 6: observabilidade e auditoria

  • Habilite logs de auditoria do KMS/HSM e envie para um repositório imutável (ou com retenção controlada).
  • Crie alertas para padrões anômalos: picos de decrypt, decrypt fora de horário, uso por identidades incomuns, falhas repetidas.
  • Correlacione chamadas de KMS com logs da aplicação (IDs de requisição) sem expor segredos.

Passo 7: rotação e migração sem downtime

Rotação em envelope encryption normalmente significa: novas gravações usam a nova versão da CMK/KEK; dados antigos permanecem com DEKs embrulhadas pela versão antiga, e o KMS mantém capacidade de desembrulhar versões anteriores até a migração.

  • Defina política: rotação por tempo, por incidente, por mudança de equipe/fornecedor.
  • Implemente leitura compatível com múltiplas versões (o registro carrega o identificador da chave usada).
  • Planeje rewrap/migração: processo em batch que reembrulha DEKs com a nova CMK sem recriptografar o dado (quando suportado).

Passo a passo prático: integrar assinatura com HSM (chave não exportável)

Passo 1: defina o que será assinado e o formato

  • Assinatura de documentos: defina canonicalização e campos cobertos.
  • Assinatura de transações: defina o “payload” exato (ordem de campos, encoding) para evitar ambiguidades.
  • Assinatura de artefatos (código/firmware): defina pipeline de build e o ponto de assinatura.

Passo 2: provisione a chave no HSM com política de uso

  • Gere a chave dentro do HSM (evite importar chave privada, salvo processo controlado).
  • Marque como não exportável.
  • Restrinja operações: apenas “sign”, proíba “decrypt” se não for necessário.
  • Defina papéis e aprovações para ativar/alterar políticas.

Passo 3: exponha a operação de assinatura via serviço interno

Em vez de cada aplicação falar diretamente com o HSM, é comum criar um “Signing Service”:

  • API interna autenticada e autorizada (mTLS, tokens de serviço, políticas por cliente).
  • Validação do payload (tamanho, tipo, limites) para evitar abuso.
  • Rate limiting e quotas por consumidor.
  • Logs de auditoria com ID de requisição e motivo/escopo da assinatura.

Passo 4: monitore e proteja contra uso indevido

  • Alertas para volume anormal de assinaturas.
  • Bloqueio por política em caso de comprometimento de credenciais do serviço.
  • Procedimento de revogação/rollover de chave e atualização de verificadores.

Requisitos de conformidade e evidências: o que normalmente é cobrado

Conformidade varia por setor e jurisdição, mas os padrões de auditoria tendem a convergir em alguns pontos: controle de acesso, rastreabilidade, proteção de chaves, segregação de funções, gestão de mudanças e resposta a incidentes. Abaixo estão requisitos comuns e como KMS/HSM ajudam a atendê-los.

1) Controle de acesso e menor privilégio

  • Requisito típico: apenas identidades autorizadas podem usar chaves, com privilégios mínimos.
  • Evidência: políticas do KMS/HSM, papéis IAM, revisões periódicas de acesso, registros de aprovação.
  • Ponto de atenção: permissões de “Decrypt/Unwrap” são mais sensíveis do que “Encrypt/Wrap”. Muitas arquiteturas permitem que mais serviços criptografem do que descriptografem.

2) Segregação de funções (SoD)

  • Requisito típico: quem administra infraestrutura não deve ter capacidade irrestrita de usar chaves para acessar dados.
  • Evidência: papéis separados (admin de chave vs consumidor), controles de mudança, dual control para ações críticas (especialmente em HSM).
  • Ponto de atenção: acesso ao pipeline de deploy e ao KMS pode permitir “trocar” o código para exfiltrar dados. Mitigue com revisões, assinaturas de artefatos e controles de mudança.

3) Proteção de chaves e material criptográfico

  • Requisito típico: chaves mestras protegidas contra extração; armazenamento seguro; backup e recuperação controlados.
  • Evidência: configuração de chaves não exportáveis (HSM), documentação de backup de chaves (quando aplicável), políticas de rotação e destruição.
  • Ponto de atenção: “exportar chave para backup” pode violar o objetivo de não exportabilidade. Em HSM, use mecanismos próprios (wrapping sob chave de backup dentro do domínio do HSM) e procedimentos formais.

4) Auditoria, trilhas e retenção

  • Requisito típico: registrar operações sensíveis e manter logs íntegros por um período.
  • Evidência: logs de KMS/HSM, integração com SIEM, retenção configurada, controles de acesso aos logs.
  • Ponto de atenção: logar demais pode vazar metadados sensíveis; logar de menos impede investigação. Registre IDs, chaves/aliases, identidade chamadora, resultado e contexto, evitando dados em claro.

5) Gestão de mudanças e configuração segura

  • Requisito típico: mudanças em políticas de chaves e integrações devem ser revisadas e rastreáveis.
  • Evidência: infraestrutura como código para políticas do KMS, revisões de pull request, registros de change management.
  • Ponto de atenção: alterações de política podem abrir “Decrypt” para identidades amplas. Trate políticas de KMS como código crítico.

6) Residência de dados e fronteiras de jurisdição

  • Requisito típico: chaves e operações criptográficas devem permanecer em determinada região/país ou domínio.
  • Evidência: configuração regional do KMS/HSM, arquitetura com chaves por região, documentação de fluxo de dados.
  • Ponto de atenção: replicação multi-região pode implicar replicação de material de chave. Avalie se a conformidade permite e como o provedor implementa isso.

Checklist de decisão: perguntas que evitam escolhas erradas

Criticidade e impacto

  • Se a chave vazar, qual o impacto (financeiro, legal, reputacional)?
  • O dado protegido é recuperável por outros meios (ex.: pode ser reemitido) ou é permanente?

Ameaças realistas

  • Você precisa se proteger contra administradores de sistema/cloud com privilégios elevados?
  • Você precisa de evidência de que a chave não é exportável?

Operação e escala

  • Quantas aplicações e times vão consumir chaves?
  • Qual a taxa de operações de decrypt/sign por segundo?
  • Qual a tolerância a latência e indisponibilidade do serviço de chaves?

Conformidade e auditoria

  • Há exigência explícita de HSM/certificação (ex.: FIPS) ou apenas “controles equivalentes”?
  • Você consegue produzir evidências: políticas, logs, revisões de acesso, procedimentos?

Armadilhas comuns e como evitá-las

1) Usar KMS como “cofre de segredos” sem controle de acesso fino

Armazenar segredos criptografados é útil, mas se muitas identidades têm permissão de decrypt, o KMS vira apenas um “decodificador central”. Mitigue com políticas por aplicação/ambiente, contextos (AAD) e revisão periódica de acessos.

2) Colocar dados grandes para criptografar diretamente no HSM

HSM é excelente para proteger chaves e executar operações críticas, mas não é um motor de criptografia de alto throughput para payloads grandes. Use envelope encryption: HSM/KMS protege a DEK; a aplicação criptografa o volume.

3) Não planejar indisponibilidade do KMS/HSM

Se a aplicação precisa descriptografar em tempo real, a indisponibilidade do KMS pode virar indisponibilidade do sistema. Estratégias: tolerância a falhas com múltiplas instâncias/zonas, filas e retries com backoff, e desenho que minimize decrypt em caminhos críticos (por exemplo, descriptografar apenas quando necessário).

4) Ignorar o “context binding” (AAD) e permitir replay/movimentação de ciphertext

Sem vincular ciphertext ao contexto (tenant, finalidade, tipo de dado), um atacante que obtém um blob criptografado pode tentar reutilizá-lo em outro lugar. Use AAD e valide-o consistentemente em encrypt/decrypt.

5) Políticas de rotação sem estratégia de migração

Rotacionar a chave mestra é só metade do trabalho. Você precisa garantir que registros antigos continuam acessíveis e que existe um plano de rewrap/migração e de desativação segura de versões antigas, com janela de rollback.

Exemplo de desenho de referência (texto) para dados sensíveis em banco

Um desenho comum para uma aplicação multi-tenant:

  • Uma CMK por ambiente e por domínio de dados (ex.: “PII-prod”, “PII-staging”).
  • DEK por registro (ou por lote) gerada via KMS.
  • Ciphertext e DEK embrulhada armazenados na mesma linha/objeto, com metadados: key_id, key_version, tenant_id, data_type.
  • Política de KMS: serviços de escrita podem gerar DEK e criptografar; serviços de leitura podem desembrulhar; jobs de analytics não têm decrypt.
  • Logs de KMS enviados ao SIEM; alertas para picos de decrypt por tenant.

Esse desenho reduz a exposição de chaves, facilita auditoria e permite evoluir para HSM-backed keys se a exigência de conformidade aumentar, sem reescrever toda a aplicação.

Integração com requisitos de auditoria: como preparar evidências

Além de implementar, você precisa conseguir demonstrar. Um pacote de evidências frequentemente inclui:

  • Inventário de chaves: nomes/aliases, finalidade, ambiente, proprietários, política de rotação, status (ativa/desativada).
  • Políticas de acesso: quem pode administrar, quem pode usar, e justificativa.
  • Procedimentos operacionais: criação de chaves, rotação, resposta a incidente, revogação/desativação, recuperação.
  • Logs e relatórios: amostras de trilhas de auditoria, retenção, alertas configurados, evidência de revisão periódica.
  • Arquitetura: diagrama de fluxo (quem chama KMS/HSM, onde ficam ciphertext e wrapped keys, como AAD é definido).

Quando HSM é exigido, inclua também evidências do modo de operação (papéis, dual control, procedimentos de inicialização e backup) e a documentação de certificação aplicável ao módulo.

Agora responda o exercício sobre o conteúdo:

Em um desenho usando envelope encryption com KMS, qual prática melhor reduz o risco de um ciphertext ser reutilizado indevidamente em outro contexto?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

O uso de AAD liga o ciphertext ao seu contexto (por exemplo, tenant e finalidade). Se alguém tentar mover/reaproveitar o blob em outro contexto, a operação de decrypt/unwrap falha quando o contexto exigido não corresponde.

Próximo capitúlo

Assinatura e integridade de software: artefatos, pipelines e verificação

Arrow Right Icon
Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.