第4章 安全代理的设计与分析 器建立连接时,首先与代理连接,说明要连接的主机名和端口号,然后安全代理负责与远端Web服务器建立连接;建立连接后,经过身份认证,浏览器与服务器之间的数据传输由安全代理转发完成,如图4-3所示,在这个过程中,浏览器与安全代理之间的数据传输使用浏览器本身支持的弱加密算法,安全代理与远端Web服务器之间的数据传输则使用高强度的数据加密算法。
客户机客户程序服务器服务程序安全代理安全通道安全代理 图4-3 通过安全代理实现安全
客户端安全代理的工作流程:
1) 等待客户端发出访问请求。SSL客户端代理在接收到客户端的访问请求前,一直处于侦听状态。
2) 客户端先向客户端代理发出一个数据请求,客户端代理根据这个请求向服务端代理发出一个连接请求在该连接中,客户端是连接的发起者,SSL客户端代理是连接的被动响应者。
4) 客户端代理在CA那里验证了证书真实性之后,会回应服务器代理一条信息,里面含有客户端的证书。SSL客户端代理等待服务端的响应。
4.3.2 安全代理的服务端原理
SSL服务端代理置于Web服务器的前端,它可以和Web服务器安装在同一台主机上,但是我们有时出于安全性考虑,可能想对外屏蔽Web服务器,也可以将它单独安装在一台主机上。同时,我们将SSL服务端单独安装在一台主机上也出于这样一种需求,有时用户可能会拥有多台Web服务器,这些Web服务器上的信息在网上传输都需要安全保护,如果我们的SSL安全代理只对应于一台Web服务器,那么可能要为每台Web服务器配置一台主机安装SSL代理,那样会增加消耗,因此我们必须在SSL服务端代理中实现虚拟服务器的功能[35],使得一个SSL代理可通过地址映射对应到不同的Web服务器上。在此模式下SSL服务端代理工作流程如下:
1)等待SSL客户端代理连接请求。在没有与客户端代理连接时,服务端安全代理处于侦听状态,只有接收到SSL客户端代理的连接请求后,才处于激活状态。由于SSL服务端代理可能为多个Web服务器提供安全服务,因此它可以同时在侦听多
17
河北科技大学硕士学位论文 个端口的连接请求。
4.4 本论文设计的主要工作
本系统在已有安全代理系统的基础上进行了改进,主要工作如下:
1) 对安全代理的实现思想做了完整性的设计。以往的安全代理只局限于客户端的代理系统的设计,缺乏服务端代理系统的分析、研究与设计实现。本课题研究分别从客户端和服务端来完善安全代理系统的设计。
2) 解决了信息的明文传送问题,基于对SSL协议的深入研究与分析,使用SSL协议对有高安全性要求的信息进行加密来解决,本课题实现采用的是OpenSSL软件开发包技术。
4.5 安全代理的设计思想
SSL安全代理为实现网络通信安全通道的建立,在客户端和服务端分别以各自的工作方式运行。客户端和服务端运行环境不同,工作流程也不同,虽然是为了一个共同的目标——安全的通信,但是在设计的过程中,我们还是要分开考虑,即分为安全代理的客户端设计和服务端设计。
4.5.1 安全代理的客户端设计
4.5.1.1 客户端安全代理的功能
安全代理的客户端主要面向单个用户,这要考虑的是如何使得客户端与服务器(有可能是安全代理的服务端)的信息交互得到安全保障。客户端系统要实现的功能包括:身份认证,传输加密和证书管理。
(1) 身份认证功能 在连接上SSL安全代理服务器后,接受服务器的证书以核实服务器的身份,代表客户端向服务器发送客户证书,并协商该次传输采用的加密算法及相关的对称密钥。在此过程中,任何可能的错误都会导致连接取消,以保证数据安全。
(2) 加密解密功能 用户应用程序发送给网络服务器的数据流,在通过SSL安全代理客户端时被加密转换成SSL协议下的密文。从SSL安全代理服务器出来的加密数据流,首先被SSL安全代理解密,用户应用程序收到的仍是明文。
此外,证书管理模块不仅仅只是管理用户证书,它还提供认证证书,CRL管理等功能。
4.5.1.2 客户端安全代理的模块化设计
安全代理的客户端系统采用模块化设计,其结构如图4-4所示:
18
第4章 安全代理的设计与分析 SSL安全代理客户端SSL连接模块身份认证模块传输模块证书管理模块
图4-4 SSL安全代理的客户端结构
客户端安全代理采用模块化设计,模块化带来的一个好处是可扩展性,每一个模块相对于其他模块是独立的[37]。这样方便安全代理的维护和升级。SSL连接模块,一次连接一个安全服务器,即创建一个SSL会话的时候,我们在接收到服务器证书后,即调用认证模块,传递服务器证书给CA进行认证,原理同服务器端。
4.5.2 安全代理的服务端设计
一个完整的安全代理系统要具备客户端和服务端两个子系统。客户端和服务端 共同协作才能形成向用户透明的安全通道的建立。
考虑到要更好的解决安全代理在服务器端的性能瓶颈问题,在设计的时候要在保证安全性的同时侧重性能发面的兼顾,基于SSL协议安全代理的服务器端设计如图4-5所示:
SSL代理模块客户端SSL代理控制器...SSL代理模块安全信息服务器公开信息服务器 图4-5 SSL安全代理的服务端结构
SSL代理服务端设计由两部分组成:SSL代理控制器和若干个SSL代理模块。SSL代理控制器是个网关,将外网(客户端部分)和内网(SSL代理模块部分)分离开来。SSL代理控制器还起到负载平衡器的作用,将客户端过来的SSL任务请求分配到SSL代理模块中去。SSL代理模块是真正处理SSL代理任务的部分,它与客户端建立SSL安全通道,在客户端和安全信息服务器之间提供信息转发服务,同时
19
河北科技大学硕士学位论文 进行加解密操作。
4.6 本章小结
本章是SSL安全代理系统的设计与分析部分。首先由网络安全在Internet高速发展时期的特殊需求引出本设计的必要性,分析总结了安全代理的工作原理。接着根据安全代理系统涉及的客户端和服务端不同的运行需求以及实际工作中要考虑的不同侧重,进行了分别设计。客户端采用模块化设计,每个模块在形式上独立有利于以后系统的扩展。在服务端主要侧重提高处理SSL任务的速度,即保证安全性的同时提高服务端的性能。在本章的最后,对基于SSL协议的安全代理系统从网络安全和性能两个方面做了分析。
20