Il termine Internet of Things o IoT, spesso tradotto erroneamente con Internet delle Cose quando sarebbe più opportuna la traduzione "Internet degli Oggetti", è ormai entrato a far parte del lessico comune di quanti si occupano di tecnologie ICT (Information Communication Technology, ndr).
Nel corso di queste note mi sono riproposto di fare un po’ di chiarezza sulle tecnologie adottate, sui componenti e sulle possibili problematiche di sicurezza delle soluzioni IoT.
Inizio con affermare che le soluzioni IoT hanno delle caratteristiche particolari che le rendono uniche. L’elevato numero di dispositivi, che solitamente fanno parte di una soluzione IoT, impone delle caratteristiche di scalabilità basate non tanto sulle prestazioni quanto sulla necessità di gestire e manutenere un parco installato caratterizzato da una cardinalità estremamente rilevante (numeri estremamente elevati). Tutto ciò si riflette nella mole di dati da memorizzare e analizzare.
Il fine ultimo delle soluzioni IoT nei diversi ambiti applicativi è sempre quello di fornire degli strumenti che, a fronte di un fenomeno fisico naturale o artificiale, permettano di capire cosa sta succedendo, perché sta succedendo e potenzialmente cosa potrebbe avvenire. Sensori e attuatori sono quindi i mezzi che permettono di interagire con l’ambiente e con il fenomeno fisico che si vuole controllare. Si tratta dunque di gestire e analizzare un grande numero di dati di natura diversa aggregandoli ed elaborandoli in modo da trarre da esse delle informazioni in base alla quale eseguire specifiche azioni (in inglese Actionable Information).
Proseguo con l’affermare che nel corso degli ultimi 2-3 anni si è verificata la disponibilità di un insieme di catalizzatori che hanno favorito lo sviluppo delle tecnologie necessarie alla realizzazione di soluzioni IoT e conseguentemente l’attenzione dell’industria verso questo tipo di tecnologie è cresciuto in proporzione. Ormai parlare di soluzioni IoT rappresenta non tanto una sperimentazione di frontiera, quanto la necessità di confrontarsi con le specifiche problematiche di implementazione.
Tra i catalizzatori che concorrono alla adozione di soluzioni IoT si possono citare:
- la disponibilità di sensori e attuatori di tipologia diversa e variegata;
- l’offerta da parte dei principali vendor di soluzioni Cloud di piattaforme dedicate a questo ambiente e dotate di primitive atte ad indirizzare alcune delle caratteristiche specifiche di questo tipo di applicazioni;
- la disponibilità di protocolli di comunicazione specializzati in grado di supportare le peculiarità (cardinalità, resilienza, affidabilità) necessarie in ambito IoT.
Prima di addentrarci nella analisi di una soluzione IoT e dei relativi componenti tecnologici conviene spendere qualche parola sul concetto di sensori e attuatori che rappresentano gli elementi fondamentali di una tale soluzione.
I sensori
I sensori sono dei componenti hardware specializzati nella lettura di un parametro fisico (temperatura, pressione, umidità, intensità luminosa,…) e nella trasmissione del dato rilevato in forma digitale o analogica mediante un insieme di regole (protocollo) che permettono al ricevente di interpretarlo correttamente. Un esempio molto semplice può essere un termometro per la temperatura: esso genera un valore espresso in gradi Celsius o Fahrenheit che viene solitamente rilevato mediante la lettura di una apposita scala graduata o di un piccolo display.
Qualora il termometro sia dotato di un minimo di logica per la trasmissione di questo valore verso un altro componente, utilizzando un protocollo opportuno, avremo realizzato un sensore di temperatura. Naturalmente i sensori possono essere di tipologia diversa e molto complessi in grado di rilevare più grandezze fisiche contemporaneamente.
Esistono oggi sensori in grado di rilevare il transito di una persona attraverso un Gate (cancello logico) e individuarne il senso (ingresso o uscita), sensori in grado di riconoscere codici a barre o impronte digitali, sensori in grado di misurare la distanza relativa tra due oggetti e cosi via. Tutti i dati raccolti dai sensori devono essere codificati opportunamente per l’elaborazione successiva.
Tornando all’esempio del sensore di temperatura sarà necessario anche prevedere l’invio o la segnalazione dell’unità di misura associata: Celsius o Fahrenheit. Il dato generato dal sensore deve quindi essere opportunamente formattato per l’invio e la successiva elaborazione.
Gli attuatori
Mentre i sensori si occupano di catturare un dato e inviarlo per l’elaborazione successiva, è necessario anche disporre della possibilità di eseguire delle azioni a seguito dell’elaborazione eseguita a partire dai dati forniti dai sensori o da un sistema di controllo. Questo è il compito degli attuatori. Come in precedenza un semplice esempio può essere la chiusura o apertura di un circuito alla ricezione di uno specifico comando (banalissimo esempio: l’apriporta di casa).
Analogamente a quanto affermato per i sensori anche gli attuatori possono essere complessi e multifunzione: si pensi, per esempio alla necessità di porre in rotazione un motore ad una specifica velocità o al posizionamento di un braccio meccanico per il rilascio di un contenuto (apertura di circuito). Anche in questo caso, gli attuatori devono essere dotati di funzioni primitive di comunicazione che permettono la ricezione di comandi e l’interpretazione del loro significato.
I protocolli di comunicazione
Sensori e attuatori devono quindi, per quanto detto, essere in grado di trasmettere e ricevere delle informazioni verso un sistema di più alto livello per una successiva elaborazione. Si noti che sia per i sensori che per gli attuatori, la comunicazione deve essere in genere bidirezionale e dunque devono essere gestite verso entrambi sia la trasmissione che la ricezione di dati e comandi. Per esempio in un sensore può essere possibile definire una stringa univoca che ne identifica il posizionamento, mentre un attuatore deve essere in grado di fornire un indicazione di errore qualora la funzione richiesta (posizione, velocità, apertura/chiusura di un contatto…) non sia attuabile.
L’insieme di regole e di formati con cui sensori e attuatori comunicano con un sistema di elaborazione (PLC, Gateway, Edge Computer,…) costituisce il protocollo di comunicazione utilizzato tra queste entità. Il protocollo di comunicazione deve indirizzare una serie di situazioni per essere efficace e supportare la implementazione della soluzione prevista.
Alcune tra le problematiche che devono essere risolte dal protocollo sono:
- Come indirizzare univocamente lo specifico sensore/attuatore in una installazione
- Come stabilire una priorità di accesso al mezzo trasmissivo (chi parla per primo)
- Cosa fare nel caso il mezzo trasmissivo sia occupato (chi sta parlando)
- Come segnalare eventuali errori
- Come formattare i dati trasmessi o ricevuti (p.es. quanti bit assegnare ad una specifica grandezza)
- Come assicurare che il dato trasmesso non venga corrotto nel corso della trasmissione
- Etc.
I requisiti che tali protocolli devono soddisfare includono sia la semplicità di implementazione vista la limitata capacità elaborativa che la necessità di ridurre il consumo di eventuali batterie dei sensori e attuatori. I protocolli vengono poi resi disponibili su mezzi trasmissivi diversi: dal classico doppino in rame fino alle connessioni Wireless su bande non soggette a licenza (bande ISM). Una caratteristica comune a questi protocolli è la limitata larghezza di banda richiesta per la trasmissione dei dati come conseguenza appunto della semplicità dei dati trasmessi.
In ambito IoT esistono svariati protocolli di comunicazione sia proprietari che standardizzati, tra questi possono essere ricordati IO-Link, ModBus, LoraWAN, En-Ocean, gli ultimi due su mezzo trasmissivo radio.
L’architettura di una soluzione IoT
Una soluzione IoT non si esaurisce ovviamente con la sola disponibilità di sensori e attuatori ma richiede la presenza e la coordinazione di una serie di componenti che permettano di estrarre dai dati le informazioni decisionali (Actionable Information).
La figura schematizza i vari componenti di una implementazione IoT.
Procedendo da sinistra verso destra si notano i sensori e attuatori responsabili della cattura del dato e della eventuale modifica dell’ambiente controllato. I protocolli di trasmissione permettono di consolidare questi dati presso dispositivi intelligenti che si differenziano sostanzialmente per la capacità elaborativa necessaria in base alle caratteristiche del sistema che si vuole realizzare.
Diciamo subito che qualora non sia necessaria una risposta del sistema complessivo in tempi molto ristretti (near real-time) i dati verranno consolidati da un Edge Gateway1 di capacità più limitate rispetto ad un Edge Computer in grado di fornire sofisticate elaborazioni locali.
I dati cosi consolidati, normalizzati e opportunamente formattati vengono poi trasmessi ad un’applicazione Cloud che estrarrà le informazioni di interesse. Anche in questo ulteriore passaggio trasmissivo risultano fondamentali le caratteristiche del protocollo di comunicazione utilizzato per inoltrare i dati verso l’ambito applicativo in cloud. Rispetto al caso della trasmissione da sensore/attuatore da/per Edge device, c'è però in questo caso una significativa e importante differenza: tutti i protocolli utilizzati (MQTT, AMPQ, OPC UA,…) si basano su di un unico comune denominatore rappresentato dal protocollo IP sul quale poi si appoggiano, a livello superiore, i protocolli prima identificati.
In ambito applicativo, i server o i corrispondenti servizi Cloud forniranno le necessarie funzioni primitive per la memorizzazione, elaborazione e presentazione delle informazioni estratte dai dati catturati.
Da considerare poi che i principali fornitori di servizi Cloud propongono oggi delle piattaforme specializzate per l’ambito IoT che offrono una serie di funzionalità primitive volte a semplificare il processo di implementazione e che indirizzano le necessità di installazione, configurazione e gestione dei dispositivi Edge sia Gateway che Computer.
Una necessaria precisazione va fatta in merito alle funzionalità di Edge Computing necessarie, come abbiamo affermato, alla realizzazione di implementazioni caratterizzate da requisiti temporali molto stringenti. È questo il caso di soluzioni di controllo di sistemi critici per i quali il ritardo (ed eventualmente la non disponibilità delle applicazioni Cloud) non è tollerabile ed è dunque necessario fornire una risposta (una azione) in tempi molto contenuti. L’elaborazione locale quindi si sostituisce all’elaborazione in cloud della quale è in grado di sfruttare algoritmi e dati storici.
Riassumendo dunque la catena tecnologica di una implementazione IoT è composta da un numero di componenti sicuramente elevato che possono però essere aggregati in tre principali categorie:
- I sensori/attuatori responsabili dell’interazione con l’ambiente che si vuole realizzare o controllare
- I dispositivi di edge che concentrano, normalizzano e trasmettono i dati verso i sistemi di elaborazione applicativa
- Le applicazioni che estraggono dai dati le informazioni fruibili e le rendono disponibili presentandole opportunamente.
Malgrado la apparente semplicità della soluzioni, gli aspetti critici che devono essere analizzati in dettaglio sono numerosi:, in particolare gli aspetti di sicurezza meritano una attenzione particolare.
La sicurezza nelle realizzazioni IoT
Come qualunque sistema. ICT anche nelle realizzazioni IoT la sicurezza gioca un ruolo fondamentale. Si tratta quindi di individuare le eventuali criticità e i componenti specifici che devono essere considerati nella pianificazione di una strategia di sicurezza in ambito IoT.
Seguendo la catena tecnologica individuata in precedenza si possono ipotizzare alcune considerazioni partendo da sensori e attuatori.
Si tratta solitamente di componenti relativamente semplici caratterizzati da limitate capacità elaborative in modo da ridurre il consumo di eventuali batterie di alimentazione. Le grandezze su cui sensori/attuatori devono intervenire sono rappresentate da un valore numerico (temperatura, pressione, rotazione di un motore passo-passo…) o digitale (on/off, aperto/chiuso,…) che assume un significato specifico nel contesto globale della soluzione considerata.
Possiamo affermare che il valore del SINGOLO dato è dunque limitato e di poco interesse: la prospettiva è completamente diversa quando si tratta dell’INSIEME dei dati che è poi possibile correlare. In ogni caso i sensori/attuatori sono dotati di un firmware relativamente semplice e molto spesso non aggiornabile.
Una prima valutazione sulla sicurezza deve quindi essere svolta sul firmware del dispositivo e successivamente sul protocollo di comunicazione che permette l’inoltro dei dati verso il dispositivo edge. Si noti che in questo caso si tratta di protocolli specializzati, per certi versi proprietari, per i quali la disponibilità di tool di compromissione o di intercettazione è comunque limitata. Ciò non toglie che eventuali rischi di compromissione di tali protocolli /mezzi trasmissivi debbano essere valutati.
Diverso è lo scenario relativo ai dispositivi edge: in questo caso le possibili compromissioni di sicurezza possono essere molteplici. Il firmware del dispositivo in questo caso è spesso basato o comunque include delle componenti Open Source che possono presentare vulnerabilità: è dunque necessario valutare sia l’aspetto comportamentale del dispositivo, che la possibile presenza di “backdoor” dormienti che potrebbero essere presenti in qualche modulo software.
L’utilizzo di protocolli di comunicazione basati su IP apre poi la possibilità alle vulnerabilità tipiche degli ambienti basati su IP. Fortunatamente queste sono ben comprese e documentate nell’ambito tecnologico ed esistono strumenti sofisticati per minimizzare il rischio di compromissioni a questo livello.
Le principali soluzioni Cloud in abito IoT offrono oggi tutta una serie di strumenti per indirizzare le problematiche di una connessione sicura tra un edge device e la relativa applicazione Cloud: tali strumenti forniscono tra l’altro la crittografia dei dati trasmessi, la mutua autenticazione tra applicazione e edge device, la verifica dell’integrità del dato e la non replicabilità dello stesso. A completamento delle possibili vulnerabilità di una soluzione IoT vanno menzionate quelle relative all’ambiente Cloud e alle applicazioni e dati ivi installati, per le quali esistono dettagliate informazioni in letteratura.
Per concludere, le soluzioni IoT a fronte di una semplicità concettuale dovuta alla schematicità dell’architettura di rete, presentano invece una serie di complessità derivanti dall’elevato numero di dispositivi in gioco, dalla conseguente necessità di disporre di efficaci strumenti di gestione e dalle problematiche di sicurezza che si possono concretizzare, con modalità diverse, in più punti della realizzazione richiedendo l’applicazione, il coordinamento e la gestione di strumenti di difesa di natura differente. Questo comporta una conoscenza multidisciplinare di tecnologie e prodotti che può essere in parte mutuata da precedenti esperienze in ambito ICT quando associata alla necessaria padronanza dell’ambiente fisico (degli Oggetti) che si vuole controllare e/o realizzare.
1 Edge Gateway : con questo termine viene identificato un dispositivo di comunicazione che è in grado di estrarre le informazioni ricevute tramite uno specifico protocollo di comunicazione e formattarle opportunamente per la trasmissione e l’inoltro tramite un protocollo diverso. Ad esempio un Edge Gateway è in grado di rilevare lo stato di un contatto digitale (ON/OFF) e formattare questa informazione in modo opportuno in modo che possa essere trasmessa ad una applicazione residente su di un server mediante il protocollo TCP/IP.