目录

  • ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析
    • 一、508A产生CSR文件流程
      • 实例图1:申请证书流程:
      • 实例图2:设备认证流程(使用证书):
    • 二、CSR文件内容分析
    • 三、由CSR签发下来的证书内容分析
  • 博主热门文章推荐:

ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析

  • 508A产生CSR文件流程
  • CSR文件内容分析
  • 由CSR签发下来的证书内容分析

一、508A产生CSR文件流程

上节提到,在Provisoin时508A会产生至少一对公私钥,然后使用其公钥产生一个CSR(Certificate Signing Request)文件,

  • CSR文件中其实完整包含了该公钥,还包含一些X.509证书格式的必备参数数据,并且利用设备PrivateKey对CSR文件进行签名,附在CSR最后面组成CSR文件。
  • Server在收到CSR文件后,首先会利用其中的设备PublicKey验证CSR签名是否正确,然后根据请求内容补充(颁发)完整的证书,既一个完整的X509格式证书。

完成上述步骤后,Server会将证书发送给Signer进行签名,该过程分为三步:

  • (1)Signer对证书TBS(To be signed)部分用摘要算法(例如SHA256,CSR请求中会指明)算一个HASH值(32Byte)
  • (2)Server根据CSR指明的非对称加密算法(例如ECCP256)对该Hash值进行加密(这个过程既签名
  • (3)Server将签名后的数据(ECC为64byte)附在证书主体内容后面,同时将证书和签名一起返回给Device。

实例图1:申请证书流程:

一般在生产过程中对证书进行申请并存储在设备端,这个过程即使用508执行上述步骤,向Server申请证书:


实例图2:设备认证流程(使用证书):

申请完了证书, 会存储在设备中, 在设备认证时使用(如进行TLS双向认证),当然508也有认证(Verify)设备证书的功能,这部分可参见:ATECC508A芯片开发笔记(七):实现对数据数字签名(Sign)并验证(Verify)证书签名


二、CSR文件内容分析

利用Openssl工具查看产生的CSR文件,如下图:
查看命令为openssl req -in xxx.pem -text

  • CSR中可以看出,结合X.509证书格式,一个CSR必须具备VersionSubject以及Attributes。其中Subject中,包含所申请证书的C(Country),O(Organization)以及CN(CommonName)等描述部分。

  • 之后就是Subject - PublicKey部分,会明确PublicKey使用的非对称算法,例如图中为id-ecPubKey,紧接着为Device的公钥,最后附上了ECC曲线的OID,既使用P-256Curve

  • 再往下,就是证书扩展部分,包括KeyUsage(本例为数字签名)、扩展KeyUsage等等。最后部分就是签名部分,可以看到明确了签名算法为ecdsa,并且用sha256算digest(Server首先会验证该签名,保证其完整性)。


三、由CSR签发下来的证书内容分析

下图为CSR签发下来的证书:(仅仅是测试508A用的Demo证书)
查看命令为:openssl x509 -in xxx.pem -noout -text

  • 证书内容和CSR请求是一一对应的,也都是X.509证书格式规范,只不过Signer签名部分是全新的数据,这也是PKI的主要思想之一。

证书内容解析是根据ASN1格式,并且结合X.509定义的证书内容(例如证书开头都为30 82,后面跟2个字节长度):

多提几句:X.509证书都是ASN1格式的,包括CSR,但用508A生成的CSR不一定是ASN1格式,所以要先转换下格式,发送给Server才能识别。

反过来,如果使用证书数据,例如使用Publickey等数据,用于自己验证签名,也要对其格式进行变换。 (可以用些小工具,如base64转Hex助手,或者代码实现)


博主热门文章推荐:

一篇读懂系列:

  • 一篇读懂无线充电技术(附方案选型及原理分析)
  • 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
  • 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

LoRa Mesh系列:

  • LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释
  • LoRa学习:信道占用检测原理(CAD)
  • LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)

网络安全系列:

  • ATECC508A芯片开发笔记(一):初识加密芯片
  • SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
  • 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
  • AES加解密效率测试(纯软件AES128/256)–以嵌入式Cortex-M0与M3 平台为例

嵌入式开发系列:

  • 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
  • IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
  • Linux内核编译配置(Menuconfig)、制作文件系统 详细步骤
  • Android底层调用C代码(JNI实现)
  • 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
  • Android/Linux设备有线&无线 双网共存(同时上内、外网)

AI / 机器学习系列:

  • AI: 机器学习必须懂的几个术语:Lable、Feature、Model…
  • AI:卷积神经网络CNN 解决过拟合的方法 (Overcome Overfitting)
  • AI: 什么是机器学习的数据清洗(Data Cleaning)
  • AI: 机器学习的模型是如何训练的?(在试错中学习)
  • 数据可视化:TensorboardX安装及使用(安装测试+实例演示)

ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析相关推荐

  1. ATECC508A芯片开发笔记(一):初识加密芯片

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦: ---------- 目录 一.ATECC508A概述: 二.ATECC50 ...

  2. ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置

    目录 ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置 1.Encrypted Read 1.1 Standard Encrypted Read Flow 1.2 Simp ...

  3. ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植

    目录 ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植 Atmel两个官方lib介绍 一.CryptoAuthLib简介 Lib中最主要的三种对象类型: 二. ...

  4. ATECC508A芯片开发笔记(十一):NXP 平台移植ATECCx08 CryptoAuthLib库(I2C)

    目录 ATECC508A芯片开发笔记(十一):NXP 平台移植x08库(I2C) 一.CryptoAuthLib 二.Nxp RT10xx平台上移植CryptoAuthLib 2.1.在官网下载最新的 ...

  5. ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理

    目录 AATECC508A芯片开发笔记(八):ECDH算法配置方法.过程原理及示例代码 1.ECDH介绍及原理 2.ECDH执行过程 3.508A某一slot执行Ecdh需要配置的参数 4.示例代码 ...

  6. ATECC508A芯片开发笔记(七):实现数字签名(Sign)并校验(Verify)证书签名

    目录 ATECC508A芯片开发笔记(七):实现对数据数字签名(Sign)并验证(Verify)证书签名 一.数据签名.验证基本流程 二.利用508对数据签名并验证 代码实现: Sign(数字签名)实 ...

  7. 【嵌入式硬件芯片开发笔记】4-20mA DAC芯片AD5421配置流程

    [嵌入式硬件芯片开发笔记]4-20mA DAC芯片AD5421配置流程 16位.串行输入.环路供电.4 mA至20 mA DAC 可用于HART协议相关电路 同AD5700配合使用 AD5421的SP ...

  8. 【嵌入式硬件芯片开发笔记】HART调制解调器AD5700芯片配置流程

    [嵌入式硬件芯片开发笔记]HART调制解调器AD5700芯片配置流程 低功耗HART调制解调器 适用于AD5700/AD5700-1 我的是XTAL_EN接地,CLK_CFG的两个引脚由同一个GPIO ...

  9. 【嵌入式硬件芯片开发笔记】HART协议调制解调芯片AD5700配置流程

    [嵌入式硬件芯片开发笔记]HART协议调制解调芯片AD5700配置流程 XTAL_EN接地,CLK_CFG的两个引脚由同一个GPIO控制 初始时HART_CLK_CFG输出低电平 由RTS引脚控制调制 ...

最新文章

  1. CSS 实例之打开大门
  2. Flex精华摘要--使用AS脚本
  3. [转]Hyper-V功能大跃进 或引发市场洗牌
  4. 基于Transformer的通用视觉架构:Swin-Transformer带来多任务大范围性能提升
  5. How to Easily Read a Linux Man Page
  6. 深度|二代征信:人行数字解读分与征信复议
  7. mysql创建表有则删除_MySQL创建表和删除表
  8. php 父子id,父子关系PHP / MYSQL
  9. 百度 PaddlePaddle开源视频分类模型Attention Cluster,曾夺挑战赛冠军
  10. python身份证号码校验第十七位系数_python实现身份证校验位计算
  11. 白话ES 的分布式架构原理
  12. 用什么软件测试usb速度,什么是usb 3.0?实测usb 3.0与usb 2.0传输速度对比
  13. 利用javadoc制作API文档
  14. [BLE]低功耗蓝牙介绍
  15. Android usb广播 ACTION_USB_DEVICE_ATTACHED流程源码分析
  16. 深入理解Oracle中的case when then else end
  17. Use history mode for router? Vue-router 中hash模式和history模式的区别
  18. mysql rollback如何使用_MYSQL的COMMIT和ROLLBACK使用讲解
  19. 电信手机信号测试软件,移动、联通、电信手机信号辐射实测~有图有真相
  20. Unity显示印度语异常

热门文章

  1. 网电空间战 3-战斗空间
  2. C语言见缝插针游戏,见缝插针玩游戏
  3. windows 下 vs2008 编译 OpenCV 库
  4. 练习print函数的使用(python)
  5. snap相关(个人总结)
  6. 使用JDBC连接MySQL数据库
  7. 决策树(Decision Tree)算法原理总结(一)
  8. NBA只有这四个人真正影响了世界-艾弗森
  9. 使用CMAKE和交叉编译工具链
  10. 毕业后我尝试过的副业