Değiştirilemez Cihaz Kimlikleri

Android 6 ve sonraki sürümlerde, Wi-Fi servis sağlayıcıları ve paket analizörlerinin, ağ isteklerinden Wi-Fi yığını aracılığıyla bir cihazın fabrika MAC adresini alması kısıtlanmıştır. Android 10'dan başlayarak, cihaz tanımlayıcılarına (ID'ler) erişimi ayrıcalıklı izin düzeyine sahip uygulamalarla sınırlayan ek kısıtlamalar uygulamaya konmuştur. Bu, aşağıdaki gibi cihaz kimliklerini korur:

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

Cihaz kimliklerine kimler erişebilir?

Uygulamalar Android 9 veya daha eski sürümleri hedeflese bile cihaz kimlikleri tüm Android 10 cihazlarda kısıtlanmıştı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 olması ve privapp-permission.xml dosyasında izin verilenler listesine eklenmiş olması gerekir. İzin verilenler listesi süreci hakkında bilgi için Ayrıcalıklı İzin İzin Verilenler Listesine Ekleme konusuna bakın.

Ayrıcalıklı olmayan bir paket için benzersiz bir kimlik alma konusunda bilgi edinmek için Yaygın 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 da kısıtlamak için Android 10'daki tüm cihazlar, hem araştırma hem de ilgili istekler için varsayılan olarak rastgele MAC adresleri iletir ve her SSID için farklı bir rastgele MAC adresine sahip olmaları gerekir. İstemci modunda, yazılım erişim noktasında (AP) veya Wi-Fi Direct kullanım durumlarında cihazın fabrika MAC adresini kullanmayın. Ayrıcalıklı uygulamalar olmayan, herkesin erişebildiği 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. Bu seçenek, Ayarlar > Ağ ayrıntıları bölümündeki Gizlilik altında görüntülenebilir. Rastgele bir MAC adresi elde etme 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 olarak gösteriliyor

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

Cihaz kimliği API'lerini çağıran uygulamaların Android 10 gereksinimlerini karşılaması gerekir. 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.
    • Bunu yapmazlarsa cihaz kimliği API'leri, çağrılan yöntemin adını ve çağıran uygulamanın istenen kimliğe erişim gereksinimlerini karşılamadığına dair bir göstergeyi içeren 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ılara yönelik en iyi uygulamalara bakın.

Test yapmak

Uygulamaların cihazın seri numarasına ve uygun olduğu durumlarda 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 bölümünde listelenen ölçütlerden birini de karşılaması gerekir.