1 引言
Internet已经成为人们获取信息、相互交流的重要渠道。嵌入式系统与Internet相结合,将嵌入式设备接入Internet是当今嵌入式 应用的发展趋势。Internet和Web服务与嵌入式系统都具有低成本、高效率的特点,把它们集成于一体具有很多潜在的优势,如使用TCP/IP协议、 HTTP协议,可以无缝连接到以太网;使用标准的Web浏览器,可以进行远程监测、诊断与控制。利用嵌入式Web技术可以实现基于Internet的远程 数据采集、远程控制、自动报警等功能,大大扩展了嵌入式系统的应用范围,同时能充分利用网络资源,实现更广泛的信息共享和更多的信息服务。
嵌入式Internet解决了终端设备的网络化问题,然而Internet提供的网络环境并不保障接入系统的安全性,嵌入式Internet的安全 问题直接关系到嵌入式Internet的发展及其应用前景,因此在设计嵌入式Internet系统的时候,必须把嵌入式Internet通信的安全问题放 到重要的地位考虑。在嵌入式网络系统需要解决以下几个方面:
1)许多Web服务器不仅要存取数据,也提供了对设备、机器、甚至是工厂的控制,这意味着如果嵌入式系统出现问题,就会危及设备或工厂,其结果不仅仅是失去信息,更致命的是失去控制。这要求在嵌入式环境低成本的基础上提供高级别的安全水平。
2) 数据通过公共的Internet网传输, 随时面临被攻击的危险。
3) 许多嵌入式系统需要连续运转几个月,几年,甚至是十几年,这对系统的稳定性提出了极其严格的要求,因此它必须保证在任何情况下长时间的稳定运行。
4) 嵌入式系统大多会受到资源的严格限制,但随着嵌入式处理器及其它硬件性能的不断提高,使应用复杂的网络安全协议成为可能。
目前流行的两类Internet远程安全接入技术是SSL VPN与IPSec VPN,它们具有类似的功能特性,但也存在一些不同。IPSec VPN提供完整的网络层连接功能,是实现专用网安全连接的最佳选项。IPSec VPN需要软件客户端支撑,它不支持公共Internet站点接入,但能实现Web或非Web类企业应用访问。而SSL VPN的“零客户端”架构特别适合于远程用户连接,用户可通过任何Web浏览器访问企业网Web应用。但是SSL VPN只对通信双方的某个应用通道进行加密,而不对通信双方的整个通道进行加密,这样SSL VPN也存在一定安全风险。对实现的可行性和运行开销进行比较,显然SSL VPN更适合于使用Internet和Web服务的嵌入式系统。
2 SSL VPN
2.1 VPN介绍
VPN(Virtual Private Network ,虚拟专用网), 是指在公共网络上建立专用网络的技术。VPN网络的任意两个结点之间的连接并没有传统专网所需的点到点的物理链路,而是架构在公用网络服务商ISP提供的 网络平台之上的逻辑网络。用户的数据通过ISP在公共网络中建立逻辑隧道(即点到点的虚拟专线)进行传输, 并通过相应的加密和认证技术来保证用户内部网络数据在公网上的安全传输,从而真正实现网络数据传输的专有性,并使安全性得以保证。
2.2 SSL协议
SSL协议是基于Web应用的安全协议,它指定了在应用程序协议(如:HTTP、Telnet、FTP等)和TCP/IP协议之间进行数据交换的安全机制,为TCP/IP连接提供数据加密、服务器认证以及可选的客户机认证。SSL能在TCP/IP和应用层间无缝实现Internet协议栈处理,而对 其他协议层不产生任何影响。
作为应用层协议,SSL使用公开密钥体制和X.509数字证书技术保护信息传输的机密性和完整性。SSL协议由SSL握手层、记录层两层协议组成: 上层为握手层,包括SSL握手协议、SSL 修改密文协议,SSL告警协议和应用数据协议;下层为SSL记录协议,具体结构如图1所示。它们共同为应用访问连接提供认证、加密和防篡改功能。SSL握 手协议主要是用于服务器和客户之间的相互认证,协商加密算法和MAC算法,并用于生成在SSL记录中发送的加密密钥。SSL警告协议主要为对等实体传递与 SSL相关的告警信息。SSL记录协议则是为各种高层协议提供基本的安全服务。

图1 SSL协议栈
握手协议在SSL数据传输中具有重要的作用,通过握手协议可实现数据的加密和身份验证,确保端到端的安全传输,能有效阻止外部对Web的攻击。
2.3 SSL VPN
SSL VPN通过SSL协议,利用PKI的证书体系,在传输过程中使用DES、3DES、AES、RSA、MD5、SHA1等多种密码算法保证数据的机密性、完整性、不可否认性,实现在Internet上进行安全的信息交换。如今几乎所有的浏览器都内建有SSL功能,它正成为企业应用、无线接入设备、Web服务 以及安全接入管理的关键协议。
基于SSL的VPN为嵌入式系统提供了许多有利条件,主要有:
1) 可以使用标准的软件(如:Web浏览器)对嵌入式系统进行访问。
2) SSL允许在嵌入式系统中没有存储口令的情况下进行客户鉴定。这特别有益于需要进行远程操作的嵌入式系统。
3) SSL提供了多种加密标准,系统设计者可以在安全风险、加密强度之间进行平衡。
4) SSL提供了客户端和服务器端的认证。
SSL VPN的核心是SSL协议,目前已有多种基于标准SSL 协议实现的工具箱,但因其庞大的数据结构、功能全面的系统管理而无法在嵌入式环境下很好地运行。另一个主要缺陷是产生对称密钥需要大量计算且不能由简单有效的硬件来实现;另外,设计系统时,要充分考虑对客户端的认证,因此必须对常规的SSL协议进行针对性的裁剪与优化,以适应嵌入式应用的需要。
3 SSL嵌入式优化设计
为保证在有限的嵌入式资源环境下使用SSL技术,必须要对标准SSL协议进行裁剪与优化。优化的主要方面有:重新设计SSL内部模块,引入会话重用 模块;采用只对服务器单向认证的RSA模式;对加密算法进行选择,使之适应嵌入式计算的特点。
3.1 会话重用
SSL协议的核心是握手协议,其连接过程如图2所示:

图2 SSL协议握手过程
从上述的SSL 连接流程不难看出SSL 握手过程中需要耗费较多的系统时间(CPU处理)和空间(内存) ,所以利用会话重用实现服务器和浏览器的再次SSL连接,对于嵌入式浏览器十分必要。
会话重用的过程是:客户与服务器通过完整的握手过程建立第一次会话,然后握手双方将该会话保存。当客户采用会话重用时,则将session_ id作为本次会话的session_ id,否则置空。服务器收到客户的client_hello消息后,查看session_ id,如果为空则不进行会话重用,服务器生成新session_ id,在server_hello中发给客户,否则服务器从session_ id中查找session_ id会话,并恢复该会话参数作为当前参数。客户收到server_hello消息后,检验服务器发来session_id是否与重用session_ id一致,一致则会话重用,否则双方重新协商会话参数。通过会话重用,服务器和浏览器就可以省略公钥和认证操作,还可以重用以前的私钥。
3.2 单向认证
单向SSL 服务器认证。作为 SSL 客户端运行的应用程序,能够验证作为 SSL 服务器运行的应用程序的身份,而不提供反向的认证。这样可以将客户端认证的步骤去掉,减少握手次数以降低系统开销,并节省了使用PKI对授权用户分发证 明,同时也能够满足大多数实际应用对安全的要求。
3.3 算法选择
在SSL握手过程中,服务器CPU时间大部分用在解密私用密钥和计算主密钥上,同时SSL连接性能在很大程度上也依赖于使用的算法,因此算法对嵌入式系统中的SSL有重要的影响。在嵌入式浏览器上,可以选择512位RSA公钥算法,RSA模式只对服务器进行认证,可减少握手次数;采用适合嵌入式环境的对称加密算法RC4-128对所传输的数据进行加密;创建信息鉴定码的摘要算法,可采用运行速度最快的哈希函数MD5 128来计算消息检验码MAC。
4 SSL VPN应用方案与实现
我们设计了基于SSL VPN技术的应用方案,构架了SSL协议的实现体。其实现原理为:在客户端和服务器之间通过协商,采用RSA算法加密,建立起安全通道,在此通道内传输的 信息经过RC4加密运算,保证数据的机密性;利用MD5函数对所传输的信息提取消息验证码,确保信息的完整性;利用证书交换技术,实现客户端和服务器的识 别和认证,实现身份的可认证性。
该方案可分为客户端和服务器端两个部分实现SSL协议,其程序框架如下:

传输过程中需要的证书和密钥文件:
1)生成服务器端的私钥(key文件):openssl genrsa -des3 -out server.key 512;
2)生成证 书签署请求CSR:openssl req -new -key server.key -out server.csr;
3) 生成CA的key文件:openssl -des3 -out ca.key 1024;
4) 生成CA自签名证书:openssl req -new -x509




