Tutorial: Proteja o AWS IoT Greengrass Nucleus Lite com o Trusted Platform Module (TPM) - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial: Proteja o AWS IoT Greengrass Nucleus Lite com o Trusted Platform Module (TPM)

Este tutorial explica como ativar e configurar o suporte do Trusted Platform Module (TPM) para o AWS IoT Greengrass nucleus lite. O TPM fornece uma raiz de confiança baseada em hardware para armazenamento seguro de chaves. Esse recurso de segurança protege operações criptográficas e credenciais confidenciais, aprimorando a segurança e a integridade do dispositivo.

Quando você concluir essa integração, seu dispositivo AWS IoT Greengrass principal usará chaves privadas protegidas por TPM para sua identidade e comunicação com os serviços. AWS IoT

Para obter mais informações sobre segurança em AWS IoT Greengrass dispositivos, consulteSegurança no AWS IoT Greengrass.

Importante

Esse mecanismo é suportado somente com a instalação do AWS IoT Greengrass nucleus lite com provisionamento manual de recursos.

Pré-requisitos

Para concluir este tutorial, você precisará do seguinte:

Este tutorial contém instruções sobre como usar o TPM2 chip como um Módulo de Segurança de Hardware (HSM) para criar uma chave privada e CSR que é usada para criar o certificado do AWS IoT item.

Etapa 1: configurar uma instância do NitroTPM

  1. Configure uma instância do NitroTPM. Para obter mais informações, consulte NitroTPM.

  2. Execute a instância final usando a AMI personalizada criada na etapa anterior.

    Importante

    Ao se conectar com SSH, use o ubuntu usuário em vez deroot.

  3. Verifique se o dispositivo TPM está presente e funcionando executando o seguinte comando:

    ls -la /dev/tpm*

    Você deve ver /dev/tpm0 e /dev/tpmrm0 dispositivos.

Etapa 2: instalar e configurar as ferramentas do TPM

  1. Instale os pacotes necessários executando o seguinte comando:

    sudo apt update sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0
  2. Verifique as permissões do dispositivo TPM executando o seguinte comando:

    ls -l /dev/tpm0 # Should be owned by tss:root with permissions 0660 ls -l /dev/tpmrm0 # Should be owned by tss:tss with permissions 0660

Etapa 3: Configurar o provedor OpenSSL TPM2

  1. Edite o arquivo de configuração do OpenSSL:

    sudo vi /etc/ssl/openssl.cnf
  2. Adicione a seguinte configuração:

    [openssl_init] providers = provider_sect [provider_sect] default = default_sect tpm2 = tpm2_sect [default_sect] activate = 1 [tpm2_sect] identity = tpm2 module = /usr/local/lib64/tpm2.so activate = 1
  3. Ajuste o caminho do módulo conforme necessário. Você pode encontrar o caminho correto usando:

    find /usr -name "tpm2.so"

Etapa 4: gerar chaves TPM persistentes

  1. Crie uma chave primária executando o seguinte comando:

    sudo tpm2_createprimary -C o -c primary.ctx
  2. Crie um objeto-chave ECC executando o seguinte comando:

    sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub
  3. Carregue a chave executando o seguinte comando:

    sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx
  4. Torne a chave persistente executando o seguinte comando:

    sudo tpm2_evictcontrol -C o -c device.ctx 0x81000002

    Isso cria uma chave persistente com a alça (como0x81000002).

Etapa 5: Gerar solicitação de assinatura de certificado (CSR)

Nesta etapa, você usará a chave privada TPM2 protegida para gerar uma Solicitação de Assinatura de Certificado (CSR).

  1. Gere uma CSR usando a chave TPM:

    openssl req -new -provider tpm2 -key "handle:0x81000002" \ -out device.csr \ -subj "/CN=TPMThing"
  2. 0x81000002Substitua pelo valor do identificador escolhido e TPMThing pelo nome do item desejado.

Etapa 6: criar o certificado a partir do CSR

  1. No seu computador de desenvolvimento, crie uma pasta na qual você baixou o certificado da AWS IoT coisa.

    mkdir greengrass-v2-certs
  2. Use o arquivo CSR para criar e baixar o certificado da AWS IoT coisa em seu computador de desenvolvimento.

    aws iot create-certificate-from-csr \ --set-as-active \ --certificate-signing-request file://path_to_device.csr \ --certificate-pem-outfile greengrass-v2-certs/device.pem.crt

    Se a solicitação for bem-sucedida, a resposta será semelhante ao exemplo a seguir:.

    { "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----" }

Etapa 7: Configurar o Greengrass Nucleus Lite com suporte ao TPM

Para habilitar o suporte ao TPM no Greengrass Nucleus Lite, faça as seguintes alterações:

  1. Configure as permissões do usuário adicionando o ggcore usuário ao tss grupo para acesso ao TPM:

    sudo usermod -a -G tss ggcore
  2. Atualize o diretório de credenciais concluindo as seguintes etapas:

    • Remova o arquivo de chave privada do diretório de credenciais.

      • Como estamos usando chaves TPM persistentes, nenhum arquivo de chave privada precisa ser copiado.

    • Copie o novo device.pem.crt nesse diretório de credenciais.

  3. Edite config.yaml com a seguinte configuração específica do TPM:

    system: privateKeyPath: "handle:0x81000002" # Use your chosen handle certificateFilePath: "" # Replace with the path of device.pem.crt ...
  4. Reinicie seu Greengrass Nucleus Lite executando o seguinte comando:

    systemctl restart greengrass-lite.target

Solução de problemas

Se você encontrar problemas durante a configuração ou operação do seu AWS IoT Greengrass dispositivo TPM2 habilitado, tente as seguintes etapas de solução de problemas:

O dispositivo TPM não foi encontrado (ao usar o NitroTPM)

Se não /dev/tpm0 estiver presente, execute as seguintes etapas:

  1. Verifique se você está usando um tipo de instância compatível com NitrotPM.

  2. Certifique-se de que a AMI tenha sido criada com--tpm-support v2.0.

  3. Verifique se a instância foi executada a partir da AMI personalizada.

Erros de permissão negada

Se você encontrar erros de acesso ao TPM, faça o seguinte:

  1. Verifique se o usuário está no tss grupo:groups $USER.

  2. Verifique as permissões do dispositivo TPM usando o seguinte comando:

    ls -l /dev/tpm*
  3. Verifique se você se desconectou e se conectou novamente após adicionar ao tss grupo.

Problemas com o provedor OpenSSL

Se o provedor de TPM não for encontrado, faça o seguinte:

  1. Verifique tpm2.so o caminho no/etc/ssl/openssl.cnf.

  2. Verifique a instalação do provedor executando o seguinte comando:

    openssl list -providers
  3. Verifique se o tpm2-openssl pacote está instalado corretamente.

Próximas etapas

Agora que você integrou com sucesso seu dispositivo AWS IoT Greengrass principal TPM2, você pode:

  • Implante componentes em seu AWS IoT Greengrass dispositivo seguro

  • Configure AWS IoT Greengrass dispositivos adicionais com TPM2 integração

Para obter mais informações sobre segurança em AWS IoT Greengrass dispositivos, consulteSegurança no AWS IoT Greengrass.