Atestado de TPM
Este artigo descreve os conceitos envolvidos ao provisionar dispositivos usando o atestado do TPM (Trusted Platform Module) no DPS (Serviço de Provisionamento de Dispositivos). Este artigo é relevante para todas as personas envolvidas na preparação de um dispositivo para implantação.
Um TPM (Trusted Platform Module) é um tipo de HSM (módulo de segurança de hardware). Este artigo pressupõe que você esteja usando um TPM discreto, de firmware ou integrado. Os TPMs emulados para software são adequados para fazer protótipos ou teste, mas não oferecem o mesmo nível de segurança dos TPMs discretos, de firmware ou integrados. Não recomendamos usar TPMs de software em produção.
Este artigo só é relevante para dispositivos que usam o TPM 2.0 com suporte à chave HMAC e suas chaves de endosso. O TPM é um padrão ISO de todo o setor do Trusted Computing Group, e é possível ler mais sobre ele na especificação do TPM 2.0 completa ou na especificação ISO/IEC 11889. Este artigo também pressupõe que você conheça os pares de chaves públicas e privadas e como eles são usados para criptografia.
Os SDKs do dispositivo do Serviço de Provisionamento de Dispositivos lidam com tudo que foi descrito neste artigo para você. Não é necessário implementar o suporte ao TPM se você está usando os SDKs nos seus dispositivos. Este artigo ajuda a entender conceitualmente o que está acontecendo com seu chip de segurança do TPM quando seu dispositivo é provisionado e por que ele é tão seguro.
Visão geral
Os TPMs usam uma coisa chamada EK (chave de endosso) como a raiz de confiança segura. A EK é exclusiva do TPM e sua alteração altera essencialmente o dispositivo para um novo.
Os TPMs têm outro tipo de chave chamada SRK (chave raiz de armazenamento). Uma SRK pode ser gerada pelo proprietário do TPM após ele assumir a propriedade do TPM. Assumir a propriedade do TPM é a maneira específica do TPM de dizer "alguém define uma senha no HSM". Se um dispositivo TPM for vendido para um novo proprietário, o novo proprietário poderá assumir a propriedade do TPM para gerar uma nova SRK. A geração de uma nova SRK garante que o proprietário anterior não poderá usar o TPM. Como a SRK é exclusiva do proprietário do TPM, a SRK pode ser usada para selar dados para o próprio TPM para esse proprietário. A SRK oferecerá uma sandbox para o proprietário armazenar suas chaves e fornecerá revogabilidade de acesso se o dispositivo ou o TPM for vendido. É como se mudar para uma nova casa: assumir a propriedade é trocar as fechaduras das portas e destruir todos os móveis deixados pelos proprietários anteriores (SRK), mas não é possível alterar o endereço da casa (EK).
Depois que um dispositivo é configurado, ele tem uma EK e uma SRK disponíveis para uso.
As etapas específicas envolvidas na tomada de propriedade de um TPM variam conforme o fabricante, o conjunto de ferramentas do TPM uso e o sistema operacional do dispositivo.
O Serviço de Provisionamento de Dispositivos usa a parte pública do EK (EK_pub) para identificar e registrar dispositivos. O fornecedor do dispositivo poderá ler o EK_pub durante a fabricação ou testagem final e carregar o EK_pub para o serviço de provisionamento para que o dispositivo seja reconhecido quando se conectar para provisionar. O Serviço de Provisionamento de Dispositivos não verifica a SRK ou o proprietário. Portanto, "limpar" o TPM apagará os dados do cliente, mas a EK (e os outros dados do fornecedor) será preservada e o dispositivo ainda será reconhecido pelo Serviço de Provisionamento de Dispositivos quando ele se conectar para provisionar.
Processo de atestado
Quando um dispositivo com um TPM se conecta ao Serviço de Provisionamento de Dispositivos, primeiro, o serviço verifica o EK_pub fornecido com relação ao EK_pub armazenado na lista de registro. Se os EK_pubs não coincidirem, o dispositivo não terá permissão para fazer o provisionamento. Se os EK_pubs não coincidirem, o serviço exigirá que o dispositivo prove a propriedade da parte privada da EK por meio de um desafio nonce, que é um desafio seguro usado para provar a identidade. O Serviço de Provisionamento de Dispositivos gera um nonce e, em seguida, o criptografa com a SRK e o EK_pub, fornecidos pelo dispositivo durante a chamada de registro inicial. O TPM sempre mantém a parte privada da EK segura. Isso impede a falsificação e garante que os tokens SAS são provisionados com segurança para dispositivos autorizados.
Vamos percorrer o processo de atestado com detalhes.
O dispositivo solicita uma atribuição do Hub IoT
Primeiro, o dispositivo conecta-se ao Serviço de Provisionamento de Dispositivos e solicita o provisionamento. Ao fazer isso, o dispositivo fornece o serviço com sua ID de registro, um escopo da ID e o EK_pub e SRK_pub do TPM. O serviço passa o nonce criptografado de volta para o dispositivo e pede a ele para descriptografar o nonce e usar isso para assinar um token SAS para conectar-se novamente e concluir o provisionamento.
Desafio nonce
O dispositivo usa o nonce e as partes privadas da EK e da SRK para descriptografar o nonce para o TPM; a ordem da criptografia do nonce delega confiança da EK, que é imutável, para a SRK, que poderá ser alterada se um novo propriedade assumir a propriedade do TPM.
Validar o nonce e receber as credenciais
O dispositivo pode assinar um token SAS usando o nonce descriptografado e reestabelecer uma conexão com o Serviço de Provisionamento de Dispositivos usando o token SAS assinado. Com o desafio nonce concluído, o serviço permite que o dispositivo provisione.