一、对称加密和非对称加密
(一)对称密钥: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请求和返回包中的报文是明文传输。