Pre-associazione Bluetooth LE
Windows 10 supporta l'associazione automatica delle periferiche Bluetooth LE a un singolo PC, dopo il provisioning e l'abilitazione di tutti i dispositivi durante il processo di produzione. Gli utenti non devono mantenere i dispositivi LE associati e connessi dopo che sia il PC host che i dispositivi in bundle vengono forniti alimentazione per la prima volta. Queste periferiche possono comunque essere usate come normali dispositivi Bluetooth e mantenere la funzionalità completa quando non è compreso nell'intervallo del PC host. Tuttavia, se le periferiche non sono abbinate e all'interno dell'intervallo del PC host, riapposeranno e si connetteranno automaticamente.
Quando una periferica LE che supporta questa funzionalità viene fornita per la prima volta, invia dati proprietari definiti da Microsoft in un annuncio connettibile non diretto. Tale annuncio viene quindi prelevato dal PC host. Se il dispositivo è compreso nell'intervallo e il relativo annuncio corrisponde a un modello di pre-provisioning nel PC host durante la produzione, il dispositivo viene associato. Questa operazione viene eseguita tramite l'associazione fuori banda che usa una chiave OOB privata separata di cui è stato effettuato il pre-provisioning. La distanza dal PC host in cui la periferica può essere associata è determinata da un altro valore RSSI minimo con provisioning preliminare, rappresentato in dB, in modo che gli intervalli possano variare. Tutti i dati con provisioning preliminare devono essere archiviati in UEFI per mantenere questa funzionalità nelle installazioni pulite e nei ripristini di sistema.
Quando un dispositivo in bundle non viene abbinato all'interno dell'intervallo definito dal valore RSSI, il dispositivo Bluetooth riappare automaticamente a Windows. Gli utenti devono lasciare l'intervallo del PC host per poter associare il dispositivo ad altri PC abilitati per Bluetooth.
Gli OEM devono determinare autonomamente come produrre questi dispositivi. Devono anche garantire la sicurezza e che saranno tutti nella stessa scatola quando vengono spediti ai clienti.
Requisiti della funzionalità
PC
- Aggiornamento dell'anniversario di Windows 10
- Variabili archiviate UEFI
- Comandi HCI Bluetooth definiti da Microsoft per ottimizzare la durata della batteria.
Periferica
- Bluetooth LE
- Store per ID dispositivo (con hash dall'indirizzo Bluetooth) e valore TK
- Annuncio personalizzato (definito di seguito)
UEFI nel PC host
Questa funzionalità dipende dall'archiviazione di informazioni per facilitare il processo di associazione in UEFI. La funzionalità consente a questa funzionalità di rendere persistente il ripristino del sistema e le installazioni pulite. Dopo aver definito le variabili UEFI, devono essere bloccate in sola lettura.
Per ogni dispositivo che supporta l'associazione automatica, il PC host deve programmare le informazioni OOB seguenti nella relativa NVRAM:
- Soglia RSSI: definisce una soglia di distanza in dB per quando le periferiche sono "fuori intervallo del PC host"
- Impostare come livello minimo di segnale prima che venga eseguita l'associazione
- L'OEM deve definire la soglia appropriata
- DeviceID: identifica in modo univoco un dispositivo di supporto e deve avere una lunghezza di 8 byte per evitare conflitti tra dispositivi.
- Deve essere univoco come l'indirizzo Mac Bluetooth
- Non correlato al profilo ID dispositivo. Utilizzato solo per rappresentare periferiche univoche.
- Chiave OOB: il valore TK SMP a 16 byte viene condiviso tra il PC host e il dispositivo BTH LE.
Nota
Se l'ID dispositivo non è univoco per ogni dispositivo o almeno per ogni bundle, ci saranno conflitti se più dispositivi si trovano all'interno dell'intervallo tra loro. Le periferiche si associano a PC imprevisti.
Rappresentazione pseudocodice informazioni OOB
const unsigned long BTH_LE_DEVICE_ID_SIZE = 8;
#pragma pack(push,1)
typedef struct
{
CHAR RssiThreshold;
UCHAR DeviceId[BTHLE_PREPAIRING_DEVICE_ID_SIZE];
UCHAR SmpTK[16]; // TK Max Size
} BTHLE_PREPAIRING_ENTRY;
#pragma pack(pop)
Definizione dell'interfaccia NVRAM UEFI pubblica
static const LPWSTR BTH_LE_PREPAIRING_NVRAM_VAR_NAME = L"BluetoothPairingInfo";
static const LPWSTR BTH_LE_PREPAIRING_NVRAM_VAR_GUID = L"{3C901928-0243-4778-8ADC-BC2D3C6E6B0E}";
Layout pubblicitario delle periferiche
Tipo di sezione [1 byte] | Produttore [2 byte] | MsftSectionType [4 byte] | Identificatore dispositivo [8 byte] |
---|---|---|---|
0xff (specifico del fornitore) | 0x0006 (MSFT) | 0x00000004 (preassocia) | identificatore del dispositivo |
Problemi di sicurezza
Durante la produzione
Se si ottengono i dati di provisioning, è possibile che Man in The Middle attacchi. Mantenere i dati sicuri è l'OEM.
Dopo che il cliente ha acquistato il dispositivo
È possibile leggere i valori archiviati in UEFI e quindi eseguire lo spoofing in un altro dispositivo. Ciò può concedere l'accesso al sistema da parte di un utente malintenzionato. Per attenuare questo problema, abbiamo anche creato il criterio MDM Bluetooth/AllowPrepairing. Questo criterio consentirà alle distribuzioni enterprise e pro di disabilitare questa funzionalità.