https原理及流程 (https的原理动画)

HTTPS握手方法

加密

加密的大致种类:

不可逆加密。 比如 MD5、SHA、HMAC

小明将文件加密得到一串密码a,并把文件和密码a给小红,小红拿到文件之后使用同样的算法得到密码b,这样小红就可以直接对比密码a和密码b是否一致确认文件在传输过程中是否被篡改。

可逆加密

1) 对称加密。比如:AES、DES、3DES、IDEA、RC4、RC5、RC6

用同一个密码加密和解密

2) 非对称加密(就是公私钥)。比如:RSA、DSA、ECC

和对称加密相反不使用同一密钥。1. 加密(保证数据安全性)使用公钥加密,需使用私钥解密。 2.认证(用于身份判断)使用私钥签名,需使用公钥验证签名。

HTTPS的加密方式

混合加密

HTTPS通过非对称加密交换通信密钥,数据通信加密则是使用了对称加密,密钥即刚刚交换的密钥。为了保证在交换秘钥C过程中不被篡改,需要一个公证人来送来一把密钥(服务端的公钥A)对C进行加密,公证人即为CA机构颁发的证书,服务器使用CA证书明文和服务端公钥A经过hash算法得到hash串,使用CA私钥B加密hash串得到数字签名。当客户端拿到如上信息后先使用CA机构的公钥B(内置)验签。确认无误后使用公钥A加密对称加密使用的秘钥C给服务器,服务器使用自己的私钥A解密得到秘钥C,之后就可以使用C加密数据后进行通信了

TLS握手过程:

在http协议中,TCP三次握手成功后,浏览器会立即发送请求报文;但是https协议,它还需要另一个握手过程(TLS握手),在TCP上建立安全连接,之后才是收发报文。TLS握手的主要目的是使用非对称加密交换对称密钥,这个对称密钥是由三个随机数生成的。

http的工作原理是什么,https工作流程

1、客户端发出请求

支持的协议版本,比如TLS1.0版

一个客户端生成的随机数,稍后用于生成“会话密钥”

支持的密码套件(支持的加密方法)

2、服务器回应

确认使用的加密通信协议版本,比如TLS1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信

一个服务器生成的随机数,稍后用于生成“会话密钥”

确认使用的加密方法,比如RSA公钥加密

服务器证书

3、客户端回应

客户端收到服务器回应以后,开始走证书链逐级验证,确认证书的真实性,如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书可以过期,就会向访问者显示一个警告。

如果证书真实有效,从证书中拿出服务器公钥,向服务器发送下面三项信息:

一个用服务器公钥加密随机数(pre-master key),防止被*听窃**

编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送

客户端握手结束通知(Finished),表示客户端的握手阶段已经结束。这一项是把之前所有发送的数据做个摘要(hash值),再加密一下,供服务器校验。

4、服务器的最后回应

服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的“会话密钥”。

然后,向客户端最后发送下面信息:

编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送(Change Cipher Spec)

服务端握手结束通知(Finished),表示服务端的握手阶段已经结束。这一项是把之前所有发送的数据做个摘要(hash值),再加密一下,供客户端校验。