Перевод записи https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html
В этой записи рассказывается о том, что вам грозит, когда пользователь обновится на Android O, если вы тем или иным способом пытаетесь этого пользователя распознавать, получать его ID. Как обычно, строго рекомендую читать оригинал, а не мой корявый перевод.
В этой записи рассказывается о том, что вам грозит, когда пользователь обновится на Android O, если вы тем или иным способом пытаетесь этого пользователя распознавать, получать его ID. Как обычно, строго рекомендую читать оригинал, а не мой корявый перевод.
Изменения в работе с идентификаторами устройства в Android O
Posted by Giles Hogben, Privacy Engineer
В Android O появляются некоторые улучшения, дабы помочь пользователю управлять доступом к своим идентификаторам. Эти улучшения включают:
В Android O появляются некоторые улучшения, дабы помочь пользователю управлять доступом к своим идентификаторам. Эти улучшения включают:
- Ограничение на использование постоянных (не сбрасываемых) устройство-зависимых идентификаторов
- Обновление системой Wi-Fi стека, связанного с изменениями прошивки Wi-Fi чипсета на устройствах типа Pixel, Pixel XL и Nexus 5x для рандомизации MAC адресов во время сканирований сетей
- Обновление в механизме, которым приложения запрашивали информацию об учётной записи и предоставление большего контроля над данными пользователя
Изменения в Device identifier
Некоторые изменения в Android O, связанные с
идентификаторами устройства:
Android ID
В O, Android ID (Settings.Secure.ANDROID_ID или SSAID) отдаёт разные значения для
каждого приложения и каждого пользователя на устройстве. Разработчики,
запрашивающие устройство-зависимые идентификаторы, должны вместо этого
использовать сбрасываемые идентификаторы, типа Advertising ID, дающие
пользователям больше контроля. Кроме того Advertising ID даёт удобную пользователю настройку для
ограничения отслеживания его действий в рекламных целях.
Дополнительно в Android O:
Дополнительно в Android O:
- Значение ANDROID_ID не будет изменяться при удалении/переустановке пакета до тех пор, пока пакеты имеют одинаковое имя и подписаны одной подписью. Приложения могут ориентироваться на это значение между переустановками.
- Если приложение было установлено на устройстве, работающем под более ранней версией Android, то после обновления до Android O его Android ID сохраняется для приложения между переустановками
- Значение Android ID изменяется только если устройство было сброшено до заводского состояния или изменилась подпись между удалением и переустановкой.
- Эти изменения касаются только тех устройств, которые сертифицированы Google Play services и Advertising ID. Другие производители вольны давать альтернативные сбрасываемые ID или же продолжить предоставлять ANDROID ID.
Build.SERIAL
Для приложений, с target Android O и новее android.os.Build.SERIAL теперь deprecated. Вместо этого, приложения должны использовать новый Android O API, Build.getSerial(), который возвращает
серийный номер, пока предоставлен пермишен PHONE. В будущей версии Android, приложения с таргетом Android O, будут видеть Build.SERIAL как
"UNKNOWN".
Для сохранения обратной совместимости с легаси приложениями, приложения с
таргетом более ранних версий Android
будут по-прежнему получать serial
id устройства.
Net.Hostname
Net.Hostname — это сетевое имя устройства. В предыдущих версиях Anrodoid, дефолтное значение
сетевого имени и значение сетевого имени по DHCP содержались в Settings.Secure.ANDROID_ID. В Android O net.hostname
пуст и DHCP
клиент больше не сообщает своего сетевого имени, в соответствии с IETF RFC 7844 (анонимный профиль).
Widevine ID
Для новых устройств, которые из
коробки будут иметь Android O,
Widevine Client ID будет
возвращать разные значения для каждого имени пакета и web origin (для веб-приложений).
Уникальные system и settings properties
Дополнительно к Build.SERIAL, некоторые другие settings и system properties не будут доступны в Android O. К примеру:
- ro.runtime.firstboot: Таймстамп в милисекундах первой загрузки после вайпа или самой недавней загрузки
- htc.camera.sensor.front_SN: Серийный номер камеры (доступно на некоторых устройствах HTC)
- persist.service.bdroid.bdaddr: Свойства Bluetooth MAC адреса
- Settings.Secure.bluetooth_address: Bluetooth MAC адрес устройства. В O он доступен только приложениям, которым предоставлен пермишен LOCAL_MAC_ADDRESS
Рандомизация MAC адреса в сканирующих запросах Wi-Fi
Мы работали совместно с
секьюрити ресёчерами1 для проработки вменяемой рандомизации MAC адресов для сканирующего Wi-Fi трафика, создаваемого прошивками
чипсетов устройств Google Pixel
and Nexus 5X.
Затем команда Android
Connectivity работала совместно с производителями для обновления
прошивок чипсетов этих устройств. Android O протаскивает эти изменения в Android Wi-Fi стек, так что устройства с такими же
чипсетами, которые получили обновление до Android O и выше могут получить те же преимущества.
Здесь перечислены некоторые
изменения, которые мы сделаем в прошивках Pixel, Pixel XL иNexus 5x, когда выйдет O+:
- Для каждого Wi-Fi скана, пока устройство отключено от точки доступа, используется новый случайный MAC адрес (не важно, в режиме ожидания устройство или нет).
- Начальный порядковый номер пакета для каждого сканирования также случайный.
- Ненужные информационные элементы сканирующих запросов были удалены. Теперь информационные элементы ограничены набором параметров SSID и DS.
Изменения в getAccounts API
В Android O и выше, пермишена GET_ACCOUNTS больше недостаточно для
получения доступа к списку учётных записей устройства. Приложения должны использовать API предоставляемый приложением,
управляющем определённым типом учётной записи, или же пользователь должен
предоставить пермишен для доступа к учётной записи в активити выбора учётных
записей. Например, Gmail может
получать учётные записи Google,
зарегистрированные на устройстве, потому что Google владеет приложением Gmail, но пользователь должен будет предоставить Gmail доступ к информации о
других учётных записях, зарегистрированных на устройстве.
Приложения с таргетом Android
O или позже должны использовать любой из двух вариантов — AccountManager#newChooseAccountIntent() или
метод, определяемый аутентификатором — для получения доступа к учётной записи.
Приложения с таргетом ниже O
могут продолжать использовать текущий метод.
Также в Android O приложения могут использовать методы AccountManager.setAccountVisibility()/ getVisibility() для управления политиками видимости учтётных записей, которыми владеют эти самые приложения.
Также в Android O приложения могут использовать методы AccountManager.setAccountVisibility()/ getVisibility() для управления политиками видимости учтётных записей, которыми владеют эти самые приложения.
Дополнительно, бродкаст LOGIN_ACCOUNTS_CHANGED_ACTION теперь deprecated но продолжит работать в Android O. Приложения должны
использовать addOnAccountsUpdatedListener()
для получения в реальном времени обновлений об учётных записях для тех типов
учётных записей, которые они определяют.
Загляните в Best Practices for Unique Identifiers для дополнительной информации
Загляните в Best Practices for Unique Identifiers для дополнительной информации
Замечания
- Glenn Wilkinson and team at Sensepost, UK, Célestin Matte, Mathieu Cunche: University of Lyon, INSA-Lyon, CITI Lab, Inria Privatics, Mathy Vanhoef, KU Leuven ↩
Комментариев нет:
Отправить комментарий