В 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-адреса» .
Рис. 1. MAC-адрес отображается в случайном порядке в разделе «Конфиденциальность» в разделе «Сведения о сети».
Приложения, вызывающие API идентификатора устройства
Приложения, вызывающие API идентификатора устройства, должны соответствовать требованиям Android 10. В противном случае, когда они пытаются получить доступ к идентификаторам устройств, возвращается следующее:
- Приложения, ориентированные на Android 10
-
SecurityException
генерируется API-интерфейсами идентификатора устройства. - Приложения для Android 9 или более ранней версии
- Если у них есть разрешение
READ_PHONE_STATE
, возвращается либоnull
ответ, либо данные-заполнители. - В противном случае API-интерфейсы идентификатора устройства выбрасывают
SecurityException
, содержащее имя вызываемого метода и указание на то, что вызывающее приложение не соответствует требованиям для доступа к запрошенному идентификатору.
Дополнительные сведения о неизменяемых идентификаторах устройств см. в разделе Несбрасываемые идентификаторы устройств и рекомендации по использованию уникальных идентификаторов .
Тестирование
Приложениям необходимо запретить доступ к серийному номеру устройства и, если применимо, к IMEI или MEID, серийному номеру SIM-карты и идентификатору подписчика. Приложения, которым разрешен доступ к этим идентификаторам, также должны соответствовать одному из критериев, перечисленных в разделе «Кто может получить доступ к идентификаторам устройств» .