数字证书、数字签名、HTTPS、对称加密、非对称加密

  • Post author:
  • Post category:其他


一、对称加密和非对称加密

(一)对称密钥:AES

A与B之间通信:

A发消息给B时要先用密钥给消息明文加密,然后将密文发给B,B用密钥解密后得到消息明文;

同样,B发消息给A时也要先用密钥给消息明文加密,然后发给A,A用密钥解密后得到消息明文。

(二)非对称密钥:RSA

1、非对称加密的原理:

A与B之间通信:

A发消息给B时要先用B的公钥对消息明文加密,然后将密文发给B,B收到后用自己的私钥解密得到消息明文;

同样,B发消息给A时也要先用A的公钥给消息明文加密,然后发给A,A用自己的私钥解密后得到消息明文。

2、总结:

(1)非对称密钥算法中,A有一对公私钥,B有一对公私钥,A的公钥和B的公钥值不同,但都是公开的,私钥由A和B各自保存,是非公开的。

(2)用A的公钥加密的密文只有A的私钥才能解密;用A的私钥加密的密文也只有A的公钥才可以解密。这才是密钥“成对”的表现。

(3)非对称密钥算法中,甲方给乙方发消息时,有两种加密方式:

一种是使用对方的公钥对消息进行加密,然后由对方用对方的私钥解密,这个通常是用于密钥协商;

另一种是使用自己的私钥对消息进行加密,然后由对方用自己的公钥解密,这个通常是用于数字签名。

3、非对称加密的应用场景:

(一)客户端与服务器密钥协商的过程(采用RSA算法非对称加密):

(1)客户端生成一个随机密钥,用服务器的公钥加密后发给服务器;

(2)服务器拿到密钥密文后用自己的私钥进行解密,获得随机密钥的明文。

(二)数字签名

1、数字证书包括证书序列号、证书持有者名称、证书颁发者名称、证书有效期、证书持有者公钥、证书颁发者数字签名。数字签名是数字证书的一部分,数字证书是由证书颁发机构颁CA发给某组织的证书,用于表示真实性,可以抗抵赖。

CA机构可能有1-4级,即CA2的证书是由CA1颁发的,CA3的证书是由CA2颁发的,以此类推。。

假如某组织向CA4申请数字证书,技术流程大致如下:

(1)组织A将自己公司信息info发给CA4;

(2)CA4对info信息生成一个MD5值,并使用CA4的私钥对此MD5值进行加密,加密的过程就是数字签名的过程;

2、数字签名验签的背景:

验签的过程是由客户端向服务器发起的,一般是客户端在向服务器发起http 请求之前需要验证它即将要访问的服务器是不是真实的服务器本尊,简单来说就是想看一下它是不是假冒的(比如钓鱼网站)。

3、数字签名验签的过程:

(1)服务器把数字证书发给客户端;

(2)客户端拿到数字证书后拿出数字签名,用服务器的公钥对数字签名进行解密,得到数字签名前的明文即MD5值;

(3)客户端对info信息自己生成一个MD5值,将自己生成的MD5值与解密得到的MD5值进行比对校验,相同则通过数字签名验证,否则不通过。

二、HTTPS和HTTP的区别

先说HTTPS。以下是客户端和服务器间进行HTTPS通信的全部准备流程:

(1)数字签名验签:由客户端发起对服务器的验签,确定此服务器是否为真实的服务器。

(2)密钥协商确定报文加密的AES密钥:验签通过后客户端和服务器开始通过非对称加密算法RSA进行密钥协商,协商出用于对后期HTTP请求和返回包中的报文进行对称加密的AES密钥。

(3)客户端向服务器发起HTTP请求,开始通信。

而HTTP则没有以上的(1)和(2),直接开始(3),并且服务器和客户端进行HTTP通信时没有用到AES密钥,HTTP请求和返回包中的报文是明文传输。



版权声明:本文为lynnez_dd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。