Integrazione della sicurezza hardware - 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à.

Integrazione della sicurezza hardware

Nota

Questa funzionalità è disponibile per la versione 2.5.3 e successive del componente Greengrass nucleus. AWS IoT Greengrassattualmente non supporta questa funzionalità sui dispositivi Windows core.

È possibile configurare il software AWS IoT Greengrass Core per utilizzare un modulo di sicurezza hardware (HSM) tramite l'interfaccia PKCS #11. Questa funzionalità consente di archiviare in modo sicuro la chiave privata e il certificato del dispositivo in modo che non vengano esposti o duplicati nel software. È possibile archiviare la chiave privata e il certificato su un modulo hardware come un HSM o un Trusted Platform Module (TPM).

Il software AWS IoT Greengrass Core utilizza una chiave privata e un certificato X.509 per autenticare le connessioni ai servizi e. AWS IoT AWS IoT Greengrass Il componente secret manager utilizza questa chiave privata per crittografare e decrittografare in modo sicuro i segreti distribuiti su un dispositivo centrale Greengrass. Quando configurate un dispositivo principale per l'utilizzo di un HSM, questi componenti utilizzano la chiave privata e il certificato archiviati nell'HSM.

Il componente del broker Moquette MQTT memorizza anche una chiave privata per il certificato del server MQTT locale. Questo componente memorizza la chiave privata sul file system del dispositivo nella cartella di lavoro del componente. Attualmente, AWS IoT Greengrass non supporta l'archiviazione di questa chiave privata o certificato in un HSM.

Suggerimento

Cerca i dispositivi che supportano questa funzionalità nel AWSPartner Device Catalog.

Requisiti

È necessario soddisfare i seguenti requisiti per utilizzare un HSM su un dispositivo core Greengrass:

  • Greengrass nucleus v2.5.3 o versione successiva installato sul dispositivo principale. È possibile scegliere una versione compatibile quando si installa il software AWS IoT Greengrass Core su un dispositivo principale.

  • Il componente del provider PKCS #11 installato sul dispositivo principale. È possibile scaricare e installare questo componente quando si installa il software AWS IoT Greengrass Core su un dispositivo principale.

  • Un modulo di sicurezza hardware che supporta lo schema di firma PKCS #1 v1.5 e le chiavi RSA con chiave RSA-2048 (o superiore) o chiavi ECC.

    Nota

    Per utilizzare un modulo di sicurezza hardware con chiavi ECC, è necessario utilizzare Greengrass nucleus v2.5.6 o versione successiva.

    Per utilizzare un modulo di sicurezza hardware e un gestore segreto, è necessario utilizzare un modulo di sicurezza hardware con chiavi RSA.

  • Una libreria di provider PKCS #11 che il software AWS IoT Greengrass Core può caricare in fase di esecuzione (usando libdl) per richiamare le funzioni PKCS #11. La libreria del provider PKCS #11 deve implementare le seguenti operazioni API PKCS #11:

    • C_Initialize

    • C_Finalize

    • C_GetSlotList

    • C_GetSlotInfo

    • C_GetTokenInfo

    • C_OpenSession

    • C_GetSessionInfo

    • C_CloseSession

    • C_Login

    • C_Logout

    • C_GetAttributeValue

    • C_FindObjectsInit

    • C_FindObjects

    • C_FindObjectsFinal

    • C_DecryptInit

    • C_Decrypt

    • C_DecryptUpdate

    • C_DecryptFinal

    • C_SignInit

    • C_Sign

    • C_SignUpdate

    • C_SignFinal

    • C_GetMechanismList

    • C_GetMechanismInfo

    • C_GetInfo

    • C_GetFunctionList

  • Il modulo hardware deve essere risolvibile mediante l'etichetta dello slot, come definito nella specifica PKCS#11.

  • È necessario archiviare la chiave privata e il certificato nell'HSM nello stesso slot e utilizzare la stessa etichetta e lo stesso ID dell'oggetto, se l'HSM supporta gli ID degli oggetti.

  • Il certificato e la chiave privata devono essere risolvibili mediante etichette di oggetti.

  • La chiave privata deve avere le seguenti autorizzazioni:

    • sign

    • decrypt

  • (Facoltativo) Per utilizzare il componente Secret Manager, è necessario utilizzare la versione 2.1.0 o successiva e la chiave privata deve disporre delle seguenti autorizzazioni:

    • unwrap

    • wrap

Procedure ottimali per la sicurezza dell'hardware

Prendi in considerazione le seguenti best practice quando configuri la sicurezza hardware sui dispositivi core Greengrass.

  • Generare chiavi private direttamente nell'HSM tramite il generatore di numeri casuali hardware interno. Questo approccio è più sicuro rispetto all'importazione di una chiave privata generata altrove, poiché la chiave privata rimane all'interno dell'HSM.

  • Configura le chiavi private in modo che siano immutabili e proibisca l'esportazione.

  • Utilizza lo strumento di provisioning consigliato dal fornitore di hardware HSM per generare una richiesta di firma del certificato (CSR) utilizzando la chiave privata protetta dall'hardware, quindi utilizza la console o l'API per generare un certificato client. AWS IoT

Nota

La procedura consigliata in materia di sicurezza per ruotare le chiavi non si applica quando si generano chiavi private su un HSM.

Installa il software AWS IoT Greengrass Core con sicurezza hardware

Quando installi il software AWS IoT Greengrass Core, puoi configurarlo per utilizzare una chiave privata generata in un HSM. Questo approccio segue le migliori pratiche di sicurezza per generare la chiave privata nell'HSM, in modo che la chiave privata rimanga all'interno dell'HSM.

Per installare il software AWS IoT Greengrass Core con sicurezza hardware, procedi come segue:

  1. Genera una chiave privata nell'HSM.

  2. Crea una richiesta di firma del certificato (CSR) dalla chiave privata.

  3. Crea un certificato dalla CSR. È possibile creare un certificato firmato da AWS IoT o da un'altra autorità di certificazione (CA) principale. Per ulteriori informazioni su come utilizzare un'altra CA root, consulta Create your own client certificate nella AWS IoT CoreDeveloper Guide.

  4. Scarica il AWS IoT certificato e importalo nell'HSM.

  5. Installa il software AWS IoT Greengrass Core da un file di configurazione che specifica di utilizzare il componente del provider PKCS #11 e la chiave privata e il certificato nell'HSM.

È possibile scegliere una delle seguenti opzioni di installazione per installare il software AWS IoT Greengrass Core con sicurezza hardware:

Attualmente, AWS IoT Greengrass non supporta l'installazione del software AWS IoT Greengrass Core con sicurezza hardware quando si installa con il provisioning automatico delle risorse o il provisioning del AWS IoT parco veicoli.

Configura la sicurezza hardware su un dispositivo principale esistente

È possibile importare la chiave privata e il certificato di un dispositivo principale in un HSM per configurare la sicurezza hardware.

Considerazioni
  • È necessario disporre dell'accesso root al file system del dispositivo principale.

  • In questa procedura, si spegne il software AWS IoT Greengrass Core, in modo che il dispositivo principale sia offline e non disponibile durante la configurazione della sicurezza hardware.

Per configurare la sicurezza hardware su un dispositivo principale esistente, procedi come segue:

  1. Inizializza l'HSM.

  2. Implementa il componente del provider PKCS #11 sul dispositivo principale.

  3. Arresta il software AWS IoT Greengrass Core.

  4. Importa la chiave privata e il certificato del dispositivo principale nell'HSM.

  5. Aggiorna il file di configurazione del software AWS IoT Greengrass Core per utilizzare la chiave privata e il certificato nell'HSM.

  6. Avvia il software AWS IoT Greengrass Core.

Fase 1: inizializzare il modulo di sicurezza hardware

Completa il passaggio seguente per inizializzare l'HSM sul tuo dispositivo principale.

Per inizializzare il modulo di sicurezza hardware
  • Inizializza un token PKCS #11 nell'HSM e salva l'ID dello slot e il PIN utente relativi al token. Consulta la documentazione del tuo HSM per scoprire come inizializzare un token. L'ID dello slot e il PIN utente verranno utilizzati successivamente quando si distribuisce e si configura il componente del provider PKCS #11.

Fase 2: Implementazione del componente del provider PKCS #11

Completare i seguenti passaggi per distribuire e configurare il componente del provider PKCS #11. È possibile distribuire il componente su uno o più dispositivi principali.

  1. Nel menu di navigazione della AWS IoT Greengrassconsole, scegli Componenti.

  2. Nella pagina Componenti, scegli la scheda Componenti pubblici, quindi scegli aws.greengrass.crypto.Pkcs11Provider.

  3. Nella pagina aws.greengrass.crypto.Pkcs11Provider, scegli (Distribuisci).

  4. Da Aggiungi alla distribuzione, scegli una distribuzione esistente da modificare oppure scegli di creare una nuova distribuzione, quindi scegli Avanti.

  5. Se hai scelto di creare una nuova distribuzione, scegli il dispositivo principale o il gruppo di oggetti di destinazione per la distribuzione. Nella pagina Specificare la destinazione, in Obiettivo di distribuzione, scegli un dispositivo principale o un gruppo di oggetti, quindi scegli Avanti.

  6. Nella pagina Seleziona componenti, in Componenti pubblici, seleziona aws.greengrass.crypto.Pkcs11Provider, quindi scegli Avanti.

  7. Nella pagina Configura componenti aws.greengrass.crypto.Pkcs11Provider, selezionate e quindi effettuate le seguenti operazioni:

    1. Scegli Configura componente.

    2. Nella aws.greengrass.crypto.Pkcs11Provider modalità Configura, in Aggiornamento della configurazione, in Configurazione da unire, inserisci il seguente aggiornamento di configurazione. Aggiorna i seguenti parametri di configurazione con i valori per i dispositivi principali di destinazione. Specificate l'ID dello slot e il PIN utente in cui avete inizializzato in precedenza il token PKCS #11. La chiave privata e il certificato verranno importati in questo slot nell'HSM in un secondo momento.

      name

      Un nome per la configurazione PKCS #11.

      library

      Il percorso assoluto del file alla libreria dell'implementazione PKCS #11 che il software AWS IoT Greengrass Core può caricare con libdl.

      slot

      L'ID dello slot che contiene la chiave privata e il certificato del dispositivo. Questo valore è diverso dall'indice o dall'etichetta dello slot.

      userPin

      Il PIN utente da utilizzare per accedere allo slot.

      { "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
    3. Scegli Conferma per chiudere la modalità, quindi scegli Avanti.

  8. Nella pagina Configura impostazioni avanzate, mantieni le impostazioni di configurazione predefinite e scegli Avanti.

  9. Nella pagina Review (Verifica), scegli Deploy (Distribuisci).

    Il completamento della distribuzione può richiedere fino a un minuto.

Per distribuire il componente del provider PKCS #11, create un documento di distribuzione che aws.greengrass.crypto.Pkcs11Provider includa l'componentsoggetto e specificate l'aggiornamento della configurazione per il componente. Segui le istruzioni riportate Creare distribuzione per creare una nuova distribuzione o modificare una distribuzione esistente.

Il seguente esempio di documento di distribuzione parziale specifica di distribuire e configurare il componente del provider PKCS #11. Aggiornate i seguenti parametri di configurazione con i valori per i dispositivi principali di destinazione. Salva l'ID dello slot e il PIN utente da utilizzare in seguito quando importi la chiave privata e il certificato nell'HSM.

name

Un nome per la configurazione PKCS #11.

library

Il percorso assoluto del file alla libreria dell'implementazione PKCS #11 che il software AWS IoT Greengrass Core può caricare con libdl.

slot

L'ID dello slot che contiene la chiave privata e il certificato del dispositivo. Questo valore è diverso dall'indice o dall'etichetta dello slot.

userPin

Il PIN utente da utilizzare per accedere allo slot.

{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
{ ..., "components": { ..., "aws.greengrass.crypto.Pkcs11Provider": { "componentVersion": "2.0.0", "configurationUpdate": { "merge": "{\"name\":\"softhsm_pkcs11\",\"library\":\"/usr/lib/softhsm/libsofthsm2.so\",\"slot\":1,\"userPin\":\"1234\"}" } } } }

La distribuzione può richiedere alcuni minuti. È possibile utilizzare il AWS IoT Greengrass servizio per verificare lo stato della distribuzione. È possibile controllare i registri del software AWS IoT Greengrass Core per verificare che il componente del provider PKCS #11 venga distribuito correttamente. Per ulteriori informazioni, consulta gli argomenti seguenti:

Se la distribuzione non riesce, puoi risolvere i problemi relativi alla distribuzione su ogni dispositivo principale. Per ulteriori informazioni, consulta Risoluzione dei problemi AWS IoT Greengrass V2.

Passaggio 3: Aggiornare la configurazione sul dispositivo principale

Il software AWS IoT Greengrass Core utilizza un file di configurazione che specifica il funzionamento del dispositivo. Questo file di configurazione include dove trovare la chiave privata e il certificato utilizzati dal dispositivo per connettersi a. Cloud AWS Completa i seguenti passaggi per importare la chiave privata e il certificato del dispositivo principale nell'HSM e aggiornare il file di configurazione per utilizzare l'HSM.

Per aggiornare la configurazione sul dispositivo principale per utilizzare la sicurezza hardware
  1. Arresta il software AWS IoT Greengrass Core. Se hai configurato il software AWS IoT Greengrass Core come servizio di sistema con systemd, puoi eseguire il seguente comando per arrestare il software.

    sudo systemctl stop greengrass.service
  2. Trova la chiave privata e i file di certificato del dispositivo principale.

    • Se hai installato il software AWS IoT Greengrass Core con provisioning automatico o fleet provisioning, la chiave privata esiste in/greengrass/v2/privKey.key, e il certificato esiste in. /greengrass/v2/thingCert.crt

    • Se hai installato il software AWS IoT Greengrass Core con il provisioning manuale, la chiave privata esiste /greengrass/v2/private.pem.key per impostazione predefinita e il certificato esiste per impostazione predefinita. /greengrass/v2/device.pem.crt

    Puoi anche controllare le system.certificateFilePath proprietà system.privateKeyPath and /greengrass/v2/config/effectiveConfig.yaml per trovare la posizione di questi file.

  3. Importa la chiave privata e il certificato nell'HSM. Consulta la documentazione del tuo HSM per scoprire come importare chiavi private e certificati al suo interno. Importa la chiave privata e il certificato utilizzando l'ID dello slot e il PIN utente su cui hai inizializzato in precedenza il token PKCS #11. È necessario utilizzare la stessa etichetta dell'oggetto e lo stesso ID dell'oggetto per la chiave privata e il certificato. Salvate l'etichetta dell'oggetto che specificate quando importate ogni file. Questa etichetta viene utilizzata successivamente quando si aggiorna la configurazione del software AWS IoT Greengrass Core per utilizzare la chiave privata e il certificato nell'HSM.

  4. Aggiorna la configurazione AWS IoT Greengrass Core per utilizzare la chiave privata e il certificato nell'HSM. Per aggiornare la configurazione, modificate il file di configurazione AWS IoT Greengrass Core ed eseguite il software AWS IoT Greengrass Core con il file di configurazione aggiornato per applicare la nuova configurazione.

    Esegui questa operazione:

    1. Create un backup del file di configurazione AWS IoT Greengrass Core. Puoi utilizzare questo backup per ripristinare il dispositivo principale in caso di problemi durante la configurazione della sicurezza hardware.

      sudo cp /greengrass/v2/config/effectiveConfig.yaml ~/ggc-config-backup.yaml
    2. Apri il file di configurazione AWS IoT Greengrass Core in un editor di testo. Ad esempio, è possibile eseguire il comando seguente per utilizzare GNU nano per modificare il file. Sostituisci /greengrass/v2 con il percorso della cartella principale di Greengrass.

      sudo nano /greengrass/v2/config/effectiveConfig.yaml
    3. Sostituisci il valore di system.privateKeyPath con l'URI PKCS #11 per la chiave privata nell'HSM. Sostituisci iotdevicekey con l'etichetta dell'oggetto in cui hai importato in precedenza la chiave privata e il certificato.

      pkcs11:object=iotdevicekey;type=private
    4. Sostituisci il valore di system.certificateFilePath con l'URI PKCS #11 per il certificato nell'HSM. Sostituisci iotdevicekey con l'etichetta dell'oggetto in cui hai importato in precedenza la chiave privata e il certificato.

      pkcs11:object=iotdevicekey;type=cert

    Dopo aver completato questi passaggi, la system proprietà nel file di configurazione AWS IoT Greengrass Core dovrebbe essere simile all'esempio seguente.

    system: certificateFilePath: "pkcs11:object=iotdevicekey;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey;type=private" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "MyGreengrassCore"
  5. Applica la configurazione nel effectiveConfig.yaml file aggiornato. Esegui Greengrass.jar con il --init-config parametro in cui applicare la configurazioneeffectiveConfig.yaml. Sostituisci /greengrass/v2 con il percorso della cartella principale di Greengrass.

    sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config /greengrass/v2/config/effectiveConfig.yaml
  6. Avvia il software AWS IoT Greengrass Core. Se hai configurato il software AWS IoT Greengrass Core come servizio di sistema con systemd, puoi eseguire il seguente comando per avviare il software.

    sudo systemctl start greengrass.service

    Per ulteriori informazioni, consulta Esegui il software AWS IoT Greengrass Core.

  7. Controlla i registri del software AWS IoT Greengrass Core per verificare che il software si avvii e si connetta a. Cloud AWS Il software AWS IoT Greengrass Core utilizza la chiave privata e il certificato per connettersi ai AWS IoT Greengrass servizi AWS IoT and.

    sudo tail -f /greengrass/v2/logs/greengrass.log

    I seguenti messaggi di registro a livello di informazioni indicano che il software AWS IoT Greengrass Core si connette correttamente ai servizi AWS IoT andAWS IoT Greengrass.

    2021-12-06T22:47:53.702Z [INFO] (Thread-3) com.aws.greengrass.mqttclient.AwsIotMqttClient: Successfully connected to AWS IoT Core. {clientId=MyGreengrassCore5, sessionPresent=false}
  8. (Facoltativo) Dopo aver verificato che il software AWS IoT Greengrass Core funzioni con la chiave privata e il certificato nell'HSM, eliminate la chiave privata e i file del certificato dal file system del dispositivo. Eseguite il comando seguente e sostituite i percorsi dei file con i percorsi della chiave privata e dei file dei certificati.

    sudo rm /greengrass/v2/privKey.key sudo rm /greengrass/v2/thingCert.crt

Utilizza hardware senza supporto PKCS #11

La libreria PKCS#11 viene in genere offerta dal fornitore hardware o è open source. Ad esempio, con l'hardware conforme allo standard (ad esempio TPM1.2), puoi utilizzare il software open source esistente. Tuttavia, se il tuo hardware non dispone di un'implementazione della libreria PKCS #11 corrispondente o se desideri scrivere un provider PKCS #11 personalizzato, contatta il tuo rappresentante di Amazon Web Services Enterprise Support per domande relative all'integrazione.

Consulta anche