针对现有的对分组密码的攻击方法对于未知结构的加密算法是无效的特点,提出了一个根据已有分组加密算法生成随机加密算法的框架,其加密算法是由随机控制密钥生成的,因而算法是随机的,能抵抗针对固定结构的密码算法的线性密码分析和差分密码分析。

随机分组加密算法框架

通常的分组密码轮函数,通过输入明文和轮密钥,使用某种子密钥生成算法生成每一轮的子密钥,使用固定的轮函数和对应的子密钥进行运算,经过足够多的轮数后输出密文。该轮函数具有固定结构,所以容易受到现有密码分析方法的攻击。为了抵抗这些攻击,本文提出一种随机分组加密算法框架。

其基本思想是将密钥分成两部分,即控制密钥和加密密钥。控制密钥用于生成加密算法,因而算法是随机的,它随着密钥的不同而变化;加密密钥用于生成子密钥,用于加密算法。

控制密钥选取方法要保证能生成足够多不同的随机密码算法,同时生成的密码算法能达到足够的安全性使其密码分析人员难以进行静态分析。控制密钥又可以细分为加密算法控制密钥和密钥扩展算法控制密钥两部分。加密算法控制密钥由若干个轮函数控制密钥所组成,用于生成各轮的轮函数,轮函数控制密钥的个数即为加密算法的轮数;密钥扩展算法控制密钥用于生成密钥扩展算法。加密密钥由所使用的密钥扩展函数决定。加密时通过加密算法控制密钥生成加密算法,通过使用加密密钥得到的子密钥进行加密;解密时通过加密算法控制密钥生成解密算法,使用加密密钥得到的子密钥进行解密,其具体步骤如下:

a)系统初始化

(a)确定整个加密系统公用的一些参数(Wb,We,Wz,Wr,Ws,t)

其中:Wb为明、密文分组长度(假定明、密文长度相等);We为加密算法密钥长度;Wz为算法每轮的子密钥长度;Wr为轮函数控制密钥的比特数;Ws为密钥扩展函数控制密钥的比特数;t为安全级别,即生成该随机算法需要的最大差分概率至多为2-t,最大线性相关度至多为2-t。

整个加密算法密钥艮由三部分组成,即加密算法密钥k1(长度为We)、轮函数生成算法控制密钥k2:(长度为Wr的整数倍)和密钥扩展函数控制密钥k3(长度为Ws),即k=k1|| k2||k3。其中符号||表示级联。

(b)确定轮函数生成算法和密钥扩展生成算法

在控制密钥kz的控制下,由轮函数生成算法生成加密算法所需各轮的轮函数以及通过逆轮函数生成算法生成解密所需各轮的轮函数。在控制密钥k3的作用下产生密钥扩展函数生成算法生成密钥扩展函数。

(c)确定合法密钥需要满足的条件

为了能够生成满足本文要求的算法,需要对控制密钥作一些限制。设满足条件的轮函数控制密钥全体构成的集合为Kr,密钥扩展函数控制密钥全体构成的集合为ks。

轮函数记为g,满足条件的轮函数全体记为LR,密钥扩展函数记为h,满足条件的密钥扩展函数全体记为LS,轮函数生成算法记为fr,逆轮函数生成算法记为fr-1,密钥扩展函数生成算法记为fs,则有:

随机分组加密算法框架及实现

(d)加解密轮数

加解密轮数是由具体算法和安全级别t决定的,以下的讨论中假定为固定数r。

b)加密

该过程分成三部分,即生成算法、密钥扩展和加密算法。设密钥为k=k1|| k2||k3,长度为w,明文M长度为Wb,输出密文为C,则各算法描述如下:

(a)生成算法

取密钥k2,按Wr比特为间隔分成r组k(1),…,k(r),使用轮函数生成算法,生成对应的轮函数g1,…,gr。

(b)密钥扩展

取密钥k3,使用密钥扩展对应算法fs生成密钥扩展算法h,取密钥k1,作为密钥扩展算法h的输入,得到子密钥比特流s。

(c)加密算法

分别使用g1,…,gr作为轮函数,以及子密钥比特流s的第Wz×(i-1)+1比特到第Wz*i比特作为第i轮的子密钥,对明文M进行迭代加密得到密文C。

c)解密

该过程分成三部分,即生成算法、密钥扩展和解密算法。设密钥为k=k1|| k2||k3,长度为w,明文M长度为Wb,输出密文为C,则各算法描述如下:

(a)生成算法

取密钥k2,按Wr比特为间隔分成r组k(1),…,k(r),使用轮函数生成算法fr-1生成对应的轮函数g1-1,…,gr-1。

(b)密钥扩展

与加密过程的密钥扩展一样。

(c)解密算法

分别使用g1-1,…,gr-1作为轮函数,使用子密钥比特流s的第Wz×(r-i)+1比特到第Wz×(r-i+1)作为第i轮的子密钥,对密文C‘进行迭代解密得到明文M。

小知识之分组密码

分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。