淺析擴散加密算法

擴散加密算法是一種使用擴散算法進行數(shù)據加密/解密的算法。它使用擴散算法的原理,在處理過程中加入密匙,從而達到數(shù)據加密的目的。擴散算法有著完美的擴散率,進行數(shù)據加密可謂是“本職所在”。

擴散算法通過在元素之間建立擴散路徑,使元素沿著該路徑向其他元素擴散。每一個元素都沿著指定的路徑擴散,從而使元素間相互發(fā)生影響。

擴散算法的核心在于擴散過程,擴散過程由擴散網絡決定。所謂擴散,是指元素傳遞影響的過程,若元素A擴散到元素B,則當A發(fā)生改變時,B也發(fā)生改變。

若有N(N>=1)個元素組成的集合M。通過一定的規(guī)則使M中的元素相對應,如M1(起點)對應M4(終點),M4對應M8,M8對應M2,M2對應M6…,描述為Mi向Mj擴散,記作Mi→Mj;分別取出相對應的元素并組成表達式,通過一定的方法對表達式進行處理,再使用處理的結果更新被對應的元素(終點)。當起點元素發(fā)生改變時,終點元素也發(fā)生改變;在處理的過程中這種改變會發(fā)生傳遞,進而影響其他元素,最終影響所有元素。

在上述過程中,元素間的對應關系用擴散路徑(以下簡稱路徑)表示,起點元素(Mi)叫做原體,終點元素(Mj)叫做受體;由元素組成的表達式叫做擴算式;對擴算式的處理叫做擴散運算(為防止受體丟失,擴散運算時需加入受體一同運算);所有路徑的集合叫做擴散網絡(以下簡稱網絡);對整個網絡執(zhí)行一次擴散叫做一個周期。

建立網絡時,若要達到100%的擴散率,必須要保證所建立的網絡對于每一個輸入元素都能影響任何一個輸出元素;每個擴散式的擴散運算都必須滿足原體中任意元素的變化都將引起受體的變化(受體為元素組時,則元素組內的每一個元素都要發(fā)生變化)。

加密過程

第一步:建立擴散網絡,將分組中的元素以某種規(guī)則建立網絡(有序或無序);所建立的網絡必須滿足對于每一個輸入元素(X、Y、K)都能通過該網絡擴散到任意一個輸出元素中(X、Y)。

第二步:以路徑為基礎建立擴散式,擴散式的建立是為確認參與擴散運算的元素。如:

X[0]+K[0]+Y[4]→Y[4],Y[4]+K[0]+X[0]→X[0];

X[0]+K[0]+Y[2]→Y[2],Y[2]+K[0]+X[0]→X[0];

X[0]+K[0]+Y[1]→Y[1],Y[1]+K[0]+X[0]→X[0];

......

建立擴散式時,擴散式除包含路徑所連接的元素之外,還可以包含其他任意元素。

第三步:對擴散式進行擴散運算,并使用運算的結果更新受體。為防止受體丟失,需加入受體一同運算。如

Y[4]=FY(X[0], K[0], Y[4]), X[0] = FX(X[0], K[0], Y[4])。函數(shù)FX, FY是可逆函數(shù)。

解密過程與加密相反。

算法特性

密匙長度任意

擴散算法支持任意長度、任意數(shù)量的分組進行處理,擴散加密算法同理。建議分組長度N滿足

,x>=0且x為整數(shù)。擴散加密可以實現(xiàn)密匙和明文長度不等同,密匙即可以比明文短,也可以比明文長,具體可根據需要設定。

運算速度快

擴散加密算法的核心代碼只有幾行,所使用的運算操作可以是速度極快的

淺析擴散加密算法

運算(如加法運算、異或(xor)運算、置換運算和移位運算),且只需少量的擴散階段即可完成明文塊的加密(設N為明文長度,則只需

個擴散階段)。在每一階的擴散處理都可以使用并行處理,對于N長度的擴散處理,并行計算速度理論上比串行計算提高N倍。

擴散加密不需要顯式的對明文進行分組,可以直接對緩沖區(qū)進行(并行)處理,省去了明文的復制操作,進一步減少處理時間。

靈活的處理方式

網絡可以建立為有序的(圖1),也可以建立為無序的(圖2)。相同長度的分組,有多種網絡建立方案;豐富的擴散式建立方式,擴散式除包含路徑所連接的元素之外,還可以包含其他任意元素;豐富擴散運算方式,擴散運算可以使用任何函數(shù)進行運算(若需解密,則要求函數(shù)可逆)。

加密模式

擴散算法其良好的擴展性,可有如下加密模式:

對稱分組加密:使用擴散算法進行加密,對每一組明文的加密都使用的相同的密匙(可以在每一階都使用不同的密匙)。

對稱流加密:僅使用擴散算法生成子密匙流(參見生成隨機數(shù)),再使用所生成的密匙流和明文進行異或運算(xor)即可得到密文。使用可靠的擴散運算(函數(shù))再以消除線性,將使密匙重復變得遙遙無期。

對稱分組流加密:使用擴散算法以密匙為基礎生成子密匙流,再使用擴散算法對明文進行分組加密。此模式可以滿足對每一組明文的加密都使用不同的密匙。

半非對稱加密:應用擴散算法,可提高非對稱的加密效率。用非對稱加密數(shù)據時,不需要將整個明文組塊合成一個大整數(shù)進行加密,只需對明文中的各個元素(元素組)分別加密即可(密匙不同)。

此模式共分三次加密。設有明文M,長度為n;應用非對稱分別對M中的各個元素(M1,M2,M3…Mn)進行加密后得到T1;應用擴散算法對T1進行加密后得到T2;最后再次應用非對稱分別對T2中的各個元素加密得到密文C(密匙與第一次加密相同)。

全非對稱加密:設函數(shù)F與函數(shù)Fˊ為非對稱互斥函數(shù),通過F(Fˊ)加密后的數(shù)據只能通過F’(F)進行解密。應用擴散算法,在進行擴散運算的過程中使用F(Fˊ)進行加密,用Fˊ(F)進行解密即可。