v1.3
La spécification des accessoires du réseau Localiser définit une approche chiffrée de bout en bout pour le suivi des appareils Bluetooth à basse consommation (BLE) émettant des signaux. Cette page décrit FHN comme une extension de la spécification Fast Pair. Les fournisseurs doivent activer cette extension s'ils disposent d'appareils compatibles avec FHN et s'ils souhaitent activer le suivi de la position pour ces appareils.
Spécification GATT
Une caractéristique d'attributs génériques (GATT) supplémentaire doit être ajoutée au service Fast Pair avec la sémantique suivante :
| Caractéristique du service Association express | Chiffré | Autorisations | UUID |
|---|---|---|---|
| Actions de balise | Non | Lire, écrire et envoyer des notifications | FE2C1238-8366-4814-8EB0-01DE32100BEA |
Tableau 1 : Caractéristiques du service Association express pour FHN.
Authentification
Les opérations requises par cette extension sont effectuées en tant qu'opération d'écriture, sécurisée par un mécanisme de challenge-réponse. Avant d'effectuer une opération, le demandeur doit effectuer une opération de lecture à partir de la caractéristique du tableau 1, ce qui génère un tampon au format suivant :
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | Numéro de version majeure du protocole | 0x01 |
| 1 - 8 | tableau d'octets | Nonce aléatoire unique | varie |
Chaque opération de lecture doit générer un nonce différent, et un nonce unique ne doit être valide que pour une seule opération. Le nonce doit être invalidé même si l'opération a échoué.
Le Seeker calcule ensuite une clé d'authentification unique à utiliser dans une requête d'écriture ultérieure. La clé d'authentification est calculée comme décrit dans les tableaux 2 à 5. Selon l'opération demandée, le demandeur prouve qu'il connaît une ou plusieurs des clés suivantes :
Clé de compte : clé de compte Fast Pair de 16 octets, telle que définie dans la spécification Fast Pair.
Clé du compte propriétaire : le fournisseur choisit l'une des clés de compte existantes comme clé du compte propriétaire la première fois qu'un demandeur accède à la caractéristique "Actions du beacon". La clé du compte propriétaire choisi ne peut pas être modifiée tant que le fournisseur n'a pas été réinitialisé aux paramètres d'usine. Le fournisseur ne doit pas supprimer la clé du compte propriétaire lorsqu'il n'y a plus d'emplacements de clés de compte sans frais.
Les fournisseurs qui prennent déjà en charge FHN lors du premier association (ou qui le prennent en charge lors de l'association après la réinitialisation d'usine) choisissent la première clé de compte, car il s'agit de la seule clé de compte existante lorsque Seeker lit l'état de provisionnement lors de l'association.
Les fournisseurs qui bénéficient de la prise en charge FHN après avoir déjà été associés (par exemple, via une mise à jour du micrologiciel) peuvent choisir n'importe quelle clé de compte existante. Il est raisonnable de choisir la première clé de compte utilisée pour lire l'état de provisionnement à partir de la caractéristique des actions de balise après la mise à jour du micrologiciel, en supposant que l'utilisateur qui a effectué la mise à jour est le propriétaire actuel du fournisseur.
Clé d'identité éphémère (EIK, Ephemeral Identity Key) : clé de 32 octets choisie de manière aléatoire par le demandeur lors du processus de provisionnement FHN. Cette clé permet de dériver des clés cryptographiques utilisées pour le chiffrement de bout en bout des rapports de localisation. Seeker ne le révèle jamais au backend.
Clé de récupération : définie comme
SHA256(ephemeral identity key || 0x01), tronquée aux 8 premiers octets. La clé est stockée dans le backend et le Seeker peut l'utiliser pour récupérer l'EIK, à condition que l'utilisateur donne son consentement en appuyant sur un bouton de l'appareil.Clé de sonnerie : définie sur
SHA256(ephemeral identity key || 0x02), tronquée aux 8 premiers octets. La clé est stockée dans le backend et le chercheur ne peut l'utiliser que pour faire sonner l'appareil.Clé de protection contre le suivi indésirable : définie comme
SHA256(ephemeral identity key || 0x03), tronquée aux 8 premiers octets. La clé est stockée sur le backend et le demandeur ne peut l'utiliser que pour activer le mode de protection contre le suivi indésirable.
Opérations
Le format des données écrites dans la caractéristique est indiqué dans les tableaux 2 à 5. Chacune de ces opérations est abordée plus en détail dans la suite de cette section.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données |
|
| 1 | uint8 | Longueur des données | Variable |
| 2 - 9 | tableau d'octets | Clé d'authentification à usage unique | Les 8 premiers octets de HMAC-SHA256(account key, protocol major version number || the last nonce
read from the characteristic || data ID || data length || additional data) |
| 10 - var | tableau d'octets | Données supplémentaires |
|
Tableau 2 : Demande de provisionnement de balise.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données | 0x04 : Lire la clé d'identité éphémère avec le consentement de l'utilisateur |
| 1 | uint8 | Longueur des données | 0x08 |
| 2 - 9 | tableau d'octets | Clé d'authentification à usage unique | Les 8 premiers octets de HMAC-SHA256(recovery key, protocol major version number || the last nonce
read from the characteristic || data ID || data length) |
Tableau 3 : Demande de récupération de la clé de provisionnement de la balise.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données |
|
| 1 | uint8 | Longueur des données | Variable |
| 2 - 9 | tableau d'octets | Clé d'authentification à usage unique | Les 8 premiers octets de HMAC-SHA256(ring key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data) |
| 10 - var | tableau d'octets | Données supplémentaires |
|
Tableau 4 : demande de sonnerie.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données |
|
| 1 | uint8 | Longueur des données | Variable |
| 2 - 9 | tableau d'octets | Clé d'authentification à usage unique | Les 8 premiers octets de HMAC-SHA256(unwanted tracking protection key, protocol major version number
|| the last nonce read from the characteristic || data ID || data length ||
additional data) |
| 10 – var | tableau d'octets | Données supplémentaires |
|
Tableau 5 : Demande de protection contre le suivi indésirable.
Les écritures réussies déclenchent les notifications listées dans le tableau 6.
Les notifications avec un ID de données autre que 0x05 : changement d'état de la sonnerie doivent être envoyées avant la fin de la transaction d'écriture qui déclenche la notification, c'est-à-dire avant l'envoi d'une PDU de réponse pour la requête d'écriture.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données |
|
| 1 | uint8 | Longueur des données | Variable |
| 2 - 9 | tableau d'octets | Authentification | Détaillé par opération |
| 10 - var | tableau d'octets | Données supplémentaires |
|
Tableau 6 : Réponse du service de balise.
Le tableau 7 liste les codes d'erreur GATT possibles renvoyés par les opérations.
| Code | Description | Remarques |
|---|---|---|
| 0x80 | Non authentifiés | Retourné en réponse à une requête d'écriture lorsque l'authentification échoue (y compris lorsqu'un ancien nonce a été utilisé). |
| 0x81 | Valeur non valide | Retournée lorsqu'une valeur incorrecte est fournie ou que les données reçues comportent un nombre d'octets inattendu. |
| 0x82 | Aucun consentement de l'utilisateur | Retourné en réponse à une requête d'écriture avec l'ID de données 0x04 : lire la clé d'identité éphémère avec le consentement de l'utilisateur lorsque l'appareil n'est pas en mode association. |
Tableau 7 : codes d'erreur GATT.
Lire le paramètre de la balise
Le demandeur peut interroger le fournisseur pour obtenir les paramètres de la balise en effectuant une opération d'écriture sur la caractéristique consistant en une requête du tableau 2 avec l'ID de données 0x00. Le fournisseur vérifie que la clé d'authentification unique fournie correspond à l'une des clés de compte stockées sur l'appareil.
Si la validation échoue, le fournisseur renvoie une erreur d'authentification.
En cas de réussite, le fournisseur envoie une notification avec une réponse du tableau 6 et l'ID de données 0x00. Le fournisseur construit le segment de données comme suit :
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | Puissance calibrée | Puissance calibrée reçue à 0 m (valeur comprise entre -100 et 20). Représenté sous la forme d'un nombre entier signé, avec une résolution de 1 dBm. |
| 1 à 4 | uint32 | Valeur de l'horloge | Valeur d'horloge actuelle en secondes (big endian). |
| 5 | uint8 | Sélection de courbes | Courbe elliptique utilisée pour le chiffrement :
|
| 6 | uint8 | Composants | Nombre de composants pouvant sonner :
|
| 7 | uint8 | Fonctionnalités de sonnerie | Les options acceptées sont les suivantes :
|
| 8-15 | tableau d'octets | Marges intérieures | Remplissage par des zéros pour le chiffrement AES. |
Les données doivent être chiffrées avec AES-ECB-128 à l'aide de la clé de compte utilisée pour authentifier la requête.
Le segment d'authentification est défini comme les huit premiers octets de HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data after
encryption || 0x01).
Lire l'état de provisionnement de la balise
Le demandeur peut interroger le fournisseur sur l'état de provisionnement de la balise en effectuant une opération d'écriture sur la caractéristique constituée d'une requête du tableau 2 avec l'ID de données 0x01. Le fournisseur vérifie que la clé d'authentification unique fournie correspond à l'une des clés de compte stockées sur l'appareil.
Si la validation échoue, le fournisseur renvoie une erreur d'authentification.
En cas de réussite, le fournisseur envoie une notification avec une réponse du tableau 6 et l'ID de données 0x01. Le fournisseur construit le segment de données comme suit :
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | État de provisionnement | Masque de bits ayant les valeurs suivantes :
|
| 1 à 20 ou 32 | tableau d'octets | Identifiant éphémère actuel | 20 ou 32 octets (selon la méthode de chiffrement utilisée) indiquant l'ID éphémère actuel annoncé par la balise, le cas échéant. |
Le segment d'authentification est défini comme les huit premiers octets de HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data || 0x01).
Définir une clé d'identité éphémère
Pour provisionner un fournisseur non provisionné en tant que balise FHN ou modifier la clé d'identité éphémère d'un fournisseur déjà provisionné, le demandeur effectue une opération d'écriture sur la caractéristique consistant en une requête du tableau 2 avec l'ID de données 0x02. Le Fournisseur confirme que :
- La clé d'authentification à usage unique fournie correspond à la clé du compte propriétaire.
- Si un hachage d'une clé d'identité éphémère a été fourni, la clé d'identité éphémère hachée correspond à la clé d'identité éphémère actuelle.
- Si aucun hachage de clé d'identité éphémère n'a été fourni, vérifiez que le fournisseur n'a pas déjà été provisionné en tant que balise FHN.
Si la validation échoue, le fournisseur renvoie une erreur d'authentification.
En cas de réussite, la clé d'identité éphémère est récupérée en la déchiffrant avec AES-ECB-128 à l'aide de la clé de compte correspondante. La clé doit être conservée sur l'appareil, et à partir de ce moment, le fournisseur doit commencer à diffuser des trames FHN. La nouvelle clé d'identité éphémère prend effet immédiatement après la fin de la connexion BLE. Le fournisseur envoie une notification avec une réponse du tableau 6 et l'ID de données 0x02.
Le segment d'authentification est défini comme les huit premiers octets de HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || 0x01).
Effacer la clé d'identité éphémère
Pour désactiver la partie balise du fournisseur, le demandeur effectue une opération d'écriture sur la caractéristique, qui consiste en une requête du tableau 2 avec l'ID de données 0x03. Le Fournisseur confirme que :
- La clé d'authentification à usage unique fournie correspond à la clé du compte propriétaire.
- La clé d'identité éphémère hachée correspond à la clé d'identité éphémère actuelle.
Si le fournisseur n'est pas provisionné en tant que balise FHN ou si la validation échoue, une erreur d'authentification est renvoyée.
En cas de réussite, le fournisseur oublie la clé et cesse de diffuser des trames FHN.
Le fournisseur envoie une notification avec une réponse du tableau 6 et l'ID de données 0x03.
Le segment d'authentification est défini comme les huit premiers octets de HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || 0x01).
Lire la clé d'identité éphémère avec le consentement de l'utilisateur
Cette option n'est disponible que pour récupérer une clé perdue, car la clé n'est stockée que localement par le détecteur. Par conséquent, cette fonctionnalité n'est disponible que lorsque l'appareil est en mode association ou pendant une durée limitée après l'appui sur un bouton physique de l'appareil (ce qui constitue le consentement de l'utilisateur).
Le Seeker doit stocker la clé de récupération sur le backend pour pouvoir récupérer la clé en texte clair, mais il ne stocke pas l'EIK lui-même.
Pour lire l'EIK, le demandeur effectue une opération d'écriture sur la caractéristique, qui consiste en une requête de la table 3 avec l'ID de données 0x04. Le Fournisseur confirme que :
- La clé de récupération hachée correspond à la clé de récupération attendue.
- L'appareil est en mode récupération EIK.
Si la validation échoue, le fournisseur renvoie une erreur d'authentification.
Si l'appareil n'est pas en mode association, le fournisseur renvoie une erreur "No User Consent" (Consentement de l'utilisateur non obtenu).
En cas de réussite, le fournisseur envoie une notification avec une réponse du tableau 6 et l'ID de données 0x04.
Le segment d'authentification est défini comme les huit premiers octets de HMAC-SHA256(recovery key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data || 0x01).
Faire sonner l'appareil
Le demandeur peut demander au fournisseur de lire un son en effectuant une opération d'écriture sur la caractéristique, qui consiste en une requête du tableau 4 avec l'ID de données 0x05. Le fournisseur construit le segment de données comme suit :
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | Faire sonner l'appareil | Masque de bits ayant les valeurs suivantes :
|
| 1 - 2 | uint16 | Délai avant expiration | Délai avant expiration en décisecondes. Elle ne doit pas être nulle et ne doit pas être supérieure à l'équivalent de 10 minutes. Le fournisseur utilise cette valeur pour déterminer la durée de la sonnerie avant de se mettre en mode silencieux. Le délai d'inactivité remplace celui déjà en vigueur si un composant de l'appareil sonne déjà. Si ring operation (opération de sonnerie) est défini sur 0x00, le délai avant expiration est ignoré. |
| 3 | uint8 | Volume |
|
Une fois la demande reçue, le fournisseur vérifie les points suivants :
- La clé d'authentification à usage unique fournie correspond à la clé de la sonnerie.
- L'état demandé correspond aux composants qui peuvent sonner.
Si le fournisseur n'est pas provisionné en tant que balise FHN ou si la validation échoue, une erreur d'authentification est renvoyée. Toutefois, si le fournisseur a activé la protection contre le suivi indésirable et que la demande de protection contre le suivi indésirable déclenchée a activé l'indicateur d'authentification sans sonnerie, le fournisseur doit ignorer cette vérification. Le demandeur doit toujours fournir les données d'authentification, mais il peut leur attribuer une valeur arbitraire.
Lorsqu'une sonnerie commence ou se termine, une notification est envoyée, comme indiqué dans le tableau 6 avec l'ID de données 0x05. Le contenu de la notification est défini comme suit :
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | État de la sonnerie |
|
| 1 | uint8 | Composants de sonnerie | Masque de bits des composants qui sonnent activement, tel que défini dans la requête. |
| 2 - 3 | uint16 | Délai avant expiration | Temps restant pour la sonnerie en décisecondes. Si l'appareil a cessé de sonner, la valeur 0x0000 doit être renvoyée. |
Le segment d'authentification est défini comme les huit premiers octets de HMAC-SHA256(ring key, protocol major version number || the nonce used to
initiate the ringing command || data ID || data length || additional data ||
0x01).
Si l'appareil est déjà dans l'état de sonnerie demandé lorsqu'une demande de sonnerie ou d'arrêt de la sonnerie est reçue, le fournisseur doit envoyer une notification avec un état de sonnerie, soit 0x00 : Démarrée, soit 0x04 : Arrêtée (requête GATT), respectivement. Cette requête remplace les paramètres de l'état existant afin de prolonger la durée de la sonnerie.
Si le fournisseur dispose d'un bouton physique (ou si la détection tactile est activée), ce bouton doit arrêter la fonction de sonnerie s'il est enfoncé pendant que la sonnerie est active.
Obtenir l'état de sonnerie du beacon
Pour obtenir l'état de sonnerie de la balise, le chercheur effectue une opération d'écriture sur la caractéristique, qui consiste en une requête de la table 4 avec l'ID de données 0x06. Le fournisseur vérifie que la clé d'authentification à usage unique fournie correspond à la clé de la sonnerie.
Si le fournisseur n'est pas provisionné en tant que balise FHN ou si la validation échoue, il renvoie une erreur d'authentification.
En cas de réussite, le fournisseur envoie une notification avec une réponse du tableau 6 et l'ID de données 0x06. Le fournisseur construit le segment de données comme suit :
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | Composants de sonnerie | Composants qui sonnent activement, tels que définis dans la demande de sonnerie. |
| 1 - 2 | uint16 | Délai avant expiration | Temps restant pour la sonnerie en décisecondes. Notez que si l'appareil ne sonne pas, la valeur 0x0000 doit être renvoyée. |
Le segment d'authentification est défini comme les huit premiers octets de HMAC-SHA256 (ring key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data || 0x01).
Mode de protection contre le suivi indésirable
Le mode de protection contre le suivi indésirable est conçu pour permettre à tout client d'identifier les appareils abusifs sans communication avec le serveur. Par défaut, le fournisseur doit faire tourner tous les identifiants comme décrit dans Rotation des ID. Le service Localiser peut relayer une demande d'activation du mode de protection contre le suivi indésirable via le réseau Localiser. Ce faisant, le service amène le fournisseur à utiliser temporairement une adresse MAC fixe, ce qui permet aux clients de détecter l'appareil et d'avertir l'utilisateur d'un éventuel suivi indésirable.
Pour activer ou désactiver le mode de protection contre le suivi indésirable de la balise, le chercheur effectue une opération d'écriture sur la caractéristique, qui consiste en une requête du tableau 5 avec l'ID de données 0x07 ou 0x08, respectivement.
Lorsque vous activez le mode Protection contre le suivi indésirable
Le fournisseur construit le segment de données comme suit :
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | Indicateurs de contrôle |
Les options ne sont effectives que jusqu'à ce que le mode de protection contre le suivi indésirable soit désactivé. |
Le fournisseur vérifie que la clé d'authentification à usage unique fournie correspond à la clé de protection contre le suivi indésirable. Si le fournisseur n'est pas provisionné en tant que balise FHN ou si la validation échoue, une erreur d'authentification est renvoyée.
Lorsque le mode de protection contre le suivi indésirable est activé, la balise doit réduire la fréquence de rotation de l'adresse MAC privée à une fois par 24 heures. L'identifiant éphémère annoncé doit continuer à changer comme d'habitude. Le type de frame doit être défini sur 0x41. L'état est également indiqué dans la section Indicateurs hachés.
Lorsque vous désactivez le mode de protection contre le suivi indésirable
Le Fournisseur confirme que :
- La clé d'authentification unique fournie correspond à la clé de protection contre le suivi indésirable.
- La clé d'identité éphémère hachée correspond à la clé d'identité éphémère actuelle.
Si le fournisseur n'est pas provisionné en tant que balise FHN ou si la validation échoue, il renvoie une erreur d'authentification.
Lorsque le mode de protection contre le suivi indésirable est désactivé, la balise devrait recommencer à faire tourner l'adresse MAC à un rythme normal, synchronisé avec la rotation de l'identifiant éphémère. Le type de frame doit être redéfini sur 0x40. L'état est également indiqué dans la section Indicateurs hachés.
En cas de réussite, le fournisseur envoie une notification avec une réponse du tableau 6 et un ID de données 0x07 ou 0x08.
Le segment d'authentification est défini comme les huit premiers octets de HMAC-SHA256(unwanted tracking protection key, protocol major version number ||
the last nonce read from the characteristic || data ID || data length ||
0x01).
Localisation précise
Cette section décrit en détail le flux et les opérations supplémentaires nécessaires pour trouver des résultats précis. Les mêmes règles pour la caractéristique GATT et l'authentification s'appliquent ici, comme défini dans la section sur la spécification GATT. La fonctionnalité Localisation précise est facultative.
Le type de résultat de localisation précise dépend du type de technologies de mesure de distance compatibles avec les appareils utilisés pour la localisation précise. Les technologies de mesure de distance compatibles sont décrites dans la spécification Ranging: Out-of-band message sequence and payload (Mesure de distance : séquence et charge utile des messages hors bande). Les sections suivantes expliquent le type d'expérience de localisation précise auquel vous pouvez vous attendre en fonction de la technologie de mesure de distance utilisée.
Processus de localisation précise
Cette section explore le flux de messages FHNA pour la localisation précise. La figure 1 montre le flux des messages, et les paragraphes expliquent chaque message plus en détail.

Fig. 1 : Flux de messages typique de la fonctionnalité Localisation précise
L'appareil initiateur est celui sur lequel l'application Localiser est installée et à partir duquel la fonctionnalité de localisation précise a été activée. L'initiateur est l'appareil qui tente de trouver l'autre appareil.
L'appareil Répondeur est l'appareil que l'appareil Initiateur tente de trouver.
L'appareil Initiateur envoie un message de demande de capacité de mesure de distance à l'appareil Répondeur, dans lequel il liste les technologies de mesure de distance sur lesquelles il souhaite obtenir des informations de la part de l'appareil Répondeur. L'appareil répondant renvoie la notification de réponse sur les capacités de mesure de distance, qui contient des informations sur les technologies de mesure de distance compatibles et leurs capacités. Le répondeur n'inclura que les informations demandées par l'initiateur. La liste des fonctionnalités sera triée en fonction de la priorité de la technologie de mesure de distance privilégiée par l'appareil Responder, la première de la liste ayant la priorité la plus élevée.
L'appareil initiateur enverra ensuite un message de configuration de la mesure de distance, dans lequel il définira la configuration de chaque technologie de mesure de distance avec laquelle il souhaite effectuer une mesure. À la réception de ce message, l'appareil Répondeur doit commencer à effectuer des mesures de distance pour les technologies applicables à l'aide des configurations fournies. L'appareil répondant renverra une notification de réponse à la configuration de la mesure de distance, qui contient les résultats indiquant si chaque technologie de mesure de distance individuelle a démarré avec succès. Certaines technologies de mesure de distance doivent être démarrées à la fois sur l'appareil initiateur et sur l'appareil répondeur pour que la session de mesure de distance réussisse. Pour d'autres, il suffit qu'elles soient démarrées sur l'appareil initiateur. Toutefois, l'appareil répondeur doit renvoyer un résultat positif pour ces technologies. Vous trouverez plus d'informations sur le comportement spécifique de la technologie de mesure de distance dans les sections suivantes.
Une fois que l'appareil initiateur est prêt à arrêter la session de localisation précise, il envoie un message d'arrêt de la mesure de distance au répondeur, indiquant les technologies de mesure de distance qui doivent être arrêtées. L'appareil Responder répond par une notification Stop Ranging Response, indiquant qu'il a bien arrêté la mesure de distance avec les technologies de mesure de distance demandées.
Si le canal de communication FHNA BLE GATT se déconnecte en cours de session de localisation précise, mais que certaines technologies de mesure de distance continuent de fonctionner, l'appareil répondeur met en œuvre un mécanisme de délai avant expiration pour s'assurer qu'il ne mesure pas la distance indéfiniment. Les détails dépendent de chaque cas d'utilisation.
Notez que l'appareil de réponse ne doit pas supposer que l'ordre des opérations sera toujours le même. Par exemple, l'appareil répondeur doit être capable de gérer plusieurs opérations de demande de capacité de mesure de distance consécutives, voire une opération de configuration de mesure de distance directe sans la demande de capacité précédente.
Opérations de localisation précise
Le tableau 8 présente les opérations FHNA définies dans ce document et requises pour la localisation précise. Chaque sous-section définit le message FHNA pour chacune des opérations, tandis que le contenu du champ Données supplémentaires fait référence à la spécification Ranging : séquence et charge utile des messages hors bande.
| Opération | ID des données | Description |
|---|---|---|
| Demande de capacité de mesure de distance | 0x0A | Opération de demande de fonctionnalité qui sera envoyée par l'appareil initiateur à l'appareil répondeur. Le contenu des données de cette opération liste toutes les technologies de mesure de distance sur lesquelles l'initiateur souhaite obtenir des informations de l'appareil répondeur. |
| Réponse de capacité de mesure de distance | 0x0A | Il s'agit de la réponse de notification à l'opération de demande de capacité de mesure de distance. Il contient des informations sur les capacités de chaque technologie de mesure de distance compatible demandées par l'initiateur. |
| Configuration de la gamme | 0x0B | L'opération de configuration de la mesure de distance contient les configurations des technologies de mesure de distance avec lesquelles l'appareil initiateur souhaite commencer la mesure de distance avec l'appareil répondeur. |
| Réponse de configuration de la mesure de distance | 0x0B | Il s'agit de la réponse de notification à l'opération de configuration de la plage. Il contient des données indiquant si l'appareil Responder a réussi à démarrer la mesure de distance avec les technologies de mesure de distance demandées en fonction de la configuration fournie. |
| RFU | 0x0C | L'opération avec cet ID de données n'est pas utilisée et est réservée pour une utilisation ultérieure. |
| Arrêter la mesure de distance | 0x0D | L'opération Stop Ranging envoyée par l'appareil Initiator contient des informations sur les technologies de mesure de distance avec lesquelles l'appareil Responder doit arrêter la mesure de distance. |
| Arrêter la réponse de mesure de distance | 0x0D | Il s'agit de la réponse de notification à l'opération Stop Ranging. Il contient des données indiquant si l'opération d'arrêt pour une technologie de mesure de distance spécifique a réussi ou non. |
Tableau 8 : Opérations de localisation précise.
Opération de demande de capacité de mesure de distance
Le tableau 9 définit le message de demande de capacité de mesure de distance.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données | 0x0A : opération de demande de capacité de mesure de distance |
| 1 | uint8 | Longueur des données | Variable |
| 2 | tableau d'octets | Clé d'authentification à usage unique | Les huit premiers octets de HMAC-SHA256(clé de compte, numéro de version majeure du protocole || dernier nonce lu à partir de la caractéristique || ID de données || longueur des données || données supplémentaires). |
| 10 | tableau d'octets | Données supplémentaires | Message Ranging Capability Request (Demande de capacité de mesure de distance), tel que défini dans la spécification Ranging: Out-of-band message sequence and payload (séquence et charge utile des messages hors bande pour la mesure de distance) (en-tête et charge utile) |
Tableau 9 : Demande de capacité de mesure de la distance.
Opération de réponse de la fonctionnalité de mesure de distance
Le tableau 10 définit le message de réponse sur la capacité de mesure de distance.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données | 0x0A : réponse sur la capacité de mesure de la distance |
| 1 | uint8 | Longueur des données | Variable |
| 2 | tableau d'octets | Clé d'authentification à usage unique | Les huit premiers octets de HMAC-SHA256(clé de compte, numéro de version majeure du protocole || dernier nonce lu à partir de la caractéristique || ID de données || longueur des données || données supplémentaires || 0x01). |
| 10 | tableau d'octets | Données supplémentaires | Message Ranging Capability Response (Réponse de capacité de mesure de distance), tel que défini dans la spécification Ranging: Out-of-band message sequence and payload (Mesure de distance : séquence et charge utile des messages hors bande) (en-tête et charge utile) |
Tableau 10 : Réponse de la fonctionnalité de mesure de distance.
Opération de configuration de la mesure de distance
Le tableau 11 définit le message de configuration de la mesure de distance.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données | 0x0B : définir la configuration de la mesure de distance |
| 1 | uint8 | Longueur des données | Variable |
| 2 | tableau d'octets | Clé d'authentification à usage unique | Les huit premiers octets de HMAC-SHA256(clé de compte, numéro de version majeure du protocole || dernier nonce lu à partir de la caractéristique || ID de données || longueur des données || données supplémentaires). |
| 10 | tableau d'octets | Données supplémentaires | Message Ranging Configuration tel que défini dans la spécification Ranging: Out-of-band message sequence and payload (en-tête et charge utile) |
Tableau 11 : configuration de la mesure de distance.
Opération de réponse à la configuration de la mesure de distance
Le tableau 12 définit le message de réponse de configuration de la mesure de distance.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données | 0x0B : réponse à la configuration de la mesure de distance |
| 1 | uint8 | Longueur des données | Variable |
| 2 | tableau d'octets | Clé d'authentification à usage unique | Les huit premiers octets de HMAC-SHA256(clé de compte, numéro de version majeure du protocole || dernier nonce lu à partir de la caractéristique || ID de données || longueur des données || données supplémentaires || 0x01). |
| 10 | tableau d'octets | Données supplémentaires | Message Ranging Configuration Response (Réponse de configuration de la mesure de distance), tel que défini dans la spécification Ranging: Out-of-band message sequence and payload (séquence et charge utile des messages de mesure de distance hors bande) (en-tête et charge utile) |
Tableau 12 : Réponse de configuration de la mesure de distance.
Arrêter l'opération de mesure de distance
Le tableau 13 définit le message "Stop Ranging" (Arrêter la mesure de distance).
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données | 0x0D : arrêt de la mesure de distance |
| 1 | uint8 | Longueur des données | Variable |
| 2 | tableau d'octets | Clé d'authentification à usage unique | Les huit premiers octets de HMAC-SHA256(clé de compte, numéro de version majeure du protocole || dernier nonce lu à partir de la caractéristique || ID de données || longueur des données). |
| 10 | tableau d'octets | Données supplémentaires | Message Stop Ranging tel que défini dans la spécification Ranging: Out-of-band message sequence and payload (en-tête et charge utile) |
Tableau 13 : arrêt de la plage.
Arrêter l'opération de réponse de mesure de distance
Le tableau 14 définit le message de réponse "Stop Ranging" (Arrêter la mesure de distance).
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | ID des données | 0x0D : réponse d'arrêt de la mesure de distance |
| 1 | uint8 | Longueur des données | Variable |
| 2 | tableau d'octets | Clé d'authentification à usage unique | Les huit premiers octets de HMAC-SHA256(clé de compte, numéro de version majeure du protocole || dernier nonce lu à partir de la caractéristique || ID de données || longueur des données || données supplémentaires || 0x01). |
| 10 | tableau d'octets | Données supplémentaires | Message Stop Ranging Response tel que défini dans la spécification Ranging: Out-of-band message sequence and payload (en-tête et charge utile) |
Tableau 14 : réponse "Stop Ranging".
Protection contre le suivi indésirable avec la localisation précise
Lorsque le mode de protection contre le suivi indésirable est activé, comme décrit dans la section "Protection contre le suivi indésirable", le même flux qui s'applique à l'ignorance des vérifications de l'authentification pour les messages de sonnerie s'applique également à tous les messages de localisation précise définis dans ce document pour les appareils qui souhaitent prendre en charge cette fonctionnalité.
Spécificités de la technologie de mesure de distance pour la localisation précise
Cette section contient des informations spécifiques à la technologie de mesure de distance.
Spécificités de la bande ultralarge (UWB)
Détails spécifiques à l'UWB.
Niveau de précision de la localisation
Les sessions de localisation précise utilisant la technologie UWB pour la mesure de distance peuvent s'attendre à voir des informations sur la distance et la direction. L'intervalle de mesure de distance doit être d'au moins 240 ms, mais 96 ms est préférable pour un guidage optimal.
ID de configuration
Les données de configuration hors bande échangées pour l'UWB ne contiennent pas l'ensemble complet des paramètres configurables disponibles dont l'UWB a besoin pour démarrer une session de mesure de distance UWB. Certains paramètres sont sélectionnés de manière implicite par l'ID de configuration choisi.
Chaque ID de configuration est un ensemble de paramètres de configuration UWB prédéfinis qui sont documentés publiquement. Pour le cas d'utilisation de la localisation précise, l'appareil répondeur doit être compatible avec l'ID de configuration 6 et, éventuellement, avec l'ID de configuration 3.
Initiateur et répondeur UWB
Dans le cas d'utilisation de la localisation précise, l'appareil indiqué comme appareil initiateur dans ce document sera le répondeur UWB, et l'appareil indiqué comme appareil répondeur dans ce document sera l'initiateur UWB. En effet, l'appareil initiateur UWB consomme moins d'énergie que l'appareil répondeur UWB. Dans la plupart des cas, l'appareil répondeur est un périphérique dont la batterie est limitée.
Cela signifie que l'appareil répondeur doit indiquer qu'il peut jouer le rôle d'initiateur UWB dans le message de réponse de capacité de mesure de distance.
Autres paramètres liés à l'UWB
- Channel 9 doit être compatible
- Pour un guidage optimal, un intervalle de mesure de distance de 96 ms est recommandé. Dans le cas contraire, un intervalle de 240 ms doit être pris en charge.
- Une durée de slot de 1 ms est recommandée pour économiser la batterie, mais 2 ms sont également acceptées.
- La puce UWB doit être conforme à la norme FIRA v1.2 et à la norme P-STS.
- Le BPRF est obligatoire, tandis que le HPRF est recommandé, mais facultatif. Le mode pris en charge ou sélectionné est déterminé par l'index de préambule pris en charge ou sélectionné.
- Type de sécurité de la session : P-STS
Spécificités du sondage de canal BLE
Détails spécifiques au BLE CS.
Niveau de précision de la localisation
Les sessions de localisation précise utilisant CS comme technologie de mesure de distance ne fourniront que des mesures de distance. La direction n'est pas fournie pour le moment.
Liaison requise entre les appareils
Les sessions de localisation précise utilisant le sondage de canal ne fonctionnent pas si les appareils ne sont pas associés. Une association existante entre l'appareil initiateur et l'appareil répondeur est requise. Cette spécification ne permet pas de créer une association entre les appareils. Il incombe plutôt au développeur du cas d'utilisation d'établir ce lien entre les appareils.
Action requise de la part de l'interlocuteur pour le service client
Contrairement à l'UWB, où les deux appareils doivent appeler explicitement les API de démarrage et d'arrêt de la mesure de distance UWB, pour la CS, seul l'appareil initiateur est requis pour démarrer la mesure de distance CS en appelant la pile Bluetooth. Le reste de l'initialisation côté répondeur se fait dans la bande à l'aide du Bluetooth (BT). Cela signifie qu'à la réception du message de configuration de la mesure de distance ou du message d'arrêt de la mesure de distance pour CS, le côté répondeur n'a rien à faire si le Bluetooth est activé, si ce n'est répondre avec la notification du message de réponse de configuration de la mesure de distance. L'appareil de réponse pourrait potentiellement utiliser ces messages comme déclencheur pour mettre à jour l'UI lorsqu'un écran est présent, ou indépendamment de la présence d'un écran, il pourrait être utilisé pour un retour visuel sur l'état de l'appareil, par exemple en faisant clignoter les voyants de l'appareil.
Wi-Fi NAN RTT
Informations spécifiques à la technologie Wi-Fi NAN RTT.
Niveau de précision de la localisation
Les sessions de localisation précise utilisant Wi-Fi NAN RTT comme technologie de mesure de distance ne fourniront que des mesures de distance. La direction n'est pas fournie pour le moment.
RSSI BLE
Détails spécifiques au RSSI BLE.
Niveau de précision de la localisation
Les sessions de localisation précise qui utilisent uniquement le RSSI BLE comme technologie de mesure de distance ne pourront pas obtenir d'informations sur la distance ni sur la direction, car le RSSI BLE n'est pas une technologie de mesure de distance précise. À la place, l'utilisateur verra des indications indiquant que l'appareil est proche ou éloigné.
Frames publicitaires
Une fois le provisionnement effectué, le fournisseur est censé diffuser des trames FHN au moins une fois toutes les deux secondes. Si des trames Association express sont annoncées, le fournisseur doit intercaler les trames FHN dans les annonces Association express standards. Par exemple, toutes les deux secondes, le fournisseur doit diffuser sept annonces Fast Pair et une annonce FHN.
La puissance d'émission Bluetooth conduite pour les annonces FHN doit être définie sur au moins 0 dBm.
Le frame FHN contient une clé publique utilisée pour chiffrer les rapports de localisation par tout client compatible qui contribue au réseau de crowdsourcing. Deux types de clés à courbe elliptique sont disponibles : une clé de 160 bits qui s'adapte aux anciens frames BLE 4 ou une clé de 256 bits qui nécessite BLE 5 avec des capacités de publicité étendues. L'implémentation du fournisseur détermine la courbe utilisée.
Une trame FHN est structurée comme suit.
| Octet | Valeur | Description |
|---|---|---|
| 0 | 0x02 | Longueur |
| 1 | 0x01 | Valeur du type de données "Indicateurs" |
| 2 | 0x06 | Données sur les indicateurs |
| 3 | 0x18 ou 0x19 | Longueur |
| 4 | 0x16 | Valeur du type de données des données de service |
| 5 | 0xAA | UUID de service 16 bits |
| 6 | 0xFE | … |
| 7 | 0x40 ou 0x41 | Type de frame FHN avec indication du mode de protection contre le suivi indésirable |
| 8..27 | Identifiant éphémère de 20 octets | |
| 28 | Indicateurs hachés |
Tableau 15 : trame FHN compatible avec une courbe de 160 bits.
Le tableau 16 indique les décalages d'octets et les valeurs pour une courbe de 256 bits.
| Octet | Valeur | Description |
|---|---|---|
| 0 | 0x02 | Longueur |
| 1 | 0x01 | Valeur du type de données "Indicateurs" |
| 2 | 0x06 | Données sur les indicateurs |
| 3 | 0x24 ou 0x25 | Longueur |
| 4 | 0x16 | Valeur du type de données des données de service |
| 5 | 0xAA | UUID de service 16 bits |
| 6 | 0xFE | … |
| 7 | 0x40 ou 0x41 | Type de frame FHN avec indication du mode de protection contre le suivi indésirable |
| 8..39 | Identifiant éphémère de 32 octets | |
| 40 | Indicateurs hachés |
Tableau 16 : Frame FHN compatible avec une courbe de 256 bits.
Calcul de l'identifiant éphémère (EID)
Un nombre aléatoire est généré par le chiffrement AES-ECB-256 de la structure de données suivante avec la clé d'identité éphémère :
| Octet | Champ | Description |
|---|---|---|
| 0 - 10 | Marges intérieures | Valeur = 0xFF |
| 11 | K | Exposant de la période de rotation |
| 12 - 15 | TS[0]...TS[3] | Compteur de temps de la balise, au format big-endian 32 bits. Les K bits de poids faible sont effacés. |
| 16 - 26 | Marges intérieures | Valeur = 0x00 |
| 27 | K | Exposant de la période de rotation |
| 28 - 31 | TS[0]...TS[3] | Compteur de temps de la balise, au format big-endian 32 bits. Les bits les moins significatifs sont effacés. |
Tableau 17 : construction d'un nombre pseudo-aléatoire.
Le résultat de ce calcul est un nombre de 256 bits, noté r'.
Pour le reste du calcul, SECP160R1 ou SECP256R1 sont utilisés pour les opérations cryptographiques sur les courbes elliptiques. Consultez les définitions des courbes dans
SEC 2 : Paramètres de domaine de courbe elliptique recommandés, qui définit Fp, n et G référencés ci-après.
r' est désormais projeté dans le champ fini Fp en calculant r = r' mod n.
Enfin, calculez R = r * G, qui est un point sur la courbe représentant la clé publique utilisée. La balise diffuse Rx, qui correspond aux coordonnées x de R, comme identifiant éphémère.
Options hachées
Le champ des indicateurs hachés est calculé comme suit (les bits sont référencés du plus significatif au moins significatif) :
- Bits 0 à 4 : réservés (définis sur zéro).
- Les bits 5 et 6 indiquent le niveau de batterie de l'appareil comme suit :
- 00 : L'indication du niveau de la batterie n'est pas prise en charge
- 01 : Niveau de batterie normal
- 10 : Niveau de batterie faible
- 11 : Niveau de batterie extrêmement faible (remplacement de la batterie nécessaire prochainement)
- Le bit 7 est défini sur 1 si la balise est en mode Protection contre le suivi indésirable, et sur 0 dans le cas contraire.
Pour obtenir la valeur finale de cet octet, il est soumis à une opération XOR avec l'octet le moins significatif de SHA256(r).
Notez que r doit être aligné sur la taille de la courbe. Ajoutez des zéros comme bits les plus significatifs si sa représentation est inférieure à 160 ou 256 bits, ou tronquez les bits les plus significatifs si sa représentation est supérieure à 160 ou 256 bits.
Si la balise n'est pas compatible avec l'indication du niveau de batterie et n'est pas en mode de protection contre le suivi indésirable, elle est autorisée à omettre complètement ce byte de la publicité.
Chiffrement avec l'EID
Pour chiffrer un message m, un observateur (ayant lu Rx à partir de la balise) doit procéder comme suit :
- Choisissez un nombre aléatoire
sdansFp, comme défini dans la section Calcul de l'EID. - Compute
S = s * G. - Calculez
R = (Rx, Ry)en remplaçant les valeurs dans l'équation de la courbe et en choisissant une valeurRyarbitraire parmi les résultats possibles. - Calculez la clé AES 256 bits
k = HKDF-SHA256((s * R)x)où(s * R)xest la coordonnéexdu résultat de la multiplication de la courbe. Le sel n'est pas spécifié. - Soient
URxetLRxles 80 bits supérieurs et inférieurs deRx, respectivement, au format big-endian. De la même manière, définissezUSxetLSxpourS. - Compute
nonce = LRx || LSx. - Compute
(m’, tag) = AES-EAX-256-ENC(k, nonce, m). - Envoyez
(URx, Sx, m’, tag)au propriétaire, éventuellement via un service distant non approuvé.
Déchiffrement des valeurs chiffrées avec l'EID
Le client du propriétaire, qui possède l'EIK et l'exposant de la période de rotation, déchiffre le message comme suit :
- Étant donné
URx, obtenez la valeur du compteur de temps de balise sur laquelleURxest basé. Pour ce faire, le client du propriétaire peut calculer les valeursRxpour les valeurs de compteur de temps de balise pour le passé récent et l'avenir proche. - En fonction de la valeur du compteur de temps du beacon sur lequel
URxest basé, calculez la valeur attendue der, comme défini dans la section Calcul de l'EID. - Calculez
R = r * Get vérifiez qu'il correspond à la valeurURxfournie par l'observateur. - Calculez
S = (Sx, Sy)en remplaçant les valeurs dans l'équation de la courbe et en choisissant une valeurSyarbitraire parmi les résultats possibles. - Calculez
k = HKDF-SHA256((r * S)x)où(r * S)xest la coordonnéexdu résultat de la multiplication de la courbe. - Compute
nonce = LRx || LSx. - Compute
m = AES-EAX-256-DEC(k, nonce, m’, tag).
Rotation des ID
Une adresse BLE résolvable (RPA) ou non résolvable (NRPA) doit être utilisée pour diffuser des trames FHN. La RPA est obligatoire pour les appareils LE Audio (LEA) et recommandée pour les autres appareils, à l'exception des balises de localisation qui n'utilisent pas l'association.
La publicité Association express, la publicité FHN et les adresses BLE correspondantes doivent être alternées en même temps. La rotation doit avoir lieu en moyenne toutes les 1 024 secondes. Le point précis auquel la balise commence à diffuser le nouvel identifiant doit être aléatoire dans la fenêtre.
L'approche recommandée pour randomiser le temps de rotation consiste à le définir sur le prochain temps de rotation prévu (si aucune randomisation n'a été appliquée), plus un facteur de temps aléatoire positif compris entre 1 et 204 secondes.
Lorsque l'appareil est en mode de protection contre le suivi indésirable, l'adresse BLE de la publicité FHN doit être fixe, mais l'adresse privée aléatoire pour la publicité FP non détectable (telle que l'association express) doit continuer à changer. Il est acceptable d'utiliser des adresses différentes pour les différents protocoles.
Récupération après une perte de courant
La résolution de l'identifiant éphémère est fortement liée à sa valeur d'horloge au moment de la publicité. Il est donc important que le fournisseur puisse récupérer sa valeur d'horloge en cas de panne de courant. Il est recommandé que le fournisseur écrive sa valeur d'horloge actuelle dans la mémoire non volatile au moins une fois par jour, et qu'au moment du démarrage, le fournisseur vérifie la mémoire non volatile pour voir s'il existe une valeur à partir de laquelle initialiser. Les résolveurs de l'identifiant éphémère implémenteraient la résolution sur une période suffisante pour permettre à la fois une dérive d'horloge raisonnable et ce type de récupération en cas de perte d'alimentation.
Les fournisseurs doivent toujours faire tout leur possible pour minimiser les décalages d'horloge, car la période de résolution est limitée. Au moins une méthode de synchronisation d'horloge supplémentaire doit être implémentée (frames Fast Pair non détectables ou implémentation du flux de messages).
Consignes d'implémentation d'Association express
Cette section décrit les aspects spécifiques de l'implémentation Fast Pair sur les fournisseurs compatibles avec FHN.
Consignes spécifiques aux localisateurs
- Si le fournisseur a été associé, mais que FHN n'a pas été provisionné dans les cinq minutes (ou si une mise à jour OTA a été appliquée alors que l'appareil était associé, mais pas provisionné pour FHN), le fournisseur doit revenir à sa configuration d'usine et effacer les clés de compte stockées.
- Une fois le fournisseur associé, il ne doit pas modifier son adresse MAC tant que FHN n'est pas provisionné ou tant que cinq minutes ne se sont pas écoulées.
- Si la clé d'identité éphémère est effacée de l'appareil, celui-ci doit rétablir la configuration d'usine et effacer également les clés de compte stockées.
- Le fournisseur doit refuser les tentatives d'association Bluetooth normales et n'accepter que l'association Fast Pair.
- Le Fournisseur doit inclure un mécanisme permettant aux utilisateurs d'arrêter temporairement la publicité sans réinitialiser l'appareil (par exemple, en appuyant sur une combinaison de boutons).
- Après une coupure de courant, l'appareil doit diffuser des trames Association express non détectables jusqu'à la prochaine invocation de read beacon parameters (lire les paramètres de la balise). Cela permet au Seeker de détecter l'appareil et de synchroniser l'horloge, même en cas de décalage important.
- Lorsque vous faites la promotion de cadres Association express non détectables, les indications d'UI ne doivent pas être activées.
- Les frames Fast Pair détectables ne doivent pas être annoncés lorsque le fournisseur est provisionné pour FHN.
- Le fournisseur ne doit pas exposer d'informations d'identification de manière non authentifiée (par exemple, des noms ou des identifiants).
Consignes spécifiques aux appareils Bluetooth Classic
Cette section décrit les aspects spécifiques des appareils Bluetooth classiques compatibles avec FHN.
Provisionnement FHN des appareils déjà associés
Le fournisseur n'est pas toujours provisionné pour FHN lors de l'association avec le demandeur, mais un certain temps après. Dans ce cas, il est possible que le fournisseur ne dispose pas d'une adresse MAC BLE à jour, qui est requise pour établir une connexion GATT. Le fournisseur doit permettre au demandeur d'obtenir son adresse BLE d'au moins l'une des manières suivantes lorsqu'il est déjà associé :
- Le fournisseur peut diffuser périodiquement les données de compte Fast Pair qui permettent au demandeur de trouver son adresse BLE via un scan BLE.
Cette approche convient aux fournisseurs qui n'implémentent pas le flux de messages. - Le fournisseur peut fournir ces données via le flux de messages Association express sur Bluetooth classique.
Cette approche convient aux fournisseurs qui ne diffusent pas de frames Association express lorsqu'ils sont connectés au demandeur via Bluetooth.
La prise en charge des deux approches augmente les chances que l'utilisateur puisse provisionner l'appareil pour FHN.
Flux de messages Association express
Le fournisseur peut implémenter le flux de messages Association express et l'utiliser pour informer le demandeur des informations sur l'appareil. L'implémentation du flux de messages permet d'activer certaines fonctionnalités décrites dans cette section.
Le fournisseur doit envoyer des messages d'informations sur l'appareil chaque fois que le canal RFCOMM du flux de messages est établi.
Version du micrologiciel (code d'informations sur l'appareil 0x09) et capacité de suivi
Lorsqu'une mise à jour du micrologiciel ajoute la prise en charge de FHN au fournisseur, un Seeker connecté peut en informer l'utilisateur et lui proposer de le provisionner. Sinon, l'utilisateur doit accéder manuellement à la liste des appareils Bluetooth pour lancer le provisionnement FHN.
Pour ce faire, le fournisseur doit utiliser la propriété "Version du micrologiciel" (code 0x09) pour signaler une valeur de chaîne représentant la version du micrologiciel. De plus, le fournisseur doit prendre en charge le protocole qui informe le demandeur des modifications des fonctionnalités en raison des mises à jour du micrologiciel.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | Événement d'informations sur l'appareil | 0x03 |
| 1 | uint8 | Version du micrologiciel | 0x09 |
| 2 - 3 | uint16 | Longueur de données supplémentaires | Variable |
| var | tableau d'octets | Chaîne de version | Variable |
Tableau 18 : événement d'informations sur l'appareil : version du micrologiciel mise à jour.
Lorsqu'il reçoit une demande de mise à jour des fonctionnalités (0x0601), si le fournisseur a activé la prise en charge du suivi FHN, il doit répondre comme indiqué dans le tableau 12.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | Événement de synchronisation des fonctionnalités de l'appareil | 0x06 |
| 1 | uint8 | Suivi FHN | 0x03 |
| 2 - 3 | uint16 | Longueur de données supplémentaires | 0x0007 |
| 4 | uint8 | État du provisionnement FHN | 0x00 si non provisionné ; 0x01 si provisionné par un compte |
| 5 - 10 | tableau d'octets | Adresse MAC BLE actuelle de l'appareil | Variable |
Tableau 19 : Événement de synchronisation de la capacité de l'appareil : capacité de suivi ajoutée.
Identifiant éphémère actuel (code d'informations sur l'appareil 0x0B)
Le fournisseur peut utiliser l'identifiant éphémère actuel (code 0x0B) pour signaler la valeur actuelle de l'EID et de l'horloge lorsque le fournisseur est provisionné pour FHN, afin de synchroniser le demandeur en cas de décalage de l'horloge (par exemple, en raison d'une batterie déchargée). Sinon, le Seeker initie une connexion plus coûteuse et moins fiable à cette fin.
| Octet | Type de données | Description | Valeur |
|---|---|---|---|
| 0 | uint8 | Événement d'informations sur l'appareil | 0x03 |
| 1 | uint8 | Identifiant éphémère actuel | 0x0B |
| 2 - 3 | uint16 | Longueur de données supplémentaires | 0x0018 ou 0x0024 |
| 4 - 7 | tableau d'octets | Valeur de l'horloge | Exemple : 0x13F9EA80 |
| 8 à 19 ou 31 | tableau d'octets | EID actuel | Exemple : 0x1122334455667788990011223344556677889900 |
Tableau 20 : événement d'informations sur l'appareil : synchronisation de l'horloge.
Rétablir la configuration d'usine
Pour les appareils compatibles avec le rétablissement de la configuration d'usine : si cette opération est effectuée, le fournisseur doit arrêter la diffusion de signaux et effacer la clé d'identité éphémère ainsi que toutes les clés de compte stockées, y compris la clé de compte du propriétaire.
Après une réinitialisation des paramètres d'usine (manuelle ou programmatique), le fournisseur ne doit pas commencer à diffuser Fast Pair immédiatement, afin d'empêcher le processus d'association de démarrer immédiatement après la suppression de l'appareil par l'utilisateur.
Prévention du suivi indésirable
Les appareils FHN certifiés doivent également répondre aux exigences de la version d'implémentation de la spécification multiplate-forme pour la détection des traceurs de localisation indésirables (DULT).
Consignes spécifiques à FHN à respecter pour être conforme aux spécifications DULT :
- Tout appareil compatible avec FHN doit être enregistré dans la console Appareils à proximité et la fonctionnalité "Localiser le hub" doit être activée.
- L'appareil doit implémenter le service et la caractéristique "Accessory Non-Owner" définis dans la version d'implémentation de la spécification DULT, y compris les opérations Accessory Information et Non-owner controls.
- Pendant la période de rétrocompatibilité, telle que définie dans la spécification DULT, le frame annoncé tel que défini dans le présent document ne change pas.
- Le "mode de protection contre le suivi indésirable" défini dans ce document correspond à l'"état séparé" défini par la spécification DULT.
- Consignes pour implémenter les codes d'opération Accessory Information :
- Get_Product_Data doit renvoyer l'ID de modèle fourni par la console, complété par des zéros pour répondre à l'exigence de 8 octets. Par exemple, l'ID de modèle 0xFFFFFF est renvoyé sous la forme 0x0000000000FFFFFF.
- Get_Manufacturer_Name et Get_Model_Name doivent correspondre aux valeurs fournies dans la console.
- Get_Accessory_Category peut renvoyer la valeur générique "Localisateur" si aucune autre catégorie ne correspond mieux au type d'appareil.
- Get_Accessory_Capabilities doit indiquer la prise en charge de la sonnerie et de la recherche d'identifiant BLE.
- Get_Network_ID doit renvoyer l'identifiant de Google (0x02).
- Consignes pour implémenter le code d'opération Get_Identifier :
- L'opération ne doit renvoyer une réponse valide que pendant cinq minutes après que l'utilisateur a activé le mode "identification", qui nécessite une combinaison de pressions sur les boutons. Un signal visuel ou audio doit indiquer à l'utilisateur que le fournisseur est passé dans ce mode. Les instructions spécifiques au modèle pour activer ce mode doivent être fournies à Google comme condition de certification et au moins 10 jours avant toute mise à jour ou modification des instructions.
- La réponse est construite comme suit : les 10 premiers octets de l'identifiant éphémère actuel, suivis des 8 premiers octets de
HMAC-SHA256(recovery key, the truncated current ephemeral identifier).
- Consignes pour implémenter l'identifiant via NFC :
- Utilisez
find-my.googleapis.com/lookupcomme URL. - En tant que paramètre
e, utilisez la même réponse que celle construite pour Get_Identifier, encodée en hexadécimal. - Pour le paramètre
pid, utilisez la même réponse que celle construite pour Get_Product_Data, encodée en hexadécimal.
- Utilisez
- L'appareil doit obligatoirement inclure un dispositif sonore et prendre en charge la fonction de sonnerie. Conformément aux spécifications DULT, le dispositif sonore doit émettre un son d'une intensité maximale d'au moins 60 phons, comme défini dans la norme ISO 532-1:2017.
- Consignes pour implémenter l'opcode Sound_Start :
- La commande doit déclencher une sonnerie sur tous les composants disponibles.
- Le volume maximal pris en charge doit être utilisé.
- La durée de sonnerie recommandée est de 12 secondes.
- Les balises de localisation doivent inclure un mécanisme permettant aux utilisateurs d'arrêter temporairement la publicité sans réinitialiser l'appareil (par exemple, en appuyant sur une combinaison de boutons).
- Les instructions de désactivation doivent être documentées dans une URL accessible au public et fournies à Google comme condition de certification, au moins 10 jours avant toute mise à jour ou modification des instructions.
- L'URL doit être compatible avec la localisation. Selon le client, la langue sera fournie sous forme de paramètre de requête ("hl=en") ou à l'aide de l'en-tête HTTP "accept-language".
Consignes concernant les protocoles interchangeables
- Un seul protocole doit être utilisé à la fois. Assurez-vous qu'un seul réseau peut fonctionner sur l'appareil à la fois. Cette exigence est nécessaire pour s'assurer qu'il n'y a pas de mélange de données utilisateur sensibles entre différents protocoles.
- Il est suggéré d'intégrer une procédure de réinitialisation matérielle à l'appareil, qui permet à un utilisateur de le reconfigurer avec un autre réseau.
- La procédure de mise à jour d'un appareil vers un réseau doit être conviviale et équitable entre les réseaux. Un utilisateur doit pouvoir choisir le réseau qu'il souhaite utiliser sans privilégier l'un des réseaux. Ce flux doit être approuvé par l'équipe Google.
Mises à jour du micrologiciel
Le partenaire doit gérer le processus et la distribution des mises à jour OTA à l'aide de son propre workflow d'application mobile ou Web.
L'Association express permet d'envoyer des notifications à l'utilisateur pour l'informer des mises à jour OTA disponibles. Pour utiliser ce mécanisme :
- La dernière version du micrologiciel doit être mise à jour dans la console Nearby Devices.
- Une application associée doit être définie dans la console Appareils à proximité. Il doit être compatible avec l'intention de mise à jour du micrologiciel.
- Le fournisseur doit implémenter la caractéristique GATT Firmware revision (Révision du micrologiciel).
Pour empêcher le suivi, l'accès à la caractéristique Révision du micrologiciel doit être limité. Seeker lira d'abord l'état de provisionnement et fournira une clé d'authentification, comme défini dans cette spécification, puis lira la révision du micrologiciel. Cette opération sera effectuée via la même connexion. Si une tentative de lecture de la révision du micrologiciel est effectuée et que le fournisseur n'est pas associé ou qu'aucune opération authentifiée n'a été effectuée avec succès sur cette même connexion, le fournisseur doit renvoyer une erreur d'authentification.
Compatibilité
Le réseau Localiser nécessite l'activation des services de localisation et de la connexion Bluetooth. Nécessite une connexion au réseau mobile ou à Internet. Fonctionne sous Android 9 ou version ultérieure, dans certains pays et pour les utilisateurs à partir d'un certain âge.
Journal des modifications
| Version FHN | Date | Commentaire |
|---|---|---|
| v1 | Version initiale de la spécification FHN pour l'accès anticipé. | |
| v1.1 | février 2023 |
|
| v1.2 | Avr. 2023 |
|
| v1.3 | Déc. 2023 |
|