Возникла проблема при общении с несколькими устройствами BLE с использованием IRK
Я сталкиваюсь с одной проблемой при использовании IRK. Пожалуйста, руководство - может быть, мне не хватает информации.
Сценарий:
BLE 5.0 Device Acting Slave (назовем его BSL) генерирует IRK 1 и связывается с ведущим устройством 1(назовем его BMS1). Предположим, через некоторое время соединение разрывается, и BSL начнет рекламу с Адресом, сгенерированным с использованием IRK 1(Совместно используется между BSL и BMS1). Теперь каждый раз, когда мастер хочет связаться с BSL, он может сканировать адрес разрешения пакета Advertise, используя IRK1, и начать связь.
Сложная часть начинается здесь:
Допустим, после разрыва соединения с BSM1 устройство BSL связывается с другим BSM2, используя новый IRK2 (согласно моему пониманию, новый IRK генерируется BSL каждый раз, когда устройство связывается с новым BSM). Теперь предположим, что через некоторое время соединение с BSM2 обрывается. В это время BSL сгенерировал два IRK: IRK1 и IRK2 для связи с BSM1 и BSM2.
Теперь мой вопрос:
какой адрес будет иметь рекламный пакет BSL на данный момент? Генерируемый адрес разрешается с помощью IRK1 или адрес, разрешаемый с помощью IRK2, или оба адреса в последовательных рекламных пакетах?
Если это один из них, адрес IRK1 или IRK2, я не могу связаться с одним устройством, даже если я не потерял информацию о сопряжении или соединении.
Пожалуйста, дайте мне знать, если мое понимание неверно.
1 ответ
У вас есть только один IRK, который обычно генерируется на заводе для каждого устройства. LTK, с другой стороны, один на облигацию.
Если IRK не является жестко закодированным, он должен сохраняться, по крайней мере, до тех пор, пока хранится хотя бы одна связь. Это может быть хорошей идеей для восстановления IRK, когда все связи удалены, если вы не хотите, чтобы ранее связанные устройства отслеживали вас (в случае, если другие устройства не стерли свои данные связи).