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

相关文章

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

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. 随机