Соединение BLE на Android 4.4.2 (API 19)

#android #encryption #bluetooth-lowenergy #sniffer

#Android #шифрование #bluetooth — низкое энергопотребление #сниффер

Вопрос:

Я пытаюсь включить шифрование на BLE-канале между Android (API-19) и csr1010. Не имеет значения, какой метод сопряжения следует использовать, «просто работает» или «пароль».

Я установил флаги шифрования в записи adv и попытался подключиться к iPhone4S. Шифрование включено, поскольку сопряжение запрашивается в начале каждого соединения. Я сам проверил это с помощью анализатора / анализатора, и он подтвердил, что шифрование включено с помощью поля «Расшифровано анализатором = ДА».

Когда я попытался подключиться и подключиться к Android (Galaxy S4 с API-19), используя функцию «.getDevice ().createBond ()», Android подтвердил соединение, где bondState == 12, как описано в «http://developer.android.com/reference/android/blu …».

Но когда я попытался отправить данные и проверить это на интерфейсном анализаторе, данные были представлены совершенно нормально и не зашифрованы, где «Расшифровано анализатором = НЕТ»

Теперь мой вопрос:

  • Если bondState = 12 и установлено соединение, обязательно ли это означает, что шифрование включено?
  • Достаточно ли выполнить соединение с помощью функции «createBond ()», чтобы включить шифрование во всех будущих соединениях с этими 2 связанными устройствами, или я должен сделать что-то еще, например, обмен LTK?

Спасибо и KR Moe

Ответ №1:

Используйте 4.4.3 или 4.4.4 для правильного шифрования. В основном соединение означает просто «запомнить и переподключиться», а не аутентификацию / шифрование. На 4.4.3 это работает вместе, хотя, если вы отметите характеристики, требующие шифрования.