1、URSK创建流程
URSK的英文全称为:UWB Ranging Secret Key,即UWB安全测距密钥。
在车主配对时会生成URSK,且在车主配对期间,车辆不得尝试生成第二个URSK。
URSK示例: ed07a80d2beb00f785af2627c96ae7c118504243cb2c3226b3679daa0f7e616c
在建立安全测距之前,需要URSK。车辆可能使用预先创建的URSK或根据需要创建一个新的URSK。
生成URSK的流程有如下两种情况:
1.1 情况1:专门生成URSK(如车主配对时)
BLE加密设置完成后,如果车辆支持UWB,则车辆将执行创建URSK的标准交易流程。比如在车主配对时会执行一次URSK创建流程。该流程如下图:
该流程中AUTH0命令的transaction_code值0x10
1.1.1 步骤1:标准交易流程的第1-6步
1.1.2 步骤2:生成URSK流程
对于上图框F和框G,一旦URSK被成功派生,它将被存储在使用UWB_Session_Id索引的安全存储中。
具有安全测距能力的车辆,应支持每个数字钥匙至少产生并存储一个Pre-derived URSK。
具有安全测距能力的手机,应支持每个数字钥匙产生并存储两个Pre-derived URSK。
每个Pre-derived URSK通过关联的UWB_Session_Id进行索引。
车辆应使用Secure Ranging Setup流程(详见CCC的图19-23)来激活Pre-derived URSK。每个数字钥匙最多只能有一个激活的URSK,当另一个URSK被激活时,这个激活的URSK将被丢弃。
在一个Pre-derived URSK被激活后,车辆应请求生成和存储另一个Pre-derived URSK。车辆应控制这种额外的URSK生成所耗费的时间,以尽量减少对用户的影响(例如,在PE进入完成后),。建议在URSK激活不久后,则进行另一个Pre-derived URSK的生成。URSK存储要求如表19-85所示。
这边有一个概念叫URSK TTL,即已经激活的URSK(也叫dURSK)是有生存期限的,CCC要求该生存期限小于12小时,具体该时间参数由车厂OEM指定。
CCC中说明,可以选择使用不同的URSK设置一个新的测距会话,该URSK具有比较短的TTL(如30秒),用于发动机启动授权,提高安全性。
如果满足下列条件之一,URSK将被丢弃:
1) STS_Index达到最大值2^31-1。
2) STS_Index丢失。
3) URSK TTL(生存时间)到期。车辆的URSK最大生存时间为12小时(具体时间由车辆OEM指定)。
4) 通过Secure Ranging Setup流程激活一个新的URSK。
1.2 情况2:执行功能时生成URSK(如启动引擎)
通过向标准交易流程添加一个CREATE RANGING KEY命令,用于其他目的,如启动引擎。
该流程中AUTH0命令的transaction_code值不等于0x10
每次成功执行此流程时,都会生成一个唯一的URSK,并使用UWB_Session_Id进行存储索引。这个UWB_Session_Id是transaction_identifier中排序LSB的4个字节。车辆为每个AUTH0生成一个16字节的随机数,并作为AUTH0命令的一部分与其他参数一起发送给手机。
该流程如下图:
1.2.1 步骤1:标准交易流程的第1-8步
流程与情况1基本一样,比情况1 的流程增加了标准交易的第7步、第8步(Exchange Command及Exchange Response相关功能)。
1.2.2 步骤2:生成URSK流程
当执行解闭锁、引擎启动等功能时,也可以BLE在标准交易成功后产生URSK。
流程与情况1基本一样,比情况1 的流程增加了第11步、第12步(Control Flow Command及Control Flow Response相关功能)。
如果在BLE标准交易的步骤1到8中出现错误,则跳过后续的URSK生成流程,并向手机发出适当的错误信号。然后车辆发送Command complete SubEvent(Deselect SE))给手机,如上图中的步骤11所示。
如果在URSK生成流程中发生错误,则只有由之前standard transaction触发的操作(已经)被车辆接受。此时,如果仍然需要生成URSK,则应该执行情况1中描述的专门用于URSK生成的流程。
1.3 生成URSK对应的BLE通信命令
上面的标准交易流程及生成URSK流程,均通过BLE来进行通信交互。
为了通过BLE创建URSK,每个APDU命令和响应都需要进行如下编码,具体如下。
消息类型:SE Message,如下表。
消息:
- APDU命令封装:DK_APDU_RQ
- APDU响应封装:DK_APDU_RS
1.4 情况1&情况2的AUTH0命令说明
如下表,0x10专门用于URSK生成。而其他值则有于相关功能的执行。
2、总结
1)、URSK创建流程有两种情况,第一种情况是专门生成URSK的流程,一般在车主配对时实施。第一种情况是引擎启动等功能执行时,可以执行生成URSK的流程。
2)、两种情况的流程差别不大,都是先通过standard transaction,然后通过Create ranging key来创建URSK。
3)、通过BLE的SE Message格式来发送DK_APDU_RQ、DK_APDU_RS数据 帧以完成URSK的生成流程。
4)、有个URSK TTL的概念,即已经激活的URSK是有生存期限的,CCC要求该生存期限小于12小时。