【web基础】深入理解http和https的区别

在对比这两者的区别之前咱们先来看一下http有哪些缺点

第一个缺点:http通信使用明文可能会被窃听。由于http本身不具备加密的功能,所以也无法做到对通信整体(使用http协议通信的请求和响应)的加密。也就是说http的报文使用的是明文发送。

为什么通信不加密是一个缺点呢? 因为按照TCP/IP协议族的工作机制,通信内容在所有的通信线路上都可能被窃听。
即使已经过加密处理的通信,也会被且听到通信内容,但经过加密之后,别人无法**报文信息的含义,但保温本身还是会被看到。

可以通过加密防止被窃听,加密的对象有两种:
第一种:对通信线路的加密
Http协议中没有加密机制,但可以通过和SSL(安全套接层,也是一种协议)或TLS(安全层传输协议)的组合使用,加密http的通信内容。而与SSL组合使用的http被称为https
第二种:内容的加密:对通信线路的加密
对http协议传输的内容本身加密,也就是http报文内所含的内容进行加密处理。不过要求客户端和服务器同时具备加密和解密机制。

第二个缺点: 不验证通信方的身份(无法确定客户端和服务端的真实性),因此有可能遭遇伪装

在http协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求,而服务端只要接收请求,不管是谁都会返回一个响应。
不验证通信方的身份存在一些隐患:
1,无法确定请求来自何方
2,无意义的请求也会照单全收,如DOS攻击
3,无法确认通信的对方是否具备访问权限

可以过查明通信方的证书来解决这个缺点。

SSL不仅提供加密处理,还使用了一种被称为证书的手段可用于确定对方

【web基础】深入理解http和https的区别

第三个缺点:无法证明报文的完整性(信息的准确性),所以有可能已遭篡改

接收到的内容可能有误:在请求或者响应送出之后对方接受之前这段时间之内,即时请求或响应的内容遭到篡改,也没办法知道。
【web基础】深入理解http和https的区别

在请求或响应在传输途中,遭遇攻击者拦截并篡改内容的攻击称为中间人攻击(MITM)

如何防止呢? 比较常用的是MD5和SHA-1等散列值校验,以及用来确认文件的数字签名方法。

但是这些方法也无法百分百保证结果正确,因为MD5本身被改写的话,用户是没有办法意识到的

为了防止种种弊端就必须使用HTTPS。

HTTPS到底是什么呢?HTTP+加密+认证=HTTPS

  • 吧添加了加密及认证机制的http称为https(http Secure),https并不是应用层的一种新协议,只是http通信接口部分用SSL和TLS协议代替了而已。
  • 通常http直接和tcp通信,当使用ssl时则会先和ssl通信,再由ssl和tcp通信,总之,https其实就是身披SSL协议这层外壳的http
  • 采用SSL后,http就有了https的加密,证书和完整性保护这些功能。SSL是独立于http的协议,不光是http,其他运行在应用层的SMTP和Telnet等协议课配合SSL协议使用,可以说SSL是世界上应用最广泛的网络安全技术。
    【web基础】深入理解http和https的区别

加密技术

加密的方式有两种:

第一种,共享**加密:加密和解密公用一个**的方式成为共享**加密,也叫做对称**加密
缺点:以这种方式加密时必须将**也发送给对方,但在互联网上转发**时,如果通信被监听那么**就可能被攻击者得到

第二种,使用两把**的公开**加密。公开**加密使用一堆非对称的**,一把叫做私有**,另一把叫做公开**。发送密文的一方使用对方的公开**进行加密处理,对方收到加密信息后,在使用自己私有的**进行解密。相对于共享**加密,其处理速度要慢一点
【web基础】深入理解http和https的区别

  • SSL采用的就是上面公开**加密的处理方式。(加密算法是公开的,而**是保密的)

  • 而HTTPS采用这两者混合加密机制,会充分利用两者各自的优势,将多种方法组合起来进行通信

那么何如证明公开**的正确性呢?

公开秘钥加密还有一些缺点,无法证明公开秘钥本身就是真正的**。(公开**在传输中被攻击者替换掉)
可以使用数字认证机构颁发的公开**证书

HTTPS存在的问题

当使用SSL时,会进行额外的通信,它的处理速度会变慢,慢2到100倍
【web基础】深入理解http和https的区别