我们今天给大家介绍一种新的分组对称加密算法- SEA(Smart Encryption Algorithm,即灵巧型加密算法)。其核心是一种基于Markov转移的具有较强非线性的圈函数,其中还蕴含了两种不相容的群运算,使得算法能达到必要的混乱和扩散。该加密算法全部运算基于字节,占有的存储量低,故易于软硬件实现,特别适合于智能卡上的运用。

一、 SEA加密算法描述

SEA加密算法主体结构为多轮Feistel网络结构。该密码算法全部运算基于子节,仅有模256加和异或两种运算。算法的核心部件是B函数,它使得算法具有强非线性特性。以下“+”表示按字节加(即模256加),“⊕”表示异或。

B函数的输入输出均为8字节,64比特。B函数的描述为:将输入的64比特看作是位矩阵,位矩阵的每一行依次对应一个字节。先根据输入的64比特的前3比特(确定行位置)和最后3比特(确定列位置)确定在位矩阵中的一个初始转换点。然后将输入的64比特分组,每4比特为一组,称这些分组为转移方向控制组。接下来则从初始转换点开始,按照每组(即转移方向控制组)的值确定的转移方向转移控制规律见图1。

SEA加密算法

从当前比特位转移到新比特位上去,对被历经的比特位取反。每个转移方向控制组对应一次转移操作。转移操作越界时在位矩阵的边界处反射。反复进行上述操作直到转移操作次数达到给定要求。本加密算法中要求转移次数最少为16次,推荐使用32次。达到给定的转移次数后,当前的位矩阵即为B函数的输出。B函数的数学描述式为:

SEA加密算法

其中Dci=a4i-4a4i-3a4i-2 a4i-1为第i次转移时的转移方向控制组,C为取反操作,t(t≥16)为转移的总次数。操作过程中,若i> 16,则i=i- 16 。

例如:设当前的转移方向控制组Dci=1 001,则在图1中,本次转移将从中心点跳转到标注为“11"的比特位上,且该比特位取反。接着下一次的转移将以“11”点为中心向它周围的16个方向之一跳转。

从B函数的描述可以看出,输入的64bit中若有一个比特位发生变化,则受该比特位所在的转移控制分组的影响,之后的所有转移操作所历经的比特位将发生变化,这就使得输入的一个比特位变化将对输出的多个比特位产生影响,轮迭代时就能更快的产生雪崩效应。

设X,Y,分别为8字节的二进制数据块。令Y=(X0,X1,…,X7),Y=(Yo,Y1,∧,Y7)定义圈函数f为:

SEA加密算法
由B函数的定义可知,B函数的实质即是产生一个随机数并与输入相异或,即B(X)=XRnd( X)。那么f函数可等价描述为:

SEA加密算法

可见f函数中包含了按字节加(即模256加)和异或(即模2加)两种不相容的群运算。这使得算法具有较强的置乱效果。

加密过程:

SEA的加密为r轮Feistel网络结构加密。

在加密的第i轮中,令输人为Li,Ri(各8字节),轮子密钥为Rk。,轮子密钥长度为64bit。注意,r轮后输出的左右两半部分不交换。有:

SEA加密算法
解密过程:解密过程是加密过程的逆。由Feistel网络结构可知,解密时颠倒白化子密钥和轮子密钥顺序,加密即变成解密。具体过程不再详述。

密钥的扩展方案:本加密算法可选的种子密钥长度分别为128bit,192bit和256bit。

进行密钥编排时,令LengthOfKey为种子密钥长度,取l= LengthOfKey/64。r为Feistel网络结构加密轮数。三种密钥长度下r分别取值6,9和12。Rki为轮子密钥。有:

SEA加密算法

二、雪崩效应测试

好的加密算法应使密文的每一位和明文以及密钥的每一位有关,即当明文或密钥有一个比特位发生变化时,密文应有半数左右的比特位发生变化,这就是所谓的雪崩效应。对本算法进行明文的雪崩效应测试时,随机选择10 000个明文分组,用几个不同的密钥加密,对每个明文分组变化1bit后加密所得的密文进行x2拟合优度检定。同理,进行密钥的雪崩效应测试时,随机选择10 000个密钥对几个不同的明文加密,对每个密钥变化lbit后加密所得的密文进行x2拟合优度检定。加密时选择128bit长的种子密钥。在不同的显著性水平下,检定达到拟合优度的分组数百分比(设为λ)。二者的测试结果如表1、表2。

SEA加密算法

SEA加密算法

三、速度测试

在主频为Pentium - 266MHz的计算机上用ANSIC编写的加解密程序进行速度测试。测试结果如下,见表3。

SEA加密算法

本加密算法的最大特点在于描述简单,没有复杂难懂的计算,这样不仅利于软硬件实现,而且有利于算法的安全性分析。从雪崩效应测试的结果来看,本算法具有良好的明文雪崩效应和密钥雪崩效应,这得益于圈函数的非线性特性设计,它能使输入的一个比特位变化将在2轮迭代后影响输出的每一位,因此算法经过较少轮数的迭代后就能达到较高的安全性。但根据速度测试的结果来看,本算法的加解密速度与现有的分组算法相比不是很快,而且当B函数中转移次数较大时,加解密速度将进一步受到影响,因此在追求安全性和高效性时,不得不作个折衷。

小知识之雪崩效应

雪崩效应就是一种不稳定的平衡状态也是加密算法的一种特征,它指明文或密钥的少量变化会引起密文的很大变化,就像雪崩前,山上看上去很平静,但是只要有一点问题,就会造成一片大崩溃。 可以用在很多场合对于Hash码,雪崩效应是指少量消息位的变化会引起信息摘要的许多位变化。