Неизменяемые идентификаторы устройств

В Android 6 и более поздних версиях поставщикам услуг Wi-Fi и анализаторам пакетов было запрещено извлекать заводской MAC-адрес устройства через стек Wi-Fi из сетевых запросов. Начиная с Android 10, дополнительные ограничения на месте , которые ограничивают доступ к идентификаторам устройств (ID) для приложений с привилегированным уровнем разрешения . Это защищает идентификаторы устройств, такие как

  • телефонные номера IMEI, MEID, ESN и IMSI.
  • сборка, серийные номера SIM или USB.

Кто может получить доступ к идентификаторам устройств

Идентификаторы устройств ограничены на всех устройствах Android 10, даже если приложения предназначены для Android 9 или более ранней версии. К идентификаторам устройств можно получить доступ через

  • Приложение для SMS по умолчанию.
  • Приложения , как READ_PRIVILEGED_PHONE_STATE разрешения в Manifest.permission класса, и белый список в privapp-permission.xml файл. Они также должны быть загружены в priv-app каталога.
  • Приложения с привилегиями несущим , как определены в привилегиях UI Carrier .
  • Владелец устройства или владелец профиля с READ_PHONE_STATE разрешений предоставляются в Manifest.permission классе. (Внесение в белый список не требуется.)

Доступ к привилегированным пакетам

Пакет должен иметь привилегии для доступа к идентификаторам устройств. Он должен иметь READ_PRIVILEGED_PHONE_STATE разрешения в Manifest.permission классе, и белый список в privapp-permission.xml файл. Для получения информации о процессе белого списка, см Привилегированного Разрешения Whitelisting .

Для получения информации о получении уникального идентификатора для непривилегированного пакета, обратитесь к прецедентам Common и соответствующему идентификатору для использования .

Ограниченные идентификаторы устройств и рандомизированные MAC-адреса

Чтобы еще больше ограничить идентификаторы устройств, все устройства на Android 10 по умолчанию передают рандомизированные MAC-адреса как для зондирующих, так и для связанных запросов и должны иметь разные рандомизированные MAC-адреса для каждого SSID. Не используйте заводской MAC-адрес устройства в клиентском режиме, в программной точке доступа (AP) или в сценариях использования Wi-Fi Direct. Он должен оставаться скрытым от общедоступных API-интерфейсов, которые не являются привилегированными приложениями. Привилегированные приложения , которые требуют завода MAC - адрес должны быть возвращено, должны иметь LOCAL_MAC_ADDRESS разрешения.

Пользователи имеют возможность сохранить по умолчанию рандомизированы MAC - адрес , который присваивается каждому SSID. Опция доступна для просмотра при конфиденциальности в Настройки> Сетевые детали. Чтобы узнать о получении рандомизированного MAC адрес см рандомизированного MAC - адрес .

Screen shows if device ID uses a randomized MAC address for privacy
Адрес показывает Рисунок 1. MAC , как рандомизированные при секретности в деталях сети

Приложения, которые вызывают API идентификатора устройства

Приложения, которые вызывают API идентификатора устройства, должны соответствовать требованиям Android 10. В противном случае, когда они пытаются получить доступ к идентификаторам устройств, возвращается следующее:

  • Приложения для Android 10
  • Приложения для Android 9 или более ранней версии
    • Если у них есть READ_PHONE_STATE разрешения, либо null ответ или данные заполнители возвращаются.
    • Если они этого не делают, то устройство ID APIs кинуть SecurityException , который содержит имя метода , называемого, и признак того, что вызывающий приложение не отвечает требованиям для доступа к запрошенному ID.

Более подробной информации о идентификаторах неизменных устройств см идентификаторов Nonresettable устройств и лучшие практики для уникальных идентификаторов .

Тестирование

Приложения необходимо предотвратить доступ к серийному номеру устройства и, где это применимо, IMEI / MEID, SIM - серийный номер и идентификатор абонента. Программы с разрешения на доступ к этим идентификаторы также должны соответствовать одному из критериев , перечисленных в разделе Кто может получить доступ идентификаторов устройств .