随机分组密码加密算法与固定结构的密码加密算法不同,其比较难以分析。目前的分析方法仅限于信息论方式,它是将生成算法与等长的随机置换相比较,随机分组密码加密算法的安全性证明是通过有限次明文、密文对的查询以及不能区分生成的算法与等长的随机置换来保证的。
随机分组密码加密算法
随机分组密码加密算法基本思想是将密钥分成两部分,即控制密钥和加密密钥。
1、控制密钥
控制密钥用于生成密码算法,因而算法是随机的,它随着密钥的不同而变化;加密密钥用于生成子密钥,用于加密算法。控制密钥选取方法要保证能生成足够多不同的随机密码加密算法,同时生成的密码加密算法能达到足够的安全性使其密码分析人员难以进行静态分析。控制密钥又可以细分为加密算法控制密钥和密钥扩展算法控制密钥两部分。
(1)加密算法控制密钥由若干个轮函数控制密钥所组成,用于生成各轮的轮函数,轮函数控制密钥的个数即为加密算法的轮数;
(2)密钥扩展算法控制密钥用于生成密钥扩展算法。
2、加密密钥
加密密钥由所使用的密钥扩展函数决定。加密时通过加密算法控制密钥生成加密算法,通过使用加密密钥得到的子密钥进行加密;解密时通过加密算法控制密钥生成解密算法,使用加密密钥得到的子密钥进行解密,其具体步骤如下:
1)系统初始化
(1)确定整个加密系统公用的一些参数(Wb,We,Wz,Wr,Ws,t)。其中:Wb为明、密文分组长度(假定明、密文长度相等);We为加密算法密钥长度;Wz为算法每轮的子密钥长度;Wr为轮函数控制密钥的比特数;Ws为密钥扩展函数控制密钥的比特数;t为安全级别,即生成该随机算法需要的最大差分概率至多为2-t,最大线性相关度至多为2-t。
整个加密算法密钥K由三部分组成,即加密算法密钥K1(长度为We)、轮函数生成算法控制密钥K2:(长度为Wr的整数倍)和密钥扩展函数控制密钥K3,(长度为Ws),即K=K1‖K2‖K3,其中符号‖表示级联。
(2)确定轮函数生成算法和密钥扩展生成算法。在控制密钥K2的控制下,由轮函数生成算法生成加密算法所需各轮的轮函数以及通过逆轮函数生成算法生成解密所需各轮的轮函数。在控制密钥K3的作用下产生密钥扩展函数生成算法生成密钥扩展函数。
(3)确定合法密钥需要满足的条件。设满足条件的轮函数控制密钥全体构成的集合为Kr,密钥扩展函数控制密钥全体构成的集合为Ks。
轮函数记为g,满足条件的轮函数全体记为LR,密钥扩展函数记为h,满足条件的密钥扩展函数全体记为LS,轮函数生成算法记为Fr,逆轮函数生成算法记为Fr-1,密钥扩展函数成算法记为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)加密和解密轮数是由具体算法和安全级别t决定的,以下的讨论中假定为固定数r。
2)加密
加密该过程分成三部分,即生成算法、密钥扩展和加密算法。设密钥为K=k1‖K2‖K3,长度为W,明文M长度为Wb,输出密文为C,则各算法描述如下:
(1)生成算法
取密钥K2,按Wt,比特为间隔分成r组K(1),...,K(r),使用轮函数Fr生成算法生成对应的轮函数G(1),...,G(r)。
(2)密钥扩展
取密钥K3,使用密钥扩展对应算法Fs生成密钥扩展算法h,取密钥K1作为密钥扩展算法h的输入,得到子密钥比特流S。
(3)加密算法
分别使用G1...Gr作为轮函数,以及子密钥比特流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),使用轮函数Fr生成算法生成对应的轮函数G(1)-1,...,G(r)-1。
(2)密钥扩展
与加密过程的密钥扩展一样。
(3)解密算法
分别使用G(1)-1,...,G(r)-1作为轮函数,使用子密钥比特流S的第Wz×(r-i)+1比特到第Wz×(r-i+1)作为第i轮的子密钥,对密文C进行迭代解密得到明文M。
小知识之分组密码:
分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。