Pré-appairage Bluetooth LE

Windows 10 prend en charge le couplage automatique des périphériques BLUETOOTH LE à un seul PC, une fois que tous les appareils ont été provisionnés et activés pendant le processus de fabrication. Les utilisateurs n’ont pas besoin de garder les appareils LE couplés et connectés une fois que le PC hôte et les appareils groupés sont alimentés pour la première fois. Ces périphériques peuvent toujours être utilisés en tant qu’appareils Bluetooth standard et maintenir toutes les fonctionnalités lorsqu’ils ne sont pas à portée du PC hôte. Toutefois, si les périphériques ne sont pas apparié et se trouvent dans la plage du PC hôte, ils sont automatiquement re-couplés et se connectent.

Lorsqu’un périphérique LE prenant en charge cette fonctionnalité est alimenté pour la première fois, il envoie des données propriétaires définies par Microsoft dans une publicité connectable non redirigée. Cette publicité est ensuite récupérée par le PC hôte. Si l’appareil est à portée et que sa publicité correspond à un modèle préprovisionné sur le PC hôte pendant la fabrication, l’appareil est jumelé. Cela se fait par le biais d’un couplage hors bande qui utilise une clé OOB secrète distincte qui a également été préprovisionnée. La distance du PC hôte dans lequel le périphérique peut être jumelé est déterminée par une autre valeur RSSI minimale préprovisionnée, qui est représentée en dB, de sorte que les plages peuvent varier. Toutes les données préconfigurées doivent être stockées dans UEFI pour conserver cette fonctionnalité sur les installations propre et les restaurations système.

Lorsqu’un appareil groupé n’est pas apparié dans la plage définie par la valeur RSSI, l’appareil Bluetooth se recouple automatiquement à Windows. Les utilisateurs doivent quitter la plage du PC hôte pour pouvoir coupler leur appareil à d’autres PC compatibles Bluetooth.

Les oem doivent déterminer par eux-mêmes comment fabriquer ces appareils. Ils doivent également garantir la sécurité et qu’ils seront tous dans la même boîte lorsqu’ils seront expédiés aux clients.

Exigences concernant les fonctionnalités

PC

Périphérique

  • Bluetooth LE
  • Store for Device ID (hashed from Bluetooth Address) TK value for Device ID (hashed from Bluetooth Address) &
  • Publicité personnalisée (définie ci-dessous)

Flux de pré-appairage

UEFI sur pc hôte

Cette fonctionnalité dépend du stockage d’informations pour faciliter le processus de jumelage dans UEFI. La fonctionnalité permet à cette fonctionnalité de persister sur la récupération du système et propre installations. Une fois les variables UEFI définies, elles doivent être verrouillées pour être en lecture seule.

Pour chaque appareil prenant en charge le couplage automatique, le PC hôte doit programmer les informations OOB suivantes dans sa NVRAM :

  • Seuil RSSI : définit un seuil de distance en dB lorsque les périphériques sont « hors de portée du PC hôte »
    • Définir comme une force de signal minimale avant que le couplage ne se produise
    • L’OEM doit définir le seuil approprié
  • DeviceID : identifie de manière unique un appareil de prise en charge et doit avoir une longueur de 8 octets pour éviter les conflits d’appareil.
    • Doit être aussi unique que l’adresse Mac Bluetooth
    • Non lié au profil ID d’appareil. Utilisé uniquement pour représenter des périphériques uniques.
    • Clé OOB : la valeur SMP TK de 16 octets est partagée entre le PC hôte et l’appareil BTH LE.

      Notes

      Si l’ID d’appareil n’est pas unique par appareil, ou au moins par offre groupée, il y aura des conflits si plusieurs appareils sont à portée les uns des autres. Les périphériques sont associés à des PC imprévus.

Représentation pseudocode des informations 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)

Définition d’interface UEFI NVRAM publique

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}";
Type de section [1 octet] Fabricant [2 octets] MsftSectionType [4 octets] Identificateur d’appareil [8 octets]
0xff (propre au fournisseur) 0x0006 (MSFT) 0x00000004 (Préparation) identificateur d’appareil

Problèmes de sécurité

Pendant la fabrication

Il existe le potentiel d’attaques de Man in The Middle si les données d’approvisionnement sont obtenues. La sécurisation des données revient à l’OEM.

Une fois que le client a acheté l’appareil

Il est possible que les valeurs stockées dans UEFI soient lues, puis usurpées sur un autre appareil. Cela peut accorder l’accès au système par un utilisateur malveillant. Pour atténuer ce problème, nous avons également créé la stratégie MDM Bluetooth/AllowPrepairing. Cette stratégie permettra aux déploiements d’entreprise et professionnels de désactiver cette fonctionnalité.