Nozioni di base sulla sicurezza IoT - Parte 2: Proteggere i segreti

Di Stephen Evanczuk

Contributo di Editori nordamericani di DigiKey

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, in quanto gli sviluppatori devono orchestrare molteplici meccanismi di sicurezza, protocolli e criteri che in combinazione sembrano complicati. 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. Questa 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. La 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.

Sebbene i dispositivi crittografici basati su hardware possano mitigare le vulnerabilità dell'Internet delle cose (IoT), la mancanza di protezione sufficiente delle chiavi segrete e dei dati associati può degradare la sicurezza, anche se si utilizza il dispositivo crittografico più robusto. I produttori di semiconduttori si occupano della protezione delle chiavi e di altri dati privilegiati attraverso una varietà di meccanismi integrati nei CI di sicurezza e in processori specializzati.

Questo articolo passa in rassegna il ruolo fondamentale delle chiavi di cifratura e descrive i diversi meccanismi di protezione della chiave incorporati nei dispositivi offerti da Maxim Integrated, NXP, STMicroelectronics e Microchip Technology.

Il ruolo delle chiavi segrete nella crittografia

Come descritto nella Parte 1 di questa serie, è disponibile un'ampia gamma di algoritmi crittografici supportati da hardware per creare hash o firme di messaggi univoci e un numero ancora più ampio di cifrari per cifrare dati da chiaro a crittografati e decifrare dati da crittografati a chiaro. Sebbene questi algoritmi possano irrobustire la sicurezza in qualsiasi applicazione, la capacità di proteggere tali applicazioni dipende fondamentalmente dalla sicurezza delle chiavi private e di altri dati segreti utilizzati dagli algoritmi crittografici.

Nella crittografia, aver segreti compromessi significa aver compromesso la sicurezza dei criteri di sicurezza, dei protocolli e dei meccanismi costruiti su questi segreti. Già nel XIX secolo, il crittografo Auguste Kerckhoffs osservò che un sistema crittografico rimarrà sicuro finché la chiave rimarrà sicura - un assioma oggi noto come Principio di Kerckhoffs. Detto in modo più conciso, "il nemico conosce il sistema", secondo la massima di Shannon, che prende il nome dal padre della teoria dell'informazione, Claude Shannon.

In effetti, gli sviluppatori costruiscono sistemi sicuri sulla base di noti algoritmi specificati così rigidamente che i produttori di semiconduttori possono utilizzarli tranquillamente nei dispositivi di sicurezza ad accelerazione hardware. Ciò che in definitiva protegge questi sistemi, tuttavia, sono i segreti utilizzati da questi algoritmi.

La sfida di proteggere i segreti

Anche se proteggere i segreti della crittografia è concettualmente semplice, può essere difficile nella pratica. L'implementazione di una politica di sicurezza di livello superiore attingerà inevitabilmente a più protocolli di sicurezza utilizzando diversi algoritmi. Questi protocolli e algoritmi, a loro volta, richiedono una certa combinazione di chiavi statiche e di chiavi effimere create dal protocollo stesso. Ad esempio, una sessione Transport Layer Security (TLS) utilizza una chiave statica durante l'autenticazione e una chiave di sessione effimera condivisa per lo scambio sicuro dei messaggi.

Infatti, il National Institute of Standards and Technology (NIST) degli Stati Uniti identifica 19 diversi tipi di chiavi più altri 11 tipi di informazioni correlate, come i parametri del dominio delle curve ellittiche e i risultati intermedi che devono essere protetti. Il NIST raccomanda inoltre che, per una maggiore sicurezza, le informazioni associate all'uso delle chiavi debbano essere protette per periodi di tempo specifici, come indicato nella Tabella 1, che mostra solo i primi tipi di chiave elencati nella raccomandazione completa del NIST[1].

Tipo di chiave Servizio di sicurezza Protezione della sicurezza Protezione dell'associazione Assicurazioni richieste Periodo di protezione
Chiave per la firma privata Autenticazione della sorgente
Autenticazione dell'integrità
Supporto del non ripudio
Integrità
Riservatezza
Uso o applicazione
Parametri di dominio (se usati)
Chiave di verifica della firma pubblica
Possesso Dalla generazione fino alla fine del criptoperiodo
Chiave di verifica della firma pubblica Autenticazione della sorgente
Autenticazione dell'integrità
Supporto del non ripudio
Integrità Uso o applicazione
Proprietario della coppia di chiavi
Parametri del dominio (se usati)
Chiave di verifica della firma pubblica
Validità Dalla generazione fino a quando non è necessario verificare i dati protetti
Chiave di autenticazione simmetrica Autenticazione della sorgente
Autenticazione dell'integrità
Integrità
Riservatezza
Utilizzo o applicazione
Altre entità autorizzate
Dati autenticati
Dalla generazione fino a quando non è necessario verificare i dati protetti
Chiave di autenticazione privata Autenticazione della sorgente
Autenticazione dell'integrità
Integrità
Riservatezza
Utilizzo o applicazione
Chiave di autenticazione pubblica
Parametri di dominio (se usati)
Possesso Dalla generazione fino alla fine del criptoperiodo
Chiave di autenticazione pubblica Autenticazione della sorgente
Autenticazione dell'integrità
Integrità Utilizzo o applicazione
Proprietario della coppia di chiavi
Dati autenticati
Chiave di autenticazione privata
Parametri del dominio (se usati)
Validità Dalla generazione fino a quando non è necessario verificare i dati protetti
Chiave simmetrica di cifratura/decifratura dei dati Riservatezza Integrità
Riservatezza
Utilizzo o applicazione
Altre entità autorizzate
Dati in chiaro/crittografati
Dalla generazione fino alla fine del ciclo di vita dei dati o almeno alla fine del criptoperiodo
Chiave simmetrica-chiave di wrapping Supporto Integrità
Riservatezza
Utilizzo o applicazione
Altre entità autorizzate
Chiavi crittografate
Dalla generazione fino alla fine del criptoperiodo o almeno fino a quando nessuna chiave di wrapping richieda protezione

Tabella 1: Questa selezione dagli elenchi delle raccomandazioni NIST indica alcuni dei diversi tipi di chiavi e le informazioni associate che dovrebbero essere protette per il periodo specificato. (Tabella per gentile concessione di Digi-Key Electronics, da NIST)

La necessità di proteggere le chiavi e i dati associati significa che gli sviluppatori devono fare molta attenzione nell'uso dei segreti all'interno di un'applicazione IoT. Per i dispositivi IoT, una sfida maggiore può essere data dalla protezione di questi dati in ciascuno dei loro molteplici stati: a riposo, in transito e in uso. La messa in sicurezza dei dati a riposo richiede meccanismi di memorizzazione sicura; la messa in sicurezza dei dati in transito richiede metodi per proteggere i segreti mentre vengono trasferiti attraverso una rete o attraverso un bus di sistema; la messa in sicurezza dei dati in uso richiede meccanismi per prevenire l'esposizione mentre vengono utilizzati nell'esecuzione di algoritmi crittografici. Fortunatamente, gli sviluppatori possono trovare un'ampia gamma di dispositivi di sicurezza in grado di proteggere i dati segreti utilizzando una serie di meccanismi diversi.

Come proteggere i segreti nei semiconduttori abilitati alla crittografia

Le soluzioni avanzate a semiconduttori abilitate alla crittografia forniscono tipicamente un certo tipo di memoria non volatile sicura per la memorizzazione di chiavi e altri dati segreti, ma la natura dell'approccio generale differisce notevolmente nelle due classi principali di dispositivi sicuri: CI di sicurezza specializzati e processori abilitati alla crittografia.

I CI di sicurezza sono progettati per servire come sottosistemi autonomi che scaricano l'esecuzione dell'algoritmo da un processore host che in genere comunica attraverso un bus seriale. Per esempio, DS28C36 di Maxim Integrated è un autenticatore sicuro che fornisce le porte I2C e due I/O per uso generale (GPIO) che possono essere usati per fornire un segnale di esito positivo o negativo dell'autenticazione al processore host (Figura 1).

Schema dell'autenticatore sicuro DS28C36 di Maxim IntegratedFigura 1: I dispositivi di sicurezza come l'autenticatore sicuro DS28C36 di Maxim Integrated forniscono sottosistemi completi che semplificano l'integrazione, migliorando la protezione delle chiavi interne e delle operazioni. (Immagine per gentile concessione di Maxim Integrated)

L'integrazione del software di solito è altrettanto semplice. Per esempio, la libreria Plug & Trust Middleware di NXP astrae la funzionalità hardware dei dispositivi Secure Element SE050 e A71CH ad alcune chiamate di funzione (Figura 2).

Immagine di Plug & Trust Middleware di NXPFigura 2: Librerie software come Plug & Trust Middleware di NXP consentono agli sviluppatori di utilizzare alcune chiamate di funzione intuitive per creare chiavi (a sinistra), chiavi di accesso (a destra) e di sfruttare appieno le funzionalità sottostanti nei dispositivi Secure Element SE050 e A71CH di NXP. (Immagine per gentile concessione di NXP)

La creazione di una nuova chiave (Figura 2, a sinistra) restituisce un keyId. Per usare la chiave in seguito, gli sviluppatori fanno riferimento alla chiave mediante keyId (Figura 3, a destra) piuttosto che esporre il valore reale della chiave attraverso il bus di sistema. Con Plug & Trust Middleware di NXP, gli sviluppatori possono implementare rapidamente applicazioni sicure utilizzando una scheda di valutazione Kinetis Freedom K64F compatibile Arduino con una scheda di valutazione OM-SE050ARD per lo sviluppo di SE050 oppure una scheda OM3710/A71CHARD di NXP per lo sviluppo di AC71CH.

I CI di sicurezza dedicati come DS28C36 di Maxim Integrated, SE050 di NXP, AC71CHTK2/TOBC2VJ di NXP e altri dispositivi di questa classe offrono diversi vantaggi specifici. Oltre ad offrire un approccio relativamente semplice per aggiungere funzionalità sicure a un progetto, l'integrazione di funzionalità in un CI di sicurezza dedicato limita l'esposizione di dati e operazioni segrete. Ad esempio, DS28C36 di Maxim Integrated integra acceleratori di crittografia hardware, un vero generatore di numeri casuali e 8 kilobit di EEPROM protetta, insieme ad altri blocchi funzionali. Quando DS28C36 autentica una firma del firmware ECDSA (algoritmo di firma digitale a curva ellittica), garantisce la protezione dei dati a riposo, in transito e in uso perché la chiave privata, i dati associati (Figura 1) e le operazioni che utilizzano questi segreti rimangono confinati all'interno del dispositivo (Figura 3).

Schema di DS28C36 di Maxim IntegratedFigura 3: La funzionalità integrata dei dispositivi di sicurezza come DS28C36 di Maxim Integrated significa che le chiavi private e i dati associati rimangono confinati all'interno del chip. (Immagine per gentile concessione di Maxim Integrated)

Protezione della chiave segreta basata sul processore

Non tutti i progetti di IoT possono ospitare un CI di sicurezza dedicato. I requisiti potrebbero imporre l'uso di altri metodi crittografici o vincoli di progettazione relativi all'ingombro, alla distinta base, al costo o alle specifiche del cliente. Per questi progetti, i processori abilitati alla sicurezza come STM32WB55 di STMicroelectronics e ATSAML11 di Microchip Technology forniscono una combinazione di motori di accelerazione hardware per algoritmi crittografici e meccanismi di protezione dei dati segreti. Sebbene questo articolo si concentri sulla protezione delle chiavi, questi e altri processori forniscono una serie di ulteriori sofisticate funzioni di sicurezza che saranno discusse nella Parte 3.

Nel dispositivo wireless dual-core STM32WB55 di STMicroelectronics, una CPU Arm® Cortex®-M4 (CPU1) funge da processore host, comunicando con il microcontroller dedicato del sottosistema radio Arm Cortex-M0+ (CPU2) attraverso un controller di comunicazione interprocessore dedicato (IPCC) e un meccanismo a semaforo (HSEM). All'interno del sottosistema CPU2, la memoria sicura fornisce un'area di storage delle chiavi del cliente (CKS) per le chiavi utilizzate dall'acceleratore hardware AES (Advanced Encryption Standard) (Figura 4).

Schema del processore dual-core STM32WB55 di STMicroelectronicsFigura 4: Il processore dual-core STM32WB55 di STMicroelectronics permette l'accesso diretto alle chiavi solo al core del sottosistema radio (CPU2) ma permette alle applicazioni attendibili in esecuzione sul core host (CPU1) di utilizzarle indirettamente. (Immagine per gentile concessione di STMicroelectronics)

L'architettura STM32WB55 protegge le chiavi CKS dall'accesso attraverso la porta di debug o dall'accesso da routine non sicure che eseguono il processore CPU1 host. Allo stesso tempo, le applicazioni attendibili in esecuzione sulla CPU1 host possono utilizzare specifiche chiavi CKS nella crittografia AES facendovi riferimento tramite un indice di chiavi. Il blocco hardware AES riceve la chiave desiderata dall'area CKS attraverso un bus interno, garantendo che il trasporto della chiave rimanga protetto all'interno del sottosistema CPU2.

Per i suoi processori ATSAML11 basati su Arm Cortex-M23, la tecnologia di Microchip si basa sulle caratteristiche di sicurezza integrate nella tecnologia TrustZone di Arm. TrustZone utilizza meccanismi basati su hardware per imporre l'isolamento tra risorse attendibili e non.

Nei suoi processori ATSAML11, Microchip utilizza la TrustZone Implementation Defined Attribution Unit (IDAU) per far rispettare i criteri di sicurezza, compreso il controllo differenziale di accesso alle sottoregioni di memoria tramite codice applicativo sicuro e non sicuro. Un'area di memoria ad accesso casuale (RAM) di sicurezza a 256 byte, chiamata TrustRAM, fornisce un'ulteriore memoria sicura per le chiavi effimere.

Provisioning sicuro

I CI di sicurezza e i processori dedicati forniscono i meccanismi di cui gli sviluppatori hanno bisogno per proteggere le chiavi segrete e i dati associati in un dispositivo IoT. Tuttavia, le vulnerabilità di sicurezza spesso insorgono per via di guasti nel processo utilizzato per caricare, o fornire a un CI di sicurezza o un processore le chiavi segrete o i certificati, esponendo le chiavi segrete al rischio di furto. I criminali informatici vendono rapidamente tali chiavi rubate e certificati compromessi sul mercato nero, consentendo agli hacker di penetrare in reti sicure con credenziali apparentemente valide.

La Parte 4 di questa serie tratta dei dispositivi di sicurezza e dei kit di sviluppo preconfezionati da vari produttori con chiavi e certificati per specifici i servizi IoT cloud, tra cui Amazon Web Services, Microsoft Azure, Google Cloud e altri. Per le implementazioni di produzione, tuttavia, gli sviluppatori preferiranno o dovranno utilizzare le proprie chiavi personalizzate e i propri certificati.

Per supportare il provisioning personalizzato, la maggior parte dei produttori di semiconduttori offre il provisioning attraverso le proprie strutture o in collaborazione con un partner di provisioning. Ad esempio, Microchip fornisce dispositivi con segreti personalizzati creati utilizzando uno strumento di wrapping sicuro incluso nei kit di approvvigionamento offerti da partner terzi, tra cui Trustonic e Secure Thingz di IAR Systems (Figura 5).

Schema del tool di wrapping sicuroFigura 5: Gli sviluppatori OEM (produttore di apparecchiature originali) possono utilizzare un tool di wrapping sicuro per proteggere i segreti utilizzati successivamente nella struttura di programmazione sicura di un partner di produzione per fornire microcontroller sicuri come SAML11 di Microchip. (Immagine per gentile concessione di Microchip Technology)

Quando è pronto per la produzione, lo sviluppatore OEM utilizza il tool di wrapping sicuro per fornire in forma crittografata le chiavi e i certificati alla fabbrica di Microchip, che possono essere decrittografati solo da un modulo di sicurezza hardware situato all'interno della struttura di programmazione sicura del partner. Questo approccio soddisfa l'esigenza di scambiare informazioni di produzione su reti non sicure e, in ultima analisi, produce dispositivi pronti per la produzione con chiavi e firmware forniti in modo sicuro.

Autoprovisioning con tecnologia PUF

Il crescente utilizzo della tecnologia PUF (Physically Unclonable Function) nei processori abilitati alla sicurezza e nei CI dedicati offre forse un approccio ancora più sicuro per il provisioning. Piuttosto che caricare esplicitamente una chiave segreta in un dispositivo, la tecnologia PUF consente ai dispositivi di sicurezza di utilizzare una chiave segreta derivata dalle caratteristiche uniche di ogni dispositivo.

La tecnologia PUF si basa sulla variazione di produzione e su altri processi fisici che si traducono in un valore unico per il dispositivo stesso e ripetibile con il normale funzionamento del sistema. Come descritto di seguito, il valore risultante può servire come una chiave privata unica per la crittografia, fornendo essenzialmente a ogni dispositivo abilitato al PUF una chiave segreta integrata.

Oltre a consentire l'autoprovisioning, la tecnologia PUF aggiunge un altro livello di sicurezza. I tentativi di penetrare nel dispositivo per esporre quel valore unico del dispositivo alterano le caratteristiche utilizzate per generarlo, alterando così il valore generato.

Sebbene esistano diversi meccanismi PUF, l'approccio di base rimane in gran parte lo stesso per tutti i dispositivi abilitati al PUF. Per esempio, la funzione ChipDNA PUF di Maxim Integrated usata nel microcontroller sicuro MAX32520, ma anche in alcuni CI di sicurezza, si basa su un array di elementi PUF analogici e logica di controllo per generare una chiave (Figura 6).

Schema della tecnologia PUF ChipDNA di Maxim IntegratedFigura 6: Nella tecnologia PUF ChipDNA di Maxim Integrated, gli stati casuali di un array di elementi PUF sono usati dalla logica di controllo su chip per generare una chiave coerente specifica del dispositivo. (Immagine per gentile concessione di Maxim Integrated)

Nell'autenticatore sicuro DS28C39 ECDSA di Maxim Integrated, l'uscita ChipDNA PUF viene utilizzata come chiave privata per le operazioni ECDSA e come chiave privata per proteggere i dati associati (Figura 7).

Schema dell'autenticatore sicuro DS28C39 ECDSA di Maxim IntegratedFigura 7: L'autenticatore sicuro DS28C39 ECDSA di Maxim Integrated utilizza una chiave privata generata dal suo circuito ChipDNA PUF su chip. (Immagine per gentile concessione di Maxim Integrated)

Per la famiglia di processori abilitati al PUF LPC55S, NXP utilizza la tecnologia PUF basata sull'uscita generata dallo stato casuale iniziale di un array SRAM (Figura 8).

Schema della famiglia di processori LPC55S di NXPFigura 8: Nella sua implementazione PUF, la famiglia di processori LPC55S di NXP utilizza i dati di avvio da SRAM per generare un'impronta digitale e il codice di attivazione associato, utilizzati in seguito per ripristinare l'impronta digitale e crittografare o generare chiavi private. (Immagine per gentile concessione di NXP)

In questi dispositivi, l'uso del PUF inizia con un'operazione di iscrizione che genera un'impronta digitale univoca e il codice attivato associato che rimane valido fino all'esecuzione di una nuova operazione di iscrizione. Memorizzato nella flash protetta del dispositivo, il codice di attivazione permette al dispositivo di ricostruire l'impronta digitale dai dati di avvio della SRAM generati costantemente all'accensione.

Con l'impronta digitale, gli sviluppatori possono criptare le proprie chiavi o generare altre chiavi. In questo processo, il dispositivo restituisce un codice chiave. Fornendo il codice di attivazione, il codice chiave e l'indice, gli sviluppatori possono far sì che il dispositivo decifri la chiave privata desiderata dall'apposito slot di chiave su chip e la consegni a una libreria di software di crittografia. Lo slot di chiave 0 è un metodo speciale di decodifica della chiave che consegna la chiave attraverso un bus interno direttamente al motore di crittografia hardware AES del processore (Figura 9).

Nel suo ruolo di cifratura e decifratura delle chiavi, la firma digitale PUF di LPC55S funge da KEK (chiave di cifratura a chiave) tradizionalmente utilizzata per migliorare la protezione dei dati segreti a riposo o in transito. L'uso di una KEK aiuta ad alleviare i requisiti per lo storge sicuro più ampio e per i meccanismi interni associati necessari per proteggere i dati segreti.

Schema della famiglia di processori LPC55S di NXPFigura 9: La famiglia di processori LPC55S di NXP utilizza la sua impronta digitale come KEK per decifrare le chiavi protette nel suo archivio chiavi e referenziate programmaticamente utilizzando il codice di attivazione, il codice chiave e l'indice associati. (Immagine per gentile concessione di NXP)

Gli sviluppatori possono utilizzare una KEK per crittografare le chiavi personalizzate e i dati associati e memorizzare i risultati crittografati in una memoria non sicura e non volatile. Questo approccio permette agli sviluppatori di proteggere i diversi tipi di chiavi e i dati associati anche in dispositivi con una limitata memoria sicura. Con la disponibilità di KEK generate dal PUF, gli sviluppatori possono implementare dispositivi IoT sicuri in grado di proteggere le applicazioni durante l'intero ciclo di sviluppo.

Conclusione

La disponibilità di CI di sicurezza dedicati e di processori sicuri con acceleratori di crittografia ha notevolmente migliorato per gli sviluppatori la capacità di costruire sistemi sicuri. Tuttavia, i sistemi sicuri dipendono in modo critico dalla sicurezza delle chiavi private e di altri dati associati ai meccanismi e ai protocolli di crittografia. Impiegando una serie di meccanismi diversi, i dispositivi di sicurezza garantiscono la protezione dei dati segreti a riposo, in transito e in uso. Con questi dispositivi, gli sviluppatori possono costruire soluzioni di IoT più sicure senza compromettere altri requisiti progettuali.

DigiKey logo

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.

Informazioni su questo autore

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk ha più di 20 anni di esperienza come autore sull'industria elettronica e ha scritto su una vasta gamma di argomenti tra cui hardware, software, sistemi e applicazioni, incluso l'IoT. Ha ricevuto un Ph.D. in neuroscienze sulle reti neuronali e ha lavorato nel settore aerospaziale su sistemi di sicurezza ampiamente distribuiti e sui metodi di accelerazione algoritmica. Attualmente, quando non scrive articoli su tecnologia e ingegneria, lavora su applicazioni di deep learning per i sistemi di riconoscimento e di raccomandazione.

Informazioni su questo editore

Editori nordamericani di DigiKey