数字证书

0. 简介

简单介绍一下使用加密的通信流程,以及数字证书的作用。

1. 一般的通信过程

1.1 通信过程1

双方采用非对称加密算法RSA进行通信加密:

“客户”有公钥

“服务器”有私钥


“客户”不能确定对方是不是“服务器”

➡“客户”需要判断对方是否有私钥

1.2 通信过程2

“客户”和“服务器”双方采用非对称加密算法RSA加密的通信过程中有“黑客”时:

由于黑客没有“客户”手中公钥配对的私钥进行通信,从而导致“客户”不能对其发来的密文进行公钥解密,于是“客户”得知对方不是“服务器”。

1.3 通信过程3

“客户”和“服务器”双方在后续的通信仍旧采用非对称加密算法RSA加密进行通信吗?

NO!NO!NO!

一方面,公钥任何人都可以拥有,一旦“服务器”用私钥加密密文被其他人得到后,用公钥一解密,那么信息就泄露了!

另一方面,由于非对称加密算法加密和解密的过程都比对称加密算法耗时,因此后续的通信过程双方进行协商,采取对称加密算法进行:

1.4 通信过程4

“客户”和“服务器”双方后续用对称加密算法进行通信的过程:

此处非对称加密算法RSA所起到的作用有:

  • “客户”通过公钥判断对方是否有私钥,进而判断对方是不是“服务器”;

  • 再使用该RSA算法进行对称加密算法和密钥的协商。

1.5 通信过程4中的问题

通信过程4看起来很安全了,但“客户”的公钥从哪得到的呢?

2. 具有数字证书的通信

2.1 数字签名

咱们再来考虑另一个问题。若“客户”不在乎自己的隐私信息被其他人知道,只在乎“服务器”给出的回复是真实可信的,那么“黑客”在“服务器”回复信息的时候修改了信息的内容,这时“服务器”和“客户”又该确定“黑客”有没有修改消息内容呢?

扩充一下,只要存在通信,则会存在一些公开信息的传输,那么要怎们确保传输的内容没有被其他人篡改呢?

由于Hash运算可以将任意长的输入压缩成固定的长度,即哈希值。

  1. Hash函数具有单向性(抗原像攻击性):从哈希值逆向算出原文是不现实的
  2. Hash运算具有抗碰撞攻击性:两个哈希值相同,其输入数据一定不同
  3. Hash值不表达任何关于输入数据的信息

于是,对原内容进行Hash运算得到哈希值,称为“数字摘要(Digest)”,再用发送方自己的私钥进行加密得到“数字签名(Signature)”,再将原内容和该“数字签名”发送出去就可以了。

流程如下:

2.2 数字签名的漏洞

但“黑客”还在努力呀!

他从信息传输中截获了发送方A的信息,再自己伪造一份发给接收方B,再告诉接收方B公钥或使用一些手段替换掉了发送方A的公钥,那么接收方B得到的验证结果不论证明说都是不可靠的。

那么现在又陷入了通信过程4中的问题——这个公钥究竟是不是可靠的?是不是通信双方要采用的那个公钥?

2.3 数字证书

那么CA中心发的这个数字证书有什么能耐可以保证通信的信息安全呢???
数字证书是一种电子文档,是由CA中心所颁发的一种较为权威与公正的证书。比较常用的版本是TUTrec.x.509V3,由国际电信联盟制定。

数字证书里有哪些内容呢?

  • 证书序列号
  • 证书的发布机构
  • 证书的有效期
  • 证书所有者(Subject)
  • 公钥
  • 签名所使用的算法
  • 指纹以及指纹算法 ➡ 保证完整性
  • ……

数字证书有什么作用呢?

  1. 安全性。用户申请证书时会有两份不同证书,分别用于工作电脑以及用于验证用户的信息交互,若所使用电脑不同,用户就需重新获取用于验证用户所使用电脑的证书,而无法进行备份,这样即使他人窃取了证书,也无法获取用户的账户信息,保障了账户信息。
  2. 唯一性。数字证书依用户身份不同给予其相应的访问权限,若换电脑进行账户登录,而用户无证书备份,其是无法实施操作的,只能查看账户信息,数字证书就犹如“钥匙”一般,所谓“一把钥匙只能开一把锁”,就是其唯一性的体现。
  3. 便利性。用户可即时申请、开通并使用数字证书,且可依用户需求选择相应的数字证书保障技术。用户不需要掌握加密技术或原理,就能够直接通过数字证书来进行安全防护,十分便捷高效。数字证书是由CA中心所签发的,CA中心是一个具权威性、依赖度极高的第三方,其资格证书经国家颁发,可有效保障网络数据信息的安全性,使数据信息处国家掌握当中。用户在浏览网络数据信息或进行网上交易时,利用数字证书可保障信息传输及交易的安全性。

注意到数字证书中有一个指纹和指纹算法,那是什么东西呢?

你向CA中心申请了证书,CA中心将证书发送给你,那CA中心怎么保证这证书没有被别人改动过呢?于是,CA中心需要采用数字签名的操作,也就是这里的指纹(Hash值),所以CA中心根据指纹算法(Hash算法)计算整个证书的指纹(哈希值),然后将其与证书一起发送给你。你接收后进行验签,然后根据前面的2.1 数字签名中的内容就可以知道你的证书有没有被动过啦。

通信过程5

采用数字证书进行通信的流程:

从上面的通行流程可以看出,数字证书的主要作用为:

  1. 是否为受信任的权威机构发布?
  2. 是否被篡改?
  3. 是否是服务器发过来的?

通信过程5中的问题



文中的内容根据网络上其他博文整理而来。 关于数字证书的详细内容将在整理完《GM/T 0034-2014 基于SM2密码算法的证书认证系统密码及其相关安全技术规范》之后给出,链接为:[【简介】《GM/T 0034-2014 基于SM2密码算法的证书认证系统密码及其相关安全技术规范》](https://www.cnblogs.com/11sgXL/p/14979182.html)。



原文地址:https://www.cnblogs.com/11sgXL/p/13517660.html