扩散加密算法是一种利用扩散算法进行数据加密/解密的算法。它利用扩散算法的原理,在处理过程中添加密钥,从而达到数据加密的目的。扩散算法具有完美的扩散率,数据加密可以说是“本职所在”。
扩散算法通过在元素之间建立扩散路径,使元素沿该路径扩散到其他元素。每个元素都沿着指定的路径扩散,从而相互影响。
扩散算法的核心是扩散过程,由扩散网络决定。所谓扩散,是指元素传递影响的过程,如果元素A扩散到元素AB,当A发生变化时,B也发生了变化。
若有N(N>=1)个元素组成的集合M。M中的元素通过一定的规则对应,如M1(起点)对应M4(终点),M4对应M8,M8对应M2,M2对应M6…,描述为Mi向Mj扩散,记作Mi→Mj;分别取出相应的元素并形成表达式,用一定的方法处理表达式,然后用处理结果更新相应的元素(终点)。当起点元素发生变化时,终点元素也发生变化;在处理过程中,这种变化会传递,然后影响其他元素,最终影响所有元素。
在上述过程中,元素之间的对应关系用扩散路径(以下简称路径)表示,起点元素(Mi)称为原体,终点元素(Mj)称为受体;由元素组成的表达式称为扩展计算;扩展计算的处理称为扩散计算(为了防止受体丢失,扩散计算需要加入受体);所有路径的集合称为扩散网络(以下简称网络);整个网络的扩散称为一个周期。
建立网络时,要达到100%的扩散率,必须保证建立的网络能影响每个输入元素的任何输出元素;每个扩散计算都必须满足原体中任何元素的变化,这将导致受体的变化(当受体是元素组时,元素组中的每个元素都会发生变化)。
加密过程
第一步:建立扩散网络,按照一定的规则建立分组中的元素(有序或无序);建立的网络必须满足每个输入元素的要求(X,Y,K)它可以通过网络扩散到任何输出元素(X,Y)。
第二步:基于路径建立扩散,扩散是确认参与扩散操作的元素。
X[0]+K[0]+Y[4]→Y[4],Y[4]+K[0]+X[0]→X[0];
X[0]+K[0]+Y[2]→Y[2],Y[2]+K[0]+X[0]→X[0];
X[0]+K[0]+Y[1]→Y[1],Y[1]+K[0]+X[0]→X[0];
...
扩散式建立时,扩散式除了包含路径连接的元素外,还可以包含任何其他元素。
第三步:扩散操作,并使用操作结果更新受体。为了防止受体丢失,需要加入受体一起操作。
Y[4]=FY(X[0],K[0],Y[4]),X[0]=FX(X[0],K[0],Y[4]FX,FY是可逆函数。
解密过程与加密相反。
算法特性
任何密钥长度
扩散算法支持任何长度和数量的分组,扩散加密算法也是如此。建议分组长度N满足要求
,x>=0x是整数。扩散加密可以实现密钥和明文的不同长度,密钥可以比明文短,也可以比明文长,可以根据需要设置。
运算速度快
扩散加密算法的核心代码只有几行,使用的操作可以非常快
运算(如加法运算、异或(xor)操作、置换操作和移位操作),明文块的加密只能在少量扩散阶段完成(如果N是明文长度,只需要
扩散阶段)。并行处理可用于每个阶段的扩散处理。理论上,并行计算速度是串行计算的n倍。
扩散加密不需要明文分组,可以直接处理缓冲区(并行),节省了明文的复制操作,进一步减少了处理时间。
处理方法灵活
网络可以建立为有序的(图1)或无序的(图2)。相同长度的分组有多种网络建立方案;丰富的扩散建立方法,除了路径连接元素外,还包括任何其他元素;丰富的扩散计算方法,扩散计算可以使用任何函数(如果需要解密,则需要可逆的函数)。
加密模式
扩散算法具有良好的扩展性,可采用以下加密模式:
对称分组加密:用扩散算法加密,每组明文加密使用相同的密钥(每个阶段可以使用不同的密钥)。
对称流加密:只使用扩散算法生成子密钥流(见随机数),然后使用密钥流和明文进行异常或操作(xor)你可以得到密文。使用可靠的扩散操作(函数)来消除线性,使密钥重复遥遥无期。
对称分组流加密:使用扩散算法生成基于密钥的子密钥流,然后使用扩散算法对明文进行分组加密。这种模式可以满足不同的密钥用于每组明文的加密。
半不对称加密:扩散算法的应用可以提高不对称加密效率。使用不对称加密数据时,不需要将整个明文组合成一个大整数进行加密,只需加密明文中的每个元素(元素组)(密钥不同)。
该模式分为三次加密。有明文。M,长度为n;应用不对称分别对M中的每个元素进行不对称(M1,M2,M3…Mn)加密后得到T1、应用扩散算法对T1加密后得到T2、最后再次应用非对称分别对称T2中的每个元素都被密文加密C(密钥与第一次加密相同)。
全不对称加密:设函数F和函数Fˊ非对称互斥函数,通过非对称互斥函数,F(Fˊ)加密数据只能通过加密数据F’(F)解密。应用扩散算法,在扩散操作过程中使用扩散算法。F(Fˊ)加密,使用Fˊ(F)解密即可。