CCC联盟数字车钥匙(七)——BLE连接流程

本文接上一篇CCC数字钥匙BLE概述,介绍BLE中相关连接流程的实现。

2、BLE流程

2.1 所有者配对连接建立

CCC中使用Bluetooth OOB(Out of Band, 带外)配对完成所有者配对、连接建立的流程。BLE设置分为以下两个子部分:

  • BLE链路层连接建立,以及BLE所有者配对GATT流
  • BLE配对和加密设置

一辆不支持安全测距的车辆不应允许通过BLE接口建立与所有者的配对,也不应广播所有者配对广播。所有者配对应通过NFC启动,以及完成相关的BLE激活流程。

2.1.1 BLE链路层连接建立和BLE所有者配对GATT工作流

在这里插入图片描述

建立流程由车辆端使用CCC_DK_UUID进行广播(ADV_IND)。车辆链路层应处于广播状态,同时其过滤策略应设置为接受所有连接请求。
而设备端则开启扫描,设备端应处于扫描状态,其过滤策略设置为接受所有广播。一旦设备链路层接收到一个广播,由HOST处理,Device Host检查收到的广播载荷中是否包含CCC_DK_UUID。如果包含CCC_DK_UUID,则通知用户,请求配对。若用户接受所有者配对请求,则提供配对秘钥,创建BLE连接。当收到下一个车端链路层的广播帧时,设备链路层发送CONNECT_IND,发起一个连接请求(图中步骤16)。至此,LE增强连接完成。
在这里插入图片描述
在图19-2中,设备Host(作为GATT客户端)与车辆主机(充当GATT服务器)发起服务发现,以获取DK服务和DK服务UUID_SPSM特征(Simplified Protocol/Service Multiplexer, SPSM),以建立DK服务的L2CAP连接。
图中,设备从车辆GATT服务器读取SPSM值。

2.1.2 BLE配对和加密设置

在这里插入图片描述在这里插入图片描述
设置流程从BLE安全OOB配对准备开始。

步骤1:主节点初始化配对,包括配对请求(设备发起)与配对应答(车端应答)。
步骤1a/1b:交换公钥(Pka/Pkb);
步骤2:安全连接秘钥生成;通过随机数进行配对与确认;配对过程中,需要计算Long Term Key(LTK);检查DHKey。
配对DHKey检查成功之后,主机设备开始加密,将设备和车辆添加到解析列表。

在此流程中,设备已生成公钥(Pka)和私钥(SKa),并通过安全通道收到车辆的蓝牙地址(BTAddrB),车辆的承诺值(Cb)和随机数(rb)。
车辆已生成其公钥(PKb)和私钥(SKb),并通过安全通道收到设备的蓝牙地址(BTAddrA)、设备的承诺值(Ca)和随机数(ra)。

2.1.3 所有者配对广播

对于所有者配对,仅支持Legacy LE 1M PHY。ADV_IND需要按照Section 2.3.1.1 Volume 6 Part B。
事件类型:无指向可连接和可扫描。
ADV_IND中包含广播地址和广播数据,如下所示,其中广播地址(Advertising Address, AdvA)为6字节。
在这里插入图片描述
其中IntentConfiguration用于设备上允许单独的用户流(user flow),具体取决于用户是否已经在车辆中开始车主配对。


持续更新,系列教程,收藏关注吧!

1、CCC联盟——UWB PHY
2、CCC联盟数字车钥匙(一)——UWB MAC概述
3、CCC联盟数字车钥匙(二)——UWB MAC时间网格
4、CCC联盟数字车钥匙(三)——UWB MAC时间网格同步及Hopping
5、CCC联盟数字车钥匙(四)——UWB MAC协议
6、CCC联盟数字车钥匙(五)——UWB MAC STS索引
7、CCC联盟数字车钥匙(六)——BLE连接概述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

根目录/ 空间不够,扩容,导致web页面无法加载问题

现象就是:搭建的web页面无反应,也没报错,怀疑是内存空间不够导致的。/ 扩容步骤如下: 虚拟机为关机状态添加虚拟磁盘 #查看磁盘,并创建新分区 fdisk -l fdisk /dev/sdb p       查看已分区数量(我看…

C# 将CSV文件内容装配成对象列表

写在前面 CSV文件采用纯文本的存储形式,字段间以分隔符进行区分,行之间以换行符进行切换,既可以用文本编辑器打开也可以用Excel编辑,可读性非常好,在游戏开发领域经常将其作为数值配置文件使用。文本编辑器推荐EmEdit…

msvcp140_codecvt_ids.dll丢失解决方案,验证有效

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140_codecvt_ids.dll丢失”。这些动态链接库文件是程序运行所必需的,它们包含了许多函数和资源。丢失或者损坏通常会导致某些应用程序无法正常运行。 首先,我们…

LangChain(0.0.340)官方文档三:Prompts上——自定义提示模板、使用实时特征或少量示例创建提示模板

文章目录 一、 Prompt templates1.1 langchain_core.prompts1.2 PromptTemplate1.2.1 简介1.2.2 ICEL1.2.3 Validate template 1.3 ChatPromptTemplate1.3.1 使用role创建1.3.2 使用MessagePromptTemplate创建1.3.3 自定义MessagePromptTemplate1.3.3.1 自定义消息角色名1.3.3.…

Nat. Rev. Chem. | 一份关于用机器学习研究化学问题的评估指导

今天为大家介绍的是来自Tiago Rodrigues团队的一篇论文。机器学习(ML)有望解决化学领域的重大挑战。尽管ML工作流程的适用性极广,但人们通常发现评估研究设计多种多样。目前评估技术和指标的异质性导致难以(或不可能)比…

redisson分布式锁

一、分布式锁 java里面的锁机制针对的是同一个jvm进程进行共享资源的共享加锁,但在分布式系统中,一般一个服务都会部署多个节点,这种情况下就需要有单独的中间件来承担多节点间加锁的责任。 二、使用案例 // 1. 获取锁对象RLock lock redi…

一篇带你串通数据结构

文章目录 导论数据结构的定义数据结构在计算机科学中的重要性为什么学习数据结构很重要 1、基本概念1.1、数据、数据元素和数据项的概念1.2、数据对象与数据结构的关系1.3、逻辑结构与物理结构 2、线性结构2.1、数组2.2、链表2.3、栈2.4、队列 3、非线性结构3.1、树3.2、图 4、…

在oracle中的scn技术

SCN可以说是Oracle中一个很基础的部分,但同时它也是一个很重要的。它是系统中维持数据的一致性和顺序恢复的重要标志,是数据库非常重要的一种数据结构。 转载:深入剖析 - Oracle SCN机制详细解读 - 知乎 (zhihu.com)https://zhuanlan.zhihu.…

【LeetCode】135. 分发糖果

135. 分发糖果 文章目录 一、贪心1.1 贪心 二、多语言解法 参考图解 先按「左规则」得到下图: 再按「右规则」处理后如下图: 最终,取 max(左规则,右规则),才能同时满足左规则和右规…

【slab/0x40 UAF】TPCTF2023 - core 一题多解

前言 这题据说比赛被非惨了,但是笔者比较菜,比赛的时候没有正规做出来并且也没有发现非预期,乐。其实比赛的时候一直在纠结为啥 free obj 没有 freelist,哎,陷进去了,我的 Root 宝贝。 笔者赛后用两种【常…

linux特殊权限_suid_chattr_umask

3.3 特殊权限 如果一个文件很重要,需要依赖特殊权限避免其被删除。 由于特殊权限会拥有一些“特权”,因而用户若无特殊需要,不应该去打开这些权限,避免安全方面出现严重漏洞,甚至摧毁系统。3个权限是对了执行文件或目…

CAPL语言 自动化测试

CAPL语言 自动化测试 CAPL(CAN Access Programming Language)是一种专为CAN(Controller Area Network)网络开发的编程语言。这种语言主要用于汽车行业,尤其是在自动化测试和网络通信方面。以下是关于其在自动化测试中…

【带头学C++】----- 九、类和对象 ---- 9.2 构造函数

目录 9.2 构造函数 9.2.1 构造函数的概述 9.2.2 构造函数定义方法(初始化构造函数) 9.2.3 提供构造函数的影响 9.2 构造函数 以下是一些C引入构造函数的原因: 初始化对象:构造函数允许在创建对象时立即初始化该对象的成员变量…

C#常用运算符的优先级

前言 运算符在C#编程语言中扮演着重要的角色,用于执行各种计算和操作。了解运算符的优先级是编写高效和正确代码的关键。本文将深入探讨C#中38个常用运算符的优先级划分和理解,并提供详细的说明和示例,以帮助读者更好地理解运算符的使用。 目…

sql语句排除相同元素

数据库表如图所示&#xff0c;重复的&#xff0c;我只要登录用户名下的车位号并且不重复 使用下面这种语句就会呈现下面那张图 public List<CarplaceNumber> getAllCarplaceNumberList(String substring1) throws SQLException {QueryRunner r new QueryRunner(DataSou…

超大规模集成电路设计----学习框架(一)

本文仅供学习&#xff0c;不作任何商业用途&#xff0c;严禁转载。绝大部分资料来自----数字集成电路——电路、系统与设计(第二版)及中国科学院段成华教授PPT 超大规模集成电路设计----学习框架&#xff08;一&#xff09; 这门课在学什么&#xff1f;这门课该怎么学&#xf…

Windows启动nacos操作文档

Windows启动nacos操作文档 1、新建数据库nacos_config 2、导入nacos\conf\nacos-mysql.sql文件 /******************************************/ /* 数据库全名 nacos_config */ /* 表名称 config_info */ /******************************************/ CREATE T…

(数据结构)顺序表的查找

静态分配代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define MAX 100 typedef struct LinkList {int data[MAX];int lenth; }Link; //初始化 void CreateList(Link* L) {L->lenth 0;for (int i 0; i < MAX; i){L->data[i] 0;} } //插入 …

C++动态内存管理new,delete

C动态内存管理new&#xff0c;delete 1.C/C内存分布2.C语言中的内存管理方式3.C中的内存管理方式new&#xff0c;delete3.1C中的内置类型new&#xff0c;delete3.2new&#xff0c;delete操作自定义类型3.3 new和delete匹配 4. operator new与operator delete函数4.1new和delete…

FISCO-BCOS 在ARM系统架构搭建节点(国密版)

问题&#xff1a; 使用 fisco-bcos v2.9.1 搭建一个节点&#xff0c;批量上链1000条数据&#xff0c;在上链200条-400条数据之间节点会出现异常&#xff0c;导致后面数据不能上链。 系统环境 操作系统&#xff1a;统信 查看系统构架 ld -version rootuos-PC:/# ld -version …