HTTP主要有这些不足,例举如下
这些问题不仅在HTTP上出现,其他未加密的协议中也会存在这类问题。
按TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视
所谓互联网,是由能连通到全世界的网络组成的。无论世界哪个角落的服务器在和客户端通信时,在此通信线路上的某些网络设备、光缆、计算机等都不可能是个人的私有物,所以不排除某个环节中会遭到恶意窥视行为。
在几种防止窃听保护信息的几种对策中, 最普及的就是加密技术, 加密对象有以下几个:
HTTP 协议中没有加密机制,但可以通过和SSL( Secure Socket Layer,安全套接层)或TLS(Transport LayerSecurity,安全层传输协议)的组合使用,加密HTTP的通信内容用SSL建立安全通信线路之后,就可以在这条线路上进行HTTP通信了。与SSL组合使用的HTTP被称为HTTPS(HTTP Secure,超文本传输安全协议)或HTTPover SSL。
对传输内容本身加密
前提是要求客户端和服务器同时具备加密和解密机制。主要应用在 Web 服务中。有一点必须引起注意由于该方式不同于SSL或TLS将整个通信线路加密处理,所以内容仍有被篡改的风险。
HTTP协议中的请求和响应不会对通信方进行确认。也就是说存在“服务器是否就是发送请求中URI真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题。
在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求。另外,服务器只要接收到请求,不管对方是谁都会返回一个响应
虽然使用HTTP协议无法确定通信方,但如果使用SSL则可以。SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定对方。
证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。另外,伪造证书从技术角度来说是异常困难的一件事。所以只要能够确认通信方(服务器或客户端)持有的证书,即可判断通信方的真实意图。
既无法确认信息是否准确
没有任何办法确认, 发出的请求/响应和接收到的请求/响应是前后相同的
中间人攻击: 请求或响应在传输途中, 遭攻击者拦截并篡改内容的攻击
常用MD5和SHA-1等散列值校验, 但并不可靠便捷, 为有效防止这些弊端, 有必要使用HTTPS
我们把添加了加密认证机制的HTTP成为HTTPS
HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL( Secure Socket Layer)和TLS ( Transport Layer Security)协议代替而已。
通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP
在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。
SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。可以说SSL是当今世界上应用最为广泛的网络安全技术。
SSL采用的是**公开密钥加密(Public-key cryptography)**的加密处理方式
缺点:
公开密钥加密使用一对非对称的密钥。一把叫做私有密(privatekey),另一把叫做公开密钥(public key)。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得
使用公开密钥加密方式,**发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。**利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走
另外,要想根据密文和公开密钥,恢复到信息原文是异常困难的因为解密过程就是在对离散对数进行求值,这并非轻而易举就能办到退一步讲,如果能对一个非常大的整数做到快速地因式分解,那么密码破解还是存在希望的。但就目前的技术来看是不太现实的。
HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。
所以应充分利用两者各自的优势,将多种方法组合起来用于通信在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。
公开密钥的问题在于无法证明公开密钥就是货真价实的公开密钥
证书是一种用于验证实体身份、数字签名、加密通信等的数字文档。在网络安全领域,最常见的证书是数字证书,用于建立安全通信、验证网站身份等。
数字证书通常包含以下信息:
在使用数字证书的场景中,最常见的是SSL/TLS通信中的服务器证书。当你在浏览器中访问一个使用HTTPS的网站时,浏览器会接收到服务器的数字证书,然后使用浏览器内置的根证书颁发机构(Root CA)公钥验证服务器证书的签名。如果验证通过,浏览器就信任该证书,建立安全连接。
数字证书的使用有助于建立信任关系、防止中间人攻击,确保通信的机密性和完整性。证书颁发机构是负责验证证书请求者身份的受信任实体,其公钥被广泛分发,以便用于验证由其签发的证书。
HTTPS(HTTP Secure)是一种基于安全套接层(SSL/TLS)协议的HTTP通信协议,旨在提供更安全、加密的数据传输。以下是HTTPS的安全通信机制:
通过这些安全机制,HTTPS提供了对用户和网站的数据进行保护的安全通信环境,防范了许多网络攻击和窃听威胁。因此,对于传输敏感信息的网站,使用HTTPS是一种重要的安全实践。
SSL慢分为两种, 一种是指通信慢, 一种是指由于大量消耗CPU及内存等资源, 导致处理速度变慢
和使用HTTP相比,网络负载可能会变慢2到100倍。除去和TCP连接、发送HTTP请求·响应以外,还必须进行 SSL通信,因此整体上处理通信量不可避免会增加。
另一点是SSL必须进行加密处理。在服务器和客户端都需要进行加密和解密的运算处理。因此从结果上讲,比起HTTP会更多地消耗服务器和客户端的硬件资源,导致负载增强
为什么不一直使用HTTPS?
与纯文本通信相比, 加密通信会消耗更多的CPU及内存资源
节约购买证书的开销也是原因之一