我打算对蓝牙智能外围设备进行编程,但我不太清楚如何实现它。
外围设备只能连接到一个中央设备。是否有可能在(一般可连接的)广告(使用广告数据)期间告诉该外围设备不接受来自每个人的连接?
显然,外围设备在第一次连接之前必须是“公共的”(可见且可连接到任何中央设备),但之后它只对连接到该中央设备感兴趣。这不是隐私或安全问题;我只是试着不污染其他扫描中心设备的扫描结果。
我正在阅读Robin Heydon撰写的“Bluetooth Low Energy - 开发人员手册”一书,其中涵盖了一般的Bluetooth Smart。它提到了“Flags AD”广告数据。这可能是我要找的吗?这本书还提到了“粘合”,我理解这只是一种长期安全的关系。我不需要加密链接,私人地址或签名写入,但是我建议在我的情况下使用绑定吗?
答案 0 :(得分:0)
由于我在写完这个问题后学到了很多蓝牙LE,而且没有人回答,我在这里写了一个答案。
两个设备之间的长时间关系是通过绑定完成的。绑定导致两个设备交换和保存密钥,这些密钥将用于进一步连接以相互验证。此外,密钥用于加密线路。
如果一般广告外围设备想要定位特定的中心,它会通过广告数据来实现。 Core Specification Supplement (CSS) v6有两种数据类型可用于此目的:公共目标地址(1.13)和随机目标地址(1.14)。或者作为开发人员,您可以通过某种方式将制造商特定数据添加到您的任何地方。
由于广告外围设备针对特定设备,因此可能会阻止来自其他中心的连接。为此目的,请使用白名单。将您要定位的中心地址放入白名单,将过滤策略设置为仅允许来自白名单中设备的连接,然后开始广告。但有一个问题:外围设备需要解决中心地址,以确保它是先前的债券。在蓝牙4.2之前,这必须手动完成(在应用程序中)。相反,4.2规范does this automatically for you:将绑定中心置于解析列表中,链接层也将进行解析。