首页 文章

BLE(低功耗蓝牙)配对和绑定

提问于
浏览
-1

我们正在设计一个通过BLE进行通信的小型硬件设备(称之为“冰球”),以及一个与Android和iOS通信的应用程序 . 我们有一个应用程序(用C#/ Xamarin编写)连接到冰球,他们正在连接和来回发送数据 .

根据this web site,当首次进行蓝牙连接时,这两个设备"pair"只是意味着它们交换安全信息 .

问题1:我理解安全信息的交换是否自动发生,我的代码中没有什么可以导致它发生?

问题2:我是否保证通信(在初次交换安全信息之后,包括密钥)将被加密?

问题3a:在Android设备上,如何查询连接以找出两个BLE设备商定的安全功能?

问题3b:与3a相同,但在iOS设备上

冰球无法显示(一对LED和一个按钮),因此无法显示用于粘接的PIN . 计划是让用户在移动应用程序中启动绑定,通过BLE连接发送一些命令;作为响应,冰球将以某种模式闪烁,并等待用户按下按钮 . 如果在某个超时内按下按钮,则应进行粘接 .

问题4:为了保持BLE连接尽可能安全,粘接的“最佳实践”是什么?

1 回答

  • 1

    1)BLE安全性是一件复杂的事情,如果您不是这方面的专家,最好确保构建应用程序的堆栈为您执行此操作 . 在Android(以及iOS上,我想),内置堆栈将在您启动后立即为您配对,但在您自定义构建的“冰球”上,您必须自己确保这一点 - 或实施正确执行此操作的蓝牙堆栈(推荐) .

    2)如果实现正确,则确保加密,是的 .

    3)我不能详细告诉你这个,但是当你开始配对时,蓝牙堆应该有响应;也许在返回参数中,您可以找到此信息(但我不知道,这很大程度上取决于您使用的API) .

    4)如果冰球没有显示并且没有输入可能性,除了按钮(可以看作是/否选项,"Yes"按下按钮而"No"没有按下它),配对的可能性非常有限 . 表示为I / O功能,这被定义为"NoInputNoOutput"(参见CoreSpec v4.2,第3卷,第H部分,第2.3.2章),因此它将始终导致未经身份验证的连接(请参阅CoreSpec v4中的表7) .2,Vol.3,C部分,第5.2.2.6章) . 这并不意味着连接没有加密(事实上是这样),但是你没有对Man-in-the-Middle attacks的保护 .

    检查冰球上是否按下按钮可能是一项额外的安全措施,但请注意,如果他/她想与您的应用配对,攻击者可以伪造“按下按钮”消息 .

相关问题