关于“双证书”
发布日期:2020-09-28相信了解国密应用的朋友都听说过双证书。那么这个双证书到底是怎么回事呢?今天我们详细聊一聊。
一、什么是双证书?
首先我们来明确一下双证书到底指的是什么,先来看国家密码管理局颁布的《GMT 0024-2014 SSL VPN 技术规范》(以下称“技术规范”)中有关于双证书的描述。在5.2.2章节里就说明了服务端双证书的性质和作用。
5.2.2 服务端密钥
服务端密钥为非对称密码算法的密钥对,包括签名密钥对和加密密钥对,其中签名密钥对有VPN自身密码模块产生,加密密钥对应通过CA认证中心向KMC申请,用于握手过程中服务端身份鉴别和预主密钥的协商。
这里需要解释说明一下,KMC: key management center 是密钥管理中心的简称。
其实不单单是服务端用到了双证书,在客户端的秘钥也是采用双证书体系,见“技术规范”的5.2.3。
5.2.3 客户端密钥
客户端密钥为非对称密码算法的密钥对,包括签名密钥对和加密密钥对,其中签名密钥对由VPN自身密码模块产生,加密密钥对应通过CA认证中心向KMC申请,用于握手过程中客户端身份鉴别和预主密钥的协商。
我们在之前的文章《关于国密https的那些事》里面就介绍了使用ECC-SM4-SM3套件握手的秘钥交换过程中有服务端的双证书参与。而在另一个加密套件ECDHE-SM4-SM3中就需要客户端双证书的参与,详细见《GMT 0009-2012SM2 密码算法使用规范》的9.6秘钥协商版块。
二、国密双证书和传统单证书区别在哪里?
了解完双证证书作用。我们再来看看国密的双证书和传统的单证书有什么区别。
熟悉PKI的人都知道,证书有加密和签名的功能。证书的公钥用来加密,对应的私钥用来解密。证书的私钥用来签名,公钥用来验证签名(说到这里或许有童鞋就问了,我用私钥加密,公钥用来解密不可以么?我们反向思考一下,既然公钥是公开的,私钥加密的产生的密文,别人都可以拿你的公钥来解密了,那这样的加密还有意义吗?)。
言归正传,国密的双证书体系和传统的单证书,最大的区别就是将单证书的的加密和签名功能一分为二了----加密证书只用来进行加密,签名证书只用来签名。至于这样做的优劣势就不详细展开了,仁者见仁,智者见智。上升到哲学的角度来说就是凡是都有两面性。
三、如何辨别加密证书和签名证书?
接来我们要知道加密证书和签名证书有什么区别,我们才能区分哪个是加密证书,哪个是签名证书。
答案很简单,那就是看证书里面的扩展项--秘钥用法(KeyUsage)这一项。在《GMT 0015-2012 基于SM2密码算法的数字证书格式》协议5.2.4.2.2中就说明了证书的各种秘钥用法,见下图:
现在相信你很快能分辨出下面的图片中哪个是加密证书,哪个是签名证书了~
秋天的第一枚彩蛋:
我们再补充一个很多人容易和双证书弄混的一个概念--双向认证:
之前在论坛里就看到有人问,双证书是不是指的就是双向认证。其实这两个是完全不同的概念。
双向认证是指客户端对服务端证书进行认证的同时,服务端对客户端的身份也进行认证。通常很多情况下浏览器会对服务端证书是否可信进行验证。而服务端对客户端的身份是不做限制的,如我们的常用的购物网站,视频网站等。无论你用手机还是用电脑只要输入正确的网址都可以正常访问。但是有些特殊的场景,为了安全性,服务端会鉴别客户端的身份,这时候就需要在双方握手的过程中,客户端需要将证明自己身份的证书传递给服务端。如有些VPN设备,或政务网站需要用key才能进行登录,这很可能就启用了双向认证。
好了,关于双证书就聊这么多。在这双节来临之际,也祝大家成双成对,双喜临门,名利双收,盖世无双!
最新资讯
Poloniex加密货币交换泄露数据,建议数据安全从SSL证书做起
标签推荐:数字证书申请 | 域名ssl证书 | https证书申请| 数字证书过期| 网站证书安装| 可靠的ssl证书| 小程序证书| ca认证电子签名| 微软代码签名| android数字签名| java代码签名| ssl证书部署| 时间戳技术| 电子签名技术| https证书配置| 谷歌浏览器证书| tomcat数字证书| openssl漏洞| ECC加密算法| 服务器SSL证书| 链路层劫持| 物联网安全技术| 火狐插件签名证书