Я рекомендую всегда иметь зашифрованное соединение.См. этот ответ , в котором объясняются преимущества и важность зашифрованных соединений по сравнению с открытыми соединениями.
Что касается зашифрованных соединений, вы можете легко сделать это путем сопряжения с устройством.В BLE спаривание позволяет шифровать пакеты подключения.Используя BlueZ, вы можете легко сделать это из командной строки с помощью команды bluetoothctl следующим образом: -
bluetoothctl
[bluetoothctl] connect 00:11:22:33:44:55
[bluetoothctl] pair 00:11:22:33:44:55
Заранее убедитесь, что ваше устройство BlueZ может выполнять / принимать соединения и сопряжение следующим образом: -
btmgmt connectable on
btmgmt bondable on
btmgmt io-cap
btmgmt 3
Последняя команда устанавливает для вашей возможности ввода-вывода значение NoInputNoOutput, но вы можете изменить это значение на одно из следующих значений: -
0 DisplayOnly
1 DisplayYesNo
2 KeyboardOnly
3 NoInputNoOutput
4 KeyboardDisplay
Однако, если вы это сделаете, вам потребуетсяпередайте эквивалентный параметр командной строки при запуске bluetoothctl следующим образом: -
bluetoothctl --agent KeyboardOnly
bluetoothctl --agent KeyboardDisplay
bluetoothctl --agent NoInputNoOutput
bluetoothctl --agent DisplayOnly
Если вы хотите просмотреть базовый API для этого, взгляните на исходный код BlueZ ивы можете начать с client / main.c для команд подключения и сопряжения.
Наконец, как указал Соломон Слоу, если вы обещаете защитить конфиденциальные данные, то вам определенно следует пойти намногоуровневое шифрование.Другими словами, ссылка должна быть зашифрована, а также данные перед отправкой в программном обеспечении, и если ваше устройство поддерживает шифрование на аппаратном уровне, то также сделайте это.
Для дальнейшего чтения по BLE EncryptionПожалуйста, посетите Спецификация Bluetooth Версия 5.0, Том 2, Часть H, Раздел 1: Обзор безопасности.
Надеюсь, это поможет.