繁体   English   中英

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

[英]BLE (Bluetooth Low Energy) Pairing and Bonding

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

根据该网站 ,当首次建立蓝牙连接时,两个设备“配对”,这意味着它们交换安全信息。

问题1:就我的理解而言,安全信息交换是自动进行的,我是否正确,我在代码中无需做任何事情来使它发生?

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

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

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

冰球没有显示屏可言(两个LED和一个按钮),因此无法显示用于绑定的PIN。 计划是让用户在移动应用程序中启动绑定,并通过BLE连接发送一些命令。 作为响应,冰球将以某种方式闪烁其灯光并等待用户按下按钮。 如果在一段时间内按下按钮,则应该进行绑定。

问题4:为了使BLE连接尽可能安全,进行绑定的“最佳实践”是什么?

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

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

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

4)如果冰球除了没有按钮以外没有任何显示,也没有输入的可能性(可以看作是/是选项,其中“是”按下按钮,而“否”没有按下),则可以进行配对非常有限。 表示为I / O功能,它被定义为“ NoInputNoOutput”(请参阅​​CoreSpec v4.2,第3卷,H部分,第2.3.2节),因此,它将始终导致未经身份验证的连接(请参阅表7)。 CoreSpec v4.2,第3卷,C部分,第5.2.2.6节)。 这并不意味着该连接未加密(实际上是加密的),但是您没有针对中间人攻击的保护措施。

检查是否在圆盘上按下了按钮可能是一项额外的安全措施,但是请注意,如果攻击者想与您的应用程序配对,则攻击者可以伪造“按下按钮”消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM