BLE协议栈配对过程
BLE4.0教程一蓝牙协议连接过程与广播分析

BLE4.0教程⼀蓝⽛协议连接过程与⼴播分析1.蓝⽛简介什么是蓝⽛4.0蓝⽛⽆线技术是使⽤范围最⼴泛的全球短距离⽆线标准之⼀,蓝⽛4.0版本涵盖了三种蓝⽛技术,即传统蓝⽛、⾼速蓝⽛和低功耗蓝⽛技术,将三种规范合⽽为⼀。
它继承了蓝⽛技术在⽆线连接上的固有优势,同时增加了⾼速蓝⽛和低功耗蓝⽛的特点。
这三个规格可以组合或者单独使⽤。
蓝⽛4.0规范的核⼼是低功耗蓝⽛(Low Energy),即蓝⽛4.0BLE。
该技术最⼤特点是拥有超低的运⾏功耗和待机功耗,蓝⽛低功耗设备使⽤⼀粒纽扣电池可以连续⼯作数年之久。
蓝⽛4.0技术同时还拥有低成本、向下兼容、跨⼚商互操作性强等特点。
蓝⽛4.0 BLE的特点蓝⽛4.0 BLE技术具有如下特点:1.⾼可靠性对于⽆线通信⽽⾔,由于电磁波在传输过程中容易受很多因素的⼲扰,例如,障碍物的阻挡、天⽓状况等。
因此,⽆线通信系统在数据传输过程中,具有内在的不可靠性。
蓝⽛技术联盟(SIG)在制定蓝⽛4.0规范时已经考虑到了这种数据传输过程中的内在的不确定性,所以在射频、基带协议、链路管理协议(LMP)中采⽤可靠性措施,包括:差错检测和校正、进⾏数据编解码、差错控制、数据加噪等,极⼤地提⾼了蓝⽛⽆线数据传输的可靠性。
另外,使⽤⾃适应跳频技术,最⼤程度地减少和其他2.4GHz ISM频段⽆线电波的串扰。
2.低成本、低功耗低功耗蓝⽛⽀持两种部署⽅式:双模⽅式和单模⽅式。
(1)双模⽅式,低功耗蓝⽛功能集成在现有的经典蓝⽛控制器中,或在现有经典蓝⽛技术(2.1+EDR/3.0+HS)芯⽚上增加低功耗堆栈,整体架构基本不变,因此成本增加有限。
(2)单模⽅式,⾯向⾼度集成、紧凑的设备,使⽤⼀个轻量级连接层(Link Layer)提供超低功耗的待机模式操作。
蓝⽛4.0BLE技术可以应⽤于8bit MCU,⽬前TI公司推出的兼容蓝⽛4.0BLE协议的SoC芯⽚CC2540/CC2541,外接PCB天线和⼏个阻容器件构成的滤波电路即可实现蓝⽛⽹络节点的构建。
蓝牙协议栈重连的过程

蓝牙协议栈重连的过程蓝牙协议栈是一种层次化的协议集合,用于在蓝牙设备之间传输数据。
当两个蓝牙设备之间建立连接时,它们需要经历一系列步骤,称为重连过程。
以下是蓝牙协议栈重连的一般过程:1. 设备发现(Device Discovery):这是重连过程的第一步,其中一个设备扫描附近的可用蓝牙设备。
2. 设备连接(Device Connection):一旦发现目标设备,发起设备将向其发送连接请求。
如果目标设备接受连接请求,它们就建立了物理链路。
3. 配对(Pairing):为了确保连接的安全性,设备需要进行配对。
这包括交换密钥并进行身份验证。
4. 链路管理(Link Management):在此阶段,建立链路管理协议(LMP)连接,用于控制蓝牙链路的各个方面,如调整功率、协商数据速率等。
5. L2CAP连接(L2CAP Connection):逻辑链路控制和适配协议(L2CAP)是构建在基带协议之上的协议,它为更高层协议(如RFCOMM和SDP)提供了服务。
在此阶段,建立L2CAP连接。
6. 建立RFCOMM通道(Establish RFCOMM Channels):RFCOMM是一种传输协议,提供串行线路模拟。
如果应用程序需要使用串行端口,将在此阶段建立RFCOMM通道。
7. 服务发现(Service Discovery):通过服务发现协议(SDP),设备可以查询彼此的服务和特征。
8. 数据交换(Data Exchange):一旦完成所有连接设置,应用程序就可以开始通过蓝牙协议栈交换数据。
重连过程的每一步都由各种协议和算法组成蓝牙协议栈的一部分。
虽然这个过程看起来复杂,但对于最终用户来说,它是自动和透明的。
重连过程的目标是建立安全可靠的蓝牙连接,同时优化带宽利用率和电池寿命。
由浅入深,蓝牙4.0BLE协议栈开发攻略大全(5)

本系列教程将结合TI推出的CC254x SoC 系列,讲解从环境的搭建到蓝牙4.0协议栈的开发来深入学习蓝牙4.0的开发过程。
教程共分为六部分,本文为第五部分:第五部分知识点:第二十一节 DHT11温湿度传感器第二十二节蓝牙协议栈之从机通讯第二十三节蓝牙协议栈主从一体之主机通讯第二十四节 OAD空中升级第二十五节 SBL串口升级有关TI 的CC254x芯片介绍,可点击下面链接查看:主流蓝牙BLE控制芯片详解(1):TI CC2540同系列资料推荐:由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(1)由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(2)由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(3)由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(4)有关本文的工具下载,大家可以到以下这个地址:朱兆祺ForARM第二十一节 DHT11温湿度传感器DHT11简介DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式存在OTP内存中,传感器内部在检测型号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,使其成为给类应用甚至最为苛刻的应用场合的最佳选择。
产品为4针单排引脚封装,连接方便。
技术参数供电电压: 3.3~5.5V DC输出:单总线数字信号测量范围:湿度20-90%RH,温度0~50℃测量精度:湿度+-5%RH,温度+-2℃分辨率:湿度1%RH,温度1℃互换性:可完全互换,长期稳定性: < ±1%RH/年DHT11 数字湿温度传感器采用单总线数据格式。
蓝牙协议栈开发流程

蓝牙协议栈开发流程1. 硬件平台选择在进行蓝牙协议栈开发之前,首先需要选择一个合适的硬件平台。
一般而言,蓝牙协议栈开发需要依托于一个蓝牙芯片或模块,这个芯片或模块需要支持蓝牙标准,并且提供相应的开发工具和文档。
在选择硬件平台时,需要考虑到项目的需求以及硬件的成本和可用性等因素。
2. 硬件平台驱动开发一般而言,蓝牙协议栈开发需要依赖于底层的硬件平台驱动,这需要涉及到对硬件的了解和驱动程序的开发。
这包括对芯片或模块的寄存器映射、时序要求、接口协议等方面的了解,并且需要编写相应的驱动程序来与硬件进行交互。
在驱动开发过程中,需要考虑到硬件的特性和限制,同时也需要保证驱动程序的效率和稳定性。
3. 协议栈架构设计蓝牙协议栈是蓝牙通信的核心部分,它负责处理蓝牙连接、数据传输、设备发现、配对等功能。
协议栈一般包括多个层次,包括物理层、链路层、L2CAP层、RFCOMM层、SDP 层等。
在进行协议栈的开发时,需要对整个协议栈的架构进行设计,包括各个层次的功能和接口等。
同时也需要考虑到协议栈的效率、可扩展性、可移植性等方面的要求。
4. 协议栈的实现在协议栈的实现过程中,需要根据协议规范和硬件平台的要求,编写相应的代码来实现蓝牙协议栈的各个功能。
这需要对蓝牙规范有较深的了解,并且需要在编写代码的过程中充分考虑到硬件平台的特性和限制。
在进行协议栈的实现时,需要进行模块化设计,确保各个功能模块之间的接口清晰,同时也需要进行充分的测试和调试,确保实现的功能正确和稳定。
5. 协议栈的优化在进行协议栈的开发过程中,需要进行各个方面的优化,包括代码的优化、内存的优化、功耗的优化等。
这需要根据具体的硬件平台和应用场景来进行优化的选择,以确保协议栈在实际应用中能够满足相应的要求。
6. 测试和验证在协议栈的开发完成后,需要进行相应的测试和验证工作。
这包括功能测试、性能测试、兼容性测试、安全性测试等。
这需要根据蓝牙标准和相关的测试要求,编写测试用例,并且对协议栈进行全面的测试。
无线组网技术-基于BLE协议栈的串口通信

任务实施
在simpleBLEPeripheral.c文件声明串口回调函数static void
NpiSerialCallback(uint8 port,uint8 events),并在void SimpleBLEPeripheral_Init(uint8
BLE协议栈中定义了GAP(Generic Access Profile) 和GATT(Generic Attribute)两个基本配置文件,其 中GAP层负责设备访问模式和进程,包括设备发现、建 立连接、终止连接、初始化安全特性、设备配置等; GATT层用于已连接的设备之间的数据通信。
任务实施
将蓝牙模块中CC2541芯片的RX(P0.2)与JP705的 EP703相连,TX(P0.3)与JP704的EP704相连,并将蓝牙 模块固定在NEWLab平台上。然后给CC2541上电(用导线 将nBT_PWR与地相连,即JP702第2插孔(从左到右算)与 CN722相连)。
uartConfig.callBackFunc
=
任务实施
打开simpleBLEPeripheral.c文件中的初始化函数 void SimpleBLEPeripheral_Init(uint8 task_id),在此函 数中添加NPI_InitTransport(NULL),在后面再加上一条上 电提示Hello NEWLab!的语句,添加头文件语句: #include “npi.h”。
= TRUE;
uartConfig.baudRate
BLE协议栈UART调试指南

BLE协议栈UART调试指南近年来,蓝牙低功耗(BLE)技术得到了广泛应用和推广,成为物联网设备间无线通信的重要方式之一、在BLE通信过程中,调试是非常重要的一环。
本文将介绍BLE协议栈UART调试指南,帮助开发人员更好地进行BLE调试工作。
一、BLE协议栈概述BLE协议栈是指蓝牙低功耗通信协议的各个层级的软件堆栈。
在BLE 通信中,BLE协议栈分为控制器和主机两部分。
控制器负责底层的物理层和链路层处理,而主机负责高层的GAP(通用接入配置文件)和GATT(通用属性配置文件)协议。
二、BLE协议栈UART调试UART(通用异步收发传输)是一种常用的串行通信接口,可以实现设备之间的数据传输。
在BLE开发中,UART常常被用于与目标设备进行通信,进行调试工作。
1.硬件准备首先,需要准备一台电脑和一个BLE开发板。
开发板上应该有一个UART接口,用于与电脑连接。
在连接之前,确保电脑已经安装了相关的串口驱动程序。
2.配置串口通过设备管理器找到开发板连接的串口,然后配置正确的串口参数,包括波特率、数据位、停止位和校验位等。
这些参数需要与开发板上的串口设置一致。
3.使用串口工具使用串口调试工具,如TeraTerm、Putty等,连接到BLE开发板。
在工具中配置正确的串口参数,并打开串口连接。
4.选择调试输出在BLE开发过程中,可以选择输出不同的调试信息。
根据具体的需要,可以选择输出GAP、GATT、L2CAP(逻辑链路控制和适配层协议)或HCI(主机控制接口)层的调试信息。
通过配置参数,可以将这些调试信息打印到UART接口。
5.调试输出分析一旦开启了BLE协议栈的调试输出,就可以在UART调试工具中观察到相应的调试信息。
这些信息通常包括与设备的连接状态、数据包的传输过程、GAP和GATT命令的处理等。
通过分析这些信息,可以快速定位、排查问题。
6.数据分析与解析BLE通信过程中的数据包是经过特定格式编码和解码的。
蓝牙协议栈

蓝牙协议栈蓝牙技术是一种无线通信技术,用于在短距离范围内传输数据。
它是一种低功耗、低成本的通信方式,广泛应用于各种设备,如手机、耳机、音箱、车载系统等。
蓝牙协议栈是蓝牙技术的核心组成部分,它定义了蓝牙设备之间的通信规则和协议。
蓝牙协议栈的组成蓝牙协议栈主要由两个部分组成:控制器和主机。
控制器负责物理层和链路层的处理,主机负责更高层的协议处理。
两者共同工作,实现了蓝牙设备之间的无缝通信。
控制器控制器是蓝牙协议栈的底层部分,负责处理物理层和链路层的功能。
它由芯片实现,包含了一些硬件和软件模块。
控制器主要完成以下功能:•物理层:控制器负责处理蓝牙设备之间的无线通信,包括无线信号的发送和接收、频率的控制等。
•链路层:控制器负责处理链路层的功能,包括设备的连接、数据的传输、错误的处理等。
主机主机是蓝牙协议栈的上层部分,负责更高层的协议处理。
它运行在设备的操作系统上,通过软件实现。
主机主要完成以下功能:•L2CAP(逻辑链路控制和适配协议):主机通过L2CAP协议提供了更高层的数据传输服务,包括数据的分段、重组、流控制等。
•GAP(通用访问配置):主机通过GAP协议实现设备之间的连接管理,包括设备的发现、配对、连接等。
•GATT(通用属性规范):主机通过GATT协议定义了设备之间的数据交换格式和规则,实现了设备之间的数据交互。
•应用层:主机还可以根据具体的应用需求,实现特定的应用层协议,例如音频传输、文件传输等。
蓝牙协议栈的工作流程蓝牙协议栈的工作流程可以分为以下几个阶段:1.设备发现:在这个阶段,设备通过广播自己的信息,让其他设备可以发现并进行连接。
2.配对连接:当两个设备发现彼此后,它们可以进行配对连接。
在配对连接过程中,设备会进行身份认证和加密操作,确保通信安全。
3.服务发现:一旦设备建立了连接,它们可以通过GATT协议进行服务发现。
设备可以查询对方提供的服务和特性,以确定可以进行的操作。
4.数据交换:通过GATT协议,设备可以进行数据交换。
深入浅出低功耗蓝牙(BLE)协议栈

深入浅出低功耗蓝牙(BLE)协议栈低功耗蓝牙(BLE)协议栈是一种用于低能耗设备间通信的无线通信技术。
它主要用于物联网设备、传感器和其他低功耗设备之间的通信。
本文将深入浅出地介绍BLE协议栈的工作原理和主要组件,以及其在物联网和其他领域的应用。
BLE协议栈由多个层级组成,包括物理层(PHY)、链路层(LL)、主机控制器接口(HCI)、主机层(Host)和应用层(Application)。
每个层级负责不同的功能,并通过各自的接口与上下层通信。
物理层是BLE协议栈的最底层,负责将数据转化为无线信号进行传输。
BLE使用2.4GHz频段进行通信,采用频率跳变技术来抵抗干扰和提高传输稳定性。
链路层建立在物理层之上,负责处理与设备之间的连接和数据传输。
它包括广播(Advertisement)和连接(Connection)两种传输模式。
广播模式用于设备之间的发现和配对,而连接模式用于实际的数据传输。
主机控制器接口(HCI)是链路层与主机层之间的接口,负责传输控制命令和事件信息。
主机层负责处理设备的连接管理、数据传输和高层协议等任务。
应用层则是最上层,负责处理具体的业务逻辑和应用程序。
BLE协议栈的工作流程一般分为广播、扫描、连接和数据传输四个阶段。
在广播阶段,设备会周期性地发送广播包,以便其他设备发现和连接。
扫描阶段是其他设备主动并发现正在广播的设备。
连接阶段是建立起连接后的设备之间进行数据传输。
数据传输阶段则是实际进行数据交换的阶段。
BLE协议栈的优势在于其低功耗、简单易用和成本低廉。
它适用于大量的物联网设备,如健康追踪器、智能家居设备等。
同时,BLE协议栈也在其他领域有着广泛的应用,例如无线鼠标、键盘、耳机等。
总之,低功耗蓝牙(BLE)协议栈是一种用于低能耗设备间通信的无线通信技术,具有低功耗、简单易用和成本低廉等优势。
它在物联网和其他领域有着广泛的应用,为设备间的通信提供了可靠和高效的解决方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BLE配对根据4.0.协议中相关文档的顺序从安全管理(SECURITY MANAGER)、安全管理协议SMP(SECURITY MANAGER PROTOCOL)和消息序列流程图(MESSAGE SEQUENCE CHARTS)这三个方面进行论述。
具体内容见Volume3part H一、安全管理2.1介绍配对是一个三阶段的过程。
前两个阶段总是使用,可能跟随着一个可选的传输特定秘钥分配的阶段。
阶段1:配对特征交换阶段2:短期秘钥(STK)生成阶段3:传输特定秘钥分配设备首先在配对特征交换阶段交换IO能力来决定在第二阶段使用下面哪种方法:Just Works:只工作Passkey Entry:输入密码Out Of Band(OOB):带外可选的,第三阶段将执行来分配传输特定秘钥,例如长期秘钥(LTK)和加密多样化(EDIV)值。
无论过程2用哪种方法过程1和3都是一致的。
过程3只在使用第二阶段生成的STK加密的链路上执行。
阶段1和2可以在加密或未加密的链路上执行。
2.1加密工具箱加密函数:1、ah用来创建在随机地址创建和解析中使用的24位哈希码。
2、c1用来生成在配对过程中使用的确认值3、s1用来在配对过程中生成STK基于上述加密功能的建筑块就是安全函数e。
2.2.1安全函数e安全函数e使用AES分组密码生成128位的密文和128位的明文。
encryptedData=e(key,plaintextData)注意:安全函数e能在主机中实现或使用HCI_LE_Encrypt命令实现。
2.1.2随机地址哈希函数ah函数ah用来生成在可解析私有地址中使用的哈希值。
函数ah的输入:128位k,24位r,104位padding参数r和padding级联生成r’,r’作为向函数e提供的128位输入参数明文。
r’=padding||rr最不重要的字节变成r’中最不重要的字节,padding最重要的字节变成最重要的字节。
2ah的输出为ah(k,r)=e(k,r’)mod242.1.3确认值生成函数c1在配对过程中交换确认值。
输入参数:K:128r:128pres:56preq:56iat:1ia:48位rat:1ra:48 padding:32位或0为了创建8位的iat’和rat’,需要将iat和rat与0进行连接。
iat和rat 作为8位数据的低位字节。
p1=pres||preq||rat’||iat’连接运算p1和r异或作为安全函数e的128位输入参数明文。
p2=padding||ia||rap2和使用p1作为输入明文参数的函数e的结果异或,用来作为函数e的明文输入参数。
C1的输出确定值如下:c1(k,r,preq,pres,iat,rat,ia,ra)=e(k,e(k,r XOR p1)XOR p2)2.1.4秘钥生成函数s1S1用来在配对过程中生成STK.输入:k128,r1128,r2128r1’为r1的低64位,r2’为r2的低64位,r1’和r2’连接为128位的r’用来作为安全函数e的明文数据参数。
r’=r1’||r2’s1的输出为:s1(k,r1,r2)=e(k,r’)2.3配对方法当配对开始,初始化设备初始化配对特征交换。
如果响应设备不支持配对或者配对不能被执行那么响应设备将使用含有错误代码“”Pairing Not Supported”的配对失败消息响应,否则使用配对响应消息响应。
配对特征交换用来交换IO能力,OOB认证数据可用性,认证需求,秘钥大小需求及将要分配的传输特定秘钥。
IO能力、OOB认证数据可用性及认证需求用来决定在过程2使用的STK生成方法。
所有的配对方法使用并生成两个秘钥:1、临时秘钥(TK):一个128位的临时秘钥用来在配对过程中生成STK2、短期秘钥(STK):一个128位的临时秘钥用来随着配对加密一条连接。
认证需求由GAP设置。
认证需求包括绑定类型和MITM保护需求。
初始化设备向响应设备指定它应向响应设备发送的传输特定秘钥和它需要响应设备向初始化设备发送的秘钥。
响应设备用初始化设备应发送的秘钥和响应设备应发送的秘钥作为回复。
如果设备收到无效参数的命令,它应用具有错误代码“Invalid Parameters”的配对失败命令响应。
2.3.1安全属性由SM提供的安全属性分到下面定义的一类:认证MITM保护无认证无MITM保护无安全需求认证的MITM保护通过使用密码输入配对方法或使用OOB配对方法得到。
为了保证认证的MITM保护生成,选择的认证需求可选性必须指定MITM保护。
无认证无MITM包块不能保护抵御MITM攻击。
当可预见的或容易确定的TK值使用时,在配对过程中是没有配对方法提供保护以免受被动窃听的。
如果在没有窃听存在的时候分配配对信息那么所有的配对方法都提供可信性。
初始化设备应在安全数据库为分配的秘钥保持一条安全属性记录。
响应设备应在安全数据库为分配的秘钥保持一条分配的秘钥的大小和安全属性的记录。
基于生成秘钥的方法和协定的秘钥大小响应设备可能必须减小秘钥长度以使得初始化设备和响应设备使用相同的秘钥。
2.3.2IO能力设备的输入和输出能力相结合产生它的IO能力。
2.3.3OOB认证数据2.3.4加密秘钥大小每个设备应具有最大和最小秘钥长度参数,参数定义了秘钥允许在字节中的最大和最小大小。
最大和最小秘钥长度参数应在7个字节和16个字节之间,在一个字节级别。
初始化设备和响应设备秘钥长度参数中较小的那个应该用来作为秘钥大小。
初始化设备和响应设备都应坚持得到的秘钥大小不比最小秘钥大小参数小,如果小,设备应发送具有错误代码“Encryption Key Size”的配对失败命令。
秘钥大小可能被存储这样它就可以被任何具有最小秘钥长度需求的设备检查。
如果秘钥大小不足16字节,应使用掩码,掩码应在生成后,并在被分配(在LTK情况下)、使用或存储之前完成。
2.3.5配对算法配对通过每个设备生成TK执行。
生成TK的方法基于通过使用算法选择的配对方法。
2.3.5.1选择STK生成方法如果两个设备都有OOB认证数据,那么当选择配对方法时认证需求标志应被忽略并且应使用OOB配对方法。
如果两个设备都没有在认证需求标志中设置MITM 选项,那么IO能力应被忽略并且应使用Just Works相关模型。
否则使用设备的IO能力来决定配对方法。
生成的秘钥要么是认证MITM保护,要么是无认证无MITM保护秘钥。
如果使用OOB认证方法,秘钥假定为是认证MITM保护。
然而,精确的强度基于用来传送OOB信息的方法。
如果初始化设备有OOB数据,响应设备没有OOB数据那么响应设备可能发送具有错误代码“OOB Not Available”的配对失败命令代替配对响应命令。
如果STK生成方法的结果不是提供足够安全属性的STK那么设备应发送含有错误代码“Authentication Requirements”的配对失败命令。
2.3.5.2Just Works这种STK生成方法不对在配对过程中的防止窃听或中间人攻击提供保护。
如果在配对过程中不存在攻击那么通过在未来的连接中使用加密可以建立信任。
2.3.5.3密码输入该方法使用6个数字由设备间的用户通过OOB.一个6位随机数生成的秘钥达到约20位的秘钥熵。
如果设备的IO能力是“DisplayOnly”或者表2.4定义设备显示密码那么设备应显示一个随机生成的000000到999999之间的秘钥值。
显示应保证所有的6位数字被显示----包括0。
其余的设备允许用户输入一个位于000000到999999之间的值。
如果用户接口的密码输入失败或者被取消那么设备发送具有原因代码“Passkey Entry Failed”的配对失败命令。
密码输入方法提供保护应对活动的MITM攻击,因为该方法每次调用活动的MITM的成功率为0.000001.TK值将在认证机制中使用。
2.3.5.4OOBOOB机制可以用来通信信息帮助设备发现(例如设备地址)和在配对过程使用的128位TK值。
TK值应是128位的随机数字使用随机生成需求。
如果OOB通信抗MITM攻击,那么这个相关的方法也抗MITM攻击。
同时,在OOB方法中,认证参数(TK)的大小需要不被用户能轻松读的内容或类型限制。
对于这个原因,OOB方法比使用密码输入或Just Works方法更安全。
因此两个设备都需要具有匹配的OOB接口。
2.3.5.5确认STK生成和加密初始化设备生成128位随机数(Mrand)。
初始化设备使用具有输入参数k设置成TK,r设置成Mrand。
preq设置成配对请求命令,pres设置成配对响应命令,iat设置成初始化设备地址类型,ia 设置成初始化设备地址,rat设置成响应设备地址类型,ra设置成响应设备地址的确认值生成函数c1计算128bit确认值(Mconfirm):Mconfirm=c1(TK,Mrand,Pairing Request command,Pairing Response command,initiating device address type,initiating device address, responding device address type,responding devices address)用来生成确认的初始化设备和响应设备的地址应是在连接设置时使用的设备地址。
响应设备生成128bit的随机数(Srand)。
Sconfirm=c1(TK,Srand,Pairing Request command,Pairing Response command,initiating device address type,initiating devices address, responding device address type,responding device address)设置参数同上初始化设备传送Mconfirm向响应设备。
当响应设备接收Mconfirm它传送Sconfirm向初始化设备。
当初始化设备收到Sconfirm它传送Mrand向响应设备。
响应设备通使用得到的Mrand值重复执行初始化设备的技术校验Mconfirm值。
如果响应设备计算得到的Mconfirm值和从初始化设备接收到的值不匹配那么配对过程应中止并且响应设备应发送具有原因代码“Confirm Value Failed”的配对失败命令。
如果响应设备计算的Mconfirm值和从初始化设备接收到的值匹配,响应设备传送Srand到初始化设备。
初始化设备通过使用接收到的Srand值重复执行响应设备的计算来校验Sconfirm值。
如果初始化设备计算的Sconfirm值和从响应设备接收到的Sconfirm值不匹配那么配对过程应以失败终止并且初始化设备应发送具有原因代码“Confirm Value Failed”的配对失败命令。