李建文,孔鳳娟
(陜西科技大學(xué) 電氣與信息工程學(xué)院,陜西 西安 710021)
Twofish加密算法在醫(yī)院遠程信息系統(tǒng)中的應(yīng)用
李建文,孔鳳娟
(陜西科技大學(xué) 電氣與信息工程學(xué)院,陜西 西安 710021)
為了解決醫(yī)院遠程信息系統(tǒng)客戶端的數(shù)據(jù)安全問題,提出利用Twofish加密算法對客戶端數(shù)據(jù)進行加密的算法。該算法的引入有效克服了手機內(nèi)存的有限性對加密技術(shù)的影響,對系統(tǒng)的安全性進行優(yōu)化。在對Twofish算法加密過程研究的基礎(chǔ)上,設(shè)計出基于Java客戶端代碼的安全實現(xiàn),并通過測試。
醫(yī)院遠程信息系統(tǒng);數(shù)據(jù)安全;Twofish;加密技術(shù);Java
在移動信息化迅速發(fā)展的今天,移動終端特別是手機在我國醫(yī)療事業(yè)上的應(yīng)用尚未得到很好的發(fā)展,制約其發(fā)展有多方面原因,其主要原因還是安全性問題[2]。醫(yī)院工作質(zhì)量的好壞取決于醫(yī)院信息系統(tǒng)的完善與否,因此對醫(yī)院信息系統(tǒng)的安全運行提出了更高要求。隨著信息技術(shù)的發(fā)展,醫(yī)院信息系統(tǒng)通常已具備較高的安全性,而數(shù)據(jù)安全卻一直存在隱患。數(shù)據(jù)安全隱患主要體現(xiàn)在信息的截獲、竊取、篡改和假冒上。
移動設(shè)備應(yīng)用中最薄弱環(huán)節(jié)是客戶機端設(shè)備,所以信息的安全性就顯得尤為重要。
由于醫(yī)院遠程信息系統(tǒng)涉及到病人的私人信息及醫(yī)院的機密治療技術(shù),如果系統(tǒng)再一步擴展還要涉及到金錢的交易等,因此對安全性要求會更高。無線環(huán)境中的安全受信道、手持設(shè)備等本身特有因素的影響,因此安全性難以保證。確保無線環(huán)境中的安全性(特別是對傳輸數(shù)據(jù)的保護)是系統(tǒng)首先應(yīng)該解決的問題。
該項目通過一種加密算法對客戶端數(shù)據(jù)進行加密,確保在數(shù)據(jù)信息傳輸過程中的安全。但是考慮到手機內(nèi)存的有限性,本文利用一種更加適用于手機等這種小容量設(shè)備的加密認證技術(shù),即基于Twofish算法的加密技術(shù),使手機成為更加可靠的應(yīng)用終端,使該遠程信息系統(tǒng)真正得到完善和擴展。
作為一種標(biāo)準(zhǔn)的數(shù)據(jù)加密算法,DES(Data Encryption Standard)的密鑰長度對于現(xiàn)在計算機的運行速度來說,在某些高機密的場合顯得有點不足,已經(jīng)不再安全,因此出現(xiàn)了一種更高標(biāo)準(zhǔn)的加密算法AES(Advanced Encryption Standard)代替了原來的DES。首先這種加密算法必須是塊加密,因為塊加密可以被用來對數(shù)據(jù)流進行加密,也可以被用來制造一些專用的數(shù)據(jù)加密設(shè)備。其次,這種加密算法必須使用更長的密鑰,更大的加密塊,更高的加密速度和靈活性。Twofish則是Counterpane公司向NIST提交的一種滿足AES要求的加密算法。Twofish采用 128 bit數(shù)據(jù)塊,128/192/256 bit可變長度密鑰。Twofish算法是進入NIST第二輪5種加密算法中的一種,具有加密速度快、結(jié)構(gòu)簡單容易實現(xiàn)、無弱密鑰、適應(yīng)性強[1]等特點。
基于Twofish算法特點及應(yīng)用性能,遠程信息系統(tǒng)采用此算法對系統(tǒng)的安全性進行優(yōu)化,使系統(tǒng)能適用手機等移動設(shè)備的無線環(huán)境,同時能讓用戶使用起來更加放心。
Twofish算法的加密過程如圖1[3]所示:開始處P(plain text)表示需要進行加密的128 bit數(shù)據(jù),即16 B。然后將這16 B分為 4組,每組32 bit,即 4 B。在循環(huán)之前首先對這四組數(shù)據(jù)分別用k0、k1、k2、k3進行異或操作,稱之為input whitening;然后對異或后的數(shù)據(jù)分組進行計算,計算后將 1~3、2~4組的數(shù)據(jù)對換,如此循環(huán) 15次,再1~3、2~4 對換一次。 對這 4 組數(shù)據(jù)分別用 k4、k5、k6、k7異或操作,稱之為 output whitening;最后將這 4組數(shù)據(jù)組合成16 B的數(shù)據(jù),也就是最后的密文C(cipher text),長度與加密前的同樣是128 bit。具體來說,加密前的plain text是128 bit,也就是 16 B。假設(shè)這 16 B分別是p0,…,p15,將 p0,…,p15 分為 4 組,即 P0,…,P3,四個字先進行下面的數(shù)學(xué)運算:
在輸入階段,這些字與4個密鑰擴展進行異或運算:
在16次循環(huán)的每一次中,4組數(shù)據(jù)的前兩組與當(dāng)前循環(huán)次數(shù)通過F進行計算,計算出2組數(shù)據(jù)。第3組數(shù)據(jù)與計算出的第1組數(shù)據(jù)“異或”,然后向右循環(huán)移動一位。第4組數(shù)據(jù)向左循環(huán)移動一位,然后異或計算出的第2組數(shù)據(jù)。然后將1~3、2~4組數(shù)據(jù)對換,作為下一輪計算的數(shù)據(jù)。程序表示如下:
這里 r=0,…,15,ROR和 ROL是一種循環(huán)移位函數(shù),根據(jù)的第二個參數(shù)來決定是左移還是右移第一個參數(shù)。
輸出階段不再在最后一輪進行交換。而只是將結(jié)果與4個鑰字進行異或。
C(i)=R(16,(i+2)mod4)⊕Ki+4,其中 i,j=0,…,3
在加密過程中,Twofish使用了兩個函數(shù)即F函數(shù)和G函數(shù)。G函數(shù)是Twofish的核心,輸入一個字并讓該字的每一個字節(jié)通過一個不同的依賴于密鑰的S盒,然后輸出4個字節(jié),用矩陣表示為:
其中:X0、X1、X2、X3 是輸入字節(jié),Y0、Y1、Y2、Y3 是 輸出字節(jié)。
F函數(shù)是一個基于64 bit的密鑰獨立的交換過程,它帶3個參數(shù)、2個輸入字R0和R1,以及輪數(shù)r(用來選擇合適的字密鑰)。R0通過G函數(shù)傳遞,它產(chǎn)生T0;R1被左移位8 bit,然后通過 G函數(shù)產(chǎn)生T1。T0和 T1被結(jié)合并加入兩個密鑰擴展字。
由上面的過程描述可以看出,Twofish是一個用32 bit的偽哈德馬轉(zhuǎn)換PHT混合函數(shù)的輸出。偽哈德馬轉(zhuǎn)換PHT(Pseudo Hadamard Transforms)是一種簡單快速的混合操作,例如給出 2個輸入值a和b,則32 bit的PHT操作可以被定義為[3]:
本項目對數(shù)據(jù)安全的設(shè)計是在不改變用戶硬件、不改變底層通信協(xié)議(如Http等)的基礎(chǔ)上通過應(yīng)用層的解決方案來保證數(shù)據(jù)不在路途被篡改、截取或假冒。
根據(jù)上述原則,得出如圖2所示的系統(tǒng)安全性研究的總模型和工作流程圖。
說明:
①表示客戶將輸入的數(shù)據(jù)信息(用戶登錄、用戶查詢、注冊、預(yù)約等)發(fā)送給服務(wù)器端,同時將輸入的信息利用Twofish算法進行加密。
②對輸入的登錄信息進行加密后再傳給服務(wù)器。
③表示服務(wù)器通過JDBC訪問后臺數(shù)據(jù)庫,利用SQL語句對數(shù)據(jù)庫進行查詢、修改等操作。
④如果沒有查到數(shù)據(jù)或輸入信息有誤則返回給服務(wù)器,同時將沒查到結(jié)果或錯誤信息返回給客戶端。
⑤表示如果在數(shù)據(jù)庫中查詢到與SQL語句條件相匹配的數(shù)據(jù)信息,將此信息連同用戶登錄信息一起進行Twofish加密。
⑥表示將加密后的所有信息返回至服務(wù)器。
⑦表示服務(wù)器處理完之后再逐級返回,直到用戶得到相應(yīng)的查詢信息成功或登錄失敗信息。
系統(tǒng)設(shè)計均采用Java語言實現(xiàn)各種安全功能,其中使用的算法提供者采用了Bouncy Castle JCE,因為在眾多的提供者中,它是最安全的,并可免費獲得。首先,在原來系統(tǒng)的基礎(chǔ)上增加一個類hosTwofish,接著就要考慮如何將客戶端的數(shù)據(jù)進行加密傳輸和將查詢到的數(shù)據(jù)查詢后再解密顯示于客戶端。其實Twofish加解算法已經(jīng)比較完善了,現(xiàn)在主要任務(wù)是如何把此算法運用于該系統(tǒng)數(shù)據(jù)加/解密中。一個最簡單的方法就是在原來的數(shù)據(jù)操作的過程前后分別調(diào)用該類的加密方法blockEncrypt(byte[]input,int inOffset,object sessionKey),其中input表示明文,inOffset表示數(shù)據(jù)開始的位置,sessionKey表示用于加密的會話密鑰;解密方法blockDecrypt(byte[]input,int inOffset,object sessionKey),其中input表示密文,inOffset表示數(shù)據(jù)開始的位置,sessionKey表示用于解密的會話密鑰。然后創(chuàng)建一個類HosTwofish對象hosTwofish,再通過調(diào)用解密方法blockEncrypt()對輸入的信息sessfonKey進行加密。同理,解密同樣先創(chuàng)建對象hosTwofish,再通過調(diào)用解密方法blockDecrypt()對查詢到的數(shù)據(jù)信息sessionKey進行解密,然后通過XML字符解析返回至客戶端。
為了說明Twofish算法應(yīng)用到醫(yī)院遠程信息系統(tǒng)中保證數(shù)據(jù)傳輸安全的有效性和優(yōu)越性,本文對系統(tǒng)的數(shù)據(jù)安全性進行了測試,從兩個方面說明了Twofish算法應(yīng)用到醫(yī)院遠程信息系統(tǒng)優(yōu)點。
加密算法選擇的不合適就會影響系統(tǒng)的訪問時間。采用Twofish算法進行加密處理對系統(tǒng)的響應(yīng)時間影響不大,而用普通的加密技術(shù),則會使系統(tǒng)的響應(yīng)時間明顯增加。
通過大量的系統(tǒng)測試發(fā)現(xiàn),系統(tǒng)有很好的安全性,沒有出現(xiàn)過數(shù)據(jù)丟失和數(shù)據(jù)被修改的現(xiàn)象。
將Twofish算法應(yīng)用到醫(yī)院遠程信息系統(tǒng)用以保證數(shù)據(jù)的安全性是系統(tǒng)的一個顯著創(chuàng)新。項目從保證數(shù)據(jù)遠程傳輸?shù)陌踩猿霭l(fā),綜合考慮手持設(shè)備內(nèi)存局限性及訪問的數(shù)據(jù)量,優(yōu)化客戶端設(shè)計,使構(gòu)建的系統(tǒng)具有較強的應(yīng)用性和實用性。
[1]李占江.Twofish算法的優(yōu)化及其在移動支付系統(tǒng)中的實現(xiàn)[J].微計算機信息,2007,23(12):6-8.
[2]沈崇德.無線移動技術(shù)在現(xiàn)代醫(yī)院管理中的應(yīng)用[J].中國數(shù)字醫(yī)學(xué),2009,4(4):14-16.
[3]劉知貴,楊立春,蒲潔.基于 Twofish算法的標(biāo)書加解密研究[J].計算機應(yīng)用,2004,24(6).
[4]張和君,張躍.遠程心電監(jiān)護軟件系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與應(yīng)用,2006,42(15):219-224.
[5]PU ZHANG,YUICHI KOGURC,HIROKI MATSUOKA,et al.A remotepatientmonitoring system using aJavaenabled 3G Mob. Proceedings of the 29th Annual International Conference of the IEEE EMBS clte internationale,Lyon,F(xiàn)rance,2007,8.
The applications of Twofish using in the remote information system
Li Jianwen,Kong Fengjuan
(College of Electric& Information Engineering,Shaanxi University of Science& Technology,Xi’an 710021,China)
In order to solve the hospital information system data remote client security problems,using Twofish encryption algorithm for client data encryption algorithm is introduced.The mobile phone memory effectively overcome the limitation of encryption technology,so as to affect the security of the system is optimized.Based on Twofish algorithm encryption process on the basis of this,the client is designed based on Java code,and through the safety test.
remote information system using in hospital;data security;Twofish;encryption technology;Java
TP311.1
A
1674-7720(2011)03-0012-03
2010-09-01)
李建文,男,1959年生,教授,主要研究方向:嵌入式系統(tǒng)及應(yīng)用。
孔鳳娟,女,1980年生,碩士研究生,主要研究方向:嵌入式系統(tǒng)及應(yīng)用等。