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 AWS IoT Greengrass com o Trusted Platform Module (TPM)
nota
O mecanismo deste tutorial é suportado somente comInstale o software AWS IoT Greengrass principal com provisionamento manual de recursos.
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. O que está acostumadoCriar o certificado do objeto.
Este tutorial mostra como aprimorar a segurança do dispositivo configurando o software AWS IoT Greengrass Core com um Trusted Platform Module (TPM) usando a interface PKCS #11. Essa integração do TPM garante que as chaves privadas e os certificados usados para identificação e conexão do dispositivo AWS IoT Core sejam armazenados com segurança em hardware inviolável, impedindo a extração por falsificação de identidade ou outras atividades maliciosas.
Quando você concluir essa integração, seu dispositivo principal do Greengrass 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 dispositivos Greengrass, consulte. Segurança em AWS IoT Greengrass
Pré-requisitos
Para concluir este tutorial, você precisará do seguinte:
-
Um dispositivo compatível com Linux com hardware ou firmware TPM 2.0 do TPM 2.0.
-
As instruções neste tutorial são definidas para o Ubuntu 24.04 LTS.
-
Qualquer distribuição Linux que suporte o Linux TPM2 Software Stack
pode suportar esse mecanismo.
-
-
Uma máquina de desenvolvedor AWS CLI instalada e configurada com permissões para:
-
Crie e gerencie AWS IoT recursos
-
Crie e gerencie funções e políticas do IAM
-
-
Java Runtime Environment (JRE) versão 8 ou posterior instalado em seu dispositivo.
-
Os seguintes pacotes de software instalados no seu dispositivo:
-
curl
-
jarro
-
-
Privilégios de root ou sudo no dispositivo.
Etapa 1: instalar TPM2 ferramentas e dependências
Nesta etapa, você instala as ferramentas e bibliotecas de TPM2 software necessárias.
-
Atualize seu gerenciador de pacotes e instale as TPM2 ferramentas e dependências executando o comando a seguir.
sudo apt-get update && sudo apt-get install tpm2-tools \ tpm2-abrmd \ tpm2-tss-engine-tools \ gnutls-bin \ libtpm2-pkcs11-1 \ libtpm2-pkcs11-tools \ libtpm2-pkcs11-1-dev \ python3-tpm2-pkcs11-tools \ libengine-pkcs11-openssl \ libtss2-tcti-tabrmd0
-
Instale os pacotes do provedor TPM2 OpenSSL no Ubuntu 24.04 que usam o mecanismo OpenSSL 3.
sudo apt-get install tpm2-openssl
Etapa 2: Inicializar a loja PKCS #11 e criar um slot
-
Crie um diretório para armazenar dados.
sudo mkdir -p /etc/tpm2_pkcs11
-
Defina o local de armazenamento como uma variável de ambiente. Para obter mais informações sobre a hierarquia da loja, consulte Inicialização
. export TPM2_PKCS11_STORE=/etc/tpm2_store
-
Inicialize o TPM2 token com o objeto principal.
sudo tpm2_ptool init
As opções disponíveis são as seguintes:
hierarchy-auth HIERARCHY_AUTH
-
A senha de autorização para adicionar um objeto principal à hierarquia.
primary-auth PRIMARY_AUTH
-
Valor de autorização para o objeto de chave primária existente.
O padrão é um valor de autenticação vazio.
primary-handle [PRIMARY_HANDLE]
-
Use um objeto de chave primária existente.
Padrão:
0x81000001
transient-parents
-
Use um objeto primário transitório de um determinado modelo.
Valores:
tpm2-tools-default
,tpm2-tools-ecc-default
,tss2-engine-key
path PATH
-
A localização do diretório da loja. Se especificado, o diretório deve existir. Se não for especificado, ele executa uma pesquisa observando a variável de ambiente
TPM2_PKCS11_STORE
. Se essa variável de ambiente não estiver definida, ela será examinada/etc/tpm2_pkcs11
. Se esse diretório não for encontrado ou não puder ser criado, o padrão será o diretório de trabalho atual.
Etapa 3: criar um token e uma chave
-
Crie um token PKCS #11.
sudo tpm2_ptool addtoken —pid=1 —userpin=
USERPIN
—sopin=SOPIN
—label=greengrassAs opções disponíveis são as seguintes:
--pid PID
-
O ID do objeto principal a ser associado a esse token.
--sopin SOPIN
-
O pin do administrador. Esse pino é usado para recuperação de objetos.
--userpin USERPIN
-
O pin do usuário. Esse pino é usado para autenticação para uso de objetos.
--label LABEL
-
Uma etiqueta exclusiva para identificar o perfil em uso deve ser exclusiva.
--hierarchy-auth HIERARCHY_AUTH
-
Crie um objeto-chave ECC.
sudo tpm2_ptool addkey —algorithm=ecc256 —label=greengrass —userpin=****** —key-label=greenkey
--label LABEL
-
O rótulo de tokens para importar a chave também.
--key-label KEY_LABEL
-
O rótulo da chave importada. O padrão é um valor inteiro.
--id ID
-
O ID da chave. O padrão é 8 bytes aleatórios de hexadecimal.
--attr-always-authenticate
-
Define o atributo CKA_ALWAYS_AUTHENTICATE como CK_TRUE.
--hierarchy-auth HIERARCHY_AUTH
-
A hierarquia, necessária para objetos transitórios.
--sopin SOPIN
-
O pin do administrador.
--userpin USERPIN
-
O pin do usuário.
--algorithm
-
{rsa1024, rsa2048, rsa3072, rsa4096, aes128, aes256, ecc224, ecc256, ecc384, ecc521, hmac:sha1, hmac:sha256, hmac:sha384, hmac:sha512}
O tipo da chave.
-
Exporte o objeto TPM2 -TSS do token para capturar os dados de autenticação.
yaml_ecc0=$(sudo tpm2_ptool export —label="greengrass" —key-label="greenkey" —userpin="******")
Resultado do exemplo:
> echo $yaml_ecc0 object-auth: 706c1cad8a5238871b30149705255926 primary-object: auth: '' hierarchy: owner is_transient: false
nota
Você também encontrará um arquivo chamado `greenkey.pem`, que é a chave TSS2 privada no diretório em que você executou esse comando. Use isso para gerar a CSR com o provedor openssl tpm2. O arquivo de CHAVE TSS2 PRIVADA é protegido pelo TPM e não pode ser usado em outra máquina. Para obter mais informações sobre TSS2 chaves com o OpenSSL, consulte Armazenando a chave privada
ou pública. -
Capture os dados de autenticação da chave privada do TSS.
auth_ecc0=$(echo "$yaml_ecc0" | grep "object-auth" | cut -d' ' -f2-)
Etapa 4: Gerar solicitação de assinatura de certificado (CSR)
Nesta etapa, você usará a chave privada TPM2 protegida para gerar uma CSR.
-
Gere uma CSR usando o TPM2 provedor.
sudo openssl req -new -provider tpm2 -provider base -key greenkey.pem -passin "pass:$auth_ecc0" -out "$H"$HOSTNAME".csr
Quando solicitado, forneça as informações necessárias para sua CSR, incluindo:
-
Nome do país (código de 2 letras)
-
Nome do estado ou província
-
Nome da localidade
-
Nome da organização
-
Nome da unidade organizacional
-
Nome comum
-
Endereço de e-mail
Como alternativa, você pode fornecer um arquivo de configuração do OpenSSL para geração autônoma. Para obter mais informações, consulte a documentação do OpenSSL
. -
-
Se você não estiver gerando a CSR na mesma máquina, copie a CSR gerada para uma máquina que tenha AWS credenciais configuradas.
Etapa 5: criar o certificado da coisa
Crie um certificado de AWS IoT coisa. Para obter mais informações sobre como criar um certificado de coisa, consulteCriar o certificado do objeto.
Etapa 6: importar o certificado do item para o TPM
-
Copie o certificado da coisa para o dispositivo.
-
Adicione o certificado da coisa ao token do Greengrass.
sudo tpm2_ptool addcert --label=greengrass --key-label=greenkey device.pem.crt
As opções disponíveis são as seguintes:
--help
-
Mostre essa mensagem de ajuda e saia.
--label LABEL
-
A etiqueta do perfil a ser removida.
--key-label KEY_LABEL
-
O rótulo de chave privada associado.
--key-id KEY_ID
-
A chave privada associada está em hexadecimal.
cert
-
O certificado x509 PEM a ser adicionado.
Etapa 7: Capturar o URL do objeto PKCS #11
Usaremos o p11tool
fornecido no gnutls-bin
pacote para obter o URL e o objeto URLs do token PKCS #11.
-
Capture a URL do token do Greengrass.
TOKEN=sudo p11tool --list-token-urls | grep "token=greengrass"
-
Obtenha o objeto URLs para o token Greengrass. Use o mesmo pino usado na Etapa 3.
sudo p11tool --login --list-all "${TOKEN}"
Resultado do exemplo:
Token 'greengrass' with URL 'pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass' requires user PIN Enter PIN: WARNING: Needed CKA_VALUE but didn't find encrypted blob Object 0: URL: pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass;id=%39%32%37%65%61%64%61%39%31%32%35%31%61%35%37%31;object=greenkey;type=private Type: Private key (EC/ECDSA-SECP256R1) Label: greenkey Flags: CKA_PRIVATE; CKA_NEVER_EXTRACTABLE; CKA_SENSITIVE; ID: 39:32:37:65:61:64:61:39:31:32:35:31:61:35:37:31 Object 1: URL: pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass;id=%39%32%37%65%61%64%61%39%31%32%35%31%61%35%37%31;object=greenkey;type=public Type: Public key (EC/ECDSA-SECP256R1) Label: greenkey ID: 39:32:37:65:61:64:61:39:31:32:35:31:61:35:37:31 Object 2: URL: pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass;id=%39%32%37%65%61%64%61%39%31%32%35%31%61%35%37%31;object=greenkey;type=cert Type: X.509 Certificate (EC/ECDSA-SECP256R1) Expires: Fri Dec 31 18:59:59 2049 Label: greenkey ID: 39:32:37:65:61:64:61:39:31:32:35:31:61:35:37:31
-
Capture o URL do objeto para a chave privada e o certificado.
Etapa 8: Configurar e instalar o Greengrass com suporte TPM2
-
Configure o certificado da coisa. Para obter mais informações, consulte Configurar o certificado da coisa.
-
Conclua as instruções para instalar o software AWS IoT Greengrass Core com a chave privada e o certificado em uma entrada HSM. Instale o software AWS IoT Greengrass Core Em seguida, use as etapas a seguir para configurar sua instalação para ser aproveitada TPM2 por meio da interface PKCS #11.
-
Verifique se você baixou e salvou o componente do provedor PKCS #11 no local do seu instalador do Greengrass.
-
Use um editor de texto para criar um arquivo de configuração chamado
config.yaml
para fornecer ao instalador. Por exemplo, em um sistema baseado em Linux, você pode executar o comando a seguir para usar o GNUnano
para criar o arquivo.nano GreengrassInstaller/config.yaml
-
Copie o seguinte conteúdo YAML para o arquivo. Esse arquivo de configuração parcial especifica os parâmetros do sistema, os parâmetros do núcleo do Greengrass e os parâmetros do provedor PKCS#11.
--- system: certificateFilePath: "pkcs11:model=SW%20%20%20TPM%00%00%00%00%00%00%00%00;manufacturer=IBM;serial=0000000000000000;token=greengrass;id=%34%35;object=greenkey;type=cert" privateKeyPath: "pkcs11:model=SW%20%20%20TPM%00%00%00%00%00%00%00%00;manufacturer=IBM;serial=0000000000000000;token=greengrass;id=%34%35;object=greenkey;type=private" rootCaPath: "/greengrass/v2/AmazonRootCA1.pem" rootpath: "/greengrass/v2" thingName: "myThing" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.14.0" configuration: awsRegion: "us-east-1" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com" iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com" aws.greengrass.crypto.Pkcs11Provider: configuration: name: "tpm2_pkcs11" library: "/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so" slot: 1 userPin: "123456"
-
Edite o arquivo com os parâmetros específicos para sua instalação.
-
Atualize certificateFilePath e privateKeyPath com a atualização certificateFilePath e privateKeyPath com a URL PKCS #11 capturada na Etapa 7.
-
Atualize seu iotDataEndpoint e iotCredEndpoint com base em seu AWS IoT endpoint.
-
Na
aws.greengrass.crypto.Pkcs11Provider
configuração, atualize a biblioteca com base na sua plataforma.nota
O exemplo mostrado é para X86_64. O caminho do arquivo será semelhante para o ARM64 dispositivo.
-
-
Conclua as etapas de instalação do Greengrass em. Instale o software AWS IoT Greengrass Core
Etapa 9: Verificar a instalação
Nesta etapa, você verificará se o Greengrass está funcionando corretamente com TPM2 a integração.
-
Verifique o status do serviço Greengrass.
sudo systemctl status greengrass.service
-
Veja os registros do Greengrass para garantir que não haja erros.
sudo tail -f /greengrass/v2/logs/greengrass.log
-
Verifique se o dispositivo aparece como conectado no AWS IoT console
. -
Faça login no console do AWS IoT Greengrass
. -
Em Gerenciar, expanda os dispositivos Greengrass e escolha Dispositivos principais.
-
Confirme se seu dispositivo está conectado. O status do dispositivo mostrará
HEALTHY
se ele está conectado. Para obter mais informações, consulte Verificar o status do dispositivo principal do Greengrass.
-
Solução de problemas
Se você encontrar problemas durante a configuração ou operação do seu dispositivo Greengrass TPM2 habilitado, tente as seguintes etapas de solução de problemas.
-
Verifique o arquivo de log principal do Greengrass.
sudo tail -f /greengrass/v2/logs/greengrass.log
-
Verifique a configuração do provedor PKCS #11.
sudo cat /greengrass/v2/config/effectiveConfig.yaml
-
Verifique se o TPM2 serviço está em execução.
sudo systemctl status tpm2-abrmd.service
-
Verifique se a TPM2 chave está acessível.
sudo pkcs11-tool —module /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -l -p 123456 —list-objects
-
Se seu sistema operacional estiver configurado com criptografia de disco total com chaves raiz TPM2 de armazenamento, como Clevis ou systemd-cryptenroll, verifique se você não está usando o mesmo identificador persistente usado por essas ferramentas. Usar o mesmo identificador persistente pode afetar seu mecanismo de criptografia de disco. Para verificar todos os identificadores persistentes criados e usados, execute o seguinte comando
sudo tpm2_getcap handles-persistent
Próximas etapas
Agora que você integrou com sucesso seu dispositivo principal do Greengrass TPM2, você pode:
-
Implante componentes em seu dispositivo Greengrass seguro. Para obter mais informações, consulte Implemente AWS IoT Greengrass componentes em dispositivos.
-
Configure dispositivos Greengrass adicionais com TPM2 integração.
Para obter mais informações sobre segurança em dispositivos Greengrass, consulte. Segurança em AWS IoT Greengrass