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

В 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 .
  • Приложения с привилегиями оператора, как определено в привилегиях оператора UICC .
  • Владелец устройства или владелец профиля с разрешением READ_PHONE_STATE предоставленным в классе Manifest.permission . (Разрешенный список не требуется.)

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

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

Сведения о том, как получить уникальный идентификатор для непривилегированного пакета, см. в разделе Общие случаи использования и соответствующий идентификатор для использования .

Ограниченные идентификаторы устройств и рандомизированные 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
    • Исключение SecurityException вызывается из API ID устройства.
  • Приложения для Android 9 или более ранней версии
    • Если у них есть разрешение READ_PHONE_STATE , возвращается либо null ответ, либо данные заполнителя.
    • Если это не так, API-интерфейсы идентификатора устройства создают исключение SecurityException , содержащее имя вызываемого метода и указание на то, что вызывающее приложение не соответствует требованиям для доступа к запрошенному идентификатору.

Дополнительные сведения о неизменяемых идентификаторах устройств см. в разделе Идентификаторы несбрасываемых устройств и рекомендации по использованию уникальных идентификаторов .

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

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