AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.
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
Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.7 e versioni successive.
AWS IoT Greengrass supporta l'uso di moduli di sicurezza hardware (HSM) tramite l'interfaccia PKCS #11 per l'archiviazione e l'offload sicuri delle chiavi private. In questo modo, si impedisce che le chiavi vengano esposte o duplicate nel software. Le chiavi private possono essere archiviate in modo sicuro su moduli hardwareHSMs, come Trusted Platform Modules (TPM) o altri elementi crittografici.
Cerca i dispositivi idonei per questa funzionalità nel Catalogo dei AWS Partner dispositivi
Il diagramma seguente mostra l'architettura di sicurezza hardware per un AWS IoT Greengrass core.
In un'installazione standard, AWS IoT Greengrass utilizza due chiavi private. Una chiave viene utilizzata dal componente AWS IoT client (client IoT) durante l'handshake Transport Layer Security (TLS) quando si connette un core Greengrass. AWS IoT Core Questa chiave viene anche denominata chiave privata core. L'altra chiave viene utilizzata dal MQTT server locale, che consente ai dispositivi Greengrass di comunicare con il core Greengrass. Se desideri utilizzare la sicurezza hardware per entrambi i componenti, puoi utilizzare una chiave privata condivisa o chiavi private separate. Per ulteriori informazioni, consulta Pratiche di provisioning per la sicurezza dell'hardware AWS IoT Greengrass.
Nota
In un'installazione standard, il Secrets Manager locale utilizza anche la chiave client IoT per il processo di crittografia, ma puoi utilizzare la tua chiave privata. Deve essere una RSA chiave con una lunghezza minima di 2048 bit. Per ulteriori informazioni, consulta Specificare la chiave privata per la crittografia dei segreti.
Requisiti
Prima di configurare la sicurezza hardware di un core Greengrass, devi disporre di quanto segue:
-
Un modulo di sicurezza hardware (HSM) che supporta la configurazione della chiave privata di destinazione per i componenti del client IoT, MQTT del server locale e del gestore dei segreti locali. La configurazione può includere una, due o tre chiavi private basate su hardware, a seconda che si configurino i componenti per condividere le chiavi. Per ulteriori informazioni sul supporto per la chiave privata, consulta AWS IoT Greengrass principi di sicurezza fondamentali.
Per RSA le chiavi: una chiave di dimensione pari o superiore a RSA -2048 e uno schema di firma PKCS#1 v1.5.
Per le chiavi EC: una curva NIST P-256 o P-384. NIST
-
Il modulo hardware deve essere risolvibile tramite l'etichetta dello slot, come definito nella specifica #11. PKCS
-
La chiave privata deve essere generata e caricata su utilizzando gli strumenti HSM di provisioning forniti dal fornitore.
-
La chiave privata deve essere risolvibile mediante l'etichetta dell'oggetto.
-
Il certificato del dispositivo core. Si tratta di un certificato del client IoT corrispondente alla chiave privata.
-
Se si utilizza l'agente di OTA aggiornamento Greengrass, è necessario installare la libreria wrapper Open SSL libp11 PKCS #11
. Per ulteriori informazioni, consulta Configura il supporto per gli aggiornamenti over-the-air .
Inoltre, assicurati che siano soddisfatte le seguenti condizioni:
-
I certificati client IoT associati alla chiave privata vengono registrati AWS IoT e attivati. Puoi verificarlo nella AWS IoT console sotto Gestisci, espandere Tutti i dispositivi, scegliere Cose e scegliere la scheda Certificati per l'elemento principale.
-
Il software AWS IoT Greengrass Core v1.7 o successivo viene installato sul dispositivo principale, come descritto nel Modulo 2 del tutorial Getting Started. È richiesta la versione 1.9 o successiva per utilizzare una chiave EC per il MQTT server.
-
I certificati sono collegati al core Greengrass. Puoi verificarlo dalla pagina Gestisci relativa all'elemento principale della AWS IoT console.
Nota
Attualmente, AWS IoT Greengrass non supporta il caricamento del certificato CA o del certificato client IoT direttamente daHSM. I certificati devono essere caricati come file di testo normale nel file system in un percorso che sia leggibile da Greengrass.
Configurazione di sicurezza hardware per un AWS IoT Greengrass core
La sicurezza hardware viene configurata nel file di configurazione di Greengrass. Si tratta del file config.json, disponibile nella directory /
.greengrass-root
/config
Nota
Per illustrare il processo di impostazione di una HSM configurazione utilizzando un'implementazione software pura, consultaModulo 7: Simulazione dell'integrazione di sicurezza hardware.
Importante
La configurazione simulata nell'esempio non fornisce alcun vantaggio dal punto di vista della sicurezza. Ha lo scopo di consentirti di conoscere la specifica PKCS #11 e di eseguire test iniziali del tuo software se prevedi di utilizzare una soluzione basata su hardware HSM in futuro.
Per configurare la sicurezza hardware in AWS IoT Greengrass, è necessario modificare l'crypto
oggetto in. config.json
Quando si utilizza la sicurezza hardware, l'crypto
oggetto viene utilizzato per specificare i percorsi dei certificati, delle chiavi private e degli asset per la libreria del provider PKCS #11 sul core, come illustrato nell'esempio seguente.
"crypto": { "PKCS11" : { "OpenSSLEngine" : "/
path-to-p11-openssl-engine
", "P11Provider" : "/path-to-pkcs11-provider-so
", "slotLabel" : "crypto-token-name
", "slotUserPin" : "crypto-token-user-pin
" }, "principals" : { "IoTCertificate" : { "privateKeyPath" : "pkcs11:object=core-private-key-label
;type=private", "certificatePath" : "file:///path-to-core-device-certificate
" }, "MQTTServerCertificate" : { "privateKeyPath" : "pkcs11:object=server-private-key-label
;type=private" }, "SecretsManager" : { "privateKeyPath": "pkcs11:object=core-private-key-label
;type=private" } }, "caPath" : "file:///path-to-root-ca
"
L'oggetto crypto
include le seguenti proprietà:
Campo | Descrizione | Note |
---|---|---|
caPath |
Il percorso assoluto verso la CA AWS IoT principale. |
Deve essere un file URI del modulo: NotaAssicurati che i tuoi endpoint corrispondano al tipo di certificato. |
PKCS11 |
||
OpenSSLEngine |
Facoltativo. Il percorso assoluto del |
Deve essere un percorso di un file nel file system. Questa proprietà è obbligatoria se si utilizza l'agente di OTA aggiornamento Greengrass con sicurezza hardware. Per ulteriori informazioni, consulta Configura il supporto per gli aggiornamenti over-the-air . |
P11Provider |
Il percorso assoluto della libreria PKCS libdl-loadable dell'implementazione #11. |
Deve essere un percorso di un file nel file system. |
slotLabel |
L'etichetta dello slot utilizzata per identificare il modulo hardware. |
Deve essere conforme alle specifiche dell'etichetta #11. PKCS |
slotUserPin |
L'utente PIN utilizzato per autenticare il core Greengrass nel modulo. |
Deve disporre delle autorizzazioni sufficienti a eseguire C_Sign con le chiavi private configurate. |
principals |
||
IoTCertificate |
Il certificato e la chiave privata che il core utilizza per effettuare le richieste a AWS IoT. | |
IoTCertificate .privateKeyPath
|
Il percorso della chiave privata del core. |
Per l'archiviazione del file system, deve essere un file URI nel formato:. Per l'HSMarchiviazione, deve essere presente un percorso RFC7512 PKCS #11 |
IoTCertificate .certificatePath |
Il percorso assoluto al certificato del dispositivo core. |
Deve essere un file URI del modulo:. |
MQTTServerCertificate |
Facoltativo. La chiave privata utilizzata dal core in combinazione con il certificato per fungere da MQTT server o gateway. |
|
MQTTServerCertificate .privateKeyPath |
Il percorso della chiave privata MQTT del server locale. |
Utilizzate questo valore per specificare la vostra chiave privata per il MQTT server locale. Per l'archiviazione del file system, deve essere un file URI nel formato: Per l'HSMarchiviazione, deve essere presente un percorso RFC7512 PKCS #11 Se questa proprietà viene omessa, AWS IoT Greengrass ruota la chiave in base alle impostazioni di rotazione. Se viene specificata, il cliente sarà responsabile della rotazione della chiave. |
SecretsManager |
La chiave privata che protegge la chiave di dati utilizzata per la crittografia. Per ulteriori informazioni, consulta Distribuzione dei segreti nel core AWS IoT Greengrass. | |
SecretsManager .privateKeyPath |
Il percorso della chiave privata del Secrets Manager locale. |
È supportata solo una RSA chiave. Per l'archiviazione del file system, deve essere un file URI nel formato: Per l'HSMarchiviazione, deve essere presente un percorso RFC7512 PKCS #11 |
Campo | Descrizione | Note |
---|---|---|
caPath |
Il percorso assoluto verso la CA AWS IoT principale. |
Deve essere un file URI del modulo: NotaAssicurati che i tuoi endpoint corrispondano al tipo di certificato. |
PKCS11 |
||
OpenSSLEngine |
Facoltativo. Il percorso assoluto del |
Deve essere un percorso di un file nel file system. Questa proprietà è obbligatoria se si utilizza l'agente di OTA aggiornamento Greengrass con sicurezza hardware. Per ulteriori informazioni, consulta Configura il supporto per gli aggiornamenti over-the-air . |
P11Provider |
Il percorso assoluto della libreria PKCS libdl-loadable dell'implementazione #11. |
Deve essere un percorso di un file nel file system. |
slotLabel |
L'etichetta dello slot utilizzata per identificare il modulo hardware. |
Deve essere conforme alle specifiche dell'etichetta #11. PKCS |
slotUserPin |
L'utente PIN utilizzato per autenticare il core Greengrass nel modulo. |
Deve disporre delle autorizzazioni sufficienti a eseguire C_Sign con le chiavi private configurate. |
principals |
||
IoTCertificate |
Il certificato e la chiave privata che il core utilizza per effettuare le richieste a AWS IoT. | |
IoTCertificate .privateKeyPath
|
Il percorso della chiave privata del core. |
Per l'archiviazione del file system, deve essere un file URI nel formato:. Per l'HSMarchiviazione, deve essere presente un percorso RFC7512 PKCS #11 |
IoTCertificate .certificatePath |
Il percorso assoluto al certificato del dispositivo core. |
Deve essere un file URI del modulo:. |
MQTTServerCertificate |
Facoltativo. La chiave privata utilizzata dal core in combinazione con il certificato per fungere da MQTT server o gateway. |
|
MQTTServerCertificate .privateKeyPath |
Il percorso della chiave privata MQTT del server locale. |
Utilizzate questo valore per specificare la vostra chiave privata per il MQTT server locale. Per l'archiviazione del file system, deve essere un file URI nel formato: Per l'HSMarchiviazione, deve essere presente un percorso RFC7512 PKCS #11 Se questa proprietà viene omessa, AWS IoT Greengrass ruota la chiave in base alle impostazioni di rotazione. Se viene specificata, il cliente sarà responsabile della rotazione della chiave. |
SecretsManager |
La chiave privata che protegge la chiave di dati utilizzata per la crittografia. Per ulteriori informazioni, consulta Distribuzione dei segreti nel core AWS IoT Greengrass. | |
SecretsManager .privateKeyPath |
Il percorso della chiave privata del Secrets Manager locale. |
È supportata solo una RSA chiave. Per l'archiviazione del file system, deve essere un file URI nel formato: Per l'HSMarchiviazione, deve essere presente un percorso RFC7512 PKCS #11 |
Campo | Descrizione | Note |
---|---|---|
caPath |
Il percorso assoluto verso la CA AWS IoT principale. |
Deve essere un file URI del modulo: NotaAssicurati che i tuoi endpoint corrispondano al tipo di certificato. |
PKCS11 |
||
OpenSSLEngine |
Facoltativo. Il percorso assoluto del |
Deve essere un percorso di un file nel file system. Questa proprietà è obbligatoria se si utilizza l'agente di OTA aggiornamento Greengrass con sicurezza hardware. Per ulteriori informazioni, consulta Configura il supporto per gli aggiornamenti over-the-air . |
P11Provider |
Il percorso assoluto della libreria PKCS libdl-loadable dell'implementazione #11. |
Deve essere un percorso di un file nel file system. |
slotLabel |
L'etichetta dello slot utilizzata per identificare il modulo hardware. |
Deve essere conforme alle specifiche dell'etichetta #11. PKCS |
slotUserPin |
L'utente PIN utilizzato per autenticare il core Greengrass nel modulo. |
Deve disporre delle autorizzazioni sufficienti a eseguire C_Sign con le chiavi private configurate. |
principals |
||
IoTCertificate |
Il certificato e la chiave privata che il core utilizza per effettuare le richieste a AWS IoT. | |
IoTCertificate .privateKeyPath
|
Il percorso della chiave privata del core. |
Per l'archiviazione del file system, deve essere un file URI nel formato:. Per l'HSMarchiviazione, deve essere presente un percorso RFC7512 PKCS #11 |
IoTCertificate .certificatePath |
Il percorso assoluto al certificato del dispositivo core. |
Deve essere un file URI del modulo:. |
MQTTServerCertificate |
Facoltativo. La chiave privata utilizzata dal core in combinazione con il certificato per fungere da MQTT server o gateway. |
|
MQTTServerCertificate .privateKeyPath |
Il percorso della chiave privata MQTT del server locale. |
Utilizzate questo valore per specificare la vostra chiave privata per il MQTT server locale. Per l'archiviazione del file system, deve essere un file URI nel formato: Per l'HSMarchiviazione, deve essere presente un percorso RFC7512 PKCS #11 Se questa proprietà viene omessa, AWS IoT Greengrass ruota la chiave in base alle impostazioni di rotazione. Se viene specificata, il cliente sarà responsabile della rotazione della chiave. |
SecretsManager |
La chiave privata che protegge la chiave di dati utilizzata per la crittografia. Per ulteriori informazioni, consulta Distribuzione dei segreti nel core AWS IoT Greengrass. | |
SecretsManager .privateKeyPath |
Il percorso della chiave privata del Secrets Manager locale. |
È supportata solo una RSA chiave. Per l'archiviazione del file system, deve essere un file URI nel formato: Per l'HSMarchiviazione, deve essere presente un percorso RFC7512 PKCS #11 |
Pratiche di provisioning per la sicurezza dell'hardware AWS IoT Greengrass
Di seguito sono elencate le prassi di provisioning correlate alla sicurezza e alle prestazioni.
- Sicurezza
-
-
Genera chiavi private direttamente sul HSM utilizzando il generatore di numeri casuali hardware interno.
Nota
Se configuri le chiavi private da utilizzare con questa funzionalità (seguendo le istruzioni fornite dal fornitore dell'hardware), tieni presente che AWS IoT Greengrass attualmente supporta solo il meccanismo di riempimento della versione PKCS1 1.5 per la crittografia e la decrittografia dei segreti locali. AWS IoT Greengrass non supporta Optimal Asymmetric Encryption Padding (). OAEP
-
Configurare le chiavi private per impedire l'esportazione.
-
Utilizzate lo strumento di provisioning fornito dal fornitore dell'hardware per generare una richiesta di firma del certificato (CSR) utilizzando la chiave privata protetta dall'hardware, quindi utilizzate la console per generare un certificato client. AWS IoT
Nota
La pratica della rotazione delle chiavi non si applica quando le chiavi private vengono generate su un. HSM
-
- Prestazioni
-
Il diagramma seguente mostra il componente client IoT e il MQTT server locale sul AWS IoT Greengrass core. Se si desidera utilizzare una HSM configurazione per entrambi i componenti, è possibile utilizzare la stessa chiave privata o chiavi private separate. Se usi chiavi separate, devono essere memorizzate nello stesso slot.
Nota
AWS IoT Greengrass non impone alcun limite al numero di chiavi archiviate suHSM, quindi puoi archiviare le chiavi private per i componenti del client IoT, del MQTT server e del gestore dei segreti. Tuttavia, alcuni HSM fornitori potrebbero imporre limiti al numero di chiavi che è possibile archiviare in uno slot.
In generale, la chiave client IoT non viene utilizzata molto frequentemente perché il software AWS IoT Greengrass Core mantiene connessioni di lunga durata al cloud. Tuttavia, la chiave del MQTT server viene utilizzata ogni volta che un dispositivo Greengrass si connette al core. Queste interazioni incidono direttamente sulle prestazioni.
Quando la chiave del MQTT server è memorizzata suHSM, la velocità con cui i dispositivi possono connettersi dipende dal numero di operazioni di RSA firma al secondo che HSM possono eseguire. Ad esempio, se HSM occorrono 300 millisecondi per eseguire una firma RSASSA - PKCS1 -v1.5 su una chiave privata RSA -2048, solo tre dispositivi possono connettersi al core Greengrass al secondo. Dopo aver effettuato le connessioni, non HSM viene più utilizzato e vengono applicate le quote standard. AWS IoT Greengrass
Per mitigare i problemi di prestazioni, è possibile archiviare la chiave privata del MQTT server sul file system anziché su. HSM Con questa configurazione, il MQTT server si comporta come se la sicurezza hardware non fosse abilitata.
AWS IoT Greengrass supporta più configurazioni di archiviazione delle chiavi per i componenti client e MQTT server IoT, in modo da poter ottimizzare i requisiti di sicurezza e prestazioni. La tabella seguente include le configurazioni di esempio.
Configurazione Chiave IoT MQTTchiave Prestazioni HSMChiave condivisa HSM: Chiave A HSM: Chiave A Limitato da HSM o CPU HSMChiavi separate HSM: Chiave A HSM: Tasto B Limitato da HSM o CPU HSMsolo per IoT HSM: Chiave A File system: chiave B Limitato da CPU Legacy File system: chiave A File system: chiave B Limitato dal CPU Per configurare il core Greengrass in modo che utilizzi chiavi basate sul file system per il MQTT server, ometti la
principals.MQTTServerCertificate
sezione daconfig.json
(o specifica un percorso basato su file per la chiave se non utilizzi la chiave predefinita generata da). AWS IoT Greengrass L'oggettocrypto
risultante avrà il seguente aspetto:"crypto": { "PKCS11": { "OpenSSLEngine": "...", "P11Provider": "...", "slotLabel": "...", "slotUserPin": "..." }, "principals": { "IoTCertificate": { "privateKeyPath": "...", "certificatePath": "..." }, "SecretsManager": { "privateKeyPath": "..." } }, "caPath" : "..." }
Suite di cifratura supportate per l'integrazione della sicurezza hardware
AWS IoT Greengrass supporta un set di suite di crittografia quando il core è configurato per la sicurezza hardware. Si tratta di un sottoinsieme delle suite di cifratura supportate quando il core è configurato per l'uso della sicurezza basata su file. Per ulteriori informazioni, consulta Supporto TLS per le suite di cifratura.
Nota
Quando ti connetti al core Greengrass dai dispositivi Greengrass tramite la rete locale, assicurati di utilizzare una delle suite di crittografia supportate per effettuare la connessione. TLS
Configura il supporto per gli aggiornamenti over-the-air
Per abilitare over-the-air (OTA) gli aggiornamenti del software AWS IoT Greengrass Core quando si utilizza la sicurezza hardware, è necessario installare la libreria wrapper OpenSC PKCS libp11 #11
Arrestare il daemon Greengrass.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stopNota
greengrass-root
rappresenta il percorso in cui il software AWS IoT Greengrass Core è installato sul dispositivo. In genere, questa è la directory/greengrass
.Installa il SSL motore Open. Sono supportati Open SSL 1.0 o 1.1.
sudo apt-get install libengine-pkcs11-openssl
Trova il percorso dell'Open SSL engine (
libpkcs11.so
) sul tuo sistema:Ottenere l'elenco dei pacchetti installati per la libreria.
sudo dpkg -L libengine-pkcs11-openssl
Il file
libpkcs11.so
è disponibile nella directoryengines
.Copiare il percorso completo del file (ad esempio,
/usr/lib/ssl/engines/libpkcs11.so
).
Aprire il file di configurazione Greengrass. Si tratta del file config.json nella directory
/
.greengrass-root
/config-
Per la proprietà
OpenSSLEngine
, immettere il percorso del filelibpkcs11.so
.{ "crypto": { "caPath" : "file:///
path-to-root-ca
", "PKCS11" : { "OpenSSLEngine" : "/path-to-p11-openssl-engine
", "P11Provider" : "/path-to-pkcs11-provider-so
", "slotLabel" : "crypto-token-name
", "slotUserPin" : "crypto-token-user-pin
" }, ... } ... }Nota
Aggiungere la proprietà
OpenSSLEngine
, se non esiste nell'oggettoPKCS11
. Avviare il daemon Greengrass.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Retrocompatibilità con le versioni precedenti del software di AWS IoT Greengrass base
Il software AWS IoT Greengrass Core con supporto per la sicurezza hardware è completamente retrocompatibile con config.json
i file generati per la versione 1.6 e versioni precedenti. Se l'crypto
oggetto non è presente nel file di config.json
configurazione, AWS IoT Greengrass utilizza le proprietà e basate sul filecoreThing.certPath
. coreThing.keyPath
coreThing.caPath
Questa compatibilità con le versioni precedenti si applica agli aggiornamenti di OTA Greengrass, che non sovrascrivono una configurazione basata su file specificata in. config.json
Hardware senza supporto PKCS #11
La libreria PKCS #11 è in genere fornita dal fornitore dell'hardware o è open source. Ad esempio, con hardware conforme agli standard (ad esempio TPM1 .2), potrebbe essere possibile 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 AWS Enterprise Support per domande relative all'integrazione.
Consulta anche
-
PKCSGuida all'uso dell'interfaccia con token crittografici #11 Versione 2.40. Pubblicato da John Leiseboer e Robert Griffin. 16 Novembre 2014. OASISNota del Comitato 02. http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/cn02/pkcs11-ug-v2.40-cn02.html
. Versione più recente: http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html .