v1.3
Спецификация аксессуаров Find My Device Network (FMDN) определяет метод сквозного шифрования для отслеживания устройств Bluetooth Low Energy (BLE) с маяками. На этой странице FMDN описан как расширение спецификации Fast Pair. Провайдерам следует включить это расширение, если у них есть устройства, совместимые с FMDN, и они готовы включить отслеживание местоположения для этих устройств.
Спецификация ГАТТ
В службу быстрого сопряжения следует добавить дополнительную характеристику общих атрибутов (GATT) со следующей семантикой:
Характеристики службы быстрого сопряжения | Зашифрованный | Разрешения | UUID |
---|---|---|---|
Действия маяка | Нет | Читайте, пишите и сообщайте | FE2C1238-8366-4814-8EB0-01DE32100BEA |
Таблица 1. Характеристики службы быстрого сопряжения для FMDN.
Аутентификация
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Основной номер версии протокола | 0x01 |
1 - 8 | массив байтов | Одноразовый случайный одноразовый номер | варьируется |
Ключ восстановления : определяется как
SHA256(ephemeral identity key || 0x01)
, усекается до первых 8 байтов. Ключ хранится на серверной стороне, и Искатель может использовать его для восстановления EIK при условии, что пользователь выразит согласие, нажав кнопку на устройстве.Ключ кольца : определяется как
SHA256(ephemeral identity key || 0x02)
, усекается до первых 8 байтов. Ключ хранится на сервере, и Искатель может использовать его только для звонка на устройство.Нежелательный ключ защиты от отслеживания : определяется как
SHA256(ephemeral identity key || 0x03)
, усекается до первых 8 байтов. Ключ хранится на сервере, и Искатель может использовать его только для активации режима защиты от нежелательного отслеживания .
Операции
Формат данных, записываемых в характеристику, приведен в таблицах со 2 по 5. Каждая из операций обсуждается более подробно далее в этом разделе.
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор данных |
|
1 | uint8 | Длина данных | варьируется |
2–9 | массив байтов | Одноразовый ключ аутентификации | Первые 8 байтов HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data) |
10 - вар | массив байтов | Дополнительные данные |
|
Таблица 2: Запрос на предоставление маяка.
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор данных | 0x04: Чтение эфемерного ключа идентификации с согласия пользователя. |
1 | uint8 | Длина данных | 0x08 |
2–9 | массив байтов | Одноразовый ключ аутентификации | Первые 8 байтов HMAC-SHA256(recovery key, protocol major version number || the last nonce read from the characteristic || data ID || data length) |
Таблица 3. Запрос на восстановление ключа предоставления маяка.
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор данных |
|
1 | uint8 | Длина данных | варьируется |
2–9 | массив байтов | Одноразовый ключ аутентификации | Первые 8 байтов HMAC-SHA256(ring key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data) |
10 - вар | массив байтов | Дополнительные данные |
|
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор данных |
|
1 | uint8 | Длина данных | варьируется |
2–9 | массив байтов | Одноразовый ключ аутентификации | Первые 8 байтов HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data) |
10 - вар | массив байтов | Дополнительные данные |
|
Таблица 5. Запрос на защиту от нежелательного отслеживания.
Успешные записи вызывают уведомления, перечисленные в таблице 6.
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор данных |
|
1 | uint8 | Длина данных | варьируется |
2–9 | массив байтов | Аутентификация | Подробно по каждой операции |
10 - вар | массив байтов | Дополнительные данные |
|
Таблица 6: Ответ службы маяка.
В таблице 7 перечислены возможные коды ошибок GATT, возвращаемые операциями.
Код | Описание | Примечания |
---|---|---|
0x80 | Неаутентифицированный | Возвращается в ответ на запрос на запись при сбое аутентификации (включая случай, когда использовался старый одноразовый номер). |
0x81 | Недопустимое значение | Возвращается, когда указано недопустимое значение или полученные данные имеют непредвиденное количество байтов. |
0x82 | Нет согласия пользователя | Возвращается в ответ на запрос на запись с идентификатором данных 0x04: чтение эфемерного ключа идентификации с согласия пользователя , когда устройство не находится в режиме сопряжения. |
Прочитайте параметр маяка
Если проверка не удалась, поставщик возвращает неаутентифицированную ошибку.
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Калиброванная мощность | Калиброванная мощность, полученная на расстоянии 0 м (значение в диапазоне [-100, 20]). Представлено в виде целого числа со знаком и разрешением 1 дБм. |
1–4 | uint32 | Значение часов | Текущее значение часов в секундах (с обратным порядком байтов). |
5 | uint8 | Выбор кривой | Эллиптическая кривая, используемая для шифрования:
|
6 | uint8 | Компоненты | Количество компонентов, способных звонить:
|
7 | uint8 | Возможности звонка | Поддерживаемые параметры:
|
8-15 | массив байтов | Заполнение | Заполнение нулями для шифрования AES. |
Чтение состояния подготовки маяка
Если проверка не удалась, поставщик возвращает неаутентифицированную ошибку.
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Состояние подготовки | Битовая маска, имеющая следующие значения:
|
1–20 или 32 | массив байтов | Текущий эфемерный идентификатор | 20 или 32 байта (в зависимости от используемого метода шифрования), указывающие текущий эфемерный идентификатор, объявленный маяком, если он установлен для устройства. |
Установите эфемерный идентификационный ключ
- Предоставленный ключ одноразовой аутентификации соответствует ключу учетной записи владельца.
- Если был предоставлен хэш эфемерного ключа идентификации, хешированный эфемерный ключ идентификации соответствует текущему эфемерному ключу идентификации.
- Если хеш эфемерного идентификационного ключа не был предоставлен, убедитесь, что поставщик еще не был предоставлен в качестве маяка FMDN.
Если проверка не удалась, поставщик возвращает неаутентифицированную ошибку.
Очистить эфемерный идентификационный ключ
- Предоставленный ключ одноразовой аутентификации соответствует ключу учетной записи владельца.
- Хешированный эфемерный идентификационный ключ соответствует текущему эфемерному идентификационному ключу.
Прочтите эфемерный ключ идентификации с согласия пользователя.
- Хешированный ключ восстановления соответствует ожидаемому ключу восстановления.
- Устройство находится в режиме восстановления EIK.
Если проверка не удалась, поставщик возвращает неаутентифицированную ошибку.
В случае успеха поставщик уведомляет ответом из таблицы 6 с идентификатором данных 0x04.
Кольцевая операция
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Кольцевая операция | Битовая маска, имеющая следующие значения:
|
1 - 2 | uint16 | Тайм-аут | Таймаут в децисекундах. Не должно быть нулем и не должно превышать эквивалент 10 минут. Поставщик использует это значение, чтобы определить, как долго он должен звонить, прежде чем отключиться. Тайм-аут отменяет уже действующий, если какой-либо компонент устройства уже звонит. Если для операции звонка установлено значение 0x00, тайм-аут игнорируется. |
3 | uint8 | Объем |
|
При получении запроса Поставщик проверяет, что:
- Предоставленный ключ одноразовой аутентификации соответствует ключу звонка.
- Запрошенное состояние соответствует компонентам, которые могут звонить.
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Состояние звонка |
|
1 | uint8 | Компоненты звонка | Битовая маска активно звонящих компонентов, как определено в запросе. |
2–3 | uint16 | Тайм-аут | Оставшееся время до звонка в децисекундах. Если устройство перестало звонить, должно быть возвращено 0x0000. |
Получить состояние звонка маяка
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Компоненты звонка | Компоненты, активно звонящие, как определено в запросе звонка. |
1 - 2 | uint16 | Тайм-аут | Оставшееся время до звонка в децисекундах. Обратите внимание: если устройство не звонит, должно быть возвращено 0x0000. |
Режим защиты от нежелательного отслеживания
Режим защиты от нежелательного отслеживания предназначен для того, чтобы любой клиент мог идентифицировать злоупотребляющие устройства без связи с сервером. По умолчанию поставщик должен выполнять ротацию всех идентификаторов, как описано в разделе «Ротация идентификаторов» . Служба «Найти мое устройство» может ретранслировать запрос на активацию режима защиты от нежелательного отслеживания через сеть «Найти мое устройство». При этом служба заставляет провайдера временно использовать фиксированный MAC-адрес, позволяя клиентам обнаруживать устройство и предупреждать пользователя о возможном нежелательном отслеживании.
Для активации или деактивации режима защиты маяка от нежелательного слежения Искатель выполняет операцию записи в характеристику, состоящую из запроса из таблицы 5 с идентификатором данных 0x07 или 0x08 соответственно.
При включении режима защиты от нежелательного отслеживания
Поставщик создает сегмент данных следующим образом:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Флаги управления |
Флаги действуют только до тех пор, пока не будет отключен режим защиты от нежелательного слежения. |
Поставщик проверяет, соответствует ли предоставленный одноразовый ключ аутентификации ключу защиты от нежелательного отслеживания. Если поставщик не предоставляется в качестве маяка FMDN или проверка не удалась, он возвращает неаутентифицированную ошибку.
При активации режима защиты от нежелательного отслеживания маяк должен снизить частоту смены частных MAC-адресов до одного раза в 24 часа. Объявленный эфемерный идентификатор должен продолжать меняться как обычно. Тип кадра должен быть установлен на 0x41. Состояние также отражается в разделе хешированных флагов .
При отключении режима защиты от нежелательного слежения
Поставщик подтверждает, что:
- Предоставленный одноразовый ключ аутентификации соответствует ключу защиты от нежелательного отслеживания.
- Хешированный эфемерный идентификационный ключ соответствует текущему эфемерному идентификационному ключу.
Если Поставщик не предоставлен в качестве маяка FMDN или проверка не удалась, Поставщик возвращает неаутентифицированную ошибку.
Когда режим защиты от нежелательного отслеживания деактивирован, маяк должен снова начать ротацию MAC-адреса с нормальной скоростью, синхронизированную с ротацией эфемерного идентификатора. Тип кадра должен быть установлен обратно на 0x40. Состояние также отражается в разделе хешированных флагов .
В случае успеха поставщик уведомляет ответом из таблицы 6 с идентификатором данных 0x07 или 0x08.
Сегмент аутентификации определяется как первые 8 байтов HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01)
.
Рекламируемые кадры
Ожидается, что после подготовки поставщик будет анонсировать кадры FMDN не реже одного раза в 2 секунды. Если объявляются кадры быстрого соединения, провайдер должен чередовать кадры FMDN в обычных объявлениях быстрого соединения. Например, каждые две секунды провайдер должен рекламировать семь рекламных объявлений Fast Pair и одно рекламное объявление FMDN.
Кондуктивная мощность передачи Bluetooth для рекламы FMDN должна быть установлена как минимум на 0 дБм.
Кадр FMDN содержит открытый ключ, используемый для шифрования отчетов о местоположении любым поддерживающим клиентом, который вносит свой вклад в краудсорсинговую сеть. Доступны два типа ключей с эллиптической кривой: 160-битный ключ, который соответствует устаревшим кадрам BLE 4, или 256-битный ключ, требующий BLE 5 с расширенными возможностями рекламы. Реализация поставщика определяет, какая кривая используется.
Кадр FMDN структурирован следующим образом.
Октет | Ценить | Описание |
---|---|---|
0 | 0x02 | Длина |
1 | 0x01 | Значение типа данных флагов |
2 | 0x06 | Данные флагов |
3 | 0x18 или 0x19 | Длина |
4 | 0x16 | Значение типа данных служебных данных |
5 | 0xAA | 16-битный UUID службы |
6 | 0xFE | ... |
7 | 0x40 или 0x41 | Тип кадра FMDN с индикацией режима защиты от нежелательного отслеживания |
8..27 | 20-байтовый эфемерный идентификатор | |
28 | Хешированные флаги |
Таблица 8: Кадр FMDN, поддерживающий 160-битную кривую.
В таблице 9 показаны смещения байтов и значения для 256-битной кривой.
Октет | Ценить | Описание |
---|---|---|
0 | 0x02 | Длина |
1 | 0x01 | Значение типа данных флагов |
2 | 0x06 | Данные флагов |
3 | 0x24 или 0x25 | Длина |
4 | 0x16 | Значение типа данных служебных данных |
5 | 0xAA | 16-битный UUID службы |
6 | 0xFE | ... |
7 | 0x40 или 0x41 | Тип кадра FMDN с индикацией режима защиты от нежелательного отслеживания |
8..39 | 32-байтовый эфемерный идентификатор | |
40 | Хешированные флаги |
Таблица 9: Кадр FMDN, поддерживающий 256-битную кривую.
Вычисление эфемерного идентификатора (EID)
Октет | Поле | Описание |
---|---|---|
0–10 | Заполнение | Значение = 0xFF |
11 | К | Показатель периода вращения |
12–15 | ТС[0]...ТС[3] | Счетчик времени маяка в 32-битном формате с прямым порядком байтов. K младших битов очищаются. |
16 - 26 | Заполнение | Значение = 0x00 |
27 | К | Показатель периода вращения |
28 - 31 | ТС[0]...ТС[3] | Счетчик времени маяка в 32-битном формате с прямым порядком байтов. K младших битов очищаются. |
Таблица 10: Построение псевдослучайного числа.
Результатом этого вычисления является 256-битное число, обозначаемое r'
.
Для остальных вычислений SECP160R1
или SECP256R1
используются для криптографических операций на эллиптических кривых. См. определения кривых в разделе SEC 2: Рекомендуемые параметры области эллиптической кривой , где определяются Fp
, n
и G
указанные далее.
r'
теперь проецируется на конечное поле Fp
путем вычисления r = r' mod n
. Наконец, вычислите R = r * G
— точку на кривой, представляющую используемый открытый ключ. Маяк объявляет Rx
, который является координатой x
R
, в качестве своего эфемерного идентификатора.
Хешированные флаги
Поле хешированных флагов рассчитывается следующим образом (биты отсчитываются от наиболее значимого к наименее значимому):
- Биты 0–4: зарезервированы (установлены в нули).
- Биты 5-6 указывают уровень заряда батареи устройства следующим образом:
- 00: Индикация уровня заряда батареи не поддерживается.
- 01: Нормальный уровень заряда батареи
- 10: Низкий уровень заряда батареи
- 11: Критически низкий уровень заряда батареи (скоро потребуется замена батареи)
- Бит 7 устанавливается в 1, если маяк находится в режиме защиты от нежелательного отслеживания, и в 0 в противном случае.
Чтобы получить окончательное значение этого байта, он подвергается операции xor с младшим значащим байтом SHA256(r)
.
Обратите внимание, что r должно соответствовать размеру кривой. Добавьте нули в качестве старших битов, если его представление короче 160 или 256 бит, или старшие биты должны быть усечены, если его представление больше 160 или 256 бит.
Если маяк не поддерживает индикацию уровня заряда батареи и не находится в режиме защиты от нежелательного слежения, допускается полностью исключить этот байт из объявления.
Шифрование с помощью EID
Чтобы зашифровать сообщение m
, наблюдатель (прочитавший Rx
от маяка) должен сделать следующее:
- Выберите случайное число
s
вFp
, как определено в разделе вычисления EID . - Вычислите
S = s * G
- Вычислите
R = (Rx, Ry)
путем подстановки в уравнение кривой и выбора произвольного значенияRy
из возможных результатов. - Вычислите 256-битный ключ AES
k = HKDF-SHA256((s * R)x)
где(s * R)x
— координатаx
результата умножения кривой. Соль не указана. - Пусть
URx
иLRx
будут старшими и младшими 80 битамиRx
соответственно в формате с прямым порядком байтов. Аналогичным образом определитеUSx
иLSx
дляS
- Вычислить
nonce = LRx || LSx
. - Вычислить
(m', tag) = AES-EAX-256-ENC(k, nonce, m)
. - Отправьте
(URx, Sx, m', tag)
владельцу, возможно, через ненадежную удаленную службу.
Расшифровка значений, зашифрованных с помощью EID
Клиент владельца, владеющий EIK и показателем периода ротации, расшифровывает сообщение следующим образом:
- Учитывая
URx
, получите значение счетчика времени маяка, на котором основанURx
. Это может быть сделано клиентом владельца, вычисляющим значенияRx
для значений счетчика времени маяка для недавнего прошлого и ближайшего будущего. - Учитывая значение счетчика времени маяка, на котором основан
URx
, вычислите ожидаемое значениеr
, как определено в разделе вычисления EID . - Вычислите
R = r * G
и проверьте соответствие значениюURx
предоставленному наблюдателем. - Вычислите
S = (Sx, Sy)
путем подстановки в уравнение кривой и выбора произвольного значенияSy
из возможных результатов. - Вычислите
k = HKDF-SHA256((r * S)x)
где(r * S)x
— координатаx
результата умножения кривой. - Вычислить
nonce = LRx || LSx
. - Вычислить
m = AES-EAX-256-DEC(k, nonce, m', tag)
.
ротация идентификаторов
Разрешимый (RPA) или неразрешимый (NRPA) адрес BLE должен использоваться для объявления кадров FMDN. RPA требуется для устройств LE Audio (LEA) и рекомендуется для других устройств, за исключением тегов локатора, которые не используют связывание.
Объявление Fast Pair, объявление FMDN и соответствующие адреса BLE должны меняться одновременно. Вращение должно происходить в среднем каждые 1024 секунды. Точная точка, в которой маяк начинает рекламировать новый идентификатор, должна быть выбрана случайным образом в пределах окна.
Рекомендуемый подход к рандомизации времени вращения — установить его равным следующему ожидаемому времени вращения (если рандомизация не применялась) плюс положительный рандомизированный временной коэффициент в диапазоне от 1 до 204 секунд.
Когда устройство находится в режиме защиты от нежелательного отслеживания, адрес BLE объявления FMDN должен быть фиксированным, но RPA для необнаружимой рекламы FP (например, Fast Pair) должен продолжать меняться. Допустимо использование разных адресов для разных протоколов.
Восстановление после потери мощности
Разрешение эфемерного идентификатора сильно привязано к его тактовому значению во время объявления, поэтому важно, чтобы поставщик мог восстановить его тактовое значение в случае сбоя питания. Рекомендуется, чтобы поставщик записывал свое текущее значение часов в энергонезависимую память по крайней мере один раз в день, а во время загрузки поставщик проверял NVM, чтобы увидеть, имеется ли значение для инициализации. Резолверы эфемерного идентификатора будут реализовывать разрешение в течение временного окна, достаточного для обеспечения как разумного дрейфа тактового сигнала, так и такого типа восстановления при потере питания.
Провайдерам по-прежнему следует прилагать все усилия, чтобы минимизировать отклонения тактовой частоты, поскольку временное окно разрешения ограничено. Должен быть реализован как минимум один дополнительный метод синхронизации часов (объявление необнаруживаемых кадров Fast Pair или реализация потока сообщений ).
Рекомендации по внедрению Fast Pair
В этом разделе описаны специальные аспекты реализации Fast Pair у провайдеров, поддерживающих FMDN.
Рекомендации по использованию тегов локаторов
- Если поставщик был сопряжен, но FMDN не был предоставлен в течение 5 минут (или если обновление OTA было применено, когда устройство было сопряжено, но не было предоставлено FMDN), поставщику следует вернуться к заводской конфигурации и очистить сохраненные ключи учетной записи.
- После сопряжения поставщика он не должен менять свой MAC-адрес до тех пор, пока не будет предоставлен FMDN или не пройдет 5 минут.
- Если эфемерный идентификационный ключ удален с устройства, устройство должно выполнить сброс настроек, а также очистить сохраненные ключи учетной записи.
- Провайдер должен отклонять обычные попытки сопряжения по Bluetooth и принимать только сопряжения по быстрому соединению.
- Провайдер должен предусмотреть механизм, позволяющий пользователям временно прекращать рекламу без сброса настроек устройства (например, нажатия комбинации кнопок).
- После потери питания устройство должно объявлять необнаружимые кадры Fast Pair до следующего вызова параметров чтения маяка . Это позволяет Seeker обнаружить устройство и синхронизировать часы, даже если произошел значительный сдвиг часов.
- При объявлении недоступных для обнаружения кадров Fast Pair индикации пользовательского интерфейса не следует включать.
- Обнаруживаемые кадры Fast Pair не должны объявляться, пока поставщик подготовлен для FMDN.
- Поставщик не должен раскрывать какую-либо идентифицирующую информацию без аутентификации (например, имена или идентификаторы).
Рекомендации для классических устройств Bluetooth
В этом разделе описаны особенности классических устройств Bluetooth, поддерживающих FMDN.
Предоставление FMDN уже сопряженных устройств
Поставщик не всегда предоставляется для FMDN при сочетании с искателем, но через некоторое время после этого. В этом случае у поставщика может не быть актуального MAC-адреса BLE, который требуется для установления соединения GATT. Поставщик должен поддерживать хотя бы один из следующих способов, чтобы искатель получил свой адрес BLE, пока он уже в паре:
- Поставщик может периодически рекламировать данные учетной записи Fast Pair , которые позволяют искателю найти свой BLE -адрес с помощью BLE Scan.
Этот подход подходит поставщикам, которые не внедряют поток сообщений. - Поставщик может предоставить эти данные через поток сообщений Fast Pare через классический Bluetooth.
Этот подход подходит поставщикам, которые не рекламируют быстрые пары кадров, находясь подключенным к искателю через Bluetooth.
Поддержка обоих подходов увеличивает вероятность того, что пользователь может предоставить устройство для FMDN.
Быстрый поток сообщений
Поставщик может реализовать быстрый поток сообщений и использовать его, чтобы уведомить поиска о информации об устройстве . Реализация потока сообщений обеспечивает определенные функции, как описано в этом разделе.
Поставщик должен отправлять информационные сообщения устройства один раз каждый раз, когда установлен канал RFComm потока сообщений.
Версия прошивки (Информационный код устройства 0x09) и возможность отслеживания
Когда обновление прошивки добавляет поддержку FMDN к поставщику, подключенный искатель может уведомить об этом пользователю и предложить его. В противном случае пользователь должен перейти к списку устройств Bluetooth вручную, чтобы инициировать обеспечение FMDN.
Чтобы разрешить это, поставщик должен использовать свойство версии прошивки (код 0x09), чтобы сообщить о строковом значении, которое представляет версию прошивки. Кроме того, поставщик должен поддерживать протокол, который дает искателю узнать об изменениях возможностей из -за обновлений прошивки.
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Информационное событие устройства | 0x03 |
1 | uint8 | Версия прошивки | 0x09 |
2–3 | uint16 | Дополнительная длина данных | варьируется |
вар | байт массив | Версия строка | варьируется |
Таблица 11: Информационное событие устройства: Обновленная версия прошивки.
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Синхронизация возможности устройства | 0x06 |
1 | uint8 | FMDN отслеживание | 0x03 |
2–3 | uint16 | Дополнительная длина данных | 0x0007 |
4 | uint8 | FMDN PRESISIONST | 0x00, если недооценен; 0x01, если предоставлено какой -либо учетной записью |
5 - 10 | байт массив | Текущий MAC -адрес BLE MAC | варьируется |
Текущий эфемерный идентификатор (Информационный код устройства 0x0b)
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Информационное событие устройства | 0x03 |
1 | uint8 | Текущий эфемерный идентификатор | 0x0b |
2–3 | uint16 | Дополнительная длина данных | 0x0018 или 0x0024 |
4 - 7 | байт массив | Значение часов | Пример: 0x13f9ea80 |
8 - 19 или 31 | байт массив | Текущий Ид | Пример: 0x112334455566788990011233344556677889900 |
Таблица 13: Информационное событие устройства: синхронизация часов.
Сброс к заводским настройкам
Нежелательное профилактику отслеживания
Сертифицированные устройства FMDN также должны соответствовать требованиям в версии реализации кроссплатформенного спецификации для обнаружения нежелательных трекеров местоположения (DULT).
Соответствующие руководящие принципы, специфичные для FMDN, соответствуют DULT Spec:
- Любое совместимое с FMDN устройство должно быть зарегистрировано в ближайшей консоли устройства и активировать возможность «найти мое устройство».
- Устройство должно реализовать услугу, не являющуюся владельцем, и характеристикой, определенной в версии реализации Spec, включая информационные операции аксессуаров и управления не владельцами .
- В течение обратного периода совместимости, как определено в спецификации DULT, в рекламном кадре нет никаких изменений, как определено в этом документе.
- «Нежелательный режим защиты отслеживания», определенный в этом документе, карты в «разделенном состоянии», определенное Dult Spec.
- Руководящие принципы для реализации дополнительных информационных кодов:
- Get_product_data должен вернуть идентификатор модели, предоставленную консоли, нулевой мягкой, чтобы соответствовать требованиям 8-байтов. Например, идентификатор модели 0xffffff возвращается как 0x000000000000fffffff.
- Get_manufacturer_name и get_model_name должны соответствовать значениям, представленным в консоли.
- Get_accessory_category может вернуть общее значение «трекер местоположения», если никакая другая категория лучше подходит для типа устройства.
- Get_accessory_capabilities должен указывать на поддержку звонка, а также поиск идентификатора BLE.
- Get_network_id должен вернуть идентификатор Google (0x02).
- Рекомендации по реализации OpCode get_Identifier :
- Операция должна возвращать действительный ответ только в течение 5 минут после того, как пользователь активировал режим «идентификации», который требует комбинации нажатий кнопок. Визуальный или аудиосигнал должен указать пользователю, что поставщик ввел этот режим. Инструкции для активации этого режима для активации этого режима должны быть предоставлены в качестве требования для сертификации и не менее 10 дней до любого обновления или изменения в инструкциях.
- Ответ построен как: первые 10 байт текущего эфемерного идентификатора, за которым следует первые 8 байт
HMAC-SHA256(recovery key, the truncated current ephemeral identifier)
.
- Рекомендации по реализации идентификатора по NFC:
- В качестве URL используйте
find-my.googleapis.com/lookup
. - В качестве параметра
e
используйте тот же ответ, который построен для Get_Identifier , HEX, кодированный. - В качестве параметра
pid
используйте тот же ответ, который построен для get_product_data , кодированный hex.
- В качестве URL используйте
- Для устройства обязательно включать звуковой производитель и поддерживать функцию звонка. Согласно спецификации DULT, производитель звука должен испускать звук с минимальной 60-х фон-пиковой громкостью, как определено ISO 532-1: 2017.
- Рекомендации по реализации OPCODE SOUNT_START :
- Команда должна вызвать звонок во всех доступных компонентах.
- Максимальный поддерживаемый объем должен использоваться.
- Рекомендуемая продолжительность звонка составляет 12 секунд.
- Теги локатора должны включать механизм, который позволяет пользователям временно прекращать рекламу без сброса на заводской установке (например, нажатие комбинации кнопок).
- Инструкции по отключению должны быть задокументированы в общедоступном URL -адресе и предоставлены Google в качестве требования для сертификации и не менее 10 дней до любого обновления или изменения в инструкциях.
- URL должен поддерживать локализацию. В зависимости от клиента, язык будет предоставлен либо в виде параметра запроса («hl = en»), либо с использованием HTTP заголовка «Принятие».
Рекомендации по переключению протокола
- Только один протокол следует использовать за раз. Убедитесь, что не более чем одна сеть может работать на устройстве одновременно. Это требование необходимо, чтобы гарантировать, что между различными протоколами не наблюдается конфиденциальных пользовательских данных.
- Предполагается включить трудный рабочий процесс сброса в устройство, которое позволяет пользователю повторно отобразить устройство с другой сетью.
- Процесс обновления устройства в сеть должен быть удобным и справедливым между сетями. Пользователь должен иметь возможность выбрать, какую сеть он хочет использовать, не давая предпочтения одной из сетей. Этот поток должен быть утвержден командой Google.
Обновления прошивки
Процесс и распространение обновлений OTA должны управляться партнером с использованием собственного рабочего процесса мобильного или веб -приложения.
Быстрая пара поддерживает предоставление уведомлений пользователю, информируя доступные обновления OTA. Чтобы использовать этот механизм:
- Последняя версия прошивки должна быть обновлена в ближайшей консоли устройства.
- Приложение для компаньона должно быть установлено в ближайшей консоли устройства. Он должен поддерживать намерение обновления прошивки .
- Поставщик должен внедрить характеристику Gatt Revision Gatt.
Чтобы предотвратить отслеживание, доступ к характеристике пересмотра прошивки должен быть ограничен. Seeker сначала прочтет состояние подготовки и предоставит ключ аутентификации, как определено в этой спецификации, и только затем прочтет пересмотр прошивки. Это будет сделано в том же соединении. Если предпринимается попытка прочитать пересмотр прошивки, а поставщик не связан, и не была успешно завершена аутентифицированная операция в соответствии с тем же соединением, поставщик должен вернуть несанкционированную ошибку.
Совместимость
Найдите сеть моей устройства, требуемые услуги местоположения и Bluetooth, чтобы включить. Требует сотовой службы или подключения к Интернету. Работает на Android 9+ и в определенных странах для пользователей, имеющих право возраста.
Журнал изменений
FMDN версия | Дата | Комментарий |
---|---|---|
v1 | Первоначальный выпуск спецификации FMDN для раннего доступа. | |
v1.1 | февраль 2023 г. |
|
v1.2 | Апрер 2023 |
|
v1.3 | декабрь 2023 г. |
|