Tre caratteristiche che non possono mancare in un microcontroller sicuro
Per anni, gli sviluppatori di sistemi embedded hanno potuto concedersi il lusso di ignorare la sicurezza. Questi sistemi erano scollegati e indipendenti per cui ci si doveva preoccupare solo delle manomissioni fisiche. Con Internet delle cose (IoT), questo lusso è scomparso per sempre. Ora la sicurezza è la preoccupazione principale per quasi tutti i dispositivi connessi. Per dotare i loro dispositivi di una sicurezza adeguata, gli sviluppatori devono prestare attenzione a tre caratteristiche chiave del microcontroller (MCU): isolamento basato sull'hardware, unità di protezione di memoria (MPU) e acceleratori crittografici. Vediamo nei dettagli queste tre caratteristiche critiche.
Caratteristica n.1 di un MCU sicuro: ambiente di elaborazione sicuro
Un concetto chiave per rendere sicuro un sistema embedded è quello di progettarlo usando l'isolamento. L'isolamento fornisce un confine, un recinto, intorno alla memoria, ai componenti e alle funzioni che interagiscono per raggiungere un obiettivo comune. Se un intruso riesce a penetrare in un'area del sistema, la barriera di isolamento protegge la seconda area per impedirgli di accedervi immediatamente.
Un sistema embedded è spesso isolato in due aree primarie: un ambiente di elaborazione non sicuro (NSPE) e un ambiente di elaborazione sicuro (SPE). Il modo migliore per ottenere questi due ambienti di esecuzione è usare l'isolamento basato su hardware. Per farlo è possibile utilizzare un MCU multicore oppure un MCU single core con TrustZone di Arm.
Nella soluzione multicore, un processore è dedicato all'SPE, mentre l'altro è dedicato come processore a piena funzionalità nell'NSPE. I due core sono fisicamente isolati l'uno dall'altro e comunicano solo attraverso la RAM condivisa e la comunicazione interprocesso (IPC). Se l'NSPE viene violato, tutti i dati isolati, la memoria e le funzioni nel core di sicurezza rimarranno comunque isolati e protetti. L'intruso dovrebbe trovare un modo per violare il core di sicurezza. Un esempio di MCU che utilizza l'approccio multicore è PSoC 64 di Infineon Technologies.
PSoC 64 ha un processore Arm Cortex-M4 per l'NSPE ricco di applicazioni e un core di sicurezza Arm Cortex-M0+ per l'SPE. I due core possono comunicare tramite una IPC. Un'interessante scheda di sviluppo per iniziare a sperimentare la soluzione di sicurezza multicore è il kit PSoC 64 Pioneer CY8CKIT-064S0S2-4343W abilitato per Wi-Fi e Bluetooth (Figura 1).
Figura 1: Il kit CY8CKIT-064S0S2-4343W Pioneer fornisce agli sviluppatori una piattaforma di sviluppo sicura per lavorare con soluzioni di sicurezza multicore. (Immagine per gentile concessione di Infineon Technologies)
La soluzione TrustZone è diversa dal modello di isolamento multicore in quanto utilizza un singolo core di elaborazione che però resta suddiviso in un NSPE e un SPE. Quando occorre eseguire una funzione sicura, il processore passa dall'NSPE all'SPE in un modo deterministico che è tipicamente di tre cicli di clock o meno. Un esempio di MCU con TrustZone è STM32L562CET6 di STMicroelectronics.
L'isolamento basato su hardware è la prima caratteristica che gli sviluppatori devono cercare nei loro MCU sicuri. La caratteristica successiva sono le MPU.
Caratteristica n.2 di un MCU sicuro: MPU
Una MPU è una periferica hardware progettata per proteggere la memoria. Gli sviluppatori di sistemi embedded hanno bisogno di una MPU perché permette loro di creare altre aree di isolamento basate su hardware all'interno del loro codice applicativo. Ad esempio, mentre uno sviluppatore potrebbe sfruttare un SPE, questo SPE può essere ulteriormente suddiviso in aree isolate usando una MPU. Se un intruso riesce a farsi strada nell'SPE, deve comunque trovare un modo per entrare in ciascuna delle aree di memoria isolate protette dalla MPU.
La MPU può essere considerata come un'unità di gestione della memoria (MMU) ridotta che fornisce agli sviluppatori un metodo per suddividere il loro software in processi isolati. La MPU può essere utilizzata su qualsiasi posizione della memoria, compresa la flash, la RAM e le periferiche. La MPU viene usata per impostare i permessi di esecuzione e di accesso. Anche in questo caso, se un intruso riesce ad accedere a un processo, potrà spingersi solo fin dove lo consente l'impostazione della MPU. Se tenta di accedere a un'area di memoria al di fuori delle impostazioni della MPU, quest'ultima genera un errore. A quel punto, il sistema può tentare il recupero oppure eseguire il reset. Questo ne fa una caratteristica critica di cui gli sviluppatori hanno bisogno per proteggere i loro sistemi.
Caratteristica n.3 di un MCU sicuro: acceleratori crittografici
La terza caratteristica che gli sviluppatori devono cercare in un MCU sicuro è un acceleratore crittografico. L'acceleratore crittografico viene usato per accelerare calcoli complessi la cui elaborazione richiederebbe altrimenti alla CPU tempi relativamente lunghi. La CPU può scaricare il lavoro sull'acceleratore, il che le permette di lavorare su un altro problema in parallelo. Come risultato, le operazioni crittografiche richiedono meno tempo, riducono i cicli della CPU e anche, potenzialmente, il consumo di energia nei dispositivi alimentati a batteria.
Esistono diverse operazioni per le quali gli sviluppatori possono ricorrere all'acceleratore crittografico. In primo luogo, possono usarlo per criptare le comunicazioni o i dati. Uno schema di crittografia diffuso è AES-256, ma possono esserne supportati altri, a seconda dell'MCU. Oppure possono usarlo per calcolare l'hash di un set di dati. Questo può essere utile per la verifica dell'integrità del codice dell'applicazione o di una serie di dati.
Spesso gli acceleratori crittografici vengano trascurati, ma ogni buon MCU sicuro deve averne uno. Il trucco sta nell'esaminare ciò che supporta e assicurarsi che abbia le capacità necessarie per il ciclo di vita previsto dell'applicazione.
Conclusione
La sicurezza non è qualcosa che gli sviluppatori possono semplicemente aggiungere al loro sistema alla fine del ciclo di sviluppo. Occorre prestarvi attenzione fin dall'inizio, per capire le minacce cui può essere esposto il sistema e selezionare un MCU con tutte le capacità hardware necessarie per renderlo sicuro.
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum




