Değiştirilemez Cihaz Kimlikleri

Android 6 ve sonraki sürümlerde, Wi-Fi hizmet sağlayıcıları ve paket analizörleri, ağ isteklerinden Wi-Fi yığını aracılığıyla bir cihazın fabrika MAC adresini almaktan kısıtlanmıştır. Android 10'dan itibaren, ayrıcalıklı izin düzeyine sahip uygulamalara cihaz tanımlayıcılarına (ID'ler) erişimi sınırlayan ek kısıtlamalar uygulanmaktadır. Bu, aşağıdakiler gibi cihaz kimliklerini korur:

  • telefon IMEI, MEID, ESN ve IMSI numaraları.
  • yapı, SIM veya USB seri numaraları.

Cihaz kimliklerine kimler erişebilir?

Uygulamalar Android 9 veya önceki sürümleri hedeflese bile, cihaz kimlikleri tüm Android 10 cihazlarda kısıtlanır. Cihaz kimliklerine şuradan erişilebilir:

Ayrıcalıklı paket erişimi

Cihaz kimliklerine erişmek için bir paketin ayrıcalıklı olması gerekir. Manifest.permission sınıfında READ_PRIVILEGED_PHONE_STATE iznine sahip olmalı ve privapp-permission.xml dosyasında izin verilenler listesine eklenmelidir. İzin verilenler listesi süreci hakkında bilgi için bkz. Ayrıcalıklı İzin İzin Verilenler Listesi .

Ayrıcalıklı olmayan bir paket için benzersiz bir kimlik alma hakkında bilgi için, Ortak kullanım örneklerine ve kullanılacak uygun tanımlayıcıya bakın.

Kısıtlanmış cihaz kimlikleri ve rastgele MAC adresleri

Cihaz kimliklerini daha fazla kısıtlamak için Android 10'daki tüm cihazlar, hem araştırma hem de ilişkili istekler için varsayılan olarak rastgele MAC adresleri iletir ve her SSID için farklı bir rastgele MAC adresine sahip olmalıdır. İstemci modunda, yumuşak erişim noktasında (AP) veya Wi-Fi Direct kullanım durumlarında cihaz fabrika MAC adresini kullanmayın. Ayrıcalıklı uygulamalar olmayan, genel olarak erişilebilir API'lerden gizli kalmalıdır. Fabrika MAC adresinin döndürülmesini gerektiren ayrıcalıklı uygulamaların LOCAL_MAC_ADDRESS iznine sahip olması gerekir.

Kullanıcılar, her SSID'ye atanan varsayılan rastgele MAC adresini koruma seçeneğine sahiptir. Seçenek, Ayarlar > Ağ ayrıntıları bölümünde Gizlilik altında görüntülenebilir. Rastgele bir MAC adresi alma hakkında bilgi edinmek için bkz. Rastgele MAC adresleri .

Screen shows if device ID uses a randomized MAC address for privacy
Şekil 1. MAC adresi, Ağ ayrıntılarında Gizlilik altında rastgele görünüyor

Cihaz kimliği API'lerini çağıran uygulamalar

Cihaz kimliği API'lerini çağıran uygulamalar, Android 10 gereksinimlerini karşılamalıdır. Aksi takdirde, cihaz kimliklerine erişmeye çalıştıklarında aşağıdakiler döndürülür:

  • Android 10'u hedefleyen uygulamalar
  • Android 9 veya önceki sürümleri hedefleyen uygulamalar
    • READ_PHONE_STATE iznine sahiplerse, null bir yanıt veya yer tutucu verileri döndürülür.
    • Aksi takdirde, cihaz kimliği API'leri, çağrılan yöntemin adını ve çağıran uygulamanın istenen kimliğe erişme gereksinimlerini karşılamadığını gösteren bir SecurityException oluşturur.

Değiştirilemez cihaz kimlikleri hakkında daha fazla bilgi için Sıfırlanamayan cihaz tanımlayıcıları ve benzersiz tanımlayıcılar için en iyi uygulamalar bölümüne bakın.

Test yapmak

Uygulamaların cihaz seri numarasına ve varsa IMEI / MEID'ye, SIM seri numarasına ve abone kimliğine erişmesi engellenmelidir. Bu kimliklere erişim iznine sahip uygulamaların, Cihaz kimliklerine kimler erişebilir altında listelenen kriterlerden birini de karşılaması gerekir.