v1.3
La specifica dell'accessorio della rete Find Hub (FHN) definisce un approccio crittografato end-to-end per il monitoraggio dei dispositivi Bluetooth Low Energy (BLE) che trasmettono segnali. Questa pagina descrive FHN come estensione della specifica Accoppiamento rapido. I fornitori devono attivare questa estensione se dispongono di dispositivi compatibili con FHN e sono disposti ad attivare il monitoraggio della posizione per questi dispositivi.
Specifica GATT
Al servizio Accoppiamento rapido deve essere aggiunta un'ulteriore caratteristica degli attributi generici (GATT) con la seguente semantica:
| Caratteristica del servizio di accoppiamento rapido | Criptato | Autorizzazioni | UUID |
|---|---|---|---|
| Azioni beacon | No | Lettura, scrittura e notifica | FE2C1238-8366-4814-8EB0-01DE32100BEA |
Tabella 1: caratteristiche del servizio di accoppiamento rapido per FHN.
Autenticazione
Le operazioni richieste da questa estensione vengono eseguite come operazione di scrittura, protetta da un meccanismo di richiesta-risposta. Prima di eseguire qualsiasi operazione, il richiedente deve eseguire un'operazione di lettura dalla caratteristica nella tabella 1, che genera un buffer nel seguente formato:
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Numero di versione principale del protocollo | 0x01 |
| 1 - 8 | array di byte | Nonce casuale una tantum | varia |
Ogni operazione di lettura deve generare un nonce diverso e un singolo nonce deve essere valido solo per una singola operazione. Il nonce deve essere invalidato anche se l'operazione non è riuscita.
Il richiedente calcola quindi una chiave di autenticazione monouso da utilizzare in una successiva richiesta di scrittura. La chiave di autenticazione viene calcolata come descritto nelle tabelle da 2 a 5. A seconda dell'operazione richiesta, il richiedente dimostra di conoscere una o più delle seguenti chiavi:
Chiave account: la chiave account di accoppiamento rapido di 16 byte, come definita nella specifica di accoppiamento rapido.
Chiave dell'account proprietario: il fornitore sceglie una delle chiavi dell'account esistenti come chiave dell'account proprietario la prima volta che un richiedente accede alla caratteristica Azioni beacon. La chiave dell'account proprietario scelta non può essere modificata finché il fornitore non viene ripristinato ai dati di fabbrica. Il fornitore non deve rimuovere la chiave dell'account proprietario quando esaurisce gli slot senza costi per le chiavi dell'account.
I fornitori che supportano già FHN quando vengono accoppiati per la prima volta (o lo supportano quando vengono accoppiati dopo il ripristino dei dati di fabbrica) scelgono la prima chiave dell'account, perché è l'unica chiave dell'account esistente quando il richiedente legge lo stato di provisioning durante l'accoppiamento.
I fornitori che ottengono il supporto FHN dopo l'accoppiamento (ad esempio, tramite un aggiornamento firmware) possono scegliere qualsiasi chiave dell'account esistente. È ragionevole scegliere la prima chiave dell'account utilizzata per leggere lo stato di provisioning dalla caratteristica delle azioni del beacon dopo l'aggiornamento firmware, supponendo che l'utente che ha eseguito l'aggiornamento sia l'attuale proprietario del fornitore.
Chiave di identità effimera (EIK): una chiave di 32 byte scelta in modo casuale dal richiedente durante l'esecuzione della procedura di provisioning FHN. Questa chiave viene utilizzata per derivare le chiavi crittografiche utilizzate per la crittografia end-to-end dei report sulla posizione. Il richiedente non lo rivela mai al backend.
Chiave di recupero: definita come
SHA256(ephemeral identity key || 0x01), troncata ai primi 8 byte. La chiave viene memorizzata nel backend e il Cercatore può utilizzarla per recuperare la EIK, a condizione che l'utente esprima il proprio consenso premendo un pulsante sul dispositivo.Chiave squillo: definita come
SHA256(ephemeral identity key || 0x02), troncata ai primi 8 byte. La chiave viene memorizzata nel backend e il richiedente può utilizzarla solo per far squillare il dispositivo.Chiave di protezione dal tracciamento indesiderato: definita come
SHA256(ephemeral identity key || 0x03), troncata ai primi 8 byte. La chiave viene memorizzata nel backend e il Cercatore può utilizzarla solo per attivare la modalità di protezione dal tracciamento indesiderato.
Operazioni
Il formato dei dati scritti nella caratteristica è riportato nelle tabelle da 2 a 5. Ciascuna operazione viene descritta in modo più dettagliato più avanti in questa sezione.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati |
|
| 1 | uint8 | Lunghezza dati | varia |
| 2 - 9 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di
HMAC-SHA256(account key, protocol major version number || the last nonce
read from the characteristic || data ID || data length || additional data) |
| 10 - var | array di byte <0 | Dati aggiuntivi |
|
Tabella 2: richiesta di provisioning dei beacon.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati | 0x04: Read ephemeral identity key with user consent |
| 1 | uint8 | Lunghezza dati | 0x08 |
| 2 - 9 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di
HMAC-SHA256(recovery key, protocol major version number || the last nonce
read from the characteristic || data ID || data length) |
Tabella 3: richiesta di recupero della chiave di provisioning del beacon.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati |
|
| 1 | uint8 | Lunghezza dati | varia |
| 2 - 9 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di
HMAC-SHA256(ring key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data) |
| 10 - var | array di byte | Dati aggiuntivi |
|
Tabella 4: richiesta di squillo.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati |
|
| 1 | uint8 | Lunghezza dati | varia |
| 2 - 9 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di
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 | array di byte | Dati aggiuntivi |
|
Tabella 5: richiesta di protezione dal tracciamento indesiderato.
Le scritture riuscite attivano le notifiche elencate nella tabella 6.
Le notifiche con ID dati diverso da 0x05: Modifica stato suoneria devono essere inviate prima del completamento della transazione di scrittura che attiva la notifica, ovvero prima dell'invio di un PDU di risposta per la richiesta di scrittura.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati <0x |
|
| 1 | uint8 | Lunghezza dati | varia |
| 2 - 9 | array di byte | Autenticazione | Dettagliato per operazione |
| 10 - var < | array di byte <0 | Dati aggiuntivi |
|
Tabella 6: risposta del servizio di beacon.
La tabella 7 elenca i possibili codici di errore GATT restituiti dalle operazioni.
| Codice | Descrizione | Note |
|---|---|---|
| 0x80 | Non autenticato | Restituito in risposta a una richiesta di scrittura quando l'autenticazione non va a buon fine (incluso il caso in cui è stato utilizzato un nonce precedente). |
| 0x81 | Valore non valido | Restituito quando viene fornito un valore non valido o i dati ricevuti hanno un numero imprevisto di byte. |
| 0x82 | Nessun consenso dell'utente | Restituito in risposta a una richiesta di scrittura con ID dati 0x04: Read ephemeral identity key with user consent quando il dispositivo non è in modalità di accoppiamento. |
Tabella 7: codici di errore GATT.
Leggi il parametro del beacon
Il richiedente può interrogare il fornitore per i parametri del beacon eseguendo un'operazione di scrittura sulla caratteristica costituita da una richiesta della tabella 2 con ID dati 0x00. Il provider verifica che la chiave di autenticazione monouso fornita corrisponda a una delle chiavi dell'account memorizzate sul dispositivo.
Se la verifica non va a buon fine, il provider restituisce un errore di autenticazione.
In caso di esito positivo, il fornitore invia una notifica con una risposta della tabella 6 con ID dati 0x00. Il fornitore crea il segmento di dati nel seguente modo:
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Potenza calibrata | La potenza calibrata ricevuta a 0 m (un valore nell'intervallo [-100, 20]). Rappresentato come numero intero con segno, con una risoluzione di 1 dBm. |
| 1-4 | uint32 | Valore orologio | Il valore attuale dell'orologio in secondi (big endian). |
| 5 | uint8 | Selezione della curva | La curva ellittica utilizzata per la crittografia:
|
| 6 | uint8 | Componenti | Il numero di componenti in grado di suonare:
|
| 7 | uint8 | Funzionalità di chiamata | Le opzioni supportate sono:
|
| 8-15 | array di byte | Spaziatura interna | Riempimento con zeri per la crittografia AES. |
I dati devono essere criptati con AES-ECB-128 con la chiave dell'account utilizzata per autenticare la richiesta.
Il segmento di autenticazione è definito come i primi 8 byte di
HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data after
encryption || 0x01).
Leggere lo stato di provisioning del beacon
Il richiedente può eseguire query sul fornitore per lo stato di provisioning del beacon eseguendo un'operazione di scrittura sulla caratteristica costituita da una richiesta della tabella 2 con ID dati 0x01. Il fornitore verifica che la chiave di autenticazione monouso fornita corrisponda a una delle chiavi dell'account memorizzate sul dispositivo.
Se la verifica non va a buon fine, il provider restituisce un errore di autenticazione.
In caso di esito positivo, il fornitore invia una notifica con una risposta della tabella 6 con ID dati 0x01. Il fornitore crea il segmento di dati nel seguente modo:
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Stato di provisioning | Una maschera di bit con i seguenti valori:
|
| 1-20 o 32 | array di byte | Identificatore effimero attuale | 20 o 32 byte (a seconda del metodo di crittografia utilizzato) che indicano l'ID effimero corrente pubblicizzato dal beacon, se ne è impostato uno per il dispositivo. |
Il segmento di autenticazione è definito come i primi 8 byte di
HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data || 0x01).
Impostare una chiave di identità effimera
Per eseguire il provisioning di un provider non sottoposto a provisioning come beacon FHN o modificare la chiave di identità effimera di un provider di cui è già stato eseguito il provisioning, il richiedente esegue un'operazione di scrittura sulla caratteristica costituita da una richiesta della tabella 2 con ID dati 0x02. Il provider verifica che:
- La chiave di autenticazione una tantum fornita corrisponde alla chiave dell'account proprietario.
- Se è stato fornito un hash di una chiave di identità effimera, l'hash della chiave di identità effimera corrisponde alla chiave di identità effimera attuale.
- Se non è stato fornito un hash di una chiave di identità effimera, verifica che il provider non sia già stato sottoposto a provisioning come beacon FHN.
Se la verifica non va a buon fine, il provider restituisce un errore di autenticazione.
In caso di esito positivo, la chiave di identità effimera viene recuperata tramite decriptaggio AES-ECB-128 utilizzando la chiave dell'account corrispondente. La chiave deve essere resa persistente sul dispositivo e da quel momento in poi il fornitore deve iniziare a pubblicizzare i frame FHN. La nuova chiave di identità effimera ha effetto immediatamente dopo la chiusura della connessione Bluetooth Low Energy. Il fornitore invia una notifica con una risposta della tabella 6 con ID dati 0x02.
Il segmento di autenticazione è definito come i primi 8 byte di
HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || 0x01).
Cancella la chiave di identità effimera
Per eseguire il deprovisioning della parte del beacon del fornitore, il richiedente esegue un'operazione di scrittura sulla caratteristica, costituita da una richiesta della tabella 2 con ID dati 0x03. Il fornitore verifica che:
- La chiave di autenticazione una tantum fornita corrisponde alla chiave dell'account proprietario.
- La chiave di identità effimera con hash corrisponde alla chiave di identità effimera attuale.
Se il fornitore non è stato sottoposto al provisioning come beacon FHN o la verifica non va a buon fine, viene restituito un errore di autenticazione.
In caso di esito positivo, il provider dimentica la chiave e interrompe la pubblicità dei frame FHN.
Il fornitore invia una notifica con una risposta dalla tabella 6 con l'ID dati 0x03.
Il segmento di autenticazione è definito come i primi 8 byte di
HMAC-SHA256(account key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || 0x01).
Leggere la chiave di identità effimera con il consenso dell'utente
Questa opzione è disponibile solo per recuperare una chiave smarrita, in quanto la chiave viene memorizzata solo localmente da Seeker. Pertanto, questa funzionalità è disponibile solo quando il dispositivo è in modalità di accoppiamento o per un periodo di tempo limitato dopo la pressione di un pulsante fisico sul dispositivo (che costituisce il consenso dell'utente).
Il richiedente deve archiviare la chiave di recupero nel backend per poter recuperare la chiave in testo non crittografato, ma non archivia l'EIK stesso.
Per leggere l'EIK, il richiedente esegue un'operazione di scrittura sulla caratteristica, che consiste in una richiesta dalla tabella 3 con ID dati 0x04. Il Fornitore verifica che:
- La chiave di recupero sottoposta ad hashing corrisponde alla chiave di recupero prevista.
- Il dispositivo è in modalità di recupero EIK.
Se la verifica non va a buon fine, il provider restituisce un errore di autenticazione.
Se il dispositivo non è in modalità di accoppiamento, il fornitore restituisce un errore No User Consent.
In caso di esito positivo, il fornitore invia una notifica con una risposta della tabella 6 con ID dati 0x04.
Il segmento di autenticazione è definito come i primi 8 byte di
HMAC-SHA256(recovery key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data || 0x01).
Funzionamento di suoneria
Il richiedente può chiedere al fornitore di riprodurre un suono eseguendo un'operazione di scrittura sulla caratteristica, costituita da una richiesta della tabella 4 con ID dati 0x05. Il fornitore crea il segmento di dati nel seguente modo:
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Operazione di squillo <0x0A | Una maschera di bit con i seguenti valori:
|
| 1 - 2 | uint16 | Timeout | Il timeout in decimi di secondo. Non deve essere zero e non deve
essere superiore all'equivalente di 10 minuti. Il fornitore utilizza questo valore per determinare per quanto tempo deve squillare prima di silenziare la chiamata. Il timeout sostituisce quello già in vigore se un componente del dispositivo sta già squillando. Se l'operazione di squillo è impostata su 0x00, il timeout viene ignorato. |
| 3 | uint8 | Volume |
|
Al ricevimento della richiesta, il Fornitore verifica che:
- La chiave di autenticazione una tantum fornita corrisponde alla chiave dell'anello.
- Lo stato richiesto corrisponde ai componenti che possono squillare.
Se il fornitore non è stato sottoposto al provisioning come beacon FHN o la verifica non va a buon fine, viene restituito un errore non autenticato. Tuttavia, se il fornitore ha la protezione dal monitoraggio indesiderato attiva e la richiesta di attivazione della protezione dal monitoraggio indesiderato aveva il flag di autenticazione di salto della suoneria attivato, il fornitore deve saltare il controllo. I dati di autenticazione devono comunque essere forniti dal richiedente, ma possono essere impostati su un valore arbitrario.
Quando la suoneria inizia o termina, viene inviata una notifica come indicato nella tabella 6 con ID dati 0x05. I contenuti della notifica sono definiti come segue:
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Stato di squillo |
|
| 1 | uint8 | Componenti di suoneria | Una maschera di bit dei componenti che squillano attivamente, come definito nella richiesta. |
| 2 - 3 | uint16 | Timeout | Il tempo rimanente per lo squillo in decimi di secondo. Se il dispositivo ha smesso di squillare, deve essere restituito 0x0000. |
Il segmento di autenticazione è definito come i primi 8 byte di
HMAC-SHA256(ring key, protocol major version number || the nonce used to
initiate the ringing command || data ID || data length || additional data ||
0x01).
Se il dispositivo è già nello stato di suoneria richiesto quando viene ricevuta una richiesta di suoneria o di interruzione della suoneria, il fornitore deve inviare una notifica con uno stato di suoneria o 0x00: Started o 0x04: Stopped (richiesta GATT), rispettivamente. Questa richiesta esegue l'override dei parametri dello stato esistente, in modo che la durata della suoneria possa essere estesa.
Se il fornitore ha un pulsante fisico (o il rilevamento del tocco è attivato), questo pulsante deve interrompere la funzione di squillo se viene premuto mentre lo squillo è attivo.
Ottenere lo stato di squillo del beacon
Per ottenere lo stato di suoneria del beacon, il cercatore esegue un'operazione di scrittura nella caratteristica, costituita da una richiesta della tabella 4 con ID dati 0x06. Il fornitore verifica che la chiave di autenticazione monouso fornita corrisponda alla chiave di suoneria.
Se il fornitore non è stato sottoposto al provisioning come beacon FHN o se la verifica non riesce, il fornitore restituisce un errore di autenticazione non riuscita.
In caso di esito positivo, il fornitore invia una notifica con una risposta della tabella 6 con ID dati 0x06. Il fornitore crea il segmento di dati nel seguente modo:
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Componenti di suoneria | I componenti che squillano attivamente, come definito nella richiesta di squillo. |
| 1 - 2 | uint16 | Timeout | Il tempo rimanente per lo squillo in decimi di secondo. Tieni presente che se il dispositivo non squilla, deve essere restituito 0x0000. |
Il segmento di autenticazione è definito come i primi 8 byte di
HMAC-SHA256 (ring key, protocol major version number || the last nonce read
from the characteristic || data ID || data length || additional data || 0x01).
Modalità di protezione dal monitoraggio indesiderato
La modalità di protezione dal tracciamento indesiderato è pensata per consentire a qualsiasi client di identificare i dispositivi abusivi senza comunicazione con il server. Per impostazione predefinita, il fornitore deve ruotare tutti gli identificatori come descritto in Rotazione degli ID. Il servizio Find Hub può inoltrare una richiesta di attivazione della modalità di protezione dal monitoraggio indesiderato tramite la rete Find Hub. In questo modo, il servizio fa sì che il fornitore utilizzi temporaneamente un indirizzo MAC fisso, consentendo ai client di rilevare il dispositivo e avvisare l'utente di un possibile tracciamento indesiderato.
Per attivare o disattivare la modalità di protezione dal monitoraggio indesiderato del beacon, il dispositivo di ricerca esegue un'operazione di scrittura sulla caratteristica, costituita da una richiesta della tabella 5 con ID dati 0x07 o 0x08 rispettivamente.
Quando si attiva la modalità di protezione dal tracciamento indesiderato
Il fornitore crea il segmento di dati nel seguente modo:
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Flag di controllo <0 |
I flag sono attivi solo fino alla disattivazione della modalità di protezione dal monitoraggio indesiderato. |
Il fornitore verifica che la chiave di autenticazione monouso fornita corrisponda alla chiave di protezione dal monitoraggio indesiderato. Se il fornitore non è sottoposto a provisioning come beacon FHN o la verifica non va a buon fine, viene restituito un errore di autenticazione.
Quando viene attivata la modalità di protezione dal monitoraggio indesiderato, il beacon deve ridurre la frequenza di rotazione dell'indirizzo privato MAC a una volta ogni 24 ore. L'identificatore effimero pubblicizzato deve continuare a ruotare come di consueto. Il tipo di frame deve essere impostato su 0x41. Lo stato viene visualizzato anche nella sezione flag con hash.
Quando disattivi la modalità di protezione dal tracciamento indesiderato
Il fornitore verifica che:
- La chiave di autenticazione monouso fornita corrisponde alla chiave di protezione dal tracciamento indesiderato.
- La chiave di identità effimera con hash corrisponde alla chiave di identità effimera attuale.
Se il fornitore non è stato sottoposto al provisioning come beacon FHN o la verifica non va a buon fine, il fornitore restituisce un errore di autenticazione non riuscita.
Quando la modalità di protezione dal monitoraggio indesiderato viene disattivata, il beacon dovrebbe iniziare di nuovo a ruotare l'indirizzo MAC a una velocità normale, sincronizzata con la rotazione dell'identificatore effimero. Il tipo di frame deve essere reimpostato su 0x40. Lo stato viene visualizzato anche nella sezione Flag con hash.
In caso di esito positivo, il fornitore invia una notifica con una risposta dalla tabella 6 con ID dati 0x07 o 0x08.
Il segmento di autenticazione è definito come i primi 8 byte di
HMAC-SHA256(unwanted tracking protection key, protocol major version number ||
the last nonce read from the characteristic || data ID || data length ||
0x01).
Ricerca di precisione
Questa sezione descrive in dettaglio il flusso e le operazioni aggiuntive necessarie per una ricerca di precisione. Qui si applicano le stesse regole per la caratteristica GATT e l'autenticazione definite nella sezione delle specifiche GATT. La ricerca di precisione è facoltativa.
Il tipo di ricerca di precisione dipende dal tipo di tecnologie di misurazione supportate sui dispositivi coinvolti nella ricerca di precisione. Le tecnologie di misurazione supportate sono disponibili nella specifica Misurazione: sequenza di messaggi e payload out-of-band. Le sezioni successive esplorano il tipo di esperienza di ricerca di precisione che ci si può aspettare in base alla tecnologia di misurazione utilizzata.
Flusso di ricerca di precisione
Questa sezione illustra il flusso di messaggi FHNA per la ricerca di precisione. La figura 1 mostra il flusso dei messaggi e i paragrafi spiegano ogni messaggio in modo più dettagliato.

Fig. 1 Flusso tipico dei messaggi di Ricerca di precisione
Il dispositivo iniziatore è quello su cui è installata l'app Find Hub e da cui è stata attivata la funzionalità Trova con precisione. L'iniziatore è il dispositivo che sta cercando l'altro dispositivo.
Il dispositivo Risponditore è il dispositivo che il dispositivo Iniziatore sta cercando di trovare.
Il dispositivo Initiator invia un messaggio di richiesta di funzionalità di misurazione della distanza al dispositivo Responder, in cui elenca le tecnologie di misurazione della distanza di cui è interessato a conoscere dal dispositivo Responder. Il dispositivo Responder risponde con la notifica di risposta alla richiesta di funzionalità di misurazione della distanza, contenente informazioni su quali tecnologie di misurazione della distanza sono supportate e quali sono le loro funzionalità. Il dispositivo Responder include solo le informazioni richieste dal dispositivo Initiator. L'elenco delle funzionalità viene ordinato in base alla priorità della tecnologia di misurazione della distanza preferita dal dispositivo Responder, con la prima della lista che ha la priorità più alta.
Il dispositivo iniziatore invierà quindi un messaggio di configurazione della misurazione della distanza, in cui definirà la configurazione per ogni tecnologia di misurazione della distanza che vuole utilizzare. Dopo aver ricevuto questo messaggio, il dispositivo Responder deve iniziare a misurare la distanza per le tecnologie applicabili utilizzando le configurazioni fornite. Il dispositivo risponditore invierà una notifica di risposta di configurazione del ranging, che contiene i risultati relativi all'avvio corretto di ogni singola tecnologia di ranging. Alcune tecnologie di misurazione della distanza devono essere avviate sia sul dispositivo Initiator che su quello Responder per avere una sessione di misurazione della distanza riuscita, mentre per altre è necessario solo che vengano avviate sul dispositivo Initiator. Tuttavia, il dispositivo Responder deve rispondere con un risultato positivo per queste tecnologie. Maggiori informazioni sul comportamento di una tecnologia di misurazione specifica sono disponibili nelle sezioni successive.
Quando il dispositivo Iniziatore è pronto per interrompere la sessione di ricerca di precisione, invia un messaggio di interruzione della misurazione al dispositivo Risponditore, indicando quali tecnologie di misurazione devono interrompere la misurazione. Il dispositivo Responder risponderà con una notifica di interruzione della misurazione, indicando che ha interrotto correttamente la misurazione con le tecnologie di misurazione richieste.
Nel caso in cui il canale di comunicazione FHNA BLE GATT si disconnetta a metà della sessione di ricerca di precisione, ma mentre alcune delle tecnologie di misurazione della distanza sono ancora in funzione, il dispositivo di risposta implementerà un meccanismo di timeout per garantire che la misurazione della distanza non avvenga all'infinito. I dettagli dipenderanno da ogni caso d'uso.
Tieni presente che il dispositivo di risposta non deve presupporre che l'ordine delle operazioni sia sempre lo stesso. Ad esempio, il dispositivo di risposta deve essere in grado di gestire più operazioni di richiesta di funzionalità di misurazione di distanza di seguito o anche un'operazione di configurazione della misurazione di distanza diretta senza la richiesta di funzionalità precedente.
Operazioni di Posizione precisa
La tabella 8 mostra le operazioni FHNA definite in questo documento necessarie per la ricerca di precisione. Ogni sottosezione definisce il messaggio FHNA per ciascuna delle operazioni, mentre i contenuti del campo Dati aggiuntivi fanno riferimento alla specifica Ranging: sequenza di messaggi fuori banda e payload.
| Operazione | ID dati | Descrizione |
|---|---|---|
| Richiesta di funzionalità di misurazione | 0x0A | L'operazione di richiesta di funzionalità che verrà inviata dal dispositivo iniziatore al dispositivo risponditore. I contenuti dei dati di questa operazione elencheranno tutte le tecnologie di misurazione della distanza di cui l'iniziatore vuole conoscere dal dispositivo risponditore. |
| Ranging Capability Response | 0x0A | Questa è la risposta di notifica all'operazione di richiesta di funzionalità di misurazione. Contiene informazioni sulle funzionalità per ogni tecnologia di misurazione supportata richieste dall'iniziatore. |
| Configurazione del rilevamento della distanza | 0x0B | L'operazione di configurazione del ranging contiene le configurazioni per le tecnologie di ranging con cui il dispositivo Initiator vuole iniziare il ranging con il dispositivo Responder. |
| Risposta di configurazione del ranging | 0x0B | Si tratta della risposta di notifica all'operazione di configurazione del rilevamento della distanza. Contiene dati che indicano se il dispositivo Responder ha avviato correttamente il rilevamento della distanza con le tecnologie di rilevamento della distanza richieste in base alla configurazione fornita. |
| RFU | 0x0C | L'operazione con questo ID dati non viene utilizzata ed è riservata per utilizzi futuri. |
| Stop Ranging | 0x0D | L'operazione Stop Ranging inviata dal dispositivo Initiator contiene informazioni sulle tecnologie di ranging con cui il dispositivo Responder deve interrompere il ranging. |
| Stop Ranging Response | 0x0D | Questa è la risposta di notifica all'operazione di interruzione del rilevamento. Contiene dati che indicano se l'operazione di arresto per una tecnologia di misurazione specifica è andata a buon fine o meno. |
Tabella 8: operazioni di ricerca di precisione.
Operazione di richiesta di funzionalità di misurazione della distanza
La tabella 9 definisce il messaggio di richiesta della funzionalità di misurazione della distanza.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati | 0x0A - Ranging Capability Request operation |
| 1 | uint8 | Lunghezza dati | varia |
| 2 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di HMAC-SHA256(chiave account, numero di versione principale del protocollo || ultimo nonce letto dalla caratteristica || ID dati || Lunghezza dati || Dati aggiuntivi). |
| 10 | array di byte | Dati aggiuntivi | Messaggio Ranging Capability Request come definito nella specifica Ranging: Out-of-band message sequence and payload (intestazione e payload) |
Tabella 9: richiesta di funzionalità di misurazione della distanza.
Operazione di risposta della funzionalità di misurazione della distanza
La tabella 10 definisce il messaggio di risposta della funzionalità di misurazione della distanza.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati | 0x0A: Ranging Capability Response |
| 1 | uint8 | Lunghezza dati | varia |
| 2 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di HMAC-SHA256(Account Key, numero di versione principale del protocollo || the last nonce read from the characteristic || Data ID || Data length || Additional Data || 0x01). |
| 10 | array di byte | Dati aggiuntivi | Messaggio Ranging Capability Response come definito nella specifica Ranging: Out-of-band message sequence and payload (sia intestazione che payload) |
Tabella 10: risposta alla funzionalità di misurazione della distanza.
Operazione di configurazione della misurazione della distanza
La tabella 11 definisce il messaggio di configurazione del rilevamento della distanza.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati | 0x0B - Set Ranging Configuration |
| 1 | uint8 | Lunghezza dati | varia |
| 2 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di HMAC-SHA256(chiave account, numero di versione principale del protocollo || ultimo nonce letto dalla caratteristica || ID dati || Lunghezza dati || Dati aggiuntivi). |
| 10 | array di byte | Dati aggiuntivi | Messaggio Ranging Configuration come definito nella specifica Ranging: Out-of-band message sequence and payload (sia intestazione che payload) |
Tabella 11: configurazione della misurazione della distanza.
Operazione di risposta alla configurazione del ranging
La Tabella 12 definisce il messaggio di risposta alla configurazione del rilevamento della distanza.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati | 0x0B - Set Ranging Configuration Response |
| 1 | uint8 | Lunghezza dati | varia |
| 2 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di HMAC-SHA256(Account Key, numero di versione principale del protocollo || the last nonce read from the characteristic || Data ID || Data length || Additional Data || 0x01). |
| 10 | array di byte | Dati aggiuntivi | Messaggio Ranging Configuration Response come definito nella specifica Ranging: Out-of-band message sequence and payload (intestazione e payload) |
Tabella 12: risposta di configurazione del ranging.
Interrompi operazione di misurazione
La tabella 13 definisce il messaggio Stop Ranging.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati | 0x0D - Ranging Stop |
| 1 | uint8 | Lunghezza dati | varia |
| 2 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di HMAC-SHA256(chiave account, numero di versione principale del protocollo || ultimo nonce letto dalla caratteristica || ID dati || lunghezza dati). |
| 10 | array di byte | Dati aggiuntivi | Messaggio Stop Ranging come definito nella specifica Ranging: Out-of-band message sequence and payload (intestazione e payload) |
Tabella 13: Interrompi il rilevamento.
Interrompi operazione di risposta al rilevamento della distanza
La tabella 14 definisce il messaggio di risposta Stop Ranging.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | ID dati | 0x0D - Ranging Stop Response |
| 1 | uint8 | Lunghezza dati | varia |
| 2 | array di byte | Chiave di autenticazione una tantum | I primi 8 byte di HMAC-SHA256(Account Key, numero di versione principale del protocollo || the last nonce read from the characteristic || Data ID || Data length || Additional Data || 0x01). |
| 10 | array di byte | Dati aggiuntivi | Messaggio Stop Ranging Response come definito nella specifica Ranging: Out-of-band message sequence and payload (sia intestazione che payload) |
Tabella 14: Stop Ranging Response.
Protezione dal monitoraggio indesiderato con Posizione precisa
Quando viene attivata la modalità di protezione dal tracciamento indesiderato, come descritto nella sezione Protezione dal tracciamento indesiderato, lo stesso flusso che si applica all'ignorare i controlli di autenticazione per i messaggi di chiamata si applica anche a tutti i messaggi di ricerca di precisione definiti in questo documento per i dispositivi che vogliono supportare questa funzionalità.
Specifiche della tecnologia di misurazione per la Posizione precisa
Questa sezione contiene dettagli specifici della tecnologia di misurazione della distanza.
Specifiche della banda ultralarga (UWB)
Dettagli specifici per l'UWB.
Livello di ricerca di precisione
Le sessioni di ricerca di precisione che utilizzano la tecnologia UWB per la misurazione della distanza possono visualizzare informazioni sia sulla distanza che sulla direzione. L'intervallo di misurazione deve essere di almeno 240 ms, con 96 ms preferiti per una guida ottimale.
ID configurazioni
I dati di configurazione fuori banda scambiati per UWB non contengono un set completo di parametri configurabili disponibili richiesti da UWB per avviare una sessione di misurazione della distanza UWB. Alcuni parametri vengono selezionati implicitamente dall'ID configurazione scelto.
Ogni ID configurazione è un insieme di parametri di configurazione UWB predefiniti che sono documentati pubblicamente. Per il caso d'uso della ricerca di precisione, il dispositivo di risposta deve supportare l'ID configurazione 6 e, facoltativamente, l'ID configurazione 3.
Iniziatore e risponditore UWB
Per lo scenario di utilizzo della ricerca di precisione, il dispositivo indicato come dispositivo iniziatore in questo documento sarà il risponditore UWB, mentre il dispositivo indicato come dispositivo risponditore in questo documento sarà l'iniziatore UWB. Questo perché il dispositivo iniziatore UWB consuma meno energia rispetto al risponditore UWB e nella maggior parte dei casi il dispositivo risponditore sarà una periferica con batteria limitata.
Ciò significa che il dispositivo Responder deve indicare di supportare il ruolo di iniziatore UWB nel messaggio di risposta alla funzionalità di misurazione.
Altri parametri correlati all'UWB
- Il canale 9 deve essere supportato
- Per una guida ottimale, è consigliabile un intervallo di misurazione di 96 ms, altrimenti deve essere supportato un intervallo di 240 ms.
- Per risparmiare batteria, è consigliata una durata dello slot di 1 ms, ma è supportata anche una durata di 2 ms.
- Il chip UWB deve essere conforme almeno a FIRA v1.2 + P-STS.
- BPRF è obbligatorio, HPRF è consigliato ma facoltativo. La modalità supportata o selezionata è determinata dall'indice del preambolo supportato o selezionato.
- Tipo di sicurezza della sessione: P-STS
Specifiche di BLE Channel Sounding (CS)
Dettagli specifici di BLE CS.
Livello di ricerca di precisione
Le sessioni di Posizione precisa che utilizzano CS come tecnologia di misurazione causeranno misurazioni solo della distanza, la direzionalità non è fornita al momento.
Legame richiesto tra i dispositivi
Le sessioni di Ricerca di precisione che utilizzano il rilevamento del canale non funzionano se i dispositivi non sono accoppiati. È necessario un accoppiamento esistente tra il dispositivo iniziatore e quello risponditore. Questa specifica non fornisce un modo per creare un accoppiamento tra i dispositivi. Spetta invece allo sviluppatore del caso d'uso stabilire questo accoppiamento tra i dispositivi.
Azione richiesta da parte del rispondente per l'assistenza clienti
A differenza di UWB, in cui entrambi i dispositivi devono chiamare esplicitamente l'API di avvio e interruzione del rilevamento UWB, per CS è necessario solo il dispositivo iniziatore per avviare il rilevamento CS chiamando lo stack Bluetooth. Il resto dell'inizializzazione sul lato del risponditore avviene in banda utilizzando Bluetooth (BT). Ciò significa che, dopo aver ricevuto il messaggio di configurazione del rilevamento della distanza o il messaggio di interruzione del rilevamento della distanza per CS, il lato del risponditore non deve fare nulla se il Bluetooth è attivo, se non rispondere con la notifica del messaggio di risposta alla configurazione del rilevamento della distanza. Il dispositivo di risposta potrebbe potenzialmente utilizzare questi messaggi come trigger per aggiornare l'interfaccia utente in cui è presente uno schermo oppure, indipendentemente dalla presenza di uno schermo, potrebbe essere utilizzato per il feedback visivo sullo stato dei dispositivi, ad esempio per far lampeggiare i LED del dispositivo.
Wi-Fi NAN RTT
Dettagli specifici di Wi-Fi NAN RTT.
Livello di ricerca di precisione
Le sessioni di Posizione precisa che utilizzano Wi-Fi NAN RTT come tecnologia di misurazione causeranno misurazioni solo della distanza, la direzionalità non è fornita al momento.
RSSI BLE
Dettagli specifici RSSI BLE.
Livello di ricerca di precisione
Le sessioni di Ricerca di precisione che utilizzano solo BLE RSSI come tecnologia di misurazione non saranno in grado di ottenere informazioni sulla distanza o sulla direzione, poiché BLE RSSI non è una tecnologia di misurazione accurata. L'utente vedrà invece indicazioni che indicano che il dispositivo è vicino o lontano.
Frame pubblicizzati
Dopo il provisioning, il fornitore deve pubblicizzare i frame FHN almeno una volta ogni 2 secondi. Se vengono pubblicizzati frame di accoppiamento rapido, il fornitore deve alternare i frame FHN all'interno delle normali pubblicità di accoppiamento rapido. Ad esempio, ogni due secondi, il fornitore deve pubblicare sette annunci di accoppiamento rapido e un annuncio FHN.
La potenza di trasmissione Bluetooth condotta per le pubblicità FHN deve essere impostata su almeno 0 dBm.
Il frame FHN contiene una chiave pubblica utilizzata per criptare i report sulla posizione da qualsiasi client supportato che contribuisce alla rete di crowdsourcing. Sono disponibili due tipi di <x0A>chiavi a curva ellittica: una chiave a 160 bit adatta ai frame BLE 4 legacy o una chiave a 256 bit che richiede BLE 5 con funzionalità di pubblicità estese. L'implementazione del fornitore determina quale curva viene utilizzata.
Un frame FHN è strutturato come segue.
| Ottetto | Valore | Descrizione |
|---|---|---|
| 0 | 0x02 | Lunghezza |
| 1 | 0x01 | Valore del tipo di dati Flag |
| 2 | 0x06 | Dati dei flag |
| 3 | 0x18 o 0x19 | Lunghezza |
| 4 | 0x16 | Valore del tipo di dati dei dati di servizio |
| 5 | 0xAA | UUID servizio a 16 bit |
| 6 | 0xFE | … |
| 7 | 0x40 o 0x41 | Tipo di frame FHN con indicazione della modalità di protezione dal tracciamento indesiderato |
| 8..27 | Identificatore effimero di 20 byte | |
| 28 | Flag con hash |
Tabella 15: frame FHN che supporta una curva a 160 bit.
La tabella 16 mostra gli offset e i valori dei byte per una curva a 256 bit.
| Ottetto | Valore | Descrizione |
|---|---|---|
| 0 | 0x02 | Lunghezza |
| 1 | 0x01 | Valore del tipo di dati Flag |
| 2 | 0x06 | Dati dei flag |
| 3 | 0x24 o 0x25 | Lunghezza |
| 4 | 0x16 | Valore del tipo di dati dei dati di servizio |
| 5 | 0xAA | UUID servizio a 16 bit |
| 6 | 0xFE | … |
| 7 | 0x40 o 0x41 | Tipo di frame FHN con indicazione della modalità di protezione dal tracciamento indesiderato |
| 8..39 | Identificatore effimero di 32 byte | |
| 40 | Flag con hash |
Tabella 16: frame FHN che supporta una curva a 256 bit.
Calcolo dell'identificatore temporaneo (EID)
Un valore casuale viene generato dalla crittografia AES-ECB-256 della seguente struttura di dati con la chiave di identità effimera:
| Ottetto | Campo | Descrizione |
|---|---|---|
| 0 - 10 | Spaziatura interna | Valore = 0xFF |
| 11 | K | Esponente del periodo di rotazione |
| 12 - 15 | TS[0]...TS[3] | Contatore del tempo del beacon, in formato big-endian a 32 bit. I K bit meno significativi vengono azzerati. |
| 16 - 26 | Spaziatura interna | Valore = 0x00 |
| 27 | K | Esponente del periodo di rotazione |
| 28 - 31 | TS[0]...TS[3] | Contatore del tempo del beacon, in formato big-endian a 32 bit. I K bit meno significativi vengono azzerati. |
Tabella 17: costruzione di un numero pseudocasuale.
Il risultato di questo calcolo è un numero a 256 bit, indicato con r'.
Per il resto del calcolo, SECP160R1 o SECP256R1 vengono utilizzati per le operazioni di crittografia a curva ellittica. Vedi le definizioni delle curve in
SEC 2: Recommended Elliptic Curve Domain Parameters, che definisce Fp, n e G a cui si fa riferimento di seguito.
r' viene ora proiettato sul campo finito Fp calcolando r = r' mod n.
Infine, calcola R = r * G, che è un punto sulla curva che rappresenta la
chiave pubblica utilizzata. Il beacon pubblicizza Rx, che è la coordinata x
di R, come identificatore effimero.
Flag sottoposti ad hashing
Il campo dei flag con hash viene calcolato come segue (i bit sono indicati dal più significativo al meno significativo):
- Bit 0-4: riservati (impostati su zero).
- I bit 5-6 indicano il livello batteria del dispositivo come segue:
- 00: Indicazione del livello batteria non supportata
- 01: Livello batteria normale
- 10: Livello batteria basso
- 11: Livello batteria quasi esaurito (è necessario sostituire la batteria a breve)
- Il bit 7 è impostato su 1 se il beacon è in modalità di protezione dal monitoraggio indesiderato e su 0 in caso contrario.
Per produrre il valore finale di questo byte, viene eseguito l'operatore XOR con il byte meno significativo di SHA256(r).
Tieni presente che r deve essere allineato alle dimensioni della curva. Aggiungi zeri come bit più significativi se la rappresentazione è inferiore a 160 o 256 bit oppure tronca i bit più significativi se la rappresentazione è superiore a 160 o 256 bit.
Se il beacon non supporta l'indicazione del livello batteria e non è in modalità di protezione dal monitoraggio indesiderato, è consentito omettere completamente questo byte dalla pubblicità.
Crittografia con EID
Per criptare un messaggio m, un osservatore (che ha letto Rx dal beacon) deve
fare quanto segue:
- Scegli un numero casuale
sinFp, come definito nella sezione Calcolo dell'ID evento. - Compute
S = s * G. - Calcola
R = (Rx, Ry)per sostituzione nell'equazione della curva e scegliendo un valoreRyarbitrario tra i risultati possibili. - Calcola la chiave AES a 256 bit
k = HKDF-SHA256((s * R)x), dove(s * R)xè la coordinataxdel risultato della moltiplicazione della curva. Il sale non è specificato. - Siano
URxeLRxgli 80 bit superiori e inferiori diRx, rispettivamente, in formato big-endian. In modo simile, definisciUSxeLSxperS. - Compute
nonce = LRx || LSx. - Compute
(m’, tag) = AES-EAX-256-ENC(k, nonce, m). - Invia
(URx, Sx, m’, tag)al proprietario, possibilmente tramite un servizio remoto non attendibile.
Decrittografia dei valori criptati con EID
Il client del proprietario, in possesso dell'EIK e dell'esponente del periodo di rotazione, decrittografa il messaggio nel seguente modo:
- Dato
URx, ottieni il valore del contatore del tempo del beacon su cui si basaURx. Ciò può essere fatto dal computer client del proprietario calcolando i valoriRxper i valori del contatore del tempo del beacon per il passato recente e il futuro prossimo. - Dato il valore del contatore del tempo del beacon su cui si basa
URx, calcola il valore previsto dircome definito nella sezione Calcolo dell'ID evento. - Calcola
R = r * Ge verifica che corrisponda al valore diURxfornito dall'osservatore. - Calcola
S = (Sx, Sy)per sostituzione nell'equazione della curva e scegliendo un valoreSyarbitrario tra i risultati possibili. - Calcola
k = HKDF-SHA256((r * S)x), dove(r * S)xè la coordinataxdel risultato della moltiplicazione della curva. - Compute
nonce = LRx || LSx. - Compute
m = AES-EAX-256-DEC(k, nonce, m’, tag).
Rotazione degli ID
Per la pubblicità dei frame FHN deve essere utilizzato un indirizzo BLE risolvibile (RPA) o non risolvibile (NRPA). L'RPA è obbligatorio per i dispositivi LE Audio (LEA) ed è consigliato per gli altri dispositivi, ad eccezione dei tracker che non utilizzano l'associazione.
La pubblicità di Accoppiamento rapido, la pubblicità FHN e gli indirizzi BLE corrispondenti devono ruotare contemporaneamente. La rotazione deve avvenire in media ogni 1024 secondi. Il punto preciso in cui il beacon inizia a pubblicizzare il nuovo identificatore deve essere randomizzato all'interno della finestra.
L'approccio consigliato per randomizzare l'ora di rotazione è impostarla sull'ora di rotazione prevista successiva (se non è stata applicata alcuna randomizzazione) più un fattore di tempo randomizzato positivo compreso tra 1 e 204 secondi.
Quando il dispositivo è in modalità di protezione dal tracciamento indesiderato, l'indirizzo BLE della pubblicità FHN deve essere fisso, ma l'RPA per la pubblicità non rilevabile FP (come l'accoppiamento rapido) deve continuare a ruotare. È accettabile utilizzare indirizzi diversi per i diversi protocolli.
Recupero dopo un'interruzione di corrente
La risoluzione dell'identificatore effimero è strettamente legata al suo valore di orologio al momento della pubblicazione dell'annuncio, pertanto è importante che il fornitore possa recuperare il valore di orologio in caso di interruzione dell'alimentazione. È consigliabile che il fornitore scriva il valore di orologio corrente nella memoria non volatile almeno una volta al giorno e che al momento dell'avvio controlli la memoria non volatile per verificare se è presente un valore da cui inizializzare. I resolver dell'identificatore effimero implementerebbero la risoluzione in un intervallo di tempo sufficiente a consentire sia una deriva ragionevole dell'orologio sia questo tipo di recupero in caso di interruzione dell'alimentazione.
I fornitori devono comunque fare ogni sforzo per ridurre al minimo le variazioni di orologio, poiché la finestra temporale di risoluzione è limitata. Deve essere implementato almeno un metodo di sincronizzazione dell'orologio aggiuntivo (frame di accoppiamento rapido non rilevabili o implementazione del flusso di messaggi).
Linee guida per l'implementazione dell'accoppiamento rapido
Questa sezione descrive gli aspetti speciali dell'implementazione dell'accoppiamento rapido sui provider che supportano FHN.
Linee guida specifiche per le targhette di localizzazione
- Se il fornitore è stato accoppiato, ma FHN non è stato eseguito il provisioning entro 5 minuti (o se è stato applicato un aggiornamento OTA mentre il dispositivo è accoppiato ma non è stato eseguito il provisioning di FHN), il fornitore deve ripristinare la configurazione di fabbrica e cancellare le chiavi dell'account memorizzate.
- Una volta accoppiato, il fornitore non deve modificare il proprio indirizzo MAC finché FHN non viene sottoposto al provisioning o finché non trascorrono 5 minuti.
- Se la chiave di identità effimera viene cancellata dal dispositivo, quest'ultimo deve eseguire un ripristino dei dati di fabbrica e cancellare anche le chiavi dell'account memorizzate.
- Il fornitore deve rifiutare i normali tentativi di accoppiamento Bluetooth e accettare solo l'accoppiamento rapido.
- Il fornitore deve includere un meccanismo che consenta agli utenti di interrompere temporaneamente la pubblicità senza ripristinare i dati di fabbrica del dispositivo (ad esempio, premendo una combinazione di tasti).
- Dopo un'interruzione dell'alimentazione, il dispositivo deve pubblicizzare i frame di accoppiamento rapido non rilevabili fino alla successiva chiamata di read beacon parameters. In questo modo, il richiedente può rilevare il dispositivo e sincronizzare l'orologio anche se si è verificato uno scostamento significativo.
- Quando vengono pubblicizzati frame di Accoppiamento rapido non rilevabili, le indicazioni dell'interfaccia utente non devono essere attivate.
- I frame di Accoppiamento Rapido rilevabili non devono essere pubblicizzati mentre il fornitore è sottoposto al provisioning per FHN.
- Il Fornitore non deve esporre informazioni identitarie in modo non autenticato (ad es. nomi o identificatori).
Linee guida specifiche per i dispositivi Bluetooth Classic
Questa sezione descrive gli aspetti speciali dei dispositivi Bluetooth classici che supportano FHN.
Provisioning FHN di dispositivi già accoppiati
Il fornitore non viene sempre sottoposto al provisioning per FHN durante l'accoppiamento con la persona che ha bisogno di assistenza, ma dopo un po'. In questo caso, il fornitore potrebbe non disporre di un indirizzo MAC BLE aggiornato necessario per stabilire una connessione GATT. Il fornitore deve supportare almeno uno dei seguenti modi per consentire al richiedente di ottenere il proprio indirizzo BLE quando è già accoppiato:
- Il fornitore può pubblicizzare periodicamente i dati dell'account Accoppiamento rapido
che consentono al richiedente di trovare il proprio indirizzo BLE tramite una scansione BLE.
Questo approccio è adatto ai fornitori che non implementano il flusso di messaggi. - Il fornitore può fornire questi dati tramite il flusso di messaggi dell'accoppiamento rapido tramite
Bluetooth classico.
Questo approccio è adatto ai fornitori che non pubblicizzano i frame di Accoppiamento rapido mentre sono connessi al richiedente tramite Bluetooth.
Il supporto di entrambi gli approcci aumenta le probabilità che l'utente possa eseguire il provisioning del dispositivo per FHN.
Flusso di messaggi dell'accoppiamento rapido
Il fornitore può implementare lo stream di messaggi di accoppiamento rapido e utilizzarlo per notificare al richiedente le informazioni sul dispositivo. L'implementazione dello stream di messaggi attiva determinate funzionalità, come descritto in questa sezione.
Il fornitore deve inviare messaggi con informazioni sul dispositivo una volta ogni volta che viene stabilito lo stream di messaggi.
Versione firmware (codice informazioni dispositivo 0x09) e funzionalità di monitoraggio
Quando un aggiornamento firmware aggiunge il supporto FHN al fornitore, un dispositivo di ricerca connesso può notificare all'utente questa novità e offrire di eseguire il provisioning. In caso contrario, l'utente deve navigare manualmente nell'elenco dei dispositivi Bluetooth per avviare il provisioning FHN.
Per consentirlo, il fornitore deve utilizzare la proprietà Versione firmware (codice 0x09) per segnalare un valore stringa che rappresenta la versione del firmware. Inoltre, il fornitore deve supportare il protocollo che consente al richiedente di conoscere le modifiche alle funzionalità dovute agli aggiornamenti firmware.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Evento informazioni dispositivo | 0x03 |
| 1 | uint8 | Versione firmware | 0x09 |
| 2 - 3 | uint16 | Lunghezza dati aggiuntiva | varia |
| var | array di byte | Stringa di versione | varia |
Tabella 18: evento di informazioni sul dispositivo: versione firmware aggiornata.
Dopo aver ricevuto una richiesta di aggiornamento delle funzionalità (0x0601), se il fornitore ha attivato il supporto per il monitoraggio FHN, deve rispondere come mostrato nella tabella 12.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Evento di sincronizzazione delle funzionalità del dispositivo | 0x06 |
| 1 | uint8 | Monitoraggio FHN | 0x03 |
| 2 - 3 | uint16 | Lunghezza dati aggiuntiva | 0x0007 |
| 4 | uint8 | Stato di provisioning FHN | 0x00 se non è stato eseguito il provisioning; 0x01 se è stato eseguito il provisioning da qualsiasi account |
| 5 - 10 | array di byte | L'indirizzo MAC BLE attuale del dispositivo | varia |
Tabella 19: Evento di sincronizzazione della funzionalità del dispositivo: è stata aggiunta la funzionalità di monitoraggio.
Identificatore effimero attuale (codice informazioni dispositivo 0x0B)
Il fornitore può utilizzare l'identificatore effimero corrente (codice 0x0B) per segnalare l'EID e il valore dell'orologio correnti quando il fornitore viene sottoposto al provisioning per FHN, per sincronizzare il cercatore in caso di deriva dell'orologio (ad esempio, a causa della batteria scarica). In caso contrario, Seeker avvia una connessione più costosa e meno affidabile per questo scopo.
| Ottetto | Tipo di dati | Descrizione | Valore |
|---|---|---|---|
| 0 | uint8 | Evento informazioni dispositivo | 0x03 |
| 1 | uint8 | Identificatore effimero attuale | 0x0B |
| 2 - 3 | uint16 | Lunghezza dati aggiuntiva | 0x0018 o 0x0024 |
| 4 - 7 | array di byte | Valore orologio | Esempio: 0x13F9EA80 |
| 8 - 19 o 31 | array di byte | EID attuale | Esempio: 0x1122334455667788990011223344556677889900 |
Tabella 20: evento informazioni dispositivo: sincronizzazione dell'orologio.
Ripristinare i dati di fabbrica
Per i dispositivi che supportano il ripristino dei dati di fabbrica: se viene eseguito un ripristino dei dati di fabbrica, il provider deve interrompere la trasmissione dei beacon ed eliminare la chiave di identità effimera e tutte le chiavi dell'account memorizzate, inclusa la chiave dell'account del proprietario.
Dopo un ripristino dei dati di fabbrica (manuale o programmatico), il fornitore non deve iniziare subito a pubblicizzare Fast Pair, per evitare che il flusso di accoppiamento inizi immediatamente dopo l'eliminazione del dispositivo da parte dell'utente.
Prevenzione del monitoraggio indesiderato
I dispositivi FHN certificati devono soddisfare anche i requisiti della versione di implementazione della specifica multipiattaforma per il rilevamento dei tracker di posizione indesiderati (DULT).
Linee guida pertinenti specifiche per FHN da rispettare per essere conformi alla specifica DULT:
- Qualsiasi dispositivo compatibile con FHN deve essere registrato nella console per i dispositivi nelle vicinanze e deve avere attivata la funzionalità "Trova Hub".
- Il dispositivo deve implementare il servizio e la caratteristica Non-Owner dell'accessorio definiti nella versione di implementazione della specifica DULT, incluse le operazioni Accessory Information e Non-owner controls.
- Durante il periodo di compatibilità con le versioni precedenti, come definito nella specifica DULT, non vengono apportate modifiche al frame pubblicizzato come definito in questo documento.
- La "modalità di protezione antitracciamento indesiderato" definita in questo documento corrisponde allo "stato separato" definito dalle specifiche DULT.
- Linee guida per l'implementazione dei codici operativi Informazioni accessorio:
- Get_Product_Data deve restituire l'ID modello fornito dalla console, con zeri iniziali per soddisfare il requisito di 8 byte. Ad esempio, l'ID modello 0xFFFFFF viene restituito come 0x0000000000FFFFFF.
- Get_Manufacturer_Name e Get_Model_Name devono corrispondere ai valori forniti nella console.
- Get_Accessory_Category può restituire il valore generico "Tracker di posizione" se nessun'altra categoria si adatta meglio al tipo di dispositivo.
- Get_Accessory_Capabilities deve indicare il supporto per la suoneria e la ricerca dell'identificatore BLE.
- Get_Network_ID deve restituire l'identificatore di Google (0x02).
- Linee guida per l'implementazione del codice operativo Get_Identifier:
- L'operazione deve restituire una risposta valida solo per 5 minuti dopo che l'utente ha attivato la modalità "identificazione", che richiede una combinazione di pressioni dei tasti. Un segnale visivo o audio deve indicare all'utente che il fornitore è entrato in questa modalità. Le istruzioni specifiche del modello per l'attivazione di questa modalità devono essere fornite a Google come requisito per la certificazione e almeno 10 giorni prima di qualsiasi aggiornamento o modifica delle istruzioni.
- La risposta è strutturata come segue: i primi 10 byte dell'identificatore effimero corrente, seguiti dai primi 8 byte di
HMAC-SHA256(recovery key, the truncated current ephemeral identifier).
- Linee guida per l'implementazione dell'identificatore tramite NFC:
- Come URL, utilizza
find-my.googleapis.com/lookup. - Come parametro
e, utilizza la stessa risposta creata per Get_Identifier, codificata in esadecimale. - Come parametro
pid, utilizza la stessa risposta creata per Get_Product_Data, codificata in esadecimale.
- Come URL, utilizza
- È obbligatorio che il dispositivo includa un generatore di suoni e supporti la funzione di suoneria. In base alle specifiche DULT, il generatore di suoni deve emettere un suono con un'intensità di picco minima di 60 fon come definito dalla norma ISO 532-1:2017.
- Linee guida per l'implementazione del codice operativo Sound_Start:
- Il comando deve attivare la suoneria in tutti i componenti disponibili.
- Deve essere utilizzato il volume massimo supportato.
- La durata consigliata per la suoneria è di 12 secondi.
- I tracker devono includere un meccanismo che consenta agli utenti di interrompere temporaneamente
la pubblicità senza ripristinare i dati di fabbrica del dispositivo (ad esempio, premendo una
combinazione di pulsanti).
- Le istruzioni di disattivazione devono essere documentate in un URL disponibile pubblicamente e fornite a Google come requisito per la certificazione e almeno 10 giorni prima di qualsiasi aggiornamento o modifica delle istruzioni.
- L'URL deve supportare la localizzazione. A seconda del client, la lingua verrà fornita come parametro di query ("hl=en") o utilizzando l'intestazione HTTP "accept-language".
Linee guida per i protocolli commutabili
- Deve essere utilizzato un solo protocollo alla volta. Assicurati che sul dispositivo possa funzionare una sola rete alla volta. Questo requisito è necessario per garantire che non vi sia commistione di dati utente sensibili tra protocolli diversi.
- Ti consigliamo di incorporare un flusso di lavoro di ripristino dei dati di fabbrica nel dispositivo che consenta a un utente di configurare nuovamente un dispositivo con una rete diversa.
- La procedura di aggiornamento di un dispositivo a una rete deve essere semplice e equa tra le reti. Un utente deve poter scegliere la rete che vuole utilizzare senza dare la preferenza a una delle reti. Questo flusso deve essere approvato dal team Google.
Aggiornamenti firmware
La procedura e la distribuzione degli aggiornamenti OTA devono essere gestite dal partner utilizzando il proprio flusso di lavoro dell'app mobile o web.
L'accoppiamento rapido supporta l'invio di notifiche all'utente, informandolo degli aggiornamenti OTA disponibili. Per utilizzare questo meccanismo:
- L'ultima versione del firmware deve essere aggiornata nella console per i dispositivi nelle vicinanze.
- Nella console dei dispositivi nelle vicinanze deve essere impostata un'app complementare. Deve supportare l'intent di aggiornamento del firmware.
- Il fornitore deve implementare la caratteristica GATT Revisione firmware.
Per impedire il monitoraggio, l'accesso alla caratteristica Revisione firmware deve essere limitato. Seeker leggerà prima lo stato di provisioning e fornirà una chiave di autenticazione, come definito in questa specifica, e solo dopo leggerà la revisione del firmware. Questa operazione verrà eseguita tramite la stessa connessione. Se viene tentato di leggere la revisione del firmware e il fornitore non è accoppiato né è stata completata correttamente un'operazione autenticata sulla stessa connessione, il fornitore deve restituire un errore di autenticazione.
Compatibilità
La rete Find Hub richiede che siano attivi i servizi di localizzazione e il Bluetooth. Richiede un servizio cellulare o una connessione a internet. Funziona su Android 9 e versioni successive e in determinati paesi per gli utenti di età idonea.
Log delle modifiche
| Versione FHN | Data | Commento |
|---|---|---|
| v1 | Versione iniziale della specifica FHN per l'accesso in anteprima. | |
| v1.1 | febbraio 2023 |
|
| v1.2 | Aprile 2023 |
|
| v1.3 | Dicembre 2023 |
|