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

針對(duì)現(xiàn)有的對(duì)分組密碼的攻擊方法對(duì)于未知結(jié)構(gòu)的加密算法是無(wú)效的特點(diǎn),提出了一個(gè)根據(jù)已有分組加密算法生成隨機(jī)加密算法的框架,其加密算法是由隨機(jī)控制密鑰生成的,因而算法是隨機(jī)的,能抵抗針對(duì)固定結(jié)構(gòu)的密碼算法的線性密碼分析和差分密碼分析。

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

通常的分組密碼輪函數(shù),通過(guò)輸入明文和輪密鑰,使用某種子密鑰生成算法生成每一輪的子密鑰,使用固定的輪函數(shù)和對(duì)應(yīng)的子密鑰進(jìn)行運(yùn)算,經(jīng)過(guò)足夠多的輪數(shù)后輸出密文。該輪函數(shù)具有固定結(jié)構(gòu),所以容易受到現(xiàn)有密碼分析方法的攻擊。為了抵抗這些攻擊,本文提出一種隨機(jī)分組加密算法框架。

其基本思想是將密鑰分成兩部分,即控制密鑰和加密密鑰。控制密鑰用于生成加密算法,因而算法是隨機(jī)的,它隨著密鑰的不同而變化;加密密鑰用于生成子密鑰,用于加密算法。

控制密鑰選取方法要保證能生成足夠多不同的隨機(jī)密碼算法,同時(shí)生成的密碼算法能達(dá)到足夠的安全性使其密碼分析人員難以進(jìn)行靜態(tài)分析。控制密鑰又可以細(xì)分為加密算法控制密鑰和密鑰擴(kuò)展算法控制密鑰兩部分。加密算法控制密鑰由若干個(gè)輪函數(shù)控制密鑰所組成,用于生成各輪的輪函數(shù),輪函數(shù)控制密鑰的個(gè)數(shù)即為加密算法的輪數(shù);密鑰擴(kuò)展算法控制密鑰用于生成密鑰擴(kuò)展算法。加密密鑰由所使用的密鑰擴(kuò)展函數(shù)決定。加密時(shí)通過(guò)加密算法控制密鑰生成加密算法,通過(guò)使用加密密鑰得到的子密鑰進(jìn)行加密;解密時(shí)通過(guò)加密算法控制密鑰生成解密算法,使用加密密鑰得到的子密鑰進(jìn)行解密,其具體步驟如下:

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

(a)確定整個(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è)加密算法密鑰艮由三部分組成,即加密算法密鑰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)。

(b)確定輪函數(shù)生成算法和密鑰擴(kuò)展生成算法

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

(c)確定合法密鑰需要滿足的條件

為了能夠生成滿足本文要求的算法,需要對(duì)控制密鑰作一些限制。設(shè)滿足條件的輪函數(shù)控制密鑰全體構(gòu)成的集合為Kr,密鑰擴(kuò)展函數(shù)控制密鑰全體構(gòu)成的集合為ks。

輪函數(shù)記為g,滿足條件的輪函數(shù)全體記為L(zhǎng)R,密鑰擴(kuò)展函數(shù)記為h,滿足條件的密鑰擴(kuò)展函數(shù)全體記為L(zhǎng)S,輪函數(shù)生成算法記為fr,逆輪函數(shù)生成算法記為fr-1,密鑰擴(kuò)展函數(shù)生成算法記為fs,則有:

隨機(jī)分組加密算法框架及實(shí)現(xiàn)

(d)加解密輪數(shù)

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

b)加密

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

(a)生成算法

取密鑰k2,按Wr比特為間隔分成r組k(1),…,k(r),使用輪函數(shù)生成算法,生成對(duì)應(yīng)的輪函數(shù)g1,…,gr。

(b)密鑰擴(kuò)展

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

(c)加密算法

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

c)解密

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

(a)生成算法

取密鑰k2,按Wr比特為間隔分成r組k(1),…,k(r),使用輪函數(shù)生成算法fr-1生成對(duì)應(yīng)的輪函數(shù)g1-1,…,gr-1。

(b)密鑰擴(kuò)展

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

(c)解密算法

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

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

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