Quando si progetta un protocollo, un sistema o una rete informatica con l'obiettivo di garantire un adeguato livello di sicurezza, una delle caratteristiche fondamentali da considerare è l'autenticazione dei dispositivi. Questo processo consente l'identificazione degli utenti o dei dispositivi all'interno della rete. Immaginiamo una rete wireless composta da dispositivi IoT: implementare un sistema di autenticazione significa prevenire l'intrusione di dispositivi non autorizzati, riducendo così il potenziale rischio per la sicurezza.
Dato un dispositivo IoT con la propria scheda di rete, un sistema di autenticazione potrebbe identificarlo utilizzando l'indirizzo IP o il MAC address. Tuttavia, entrambi gli indirizzi possono essere facilmente spoofati da un dispositivo malevolo, rendendo il sistema poco sicuro. L'utilizzo di una password, comunicata dal dispositivo, potrebbe rappresentare un'alternativa. Tuttavia, anche in questo caso, sorgono forti vulnerabilità, poiché la password potrebbe essere violata, consentendo a un dispositivo malevolo di impersonare un dispositivo autorizzato.
Physical Unclonable Function
Per realizzare un efficace sistema di autenticazione, è necessario abbandonare il paradigma del 'ciò che si ha o si sa' e adottare il paradigma del 'ciò che si è'. In altre parole, non bisogna considerare gli indirizzi o le password configurate sui dispositivi, ma è fondamentale prendere in considerazione una caratteristica intrinseca al dispositivo. Questa caratteristica non può essere creata, modificata o replicata da nessuno, neanche dal produttore del dispositivo. Nel mondo dell'Internet of Things, tale caratteristica è fornita dalle Physical Unclonable Function (PUF). Una PUF cerca di creare una vera e propria impronta digitale del dispositivo utilizzando le caratteristiche fisiche ed elettroniche dei circuiti integrati. In questo modo, nessuno può manipolare o replicare tale impronta digitale, assicurando che non esistano due dispositivi con la stessa impronta.
Nello specifico, una PUF viene utilizzata inviando delle challenge in input e osservando l'output (response) generato per ciascuna challenge. L'insieme delle challenge e delle response corrispondenti viene chiamato CRP (Challenge-Response Pair) behavior. Il CRP behavior rappresenta l'impronta digitale del dispositivo.
Una PUF prende un input chiamato "challenge" e produce un output chiamato "response". L'insieme delle coppie challenge-response è l'impronta digitale del dispositivo.
Una costruzione di PUF abbastanza famosa è l'arbiter PUF. In questo caso la PUF viene realizzata collegando uno dopo l'altro una serie di componenti elettronici chiamati switch block, seguiti da un circuito Flip-Flop SR chiamato "arbiter". Gli switch block formano due linee parallele attraverso le quali viene trasmesso un segnale. Ogni bit della challenge determina lo stato del blocco switch, cioè se deve incrociare le due linee o mantenerle parallele. Il Flip-Flop finale funge da arbitro, fornendo una risposta in base a quale segnale è arrivato prima. Poiché la velocità con cui il segnale si propaga sulle due linee è imprevedibile, dipendendo principalmente dalle condizioni fisiche del circuito, nessuno può indovinare con una probabilità considerevole la risposta del PUF.
Figura 1. Questo arbiter PUF è composto da quattro switch block, ognuno dei quali riceve in input un bit della challenge. Se il bit, le due linee si incrociano, altrimenti rimangono parallele. L'arbiter finale produce in output una risposta in base a quale segnale arriva prima (linea azzurra o linea rossa). La propagazione del segnale sulle linee dipende da caratteristiche fisiche uniche e inalterabili del circuito.
Autenticazione Challenge-Response PUF-based
Questo processo di autenticazione si divide in due fasi:
- Enrollment phase: durante questa fase, si popola un database con un ampio numero di entry per ciascun dispositivo IoT autorizzato. Ogni entry è nel formato <ID, challenge, response >, dove l'ID rappresenta un identificativo del dispositivo, mentre challenge e response si riferiscono all'input e all'output della PUF del dispositivo;
- Verification phase: in questa fase il dispositivo IoT che desidera autenticarsi invia il proprio ID a un verifier. Il verifier accede al database e seleziona una challenge associata a tale ID, quindi la invia al dispositivo. Il dispositivo riceve la challenge, la inserisce in input alla PUF e ritorna la response al verifier. A questo punto, Il verifier confronta la response ricevuta con quella presente nel database: se le due coincidono, l'autenticazione è completata; altrimenti, il dispositivo non viene autenticato. In caso di successo nell'autenticazione, la challenge utilizzata viene cancellata dal database per evitare attacchi reply.
Figura 2.
Step 1: il dispositivo IoT vuole autenticarsi, quindi comunica il proprio ID attraverso una rete non sicura;
Step 2: l'ID del dispositivo viene ricevuto dal verifier;
Step 3: il Verifier cerca un entry <ID, chacllenge, response > nel database associata all'ID ricevuto;
Step 4, 5 e 6: il Verifier comunica la challenge prelevata dal database al dispositivi IoT;
Step 7 e 8: il dispositivo IoT riceve la challenge e la inserisce in input alla propria PUF, l'output della PUF (cioè la response) viene comunicata al verifier;
Step 9 e 10: il verifier confronta la response ricevuta dal dispositivo con la response presente nel database;
Step 11: siccome le due response coincidono, il dispositivo viene autenticato e la challenge utilizzata viene cancellata dal database per evitare attacchi di tipo reply.