TPM (Trusted Platform Module) no Windows 10 IoT Core
O que é TPM?
Um Trusted Platform Module (TPM), é um coprocessador criptográfico que inclui recursos para geração de números aleatórios, geração segura de chaves criptográficas e limitação de seu uso. Ele também inclui recursos como atestado remoto e armazenamento lacrado. A especificação técnica do TPM está disponível publicamente, orientada pelo Trusted Computing Group (TCG). A última versão TPM 2.0 (lançada em outubro de 2014), é uma grande reformulação da especificação que adiciona novas funcionalidades e corrige fraquezas do antigo TPM 1.2.
Porquê o TPM?
Os computadores que incorporam um TPM podem criar chaves criptográficas e criptografá-las para que só possam ser descriptografadas pelo TPM. Esse processo, muitas vezes chamado de "empacotamento" ou "vinculação" de uma chave, pode ajudar a proteger a chave da divulgação. Cada TPM tem uma chave primária de "encapsulamento", chamada de chave raiz de armazenamento, que é armazenada dentro do próprio TPM. A parte privada de uma chave criada em um TPM nunca é exposta a nenhum outro componente, software, processo ou pessoa.
Os computadores que incorporam um TPM também podem criar uma chave que não apenas foi encapsulada, mas também está vinculada a determinadas medições de plataforma. Esse tipo de chave só pode ser desempacotado quando essas medições de plataforma têm os mesmos valores que tinham quando a chave foi criada. Esse processo é chamado de "lacração" da chave do TPM. A descriptografia da chave é chamada de "deslacre". O TPM também pode selar e deslacrar dados gerados fora do TPM. Com essa chave lacrada e um software como a Criptografia de Unidade de Disco BitLocker, você pode bloquear dados até que condições específicas de hardware ou software sejam atendidas.
Com um TPM, partes privadas de pares de chaves são mantidas separadas da memória controlada pelo sistema operacional. As chaves podem ser seladas no TPM, e certas garantias sobre o estado de um sistema (garantias que definem a "confiabilidade" de um sistema) podem ser feitas antes que as chaves sejam deslacradas e liberadas para uso. Como o TPM usa seu próprio firmware interno e circuitos lógicos para instruções de processamento, ele não depende do sistema operacional e não está exposto a vulnerabilidades que possam existir no sistema operacional ou no software do aplicativo.
Arquitetura TPM
Diferença entre TPM 1.2 e TPM 2.0.
A especificação TPM foi desenvolvida duas vezes. Na primeira vez, desenvolveu-se do 1.1b para o 1.2, incorporando novos recursos solicitados/identificados pelo comitê de especificação. Essa forma de evolução tornou a especificação final do TPM 1.2 muito complicada. Eventualmente, fraquezas criptográficas do SHA-1 (que era o algoritmo comercial mais forte no TPM 1.2) foram reveladas, o que causou a necessidade de uma mudança. A arquitetura do TPM foi redesenhada do zero, resultando no design muito mais integrado e unificado do TPM 2.0.
As alterações e aprimoramentos em comparação com o TPM 1.2 anterior incluem:
- Suporte para algoritmos criptográficos adicionais
- Aprimoramentos na disponibilidade do TPM para aplicativos
- Mecanismos de autorização aprimorados
- Gerenciamento simplificado de TPM
- Recursos adicionais para melhorar a segurança dos serviços de plataforma
Observação
O Windows IoT Core oferece suporte apenas ao TPM 2.0 e não oferece suporte ao TPM 1.2 desatualizado.
O que é TBS?
O recurso Serviços Básicos do TPM (TBS) é um serviço do sistema que permite o compartilhamento transparente dos recursos do TPM. Ele compartilha os recursos do TPM entre vários aplicativos na mesma máquina física por meio de RPC (chamadas de procedimento remoto). Ele centraliza o acesso ao TPM entre aplicativos usando prioridades especificadas pelos aplicativos de chamada.
O TPM fornece funções criptográficas projetadas para fornecer confiança na plataforma. Como o TPM é implementado em hardware, ele tem recursos finitos. O TCG define um TPM Software Stack (TSS) que faz uso desses recursos para fornecer operações confiáveis para software de aplicativo. No entanto, nenhuma disposição é feita para executar uma implementação TSS lado a lado com o software do sistema operacional que também pode estar usando recursos do TPM. O recurso TBS resolve esse problema permitindo que cada pilha de software que se comunica com o TBS use recursos do TPM verificando se há outras pilhas de software que possam estar sendo executadas na máquina.
Soluções TPM disponíveis no Windows IoT Core
Algumas palavras sobre Software TPM (sTPM), Firmware TPM (fTPM), Discrete TPM (dTPM)...
Firmware TPM (fTPM)
O TPM de firmware (fTPM) requer suporte especial a processador/SoC que não esteja implementado atualmente no Raspberry Pi 2 ou 3. MinnowBoard Max precisa de firmware versão 0.80 ou superior. O DragonBoard410c fornece recursos de fTPM prontos para uso habilitados por padrão.
TPM discreto (dTPM)
O TPM discreto (dTPM) é considerado a solução mais confiável por todos os meios.
Existem vários fabricantes de chips dTPM e módulos PCB que são suportados no Windows IoT Core:
Fabricante Página da Web Tipo de módulo TPM Chip Infineon Infineon TPM Evalboard Infineon SLB9670 TPM 2.0 Pi3g Pi3g.com Produto em massa & Evalboard Infineon SLB9670 TPM 2.0
Software TPM (sTPM)
Software TPM (sTPM) também é conhecido como TPM Simulator. Ele é independente de plataforma, com suporte no Windows IoT Core.
Observação
O sTPM destina-se apenas a fins de desenvolvimento e não oferece quaisquer benefícios reais de segurança.
Exemplos
- Exemplo de biblioteca do Urchin Este tutorial demonstra como criar um aplicativo C++ de exemplo que exerce a funcionalidade do TPM usando a biblioteca do Urchin. Urchin é uma biblioteca compatível com especificações derivada da implementação de referência do TPM 2.0. Ele fornece ao cliente a funcionalidade de marshal/unmarshal todas as estruturas de dados, calcular corretamente as autorizações, executar criptografia de parâmetros e fazer auditoria.