Progettare dispositivi IoT sicuri

IOT_2

La condivisione è la cosa che preferisco del web. Ovviamente penso alla condivisione del sapere (quindi niente gattini e frasi pseudo intellettuali), al concetto di Open Source che rende disponibili le tecnologie più avanzate a beneficio di chiunque abbia la voglia e la capacità di sfruttarle.

Con l’idea giusta e il software adeguato l’hardware non è un problema. Prototipare uno smart device avanzato è economico, basta un’Arduino, una Raspberry o una scheda Galileo e il problema è risolto. Il problema della sicurezza invece resta, ed è più attuale che mai perché la radice di gran parte delle falle nei sistemi attuali sta nella fase di progettazione.

Un developer appassionato con un Raspberry rappresentano un’ accoppiata vincente ma come progettare dispositivi IoT sicuri?

 

Privacy by design.  Un device sicuro è stato progettato per esserlo; parsimonia e controllo sui dati raccolti sono i punti cardini da tenere in considerazione sin dalle prime fasi dello sviluppo. Nel caso di invio remoto delle informazioni la catena di custodia dev’essere ben strutturata e monitorata utilizzando tutte le tecnologie accessorie che possono assicurarne la protezione. E’ buona norma limitare la quantità di dati sensibili raccolti a quelli strettamente necessari per l’utilizzo del dispositivo, il fatto che un’informazione relativa all’utente sia disponibile non implica che la si debba anche raccogliere o inviare in remoto.

 

Trasparenza. Il software di controllo ha l’obbligo di informare l’utente sulla tipologia di dati collezionati e sul loro utilizzo. Il consumatore del servizio dev’essere messo in condizione di gestire nel dettaglio ogni informazione sensibile raccolta, questo implica la possibilità di eliminare i dati e disattivarne all’occorrenza  la raccolta. Le policy del sistema e di eventuali software terzi che lo sfruttano devono essere chiare e trasparenti indicando nello specifico come vengono applicate le norme vigenti per la tutela della privacy.

 

Gestione dei dati. Non esiste un sistema di gestione universale che mette a riparo i dati raccolti da qualsiasi minaccia. Le norme per la custodia possono variare da paese, la tipologia dei dati può essere molto variabile, i cicli e le tecnologie di storage sono mutevoli, insomma ci sono molte variabili che impediscono una sistema “perfetto” per la protezione delle informazioni. Questo d’altro canto non è una giustificazione per una progettazione approssimativa della gestione dei dati. Sistemi di crittografia e altre tecnologie affini blindano il trasporto delle informazioni.  Processi di vulnerability assessment evitano errori comuni (spesso banali) che potrebbero portare all’ esposizione pubblica delle informazioni raccolte. Strategie di disaster managemant and recovery  permettono di affrontare con serenità eventuali situazioni ostili.

 

Fault tolerance. Stando ai rapporti più recenti sugli attacchi informatici registrati nell’anno in corso i dispositivi IoT diventano un bersaglio sempre più appetitoso per gli attacker in cerca di obiettivi semplici da penetrare e monetizzare. I device connessi, soprattuto quando sono a controllo di sistemi critici, . Per raggiungere lo scopo serve un software robusto e ben aggiornato, un sistema di autoverifica dello stato della connessione e dei servizi e un programma per il monitoring in real time con alert per gli eventi ostili.

 

Protocolli di sicurezza. Crittografia e tecnologie di occultamento affini innalzano notevolmente il livello di sicurezza della comunicazione in rete. Gli scambi dati devono seguire protocolli standard che ne garantiscano la consistenza e l’affidabilità. Quando vari elementi indipendenti del sistema comunicano in rete devono essere in grado di identificarsi univocamente a vicenda.

 

Gestione dell’identità. Verificare la proprietà del device può essere una sfida, per un device IoT moderno username e password tradizionali non sono più sufficienti. Le rilevazioni biometriche possono rappresentare una soluzione efficace considerando il livello raggiunto da queste tecnologie per semplicità, accessibilità e costi. In molti altri casi si può lasciare l’ incombenza della gestione dell’identità a servizi terzi come il single-sign-on di OpenID o i meccanismi di identificazione messi a disposizione dai social più comuni. Se questa identità dev’essere mantenuta e condivisa tra più elementi distinti che fanno parte dello stesso sistema connesso le cose si fanno più complesse. Il trasporto dell’identità diventa uno dei punti critici più facili da attaccare e quindi va blindato al meglio prevedendo meccanismi di conferma distribuiti.

 

Questi sono alcuni dei punti chiave per la progettazione di sistemi hardware/software connessi. Una tecnologia perfettamente sicura è impossibile da realizzare ma una buona progettazione e uno sviluppo costante sono in grado di assicurare la robustezza del prodotto finale.