美文网首页前端必备HTTP技能
HTTPS诞生原因(三)

HTTPS诞生原因(三)

作者: SunshineBrother | 来源:发表于2018-06-22 17:26 被阅读43次

本片文章基于三点介绍

  • 1、HTTP的缺点
  • 2、HTTPS = HTTP + 加密 + 认证 + 完整性保护
  • 3、身份认证的方法
    • 1、BASIC认证
    • 2、DIGEST认证
    • 3、SSL客户端认证
    • 4、表单认证

1、HTTP的缺点

HTTP的不足主要有三个方面

  • 1、通讯使用明文,内容会被窃听
  • 2、不验证通讯方的身份,因此有可能遭遇伪装
  • 3、无法证明报文的完整行,所以可能被篡改

1.1、通讯使用明文,内容会被窃听

由于HTTP本身是不具备加密的功能的,所以也无法做到对通讯整体进行加密,即HTTP报文是使用明文方式发送的

按照TCP/IP协议族的工作机制,通讯内容在所有的通讯线路上都有可能遭到窥视。

所谓的互联网使用连通到全世界的网络组成的,所以通讯过程不是私有的,是完全公开的,即使我们对报文内容进行加密处理,也只能让别人无法简单的破解报文信息,但是外人还是能够截取加密的信息

窃听相同段上的通讯并不是难事,网上有很多的抓包工具,像sniffer,packet Capture,Wireshark等等

1.2、不验证通讯方的身份,因此有可能遭遇伪装

HTTP协议中的请求和响应不会对通讯进行确认的,也就是任何人都可以发出请求。

84ECC05F-7427-4F4F-9247-D82F27ACA845.png

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

  • 1、无法确认请求发送至目标的web服务器是否是按真实意图返回响应的那台服务器
  • 2、无法确定响应返回到的客户端是否是真实的客户端
  • 3、无法确定通讯对方是否具备访问权限
  • 4、无法确定请求来自何方,出自谁
  • 5、即使是无意义的请求也会照单全收,无法阻止海量的请求下的Dos攻击

1.3、无法证明报文的完整行,所以可能被篡改

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

AE81B212-33C6-435D-B0AA-B8396A902FDD.png

像这样请求或者响应在传输途中,遭到攻击者拦截并篡改内容的攻击称为为中间人攻击

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

为了应对HTTP上面的不足,HTTPS应运而生。

HTTP加上加密处理和认证以及完整性保护后即使HTTPS。

HTTPS通讯历程

HTTPS并非是应用层的一种新的协议,只是HTTP通讯接口部分用了SSL和TLS协议代替而已。通常HTTP直接和TCP通讯,当使用SSL时,则变成了HTTP先与SSL通讯,再有SSL和TCP通讯HTTPS其实就是添加了SSL协议的外壳的HTTP

SSL是独立于HTTP的协议,是采用的一种非非对称式加密的处理方式,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可以配合SSL协议使用,可以说SSL是当今世界上应用最为广泛的网络安全技术

2.1、加密

常用的加密方式主要有

  • 1、对称式加密:对称式加密可以叫做共享密钥加密,或者堆成密钥加密,是加密解密同用一个密钥的方式
  • 2、非对称式加密:非对称式加密也叫做公开密钥加密,使用一对非对称的密钥,一把公钥,一把私钥

以对称式加密的方式加密时,必须要将密钥发送给对方。可是究竟怎样才能安全的转交呢?在互联网上转发密钥的时候,如果通讯被监听,那么密钥就有可能落入到攻击者的手中,同时也就失去了加密的意义。

密钥发送问题

非对称式加密能够很好的解决这一个问题,使用非对称式加密的时候,发送密文的一方使用对方的公开密钥进行加密处理,对方收到加密信息后,使用私钥解密。但是这个方式也存在一个非常大的问题,就是要想要根据密文和公开密钥恢复到信息原文式异常困难的,因为解密过程就是对离散对数进行求值的,这是非常消耗性能的

因此,为了照顾安全性和性能问题,HTTPS采用了混合加密机制在交换密钥环节使用公开加密方式,之后的建立通讯交换报文阶段使用对称加密方式

混合加密机制

2.2、 认证

遗憾的是公开密钥加密还有一个问题,就是无法证明公开密钥本身就是货真价实的公开密钥。比如,我们怎么证明收到的公开密钥就是原来预想的那台服务器发出的密钥,而不是公开密钥在传输的过程中真正的公开密钥已经被攻击者替换掉了。

为了解决这个问题,可以使用数字证书认证机构和其他相关机关颁布的公开密钥证书。数字正式认证机构处于客户端与服务器双方都可信赖的第三方机构的立场。

数字证书颁布以及使用流程

  • 1、服务器的运营人员向数字认证机构提出公开密钥的申请
  • 2、数字人数认证机构在判明提出申请者的身份以后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将公开密钥放入公钥证书后绑定在一起
  • 3、服务器会将这个由数字证书认证机构颁发的公钥证书发送给客户端,进行公开密钥加密方式通讯。
  • 4、接到证书的客户端可以使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事,一是认证服务器的公开密钥的是真实有效的数字认证机构,二是服务器公开密钥是指的信赖的
数字证书认证

为什么不一直使用HTTPS

  • 1、HTTPS在使用SSL的时候,他的处理速度会变慢,HTTPS比HTTP要慢2到100倍。
  • 2、使用数字证书的时候需要购买

SSL的慢分为两种

  • 1、通信忙
  • 2、消耗大量的CPU资源,导致处理速度变慢
SSL

因此,如果是非敏感信息则使用HTTP通信,只有包含了个人信息等敏感数据时,才利用HTTPS加密通信

HTTP认证方式

HTTP认证方式

  • 1、BASIC认证(基本认证)
  • 2、DIGEST认证(摘要认证)
  • 3、SSL客户端认证
  • 4、表单认证

BASIC认证(基本认证)

BASIC认证是从HTTP/1.0定义的一种认证方式,但是BASIC认证使用上不够灵活,且安全等级较低,因此不经常使用。

BASIC认证步骤

BASIC认证步骤

  • 1、当请求的资源需要BASIC认证的时,服务器会随状态码401返回带WWW-Authenicate首部字段的响应。该字段内包含认证的方式(BASIC)以及Request-URL安全与字符串
  • 2、接收到状态码401的客户端为了通过BASIC认证,需要将用户ID和密码发给服务器
  • 3、接收到包含首部字段Authorization请求的服务器,会对认证的信息的正确性进行验证,验证通过,返回200

DIGEST认证(摘要认证)

DIGEST认证(摘要认证)即咨询响应式,一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的咨询码计算生成响应码,最后响应码返回给对方进行认证

DIGEST认证(摘要认证

SSL客户端认证

步骤

  • 1、接收到需要认证资源的请求,服务器会放数字证书报文,要求客户端提供客户端证书
  • 2、用户选择将发送的客户端证书后,客户端会把客户端证书信息以Client Certificate报文方式发送给服务器
  • 3、服务器验证客户端证书通过后方可领取证书内客户端的公开密钥,然后进行HTTPS加密通信

表单认证

HTTP协议标准中提供的BASIC认证和DIGEST认证几乎不怎么使用,SSL客户端认证虽然具有较高的安全等级,但是因为导入和费用问题,普及不怎么广泛。因此出现了表单认证。

表单认证

表单认证的基础思想就是用户登录,然后根据用户的ID和密码生成token

文章参考自《图解HTTP》

相关文章

网友评论

    本文标题:HTTPS诞生原因(三)

    本文链接:https://www.haomeiwen.com/subject/kkukyftx.html