本文对CCC R3中安全定位(Secure Ranging)进行简要介绍。CCC R3安全定位基于BLE建立安全的控制信息通道,然后利用UWB进行安全定位,所以本文分成BLE安全配对和UWB安全定位两个部分来说明。
一、BLE安全配对
CCC R3中的BLE安全配对,采用OOB(out of band)模式,OOB模式简言之就是配对双方所需的shared secret通过BLE协议外安全的方式来获取,验证shared secret后建立配对双方的信任关系。
BLE有如下层次关系:应用层(GATT,GAP)- 安全管理(SM)- 逻辑链路控制和适配协议(L2CAP)。BLE安全配对成功的标志是配对双方形成相同的LTK,双方的链路层的通讯通过SK加密(由LTK派生出来),BLE绑定就是配对双方保存LTK和对方的信息,后续不需要执行配对就可进行安全通讯。在BLE安全配对前,双方可通过L2CAP Connection-Oriented Channel进行通讯,只不过此时的BLE的L2CAP链路不处于加密状态。
在基于BLE通道,CCC R3的车主钥匙配对依序进行以下步骤:
- 建立L2CAP Connection-Oriented Channel;
- 执行车主钥匙配对的phase2,在车主钥匙的配对流程phase2中spake2+安全通道的建立过程中,除了生成Kenc Kmac Krmac之外,还会同时生成Kble_intro和Kble_oob_master用于BLE安全配对, Kble_oob_master基于DK_Identifier派生实际使用配对密钥Kble_oob;
- 基于配对密钥Kble_oob,采用OOB模式实现BLE安全配对;
- BLE安全配对完成后,继续执行车主钥匙配对流程的phase3,phase4。
CCC R3中BLE安全配对所采用的主要参数和密钥的说明如下表所示:
名称 | 说明 |
DK_Identifier | DK_Identifier 是8字节长数字钥匙ID slot_identifier由车辆提供时,DK_Identifier 是slot_identifier的8字节零补齐值 slot_identifier在线生成时,则由车主设备随机生成slot_identifier,同样的,此时DK_Identifier也 是slot_identifier的8字节零补齐值 |
Kble_intro | 加密密钥,主要用来加密DK_Identifier,不论是车主钥匙还是朋友钥匙都采用相同的Kble_intro |
Kble_oob_master | 蓝牙OOB主密钥,基于DK_Identifier分散得到实际使用的蓝牙OOB密钥 |
Kble_oob | 蓝牙OOB密钥,由蓝牙OOB主密钥分散而来,显然车主钥匙和朋友钥匙具有不同的Kble_oob,用来加密和验证BLE配对OOB模式下的shared secret |
二、UWB安全定位
CCC R3中的UWB安全定位符合UWB定位基本原理,移动设备采用Double-sided Two-way Ranging方法对车上的节点进行测距,因为车上具备多个定位节点,可根据所测量的多个距离值推算移动设备相对于车辆的具体位置,所谓UWB安全定位指的在设备和各个定位节点的之前传送定位数据帧的内容经过加密。
标准或快速交易过程中产生的交易信息(vehicle ePK,endpoint ePK,transaction identifier…)派生出URSK,然后再由URSK派生出各种UWB安全定位密钥。
每一次交易后会产生不同URSK,和一个UWB_Session_Id相对应,同一个UWB Ranging Session采用相同的URSK。进一步,一个UWB Ranging Session可以包括多个UWB Ranging Block,一个UWB Ranging Block可以包括多个UWB Ranging Round,UWB Ranging Round是车辆和设备之间UWB定位数据帧交互组合。
UWB数据帧包括SP0和SP3两种格式:
SP0 即STS Packets type 0 (packets with payload and no STS),包含UWB的定位配置信息,但没有STS信息。
SP3 即STS Packets type 3 (packets without PHR, MHR, or payload),仅包含STS索引信息,完全用于定位。
注:STS(Scrambled Timestamp Sequence)STS index是个4字节参数,是UWB定位流程中使用的时间序列索引。
一个UWB Ranging Round的步骤如下所述:
- 设备向车辆的所有定位节点发送pre poll SP0帧,可以认为pre poll是定位参数初始化信息帧;
- 接下设备向车辆的所有定位节点发送poll SP3帧, 然后做为响应,车辆的定位节点依次向设备发送Response SP3帧,最后设备再向车辆的所有定位节点发送final SP3帧;以上均是SP3帧,即帧的内容仅包含STS索引信息,这个步骤是一个完整的物理定位过程;
- 设备向车辆的所有定位节点发送final data SP0帧,可以认为final data是定位参数信息帧同步和结束帧。
CCC R3中UWB安全定位所采用的主要参数和密钥的说明如下表所示:
名称 | 说明 |
UWB_Session_Id | 是transaction identifier最低的4个字节,用来标识相应的URSK |
URSK | UWB Ranging Secret Key,每一次交易过程中产生,应用于交易后安全定位流程 |
mURSK | Master URSK,每一次Ranging Session由URSK派生 |
SaltedHash | UWB ranging configuration的哈希值 |
dURSK | Derived URSK,每一次Ranging Round由mURSK,STS_Index序列值,SaltedHash派生得出,用于加密poll, response, final SP3帧的STS索引信息 |
dUDSK | Derived UWB Data Secret Key,用于加密final data SP0帧的信息项 |
mUPSK1 | Master UWB Privacy Secret Key,用于加密pre poll SP0帧的信息项 |
mUPSK2 | Master UWB Privacy Secret Key,用于生成UWB Address和PAN ID,属于SP0帧的Auxiliary Security header中的内容,包括pre poll和final data帧。 |
简言之,安全定位(Secure Ranging)是Car Connectivity Consortium Digital Key Release 3新增加的内容,它的内容可分成两大部分:首先在车主钥匙配对阶段派生Kble_intro和Kble_oob_master两个密钥用于蓝牙配对,基于蓝牙进行DK Message的传送; 其次在交易阶段派生出URSK,再由URSK派对生一系列SK密钥,这些密钥分别用于UWB的SP0,SP3帧的数据加密,实现UWB安全定位。