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

kangear注:

文章转自:http://blog.csdn.net/myxmu/article/details/12217135

原文把图给搞丢了,但是文章太好了,这个时候我就发挥多年的Google和人脉关系根据链接找到了,补上图(这个图是MTK内部用图)。

[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,以达到“不用配对”的用户体验。

2、  Mediatek Android的配对代码流程

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

蓝牙简单配对(Simple Pairing)协议及代码流程简述,布布扣,bubuko.com

时间: 2024-10-11 10:51:51

蓝牙简单配对(Simple Pairing)协议及代码流程简述的相关文章

深入理解低功耗蓝牙的配对过程- Part 3 LE legacy Pairing Passkey Entry

在前一篇文章深入理解低功耗蓝牙的配对过程- Part 2 Key Generation Methods中,讨论了密钥生成方法,如果配对发起设备和响应设备满足一些IO功能的条件,它们将选择LE legacy Bluetooth配对Passkey Entry方法. 在此文中,我将研究legacy pairing with Passkey Entry的配对以及它是如何工作的. Figure 1: LE Legacy Pairing, Passkey Entry 临时密钥(TK)和随机数生成 当您使用L

Android蓝牙自动配对Demo,亲测好使!!!

蓝牙自动配对,即搜索到其它蓝牙设备之后直接进行配对,不需要弹出配对确认框或者密钥输入框. 转载请注明出处http://blog.csdn.net/qq_25827845/article/details/52400782 经过最近一段时间得研究,针对网上给出的案例.总结了一个亲测好使的Demo. 说明如下: 1.本Demo用来连接蓝牙设备HC-05,如果你要连接其他蓝牙设备,注意修改相关名字以及修改设备初试pin值. 2.将Demo安装在Android手机上,点击按钮,可以实现与目标蓝牙设备的自动

Android蓝牙自动配对Demo,亲测好使!!!(转)

蓝牙自动配对,即搜索到其它蓝牙设备之后直接进行配对,不需要弹出配对确认框或者密钥输入框. 转载请注明出处http://blog.csdn.net/qq_25827845/article/details/52400782 源码下载地址:https://github.com/chaohuangtianjie994/BlueTooth-AutoPair 经过最近一段时间得研究,针对网上给出的案例.总结了一个亲测好使的Demo. 说明如下: 1.本Demo用来连接蓝牙设备HC-05,如果你要连接其他蓝牙

JavaScript简单抽奖程序的实现及代码

JavaScript简单抽奖程序的实现及代码 1.需求说明 某公司年终抽奖,需要有如下功能 1)可以根据实际情况设置到场人数的最大值 2) 点击"开始",大屏幕滚动,点击"停止",获奖者的编号出现在大屏幕上 3)在界面里显示全部奖项获奖人编号 4)不重复获奖 5)不会因为输入错误而导致抽奖结果异常. 2.代码呈上 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">

简单JS全选、反选代码

1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2<html xmlns="http://www.w3.org/1999/xhtml"> 3<head> 4<meta http-equiv="Cont

超简单的php上传类代码

这个是我昨晚写的一个超简单的上传类,只要 $up->upload($_FILES['imgfile']); 即可. 一条语句搞定上传 石家庄工商代办送给所有草根的个人站长 上传文件: up.php <?php //验证 if(empty($_COOKIE['login'])) { die('index'); } //加载类 include_once("_inc/class_uppic.php"); //上传 if(!empty($_GET['action']) &&

IOS开发系列--Objective-C之协议、代码块、分类

概述 ObjC的语法主要基于smalltalk进行设计的,除了提供常规的面向对象特性外,还增加了很多其他特性,这一节将重点介绍ObjC中一些常用的语法特性.当然这些内容虽然和其他高级语言命名不一样,但是我们都可以在其中找到他们的影子,在文章中我也会对比其他语言进行介绍,这一节的重点内容如下: 协议protocol 代码块block 分类category 协议protocol 在ObjC中使用@protocol定义一组方法规范,实现此协议的类必须实现对应的方法.熟悉面向对象的童鞋都知道接口本身是对

IOS学习笔记--Objective-C之协议、代码块、分类

概述 ObjC 的语法主要基于smalltalk进行设计的,除了提供常规的面向对象特性外,还增加了很多其他特性,这一节将重点介绍ObjC中一些常用的语法特性.当 然这些内容虽然和其他高级语言命名不一样,但是我们都可以在其中找到他们的影子,在文章中我也会对比其他语言进行介绍,这一节的重点内容如下:(原文地址:http://www.cnblogs.com/kenshincui/p/3869639.html) 协议protocol 代码块block 分类category 协议protocol 在 Ob

php模拟飞鸽传输协议,代码实现向飞鸽发送消息

飞鸽传书协议:1:23149:riverlet:127.0.0.1:\x20:balabalabalabala版本号:包编号:发送者姓名:发送者主机名:命令字:附加信息(消息内容) <?php define("IPMSG_SENDMSG", 0x00000020); // 0x00000020 命令字代表不同的命令 #define("IPMSG_SECRETOPT", 0x00000200);// 0x00000200 另一个命令字 define("