Bluetooth LE 預先配對
Windows 10 支援 LE 藍牙 周邊自動配對到單一計算機,在製造程式期間布建並啟用所有裝置之後。 使用者不需要在主機計算機和配套裝置第一次提供電源之後,保持 LE 裝置配對並連線。 這些周邊仍可做為一般 藍牙 裝置使用,並在主機電腦超出範圍時維持完整功能。 不過,如果周邊未配對且在主計算機範圍內,它們會自動重新配對並連線。
當支援此功能的 LE 周邊第一次提供電源時,它會在未導向的可連線公告中傳送專屬的 Microsoft 定義數據。 然後,主機計算機會挑選該廣告。 如果裝置在範圍內,且其廣告符合在製造期間預先布建於主計算機中的模式,則會配對裝置。 這是透過頻外配對,其會使用另外一個也預先佈建的秘密 OOB 金鑰。 周邊配對的主機計算機距離取決於另一個預先布建的最小 RSSI 值,以 dB 表示,因此範圍可能會有所不同。 所有預先布建的數據都必須儲存在 UEFI 中,才能在全新安裝和系統還原時保留這項功能。
當配套裝置在 RSSI 值所定義的範圍內取消配對時,藍牙 裝置會自動重新配對至 Windows。 用戶必須離開主計算機的範圍,才能將其裝置與其他已啟用 藍牙 的計算機配對。
OEM 必須自行決定如何製造這些裝置。 他們也必須保證安全性,而且當運送給客戶時,它們全都位於相同的方塊中。
功能需求
電腦
- Windows 10 年度更新
- UEFI 預存變數
- Microsoft 定義的 藍牙 HCI 命令,以達到優化的電池使用時間。
周圍
- 藍牙 LE
- 儲存裝置識別碼 (從 藍牙 位址哈希) 和 TK 值
- 自訂廣告 (定義如下)
主電腦上的 UEFI
這項功能取決於儲存資訊以協助 UEFI 中的配對程式。 此功能可讓此功能保存在系統復原和全新安裝上。 定義 UEFI 變數之後,它們必須鎖定為唯讀。
針對支援自動配對的每個裝置,主計算機應該將下列 OOB 資訊程式設計成其 NVRAM:
- RSSI 臨界值:當外圍設備「超出主計算機範圍」時,定義 dB 的距離臨界值
- 在配對之前設定為最小訊號強度
- OEM 必須定義適當的閾值
- DeviceID:可唯一識別支援的裝置,且長度應為8個字節,以避免裝置衝突。
- 必須與 藍牙 Mac 位址一樣是唯一的
- 與裝置識別碼配置文件無關。 僅用來表示唯一週邊設備。
- OOB 機碼:主機計算機與 BTH LE 裝置之間共用 16 位元組 SMP TK 值。
注意
如果每個裝置的裝置標識碼不是唯一的,或至少每個套件組合,如果多個裝置彼此範圍內,就會發生衝突。 周邊與未預期的電腦配對。
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)
公用 UEFI NVRAM 介面定義
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 (預付) | 裝置標識碼 |
安全性考量
製造期間
如果取得布建數據,中層攻擊中的人可能會發生。 讓數據保持安全,由 OEM 決定。
客戶購買裝置之後
可以讀取儲存在 UEFI 中的值,然後詐騙在另一個裝置上。 這可以授與惡意使用者的存取權。 為了減輕這種情況,我們也建立了 MDM 原則 藍牙/AllowPrepairing。 此原則可讓企業和專業部署停用此功能。