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

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

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

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

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