Pré-emparelhamento de Bluetooth LE
Windows 10 dá suporte a periféricos Bluetooth LE emparelhando automaticamente com um único computador, depois que todos os dispositivos tiverem sido provisionados e habilitados durante o processo de fabricação. Os usuários não precisam manter os dispositivos LE emparelhados e conectados depois que o computador host e os dispositivos empacotados são fornecidos pela primeira vez. Esses periféricos ainda podem ser usados como dispositivos Bluetooth regulares e manter a funcionalidade completa quando estiverem fora do intervalo do computador host. No entanto, se os periféricos não forem emparelhados e estiverem dentro do intervalo do computador host, eles serão automaticamente emparelhados e se conectarão novamente.
Quando um periférico LE que dá suporte a esse recurso é fornecido pela primeira vez, ele envia dados proprietários definidos pela Microsoft em um anúncio conectável indireto. Esse anúncio é então captado pelo computador host. Se o dispositivo estiver no intervalo e seu anúncio corresponder a um padrão pré-provisionado no computador host durante a fabricação, o dispositivo será emparelhado. Isso ocorre por meio do emparelhamento fora de banda, que usa uma chave OOB secreta separada que também foi pré-provisionada. A distância do computador host no qual o periférico pode emparelhar é determinada por outro valor RSSI mínimo pré-provisionado, que é representado no banco de dados, de modo que os intervalos podem variar. Todos os dados pré-provisionados devem ser armazenados na UEFI para preservar essa funcionalidade em instalações limpo e restaurações do sistema.
Quando um dispositivo empacotado não é emparelhado dentro do intervalo definido pelo valor RSSI, o dispositivo Bluetooth faz o emparelhamento automático com o Windows. Os usuários devem deixar o intervalo do computador host para poder emparelhar seu dispositivo com outros computadores habilitados para Bluetooth.
Os OEMs devem determinar por conta própria como fabricar esses dispositivos. Eles também devem garantir a segurança e que estarão todos na mesma caixa quando enviados aos clientes.
Requisitos de recursos
Computador
- Atualização de Aniversário do Windows 10
- Variáveis armazenadas uefi
- Comandos bluetooth HCI definidos pela Microsoft para vida útil otimizada da bateria.
Periférico
- Bluetooth LE
- Armazenar para o valor de TK da ID do Dispositivo (com hash do Endereço Bluetooth) &
- Anúncio personalizado (definido abaixo)
UEFI no computador host
Esse recurso depende do armazenamento de informações para auxiliar o processo de emparelhamento na UEFI. O recurso permite que essa funcionalidade persista na recuperação do sistema e limpo instalações. Depois que as variáveis UEFI forem definidas, elas deverão ser bloqueadas para serem somente leitura.
Para cada dispositivo que dá suporte ao emparelhamento automático, o computador host deve programar as seguintes informações de OOB em sua NVRAM:
- Limite de RSSI: define um limite de distância no banco de dados para quando os periféricos estão "fora do intervalo do computador host"
- Definir como uma força mínima de sinal antes que o emparelhamento ocorra
- O OEM deve definir o limite apropriado
- DeviceID: identifique exclusivamente um dispositivo de suporte e deve ter 8 bytes de comprimento para evitar conflitos de dispositivo.
- Deve ser tão exclusivo quanto o endereço Bluetooth Mac
- Não relacionado ao perfil de ID do dispositivo. Usado apenas para representar periféricos exclusivos.
- Chave OOB: o valor de TK do SMP de 16 bytes é compartilhado entre o computador host e o dispositivo BTH LE.
Observação
Se a ID do dispositivo não for exclusiva por dispositivo ou pelo menos por pacote, haverá conflitos se vários dispositivos estiverem dentro do intervalo um do outro. Os periféricos são emparelhados com computadores imprevistos.
Representação pseudocódigo de informações 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)
Definição da interface NVRAM da UEFI pública
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 de anúncio de periféricos
Tipo de Seção [1 Byte] | Fabricante [2 bytes] | MsftSectionType [4 bytes] | Identificador de dispositivo [8 bytes] |
---|---|---|---|
0xff (específico do fornecedor) | 0x0006 (MSFT) | 0x00000004 (Prepairing) | identificador de dispositivo |
Problemas de segurança
Durante a fabricação
Há o potencial para ataques Man in The Middle se os dados de provisionamento forem obtidos. Manter os dados seguros cabe ao OEM.
Depois que o cliente tiver comprado o dispositivo
É possível que os valores armazenados na UEFI sejam lidos e falsificados em outro dispositivo. Isso pode conceder acesso ao sistema por um usuário mal-intencionado. Para atenuar isso, também criamos a política de MDM Bluetooth/AllowPrepairing. Essa política permitirá que implantações corporativas e profissionais desabilitem esse recurso.