隨機(jī)分組密碼加密算法

隨機(jī)分組密碼加密算法與固定結(jié)構(gòu)的密碼加密算法不同,其比較難以分析。目前的分析方法僅限于信息論方式,它是將生成算法與等長(zhǎng)的隨機(jī)置換相比較,隨機(jī)分組密碼加密算法的安全性證明是通過(guò)有限次明文、密文對(duì)的查詢(xún)以及不能區(qū)分生成的算法與等長(zhǎng)的隨機(jī)置換來(lái)保證的。

隨機(jī)分組密碼加密算法

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

1、控制密鑰

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

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

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

2、加密密鑰

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

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

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

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

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

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

輪函數(shù)記為g,滿(mǎn)足條件的輪函數(shù)全體記為L(zhǎng)R,密鑰擴(kuò)展函數(shù)記為h,滿(mǎn)足條件的密鑰擴(kuò)展函數(shù)全體記為L(zhǎng)S,輪函數(shù)生成算法記為Fr,逆輪函數(shù)生成算法記為Fr-1,密鑰擴(kuò)展函數(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ù)是由具體算法和安全級(jí)別t決定的,以下的討論中假定為固定數(shù)r。

2)加密

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

(1)生成算法

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

(2)密鑰擴(kuò)展

取密鑰K3,使用密鑰擴(kuò)展對(duì)應(yīng)算法Fs生成密鑰擴(kuò)展算法h,取密鑰K1作為密鑰擴(kuò)展算法h的輸入,得到子密鑰比特流S。

(3)加密算法

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

3)解密

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

(1)生成算法

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

(2)密鑰擴(kuò)展

與加密過(guò)程的密鑰擴(kuò)展一樣。

(3)解密算法

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

小知識(shí)之分組密碼:

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