Решение давно существующих проблем безопасности BLE-маячков. Eddystone-EID. Eddystone GATT service и Beacon Tools

от автора

В июле прошлого года был запущен проект Eddystone, открытый и расширяемый стандарт от Google, определяющий формат сообщений для Bluetooth Low Energy (BLE) маячков и нативно поддерживаемый в Android, iOS, и браузером Chrome. Маячки могут отмечать важные и интересные места или объекты понятным для мобильных устройств образом. Чтобы сделать это, маячки, как правило, односторонне транслируют открытые сообщения — такие как iBeacon, Eddystone-UID или Eddystone-URL, что делает их уязвимыми к клонированию, компрометации и слежке. Эти проблемы существовали с 2013 года.

В четверг, 14 марта, компания Google в своём security blog анонсировала новый кадр Eddystone-EID, с поддержкой эфемерного идентификатора (Ephemeral ID), для стандарта Eddystone. Так же были представлены зашифрованная версия кадра телеметрии Eddystone-TLM и новый стандартный интерфейс для конфигурирования маячков — Eddystone GATT service.

В этом посте я чуть более подробно расскажу об этих нововведениях призванных серьезно повысит безопасность маячков и расширить сценарии их использования.

Технические подробности

Для наблюдателя, маячок с поддержкой Eddystone-EID меняет свой 8-байтный AES-encrypted идентификатор псевдо-случайным образом со средним периодом, который задается разработчиком в диапазоне от 1 секунды до 9 часов. Для генерации идентификатора используется ключ(Ephemeral Identity Key или EIK) и таймер на самом маячке. Ключ генерируется во время подготовки и настройки маячка и затем передаётся в службу разрешения, например, Proximity Beacon API, с использованием протокола согласования ключей Дииффи-Хееллмана на эллиптических кривых (Elliptic curve Diffie–Hellman или ECDH). Этот протокол является достаточно надежным и позволяет получить общий секретный ключ, используя незащищённый от прослушивания канал связи, например во время подготовки и настройки маячка. Таким образом, доступ к ключу есть только у маячка и у службы с помощью которой он зарегистрирован.
Что касается регистрации маячка, Google Proximity Beacon API позволяет сделать это двумя способами:

  1. Путем обмена открытыми ключами с маячком, в полностью безопасной end-to-end манере
  2. Путем передачи общего EIK ключа напрямую, что является несколько менее безопасным чем первый вариант

В момент регистрации маячки, в дополнении к ключу, сервису разрешения так же нужно сообщить и текущее значение таймера маячка и показатель периода ротации. Т.е. таймер маячка так же синхронизируется с сервисом. Google Proximity Beacon API поддерживает поддерживает период ротации 2X, где 10 <= X <= 15. Реализация устойчива к отключению энергии на несколько дней. При более длительных отключениях энергии на повторную синхронизацию таймера и периода ротации потребуется некоторое время.

Дополнительные меры безопасности

В Eddystone-EID заложены и дополнительные меры безопасности для предотвращения различных атак. Например, период ротации для каждого маячка незначительно отличается от идентификатора к идентификатору, таким образом злоумышленник не сможет использовать период ротации для того что бы идентифицировать конкретный маячок. Eddystone-EID так же поддерживает информирование о приближении, аутентификацию устройств и шифрование данных при передаче пакетов. Возможности кадра Eddystone-TLM так же были расширены с новой версией, теперь данные телеметрии шифруются с помощью общего ключа, т.е. злоумышленник не сможет использовать информацию об уровне заряда батареи в для идентификации маячка.

Eddystone GATT service и Beacon Tools

В дополнение к Eddystone-EID и новой зашифрованной версии ранее доступного Eddystone-TLM, был представлен общий протокол конфигрурирования маячков — Eddystone GATT service. Он позволяет настроить любой Eddystone маячок с помощью любых инструментов, поддерживающих этот протокол.

Также было представлено приложение Beacon Tools для Android и iOS. Это дополнительный инструмент для Google beacon platform, который позволяет регистрировать маячки и привязывать к ним данные.

Сценарии использования и преимущества

При правильной реализации и в сочетании с Proximity Beacon API, которая поддерживает ряд проверок контроля доступа, этот шаблон имеет несколько преимуществ

  • Расположение маячка не может быть подделано. Это идеально подходит для случаев, когда разработчик хочет задействовать дополнительные возможности для пользователя в каком то определенном месте.
  • Eddystone-EID позволяет тем кто занимается развертыванием сети маячков надежно управлять доступом к ней.
  • Маячки с поддержкой Eddystone-EID могут быть встроены в вещи или устройства которые люди носят с собой, не оставляя при этом пользователей уязвимыми к слежке

Что же происходит на клиентском устройстве?

А ничего особенного! Маячки с поддержкой Eddystone-EID могут быть задействованы в проектах где используется Nearby Messages API, компонент Google beacon platform сканирующий маячки и получающий от них сообщения, без каких либо изменений в коде. Когда клиентское устройство обнаруживает маячок транслирующий кадр Eddystone-EID и подписывается на него, текущий EID отправляется в Google Proximity Beacon API вместе с API-ключом приложения. Google Proximity Beacon API проверяет есть ли у представленного API-ключа полномочия получить вложение которое было привязано к маячку. Если такие полномочия есть, то приложение получает вложение обычным образом, как объект Nearby message. В противном случае, если полномочий нет, Google Proximity Beacon API возвращает пустое значение, как если бы маячок не был вовсе зарегистрирован.

Поддержка Eddystone-UID у производителей маячков

Google очень активно сотрудничает с игроками отрасли, так, например, за прошлый год количество производителей маячков поддерживающих формат Eddystone, выросло с 5 до более чем 25. А 15 следующих производителей уже поддерживают формат Eddystone-EID:

  • Accent Systems
  • Bluvision
  • Reco/Perples
  • Beacon Inside
  • Estimote
  • Sensoro
  • Blesh
  • Gimbal
  • Signal360
  • BlueBite
  • Nordic
  • Swirl
  • Bluecats
  • Radius Networks
  • Zebra

Помимо производителей маячков, Google активно сотрудничает и с целым рядом инновационных компаний, чтобы продемонстрировать преимущества Eddystone-UID в самых различных сценариях. Так, например:

  • Samsonite совместно Accent Systems разработали чемодан транслирующий Eddystone-EID, для того что бы пользователи могли безопасно следить за их личным багажом.
  • K11 — музей в Гонконге и в розничная сеть использования маячки Sensoro с поддержкой Eddystone-UID для экскурсии посетителей и поощрения клиентов.
  • Monumental Sports Entertainment в Вашингтоне, округ Колумбия, использует маячки с поддержкой Eddystone-EID от Radius Networks для доставки призов клиентам во время спортивных событий Washington Wizards и Capitals.
  • Sparta Digital выпустила приложение под названием Buzzin, которое использует маячки транслирующие Eddystone-EID, развернутые в городе Манчестере, Великобритания.

Заключение

Это большой шаг в сторону безопасности позволивший решить проблемы существовавшие уже несколько лет. Всё это позволяет не только задействовать маячки в новых сценариях, где важно чтобы пользователи могли надежно и конфиденциально обмениваться информацией, но и стимулирует развитие открытой экосистемы вокруг маячков, их аппаратного и программного обеспечения, устраняя существующие ограничения и недостатки.


Более подробно о безопасности BLE маячков и эфемерных идентификаторах можно прочитать в этой статье

С техническими деталями спецификации пакета Eddystone-EID можно ознакомиться на github

О Google beacon platform я подробно писал в своих предыдущих статьях:
Google’s beacon platform. Часть 1 — Proximity beacon API
Google’s beacon platform. Часть 2 — Nearby meassages API

ссылка на оригинал статьи https://habrahabr.ru/post/281877/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *