In Android 6 e versioni successive, ai provider di servizi Wi-Fi e agli analizzatori di pacchetti è stato impedito di recuperare l'indirizzo MAC di fabbrica di un dispositivo attraverso lo stack Wi-Fi dalle richieste di rete. A partire da Android 10, sono in vigore restrizioni aggiuntive che limitano l'accesso agli identificatori del dispositivo (ID) alle app con il livello di autorizzazione privilegiato . Ciò protegge gli ID del dispositivo come
- numeri IMEI, MEID, ESN e IMSI di telefonia.
- build, SIM o numeri di serie USB.
Chi può accedere agli ID dispositivo
Gli ID dispositivo sono limitati su tutti i dispositivi Android 10, anche se le app hanno come target Android 9 o versioni precedenti. È possibile accedere agli ID dispositivo tramite
- L'app SMS predefinita.
- App con autorizzazione
READ_PRIVILEGED_PHONE_STATE
nella classeManifest.permission
e autorizzazione nel fileprivapp-permission.xml
. Anche questi devono essere caricati nella directorypriv-app
. - App con privilegi dell'operatore definiti in Privilegi dell'operatore UICC .
- Un proprietario del dispositivo o un proprietario del profilo con l'autorizzazione
READ_PHONE_STATE
concessa nella classeManifest.permission
. (L'inserimento nell'elenco consentito non è obbligatorio.)
Accesso privilegiato ai pacchetti
Un pacchetto deve avere privilegi per accedere agli ID dispositivo. Deve avere l'autorizzazione READ_PRIVILEGED_PHONE_STATE
nella classe Manifest.permission
ed essere inserito nella lista consentita nel file privapp-permission.xml
. Per informazioni sul processo della lista consentita, consulta Inserimento nella lista consentita delle autorizzazioni privilegiate .
Per informazioni su come ottenere un ID univoco per un pacchetto non privilegiato , fare riferimento a Casi d'uso comuni e all'identificatore appropriato da utilizzare .
ID dispositivo limitati e indirizzi MAC randomizzati
Per limitare ulteriormente gli ID dispositivo, tutti i dispositivi su Android 10 trasmettono indirizzi MAC randomizzati per impostazione predefinita sia per il sondaggio che per le richieste associate e devono avere un indirizzo MAC randomizzato diverso per ciascun SSID. Non utilizzare l'indirizzo MAC predefinito del dispositivo in modalità client, punto di accesso software (AP) o casi d'uso Wi-Fi Direct. Deve rimanere nascosto alle API accessibili pubblicamente che non siano app privilegiate. Le app privilegiate che richiedono la restituzione dell'indirizzo MAC di fabbrica devono disporre dell'autorizzazione LOCAL_MAC_ADDRESS
.
Gli utenti hanno la possibilità di mantenere l'indirizzo MAC casuale predefinito assegnato a ciascun SSID. L'opzione è visibile in Privacy in Impostazioni > Dettagli rete . Per informazioni su come ottenere un indirizzo MAC randomizzato, vedere Indirizzi MAC randomizzati .
App che richiamano le API dell'ID dispositivo
Le app che richiamano le API ID dispositivo devono soddisfare i requisiti di Android 10. Altrimenti, quando tentano di accedere agli ID dispositivo, viene restituito quanto segue:
- App destinate ad Android 10
- Viene generata un'eccezione
SecurityException
dalle API dell'ID dispositivo. - App destinate ad Android 9 o versioni precedenti
- Se dispongono dell'autorizzazione
READ_PHONE_STATE
, verrà restituita una rispostanull
o dati segnaposto. - In caso contrario, le API dell'ID dispositivo generano un'eccezione
SecurityException
che contiene il nome del metodo chiamato e un'indicazione che l'app chiamante non soddisfa i requisiti per accedere all'ID richiesto.
Per ulteriori informazioni sugli ID dei dispositivi immutabili, consulta Identificatori dei dispositivi non ripristinabili e best practice per gli identificatori univoci .
Test
È necessario impedire alle app di accedere al numero di serie del dispositivo e, ove applicabile, all'IMEI/MEID, al numero di serie della SIM e all'ID dell'abbonato. Le app autorizzate ad accedere a questi ID devono soddisfare anche uno dei criteri elencati in Chi può accedere agli ID dispositivo .