Come proteggere i dispositivi IoT basati su microcontroller con l'autenticazione delle impronte digitali

Di Bill Giovino

Contributo di Editori nordamericani di DigiKey

Ai progettisti viene con sempre maggiore insistenza chiesto di garantire che il loro prodotto o il loro sistema è sicuro, specie se deve essere collegato a Internet delle cose (IoT). Gli accessi illegali che sono saliti alla ribalta della cronaca hanno dimostrato la vulnerabilità delle password e la facilità con cui è possibile copiare i codici PIN (Personal Identification Number) e rubare badge basati su NFC (Near Field Communication). I progettisti devono aumentare la sicurezza a monte, mantenendo allo stesso tempo il controllo dei costi e dei tempi di progettazione. L'identificazione delle impronte digitali (ID) è un modo per raggiungere entrambi questi obiettivi.

Implementare la sicurezza delle impronte digitali si è però rivelata una sfida ardua. I dettagli tecnici della progettazione da zero di un sistema di scansione delle impronte digitali con un microcontroller o un processore di segnali digitali (DSP) che contenga il firmware di identificazione delle impronte digitali, l'elaborazione e il condizionamento dei dati e la comunicazione con l'host, possono essere complessi e richiedere uno sforzo di apprendimento non indifferente.

Fortunatamente, ora esistono hardware e software di serie che possono svolgere tutto il duro lavoro di un sistema di riconoscimento delle impronte digitali. In questo articolo, dopo aver introdotto i principi base della tecnica del riconoscimento delle impronte digitali, verrà presentata SEN0188, un'unità autonoma di registrazione e verifica delle impronte digitali prodotta da DFRobot in grado di interfacciarsi con qualsiasi microcontroller host dotato di un'interfaccia UART (ricetrasmettitore asincrono universale).

Verrà quindi illustrato come utilizzare SEN0188 per aggiungere la sicurezza dell'identificazione delle impronte digitali a una struttura che si serve di una rete IoT, per renderla più resistente agli attacchi fisici o di hacking.

Principi base dell'identificazione delle impronte digitali

Le impronte digitali sono le tracce di creste e solchi presenti sui polpastrelli delle dita che hanno il compito di rendere più facile afferrare e tenere oggetti con le mani. Frutto in parte del DNA e in parte di un processo casuale, sono uniche per ogni singolo individuo e le probabilità che due persone abbiano le stesse impronte digitali sono infinitamente basse. Anche quelle di gemelli monozigoti sono diverse. Per questo motivo, l'identificazione delle impronte digitali è un metodo eccellente di rilevamento per sistemi ad alta sicurezza.

I sistemi di identificazione delle impronte digitali comprendono due operazioni: registrazione e verifica. La registrazione è il processo con cui un'impronta digitale pulita viene identificata e memorizzata per un uso successivo. L'impronta digitale viene scansionata una o più volte da uno scanner apposito, dopo di che viene digitalizzata. L'impronta digitale digitalizzata viene quindi analizzata per avere la certezza che sia valida. Se è valida, viene conservata in una memoria non volatile come una Flash o una EEPROM, insieme alle informazioni di identificazione personale del soggetto interessato, come il numero di identificazione, il nome e il numero del badge. Se non è valida, occorre ripetere la scansione del dito.

La verifica delle impronte digitali è il processo in cui un'impronta digitale ben formata viene scansionata per la verifica tramite un confronto con quelle archiviate nella memoria non volatile. Il sistema di scansione indicherà all'host se l'impronta scansionata corrisponde a un'impronta digitale valida memorizzata o se non vi è corrispondenza.

Sicurezza dell'accesso con IoT

IoT collega in rete molti sistemi che prima erano autonomi. Alcuni di questi sistemi richiedono una sicurezza media, come le scuole e le imprese. Le intrusioni illegali in alcuni sistemi critici come gli impianti di trattamento delle acque e le reti elettriche possono invece avere effetti devastanti e quindi richiedono una sicurezza più elevata. Per questi sistemi, gli sviluppatori sono sempre alla ricerca di modi migliori per garantire la sicurezza a un costo minimo, in quanto la progettazione di molti dispositivi IoT è poco dispendiosa. In questi casi, è facile aggiungere ai badge di sicurezza l'identificazione delle impronte digitali.

IoT offre il vantaggio di poter trasmettere attraverso la rete la notifica dei risultati di una scansione delle impronte digitali. Se viene rilevato un accesso non autorizzato, può scattare un allarme o, in casi estremi, la rete IoT può bloccare tutti i sistemi e persino informare telefonicamente le autorità.

Per avere la certezza che la registrazione delle impronte digitali per l'identificazione a fini di sicurezza avvenga correttamente è preferibile la presenza di un tecnico o di un professionista del settore. Lo scanner e il dito devono essere entrambi puliti. Il tecnico deve verificare l'identità della persona sottoposta a scansione. Se la registrazione ha esito positivo, il professionista della sicurezza può aggiungere qualsiasi altra informazione, come il nome o il numero ID del dipendente.

I dettagli tecnici richiesti per progettare da zero un sistema di scansione delle impronte digitali ne hanno reso proibitiva l'implementazione per molti progettisti con un budget limitato. Oggi, hardware di serie come il sensore di impronte digitali SEN0188 di DFRobot - un'unità autonoma di registrazione e verifica delle impronte digitali - può svolgere tutto il lavoro di un sistema di riconoscimento delle impronte digitali (Figura 1).

Figura 1: Il sensore di impronte digitali SEN0188 di DFRobot contiene tutto l'hardware e il firmware richiesti per registrare e verificare le impronte digitali. Comunica con un microcontroller tramite un'interfaccia UART. (Immagine per gentile concessione di DFRobot)

SEN0188 può operare da 3,8 a 7,0 V e assorbe un massimo di 130 mA. Ha un'ampia temperatura di funzionamento da -20 °C a +60 °C e può sopportare fino all'80% di umidità relativa, il che lo rende idoneo per molti ambienti esterni.

Nella Figura 1 vediamo il dispositivo sul cui sensore ottico (rivolto a sinistra) l'utente appoggia il dito. L'acquisizione dell'immagine di un'impronta digitale a fini di registrazione o di verifica richiede meno di un secondo. Ogni impronta digitale viene archiviata nella memoria Flash interna come file modello a 512 byte. La Flash interna di SEN0188 può memorizzare fino a 1000 impronte digitali.

L'UART di SEN0188 è accessibile dal lato inferiore del sensore (Figura 2).

Figura 2: Le connessioni UART si trovano sulla base del sensore di impronte digitali SEN0188 di DFRobot. (Immagine per gentile concessione di DFRobot)

All'accensione, la velocità di trasmissione predefinita di SEN0188 è di 57.600 bps. Può essere regolata tra 9600 e 115.200 bps. La connessione UART utilizza i seguenti segnali:

Numero pin Nome del segnale Direzione Descrizione
 1  VTOUCH  -  Nessuna connessione
 2  SOUT  -  Nessuna connessione
 3  VIN  In  Ingresso alimentazione (da 3,8 a 7,0 V)
 4  TD (Tx)
 Out  Uscita dei dati di trasmissione UART
 5  RD (Rx)
 In  Ingresso dei dati di ricezione UART
 6  GND    Terra dei segnali

Tabella 1: La piedinatura per SEN0188 utilizza una connessione UART asincrona per comunicare con un host. (Tabella per gentile concessione di DFRobot)

L'interfaccia UART può connettersi anche al software di DFRobot su un PC o un laptop. Questo può agevolare lo sviluppo di un sistema di impronte digitali, compreso il debug del firmware di registrazione e verifica.

Utilizzo di SEN0188 di DFRobot in un sistema a microcontroller

Per un sistema a microcontroller autonomo, SEN0188 dovrebbe interfacciarsi con una scheda dotata sia di un microcontroller sufficientemente potente sia di un indicatore visivo dello stato di un'impronta digitale posta sul sensore. Il kit STM32F7308-DK Discovery di STMicroelectronics dispone di tutte le funzioni richieste da un sistema autonomo di identificazione delle impronte digitali. Utilizza un potente microcontroller STM32F730I8K6 basato su un core Arm® Cortex®-M7. La scheda contiene un oscillatore a 25 MHz per il clock ad alta velocità e un oscillatore a 32.768 kHz per il clock a bassa velocità. È supportata da 64 kB di memoria Flash del programma su chip, 64 MB di memoria Flash esterna e 256 kB di SRAM di sistema.

Per il supporto periferico e le comunicazioni dispone di diverse interfacce seriali, tra cui tre interfacce I2C e cinque SPI. Inoltre è provvista di quattro UART/USART che le consentono di comunicare facilmente con SEN0188. Se alimentato a 3,6 V, il microcontroller STM32F730I8K6 è compatibile con l'interfaccia a livello di logica TTL del sensore di impronte digitali di DFRobot.

La scheda Discovery è accompagnata da una scheda figlia compatibile con Arduino™ (Figura 3). Anche se può essere utile durante lo sviluppo, per questa applicazione di identificazione delle impronte digitali non è necessaria e può essere scollegata dalla scheda principale.

Figura 3: La scheda STM32F7308-DK Discovery di STMicroelectronics ha tutte le funzioni richieste per un sistema autonomo di identificazione delle impronte digitali. La scheda associata in alto a sinistra supporta le schede figlie Arduino, mentre il connettore ESP-01 in basso a destra supporta qualsiasi scheda ESP8266 compatibile. (Immagine per gentile concessione di STMicroelectronics)

Ha anche un display LCD TFT di 240x240 che può essere utilizzato per fornire un'indicazione visiva passa/non passa di un'impronta digitale.

Per connettersi a una rete Wi-Fi, il kit STM32F7308-DK Discovery è dotato di una presa per la connessione a qualsiasi scheda Wi-Fi ESP8266 standard. Ad esempio, WRL-13678 è una scheda compatibile con ESP8266 di SparkFun Electronics (Figura 4).

Figura 4: WRL-13678 di SparkFun Electronics è una scheda compatibile con ESP8266 con un connettore ESP-01. Viene inserito nella scheda Discovery di STMicroelectronics per fornire un facile accesso Wi-Fi. (Immagine per gentile concessione di SparkFun Electronics)

La scheda si inserisce nel connettore ESP-01 in basso a destra della scheda Discovery rappresentata nella Figura 3. WRL-13678 ha la propria antenna integrata e consente alla scheda Discovery di collegarsi facilmente a una rete Wi-Fi a 2,4 GHz.

In un sistema di sicurezza IoT connesso in una rete Wi-Fi, qualsiasi accesso consentito o rifiutato può essere trasmesso a qualsiasi nodo IoT. Questa capacità può essere utile per consentire l'accesso ad altre aree o sistemi con forti limitazioni. Ad esempio, se qualcuno richiede l'accesso a un'area altamente riservata all'interno di una struttura, ma gli scanner di impronte digitali degli ingressi non hanno una registrazione con tale autorizzazione, il sistema può classificare questo tentativo come una potenziale violazione della sicurezza e adottare le misure appropriate.

Non è insolito che strutture con questo livello di sicurezza richiedano anche la verifica dell'identità di chi esce dalla struttura. Questa verifica non solo fornisce un registro di tutti gli ingressi e le uscite, ma rileva anche il personale non autorizzato che si trova all'interno dell'edificio e invia un avviso agli addetti della sicurezza.

Implementazione della sicurezza delle impronte digitali

Il sensore SEN0188 comunica con la scheda Discovery host di STMicroelectronics tramite l'interfaccia UART utilizzando un semplice set di comandi. I comandi sono in tutto 22 e includono la registrazione, la verifica e la cancellazione delle impronte digitali, vari comandi di ricerca, la lettura e la scrittura direttamente nella memoria Flash interna, lo stato di lettura e l'impostazione della sicurezza del sensore. Il sensore può anche recuperare l'immagine bitmap memorizzata di qualsiasi impronta digitale e trasmetterla all'host, che la scheda Discovery può visualizzare sul suo LCD TFT.

La registrazione delle impronte digitali può essere abilitata sulla stazione di identificazione delle impronte digitali utilizzando un PIN o una password. Tuttavia, un metodo di registrazione più sicuro è quello di abilitarla trasmettendo un comando all'endpoint IoT della scheda Discovery da un qualche punto della rete, ad esempio dal centro operativo della sicurezza. In alternativa, per autorizzare la registrazione si può utilizzare un dispositivo mobile come un cellulare o un tablet. Il successo della registrazione può essere verificato anche sul dispositivo mobile.

L'area del sensore ottico delle impronte digitali su SEN0188 ha una retroilluminazione a LED che può essere facilmente attivata e disattivata dall'host tramite i comandi OpenLED e CloseLED. Questa possibilità può essere utile in un ambiente sicuro illuminando il sensore di impronte digitali solo quando il sistema è pronto per accettarle. La retroilluminazione può essere spenta durante un evento di sicurezza per indicare che in quel momento non sarà accettato nessun accesso, nemmeno da parte di personale autorizzato.

Il frame UART predefinito di SEN0188 utilizza un bit di start, 8 bit di dati e un bit di stop. Per primo viene trasmesso il bit meno significativo (LSB) dei dati. All'accensione, SEN0188 impiega 300 ms per inizializzare ed eseguire un autotest. Trasmette poi un byte di 55h all'host per indicare che è pronto. L'host può anche inviare un comando GetEcho al sensore per richiedere il codice di conferma 55h. Se l'host non riceve questo byte, potrebbe significare che il dispositivo SEN0188 accusa un malfunzionamento o non è alimentato o anche che le comunicazioni tra SEN0188 e l'host sono interrotte.

SEN0188 è stato progettato per fornire un ambiente sicuro per l'autenticazione delle impronte digitali e offre numerose funzioni di sicurezza, compresa la protezione con password. La password predefinita di fabbrica di quattro byte è 00000000h e deve essere cambiata prima di installare il sistema sul campo. Viene memorizzata nella Flash interna del sensore utilizzando il comando di impostazione password del sensore SetPwd.

Per una maggiore sicurezza, il set di comandi del sensore non include un comando di lettura della password. Se la password del sensore va persa, il sensore SEN0188 diventa inutilizzabile; non esiste nessun reset hardware o software in grado di recuperare il sensore o le impronte digitali memorizzate.

Il sensore ha anche un indirizzo predefinito di quattro byte FFFFFFFFh che è memorizzato nella Flash interna e che può anche essere cambiato tramite il comando SetAddr.

L'autenticazione e la memorizzazione di tutte le impronte digitali vengono eseguite all'interno del sensore. Questo impedisce manomissioni delle impronte digitali memorizzate o del processo di verifica.

In via precauzionale ai fini della sicurezza, prima di utilizzare lo scanner per la prima volta è consigliabile cancellare tutte le impronte digitali che vi sono memorizzate. Questa funzione può essere eseguita con il comando Empty, che elimina tutti i modelli di impronte digitali memorizzati nella Flash interna del sensore.

Conclusione

La sicurezza dell'accesso è un'applicazione sempre più importante per i sistemi embedded e IoT, ma deve essere realizzata in modo efficace, con il giusto equilibrio tra costi, semplicità ed efficacia. Come illustrato, il sensore di impronte digitali SEN0188 di DFRobot consente ai progettisti di prototipare e sviluppare rapidamente un sistema per garantire la sicurezza dell'accesso alle aree sensibili. Quando è interfacciato con il kit Discovery STM32F7308-DK con un display LCD TFT e la scheda Wi-Fi WRL-13678 di SparkFun Electronics, è possibile sviluppare un sistema di sicurezza semplice, affidabile e facile da usare.

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 Bill Giovino

Bill Giovino

Bill Giovino è un ingegnere elettronico con un BSEE ottenuto a Syracuse University, ed è uno dei pochi ad essere passati con successo da progettista, a ingegnere delle applicazioni sul campo, al marketing tecnologico.

Da oltre 25 anni, Bill promuove le nuove tecnologie per un pubblico tecnico e non tecnico a nome di molte aziende, tra cui STMicroelectronics, Intel e Maxim Integrated. In STMicroelectronics, Bill ha contribuito a guidare i primi successi dell'azienda nel settore dei microcontroller. Con Infineon, Bill ha orchestrato i primi successi di progettazione di microcontroller dell'azienda nel settore automotive statunitense. In qualità di consulente di marketing per la sua società CPU Technologies, Bill ha aiutato molte aziende a trasformare prodotti di secondo grado in storie di successo.

Bill è stato uno dei primi ad adottare l'Internet delle cose, compresa l'integrazione del primo stack TCP/IP completo su un microcontroller. Bill è fedele al motto "Le vendite guidate dall'educazione" e tiene molto alla crescente importanza di comunicazioni chiare e ben scritte nella promozione di prodotti online. È moderatore del famoso gruppo Sales & Marketing di LinkedIn Semiconductor e parla correntemente di B2E.

Informazioni su questo editore

Editori nordamericani di DigiKey