Emparejamiento previo de Bluetooth LE
Windows 10 admite el emparejamiento automático de periféricos Bluetooth le a un único EQUIPO, después de que todos los dispositivos se hayan aprovisionado y habilitado durante el proceso de fabricación. Los usuarios no necesitan mantener los dispositivos LE emparejados y conectados después de que el equipo host y los dispositivos agrupados se proporcionen energía por primera vez. Estos periféricos todavía se pueden usar como dispositivos Bluetooth normales y mantener una funcionalidad completa cuando están fuera del alcance del equipo host. Sin embargo, si los periféricos no están emparejados y están dentro del intervalo del equipo host, se volverán a emparejar y conectarán automáticamente.
Cuando un periférico LE que admite esta característica se suministra por primera vez, envía datos propios definidos por Microsoft en un anuncio conectable no direccionado. Después, el equipo host recoge ese anuncio. Si el dispositivo está en el intervalo y su anuncio coincide con un patrón que se aprovisiona previamente en el equipo host durante la fabricación, el dispositivo se empareja. Esto se realiza a través del emparejamiento fuera de banda, que usa una clave OOB secreta independiente que también se aprovisionó previamente. La distancia desde el equipo host en el que el periférico puede emparejar está determinado por otro valor RSSI mínimo aprovisionado previamente, que se representa en dB, por lo que los intervalos pueden variar. Todos los datos previamente aprovisionados deben almacenarse en UEFI para conservar esta funcionalidad en instalaciones limpias y restauraciones del sistema.
Cuando un dispositivo agrupado no está emparejado dentro del intervalo definido por el valor RSSI, el dispositivo Bluetooth vuelve a emparejar automáticamente a Windows. Los usuarios deben dejar el intervalo del equipo host para poder emparejar su dispositivo con otros equipos habilitados para Bluetooth.
Los OEM deben determinar por sí mismos cómo fabricar estos dispositivos. También deben garantizar la seguridad y que todos estarán en la misma caja cuando se envíen a los clientes.
Requisitos de características
PC
- Actualización de aniversario de Windows 10
- Variables almacenadas de UEFI
- Comandos bluetooth HCI definidos por Microsoft para optimizar la duración de la batería.
Periférico
- Bluetooth LE
- Almacenar para el valor de TK de id. de dispositivo (con hash de la dirección Bluetooth) &
- Anuncio personalizado (definido a continuación)
UEFI en el equipo host
Esta característica depende del almacenamiento de información para ayudar al proceso de emparejamiento en UEFI. La característica permite que esta funcionalidad persista en las instalaciones de recuperación y limpieza del sistema. Una vez definidas las variables UEFI, se deben bloquear para que sean de solo lectura.
Para cada dispositivo que admita el emparejamiento automático, el equipo host debe programar la siguiente información de OOB en su NVRAM:
- Umbral RSSI: define un umbral de distancia en dB para cuando los periféricos están "fuera del intervalo del equipo host".
- Establecer como una intensidad de señal mínima antes de que se produzca el emparejamiento
- El OEM debe definir el umbral adecuado.
- DeviceID: identifica de forma única un dispositivo auxiliar y debe tener una longitud de 8 bytes para evitar conflictos de dispositivos.
- Debe ser tan único como la dirección Mac bluetooth
- No relacionado con el perfil de id. de dispositivo. Solo se usa para representar periféricos únicos.
- Tecla OOB: el valor de TK de SMP de 16 bytes se comparte entre el equipo host y el dispositivo BTH LE.
Nota
Si el identificador de dispositivo no es único por dispositivo o al menos por lote, habrá conflictos si varios dispositivos están dentro del intervalo entre sí. Los periféricos se emparejan con equipos imprevistos.
Representación pseudocódigo de información de 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)
Definición de la interfaz NVRAM de 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}";
Diseño de anuncios de periféricos
Tipo de sección [1 byte] | Fabricante [2 bytes] | MsftSectionType [4 bytes] | Identificador de dispositivo [8 bytes] |
---|---|---|---|
0xff (específico del proveedor) | 0x0006 (MSFT) | 0x00000004 (preparación) | identificador de dispositivo |
Cuestiones de seguridad
Durante la fabricación
Existe la posibilidad de que Man in The Middle ataque si se obtienen los datos de aprovisionamiento. Mantener protegidos los datos está en el OEM.
Una vez que el cliente haya comprado el dispositivo
Es posible leer los valores almacenados en UEFI y, a continuación, suplantarlos en otro dispositivo. Esto puede conceder acceso al sistema por parte de un usuario malintencionado. Para mitigar esto, también hemos creado la directiva MDM Bluetooth/AllowPrepairing. Esta directiva permitirá que las implementaciones empresariales y profesionales deshabiliten esta característica.