由于HTTP本身不具备加密的功能,所以也无法做到对通信整体(使用HTTP协议通信请求和响应的内容)进行加密。即,HTTP报文使用明文(指未加密的报文)进行加密
按照TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。即使是已经加密处理的通信,也会被窥视到通信内容,这点和未加密的通信是相同的。只是说如果经过加密,就有可能让人无法破解报文信息的含义,但加密处理后的报文信息本身还是会被看到的。
防窃听保护信息的几种对策中,最为普及的就是加密技术。
通信的加密
和SSL(Secure Socket Layer,安全套接层)或者TLS(Transport Layer Security,安全传输层协议)的组合使用,加密HTTP的通信内容。
用SSL建立安全通信线路之后,就可以在这条路上进行HTTP通信了。与SSL组合使用的HTTP被称为HTTPS(HTTP Secure ,超文本传输安全协议)。
HTTP协议中请求和响应不会对通信方进行确认。也就是说存在“服务器是否就是发送请求中URI真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”。
在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求,另外,服务器只要接收到请求,不管对方是谁都会返回一个响应(但也限于发送端的IP地址和端口号没有被Web服务器设定限制访问的前提下)
SSL不仅可以加密,还使用了一种被称为证书的手段,可用于确定方。
证书由值得信赖的第三方机构颁发,用以证明服务器和客户端是实际存在的。伪造证书是异常困难的,所以只要能够确认通信方持有的证书,即可判断通信方的真实身份。
所谓完整性是指信息的准确性。若无法证明其完整性,也就意味着无法证明其信息是否准确。
没有办法确认,发出的请求/响应和接受到的请求/响应是前后相同的。
请求或响应在传播途中,遭遇攻击者拦截并篡改内容的攻击称为中间人攻击(Man-in-the-Middle attack,MITM)
经常在Web的登录页面和购物结算界面等使用HTTPS通信。
HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL协议代替而已。
通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓HTTPS,其实就是身披SSL外壳的HTTP。
在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整保护这些功能。
SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层SMTP和Telnet等协议均可配合SSL协议使用。
SSL采用一种叫做公开密钥加密的加密处理方式。
加密和解密同用一个密钥的方式称为共享密钥加密,也被称为对称密钥加密。
问题在于:
公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,另一把叫做公开密钥。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则是可以随意发布,任何人都可以获得。
HTTPS采用共享密钥加密和公开密钥加密并用的混合加密机制。
在交换密钥环节使用公开密钥加密,之后建立通信交换报文阶段则使用共享密钥加密方式。
HTTPS使用SSL(Secure Socket Layer)和TLS(Transport Layer Security)这两个协议,TSL是以SSL为原型开发的协议,有时候统一称该协议为SSL。
SSL慢分为两种,一种是指通信慢,二是指由于大量消耗CPU及内存等资源,导致处理速度变慢。