Устройство Bluetooth с низким энергопотреблением (BLE)

Реализация Google Fast Pair Service (GFPS) для устройств BLE совместима с Bluetooth Core Specification версии 4.2 или более поздней.

Приведенное ниже дополнение к спецификации быстрого подключения позволит поддерживать в GFPS устройства, использующие только Bluetooth с низким энергопотреблением (LE) и аудио с низким энергопотреблением (LEA).

Уровни соответствия

Ниже объясняется значение ключевых слов shall, must, will, should, may и can, которые используются в спецификации.

Термин Описание
shall is required to – используется для определения требований.
must используется для выражения:
естественного следствия ранее заявленного обязательного требования;
ИЛИ
бесспорного утверждения факта (который всегда верен независимо от обстоятельств).
будет it is true that – используется только в утверждениях, основанных на фактах.
should Рекомендуется. Из нескольких вариантов один рекомендуется как наиболее подходящий, но не является обязательным.
мая is permitted to – используется для разрешения вариантов.
можем is able to – используется для причинно-следственной связи.

Характеристика подключения на основе ключа

Сообщение от Искателя Поставщику

В необработанном запросе type 0x00 характеристики подключения на основе ключа бит 4 указывает, поддерживает ли Искатель спецификацию устройства BLE, а бит 5 – поддерживает ли Искатель LE Audio.

Октет Тип данных Описание Значение Обязательно?
0 uint8 Тип сообщения 0x00 – запрос на подключение на основе ключа; Обязательно
1 uint8 Flags
  • Бит 0 (MSB): устарел и игнорируется Seeker.
  • Бит 1: 1, если Искатель запрашивает, чтобы Поставщик инициировал связывание, и этот запрос содержит адрес BR/EDR Искателя. В противном случае возвращается значение 0.
  • Бит 2: 1, если Искатель запрашивает, чтобы Поставщик сообщил существующее название. В противном случае возвращается значение 0.
  • Бит 3: 1, если это ретроактивная запись ключа аккаунта. В противном случае возвращается значение 0.
  • Бит 4: 1, если Искатель поддерживает спецификацию BLE-устройств. В противном случае возвращается значение 0.
  • Бит 5: 1, если Искатель поддерживает LE Audio. В противном случае возвращается значение 0.
  • Биты 6–7 зарезервированы для использования в будущем и должны игнорироваться.
varies Обязательно
2–7 uint48 Выполните одно из следующих действий:
  • Текущий BLE-адрес поставщика.
  • Адрес поставщика идентификационной информации
varies Обязательно
8–13 uint48 Адрес BR/EDR Искателя varies Присутствует, только если установлен бит 1 или 3 флага.
n – 15 Случайное значение (соль) varies Обязательно

Сообщение от поставщика услуг клиенту

Если в запросе установлен бит 4, то для предоставления Искателю дополнительных вариантов связывания можно использовать новое ответное сообщение type 0x02 для характеристики "Связывание на основе ключа".

Октет Тип данных Описание Значение
0 uint8 Тип сообщения 0x02 – расширенный ответ на подключение на основе ключа.
1 uint8 Flags
  • Бит 0 (MSB): 1, если поставщик – устройство только с LE, в противном случае – 0. Если для бита 0 задано значение 1, Искатель будет считать, что для бита 1 задано значение 1.
  • Бит 1: 1, если поставщик предпочитает привязку LE, в противном случае – 0.
  • Бит 2: 1, если тип второго адреса – случайный, 0, если общедоступный.
  • Биты 3–7 зарезервированы для использования в будущем и должны игнорироваться.
varies
2 uint8 Количество адресов поставщика
(в текущей версии это число равно 1 или 2, поскольку нам нужно изменить режим блочного шифра на AES-CTR, если число >= 3)
varies
3–8 или
3–14
  • Первый адрес должен быть идентификационным адресом основного устройства и поддерживать связывание, если предпочтительно связывание BR/EDR.
  • Второй адрес должен быть связываемым адресом дополнительного устройства, если оно доступно.
varies
9–15 или 15 Случайное значение (соль) varies

Поставщик, поддерживающий спецификацию BLE-устройств, должен считывать биты 4 и 5, чтобы определить возможности Искателя.

  • Если бит 4 равен 0, поставщик должен игнорировать бит 5 и отвечать в формате type 0x01.
  • Если бит 4 равен 1:
    • Поставщик, поддерживающий только LE, должен ответить type 0x02, чтобы указать предпочтение привязки LE.
    • Поставщик, работающий в двух режимах, может ответить type 0x02, чтобы указать предпочтительный тип подключения: BR/EDR или LE.
  • Если Поставщик поддерживает двухрежимный LE Audio (LEA), ознакомьтесь с разделом Пример: подключение к Поставщику с поддержкой двухрежимного LEA.

Характеристика PSM (Protocol Service Multiplexor) потока сообщений

Чтобы поддерживать поток сообщений для устройств BLE, функция быстрого подключения создает и поддерживает канал BLE L2CAP для отправки и получения сообщений. Быстрое подключение Сервер L2CAP должен реализовывать управление потоком на основе кредитов LE.

Эта характеристика позволяет Искателю считывать значение PSM, а затем устанавливать безопасное соединение L2CAP по значению PSM.

Характеристика сервиса быстрого подключения Зашифровано Разрешения UUID
Менеджер по работе с партнерами в Message Stream Да Чтение FE2C1239-8366-4814-8EB0-01DE32100BEA
Октет Тип данных Описание Значение
0 uint8 Штат
  • 0x00 – неизвестно. FP Seeker повторит попытку несколько раз.
  • 0x01 – готово к подключению;
  • 0x02 – недоступно. В этот раз FP Seeker не будет использовать этот компонент для подключения.
varies
1–2 uint16 Значение PSM должно быть в диапазоне от 0x80 до 0xFF. varies

Примечание. У TWS-наушников два компонента: основной и дополнительный. Роли этих компонентов взаимозаменяемы при определенных условиях. Предположим, что A – основной компонент, а B – дополнительный. Если у компонента A разрядится батарея, компонент B должен будет взять на себя роль основного. Этот сценарий называется role switch.

Если после role switch поставщик не может обработать поток сообщений быстрого подключения, он должен упреждающе отключить существующее соединение L2CAP. После этого устройство, ищущее быстрое подключение, может заново установить соединение с потоком сообщений L2CAP с новым основным компонентом.

Дополнительная характеристика ключа доступа

Эта характеристика обеспечивает защиту дополнительных компонентов от атак типа "человек посередине".

Защита от атак типа "человек посередине" с использованием поддельных участников CSIS

В рамках процедуры быстрого подключения требуется защита от атак типа MITM. Поскольку CSIS не обеспечивает защиту от атак типа "человек посередине", текущую схему FP для нескольких компонентов необходимо расширить, чтобы обеспечить защиту от атак типа "человек посередине" для дополнительных компонентов.

Определение характеристики

Характеристика сервиса быстрого подключения Зашифровано Разрешение UUID
Дополнительный ключ доступа Нет Чтение,запись,уведомление FE2C123A-8366-4814-8EB0-01DE32100BEA

Сообщения

Формат сообщения применяется к операциям чтения, записи и уведомления.

Формат зашифрованных данных

Зашифрованные данные передаются через GATT-подключение.

Октет Тип данных Описание Значение
0-15 uint128 Зашифрованный блок дополнительного ключа доступа изменяется
Формат первичных данных

После расшифровки данных с помощью общего секретного ключа формат будет следующим:

Октет Тип данных Описание Значение
0 uint8 Тип сообщения одно из следующих значений:
  • 0x00 – ключ доступа Искателя.
  • 0x01 – ключ доступа поставщика;
1-3 uint24 6-значный ключ доступа изменяется
4-9 uint48 Адрес целевого компонента связывания изменяется
10 uint8 Код статуса, используется только для операции чтения. Одно из следующих значений:
  • 0x00 – успешно;
  • 0x01 – ожидание. FP Seeker retry until timeout
  • 0x02 – ошибка. FP Seeker stop retry
11-15 Случайное значение (соль) изменяется

Основной компонент (первый подключенный компонент) служит мостом между устройством, ищущим быстрое подключение, и дополнительными компонентами. Характеристика должна соответствовать следующим требованиям:

  • При получении запроса на запись от Искателя Быстрого подключения Поставщик должен:
    • Укажите адрес компонента, который связывается.
    • Отправьте ключ доступа на подключаемый компонент.
    • Установите код статуса "Ожидание", 0x01.
  • Если Поставщик получает запрос на чтение до того, как получит ключ доступа от подключаемого компонента, он должен вернуть сообщение с кодом
    • Ключ доступа, любое значение
    • Адрес компонента, который связывается.
    • Код статуса ожидания: 0x01
  • Прежде чем отправить уведомление Искателю быстрого подключения, Поставщик задает результат для запроса на чтение с помощью
    • Ключ доступа от подключаемого компонента
    • Адрес компонента, который связывается.
    • Код статуса успешного выполнения: 0x00.
  • Если на стороне поставщика произошла неустранимая ошибка, задайте результат:
    • Ключ доступа, любое значение
    • Адрес компонента, который связывается.
    • Код статуса ошибки: 0x02

Подробные сведения приведены на диаграмме 1 и диаграмме 2.

Требования к устройствам с поддержкой LE Audio

LE Advertising

В режиме видимости или невидимости Поставщик должен использовать RPA для передачи данных Быстрого подключения.

Возможность бондинга

Для устройств с поддержкой LE Искатель должен создать связь с существующим подключением LE. После прохождения проверки на основе ключа Поставщик должен разрешить связывание с RPA и установить для возможности ввода-вывода значение DisplayYesNo для проверки ключа доступа Быстрого подключения.

Требования к устройствам LEA

Реклама в LEA

Для двухрежимных устройств: в режиме видимости поставщик должен объявлять данные быстрого подключения с идентификационным адресом. В невидимом режиме Поставщик должен передавать данные быстрого подключения с RPA. Настоятельно рекомендуем использовать устаревшие объявления (BT 4.2), чтобы обеспечить обратную совместимость со старыми устройствами. При сбросе настроек устройства до заводских необходимо изменить IRK.

Для устройств без поддержки двух режимов: в режиме видимости или невидимости Поставщик должен использовать расширенную рекламу (BT 5.0) с RPA для рекламы данных Быстрого подключения.

Объявление о возможности подключения LE, содержащее данные сервиса быстрого подключения, должно включать CAS UUID в соответствии с требованиями Bluetooth Adapter Profile (BAP 1.0.1) и Common Audio Profile.

Поставщик может указать на поддержку LEA, включив UUID CAS (0x1853) в данные сервиса (тип объявления 0x16) или 16-битные UUID класса сервиса (тип объявления 0x02 или 0x03) независимо от режима видимости.

Если в объявлении, которое не видно другим устройствам, недостаточно места из-за включения данных о батарее и SASS, в ответ на сканирование обязательно нужно добавить UUID CAS.

Возможность связывания LEA

Искатель должен создать связь с существующим подключением LE. После прохождения проверки Fast Pair Key-based Pairing двухрежимный поставщик должен разрешить связывание с адресом идентификатора и RPA, а однорежимный – только с RPA. Также необходимо установить для возможности ввода-вывода значение DisplayYesNo для проверки Fast Pair Passkey.

Внутренний канал связи между компонентами

Существующее подключение GATT сохраняется, чтобы обеспечить защиту от MITM-атак для дополнительных компонентов. Основной компонент должен обрабатывать доставку сообщений между устройством, ищущим быстрое подключение, и остальными компонентами.

Внутренние сообщения используются для Initial Pair и Subsequent Pair

  • Когда процедура подключения на основе ключа завершается на основном компоненте, он должен отправить сообщение, чтобы изменить возможности ввода-вывода остальных компонентов.
  • После завершения быстрого подключения основной компонент должен отправить сообщение для сброса возможностей ввода-вывода остальных компонентов.
  • При выполнении процедуры дополнительного ключа доступа основной компонент должен обрабатывать доставку ключей доступа между искателем быстрого подключения и остальными компонентами.

Время изменения возможности ввода-вывода

  • Измените возможность ввода-вывода на DisplayYesNo, когда процедура сопряжения на основе ключа пройдена.
    • Если устройство состоит из нескольких компонентов, для всех них должно быть установлено значение DisplayYesNo.
    • Исключение, при котором Поставщик не должен менять возможности ввода-вывода на DisplayYesNo, – это Retroactive Pair, у которого бит 3 запроса на связывание на основе ключа имеет значение 1. Подробнее о сообщении от Искателя к Поставщику…
  • Измените возможности ввода-вывода на настройки по умолчанию.
    • Первоначальное подключение
      • Если соединение LE разорвано, завершите сеанс быстрого подключения.
      • Если после подключения основного устройства в течение 15 секунд не поступит запрос на запись дополнительного ключа доступа, завершите сеанс быстрого подключения.
      • Если после получения дополнительного запроса на запись ключа доступа компонент не будет подключен в течение 15 секунд, завершите сеанс быстрого подключения.
      • Если после подключения всех компонентов в течение 15 секунд не поступит запрос на запись ключа аккаунта, завершите сеанс быстрого подключения.
      • После получения запроса на запись ключа аккаунта установите тайм-аут в 15 секунд, чтобы завершить сеанс быстрого подключения.
    • Последующее подключение
      • Если соединение LE разорвано, завершите сеанс быстрого подключения.
      • Если после привязки основного устройства в течение 15 секунд не поступит запрос на запись ключа доступа, завершите сеанс быстрого подключения.
      • Если после получения дополнительного запроса на запись ключа доступа компонент не будет подключен в течение 15 секунд, завершите сеанс быстрого подключения.
      • Когда все компоненты будут связаны, завершите сеанс быстрого подключения.

Скрыть индикатор интерфейса

Если гарнитура не готова к подключению, Поставщик должен использовать type 0b0010, чтобы скрыть индикатор интерфейса для данных в аккаунте. Это позволит Искателю не показывать интерфейс для последующего подключения (см. раздел Полезная нагрузка объявления: данные в аккаунте для быстрого подключения).

Требования к аудиоустройствам с поддержкой LE Audio

Требования к Bluetooth

Ознакомьтесь с рекомендациями по выбору гарнитуры LE Audio для Android.

Поддержка CTKD

Для устройств с двумя режимами обязательна поддержка CTKD от LE до BR/EDR в соответствии с требованиями BAP.

Целевое объявление

Периферийное устройство должно использовать целевое объявление, чтобы запросить подключение от сопряженного центрального устройства. Целевые объявления определены в BAP и CAP для управления подключениями в соответствии с CAP 1.0, таблица 8.4 (стр. 48/58).

Поддержка сервера GATT EATT

EATT позволяет центральному устройству отправлять несколько транзакций GATT параллельно, когда устройство связано. На устройствах с поддержкой CSIP это повысит производительность подключения профиля, а затем начнется процедура привязки CSIP для других наушников.

Если Поставщик – это не одно устройство, а набор устройств, использующих CSIP, то для сокращения количества обнаружений сервисов и ускорения подключения Поставщик должен реализовать кеширование GATT, определенное в Bluetooth 5.1.

Требования для быстрого подключения

LE Advertising

Если у устройства несколько компонентов, то в режиме видимости или невидимости данные быстрого подключения должны передаваться основным компонентом. Если устройство не готово к последующему подключению, дополнительный компонент может передавать данные быстрого подключения для расширенных функций. Подробнее о скрытии индикации в интерфейсе…

Видимость сервиса GATT

База данных GATT должна быть одинаковой для всех подключений GATT по LE. Сервис LE Audio (0x184E) должен быть включен в базу данных GATT для быстрого подключения.

Пример: подключение к поставщику LEA в двухрежимном формате

Сценарий 1. Искатель не поддерживает LEA

Поставщик должен иметь обратную совместимость с Искателем, который не поддерживает LEA.

Компоненты
  • Поставщик: A2DP/HFP/LEA
  • Искатель: A2DP/HFP
Ожидаемое поведение при первом и последующих подключениях
  • Поставщик передает данные сервиса быстрого подключения (0xFE2C) с идентификационным адресом (первоначальным) или RPA (последующим).
    • Использовать устаревшие объявления
  • Искатель получает объявление Поставщика с адресом идентификации для первоначального подключения или RPA для последующего подключения.
  • Искатель отправляет запрос на подключение на основе ключа.
    • Бит 5 флага в запросе на связывание на основе ключа имеет значение 0.
  • Поставщик отправляет ответ на запрос о сопряжении на основе ключа с общедоступным адресом в одном из следующих форматов:
    • Если используется тип сообщения 0x01, адрес должен быть общедоступным.
    • Если используется тип сообщения 0x02:
      • Бит 0 должен быть равен 0.
      • Бит 1 должен быть равен 0.
      • Адрес должен быть общедоступным.
  • Искатель создает связь с транспортом BR/EDR.
    • Для BR/EDR в качестве возможности ввода-вывода задано DisplayYesNo.
  • Искатель и Поставщик выполняют процедуру проверки ключа доступа для быстрого подключения.

Сценарий 2. Искатель поддерживает LEA

Компоненты
  • Поставщик
    • Поддержка A2DP/HFP/LEA
    • Один компонент
  • Искатель
    • SupportA2DP/HFP/LEA
Ожидаемое поведение при первом и последующих подключениях
  • Поставщик передает данные сервиса быстрого подключения (0xFE2C) с идентификационным адресом (первоначальным) или RPA (последующим).
    • Использовать устаревшие объявления
  • Искатель отправляет запрос на подключение на основе ключа.
    • Бит 5 флага в запросе на связывание на основе ключа установлен на 1.
  • Устройство-поставщик отправляет ответ на запрос о подключении на основе ключа с типом сообщения 0x02.
    • Бит 0 должен быть равен 0.
    • Бит 1 должен быть равен 1.
    • Адрес является адресом удостоверения личности
  • Устройство, выполняющее поиск, создает связь с существующим подключением LE по транспортному протоколу LE.
    • Направление CTKD – от LE к BR/EDR.
    • Для LE в качестве возможности ввода-вывода задано DisplayYesNo.
  • Искатель и Поставщик выполняют процедуру проверки ключа доступа для быстрого подключения.

Сценарий 3. Искатель поддерживает LEA и CSIP

Компоненты
  • Поставщик
    • Поддержка A2DP/HFP/LEA
    • Несколько компонентов
      • Основной компонент – BR/EDR/LE.
      • Дополнительный компонент предназначен только для LE
  • Искатель
    • Поддержка A2DP/HFP/LEA
Ожидаемое поведение при первом и последующих подключениях
  • Основной компонент передает данные сервиса быстрого подключения (0xFE2C) с идентификационным адресом (первоначальным) или RPA (последующим).
    • Использовать устаревшие объявления
  • Искатель отправляет запрос на подключение на основе ключа основному компоненту.
    • Бит 5 флага в запросе на связывание на основе ключа установлен на 1.
  • Основной компонент отправляет ответ на запрос о сопряжении на основе ключа с типом сообщения 0x02.
    • Бит 0 должен быть равен 0.
    • Бит 1 должен быть равен 1.
    • Адрес:
      • Первый адрес – это адрес идентификатора основного компонента.
      • Второй адрес – это адрес для связывания дополнительного компонента. Он также используется для объявления CSIP.
  • Искатель создает связь с основным компонентом по существующему соединению LE.
    • Направление CTKD – от LE к BR/EDR.
    • Для LE в качестве возможности ввода-вывода задано DisplayYesNo.
  • Искатель устанавливает связь со вторым компонентом, адрес которого получен из расширенного ответа на запрос о подключении на основе ключа.
    • Возможность ввода-вывода должна быть DisplayYesNo, иначе запрос на подключение будет отклонен.
  • Искатель и Поставщик выполняют процедуру защиты от MITM-атак для подключения дополнительного компонента. Поставщик должен реализовать оба сценария.
  • Искатель ждет, пока не будет установлено соединение с дополнительным компонентом.

Схема последовательности для MITM

В этом разделе описывается последовательность действий по защите от MITM-атак.

Получить ключ доступа от компонента, который подключается через уведомление.

Получить ключ доступа от компонента, связанного с чтением

Известная проблема

Функция быстрого подключения для LEA оптимизирована для работы с Android V (Android 15).

И наоборот, мы сталкивались с многочисленными проблемами с гарнитурами, которые поддерживают LEA, но не имеют правильной реализации быстрого подключения через LEA (т.е. только быстрое подключение через Classic). Например, если RPA поставщика не сгенерирован правильным ключом IRK и адрес не может быть разрешен. Мы не смогли протестировать все конфигурации наушников, но даже ограниченное тестирование выявило различные проблемы, в том числе отсутствие уведомлений о заряде батареи наушников, отсутствие функции переключения аудио (SASS), многочисленные сбои при первоначальном и последующем подключении и т. д.

Поэтому мы настоятельно рекомендуем партнерам внедрить спецификацию быстрого подключения-LEA как для новых устройств, так и для существующих устройств, поддерживающих два режима (с помощью беспроводных обновлений).