【转载】蓝牙简单配对(Simple Pairing)协议及代码流程简述

转载自 CSDN 博客:Android/Linux 的专栏
[DESCRIPTION]
在 BT2.1 及之后版本,蓝牙协议有在传统的密码配对(PIN Code Pairing)之外,新增一种简单配对(Simple Pairing)的方式。这种新的配对方式操作更为简单、安全性也更强。目前市面上大部分蓝牙设备均已支持简单配对方式。

从用户角度上看,传统的 PIN Code Pairing 需要双方蓝牙设备输入配对密码(如果双方都有输入设备的话),而简单配对则只需要双方确认屏幕上的 6 位随机数相同即可(如果双方都有屏幕)。
下面对简单配对的协议及代码流程进行简单描述。
[SOLUTION]

1、  在蓝牙规范中有用下图描述简单配对过程

a)         上方第一行描述了三种配对过程,分别为 Bluetooth In Band, OOB Discovery only, OOB Discovery and Authentication。这里 OOB 是指 Out of Band,即非蓝牙的传输方式,如 NFC。

b)         左边第一列从 Device Discovery 到 Authentication 是配对的四个步骤,分别是搜索设备、建立物理连接、各自产生数据加密所需的 Link key、鉴权(即确认双方 Link key 正确)。

c)         Bluetooth In Band 是手机最常用的蓝牙配对方式

i.              通过 Inquiry (蓝牙术语,规范中有详细定义如何通过 Inquiry 操作来找到周围设备)来搜索周围设备,

ii.              再通过 Page(和 Inquiry 一样,也是专有术语)建立蓝牙物理连接(ACL Link)

iii.              产生 Link key 的过程比较深入,这里暂不深入讨论,有兴趣可研究 BLUETOOTH SPECIFICATION Version 4.0 – Volume 3 – Part H – Security Manager Specification

iv.              双方各自产生 Link key 后,可通过三种方式进行鉴权:Numeric Compare (6 位随机密码比较)、Passkey Entry (一方显示数据,另一方输入密码)、Just Works (不鉴权,直接使用)。

d)         OOB Discovery only & OOB Discovery and Authentication 这两种方式是使用非蓝牙的传输方式来完成 Bluetooth In Band 的部分步骤,如通过 NFC 来交换双方蓝牙地址和 Link key,以达到“不用配对”的用户体验。

 

20140709224050529

2、  Mediatek Android 的配对代码流程

下述代码流程基于 ALPS.JB2.MP 完成,其他版本大同小异,也可以参考。在这里仅将流程图贴出,如有想进一步了解的地方,可提交 eService 讨论,以便我们根据客户需求改进。

1

2

3

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据