在 Android 上无需绑定的 BLE 配对

Posted

技术标签:

【中文标题】在 Android 上无需绑定的 BLE 配对【英文标题】:BLE Paring without bonding on Android 【发布时间】:2018-08-30 15:35:08 【问题描述】:

我有几个外围设备,我的 android 手机应该能够连接到这些外围设备。为了保护链接,我在外围设备上实现了 BLE-Secure Connections。 由于我唯一想要的是加密链接,并且我不希望用户将我的所有外围设备都包含在他们的绑定设备列表中,因此我不想绑定。

那么是否可以只与设备配对并在断开连接后忘记它(并且不必担心某些绑定请求对话框)?


一些背景资料:

蓝牙规范(v4.2 和 v5)告诉我,绑定或只是配对(在连接后丢弃密钥)应该像一个可以设置和请求绑定或不绑定的标志一样简单。 (在我的外围设备上就是这么简单)。

我已经知道,我可以将我的设备与 BluetoothDevice.createBond() 配对 + 绑定,它可以在后台很好地绑定,而无需任何讨厌的对话。

【问题讨论】:

【参考方案1】:

如果您在外围设备上将绑定标志设置为 0,并将 io 功能设置为无输入无输出,则将完成 Just Works 配对(无对话框)。我还猜想 Android 会尊重您在外围设备上设置的绑定标志,并且不会将设备信息存储在绑定列表中,否则它不符合规范。 createBond 方法仍然是您应该调用的方法。

在这种情况下,您获得的安全性只是简单的 Diffie-Hellman 交换,即可以防止窃听者,但不能防止中间人。

【讨论】:

我试图这样做,但由于某种原因,外围设备在清除绑定标志时没有响应配对响应。 (从外围设备启动绑定(并请求不绑定)时,手机上会出现绑定请求(之后显示为绑定,但连接有效)。因此我将对此进行调查并在下周报告。

以上是关于在 Android 上无需绑定的 BLE 配对的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中自动删除 BLE 设备绑定

蓝牙服务器重启后 BLE 配对出现问题

设备配对时,Android BLE 读取数据速率很慢

Unity - Android - BLE 蓝牙权限

NRF51822配对绑定要点

适用于Android的蓝牙低功耗(BLE)外设应用程序