Come garantire la sicurezza dei sistemi embedded utilizzando DSC e MCU
Contributo di Editori nordamericani di DigiKey
2023-07-25
Con la migrazione verso l'Internet delle cose (IoT), la sicurezza non è più una funzione opzionale nelle applicazioni embedded ma si è trasformata in una funzionalità indispensabile per garantire l'integrità del sistema. Per rispondere a una serie crescente di specifiche di sicurezza, gli sviluppatori hanno bisogno di soluzioni che non solo soddisfino i requisiti delle applicazioni in termini di basso consumo o alte prestazioni, ma che siano anche in grado di fornire funzionalità di sicurezza basate sull'hardware, tra cui autenticazione, crittografia, archiviazione sicura e avvio sicuro.
Questo articolo fa da breve introduzione ai principi della sicurezza embedded. Spiega poi come gli sviluppatori possono utilizzare i controller di segnali digitali (DSC) ad alte prestazioni e le unità microcontroller (MCU) PIC24F a basso consumo di Microchip Technology, insieme ai dispositivi di sicurezza specializzati sempre dell'azienda, per soddisfare la domanda emergente di sicurezza embedded rigorosa.
La sicurezza integrata si basa su quattro principi chiave
Connessi a Internet, i prodotti intelligenti possono essere collegati tra loro in applicazioni sofisticate che pochi prodotti autonomi possono eguagliare. Tuttavia, la minaccia di attacchi informatici che utilizzano questi stessi percorsi di connettività non solo limita potenzialmente il valore dei prodotti intelligenti, ma espone anche tali prodotti, le applicazioni associate e i loro utenti a fonti di minaccia apparentemente infinite.
Oltre a dover far fronte alla continua richiesta di sicurezza informatica a livello di sistema da parte dei consumatori, gli sviluppatori devono sempre più spesso soddisfare le specifiche di sicurezza di enti nazionali e regionali. Due delle specifiche più influenti, ETSI EN 303 645 in Europa, "Cyber Security for Consumer Internet of Things: Baseline Requirements" e NIST IR 8259 degli Stati Uniti, "Foundational Cybersecurity Activities for IoT Device Manufacturers", suggeriscono che le pratiche di sicurezza informatica dipendono da quattro principi chiave:
- Utilizzo di password uniche
- Disponibilità di archiviazione sicura sul dispositivo per i parametri di sicurezza sensibili
- Comunicazione sicura attraverso l'autenticazione reciproca e la comunicazione criptata
- Possibilità di garantire l'integrità e l'autenticità del firmware attraverso l'avvio sicuro e l'aggiornamento sicuro del firmware.
La fornitura di sistemi basati su questi principi fondamentali richiede l'uso di una piattaforma affidabile che impedisca agli hacker di iniettare codice compromesso che alteri le comunicazioni, lo storage, il firmware o gli stessi meccanismi di sicurezza.
Le piattaforme affidabili aiutano a garantire la sicurezza costruendo la sicurezza a livello di sistema sin dai primi passi utilizzando meccanismi di sicurezza immutabili basati sull'hardware. Sebbene il concetto sia semplice, l'implementazione della sicurezza a livello di sistema si è rivelata impegnativa perché una criticità in qualsiasi parte del sistema può diventare una via per un attacco informatico. Utilizzando i DSC dsPIC33C ad alte prestazioni e gli MCU PIC24F a basso consumo di Microchip Technology, in combinazione con i dispositivi di sicurezza di Microchip, gli sviluppatori possono implementare più facilmente progetti embedded che garantiscono la sicurezza a livello di sistema.
Soddisfare i requisiti di potenza e prestazioni
Progettati per supportare un'ampia gamma di casi d'uso, i dispositivi delle famiglie di MCU dsPIC33C DSC e PIC24F di Microchip combinano piattaforme di esecuzione robuste con funzionalità specifiche per le applicazioni, tra cui un'ampia gamma di periferiche analogiche, di controllo della forma d'onda e di comunicazione integrate. Infatti, utilizzando la modulazione multipla della larghezza di impulso (PWM), gli amplificatori a guadagno programmabile (PGA), i convertitori analogico/digitali (ADC) e altre periferiche su un DSC dsPIC33C, gli sviluppatori possono implementare sistemi complessi con un minimo di componenti aggiuntivi - in genere necessitano solo dei dispositivi di alimentazione tipici di qualsiasi progetto di questo tipo. Un esempio è l'uso del DSC single core DSPIC33CK512MP608 per implementare un gruppo di continuità (UPS) offline (Figura 1).
Figura 1: Come altri DSC dsPIC33C, il DSC single core DSPIC33CK512MP608 integra una serie completa di periferiche, semplificando la progettazione di sistemi complessi come l'UPS offline illustrato. (Immagine per gentile concessione di Microchip Technology)
Per le applicazioni che richiedono sia capacità di controllo in tempo reale sia di elaborazione del segnale digitale, i DSC dsPIC33C combinano le capacità di un MCU e di un DSC con istruzioni specializzate e funzionalità hardware. Per i progetti critici dal punto di vista della sicurezza, i DSC dsPIC33C sono predisposti per la sicurezza funzionale IEC 60730 e conformi alla norma ISO 26262, offrendo molteplici funzionalità hardware progettate per semplificare la certificazione della sicurezza funzionale per le applicazioni Automotive Safety Integrity Level B (ASIL-B) e per le applicazioni industriali e automotive SIL-2.
Mentre i DSC dsPIC33C sono progettati per applicazioni in cui le prestazioni sono fondamentali, gli MCU PIC24F offrono un equilibrio tra prestazioni ed efficienza energetica per i sistemi embedded generici, l'elettronica consumer, l'automazione industriale, i dispositivi medici e altre applicazioni che richiedono controllo e connettività ma non capacità DSP. Come i DSC dsPIC33C, gli MCU PIC24F sono dispositivi predisposti per la sicurezza funzionale IEC 60730 con librerie diagnostiche di sicurezza di Classe B per le applicazioni domestiche.
Come già detto, l'integrità del firmware è un principio fondamentale della sicurezza informatica embedded. Per aiutare gli sviluppatori a garantire l'integrità del firmware e la protezione generale del codice, Microchip offre la sicurezza Flash programmabile una sola volta (OTP) mediante programmazione seriale in-circuit (ICSP) con inibizione della scrittura e CodeGuard nei dispositivi DSC dsPIC33C, come il modello single core DSPIC33CK512MP608 e quello dual core DSPIC33CH512MP508, nonché nei dispositivi MCU PIC24F come PIC24FJ512GU405, oltre a molti altri configurati con diversi set di periferiche specifiche per le applicazioni.
Protezione del firmware del dispositivo
Flash OTP mediante ICSP con inibizione della scrittura consente agli sviluppatori di configurare porzioni di memoria Flash come memoria OTP e di proteggere in lettura/scrittura la memoria Flash. La funzionalità ICSP proprietaria di Microchip consente di programmare in serie questi dispositivi attraverso una coppia di pin mentre sono in funzione nell'applicazione finale. Grazie a questa capacità, i produttori possono completare la programmazione su schede di produzione. Mentre ICSP richiede l'uso di un dispositivo di programmazione esterno per controllare il processo Flash OTP, Enhanced ICSP consente a un bootloader integrato di controllare il processo Flash OTP. Questi dispositivi supportano anche l'autoprogrammazione in tempo reale (RTSP), che consente al codice dell'applicazione utente Flash di aggiornarsi in tempo reale.
Dopo aver programmato il dispositivo di produzione, gli sviluppatori possono attivare l'inibizione della scrittura ICSP, che impedisce qualsiasi ulteriore programmazione o cancellazione ICSP. Tuttavia, le operazioni di cancellazione e programmazione della Flash RTSP possono essere eseguite anche quando l'inibizione della scrittura ICSP è attivata se il codice di aggiornamento della Flash è programmato nel dispositivo prima della sua attivazione. Di conseguenza, gli sviluppatori possono utilizzare un bootloader fidato per modificare la Flash anche quando è attivata l'inibizione della scrittura ICSP, consentendo loro di aggiornare il firmware in modo sicuro e di attenuare i tentativi esterni di aggiornamento della Flash nei sistemi di produzione.
La sicurezza di CodeGuard Flash fornisce una protezione capillare della Flash del programma attraverso l'uso di segmenti di avvio e generali separati. Gli sviluppatori definiscono la dimensione di questi segmenti impostando l'indirizzo del limite del segmento di avvio (BS) (BSLIM) nel registro BSLIM del dispositivo; il segmento generale (GS) occupa la memoria rimanente. Per proteggere ulteriormente le informazioni sensibili, ogni segmento contiene partizioni aggiuntive. Ad esempio, il BS contiene la tabella dei vettori di interruzione (IVT), la tabella opzionale dei vettori di interruzione alternativi (AIVT) e uno spazio aggiuntivo per le parole di istruzione (IW); il segmento di configurazione (CS), che contiene dati critici per la configurazione del dispositivo da parte dell'utente, si trova nello spazio degli indirizzi utente del GS (Figura 2).
Figura 2: Le famiglie di MCU DSC dsPIC33C e PIC24F supportano la protezione del codice in partizioni separate come BS e GS. (Immagine per gentile concessione di Microchip Technology)
Dopo aver impostato le partizioni dei segmenti, gli sviluppatori possono utilizzare il registro di sicurezza del firmware del dispositivo (FSEC) per abilitare la protezione dalla scrittura e impostare il livello di protezione del codice necessario per ciascun segmento. Durante l'esecuzione, il dispositivo impedisce al codice contenuto in un segmento con un livello di protezione del codice inferiore di accedere al codice contenuto in un segmento con un livello di protezione del codice superiore. In un sistema tipico, gli sviluppatori dovrebbero proteggere in scrittura il BS e impostare la protezione del codice a un livello elevato, attenuando i tentativi esterni di alterare il BS, compreso il bootloader.
Implementazione dell'aggiornamento sicuro del firmware via etere (OTA)
Gli sviluppatori software si trovano inevitabilmente di fronte alla necessità di aggiornare il software in risposta alla combinazione di bug appena scoperti, miglioramenti o minacce emergenti alla sicurezza. A differenza degli aggiornamenti delle applicazioni mobili, l'esecuzione di aggiornamenti sicuri del firmware nei sistemi embedded rischia, nel migliore dei casi, di interferire con le applicazioni in esecuzione o nel peggiore di "bloccare" il sistema. I DSC dsPIC33C e le famiglie di MCU PIC24F a basso consumo di Microchip offrono un meccanismo di doppia partizione che aiuta gli sviluppatori a evitare questi problemi.
In modalità operativa standard, questi dispositivi utilizzano tutta la memoria fisica disponibile come uno spazio di memoria continuo a partizione singola (Figura 3, a sinistra) che può essere configurato in BS e GS separati. In modalità a doppia partizione, gli sviluppatori dividono la memoria fisica in partizioni separate, una attiva e una inattiva (Figura 3, a destra).
Figura 3: Gli sviluppatori possono utilizzare le famiglie di MCU DSC dsPIC33C e PIC24F nella modalità predefinita a partizione singola o doppia. (Immagine per gentile concessione di Microchip Technology)
In modalità a doppia partizione, questi dispositivi possono continuare a eseguire codice applicativo nella partizione attiva mentre programmano la partizione inattiva. Al termine della programmazione, l'esecuzione dell'istruzione esecuzione per lo scambio di avvio (BOOTSWP) fa sì che il dispositivo commuti il target di avvio alla partizione aggiornata. Se il codice della partizione aggiornata si guasta o è in altro modo difettoso, un reset del dispositivo causerà automaticamente l'avvio del dispositivo nella partizione originale (Figura 4).
Figura 4: In modalità a doppia partizione, i DSC dsPIC33C e gli MCU PIC24F possono caricare il codice applicativo in una partizione e continuare a eseguirlo nell'altra. (Immagine per gentile concessione di Microchip Technology)
Una volta assicurato il successo della partizione aggiornata, la sequenza di avvio flash (FBTSEQ) della partizione aggiornata può essere impostata su un valore inferiore a quello della partizione originale. Ai successivi reset del dispositivo, il dispositivo si avvierà nella partizione aggiornata con il valore FBTSEQ più basso (Figura 5).
Figura 5: La modalità a doppia partizione consente agli sviluppatori di specificare la sequenza di avvio nella partizione desiderata dopo il reset del dispositivo. (Immagine per gentile concessione di Microchip Technology)
La sicurezza Flash OTP mediante ICSP con inibizione della scrittura e CodeGuard Flash fornisce un supporto fondamentale per la sicurezza del codice statico e di runtime, ma una sicurezza embedded completa richiede meccanismi aggiuntivi, tra cui la memorizzazione sicura delle chiavi, l'autenticazione del codice e comunicazioni sicure.
Utilizzo di dispositivi di sicurezza complementari per garantire la sicurezza dei sistemi embedded
Combinando i DSC dsPIC33C e i microcontroller PIC24F con il CI di sicurezza ATECC608 CryptoAuthentication o TrustAnchor100(TA100) CryptoAutomotive di Microchip, gli sviluppatori possono implementare più facilmente l'intera gamma di funzionalità di sicurezza basate su hardware.
Questi CI di sicurezza sono meccanismi di sicurezza anti-manomissione basati su hardware, tra cui archiviazione sicura, motori di crittografia accelerati via hardware, generatori di numeri casuali reali e altri meccanismi richiesti dagli algoritmi crittografici. Progettati specificamente come dispositivi abbinati, i CI possono essere facilmente aggiunti ai progetti di sistemi DSC o MCU per completare l'implementazione di una sicurezza totale in sistemi embedded (Figura 6).
Figura 6: I CI di sicurezza come ATECC608 o TA100 integrano le funzioni di sicurezza dei DSC dsPIC33C e degli MCU PIC24F, semplificando l'implementazione di sistemi embedded sicuri. (Immagine per gentile concessione di Microchip Technology)
L'esecuzione di un'operazione critica come l'aggiornamento sicuro del firmware illustra le caratteristiche di sicurezza complementari dei DSC dsPIC33C e dei microcontroller PIC24F in combinazione con questi CI di sicurezza. Gli sviluppatori utilizzano tecniche di firma del codice per verificare l'autenticità e l'integrità del codice prima di completare le operazioni di aggiornamento del firmware. In questo caso, gli sviluppatori utilizzano i loro sistemi di sviluppo per creare un pacchetto di aggiornamento contenente il codice, i metadati del codice e una firma utilizzata per la verifica (Figura 7).
Figura 7: La firma del codice è un protocollo fondamentale utilizzato abitualmente per verificare l'autenticità e l'integrità del codice prima dell'aggiornamento su un sistema finale. (Immagine per gentile concessione di Microchip Technology)
Sul sistema finale, la verifica della firma basata sull'hardware elimina il rischio di compromissione dei protocolli di verifica che era possibile con il tipo di verifica della firma basata sul software utilizzato in passato. Invece, un CI di sicurezza, come ATECC608 e TA100 di Microchip, esegue in modo rapido e sicuro le operazioni di verifica della firma senza rischi di compromissione (Figura 8).
Figura 8: In un sistema finale, la verifica basata sull'hardware fornita da un CI di sicurezza come ATECC608 o TA100 è essenziale per garantire la verifica del codice prima dell'aggiornamento del firmware da parte del bootloader. (Immagine per gentile concessione di Microchip Technology)
Per accelerare l'implementazione di sistemi sicuri, Microchip offre una combinazione di strumenti di sviluppo software e hardware.
Accelerare lo sviluppo di hardware e software
Mentre l'ambiente di sviluppo integrato MPLAB X (IDE) offre agli sviluppatori un ambiente di sviluppo software completo, il compilatore in C MPLAB XC fornisce supporto allo sviluppo per le catene di strumenti esistenti. Per accelerare lo sviluppo in entrambi gli ambienti, MPLAB Code Configurator (MCC) di Microchip consente agli sviluppatori di utilizzare un'interfaccia grafica per generare automaticamente gli inizializzatori, creare i driver, allocare i pin, implementare le librerie e contribuire a velocizzare molte delle procedure e dei processi critici di configurazione di basso livello associati a qualsiasi progetto di sviluppo di software embedded.
Per accelerare l'implementazione di un bootloader sicuro adeguato, il Bootloaderper i DSC dsPIC33 e gli MCU PIC24 di Microchip offre un'interfaccia grafica che aiuta gli sviluppatori a configurare e generare rapidamente i bootloader personalizzati necessari per le loro applicazioni. Un'applicazione host bootloader correlata semplifica ulteriormente il trasferimento del codice applicativo al dispositivo di destinazione.
Per lo sviluppo dell'hardware, Microchip fornisce diverse schede di sviluppo associate per la realizzazione di sistemi basati su DSC dsPIC33C o MCU PIC24F. Infatti, le schede PIC-IoT EV54Y39A e PIC-IoT AC164164 di Microchip (Figura 9) integrano CI di sicurezza predisposti con credenziali di sicurezza rispettivamente per Amazon Web Services (AWS) e Google Cloud.
Figura 9: Schede come quella PIC-IoT AC164164 contribuiscono ad accelerare lo sviluppo della sicurezza embedded integrando CI di sicurezza pre-provisionati con credenziali per AWS o Google Cloud. (Immagine per gentile concessione di Microchip Technology)
Per progetti personalizzati, Microchip offre una scheda di sviluppo dsPIC33CH Curiosity (DM330028-2) basata sul DSC dual core dsPIC33CH512MP508. In alternativa, gli sviluppatori possono collegare il modulo plug-in basato su dsPIC33CH128MP508 di Microchip (MA330040) a una scheda di valutazione integrata Microchip Explorer (DM240001-2) per accelerare lo sviluppo di sistemi embedded sicuri.
Conclusione
La sicurezza dei sistemi embedded si basa sulla disponibilità di meccanismi basati sull'hardware, in grado di supportare i principi fondamentali della sicurezza informatica, tra cui l'integrità del firmware, l'autenticazione, la crittografia e l'archiviazione sicura. Mentre i DSC dsPIC33C e gli MCU PIC24F di Microchip semplificano la protezione del codice, i CI di sicurezza ATECC608 e TA100 forniscono i meccanismi di sicurezza aggiuntivi richiesti da una piattaforma di sicurezza efficace. Utilizzando questi dispositivi in combinazione, gli sviluppatori possono soddisfare l'esigenza di sicurezza a livello di sistema nelle soluzioni embedded per l'IoT, nonché nelle applicazioni automotive, industriali, consumer e mediche.
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.




