02-Ble Paring(配对)和Bonding(绑定)的概念及流程
- 基本概念
二者都是在蓝牙链路(LL)层实现的一种射频通信安全机制,需要注意的是,不经过配对和绑定蓝牙双方也是可以进行数据传输的。也就是说配对和绑定只是在蓝牙连接明文传输的 基础上实现了加密传输,
且由于是在LL层实现的数据加密,因此对于应用层来说是无感的、透明的。
- 配对(paring):包括配对能力交换、设备认证以及STK(short-term Key)生成、加密连接及机密信息分发等过程,配对的目的有三个:加密连接、认证设备、生成密钥
- 绑定(Bonding):由配对状态中生成的LTK,配对双方将这个LTK保存起来,那么这两个设备再次重连的时候,就可以跳过配对流程,直接使用LTK对蓝牙连接进行加密传输,这种状态称为绑定状态。
因此可以看出,在大多数情况下,这两者组合起来使用,即绑定是配对后的状态。
- 配对-绑定流程
- 阶段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等
- 总结
如上所述,如果配对的两个设备生成了LTK及其他秘密信息,并且把LTK及其他秘密信息保存到Flash等永久化存储设备中,那么我们就可以说这两个设备绑定成功。换句话说,paring和bonding是两个不同的概念,paring更强调认证和密钥生成,而bonding更强调密钥保存。一旦两个设备bonding成功,那么这两个设备断开再次重连的时候,主机就可以发起加密流程,从而使用paring生成的LTK对后续的连接进行加密。
02-Ble Paring(配对)和Bonding(绑定)的概念及流程的更多相关文章
- python概念-各类绑定的概念和property的变态一面
# 编辑者:闫龙 # 1.什么是绑定到对象的方法,如何定义,如何调用,给谁用?有什么特性 #在类中定义的(self)方法都是绑定到对象的方法 #定义 class a: def b(self):#绑定到 ...
- 快速接入 Android BLE 开发的基础框架
代码地址如下:http://www.demodashi.com/demo/12092.html ** Android BLE基础操作框架,基于回调,操作简单.包含扫描.多连接.广播包解析.服务读写及通 ...
- 如何实现蓝牙空中升级BLE OTA
如何实现BLE OTA?什么叫DFU?如何通过UART实现固件升级?又如何通过USB实现固件升级?怎么保证升级的安全性?什么叫双备份(dual bank)DFU?什么叫单备份(single bank) ...
- BLE——低功耗蓝牙(Bluetooth Low Energy)
1.简介 以下蓝牙协议特指低功耗蓝牙协议. 蓝牙协议是由SIG制定并维护的通信协议,蓝牙协议栈是蓝牙协议的具体实现. 各厂商都根据蓝牙协议实现了自己的一套函数库——蓝牙协议栈,所以不同厂商的蓝牙协议栈 ...
- Android使用BLE(低功耗蓝牙,Bluetooth Low Energy)
背景 在学习BLE的过程中,积累了一些心得的DEMO,放到Github,形成本文.感兴趣的同学可以下载到源代码. github: https://github.com/vir56k/bluetooth ...
- nrf51822-配对绑定实现过程
关于配对绑定的一些原理内容这里不再重复介绍,看之前的几篇文档,静态密码,动态密码,连接时触发配对就可以了. 配对绑定的内容可能比较难懂,升入的学习需要去看规范,将前面的几篇相关文档看一遍实验一边再去看 ...
- 网络接口配置--Bonding
Bonding 就是讲到快网卡绑定到同一IP地址对外服务,可以实现高可用或者负载均衡.当然,直接给两块网卡设置同一IP地址是不可能的.通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为同一 ...
- (转载)Bonding技术指南
原文链接:http://www.wushiqin.com/?post=68 一.什么是网卡绑定及简单原理 网卡绑定也称作"网卡捆绑",就是使用多块物理网卡虚拟成为一块网卡,以提供负 ...
- Centos 7下网卡bonding配置之mode4
一.bonding技术 bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量.实现网络冗余.负载等功能,有 ...
- hibernate06--参数的绑定
创建Dept实体类 以及 对应的 Dept.hbm.xml文件 /** * @author 小豆腐 * *部门的实体类 */ public class Dept { private Integer d ...
随机推荐
- 使用 AOT 编译保护 .NET 核心逻辑,同时支持第三方扩展
引言 在开发大型ERP .NET 应用程序时,我面临一个挑战:如何创建一个可供第三方引用的组件(DLL)以便二次开发,但同时保护核心逻辑不被轻易反编译,还要支持反射机制(包括私有字段访问),并且坚持使 ...
- EFCore-CodeFirst-Mysql 创建ConsoleApplication 程序
1.创建一个ConsoleApplication,程序集选择.NET5.:添加对应的依赖 2.添加对应的类Student.Course.Classes using System; using Syst ...
- centos安装npm和 nodejs
NPM安装 00X01:创建目录 mkdir /usr/local/node/ cd /usr/local/node/ 00x02:下载安装包 wget https://npm.taobao.org/ ...
- KoalaWiki vs DeepWiki:更优秀的开源代码知识库解决方案
KoalaWiki vs DeepWiki:更优秀的开源代码知识库解决方案 资源链接: 教程代码仓库:https://github.com/AIDotNet/SemanticKernel.Sample ...
- Spring中的依赖注入DI
目录 Spring中的依赖注入DI Spring中的依赖注入DI 依赖注入的简单理解就是给对象设置变量值. Spring配置文件 <?xml version="1.0" en ...
- SpringBoot静态资源访问--转载
转载地址:https://www.jianshu.com/p/d40ee98b84b5
- Flex布局-容器项
弹性盒子是一种用于 按行 或 按列的一维布局方法. 元素可以膨胀以填充额外的空间, 也可以 收缩 以适应更小的空间. flex 重点概览 对于 flex 重要的理解点在于: 主轴与交叉轴 换行与缩写 ...
- C# 之静态构造器与静态字段初始化器
public class Test { /// <summary> /// 静态字段初始化器会在调用静态构造器前运行. /// 如果类型没有静态构造器,字段会在类型被使用前或运行时中更早的 ...
- BootStrap CDN收藏,矢量图标
<!-- 新 Bootstrap 核心 CSS 文件 --> <link href="https://cdn.staticfile.org/twitter-bootstra ...
- WebSocket 与 SSE 对比:即时通信的选择(一)
在现代 Web 开发中,实时通信需求越来越多,比如聊天应用.实时通知.直播弹幕.股票行情推送等.实现这些需求的常见技术有 WebSocket 和 SSE(Server-Sent Events),但它们 ...