首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现BLE安全?

如何实现BLE安全?
EN

Stack Overflow用户
提问于 2019-11-04 17:25:42
回答 1查看 973关注 0票数 0

通过BLE实现了Linux设备与移动应用程序之间的通信。我们可以使用一个免费的应用程序"nRF连接“来读写数据。现在我们需要支持BLE的安全。基本上我们的数据是敏感的。我们想保护我们的数据不受MITM的影响。因此,我们需要支持一个合理的高标准的安全。似乎“安全模式1,第3级:认证配对与加密”是我们所需要的。我们的设备不支持视觉输入。我们在Linux端使用BlueZ、D总线和Python3 .

但我有一些实际问题:

  1. 对于配对,我们如何支持密码保护?这是只对移动应用程序开发人员吗?
  2. 我们如何知道在Linux端何时发生配对呢?我们是否可以从BlueZ Python中使用回调或通知?
  3. 数据加密是如何工作的?有人提到AES-CMAC,有人提到AES-CCM?我们应该用哪一种?所以我们只需要加密Linux上的数据并发送数据?
EN

回答 1

Stack Overflow用户

发布于 2020-04-23 07:19:03

  1. 如果您想在连接到le设备之前启动配对,则必须使用btmgmt工具设置LE、secure-conn和bondable。基于硬件支持的LE版本,您可以(以某种方式)进行基于密码的配对。关于链接,如果我们将您的Linux设备的IO功能作为DisplayYesNo (参见代理能力),如果hw支持LE 4.2或更高版本,您可以使用通键比较启动一对。在其他任何情况下,如果LE版本低于4.2,您将需要某种方式的键盘输入或显示输出来执行基于密码键的配对。(免责声明:我只尝试过对LE进行遗留配对,即<4.2,并且它确实需要一些基于密码键的配对的输入或输出方式。4.2+上的研究结果是基于这些读数)。
  2. 您必须定义一个配对代理并使用Blue代理管理器API注册它。每当出现配对密钥请求或提示确认时,您都会得到对注册代理的相应回调。您可以定义在代理实现中应该做什么。您可以引用代理API 这里和bluez测试代码中的一个示例实现(测试/简单代理)。
  3. 我认为,当您将特性属性设置为“加密-写入”或“加密-读取”时,bluez将接受加密。关于这个领域,我没有太多的信息,但是您可以参考来了解加密在LE中的工作方式,并且可以使用一些hci日志捕获工具来捕获和分析hci数据,并查看在配对过程(示例: btmon来捕获hci日志)中各层发生了什么。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58698351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档