浅析HTTPS协议

HTTPS主要解决了哪些问题

1、与服务器进行通信使用的是明文,内容可能会被窃听(HTTP协议本身并不具备加密功能,所以无法对请求和响应的内容进行加密)

2、使用HTTP协议的服务器与客户端都不会验证通信方的身份,可能遭遇伪装。(所谓不验证通信方身份的意思是,比如说服务端,在服务端接收到请求的时候,只要请求的信息正确,服务器并不会去验证,这个请求是否由其对应的客户端发出。并且,服务器会对请求立即做出一次响应,返回相应的数据)

3、使用HTTP协议的服务器与客户端都无法验证报文的完整性,所以在通信过程中,报文有可能会被篡改

参考图解HTTP( [日] 上野宣)

HTTPS协议

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 


从上图,可以理解为SSL是在HTTP之下加了一层安全层。但在实际的coding的过程中发现,HTTPS更像是一个HTTP协议的派生实现,因为只是它沿用了HTTP协议的基本命令(GET,POST)等,实际的通信方式和握手方式并没有相同的地方。

HTTPS的握手过程


几个要点

1.在①步时客户端发送协议格式和加密算法,而在②中,服务端从客户端支持的协议列表中选取合适的协议,完成商定过程。

2.第③步,客户端将验证证书的合法性,使得客户端可以判断服务端的身份。

3.第④步中,客户端通过公钥加密的方式把对称加密的密钥给到服务端。而在连接完成后,https其实是基于对称密钥来通信的。这个过程兼顾了初始通信的安全性以及之后通信的快速和低消耗。

4.通过两种加密算法的混合保护,在https通信阶段所有的数据都是加密的(http是明文文本协议)。

延伸

    HTTPS将非对称加密算法和对称加密算法的结合使用这种方式也被大量借鉴和参考使用。

    比如现在的网络游戏中,也会这么来进行游戏的安全控制。玩家连接登陆时会先采用SSL保护的socket链路。等待连接成功后,类似HTTPS,双方会约定一个对称加密的密钥。而在网络游戏的过程中,正是通过这个密钥,配合一个对称加密的算法(类似RC4这样的流式加密算法)来完成数据的加密保护的。而类似于RC4这样的对称加密算法速度其实非常快,并不会消耗很多的服务器计算资源。


猜你喜欢

转载自blog.csdn.net/narlon/article/details/81039963