- PVSM.RU - https://www.pvsm.ru -
В июле прошлого года был запущен проект 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 позволяет сделать это двумя способами:
В момент регистрации маячка, в дополнении к ключу, сервису разрешения так же нужно сообщить и текущее значение таймера маячка и показатель периода ротации. Т.е. таймер маячка так же синхронизируется с сервисом. Google Proximity Beacon API поддерживает поддерживает период ротации 2X, где 10 <= X <= 15. Реализация устойчива к отключению энергии на несколько дней. При более длительных отключениях энергии на повторную синхронизацию таймера и периода ротации потребуется некоторое время.
В Eddystone-EID заложены и дополнительные меры безопасности для предотвращения различных атак. Например, период ротации для каждого маячка незначительно отличается от идентификатора к идентификатору, таким образом злоумышленник не сможет использовать период ротации для того что бы идентифицировать конкретный маячок. Eddystone-EID так же поддерживает информирование о приближении, аутентификацию устройств и шифрование данных при передаче пакетов. Возможности кадра Eddystone-TLM так же были расширены с новой версией, теперь данные телеметрии шифруются с помощью общего ключа, т.е. злоумышленник не сможет использовать информацию об уровне заряда батареи для идентификации маячка.
В дополнение к 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 могут быть задействованы в проектах где используется 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 возвращает пустое значение, как если бы маячок не был вовсе зарегистрирован.
Google очень активно сотрудничает с игроками отрасли, так, например, за прошлый год количество производителей [8] маячков поддерживающих формат Eddystone, выросло с 5 до более чем 25. А 15 следующих производителей уже поддерживают формат Eddystone-EID:
Помимо производителей маячков, Google активно сотрудничает и с целым рядом инновационных компаний, чтобы продемонстрировать преимущества Eddystone-UID в самых различных сценариях. Так, например:
Это большой шаг в сторону безопасности позволивший решить проблемы существовавшие уже несколько лет. Всё это позволяет не только задействовать маячки в новых сценариях, где важно чтобы пользователи могли надежно и конфиденциально обмениваться информацией, но и стимулирует развитие открытой экосистемы вокруг маячков, их аппаратного и программного обеспечения, устраняя существующие ограничения и недостатки.
Более подробно о безопасности 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&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/
Нажмите здесь для печати.