如何使用 Bluez5.50 使用 BLE 连接加密数据
How to encrypt data using BLE connection using Bluez5.50
我正在处理一个处理数据传输的 C++ 项目。我的系统由两个不同的设备组成,它们必须以受信任的模式交换敏感数据。为此,我在 Raspberry Pi.
上下载并设置了最后一个 bluez 库 (v5.50)
- 是否可以使用 bluez API 启用数据加密?
谷歌搜索使用 BLE 加密机制的可能性,我发现了不一致的意见。有人建议使用它,而其他人则不鼓励它支持应用程序级加密利用,例如 Cripto++ 库。
- 哪个是最好的解决方案?
谢谢
我的建议是始终对连接进行加密。请参阅 ,其中解释了加密连接与开放连接的好处和重要性。
关于加密连接,您可以通过与设备配对轻松实现。在 BLE 中,配对允许对连接数据包进行加密。使用 BlueZ,您可以使用 bluetoothctl 命令从命令行轻松执行此操作,如下所示:-
bluetoothctl
[bluetoothctl] connect 00:11:22:33:44:55
[bluetoothctl] pair 00:11:22:33:44:55
事先请确保您的BlueZ设备可以perform/accept连接和配对如下:-
btmgmt connectable on
btmgmt bondable on
btmgmt io-cap
btmgmt 3
最后一条命令将您的 IO 能力设置为 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 source code, and you can start with client/main.c。
最后,正如 Solomon Slow 所指出的,如果您承诺保护敏感数据,那么您绝对应该进行多级加密。换句话说,link应该加密,软件发送前的数据也应该加密,如果你的设备支持硬件级加密,那么也这样做。
如需进一步阅读 BLE 加密,请访问 Bluetooth Specification 版本 5.0,第 2 卷,第 H 部分,第 1 节:安全概述。
希望对您有所帮助。
我正在处理一个处理数据传输的 C++ 项目。我的系统由两个不同的设备组成,它们必须以受信任的模式交换敏感数据。为此,我在 Raspberry Pi.
上下载并设置了最后一个 bluez 库 (v5.50)- 是否可以使用 bluez API 启用数据加密?
谷歌搜索使用 BLE 加密机制的可能性,我发现了不一致的意见。有人建议使用它,而其他人则不鼓励它支持应用程序级加密利用,例如 Cripto++ 库。
- 哪个是最好的解决方案?
谢谢
我的建议是始终对连接进行加密。请参阅
关于加密连接,您可以通过与设备配对轻松实现。在 BLE 中,配对允许对连接数据包进行加密。使用 BlueZ,您可以使用 bluetoothctl 命令从命令行轻松执行此操作,如下所示:-
bluetoothctl
[bluetoothctl] connect 00:11:22:33:44:55
[bluetoothctl] pair 00:11:22:33:44:55
事先请确保您的BlueZ设备可以perform/accept连接和配对如下:-
btmgmt connectable on
btmgmt bondable on
btmgmt io-cap
btmgmt 3
最后一条命令将您的 IO 能力设置为 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 source code, and you can start with client/main.c。
最后,正如 Solomon Slow 所指出的,如果您承诺保护敏感数据,那么您绝对应该进行多级加密。换句话说,link应该加密,软件发送前的数据也应该加密,如果你的设备支持硬件级加密,那么也这样做。
如需进一步阅读 BLE 加密,请访问 Bluetooth Specification 版本 5.0,第 2 卷,第 H 部分,第 1 节:安全概述。
希望对您有所帮助。