SCMS中的链接值算法(CCSA版本)
背景
为了以最小的空间开销实现PC证书的撤销,SCMS采用了链接值算法来生成PC证书中的CN字段:
用一个种子ls(0)ls(0)ls(0)扩展生成某设备指定周期iii的链接值种子ls(i)ls(i)ls(i),在使用该种子生成周期iii内JJJ个链接值,这JJJ个链接值作为设备在第iii周期内的JJJ张假名证书的CN字段。
当要吊销该设备的第iii周期及之后的所有PC时,只需要在CRL中添加该设备的lv(i)lv(i)lv(i)即可。
本文简述链接值算法。
具体过程
记laidla_{id}laid为LA的32bit标识字符串。
为每一组假名证书生成一个128bit的随机数,作为该组假名证书第i=0周期的初始链接种子ls(0)ls(0)ls(0)。
文字描述
- LA选取32bit的随机字符串:La_id{La\_id}La_id
- 对于一套假名证书,LA生成128bit的随机字符串,称为
i=0周期时的初始化链接种子
:ls(0)ls(0)ls(0)
iii表示时间周期(比如一周)
jjj表示一个时间周期内的证书(比如一周20张证书) - 之后对于每一个时间周期i>0i>0i>0, 计算链接值种子**ls(i)ls(i)ls(i)**:
ls(i)=Hu(la_id(16bit)∣∣ls(i−1)(128bit)∣∣0(112bit))ls(i) = H_u\Bigl(la\_id(16bit) || ls(i-1)(128bit) || 0(112bit)\Bigr)ls(i)=Hu(la_id(16bit)∣∣ls(i−1)(128bit)∣∣0(112bit))
Hu(m)H_u(m)Hu(m):表示m的SM3运算后的结果的u字节的最高有效位。CCSA中取u=16
a∣∣ba || ba∣∣b:表示a和b字符串的拼接
ls(0),ls(1),...,ls(i)ls(0), ls(1), ..., ls(i)ls(0),ls(1),...,ls(i) 构成了一个链接值种子的伪随机序列,称为linkage chain
,LC
性质:ls(i−1)ls(i-1)ls(i−1)可以很容易推导出ls(i)ls(i)ls(i),反过来却不行 - 计算链接值
linkage value
:
lv(i,j)=[SM4ls(i)(la_id(16bit)∣∣j(32bit)∣∣0(80bit))⊕(la_id(16bit)∣∣j(32bit)∣∣0(80bit))]vlv(i,j) = \Bigl[SM4_{ls(i)}\Bigl(la\_id(16bit) || j(32bit) || 0(80bit)\Bigr) \oplus\Bigl(la\_id(16bit) || j(32bit) || 0(80bit)\Bigr) \Bigr]_vlv(i,j)=[SM4ls(i)(la_id(16bit)∣∣j(32bit)∣∣0(80bit))⊕(la_id(16bit)∣∣j(32bit)∣∣0(80bit))]v
SM4k(m)SM4_k(m)SM4k(m):使用密钥k对输入m进行SM4加密。
a⊕ba\oplus ba⊕b:a和b的异或
[a]v[a]_v[a]v:a的v字节的最高有效位。CCSA中取72
在PCA生成PC证书,以及设备处理CRL时,都要执行该操作 - 上述步骤中,LA会用PCA的公钥证书加密lv后提供给RA。RA将其与PC的证书请求关联后发送给PCA。PCA解密后,将lv写入PC证书。PCA在生成PC时,使用蝴蝶密钥扩展算法来为每个证书生成签名密钥和加密密钥,并对证书进行加密,RA拿到的是加密后的PC证书。
- 整个过程中,RA洗牌,LA生成lv,PCA对PC加密,没有任何一个组件可以获取假名证书、lv、设备标识的映射关系,保护了设备(主要是OBU)的隐私
- 撤销时,只需要在CRL中公示**La_id,lv(i)以及i值{La\_id},lv(i)以及i值La_id,lv(i)以及i值**,设备端即可计算出所有i及i之后周期的链接值
PS:在美国的SCMS中,链接值权威机构(LA)有两个,称为LA1和LA2,国内的CCSA标准中,LA只有一个。对于两个LA的情况,每个LA的计算过程与上述描述类似,只不过其生成的结果不是链接值,而是成为预链接值,由PCA使用两个预链接值异或得到最终的链接值。
SCMS中的链接值算法(CCSA版本)相关推荐
- SCMS中的蝴蝶密钥扩展算法(CCSA版本)
前言 在SCMS中提到了蝴蝶密钥扩展算法,用于为车辆持续生成PC证书.中国的CCSA标准<基于LTE的车联网无锡啊是你通信技术 安全证书管理系统技术要求>也采用了相同的算法,本文以CCSA ...
- 使用Weka进行K-近邻算法和K-均值算法的使用
0x01 Weka简介 Weka是由新西兰怀卡托大学开发的智能分析系统(Waikato Environment for Knowledge Analysis) .在怀卡托大学以外的地方,Weka通常 ...
- 大数据算法课程笔记1:寻找中值算法之随机选取,中值的中值,One Pass算法
大数据算法的课程笔记,包括四种中值搜索算法.包括最简单的先搜索后检索,平均算法复杂度为O(N)的简单随机选取算法,确定性的中值的中值算法,大概率返回中值的one pass算法. 1. 最简单的方法:先 ...
- 本专栏所有力扣题目的目录链接, 刷算法题目的顺序(由易到难/面试频率)/注意点/技巧, 以及思维导图源文件问题(持续更新中)
这篇文章为本专栏所有力扣题目提供目录链接, 更加方便读者根据题型或面试频率进行阅读, 此外也会介绍我在刷题过程中总结的刷算法题目的顺序/注意点/技巧, 最后说下文中出现的思维导图源文件的问题 和 打卡 ...
- 算法-寻找数组中的重复值,四种解法
算法-寻找数组中的重复值 寻找数组中的重复值 寻找数组中的重复值 题目来源于:Leetcode-287.本题归类到简单我无法理解-要满足四个条件需要用很特定的解法,面试中要是用到的话很可能是在给自己挖 ...
- php 短网址 算法,微博短链接算法PHP版本_php
思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...
- 如何确定K-means算法中的k值?
1. K-means算法 k-means算法是机器学习中常用的聚类算法,原理简单实现容易,内存占用量也比较小.但使用这个方法时,需要事先指定将要聚合成的簇数. 在先验知识缺乏的情况下,想要确定是非常困 ...
- 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较
OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...
- 乐鑫esp8266学习rtos3.0笔记第9篇:整理分享那些我在项目中常用的esp8266 rtos3.0版本的常见驱动,Button按键长短按、PWM平滑调光等。(附带demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...
最新文章
- linux ssh密钥认证
- Altium Designer将Gerber转换为PCB文件教程
- Android探索之旅 | 面向对象和Java基础
- CocosStudio的节点如何使用自定义shader
- Python3 爬虫学习笔记 C14【验证码对抗系列 — 点触验证码】
- MFRC50001T
- 实验五:大数据可视化工具-NodeXL
- 移动创业者,这么多免费资源,你不要?
- 2022年版中国污泥处理处置行业投资现状与前景规划分析报告
- 阿里云服务器中目录的简单介绍及简单使用
- 基于云虚拟机的代码覆盖率
- 【论文整理】小样本学习Few-shot learning论文整理收藏(最全,持续更新)
- python高阶学习之一:c++调用python
- Windows 7 新功能选集
- 人工智能轨道交通行业周刊-第33期(2023.2.6-2.12)
- 工控前辈经验之谈 | 编写PLC程序我从做Excel表开始
- 用IE浏览器打开vsd文件
- 开篇-HOG提取训练检测+样本制作
- Linux 网络驱动 phy 读写寄存器调试方法
- html-----------------------