如何用X-IDEA加密算法來實現(xiàn)手機通信中的圖文加密
隨著國內(nèi)3G推廣,手機應用的領域進一步擴大,即時通信和圖文傳輸?shù)雀臃奖?。傳輸?shù)據(jù)進行加密處理以保證通信數(shù)據(jù)的安全性變得尤為重要,特別在于手機用戶通信的過程中進行圖文傳輸,既要考慮傳輸質(zhì)量,更要考慮傳輸安全,因此必須采取必要的加密操作。但受限于手機設備的有限性能,其運算能力還無法與計算機相提并論,因此其加密技術更加值得大家去努力突破。
一、手機加密解密
1973年IBM公司設計了DES加密算法,多年來DES加密算法一直作為非常安全的加密算法被用于各種數(shù)據(jù)的保護,但隨著科技的進步,DES加密算法也因密鑰長度短(56位)、密碼空間小,現(xiàn)有的計算機的采用窮舉法進行破解來獲取正確密鑰己趨于可行。同樣,傳統(tǒng)64位GSM手機網(wǎng)絡加密技術于2009年被28歲的德國電腦工程師Karsten Noh公開破解,任何人都可以利用破解出來的密碼本破譯截獲的手機信息。
而IDEA(Intemation Data En cryption Algorithm)數(shù)據(jù)加密算法是由我國的來學嘉博士和著名的密碼專家James L.Massey子1990年聯(lián)合提出的,該加密算法用硬件和軟件賣現(xiàn)都很容易,而且比DES在實現(xiàn)上快的多。
IDEA也被認為是目前世界上最好最安全的分組加密算法,且對計算功能要求不高,所以可以方便地使用在手機中。IDEA的密鑰長度是128位,在窮舉攻擊的情況下,IDEA需要經(jīng)過2128次加密才能恢復出密鑰,假設芯片每秒能檢測100億個密鑰,需要10年,故其安全性很高。
二、IDEA數(shù)據(jù)加密算法
IDEA數(shù)據(jù)加密算法是對64bit大小的數(shù)據(jù)塊加密的分組加密算法,它是基于“相異代數(shù)群上的混合運算”的設計思想,該加密算法既可用于加密,又可用于解密。
1、子密鑰的生成
IDEA加密算法加密和解密都各自需要52個子密鑰,每一個子密鑰16位,由128位密鑰生成。加密子密鑰的生成過程是:對128位密鑰進行分組處理,分成8組,每組16位,從而可以得到8個加密子密鑰,將前面生成的8個加密子密鑰128位循環(huán)左移25位,又做一次16位分組,從而又可以得到8個加密子密鑰,如此循環(huán),將這個過程循環(huán)7次,在第7次的循環(huán)中,只需取前面的4個加密子密鑰,至此便產(chǎn)生了全部的52個加密子密鑰。
解密子密鑰的生成過程是:首先根據(jù)密鑰生成加密子密鑰,然后對加密子密鑰進行換位操作,最后對換位操作后的加密子密鑰進行部分子密鑰的模216的加密逆運算和剩余部分子密鑰的模(216+1)的乘法逆運算。
2、加密解密過程
IDEA加密算法中,明文長度為64位。加密過程是:對明文進行分組處理,分為4組:X1、X2、X3、X4,每組16位。X1、X2、X3、X4作為第一輪的輸入,在每一輪中,4個輸入分組與6個16位加密子密鑰分別做模216的加法、模(216+1)的乘法和異或操作,得到四個輸出結果,將其又作為下一輪的輸入。如此循環(huán)進行八輪操作。將最后得到的結果再與4個加密子密鑰作輸出變化,從而得到最后的加密密文。
解密過程是加密過程的逆,在解密的過程中只需把加密子密鑰替換為解密子密鑰就可以實現(xiàn)對加密的密文文件進行解密。
三、X-IDEA加密算法如何給手機圖文加密和解密
IDEA加密算法中,明文的長度固定且比較短只有64位,而在手機通信系統(tǒng)上對于通信的消息中相同的部分會被加密成相同的密文,從而暴露了明文的數(shù)據(jù)格式和某些統(tǒng)計學特性,降低了明文的保密性。根據(jù)即時通信傳輸?shù)南⒌拈L度不一定性和消息存在相同部分可能性比較大的特點,因此本系統(tǒng)提出對IDEA加密算法進行改進,即X-IDEA加密算法,使之更適合運用于手機通信系統(tǒng)中圖文文件的加密、解密處理,同時改進的加密算法經(jīng)過測算其被窮舉突破在目前的技術和普通計算機的計算能力下當前基本無法實現(xiàn),所以該加密算法對于解決手機圖文通信的安全是有保障的。
1、X-IDEA加密算法設計
本系統(tǒng)設計的X-IDEA加密算法,使之更適合運用于手機即時通信系統(tǒng)中圖文文件加密和解密。它主要從明文的長度、加密過程和解密過程三個部分對傳統(tǒng)的IDEA加密算法做了改進。X-IDEA加密算法實現(xiàn)對手機圖文傳輸中加密和解密的流程如圖1所示。

(1)明文長度
X-IDEA加密算法中,明文的長度不再做限制,明文的分組長度為64位。因為明文的長度不做限制,因此對明文文件加密,需要對明文進行重組判斷,如果明文的長度冪 64的整數(shù)倍,將對明文進行重組,在明文末尾加上一些特殊字符,使明文的長度達到64的整數(shù)倍,如果明文的長度是64的整數(shù)倍,則不做重組處理。
(2)文件加密過程
加密前先根據(jù)文件的大小判斷是否對文件進行壓縮,然后獲取文件的屬性,并連同從數(shù)碼鎖中產(chǎn)生的密鑰隨機索引一同保存于文件的頭信息中,然后創(chuàng)建一個臨時文件,并將文件頭所包含的信息寫入其中。接下來判斷文件長度是否為64的倍數(shù),若是則按照分組加密的方法進行加密,否則在文件尾部填充隨機函數(shù)產(chǎn)生的隨機數(shù)X,使得文件的長度剛好是64的倍數(shù),之后再進行分組加密,并把加密結果寫入臨時文件,刪除原文件后將臨時文件命名為原文件。這樣的輸入輸出機制保證了文件的屬性和文件名在加密前后的一致性。
(3)文件解密過程
解密時首先從數(shù)據(jù)塊中讀出文件頭信息,根據(jù)頭信息中的密鑰索引取出加密密鑰得到加密子密鑰,再由解密模塊的對應關系求得解密密鑰,然后分塊解密密文,解密后的數(shù)據(jù)中包括原文件數(shù)據(jù)和填充到原文件尾部的隨機數(shù),根據(jù)文件頭信息中保存的文件實際長度,恢復原文件明文。
X-IDEA加密算法推理如下:
加密過程:

從上述方程可以計算出:

因此,明文經(jīng)過加密,再經(jīng)過解密,產(chǎn)生加密前的明文,說明該加密算法正確。
2、 X-IDEA加密解密實現(xiàn)
(1)加密過程
加密的過程是對重組后的明文進行分組處理,每組64位。由隨機數(shù)產(chǎn)生器隨機產(chǎn)生數(shù)據(jù)A,作為加密的初始數(shù)據(jù),A為64位,運用IDEA數(shù)據(jù)加密算法對數(shù)據(jù)A和除最后一個明文分組之外的所有明文分組進行加密,產(chǎn)生密文Co和密文分組D1,D2,D3,...,Dn-1;對密文C0再次進行加密操作,產(chǎn)生的密文CO’與明文P1進行異或操作C1=C0'+P1產(chǎn)生密文C1,再將密文D1與明文、P2進行異或操作產(chǎn)生密文C2,密文D2與與明文P3進行異或操作產(chǎn)生密文C3,依次方式進行運算產(chǎn)生直到所有的密文C=C1C2C3...Cn。最后將密文C0置于密文C頭部形成總的密文C=C0C1C2...Cn,一起發(fā)送給目標用戶。具體的加密算法描述如下:
∥加密算法
輸入:待加密的明文P和密鑰Ek
輸出:加密后的密文C
①X←randomXO; //由隨機數(shù)生成器生成64位數(shù)據(jù)X
②P←reform Data(P); //對明文進行重組處理,如果明文不是64的整數(shù)倍,則在明文字節(jié)數(shù)組后面添加特殊字符,直到滿足64的整數(shù)倍,如果是64的整數(shù)倍,則不做任何處理
③Array←group(P); //重組后的明文進行分組處理
④Co←encrypt(Ek,X);//對數(shù)據(jù)X使用IDEA數(shù)據(jù)加add(Co,C]加密
⑤add(Co,C);//將C0添加到結果集C中
⑥Co’←encrypt(Ek,X);
⑦for each Pi inArray
⑧Ci←CO'+Pi;//異或操作
⑨add(Ci,C); //將Ci添加到結果集C中
⑩if Pi不是最后一個分組
①Co’ ←_encrypt(Ek,Pi);
②_end for
③_retumC; //返回加密后的密文
④加密算法結束
(2)解密過程
解密的過程是對密文進行分組處理,分為C0,C1,C2,C3,…Cn(n+1)個組,每組也是64位。對密文的第一個分組Co使用IDEA數(shù)據(jù)加密算法進行加密,產(chǎn)生密文Co’,并將產(chǎn)生的密文CO’與密文C1進行異或操作,產(chǎn)生明文P1,對明文P1進行加密操作,將產(chǎn)生的密文與密文C2進行異或操作,產(chǎn)生明文P2,對明文P2進行加密操作,將產(chǎn)生的密文與C3進行異或操作,產(chǎn)生明文P3,依次方式進行運算,直到產(chǎn)生所有的明文P=P1P2P3...Pn。最后對產(chǎn)生的明文進行重組操作,去除在明文加密前重組時加入的特殊字符。具體的加密算法描述如下:
//解密算法
輸入:待解密的密文C和密鑰Ek
輸出:解密后的明文P
①Array←group(C);仍時密文進行分組處理
②CO’ ←encrypt(Ek, Co);仿寸密文的第一個分組使用IDEA數(shù)據(jù)加密算法進行加密處理
③for each Ci inArray
④Pi←CO'+Ci;//異或操作
⑤add(Pi,P); //將Pi添加到結果集P中
⑥CO’ ←encrypt(Ek, Pi);
⑦end for
⑧P←reform_data(P); //對解密后的明文進行重組,去掉添加的特殊字符
⑨retrunP;
⑩加密算法結束
3、加密解密的具體實現(xiàn)
根據(jù)X-IDEA加密算法進行的加密程序設計如圖2所示,C:\tljpg是加密源文件,而tt1.jpg是加密后的源文件,通過圖2的加密后可以發(fā)現(xiàn)tt1.jpg(圖3所示)已經(jīng)被加密而無法查看其原內(nèi)容,而使用該加密解密程序進行對應的解密程序可以還原tt1.jpg到t1.jpg,由此可以看出該算法的加解密過程是可以實現(xiàn)的;并且在Android基礎上進行了驗證,完成了手機通信中的圖文文件加密解密技術。


小知識之數(shù)據(jù)塊
數(shù)據(jù)塊是一組按順序連續(xù)排列在一起的幾組記錄,是主存儲器與輸入、輸出設備或外存儲器之間進行傳輸?shù)囊粋€數(shù)據(jù)單位。是數(shù)據(jù)的物理記錄,與數(shù)據(jù)的邏輯記錄(邏輯上有聯(lián)系,在存儲器上占有一組鄰接單元的數(shù)據(jù)單位)之間的對應關系有3種方式:①一個塊即為一個記錄;②一個塊包含若干個邏輯記錄;③一個邏輯記錄占有幾個塊。數(shù)據(jù)塊的大小可以是固定的或是可變的,塊與塊之間有間隙。設計數(shù)據(jù)塊大小,受到多方面因素的影響,包括輸入、輸出效率,存儲空間代價以及計算機應用特點等。









