陈文波 罗斌斌 深圳市贝斯达医疗器械有限公司 (东莞 523690)
基于SSL的远程医疗系统安全性设计与实现
陈文波 罗斌斌
深圳市贝斯达医疗器械有限公司 (东莞 523690)
随着多媒体及计算机网络技术的高速发展,基于Internet的远程医疗系统面临着严重的网络安全问题。目前,国外著名的商用浏览器和Web服务器都内嵌支持SSL(Secure Socket Layer, 安全套接字层)协议,但其核心密码算法都有出口限制,并且协议源代码不公开,根本无法满足我国远程医疗网实际应用的安全需求。本文着重分析了SSL握手协议及SSL协议各部分的安全性和抗攻击能力,详细介绍了一个基于JAVA的SSL安全远程医疗系统的设计方案、技术特点与实现方法,测试结果能够满足需要。
远程医疗系统 网络安全 安全套接层 SSL JAVA
远程医疗系统是通过信息和通信技术从事远距离健康活动和服务的系统[1]。从技术上讲,远程医疗就是利用现代电子以及通信网络和生物医学相结合来获取和传递有关医学诊断、治疗、护理、及教育等信息数据。随着远程医疗的发展,如何对医疗数据和信息进行保密性是一项重要而且有挑战性的问题。本文描述了一个安全的基于SSL协议(安全套接字层,Secure Socket Layer,SSL)的远程医疗系统,系统通过JAVA语言实现,通过Internet可在医生端浏览器、患者端浏览器和会诊中心服务器端之间进行医疗数据和信息的安全传输。
安全套接字层(Secure Socket Layer,SSL)技术是目前国际流行的基于WWW的网络安全方案。它以多种密码技术为基础,实现了用户身份鉴别、数据加密传输、数据完整性校验、数字签名等安全功能。SSL协议是基于公钥体制的一个操作性很强的安全协议,能很好地完成身份认证和安全传输的任务。高层应用协议(如HTTP, FTP)可以在SSL协议之上透明传输,因此,SSL可以应用于远程医疗网。
SSL协议的层次结构如图1所示。底层是SSL记录层协议,它位于可靠的传输层TCP协议之上,用于封装高层协议的数据。其中SSL握手协议(SSL Handshake Protocol)允许服务方和客户方互相认证,并在应用层协议传送数据之前协商出一个加密算法和会话密钥,SSL握手协议是SSL协议的核心。
SSL协议提供的安全连接具有以下几个基本特性:
• 连接是安全的,在初始化握手结束后,SSL使用加密方法来协商一个秘密的密钥,数据加密使用对称密钥技术(如DES, RC4等)。
图1 SSL协议层次结构模型
• 可以通过非对称(公钥)加密技术(如RSA, DSA等)认证对方的身份。
• 连接是可靠的,传输的数据包含有数据完整性的校验码,使用安全的哈希函数(如SHA, MD5等)计算校验码。
图2 系统总体结构
本系统的目标是构造一个保证远程医疗中的生理数据在医生端浏览器、患者端浏览器和会诊中心服务器端之间通过Internet进行安全传输的系统,系统将实现如下功能:
(1) 提供客户端(医生浏览器端、患者浏览器端)和会诊服务器端的身份认证SSL v3.0协议规定服务器端必须提供以电子证书为基础的身份认证,而对客户端的身份认证则由服务器端选择限定。本系统应严格遵守此规定,提供通信双方认证功能或单方认证(对服务器端)功能。
(2) 提供高强度的信息加密机制。系统选用成熟可靠的算法和合适的钥长为用户提供高强度的数字加密。
(3) 提供快速有效的完整性的检验。系统选用高效快速的算法实现对所传递信息的完整性检验
如图2所示系统结构为分块和分层结构。系统分为两个相互独立又能搭配使用的子系统:SSL安全代理和SSL安全网关。系统介于应用层和TCP层之间。
系统本身为分层结构:底层是记录层处理模块,此层直接建立在TCP层之上;高层包括身份认证模块、握手消息处理模块、管理控制模块。
如图2,第一种情况下浏览器与服务器直接建立连接,不使用SSL安全代理和SSL安全网关。在这种情况下,如果服务器本身不能提供安全保障,则通信双方的数据直接暴露在Internet之上,很容易造成信息的泄露和篡改。如果服务器本身是一个安全服务器,能够提供安全功能,则通信双方的数据的安全性很大程度上依赖于浏览器所能提供的加密算法的长度。我们知道,由于国外对安全产品的出口限制,使得目前常用的浏览器最多只能支持40位的加密算法,这对于通信双方的数据仍然不能提供足够的安全保护。
如图2,第二种情况下浏览器通过SSL安全代理和SSL安全网关与服务器建立安全连接。在这种情况下,SSL安全代理接管了浏览器的安全功能.可以提供对高强度加密算法的支持,数据的安全传输不受浏览器所能提供的安全能力的限制。
本系统的开发环境为:安全客户机使用的是Intel双核2.8GHz,2G RAM PC机,操作系统W indows2003,安全服务器使用的是SUN-SPARC,操作系统Solaris9.0。开发工具为Java,它允许开发者可以任意选择开发的平台,采用了PHAOS公司开发的一套快速建立SSL应用程序的软件开发工具Phaos SSLava Toolkit。
本系统主要包括身份认证模块、握手消息处理模块、记录层处理模块以及管理配置模块。下面详细介绍各主要功能模块的实现。
3.1 身份认证模块
由于本系统接管了浏览器端(医生浏览器、患者浏览器)与远端会诊服务器之间的SSL会话,因此浏览器原有的证书管理模块己变为无效,有关CA证书、用户证书、服务器证书的管理和维护以及身份认证的过程应由本系统来完成。
在建立SSL连接时,浏览器端安全代理和会诊服务器端安全网关需要分别从各自的证书库中读取证书。会诊服务器端的证书库中必须有两类证书,分别是服务器可信任的CA证书和被CA签名的服务器端证书。同样,浏览器端的证书库中通常也有两类证书。分别是浏览器端可信任的CA证书和被CA签名的浏览器端站点证书。如果不需要对浏览器方进行认证,则浏览器端的证书库只需要有浏览器端可信任的CA证书即可。
双向身份认证的具体流程如图3所示:
图3 双向身份认证流程图
3.2 握手消息处理模块
浏览器端的握手过程和会诊服务器端的握手过程是相互交叉的,二者需要经过多次消息的交互,才能完成整个握手过程。首先,客户端向服务器发送一个ClientHello消息以建立连接,服务器必须响应一个相应的ServerHello消息,否则产生错误并导致此次连接失败。客户端发送的消息和服务器响应的消息不仅用于建立连接,还用于建立客户端和服务器之间安全通信的协议版本、会话ID、密码组和压缩算法。
握手消息处理是本系统中的最重要也是最复杂的部分,在整个握手过程中通信双方共有10种类型的消息需要处理,每一种消息都有它特定的数据结构和内容。在实际应用中,客户方的握手过程和服务器方的握手过程是相互交叉的,二者需要经过多次消息的交互,才能完成整个握手过程。因此如何对各种握手消息进行统一处理以及如何保证握手过程中通信双方消息的同步,是握手消息处理模块的关键问题所在。在实现时,采用“消息类型/状态/动作”机制采用这种机制处理所有的握手消息也提高了系统的确定性和可靠性。
当浏览器端收到服务器端的消息以后,如果会诊服务器端要求对浏览器进行身份认证,浏览器端将自己的证书发送给服务器方,然后发送消息,如果不需要对浏览器端进行认证,则直接发送该消息。浏览器端产生一个随机数作为准密数,并用对方的公开密钥加密后作为消息的内容发送给服务器方。服务器方收到该消息后用自己的私钥对加密数据进行解密,从而浏览器端与服务器端具有相同的准密数然后双方以此准密数为基数,经过一定的算法计算出密数。
下面以加密套件SSL_RSA_W ITH_DES_CBC_ SHA为例说明上述切分过程。由于加密所采用的算法是DES_CBC,其密钥的长度为7字节;散列函数采用SHA,其M AC的长度为20字节,因此就得到了如下的切分过程:
其中key_block[0~19]表示key_block中的前20字节,key_block[20~39]表示key_block中第21到第40字节,其余各处的类似形式含义相同。
3.3 记录层处理模块
记录层处理模块主要完成数据的分段/组装、填充/恢复、以及数据的完整性检查,由于目前没有合适的压缩算法的支持,因此记录层尚不能支持压缩/解压缩的功能。在SSL中,所有来自上层的数据(包括握手消息、改变密码参数消息、报警消息、应用数据等)部首先被分段和填充,每一数据段作为一个记录,对每个记录计算其MAC值并附加在该记录的末尾,然后将整个记录进行加密,在加密后的记录首部再添加一个记录头,记录头包括数据类型、数据长度和协议版本信息。因此,每一个SSL记录都包括记录头、实际数据、填充数据和MAC这几部分。
图4和图5分别是记录层自上而下和自下而上的处理流程图,这里所说的自上而下是指数据由握手层经记录层处理传到TCP层的过程,自下而上是指数据由TCP层经记录层传至握手层的过程,是上述过程的逆过程。
图4 记录层自上而下的处理流程
图5 记录层自下而上的流程图
系统测试是保证软件工程质量的重要环节。在测试过程中,不仅能够发现系统的错误,还能对系统的性能做出客观评价。基于SSL协议的远程医疗系统安全性研究的测试与传统的软件测试不同。它不但要检查和验证是否按照设计的要求运行,而且还要测试在不同用户的浏览器端,其运行是否正常。因而它是系统完成和验收过程中不可缺少的重要环节。基于SSL协议的远程医疗安全性研究采用如下图6所示的路线。
按照图6所示的测试路线对系统进行测试后得出,该系统应用于我公司开发的贝斯达医学影像远程医疗诊断系统,达到预期目标,具有远程医疗安全性的基本功能。
图6 系统测试路线
[1] Rolf Stadler, Cristinna Aurrecoechea. Call for papers on high-speed network security-architecture, algorithms and implementation. Selected Areas in Communications, IEEE Journal on Volume 23, Issue 5, May 2005 Page(s): 1124-1125.
[2] 范江,冯登国. 安全协议理论与方法[M]. 科学出版社,2003.
[3] 王伟,王东辉. 远程医疗会诊的国内外现状及系统研究[J].1999,12(3):31-32.
[4] 施雪松,丁岳伟.基于Java2的SSL代理的实现,计算机工程,2002,vol28(8).
[5] 谭毓安,在Java中实现SSI端到端加密,计算机应用研究,2002, Vol19(8). ■
Design and Im p lement of Tele-medicine Security System Based on SSL
CHEN Wen-bo LUO Bin-bin
Shenzhen Basda Medical Apparatus Co., Ltd (Dongguan 523690)
With the development of multimedia and computer network, telemedicine system is confronted w ith serious network security. Presently, many of the famous commercial products of browsers and web servers support SSL(Secure Socket Layer) protocol internally. SSL has become the most prevailing WWW secure protocol. However, most of the electronic business secure protocols are subject to the lim itation of export regulations, and its source code isn't published. This paper analyzes SSL handshake protocol and describes the security of SSL in detail. Then, we propose the system design plan, critical technology and implement method of a secure web system based on JAVA In the end, the system was tested and it can satisfy the actual demand.
tele-medicine, network security, secure socket layer, SSL, JAVA
1006-6586(2010)09-0023-04
R197.324
A
2010-05-31
陈文波,总工程师;罗斌斌,总工程师