Nozioni di base sulla sicurezza IoT - Parte 5: Connessione sicura ai servizi cloud IoT
Contributo di Editori nordamericani di DigiKey
2020-07-02
Nota del redattore: nonostante la proliferazione dei dispositivi IoT, la sicurezza è una preoccupazione costante, al punto che le sfide alla sicurezza possono rappresentare un ostacolo all'adozione di dispositivi connessi all'Internet delle cose industriale (IIoT) e ad applicazioni mission-critical in cui i dati aziendali e personali possono essere compromessi in caso di un attacco portato a segno. La sicurezza delle applicazioni IoT può rivelarsi complessa, ma in realtà la sicurezza dei dispositivi IoT può basarsi su alcuni principi relativamente semplici che sono supportati dai dispositivi di sicurezza hardware. Seguendo pratiche di sicurezza consolidate si possono affrontare queste preoccupazioni. Questa serie in più parti funge da guida pratica per aiutare gli sviluppatori a seguire fin dall'inizio le best practice. Nella Parte 1 sono discussi gli algoritmi di crittografia alla base di progetti sicuri. La Parte 2 tratta il ruolo delle chiavi private, la gestione delle chiavi e lo storage sicuro in sistemi sicuri. La Parte 3 esamina i meccanismi incorporati nei processori sicuri per mitigare altri tipi di minacce ai dispositivi IoT. La Parte 4 identifica e mostra come applicare i meccanismi di sicurezza nei processori avanzati per garantire l'isolamento necessario al fine di mitigare gli attacchi all'ambiente di runtime dei dispositivi IoT. Questa Parte 5 descrive come la sicurezza IoT continua dai dispositivi IoT attraverso misure di sicurezza di alto livello utilizzate per connettere tali dispositivi alle risorse cloud IoT.
La sicurezza dell'Internet delle cose (IoT) dipende da molteplici livelli di protezione che si estendono dalla base hardware del dispositivo IoT attraverso tutto il suo ambiente di esecuzione. Tuttavia, le minacce persistono per qualsiasi dispositivo connesso e i requisiti tipici delle applicazioni IoT per la connettività cloud possono rendere vulnerabili sia i dispositivi IoT sia i servizi cloud. Per mitigare queste minacce, i fornitori di servizi cloud IoT utilizzano protocolli e criteri di sicurezza specifici che, se utilizzati in modo improprio, possono rendere vulnerabili le applicazioni IoT. Utilizzando schede di sviluppo preconfigurate, gli sviluppatori possono acquisire rapidamente esperienza con i metodi di sicurezza utilizzati dai principali servizi cloud IoT per autenticare le connessioni e autorizzare l'uso dei dispositivi IoT e delle risorse del cloud.
Questo articolo descrive i requisiti di connessione di due importanti servizi cloud, Amazon Web Services (AWS) e Microsoft Azure, e mostra come gli sviluppatori possono utilizzare i kit di sviluppo e il software associato di una varietà di fornitori per connettersi rapidamente con questi servizi.
Il ruolo dei portali IoT nei servizi cloud
Quando un dispositivo IoT si connette a una risorsa come un servizio cloud o un host remoto, espone potenzialmente se stesso - e per estensione l'intera rete IoT - a minacce mascherate da servizi o server legittimi. Dall'altro lato, il servizio cloud stesso si trova a fronteggiare la minaccia di attacchi da parte di hacker che imitano le transazioni dei dispositivi IoT nel tentativo di penetrare le difese del cloud. Per contribuire a garantire la protezione sia dei dispositivi IoT che delle risorse cloud, i servizi cloud richiedono l'utilizzo di specifici protocolli di sicurezza per l'autenticazione reciproca dell'identità di accesso e la successiva autorizzazione per garantire l'utilizzo consentito dei servizi. Questi protocolli sono tipicamente inclusi in un insieme di servizi che forniscono un portale sicuro tra i dispositivi IoT e le risorse cloud.
Come per le altre piattaforme di servizi cloud IoT disponibili, AWS e Azure forniscono ciascuna un portale di accesso specifico che i dispositivi IoT devono utilizzare per interagire con l'insieme completo di risorse cloud di ciascun fornitore, come le macchine virtuali (VM) e le offerte Software-as-a-Service (SaaS). Utilizzando un insieme di meccanismi e capacità funzionalmente simili, Azure IoT Hub e AWS IoT mettono a disposizione questo portale per le rispettive offerte di cloud aziendali.
Come minimo, questi e altri portali IoT utilizzano protocolli di autenticazione specifici implementati attraverso il kit di sviluppo software (SDK) di ogni fornitore per creare una connessione sicura. Per AWS, i dispositivi IoT si connettono tramite autenticazione reciproca con un gateway periferico. Il gateway connette il dispositivo IoT ad altri servizi di supporto IoT, utilizzando le informazioni contenute in un registro del dispositivo per memorizzare un identificativo univoco, le credenziali di sicurezza e altri metadati necessari per gestire l'accesso ai servizi AWS (Figura 1). In Azure, il registro delle identità svolge una funzione simile.
Figura 1: Come per altri fornitori di cloud, AWS fornisce agli sviluppatori una serie di servizi specializzati concepiti per migliorare la sicurezza e l'efficacia delle transazioni tra dispositivi IoT e servizi cloud aziendali. (Immagine per gentile concessione di Amazon Web Services)
AWS IoT e Azure IoT offrono ciascuno un servizio che mantiene le informazioni di stato in un dispositivo virtuale associato a ciascun dispositivo IoT fisico. In AWS IoT, sono i Device Shadow a fornire questa capacità, mentre la capacità simile per Azure IoT è fornita dai Device Twin.
Questa nozione di portale di sicurezza si estende ai servizi IoT edge come AWS Greengrass o Azure IoT Edge. Queste offerte di servizi edge portano alcuni servizi e funzionalità cloud fino alla rete locale, dove nelle distribuzioni su larga scala i sistemi edge sono collocati fisicamente vicino ai dispositivi e ai sistemi IoT. Gli sviluppatori possono utilizzare un servizio come Azure IoT Edge per implementare la logica aziendale dell'applicazione o fornire altre funzionalità necessarie per ridurre la latenza o fornire servizi agli operatori locali, come nel caso dell'automazione industriale (Figura 2).
Figura 2: Per supportare l'edge computing, i fornitori di servizi cloud offrono servizi specializzati come Microsoft Azure IoT Edge, che avvicina alcuni servizi cloud Azure IoT ai dispositivi fisici associati all'applicazione IoT. (Immagine per gentile concessione di Microsoft Azure)
Gestione dei requisiti per la connettività del portale IoT
Sia che si colleghino attraverso un sistema edge o direttamente con il servizio IoT del fornitore, in genere i dispositivi IoT devono soddisfare una serie di requisiti per connettersi attraverso il portale IoT del fornitore e utilizzare i servizi cloud. Anche se i dettagli sono diversi, i dispositivi IoT devono fornire come minimo alcuni elementi, come una chiave privata, un certificato X.509 o un altro token di sicurezza. La chiave, il certificato o il token fornisce al portale IoT un'attestazione o una prova dell'identità del dispositivo IoT durante la fase di autenticazione della sua sequenza di connessione. Inoltre, i servizi cloud IoT in genere richiedono una specifica dei criteri utilizzati per definire i diritti di accesso per le interazioni tra i dispositivi IoT e i servizi cloud.
Come per altri requisiti informatici aziendali, le informazioni di attestazione per l'autenticazione e le informazioni sui criteri per la gestione degli accessi devono essere fornite in formati e tramite procedure specifiche indicate dai principali servizi cloud IoT come AWS IoT e Azure IoT. Questi servizi supportano come minimo l'autenticazione basata sul certificato, ma supportano anche l'uso di altre forme di attestazione. Ad esempio, gli sviluppatori possono utilizzare metodi di autenticazione via token basati su un JSON Web Token (JWT) per AWS IoT o un token Shared Access Signature (SAS) per Azure IoT.
Come accennato in precedenza, questi servizi memorizzano i metadati di ogni dispositivo IoT nei registri. Insieme alla sicurezza e ad altre informazioni, questi registri memorizzano i criteri sui diritti di accesso che devono essere definiti per connettere un dispositivo IoT. Anche se specificate in modi diversi per i diversi servizi cloud, queste definizioni dei criteri descrivono i diritti di accesso per i diversi canali di comunicazione e le diverse entità. Ad esempio, un semplice criterio di diritto di accesso AWS IoT utilizzerebbe il formato JSON per indicare che un dispositivo IoT con un "nome di oggetto" particolare nel registro del dispositivo AWS IoT potrebbe connettersi e pubblicare messaggi solo su un canale con lo stesso nome di oggetto associato (Listato 1).
Copy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action":["iot:Publish"],
"Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}"]
},
{
"Effect": "Allow",
"Action": ["iot:Connect"],
"Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
}
]
}
Listato 1: Gli sviluppatori utilizzano il formato JSON per descrivere i criteri di accesso ai diritti di AWS IoT per i loro dispositivi IoT. (Codice per gentile concessione di AWS)
Kit di sviluppo predisposti per il cloud
Anche se i fornitori di cloud offrono specifiche dettagliate di questi formati e procedure, i forum di supporto dei fornitori sono tipicamente zeppi di domande da parte degli sviluppatori incappati in qualche piccolo ma fondamentale dettaglio che impedisce l'autenticazione e la gestione degli accessi. Forse cosa anche peggiore dal punto di vista della sicurezza, l'involontario uso improprio di attestati o la definizione incompleta dei criteri di accesso possono rendere i dispositivi, le reti e le applicazioni IoT vulnerabili agli attacchi. La disponibilità di schede di sviluppo pronte all'uso e dei relativi pacchetti software consente agli sviluppatori di destreggiarsi rapidamente tra queste procedure di connessione, utilizzando gli esempi proposti dai fornitori per connettersi rapidamente al cloud IoT. Ad esempio, il kit IoT ESP32-Azure di Espressif Systems o il kit di sviluppo IoT AZ3166 di Seeed Technology includono schede certificate Azure progettate per connettersi facilmente al cloud Microsoft.
Microsoft fornisce demo passo-passo complete, incluse l'autenticazione e le credenziali di accesso per i kit di sviluppo supportati. Con la scheda AZ3166, ad esempio, gli sviluppatori premono i vari pulsanti sulla scheda per avviare la connessione con la loro rete Wi-Fi locale. Una volta connessi, possono utilizzare Azure IoT Device Workbench contenuto all'interno del pacchetto di estensioni Azure IoT Tools per Microsoft Visual Studio Code per sviluppare, eseguire il debug e interagire con Azure IoT Hub. Con questo set di strumenti e i suoi pacchetti di codice di esempio, gli sviluppatori creano un oggetto per il dispositivo IoT in Azure IoT Hub e utilizzano un file fornito per trasferire al registro delle identità associato le credenziali e gli altri metadati necessari per connettere la scheda IoT ad Azure IoT Hub (Figura 3).
Figura 3: Il codice di esempio e le credenziali fornite in Microsoft Azure IoT Device Workbench aiutano gli sviluppatori a completare il provisioning per la connessione del kit di sviluppo IoT AZ3166 di Seeed Technology ad Azure IoT Hub. (Immagine per gentile concessione di Microsoft Azure)
Azure IoT Device Workbench fornisce un ulteriore software di supporto e metadati che consentono agli sviluppatori di caricare rapidamente nella scheda AZ3166 il codice di esempio per iniziare a trasmettere le misurazioni dal sensore di temperatura e umidità della scheda ad Azure IoT Hub.
I passaggi necessari per creare una rappresentazione per il dispositivo fisico IoT nel cloud IoT e per il provisioning del registro associato sono necessari solo per connettere i dispositivi al cloud IoT. Per poter usufruire dei servizi cloud, tuttavia, Azure IoT Hub ha bisogno di criteri dei diritti di accesso. Per monitorare i messaggi da dispositivo a dispositivo provenienti dal sensore AZ3166, gli sviluppatori possono semplicemente utilizzare la schermata dei criteri di accesso Azure per selezionare un criterio predefinito studiato per abilitare rapidamente i diritti di accesso richiesti (Figura 4).
Figura 4: Gli sviluppatori possono utilizzare criteri predefiniti per autorizzare facilmente l'uso dei servizi cloud Azure con i dati del sensore sul kit di sviluppo IoT AZ3166 di Seeed Technology. (Immagine per gentile concessione di Microsoft Azure)
Quando lavorano con AWS IoT, gli sviluppatori possono utilizzare un kit di sviluppo come AT88CKECC-AWS-XSTK-B Zero Touch Provisioning di Microchip Technology e il software di accompagnamento per valutare rapidamente la connettività cloud. Questa versione aggiornata di un precedente kit di Zero Touch Provisioning di Microchip è fornita precaricata con le credenziali di autenticazione. Utilizzando gli script aggiuntivi forniti nel kit, gli sviluppatori possono connettere rapidamente la scheda ad AWS IoT senza aver a che fare con chiavi private e certificati (a tal proposito, si veda "Adottate l'approccio Zero-Touch per bloccare in modo sicuro un dispositivo IoT").
Altri kit di sviluppo, incluso il kit per cloud RTK5RX65N0S01000BE RX65N di Renesas e il kit per AWS IoT KITXMC48IOTAWSWIFITOBO1 di Infineon Technologies, estendono il supporto per la connettività AWS IoT con il supporto per lo sviluppo rapido di applicazioni basate su Amazon FreeRTOS. AWS fornisce indicazioni dettagliate per la registrazione delle schede, la creazione di credenziali di autenticazione e il caricamento dei criteri JSON necessari per connettersi ad AWS IoT e utilizzare i servizi AWS.
Semplificare il provisioning per le distribuzioni IoT su larga scala
I kit di sviluppo come quelli appena descritti sono utili come piattaforme efficaci per la prototipazione rapida delle applicazioni IoT e per l'esplorazione dei requisiti di connessione a un servizio cloud IoT. In pratica tuttavia, gli sviluppatori dovranno in genere adottare approcci più avanzati, concepiti per semplificare il provisioning dei dispositivi IoT in applicazioni del mondo reale. Sia Azure IoT che AWS IoT supportano un'ampia varietà di metodi per un provisioning più automatizzato di singoli dispositivi o di un gran numero di dispositivi IoT in una distribuzione su larga scala.
Con AWS IoT, ad esempio, gli sviluppatori possono utilizzare un metodo di bootstrap per il provisioning dei certificati. In questo caso, il prodotto smart viene fornito con un certificato bootstrap associato ai diritti di accesso minimi necessari per richiedere e accedere a un nuovo certificato (Figura 5).
Figura 5: AWS IoT supporta un metodo per il provisioning dei certificati di bootstrap nei dispositivi IoT. (Immagine per gentile concessione di DigiKey, da Amazon Web Services)
Utilizzando il certificato di bootstrap, il dispositivo si connette al cloud ("1" nella Figura 5), richiede ("2") un nuovo certificato, riceve ("3") l'URL del certificato generato da una funzione Lambda senza server AWS e recupera ("4") quel certificato da un "contenitore" AWS Simple Storage Services (S3). Utilizzando il nuovo certificato, il dispositivo si registra nuovamente in AWS IoT ("5") per procedere con le normali operazioni.
AWS offre altri servizi cloud che supportano il provisioning dinamico dei token di autenticazione utilizzando risorse di esecuzione come le funzioni Lambda di AWS. Ad esempio, un'applicazione automotive può contare su una serie di connessioni effimere in cui l'uso di un token è più pratico e più sicuro. Qui, dopo che un modulo AWS per l'autenticazione e l'autorizzazione IoT approva la richiesta di un token, AWS Security Token Service (STS) genera un token da consegnare ai sistemi del veicolo. Utilizzando questo token, i sistemi possono accedere ai servizi AWS soggetti a convalida da parte del servizio AWS Identity and Access Management (IAM) (Figura 6).
Figura 6: I principali fornitori di servizi cloud supportano altre forme di attestazione per l'autenticazione, come questo processo per la generazione dinamica di token di sicurezza da parte di AWS Security Token Service (STS). (Immagine per gentile concessione di Amazon Web Services)
AWS fornisce una capacità simile per l'assegnazione dinamica dei diritti di accesso. Qui, altre funzioni Lambda di AWS assegnerebbero una serie di criteri associati a un token valido (Figura 7).
Figura 7: Gli sviluppatori possono utilizzare i servizi cloud per implementare l'assegnazione dinamica dei diritti di accesso, particolarmente utile per applicazioni con connessioni effimere o con operazioni di breve durata. (Immagine per gentile concessione di Amazon Web Services)
Altri servizi cloud IoT consentono agli sviluppatori di gestire in modo più efficiente il provisioning nelle distribuzioni su larga scala. Ad esempio, AWS IoT fornisce capacità di provisioning alle flotte, incluso il supporto per una distribuzione su più larga scala del tipo di metodo di bootstrap descritto in precedenza. Il Device Provisioning Service di Azure IoT fornisce una capacità di iscrizione di gruppo che supporta il provisioning di un gran numero di dispositivi IoT che condividono lo stesso certificato X.509 o token SAS.
Responsabilità condivisa per la sicurezza
I fornitori di servizi cloud IoT offrono svariati metodi efficaci per migliorare la sicurezza end-to-end delle applicazioni IoT. Tuttavia, gli sviluppatori IoT non possono aspettarsi che questi metodi sopportino tutto il peso dei requisiti di sicurezza per la loro particolare applicazione IoT. Infatti, i fornitori di servizi cloud delineano con attenzione il loro ruolo specifico e le loro responsabilità in fatto di sicurezza delle applicazioni IoT con modelli specifici, come il modello di responsabilità condivisa di AWS (Figura 8).
Figura 8: Come per gli altri principali fornitori di cloud, AWS descrive le responsabilità che condivide con gli utenti cloud per proteggere da un lato l'infrastruttura cloud e dall'altro le applicazioni dei clienti. (Immagine per gentile concessione di Amazon Web Services)
AWS e Microsoft Azure forniscono ciascuno i documenti che descrivono le responsabilità condivise e spiegano il ruolo del fornitore e del cliente nella protezione di risorse, dati e applicazioni. Nella sua documentazione, Microsoft offre anche una panoramica di alcune relazioni tra i requisiti di sicurezza condivisi e i requisiti di conformità. In definitiva, i fornitori di servizi cloud si assumono la responsabilità della sicurezza del cloud, ma i clienti sono responsabili delle applicazioni, dei dati e delle risorse utilizzate nel cloud.
Conclusione
Le applicazioni IoT dipendono da livelli di sicurezza costruiti da meccanismi basati su hardware per la crittografia e la memorizzazione sicura delle chiavi. Come per qualsiasi prodotto connesso, le minacce alla sicurezza possono provenire da interazioni di ogni tipo quando i dispositivi IoT si connettono ai servizi cloud. Per proteggere se stessi e i propri clienti, i fornitori di servizi cloud IoT dettano requisiti specifici per l'autenticazione e la gestione dei diritti di accesso. Anche se i fornitori offrono una documentazione dettagliata su questi requisiti e le relative specifiche, gli sviluppatori possono scoprire che i loro sforzi tesi ad implementare una connettività sicura a volte lasciano le risorse esposte ai rischi o, al contrario, le rendono inaccessibili. Utilizzando le schede di sviluppo e il software associato, gli sviluppatori possono connettersi ai servizi cloud e prototipare rapidamente applicazioni IoT con sicurezza end-to-end.

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.