- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

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

При правильной реализации и в сочетании с Proximity Beacon API, который поддерживает ряд проверок контроля доступа, Eddystone-EID имеет несколько преимуществ, например:

  • Расположение маячка не может быть подделано. Это идеально подходит для случаев, когда разработчик хочет задействовать дополнительные возможности для пользователя в каком то определенном месте.
  • 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 очень активно сотрудничает с игроками отрасли, так, например, за прошлый год количество производителей [8] маячков поддерживающих формат 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 [9] совместно Accent Systems разработали чемодан транслирующий Eddystone-EID, для того что бы пользователи могли безопасно следить за их личным багажом.
  • K11 [10] — музей в Гонконге и в розничная сеть использования маячки Sensoro с поддержкой Eddystone-UID для экскурсии посетителей и поощрения клиентов.
  • Monumental Sports Entertainment [11] в Вашингтоне, округ Колумбия, использует маячки с поддержкой Eddystone-EID от Radius Networks для доставки призов клиентам во время спортивных событий Washington Wizards и Capitals.
  • Sparta Digital [12] выпустила приложение под названием Buzzin, которое использует маячки транслирующие Eddystone-EID, развернутые в городе Манчестере, Великобритания.

Заключение

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


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

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

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

Автор: zviad

Источник [17]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/bezopasnost/118362

Ссылки в тексте:

[1] Eddystone: https://github.com/google/eddystone

[2] security blog: https://security.googleblog.com

[3] Eddystone-EID: https://developers.google.com/beacons/eddystone-eid

[4] Eddystone GATT service: https://github.com/google/eddystone/tree/master/configuration-service

[5] Elliptic curve Diffie–Hellman или ECDH: https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman

[6] Android: https://play.google.com/store/apps/details?id=com.google.android.apps.location.beacon.beacontools

[7] iOS: https://itunes.apple.com/us/app/beacon-tools/id1094371356?ls=1&amp;mt=8

[8] производителей: https://developers.google.com/beacons/eddystone#beacon_manufacturers

[9] Samsonite: https://www.samsonite.com/home/home.html

[10] K11: http://hk.k11.com/en/Home.aspx

[11] Monumental Sports Entertainment: https://www.monumentalsportsnetwork.com/

[12] Sparta Digital: http://www.spartadigital.co.uk/

[13] этой статье: https://developers.google.com/beacons/eddystone-eid-preprint.pdf

[14] github: https://github.com/google/eddystone/tree/master/eddystone-eid

[15] Google's beacon platform. Часть 1 — Proximity beacon API: https://habrahabr.ru/post/279381/

[16] Google's beacon platform. Часть 2 — Nearby meassages API: https://habrahabr.ru/post/279379/

[17] Источник: https://habrahabr.ru/post/281877/