FEAL加密算法的安全性研究

FEAL作為一種快速的加密算法,在安全性要求較低的領(lǐng)域中,有著非常廣闊的應(yīng)用前景。

FEAL加密算法屬于對(duì)稱密鑰體制,64位密鑰加密64位明文,其加密變換采用交替使用換字、換位,以使在密文中消失明文的痕跡,具體過(guò)程可分為初始變換、運(yùn)用服務(wù)函數(shù)f的n次重復(fù)迭代、逆初始變換3部分。其加密算法如圖所示:

FEAL加密算法流程圖

FEAL加密算法過(guò)程簡(jiǎn)述:
一個(gè)64位的明文分組后與64位的的密鑰相異或;數(shù)據(jù)分組被分成左半部分和右半部分。左半部分與右半部分相異或構(gòu)成新的右半部分,左半部分和新的右半部分運(yùn)行n輪,在每一輪中,右半部分與16位密鑰混合,然后與左半部分異或,從而構(gòu)成新的右半部分,在N輪之后,左部分再次與右半部分異或構(gòu)成新的右半部分,然后左右部分被連接起來(lái)構(gòu)成全64位。這個(gè)數(shù)據(jù)分組與密鑰的另外64位相異或,算法結(jié)束。

解密算法為其逆過(guò)程,加解密所用的密鑰是由64位主密鑰K經(jīng)過(guò)子密鑰生成算法產(chǎn)生的N+8個(gè)各為兩節(jié)字的子密鑰K0—Kn+8,其子密鑰產(chǎn)生如下圖所示:

FEAL子密鑰生成流程圖

流程簡(jiǎn)述:
首先,將64位密鑰分成兩部分,這兩部分異或,并通過(guò)圖中的函數(shù)fk進(jìn)行計(jì)算,兩個(gè)32位的輸入被分成8位的分組,然后進(jìn)行混合和代替,而后,16位密鑰分組就可用于加密解密算法中。

提高FEAL加密算法密文與明文間比特依賴的方法
傳統(tǒng)的密碼安全分析觀點(diǎn)認(rèn)為:每位密文與對(duì)明文的有效依賴性越強(qiáng),則加密方案的保密性愈強(qiáng),提高FEAL算法的安全性,就要使得密文與更多位的明文存在依賴性。

1、采用S函數(shù)的變形函數(shù)S',在FEAL算法中,S函數(shù)為循環(huán)左移2位,可使S函數(shù)的變形函數(shù)S'為環(huán)左移1位,即為S'(X1,X2,δ)=rot(ω),其中X1,X2, δ, ω與其在S畫數(shù)中的含義一致。

在使用S'后,F(xiàn)EAL-4輸出的每位密文位只與明文的半數(shù)位有比特間依賴性,而FEAL-16,F(xiàn)EAL-32,F(xiàn)EAL64等就可使輸出的每位密文位與所有明文位產(chǎn)生比特依賴性。使用修改S'函數(shù)這一方法不增加FEAL算法重復(fù)迭代次數(shù),在占用機(jī)器時(shí)間上,修改后的S'比原算法中的S占用更少。這只對(duì)FEAL-16,F(xiàn)EAL-32, FEAL-64等有效,而對(duì)FEAL-4,F(xiàn)EAL-8必須同時(shí)增加迭代次數(shù),也就相應(yīng)地降低了連度。故此修改適于N大于或等于16的 FEAL-N算法,且不影響FEAL加密算法的快速性。

2、增加奇、偶位變換操作??稍诿?次迭代重復(fù)時(shí),使每個(gè)密文位與每個(gè)明文位產(chǎn)生比特依賴性。對(duì)FEAL-16而言,只需增加條Ri循環(huán)左移一位指令,即rot1(R).FEAL32,FEAL64分別要增加3條7條rot1(R)指令,CPU處理一條rot1(Ri)只占用2個(gè)時(shí)鐘周期,故此變換操作對(duì)FEAL加密算法的速度影響甚小,只是對(duì)FEAL-4,F(xiàn)EAL-8無(wú)效。