隨機(jī)分組加密算法框架
針對現(xiàn)有的對分組密碼的攻擊方法對于未知結(jié)構(gòu)的加密算法是無效的特點(diǎn),提出了一個根據(jù)已有分組加密算法生成隨機(jī)加密算法的框架,其加密算法是由隨機(jī)控制密鑰生成的,因而算法是隨機(jī)的,能抵抗針對固定結(jié)構(gòu)的密碼算法的線性密碼分析和差分密碼分析。
隨機(jī)分組加密算法框架
通常的分組密碼輪函數(shù),通過輸入明文和輪密鑰,使用某種子密鑰生成算法生成每一輪的子密鑰,使用固定的輪函數(shù)和對應(yīng)的子密鑰進(jìn)行運(yùn)算,經(jīng)過足夠多的輪數(shù)后輸出密文。該輪函數(shù)具有固定結(jié)構(gòu),所以容易受到現(xiàn)有密碼分析方法的攻擊。為了抵抗這些攻擊,本文提出一種隨機(jī)分組加密算法框架。
其基本思想是將密鑰分成兩部分,即控制密鑰和加密密鑰。控制密鑰用于生成加密算法,因而算法是隨機(jī)的,它隨著密鑰的不同而變化;加密密鑰用于生成子密鑰,用于加密算法。
控制密鑰選取方法要保證能生成足夠多不同的隨機(jī)密碼算法,同時(shí)生成的密碼算法能達(dá)到足夠的安全性使其密碼分析人員難以進(jìn)行靜態(tài)分析。控制密鑰又可以細(xì)分為加密算法控制密鑰和密鑰擴(kuò)展算法控制密鑰兩部分。加密算法控制密鑰由若干個輪函數(shù)控制密鑰所組成,用于生成各輪的輪函數(shù),輪函數(shù)控制密鑰的個數(shù)即為加密算法的輪數(shù);密鑰擴(kuò)展算法控制密鑰用于生成密鑰擴(kuò)展算法。加密密鑰由所使用的密鑰擴(kuò)展函數(shù)決定。加密時(shí)通過加密算法控制密鑰生成加密算法,通過使用加密密鑰得到的子密鑰進(jìn)行加密;解密時(shí)通過加密算法控制密鑰生成解密算法,使用加密密鑰得到的子密鑰進(jìn)行解密,其具體步驟如下:
a)系統(tǒng)初始化
(a)確定整個加密系統(tǒng)公用的一些參數(shù)(Wb,We,Wz,Wr,Ws,t)
其中:Wb為明、密文分組長度(假定明、密文長度相等);We為加密算法密鑰長度;Wz為算法每輪的子密鑰長度;Wr為輪函數(shù)控制密鑰的比特?cái)?shù);Ws為密鑰擴(kuò)展函數(shù)控制密鑰的比特?cái)?shù);t為安全級別,即生成該隨機(jī)算法需要的最大差分概率至多為2-t,最大線性相關(guān)度至多為2-t。
整個加密算法密鑰艮由三部分組成,即加密算法密鑰k1(長度為We)、輪函數(shù)生成算法控制密鑰k2:(長度為Wr的整數(shù)倍)和密鑰擴(kuò)展函數(shù)控制密鑰k3(長度為Ws),即k=k1|| k2||k3。其中符號||表示級聯(lián)。
(b)確定輪函數(shù)生成算法和密鑰擴(kuò)展生成算法
在控制密鑰kz的控制下,由輪函數(shù)生成算法生成加密算法所需各輪的輪函數(shù)以及通過逆輪函數(shù)生成算法生成解密所需各輪的輪函數(shù)。在控制密鑰k3的作用下產(chǎn)生密鑰擴(kuò)展函數(shù)生成算法生成密鑰擴(kuò)展函數(shù)。
(c)確定合法密鑰需要滿足的條件
為了能夠生成滿足本文要求的算法,需要對控制密鑰作一些限制。設(shè)滿足條件的輪函數(shù)控制密鑰全體構(gòu)成的集合為Kr,密鑰擴(kuò)展函數(shù)控制密鑰全體構(gòu)成的集合為ks。
輪函數(shù)記為g,滿足條件的輪函數(shù)全體記為LR,密鑰擴(kuò)展函數(shù)記為h,滿足條件的密鑰擴(kuò)展函數(shù)全體記為LS,輪函數(shù)生成算法記為fr,逆輪函數(shù)生成算法記為fr-1,密鑰擴(kuò)展函數(shù)生成算法記為fs,則有:
![]()
(d)加解密輪數(shù)
加解密輪數(shù)是由具體算法和安全級別t決定的,以下的討論中假定為固定數(shù)r。
b)加密
該過程分成三部分,即生成算法、密鑰擴(kuò)展和加密算法。設(shè)密鑰為k=k1|| k2||k3,長度為w,明文M長度為Wb,輸出密文為C,則各算法描述如下:
(a)生成算法
取密鑰k2,按Wr比特為間隔分成r組k(1),…,k(r),使用輪函數(shù)生成算法,生成對應(yīng)的輪函數(shù)g1,…,gr。
(b)密鑰擴(kuò)展
取密鑰k3,使用密鑰擴(kuò)展對應(yīng)算法fs生成密鑰擴(kuò)展算法h,取密鑰k1,作為密鑰擴(kuò)展算法h的輸入,得到子密鑰比特流s。
(c)加密算法
分別使用g1,…,gr作為輪函數(shù),以及子密鑰比特流s的第Wz×(i-1)+1比特到第Wz*i比特作為第i輪的子密鑰,對明文M進(jìn)行迭代加密得到密文C。
c)解密
該過程分成三部分,即生成算法、密鑰擴(kuò)展和解密算法。設(shè)密鑰為k=k1|| k2||k3,長度為w,明文M長度為Wb,輸出密文為C,則各算法描述如下:
(a)生成算法
取密鑰k2,按Wr比特為間隔分成r組k(1),…,k(r),使用輪函數(shù)生成算法fr-1生成對應(yīng)的輪函數(shù)g1-1,…,gr-1。
(b)密鑰擴(kuò)展
與加密過程的密鑰擴(kuò)展一樣。
(c)解密算法
分別使用g1-1,…,gr-1作為輪函數(shù),使用子密鑰比特流s的第Wz×(r-i)+1比特到第Wz×(r-i+1)作為第i輪的子密鑰,對密文C‘進(jìn)行迭代解密得到明文M。
小知識之分組密碼
分組密碼是將明文消息編碼表示后的數(shù)字(簡稱明文數(shù)字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分別在密鑰的控制下變換成等長的輸出數(shù)字(簡稱密文數(shù)字)序列。










