摘 要: 為了解決醫(yī)院遠(yuǎn)程信息系統(tǒng)客戶端的數(shù)據(jù)安全問(wèn)題,提出利用Twofish加密算法對(duì)客戶端數(shù)據(jù)進(jìn)行加密的算法。該算法的引入有效克服了手機(jī)內(nèi)存的有限性對(duì)加密技術(shù)的影響,對(duì)系統(tǒng)的安全性進(jìn)行優(yōu)化。在對(duì)Twofish算法加密過(guò)程研究的基礎(chǔ)上,設(shè)計(jì)出基于Java客戶端代碼的安全實(shí)現(xiàn),并通過(guò)測(cè)試。
關(guān)鍵詞: 醫(yī)院遠(yuǎn)程信息系統(tǒng);數(shù)據(jù)安全;Twofish;加密技術(shù);Java
在移動(dòng)信息化迅速發(fā)展的今天,移動(dòng)終端特別是手機(jī)在我國(guó)醫(yī)療事業(yè)上的應(yīng)用尚未得到很好的發(fā)展,制約其發(fā)展有多方面原因,其主要原因還是安全性問(wèn)題[2]。醫(yī)院工作質(zhì)量的好壞取決于醫(yī)院信息系統(tǒng)的完善與否,因此對(duì)醫(yī)院信息系統(tǒng)的安全運(yùn)行提出了更高要求。隨著信息技術(shù)的發(fā)展,醫(yī)院信息系統(tǒng)通常已具備較高的安全性,而數(shù)據(jù)安全卻一直存在隱患。數(shù)據(jù)安全隱患主要體現(xiàn)在信息的截獲、竊取、篡改和假冒上。
移動(dòng)設(shè)備應(yīng)用中最薄弱環(huán)節(jié)是客戶機(jī)端設(shè)備,所以信息的安全性就顯得尤為重要。
由于醫(yī)院遠(yuǎn)程信息系統(tǒng)涉及到病人的私人信息及醫(yī)院的機(jī)密治療技術(shù),如果系統(tǒng)再一步擴(kuò)展還要涉及到金錢的交易等,因此對(duì)安全性要求會(huì)更高。無(wú)線環(huán)境中的安全受信道、手持設(shè)備等本身特有因素的影響,因此安全性難以保證。確保無(wú)線環(huán)境中的安全性(特別是對(duì)傳輸數(shù)據(jù)的保護(hù))是系統(tǒng)首先應(yīng)該解決的問(wèn)題。
該項(xiàng)目通過(guò)一種加密算法對(duì)客戶端數(shù)據(jù)進(jìn)行加密,確保在數(shù)據(jù)信息傳輸過(guò)程中的安全。但是考慮到手機(jī)內(nèi)存的有限性,本文利用一種更加適用于手機(jī)等這種小容量設(shè)備的加密認(rèn)證技術(shù),即基于Twofish算法的加密技術(shù),使手機(jī)成為更加可靠的應(yīng)用終端,使該遠(yuǎn)程信息系統(tǒng)真正得到完善和擴(kuò)展。
1 Twofish算法的提出
作為一種標(biāo)準(zhǔn)的數(shù)據(jù)加密算法,DES(Data Encryption Standard)的密鑰長(zhǎng)度對(duì)于現(xiàn)在計(jì)算機(jī)的運(yùn)行速度來(lái)說(shuō),在某些高機(jī)密的場(chǎng)合顯得有點(diǎn)不足,已經(jīng)不再安全,因此出現(xiàn)了一種更高標(biāo)準(zhǔn)的加密算法AES (Advanced Encryption Standard)代替了原來(lái)的DES。首先這種加密算法必須是塊加密,因?yàn)閴K加密可以被用來(lái)對(duì)數(shù)據(jù)流進(jìn)行加密,也可以被用來(lái)制造一些專用的數(shù)據(jù)加密設(shè)備。其次,這種加密算法必須使用更長(zhǎng)的密鑰,更大的加密塊,更高的加密速度和靈活性。Twofish則是Counterpane公司向NIST提交的一種滿足AES要求的加密算法。Twofish采用128 bit數(shù)據(jù)塊,128/192/256 bit可變長(zhǎng)度密鑰。Twofish算法是進(jìn)入NIST第二輪5種加密算法中的一種,具有加密速度快、結(jié)構(gòu)簡(jiǎn)單容易實(shí)現(xiàn)、無(wú)弱密鑰、適應(yīng)性強(qiáng)[1]等特點(diǎn)。
基于Twofish算法特點(diǎn)及應(yīng)用性能,遠(yuǎn)程信息系統(tǒng)采用此算法對(duì)系統(tǒng)的安全性進(jìn)行優(yōu)化,使系統(tǒng)能適用手機(jī)等移動(dòng)設(shè)備的無(wú)線環(huán)境,同時(shí)能讓用戶使用起來(lái)更加放心。
3 利用Twofish算法優(yōu)化客戶端
本項(xiàng)目對(duì)數(shù)據(jù)安全的設(shè)計(jì)是在不改變用戶硬件、不改變底層通信協(xié)議(如Http等)的基礎(chǔ)上通過(guò)應(yīng)用層的解決方案來(lái)保證數(shù)據(jù)不在路途被篡改、截取或假冒。
根據(jù)上述原則,得出如圖2所示的系統(tǒng)安全性研究的總模型和工作流程圖。
說(shuō)明:
?、俦硎究蛻魧⑤斎氲臄?shù)據(jù)信息(用戶登錄、用戶查詢、注冊(cè)、預(yù)約等)發(fā)送給服務(wù)器端,同時(shí)將輸入的信息利用Twofish算法進(jìn)行加密。
?、趯?duì)輸入的登錄信息進(jìn)行加密后再傳給服務(wù)器。
③表示服務(wù)器通過(guò)JDBC訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù),利用SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢、修改等操作。
④如果沒(méi)有查到數(shù)據(jù)或輸入信息有誤則返回給服務(wù)器,同時(shí)將沒(méi)查到結(jié)果或錯(cuò)誤信息返回給客戶端。
?、荼硎救绻跀?shù)據(jù)庫(kù)中查詢到與SQL語(yǔ)句條件相匹配的數(shù)據(jù)信息,將此信息連同用戶登錄信息一起進(jìn)行Twofish加密。
?、薇硎緦⒓用芎蟮乃行畔⒎祷刂练?wù)器。
?、弑硎痉?wù)器處理完之后再逐級(jí)返回,直到用戶得到相應(yīng)的查詢信息成功或登錄失敗信息。
4 優(yōu)化后的系統(tǒng)客戶端的代碼設(shè)計(jì)
系統(tǒng)設(shè)計(jì)均采用Java語(yǔ)言實(shí)現(xiàn)各種安全功能,其中使用的算法提供者采用了Bouncy Castle JCE,因?yàn)樵诒姸嗟奶峁┱咧?,它是最安全的,并可免費(fèi)獲得。首先,在原來(lái)系統(tǒng)的基礎(chǔ)上增加一個(gè)類hosTwofish,接著就要考慮如何將客戶端的數(shù)據(jù)進(jìn)行加密傳輸和將查詢到的數(shù)據(jù)查詢后再解密顯示于客戶端。其實(shí)Twofish加解算法已經(jīng)比較完善了,現(xiàn)在主要任務(wù)是如何把此算法運(yùn)用于該系統(tǒng)數(shù)據(jù)加/解密中。一個(gè)最簡(jiǎn)單的方法就是在原來(lái)的數(shù)據(jù)操作的過(guò)程前后分別調(diào)用該類的加密方法blockEncrypt(byte[] input, int inOffset,object sessionKey),其中input表示明文,inOffset表示數(shù)據(jù)開(kāi)始的位置,sessionKey表示用于加密的會(huì)話密鑰;解密方法blockDecrypt(byte[] input,int inOffset,object sessionKey),其中input表示密文,inOffset表示數(shù)據(jù)開(kāi)始的位置,sessionKey表示用于解密的會(huì)話密鑰。然后創(chuàng)建一個(gè)類HosTwofish對(duì)象hosTwofish,再通過(guò)調(diào)用解密方法blockEncrypt()對(duì)輸入的信息sessfonKey進(jìn)行加密。同理,解密同樣先創(chuàng)建對(duì)象hosTwofish,再通過(guò)調(diào)用解密方法blockDecrypt()對(duì)查詢到的數(shù)據(jù)信息sessionKey進(jìn)行解密,然后通過(guò)XML字符解析返回至客戶端。
5 測(cè)試應(yīng)用效果
為了說(shuō)明Twofish算法應(yīng)用到醫(yī)院遠(yuǎn)程信息系統(tǒng)中保證數(shù)據(jù)傳輸安全的有效性和優(yōu)越性,本文對(duì)系統(tǒng)的數(shù)據(jù)安全性進(jìn)行了測(cè)試,從兩個(gè)方面說(shuō)明了Twofish 算法應(yīng)用到醫(yī)院遠(yuǎn)程信息系統(tǒng)優(yōu)點(diǎn)。
(1)對(duì)訪問(wèn)的速度影響小
加密算法選擇的不合適就會(huì)影響系統(tǒng)的訪問(wèn)時(shí)間。采用Twofish算法進(jìn)行加密處理對(duì)系統(tǒng)的響應(yīng)時(shí)間影響不大,而用普通的加密技術(shù),則會(huì)使系統(tǒng)的響應(yīng)時(shí)間明顯增加。
(2)數(shù)據(jù)的安全性得到很好的保證
通過(guò)大量的系統(tǒng)測(cè)試發(fā)現(xiàn),系統(tǒng)有很好的安全性,沒(méi)有出現(xiàn)過(guò)數(shù)據(jù)丟失和數(shù)據(jù)被修改的現(xiàn)象。
將Twofish算法應(yīng)用到醫(yī)院遠(yuǎn)程信息系統(tǒng)用以保證數(shù)據(jù)的安全性是系統(tǒng)的一個(gè)顯著創(chuàng)新。項(xiàng)目從保證數(shù)據(jù)遠(yuǎn)程傳輸?shù)陌踩猿霭l(fā),綜合考慮手持設(shè)備內(nèi)存局限性及訪問(wèn)的數(shù)據(jù)量,優(yōu)化客戶端設(shè)計(jì),使構(gòu)建的系統(tǒng)具有較強(qiáng)的應(yīng)用性和實(shí)用性。
參考文獻(xiàn)
[1]李占江.Twofish算法的優(yōu)化及其在移動(dòng)支付系統(tǒng)中的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,23(12):6-8.
[2] 沈崇德.無(wú)線移動(dòng)技術(shù)在現(xiàn)代醫(yī)院管理中的應(yīng)用[J].中國(guó)數(shù)字醫(yī)學(xué),2009,4(4):14-16.
[3] 劉知貴,楊立春,蒲潔.基于Twofish算法的標(biāo)書加解密研究[J].計(jì)算機(jī)應(yīng)用,2004,24(6).
[4] 張和君,張躍.遠(yuǎn)程心電監(jiān)護(hù)軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,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.