SM2国密算法证书解析
SM2国密算法证书解析
一、数字证书的组成
1)证书数据结构
数字证书使用ASN.1编码,证书文件以二进制或Base64格式存放,数据格式使用TLV(Tag Length Value)形式,T代表类型标识符,L是长度值标识符,V代表值编码。数字证书中的每一项都有个对应的类型T。一个数字证书就是一个大的TLV序列,然后V又由多个TLV组合而成。
SM2证书数据和RSA算法证书一样,包含证书版本、序列号、颁发者、使用者主体信息、使用者公钥、有效期、证书扩展项等,只不过SM2证书的公钥算法是使用ECC算法的Oid标识(1.2.840.10045.2.1),然后公钥参数使用SM2国密算法的Oid标识(1.2.156.10197.1.301)。
2)签名算法
SM2证书配套的签名算法是基于SM3的SM2签名算法,算法Oid标识为1.2.156.10197.1.501,另外SM2国密算法还定义基于SHA_1、SHA_256的签名,以及使用SM3算法的RSA的签名,只不过签名算法Oid标识不一样。
3)签名数据
SM2的签名数据由2个BigInteger大数组成,再使用Der编码存放签名数据。证书的签名数据由根证书私钥进行签名,使用根证书公钥验证,顶级根证书使用自己的证书公钥验证。
二、数字证书的对象标识符
数字证书的每项都有对象标识Oid,SM2数字证书的主要区别就是公钥算法、公钥参数、签名算法标识不一样,其余的都是X509里标准项。数字证书常见得对象标识有如下:
对象标识符 | 名称 | OID |
---|---|---|
rsaEncryption | RSA算法标识 | 1.2.840.113549.1.1.1 |
sha1withRSAEncryption | SHA1的RSA签名 | 1.2.840.113549.1.1.5 |
ECC | ECC算法标识 | 1.2.840.10045.2.1 |
SM2 | SM2算法标识 | 1.2.156.10197.1.301 |
SM3WithSM2 | SM3的SM2签名 | 1.2.156.10197.1.501 |
sha1withSM2 | SHA1的SM2签名 | 1.2.156.10197.1.502 |
sha256withSM2 | SHA256的SM2签名 | 1.2.156.10197.1.503 |
sm3withRSAEncryption | SM3的RSA签名 | 1.2.156.10197.1.504 |
commonName | 主体名 | 2.5.4.3 |
emailAddress | 邮箱 | 1.2.840.113549.1.9.1 |
cRLDistributionPoints | CRL分发点 | 2.5.29.31 |
extKeyUsage | 扩展密钥用法 | 2.5.29.37 |
subjectAltName | 使用者备用名称 | 2.5.29.17 |
CP | 证书策略 | 2.5.29.32 |
clientAuth | 客户端认证 | 1.3.6.1.5.5.7.3.2 |
三、数字证书的解析
数字证书的解析主要是根据ASN.1语法和对象标识符来获取值,然后再是证书的有效期、颁发机构根证书、CRL吊销状态和使用目的等验证。RSA证书是标准算法大部分平台都可以解析,而SM2国密算法证书的解析就不是那么通用的。在Windows的一些较高版本打开SM2证书会显示“验证信任关系时,系统层上出现了一个错误”,这是因为Windows还不支持SM2算法证书验证,不能识别SM2签名的算法标识,因此需要自行验证SM2证书的签名数据,可基于BouncyCastle开源加密库来实现SM2验证签名,详细参见我的国密算法SM2证书制作。
SM2国密算法证书解析相关推荐
- SM2 国密算法被 Linux 内核社区接受
喜欢就关注我们吧! 10 月 25 日,有开发者发文称,SM2 国密算法终于被 Linux 内核社区接受了.该作者表示,SM2 的补丁已经更新到了 v7 版本,这个版本的补丁最终被社区接受,目前已经合 ...
- SM2国密算法加解密
接口安全设计原则的一个点就是数据不能明文传输,除了https这个必须的请求外,接口数据加密也是一个重要的方式,下面介绍一下SM2国密算法加解密的使用方式. 这里我就针对目前前后端分离架构的方式来简单介 ...
- 密信国密浏览器:推动SM2国密算法和国密SSL证书应用
为什么80%的码农都做不了架构师?>>> 国密浏览器的普及是推广我国国产密码算法的关键生态要素.日前,沃通CA子公司密信技术发布密信浏览器公测版,支持SM系列国密算法和安全协议 ...
- 记自己发现的—SM2国密算法应用的高危漏洞—CVE-2021-3711
openssl在8月24日发布了openssl 1.1.1l的稳定版,其中修复了一个高危漏洞:CVE-2021-3711.该漏洞会影响openssl 1.1.1l 之前的所有包含SM2商密算法版本,其 ...
- SM2国密算法公钥解压缩
SM2一般用到的或者第三方提供的公钥都是压缩过的,长度为66个长度,既33字节. 格式如下,保密期间秘钥内容用*代替了,从02到....3F3B共33字节.66个长度 06:028736002931F ...
- ec java sm2证书_国密算法SM2证书制作
前段时间将系统的RSA算法全部升级为SM2国密算法,密码机和UKey硬件设备大都同时支持RSA和SM2算法,只是应用系统的加解密签名验证需要修改,这个更改底层调用的加密动态库来,原来RSA用的对称加密 ...
- 国密算法SM2证书制作
原文链接:http://www.jonllen.com/jonllen/work/162.aspx 国密算法SM2证书制作 分类:工作 大中小 前段时间将系统的RSA算法全部升级为SM2国密算法,密码 ...
- 国密算法java源码_国密算法SM2证书制作
前段时间将系统的RSA算法全部升级为SM2国密算法,密码机和UKey硬件设备大都同时支持RSA和SM2算法,只是应用系统的加解密签名验证需要修改,这个更改底层调用的加密动态库来,原来RSA用的对称加密 ...
- SM2 (含SM3、SM4)国密算法工具QT版,彻底搞懂sm2算法的使用
网上有很多网友问算法SM2怎么使用?什么是压缩公钥和非压缩公钥?xB和yB这参数是什么?怎么使用SM2做加解密?如何签名和验签?有没有工具来验证下? 这里分享个自己用QT造的一个小工具,简单好用,同时 ...
- sm2 java 开源_SM2 国密算法被 Linux 内核社区接受
原标题:SM2 国密算法被 Linux 内核社区接受 来自公众号: OSC开源社区 10 月 25 日,有开发者发文称,SM2 国密算法终于被 Linux 内核社区接受了.该作者表示,SM2 的补丁已 ...
最新文章
- keepalive 原理讲解
- ubuntu 12.04 LTS u盘安装
- Django—路由层,视图层
- 运用递归将两个链表进行连接
- CompletableFuture详解~join与get的区别
- python去掉空白行_python去掉空白行的多种实现代码
- [复变函数]第17堂课 5 解析函数的 Laurent 展式与孤立奇点 5. 1 解析函数的 Laurent 展式...
- sqlserver2008R2下载安装教程
- Twitter数据抓取
- 为什么 30 岁的工程师容易跳槽?
- “电”亮数字生活,阿里云助力南方电网智能调度
- 致敬科比,JS手写贪吃蛇
- cdr三角形转化为圆角_cdr怎么把直角变成圆角
- 傅里叶变换中采样频率(fs)的解读
- 嵌入式软件工程师待遇如何?嵌入式开发越老越吃香吗?
- Python实现excel重复值计数/记录小白第一次学习
- 数字化模型是工业PaaS平台的核心
- python生产实战 python 闭包之庖丁解牛篇
- 最棒的游戏制作软件VAM Virt A mate汉化 优秀豪华 整合
- 如何把一个手机的通知短信转发到另外一个手机上?恶搞大王手机通知转发器