隨機分組密碼加密算法

隨機分組密碼加密算法與固定結構的密碼加密算法不同,其比較難以分析。目前的分析方法僅限于信息論方式,它是將生成算法與等長的隨機置換相比較,隨機分組密碼加密算法的安全性證明是通過有限次明文、密文對的查詢以及不能區(qū)分生成的算法與等長的隨機置換來保證的。

隨機分組密碼加密算法

隨機分組密碼加密算法基本思想是將密鑰分成兩部分,即控制密鑰和加密密鑰。

1、控制密鑰

控制密鑰用于生成密碼算法,因而算法是隨機的,它隨著密鑰的不同而變化;加密密鑰用于生成子密鑰,用于加密算法??刂泼荑€選取方法要保證能生成足夠多不同的隨機密碼加密算法,同時生成的密碼加密算法能達到足夠的安全性使其密碼分析人員難以進行靜態(tài)分析??刂泼荑€又可以細分為加密算法控制密鑰和密鑰擴展算法控制密鑰兩部分。

(1)加密算法控制密鑰由若干個輪函數(shù)控制密鑰所組成,用于生成各輪的輪函數(shù),輪函數(shù)控制密鑰的個數(shù)即為加密算法的輪數(shù);

(2)密鑰擴展算法控制密鑰用于生成密鑰擴展算法。

2、加密密鑰

加密密鑰由所使用的密鑰擴展函數(shù)決定。加密時通過加密算法控制密鑰生成加密算法,通過使用加密密鑰得到的子密鑰進行加密;解密時通過加密算法控制密鑰生成解密算法,使用加密密鑰得到的子密鑰進行解密,其具體步驟如下:

1)系統(tǒng)初始化

(1)確定整個加密系統(tǒng)公用的一些參數(shù)(Wb,We,Wz,Wr,Ws,t)。其中:Wb為明、密文分組長度(假定明、密文長度相等);We為加密算法密鑰長度;Wz為算法每輪的子密鑰長度;Wr為輪函數(shù)控制密鑰的比特數(shù);Ws為密鑰擴展函數(shù)控制密鑰的比特數(shù);t為安全級別,即生成該隨機算法需要的最大差分概率至多為2-t,最大線性相關度至多為2-t。

整個加密算法密鑰K由三部分組成,即加密算法密鑰K1(長度為We)、輪函數(shù)生成算法控制密鑰K2:(長度為Wr的整數(shù)倍)和密鑰擴展函數(shù)控制密鑰K3,(長度為Ws),即K=K1‖K2‖K3,其中符號‖表示級聯(lián)。

(2)確定輪函數(shù)生成算法和密鑰擴展生成算法。在控制密鑰K2的控制下,由輪函數(shù)生成算法生成加密算法所需各輪的輪函數(shù)以及通過逆輪函數(shù)生成算法生成解密所需各輪的輪函數(shù)。在控制密鑰K3的作用下產(chǎn)生密鑰擴展函數(shù)生成算法生成密鑰擴展函數(shù)。

(3)確定合法密鑰需要滿足的條件。設滿足條件的輪函數(shù)控制密鑰全體構成的集合為Kr,密鑰擴展函數(shù)控制密鑰全體構成的集合為Ks。

輪函數(shù)記為g,滿足條件的輪函數(shù)全體記為LR,密鑰擴展函數(shù)記為h,滿足條件的密鑰擴展函數(shù)全體記為LS,輪函數(shù)生成算法記為Fr,逆輪函數(shù)生成算法記為Fr-1,密鑰擴展函數(shù)成算法記為Fs,則有

g∈LR,g:{0,1}Wt×{0,1}Wb→{0,1}Wb

h∈LS,h:{0,1}We→{0,1} ∞

Fr:Kr→Lr,Fs:Ks→Ls

(4)加密和解密輪數(shù)是由具體算法和安全級別t決定的,以下的討論中假定為固定數(shù)r。

2)加密

加密該過程分成三部分,即生成算法、密鑰擴展和加密算法。設密鑰為K=k1‖K2‖K3,長度為W,明文M長度為Wb,輸出密文為C,則各算法描述如下:

(1)生成算法

取密鑰K2,按Wt,比特為間隔分成r組K(1),...,K(r),使用輪函數(shù)Fr生成算法生成對應的輪函數(shù)G(1),...,G(r)。

(2)密鑰擴展

取密鑰K3,使用密鑰擴展對應算法Fs生成密鑰擴展算法h,取密鑰K1作為密鑰擴展算法h的輸入,得到子密鑰比特流S。

(3)加密算法

分別使用G1...Gr作為輪函數(shù),以及子密鑰比特流S的第Wz×(i-1)+1比特到第Wz×i比特作為第i輪的子密鑰,對明文M進行迭代加密得到密文C。

3)解密

該過程分成三部分,即生成算法、密鑰擴展和解密算法。設密鑰為K=k1‖K2‖K3,長度為Wb,明文M長度為輸出密文為C,則各算法描述如下:

(1)生成算法

取密鑰K2,按Wt,比特為間隔分成r組K(1),...,K(r),使用輪函數(shù)Fr生成算法生成對應的輪函數(shù)G(1)-1,...,G(r)-1。

(2)密鑰擴展

與加密過程的密鑰擴展一樣。

(3)解密算法

分別使用G(1)-1,...,G(r)-1作為輪函數(shù),使用子密鑰比特流S的第Wz×(r-i)+1比特到第Wz×(r-i+1)作為第i輪的子密鑰,對密文C進行迭代解密得到明文M。

小知識之分組密碼:

分組密碼是將明文消息編碼表示后的數(shù)字(簡稱明文數(shù)字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分別在密鑰的控制下變換成等長的輸出數(shù)字(簡稱密文數(shù)字)序列。