摘 要:为了解决医院远程信息系统客户端的数据安全问题,提出利用Twofish加密算法对客户端数据进行加密的算法。该算法的引入有效克服了手机内存的有限性对加密技术的影响,对系统的安全性进行优化。在对Twofish算法加密过程研究的基础上,设计出基于Java客户端代码的安全实现,并通过测试。
关键词:医院远程信息系统;数据安全;Twofish;加密技术;Java
在移动信息化迅速发展的今天,移动终端特别是手机在我国医疗事业上的应用尚未得到很好的发展,制约其发展有多方面原因,其主要原因还是安全性问题[2]。医院工作质量的好坏取决于医院信息系统的完善与否,因此对医院信息系统的安全运行提出了更高要求。随着信息技术的发展,医院信息系统通常已具备较高的安全性,而数据安全却一直存在隐患。数据安全隐患主要体现在信息的截获、窃取、篡改和假冒上。
移动设备应用中最薄弱环节是客户机端设备,所以信息的安全性就显得尤为重要。
由于医院远程信息系统涉及到病人的私人信息及医院的机密治疗技术,如果系统再一步扩展还要涉及到金钱的交易等,因此对安全性要求会更高。无线环境中的安全受信道、手持设备等本身特有因素的影响,因此安全性难以保证。确保无线环境中的安全性(特别是对传输数据的保护)是系统首先应该解决的问题。
该项目通过一种加密算法对客户端数据进行加密,确保在数据信息传输过程中的安全。但是考虑到手机内存的有限性,本文利用一种更加适用于手机等这种小容量设备的加密认证技术,即基于Twofish算法的加密技术,使手机成为更加可靠的应用终端,使该远程信息系统真正得到完善和扩展。
1 Twofish算法的提出
作为一种标准的数据加密算法,DES(Data Encryption Standard)的密钥长度对于现在计算机的运行速度来说,在某些高机密的场合显得有点不足,已经不再安全,因此出现了一种更高标准的加密算法AES (Advanced Encryption Standard)代替了原来的DES。首先这种加密算法必须是块加密,因为块加密可以被用来对数据流进行加密,也可以被用来制造一些专用的数据加密设备。其次,这种加密算法必须使用更长的密钥,更大的加密块,更高的加密速度和灵活性。Twofish则是Counterpane公司向NIST提交的一种满足AES要求的加密算法。Twofish采用128 bit数据块,128/192/256 bit可变长度密钥。Twofish算法是进入NIST第二轮5种加密算法中的一种,具有加密速度快、结构简单容易实现、无弱密钥、适应性强[1]等特点。
基于Twofish算法特点及应用性能,远程信息系统采用此算法对系统的安全性进行优化,使系统能适用手机等移动设备的无线环境,同时能让用户使用起来更加放心。
3 利用Twofish算法优化客户端
本项目对数据安全的设计是在不改变用户硬件、不改变底层通信协议(如Http等)的基础上通过应用层的解决方案来保证数据不在路途被篡改、截取或假冒。
根据上述原则,得出如图2所示的系统安全性研究的总模型和工作流程图。
说明:
①表示客户将输入的数据信息(用户登录、用户查询、注册、预约等)发送给服务器端,同时将输入的信息利用Twofish算法进行加密。
②对输入的登录信息进行加密后再传给服务器。
③表示服务器通过JDBC访问后台数据库,利用SQL语句对数据库进行查询、修改等操作。
④如果没有查到数据或输入信息有误则返回给服务器,同时将没查到结果或错误信息返回给客户端。
⑤表示如果在数据库中查询到与SQL语句条件相匹配的数据信息,将此信息连同用户登录信息一起进行Twofish加密。
⑥表示将加密后的所有信息返回至服务器。
⑦表示服务器处理完之后再逐级返回,直到用户得到相应的查询信息成功或登录失败信息。
4 优化后的系统客户端的代码设计
系统设计均采用Java语言实现各种安全功能,其中使用的算法提供者采用了Bouncy Castle JCE,因为在众多的提供者中,它是最安全的,并可免费获得。首先,在原来系统的基础上增加一个类hosTwofish,接着就要考虑如何将客户端的数据进行加密传输和将查询到的数据查询后再解密显示于客户端。其实Twofish加解算法已经比较完善了,现在主要任务是如何把此算法运用于该系统数据加/解密中。一个最简单的方法就是在原来的数据操作的过程前后分别调用该类的加密方法blockEncrypt(byte[] input, int inOffset,object sessionKey),其中input表示明文,inOffset表示数据开始的位置,sessionKey表示用于加密的会话密钥;解密方法blockDecrypt(byte[] input,int inOffset,object sessionKey),其中input表示密文,inOffset表示数据开始的位置,sessionKey表示用于解密的会话密钥。然后创建一个类HosTwofish对象hosTwofish,再通过调用解密方法blockEncrypt()对输入的信息sessfonKey进行加密。同理,解密同样先创建对象hosTwofish,再通过调用解密方法blockDecrypt()对查询到的数据信息sessionKey进行解密,然后通过XML字符解析返回至客户端。
5 测试应用效果
为了说明Twofish算法应用到医院远程信息系统中保证数据传输安全的有效性和优越性,本文对系统的数据安全性进行了测试,从两个方面说明了Twofish 算法应用到医院远程信息系统优点。
(1)对访问的速度影响小
加密算法选择的不合适就会影响系统的访问时间。采用Twofish算法进行加密处理对系统的响应时间影响不大,而用普通的加密技术,则会使系统的响应时间明显增加。
(2)数据的安全性得到很好的保证
通过大量的系统测试发现,系统有很好的安全性,没有出现过数据丢失和数据被修改的现象。
将Twofish算法应用到医院远程信息系统用以保证数据的安全性是系统的一个显著创新。项目从保证数据远程传输的安全性出发,综合考虑手持设备内存局限性及访问的数据量,优化客户端设计,使构建的系统具有较强的应用性和实用性。
参考文献
[1]李占江.Twofish算法的优化及其在移动支付系统中的实现[J].微计算机信息,2007,23(12):6-8.
[2] 沈崇德.无线移动技术在现代医院管理中的应用[J].中国数字医学,2009,4(4):14-16.
[3] 刘知贵,杨立春,蒲洁.基于Twofish算法的标书加解密研究[J].计算机应用,2004,24(6).
[4] 张和君,张跃.远程心电监护软件系统的设计与实现[J].计算机工程与应用,2006,42(15):219-224.
[5] PU ZHANG, YUICHI KOGURC, HIROKI MATSUOKA, et al. A remote patient monitoring system using a Java-enabled 3G Mob. Proceedings of the 29th Annual International Conference of the IEEE EMBS clte internationale, Lyon, France, 2007, 8.