CCC数字钥匙协议——从车端BLE浅谈CCC数字钥匙协议

前言

本文主要以车端BLE的视角来浅谈CCC数字钥匙协议规范,也是为了方便大家能够好的理解CCC协议。本文对于有一定BLE基础的相对友好。文中可能会涉及一些蓝牙规范的知识,如有不懂,可以详细查阅对应的蓝牙官方文档。

对于BLE而言,CCC协议中只划分了Phase0、1、2、3、4这几个阶段,而本文将整个流程划分为以下几个部分。分别为Phase0/1、蓝牙连接、Phase2、OOB配对、UWB测距、Phase3、Phase4。整体流程如下图。

一、Phase0

准备阶段,该阶段中手机端、车端、车端服务器需要准备各自的东西。详细描述见该篇文章。

CCC数字钥匙设计【NFC】 --车主配对流程介绍

二、Phase1

启动阶段,手机采用以下方式来接受密码,从而启动OP流程。  

 1、通过用户输入。

2、通过URL来跳转钱包(详见6.3.7)。

3、车辆OEM开发的app进行跳转。

三、蓝牙连接

首先在CCC协议中,广播分为OP和PE。且两个广播都是RPA地址

PE阶段,车辆广播应基于LE 1M PHY。对应广播周期应为42.5ms。对于这个广播,ADV_IND应包含AdvA,但不包含广播数据(AdvData)。

在进行OP流程的时候,开启OP广播便于手机端扫描并发起连接。op广播格式如下图。

对于车端而言,除了配置该广播格式外,还需要配置相应的服务。服务格式如下图。

配置该服务的目的在于之后通过L2CAP层进行数据交互的时候确定L2CAP层的SPSM(后续会详细说明)。

整个蓝牙连接分为两个部分,第一部分如下图所示。其中车端开启OP广播,手机端经过phase0、1之后进入OP流程。此时手机扫描到广播中CCC_DK_UUID,从而和车端建立LL层连接。

第二部分流程如下,手机端检测车端广播服务以及SPSM特征值。从而获取到具体数值(在实际测试中,我使用的SPSM为0x0083)。然后手机端会发起L2CAP Connect Request。其中该数据包中SPSM为之前服务中读到的SPSM特征值。

如图为实际测试过程中Sniffer抓到的空口数据。

在该数据格式中,其中LE Protocol/Service Multiplexer则是之前所设置的SPSM。该值在《BLUETOOTH SPECIFICATION Version 5.0》中表示,该参数被划分为两个区间,如图所示,

第一个区间是蓝牙SIG规定,范围在0~0x007F(如下图,其中高亮的为BLE使用CID)。第二个区间为动态变化,专门结合服务进行设计,从而完成相应的协议。这也是之前配置广播服务特征时选择SPSM为0x0083的原因(大家可以试一下其他的数值)。

 目前为止,对于BLE而言,建立了LL层连接以及L2CAP层连接。接下来的阶段的数据交互都是基于L2CAP层。通过选取的0x0083通道进行交互。更多关于L2CAP层的蓝牙知识在之后的文章中会详细介绍。对于CCC协议而言,目前的储备以及足够。

在蓝牙连接流程结束后,手机会发送Request_owner_pairing命令。空口数据如下。

 四、Phase2

 当手机发送完Request_owner_pairing命令后,进入到Phase2阶段。该阶段分为两次Transaction。主要是和Digital Key Framework(The DK framework AID A000000809434343444B467631h进行数据交互,包括手机端开卡所需的车端的一些数据等。具体流程如下。

由于CCC协议中对于BLE并未由详细的流程图,因此使用NFC进行Phase2阶段的流程图进行介绍。 在图中,NFC会经历场重置的操作,重置后需要重新选择AID。而对于BLE而言,并不需要重置,也就无需再次选择AID。关于本阶段的详细介绍可以看该篇文章。

CCC数字钥匙设计【NFC】 --车主配对流程Phase2

如图为Phase2阶段的空口数据。

五、OOB配对 

 在官方蓝牙规范中的OOB中,一般指的是采用带外的方式(非BLE,如NFC)来交互配对的信息。而在CCC协议中规定,通过之前所建立的L2CAP层的数据通道进行配对信息交互。在CCC协议中开始OOB配对之前,需要进行OOB准备工作,将双方需要的配对参数进行交互来为后续OOB配对进行铺垫。 具体OOB准备流程如下图。

其中,主要交互参数如下:

BTAddrA/BTAddrB/从设备的地址

ra/rb/从设备的随机数

Ca/Cb/从设备分别通过PkaraPkbrb计算出来的加密数。

以上信息通过First_Approach_RQ/First_Approach_RS事件进行交互。具体数据格式以及格式可以看这篇文章。CCC数字钥匙设计【BLE】--车主配对之BLE OOB配对

在准备工作完成后,可以开始正常配对流程。具体流程如下。

该部分就是一般BLE配对流程差不多,只有小细节不同。

六、UWB测距

Phase2阶段结束后,接下来要进行UWB测距。此阶段的流程图如下。

 如图,第一步需要进行一次标准交易流程。标准交易流程结束后需要生成URSK,URSK的伪代码如下。

在生成URSK时,同时会有一个 transaction_identifier的数据。

生成URSK后,想要测起距还需要进行参数交互,主要分为三个步骤。

6.1Capability Exchange(测距能力交换)

具体流程如下。

如图为能力交互所交互的数据格式。

6.2Ranging Session(测距会话) 

具体流程如下。

如图为测距会话所交互的数据格式。 


6.3Ranging_Session_Setup(测距会话设置)

具体流程如下。

 

 Tips:红色框中的参数都是实际UWB测距中需要的参数。当UWB定位到车内后,便可开启下一阶段。

七、Phase3 

 phase3和phase2有些相似,需要进行一次标准交易流程。但是在Phase3主要和Digital Key appletThe DK applet AID :A000000809434343444B417631h进行数据交互。具体流程如下。

此阶段之前(包括此阶段)的操作都处于离线模式。当Phase3结束后手机端钱包的车卡也可以开下来了。 至于后续的Phase4则是在线模式,需要和OEM服务器去进行交互。因此,本文中不详细介绍。想要了解的可以阅读该文章。

CCC数字钥匙设计【NFC】 --通过NFC进行车主配对Phase4

八、总结  

本文主要归纳了整个CCC协议中关于BLE如何进行OP流程。对于细节的讲解并不深入。后续如果有时间会针对细节进行再次讲解。希望大家能从中获得一些知识,哪怕只有一点点也可以

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值