Рішення давно існуючих проблем безпеки 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 або ДУБ) та таймер на самому маячке. Ключ генерується під час підготовки та налаштування маячка і потім передається в службу дозволу, наприклад, Proximity Beacon API, з використанням протоколу узгодження ключів Дииффи-Хееллмана на еліптичних кривих (Elliptic curve Diffie–Hellman або ECDH). Цей протокол є досить надійним і дозволяє отримати загальний секретний ключ, використовуючи незахищений від прослуховування канал зв'язку, наприклад під час підготовки та налаштування маячка. Таким чином, доступ до ключа є тільки у маячка і у служби з допомогою якій він зареєстрований.
Що стосується реєстрації маячка, Google Proximity Beacon API дозволяє зробити це двома способами:
  1. Шляхом обміну відкритими ключами з маячком, в повністю безпечною end-to-end манері
  2. Шляхом передачі загального ДУБ ключа безпосередньо, що є кілька менш безпечним, ніж перший варіант
В момент реєстрації маячка, в доповненні до ключа, сервісу дозволу так само потрібно повідомити поточне значення таймера маячка і показник періоду ротації. Тобто таймер маячка так само синхронізується з сервісом. Google Proximity Beacon API підтримує підтримує період ротації 2Х, де 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 можуть бути вбудовані в речі або пристрої, які люди носять з собою, не залишаючи при цьому користувачів вразливими до стеження
Що ж відбувається на клієнтському пристрої?
А нічого особливого! Маячки з підтримкою 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 повертає значення null, як якщо б маячок не був зареєстрований.
Підтримка 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

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.