在第1部分我们讨论了低功耗蓝牙中的配对特征交换。配对特性交换用于使配对的发起者和响应者这两种设备能相互理解对方所支持的配对特性。

可以被使用的配对特性包含以下:

  • OOB Data Flag bit
  • MITM—Man-In-The-Middle bit
  • SC—LE secure connection indicator bit
  • IO Cap—IO Capabilities

有关这些特性的介绍,请参阅上一偏文章深入理解低功耗蓝牙的配对过程Part 1: Pairing Feature Exchange.

特性交换之后,两个设备都可以选择在后续阶段使用哪个密钥生成方法。下面是用于LE legacy pairing和LE Secure Connection的密钥生成方法列表。

其中LE Legacy Pairing 模式包括以下三种方法:

  • Just Works
  • Passkey
  • Out-of-Band(OOB)

而LE Secure Connection包括上述三种方法之外还添加了一种新方法:

  • Numeric Comparison

工作流程

下面将分步骤讲述设备是怎样选择使用哪种密钥生成方法的,大概流程如下:

步骤1:检查配对特征交换帧中的SC位。如果双方设备的SC位都等于1,则使用LE Secure Connection模式,转到步骤2。否则,将按照LE Legacy Pairing模式,请转到步骤3。

步骤2:当执行LE Secure Connection模式时,下面是配对发起者和响应者将遵循的矩阵。

  • “Use OOB”表示选择Out-of-Band。
  • “Check MITM”表示要忽略“OOB Data Flag” 检查MITM标志,
  • “Use IO Capabilities”,转到步骤4,根据两种设备的IO功能选择密钥生成方法。

步骤3:如果是LE Legacy Pairing模式,下面是配对发起者和响应者将遵循的矩阵。

  • “Use OOB”表示选择Out-of-Band。
  • “Check MITM”表示要忽略“OOB Data Flag” 检查MITM标志,
  • “Use IO Capabilities”,转到步骤4,根据两种设备的IO功能选择密钥生成方法。

步骤4:下面是使用IO功能密钥生成方法的映射,使用以下这个表,配对发起者和响应者这两个设备都将根据它们的配对特性找到合适的连接方法。

经过上述步骤之后,配对发起设备和响应设备都将知道他们在密钥生成阶段将使用哪种方式。在接下来的文章中,将介绍如何使用Passkey方法在LE legacy配对中生成相应的密钥。

转载于:https://www.cnblogs.com/lim11/p/11168601.html

深入理解低功耗蓝牙的配对过程- Part 2 Key Generation Methods相关推荐

  1. 蓝牙HC-05 配对过程以及注意事项

    蓝牙HC-05 配对过程以及注意事项 这种MCU用的蓝牙模块已经做了集成,一个模块做主机,一个做从机,配对之后直串口发送,另一端串口接收即可,相当于一个 无线的串口,就是人们经常说的透传了,可以说是相 ...

  2. 深入NXP蓝牙SDK开发(x)---深挖BLE蓝牙协议栈配对过程(2)_配对密钥生成(LTK | STK)

    深入NXP蓝牙SDK开发(x)--深挖BLE配对过程 0.开篇: 1.传统配对(Legacy Pairing): 2.安全连接配对(Secure Connections Pairing): 2.1.认 ...

  3. 蓝牙配对模式 java_BLE(低功耗蓝牙)配对和绑定

    1)BLE安全性是一件复杂的事情,如果您不是这方面的专家,最好确保构建应用程序的堆栈为您执行此操作 . 在Android(以及iOS上,我想),内置堆栈将在您启动后立即为您配对,但在您自定义构建的&q ...

  4. Android蓝牙开发前序知识-经典蓝牙低功耗蓝牙区别

    最近从网上搜了(抄了)一些经典蓝牙和低功耗蓝牙的区别.关于蓝牙的大概了解,前文已经描述过了. Android中的蓝牙 说到Android中的蓝牙,大家听到的可能有蓝牙1.0.蓝牙2.0.蓝牙3.0.蓝 ...

  5. 低功耗蓝牙开发技术概述(三)——主机

    首先来看看低功耗蓝牙的体系架构图,其实在上面的章节中已经出现过,这里再次把它搬出来看看 以下的所有内容都是主机那层的内容 1.逻辑链路控制和适配协议 和经典蓝牙完全不同,低功耗蓝牙的一个基本概念在于无 ...

  6. 关于经典蓝牙和低功耗蓝牙的区别

    刚开发蓝牙的小伙伴在开发的时候,或许会看到经典蓝牙和低功耗蓝牙这两种,不知道它们之间的区别与联系,今天给大家介绍一下经典蓝牙和低功耗蓝牙(BLE)的区别. 文章转载自: http://www.love ...

  7. 经典蓝牙与低功耗蓝牙的区别

    Android中的蓝牙开发 要说到蓝牙,小伙伴们听到的可能有蓝牙1.0.蓝牙2.0.蓝牙3.0.蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数字版本号作为蓝牙版本的区 ...

  8. 经典蓝牙与低功耗蓝牙的区别(转)

    Android中的蓝牙开发 要说到蓝牙,小伙伴们听到的可能有蓝牙1.0.蓝牙2.0.蓝牙3.0.蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数字版本号作为蓝牙版本的区 ...

  9. 低功耗蓝牙开发权威指南第一部分-综述

    蓝牙技术联盟网站:www.bluetooth.org 开发者网站:developer.bluetooth.org 第一章:什么是低功耗蓝牙技术 低功耗蓝牙和经典蓝牙不同:设计目标和市场领域都不同,低功 ...

最新文章

  1. 互联网架构师必备技术 Docker仓库与Java应用服务动态发布那些事
  2. 设计模式总结篇系列:原型模式(Prototype)
  3. 记录 之 tensorflow 常用函数:tf.split(),tf.clip_by_value() 和 tf.cond()
  4. 「PKUWC2018」随机游走
  5. 动手学PaddlePaddle(5):迁移学习
  6. ssm mysql增删改查_SSM配置并实现简单的数据库增删改查操作
  7. 20190810:存在重复(三种解法)
  8. java 调用 spring,java中使用redis和spring中调用redis
  9. 在哪里学python-学Python从哪里开始?
  10. servlet的url-pattern匹配规则详细描述
  11. ODBC安装及数据源配置
  12. java gbk转机内码_\xd5\xd2\xb2\xbb\xb5\xbd\xd6 gbk内码转中文方法
  13. 如何查看自己的JDK版本
  14. c语言编程数的平方,C语言编程实例:由两个平方三位数获得三个平方二位数
  15. 如何爬取中国近十年的GDP,并写入csv文件?
  16. long8.cc app.html,Potoshop 长投影扩展插件 Long Shadow Generator 支持CS6-CC2015
  17. 换个角度看发国难财的行为
  18. 面试题:你让工人为你工作7天,给工人的回报是一根金条...
  19. java高级软件工程师 考试_Java高级软件工程师人才缺口巨大
  20. 干货分享:app推广新人如何做好应用商店推广

热门文章

  1. sublime text 使用笔记
  2. Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器
  3. Spring笔记——2.使用Spring容器
  4. Flex embed XML and Icon
  5. 转载:MFC 获得各类指针、句柄的方法
  6. 让linux的防活墙也像windows一样简单易用
  7. Overview-ISA-2004-SP3
  8. 卷积神经网络(CNN)
  9. 学计算机怎么收费呢,学计算机怎么收费服务为先_贵阳经济技术学校
  10. python线性回归模型预处理_线性回归-2 数据预处理与模型验证评估