蓝牙学习八(配对与绑定)

news2024/11/18 7:25:25

1.简介

        Paring(配对)Bonding(绑定)是实现蓝牙射频通信安全的一种机制,有两点需要注意:

  1. Paring/bonding实现的是蓝牙链路层的安全,对应用层来说是完全透明的。也就是说,不管有没有paring/bonding,应用层数据的收发方式都是一样的,不会因为加了paring/bonding而使应用层数据传输需要做某些特殊处理。
  2. 安全有两种选项:加密签名。目前绝大部分应用都是选择加密

        实现蓝牙通信安全,除了paring/bonding这种底层方式,用户也可以自己在应用层去实现相同的安全功能。从功能上来说是没有太大区别的,不同的是应用层安全自己实现的话,需要自己选择加密算法、密钥生成、密钥交换等。如果不是这方面的专家,很有可能会有安全漏洞。而蓝牙的paring/bonding则把上述过程标准化,放在了蓝牙协议栈里。并且其安全性得到了充分的评估,用户可以“无感”使用安全的蓝牙通信。

        paring/bonding是蓝牙sercurity manager(SM)的一部分,SM定义了蓝牙通信的安全架构,里面涉及安全架构密码工具箱paring协议等。其中paring协议是关键,所以经常把paring和SM二者等价。

2.配对

        配对是找到确定需要和自己通信的设备,也就是身份确定。接着是安全密钥共享,而这一过程仅仅是由启动加密到得到短期密钥(STK)为止。其包括配对能力交换设备认证密钥(固定128bit)生成连接加密以及机密信息分布等过程。配对的目的有三个:加密连接、认证设备、生成密钥

        区别于传统蓝牙的配对过程,BLE的配对过程发生在连接过程之后

        和经典蓝牙一样,协议为处于连接状态的BLE设备,定义了两种Link Layer角色:MasterSlave。Master是连接的发起方,可以决定和连接有关的参数。Slave是连接的接收方,可以请求连接参数,但无法决定。

        在SM(Security Manager)的规范中,配对时指"Master和Slave通过协商确立用于加(解)密的Key的过程",主要由三个阶段组成:

        配对是一个三阶段的过程。前两个阶段时必须的,第三阶段时可选的

  • 第一阶段:配对特征交换。称作“Pairing Feature Exchange”,用于交换双方有关鉴权的需求(authentication requirements),以及双方具有怎样的人机交互能力(IO Capabilities)
  • 第二阶段:短期密钥(STK)生成。通过SMP协议进行实际的配对操作,根据阶段一“Feature Exchange”的结果,有两种配对方法可选:LE legacy pairing和LE Secure Connections
  • 第三阶段:传输特定密钥分配。该阶段时可选的,经过阶段一和阶段二之后,双反已经产生了加密key。因此可以建立加密的连接。加密连接建立后,可以互传一些私密的信息,例如Encryption Information、Identity Information、Identity Address Information等。

注:STK的生成规则如下:

Just work没有加密,TK=0X00。Just works方式不能抵抗窃听者和中间人攻击,只有在配对过程时没有遭受攻击,后面加密的链路数据才是可信的。安全级别很低

passkey entry密码输入。如果passkey是“019655” ,TK的值就是0x00000000000000000000000000004CC7。(0x4cc7就是19655的16进制数)。将输入的值作为一个6位数的十进制,转换为15字节的十六进制。

OOB(Out of band)带外的TK值,是一个16字节的随机数,通过非BLE的方式传递给对端。例如二维码或IR红外。对于蓝牙窃听者/攻击者而言,这个data的传输是不可见的,因此会显得安全很多

 2.1 配对请求的数据格式

        

IO capabilities表明输入,输出的能力。

        输入是按键、键盘输出是显示数字用的界面

  •         0x00(Display Only)只能 显示000000~999999的数字
  •         0x01(Display YesNo)显示Yes/No的按钮
  •         0x02(Keyboard Only)只能输入000000~999999的数字
  •         0x03(No input No output)没有输入也没有显示,只能用Just work工作方式
  •         0x04(Keyboard Display)能输入000000~999999的数字,也能有屏幕显示。

OOB data flag

  •         0x00        OOB数据没有发送
  •         0x01        OOB数据通过远端设备发送(如IR)
  •         0x02-0xFF 保留

 

3.绑定

        配对过程中会生成一个长期密钥(LTK,long-term key),如果配对双方把这个LTK存储起来放在Flash中(有的时候是长期密钥、身份解析密钥、连接签名解析密钥这三个秘密要的某一个或组合进行交换,然后将交换的密钥存储到数据库中),那么这两个设备再次重连的时候,就可以跳过配对流程,而直接使用LTK对蓝牙连接进行加密,设备的这种状态称为绑定(bonding)

        这里要明确一个概念,配对绑定只有在两个设备之间第一次配对时才会发生,后续的连接由于第一次的配对绑定已经有“Bonding”过程(即存储),如果存储的数据库没有被认为的清空,后续的连接不需要再次配对。并不是所有的通信都需要加密进行数据保护,因此,建立连接之前不一定需要配对和绑定,可以直接建立连接。

4.总结

         BLE的配对和绑定是一连串的动作,总结下来可以用下图来表示。

        

  • 阶段1:配对特征交换,得到临时密钥(TK)值(配对请求、配对响应)
  • 阶段2:身份确认以及短期密钥(STK)生成(通过安全管理协议(SMP)配对),确定自己正在和一个真正想要通信的设备通信,而非第三方。即确定对方身份。
  • 阶段3:传输特定密钥(密钥分配)。绑定所需存储到安全数据库的数据也是在此阶段发送的。

        上述三阶段总结:

  1. 配对认证:主从机一方提供密码一方输入密码,如果双方密码一致,那么此密码将作为TK(临时密码)
  2. 加密链路:利用得到的TK(临时密码)等信息计算出STK(短期密码)用来做加密认证
  3. 绑定:加密认证通过后,利用STK等信息生成LTK(长期密码),把LTK保存下来用于下次连接时做加密认证,不需要再次配对就可以加密链路。这就是绑定

        绑定后通讯过程:每次连接时,从机会向主机发送安全请求。如果主从机相互绑定过,主机不会发送配对请求,主机直接利用绑定时保存的LTK发送加密请求。从机也会利用绑定时保存的LTK来做加密回复,三次握手成功后(加密成功,三次握手通讯由底层完成,用户不可见),从机回复主机加密状态success。

        建立连接是使用的静态密码,解除绑定/配对是使用的动态密码。回连也需要密码,使用的是动态密码,这是为了防止窃听,起保护作用。为了防止泄露信息,用户也可以自行在应用层去实现相同的功能。

        配对和绑定的区别:

1.连接:通讯的基础,通讯数据为明文

2.配对:配对仅仅是为了在连接的基础上加密(通讯数据经过加密为密文)。提高蓝牙链路传输的安全性。不配对也能连接进行通信

3.绑定:绑定是配对发起时的一个可选配置。把配对信息记录下来,下次不用配对自动进入加密的连接。所以没有在bonding列表里的设备不影响连接

        在不引起误解的情况下,经常把paring当成paring和bonding两者的组合,因为只paring不bonding的应用情况非常少见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GitHub入门指南(下)

三、新手必备的GitHub基本操作 1.配置SSH Key (1) 第一次使用时,要配置一下账户。 在 Git Bash 客户端,输入: git config --global user.name “这里输入你在GitHub的账户名” git config --global user.email “这里输入你在GitHub的注册邮…

基于51单片机的数字电压表(PCF8591)(Proteus仿真+程序)

编号:32 基于51单片机的数字电压表(PCF8591) 功能描述: 本设计由51单片机最小系统PCF8591模块四路模拟量输入模块一路DA输出液晶1602显示模块 1、主控制器是89C82单片机。 2、PCF8591模数转换器进行A/D转换,读取四路…

Java中常见的文件操作

作者:~小明学编程 文章专栏:JavaEE 格言:热爱编程的,终将被编程所厚爱。 目录 操作文件 File类 属性 构造方法 常见方法 重要方法的操作演示 文件内容的读写 FileInputStream OutputStream 按照字符读入 按照字符写入…

『分分钟玩转VueRouter●中』少开一把王者荣耀掌握VueRouter的基本使用

文章目录一、编程式路由导航二、缓存路由组件三、两个新的声明周期钩子四、路由守卫五、路由器的两种工作模式本篇博客会介绍Vue中的VueRouter的基本使用,编程式路由导航增加了我们进行路由跳转的灵活性,缓存路由组件保障了我们使用路由时的便捷性&#…

【高阶数据结构】搜索二叉树 经典习题讲解

🌈欢迎来到数据结构专栏~~搜索二叉树 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句…

【OpenFOAM】-olaFlow-算例6- waveFloatingObject

算例路径: olaFlow\tutorials\waveFloatingObject 算例描述: 波浪作用下的浮体的刚体运动,属于流固耦合(FSI)问题 学习目标: 动网格设置和使用,网格变形控制,浮体的物理参数设置&…

23种设计模式(二)——享元模式【对象性能】

文章目录意图什么时候使用享元享元模式的实现内部状态和外部状态享元模式的优缺点与其他模式的关系亦称: 缓存、Cache、Flyweight 意图 享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相…

数图互通房产管理系统架构分析

数图互通高校房产管理系统V5.0 使用JAVA、Canvas、H5等技术开发的图形数据交互技术架构平台;本系统满足XX大学房屋管理系统需求,高校房产综合管理信息系统平台V5.0遵循高校房产“分级授权、分类管理、网络化、图形化、精细化、流程化”的管理理念&#x…

关于新冠的几点总结

关于新冠的几点总结一、前言:二、病程阶段1. 第一阶段 反复发热2. 第二极端 退烧虚弱3. 第三阶段 咳嗽嗜睡三、处置措施:1. 思想准备2. 药/物准备3. 退烧方式4. 保持体温5. 通则不痛,痛则不通6. 营养补充7. 恢复关键期写在最后一、前言: 所写内容,为个人…

磊科路由器后门蜜罐捕获的事件分布情况

重点物联网 漏洞利用情况本节我们选取了两个漏洞进行分析。UPnP 相关的漏洞我们将在 4.4.3 进行分析,除去 UPnP 相关漏 洞外,被利用最多的是 Eir D1000 路由器的一个漏洞 [44](CVE-2016-10372),我们将对其进行分析。 …

Apollo浅解2

目录 用户、角色、权限 三者间的关系 权限Permission 新增一个应用时 新增一个命名空间时 角色Role 新增一个应用时 新增一个命名空间时 第三方应用 用户、角色、权限 三者间的关系 apollo也采用经典的三层权限设计,用户关联角色,角色关联权限…

DOM基础

一、DOM的概念 文档对象模型(DOM,Document Object Module)是W3C组织推荐的处理可扩展标志语言的标准编程接口,它允许程序和脚本动态的访问和更新文档的内容、结构和样式。 HTML的DOM操作是将文档里所有的内容(包括标签、标签里的内容、标签属性甚至注释等)都当做一…

51单片机入门 第一篇:LED灯

文章目录前言一、LED原理图二、创建keil5工程三、代码的编写四、程序的烧录总结前言 本篇文章讲正式带大家开始学习51单片机,希望这些文章能够很好的帮助到大家学习51单片机。 一、LED原理图 一般的51单片机上都带有8个LED灯,这里8个LED灯分别接到了板…

JS逆向——工信部ICP、IP、域名信息备案管理平台

问题:(1)数据列表接口token参数验证(2)authKey参数加密生成 1、页面中请求接口,观察请求头可发现,校验参数token为加密的字符串,根据该字符串并不能直观得到所用的加密方式是什么。 …

数据库大小写不敏感后,值也不敏感了

现象:我有一个账号admin,结果莫名多了一个ADMIN、Admin、AdMin等一些列账号;细品你的密码就算密文签名,是不是在你不知情的情况下也有很多。 原因:数据库安装的时候设置的大小写不敏感导致 解决:建议第三…

Spark 的学习笔记

Spark 的学习笔记 文章目录Spark 的学习笔记1. 概述Spark 优势及特点优秀的数据模型和丰富计算抽象Spark 生态圈Spark 特点Spark 与 HadoopSpark与MRSpark Streaming与StormSpark SQL与HiveSpark 运行模式2. 快速入门使用 Spark Shell 进行交互式分析基础Dataset 上的更多操作缓…

【机器学习】LDA算法原理

问题 线性判别分析(Linear Discriminant Analysis,LDA)是机器学习中常用的降维方法之一,本文旨在介绍LDA算法的思想,其数学推导过程可能会稍作简化。 LDA的思想 ● LDA是一种线性的、有监督的降维方法,即…

销售流程标准化重要吗?

各行各业都存在销售,但并不是每个销售都可以成为优秀的销售,优秀的销售往往有一套完整的销售流程,为了保证销售新人销售工作的顺利进行,销售流程标准化很有必要。 前言 各行各业都存在销售,但并不是每个销售都可以成为…

前端面试题之计算机网络篇--WebSocket基本使用

WebSocket 普通的包的请求和响应过程 1. 对 WebSocket 的理解 WebSocket是HTML5提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。浏览器和服务器只需要完成一次握手,两者之间…

HDLBits练习汇总-13-时序逻辑设计测试--状态机(一)

简单摩尔状态机1(Fsm1) 是一个摩尔状态机,具有两种状态,一种输入,一种输出。实现此状态机。请注意,重置状态为 B。使用异步复位。 模块声明 module top_module(input clk,input areset, // Asynchrono…