Camellia算法由NTT和Mitsubishi Electric Corporation联合开发。作为欧洲新一代的加密标准,它具有较强的安全性,能够抵抗差分" title="差分">差分和线性密码分析等已知的攻击。与AES算法相比,Camellia算法在各种软硬件平台上表现出与之相当的加密速度。除了在各种软件和硬件平台上的高效性这一显著特点,它的另外一个特点是针对小规模硬件平台的设计。整个算法的硬件执行过程包括加密、解密和密钥扩展三部分,只需占用8.12K 0.18μm COMS工艺ASIC的库门逻辑。这在现有128比特分组密码中是最小的。

Camellia算法的组成

Camellia算法支持128比特的分组长度,128、192和256比特的密钥与AES的接口相同。本文以128比特密钥为例对Camellia算法进行详细介绍。

Camellia算法128比特密钥的加、解密过程共有18轮,采用Feistel结构,加、解密过程完全相同,只是子密钥注入顺序相反。而且密钥扩展过程和加、解密过程使用相同的部件。这使得Camellia算法不论是在软件平台" title="软件平台">软件平台还是硬件平台只需更小的规模和更小的存储即可。

Camellia算法所采用的符号列表及其含义

详解Camellia算法的组成和安全性

详解Camellia算法的组成和安全性

Camellia算法所采用的变换函数

·F变换

F变换(见式(1))是Camellia算法中最主要的部件之一,而且F变换被加、解密过程和密钥扩展过程所共用(128  比特密钥的加、解密各用18次,密钥扩展用4次)。Camellia算法的F变换在设计时采用1轮的SPN(Substitution Permutation Network),包括一个P变换(线性)和一个S变换(非线性)。在Feistel型密码使用一轮SPN作轮函数时,对更高阶" title="高阶">高阶的差分和线性特性概率的理论评估变得更加复杂,在相同安全水平下的运行速度有所提高。

详解Camellia算法的组成和安全性

·P变换

Camellia算法的P变换(见式(2))是一个线性变换。为了通信中软、硬件实现的高效性,它适合采用异或运算,并且其安全性能足以抵抗差分和线性密码分析。其在32位处理器、高端智能卡上的应用,跟在8位处理器上一样。

详解Camellia算法的组成和安全性

·S变换

Camellia算法采用的S盒(见式(3))是一个GF(28)上的可逆变换,它加强了算法的安全性并且适用于小硬件设计。众所周知,GF(28)上函数的最大差分概率的最小值被证明为2-6,最大线性概率的最小值推测为2-6。Camellia算法选择GF(28)上能够获得最好的差分和线性概率的可逆函数作S盒,而且S盒每个输出比特具有高阶布尔多项式,使得对Camellia进行高阶差分攻击是困难的。S盒在GF(28)上输入、输出相关函数上的复杂表达式,使得插入攻击对Camellia无效。

详解Camellia算法的组成和安全性

算法中构造了四个不同的S盒,提高了Camellia算法抵抗阶段差分攻击的安全性。为了在小硬件上设计实现,GF(28)上的元素可以表示成系数为GF(24)上的多项式。这样,在实现S盒时,只需运用子域GF(24)上很少的操作。s1变换中所采用的f、h、g函数分别如(4)、(5)、(6)式所示。

详解Camellia算法的组成和安全性

规定(6)式中GF(28)上运算 ,β是GF(28)上方程x8+x6+x5+x3+1=0的根,a=β238=β6+β5+β3+β2是GF(24)上方程x4+x+1=0的根。当然根据性能要求,在具体实现加密算法时,S盒的实现电路也可以直接查表的方式进行。

·FL/FL-1变换

Camellia算法每六圈加入一次FL/FL-1变换,用来打乱整个算法的规律性。加入FL/FL-1变换的另一个好处是可以抵抗未知的密码攻击方法,而且加入FL/FL-1变换并不影响Feistel结构加、解密过程相同。

详解Camellia算法的组成和安全性

Camellia算法的安全性

设计者用差分扩散概率和线性相关概率的保守上界证明了任何含SPN网络的十六圈Camellia密码对差分密码分析和线性密码分析都是安全的;此外,通过对活动S盒的计数说明十二圈Camellia中没有概率大于2-128的差分特征和线性特征;带或不带FL层的十圈Camellia都具有伪随机置换特性,能够抵抗截断差分攻击和线性密码分析;设计者还声称Camellia能够抵抗不可能差分攻击、Boomerang攻击、高阶差分攻击、相关密钥攻击、插入攻击、Slide攻击、线性和攻击及Square攻击。在密钥的安全性上,一方面不存在等效密钥;另一方面,子密钥来自主密钥的加密结果KA和KB,改变主密钥并不能获得预想的KA和KB,反之亦然,因而无法控制和预测子密钥之间的关系,从而相关密钥攻击难以成功。由于密钥长度不少于128比特,以当前的计算能力还无法对Camellia成功实施诸如密钥穷举搜索攻击、时间存储权衡攻击、字典攻击和密钥匹配等类型的强力攻击。

从本文可以看出,分组密码加密算法发展到今天,不论是从安全性还是从实用性的角度都越来越强。NESSIE标准中的Camellia加密算法充分考虑到了各种因素,既保证了算法的安全性又考虑到其在各种平台上的实现效率,尤其是针对小硬件的设计思想,使其有着广泛的应用前景。