Crittografia asimmetrica a protezione dell’IoT

Miliardi di oggetti connessi, innumerevoli porte di accesso, processi di sicurezza sempre più vulnerabili, attività di hacking sempre più raffinate ed efficaci. Con prospettive di questo tipo le contromisure per preservare informazioni preziose e proprietà intellettuali (IP - Intellectual Property) sotto forma di codice software devono e dovranno essere sempre più efficaci e mirate.

È ormai un dato di fatto che Internet of Things (IoT) avrà un impatto significativo sul modo di vivere, lavorare, viaggiare e accedere ai servizi delle persone. Le aziende, dal canto loro, faranno affidamento in misura sempre maggiore sulle informazioni acquisite mediante le tecnologie IoT per supportare i clienti, migliorare i processi, contenere i costi e trarre ispirazione per lo sviluppo di nuovi prodotti. In ultima analisi i 10, 50 o 100 miliardi di oggetti che saranno connessi a Internet rappresenteranno un enorme numero di dispositivi accessibili da remoto contenenti informazioni preziose e proprietà intellettuali (IP - Intellectual Property) sotto forma di codice software.

Essi inoltre avranno privilegi di accesso a server contenenti una grandissima mole di informazioni e a reti aziendali. Senza dimenticare che oggigiorno esiste già un gran numero di oggetti di questo tipo, ciascuno dei quali potenzialmente esposto a tentativi non autorizzati di sfruttare (ovviamente per usi impropri) qualsiasi risorsa a esso correlata.

La protezione di questi dispositivi contro gli attacchi e la capacità di rilevare e isolare quelli che sono risultati compromessi è di fondamentale importanza se si vogliono sfruttare al massimo gli enormi vantaggi che IoT è in grado di offrire. L’utilizzo della crittografia asimmetrica per proteggere il boot-up (ovvero l’avvio) e l’autenticazione del dispositivo e mantenere la segretezza dei dati e delle proprietà intellettuali può assicurare una protezione robusta e leggera (lightweight, ovvero che non richiede grandi risorse di calcolo), adatta quindi per le applicazioni IoT.

Una protezione completa: dalla prima accensione all’EoL (End of Life)

Un dispositivo IoT è vulnerabile fin dal momento in cui viene installato e acceso. Nel caso potenziali hacker fossero in grado di interferire con il processo di boot (avvio), potrebbero introdurre software dannoso (malware) per conseguire numerosi scopi illeciti, come ad esempio l’acquisizione di informazioni sugli utenti legittimi, il furto della proprietà intellettuale associata al codice applicativo fino ad arrivare al controllo completo del dispositivo. Una volta acquisito il controllo del dispositivo, gli hacker possono falsificare informazioni, disabilitare apparecchiature, sabotare processi o sistemi di sicurezza oppure cercare di accedere a reti aziendali per sottrarre informazioni sensibili.

Una sequenza di boot tradizionale verifica solamente la presenza dell’immagine dell’applicazione ed esegue una checksum (somma di controllo) o un controllo CRC prima di caricare l’applicazione. In una sequenza di questo tipo esiste la possibilità che l’immagine dell’applicazione venga sostituita con software dannoso. Un processo di boot sicuro, invece, verifica innanzitutto l’autenticità dell’immagine dell’applicazione. Nel caso l’immagine non sia autenticata, non viene consentito l’avvio della sequenza di boot. Grazie alla verifica dell’autenticità del codice, il dispositivo si comporterà nel modo previsto ed eseguirà solamente funzioni note e legittime. La protezione del processo di boot permette quindi di stabilire una RoT (Root of Trust) nel dispositivo.

Questa Root of Trust (ovvero la radice da cui far partire la catena di fiducia) rappresenta la base per l’autenticazione del dispositivo quando quest’ultimo si connette a una rete.

La sicurezza dipende dall’autenticazione mutua, il che significa che il dispositivo deve anche essere in grado di autenticare il suo host. Stabilire la fiducia reciproca tra il dispositivo e la rete rappresenta la base per la sicurezza delle interazioni.

I metodi utilizzati per espletare tale compito prevedono il ricorso a diverse tecniche di crittografia simmetrica e asimmetrica, come ad esempio il protocollo ECDH (Elliptic Curve Diffie Hellman) per la cifratura/decifratura, l’algoritmo ECDSA (Elliptic Curve Digital Signature Algorithm) che con la funzionalità firma/verifica (sign/verify) garantisce un’autenticazione asimmetrica sicura e lo schema challenge/response che utilizza un algoritmo di hash, come SHA-256, per impedire la derivazione della chiave.

Per garantire un’autenticazione completa e forte (strong authentication, ovvero un’autenticazione con almeno due fattori) di tipo end-to-end, una piattaforma IoT sicura deve prevedere una gestione specifica in fase di produzione al fine di assicurare che le identità assegnate non vengano alterate nel corso del processo di sviluppo.

Sicurezza basata sulla crittografia: vantaggi e ostacoli

Gli algoritmi crittografici, già ampiamente utilizzati per proteggere le tradizionali transazioni che avvengono su Internet, come ad esempio i pagamenti online, forniscono un valido mezzo per verificare la fonte dei dati e impedire intercettazioni delle informazioni contenute. Un classico esempio è rappresentato dall’uso della crittografia asimmetrica, basata su una combinazione di chiavi pubbliche e private, per stabilire una sessione di comunicazione cifrata tra un browser Web e un server. Nel momento in cui un browser vuole avviare una sessione, il server invia una copia del proprio certificato digitale emessa da un’autorità di certificazione (Certificating Authority) fidata. Il certificato autentica il server e fornisce la chiave di cifratura pubblica del server che il browser utilizza per creare una chiave di sessione. A questo punto il server decifra la chiave utilizzando la propria chiave privata e la sezione cifrata può quindi avere inizio.

Per quanto concerne i tipici casi d’uso di IoT, l’adozione di tecniche crittografiche, di natura sia simmetrica sia asimmetrica, comporta l’insorgere di qualche problema. In primo luogo, gli algoritmi crittografici usati per cifrare/decifrare le trasmissioni richiedono una notevole mole di calcoli e, anche se le CPU normalmente ospitate a bordo dei dispositivi IoT dispongono delle capacità di elaborazione necessarie, ciò rappresentano un carico aggiuntivo non indifferente per le risorse, di solito molto limitate, disponibili in un dispositivo IoT. Senza dimenticare che le memorie flash o ROM di una MCU standard solitamente utilizzate nei tradizionali dispositivi IoT non si possono considerare un luogo particolarmente sicuro per immagazzinare chiavi crittografiche pubbliche o private.

In aggiunta a tutto ciò, lo scambio di messaggi cifrati genera un sovraccarico (overhead) di trasmissione che risulta di gran lunga superiore rispetto al carico utile (data payload) trasmesso dai tradizionali dispositivi IoT, come ad esempio i sensori smart, che solitamente inviano pochi byte di dati alla volta in modo sporadico. Inoltre, è necessaria un’infrastruttura a chiave pubblica (PKI - Public Key Infrastructure) affidabile in grado di garantire la riservatezza delle chiavi private e assicurare l’autenticità dei certificati digitali. Esiste un ridotto numero di autorità riconosciute a livello pubblico che forniscono servizi PKI per garantire la sicurezza delle tradizionali transazioni che si svolgono su Internet come ad esempio i pagamenti online. Un modello di questo tipo non è però adatto per ecosistemi IoT chiusi. Quindi è necessario individuare una modalità conveniente ed economica per generare e proteggere le chiavi, oltre a conservare i dati.

Soluzioni adatte per le applicazioni IoT: un esempio concreto

Un elemento sicuro (secure element) collegato al controllore principale, che prevede la possibilità di memorizzare i dati in modo sicuro e algoritmi di cifratura/decifratura implementati in hardware può garantire una protezione affidabile nel rispetto dei vincoli di sistema di un dispositivo IoT di piccole dimensioni. La CPU dell’host interagisce con questo elemento sicuro attraverso apposite API embedded per gestire i servizi di sicurezza in base alle esigenze senza per questo esporre alcuna informazione riservata. Questo elemento sicuro integra tutte le protezioni necessarie contro attacchi di natura fisica e attacchi di tipo side-channel (a canale laterale). A questo punto è possibile ricorrere a un microcontrollore di tipo general purpose, selezionato in modo da soddisfare le esigenze funzionali del dispositivo IoT, piuttosto che a un costoso microcontrollore sicuro caratterizzato da elevate prestazioni in termini di elaborazione per eseguire via software gli algoritmi di cifratura.

Un esempio di circuito integrato di questo tipo è ATECC608A di Microchip che fornisce servizi atti a supportare l’autenticazione, l’integrità e la segretezza in dispositivi connessi che dispongono di risorse limitate. Esso integra un acceleratore hardware per la crittografia in grado di effettuare operazioni di crittografia asimmetrica a una velocità fino a 1.000 volte superiore rispetto a un software che gira su un processore standard. Nello stesso tempo è possibile ridurre in modo significativo il rischio dell’esposizione delle chiavi, un problema sempre in agguato quando si utilizza un microcontrollore standard.

Questo integrato di Microchip è in grado di gestire l’autenticazione dell’identità e la creazione della chiave di sessione, oltre a supportare molteplici protocolli per la generazione delle chiavi, tra cui TLS 1.2 e TLS 1.3. È anche previsto il supporto per la cifratura di messaggio di piccole dimensioni utilizzando la cifratura simmetrica a blocchi (AES-ECB), che consente di minimizzare l’overhead in trasmissione nel momento in cui si devono cifrare o decifrare messaggi di piccole dimensioni o dati personali. La generazione delle chiavi per il download del software è un’altra funzionalità integrata molto apprezzata per la gestione dei dispositivi IoT, che viene utilizzata per autenticare gli aggiornamenti firmware distribuite in modalità broadcast o punto-punto attraverso una rete.

Boot sicuro e servizi delle autorità di certificazione

Grazie al supporto della firma ECDSA, il chip ATECC608A è in grado di proteggere la sequenza di boot dei dispositivi IoT, contribuendo alla creazione di una Root Of Trust al momento dell’accensione. L’immagine dell’applicazione cifrata e il suo digest (ovvero l’impronta digitale) - firmati in forma digitale utilizzando l’algoritmo ECDSA con una chiave privata, sono caricati sul microcontrollore del dispositivo. L’elemento sicuro memorizza una chiave pubblica ottenuta dalla chiave per la firma privata e può utilizzare varie modalità per verificare il digest o la firma, o entrambe, utilizzando la chiave pubblica. La sequenza di boot può essere avviata una volta completata con esito positivo la verifica, oppure impedita nel caso di insuccesso.

Il set di istruzioni di ATECC608A semplifica lo svolgimento di numerose operazioni tra cui generazione della chiave, cifratura e implementazione dell’avvio sicuro: questo chip è corredato con la libreria di sviluppo CryptoAuthentication di Microchip che contiene un insieme di API per l’interazione con il core, la gestione dei certificati e l’integrazione dei protocolli TLS.

A corredo della soluzione per la protezione dei dispositivi IoT, Microchip mette a disposizione un servizio di fornitura (provisioning) completo in fase di produzione. Questo include la generazione di chiavi pubbliche/private con memorizzazione sicura e conservazione dei dati, che permette ai produttori di dispositivi di evitare l’onere di predisporre e mantenere siti produttivi sicuri. Questi integrati di Microchip vengono realizzati e spediti da siti produttivi sicuri e già predisposti per l’assemblaggio finale: in questo modo viene eliminata la necessità di condividere segreti con terze parti che si occupano dello sviluppo software o della produzione.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome