Atestado de TPM
Este artigo descreve os conceitos envolvidos no provisionamento de dispositivos usando o atestado TPM (Trusted Platform Module) no DPS (Serviço de Provisionamento de Dispositivos). Este artigo é relevante para todas as pessoas envolvidas na preparação de um dispositivo para implantação.
Um TPM (Trusted Platform Module) é um tipo de módulo de segurança de hardware (HSM). Este artigo pressupõe que você esteja usando um TPM discreto, firmware ou integrado. Os TPMs emulados por software são adequados para prototipagem ou teste, mas não fornecem o mesmo nível de segurança que TPMs discretos, firmware ou integrados. Não recomendamos o uso de TPMs de software na produção.
Este artigo só é relevante para dispositivos que usam TPM 2.0 com suporte de chave HMAC e suas chaves de endosso. O TPM é um padrão ISO para todo o setor do Trusted Computing Group, e você pode ler mais sobre o TPM na especificação completa do TPM 2.0 ou na especificação ISO/IEC 11889. Este artigo também pressupõe que você esteja familiarizado com pares de chaves públicas e privadas e como eles são usados para criptografia.
Os SDKs de dispositivo do Serviço de Provisionamento de Dispositivos lidam com tudo o que é descrito neste artigo para você. Não há necessidade de implementar o suporte a TPM se estiver usando os SDKs em seus dispositivos. Este artigo ajuda você a entender conceitualmente o que está acontecendo com seu chip de segurança TPM quando seu dispositivo é provisionado e por que ele é tão seguro.
Descrição geral
Os TPMs usam algo chamado chave de endosso (EK) como a raiz segura da confiança. O EK é exclusivo do TPM e alterá-lo essencialmente transforma o dispositivo em um novo.
Os TPMs têm outro tipo de chave chamada chave raiz de armazenamento (SRK). Um SRK pode ser gerado pelo proprietário do TPM depois que ele assume 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 a um novo proprietário, o novo proprietário poderá assumir a propriedade do TPM para gerar um novo SRK. A nova geração SRK garante que o proprietário anterior não possa usar o TPM. Como o SRK é exclusivo do proprietário do TPM, o SRK pode ser usado para selar dados no próprio TPM para esse proprietário. O SRK fornece uma área restrita para o proprietário armazenar suas chaves e fornece revogabilidade de acesso se o dispositivo ou TPM for vendido. É como mudar-se para uma nova casa: tomar posse é mudar as fechaduras das portas e destruir todos os móveis deixados pelos proprietários anteriores (SRK), mas você não pode mudar o endereço da casa (EK).
Uma vez que um dispositivo é configurado, ele tem um EK e um SRK disponíveis para uso.
As etapas específicas envolvidas na apropriação de um TPM variam dependendo do fabricante, do conjunto de ferramentas TPM que estão sendo usadas e do 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 pode ler o EK_pub durante a fabricação ou o teste final e carregar o EK_pub para o serviço de provisionamento para que o dispositivo seja reconhecido quando se conectar ao provisionamento. O Serviço de Provisionamento de Dispositivo não verifica o SRK ou o proprietário, portanto, "limpar" o TPM apaga os dados do cliente, mas o EK (e outros dados do fornecedor) é preservado e o dispositivo ainda será reconhecido pelo Serviço de Provisionamento de Dispositivo quando se conectar ao provisionamento.
Processo de certificação
Quando um dispositivo com um TPM se conecta ao Serviço de Provisionamento de Dispositivo, o serviço primeiro verifica o EK_pub fornecido em relação ao EK_pub armazenado na lista de registro. Se os EK_pubs não corresponderem, o dispositivo não poderá ser provisionado. Se o EK_pubs corresponder, o serviço exige que o dispositivo prove a propriedade da parte privada do EK por meio de um desafio nonce, que é um desafio seguro usado para provar a identidade. O Serviço de Provisionamento de Dispositivo gera um nonce e, em seguida, criptografa-o com o SRK e, em seguida, o EK_pub, ambos fornecidos pelo dispositivo durante a chamada de registro inicial. O TPM sempre mantém a parte privada do EK segura. Isso evita a falsificação e garante que os tokens SAS sejam provisionados com segurança para dispositivos autorizados.
Vamos percorrer o processo de certificação em detalhes.
O dispositivo solicita uma atribuição do Hub IoT
Primeiro, o dispositivo se conecta ao Serviço de Provisionamento de Dispositivo e solicita o provisionamento. Ao fazer isso, o dispositivo fornece ao serviço sua ID de registro, um escopo de ID e os EK_pub e SRK_pub do TPM. O serviço passa o nonce criptografado de volta para o dispositivo e pede que o dispositivo descriptografe o nonce e use isso para assinar um token SAS para se conectar novamente e concluir o provisionamento.
Desafio Nonce
O dispositivo pega o nonce e usa as partes privadas do EK e SRK para descriptografar o nonce no TPM; a ordem da criptografia nonce delega a confiança do EK, que é imutável, ao SRK, que pode mudar se um novo proprietário assumir a propriedade do TPM.
Valide o nonce e receba credenciais
O dispositivo pode então assinar um token SAS usando o nonce descriptografado e restabelecer uma conexão com o Serviço de Provisionamento de Dispositivo usando o token SAS assinado. Com o desafio Nonce concluído, o serviço permite que o dispositivo seja provisionado.