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

Posted zhchoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝牙简单配对(Simple Pairing)协议及代码流程简述相关的知识,希望对你有一定的参考价值。

kangear注:
文章转自:http://blog.csdn.net/myxmu/article/details/12217135
原文把图给搞丢了。可是文章太好了,这个时候我就发挥多年的Google和人脉关系依据链接找到了,补上图(这个图是MTK内部用图)。

[DESCRIPTION]
 
在BT2.1及之后版本号,蓝牙协议有在传统的password配对(PIN Code Pairing)之外,新增一种简单配对(Simple Pairing)的方式。

这样的新的配对方式操作更为简单、安全性也更强。眼下市面上大部分蓝牙设备均已支持简单配对方式。

从用户角度上看。传统的PIN Code Pairing 须要两方蓝牙设备输入配对password(假设两方都有输入设备的话),而简单配对则仅仅须要两方确认屏幕上的6位随机数同样就可以(假设两方都有屏幕)。
以下对简单配对的协议及代码流程进行简单描写叙述。
 
 
[SOLUTION]
 

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

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

b)         左边第一列从Device DiscoveryAuthentication 是配对的四个步骤,各自是搜索设备、建立物理连接、各自产生数据加密所需的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位随机password比較)Passkey Entry (一方显示数据,还有一方输入password)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)协议及代码流程简述的主要内容,如果未能解决你的问题,请参考以下文章

蓝牙speaker配对流程源码分析

android蓝牙配对 如何自动配对设置PIN码

Android 4.0蓝牙配对:每次都需要输入密码

Android蓝牙协议-蓝牙配对与连接

Linux命令行如何接受没有pin的蓝牙设备配对

Linux 上 C blueZ 中的蓝牙配对