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

news2024/11/19 23:13:01

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:手机将相关证书发送给车端验证,车端存储相关证书信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1059305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何生成你的打字速度证书?

趁着十一国庆之际&#xff0c;开发完成了打字侠的速度测试功能。我自己的打字速度约为56字/分钟&#xff0c;算是盲打中速度比较快的人咯。下面是我的打字荣誉证书呢。 你也想来试一试吗&#xff1f; 测试地址&#xff1a;https://hellotyping.com/speed-test

本地部署 Qwen-Agent

本地部署 Qwen-Agent 1. Qwen-Agent 概述2. Github 地址3. 创建虚拟环境4. 安装 flash-attention5. 部署 Qwen 模型服务6. 部署 Qwen-Agent7. 浏览器访问 Qwen Agent8. 安装浏览器助手 1. Qwen-Agent 概述 Qwen-Agent 是一个代码框架&#xff0c;用于发掘开源通义千问模型&…

拯救者R9000P 2023测试,从入门到发烧(多图预警)

20231003 By wdhuag 目录 前言&#xff1a; 开箱检查注意事项&#xff1a; 后期升级拆机参考&#xff1a; 机器配置&#xff1a; 总结&#xff1a; 开箱&#xff1a; BIOS画面&#xff1a; 备份原系统&#xff1a; 详细参数&#xff1a; 跑分&#xff1a; 安装Wind…

jenkins利用插件Active Choices Plug-in达到联动显示或隐藏参数,且参数值可修改

1. 添加组件 Active Choices Plug-in 如jenkins无法联网,可在以下两个地址中下载插件,然后放到/home/jenkins/.jenkins/plugin下面重启jenkins即可 Active Choices Active Choices | Jenkins plugin 2. 效果如下: sharding为空时,sharding_info和copy_info不显示 shard…

ElementPlus弹出消息提示框

request.post(api/furn/updata, this.form).then(res > {console.log(res);if (res.code200){//弹出消息框this.$message({message: 修改成功,type: success,});}else if (res.code 400) {//弹出消息框this.$message.error(修改失败);}//关闭对话框this.dialogFormVisible …

安装OpenPCDet跑通PointPillars

前言 刚开始接触OpenPCDet这个库&#xff0c;配置环境好久都不成功&#xff0c;后面看到这篇博文 【OpenPCDet】Kitti数据集下训练PointPillars并评估&可视化 给我提供了思路&#xff0c;本文主要记录一下安装过程中出现的错误 环境 ubuntu20.04 CUDA Version: 11.5 安…

语义分割 Semantic Segmentation

之前了解过语义分割的内容&#xff0c;感觉可以做好多东西&#xff0c;然后就抽空学习了一下&#xff0c;这里记录一下方便以后查阅&#xff0c;这篇文章可能也会随着学习的深入不断更新。 语义分割 Semantic Segmentation 一些基本概念几种语义分割算法Fully Convolutional Ne…

华硕X555YI, Win11下无法调节屏幕亮度

翻出一个旧电脑华硕X555YI&#xff0c;装Win11玩&#xff0c;已经估计到会有一些问题。 果然&#xff0c;装完之后&#xff0c;发现屏幕无法调节亮度。试了网上的一些方法&#xff0c;比如修改注册表等&#xff0c;无效。 估计是显卡比较老&#xff0c;哪里没兼容。然后用驱动…

iOS---生成证书文件的时候无法选择导出.p12文件

解决办法&#xff1a; 左栏有两个分类&#xff0c;一个钥匙串&#xff0c;一个是种类&#xff0c;要选择种类里面的【我的证书】或【证书】进行导出。选择【系统】找到【我的证书】这样导出不了"个人信息交换(.p12)" 正确做法是&#xff1a;选择【登录】找到【我的…

尚硅谷ES学习笔记一

文章目录 第1章 Elasticsearch概述01-开篇02-技术选型Elasticsearch 是什么 全文搜索引擎Elasticsearch 应用案例03-教学大纲04-入门-环境准备05-入门-RESTful & JSON06-入门-Postman客户端工具07-入门-倒排索引08-入门-HTTP-索引-创建09-入门-HTTP-索引-查询 & 删除10…

可观测平台如何存储时序曲线?滴滴实践全历程分享

滴滴的时序曲线量从 2017 年 到 2023 年增长了几十倍。整个过程中我们不断地调整和改进以应对这样的增长。例如时序数据库的选型从最初的 InfluxDB&#xff0c;到 RRDtool&#xff0c;又开发了内存 TSDB 分担查询压力&#xff0c;再到 2020 年开始使用 VictoriaMetrics。载体也…

2023年【高压电工】证考试及高压电工复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 高压电工证考试根据新高压电工考试大纲要求&#xff0c;安全生产模拟考试一点通将高压电工模拟考试试题进行汇编&#xff0c;组成一套高压电工全真模拟考试试题&#xff0c;学员可通过高压电工复审模拟考试全真模拟&a…

【PWN · ret2shellcode | “jmp esp“】[i春秋]ret2shellcode

当溢出长度不足时&#xff0c;如何将shellcode放入padding位值&#xff0c;并执行呢&#xff1f; 目录 前言 一、题目重述 ​编辑 二、题目分析 1.存在溢出 2.如何跳转 3.payload构想 4.Addr(jmp esp) 5.指令序列 三、exp 总 前言 回顾ret2shellcode发现还有很多基础的技巧没…

安装JDK(Java SE Development Kit)超详细教程

文章时间 &#xff1a; 2023-10-04 1. 下载地址 直接去下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/ &#xff08;需要翻墙&#xff0c;不想翻墙或者不想注册oracel账号的&#xff0c;直接去我的阿里云盘&#xff09; 阿里云盘&#xff1a;http…

2023年【熔化焊接与热切割】考试资料及熔化焊接与热切割复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年熔化焊接与热切割考试资料为正在备考熔化焊接与热切割操作证的学员准备的理论考试专题&#xff0c;每个月更新的熔化焊接与热切割复审模拟考试祝您顺利通过熔化焊接与热切割考试。 1、【单选题】 湿法水下焊接时…

零基础Linux_11(进程)进程程序替换+实现简单的shell

目录 1. 进程程序替换 1.1 程序替换原理 1.2 execl 接口 1.3 execv execlp execvp 1.4 exec 调各种程序 1.5 execle 接口 2. 实现简单的shell 2.1 打印提示和获取输入 2.2 拆开输入的命令和选项 2.3 创建进程和程序替换执行命令 2.4 内建命令实现路径切换 2.5 my…

【C++进阶(七)】仿函数深度剖析模板进阶讲解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 模板进阶 1. 前言2. 仿函数的概念3. 仿函数的实…

Scala第十六章节

Scala第十六章节 scala总目录 文档资料下载 章节目标 掌握泛型方法, 类, 特质的用法了解泛型上下界相关内容了解协变, 逆变, 非变的用法掌握列表去重排序案例 1. 泛型 泛型的意思是泛指某种具体的数据类型, 在Scala中, 泛型用[数据类型]表示. 在实际开发中, 泛型一般是结合…

计算机网络 第二章物理层

计算机网络第二章知识点速刷 其中重要的是信源和信宿&#xff0c;以及调制解调器在通信模型当中起到的作用。

JavaScript处理点击事件

在介绍点击事件之前&#xff0c;先给它们讲一些概念 事件监听 在JavaScript中&#xff0c;可以使用事件监听&#xff08;Event Listener&#xff09;来响应和处理各种事件。事件监听器是一种能够捕捉特定事件并执行相应代码的机制。事件监听器允许您在特定事件发生时执行自定…