HTTPS

来源:互联网 发布:儿童桌面软件 编辑:程序博客网 时间:2024/05/16 19:51

在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效地防止这些问题。

1、HTTP缺点

事物皆有两面,HTTP也有其不足之处
    1)通信使用明文(不加密),内容可能会被窃听;
    2)不验证通信方的身份,因此有可能遭遇伪装;
    3)无法证明报文的完整性,所以有可能已遭篡改。
这些问题不仅在HTTP上出现,其他未加密的协议中也会存在这类问题

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

  1)TCP/IP 是可能被窃听的网络 
    如果要问为什么通信时不加密是一个缺点,这是因为,按TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。
    即使经过加密处理的通信,也会被窥视到通信内容,这点和未加密的通信是一样的。只是说如果通信加密,有可能让人无法破解报文信息的含义,但是加密处理后的报文信息本身还是会被看到的。
    窃听相同段上的通信并非难事。只需要收集在互联网上流动的数据包(帧)就行了。使用抓包工具可以获取HTTP协议的请求和响应的内容,并对其进行解析。

  2)加密处理防止被窃听 
    如何防止窃听保护信息,最普及的就是加密技术。主要有通信的加密和内容的加密两种。
    通信的加密: HTTP协议中没有加密机制,但可以通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密HTTP的通信内容。即用SSL建立安全通信线路,然后再在这条线路上进行HTTP通信。与SSL组合使用的HTTP被称之为HTTPS(HTTP Secure,超文本传输安全协议)或HTTPover SSL。
    内容的加密: 这是一种将参与通信的内容本身加密的方式。即把HTTP报文里所含的内容进行加密处理,在这种情况下,客户端需要对HTTP报文进行加密处理后再发送请求。为了做到有效的内容加密,客户端和服务器应同时具备加密和解密机制。这种方法不同于通信加密,内容仍有可能被篡改。

1.2.不验证通信方的身份就可能遭遇伪装
HTTP协议中的请求和响应不会对通信方进行确认,即存在着以下隐患:
    1)无法确定请求发送至目标的Web服务器是否按真实意图返回响应的那台服务器。有可能是伪装的服务器; 
    2)无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端; 
    3)无法确定正在通信的对方是否具备访问权限。因为某些Web服务器上保存着重要信息,只想发给特定用户通信的权限; 
    4)无法判定请求是来自何方、出自谁手; 
    5)即使是无意义的请求也会照单全收,无法阻止海量请求下的DOS攻击(拒绝服务攻击)。
虽然HTTP协议无法确定通信方,但是用SSL则可以。SSL不仅提供加密处理,还可以使用一种称为证书的手段,可以用于确定对方。证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。只要确定通信方持有的证书,则可判断通信方的真实意图。另外,客户端持有证书即可完成个人身份的确认,也可用于Web网站的认证环节。

1.3、无法证明报文完整性,则有可能被篡改 
    完整性是指信息的准确度,如果无法证明完整性,则无法判断信息是否准确。因此有可能出现中间人攻击篡改后,服务器和客户端仍不知情。
    中间人攻击(Man-in-the-Middle attack, MITM): 请求或响应在传输途中,遭攻击拦截并篡改内容的攻击。
    虽然有使用HTTP协议确定报文完整性的方法,但是这并不便捷可靠。为了有效防止其中弊端,有必要使用HTTPS。SSL提供认证和加密处理及摘要功能。

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

    经常会在Web的登陆页面和财物结算界面等使用HTTPS通信。使用HTTPS通信时,改用https://。另外,当浏览器访问HTTPS通信有效的Web网站时,浏览器的地址栏内会出现一个带锁的标记。对HTTPS的显示方式会因浏览器的不同而有所改变。
    HTTPS并不是应用层的一种新协议,而是在HTTP通信接口部分用SSL和TLS协议代替。因此,HTTP不再与TCP通信,而是先和SSL通信,再由SSL和TCP通信。因此,HTTPS就是身披着SSL协议这层外壳的HTTP。SSL协议是广泛使用的网络安全技术。


    在采用 SSL 后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护这些功能。
    SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。可以说SSL是当今世界上应用最为广泛的网络安全技术。


3、SSL

    在对SSL进行讲解前,我们先了解一下加密方法。SSL 采用一种叫做公开密钥加密(Public-k ey cry ptography )的加密处理方式。
    近代的加密方法中加密算法是公开的,而密钥却是保密的。通过这种方式得以保持加密方法的安全性。加密和解密都会用到密钥。没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密了。如果密钥被攻击者获得,那加密也就失去了意义。

    加密和解密同时用一个密钥的方式称为共享密钥加密(Common key crypto system),也被叫做对称密钥加密。
    存在的问题:以共享密钥方式加密时必须将密钥也发给对方。可究竟怎样才能安全转交?在互联网上转发密钥时,如果通信被监听那么密钥就可会落入攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。

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

HTTPS采用混合加密机制
    HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。
    所以应充分利用两者各自的优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。 


3.1.证明公开密钥正确性的证书
    公开密钥加密方式还是存在一些问题的,那就是无法证明公开密钥本身就是货真价实的公开密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。
    为了解决上述问题,可以使用由数字证书认证机构(CA, Certificate Authority)和其相关机关颁发的公开密钥证书。

可证明组织真实性的EV SSL证书
    证书的一个作用是用来证明作为通信一方的服务器是否规范,另一个作用是可确认对方的服务器背后运营的企业是否真实存在。拥有该特性的证书就是EV SSL证书(Extended Validation SSL Certificate)。该证书是基于国际标准的认证指导方针颁发的证书。持有该证书的Web网站的浏览器地址栏处的背影包是绿色的,而且在地址栏的左侧显示了SSL证书中记录的组织名称以及颁发证书的认证机构的名称。
用以确认客户端的客户端证书

3.2.SSL速度慢

    HTTPS也存在一些问题,那就是当使用SSL时,它的处理速度会变慢。SSL的慢分两种,一种是指通信慢;另一种是指由于大量消耗CPU及内存等资源,导致处理速度变慢。和使用HTTP相比,网络负载可能会变慢2到100倍。除去和TCP连接、发送HTTP请求/响应外,还必须进行SSL通信,因此整体上处理通信量会增加。
    另一点是SSL必须进行加密处理。在服务器和客户端都需要进行加密和解密的运算处理。因此从结果上讲,比起HTTP会更多地消耗服务器和客户端的硬件资源,导致负载增强。
    针对速度变慢这一问题,并没有根本性的解决方案,我们会使用SSL加速器这种(专门服务器)硬件来改善该问题。该硬件为SSL通信专用硬件,相对软件来讲,能够提高数倍SSl的计算速度。仅在SSL处理时发挥SSL加速器的功效,以分担负载。

为什么不一直使用HTTPS?
    除了想节约购买证书的开销是原因外,一个主要的原因是与纯文本通信相比,加密通信会消耗更多的CPU及内存资源。一般是非敏感信息则使用HTTP通信,只有在包含个人信息等敏感数据时,才利用HTTPS加密通信。



0 0