Изменяется ли MAC-адрес, передаваемый в Eddystone Beacon?

Опишу свою установку:

Я сделал приложение для Android, которое имитирует маяк Eddystone. Я смог обнаружить маяк Eddystone на своем телефоне с помощью приложения Beacon Toy из PlayStore. Но дело в том, что с момента последней проверки отображаемый MAC ID изменился. Я могу определить, что это один и тот же маяк, потому что пространство имен и идентификатор экземпляра одинаковы, но под другим MacID. Может ли кто-нибудь предложить, что здесь происходит? У меня сложилось впечатление, что MacID остается постоянным.


person Satendra Varma    schedule 09.02.2017    source источник


Ответы (1)


Да, передатчики Android рандомизируют MAC-адрес Bluetooth. Это не относится ни к Eddystone, ни к передатчикам маяков Android всех типов, а точнее к рекламе Android BLE.

Чтобы доказать это, я провел несколько тестов на своем Nexus 5X. Используя приложение Locate Beacon для передачи маяка в формате iBeacon (те же результаты применимы к Eddystone и другим форматам), я вижу, что передаваемый MAC-адрес меняется каждый раз, когда я останавливаю и запускаю рекламу.

Мой Nexus 5X показывает свой MAC-адрес Bluetooth в меню «Настройки» -> «О телефоне» -> «Статус» -> «Адрес Bluetooth». Это 64:bc:0c:xx:xx:xx (Примечание: я удалил последние три байта MAC-адреса, относящиеся к конкретному устройству, открыв только первые три байта, которые представляют собой OUI компании, назначенный LG Electronics, производителю Nexus 5X.)

Для этого теста я запускаю сканирование Bluetooth LE на устройстве Linux, настроенном с помощью BlueZ. Сканирование выводит MAC-адрес каждого нового найденного устройства BLE. BlueZ не шифрует этот MAC-адрес.

Далее я несколько раз запускаю и останавливаю передатчик на Nexus 5X. Каждый раз, когда я это делаю, в результатах сканирования появляется новый MAC-адрес. В приведенном ниже выводе я нажимаю клавишу возврата пару раз, чтобы после каждого обнаружения были пустые строки, чтобы показать, когда я выключаю и снова включаю передатчик.

$ sudo hcitool lescan
LE Scan ...


5C:62:56:18:DA:A5 (unknown)
5C:62:56:18:DA:A5 (unknown)


6A:E8:D1:90:CA:26 (unknown)
6A:E8:D1:90:CA:26 (unknown)


70:A8:86:F7:E9:68 (unknown)
70:A8:86:F7:E9:68 (unknown)


66:F6:B4:24:89:44 (unknown)
66:F6:B4:24:89:44 (unknown)

Как видите, каждый раз, когда передатчик запускается, он отправляет новый рандомизированный MAC-адрес, который не имеет ничего общего с физическим MAC-адресом, указанным в настройках.

person davidgyoung    schedule 09.02.2017
comment
Спасибо за подробный анализ. Любая конкретная причина, почему это делается? Почему он не привязан к одному фиксированному mac-адресу? Это еще больше затрудняет обнаружение повторного присутствия устройств BLE, если идентификатор mac продолжает меняться. На самом деле моя цель - определить уникальное количество устройств, не зависящих от идентификатора пространства имен/экземпляра в рамках eddystone. - person Satendra Varma; 10.02.2017
comment
Я считаю, что цель состоит в том, чтобы защитить конфиденциальность владельца телефона. Существует несколько компаний, занимающихся прослушиванием радиосигналов, исходящих от телефонов людей, и использованием MAC-адресов для их отслеживания в маркетинговых или других целях. Правительства делают то же самое, иногда в более сомнительных целях. Затем с помощью корреляционных методов эти организации могут связать MAC с личностью человека. Рандомизация MAC-адресов в Android затрудняет уникальную идентификацию человека этими снифферами. - person davidgyoung; 12.02.2017
comment
Ага, понятно ! Спасибо за ответ. Но учитывая, что не странно ли, что зондирующие запросы для Wi-Fi действительно состоят из Mac ID, и, если я не ошибаюсь, они также уникальны. В любом случае, я думаю, что отслеживание пользователей в помещении на основе решения маяка не может зависеть от идентификатора Bluetooth Mac. Я предполагаю, что теперь единственный вариант - заставить телефон транслировать кадры eddystone и отслеживать, используя пространство имен и идентификатор экземпляра. Еще раз спасибо - person Satendra Varma; 13.02.2017