kangear注:
文章转自:http://blog.csdn.net/myxmu/article/details/12217135
原文把图给搞丢了,但是文章太好了,这个时候我就发挥多年的Google和人脉关系根据链接找到了,补上图(这个图是MTK内部用图)。
[DESCRIPTION]
在BT2.1及之后版本,蓝牙协议有在传统的密码配对(PIN Code Pairing)之外,新增一种简单配对(Simple Pairing)的方式。这种新的配对方式操作更为简单、安全性也更强。目前市面上大部分蓝牙设备均已支持简单配对方式。
从用户角度上看,传统的PIN Code Pairing 需要双方蓝牙设备输入配对密码(如果双方都有输入设备的话),而简单配对则只需要双方确认屏幕上的6位随机数相同即可(如果双方都有屏幕)。
下面对简单配对的协议及代码流程进行简单描述。
[SOLUTION]
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,以达到“不用配对”的用户体验。
2、 Mediatek Android的配对代码流程
下述代码流程基于ALPS.JB2.MP完成,其他版本大同小异,也可以参考。在这里仅将流程图贴出,如有想进一步了解的地方,可提交eService讨论,以便我们根据客户需求改进。
蓝牙简单配对(Simple Pairing)协议及代码流程简述,布布扣,bubuko.com