LE legacy Pairing过程和后续连接过程简介

2023-10-10 04:30

本文主要是介绍LE legacy Pairing过程和后续连接过程简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LE legacy Pairing过程和后续连接过程简介

 

一、      手机与设备为配对时,进行配对过程:

 

  1. 1.       下面6步是启动配对过程:

 

 

 

  1. 2.       下面5步是启动加密过程:

 

 

 

 

通过上面5步之后,整个链路就被加密了,之后通过STK对数据加密形成密文数据,用于手机和设备之间交换LTK、IRK、SIGN等密钥信息,具体交换哪些密钥,取决于SMP_Pairing Response中的 Initiator Key Distribution和 Responder Key Distribution选项。

 

  1. 3.       下面6步是交换LTK、IRK等信息的过程:

 

 

 

此信息交换过程中,SMP_Pairing Response中的         Initiator Key Distribution和    Responder Key Distribution选项如下图所示:

 

 

 

总结:通过以上过程之后,整个配对过程就完成了,之后再通讯,就是使用LTK作为密钥对数据进行加解密了。

 

二、      手机已经与设备配对,直接连接设备的过程:

 

如果手机已经与设备配对,则连接过程就比较简单了,没有上面的SMP相关的步骤了,只有启动加密过程的5步。大体的思路就是,手机将EDIV和RAND发送给设备,设备使用EDIV和RAND,以及事先存好的种子数据,计算出LTK,而手机端事先已经在配对过程中存储了该LTK,这样,双方都有了该LTK,并且双方也交换了SKD和IV,因此具备了同步加解密数据的能力。流程图如下:

 

 

总结:通过以上过程之后,整个配对过程就完成了,之后再通讯,就是使用LTK作为密钥对数据进行加解密了。

 

三、      密钥简介

  1. 主端的confirm信息由临时密钥TK(全0)、主端随机数、SMP请求命令、SMP请求应答命令、主端地址类型、主端地址、从端地址类型、从端地址计算得来;
  2. 从端的confirm信息由临时密钥TK(全0)、从端随机数、SMP请求命令、SMP请求应答命令、主端地址类型、主端地址、从端地址类型、从端地址计算得来;
  3. 短期密钥STK由临时密钥TK(全0)、主端随机数、从端随机数计算得来;
  4. 每次连接从端产生长期密钥LTK过程比较复杂,如下:

a)         DIV 和 ER 经过一定的运算,得到LTK;

b)         其中ER为128bit的种子数据,由厂商分配,需要存储在设备中;

c)         而DIV由EDIV 、RAND 、DHK三个参数经过一定的计算得来;

d)         其中EDIV和RAND两个参数在每次蓝牙连接时由主端发送给从端的;

e)         DHK由IR经过运算得到;

f)          其中IR为128bit的种子数据,由厂商分配,需要存储在设备中;

所以,只要有ER、IR两个种子数据,以及主端发送的EDIV和RAND,从端就可以恢复长期密钥LTK。其中ER、IR两个种子数据由每个设备保存起来,只有设备自己知道。

而手机端需要保存配对时从端发送过来的LTK、EDIV和RAND三组数据。

当然,从端也可不进行以上麻烦的计算,直接保存LTK即可,这样可以节省计算LTK的时间,但是会耗费一定的flash来存储不同设备的LTK,对于memory不太够用的设备就不太合适。

  1. 会话密钥的产生:使用STK或者LTK作为密钥,使用IV作为初始向量,对分散因子SKD(作为明文数据)进行加密,得到的密文数据则为会话密钥。SKD由SKDm和SKDs产生,IV由IVs和IVm产生。
  2. 明文数据的加解密:使用会话密钥对数据进行加解密。

转载于:https://www.cnblogs.com/unrulife/p/10876795.html

这篇关于LE legacy Pairing过程和后续连接过程简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177960

相关文章

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

Spring Boot实现多数据源连接和切换的解决方案

《SpringBoot实现多数据源连接和切换的解决方案》文章介绍了在SpringBoot中实现多数据源连接和切换的几种方案,并详细描述了一个使用AbstractRoutingDataSource的实... 目录前言一、多数据源配置与切换方案二、实现步骤总结前言在 Spring Boot 中实现多数据源连接

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti