CCC数字钥匙设计【NFC】--通过NFC进行车主配对Phase3

2023-10-20 07:30

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

1、车主配对流程介绍

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

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、Phase3:Second Session(Digital Key applet)

第二个NFC会话在车辆和Digital Key applet之间执行。第一次标准交易采用type=7,建立认证安全通道,之后由手机端 发起Tracking Key Request。

Figure 6-8: Owner Pairing Flow – Phase 3: Second NFC Session

2.1 Step1-2选择Digital Key applet

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

2.2 Step3-12标准交互

车辆应选择Digital Key applet,并执行标准交易【步骤3-6,type=7(见Table 9-1)】。

如果车辆没有按照Figure 6-3(NFC Owner Pairing Flow Phase2)步骤13所示的方式写入opaque attestation(即车辆没有发送 write DATA命令),则车辆应先将opaque attestation写入private mailbox。

车辆通过WRITE_DATA(attestation)告知手机,手机的证书已在车端加载完成。

如果需要immobilizer token并从车辆中取回,则需要在Digital Key applet中将其写入车主数字钥匙的confidential mailbox中。

为了将适当的数据结构写入confidential and private mailboxes,车辆应使用EXCHANGE命令和适当的参数来:

  • 如果还没有写入opaque attestation,则将带有5F5Ah标记和长度的opaque attestation写入private mailbox中的KeyAtt字段

  • 将车主的防盗令牌(immobilizer token)写入confidential mailbox(如果从车辆中检索到防盗令牌)

  • 将槽位标识符位图写入private mailbox(conditional)

  • 将车主槽标识符写入private mailbox的槽标识符列表(conditional)

  • 将车辆OEMproprietary data structure(专有数据结构)写入private mailbox

  • 将signaling bitmap写入private mailbox,以表示上述数据结构的更新

  • 将用于共享的immobilizer tokens写入confidential mailbox(如果从车辆中检索到immobilizer tokens,并且车辆OEM未实施KTS)(optional)

2.3 Step13-14CONTROL FLOW

车辆应发送CONTROL FLOW命令,以表明所有数据已成功写入邮箱。且P2参数设置如下:

P2= 81h,向Digital Key applet表示车辆已完成Phase3的车主配对。

在第三阶段结束时,如果从车辆中检索到immobilizer tokens,则应在车主手机中提供车主immobilizer tokens并且钥匙可能被车辆跟踪,也可能尚未被车辆跟踪。

2.4 Step15Key Tracking Request

如果标准交互成功,车主手机将发送异步消息,将车主密钥注册到KTS。

车辆的密钥登记是可选的。如果车辆也试图注册密钥,则可能发生竞态条件。因此,不建议使用车辆密钥登记。

当标准交互失败时,手机不会向KTS服务器发送key tracking request。

手机将Instance CA证书、数字钥匙证书等信息发送到KTS服务器具体详见表6-2中列出的数据元素。

KTS服务器发送Key Tracking Response给到手机,所有Key Tracking Response的参数不得以TLV格式提供,具体参数如下表:

2.5 Step16Configuration of the Contactless Transaction

在标准交互中有两个选项可以访问mailbox数据:

  • 在AUTH1响应中传输所需的数据

  • 使用EXCHANGE命令(快速交互强制使用)

如果从车辆接收到的WRITE DATA命令中包含4Ah和/或4Bh标签,则手机将在AUTH1响应中发送signaling bitmap和/或车主immobilizer token。

3、总结

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

1、车辆通过AID选中Digital Key applet

2、通过NFC进行标准交易;

3、车辆通过发送CONTROL FLOW命令,指示当前阶段的结果。当车辆发送的P2= 81h,表示车辆已完成Phase3的车主配对;

4、手机通过Key Tracking Request将Instance CA证书、数字钥匙证书等信息发送给KTS服务器

5、KTS服务器通过Key Tracking Response将kts-Signature、slotIdentifier、confidentialMailboxData等信息返回给手机

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



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

相关文章

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

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

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

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

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