Предварительное связывание Bluetooth LE
Windows 10 поддерживает автоматическое связывание периферийных устройств LE Bluetooth с одним компьютером, после того как все устройства были подготовлены и включены во время производственного процесса. Пользователи не должны хранить устройства LE в паре и подключены после того, как хост-компьютер и пакетные устройства предоставляют питание в первый раз. Эти периферийные устройства по-прежнему могут использоваться как обычные устройства Bluetooth и поддерживать полную функциональность при выходе из диапазона хост-компьютера. Однако если периферийные устройства неоплачиваются и находятся в пределах диапазона хост-компьютера, они автоматически будут повторно подключаться и подключаться.
Когда периферийное устройство LE, поддерживающее эту функцию, впервые предоставляется питание, оно отправляет собственные данные, определенные корпорацией Майкрософт, в ненаправленном объявлении, доступном для подключения. Эта реклама затем берется на хост-пк. Если устройство находится в диапазоне, а его объявление соответствует шаблону, предварительно подготовленному на хост-компьютере во время производства, то устройство сопряжено. Это осуществляется через связывание вне полосы, которое использует отдельный секретный ключ OOB, который также был предварительно подготовлен. Расстояние от хост-компьютера, в котором периферийная пара может определяться другим предварительно подготовленным минимальным значением RSSI, представленным в dB, поэтому диапазоны могут отличаться. Все предварительно подготовленные данные должны храниться в UEFI, чтобы сохранить эту функцию при чистых установках и восстановлении системы.
Если пакетное устройство неоплачено в диапазоне, определенном значением RSSI, устройство Bluetooth автоматически повторно связывается с Windows. Пользователи должны оставить диапазон хост-компьютера, чтобы иметь возможность связать свое устройство с другими компьютерами с поддержкой Bluetooth.
Изготовители оборудования должны самостоятельно определять, как производить эти устройства. Они также должны гарантировать безопасность и что все они будут находиться в одном ящике при доставке клиентам.
Требования к функциям
ПК
- Юбилейное обновление Windows 10 Anniversary Update
- Сохраненные переменные UEFI
- Определяемые корпорацией Майкрософт команды Bluetooth HCI для оптимизированной работы батареи.
Периферийное устройство
- Bluetooth LE
- Хранение идентификатора устройства (хэшированного из адреса Bluetooth) и значения TK
- Настраиваемое объявление (определено ниже)
UEFI на хост-компьютере
Эта функция зависит от хранения сведений, помогающих процессу связывания в UEFI. Эта функция позволяет сохранить эту функцию в системном восстановлении и очистке установок. После определения переменных UEFI они должны быть заблокированы только для чтения.
Для каждого устройства, поддерживающего автоматическое связывание, главный компьютер должен программировать следующие сведения OOB в NVRAM:
- Порог RSSI: определяет порог расстояния в dB, если периферийные устройства находятся вне диапазона хост-компьютера.
- Установка как минимальная сила сигнала перед связыванием
- Изготовитель оборудования должен определить соответствующее пороговое значение
- DeviceID: уникально идентифицирует вспомогательное устройство и должно иметь длину 8 байт, чтобы избежать конфликтов устройств.
- Должен быть таким уникальным, как Bluetooth Mac Address
- Не связан с профилем идентификатора устройства. Используется только для представления уникальных периферийных устройств.
- Ключ OOB: значение 16 байтов SMP TK совместно используется между хост-компьютером и устройством BTH LE.
Примечание.
Если идентификатор устройства не является уникальным для каждого устройства или по крайней мере для каждого пакета, будут конфликты, если несколько устройств находятся в диапазоне друг от друга. Периферийные устройства связаны с непреднамеренным компьютером.
Представление псевдокода сведений 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)
Определение интерфейса NVRAM общедоступного UEFI
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}";
Макет рекламы периферийных устройств
Тип раздела [1 байт] | Производитель [2 байта] | MsftSectionType [4 байт] | Идентификатор устройства [8 байт] |
---|---|---|---|
0xff (конкретный поставщик) | 0x0006 (MSFT) | 0x00000004 (предоплаченная подготовка) | идентификатор устройства |
Проблемы безопасности
Во время производства
Существует потенциал для атак "Человек в середине", если данные подготовки получены. Защита данных выполняется до изготовителя оборудования.
После приобретения устройства клиентом
Значения, хранящиеся в UEFI, можно считывать, а затем спуфинировать на другом устройстве. Это может предоставить доступ к системе злоумышленником. Чтобы устранить эту проблему, мы также создали политику MDM Bluetooth/AllowPrepairing. Эта политика позволит корпоративным и профессиональным развертываниям отключить эту функцию.