1. 基本概念

二者都是在蓝牙链路(LL)层实现的一种射频通信安全机制,需要注意的是,不经过配对和绑定蓝牙双方也是可以进行数据传输的。也就是说配对和绑定只是在蓝牙连接明文传输的 基础上实现了加密传输,

且由于是在LL层实现的数据加密,因此对于应用层来说是无感的、透明的。

  • 配对(paring):包括配对能力交换、设备认证以及STK(short-term Key)生成、加密连接及机密信息分发等过程,配对的目的有三个:加密连接、认证设备、生成密钥
  • 绑定(Bonding):由配对状态中生成的LTK,配对双方将这个LTK保存起来,那么这两个设备再次重连的时候,就可以跳过配对流程,直接使用LTK对蓝牙连接进行加密传输,这种状态称为绑定状态。

因此可以看出,在大多数情况下,这两者组合起来使用,即绑定是配对后的状态。

  1. 配对-绑定流程

  • 阶段1:配对特征交换,包含Paring Request、Paring Respone,在这个过程中完成OOB data flag、IO capability等信息交换
  • 阶段2:通过SMP (security manger protocol)完成配对认证。根据IO能力和是否存在OOB,存在以下几种配对方式:Just work、Numeric comparison、Passkey、OOB。

    分为legacy paring和sc paring流程。

    legacy paring:设备通过TK生成确定数,如果这个确认数相同,则认证通过,生成STK;

    sc paring:通过Diffie-Hellman算法生成LTK
  • 阶段三:秘密信息分发(Key Distribution)。连接加密后,主次机会进行秘密信息分发,包括IRK、identity address等
  1. 总结

如上所述,如果配对的两个设备生成了LTK及其他秘密信息,并且把LTK及其他秘密信息保存到Flash等永久化存储设备中,那么我们就可以说这两个设备绑定成功。换句话说,paring和bonding是两个不同的概念,paring更强调认证和密钥生成,而bonding更强调密钥保存。一旦两个设备bonding成功,那么这两个设备断开再次重连的时候,主机就可以发起加密流程,从而使用paring生成的LTK对后续的连接进行加密。

02-Ble Paring(配对)和Bonding(绑定)的概念及流程的更多相关文章

  1. python概念-各类绑定的概念和property的变态一面

    # 编辑者:闫龙 # 1.什么是绑定到对象的方法,如何定义,如何调用,给谁用?有什么特性 #在类中定义的(self)方法都是绑定到对象的方法 #定义 class a: def b(self):#绑定到 ...

  2. 快速接入 Android BLE 开发的基础框架

    代码地址如下:http://www.demodashi.com/demo/12092.html ** Android BLE基础操作框架,基于回调,操作简单.包含扫描.多连接.广播包解析.服务读写及通 ...

  3. 如何实现蓝牙空中升级BLE OTA

    如何实现BLE OTA?什么叫DFU?如何通过UART实现固件升级?又如何通过USB实现固件升级?怎么保证升级的安全性?什么叫双备份(dual bank)DFU?什么叫单备份(single bank) ...

  4. BLE——低功耗蓝牙(Bluetooth Low Energy)

    1.简介 以下蓝牙协议特指低功耗蓝牙协议. 蓝牙协议是由SIG制定并维护的通信协议,蓝牙协议栈是蓝牙协议的具体实现. 各厂商都根据蓝牙协议实现了自己的一套函数库——蓝牙协议栈,所以不同厂商的蓝牙协议栈 ...

  5. Android使用BLE(低功耗蓝牙,Bluetooth Low Energy)

    背景 在学习BLE的过程中,积累了一些心得的DEMO,放到Github,形成本文.感兴趣的同学可以下载到源代码. github: https://github.com/vir56k/bluetooth ...

  6. nrf51822-配对绑定实现过程

    关于配对绑定的一些原理内容这里不再重复介绍,看之前的几篇文档,静态密码,动态密码,连接时触发配对就可以了. 配对绑定的内容可能比较难懂,升入的学习需要去看规范,将前面的几篇相关文档看一遍实验一边再去看 ...

  7. 网络接口配置--Bonding

    Bonding 就是讲到快网卡绑定到同一IP地址对外服务,可以实现高可用或者负载均衡.当然,直接给两块网卡设置同一IP地址是不可能的.通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为同一 ...

  8. (转载)Bonding技术指南

    原文链接:http://www.wushiqin.com/?post=68 一.什么是网卡绑定及简单原理 网卡绑定也称作"网卡捆绑",就是使用多块物理网卡虚拟成为一块网卡,以提供负 ...

  9. Centos 7下网卡bonding配置之mode4

    一.bonding技术 bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量.实现网络冗余.负载等功能,有 ...

  10. hibernate06--参数的绑定

    创建Dept实体类 以及 对应的 Dept.hbm.xml文件 /** * @author 小豆腐 * *部门的实体类 */ public class Dept { private Integer d ...

随机推荐

  1. Java 中常见的垃圾收集器有哪些?

    Java 中常见的垃圾收集器 Java 提供了多种垃圾收集器(Garbage Collector, GC),每种收集器针对不同的应用场景和需求进行了优化.以下是常见的垃圾收集器及其特点. 1. Ser ...

  2. kette介绍-Step之Table input

    表输入(Table Input)介绍: Table input用于将数据源的数据加载到Kettle转换中的行集,可以说是数 据从持久化到内存的一种加载变换,故名为输入.加载内部过程,就是通过JDBC ...

  3. EF ——left join

    如何在EF中实现left join(左联接)查询_ var TestList = from p in context.PersonalInformation join d in context.Dep ...

  4. Redis安装-Docker版

    目录 Redis安装 docker版 拉取镜像 准备目录 编写配置文件 redis配置文件 redis启动命令 windows redis GUI管理工具redis-insight 配置连接 Redi ...

  5. SpringBoot——yaml配置文件

    yaml简介 YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言).在开发的这种语言时,YAML 的意思其实是:"Ye ...

  6. STM32F407——使用systick定时器裸机制作延时函数

    准备工作: 软件:keil5 硬件:STM32F407ZET6芯片,gec6818开发板,st-link调试器 文档:<开发板原理图>,<Cortex M3与M4权威指南>,& ...

  7. 【HUST】网安|操作系统实验|实验三 内存管理

    文章目录 任务 任务1 Win/Linux编写二维数组遍历程序,理解局部性的原理. 1. 提示 2. 任务代码 3. 结果及说明 任务2 Windows/Linux模拟实现OPT和LRU淘汰算法. 1 ...

  8. HarmonyOS NEXT实战:高仿墨迹天气开发手记(附源码)

    老余说3月份的神秘产品是为纯血鸿蒙而生的一款全新形态的手机,别人想象不到的手机产品,这次的保密工作真是非常到位,让人十分期待. 闲言少叙,今天为大家分享新年的第一个实战项目,高仿墨迹天气 这个项目中有 ...

  9. 用AI做了个动态下发微信群二维码应用

    微信群的二维码每周都要更新一次,比较麻烦.于是搞了个简单的上传/下发的 Web 应用. 下面是优化前后流程,虽然看似步骤少了一步,但大大节省了时间. 主要功能 常见类型图片上传,支持删除,提供外链访问 ...

  10. Python内置数据结构操作VS sqlite3操作

    1.摘要 在同一数据库中查询某值,内置数据结构的查询速度快还是数据库sqlite3的查询速度快?针对这一问题,通过构建一个包含2500个随机数的列表,并将其插入sqlite3数据库中,利用timeit ...