一种新的实用安全加密标准算法——Camellia算法

2007-03-09 19:03:27来源: 互联网
摘要:介绍了NESSIE标准中的分组密码算法——Camellia算法的加、解密过程,并对其在各种软、硬件平台上的性能进行了比较,结果表明Camellia算法在各种平台上均有着较高的效率。Camellia算法与其它技术相结合将在信息安全领域产生更广泛的应用。 关键词:NESSIE 分组密码 Camellia 算法 加密 继2000年10月美国推出二十一世纪高级数据加密标准AES后,2003年2月欧洲最新一代的安全标准NESSIE(New European Schemes for Signatures、Integrity and Encryption)出台。NESSIE是欧洲IST(Information Society Technologies)委员会计划的一个项目。Camellia算法以其在各种软件和硬件平台上的高效率这一显著特点成为NESSIE标准中两个128比特分组密码算法之一(另一个为美国的AES算法)。 Camellia算法由NTT和Mitsubishi Electric Corporation联合开发。作为欧洲新一代的加密标准,它具有较强的安全性,能够抵抗差分和线性密码分析等已知的攻击。与AES算法相比,Camellia算法在各种软硬件平台上表现出与之相当的加密速度。除了在各种软件和硬件平台上的高效性这一显著特点,它的另外一个特点是针对小规模硬件平台的设计。整个算法的硬件执行过程包括加密、解密和密钥扩展三部分,只需占用8.12K 0.18μm COMS工艺ASIC的库门逻辑。这在现有128比特分组密码中是最小的。 1 Camellia算法的组成 Camellia算法支持128比特的分组长度,128、192和256比特的密钥与AES的接口相同。本文以128比特密钥为例对Camellia算法进行详细介绍。 Camellia算法128比特密钥的加、解密过程共有18轮,采用Feistel结构,加、解密过程完全相同,只是子密钥注入顺序相反。而且密钥扩展过程和加、解密过程使用相同的部件。这使得Camellia算法不论是在软件平台还是硬件平台只需更小的规模和更小的存储即可。 (1)Camellia算法所采用的符号列表及其含义 B 8比特向量 W 32比特向量 L 64比特向量 Q 128比特向量 xn 比特向量 xL 向量x的左半部分 xR 向量x的右半部分 <<< 比特循环左移 || 两个操作数的连接  比特的异或操作 x 比特位取补操作 ∪ 比特位的或操作 ∩ 比特位的与操作 (2)Camellia算法所采用的变量列表及其含义 M128 128比特明文组 C128 128比特密文组 K 主密钥 kwt64 ku64 klv64 子密钥 (3)Camellia算法所采用的变换函数 %26;#183;F变换 F变换(见式(1))是Camellia算法中最主要的部件之一,而且F变换被加、解密过程和密钥扩展过程所共用(128比特密钥的加、解密各用18次,密钥扩展用4次)。Camellia算法的F变换在设计时采用1轮的SPN(Substitution Permutation Network),包括一个P变换(线性)和一个S变换(非线性)。在Feistel型密码使用一轮SPN作轮函数时,对更高阶的差分和线性特性概率的理论评估变得更加复杂,在相同安全水平下的运行速度有所提高。 %26;#183;P变换 Camellia算法的P变换(见式(2))是一个线性变换。为了通信中软、硬件实现的高效性,它适合采用异或运算,并且其安全性能足以抵抗差分和线性密码分析。其在32位处理器、高端智能卡上的应用,跟在8位处理器上一样。 %26;#183;S变换 Camellia算法采用的S盒(见式(3))是一个GF(28)上的可逆变换,它加强了算法的安全性并且适用于小硬件设计。众所周知,GF(28)上函数的最大差分概率的最小值被证明为2-6,最大线性概率的最小值推测为2-6。Camellia算法选择GF(28)上能够获得最好的差分和线性概率的可逆函数作S盒,而且S盒每个输出比特具有高阶布尔多项式,使得对Camellia进行高阶差分攻击是困难的。S盒在GF(28)上输入、输出相关函数上的复杂表达式,使得插入攻击对Camellia无效。 S:L→L (l"1(8),l"1(8),l"1(8),l"1(8),l"1(8),l"1(8),l"1(8),l"1(8)→ *s1(l"1(8)),s2(l"2(8)),s3(l"3(8)),s4("4(8)),s2(l"5(8)),s3(l"6(8)), s4(l"7(8),s1(l"8(l8(8))) 其中, s2:y(8)=s1(x(8))=h(g(f(0xC5+x(8))))+0x6E s2:Y(8)=s2(x(8))=s1(x(8))<<<1 (3) s3:y(8)=s3(x(8))=s1(x(8))>>>1 s4:y(8)=s4(x(8))=s1(x(8))<<<1 算法中构造了四个不同的S盒,提高了Camellia算法抵抗阶段差分攻击的安全性。为了在小硬件上设计实现,GF(28)上的元素可以表示成系数为GF(24)上的多项式。这样,在实现S盒时,只需运用子域GF(24)上很少的操作。s1变换中所采用的f、h、g函数分别如(4)、(5)、(6)式所示。 (b1,b2,b3,b4,b5,b6,b7,b8)=g(a1,a2,a3,a4,a5,a6,a7,a8) 其中,(b8+b7α+b6α2+b5α3)+(b4+b3α+b2α2+b1α3)β =1/((a8+a7α+a6α2+a5α3)+(a4+a3α+a2α2+a1α3))(6) 规定(6)式中GF(2的8次方)上运算=1/0,β是GF(2的8次方)上方程x8+x6+x5+x3+1=0的根,a=β238=β6+β5+β3+β2是GF(2的4次方)上方程x4+x+1=0的根。当然根据性能要求,在具体实现加密算法时,S盒的实现电路也可以直接查表的方式进行。 %26;#183;FL/FL-1变换 Camellia算法每六圈加入一次FL/FL-1变换,用来打乱整个算法的规律性。加入FL/FL-1变换的另一个好处是可以抵抗未知的密码攻击方法,而且加入FL/FL-1变换并不影响Feistel结构加、解密过程相同。 FL:L%26;#215;L→L (XL(32)||XR(32),klL(32)||klR(32)→(7) (YR(32)∪klR(32),YL(32)||((XL(32)∩klL(32)<<<1)+YR(32) FL-1:L%26;#215;L→L (YL(32)||YR(32),klL(32)||klR(32)→ (8) (YR(32)∪klR(32),YL(32)||((XL(32)∩klL(32)<<<1)+YR(32) 2 Camellia算法的加、解密及密钥扩展实现过程 (1)加、解密过程 Camellia算法的整个加密过程有18轮Feistel结构,在第6轮和第12轮之后加入了FL/FL-1变换层,用来打乱算法的规律性,并且在第1轮之前和最后1轮之后使用了128比特的异或操作。解密过程与加密过程完全相同,只是圈密钥注入顺序与加密相反。128比特密钥Camellia算法的加密过程如图1所示。 (2)密钥扩展 Camellia算法的密钥扩展遵循了严格的设计准则,如实现简单且与加、解密过程共用部件,密钥配置时间小于加密时间,支持在线密钥生成,没有等效密钥,能够抵抗相关密钥攻击和滑动攻击等。整个过程只需通过三个中间变量,KL(128)=K(128),K(128)=0KA的简单移位即可得到子密钥kwt(64)(t=1,…,4),ku(64)(u=1,…,18)和klv(64)(v=1,…,4),且中间生成过程与加密过程共用了部件F(如图1、2所示)。 3 Camellia算法的安全性 设计者用差分扩散概率和线性相关概率的保守上界证明了任何含SPN网络的十六圈Camellia密码对差分密码分析和线性密码分析都是安全的;此外,通过对活动S盒的计数说明十二圈Camellia中没有概率大于2-128的差分特征和线性特征;带或不带FL层的十圈Camellia都具有伪随机置换特性,能够抵抗截断差分攻击和线性密码分析;设计者还声称Camellia能够抵抗不可能差分攻击、Boomerang攻击、高阶差分攻击、相关密钥攻击、插入攻击、Slide攻击、线性和攻击及Square攻击。在密钥的安全性上,一方面不存在等效密钥;另一方面,子密钥来自主密钥的加密结果KA和KB,改变主密钥并不能获得预想的KA和KB,反之亦然,因而无法控制和预测子密钥之间的关系,从而相关密钥攻击难以成功。由于密钥长度不少于128比特,以当前的计算能力还无法对Camellia成功实施诸如密钥穷举搜索攻击、时间存储权衡攻击、字典攻击和密钥匹配等类型的强力攻击。 4 Camellia算法在各种平台上的性能比较 评测一个分组密码的好坏,除了要求其具有高的安全性外,还要求算法在应用平台上实现简单。Camellia算法在设计时充分考虑到了这一点,下面给出其在各种平台上的性能参数。评测算法在软件平台上实现性能时,首要考虑其速度,其次还要看算法实现时所需的存储空间,表1前半部分给出了Camellia算法在常用的32位处理器上各种软件平台的实现性能。高的加密速度和低的存储需求,表明Camellia算法可以有效地应用于各种软件系统中。从表1后半部分可以看出Camellia算法在高端和低端的智能卡平台上同样有着良好的性能;由于Camellia算法的密钥扩展与加、解密过程有共用部分,所以其硬件平台所需的芯片面积大大减少,降低了硬件成本,便于推广应用,详细参数见表2。 表1 Camellia算法在软件和智能卡平台上的性能 环 境 语 言 速度加、解密 RAM合计 ROM合计 PIII700MHz128MB256 L2-cache Assembly 241.5Mbps 64bytes 11420bytes PII300MHz160MB512 L2-cache VC++6 66.6Mbps 108bytes 9461bytes PIII 1GHz512MB256 L2-cache Java 161.4Mbps \ \ Intel 8051 12MHz Assembly 10217 10.22msec 32bytes 990bytes Z80 5MHz Assembly 35951 7.19msec 106bytes 1698bytes MC68HC705 B16 2.1MHz Assembly 9900 4.71msec 208bytes \ 表2 Camellia算法在硬件平台上的性能 环 境 设计Lab 速度 芯片面积 加、解密 单元 合计 ASIC Unrolled Mitsubishi0.18μm 2785.00Mbps Kgate 244.90 Loop Mitsubishi0.18μm 1881.25Mbps Kgate 44.30 FPGA Unrolled Xilinx VirtexE 401.89Mbps Slice 9426 Loop Xilinx VirtexE 227.42Mbps Slice 1780 从本文可以看出,分组密码加密算法发展到今天,不论是从安全性还是从实用性的角度都越来越强。NESSIE标准中的Camellia加密算法充分考虑到了各种因素,既保证了算法的安全性又考虑到其在各种平台上的实现效率,尤其是针对小硬件的设计思想,使其有着广泛的应用前景。
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/network/200703/11657.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved