IBeacon
IBeacon (англ. iBeacon) — это протокол, разработанный компанией Apple и представленный на конференции Apple Worldwide Developers Conference в 2013 году[1]. С тех пор различные производители начали выпускать аппаратные передатчики, совместимые с iBeacon, — обычно они называются маяки (beacons) — специализированные устройства на основе Bluetooth Low Energy (BLE), которые транслируют свой идентификатор рядом находящимся переносным электронным устройствам. Эта технология позволяет смартфонам, планшетам и другим устройствам выполнять определённые действия при нахождении рядом с iBeacon[2][3].
Протокол iBeacon основан на обнаружении близости на базе Bluetooth Low Energy посредством передачи универсального уникального идентификатора (UUID), который принимается совместимым приложением или операционной системой. Этот идентификатор и данные, передаваемые вместе с ним, могут использоваться для определения физического местоположения устройства, отслеживания клиентов или запуска локационно-зависимых действий на устройстве, таких как чекин в социальных сетях или push-уведомление.
iBeacon также может использоваться в мобильных приложениях как система навигации в помещениях, позволяя смартфону определить своё приближённое местоположение или контекст. С помощью iBeacon программное обеспечение смартфона может локализовать себя относительно конкретного маяка в магазине. Маяки применяются магазинами розничной торговли для мобильной коммерции, предложения специальных акций и мобильного маркетинга[4], а также могут поддерживать мобильные платежи через системы точек продаж.
Другие применения включают отправку сообщений в определённых точках интереса — например, внутри магазина, на остановке, в комнате или даже у конкретного предмета мебели или торгового автомата. Это похоже на технологии геопуш с использованием GPS, но iBeacon обеспечивает существенно меньший расход энергии и большую точность.
Помимо розничной торговли, технология активно применяется в навигации внутри помещений (например, на вокзалах и в аэропортах, где сигнал GPS недоступен)[5], а также в городской инфраструктуре для создания сервисов «умного города»[6]. В здравоохранении и логистике iBeacon используется для отслеживания медицинского оборудования, грузов и других активов, а также для оптимизации рабочих процессов и навигации в крупных больничных комплексах[7][8].
iBeacon отличается от других локационных технологий тем, что устройство-маяк выступает только в роли одностороннего передатчика, а для взаимодействия с ним устройство-получатель должно иметь установленное приложение. Это гарантирует, что отслеживание пользователей происходит только через установленное приложение, а не через передатчик iBeacon.
Передатчики iBeacon производятся в различных форм-факторах: компактные устройства на батарейках, USB-стики и универсальные USB-донглы с поддержкой Bluetooth 4.0[9].
Функции
Развёртывание iBeacon включает один или несколько маяков, которые транслируют свой уникальный идентификационный номер в близлежащую область. Программное обеспечение на принимающем устройстве может идентифицировать маяк и выполнять необходимые действия, например уведомлять пользователя. Принимающие устройства также могут подключаться к iBeacon и получать значения из сервиса GATT (General Attribute Profile). Маяки iBeacon не отправляют push-уведомления напрямую на устройства — они лишь передают свою идентичность. Однако мобильное ПО может использовать сигнал маяка для самостоятельного срабатывания push-уведомлений.
Мониторинг региона
Мониторинг регионов (на iOS ограничен 20 регионами) может работать в фоновом режиме и информировать приложение (и/или пользователя) о входе/выходе из зоны — даже если приложение находится в фоновом режиме или телефон заблокирован. Также поддерживается короткий промежуток времени, когда iOS предоставит закрытому приложению возможность среагировать на вход в регион.
Ранжирование (Ranging)
В отличие от мониторинга, который фиксирует только перемещение устройства внутрь и за пределы зоны маяка, ранжирование предоставляет список обнаруженных маяков в регионе и оценивает расстояние до каждого из них. Режим ранжирования работает только в активном приложении, предоставляя массив (без ограничения по количеству) всех обнаруженных маяков с их свойствами (UUID и т. д.)[10].
Устройство с iOS, принимающее сигнал маяка, может приблизительно оценивать расстояние до него. Выделяют три диапазона:
- Непосредственно (Immediate): в пределах нескольких сантиметров.
- Близко (Near): в пределах нескольких метров.
- Далеко (Far): более 10 метров.
Маяк iBeacon позволяет приблизительно определить, когда пользователь вошёл, покинул или задержался в регионе. В зависимости от близости к маяку возможны различные уровни взаимодействия[11].
Максимальная дальность передачи сигнала зависит от расположения, препятствий и того, где хранится устройство (например, в кожаной сумке или толстом чехле). Стандартные маяки имеют радиус до 70 метров, а дальнобойные — до 450 метров.
Настройки
Частота передачи сигналов iBeacon зависит от конфигурации и может изменяться разными способами в зависимости от устройства. На энергопотребление iBeacon влияют частота передачи сигнала, мощность передачи, а также параметры Major и Minor, которые используются для группировки и идентификации конкретных маяков в рамках одной системы. Например, в одном магазине все маяки могут иметь одинаковое значение Major (идентификатор магазина) и различные Minor (номера зон или стендов).
Энергопотребление
Протокол Bluetooth LE (BLE) значительно энергоэффективнее классического Bluetooth. Несколько производителей микросхем, включая Texas Instruments[13] и Nordic Semiconductor, выпускают чипы, оптимизированные для iBeacon. Энергопотребление зависит от настроек частоты вещания и мощности передачи. Исторически аккумулятор маяка, согласно отчёту о 16 разных моделях, мог работать от 1 до 24 месяцев. Рекомендуемая Apple настройка (100 мс, батарейка-«таблетка») обеспечивала 1–3 месяца работы, при увеличении интервала вещания до 900 мс — до 2–3 лет[14]. Современные промышленные модели могут работать до 5–7 лет[15].
Новые версии стандарта Bluetooth (5.0 и 5.2) повысили энергоэффективность за счёт увеличения скорости передачи данных и динамического управления питанием[16].[17]
Потребление энергии мобильными телефонами также стоит учитывать при внедрении приложений с поддержкой маяков. Отчёты показывают, что старые устройства расходуют больше заряда в окружении маяков, чем новые модели[18]. К факторам энергопотребления относится время сканирования, количество сканирований и число маяков поблизости[19]. По данным Aislelabs, при десяти окружающих маяках iPhone 4s мог расходовать до 11 % заряда батареи в час, тогда как iPhone 5s — около 5 % в час[20]. На современных устройствах (например, последних моделях iPhone) влияние iBeacon на батарею в фоновом режиме считается незначительным[21]. Энергоэффективное приложение должно учитывать эти аспекты ради оптимального баланса между отзывчивостью и расходом энергии.
История и развитие
В середине 2013 года Apple представила iBeacon, и эксперты писали, что технология предназначена в первую очередь для ритейла — упрощения платежей и акций в торговых точках. 6 декабря 2013 года Apple активировала iBeacon во всех 254 магазинах США[22]. McDonald's использовала устройства для рассылки специальных предложений своим посетителям[4].
По состоянию на май 2014 года, разные модели аппаратных iBeacon стоили от 5 до 30 долларов за штуку[23]. По умолчанию маяки могут иметь различные параметры мощности передачи и частоты вещания, которые могут варьироваться от 1 до 10 Гц.
Технология iBeacon находится на ранней стадии развития. Было отмечено, что в Android 4.2 и 4.3 может возникать сбой стека Bluetooth при большом числе маяков[24], но эта проблема была решена в Android 4.4.4[25].
Технические детали
BLE-устройства могут работать в режиме анонсирования, оповещая другие устройства о своём присутствии[26]. В простейшей форме маяк iBeacon — это BLE-устройство, излучающее анонсы в формате, определённом Apple: префикс iBeacon, далее переменный UUID, Major и Minor. Пример фрейма:
fb0b57a2-8228-44cd-913a-94a122ba1206 Major 1 Minor 2
где fb0b57a2-8228-44cd-913a-94a122ba1206 — UUID.
Маяк iBeacon может быть сгенерирован, исполнив следующие команды в Linux для совместимых BLE-устройств (ядро с поддержкой BTLE):[27]
(Настройка параметров LE Advertising) hcitool -i hci0 cmd 0x08 0x0006 a0 00 a0 00 03 00 00 00 00 00 00 00 00 07 00 # a0 00: Минимальный интервал вещания (16-бит, Little Endian) # a0 00: Максимальный интервал вещания (то же самое)
(Настройка данных LE Advertisement) hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 06 1A FF 4C 00 02 15 FB 0B 57 A2 82 28 44 CD 91 3A 94 A1 22 BA 12 06 00 01 00 02 D1 00 # 1E: Число байт анонса (макс. 31) # 02 01 06 1A FF 4C 00 02 15: Префикс Apple
(Включение вещания) hcitool -i hci0 cmd 0x08 0x000a 01
Для новой настройки интервала вещания трансляцию следует остановить:
(Отключение вещания) hcitool -i hci0 cmd 0x08 0x000a 00
Устройства на Android, начиная с версии 4.3, могут принимать сигналы iBeacon, но до версии 5.0 только принимать, а поддержка передачи появилась с Android 5.0 ("Lollipop")[28].
Аппаратно iBeacon совместим со спецификациями Bluetooth 5.3 и 5.4, но не использует новые режимы двунаправленной связи, такие как PAwR[29][30]. Также в iOS 18 для взаимодействия с GATT-сервисами маяков (используемыми для их настройки) внедрён новый фреймворк AccessorySetupKit, повышающий безопасность и контроль доступа[31].
Структура BLE-пакета анонса (byte map)
- Байт 0–2: Стандартные флаги BLE (не строго обязательны, но рекомендуются)
Байт 0: Длина — 0x02 Байт 1: Тип — 0x01 (Flags) Байт 2: Значение — 0x06 (обычно: режим обнаружения LE, классический Bluetooth — выключен)
- Байт 3–29: Данные по спецификации Apple iBeacon
Байт 3: Длина — 0x1a (длина следующего блока) Байт 4: Тип — 0xff (Custom Manufacturer Data) Байт 5–6: ID производителя — 0x004c (Apple) Байт 7: SubType — 0x02 (тип iBeacon) Байт 8: Длина SubType — 0x15 (остаток данных: UUID + Major + Minor + TX Power) Байт 9–24: UUID (случайный или зарегистрированный публичный UUID маяка) Байт 25–26: Major (настраиваемое значение) Байт 27–28: Minor (настраиваемое значение) Байт 29: Измеренная мощность передачи (8 бит, знаковое, dBm на 1 м от маяка; задаётся пользователем, не динамичный — может использоваться совместно с RSSI для приблизительной оценки расстояния)
Поддержка iBeacon на Android
В отличие от iOS, в Android нет нативной поддержки протокола iBeacon. Для использования iBeacon на Android разработчику необходимо применять сторонние библиотеки или самостоятельно парсить BLE-пакеты для поиска iBeacon-сообщений. Поддержка BLE появилась в Android Jelly Bean, основные баги были исправлены в Android KitKat, а в Android Marshmallow 6.0.1 появилась важная оптимизация безопасности, предотвращающая "утечки" соединений между приложениями.
Начиная с Android 12 и вплоть до Android 15 модель разрешений для работы с Bluetooth Low Energy была изменена: для сканирования маяков приложениям требуются разрешения BLUETOOTH_SCAN и ACCESS_FINE_LOCATION, а для фоновой работы в новых версиях необходимо учитывать разрешение BLUETOOTH_BACKGROUND[32].
Спуфинг (подмена маяка)
По замыслу, передаваемый фрейм iBeacon не зашифрован и открыт. Это даёт возможность заинтересованным лицам перехватить, копировать и повторно передавать кадры iBeacon на других физических точках. Это реализуется с помощью последовательности команд BLE-устройству. Сообщалось об успешном копировании маяков Apple Store в 2014 году[33].
Это не уязвимость самого протокола iBeacon, однако разработчикам приложений следует учитывать подобные сценарии при проектировании защиты.
PayPal реализует более надёжную схему, при которой iBeacon лишь инициирует многоступенчатую процедуру аутентификации (вызов-ответ), что намного сложнее подделать или сбить спуфингом[34].
Для защиты современных IoT-систем от клонирования применяются методы на стороне сервера и приложения, такие как ротация идентификаторов (периодическая смена транслируемых UUID, Major и Minor с синхронизацией через бэкенд) и криптографическая аутентификация маяков на управляющей платформе[35].[36].
Сканирование маяков iBeacon в Linux:
hcitool -i hci0 lescan --passive --duplicates D6:EE:D4:16:ED:FC (unknown) F6:BE:90:32:3C:5E (unknown) ...
В другом окне — протокол-дюмпер:
hcidump -R -i hci0 > 04 3E 2A 02 01 00 01 FC ED 16 D4 EE D6 1E 02 01 06 1A FF 4C ...
См. спецификацию Bluetooth Core Spec. Volume 4, Part E, 7.7.65.2.
MAC-адрес и полезная нагрузка iBeacon отчётливо определяются. Команды настройки из раздела Технические детали позволяют воспроизвести любой iBeacon.
Совместимые устройства
- Устройства iOS с Bluetooth 4.0+ (iPhone 4s и новее, iPad (3-е поколение) и новее, iPad Mini (1-е поколение) и новее, iPod Touch (5-е поколение) и новее)
- Компьютеры Macintosh с OS X Mavericks (10.9) или новее и Bluetooth 4.0
- Устройства Android c Bluetooth 4.0+ и Android 4.3+ (например, Samsung Galaxy S7/J1 mini Prime, Samsung Galaxy Note 2/3, HTC One, Google/LG Nexus 7 2013 /Nexus 4/Nexus 5, OnePlus One, LG G3)[37]
- Устройства Windows Phone с Bluetooth 4.0+ и обновлением Lumia Cyan или новее
Сравнимые технологии
Несмотря на то, что область применения ближней бесконтактной связи (NFC) существенно отличается и многие сценарии не пересекаются с iBeacon, оба типа технологий сравниваются между собой.
Дальность действия NFC — до 20 см (оптимум менее 4 см), тогда как у iBeacon она значительно выше.
Не все телефоны оснащаются NFC-чипами. Первый iPhone с NFC появился только в модели iPhone 6 (сентябрь 2014), хотя большинство современных смартфонов поддерживают Bluetooth 4.0 и выше уже несколько лет.
Технология сверхширокополосной связи (Ultra-Wideband, UWB), используемая в чипах Apple U1 и U2, а также в метках AirTag, обеспечивает значительно более высокую точность позиционирования по сравнению с iBeacon. UWB позволяет определять расстояние с точностью 10–30 см с помощью измерения времени пролёта радиосигнала (Time-of-Flight, ToF), тогда как iBeacon обеспечивает точность 1–5 метров на основе измерения мощности принимаемого сигнала (RSSI). Сами метки AirTag не являются устройствами iBeacon: для поиска утерянных вещей они используют глобальную краудсорсинговую сеть «Локатор» (Find My) и проприетарный протокол Apple, а не локальное взаимодействие[38].[39][40][41]
Конкурирующий проект от Google — формат маяков Eddystone и связанная с ним платформа Google Beacon — был полностью прекращён к 2021 году и больше не поддерживается[42].[43]