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: Protezione AWS IoT Greengrass con Trusted Platform Module (TPM)
Nota
Il meccanismo di questo tutorial è supportato solo con. Installa il software AWS IoT Greengrass Core con provisioning manuale delle risorse
Questo tutorial contiene istruzioni su come utilizzare il TPM2 chip come Hardware Security Module (HSM) per creare una chiave privata e una CSR. Che è usato per. Crea il certificato dell'oggetto
Questo tutorial mostra come migliorare la sicurezza dei dispositivi configurando il software AWS IoT Greengrass Core con un Trusted Platform Module (TPM) utilizzando l'interfaccia PKCS #11. Questa integrazione TPM garantisce che le chiavi private e i certificati utilizzati per l'identità del dispositivo e la connessione AWS IoT Core siano archiviati in modo sicuro in hardware a prova di manomissione, impedendo l'estrazione a fini di impersonificazione o altre attività dannose.
Una volta completata questa integrazione, il dispositivo principale Greengrass utilizzerà chiavi private protette da TPM per la sua identità e la comunicazione con i servizi. AWS IoT
Per ulteriori informazioni sulla sicurezza dei dispositivi Greengrass, vedere. Sicurezza in AWS IoT Greengrass
Prerequisiti
Per completare questo tutorial, è necessario quanto segue:
-
Un dispositivo compatibile con Linux con hardware TPM 2.0 o firmware TPM 2.0.
-
Le istruzioni in questo tutorial sono definite per Ubuntu 24.04 LTS.
-
Qualsiasi distribuzione Linux in grado di supportare Linux TPM2 Software Stack
può supportare questo meccanismo.
-
-
Una macchina per sviluppatori con AWS CLI installazione e configurazione con le autorizzazioni per:
-
Creare e gestire risorse AWS IoT
-
Crea e gestisci ruoli e policy IAM
-
-
Java Runtime Environment (JRE) versione 8 o successiva installata sul dispositivo.
-
I seguenti pacchetti software sono installati sul dispositivo:
-
curl
-
jpg
-
-
Privilegi root o sudo sul dispositivo.
Fase 1: Installare TPM2 strumenti e dipendenze
In questo passaggio, si installano gli strumenti TPM2 software e le librerie necessari.
-
Aggiorna il tuo gestore di pacchetti e installa TPM2 gli strumenti e le dipendenze eseguendo il comando seguente.
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
-
Installa i pacchetti del provider TPM2 OpenSSL su Ubuntu 24.04 che utilizzano il motore OpenSSL 3.
sudo apt-get install tpm2-openssl
Passaggio 2: inizializza l'archivio PKCS #11 e crea uno slot
-
Crea una directory per archiviare i dati.
sudo mkdir -p /etc/tpm2_pkcs11
-
Imposta la posizione di archiviazione come variabile di ambiente. Per ulteriori informazioni sulla gerarchia dei negozi, vedere Inizializzazione
. export TPM2_PKCS11_STORE=/etc/tpm2_store
-
Inizializza il TPM2 token con l'oggetto principale.
sudo tpm2_ptool init
Le opzioni disponibili sono le seguenti:
hierarchy-auth HIERARCHY_AUTH
-
La password di autorizzazione per aggiungere un oggetto principale alla gerarchia.
primary-auth PRIMARY_AUTH
-
Valore di autorizzazione per l'oggetto chiave primaria esistente.
L'impostazione predefinita è un valore di autenticazione vuoto.
primary-handle [PRIMARY_HANDLE]
-
Usa un oggetto chiave primaria esistente.
Impostazione predefinita:
0x81000001
transient-parents
-
Usa un oggetto primario transitorio di un determinato modello.
Valori:
tpm2-tools-default
,,tpm2-tools-ecc-default
tss2-engine-key
path PATH
-
La posizione della directory del negozio. Se specificata, la directory deve esistere. Se non è specificato, esegue una ricerca esaminando la variabile di ambiente
TPM2_PKCS11_STORE
. Se quella variabile di ambiente non è impostata, verrà esaminata/etc/tpm2_pkcs11
. Se quella directory non viene trovata o non può essere creata, per impostazione predefinita è la directory di lavoro corrente.
Fase 3: Creare un token e una chiave
-
Crea un token PKCS #11.
sudo tpm2_ptool addtoken —pid=1 —userpin=
USERPIN
—sopin=SOPIN
—label=greengrassLe opzioni disponibili sono le seguenti:
--pid PID
-
L'id dell'oggetto principale da associare a questo token.
--sopin SOPIN
-
Il pin dell'amministratore. Questo pin viene utilizzato per il ripristino degli oggetti.
--userpin USERPIN
-
Il pin dell'utente. Questo pin viene utilizzato per l'autenticazione per l'uso degli oggetti.
--label LABEL
-
Un'etichetta univoca per identificare il profilo in uso deve essere unica.
--hierarchy-auth HIERARCHY_AUTH
-
Crea un oggetto chiave ECC.
sudo tpm2_ptool addkey —algorithm=ecc256 —label=greengrass —userpin=****** —key-label=greenkey
--label LABEL
-
Anche l'etichetta dei token per importare la chiave.
--key-label KEY_LABEL
-
L'etichetta della chiave importata. Il valore predefinito è un valore intero.
--id ID
-
L'id della chiave. Il valore predefinito è composto da 8 byte casuali di file esadecimali.
--attr-always-authenticate
-
Imposta l'attributo CKA_ALWAYS_AUTHENTICATE su CK_TRUE.
--hierarchy-auth HIERARCHY_AUTH
-
L'hierarchyauth, richiesto per gli oggetti transitori.
--sopin SOPIN
-
Il pin dell'amministratore.
--userpin USERPIN
-
Il pin utente.
--algorithm
-
{rsa1024, rsa2048, rsa3072, rsa4096, aes128, aes256, ecc224, ecc256, ecc384, ecc521, hmac:sha1, hmac:sha256, hmac:sha384, hmac:sha512}
Il tipo di chiave.
-
Esporta l'oggetto TPM2 -TSS dal token per acquisire i dati di autenticazione.
yaml_ecc0=$(sudo tpm2_ptool export —label="greengrass" —key-label="greenkey" —userpin="******")
Output di esempio:
> echo $yaml_ecc0 object-auth: 706c1cad8a5238871b30149705255926 primary-object: auth: '' hierarchy: owner is_transient: false
Nota
Troverai anche un file chiamato `greenkey.pem` che è la chiave TSS2 privata nella directory in cui hai eseguito questo comando. Usalo per generare la CSR con il provider tpm2 openssl. Il file TSS2 PRIVATE KEY è protetto dal TPM e non può essere utilizzato su un altro computer. Per ulteriori informazioni sulle TSS2 chiavi con OpenSSL, consulta Memorizzazione della chiave privata
o pubblica. -
Acquisisci i dati di autenticazione per la chiave privata TSS.
auth_ecc0=$(echo "$yaml_ecc0" | grep "object-auth" | cut -d' ' -f2-)
Fase 4: Generazione della richiesta di firma del certificato (CSR)
In questo passaggio, utilizzerai la chiave privata TPM2 -protected per generare una CSR.
-
Genera una CSR utilizzando il provider. TPM2
sudo openssl req -new -provider tpm2 -provider base -key greenkey.pem -passin "pass:$auth_ecc0" -out "$H"$HOSTNAME".csr
Quando richiesto, fornisci le informazioni richieste per la tua CSR, tra cui:
-
Nome del Paese (codice a 2 lettere)
-
State or Province Name (Nome stato o provincia)
-
Nome località
-
Nome organizzazione
-
Organizational Unit Name (Nome unità organizzativa)
-
Common Name (Nome comune)
-
Indirizzo e-mail
In alternativa, puoi fornire un file di configurazione OpenSSL per la generazione automatica. Per ulteriori informazioni, consulta la documentazione di OpenSSL
. -
-
Se non stai generando la CSR sulla stessa macchina, copia la CSR generata su una macchina con le credenziali configurate. AWS
Fase 5: Creare il certificato dell'oggetto
Crea un certificato di AWS IoT oggetto. Per ulteriori informazioni su come creare un certificato di oggetto, vedereCrea il certificato dell'oggetto.
Fase 6: Importazione del certificato del oggetto in TPM
-
Copia il certificato dell'oggetto sul dispositivo.
-
Aggiungi il thing certificate al token Greengrass.
sudo tpm2_ptool addcert --label=greengrass --key-label=greenkey device.pem.crt
Le opzioni disponibili sono le seguenti:
--help
-
Mostra questo messaggio di aiuto ed esci.
--label LABEL
-
L'etichetta del profilo da rimuovere.
--key-label KEY_LABEL
-
L'etichetta della chiave privata associata.
--key-id KEY_ID
-
L'id della chiave privata associata è esadecimale.
cert
-
Il certificato PEM x509 da aggiungere.
Passaggio 7: acquisizione dell'URL dell'oggetto PKCS #11
Useremo quanto p11tool
fornito dal gnutls-bin
pacchetto per ottenere l'URL e l'oggetto del token PKCS #11. URLs
-
Acquisisci l'URL del token Greengrass.
TOKEN=sudo p11tool --list-token-urls | grep "token=greengrass"
-
Ottieni l'oggetto URLs per il token Greengrass. Usa lo stesso pin che hai usato nel passaggio 3.
sudo p11tool --login --list-all "${TOKEN}"
Output di esempio:
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
-
Acquisisci l'URL dell'oggetto per la chiave privata e il certificato.
Fase 8: Configurare e installare Greengrass con supporto TPM2
-
Configura il certificato Thing. Per ulteriori informazioni, consulta Configurare il certificato del oggetto.
-
Completa le istruzioni per installare il software AWS IoT Greengrass Core con la chiave privata e il certificato in un ingresso HSM. Installa il software Core AWS IoT Greengrass Quindi, utilizzate i seguenti passaggi per configurare l'installazione da utilizzare TPM2 tramite l'interfaccia PKCS #11.
-
Verifica di aver scaricato e salvato il componente del provider PKCS #11 nella posizione del programma di installazione di Greengrass.
-
Utilizzate un editor di testo per creare un file di configurazione denominato
config.yaml
da fornire all'installatore. Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNUnano
per creare il file.nano GreengrassInstaller/config.yaml
-
Copiate il seguente contenuto YAML nel file. Questo file di configurazione parziale specifica i parametri di sistema, i parametri Greengrass nucleus e i parametri del provider 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"
-
Modifica il file con i parametri specifici per l'installazione.
-
Aggiorna certificateFilePath e privateKeyPath con l'aggiornamento certificateFilePath e privateKeyPath con l'URL PKCS #11 acquisito nel passaggio 7.
-
Aggiorna il tuo iotDataEndpoint e iotCredEndpoint in base al tuo AWS IoT endpoint.
-
Nella
aws.greengrass.crypto.Pkcs11Provider
configurazione, aggiorna la libreria in base alla tua piattaforma.Nota
L'esempio mostrato è per X86_64. Il percorso del file sarà simile per il dispositivo. ARM64
-
-
Completa i passaggi di installazione di Greengrass in. Installa il software Core AWS IoT Greengrass
Fase 9: Verifica dell'installazione
In questo passaggio, verificherai che Greengrass funzioni correttamente con TPM2 l'integrazione.
-
Controlla lo stato del servizio Greengrass.
sudo systemctl status greengrass.service
-
Visualizza i log di Greengrass per assicurarti che non vi siano errori.
sudo tail -f /greengrass/v2/logs/greengrass.log
-
Verifica che il dispositivo appaia come connesso nella AWS IoT console.
-
Accedi alla AWS IoT Greengrass console
. -
In Gestione, espandi i dispositivi Greengrass e scegli Dispositivi Core.
-
Conferma che il dispositivo è connesso. Lo stato del dispositivo verrà visualizzato
HEALTHY
se è connesso. Per ulteriori informazioni, consulta Controlla lo stato del dispositivo Greengrass core.
-
Risoluzione dei problemi
Se riscontri problemi durante la configurazione o il funzionamento del tuo dispositivo Greengrass TPM2 abilitato, prova i seguenti passaggi per la risoluzione dei problemi.
-
Controlla il file di registro principale di Greengrass.
sudo tail -f /greengrass/v2/logs/greengrass.log
-
Verifica la configurazione del provider PKCS #11.
sudo cat /greengrass/v2/config/effectiveConfig.yaml
-
Assicurarsi che il TPM2 servizio sia in esecuzione.
sudo systemctl status tpm2-abrmd.service
-
Verifica che la TPM2 chiave sia accessibile.
sudo pkcs11-tool —module /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -l -p 123456 —list-objects
-
Se il sistema operativo è configurato con la crittografia completa del disco con chiavi root di TPM2 archiviazione come Clevis o systemd-cryptenroll, verifica di non utilizzare lo stesso handle persistente utilizzato da questi strumenti. L'utilizzo dello stesso handle persistente potrebbe influire sul meccanismo di crittografia del disco. Per controllare tutti gli handle persistenti creati e utilizzati, esegui il comando seguente
sudo tpm2_getcap handles-persistent
Passaggi successivi
Ora che hai integrato con successo il tuo dispositivo principale Greengrass con TPM2, puoi:
-
Implementa i componenti sul tuo dispositivo Greengrass sicuro. Per ulteriori informazioni, consulta Implementazione AWS IoT Greengrass dei componenti sui dispositivi
-
Configura dispositivi Greengrass aggiuntivi con TPM2 integrazione.
Per ulteriori informazioni sulla sicurezza dei dispositivi Greengrass, vedere. Sicurezza in AWS IoT Greengrass