Autenticazione del dispositivo
L’autenticazione è un componente fondamentale per la sicurezza dei sistemi Bluetooth ed è basata su uno schema di domanda-risposta (challenge-response) che assicura la connessione fra due dispositivi. Si tratta di un processo che si svolge in tre fasi:
– L’autenticazione ha inizio con la trasmissione di una domanda contenente un numero casuale a un altro dispositivo
– Il dispositivo interrogato elabora una risposta usando il numero casuale, il proprio identificativo Bluetooth e una chiave segreta di connessione
– Il dispositivo che ha avviato il processo convalida la risposta per autenticare la connessione con il dispositivo in questione
Nel caso in cui un dispositivo non sia autenticato, deve intercorrere un certo periodo di tempo prima di un nuovo tentativo di autenticazione.
Cifratura
La cifratura in ambiente Bluetooth è utilizzata per assicurare la riservatezza di una connessione. Prima che avvenga la cifratura, è obbligatoria la presenza di una linea autenticata. La cifratura “rimescola” i dati utili effettivamente trasportati (data payload) dei pacchetti Bluetooth utilizzando una chiave da 8 fino a 128 bit: tuttavia il codice di accesso Bluetooth e l’intestazione del pacchetto non sono mai cifrati. La cifratura del payload dipende dal grado di “severità” della cifratura desiderato e dalle norme in vigore nei vari Paesi in cui il prodotto viene utilizzato.
Il flusso dell’algoritmo di cifratura chiamato E0 è usato per la cifratura in ambiente Bluetooth e viene ri-sincronizzato per ogni payload.
Sicurezza dei dati nel livello fisico – FHSS
Oltre alle altre caratteristiche di sicurezza realizzate in ambiente Bluetooth, lo schema a salto di frequenza impiegato per la comunicazione Bluetooth serve anche come meccanismo per rendere le intromissioni abusive estremamente difficili.
Come accennato precedentemente, la radio Bluetooth opera all’interno della banda ISM attorno ai 2.4GHz.
Nel Nord America e in gran parte dell’Europa, Bluetooth opera in uno spettro di frequenze tra 2.402 e 2 .480 GHz, con una suddivisione in 79 sottocanali di ampiezza pari a 1 MHz. Nella tecnica denominata “frequency hopping”, un segnale dati è modulato con un segnale portante a banda stretta che “salta” di frequenza in frequenza in funzione del tempo.
Bluetooth impiega una frequenza di salto di 1600 salti/s. Il codice di salto noto sia al trasmettitore sia al ricevitore determina le frequenze con cui la radio trasmetterà e la loro sequenza. Per ricevere correttamente il segnale, il ricevitore deve essere impostato in base allo stesso codice di salto e deve ascoltare il segnale in arrivo al momento giusto e alla frequenza corretta. Se opportunamente sincronizzato, l’effetto è mantenere un singolo canale logico.
La tecnica FHSS sfrutta la diversità della frequenza per combattere l’interferenza. Se la radio incontra un’interferenza a una frequenza, la radio ritrasmetterà il segnale su un salto successivo su un’altra frequenza. L’interferenza complessiva sarà molto bassa, portando a un errore dei bit modesto o nullo.
Integrità dei dati Bluetooth
Vi sono tre tipi di correzione d’errore che vengono implementati da Bluetooth:
– FEC a rapporto 1/3
– FEC a rapporto 2/3
– Schema di Ripetizione Automatica della Richiesta (ARQ, Automatic Repeat reQuest) per i dati.
La correzione degli errori diretta permette di ridurre il numero di ritrasmissioni per i dati utili effettivamente trasportati. Tuttavia, l’inconveniente legato all’utilizzo della FEC è la sensibile riduzione del throughput.
Blanking dei dati
Tutte le informazioni relative alle intestazioni e al carico utile sono “rimescolate” con i bit di blanking dei dati prima che avvenga la trasmissione dei bit stessi. Ciò avviene in modo che la configurazione di “0” o “1” ridondanti siano eliminati dalla trasmissione. Questo si rivela un problema con i segnali dati analogici ricevuti dal processore in banda base, dato che devono essere classificati come 0 o 1. Siccome non vi è alcun punto di riferimento come la continua per questi segnali, occorre fare affidamento sulle ultime trasmissioni del segnale ai fini della calibrazione. Ogni lunga stringa sequenziale di “0” o “1” può causare il fallimento della calibrazione. Di conseguenza il blanking dei dati è utilizzato per mescolare questi segnali in modo da ridurre significativamente la probabilità di avere lunghe sequenze di “0” o “1”.