Bluetooth-LE-Vorkopplung
Windows 10 unterstützt die automatische Kopplung von LE Bluetooth-Peripheriegeräten mit einem einzelnen PC, nachdem alle Geräte während des Herstellungsprozesses bereitgestellt und aktiviert wurden. Benutzer müssen LE-Geräte nicht gekoppelt und verbunden lassen, nachdem sowohl der Host-PC als auch die gebündelten Geräte zum ersten Mal mit Strom versorgt wurden. Diese Peripheriegeräte können weiterhin als normale Bluetooth-Geräte verwendet werden und behalten die volle Funktionalität bei, wenn sie sich außerhalb der Reichweite des Host-PCs befinden. Wenn die Peripheriegeräte jedoch entkoppelt und in Reichweite des Host-PCs sind, werden sie automatisch neu gekoppelt und verbunden.
Wenn ein LE-Peripheriegerät, das diese Funktion unterstützt, zum ersten Mal mit Strom versorgt wird, sendet es proprietäre, von Microsoft definierte Daten in einer ungerichteten anschließbaren Werbung. Diese Werbung wird dann vom Host-PC aufgenommen. Wenn sich das Gerät in Reichweite befindet und seine Anzeige mit einem Muster übereinstimmt, das während der Herstellung im Host-PC vorab bereitgestellt wird, wird das Gerät gekoppelt. Dies geschieht durch Out-of-Band-Pairing, das einen separaten geheimen OOB-Schlüssel verwendet, der ebenfalls vorab bereitgestellt wurde. Die Entfernung vom Host-PC, in der das Peripheriegerät gekoppelt werden kann, wird durch einen anderen vorab bereitgestellten RSSI-Mindestwert bestimmt, der in dB dargestellt wird, sodass die Reichweiten variieren können. Alle vorab bereitgestellten Daten müssen in UEFI gespeichert werden, um diese Funktionalität bei Neuinstallationen und Systemwiederherstellungen beizubehalten.
Wenn ein gebündeltes Gerät innerhalb des durch den RSSI-Wert definierten Bereichs entkoppelt wird, wird das Bluetooth-Gerät automatisch erneut mit Windows gekoppelt. Benutzer müssen die Reichweite des Host-PCs verlassen, um ihr Gerät mit anderen Bluetooth-fähigen PCs koppeln zu können.
OEMs müssen selbst bestimmen, wie sie diese Geräte herstellen. Sie müssen auch die Sicherheit garantieren und dass sie alle in derselben Box an die Kunden versendet werden.
Featureanforderungen
PC
- Windows 10 Anniversary Update
- UEFI gespeicherte Variablen
- Von Microsoft definierte Bluetooth-HCI-Befehle für optimierte Akkulaufzeit.
Periperiegerät
- Bluetooth LE
- Speicher für Geräte-ID (gehasht von Bluetooth-Adresse) & TK-Wert
- Benutzerdefinierte Werbung (definiert unten)
UEFI auf Host-PC
Diese Funktion hängt von der Speicherung von Informationen ab, um den Kopplungsprozess in UEFI zu unterstützen. Die Funktion ermöglicht, dass diese Funktionalität bei der Systemwiederherstellung und Neuinstallationen bestehen bleibt. Nachdem die UEFI-Variablen definiert wurden, müssen sie gesperrt werden, damit sie schreibgeschützt sind.
Für jedes Gerät, das automatisches Pairing unterstützt, sollte der Host-PC die folgenden OOB-Informationen in seinen NVRAM programmieren:
- RSSI-Schwellenwert: Definiert einen Entfernungsschwellenwert in dB, wenn Peripheriegeräte „außerhalb der Reichweite des Host-PCs“ sind.
- Als minimale Signalstärke festlegen, bevor die Kopplung stattfindet
- Der OEM muss den entsprechenden Schwellenwert definieren
- DeviceID: Identifiziert ein unterstützendes Gerät eindeutig und sollte 8 Byte lang sein, um Gerätekonflikte zu vermeiden.
- Muss so eindeutig sein wie die Bluetooth-Mac-Adresse
- Nicht im Zusammenhang mit dem Geräte-ID-Profil. Wird nur verwendet, um eindeutige Peripheriegeräte darzustellen.
- OOB-Taste: Der 16 Byte SMP TK-Wert wird zwischen dem Host-PC und dem BTH LE-Gerät freigegeben.
Hinweis
Wenn die Geräte-ID nicht pro Gerät oder zumindest pro Bundle eindeutig ist, kommt es zu Konflikten, wenn sich mehrere Geräte in Reichweite voneinander befinden. Peripheriegeräte werden mit unerwarteten PCs gekoppelt.
OOB-Info-Pseudocode-Darstellung
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)
Öffentliche UEFI-NVRAM-Schnittstellendefinition
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}";
Anzeige-Layout von Peripheriegeräten
Abschnittstyp [1 Byte] | Hersteller [2 Bytes] | MsftSectionType [4 Bytes] | Gerätebezeichner [8 Bytes] |
---|---|---|---|
0xff (anbieterspezifische) | 0x0006 (MSFT) | 0x00000004 (Vorkopplung) | Gerätebezeichner |
Sicherheitsaspekte
Während der Herstellung
Es besteht das Potenzial für Man-in-the-Middle-Angriffe, wenn die Bereitstellungsdaten abgerufen werden. Die Datensicherung obliegt dem OEM.
Nachdem der Kunde das Gerät gekauft hat
Es ist möglich, dass die in UEFI gespeicherten Werte gelesen und dann auf einem anderen Gerät gespooft werden. Dies kann einem böswilligen Benutzer Zugriff auf das System gewähren. Um dies abzumildern, haben wir auch die MDM-Richtlinie Bluetooth/AllowPrepairing erstellt. Diese Richtlinie ermöglicht Enterprise- und Pro-Bereitstellungen, diese Funktion zu deaktivieren.