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

时间:2017-02-17 23:45:19

标签: android bluetooth bluetooth-lowenergy

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

根据this web site,当首次进行蓝牙连接时,这两个设备会对#34;这只意味着他们交换安全信息。

问题1:我的理解是,我自动更正了安全信息的交换,我的代码中没有必要做任何事情来导致它发生吗?

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

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

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

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

问题4:什么是最佳实践"用于粘接,以保持BLE连接尽可能安全?

1 个答案:

答案 0 :(得分:2)

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

2)如果实施正确,则确保加密,是的。

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

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

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