Niezmienne identyfikatory urządzeń

W systemie Android 6 i nowszych dostawcy usług Wi-Fi i analizatory pakietów nie mogą pobierać fabrycznego adresu MAC urządzenia przez stos Wi-Fi z żądań sieciowych. Począwszy od Androida 10, obowiązują dodatkowe ograniczenia, które ograniczają dostęp do identyfikatorów urządzeń (ID) do aplikacji z poziomem uprawnień uprzywilejowanych . Chroni to identyfikatory urządzeń, takie jak

  • numery IMEI, MEID, ESN i IMSI telefonii.
  • numery seryjne kompilacji, karty SIM lub USB.

Kto może uzyskać dostęp do identyfikatorów urządzeń

Identyfikatory urządzeń są ograniczone na wszystkich urządzeniach z Androidem 10, nawet jeśli aplikacje są kierowane na Androida 9 lub starszego. Dostęp do identyfikatorów urządzeń można uzyskać przez

Uprzywilejowany dostęp do pakietów

Pakiet musi mieć uprawnienia dostępu do identyfikatorów urządzeń. Musi mieć uprawnienie READ_PRIVILEGED_PHONE_STATE w klasie Manifest.permission i znajdować się na liście dozwolonych w pliku privapp-permission.xml . Aby uzyskać informacje na temat procesu listy dozwolonych, zobacz Lista dozwolonych uprawnień uprzywilejowanych .

Aby uzyskać informacje na temat uzyskiwania unikalnego identyfikatora dla pakietu nieuprzywilejowanego , zobacz Typowe przypadki użycia i odpowiedni identyfikator do użycia .

Ograniczone identyfikatory urządzeń i losowe adresy MAC

Aby jeszcze bardziej ograniczyć identyfikatory urządzeń, wszystkie urządzenia w systemie Android 10 domyślnie przesyłają losowe adresy MAC zarówno dla żądań sondy, jak i powiązanych żądań, i muszą mieć inny losowy adres MAC dla każdego identyfikatora SSID. Nie używaj fabrycznego adresu MAC urządzenia w trybie klienta, w programowym punkcie dostępowym (AP) lub w przypadkach użycia Wi-Fi Direct. Musi pozostać ukryty przed publicznie dostępnymi interfejsami API, które nie są uprzywilejowanymi aplikacjami. Aplikacje uprzywilejowane, które wymagają zwrócenia fabrycznego adresu MAC, muszą mieć uprawnienie LOCAL_MAC_ADDRESS .

Użytkownicy mają możliwość zachowania domyślnego losowego adresu MAC przypisanego do każdego identyfikatora SSID. Ta opcja jest widoczna w sekcji Prywatność w Ustawienia > Szczegóły sieci . Aby dowiedzieć się, jak uzyskać losowy adres MAC, zobacz Losowe adresy MAC .

Screen shows if device ID uses a randomized MAC address for privacy
Rysunek 1. Adres MAC jest wyświetlany jako losowy w obszarze Prywatność w szczegółach sieci

Aplikacje wywołujące interfejsy API identyfikatorów urządzeń

Aplikacje wywołujące interfejsy API identyfikatorów urządzeń muszą spełniać wymagania systemu Android 10. W przeciwnym razie, gdy próbują uzyskać dostęp do identyfikatorów urządzeń, zwracane są następujące informacje:

  • Aplikacje kierowane na Androida 10
  • Aplikacje na Androida 9 lub starszego
    • Jeśli mają uprawnienie READ_PHONE_STATE , zwracana jest odpowiedź o null lub dane zastępcze.
    • Jeśli nie, interfejsy API identyfikatorów urządzeń zgłaszają SecurityException , który zawiera nazwę wywoływanej metody oraz wskazanie, że aplikacja wywołująca nie spełnia wymagań dostępu do żądanego identyfikatora.

Aby uzyskać więcej informacji na temat niezmiennych identyfikatorów urządzeń, zobacz Identyfikatory urządzeń, których nie można zresetować i najlepsze praktyki dotyczące unikatowych identyfikatorów .

Testowanie

Należy uniemożliwić aplikacjom dostęp do numeru seryjnego urządzenia oraz, w stosownych przypadkach, IMEI / MEID, numeru seryjnego karty SIM i identyfikatora subskrybenta. Aplikacje z uprawnieniami dostępu do tych identyfikatorów muszą też spełniać jedno z kryteriów wymienionych w sekcji Kto może uzyskać dostęp do identyfikatorów urządzeń .