Internet已经成为人们获取信息、相互交流的重要渠道。嵌入式系统与Internet相结合,将嵌入式设备接入Internet是当今嵌入式应用的发展趋势。Internet和Web服务与嵌入式系统都具有低成本、高效率的特点,把它们集成于一体具有很多潜在的优势,如使用TCP/IP协议、 HTTP协议,可以无缝连接到以太网;使用标准的Web浏览器,可以进行远程监测、诊断与控制。利用嵌入式Web技术可以实现基于Internet的远程数据采集、远程控制、自动报警等功能,大大扩展了嵌入式系统的应用范围,同时能充分利用网络资源,实现更广泛的信息共享和更多的信息服务。
嵌入式Internet解决了终端设备的网络化问题,然而Internet提供的网络环境并不保障接入系统的安全性,嵌入式Internet的安全问题直接关系到嵌入式Internet的发展及其应用前景,因此在设计嵌入式Internet系统的时候,必须把嵌入式Internet通信的安全问题放到重要的地位考虑。在嵌入式网络系统需要解决以下几个方面:
1)许多Web服务器不仅要存取数据,也提供了对设备、机器、甚至是工厂的控制,这意味着如果嵌入式系统出现问题,就会危及设备或工厂,其结果不仅仅是失去信息,更致命的是失去控制。这要求在嵌入式环境低成本的基础上提供高级别的安全水平。
2)数据通过公共的Internet网传输,随时面临被攻击的危险。
3)许多嵌入式系统需要连续运转几个月,几年,甚至是十几年,这对系统的稳定性提出了极其严格的要求,因此它必须保证在任何情况下长时间的稳定运行。
4)嵌入式系统大多会受到资源的严格限制,但随着嵌入式处理器及其它硬件性能的不断提高,使应用复杂的网络安全协议成为可能。
目前流行的两类Internet远程安全接入技术是SSLVPN与IPSecVPN,它们具有类似的功能特性,但也存在一些不同。IPSecVPN 提供完整的网络层连接功能,是实现专用网安全连接的最佳选项。IPSecVPN需要软件客户端支撑,它不支持公共Internet站点接入,但能实现 Web或非Web类企业应用访问。而SSLVPN的“零客户端”架构特别适合于远程用户连接,用户可通过任何Web浏览器访问企业网Web应用。但是 SSLVPN只对通信双方的某个应用通道进行加密,而不对通信双方的整个通道进行加密,这样SSLVPN也存在一定安全风险。对实现的可行性和运行开销进行比较,显然SSLVPN更适合于使用Internet和Web服务的嵌入式系统。
2SSLVPN
2.1VPN介绍
VPN(VirtualPrivateNetwork,虚拟专用网),是指在公共网络上建立专用网络的技术。VPN网络的任意两个结点之间的连接并没有传统专网所需的点到点的物理链路,而是架构在公用网络服务商ISP提供的网络平台之上的逻辑网络。用户的数据通过ISP在公共网络中建立逻辑隧道(即点到点的虚拟专线)进行传输,并通过相应的加密和认证技术来保证用户内部网络数据在公网上的安全传输,从而真正实现网络数据传输的专有性,并使安全性得以保证。
2.2SSL协议
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记录协议则是为各种高层协议提供基本的安全服务。
图1SSL协议栈
握手协议在SSL数据传输中具有重要的作用,通过握手协议可实现数据的加密和身份验证,确保端到端的安全传输,能有效阻止外部对Web的攻击。
2.3SSLVPN
SSLVPN通过SSL协议,利用PKI的证书体系,在传输过程中使用DES、3DES、AES、RSA、MD5、SHA1等多种密码算法保证数据的机密性、完整性、不可否认性,实现在Internet上进行安全的信息交换。如今几乎所有的浏览器都内建有SSL功能,它正成为企业应用、无线接入设备、Web服务以及安全接入管理的关键协议。
基于SSL的VPN为嵌入式系统提供了许多有利条件,主要有:
1)可以使用标准的软件(如:Web浏览器)对嵌入式系统进行访问。
2)SSL允许在嵌入式系统中没有存储口令的情况下进行客户鉴定。这特别有益于需要进行远程操作的嵌入式系统。
3)SSL提供了多种加密标准,系统设计者可以在安全风险、加密强度之间进行平衡。
4)SSL提供了客户端和服务器端的认证。
SSLVPN的核心是SSL协议,目前已有多种基于标准SSL协议实现的工具箱,但因其庞大的数据结构、功能全面的系统管理而无法在嵌入式环境下很好地运行。另一个主要缺陷是产生对称密钥需要大量计算且不能由简单有效的硬件来实现;另外,设计系统时,要充分考虑对客户端的认证,因此必须对常规的 SSL协议进行针对性的裁剪与优化,以适应嵌入式应用的需要。
3SSL嵌入式优化设计
为保证在有限的嵌入式资源环境下使用SSL技术,必须要对标准SSL协议进行裁剪与优化。优化的主要方面有:重新设计SSL内部模块,引入会话重用模块;采用只对服务器单向认证的RSA模式;对加密算法进行选择,使之适应嵌入式计算的特点。
3.1会话重用
SSL协议的核心是握手协议,其连接过程如图2所示:
图2SSL协议握手过程
从上述的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对所传输的数据进行加密;创建信息鉴定码的摘要算法,可采用运行速度最快的哈希函数MD5128来计算消息检验码MAC。
4SSLVPN应用方案与实现
我们设计了基于SSLVPN技术的应用方案,构架了SSL协议的实现体。其实现原理为:在客户端和服务器之间通过协商,采用RSA算法加密,建立起 安全通道,在此通道内传输的信息经过RC4加密运算,保证数据的机密性;利用MD5函数对所传输的信息提取消息验证码,确保信息的完整性;利用证书交换技 术,实现客户端和服务器的识别和认证,实现身份的可认证性。
该方案可分为客户端和服务器端两个部分实现SSL协议,其程序框架如下:
传输过程中需要的证书和密钥文件:
1)生成服务器端的私钥(key文件):opensslgenrsa-des3-outserver.key512;
2)生成证书签署请求CSR:opensslreq-new-keyserver.key-outserver.csr;
3)生成CA的key文件:openssl-des3-outca.key1024;
4)生成CA自签名证书:opensslreq-new-x509-keyca.key-outca.crt;
5)用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:./sigh.shserver.csr。
在程序中我们选用RC4做加密,MD5做消息摘要(先进行MD5运算,后进行RC4加密),由SSL_CTX_set_cipher_list(ctx,"RC4-MD5")实现。
我们在S3C2410硬件平台的嵌入式LinuxWeb浏览器应用中,实现了上述SSL优化方案。实际应用测试的结果,符合我们的设计目标。在嵌入 式产品中使用精简优化后的SSL是切实可行的方案,通过简化握手流程、减少新连接的次数、会话重用、精选加密算法等方法,使之更适合嵌入式系统的实际应 用。其不足是SSLVPN在现阶段只能访问基于Web的应用,远程用户还不能进行基于非Web界面的应用。此外,由于SSLVPN并不对通信双方的整个通 道进行加密,只能为访问资源提供有限的安全保障,在Web页面中呈现的文件,无法保证只出现类似于上传文件和邮件附件等简单的文件,这样就很难保证其它文 件不被暴露在外部,存在一定的安全隐患。这是SSLVPN面临的一个挑战,也是我们今后要重点研究并解决的问题。
5结束语
嵌入式系统处理器和其它硬件性能的提升,使得基于SSL和TLS的VPN变为可能,SSL采用通信数据加密、身份验证等安全技术,较好地保证了数据 传送过程中的保密性、身份鉴别、不可否认和完整性,防止了窃听、欺骗、篡改、会话劫持等多种Web攻击手段。随着嵌入式网络安全的重要性越发突出,相信 SSLVPN的应用将更加广泛。