Tutorial: Proteggi AWS IoT Greengrass Nucleus Lite con Trusted Platform Module (TPM) - AWS IoT Greengrass

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: Proteggi AWS IoT Greengrass Nucleus Lite con Trusted Platform Module (TPM)

Questo tutorial spiega come abilitare e configurare il supporto Trusted Platform Module (TPM) per nucleus lite. AWS IoT Greengrass TPM fornisce un root of trust basato sull'hardware per l'archiviazione sicura delle chiavi. Questa funzionalità di sicurezza protegge le operazioni crittografiche e le credenziali sensibili, migliorando la sicurezza e l'integrità del dispositivo.

Una volta completata questa integrazione, il dispositivo AWS IoT Greengrass principale utilizzerà chiavi private protette da TPM per l'identità e la comunicazione con i servizi. AWS IoT

Per ulteriori informazioni sulla sicurezza dei AWS IoT Greengrass dispositivi, consulta. Sicurezza in AWS IoT Greengrass

Importante

Questo meccanismo è supportato solo con l'installazione di AWS IoT Greengrass nucleus lite con provisioning manuale delle risorse.

Prerequisiti

Per completare questo tutorial, è necessario quanto segue:

Questo tutorial contiene istruzioni su come utilizzare il TPM2 chip come Hardware Security Module (HSM) per creare una chiave privata e CSR, che viene utilizzato per creare il thing certificate. AWS IoT

Fase 1: Configurare un'istanza NitroTPM

  1. Configura un'istanza NitroTPM. Per ulteriori informazioni, consulta NitroTPM.

  2. Avvia l'istanza finale utilizzando l'AMI personalizzata creata nel passaggio precedente.

    Importante

    Quando ti connetti con SSH, usa l'ubuntuutente invece diroot.

  3. Verifica che il dispositivo TPM sia presente e funzionante eseguendo il comando seguente:

    ls -la /dev/tpm*

    Dovresti vedere /dev/tpm0 e /dev/tpmrm0 dispositivi.

Fase 2: Installare e configurare gli strumenti TPM

  1. Installa i pacchetti richiesti eseguendo il comando seguente:

    sudo apt update sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0
  2. Verifica le autorizzazioni del dispositivo TPM eseguendo il comando seguente:

    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

Fase 3: Configurare il provider OpenSSL TPM2

  1. Modifica il file di configurazione OpenSSL:

    sudo vi /etc/ssl/openssl.cnf
  2. Aggiungi la seguente configurazione:

    [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. Regola il percorso del modulo secondo necessità. Puoi trovare il percorso corretto usando:

    find /usr -name "tpm2.so"

Passaggio 4: Generazione di chiavi TPM persistenti

  1. Crea una chiave primaria eseguendo il seguente comando:

    sudo tpm2_createprimary -C o -c primary.ctx
  2. Crea un oggetto chiave ECC eseguendo il comando seguente:

    sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub
  3. Caricate la chiave eseguendo il comando seguente:

    sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx
  4. Rendi persistente la chiave eseguendo il seguente comando:

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

    Questo crea una chiave persistente con l'handle (like0x81000002).

Fase 5: Generazione della richiesta di firma del certificato (CSR)

In questo passaggio, utilizzerai la chiave privata TPM2 -protected per generare una richiesta di firma del certificato (CSR).

  1. Genera una CSR utilizzando la chiave TPM:

    openssl req -new -provider tpm2 -key "handle:0x81000002" \ -out device.csr \ -subj "/CN=TPMThing"
  2. Sostituisci 0x81000002 con il valore dell'handle scelto e TPMThing con il nome dell'oggetto desiderato.

Fase 6: Creare il certificato da CSR

  1. Sul tuo computer di sviluppo, crea una cartella in cui hai scaricato il certificato relativo all' AWS IoT oggetto.

    mkdir greengrass-v2-certs
  2. Usa il file CSR per creare e scaricare il certificato relativo all' AWS IoT oggetto sul tuo computer di sviluppo.

    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 la richiesta ha esito positivo, la risposta è simile all'esempio seguente:

    { "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-----" }

Passaggio 7: configurare Greengrass Nucleus Lite con supporto TPM

Per abilitare il supporto TPM in Greengrass Nucleus Lite, apporta le seguenti modifiche:

  1. Configura le autorizzazioni utente aggiungendo l'ggcoreutente al tss gruppo per l'accesso TPM:

    sudo usermod -a -G tss ggcore
  2. Aggiorna la directory delle credenziali completando i seguenti passaggi:

    • Rimuovi il file della chiave privata dalla directory delle credenziali.

      • Poiché utilizziamo chiavi TPM persistenti, non è necessario copiare alcun file di chiave privata.

    • Copia il nuovo device.pem.crt nella cartella delle credenziali.

  3. Modifica config.yaml con la seguente configurazione specifica del TPM:

    system: privateKeyPath: "handle:0x81000002" # Use your chosen handle certificateFilePath: "" # Replace with the path of device.pem.crt ...
  4. Riavvia Greengrass Nucleus Lite eseguendo il seguente comando:

    systemctl restart greengrass-lite.target

Risoluzione dei problemi

Se riscontrate problemi durante la configurazione o il funzionamento del AWS IoT Greengrass dispositivo TPM2 abilitato, provate i seguenti passaggi per la risoluzione dei problemi:

Il dispositivo TPM non è stato trovato (quando si utilizza NitroTPM)

Se non /dev/tpm0 è presente, procedi nel seguente modo:

  1. Verifica di utilizzare un tipo di istanza supportato da NitroTPM.

  2. Assicurati che l'AMI sia stato creato con--tpm-support v2.0.

  3. Verifica che l'istanza sia stata avviata dall'AMI personalizzata.

Errori di autorizzazione negata

Se riscontri errori di accesso al TPM, procedi come segue:

  1. Verifica che l'utente sia nel tss gruppo:groups $USER.

  2. Controlla le autorizzazioni del dispositivo TPM utilizzando il seguente comando:

    ls -l /dev/tpm*
  3. Verifica di esserti disconnesso e di aver effettuato nuovamente l'accesso dopo l'aggiunta al gruppo. tss

Problemi con il provider OpenSSL

Se il provider TPM non viene trovato, procedi come segue:

  1. Verifica tpm2.so il percorso in. /etc/ssl/openssl.cnf

  2. Controlla l'installazione del provider eseguendo il seguente comando:

    openssl list -providers
  3. Verifica che il tpm2-openssl pacchetto sia installato correttamente.

Fasi successive

Ora che hai integrato con successo il tuo dispositivo AWS IoT Greengrass principale con TPM2, puoi:

  • Implementa i componenti sul tuo dispositivo sicuro AWS IoT Greengrass

  • Configura AWS IoT Greengrass dispositivi aggiuntivi con integrazione TPM2

Per ulteriori informazioni sulla sicurezza AWS IoT Greengrass dei dispositivi, consultaSicurezza in AWS IoT Greengrass.