Ir para o conteúdo

Trusted Platform Module

Origem: Wikipédia, a enciclopédia livre.
Imagem ilustrativa

Trusted Platform Module (TPM, também conhecido como ISO/IEC 11889111) é um padrão internacional para um processador criptográfico seguro, um microcontrolador dedicado projetado para proteger o hardware por meio de chaves criptográficas integradas. O termo também é usado como um nome genérico de implementações desta especificação, frequentemente denominados de "chip TPM" ou "TPM Security Device" (Dell). A especificação TPM é obra do Trusted Computing Group. A versão corrente da especificação TPM é a 1.2 Revision 116, publicada em 1 de março de 2011.[1]

História

[editar | editar código]

A primeira versão do TPM a ser implementada foi a 1.1b, em 2003.[2]

O Trusted Platform Module (TPM) foi concebido por um consórcio da indústria de computadores chamado Trusted Computing Group (TCG). Ele evoluiu para a TPM Main Specification Version 1.2, que foi padronizada pela Organização Internacional de Padronização (ISO) e pela Comissão Eletrotécnica Internacional (IEC) em 2009 como ISO/IEC 11889:2009.[3] A TPM Main Specification Version 1.2 teve sua revisão final concluída em 3 de março de 2011.[4]

Em 9 de abril de 2014, o Trusted Computing Group anunciou uma grande atualização em sua especificação, intitulada TPM Library Specification 2.0.[5] O grupo continua o trabalho no padrão incorporando erratas, adições algorítmicas e novos comandos, com sua edição mais recente publicada como 2.0 em novembro de 2019. Esta versão tornou-se a ISO/IEC 11889:2015.

Quando uma nova revisão é lançada, ela é dividida em várias partes pelo Trusted Computing Group. Cada parte consiste em um documento que compõe o conjunto da nova especificação TPM:

  • Parte 1: Arquitetura (renomeada de Design Principles)
  • Parte 2: Estruturas do TPM
  • Parte 3: Comandos
  • Parte 4: Rotinas de Suporte (adicionada no TPM 2.0)

Diferenças de versão

[editar | editar código]

Embora o TPM 2.0 atenda a muitos dos mesmos casos de uso e possua recursos semelhantes, os detalhes são diferentes. O TPM 2.0 não é compatível com as versões anteriores do TPM 1.2.[6]

Especificação TPM 1.2 TPM 2.0
Arquitetura Uma especificação completa deve consistir em um perfil de proteção específico da plataforma que faz referência a uma biblioteca comum de três partes do TPM 1.2. Na prática, apenas um perfil de proteção para PC Client foi criado. Pretendia-se definir perfis para PDA e celulares, mas nunca foram publicados. Uma especificação completa consiste em uma especificação específica da plataforma que faz referência a uma biblioteca comum de quatro partes do TPM 2.0. As especificações de plataforma definem quais partes da biblioteca são obrigatórias, opcionais ou proibidas, detalhando outros requisitos. Incluem PC Client, dispositivos móveis e Automotive-Thin.
Algoritmos SHA-1 e RSA são obrigatórios. AES é opcional. O Triple DES chegou a ser opcional, mas foi removido na versão 103. A função de geração de máscara baseada em hash MGF1 definida no PKCS#1 é obrigatória. A especificação PTP (PC Client Platform TPM Profile) exige SHA-1 e SHA-256 para hashes; RSA e ECC (curva NIST P-256) para criptografia de chave pública e assinaturas digitais; HMAC e 128-bit AES. Muitos outros algoritmos são definidos como opcionais.
Primitivas Criptográficas Exige um gerador de números aleatórios, algoritmo de chave pública, função hash criptográfica, função de geração de máscara, geração/verificação de assinatura digital e atestação anônima direta (DAA). Algoritmos de chave simétrica e XOR são opcionais. Exige um gerador de números aleatórios, algoritmos de chave pública, funções hash, algoritmos de chave simétrica, geração/verificação de assinatura digital, funções de geração de máscara e XOR. A DAA baseada em ECC é opcional no perfil PC Client. Exige também funções de derivação de chave.
Hierarquia Uma (armazenamento/storage) Três (plataforma, armazenamento e endosso/endorsement)
Chaves de Raiz Uma (SRK RSA-2048) Múltiplas chaves e algoritmos por hierarquia
Autorização HMAC, PCR, localidade, presença física Senha, HMAC e política (que abrange HMAC, PCR, localidade e presença física).
NVRAM Dados não estruturados Dados não estruturados, contador, mapa de bits, extensão, falha e sucesso de PIN

A autorização por política do TPM 2.0 inclui os métodos do 1.2 e adiciona autorização baseada em assinatura digital assimétrica, segredos indiretos, contadores, limites de tempo e valores de NVRAM. Ela permite a combinação dessas primitivas via operações lógicas AND e OR para construir políticas complexas.[7]

Visão geral

[editar | editar código]
Componentes de um Módulo de Plataforma Confiável em conformidade com o padrão TPM versão 1.2.

O Módulo de Plataforma Confiável (TPM) fornece:

  • Um gerador de números aleatórios de hardware;[8][9]
  • Recursos para a geração segura de chaves criptográficas para usos limitados;
  • Atestação remota: cria um resumo de chave de hash quase infalsificável da configuração de hardware e software. Pode-se usar o hash para verificar se o hardware e o software não foram alterados. O software encarregado de realizar o hash da configuração determina a extensão do resumo;
  • Vinculação (Binding): os dados são criptografados usando a chave de vinculação do TPM, uma chave RSA exclusiva derivada de uma chave de armazenamento. Computadores que incorporam um TPM podem criar chaves criptográficas e criptografá-las de forma que só possam ser descriptografadas pelo TPM. Esse processo, frequentemente chamado de wrapping (envolvimento) ou vinculação de uma chave, ajuda a protegê-la contra divulgação. Cada TPM possui uma chave de envolvimento mestra, chamada chave de raiz de armazenamento (SRK), que é armazenada dentro do próprio TPM. Contêineres de chaves RSA de nível de usuário são armazenados com o perfil de usuário do Windows para um usuário específico e podem ser usados para criptografar e descriptografar informações para aplicativos executados sob essa identidade de usuário específica;[10]
  • Armazenamento selado (Sealed storage): especifica o estado do TPM[11] para que os dados sejam descriptografados (unsealed);[12]
  • Outras funções de Trusted Computing para que os dados sejam descriptografados (unsealed).[13]

Programas de computador podem usar um TPM para a autenticação de dispositivos de hardware, uma vez que cada chip TPM possui uma Chave de Endosso (EK) exclusiva e secreta gravada durante sua produção. A segurança incorporada ao hardware oferece mais proteção do que uma solução apenas de software.[14] Seu uso é restrito em alguns países.[15]

Integridade da plataforma

[editar | editar código]
Captura de tela do tpm2-software mostrando a leitura dos Registradores de Configuração de Plataforma (PCRs), o resultado getrandom obtido do dispositivo TPM e a versão do TPM (2.0).

O escopo principal do TPM é garantir a integridade de uma plataforma durante o tempo de inicialização (boot). Nesse contexto, "integridade" significa "comportar-se conforme o esperado", e uma "plataforma" é qualquer dispositivo computacional, independentemente do seu sistema operacional. Isso serve para garantir que o processo de inicialização comece a partir de uma combinação confiável de hardware e software, continuando até que o sistema operacional tenha inicializado completamente e os aplicativos estejam em execução.

Quando o TPM é utilizado, o firmware e o sistema operacional são responsáveis por garantir a integridade.

Por exemplo, a Unified Extensible Firmware Interface (UEFI) pode usar o TPM para formar uma raiz de confiança (root of trust): o TPM contém vários Registradores de Configuração de Plataforma (PCRs) que permitem o armazenamento e o relato seguro de métricas relevantes para a segurança. Essas métricas podem ser usadas para detectar alterações em configurações anteriores e decidir como proceder. Exemplos de tal uso podem ser encontrados no Linux Unified Key Setup (LUKS),[16] no BitLocker e na criptografia de memória vCage da PrivateCore. (Veja abaixo.)

Outro exemplo de integridade de plataforma via TPM é o uso no licenciamento do Microsoft Office 365 e no Outlook Exchange.[17]

Mais um exemplo do uso de TPM para integridade de plataforma é a Trusted Execution Technology (TXT), que cria uma cadeia de confiança. Ela pode atestar remotamente que um computador está usando o hardware e software especificados.[18]

Criptografia de disco

[editar | editar código]

Utilitários de criptografia de disco total, como o dm-crypt, podem usar esta tecnologia para proteger as chaves usadas para criptografar os dispositivos de armazenamento do computador e fornecer autenticação de integridade para um caminho de inicialização confiável que inclui o firmware e o setor de inicialização.[19]

Implementações

[editar | editar código]
Módulo de Plataforma Confiável (TPM) instalado em uma placa-mãe.

Laptops e notebooks

[editar | editar código]

Em 2006, novos laptops começaram a ser comercializados com um chip TPM integrado. No futuro, esse conceito poderá ser localizado em um chip já existente na placa-mãe em computadores ou em qualquer outro dispositivo onde os recursos do TPM possam ser empregados, como em um telefone celular. Em um PC, o barramento Low Pin Count (LPC) ou o barramento Serial Peripheral Interface (SPI) é usado para conectar ao chip TPM.

Microcontroladores Trusted Platform Module são atualmente produzidos por:

O Trusted Computing Group (TCG) certificou chips TPM fabricados pela Infineon Technologies, Nuvoton e STMicroelectronics,[20] tendo atribuído IDs de fornecedor de TPM à Advanced Micro Devices (AMD), Atmel, Broadcom, IBM, Infineon, Intel, Lenovo, National Semiconductor, Nationz Technologies, Nuvoton, Qualcomm, Rockchip, Standard Microsystems Corporation, STMicroelectronics, Samsung, Sinosun, Texas Instruments e Winbond.[21]

Existem cinco tipos diferentes de implementações do TPM 2.0 (listados do mais seguro para o menos seguro):[22][23]

  • **TPMs discretos (dTPMs):** são chips dedicados que implementam a funcionalidade TPM em seu próprio encapsulamento de semicondutor resistente a violações. São os mais seguros, certificados conforme FIPS-140 com segurança física de nível 3 contra ataques, e seus encapsulamentos devem implementar resistência física a adulteração. Por exemplo, o TPM para o controlador de freio em um carro é protegido contra hacking por métodos sofisticados.[24]
  • **TPMs integrados (iTPMs):** fazem parte de outro chip. Embora utilizem hardware que resiste a bugs de software, não são obrigados a implementar resistência física a violações. A Intel integrou TPMs em alguns de seus chipsets.
  • **TPMs de firmware (fTPMs):** são soluções baseadas em firmware (ex: UEFI) que rodam em um ambiente de execução confiável (TEE) da CPU. Intel, AMD e Qualcomm implementaram TPMs de firmware.
  • **TPMs virtuais (vTPMs):** são fornecidos e dependem de hipervisores em ambientes de execução isolados, ocultos do software que roda dentro de máquinas virtuais. Podem oferecer um nível de segurança comparável a um TPM de firmware. O Google Cloud Platform implementou vTPM.[25]
  • **TPMs de software:** são emuladores de software que rodam sem mais proteção do que um programa comum recebe em um sistema operacional. Dependem inteiramente do ambiente em que são executados, sendo úteis apenas para fins de desenvolvimento.

Código aberto

[editar | editar código]
TPM 2.0 Reference Implementation
DesenvolvedorMicrosoft
Repositóriogithub.com/Microsoft/ms-tpm-20-ref
Escrito emC, C++
TipoImplementação de TPM
LicençaLicença BSD
Websitetrustedcomputinggroup.org/tpm-library-specification

A implementação oficial de referência do TCG para a especificação TPM 2.0 foi desenvolvida pela Microsoft. Está licenciada sob a Licença BSD e o código-fonte está disponível no GitHub.[26]

Em 2018, a Intel abriu o código de sua pilha de software Trusted Platform Module 2.0 (TPM2) com suporte para Linux e Microsoft Windows.[27] O código-fonte está hospedado no GitHub sob a Licença BSD.[28]

A Infineon financiou o desenvolvimento de um middleware TPM de código aberto que cumpre a especificação Software Stack (TSS) Enhanced System API (ESAPI) do TCG.[29] Foi desenvolvido pelo Fraunhofer Institute for Secure Information Technology (SIT).

O Software TPM 2.0 da IBM é uma implementação da especificação TCG TPM 2.0, baseada em código doado pela Microsoft. O código-fonte está no SourceForge e GitHub sob Licença BSD.

Em 2022, a AMD anunciou que, em certas circunstâncias, sua implementação fTPM causava problemas de desempenho (travamentos intermitentes). Uma correção foi disponibilizada por meio de atualização de BIOS.[30]

Problemas de segurança

[editar | editar código]

Em 2010, Christopher Tarnovsky apresentou um ataque contra TPMs na conferência Black Hat Briefings, onde afirmou ser capaz de extrair segredos de um único TPM. Ele conseguiu realizar o feito após seis meses de trabalho, inserindo uma sonda e espionando um barramento interno do chip Infineon SLE 66 CL PC.[31]

No caso de acesso físico, computadores com TPM 1.2 são vulneráveis a ataque de inicialização a frio (cold boot attacks), desde que o sistema esteja ligado ou possa ser iniciado sem uma frase secreta a partir do desligamento, suspensão ou hibernação, que é a configuração padrão para computadores Windows com criptografia de disco total BitLocker.[32] Uma correção foi proposta e adotada nas especificações do TPM 2.0.

Em 2009, descobriu-se que o conceito de dados de autorização compartilhados no TPM 1.2 era falho. Um adversário com acesso aos dados poderia falsificar respostas do TPM.[33] Uma correção foi proposta e adotada no TPM 2.0.

Em 2015, como parte das revelações de Snowden, foi divulgado que, em 2010, uma equipe da CIA dos EUA afirmou em uma conferência interna ter realizado um ataque de análise de potência diferencial contra TPMs, sendo capaz de extrair segredos.[34]

As principais distribuições de Inicialização Confiável (tboot) anteriores a novembro de 2017 são afetadas por um ataque de raiz dinâmica de confiança para medição (DRTM) CVE-2017-16837, que atinge computadores executando a Intel Trusted Execution Technology (TXT) na rotina de inicialização.[35]

Em outubro de 2017, foi relatado que uma biblioteca de código desenvolvida pela Infineon Technologies, amplamente utilizada em seus TPMs, continha uma vulnerabilidade conhecida como ROCA. Esta falha gerava pares de chaves RSA fracos que permitiam a dedução de chaves privadas a partir de chaves públicas. Como resultado, sistemas que dependem da privacidade dessas chaves estão vulneráveis a comprometimentos, como roubo de identidade.[36] Sistemas que armazenam chaves diretamente no TPM sem ofuscação (blinding) correm riscos maiores. A Infineon lançou atualizações de firmware para os fabricantes.

Em 2018, foi relatada uma falha de design na especificação do TPM 2.0 para a raiz estática de confiança para medição (SRTM) (CVE-2018-6622). Ela permite que um adversário redefine e falsifique os registradores de configuração da plataforma (PCRs).[37] A correção exige patches de firmware específicos para o hardware.[37] O invasor abusa de interrupções de energia para enganar o TPM, fazendo-o acreditar que está operando em componentes não violados.[35]

Em 2021, o Dolos Group demonstrou um ataque a um TPM discreto onde, embora o chip tivesse resistência a violações, os outros pontos terminais do seu barramento de comunicação não tinham. Eles leram uma chave de criptografia de disco total enquanto ela era transmitida pela placa-mãe e a usaram para descriptografar o SSD de um laptop.[38]

Referências

  1. «Trusted Platform Module (TPM) Specifications». Trusted Computing Group
  2. Citação:
  3. «ISO/IEC 11889-1:2009 – Information technology – Trusted Platform Module – Part 1: Overview». ISO.org. International Organization for Standardization. Maio de 2009. Consultado em 30 de novembro de 2013. Cópia arquivada em 28 de janeiro de 2017
  4. «TPM 1.2 Main Specification». Trusted Computing Group (em inglês). Consultado em 8 de novembro de 2021. Cópia arquivada em 11 de junho de 2024
  5. «Trusted Computing Group Releases TPM 2.0 Specification for Improved Platform and Device Security» (em inglês). Trusted Computing Group. 1 de abril de 2014. Consultado em 8 de novembro de 2021. Cópia arquivada em 6 de março de 2025
  6. Citação:
  7. Citação:
  8. Alin Suciu; Tudor Carean (2010). «Benchmarking the True Random Number Generator of TPM Chips». arXiv:1008.2223Acessível livremente [cs.CR]
  9. Citação:
  10. «Understanding Machine-Level and User-Level RSA Key Containers». 22 de outubro de 2014. Consultado em 2 de junho de 2022. Cópia arquivada em 2 de junho de 2022
  11. Citação:
  12. Citação:
  13. Citação:
  14. «TPM – Trusted Platform Module». IBM. Cópia arquivada em 3 de agosto de 2016
  15. «Windows 11 TPM 2.0 requirement has a special exception». SlashGear (em inglês). 28 de junho de 2021. Consultado em 29 de junho de 2021. Cópia arquivada em 28 de junho de 2021
  16. «LUKS support for storing keys in TPM NVRAM». github.com. 2013. Consultado em 19 de dezembro de 2013. Cópia arquivada em 16 de setembro de 2013
  17. «Microsoft Office Outlook Exchange Error 80090016 After a System Board Replacement». Consultado em 23 de dezembro de 2020. Cópia arquivada em 28 de junho de 2021
  18. Greene, James (2012). «Intel Trusted Execution Technology» (PDF) (white paper). Intel. Consultado em 18 de dezembro de 2013. Cópia arquivada (PDF) em 11 de junho de 2014
  19. «TPM Encryption». Consultado em 29 de março de 2021. Cópia arquivada em 28 de junho de 2021
  20. «TPM Certified Products List». Trusted Computing Group. Consultado em 1 de outubro de 2016. Cópia arquivada em 14 de outubro de 2016
  21. «TCG Vendor ID Registry» (PDF). 23 de setembro de 2015. Consultado em 27 de outubro de 2016. Cópia arquivada (PDF) em 28 de outubro de 2016
  22. Lich, Brian; Browers, Nick; Hall, Justin; McIlhargey, Bill; Farag, Hany (27 de outubro de 2017). «TPM Recommendations». Microsoft Docs. Microsoft. Consultado em 10 de janeiro de 2018. Cópia arquivada em 11 de janeiro de 2018
  23. «Trusted Platform Module 2.0: A Brief Introduction» (PDF). Trusted Computing Group. 13 de outubro de 2016. Consultado em 31 de março de 2018. Cópia arquivada (PDF) em 3 de fevereiro de 2019
  24. «Trusted Platform Module (TPM) - 2.0: A BRIEF INTRODUCTION» (PDF). Consultado em 20 de agosto de 2023. Cópia arquivada (PDF) em 6 de março de 2025
  25. «GCE Shielded VM - Virtual Trusted Platform Module (vTPM)». Consultado em 1 de dezembro de 2021. Cópia arquivada em 1 de dezembro de 2021
  26. «GitHub - microsoft/ms-tpm-20-ref: Reference implementation of the TCG Trusted Platform Module 2.0 specification.». GitHub. Consultado em 5 de abril de 2020. Cópia arquivada em 27 de outubro de 2020
  27. «Intel Open-Sources New TPM2 Software Stack - Phoronix». Consultado em 5 de abril de 2020. Cópia arquivada em 10 de agosto de 2020
  28. «Linux TPM2 & TSS2 Software». GitHub. Consultado em 5 de abril de 2020. Cópia arquivada em 9 de julho de 2020
  29. «Open source TPM 2.0 software stack eases security adoption». 17 de agosto de 2018. Consultado em 5 de abril de 2020. Cópia arquivada em 18 de junho de 2019
  30. «Intermittent System Stutter Experienced with fTPM Enabled on Windows 10 and 11». AMD. 8 de março de 2022. Consultado em 2 de julho de 2022. Cópia arquivada em 25 de março de 2024
  31. Messmer, Ellen (30 de janeiro de 2012). «Black Hat: Researcher claims hack of processor used to secure Xbox 360, other products». Network World. Consultado em 10 de agosto de 2017. Cópia arquivada em 30 de janeiro de 2012
  32. Melissa Michael (8 de outubro de 2018). «Episode 14 Reinventing the Cold Boot Attack: Modern Laptop Version» (Podcast). F-Secure Blog. Consultado em 28 de setembro de 2019. Cópia arquivada em 28 de setembro de 2019
  33. Chen, Liqun; Ryan, Mark (2010). «Attack, Solution and Verification for Shared Authorisation Data in TCG TPM». Formal Aspects in Security and Trust. Col: Lecture Notes in Computer Science. 5983. [S.l.: s.n.] pp. 201–216. ISBN 978-3-642-12458-7. doi:10.1007/978-3-642-12459-4_15
  34. Scahill, Jeremy; Begley, Josh (10 de março de 2015). «The CIA Campaign to Steal Apple's Secrets». The Intercept. Consultado em 10 de agosto de 2017. Cópia arquivada em 9 de agosto de 2017
  35. 1 2 Cimpanu, Catalin (29 de agosto de 2018). «Researchers Detail Two New Attacks on TPM Chips». Bleeping Computer. Consultado em 28 de setembro de 2019. Cópia arquivada em 7 de outubro de 2018
  36. Goodin, Dan (16 de outubro de 2017). «Millions of high-security crypto keys crippled by newly discovered flaw». Ars Technica. Consultado em 18 de outubro de 2017. Cópia arquivada em 19 de outubro de 2018
  37. 1 2 Seunghun, Han; Wook, Shin; Park, Jun-Hyeok; Kim, HyoungChun (15–17 de agosto de 2018). A Bad Dream: Subverting Trusted Platform Module While You Are Sleeping (PDF). 27th USENIX Security Symposium. Baltimore, MD, EUA: USENIX Association. ISBN 9781939133045. Cópia arquivada (PDF) em 20 de agosto de 2018
  38. «Trusted platform module security defeated in 30 minutes, no soldering required». 3 de agosto de 2021

Ver também

[editar | editar código]

Ligações externas

[editar | editar código]