Поделиться через


Предварительное связывание Bluetooth LE

Windows 10 поддерживает автоматическое связывание периферийных устройств LE Bluetooth с одним компьютером, после того как все устройства были подготовлены и включены во время производственного процесса. Пользователи не должны хранить устройства LE в паре и подключены после того, как хост-компьютер и пакетные устройства предоставляют питание в первый раз. Эти периферийные устройства по-прежнему могут использоваться как обычные устройства Bluetooth и поддерживать полную функциональность при выходе из диапазона хост-компьютера. Однако если периферийные устройства неоплачиваются и находятся в пределах диапазона хост-компьютера, они автоматически будут повторно подключаться и подключаться.

Когда периферийное устройство LE, поддерживающее эту функцию, впервые предоставляется питание, оно отправляет собственные данные, определенные корпорацией Майкрософт, в ненаправленном объявлении, доступном для подключения. Эта реклама затем берется на хост-пк. Если устройство находится в диапазоне, а его объявление соответствует шаблону, предварительно подготовленному на хост-компьютере во время производства, то устройство сопряжено. Это осуществляется через связывание вне полосы, которое использует отдельный секретный ключ OOB, который также был предварительно подготовлен. Расстояние от хост-компьютера, в котором периферийная пара может определяться другим предварительно подготовленным минимальным значением RSSI, представленным в dB, поэтому диапазоны могут отличаться. Все предварительно подготовленные данные должны храниться в UEFI, чтобы сохранить эту функцию при чистых установках и восстановлении системы.

Если пакетное устройство неоплачено в диапазоне, определенном значением RSSI, устройство Bluetooth автоматически повторно связывается с Windows. Пользователи должны оставить диапазон хост-компьютера, чтобы иметь возможность связать свое устройство с другими компьютерами с поддержкой Bluetooth.

Изготовители оборудования должны самостоятельно определять, как производить эти устройства. Они также должны гарантировать безопасность и что все они будут находиться в одном ящике при доставке клиентам.

Требования к функциям

ПК

Периферийное устройство

  • Bluetooth LE
  • Хранение идентификатора устройства (хэшированного из адреса Bluetooth) и значения TK
  • Настраиваемое объявление (определено ниже)

Pre-pairing flow

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. Эта политика позволит корпоративным и профессиональным развертываниям отключить эту функцию.