CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接

1、PE进入流程

PE进入的流程大体可以拆解为如下步骤:

1、手机与车端建立BLE加密连接;

2、创建URSK流程;

3、时间同步流程;

4、UWB测距流程;

5、根据各锚点BLE的RSSI及UWB的距离值,通过定位算法进行手机位置的定位;

6、若检测手机在合法区域,则进行迎宾、解锁。

本文档主要描述上面步骤1PE进入过程中与BLE通信相关的流程)的内容。

若BLE pairing和Encryption已经执行完成,之后手机靠近车辆时,将会启动PE进入流程。具体流程如下图。

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第1张图片

1.1 步骤1:建立BLE连接

1、 车端BLE模块进行广播,手机进行扫描。

2、 采用RPA地址(resolvable private address)的方式。

3、 建立车端与手机的BLE连接。

1.2 步骤2:启动BLE加密

该步骤的流程如下图,具体可详见BLE5.0规范Vol6 Part D。

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第2张图片

1、链路层通过Host的请求进行此操作,可以使用加密启动进程,在进入链接状态后启用数据包的加密。为了使能加密,必须交换两个参数,IVSKD。两者都由两部分组成:master部分和slave部分,通过LL_ENC_REQ 和 LL_ENC_RSP PDUs进行交换。在交换完成以及Host已经通知链路层长期秘钥(LTK)在链接中使用时,加密可以使用三方握手的方式LL_START_ENC_REQ 和 LL_START_ENC_RSP PDUs。具体流程如上图。

2、为了启动加密,master的链路层需要生成初始化向量(IVm) 和会话密钥(SKDm)的master部分。IVm为master的链路层生成的32位的随机数。SKDm为master的链路层生成的64位随机数。

3、master的链路层需要发送LL_ENC_REQ PDU,Rand 和 EDIV字段由Host提供。在master收到LL_ENC_RSP PDU应答后,只期望收到这个进程需要的PDUs。

4、当slave的链路层接收到LL_ENC_REQ PDU,slave的链路层需要生成初始化向量(IVs) 和会话密钥(SKDs)的slave部分。IVs为slave的链路层生成的32位的随机数。SKDs为的slave链路层生成的64位随机数。

5、slave的链路层需要发送LL_ENC_RSP PDU,slave的链路层需要将EDIVRand字段通知给Host。发送完LL_ENC_RSP PDU以后,slave的链路层可以收到对应于slave发送的LL Control PDU的LL_UNKNOWN_RSP PDU。

每个链路层需要按照下面方式合并初始向量部分以及会话密钥部分:

SKD = SKDm || SKDs

IV = IVm || IVs

SKDm 和 SKDs进行组合,SKDm的最低有效字节成为SKD的最低有效字节,SKDs的最高有效字节成为SKD的最高有效字节。

IVm 和 IVs进行组合,IVm的最低有效字节成为IV的最低有效字节,IVs的最高有效字节成为IV的最高有效字节。

6、长期秘钥(LTK)由Host提供给master和slave的链路层,如果Host提供了LTK,slave的链路层需要使用以LTK为秘钥的加密引擎计算sessionKey,并且SKD作为明文输入,sessionKey参数需要设置为加密引擎的数据

7、sessionKey 应用作为所有加密数据包的加密引擎的秘钥。

sessionKey计算出来以后,slave的链路层需要发送LL_START_ENC_REQ PDU,这个数据包不需要加密,并且链路层应设置为接收应答的加密数据包。

8、当master的链路层接收到LL_START_ENC_REQ PDU,需要发送LL_START_ENC_RSP PDU这个PDU是加密的,并且链路层需要设置为接收加密后的应答数据包。

9、当slave的链路层收到LL_START_ENC_RSP PDU后,它需要发送LL_START_ENC_RSP PDU,这个数据包是加密的。

10、当master的链路层收到LL_START_ENC_RSP PDU,则链路已经进行了加密。

这个进程在master端结束于master收到来自slave的LL_START_ENC_RSP PDU。在slave端结束于slave收到来自master的LL_START_ENC_RSP PDU。

1.3 步骤2.5:服务发现流程

结合CCC规范19.2.1.1中的Figure 19-2,在步骤2和步骤3中间应该还有一个服务发现的流程。具体如下。

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第3张图片

1.4 步骤3:Device read SPSM and version from vehicle

1、手机发送命令给车端,读取SPSM:

ATT_READ_BY_TYPE_REQ(0x0001,0xFFFF,《UUID_SPSK_DCK_VERSION》)。

2、车端响应数据给手机:

ATT_READ_BY_TYPE_RSP(4+2*n+k*n, handle, SPSMDCK Major VersionDCK Minor Version1 ,3)

在CCC规范19.2.1.7中对SPSM特征有进了相关描述:

1.4.1 SPSM特征说明

SPSM,英文全称为Simplified Protocol/Service Multiplexer

1) 该特征将从车辆返回用于L2CAP信道的SPSM

2) 手机应在连接时,读取车辆的SPSM。

3) 由整车厂选择一个SPSM。

4) 对于基于LE credit的连接,使用动态分配的SPSM值(即在0x0080-0x00FF中,非SIG分配的SPSM值)

5) 在执行PE进入流程和车主配对流程时,手机应该基于BLE连接执行如下过程

a. 通过UUID读取特征(使用UUID_SPSM或UUID_SPSM_DK_VERSION)。

b. 通过UUID写入特征(对于UUID_DEVICE_DK_VERSION)

1.4.2 SPSM特征信息

表19-7 SPSM Characteristic declaration

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第4张图片

表19-8 SPSM Characteristic value declaration

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第5张图片

表19-9 Vehicle SPSM and DK version Characteristic Declaration

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第6张图片

表19-10 Vehicle SPSM and DK Version Characteristic Value Declaration

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第7张图片

1.5 步骤4:Device write version to vehicle

1、手机发送命令给车端,请求写入version:

ATT_WRITE_REQ(handle for 《UUID_DEVICE_DCK_VERSION》, DCK Major VersionDCK Minor Version1 ,3)

2、车端响应数据给手机:ATT_WRITE_RSP()

表19-11 Device Selected DK Version Characteristic Declaration

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第8张图片

表19-12 Device Selected DK Version Characteristic Value Declaration

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第9张图片

1.6 步骤5:Create L2CAP connection-oriented channel(CoC)

L2CAP英文全称为 Logical Link Control and Adaptation Protocol

L2CAP用来建立通道的,有0x0004用于ATT协议,0x0005用于L2CAP信令,0x0006用于安全管理。除此之外,还能建立很多其他协议通道。

L2CAP建立不同的协议管道,管道以下就是PDU,管道上就是用户数据。

L2CAP还可建立Dynamic 动态管道,如下图的0x0040-0x007F。(这个dynamic表达的是用户可以随意创建开闭)

下图标绿的通道是BLE可以使用通道。

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第10张图片

1.7 步骤6:Capability Exchange

该步骤是可选的,具体说明如下。

如果车辆或手机具有更新的DK协议版本、UWB配置标识符、脉冲形状组合,或这些参数的组合,这些参数与上次Capability Exchange期间的参数不同,则应执行车主配对的Capability Exchange。

手机通过发送DK Event Notification(Subevent_Category设置为0x01,对应的command status code设置为0x02)触发Capability Exchange。车辆收到DK Event Notification后,则启动Capability Exchange,具体流程如下图。

CCC数字钥匙设计【BLE】--PE进入流程&建立BLE加密连接_第11张图片

1.8 步骤7:Digital Key Framework Secure Data exchange(encrypted over L2CAP CoC)

之后在执行UWB测距期间进行蓝牙数据通信均是基于L2CAP CoC通道来进行。比如TimeSync流程或Secure Ranging Setup流程等。

2、总结

PE进入流程中与BLE通信相关的流程,可以总结为如下几个步骤:

1、建立BLE连接

2、启动BLE加密,这个步骤之后的通信即是加密的。

3、服务发现流程

4、手机读取车辆的SPSM和版本

5、手机写入DK version到车端

6、建立L2CAP 通道CoC

7、Capability Exchange(可选)

8、UWB测距交互相关的蓝牙通信,如时间同步等。

3、参考

1、 参考文章:https://zhuanlan.zhihu.com/p/634546351

2、 参考标准:CCC-TS-101-Digital-Key-R3.pdf

你可能感兴趣的:(数字钥匙,软件工程,汽车)