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

2023-10-04 11:26

本文主要是介绍CCC数字钥匙设计【NFC】 --车主配对流程Phase2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、车主配对流程介绍

车主配对可以通过车内NFC进行,若支持UWB测距,也可以通过蓝牙/UWB进行。通过NFC进行车主配对总共有5个Phase。本文档主要对Phase2进行介绍

1) Phase0:准备阶段;

2) Phase1:启动流程;

3) Phase2:与NFC的第一个session(通过Digital Key framework);这里包含2次交易。

Transaction1:协商协议版本、执行SPAKE2、发送所有密钥数据给手机。

Transaction2:provides the creation attestation and certificate chain to the vehicle。

4) Phase3:与NFC的第二个session(通过Digital Key applet);

5) Phase4:收尾阶段,与KTS的交互。

2、Phase2:First Session(Digital Key Framework)

该阶段包含两次Transaction,均在车辆和手机Digital Key Framework之间执行。

第一次Transaction主要包含如下内容:

1) 协商协议版本,

2) 手机与车端的认证,

3) 车辆与手机通过SPAKE2+建立安全通道,

4) 车辆将创建数字钥匙所需的所有数据发给手机,如车辆公钥证书。

第二次Transaction主要包含如下内容:

1) 车辆从手机端读取创建数字钥匙所需的所有数据,并进行验证,

2) 若验证通过,则车辆存储手机的公钥。

在第一次Transaction和第二次Transaction的结束之时,都要执行NFC的复位流程。

完整的Phase2流程如下图,具体可参见CCC规范Figure 6-3 Owner Pairing Flow - Phase 2: First NFC Session。

2.1 Step1 Digital Key Framework Selection

当手机和车内NFC读卡器通信时,车内NFC读卡器通过SELECT命令,发送对应的AID选中Digital Key framework

若车辆在选中Digital Key framework之前选择了Digital Key Applet,则手机响应Status Word (SW) = 6A82。

手机将通过SELECT response命令,返回所有支持的SPAKE2+版本,以及所有数字钥匙applet协议给车辆。

这个决定了双方使用的SPAKE2+版本(用于创建安全通道)以及数字钥匙的协议版本(用于钥匙分享),这些版本信息将会在车端进行兼容性的判断,以判断流程是否继续。

2.2 Step 2 and 2a: SPAKE2+ Transaction

车端会将要使用的SPAKE2+版本,以及所有支持的数字钥匙applet协议版本发送给手机。

具体SPAKE2+流程详见文档“SPAKE2+, draft-bar-cfrg-spake2plus-02.pdf”

SPAKE2+ transaction为车辆和手机之间的数据交换建立了一个安全通道。

当发送成功的OP CONTROL FLOW命令(图6-3中的步骤17),或当发送错误的OP CONTROL FLOW命令,或当其他任何流程的终止,则该安全通道将关闭。

APDU命令的错误解密或APDU命令的错误MAC值,也会终止该安全通道。

当车辆尚未准备好进行车主配对时,应使用OP CONTROL FLOW中止并向用户提示情况,如“未满足车主配对的前提条件”。

2.3 Step 3 to 4: WRITEDATA

车辆将使用多个WRITE DATA命令,通过安全通道,向手机发送创建数字钥匙所需的所有数据(详见Figure 6-5和Figure 6-6)。

手机接收成功后,手机应按照CCC规范章节6.3.3.10描述,使用如下方式之一验证车辆公钥证书[K]:

方式一:Vehicle OEM CA Certificate [J] (详见 Figure 6-5)

方式二:Vehicle OEM CA Certificate [M] signed by Device OEM CA [D] (详见 Figure 6-6)

按方式二展开解析:

1. 通过【D】手机OEM CA证书 验证【M】 车辆OEM CA证书;(---该步骤仅方式二才有)

1a. 将创建【L】数字钥匙需要的所有数据发送给手机;

1b. 将【K】车辆公钥证书发送给手机;

2. 通过【M】车辆OEM CA 证书 验证K】 车辆公钥证书;

3. 将【L】数字钥匙所需所有数据的Authorized.PK[]发送到SE的数字钥匙中;

4. 将【K】车辆公钥证书的Vehicle.PK发送到SE的数字钥匙中

5. 将数字钥匙的公钥DigitalKey.PK发送到【G】数字钥匙证书Digital Key Certificate中。

6. 通过SE中的Instance CA对 【G】数字钥匙证书Digital Key Certificate进行签名。

手机在接受车辆公钥之前,需要对证书链进行解析,并对关键数据元素和签名进行验证。

2.4 Step 5 to 6: OP CONTROL FLOW

OP CONTROL FLOW命令表示所有数据传输无误。然后,手机关闭卡模拟,并创建数字钥匙,如CCC规范章节6.3.3.9节所述。

Digital Key framework使用CREATE ENDPOINT命令(参见15.3.2.4节),在SE中使用以下参数创建数字钥匙:

1) vehicle identifier:

2) endpoint identifier:

3) Instance CA identifier:

4) Digital Key option group 1 and 2:

5) protocol version

6) vehicle public key

7) authorized.PK[]:

8) confidential mailbox size:

9) private mailbox size:

10) slot identifier:

11) counter limit:

2.5 Step 9 to 12: GET DATA

相关步骤如下,具体详见图6-7:

2a. 手机将通过Vehicle OEM CA签名的【F】Device OEM CA证书发送给车辆

<---->

2. 车辆通过【J】车辆OEM CA证书进行验证;

2b. 手机将通过Device OEM CA签名的【E】Instance CA证书发送给车辆

<---->

3. 车辆通过【F】Device OEM CA证书进行验证;

2c. 手机将通过Instance CA签名的【H】数字钥匙证书发送给车辆

<---->

4. 车辆通过【E】Instance CA证书进行验证;

2.6 Step 13 to 14: WRITE DATA

如果所有验证都成功,车辆可以回写带有opaque attestation的WRITE DATA命令,给到手机,用来确认手机的公钥Device.PK已存在于车辆。此证明将在注册钥匙时发送给KTS。手机将回复WRITE DATA响应。

如果任何验证失败,则车辆不写任何证明。车辆应向手机发送OP CONTROL FLOW命令以中止该流程,并根据表15-27的定义提供适当的错误指示。

2.7 Step 15 to 18: OP CONTROL FLOW

如果车辆收到所有密钥证书无误,则在步骤15中发送OP CONTROL FLOW (P1=10h, P2=02h)。

否则,车辆将发送OP CONTROL FLOW (P1=12h, P2=reason),因P2值所示的错误而中止车主配对。

如果步骤15中的OP CONTROL FLOW为P1=10h, P2=02h,则车辆在步骤17中发送OP CONTROL FLOW (P1=11h, P2=11h),结束第二阶段的车主配对流程。

3、车主配对过程涉及的CA证书链

该阶段主要功能是通过SPAKE2+建立安全通道,然后交换并验证车辆与手机的相关证书。

车主配对阶段涉及的相关证书与信息如下:

3.1 车辆端

1、车辆的公私钥匙:Vehicle.PK和Vehicle.SK

2、【K】用Vehicle OEM CA签名的车辆公钥证书(内含Vehicle.PK信息)--要发给手机

3、【L】手机创建数字钥匙所需的所有数据,内含Authorized.PK[]信息。--要发给手机

4、【J】车辆OEM CA证书(Trusted Signature),内含VehicleOEM.PK。

5、【F】手机OEM CA证书(VehicleOEM签名的),内含DeviceOEM.PK。--来自手机

6、【E】用手机OEM CA签名的Instance CA证书(内含公钥Instance CA.PK),每个车辆OEM对应一个Instance CA。--来自手机

7、【H】用Instance CA签名的数字钥匙证书,内含DigitalKey.PK--来自手机

3.2 手机端

手机端有如下证书与信息:

1、存储在SE芯片里信息

(1) Instance CA(内含公私钥对Instance CA.PK和Instance CA.SK),每个车辆OEM对应一个Instance CA。

(2) 【G】数字钥匙信息(内含数字钥匙的公私钥对DigitalKey.PK和DigitalKey.SK、Vehicle.PK、Authorized.PK[]信息),每个车辆对应一组数字钥匙信息。

2、存储在手机OS里的信息:

(1) 【D】手机OEM CA证书(Trusted Signature),内含DeviceOEM.PK,车主配对前使用。

(2) 【F】手机OEM CA证书(VehicleOEM Signature),内含DeviceOEM.PK。车主配对后使用--要发给车辆

(3) 【M】用手机OEM CA签名的车辆OEM CA证书,内含VehicleOEM.PK。

(4) 【E】用手机OEM CA签名的Instance CA证书(内含公钥Instance CA.PK),每个车辆OEM对应一个Instance CA。--要发给车辆

(5) 【H】用Instance CA签名的数字钥匙证书,内含DigitalKey.PK--要发给车辆

(6) 【K】用Vehicle OEM CA签名的车辆公钥证书(内含Vehicle.PK信息)--来自车辆

(7) 【L】手机创建数字钥匙所需的所有数据,内含Authorized.PK[]信息。--来自车辆

4、总结

NFC车主配对Phase2阶段主要功能如下:

1、Transaction1:通过SPAKE2+建立安全通道,协商协议版本,然后车辆将相关证书发给手机验证,手机存储相关证书信息;

2、Transaction2:手机将相关证书发送给车端验证,车端存储相关证书信息。

这篇关于CCC数字钥匙设计【NFC】 --车主配对流程Phase2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1963

相关文章

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB