文献综述(或调研报告):
HTTP 代理服务器是一种应用层服务,由客户机的操作系统或应用软件主动连接到代理服务器后,可通过代理服务器间接访问第三方 HTTP 服务。与在网络层直接转发所有 IP 数据包的路由器或交换机不同,代理服务器可以暂存客户端发来的 HTTP 请求的头部和内容,并根据这些特征信息,决定如何发起请求、以及如何返回给客户端。
由于这样的动态性,HTTP 代理常应用于一些在常规网络部署中无法实现的场景,例如,在多媒体教室中,可以方便地实现教师机对学生机的管理 [1];在企业私有网络中,可监控和控制对外部网络的访问 [2,3];对于个人用户,代理服务器还可用于去除广告、控制儿童的上网时间和访问内容等 [12];另外,HTTP 代理也是 IPv4 网络中解决 IP 地址资源有限问题的方案之一 [4]。
HTTP 代理在国内外应用领域有诸多不同的研究。有的倾向于利用缓存机制,将一些静态内容在代理服务器端进行缓存,以便加快多个客户端设备访问同一资源的速度,减少网络出口的流量浪费 [5,6];还有的注重于减少代理服务器程序设计中的内核态与用户态切换,尽可能使用纯内核态编程,提高代理服务器性能 [7]。
但在现代互联网环境下,传统的 HTTP 代理面临着新的挑战。HTTPS (安全超文本传输协议) 是一种面向安全信息通信的协议,它能与 HTTP 信息模型共存,并易于与 HTTP 应用程序相整合 [8]。HTTPS 协议为 HTTP 客户机和服务器提供了多种安全机制。随着 SSL 及其后出现的 TLS 技术的成熟, HTTPS 已经成为现代互联网的关键要素,保证着电子商务、在线银行、企业间信息传输的安全 [9]。
面对 HTTPS 这样的新兴协议,传统的 HTTP 代理服务器需要进行改造,以便在 HTTPS 环境下使用。但事实上,代理服务器的概念与 HTTPS 本身所实现的端到端加密相悖。在这样的情况下,可以从两种不同的思路来着手。
第一种思路是牺牲代理服务器的透明性,保证 HTTPS 本身安全性不被破坏。HTTP/1.1 中,引入了 CONNECT 方法 [10],它能够允许客户端与一个 HTTP 代理服务器连接后,指定与某个远程服务器建立 TCP 连接;连接建立成功后,代理服务器将会原样转发该 TCP 通讯中的所有数据包。特别地讲,在 HTTPS 的场景下,由于 HTTPS 密钥交换的数学严密性和安全性,客户端通过 CONNECT 语法令代理服务器与远程服务器建立连接后,客户端与远程服务器之间的握手以及加密内容的传输过程对于代理服务器是不透明的。在这种情况下,代理服务器将退化为单纯的数据包转发者,无法再像传统 HTTP 通讯一样对传输的内容进行读取和控制;但这样的方案没有破坏加密通讯,使 HTTPS 协议本身得到了有效保护。
第二种思路是牺牲 HTTPS 端对端加密的安全性,利用主动篡改信任链的方式,让代理服务器仍可查看和修改通讯内容。为了实现这种效果,可以通过中间人方式 (MitM, Man-in-the-Middle) 对 HTTPS 传输的流量进行解密。HTTPS 本身是可以防范中间人攻击的,但这种防范是建立在客户端证书信任链不被篡改的基础上。一般情况下,使用者只信任操作系统或应用软件中提供的国际知名的 CA 根证书,而这些知名的根证书只会信任合法的网站运营者,因此 HTTP 代理作为中间人无法得到信任,从而拒绝建立安全连接。但使用者可以选择信任第三方证书 [11],因此从使用者的角度,可以通过操作系统或应用软件提供的证书信任设置程序导入第三方根证书,从而实现对代理服务器的信任。在 MitM 模式中,代理服务器向客户端伪装成服务器,向服务器伪装成客户端,在两者之间分别建立 SSL 连接,从而实现对通信内容的监控和修改。
综合分析这两种方案,从直觉上来看,第一种较为安全,但事实上,第二种方案是普遍被采用的。一方面,第一种方案让代理服务器退化成一个网络中继器,与网络层的路由器和交换机等基础设施相比,失去了绝大部分优势;另一方面,作为应用层服务,代理服务器的主要应用场景大多要求客户端主动连接,因此用户常常知晓并同意代理服务器的存在和干预,在这样的条件下,为了代理服务器本身功能的完整性,对用户信任链进行修改,常常是出于用户自身的需要。
但使用了 HTTPS MitM 模式的代理服务器,也需要保证与远程服务器之间连接的安全性,对远程服务器连接的合法性进行验证,将潜在风险暴露给终端用户,并在需要的时候拒绝连接。很多第三方提供的代理服务 (如防病毒软件提供的代理服务器等) 由于要求用户信任根证书,也可能会对用户访问网站的安全性造成威胁。根据文献 [12] 的调查,在 Windows 操作系统上的 8 款带有代理服务器的防病毒软件和 4 款带有代理服务器的家长控制程序以及另外 2 款只会导入根证书的产品中,有 4 款软件非常易于受到替身攻击,还有 2 款软件在开启 TLS 过滤设置的情况下易于受到攻击。这要求我们在开发具有中间人解密模式的 HTTPS 代理服务器时,需要注意远程服务器端连接的安全性,将可能的风险暴露给客户端。
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。