0
点赞
收藏
分享

微信扫一扫

简单趣味理解HTTPS为什么安全

雅典娜的棒槌 2022-01-31 阅读 60
httpshttpssl

文章目录


前言

我们了解 HTTP 后,那么必然就离不开对 HTTPS 的认识,他们可以说是我们必须认识的两兄弟了~~

一、为什么需要HTTPS?

我们在上一篇中介绍到了 HTTP 简介,了解什么是HTTP,他为了解决什么问题,那么这里的 HTTPS 是什么呢?是为了解决什么问题呢?

那么我们就要了解 HTTP 有什么缺点,因为 HTTPS 的出现就是为了解决这些缺点的。

那么 HTTP 有什么缺点呢?

  1. 首先是不加密,内容可能会被窃取
    我们的网络就像以往的电报一样,是很容易被截取到的,只需要收集网络上的数据包就可以了(抓包工具 wireshark )。因此可以对数据加密,一般有两种方式,一种是对通信线路加密(SSL / TLS) 或者 是对内容加密 (加密 HTTP报文)
  2. 不验证身份,因此可能会被伪装
    HTTP协议是没有办法确认请求和响应的,所以你不知道发给你响应的是否是真的服务器,同时服务器也没办法确认接收的请求是否是真的客户端。所以对于任何一方都存在伪装的可能性。因此对于这个问题,一般会使用 SSL 加密处理,同时还有证书来证明身份。
  3. 无法确认信息的完整性,所以可能会被篡改
    HTTP协议没有办法证明通信过程的报文完整性,这个报文可能中间被修改,缺少,添加都有可能。常用的是使用MD5 和 SHA-1等方法来验证

哈哈哈,发现有点像 TCP 和 UDP 之间。

二、HTTPS

HTTPS

其实HTTPS 也不是啥新鲜玩意,他不过是身披SSL外壳的HTTP,之前 HTTP 是直接和 TCL 通信, 而如今是先和 SSL 通信,再由 SSL 和 TCP 通信。

很自然又有了两个问题?

  1. 为什么 HTTPS 是安全的呢?
  2. HTTPS 如何保证安全?

为什么 HTTPS 是安全的?

那么为什么是安全的呢?首先我们说HTTP不安全主要是因为上面的三个问题。下面我们看个故事:

小文在河的一边,小默在河的另一边,他们每天都要传递互相写信,那么他们之间有同号通过一只信鸽来互相发送信息。理想的情况下是没有任何问题,小文把信息绑到信鸽上,信鸽送给小莫默,小默收到后以同样的方式会信给小文。

但是

突然小虎是黑帮的人,他知道小文和小默的通信,但是不确定具体是谁,他要挖出这两个人,原来小文和小默是间谍,他们小杰潜入了黑帮要打听里面的信息,小虎想抓住小默,没有打草惊蛇,想获取他们的通信的信息。这时候,小文和小默之前的通信方式可以说就是没有安全措施的 HTTP 通信。小虎一直通过截取信鸽来获取他们的通信内容。

后面

小文和小默发现他们的通信方式不安全,要是被别人截取了,就被人知道了。所以他们约定通信信息要以某种方式才能解读(就像小说中,需要火烤或者蘸水显示之类的)。好了,这时候信息就有了加密,小虎就算截取到,也解密不出来。这里就解决了我们是哪三个问题中的第一个和第三个!内容不加密,内容可能会被窃取和无法确认信息的完整性,所以可能会被篡改。而这种就叫做 对称秘钥加密。这时候小虎就获取不到了,因为他不知道如何解密。

但是

这里面又有一个问题了。小杰和小默是第一次通信,他们如何告知对方解密的方法呢?

所以又有了另外一种加密的方式!

  • 小问发送了没有带有任何信息的鸽子给小默。
  • 小默返回一个鸽子,携带有打开锁的盒子,但是保留密钥。
  • 小文将信息放到盒子里,把锁关上,并且把盒子发送给小默。
  • 小默接收到盒子,用密钥打开,然后阅读。

这样就解决了双方没有碰面无法确定秘钥的问题。也就做非对称秘钥加密。可以说盒子是公钥,而锁匙是私钥。

但是,小虎贼心不改,他截取了盒子,并且把这个盒子换为他的盒子。这时候小文如何确认盒子就是来自小默的呢?所以这时候他们对盒子签名,他们通过对盒子签名来辨识是否来自对方,但是这里又有了如果他们是第一次见面的如何确认这个其签名是对方的呢?所以他们请了一个很出名,方圆最出名最正直的人小法来签名,所有人都相信小法只为合法的人签名。在这里就解决了第二个问题:不验证身份,因此可能会被伪装,而小法也就是我们的认证机构,颁发证书的。

倒这里可以说小文和小默的通信是比较安全的了。

流程的过程可以看下图:
在这里插入图片描述
基本流程就是:

  1. 客户端发起请求,请求报文会携带客户端支持的SSL版本和加密组件列表,请求会连接诶到服务端的443端口。
  2. 服务端收到后,会从中选择双方都支持加密方式,同时返回证书。服务端保留私钥。
  3. 客户端收到后会验证证书的有效性,验证通过会进行下一步,反之断开。同时取出公开密钥。
  4. 接着客户端湖生成一个随机数(pre-master secret)。同时用服务端的 Hash算法计算握手信息。接着会用随机数加密握手信息和hash值。同时用公开密钥加密随机数和握手信息以及 hash值进行发送。
  5. 服务端收到用私钥解密出随机值,用随机值解密hash值,并且计算与自己发送的 握手信息的hash进行对比,确保握手信息没有被篡改。
  6. 同时服务端也会使用随机值加密发送握手信息以及 hash值到客户端进行验证。
  7. 双方都没有问题之后,就会使用随机值作为双方的秘钥,进行对称加密传输。

HTTP 和HTTPS又什么区别

  • HTTP的端口是 80, HTTPS 的是443
  • HTTP直接和TCP连接, HTTPS 会先进行SSL/TLS,然后SSL/TLS和TCP连接
  • HTTP 是明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好
  • HTTP不需要证书,而HTTPS 需要用到 CA (数字证书)要钱~
  • HTTP 比 HTTPS 响应更加的快,因为不需要要验证的,没那么耗费资源

常见问题


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

举报

相关推荐

0 条评论