加入收藏 | 设为首页 | 会员中心 | 我要投稿 吕梁站长网 (https://www.0358zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

HTTPS学习总结拿走不谢

发布时间:2018-10-25 11:13:42 所属栏目:教程 来源:谦言忘语
导读:写在前面 最近在看了解HTTP相关的一些知识,主要在看《图解HTTP》这本书,感觉还不错。所以结合自己的理解,做一下笔记。话说之前还大概过了下《HTTP权威指南》,感觉这本书内容过多了,不太适合新手看。新手还是建议看《图解HTTP》。 什么是HTTPS HTTPS(
副标题[/!--empirenews.page--]

写在前面

最近在看了解HTTP相关的一些知识,主要在看《图解HTTP》这本书,感觉还不错。所以结合自己的理解,做一下笔记。话说之前还大概过了下《HTTP权威指南》,感觉这本书内容过多了,不太适合新手看。新手还是建议看《图解HTTP》。

什么是HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

HTTPS在应用层(HTTP)和传输层(TCP)之间加入了一个安全层(SSL或TLS)。目的是为了解决HTTP协议的几个缺点:

  • 通信使用明文(不加密),内容可能会被窃听。
  • 无法证明报文的完整性,所以有可能早已篡改。
  • 不验证通信方的身份,因此有可能遭遇伪装。

HTTPS学习总结
HTTPS是位于安全层之上的HTTP,这个安全层位于TCP之上

HTTP的几个缺点

通信使用明文(不加密),内容可能会被窃听。

HTTP协议并没有对通信以及数据进行加密,是明文发送的。而我们使用HTTP请求的时候,数据会经过许多个路由器,代理之类的设备,在这个过程中,只要有人在某一个环节抓取了数据包(这个操作并不难),那这个请求的数据就会被看到。如果请求里面有一些重要的数据,比如银行卡账号、手机号、密码等信息,就会有泄露的风险。

无法证明报文的完整性,所以有可能早已篡改。

由于HTTP协议无法证明通信的报文完整性,因此,在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应遭到篡改,也没有办法获悉。

换句话说,没有任何办法确认,发出的请求/响应和接收到的请求/响应是相同的。

HTTPS学习总结

数据在传输过程中可能会遭到篡改

不验证通信方的身份,因此有可能遭遇伪装。

HTTP协议的实现本身非常简单,不论是谁发过来的请求都会返回响应,因此不确认通信方,会存在以下隐患:

  • 无法确认请求发送至目标的Web服务器是否是按真实意图返回响应的那台服务器。有可能是伪装的Web服务器。
  • 无法确认响应返回到的客户端是否是按真实意图接收响应的那个客户端,有可能是伪装的客户端。
  • 无法确定正在通信的对方是否具备访问权限,因为某些Web服务器上保存着重要的信息,只想发给特定用户通信的权限。
  • 无法判断请求是来自何方,出自何手。

即使是无意义的请求也会照单全收。无法阻止海量请求下的DoS攻击。

HTTP+加密+完整性保护+认证=HTTPS

我们来看下HTTPS是如何解决上面的问题的。

使用通信加密解决HTTP的明文发送问题

不同于HTTP的明文通信,HTTPS的通信是经过加密的。所以,就算有人在通信的过程中抓取到了数据包,因为没有密钥,所以无法知道数据包的具体内容,这样可以对传输的数据进行保护。

HTTPS学习总结
HTTPS中,网络传输的数据(请求和响应)都是经过加密的

HTTPS通信中,客户端和服务器都会有两个相同的通信密钥(设为密钥A),客户端发送请求时,会使用密钥A对请求进行加密成密文,服务器接收到请求之后,会使用密钥A对请求内容进行解密,得到客户端发送的明文,进行处理。响应过程也相似。

因此,在网络传输的过程中,因为数据被加密了,所以就算有人获取到了数据包,因为没有密钥A,所以就无法解密出数据包的内容,看到的是一堆乱码。

像这种加密和解密都是使用同一个密钥的加密方式叫做对称加密(也叫共享加密,共同拥有一个密钥)。使用密钥A加密的内容,只能用密钥A来解密,其他的密钥都无法解密。常用的对称加密算法有DES,3DES,AES。

还有一种加密方式叫非对称加密(也叫公开密钥加密)。非对称加密需要使用两个密钥,公开密钥(public key)和私有密钥(private key)。公开密钥是公开的,所有人都知道。私有密钥是保密的,除了自己,不让任何人知道。

  • 使用公开密钥加密的数据,只有使用私有密钥才能解密。
  • 使用私有密钥加密的数据,只有使用公开密钥才能解密。
  • 使用摘要验证保证数据完整性

HTTPS不仅仅使用了对称加密的方式,还使用了非对称加密的方式。事实上,HTTPS通信过程中,客户端会持有一个公钥,服务器会持有一个私钥。使用非对称加密可以完成好几个关键的操作。比如验证身份,比如协商通信的对称密钥,比如数据传输过程中加密摘要。

HTTPS学习总结
HTTPS中使用摘要算法来验证数据完整性,使用非对称密钥加解密摘要,使用对称密钥对数据进行加解密

如上图所示,在请求和响应过程中,除了加密后的数据,还会发送一个报文摘要,通过这个摘要,可以验证数据是否被篡改。

拿响应为例,

  • 服务器会将明文的响应用摘要算法计算摘要,跟数据一起发送给客户端。
  • 客户端将接收到的响应数据解密出来后,计算摘要。

然后客户端会将自己计算出来的摘要跟服务器发送过来的摘要进行对比,如果两个是相同的,那么证明服务器发出的响应数据跟客户端收到的响应数据是相同的。也就是数据是完整的,没有丢失,也没有遭到篡改。

但是这里的前提是,服务器发过来的摘要没有被篡改,如果有人在篡改了数据之后,连摘要也改了,那就有点坑了。所以HTTTPS会使用非对称加密对摘要进行加密,防止摘要被篡改。

  • 服务器会将明文的响应用摘要算法计算摘要。
  • 将摘要使用私钥进行加密,跟数据一起发送给客户端。
  • 客户端将接收到的响应数据解密出来后,计算摘要。
  • 客户端将接收到的摘要使用公钥进行解密。

(编辑:吕梁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读