应用层协议 --- HTTPS协议

       超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

1、HTTP缺点:

HTTP主要有这些不足,如下: 

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

       这些问题不仅在HTTP上出现,其他未加密的协议中也会存在这类问题。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

       HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

  1、HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

  2、HTTP是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

  3、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  4、HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

1.1、通信使用明文可能会被窃听

        由于HTTP本身不具备加密的功能,所以也无法做到对通信整体(使用HTTP协议通信的请求和响应的内容)进行加密。即,HTTP报文使用明文方式发送。

加密方式 描述
通信的加密 通信加密,通过SSL(Service Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全传输层协议)组合使用,加密HTTP的通信方式
内容的加密 HTTP报文里所含的内容进行加密处理。内容加密,要求客户端和服务器同时具备加密和解密机制。

1.2、不验证通信方的身份可能遭遇伪装

         HTTP协议中的请求和响应不会对通信方及进行确认。在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求。另外,服务器只要接收到请求,不管对方是谁都会返回一个响应。

存在以下各种隐患:

  • 无法确定请求发送至目标的Web服务器是否是按照真实意图返回响应的那台服务器。有可能是已伪装的Web服务器。
  • 无法确定响应返回到的客户端是否是按真实意图接收相应的那个客户端。有可能是已伪装的客户端。
  • 无法确定正在通信的对方是否具备访问权限。因为某些Web服务器上保存着重要的信息,只想发给特定用户通信的权限。
  • 无法判定请求是否来自何方、出自谁手。
  • 即使是无意义的请求也会全接受。无法阻止海量请求下的DoS攻击(Denial of Service,拒接服务攻击)。

       虽然使用HTTP下协议无法确定通信方,但如果使用SSL,不仅可以提供加密处理,还使用了一种被称为证书的手段,可用于确认通信方。

       证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。(伪造证书从技术角度来说是异常困难)所以,只要能够确认通信方(服务端或客户端)持有的证书,即可判断通信方的真实意图。

1.3、无法证明报文完整性可能已遭篡改

         所谓完整性是指信息的准确度。若无法证明其完整性,通常也就意味着无法判断信息是否准确。

         由于HTTP协议无法证明通信的报文完整性,在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉。请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击称为中间人攻击(Man-in-the-Middle attack,MITM)。

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

2.1、HTTP加上加密处理和认证以及完整性保护后及时HTTPS

         为了统一解决上述问题,需要在HTTP上加入加密处理和认证等机制。加密及认证机制的HTTP称为HTTPS(HTTP Secure)。

         浏览器访问HTTPS通信有效的Web网站时,浏览器的地址内会出现一个带锁的标记。

2.2、HTTPS是身披SSL外壳的HTTP

         HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL和TLS协议代替而已。通常,HTTP直接和TCP通信。当使用SSL是,则演变成先和SSL通信,再由SSL和TCP通信。在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。

         SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。目前SSL是当今世界上应用最为广泛的网络安全技术。

2.3、相互交换密钥的公开密钥加密技术

         SSL采用一种叫做公开密钥加密( Public-key cryptography )的加密处理方式。近代的加密方法中加密算法是公开的,而密钥却是保密的。通过这种方式得以保持加密方法的安全性。

         加密和解密都会用到密钥,没有密钥就无法对密码解密。如果密钥被攻击者获得,那加密也就失去了意义。

共享密钥加密

        加密和解密同用一个密钥的方式成为共享密钥加密(Common key crypto system),也被叫做对称密钥加密。但是,共享密钥方式加密时必须将密钥发送给对方,在互联网上转发密钥时,如果通信被监听密钥可能会落入攻击者之手,同时失去了加密的意义。

公开密钥加密

       公开密钥加密方式很好地解决了共享密钥加密的困难。公开密钥加密使用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥( public key )。私有密钥不能让其他任何人知道,而公开密钥而可以随意发布,任何人都可以获得。

       使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,则不必担心密钥被攻击者窃听而盗走。      

HTTPS采用混合加密机制

        HTTPS采用共享密钥机密和公开密钥加密两者并用的混合加密机制,若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥机密来通信。但是公开密钥加密和共享密钥加密相比,其处理速度要慢。

        充分利用二者各自优的优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。

2.4、证明公开密钥正确性的证书

        公开密钥加密方式存在一些问题,无法证明公开密钥本身就是货真价实的公开密钥。如,准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那天服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。

         为了解决上述问题,可以使用由数字证书认证机构(CA,Certificate Authority)和其相关机关办法的公开密钥证书。首先,服务器的运营人员向数字证书认证机构提出公开密钥的申请。数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。

         服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。公钥证书即直接叫做证书。

         接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便明确公开密钥是真实有效的,服务器的公开密钥是值得信赖的。

         但是,如何安全转交公开密钥仍是一件很困难的事,多数浏览器开发商会事先在内部植入常用认证机关的公开密钥。

3、HTTPS的安全通信机制

HTTPS的通信步骤:

步骤1:客户端通过发送 Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表(所使用的加                 密算法及密钥长度等)

步骤2:服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件。服务              器的加密组件内容是从接收到的客户端加密组件内筛选出来的

步骤3:之后的服务器发送Certificate报文。报文中包含公开密钥证书。

步骤4:最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。

步骤5:SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-                 master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密。

步骤6:接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在次报文之后的通信会采用Pre-master secret密               钥加密。

步骤7:客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否                能够正确解密该报文作为判定标准。

步骤8:服务器同样发送Change Cipher Spec报文。

步骤9:服务器同样发送Finished报文。

步骤10:服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。通信会受到SSL的保护,进行应用层协议的通                   信,及发送HTTP请求。

步骤11:应用层协议通信,即发送HTTP响应。

步骤12:最后由客户断开连接。断开连接时,发送close_notify报文。这步之后再发送TCP FIN报文来关闭与TCP通信。

4、HTTPS的优点

        尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

  (1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

  (2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传                    输过程中不被窃取、改变,确保数据的完整性。

  (3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

5、HTTPS的缺点

        虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

  (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

  (2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

  (3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

    (4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

  (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。

                最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

猜你喜欢

转载自blog.csdn.net/qq_30123335/article/details/83385539