CCC数字钥匙3.0标准解读(6)


5 车主配对命令(S [WCC1/WCC2])

本节定义了用于车主配对过程的命令和数据元素。

5.1 车主配对支持的命令

表5-1列出了为车主配对流程定义的所有命令,如第6节所述。
Table 5-1: 车主配对命令集
在这里插入图片描述
表5-2列出了在基本输入命令检查期间出现错误时要查询的通用状态字,适用于表5-1中列出的所有所有者配对命令。
Table 5-2: 通用状态字
在这里插入图片描述

5.1.1 SELECT命令

5.1.1.1 目的

车辆向设备发送SELECT AID命令。数字钥匙框架AID为A0000000809434343444B467631h。
当选择数字钥匙框架时,设备应使用表5-3中所述的数据进行响应。设备应向车辆指示其当前配对状态。可能的状态为:
 处于未配对状态
 已启动配对状态并输入配对密码
SELECT命令用于选择第15.3.2.1节描述的数字钥匙小程序实例(使用实例AID)。
5.1.1.2 定义
命令: 00 A4 04 00 Lc [Digital_Key_Framework_AID] 00
应答:[Table 5-3]90 00
Table 5-3:SELECT命令响应
在这里插入图片描述

5.1.1.3 用法

设备应返回所有支持的SPAKE2+和数字钥匙小程序协议版本,每个版本使用大端编码格式的两个字节表示。
版本h.l表示为ver.high=‘h’(一个字节)和ver.low=‘l’(一字节)。
版本应按从高到低的顺序排列。应至少提供一个版本;否则该服务被认为不可用。
在本规范中,设备应支持SPAKE2+协议版本1.0(编码0100h)和数字钥匙小程序协议版本1.0。车辆应与其支持的版本相匹配,如第6.3.3.8节所述。
设备应告知是否处于配对模式。如果设备“未处于配对模式”,则只有当车辆本身处于配对模式时,车辆才应继续。
该命令应返回表5-2中列出的一般状态字。

5.1.2 SPAKE2+ REQUEST命令

5.1.2.1 目的

在该命令中,车辆应发送选定的SPAKE2+版本、所有支持的数字钥匙小程序协议版本以及SPAKE2+协议的加密参数。
车辆应在响应中取出SPAKE2+协议的曲线点X。SPAKE2+REQUEST命令中使用的参数如第18节所述。

5.1.2.2 定义

命令:80 30 00 00 Lc [Table 5-4] 00
响应:[Table 5-5] 90 00
Table 5-4: SPAKE2+ REQUEST命令字段
在这里插入图片描述
   Table 5-5: SPAKE2+ REQUEST命令响应字段
在这里插入图片描述

5.1.2.3 用法
在发送SPAKE2+REQUEST命令之前,车辆应检查SPAKE2+尝试配对计数器。如果计数器指示已经进行了7次配对尝试,则车辆不应发送SPAKE2+REQUEST命令。相反,车辆应发送OP CONTROL FLOW中止(超过错误配对密码的错误计数器限制,需要新的配对密码(0Dh)或没有特定原因(00h))。当生成新的配对密码时,计数器应重置。

车辆应以两个字节的形式发送选定的车主配对SPAKE2+协议版本。车辆还应发送支持的数字钥匙小程序协议版本列表,其中,车辆应将第一个列出的版本用于车主设备。数字钥匙小程序协议版本的完整列表(标记5Ch)应包含在钥匙创建请求中(见第11.8.1节,Digital_Key_applet_protocol_VERSION)。这允许确定用于与好友设备共享钥匙的最佳版本。
版本h.l表示为ver.high=‘h’(一个字节)和ver.low=‘l’(一字节)。
版本应按从高到低的顺序排列。应至少提供一个版本;否则该服务被认为不可用。
车辆选择的数字钥匙小程序协议版本应在数字钥匙小应用程序交互中提供(见第15节)。
 SPAKE2+协议的所有曲线点都按照x9.63标准[22]定义为字节流0x04||||,其中和是大端表示中的32字节整数(见第18.1节)。
如果返回的X值为无穷大或不是定义的ECC曲线上的有效点,则车辆应中止流程,并发送OP CONTROL flow命令,P2值设置为0Ch,如第5.1.7节所述。
Scrypt cost参数是一个正的4字节无符号整数值,用于配置加密函数(见第18.4节),以导出车辆制造商服务器和设备上的验证器值。其他传输的加密参数是块大小(Block size)和并行化(Parallelization)参数(见第18.1.2节)。Scrypt cost参数TLV、块大小参数TLV和并行化TLV的值部分都以大端格式编码。
理解说明:TLV即Type,Len,Value协议,其中的Value采用大端格式编码。
如果车辆未找到车辆端和设备端都支持的SPAKE2+版本和数字钥匙小程序协议版本,则车辆应发送OP_FLOW_CONTROL(“车主配对流量控制”)命令,并附上表5-24中定义的适当原因代码,而不是SPAKE2+REQUEST命令。
如果SPAKE2+REQUEST命令成功处理,车辆和设备应分别按照18-4和18-5计算分享密码K。该SPAKE2+REQUEST命令可以返回表5-2中列出的一般错误条件或表5-6中列出的错误条件之一。不得返回带有错误状态字的响应数据。
Table 5-6: SPAKE2+REQUEST响应错误状态字
在这里插入图片描述

5.1.3 SPAKE2+ VERIFY命令

5.1.3.1 目的

该命令相互交换证据,以证明双方计算出的分享密码是相等的。

5.1.3.2 定义

命令:80 32 00 00 Lc [Table 5-7] 00
应答:[Table 5-8] 90 00
Table 5-7: SPAKE2+ VERIFY命令字段
在这里插入图片描述
Table 5-8: SPAKE2+ VERIFY命令应答字段
在这里插入图片描述

5.1.3.3 用法

在发送SPAKE2+VERIFY命令之前,车辆应增加SPAKE2+配对尝试的计数器。
车辆应按照18-7所述计算证据M[1],并将其与曲线点Y一起发送到设备。
设备将应验证以下内容:

  1. 接收到的曲线点Y是否是定义的ECC曲线上的有效点
  2. 接收到的M[1]
    如果两者都验证成功,则设备应计算18-8中所述的证据M[2],并应在SPAKE2+VERIFY响应中将M[2]发送回车辆。只有当车辆成功验证收到的M[2]时,车辆才能继续车主配对流程。
    如果上述任何验证失败,即发生错误,则设备不应计算M[2],也不应返回M[2]或除状态字以外的任何其他响应数据。
    在这种情况下,车辆应发送OP CONTROL FLOW命令,以中止车主配对,P2值设置为09h,如第5.1.7节所述,而不是下一个常规命令。
    SPAKE2+VERIFY命令可能返回表5-2中列出的一般错误条件或表5-9中列出的错误条件之一。
          Table 5-9: SPAKE2+ VERIFY命令应答错误状态字
    在这里插入图片描述
    SPAKE2+VERIFY步骤建立了安全通道的密钥,该密钥用于在框架和车辆之间建立SCP03通道,以进行后续命令交换。所使用的SCP03通道是根据18-10和18-11建立的。创建的安全通道密钥应在以下条件下重置:
     车主配对成功后
     当设备返回9000h或61XXh以外的响应时(见表5-15)
     发送SPAKE2+REQUEST命令
     当通讯中断时
     当允许的最长时间到期而未成功完成车主配对
    车辆需要再次使用SPAKE2+以建立新钥匙。请注意,在这些情况下,配对密码应保持不变。车辆应在7次尝试失败后改变配对密码。

5.1.4 WRITE DATA命令

5.1.4.1 目的
此命令将生成数字钥匙所需的所有数据发送到设备。还用于从车辆提供设备公钥(PK)的证明,用于密钥跟踪目的。
5.1.4.2 定义

应使用以下命令结构:
命令:84 D4 P1 00 Lc [command_data] [command_mac] 00
响应:[response_mac] 90 00
参数P1和P2始终设置为00,但最后一个写入数据命令除外,这时P1应设置为80h。
该命令只能在安全通道中发送。
命令可以返回表5-2中列出的一般错误条件或表5-10中列出的错误条件之一。
Table 5-10: WRITE DATA命令响应错误状态字
在这里插入图片描述

5.1.4.3 用法

一个或多个WRITE DATA命令可用于将所请求的数据对象写入设备中的缓冲区中。
Table 5-11: 数字钥匙创建需要的数据对象
在这里插入图片描述

     Table 5-12:  设备数字钥匙证书的数据对象

在这里插入图片描述
表5-11中所有要求的对象应按照表中给出的顺序写入设备。允许每个(一系列)WRITE DATA命令写入一个或多个TLV。
TLV 5F5Fh应最后写入,以标记传输数据序列的结束。该序列的最后一个写入数据命令(包含TLV 5F5Fh)应通过设置P1=80h来指示。
理解说明:用TLV5F5Fh表示数据发送完成。
当车辆接受设备PK时,应将表5-12中所有要求的对象写入设备。该序列的最后一个写入数据命令应通过设置P1=80h来指示。
5F5Fh应为最后一个写入的TLV,以标记传输数据序列的结束。
签7F4Ah应包含表15-13中的所有数据元素(不包括外部标签7F27h,仅包括内部标签值4Dh、46h等),以下元素除外:
 端点标识符(由设备定义)
 CA实例标识符(由设备定义)
 计数器限制(不推荐使用,不应使用)
如果车辆标识符是作为标签7F4Ah的一部分提供的,则设备应将其与车辆公共叶证书[K](Vehicle Public Leaf Certificate)中提供的值进行比较,如果检查失败,则中止车主配对。
在本规范版本中,车辆应仅包括一个单独的authorized_PK(内部标签49h)。该authorized_PK应对应于车辆中间CA或车辆制造商 CA PK(根)。
理解说明:即车辆端应该具有一个CA证书,该证书应该由车辆制造商提供。
最大命令数据长度应为239字节:len = [command_data] + [padding] + [command_mac]
len = 239 + 1 + 8 ≦ 255 (ok)
len = 240 + 16 + 8 > 255 (not ok)
[command_data] + [padding] + [command_mac]应为AES块大小(16字节)的倍数。[9]中描述了填充(padding)方案。至少需要一个字节填充(80h)。最大响应数据长度应为239字节。
如清单5-3所示,车辆公钥应作为车辆制造商 CA签署的X.509证书提供。
基本约束扩展的X.509[3]定义如清单A-5所示。
清单A-4中描述了作为钥匙使用扩展的X.509[3]定义。
Listing 5-1: 车辆证书扩展方式
在这里插入图片描述
Listing 5-2: 车辆证书扩展数据
在这里插入图片描述
清单5-3中描述了车辆公钥证书数据。有关X.509 v3证书格式的详细信息,请参阅[3]。
Listing 5-3: 车辆公钥证书数据
在这里插入图片描述
字段的格式如附录B.2.3所述。ROUTING_INFORMATION(如11.5中所用)定义在清单5-3主题字段的通用名称中,即车辆公钥证书[K]的主题ID(附录B.2.6)
Table 5-13: 邮箱映射
在这里插入图片描述
当使用相应Sig-Bit位指定的数据元素时,应存在条件字段。
表5-14向设备提供了所有补充配置信息。
在这里插入图片描述
在这里插入图片描述
如果标签7F60h不存在,则默认SHARING_CONFIGURATION为:
 DAh: 00h
 DBh: present
 DCh: not present
如果标签D7h不存在,则不需要共享密码。
注意:标签D7h中的信息可能会被密钥跟踪响应和/或事件通知中的activationRequired字段覆盖。
注意:标签D8h中的信息可能会被密钥跟踪响应和/或事件通知中发送的uiBundle的activationOptions中的sharingPasswordLength字段覆盖(第17.8.19节)
LONG_TERM_SHARED_SSECRET应用于生成用于共享钥匙的密码(见第11节中的LONG_TERM-SHARED_SECRET)。LONG_TERM_SHARED_SSECRET应源自SPAKE2+分享密码(K)。
共享密码长度应用作推导算法的参数。支持的钥匙配置文件列表定义了车辆支持的钥匙共享钥匙配置文件。配置文件被定义为对应于清单11-2的1字节枚举值的列表。
如果车辆使用WRITE Data命令向设备发送的设备配置数据(Device Configuration Data)中既不包括标签4Ah也不包括标签4Bh(见图6-3中的步骤3),则设备应在AUTH1响应中不向车辆发送数据(见图6-10中的第6步和第6.3.4.2节)。
如果标签4Ah或4Bh或两者都包含在车辆使用WRITE Data命令发送给设备的设备配置数据(Device Configuration Data)中(见图6-3中的步骤3),则设备应将AUTH1响应中的相应数据发送给车辆(见图6-8中的步骤6)。

5.1.5 GET DATA命令

5.1.5.1 目的

该命令应继续使用已建立的会话密钥来读取验证数字密钥框架在数字密钥小程序实例中创建的数字钥匙所需的所有数据。
理解说明:即车辆端从设备获取数据验证设备端生成的数字钥匙。

5.1.5.2 定义

命令:84 CA 00 00 Lc [encrypted_tag] [command_mac] 00
响应:[response_payload] [response_mac] 90 00 or 61XX
每个GET DATA命令只能请求一个标签。可以按任意顺序请求标签。如果不需要元素,则可以省略这些元素。
X.509证书不应封装到额外的TLV结构中,但应使用标签来引用命令标签列表中的证书,如下所示。
Le应设置为00h,因为数据的确切长度取决于可变证书字段大小。
如果响应状态字指示要读取更多数据,则应使用GET RESPONSE。
该命令可能返回表5-2中列出的一般错误条件或表5-15中列出的错误条件之一。
Table 5-15:GET DATA响应错误状态字
在这里插入图片描述

5.1.5.3 用法

该命令通过提供相应的标签来请求传输所需的数据元素。响应数据长度不得超过239字节,因为APDU响应的最大长度不得超过258字节(包括状态字):
len = [response_data] + [padding] + [response_mac] + [status_word]
len = 239 + 1 + 8 + 2 ≦ 258 (ok)
len = 240 + 16 + 8 + 2 > 258 (not ok)
[response_data] + [padding] 等于AES块大小的倍数(16字节)。至少需要一个字节填充(80h)。则最大响应数据长度为239字节。有关[command_mac]和[response_mac]的计算,请参见第18.4.12节。
应在单独的GET DATA命令中请求每个元素。如果返回的数据超过GET DATA响应数据的最大长度,则应使用GET RESPONSE。
如果响应是TLV结构(例如证书),则不应将响应封装在请求的标签中。否则(例如字符串),响应应封装在请求的标签中。如果当前响应中无法发送所有剩余字节,则应使用状态字61XXh,而不是9000h。
如果XX在01h和EFh之间,则XX字节数(1…239)仍然可用,并且应在下一个响应(应为最后一个响应)中发送。请注意,XX不包括填充长度。如果XX等于00h,则不能在下一个响应中发送所有剩余字节。
XX不允许使用F0h和FFh之间的值。
Table 5-16:GET DATA响应标签7F20h解密的展开
在这里插入图片描述
Table 5-17: GET DATA响应标签7F22h解密的展开
在这里插入图片描述
  Table 5-18: GET DATA响应标签7F24h解密的展开
在这里插入图片描述
Table 5-19: GET DATA响应标签D3h解密的展开
在这里插入图片描述
车主数字钥匙的友好名称应在车主配对过程中指定。友好名称应为UTF-8编码字符串。应允许车主编辑名称以进行识别和个性化设置。出于隐私原因,友好名称不应包含私人信息,例如车主的全名。

5.1.6 GET RESPONSE命令

5.1.6.1 目的

该命令只能用于检索在GET DATA响应中无法完全传输的剩余数据。只有当先前接收到的GET DATA响应具有状态字61XXh时,才接受此命令。

5.1.6.2 定义
 命令:84 C0 00 00 Lc [command_mac] 00
 响应:[response_payload] [response_mac] 90 00 or 61XX

当响应数据未在GET RESPONSE的响应有效载荷中完全传输时,应返回状态字61XXh。XXh表示仍然可用的响应字节数。
当响应数据在GET RESPONSE的响应有效载荷中完全传输并且不再返回剩余数据时,返回状态字9000h。
该命令可以返回表5-2中列出的一般错误条件或表5-20中列出的错误条件之一。
Table 5-20:GET RESPONSE响应错误状态字
在这里插入图片描述

5.1.6.3 用法

一个或多个GET RESPONSE命令只能用于检索在GET DATA响应中无法完全传输的所有响应数据。只有在状态字为61XXh的GET DATA或GET RESPONSE响应后立即发送命令时,才能接受该命令。当接收到XX为1…239的GET RESPONCE响应时,车辆应发送最后一个GET RESPONE命令。XX不允许使用F0h和FFh之间的值。当XX为00h时,应至少再执行一个GET RESPONSE命令。

5.1.7 OP CONTROL FLOW命令

5.1.7.1 目的

有了这个命令,车辆可以在预定义的点控制流量,并在向设备提供状态的同时随时中止流量。在流程图中有规定的地方,应使用“继续”和“结束”。应提供有关状态、成功或不成功结束等的状态信息。

5.1.7.2 定义

此命令总是在安全通道之外发送。
命令:80 3C [Table 5-21][Table 5-22 or Table 5-23 or Table 5-24]
响应:90 00
该命令可能返回一个一般错误条件,如表5-2所示。

5.1.7.3 用法

在收到对OP CONTROL FLOW命令的响应(适用于P1=11h或P1=12h)之前,车辆不应认为会话已终止。OP CONTROL FLOW响应尽可能短,以最大限度地降低响应断开时出现误报的风险。中止时,车辆应执行NFC链路拆除程序,然后执行NFC重置程序,然后再重新启动车主配对或任何其他交易。P1表示该命令触发的主要动作;P2提供了原因代码。
Table 5-21: OP CONTROL FLOW P1参数
在这里插入图片描述
Table 5-22:OP CONTROL FLOW P2 Parameters for P1=10h (continue)
在这里插入图片描述
Table 5-23:OP CONTROL FLOW P2 Parameters for P1=11 (end with success)
在这里插入图片描述

  Table 5- 24:OP CONTROL FLOW P2 Parameters for P1=12 (end with failure)

在这里插入图片描述
结束流的选项指的是交互的常规结束以及可能的结果(成功、不成功)和UI操作。中止流程的选项是指车辆端由于意外或错误行为而在正常结束之前中止流程。

5.2 数据要素

5.2.1 证书

    Table 5-25:证书

在这里插入图片描述
如果车辆制造商CA无法直接签署车辆公钥证书(Vehicle Public Key Certificate),则需要车辆制造商提供车辆制造商中间证书(Vehicle OEM Intermediate Certificate)。
理解说明:初始证书Device OEM Certificate、Instance CA Certificate,需要预先导入系统

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jason.rr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值