【问题标题】:Bluetooth LE characteristic encrypt / authenticated notify not possible?蓝牙 LE 特性加密/认证通知不可能?
【发布时间】:2019-09-16 22:46:36
【问题描述】:

看看bluez dbus API,似乎不可能有一个只有配对设备才能以加密方式订阅的“通知”特性(比如“加密-认证-通知”)。

有没有办法做到这一点?或者这是bluez的限制?或者甚至根本不支持蓝牙?

【问题讨论】:

    标签: security bluetooth-lowenergy bluez


    【解决方案1】:

    这实际上得到了低功耗蓝牙和 BlueZ API 的支持,但是,您需要将属性应用到 客户端特征配置描述符 (CCCD) 而不是特征本身。

    详细说明,要通知/指示特性,它必须具有 CCCD 描述符作为该特性的一部分。例如,对于心率特性,有一个随附的 CCCD 描述符,可用于启用/禁用通知或指示。向描述符写入 0100 启用通知,写入 0200 启用指示,写入 0000 禁用通知/指示。

    现在,如果您希望仅配对设备能够启用通知,则需要更改该描述符的属性,使其不“打开”。执行此操作的 API 可用 here 并且您可以例如将属性设置为“读取,加密写入”,这意味着您可以正常读取描述符的值,但是为了写入它并启用通知你必须与之配对。

    请查看以下可能有用的链接

    我希望这会有所帮助。

    【讨论】:

    • 非常感谢!如果您不介意,再澄清两个小问题: 1. 根据this bluez 自行添加 CCCD。所以我猜当有人为 bluez 提供自定义的时候,它会替换自动添加的? 2.我理解“加密-写入”仅保证连接是加密的,不一定经过身份验证(我认为这意味着配对蓝牙),所以“读取,加密-认证-写入”是否更适合上面的例子?
    • 为了更好地表述问题 1:我不清楚如何为 bluez 提供自定义 CCCD 或修改链接 API 中的那些只读标志。
    【解决方案2】:

    尽管 Youssif 说过,但直到最近才通过 API 实现这一点。从 BlueZ 5.62 开始,引入了以下标志: secure-notify/secure-indicate encrypt-notify/encrypt-indicate encrypt-authenticated-notify/encrypt-authenitcated-indicate

    这些允许您以类似于*-read *-write 对应项的方式控制服务器启动更新的安全级别 `

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      相关资源
      最近更新 更多