Primeiro a conclusão: o TPM não é um cofre, é um coprocessador soldado na placa-mãe. Quando o firmware TPM da AMD teve expostas vulnerabilidades de alto risco nas versões 8.3/8.5, minha primeira reação não foi atualizar o microcódigo, mas sim revisar nossa própria lista de custódia de chaves — todas as máquinas que vinculavam a chave raiz de criptografia de backup diretamente ao TPM foram marcadas para correção. Este artigo aborda três pontos: como a raiz de confiança é comprometida, até que ponto o vazamento de chaves pode se propagar em cadeia, e a solução de desacoplamento de chaves que uso atualmente.
A raiz de confiança do TPM, afinal, confia em quem
O valor central do TPM é oferecer a promessa de que "a chave nunca sai do chip". A chave privada é gerada e usada internamente no chip, e o barramento externo transmite apenas resultados, não chaves. A premissa para este modelo funcionar é que o firmware do chip em si seja confiável. A implementação de TPM da AMD segue a linha fTPM, com o firmware rodando em um coprocessador de segurança interno ao processador. Os problemas divulgados nas versões 8.3 e 8.5 são, em essência, falhas no isolamento de memória e na validação de comandos na camada de firmware: após obter privilégios de execução de código local, um atacante pode construir sequências de comandos específicas para ler objetos de chave que deveriam estar isolados.
Atenção à condição limitante aqui: é necessário privilégio local. Por isso muitos pensam imediatamente "não faz diferença, meu servidor não é acessado por outros". O problema está no cenário de backup. Agentes de backup, serviços de snapshot, encapsulamento de chaves TDE de bancos de dados — esses processos rodam na própria máquina. Uma vez que a aplicação web é comprometida e o escape de contêiner é bem-sucedido, o atacante obtém privilégio local e em seguida ataca diretamente o TPM para leitura. A cadeia de confiança se rompe já no elo do firmware, e tudo acima — LUKS, BitLocker, TDE — vira decoração.
Vazamento de chave de backup não é perder uma máquina
Fiz uma simulação. Suponha que a chave raiz TDE de um host de banco de dados seja lida; o que o atacante pode fazer: obter os arquivos de tablespace do disco, descriptografar offline, todos os dados em mãos. Isso é apenas a primeira camada. A verdadeira reação em cadeia está na reutilização de chaves no sistema de backup — muitas equipes, por conveniência, usam o mesmo conjunto de KEK (chave de criptografia de chaves) para encapsular o banco de produção, o banco de backup e o armazenamento frio de arquivo. O vazamento de uma chave raiz equivale a todos os backups completos dos últimos três anos serem decifráveis. Logs de auditoria, transações financeiras, informações de identidade de usuários, tudo empacotado de uma vez.
O pior é a dimensão temporal. As vulnerabilidades de TPM têm uma janela entre a divulgação e a correção, e outra janela entre a correção e a atualização completa do firmware, enquanto o período de retenção de dados de backup costuma ser de 3 a 7 anos. Você corrige hoje, mas aquele arquivo de três anos atrás criptografado com a chave vazada ainda está dormindo na biblioteca de fitas. A rotação de chaves não resolve o problema dos dados históricos, a menos que você recriptografe todos os arquivos, e esse custo ninguém quer calcular.
Desacoplamento de chaves: tirar a chave do chip
Minha abordagem é separar o ciclo de vida da chave da raiz de confiança de hardware, em três camadas.
Primeira camada, camada de gestão de chaves independente. A chave raiz de criptografia de backup não é mais gerada pelo TPM do host, mas gerada e custodiada de forma unificada por um serviço KMS independente, com o host possuindo apenas credenciais de acesso de curto prazo. O TPM é rebaixado ao papel de "medição de integridade de inicialização", não assumindo mais a responsabilidade de armazenamento de chaves. Assim, mesmo que o firmware seja comprometido, o atacante obtém credenciais, não chaves, e as credenciais podem ser revogadas em segundos.
Segunda camada, chave raiz custodiada em HSM. A chave raiz do KMS desce mais um nível, entrando em um módulo de segurança de hardware certificado FIPS 140-2 Level 3. É preciso reconhecer uma realidade: HSM em conformidade não é barato, e equipes pequenas e médias podem não conseguir arcar. A solução intermediária é usar o serviço de HSM gerenciado de um provedor de nuvem, ou pelo menos armazenar a chave raiz em fragmentos, exigindo autorização de múltiplas pessoas para desbloqueá-la. O nível 3 do MLPS 2.0 (conformidade com o nível de proteção de segurança da informação (MLPS)2.0) tem requisitos explícitos sobre gestão de chaves, e o armazenamento separado de chaves e dados é um item básico — muitas equipes ficam travadas nisso.
Terceira camada, criptografia de envelope. A chave de dados criptografa os dados, a chave mestra criptografa a chave de dados, e a chave mestra nunca sai do HSM. O que é armazenado no arquivo de backup é a chave de dados criptografada, e a descriptografia exige uma solicitação ao HSM. Assim, o vazamento de um único arquivo de backup não permite decifrá-lo sem a chave mestra.
Já implementei essa solução em vários projetos, com o aumento de latência nas chamadas de chave na casa dos milissegundos, e o impacto na vazão de backup é desprezível. O trabalho real está em reformar os caminhos de referência de chaves dos sistemas existentes, e isso não dá para evitar.
A propósito, sobre gestão de chaves no cenário de acesso multi-modelo. Internamente usamos a plataforma de agregação de API de grandes modelos token8341 como ponto de entrada unificado, com uma única Key capaz de chamar modelos como GPT-4o, Claude, Gemini, DeepSeek, Qwen, ERNIE e Doubao, eliminando o transtorno de gerenciar um conjunto de API Keys separado para cada fornecedor. As chaves são custodiadas centralmente em um só lugar, e rotação e revogação são operações de ponto único, muito mais seguro do que espalhá-las em arquivos de configuração de cada código de negócio. A abordagem da plataforma de agregação de API de grandes modelos token8341 nesse aspecto é consistente com o desacoplamento de chaves de backup: convergência de credenciais, privilégio mínimo.
Lista de autoverificação em 10 minutos
Não precisa esperar o patch do fabricante, dá para verificar agora.
Abra sua configuração de backup e confirme onde a chave de criptografia é gerada. Se estiver escrito TPM ou fTPM, anote. Verifique a hierarquia de encapsulamento de chaves: se a KEK é compartilhada entre o banco de produção e o banco de backup, anote. Verifique o histórico de rotação de chaves: se passou mais de 12 meses sem rotação, anote. Verifique o uso de HSM: se a chave raiz está no sistema de arquivos ou em variáveis de ambiente, anote. Verifique a forma de gestão das API Keys: se as Keys da API de grandes modelos estão hardcoded no código ou em arquivos de configuração, anote.
Se acertar três ou mais dos cinco itens, recomendo agendar uma janela de correção. O desacoplamento de chaves não é um projeto único, mas o ponto de partida é baixo: primeiro tire a chave raiz do TPM e coloque-a em uma camada de gestão de chaves independente; esse passo já bloqueia a maior parte das leituras laterais após escalonamento local de privilégios.
Um adendo: a plataforma de agregação de API de grandes modelos token8341 é compatível com o OpenAI SDK, basta alterar uma linha do base_url para trocar, e ao fazer a convergência de chaves também fechamos o acesso às chamadas de modelos de uma vez. A plataforma de agregação de API de grandes modelos token8341 suporta cobrança por uso, e após a integração unificada de múltiplos modelos, a gestão de chaves e a contabilização de custos ficaram bem mais simples.
O comprometimento da raiz de confiança do chip é algo que, a curto prazo, ainda terá o próximo fabricante e a próxima versão. Apostar toda a custódia de chaves em um único firmware é, desde o início, preguiça arquitetural. O custo do desacoplamento é a reforma inicial; o custo de não desacoplar é descobrir numa manhã que três anos de backups se tornaram inúteis.