背景

为了以最小的空间开销实现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)。

文字描述

  1. LA选取32bit的随机字符串:La_id{La\_id}La_id
  2. 对于一套假名证书,LA生成128bit的随机字符串,称为i=0周期时的初始化链接种子ls(0)ls(0)ls(0)
    iii表示时间周期(比如一周)
    jjj表示一个时间周期内的证书(比如一周20张证书)
  3. 之后对于每一个时间周期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),反过来却不行
  4. 计算链接值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时,都要执行该操作
  5. 上述步骤中,LA会用PCA的公钥证书加密lv后提供给RA。RA将其与PC的证书请求关联后发送给PCA。PCA解密后,将lv写入PC证书。PCA在生成PC时,使用蝴蝶密钥扩展算法来为每个证书生成签名密钥和加密密钥,并对证书进行加密,RA拿到的是加密后的PC证书。
  6. 整个过程中,RA洗牌,LA生成lv,PCA对PC加密,没有任何一个组件可以获取假名证书、lv、设备标识的映射关系,保护了设备(主要是OBU)的隐私
  7. 撤销时,只需要在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版本)相关推荐

  1. SCMS中的蝴蝶密钥扩展算法(CCSA版本)

    前言 在SCMS中提到了蝴蝶密钥扩展算法,用于为车辆持续生成PC证书.中国的CCSA标准<基于LTE的车联网无锡啊是你通信技术 安全证书管理系统技术要求>也采用了相同的算法,本文以CCSA ...

  2. 使用Weka进行K-近邻算法和K-均值算法的使用

    0x01 Weka简介 Weka是由新西兰怀卡托大学开发的智能分析系统(Waikato Environment for Knowledge Analysis)  .在怀卡托大学以外的地方,Weka通常 ...

  3. 大数据算法课程笔记1:寻找中值算法之随机选取,中值的中值,One Pass算法

    大数据算法的课程笔记,包括四种中值搜索算法.包括最简单的先搜索后检索,平均算法复杂度为O(N)的简单随机选取算法,确定性的中值的中值算法,大概率返回中值的one pass算法. 1. 最简单的方法:先 ...

  4. 本专栏所有力扣题目的目录链接, 刷算法题目的顺序(由易到难/面试频率)/注意点/技巧, 以及思维导图源文件问题(持续更新中)

    这篇文章为本专栏所有力扣题目提供目录链接, 更加方便读者根据题型或面试频率进行阅读, 此外也会介绍我在刷题过程中总结的刷算法题目的顺序/注意点/技巧, 最后说下文中出现的思维导图源文件的问题 和 打卡 ...

  5. 算法-寻找数组中的重复值,四种解法

    算法-寻找数组中的重复值 寻找数组中的重复值 寻找数组中的重复值 题目来源于:Leetcode-287.本题归类到简单我无法理解-要满足四个条件需要用很特定的解法,面试中要是用到的话很可能是在给自己挖 ...

  6. php 短网址 算法,微博短链接算法PHP版本_php

    思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...

  7. 如何确定K-means算法中的k值?

    1. K-means算法 k-means算法是机器学习中常用的聚类算法,原理简单实现容易,内存占用量也比较小.但使用这个方法时,需要事先指定将要聚合成的簇数. 在先验知识缺乏的情况下,想要确定是非常困 ...

  8. 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较

    OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...

  9. 乐鑫esp8266学习rtos3.0笔记第9篇:整理分享那些我在项目中常用的esp8266 rtos3.0版本的常见驱动,Button按键长短按、PWM平滑调光等。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...

最新文章

  1. linux ssh密钥认证
  2. Altium Designer将Gerber转换为PCB文件教程
  3. Android探索之旅 | 面向对象和Java基础
  4. CocosStudio的节点如何使用自定义shader
  5. Python3 爬虫学习笔记 C14【验证码对抗系列 — 点触验证码】
  6. MFRC50001T
  7. 实验五:大数据可视化工具-NodeXL
  8. 移动创业者,这么多免费资源,你不要?
  9. 2022年版中国污泥处理处置行业投资现状与前景规划分析报告
  10. 阿里云服务器中目录的简单介绍及简单使用
  11. 基于云虚拟机的代码覆盖率
  12. 【论文整理】小样本学习Few-shot learning论文整理收藏(最全,持续更新)
  13. python高阶学习之一:c++调用python
  14. Windows 7 新功能选集
  15. 人工智能轨道交通行业周刊-第33期(2023.2.6-2.12)
  16. 工控前辈经验之谈 | 编写PLC程序我从做Excel表开始
  17. 用IE浏览器打开vsd文件
  18. 开篇-HOG提取训练检测+样本制作
  19. Linux 网络驱动 phy 读写寄存器调试方法
  20. html-----------------------

热门文章

  1. 在python中合法的变量_在python中的变量
  2. maya刷权重时有个叉_Maya怎么刷权重 修改权重方法详解
  3. std::move的实际工作过程
  4. MyBatis-Plus解说
  5. 刘晓燕-语法长难句-第一章简单句(不简单)
  6. 静态库和动态库的创建与使用
  7. 程序员面试逻辑推理智力题
  8. Mysql8 CentOS7 Compressed TAR Archive安装
  9. 基于 Python 官方 GitHub 构建 Python 文档
  10. Linux服务器c++开发之路,从Linux基础入门到服务器开发高级架构