深入理解加密、解密、数字签名(签名证书、加密证书)的组成和数字证书

深入理解加密、解密、数字签名(签名证书、加密证书)的组成和数字证书深入理解加密 解密 数字签名和数字证书 nbsp nbsp 随着电子商务的迅速发展 信息安全已成为焦点问题之一 尤其是网上支付和网络银行对信息安全的要求显得更为突出 为了能在因特网上开展安全的电子商务活动 公开密钥基础设施 PKI PublicKeyInf 逐步在国内外得到广泛应用 我们是否真的需要 PKI PKI 究竟有什么用 下面通过一个案例一步步地来剖析这个问题

深入理解加密、解密、数字签名和数字证书

 

2.推荐一本书籍,可以系统性学习: 《信息安全原理与实践》

 

      在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。

  公钥私钥的原则:

 

      非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。

 

基于公开密钥的加密过程

    比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

 

基于公开密钥的认证过程

  身份认证和加密就不同了,主要用来鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。

  还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件 签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴 别。整个身份认证的过程如下:

 

根证书

       根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。

 

总结

 

      根据非对称密码学的原理,每个证书持有人都有一对公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由证书持有人自己持有,并且必须妥善保管和注意保密。

      数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。  

    签名证书主要用于对用户信息进行签名,以保证信息的有效性和不可否认性;

    加密证书主要用于对用户传送信息进行加密,以保证信息的保密性和完整性。

    每个证书都包含一对密钥即签名公钥和签名私钥,加密公钥和加密私钥,将签名证书和加密证书的公钥公布于外。

    签名时,用签名证书的私钥进行签名,其他用户可以利用公布于外网的签名公钥对签名进行验证。

    加密时,用户B利用用户A公布于外网的加密公钥对信息进行加密传送给用户A,用户A利用自己的加密私钥对加密后的信

 

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里标准项。数字证书常见得对象标识有如下:

数字证书的解析主要是根据ASN.1语法和对象标识符来获取值,然后再是证书的有效期、颁发机构根证书、CRL吊销状态和使用目的等验证。RSA证书是标准算法大部分平台都可以解析,而SM2国密算法证书的解析就不是那么通用的。在Windows的一些较高版本打开SM2证书会显示“验证信任关系时,系统层上出现了一个错误”,这是因为Windows还不支持SM2算法证书验证,不能识别SM2签名的算法标识,因此需要自行验证SM2证书的签名数据,可基于BouncyCastle开源加密库来实现SM2验证签名,详细参见我的国密算法SM2证书制作。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221827.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午5:12
下一篇 2026年3月17日 下午5:12


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号