自己动手 | 从零开始制作密评工具(一)

admin 2024年1月29日20:36:44评论16 views字数 1813阅读6分2秒阅读模式

自己动手 | 从零开始制作密评工具(一)

编者按:为积极贯彻落实《密码法》,秦商密隆重推出《深入浅出》和《自己动手》原创技术科普系列,旨在普及商用密码知识,培养密码应用创新人才。《深入浅出》系列主要以图文并茂的形式介绍商用密码的算法、协议、技术及行业应用方案。《自己动手》系列则偏向于实践,尝试手把手介绍如何开发密评工具以辅助开展商用密码应用安全性评估。本系列文章旨在抛砖引玉,如有不足之处,请各位专家不吝珠玉!

Why:为什么要制作证书链/证书合规性验证工具?

学习密评能力验证题目答案注解的时候,发现专家老师使用了我所没有的数字证书、证书链合规性与真实性性验证工具。且Windows自带的加密扩展外壳并不支持对于SM2证书的签名验证、链验证等。
自己动手 | 从零开始制作密评工具(一)
看到这样的现实后,我认为我所在的部门也需要拥有对数字证书、证书链进行验证、以及应对密码试题的计算能力;面对如此差距和潜在的生存威胁,就该:“遇山开路,遇河架桥”了。   
自己动手 | 从零开始制作密评工具(一)

What:我们需要怎样的证书类工具?

一.证书验证工具  

1.字段编码、格式合规性检验  

应当能够依据《GM/T 0015-2012 基于SM2密码算法的数字证书格式》中对于证书的版本号、序列号、签名算法、起止日期、时间编码、颁发机构密钥标识符扩展项等要求对证书本体的合规性进行检验;

2.由上级CA证书能够验证下级CA证书的真实性  

应当像能力验证试题中那样,能够使用上级证书的公钥验证下级证书的签名值;

3.对于证书状态的线上校验  

应能够实现对CRL的在线请求-核验、OCSP在线请求-核验。   
自己动手 | 从零开始制作密评工具(一)

二.证书链验证工具  

1.实现思路  

(1)能够把p7b链拆成单个的证书,并对每张证书的真实性进行逐级验证;
(2)拆分出来的证书可以进入证书验证工具,通过在线CRL与OCSP验证的方式对整个链的真实性、合规性进行校验。
自己动手 | 从零开始制作密评工具(一)    

How:如何实现提出的需求?  

一.证书链验证工具  

以.p7b为后缀的证书链往往以3种方式存在:

1.由链上每一个证书的PEM编码上下拼接而成的证书链  

自己动手 | 从零开始制作密评工具(一)
处理这种PEM文本的证书链非常简单,只需要使用正则匹配表达式将其按顺序拆分开来分别存储,并使用对应的算法验证模块对每个证书的签名、基本证书域、以及上级证书的公钥进行验证;根证书真实性验证可将拆分出来的根证书放进证书验证工具的在线OCSP和CRL模块中进行核验。

2.由一整块-----BEGIN PKCS7----- .... -----END PKCS7-----构成的证书链:   

自己动手 | 从零开始制作密评工具(一)
对于这种证书链,本地脚本的解决方案可以是自动化执行cmd命令:
openssl pkcs7 -print_certs -in [input.p7b] -out [outpute.cer]
将其转变成类似于(1.)中的“由每个独立证书的PEM编码拼接而成”的PEM链:   
自己动手 | 从零开始制作密评工具(一)
之后的处理方式和(1.)一样。
线上服务可以在服务器端部署Openssl,对于用户提交的PEM文件进行异步处理,后将验证结果返回给用户。

3.证书链以二进制的方式存储  

如下,打开是乱码:   
自己动手 | 从零开始制作密评工具(一)
对于这种证书链,本地脚本的解决方案可以是自动化执行cmd命令:
openssl base64 -in [input.p7b] -out [output.p7b]
即可转换成为情况(2.):由一整块-----BEGIN PKCS7----- .... -----END PKCS7-----构成的证书链。
验证:将从p7b中编码、切分出来的证书命名、暂存,同时将每个证书的名称存储在一个列表中,通过for循环调用SM2验签模块与证书名称,实现对证书链上证书签名的正序校验、反序校验(大部分证书链根CA位于首位,但是有些证书链证书是反着排的,在安全许可的范围内偷懒,可以用验证模块正反序校验2遍,只要其中一种顺序校验成功,那么我们认为证书链关系真实可信)。接下来只需要将各级数字证书放入“AGT-1数字证书合规性检验模块”通过在线CRL请求,即可核查整个证书链的真实性。下面是对谷歌“AGT-1数字证书合规性检验模块”对AI的证书的分析,以及“AGT-1证书链验证模块”对于二进制SM2证书链的校验:   
自己动手 | 从零开始制作密评工具(一)
自己动手 | 从零开始制作密评工具(一)
关于“AGT-1数字证书合规性检验模块”,将在下一章:[自己动手 | 从零开始制作密评工具(二)]AGT-1(AnMeng GM Tools - 1) P7B证书链处理思路及数字证书合规性验证工具中出现。

作者:Trevor

编辑:  张茜

审核:  赵锋   自己动手 | 从零开始制作密评工具(一)自己动手 | 从零开始制作密评工具(一)自己动手 | 从零开始制作密评工具(一)

原文始发于微信公众号(网络安全等保与关保):自己动手 | 从零开始制作密评工具(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月29日20:36:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   自己动手 | 从零开始制作密评工具(一)http://cn-sec.com/archives/2440975.html

发表评论

匿名网友 填写信息