详解HTTPS原理

一、概念

协议

1、HTTP 协议(HyperText Transfer Protocol):超文本传输协议,是客户端与服务器之间的通信协议 。

2、HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 协议,SSL的作用就是利用多种加密算法对HTTP进行加密,保证客户端和服务器能够安全的进行通讯。

加密算法

1、对称加密

对称加密指加密和解密使用相同密钥的加密算法。它的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。

常见算法:DES、AES等

2、非对称加密

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。它的特点是算法强度复杂、安全性高。但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

常见算法:RSA、DSA等

二、HTTPS

详解HTTPS原理_第1张图片
http请求流程

如上图所示,HTTP请求过程中,客户端与服务器之间没有任何身份确认的过程。服务器只要收到请求,都会给予回应,因此这传输的过程中,数据很容易被黑客窃听和篡改。因此, HTTP 传输面临的风险有:
(1) 窃听风险:黑客可以获知通信内容。
(2) 篡改风险:黑客可以修改通信内容。
(3) 冒充风险:黑客可以冒充他人身份参与通信。

那么HTTPS是如何保证请求的安全呢?

如果利用对称加密,双方拥有相同的密钥,信息得到安全传输,但此种方式也存在着明显的缺点,就是一旦公钥被泄漏了,那么服务器的安全就无法得到保障。

如果利用非对称加密,客户端用公钥对请求内容加密,服务器使用私钥对内容解密,这样即使公钥泄漏出去,也不会影响服务器的安全。但是,由于非对称加密算法的复杂度,解密的过程需要消耗较多的时间,这样子会影响到用户体验。

因此,https取其精华,弃其糟粕,把两者的优点结合起来。https协议在通信的过程中,会先进行下图所示的握手,第1-5步的过程是利用非对称加密算法,把客户端生成的秘钥传到服务器,服务器利用私钥机密,得到客户端生成的密钥。然后双方再利用这个秘钥对数据传输进行对称加密。这样子,既保证了传输过程的安全,又保证了数据传输的效率。接下来对这个过程进行详细的分析:

详解HTTPS原理_第2张图片
https请求流程

(1)客户端先向服务器发出加密通信的请求,这一步被叫做ClientHello请求;
(2)图中第二步的crt是服务器从证书颁发机构申请的crt证书,证书包含证书的颁发机构、有效期、公钥、签名等相关信息。注意,证书中不包含私钥,私钥只存在服务器中
(3)服务器收到客户端请求后,向客户端发出回应,这叫做SeverHello请求,在这里,服务器会将证书传到客户端;
(4)客户端收到响应后,会对证书进行验证,如果证书无效,则会发出相应的警告,如果证书是有效的,客户端会生成一个随机的秘钥;
(5)客户端利用证书的公钥进行加密,把上一步生成的随机秘钥传输到服务器;
(6)服务器利用对应的私钥进行解密,获取客户端生成的随机密钥;
(7)服务器利用随机密钥进行加密,把数据传输给客户端;
(8)客户端利用随机密钥进行解密,获取响应的数据。

三、总结

综上所述,相比 HTTP 协议,HTTPS 协议增加了很多握手、加密解密等流程,虽然过程很复杂,但其可以保证数据传输的安全。所以在这个互联网膨胀的时代,其中隐藏着各种看不见的危机,为了保证数据的安全,维护网络稳定,建议大家多多推广HTTPS。

你可能感兴趣的:(详解HTTPS原理)