Где хранятся данные рандомизации WiFi MAC?

В более новых Android есть функция, называемая рандомизацией MAC-адресов WiFi. В своей базовой форме механизм вычисляет случайный MAC-адрес для заданного ESSID. Каждый раз, когда вы подключаетесь к одному и тому же Wi-Fi, Android будет использовать ранее сгенерированный MAC-адрес. Даже если вы забудете сеть WiFi и добавите ее заново, Android будет использовать тот же MAC-адрес, что и раньше. Итак, где именно хранятся данные рандомизации WiFi MAC?

Ответы (1)

Согласно документации Android, постоянная рандомизация нигде не хранится.

Вместо этого «случайный MAC-адрес» генерируется каждый раз, когда вы подключаетесь к Wi-Fi. Это поколение основано на параметрах сети Wi-Fi:

Android генерирует постоянный рандомизированный MAC-адрес на основе параметров сетевого профиля, включая SSID, тип безопасности или полное доменное имя (для сетей Passpoint).

И я предполагаю, что дополнительно в расчет включается какой-то секретный фактор, уникальный для вашего устройства, иначе каждое Android-устройство генерировало бы один и тот же случайный MAC-адрес для одной и той же сети. Не уверен, что они на самом деле используют, может быть ANDROID_ID или какие-то случайные ~ 128-битные данные, хранящиеся где-то в вашем профиле пользователя.

В таких ситуациях обычно используется алгоритм HMAC для генерации псевдослучайных выходных данных, которые затем можно использовать для рандомизированных 46 битов MAC. Это делает практически невозможным определение используемой секретной части на основе рандомизированного MAC-адреса и вычисление MAC-адресов, которые вы использовали бы в других сетях.

Обратите внимание, что этот ответ касается только AOSP. Производитель Android может изменить рандомизацию. Согласно исследованию рандомизации MAC-адресов WiFi, Motorola, например, реализует собственную схему рандомизации MAC-адресов (а не 46-битную схему, описанную в AOSP).