Değişmez Cihaz Kimlikleri

Android 6 ve sonraki sürümlerde, Wi-Fi servis sağlayıcılarının 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 (kimlikler) ayrıcalıklı izin düzeyine sahip uygulamalara erişimi sınırlayan ek kısıtlamalar mevcuttur. 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 önceki bir sürümünü hedeflese bile cihaz kimlikleri tüm Android 10 cihazlarda kısıtlanmıştır. Cihaz kimliklerine şu yolla erişilebilir:

Ayrıcalıklı paket erişimi

Cihaz kimliklerine erişmek için bir paket ayrıcalıklı olmalıdır. Manifest.permission sınıfında READ_PRIVILEGED_PHONE_STATE iznine sahip olmalı ve privapp-permission.xml dosyasında beyaz listeye privapp-permission.xml . Beyaz liste süreciyle ilgili bilgi için Ayrıcalıklı İzni Beyaz Listeye Ekleme konusuna bakın.

Ayrıcalıklı olmayan bir paket için benzersiz bir kimlik edinme 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 hale getirilmiş MAC adresleri

Cihaz kimliklerini daha da 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, yazılım erişim noktasında (AP) veya Wi-Fi Direct kullanım durumlarında aygıtın fabrika MAC adresini kullanmayın. Ayrıcalıklı uygulamalar olmayan herkese açık API'lardan gizli kalmalıdır. Fabrika MAC adresinin iade edilmesini 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 hale getirilmiş bir MAC adresi edinmeyi öğrenmek için bkz. Randomize 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österilir

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

Cihaz kimliği API'larını ç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 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şim gereksinimlerini karşılamadığına dair bir gösterge içeren bir SecurityException oluşturur.

Değişmez 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 aygıt seri numarası ve geçerli IMEI / MEID SİM seri numarası ve abone kimliği erişim önlenmelidir. Bu kimliklere erişim izni olan uygulamaların, cihaz kimliklerine kimler erişebilir altında listelenen kriterlerden birini de karşılaması gerekir.