Di questi tempi, la sicurezza è la preoccupazione principale di tutti. I microcontroller e i prodotti systems-on-chip moderni sono progettati con funzionalità di sicurezza. Tuttavia, la memoria flash seriale è tradizionalmente la più esposta agli hacker. Questo libro bianco spiega come la flash di autenticazione può essere abbinata in modo sicuro e unico a un controller host autorizzato per prevenire i furti di proprietà intellettuale.
Flash di autenticazione: colmare il gap di sicurezza lasciato dagli IC flash NOR convenzionali
Come risposta alla domanda degli OEM preoccupati della sicurezza, i produttori di microcontroller e sistemi su chip (systems-on-chip) (SoC) moderni di solito dotano i loro prodotti di una vasta gamma di funzionalità di sicurezza: oggi, le MCU da 32 bit standard pronte all'uso per applicazioni mainstream non finanziarie presentano spesso un acceleratore crittografico dell'hardware, un generatore di numeri casuali (random number generator, RNG) e posizioni di memoria sicure.
Ma la memoria flash seriale (la sede in cui viene archiviata gran parte delle preziosa proprietà intellettuale degli OEM) è tradizionalmente più vulnerabile rispetto ai SoC o ai microcontroller. Le debolezze di sicurezza nella memoria flash complementare in una MCU o in un SoC espongono gli OEM a rischi di danni commerciali di furto dei prodotti, causati dalla clonazione di progetti PCB decompilati. Questo articolo spiega come la flash di autenticazione può essere abbinata in modo sicuro e unico a un controller host autorizzato.
Le scorciatoie di sicurezza di oggi
Un requisito di sicurezza fondamentale per ogni OEM affidabile è quello di impedire la possibilità di furti o clonazioni delle IP dell'OEM, compresi i codici dell'applicazione, che vengono archiviati in una flash NOR seriale esterna.
Certamente, la gran parte del valore di un prodotto finale di elettronica non è un segreto. Prendiamo l'esempio di un termostato Internet of Things (IoT) per la casa intelligente: un'analisi minuziosa smontando la scheda del termostato permette la precisa identificazione di tutti i componenti e la possibilità di replicare fedelmente il layout della scheda da parte di qualunque fabbrica che voglia clonare il prodotto. Il progetto dell'hardware non è segreto.
Il codice dell'applicazione sì, o almeno tale dovrebbe essere. Un sistema elettronico, tuttavia, è forte solo se lo è il suo anello più debole. Oggi, i SoC o le MCU principali sono di norma fortemente protette dalla cifratura, da funzionalità anti-manomissione e di archiviazione sicura integrate nell'hardware e nel software. Perciò, se un attaccante vuole clonare il codice dell'applicazione, il punto di ingresso più probabile è un IC della memoria flash esterna.
Per questo motivo, oggi gli OEM "proteggono" di solito l'hardware per l'archiviazione del codice con un identificativo unico (UID) conservato nello spazio di memoria suddivisa nell'IC flash. In verità, tuttavia, un UID offre solo una barriera superficiale agli attacchi. Qualunque ingegnere con qualche conoscenza della sicurezza è in grado di individuare un UID e di disattivare facilmente l'abbinamento tra la MCU e l'hardware per l'archiviazione del codice. Una volta rimosso l'abbinamento, si rompe la fiducia da parte dell'OEM. Il codice archiviato sul dispositivo può essere copiato, e la clonazione del progetto del termostato può iniziare sul serio.
La debolezza in questo sistema di sicurezza flash è che l'UID è intrinsecamente non sicuro. È un numero di codice permanente e immutabile: una volta letto dalla memoria, può essere utilizzato nuovamente da un host non autorizzato.
La soluzione: autenticazione dinamica e sicura
In teoria, il rimedio a questo problema è facile da progettare: l'UID deve essere diverso ogni volta che la memoria è sollecitata dall'host. Ma il vantaggio dell'UID fisso che viene utilizzato oggi è la sua facilità di implementazione: deve essere programmato solo una volta nella memoria flash e una volta nel controller host; poi i due valori possono essere semplicemente messi a confronto per autenticare il dispositivo flash.
Quindi, in che modo la risposta a una sfida dell'host può essere diversa ogni volta ed essere comunque riconosciuta dall'host?
Cifratura simmetrica dell'ID di memoria
Questo è il problema che Winbond ha deciso di risolvere con la famiglia W74M di IC flash di autenticazione (vedere figura 1). Winbond è conosciuta soprattutto per il suo ampio portafoglio di IC di memoria flash NOR e NAND seriale; è il principale produttore al mondo di flash seriali, con una quota di mercato attorno al 30%. Nel 2016, Winbond ha consegnato 2,1 miliardi di unità di IC flash seriali SpiFlash®.
Ora si rivolge anche ai problemi dei clienti che hanno vulnerabilità di sicurezza nella porzione di memoria flash dei loro progetto: questo è il motivo dell'introduzione della famiglia W74M. Il metodo di base con il quale Winbond protegge l'identità di una memoria è la cifratura simmetrica: host e memoria condividono lo stesso segreto, una "chiave principale".
Figura 1: l'architettura del pacchetto multi-chip W74M
La chiave principale, comunque, non viene mai trasmessa direttamente tra l'host e la memoria (l'"attaccante" e il "difensore"). Invece, viene generato un messaggio cifrato (un codice di autenticazione del messaggio basato su hash o HMAC) combinando la chiave principale con un elemento dinamico come un numero casuale; poi questa combinazione viene elaborata tramite un algoritmo di cifratura, il SHA-256. SHA-256 sta per Secure Hash Algorithm (algoritmo hash di sicurezza) con un volume di 256 bit, una funzione di hash crittografico pubblicato dall'US National Institute of Standards and Technology (NIST) come standard federale dell'elaborazione delle informazioni (Federal Information Processing Standard, FIPS). È una funzione crittografica usata per l'elaborazione di transazioni finanziarie, ed è considerata praticamente inviolabile.
Visualizza prodotti correlati
Per autenticare la memoria W74M, il controller host confronta i valori del HMAC della memoria con il valore che calcola usando la chiave principale e lo stesso numero casuale elaborato tramite lo SHA-256. Se i valori corrispondono, le normali operazioni di memoria possono continuare.
Dato che il HMAC viene parzialmente generato da un elemento dinamico, come un numero casuale, il valore del HMAC è diverso ogni volta che viene generato. Ciò vuol dire che gli attacchi che vanno a buon fine contro una memoria flash con un UID fisso e convenzionale, come quelli visti prima, saranno respinti se portati contro una memoria W74M. E poiché la funzione SHA-256 è così sicura, in pratica non ci sono rischi che un aggressore possa decrittare il HMAC per scoprire il valore della chiave principale.
La figura 1 mostra anche due altre interessanti caratteristiche della W74M. In primo luogo, il contatore monotono non volatile offre una verifica supplementare dell'autenticità della memoria. Il contatore parte da zero quando viene stabilito il codice principale, e viene aggiunto un solo incremento in risposta a un comando emesso dal controller host, il che significa che il contatore ha un valore unico conosciuto dalla memoria e dall'host. Se il valore del contatore fornito dalla memoria quando è impegnata dall'host non corrisponde al valore del contatore dell'host, il valore dell'HMAC della memoria non sarà lo stesso di quello calcolato dall'host: questo indica al processore host che il dispositivo di autenticazione W74M è stato manomesso.
Visualizza prodotti correlati
Il processore può usare questa conoscenza per proteggere il sistema host, ad esempio impedendo al dispositivo manomesso di poter accedere alle sue risorse. Questo protegge dal rischio che un aggressore sostituisca l'unità W74M montata sulla scheda dall'OEM con una W74M diversa per dirottarla.
Questa funzionalità di protezione è pertinente alla seconda caratteristica mostrata in figura 1: ci sono quattro tipi di combinazioni di chiave principale/HMAC/contatore monotono in ciascun dispositivo W74M. Un tipo verrà usato per l'autenticazione del controller del dispositivo host. Gli altri tre "canali" di autenticazione sono progettati, ad esempio, per i dispositivi IoT che devono verificare la propria identità per accedere ai servizi di rete (vedi figura 2). Come si vede, una chiave principale diversa può essere archiviata con sicurezza per ciascun canale di autenticazione e condivisa con il dispositivo host di riferimento. Ciò vuol dire che le chiavi principali del dispositivo host, del gateway Internet e del servizio cloud restano segrete: un dispositivo non conosce la chiave principale di un altro.
Fig. 2: autenticazione multi-strato abilitata dalla W74M
Un altro caso di utilizzo di questa funzionalità di autenticazione multi-strato è in un sistema complesso come un drone, che è composto di più elementi. Un dispositivo W74M in uno di questi elementi può essere usato per autenticare:
– il processore principale del drone
– il modulo amovibile della batteria
– il comando a distanza
– una fotocamera
L'autenticazione cifrata sicura permette al produttore del drone di essere certo che vengano usate solo fotocamere e batterie sostitutive di marca e impedisce la possibilità di un dirottamento non autorizzato del drone in volo.
Implementazione sicura
Come abbiamo detto in precedenza, le funzioni crittografiche di W74M sono estremamente sicure. Inoltre, le chiavi principali sono archiviate in uno spazio di memoria OTP che non può essere letta da dispositivi esterni.
Lo stesso dispositivo W74M è intrinsecamente sicuro. Un'implementazione sicura richiede anche un provisioning sicuro, per essere certi che le chiavi principali programmate in ciascuna unità W74M e ogni SoC o controller host restino un segreto dell'OEM. Di norma questo dipende dai processi di produzione e di provisioning dell'OEM, anche se Winbond può farsi carico in modo opzionale del provisioning della chiave principale del W74M per conto del cliente.
La famiglia W74M di dispositivi flash di autenticazione è disponibile in densità diverse che vanno da 32 Mb a 1 Gb, in pacchetti standard. Ciò vuol dire che i progetti di dispositivi sicuri che oggi incorporano un IC flash NOR/NAND per l'archiviazione del codice e un IC idi autenticazione esterno possono sostituire questi due chip con un solo pacchetto W74M adatto a una presa flash standard, offrendo una riduzione del costo dei materiali e del numero dei componenti fornendo il livello più sicuro di autenticazione.
Il W74M è anche disponibile come dispositivo di autenticazione multi-strato senza capacità di memoria flash NOR, con numeri parte W74M00AVSSIG e W74M00AVSNIG.
CS Lin
Responsabile Marketing, Winbond Electronics Corporation America