DIGITAL
AUTHENTICATION
53
- ELETTRONICA OGGI 464 - SETTEMBRE 2017
segreto, una “root key” (ovvero, la chiave di primo livello o
chiave radice).
Questa root key non è mai trasmessa direttamente tra l’host
e la memoria (che rappresentano il “challenger” e il “respon-
der”). Al contrario, viene generato un messaggio cifrato (un
HMAC – Hash-based Message Authetication Code; in pratica
un codice per l’autenticazione di un messaggio basato su
una funzione di hash) ottenuto mediante una combinazione
della root key e un elemento di tipo di-
namico come un numero casuale; que-
sta combinazione viene quindi elabora-
ta con l’algoritmo di cifratura SHA-256.
SHA-256, acronimo di Secure Hash
Algorithm con un digest (o impronta,
definibile come una sequenza di bit di
lunghezza fissa e con particolari carat-
teristiche che la rendono unica) di 256 bit, è una funzione
crittografica di hash conforme allo standard FIPS (Federal
Information Processing Standard) riconosciuto dall’agenzia
federale statunitense NIST (National Institute of Standards
and Technology). Si tratta di una funzione crittografica uti-
lizzata per l’elaborazione delle transazioni di tipo finanziario
ed è generalmente considerato praticamente inviolabile.
Per autenticare una memoria W74M, il controllore host con-
fronta il valore dell’HMAC della memoria rispetto al valore
che esso calcola utilizzando la sua root key e lo stesso nu-
mero random, elaborato sfruttando l’algoritmo SHA-256. Se
i due valori corrispondono, la memoria inizia a funzionare
regolarmente.
Poiché l’HMAC è generato in parte sfruttando un elemento
dinamico, come un numero casuale, il valore dell’HMAC è dif-
ferente ogni volta che viene generato. Ciò significa che tutti
gli attacchi che possono essere condotti con successo con-
tro una memoria flash con il tradizionale UID fisso, avranno
un esito negativo contro una memoria W74M. Considerando
l’elevato grado di sicurezza del la funzione SHA-256, in pra-
tica non sussiste il rischio concreto che un eventuale intru-
sore possa decifrare l’HMAC per rilevare il valore della root
key. L’esame della figura 1 evidenzia altre interessanti carat-
teristiche di W74M. In primo luogo, il contatore monolitico
non volatile fornisce una verifica supplementare dell’auten-
ticità della memoria. Il contatore parte da zero quando la
root key è stabilita e viene aggiunto un singolo incremento
in risposta a un comando inviato dal controllore host: ciò
significa che il contatore ha un valore unico che è noto so-
lamente alla memoria e all’host. Se il valore del contatore
fornito dalla memoria quando l’host lancia un challenge non
corrisponde al valore del contatore dell’host, il valore del-
l’HMAC della memoria non sarà lo stesso di quello calcolato
dall’host; ciò segnala al processore host che il dispositivo
di autenticazione W74M è stato manomesso. Il processore
accesso più probabile sarà rappresentato dalla memoria
flash esterna.
Per tale motivo, gli OEM cercano di proteggere il loro har-
dware preposto alla memorizzazione del codice con un
identificatore unico (UID – Unique ID) immagazzinato in una
partizione dello spazio di memoria della flash. In realtà, in
UID è una barriera abbastanza semplice da aggirare. Qual-
siasi progettista con un certo know how nel campo della
sicurezza sarà in grado di collegare
una MCU alla memoria e programmare
quest’ultima in modo tale che gli invii
il proprio UID. Una volta noto questo
identificatore unico, la RoT (Root-of-
Trust) dell’OEM è violata. Il codice me-
morizzato nel dispositivo può essere
copiato, dando così inizio alla clonazio-
ne del progetto del termostato.
Il punto debole di questo sistema di sicurezza della flash è
dato dal fatto che l’UID stesso non è sicuro. Si tratta di un
numero di codice permanente e immutabile: una volta letto
e trasferito dalla memoria, esso può essere utilizzato ancora
da un host non autorizzato.
La soluzione: autenticazione sicura e dinamica
In teoria, la soluzione a questo problema è semplice da im-
plementare: l’UID deve essere diverso ogni volta che un
l’host invia una sfida (challenge) alla memoria. Il vantaggio
di avere un UID fisso è legato alla semplicità di implemen-
tazione: esso deve essere programmato una volta nella me-
moria flash e una volta nel controllore host. Per l’autentica-
zione del dispositivo flash è richiesto un semplice confronto
tra i due valori. A questo punto è necessario individuare
una modalità che permetta di fornire una risposta a una
challenge proveniente dall’host che, pur essendo differente
ogni volta, possa essere riconosciuta dall’host stesso.
Cifratura simmetrica dell’ID di memoria
Si tratta di un problema che Winbond si propone di risol-
vere con la propria famiglia di flash W74M (Authentication
Flash) la cui architettura è riportata in figura 1. Azienda
conosciuta soprattutto per la sua vasta gamma di memorie
Flash NAND e NOR seriali, Winbond è il maggior produttore
su scala mondiale di flash seriali, con una quota di merca-
to pari a circa il 30%. Nel 2016 La società ha spedito 2,1
miliardi memorie flash seriali della serie SpiFlash. Per ri-
solvere le problematiche legate alla vulnerabilità della sicu-
rezza che interessa la porzione di memoria flash dei progetti
sviluppati dai clienti, Winbond ha quindi introdotto la serie
W74M. La metodologia base usata dalla società per proteg-
gere l’identità di una memoria prevede l’uso della cifratura
simmetrica: sia l’host sia la memoria conoscono lo stesso
Il livello di sicurezza
di un sistema elettronico
è determinato dal suo anello
più debole