确保 Web 安全的 HTTPS
HTTPS
HTTP(超文本传输协议)可能存在窃听等一些安全问题,于是HTTPS应运而生。
HTTP 的缺点
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
1)通信使用明文可能会被窃听:
由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。TCP/IP 是可能被窃听的网络。窃听相同段上的通信并非难事。只需要收集在互联网上流动的数据包(帧)就行了。对于收集来的数据包的解析工作,可交给那些抓包(Packet Capture)或嗅探器(Sniffer)工具,如wireshark等。
应对之策一般有两个:
a) 对通信的加密
HTTP 协议中没有加密机制,但可以通过和 SSL(Secure Socket Layer,安全套接层)或
TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容。
用 SSL建立安全通信线路之后,就可以在这条线路上进行 HTTP通信了。与 SSL组合使用的 HTTP 被称为 HTTPS(HTTPSecure,超文本传输安全协议)。
b)对内容进行加密
可能设置各种各样的加密规则
2)不验证通信方的身份就可能遭遇伪装
a)任何人都可发起请求: HTTP 协议不存在确认通信方的处理步骤,那么任何人都可以发起请求。这样会引起严重的问题。
b) 查明对手的证书:SSL可用于确定对方的手段,由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。
3)无法证明报文完整性,可能已遭篡改
由于 HTTP 协议无法证明通信的报文完整性,没有任何办法确认,发出的请求 / 响应和接收到的请求 / 响应是前后相同的。比如,从某个 Web 网站上下载内容,是无法确定客户端下载的文件和服务器上存放的文件是否前后一致的。文件内容在传输途中可能已经被篡改为其他的内容。即使内容真的已改变,作为接
收方的客户端也是觉察不到的。
HTTP+ 加密 + 认证 + 完整性保护=HTTPS
常用的MD5 和 SHA-1 等散列值校验的方法,以及用来确认文件的数字签名方法,也常常容易被改写而用户察觉不到。为了有效防止这些弊端,有必要使用 HTTPS。SSL提供认证和加密处理及摘要功能。仅靠 HTTP 确保完整性是非常困难的,因此通过和其他协议组合使用来实现这个目标。
1)HTTPS组成
HTTP 上再加入加密处理和认证等机制,我们称其为 HTTPS(HTTP Secure)。
2)HTTPS 是身披 SSL 外壳的 HTTP
HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。通常,HTTP 直接和 TCP 通信。当使用 SSL时,则演变成先和 SSL通信,再由 SSL和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披SSL协议这层外壳的 HTTP。
3) 相互交换密钥的公开密钥加密技术
SSL采用公开密钥加密(Public-key cryptography)的处理方式,加密方法中加密算法是公开的,而密钥却是保密的。HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处
理速度要慢。所以应充分利用两者各自的优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。