Usługa Szybkie parowanie

Dostawca szybkiego parowania musi wdrożyć usługę szybkiego parowania (UUID 0xFE2C), która zawiera te cechy.

Nazwa Zaszyfrowane Uprawnienia UUID Obowiązkowe?
Identyfikator modelu Nie Odczyt FE2C1233-8366-4814-8EB0-01DE32100BEA Obowiązkowe
Parowanie na podstawie klucza Nie Napisz i powiadom FE2C1234-8366-4814-8EB0-01DE32100BEA Obowiązkowe
Klucz dostępu Nie Napisz i powiadom FE2C1235-8366-4814-8EB0-01DE32100BEA Obowiązkowe
Klucz konta Nie Zapis FE2C1236-8366-4814-8EB0-01DE32100BEA Obowiązkowe
Dodatkowe dane Nie Napisz i powiadom FE2C1237-8366-4814-8EB0-01DE32100BEA *C1
Menedżer ds. partnera strategicznego w zespole Message Stream Tak Odczyt FE2C1239-8366-4814-8EB0-01DE32100BEA *C2
Dodatkowy klucz dostępu Nie Odczyt, zapis i powiadomienia FE2C123A-8366-4814-8EB0-01DE32100BEA *C3
Działanie na urządzeniu FP Nie Napisz i powiadom FE2C123B-8366-4814-8EB0-01DE32100BEA *C4

Obowiązkowe warunkowo

Cecha: identyfikator modelu

Ta cecha umożliwia Poszukującemu odczytywanie identyfikatora modelu w razie potrzeby, poza sytuacjami, gdy urządzenie rozgłasza w trybie wykrywalnym. Powinien zawsze zwracać te dane:

Oktet Typ danych Opis Wartość
0–2 uint24 Identyfikator modelu różne

Cecha: parowanie oparte na kluczach

Ta cecha kontroluje procedurę parowania na podstawie klucza. W tej procedurze pewien poziom zaufania jest ustanawiany przez sprawdzenie, czy Poszukujący i Dostawca mają klucz PSK. W każdym przypadku klucz jest inny:

  • Przypadek 1. Klucz PSK jest oparty na parze kluczy publiczny/prywatny zapobiegającej spoofingowi oraz na parze kluczy publiczny/prywatny urządzenia poszukującego, która zmienia się przy każdej próbie sparowania.

    • Dostawca jest w trybie parowania.
    • Poszukujący sprawdza, czy dostawca ma klucz prywatny zapobiegający spoofingowi.

    Pamiętaj, że w trybie parowania dostawca może też parować urządzenia w zwykły sposób, na przykład z urządzeniem, które nie obsługuje parowania opartego na kluczach w ramach Szybkiego parowania.

  • Przypadek 2. Klucz PSK jest jednym z kluczy konta.

    • Dostawca zwykle nie jest w trybie parowania. (Nie jest to jednak wymagane – dostawca powinien obsługiwać klucz konta nawet w trybie parowania).
    • Poszukiwacz i Dostawca sprawdzają, czy druga strona ma klucz konta.

Oba przypadki są bardzo podobne, z wyjątkiem używanego klucza PSK, dlatego zostały połączone w procedurze.

Format danych

Zobacz procedurę, aby dowiedzieć się, jak używany jest każdy format.

Oktet Typ danych Opis Wartość Obowiązkowe?
0–15 uint128 Zaszyfrowane żądanie różne Obowiązkowe
16–79 Klucz publiczny różne Opcjonalny

Tabela 1.1. Zaszyfrowane żądanie zapisane w charakterystyce przez urządzenie poszukujące

Oktet Typ danych Opis Wartość Obowiązkowe?
0 uint8 Typ komunikatu 0x00 = prośba o parowanie na podstawie klucza Obowiązkowe
1 uint8 Flagi
  • Bit 0 (MSB): wycofany i ignorowany przez Seeker.
  • Bit 1: 1, jeśli Poszukujący prosi Dostawcę o rozpoczęcie wiązania, a prośba zawiera adres BR/EDR Poszukującego. W przeciwnym razie zwraca 0.
  • Bit 2: 1, jeśli Poszukujący prosi Dostawcę o powiadomienie o istniejącej nazwie. W przeciwnym razie zwraca 0.
  • Bit 3: 1, jeśli dotyczy to zapisywania klucza konta wstecznie. W przeciwnym razie zwraca 0.
  • Bit 4: 1, jeśli Poszukujący obsługuje urządzenie BLE. W przeciwnym razie zwraca 0.
  • Bit 5: 1, jeśli urządzenie poszukujące obsługuje LE Audio. W przeciwnym razie zwraca 0.
  • Bity 6–7 są zarezerwowane do wykorzystania w przyszłości i należy je zignorować.
różne Obowiązkowe
2–7 uint48 Wykonaj 1 z tych czynności:
  • Bieżący adres BLE dostawcy
  • Adres tożsamości dostawcy
różne Obowiązkowe
8–13 uint48 Adres BR/EDR urządzenia poszukującego różne Obecny tylko wtedy, gdy ustawiony jest bit flagi 1 lub 3
n – 15 losowa wartość (salt), różne Obowiązkowe

Tabela 1.2.1: nieprzetworzone żądanie (typ 0x00). odszyfrowane z zaszyfrowanego żądania w tabeli 1.1.

Oktet Typ danych Opis Wartość Obowiązkowe?
0 uint8 Typ komunikatu 0x10 = prośba o działanie Obowiązkowe
1 uint8 Flagi różne Obowiązkowe
2–7 uint48 Wykonaj 1 z tych czynności:
  • Bieżący adres BLE dostawcy
  • Adres tożsamości dostawcy
różne Obowiązkowe
8 uint8 Wyślij wiadomość do grupy różne Wymagane, jeśli ustawiono bit flagi 0
9 uint8 Kod wiadomości różne Wymagane, jeśli ustawiono bit flagi 0
10 uint8 Zależy od flag:
  • Ustawiono bit 0: długość dodatkowych danych, mniej niż 6
  • Bit 1 jest ustawiony: identyfikator danych
różne Wymagane, jeśli ustawiono bit flagi 0 lub 1
11 – n Dodatkowe dane różne Opcjonalny
n – 15 losowa wartość (salt), różne Obowiązkowe

Tabela 1.2.2. Żądanie nieprzetworzone (typ 0x10). odszyfrowane z zaszyfrowanego żądania w tabeli 1.1.

Oktet Typ danych Opis Wartość
0 uint8 Typ komunikatu 0x01 = odpowiedź na parowanie na podstawie klucza
1–6 uint48 Publiczny adres (BR/EDR) dostawcy różne
7–15 losowa wartość (salt), różne

Tabela 1.3. Nieprzetworzona odpowiedź (typ 0x01). Zaszyfrowane w celu wygenerowania zaszyfrowanej odpowiedzi w tabeli 1.4.

Oktet Typ danych Opis Wartość
0 uint8 Typ komunikatu 0x02 = Key-based Pairing Extended Response
1 uint8 Flagi
  • Bit 0 (MSB): 1, jeśli dostawca jest urządzeniem tylko LE, w przeciwnym razie 0. Jeśli bit 0 ma wartość 1, poszukujący zakłada, że bit 1 ma wartość 1.
  • Bit 1: 1, jeśli dostawca preferuje powiązanie LE, w przeciwnym razie 0.
  • Bit 2: 1, jeśli typ drugiego adresu to Losowy, 0, jeśli Publiczny.
  • Bity 3–7 są zarezerwowane do wykorzystania w przyszłości i należy je zignorować.
różne
2 uint8 Liczba adresów dostawcy
Prawidłowe wartości to 1 i 2.
różne
3–8 lub
3–14
  • Pierwszy adres powinien być adresem tożsamości urządzenia głównego i powinien umożliwiać powiązanie, jeśli preferowane jest powiązanie BR/EDR.
  • Drugi adres powinien być adresem możliwym do powiązania, jeśli jest dostępny.
różne
9–15 lub 15 losowa wartość (salt), różne

Tabela 1.3.2. Nieprzetworzona odpowiedź (typ 0x02). Zaszyfrowane w celu wygenerowania zaszyfrowanej odpowiedzi w tabeli 1.4.

Oktet Typ danych Opis Wartość
0–15 uint128 Zaszyfrowana odpowiedź różne

Tabela 1.4. Zaszyfrowana odpowiedź wysyłana przez dostawcę do poszukującego za pomocą powiadomienia

Cecha: klucz dostępu

Ta charakterystyka jest używana podczas procedury parowania opartego na kluczach.

Oktet Typ danych Opis Wartość
0–15 uint128 Zaszyfrowany blok klucza dostępu różne

Tabela 2.1. Blok zaszyfrowanego klucza dostępu. Informacje o korzystaniu z tej funkcji znajdziesz w sekcji Procedura parowania na podstawie klucza.

Oktet Typ danych Opis Wartość
0 uint8 Typ komunikatu Jedna z tych wartości:
  • 0x02 = klucz dostępu poszukiwacza
  • 0x03 = klucz dostępu dostawcy,
1–3 unit32 6-cyfrowy klucz dostępu różne
4–15 losowa wartość (salt), różne

Tabela 2.2. Nieprzetworzony blok klucza dostępu. Decrypted version of Table 2.1.

Cecha: klucz do konta

Po sparowaniu urządzenie poszukujące Szybkiego parowania zapisze klucz konta na urządzeniu dostawcy Szybkiego parowania.

Oktet Typ danych Opis Wartość
0–15 uint128 Klucz konta (zaszyfrowany) różne

Po otrzymaniu żądania zapisu dostawca Szybkiego parowania powinien wykonać te czynności:

  1. Odszyfruj klucz konta za pomocą udostępnionego hasła wygenerowanego w kroku 4 procedury.
    • W przypadku dostawców, którzy wymagają kaucji (często):
      • Przed odszyfrowaniem sprawdź, czy klucz tajny został użyty do odszyfrowania żądania klucza dostępu z kroku 12. Jeśli ten krok nie został wykonany przy użyciu tego obiektu tajnego, zignoruj ten zapis i zakończ działanie.
    • W tym momencie wspólny klucz tajny (K w procedurze) nie będzie już używany do tego parowania. Wszelkie żądania zaszyfrowane tym kluczem, które zostaną przesłane bez ponownego uruchomienia procedury, powinny zostać odrzucone.
  2. Sprawdź, czy odszyfrowana wartość zaczyna się od 0x04 lub 0xFF. Jeśli nie, zignoruj ten zapis i zamknij.
    • Jeśli wartością jest 0x04:
      • Sprawdź, czy na zapisanej liście kluczy konta jest miejsce na nową wartość.
      • Jeśli nie, usuń z listy wartość, która była używana najdawniej.
      • Dodaj nową wartość do listy.
    • Jeśli wartością jest 0xFF:
      • Potraktuj to jako tymczasową sesję parowania i nie wykonuj żadnych działań.
      • Może się to zdarzyć w przypadku procesu Zapisywanie klucza konta wstecznie.
      • Nie przechowuj klucza i nie używaj go na liście kluczy konta, do szyfrowania ani do obliczeń MAC.
      • Usunięcie powiązania jest wywoływane przez zdarzenie związane z funkcją lub upłynięcie limitu czasu. W przypadku udostępniania dźwięku LE zdecydowanie zalecamy usunięcie powiązania BLE i klucza połączenia 10 minut po rozłączeniu sesji tymczasowej.

Klucze konta na liście są używane podczas parowania na podstawie klucza.

Cecha: dodatkowe dane

Ta usługa ma następujące cechy.

Charakterystyka usługi Szybkie parowanie Zaszyfrowane Uprawnienia UUID
Dane Nie Napisz i powiadom FE2C1237-8366-4814-8EB0-01DE32100BEA
Stara charakterystyka usługi Szybkiego parowania (planowane wycofanie 1 stycznia 2021 r.) Zaszyfrowane Uprawnienia UUID
Dane Nie Napisz i powiadom 0x1237

Przed zapisaniem lub powiadomieniem o tej charakterystyce musi nastąpić uzgadnianie połączenia za pomocą charakterystyki FE2C1234-8366-4814-8EB0-01DE32100BEA, aby uzyskać wspólny klucz tajny. Do szyfrowania danych przepływających przez tę charakterystykę będzie używany algorytm AES-CTR, który jest zdefiniowany poniżej. Ten tryb jest bezpieczniejszy w przypadku danych, które wykraczają poza pojedynczy blok 16-bajtowy. Do zapewnienia integralności danych będzie używany algorytm HMAC-SHA256, który również został zdefiniowany poniżej.

Oktet Opis Wartość
czasami Pierwsze 8 bajtów HMAC-SHA256. różne
8–15 Liczba jednorazowa używana przez szyfrowanie AES-CTR. różne
16 – var Zaszyfrowane dane. różne

Tabela 3.1. Pakiet danych wysyłany przez dostawcę do poszukującego za pomocą powiadomienia lub przez poszukującego do dostawcy za pomocą zapisu.

Oktet Typ danych Opis Wartość
0 – var byte array Dane varies, zdekoduj go zgodnie z identyfikatorem danych z tabeli 1.2.2:
  • 0x01(personalized name): utf8s

Tabela 3.2. Nieprzetworzone dane. Odszyfrowane z zaszyfrowanych danych w tabeli 3.1.

Gdy zostanie wysłana prośba o powiadomienie (np. prośba o spersonalizowaną nazwę za pomocą bitu 2 w tabeli 1.2.1), dostawca Szybkiego parowania powinien wykonać te czynności:

  1. Wygeneruj kryptograficznie losowe 8 bajtów dla liczby jednorazowej.
  2. Zaszyfruj dane za pomocą AES-CTR, gdzie każdy 16-bajtowy blok jest generowany przy użyciu

    encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    gdzie

    1. Klucz AES to udostępnione hasło z kroku 4 procedury.
    2. clearBlock[i] to 16-bajtowy blok zaczynający się od data[i * 16]. Ostatni blok może mieć mniej niż 16 bajtów.
  3. Wykonaj concat(encryptedBlock[0], encryptedBlock[1],...), aby utworzyć zaszyfrowane dane.

  4. Wygeneruj HMAC-SHA256 za pomocą

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

    gdzie

    1. K jest generowany przez concat(shared_secret, 48-byte ZEROs), gdzie shared_secret pochodzi z kroku 4 procedury.
    2. opad to 64-bajtowe dopełnienie zewnętrzne, składające się z powtarzających się bajtów o wartości 0x5C.
    3. ipad to 64-bajtowe dopełnienie wewnętrzne składające się z powtarzających się bajtów o wartości 0x36.
  5. Weź pierwsze 8 bajtów z HMAC-SHA256 jako prefiks pakietu danych.

Po otrzymaniu żądania zapisu dostawca Szybkiego parowania powinien wykonać te czynności:

  1. Sprawdź integralność danych, sprawdzając pierwsze 8 bajtów HMAC-SHA256.
  2. Odszyfruj zaszyfrowane dane za pomocą AES-CTR, gdzie każdy blok jest generowany przy użyciu

    clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    gdzie

    1. encryptedBlock[i] to 16-bajtowy blok zaczynający się od encrypted_data[i * 16]. Ostatni blok może mieć mniej niż 16 bajtów.
    2. Klucz AES jest generowany lub identyfikowany na podstawie uzgadniania, np.
      1. w procesie nadawania nazwy 1 pochodzi z ECDH i nie zostanie ponownie użyty do tego parowania. Wszystkie żądania zaszyfrowane tym kluczem, które zostaną przesłane bez ponownego uruchomienia procedury, powinny zostać odrzucone.
      2. w procesie nadawania nazw 2 jest to klucz konta.
  3. Wykonaj concat(clearBlock[0], clearBlock[1],...), aby utworzyć nieprzetworzone dane.

Cecha: PSM strumienia wiadomości

Patrz Urządzenie BLE: strumień wiadomości PSM.

Cecha: dodatkowy klucz dostępu

Patrz Urządzenie BLE: dodatkowy klucz dostępu.

Cecha: działanie na urządzeniu FP

Charakterystyka usługi Szybkie parowanie Zaszyfrowane Uprawnienia UUID
Działanie na urządzeniu FP Nie Napisz i powiadom FE2C123B-8366-4814-8EB0-01DE32100BEA

Oktet Opis Wartość
czasami Pierwsze 8 bajtów HMAC-SHA256. różne
8–15 Liczba jednorazowa używana przez szyfrowanie AES-CTR. różne
16 – var Zaszyfrowane dane. różne

Tabela 4.1. Pakiet danych wysyłany przez dostawcę do poszukującego jako powiadomienie lub przez poszukującego do dostawcy jako zapis.

Oktet Typ danych Opis Wartość
0 – var byte array Prośba o działanie Jedna z tych wartości:
  • Odczyt spersonalizowanej nazwy, 0x01
  • Write Personalized Name, patrz tabela 4.3.1
  • Odczytywanie informacji o skoordynowanym zestawie, 0x02
  • Odczyt funkcji urządzenia, 0x03

Tabela 4.2. Nieprzetworzone dane. odszyfrowane z zaszyfrowanych danych w tabeli 4.1 wysłanych przez Poszukującego do Dostawcy jako zapis.

Oktet Typ danych Opis Wartość
0 – var byte array Odpowiedź na działanie Jedna z tych wartości:
  • Spersonalizowana nazwa, patrz tabela 4.3.1
  • Informacje o skoordynowanym zestawie – patrz tabela 4.3.2
  • Funkcje urządzenia – patrz tabela 4.3.3
  • Kod błędu
    • 0x80 (Nieobsługiwana prośba)
    • 0x81 (nieprawidłowe żądanie)

Tabela 4.3. Nieprzetworzone dane. Odszyfrowane z zaszyfrowanych danych w tabeli 4.1 wysłanych przez dostawcę do poszukującego jako powiadomienie.

Oktet Typ danych Opis Wartość
0 uint8 Identyfikator działania 0x01
1 – var utf8s Spersonalizowana nazwa różne

Tabela 4.3.1. Spersonalizowany format nazwy

Oktet Typ danych Opis Wartość
0 uint8 Identyfikator działania 0x02
1 uint8 Typ elementu zestawu skoordynowanego szybkiego parowania
  • 0x00: lewy komponent
  • 0x01: prawy komponent
2 uint8 Rozmiar zestawu skoordynowanego liczba komponentów
3 uint8 Ustawianie typu klucza rozpoznawania tożsamości 0x01 (SIRK w formacie zwykłego tekstu)
4–19 uint128 Ustaw wartość klucza rozpoznawania tożsamości 16-bajtowe dane, patrz Coordinated Set Identification Service

Tabela 4.3.2. Format informacji o skoordynowanym zestawie

Oktet Typ danych Opis Wartość
0 uint8 Identyfikator działania 0x03
1–2 uint16 Funkcje urządzenia
  • Bity 0–15: zarezerwowane, powinny być ustawione na 0

Tabela 4.3.3. Format funkcji urządzenia

Operacje szybkiego parowania

Dla tej cechy zdefiniowano 2 główne operacje:

  • Odczyt Szybkiego parowania: odczytywanie danych od dostawcy.
    1. Poszukujący: włącz powiadomienie GATT
    2. Dostawca: zarejestrowano powiadomienie GATT
    3. Poszukujący: żądanie zapisu GATT, nieprzetworzone dane zawierają tylko Action ID
    4. Dostawca: odpowiedź na zapis GATT
    5. Dostawca: powiadomienie GATT, nieprzetworzone dane zawierają:
      • Identyfikator działania
      • Dane dotyczące identyfikatora działania
    6. Seeker: otrzymano powiadomienie GATT
  • Zapis w Szybkim parowaniu: zapisywanie danych u dostawcy.
    1. Poszukujący: żądanie zapisu GATT, nieprzetworzone dane zawierają:
      • Identyfikator działania
      • Dane dotyczące identyfikatora działania
    2. Dostawca: odpowiedź na zapis GATT

Identyfikator obsługiwanego działania odczytu szybkiego parowania

  • 0x01 (nazwa spersonalizowana)
  • 0x02 (informacje o skoordynowanym zestawie)
  • 0x03 (funkcje urządzenia)

Identyfikator obsługiwanego działania zapisu szybkiego parowania

Jeśli dostawca nie rozpoznaje identyfikatora działania, odpowiada powiadomieniem GATT zawierającym informację o nieobsługiwanym żądaniu (0x80), jak opisano w tabeli 4.3.

Algorytm kryptograficzny

Gdy zostanie wysłana prośba o powiadomienie, dostawca Szybkiego parowania powinien wykonać te czynności:

  1. Wygeneruj kryptograficznie losowe 8 bajtów dla liczby jednorazowej.
  2. Zaszyfruj dane za pomocą AES-CTR, gdzie każdy 16-bajtowy blok jest generowany przy użyciu

    encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    gdzie

    1. Klucz AES to udostępnione hasło z kroku 4 procedury.
    2. clearBlock[i] to 16-bajtowy blok zaczynający się od data[i * 16]. Ostatni blok może mieć mniej niż 16 bajtów.
  3. Wykonaj concat(encryptedBlock[0], encryptedBlock[1],...), aby utworzyć zaszyfrowane dane.

  4. Wygeneruj HMAC-SHA256 za pomocą

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

    gdzie

    1. K jest generowany przez concat(shared_secret, 48-byte ZEROs), gdzie shared_secret pochodzi z kroku 4 procedury.
    2. opad to 64-bajtowe dopełnienie zewnętrzne, składające się z powtarzających się bajtów o wartości 0x5C.
    3. ipad to 64-bajtowe dopełnienie wewnętrzne składające się z powtarzających się bajtów o wartości 0x36.
  5. Weź pierwsze 8 bajtów z HMAC-SHA256 jako prefiks pakietu danych.

Po otrzymaniu żądania zapisu dostawca Szybkiego parowania powinien wykonać te czynności:

  1. Sprawdź integralność danych, sprawdzając pierwsze 8 bajtów HMAC-SHA256.
  2. Odszyfruj zaszyfrowane dane za pomocą AES-CTR, gdzie każdy blok jest generowany przy użyciu

    clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    gdzie

    1. encryptedBlock[i] to 16-bajtowy blok zaczynający się od encrypted_data[i * 16]. Ostatni blok może mieć mniej niż 16 bajtów.
    2. Klucz AES jest generowany lub identyfikowany na podstawie uzgadniania połączenia, na przykład:
      1. w procesie nadawania nazwy 1 pochodzi z ECDH i nie zostanie ponownie użyty do tego parowania. Wszystkie żądania zaszyfrowane tym kluczem, które zostaną przesłane bez ponownego uruchomienia procedury, powinny zostać odrzucone.
      2. w procesie nadawania nazw 2 jest to klucz konta.
  3. Wykonaj concat(clearBlock[0], clearBlock[1],...), aby utworzyć nieprzetworzone dane.

Usługa informacji o urządzeniu

Dostawca Szybkiego parowania powinien też obsługiwać usługę informacji o urządzeniu (UUID 0x180A). Urządzenie wykrywające Szybkie parowanie korzysta z tych cech.

Nazwa Zaszyfrowane Uprawnienia UUID
Wersja oprogramowania układowego Nie Odczyt 0x2A26

Cecha: wersja oprogramowania układowego

Ta cecha umożliwia Poszukującemu odczytywanie wersji oprogramowania układowego Dostawcy w razie potrzeby. Powinien zawsze zwracać te dane:

Oktet Typ danych Opis Wartość
0 – var utf8s Kod wersji oprogramowania układowego różne

Powinno być ono zawarte w jednym ciągu znaków UTF-8, nawet jeśli u dostawcy jest więcej niż 1 oprogramowanie układowe (np. 3 oprogramowania układowe dla lewej słuchawki, prawej słuchawki i etui). Dostawca może też zwracać określone ciągi znaków w przypadkach specjalnych:

  1. status-updating: jeśli dostawca aktualizuje oprogramowanie układowe do nowej wersji. Dostawca może też zwrócić wersję przygotowanego oprogramowania układowego.

  2. status-abnormal: jeśli dostawca jest w stanie nieprawidłowym. Na przykład nie działa prawidłowo, ponieważ nie powiodła się aktualizacja oprogramowania. Ta wartość spowoduje, że Seeker wyświetli komunikat informujący użytkownika, że musi teraz zaktualizować aplikację.

Dostawca powinien ograniczyć dostęp do charakterystyki wersji oprogramowania układowego, aby uniemożliwić śledzenie urządzenia. Sugerowane ograniczenia:

  • powiązane urządzenia powinny mieć dostęp w każdej chwili,
  • każde urządzenie powinno mieć dostęp, gdy dostawca jest wykrywalny;

Jeśli dostawca obsługuje Centrum lokalizacji, wymagane jest dodatkowe wdrożenie. Więcej informacji znajdziesz w artykule Aktualizacje oprogramowania Centrum lokalizacji.