Устройство Bluetooth Low Energy (BLE)

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

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

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

Ключевые слова «shall», «must», «will», «should», «may» и «can», упомянутые в спецификации, поясняются ниже:

Срок Описание
должен требуется - используется для определения требований.
должен используется для выражения:
естественное следствие ранее указанного обязательного требования
ИЛИ
Бесспорное утверждение факта (которое всегда истинно независимо от обстоятельств).
воля Действительно, это слово используется только в констатации фактов.
должен Рекомендуется использовать этот вариант, чтобы указать, что среди нескольких возможных вариантов один рекомендуется как особенно подходящий, но не обязательный.
может разрешено - используется для предоставления вариантов.
может способен - используется для установления причинно-следственной связи между утверждениями.

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

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

В характеристике сопряжения на основе ключей (Key-based Pairing) type 0x00 использует бит 4 для указания того, поддерживает ли искатель спецификацию BLE-устройства , и бит 5 для указания того, поддерживает ли искатель аудио LE .

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

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

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

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

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

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

Характеристика потока сообщений PSM (мультиплексор протокольных служб).

Для поддержки потоковой передачи сообщений для устройств BLE, Fast Pair будет устанавливать и поддерживать канал BLE L2CAP для отправки и получения сообщений. Сервер Fast Pair L2CAP должен реализовать управление потоком на основе кредитов LE.

Эта характеристика позволяет устройству Seeker считывать значение PSM, а затем устанавливать защищенное соединение L2CAP на основе этого значения PSM.

Характеристика услуги быстрого сопряжения Зашифровано Разрешения UUID
Поток сообщений PSM Да Читать FE2C1239-8366-4814-8EB0-01DE32100BEA
Октет Тип данных Описание Ценить
0 uint8 Состояние
  • 0x00 = Неизвестно. FP Seeker будет повторять попытку несколько раз.
  • 0x01 = Готов к подключению
  • 0x02 = Недоступно. FP Seeker не будет использовать этот компонент для подключения в этот раз.
варьируется
1 - 2 uint16 Значение PSM должно находиться в диапазоне от 0x80 до 0xFF. варьируется

Примечание: В системе TWS используются два компонента: основной и дополнительный. В определенных условиях роли этих компонентов взаимозаменяемы. Предположим, что A — основной компонент, а B — дополнительный. В результате разряда батареи компонентом A компонент B должен взять на себя роль основного компонента, и этот сценарий называется role switch .

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

Дополнительные характеристики пароля

Эта характеристика предназначена для обеспечения защиты от атак типа MITM (Man-in-the-Middle) на дополнительных компонентах.

Защита CSIS от фальшивых участников MITM

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

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

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

Сообщения

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

Зашифрованный формат данных

Зашифрованные данные передаются с использованием соединения Fast Pair GATT.

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

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

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

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

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

Более подробную информацию см. на диаграммах MITM 1 и MITM 2 .

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

LE Advertising

В режиме обнаружения или в режиме без возможности обнаружения Провайдер должен использовать RPA для передачи данных FastPair.

Возможность склеивания

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

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

Реклама LEA

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

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

Рекламное сообщение, подключаемое к LE и содержащее данные службы FP, должно включать UUID CAS в соответствии с требованиями профиля адаптера Bluetooth (BAP 1.0.1) и общего аудиопрофиля .

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

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

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

Ищущий провайдер должен установить связь с существующим соединением LE. После прохождения проверки сопряжения на основе ключа быстрого сопряжения, провайдер с двойным режимом должен разрешить сопряжение с адресом идентификации и RPA, в то время как провайдер без двойного режима должен разрешить сопряжение с RPA и установить параметр IO capability в значение DisplayYesNo для проверки пароля быстрого сопряжения.

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

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

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

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

Пора изменить возможности ввода-вывода.

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

Скрыть индикацию пользовательского интерфейса

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

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

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

См. рекомендации по гарнитурам Android и LE Audio .

Поддержка CTKD

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

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

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

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

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

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

Требования к быстрому сопряжению

LE Advertising

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

Прозрачность сервисов ГАТТ

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

Пример: Сопряжение с двухрежимным провайдером LEA.

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

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

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

Сценарий 2 — Когда ищущий поддерживает LEA

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

Сценарий 3 — когда ищущий поддерживает участвующие LEA и CSIP.

Компоненты
  • Поставщик
    • Поддержка A2DP/HFP/LEA
    • Многокомпонентные
      • Основной компонент — BR/EDR/LE
      • Вторичный компонент предназначен только для LE.
  • Искатель
    • Поддержка A2DP/HFP/LEA
Ожидаемое поведение для начальной пары / последующих пар
  • Основной компонент передает данные службы Fast Pair (0xFE2C) с адресом идентификации (начальный) или RPA (последующий).
    • Используйте устаревшую рекламу
  • Устройство Seeker отправляет запрос на сопряжение на основе ключей основному компоненту.
    • Пятый бит флага запроса на сопряжение по ключу установлен в значение 1.
  • Основной компонент отправляет ответ на запрос сопряжения по ключу с типом сообщения 0x02.
    • Бит 0 должен быть равен 0.
    • Бит 1 должен быть равен 1.
    • Адреса указаны ниже:
      • Первый адрес — это идентификационный адрес основного компонента.
      • Второй адрес — это адрес, который может быть использован для подключения вторичного компонента; второй компонент также использует этот адрес для размещения CSIP- объявлений.
  • Устройство Seeker устанавливает соединение с основным компонентом на существующем разъеме LE.
    • Направление CTKD — от LE к BR/EDR
    • Для LE параметр IO capability установлен в значение DisplayYesNo.
  • Ищущий компонент устанавливает связь со вторичным компонентом, адрес которого получен из расширенного ответа сопряжения на основе ключей (Key-based Pairing Extended Response).
    • Для параметра IO необходимо установить значение DisplayYesNo, в противном случае запрос на сопряжение должен быть отклонен.
  • Ищущая сторона и Поставщик выполняют процедуру защиты от атаки типа MITM при сопряжении вторичного компонента; Поставщик должен реализовать ее в обоих сценариях.
  • «Искатель» ждет, пока не соединится со вторичным компонентом.

Последовательная диаграмма для MITM

Цель этого занятия — описать последовательность действий в рамках процедуры защиты от атак типа «человек посередине» (MITM).

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

Получить пароль от подключаемого компонента путем чтения

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

Приложение FP for LEA оптимизировано для работы с Android V (Android 15).

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

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