【发布时间】:2019-09-16 22:46:36
【问题描述】:
看看bluez dbus API,似乎不可能有一个只有配对设备才能以加密方式订阅的“通知”特性(比如“加密-认证-通知”)。
有没有办法做到这一点?或者这是bluez的限制?或者甚至根本不支持蓝牙?
【问题讨论】:
标签: security bluetooth-lowenergy bluez
看看bluez dbus API,似乎不可能有一个只有配对设备才能以加密方式订阅的“通知”特性(比如“加密-认证-通知”)。
有没有办法做到这一点?或者这是bluez的限制?或者甚至根本不支持蓝牙?
【问题讨论】:
标签: security bluetooth-lowenergy bluez
这实际上得到了低功耗蓝牙和 BlueZ API 的支持,但是,您需要将属性应用到 客户端特征配置描述符 (CCCD) 而不是特征本身。
详细说明,要通知/指示特性,它必须具有 CCCD 描述符作为该特性的一部分。例如,对于心率特性,有一个随附的 CCCD 描述符,可用于启用/禁用通知或指示。向描述符写入 0100 启用通知,写入 0200 启用指示,写入 0000 禁用通知/指示。
现在,如果您希望仅配对设备能够启用通知,则需要更改该描述符的属性,使其不“打开”。执行此操作的 API 可用 here 并且您可以例如将属性设置为“读取,加密写入”,这意味着您可以正常读取描述符的值,但是为了写入它并启用通知你必须与之配对。
请查看以下可能有用的链接
我希望这会有所帮助。
【讨论】:
尽管 Youssif 说过,但直到最近才通过 API 实现这一点。从 BlueZ 5.62 开始,引入了以下标志:
secure-notify/secure-indicate
encrypt-notify/encrypt-indicate
encrypt-authenticated-notify/encrypt-authenitcated-indicate
这些允许您以类似于*-read *-write 对应项的方式控制服务器启动更新的安全级别
`
【讨论】: