gpt4 book ai didi

c++ - 如何使用 Bluez5.50 使用 BLE 连接加密数据

转载 作者:行者123 更新时间:2023-11-30 04:52:27 29 4
gpt4 key购买 nike

我正在处理一个处理数据传输的 C++ 项目。我的系统由两个不同的设备组成,它们必须以受信任的模式交换敏感数据。为此,我在我的 Raspberry Pi 上下载并设置了最后一个 bluez 库 (v5.50)。

  1. 是否有可能使用 bluez API 启用数据加密?

谷歌搜索了使用 BLE 加密机制的可能性,我发现了不一致的意见。有人建议使用它,而其他人则不赞成使用应用程序级加密,例如 Cripto++ 库。

  1. 哪个是最好的解决方案?

谢谢

最佳答案

我的建议是始终对连接进行加密。请看this answer这解释了加密连接与开放连接的好处和重要性。

关于加密连接,您可以通过与设备配对轻松实现。在 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

最后一条命令将您的 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 , 你可以从 client/main.c 开始用于连接和配对命令。

最后,正如 Solomon Slow 所指出的,如果您 promise 保护敏感数据,那么您绝对应该采用多级加密。换句话说,链接和数据在软件中发送之前都应该加密,如果您的设备支持硬件级加密,那么也可以这样做。

如需进一步阅读 BLE 加密,请访问 Bluetooth Specification 5.0 版,第 2 卷,H 部分,第 1 节:安全概述。

希望对您有所帮助。

关于c++ - 如何使用 Bluez5.50 使用 BLE 连接加密数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54369175/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com