CCC SPAKE2+流程解析

1、SPAKE2+流程及SCP03通道介绍

SPAKE2+流程发生在CCC车主配对过程中的Phase2

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

那这个SCP03通道是干啥的?

我们可以先简单的理解为:建立安全通道前,车辆和手机之间交互的APDU数据是明文,建立安全通道后,车辆和手机之间交互的APDU数据是密文具体详细可参考文档《GPC_2.3_D_SCP03_v1.2_PublicRelease.pdf》,本文不展开详细描述。

该安全通道在整个RF复位期间保持为激活状态。即,虽然在车主配对过程中的某些步骤,NFC会关闭/重启,但该安全通道一直保持在激活状态。

那哪些情况下,这个安全通道会被关闭?

发生如下任意一种情况时,则该安全通道会被关闭:

1) 当发送成功的OP CONTROL FLOW命令(如Figure6-3中的步骤17),

2) 或,当发送错误的OP CONTROL FLOW命令,

3) 或,当SPAKE2+流程(Figure6-4)由于任何异常导致的终止,

4) 或,当APDU命令解密错误

5) 或,当APDU命令中的MAC值是错误的。

当车辆尚未准备好进行车主配对时,应使用OP CONTROL FLOW中止并向用户提示情况,如preconditions for owner pairing not fulfilled (未满足车主配对的前提条件)。

2、CCC SPAKE2+流程

CCC标准中关于SPAKE2+流程如下图,下面详细讲解下这个SPAKE2+流程,主要讲解流程,对相关算法暂不做深入解析。

2.1、SPAKE2+流程详细解析

根据自己的理解,我将上面CCC的SPAKE2+流程,梳理成下图,接下来展开各部分的解析。

2.1.1 步骤1

步骤#1解析如下:

1) 车辆OEM服务器产生Salt, password;

2) 车辆OEM服务器计算L, w0;

3) 把password发送给手机(可通过网页或车辆OEM的App)

4) 发送Salt, L, w0给到车辆(通过车辆OEM专有链路);

具体可参考下图Listing18-1:

2.1.2 步骤2

步骤#2解析如下:

1) 车辆产生随机数y;

2) 车辆计算Y = y * G +w0 * N;

3) 车辆通过SPAKE2+ Request Command发送salt,Y等参数给手机;

4) 手机产生随机数x;

5) 手机计算X =x × G + w0 × M;

6) 手机通过SPAKE2 Response发送X等参数给车辆;

该步骤中的1->3步骤,对应下图Listing 18-2

该步骤中的4->6步骤,对应下图Listing 18-3

2.1.3 步骤3

步骤#3解析如下:

1) 车辆计算Z,V,K,CK,SK,如下图Listing 18-4;

a) Z = y×(X-w0×M)

b) V = y×L

c) K = SHA-256(len(X) || X || len(Y) || Y || len(Z) || Z || len(V) || V || len(w0) || w0)

d) CK = [0:128]

e) SK = [128:128]

2) 手机计算Z,V,K,CK,SK,如下图Listing 18-5;

a) Z = x×(Y-w0×N)

b) V = w1×(Y-w0×N)

c) K = SHA-256(len(X) || X || len(Y) || Y || len(Z) || Z || len(V) || V || len(w0) || w0)

d) CK = [0:128]

e) SK = [128:128]

2.1.4 步骤4

步骤#4解析如下:

1) 车辆和手机分别计算各自的K1,K2,M1,M2;

a) K1=HKDF(CK, “ConfirmationKeys” || TLV 5Bh || TLV 5Ch, [0:128])

b) K2=HKDF(CK, “ConfirmationKeys” || TLV 5Bh || TLV 5Ch, [128:128])

c) M[1] = CMAC(K1, X)

d) M[2] = CMAC(K2, X)

2) 车辆通过SPAKE2+ Verify Command,将M[1]发送给手机;

3) 手机确认发送过来的M[1]是否与自身计算的M[1]相同,若相同则流程继续,否则异常退出;

4) 手机通过SPAKE2+ Verify Response,将M[2]发送给车辆;

5) 车辆确认发送过来的M[2]是否与自身计算的M[2]相同,若相同则流程继续,否则异常退出;

关于K1,K2的计算,详见下图Listing 18-6:

关于M1的计算,详见下图Listing 18-7:

关于M2的计算,详见下图Listing 18-8:

2.1.5 步骤5

步骤#5解析如下:

1) 车辆和手机分别计算各自的Kenc, Kmac, Krmac, LONG_TERM_SHARED_SECRET;

2) 若Flag_Kble_intro_Kble_oob_master_support==TRUE,则需额外输出 Kble_intro和Kble_oob_master ;

具体可参考下图Listing 18-9:

2.1.6 步骤6

步骤#6解析如下:

1) 前5个步骤完成后,则SPAKE2+流程已经完成,手机和车辆已完成SCP03通道的建立;

2) 之后手机和车辆交互的APDU则为密文交互;

3) 即,发送方会根据Kenc, Kmac, Krmac密钥,而接收方收到数据后再进行解密。

加密计算过程如下图Listing18-10和Listing18-11

3、总结

1) SPAKE2+流程发生在CCC车主配对过程中的Phase2

2) SPAKE2+流程为车辆和手机之间的数据交换建立了一个安全通道SCP03

3) 建立SCP03安全通道前,车辆和手机之间交互的APDU数据是明文,建立安全通道后,车辆和手机之间交互的APDU数据是密文

4) SPAKE2+流程可拆解为如下步骤:

        a) 在车主配对流程中的Phase0,车辆OEM服务器发送Salt, L, w0给到车辆把password发送给手机

        b) 手机&车辆双方通过SPAKE2+ Request Command和SPAKE2+ Response交互Salt,Y,X等信息

        c) 手机&车辆双方各自计算Z,V,K,CK,SK等共享密钥信息

        d) 手机&车辆双方各自计算K1,K2,M1,M2等信息,通过SPAKE2+ Verify Command和SPAKE2+ Verify Response交互M[1], M[2],并验证各自收到的信息是否正确

        e) 手机&车辆双方各自生成Syetem Keys,主要包含Kenc, Kmac, Krmac等信息。

        f) 至此完成SPAKE2+流程,建立SCP03安全通道,之后的APDU交互则为密文交互。即发送方会根据Kenc, Kmac, Krmac密钥, 对数据进行加密,然后发送;接收方收到数据后,再进行解密

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

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

相关文章

剖解反转链表

剖解反转链表 思路: 1.若链表为空或者只存在一个节点,就无需反转,直接返回head 2.若存在多个节点 首先将head.next给到cur,并将head.next置为null 剩余的节点就利用头插法,反转链表 class Solution {public ListNo…

基于SpringBoot+Vue+MySQL的特色旅游网站系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着旅游业的蓬勃发展,人们对旅游体验的需求日益多样化与个性化。传统的旅游信息查询与预订方式已难以满足现代游客的需求。因此,我们开发了这款基于SpringBootVueMySQL的特色旅游网站系统。该系统旨在通…

MySQL高阶1917-Leetcodify好友推荐

目录 题目 准备数据 分析数据 总结 题目 为 Leetcodify 用户推荐好友。我们将符合下列条件的用户 x 推荐给用户 y : 用户 x 和 y 不是好友,且用户 x 和 y 在同一天收听了相同的三首或更多不同歌曲。 注意,好友推荐是单向的&#xff0c…

web前端字段大小写下划线转换工具

文章目录 前言一、如何使用?二、相关代码总结 前言 程序员在敲代码的过程中都要命名一些字段,但是Java语言对字段的命名规范和sql命名规范不一样,如下图所示,这种机械性的转换工作很劳神费力,为了省点劲写了一个web小…

pdf怎么编辑修改内容?试试这四款工具!

作为一个经常探索各种办公软件的人,今天我打算和大家聊聊一个我们工作中经常会遇到的问题——编辑PDF文件。我们都知道,PDF文件以其格式稳定、不易被篡改而受到青睐,但这也意味着一旦需要修改内容,就变得相当棘手。不过&#xff0…

设计模式之类结构模式例题

答案:B A 知识点: 设计模式中类结构模式分别是:工厂方法模式,适配器模式,模板方法模式,解释器模式 记忆方法:公司里有个模特小姐姐,公是工厂模式,司是适配器模式&…

Mapper代理

文章目录 Mapper代理路径一定要写对Mapper代理方式加载配置文件 (包扫描的方式) Mapper代理 好像就是能 包名.方法。 反正就是防止硬编码,更灵活,更适用。 路径一定要写对 Mapper代理方式加载配置文件 (包扫描的方式…

fiddler抓包08_抓Android手机请求

课程大纲 手机抓包,电脑端的设置和IOS端相同,设置一次即可,无需重复设置。 前提:电脑和手机连接同一个局域网 土小帽电脑和手机都连了自己的无线网“tuxiaomao”。 Step1. 电脑端设置 ① 打开Fiddler - 开启抓包(F12…

Windows下如何定时执行自定义任务

目录 一.前言二.设置定时自动执行自定义任务 一.前言 本文环境是Windows11系统。 有时候我们希望能够在Windows下定时自动执行自定义任务,比如检测数据库服务的状态。那在Windows下怎么定时自动执行自定义任务,这篇文章介绍一种方法。 二.设置定时自动…

计算机毕业设计推荐-基于python的电子图书阅读推荐平台【源码+文档+讲解】

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于python的电子图书阅读推…

吴津雨银洁刘雅雯获得国际超模大赛四川总决赛网络组三甲

9月8日众人期盼已久的都江堰杯2024国际超模大赛四川总决赛在三遗之城都江堰落下帷幕。国际超模大赛已经举办第12个年头,每年为时尚界、模特界输送无数的优秀时尚模特人才,让世界超模中出现更多的中国面孔。大赛在全球已经布局多个国家及地区,…

项目第七弹:消费者管理模块

项目第七弹:消费者管理模块 一、为何要有这个模块?二、消费者是否需要持久化?三、怎么设计?1.如何抽象描述?1.回想一下基于生产消费模型的线程池2.如何组织3.消息处理与确认问题的解决4.自动确认标志5.消费者代码 2.队…

【计算机组成原理】主存储器深度解析

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

DETR论文翻译与理解

DETR(Detection with transformer) DETR:End to End Object Detection with Transformer 论文链接:2005.12872 (arxiv.org) 参考视频:https://www.bilibili.com/video/BV1GB4y1X72R/?spm_id_from333.788&vd_…

JBoss反序列化漏洞CVE-2017-12149

1.环境搭建 cd vulhub-master/jboss/CVE-2017-12149 docker-compose up -d 2.访问漏洞地址 3.漏洞验证 http://47.121.211.205:8080/invoker/readonly 返回500说明漏洞存在 4.使用漏洞进行利用 直接执行命令

人脸识别换装技术实现记录-1

最近,研究了下人脸识别换装,确定了技术方案和技术路线,并最终实现了想要达成的效果,现将制作过程中遇到的问题以及实现的过程记录下来,以便回顾总结的同时,也和其他想实现人脸识别换装的同学分享下经验,避免踩坑。 本项目主要是在Android系统上实现人脸换装的效…

简单图解一下线性注意力机制

知乎:刀刀宁链接:https://zhuanlan.zhihu.com/p/718156896 线性注意力机制的文章有很多了,在本篇笔记中,我们简单地对各种方法进行一下图解比较,串一下当前的线性注意力机制,涉及的公式极少,主要…

【Python从入门到进阶】65、Pandas如何批量拆分与合并Excel文件

接上篇《64、Pandas如何实现数据的Concat合并》 上一篇我们学习了Pandas如何实现数据的Concat合并,本篇我们来继续学习Pandas如何批量拆分与合并Excel文件。 一、引言 在当今数据驱动的时代,Excel文件作为数据处理和分析的基石,扮演着不可或…

【YOLO目标检测手势识别数据集】共55952张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式:YOLO格式 图片数量:55952 标注数量(txt文件个数):55952 标注类别数:7 标注类别名称: one two three four five good ok 数据集下载:手势识别数据集 图片示例 数…

猫头虎 分享:Python库 Bottle 的简介、安装、用法详解入门教程

🐯 猫头虎 分享:Python库 Bottle 的简介、安装、用法详解入门教程 大家好,今天猫头虎给大家带来一篇关于Python库 Bottle 的详细入门教程。这是我在开发中经常使用的一款轻量级Web框架,特别适合快速搭建小型应用程序或者API服务。…