Home Tecnologia Sicurezza MQTT, la sicurezza dei messaggi nel mondo IoT

MQTT, la sicurezza dei messaggi nel mondo IoT

La sicurezza è sempre più uno dei temi fondamentali nello sviluppo di tutte le tecnologie. Spesso, però, viene vista come un trade-off, un compromesso, tra un livello di protezione sufficiente e l’utilizzabilità del dispositivo, in particolare nel mondo IoT (Internet of Things).

578
iot1_red

La sicurezza è sempre più uno dei temi fondamentali nello sviluppo di tutte le tecnologie. Spesso, però, viene vista come un trade-off, un compromesso, tra un livello di protezione sufficiente e l’utilizzabilità del dispositivo, in particolare nel mondo IoT (Internet of Things).

IoT e sicurezza

L’IoT è un mondo particolarmente sensibile ai temi della sicurezza perché, quando Internet entra nelle nostre case, aziende e negli oggetti di vita quotidiana, le conseguenze di un dispositivo compromesso possono essere particolarmente impattanti.

MQTT un protocollo sicuro

Come già anticipato, molti dispositivi IoT, specie sensori e piccole schede, hanno risorse limitate. Si preferisce, pertanto, usare un protocollo di comunicazione più conveniente, come MQTT. Dal punto di vista della sicurezza esso implementa alcuni meccanismi ma, per lo più, si affida a protocolli standard ben consolidati. L’architettura di sicurezza di MQTT è divisa in livelli, ognuno dei quali previene un certo tipo di attacco.

Network level

Una soluzione tipica per questo livello è l’utilizzo delle VPN (Virtual Private Network) per costruire canali sicuri tra i broker ed i dispositivi.

Application level

Il protocollo prevede un’autenticazione con username e password e client id. La username o il client id possono essere utilizzati anche per restringere l’accesso di un dispositivo a particolari topic. Il client id (tipicamente di 36 caratteri) dev’essere univoco, tipicamente si usa il MAC address (codice univoco legato fisicamente alla scheda di rete). Nome utente e password vengono trasmessi in chiaro, rendendo tale scelta soggetta ad attacchi eavesdrop. Ci si affida al TLS per evitarlo.

Altra possibilità è l’utilizzo del certificato conforme allo standard X.509 che viene presentato dal client (dispositivo IoT) per farsi riconoscere dal broker. Ciò avviene nel TLS handshake, fase di apertura del canale di comunicazione criptato. L’uso del certificato previene gli attacchi Man-In-The-Middle e può sostituire il primo metodo di autenticazione. Tale tecnica è, tuttavia, di difficile implementazione perché richiede l’uso di un certificato “trusted” e la condivisione e la gestione (concessione, ciclo di vita e revoca) dello stesso su molti client, alcuni dei quali sconosciuti al broker prima della connessione.

L’application level consente anche di criptare il payload, il contenuto della comunicazione. Sarà quindi un encryption end-to-end, a monte della comunicazione client-broker, che, però, proteggerà solo i dati e non la password, qualora venga usata per l’autenticazione. Tale possibilità non richiede certificati ma solo la condivisione delle chiavi e non esclude l’uso del protocollo TSL. Dal momento che non vengono richieste configurazioni del broker o particolare effort lavorativo, la payload encryption è largamente usata. Il payload può essere anche verificato con firma digitale, ovviamente pagando in termini di performance.

Transport level

Ci si affida allo standard di comunicazione TLS/SSL, comunemente usato in rete, che cripta le comunicazioni. Il TLS non è sempre possibile, specie in dispositivi con CPU limitata. In tal caso si consiglia di usare la payload encryption e criptare o, meglio, applicare un hash alla password nel messaggio di connessione. Opzione valida potrebbe essere l’uso della suite di cifratura TLS-PSK, meno avida di CPU ma anche meno diffusa e quindi meno supportata dalle librerie TLS.