Codice di autenticazione del messaggio

Gli stream di messaggi vengono utilizzati per configurare Cambio Audio. Consulta: Messaggi relativi al cambio audio. Per queste importanti configurazioni, il provider deve per assicurare che il messaggio venga inviato da GMSCore (modulo di accoppiamento rapido) e non da altra app sul dispositivo di ricerca.

Genera MAC (codice di autenticazione dei messaggi)

FP Seeker aggiunge un codice di autenticazione per i messaggi di configurazione del dispositivo utilizzando HMAC-SHA256. Il MAC del messaggio è costituito dai primi 8 byte di:

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, message)))))

dove

  1. K viene generato da concat(chiave account, zeri a 48 byte).
  2. message sono i dati aggiuntivi dello stream di messaggi.
  3. nonce viene generato da concat(session_nonce, message_nonce); sessione il nonce e il nonce del messaggio sono definiti nella sezione seguente.
  4. opad è 64 byte di spaziatura interna esterna, composta da byte ripetuti valutati 0x5C.
  5. ipad è 64 byte di spaziatura interna interna, composta da byte ripetuti valutati 0x36.

Nonce della sessione e nonce del messaggio

Per prevenire un attacco di ripetizione, il provider deve assicurarsi che un nonce non sia ripetuto. Dal mantenimento della sincronizzazione dell'orologio o del contatore su entrambi i provider e la funzionalità di ricerca non è immediata, il provider genera il nonce di sessione (per connessione), che viene condiviso con tutti i messaggi durante la connessione. mentre il ricercatore genera il nonce del messaggio (per messaggio), che viene generate per ogni messaggio. Il nonce per generare il MAC di ciascun messaggio è la combinazione di nonce di sessione e nonce del messaggio, ad esempio concat(session_nonce, message_nonce).

Aggiungiamo un nonce di sessione al gruppo di eventi Informazioni del dispositivo:

Nome del gruppo di messaggi Valore
Evento Informazioni dispositivo 0x03
Nome codice messaggio Valore
Nonce sessione 0x0A

Il nonce della sessione deve essere generato e inviato al cercatore quando RFCOMM connette:

Ottetto Tipo di dati Descrizione Valore
0 uint8 Evento Informazioni dispositivo 0x03
1 uint8 Nonce sessione 0x0A
2 - 3 uint16 Dati aggiuntivi 0x0008
4 - 11 nonce di sessione varia

Per inviare un messaggio quando è richiesto un MAC, il ricercatore invierà un messaggio nonce e MAC insieme al messaggio.

Ottetto Tipo di dati Descrizione Valore
0 uint8 Gruppo di messaggi varia
1 uint8 Codice messaggio varia
2 - 3 uint16 Lunghezza dati aggiuntivi(lunghezza dei dati aggiuntivi + 16) varia
4 - n Dati aggiuntivi varia
N + 1 - n + 8 Nonce messaggio varia
N + 9 - n + 16 Codice di autenticazione del messaggio varia

Verifica MAC (codice di autenticazione dei messaggi)

Dopo aver ricevuto un messaggio con il codice di autenticazione del messaggio, il provider deve verificarlo utilizzando la stessa funzione della funzione di generazione. Vale a dire che l'indirizzo MAC ricevuto deve essere uguale ai primi 8 byte di

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(section_nonce, message_nonce, message)))))

dove:

  1. K viene generato da concat(account key, 48-byte ZEROs) e il provider attraversa tutte le chiavi di account memorizzate per verificare il MAC.
  2. message sono i dati aggiuntivi (esclusi nonce e MAC dei messaggi) di il flusso di messaggi.

Se il MAC è corretto, il fornitore dovrà seguire le istruzioni del . Altrimenti, il provider invierà un NAK con il motivo dell'errore, 0x3 - non consentito a causa di un codice di autenticazione del messaggio errato.