一种新实用安全加密标准算法--Camellia算法
发布时间:2008/6/5 0:00:00 访问次数:408
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算法所采用的变换函数 ·f变换
f变换(见式(1))是camellia算法中最主要的部件之一,而且f变换被加、解密过程和密钥扩展过程所共用(128比特密钥的加、解密各用18次,密钥扩展用4次)。camellia算法的f变换在设计时采用1轮的spn(substitution permutation network),包括一个p变换(线性)和一个s变换(非线性)。在feistel型密码使用一轮spn作轮函数时,对更高阶的差分和线性特性概率的理论评估变得更加复杂,在相同安全水平下的运行速度有所提高。
f:l×l→l (1)
(x(64),k(64))→y(64)=p(s(x(64)k(64))
·p变换
camellia算法的p变换(见式(2))是一个线性变换。为了通信中软、硬件实现的高效性,它适合采用异或运算,并且其安全性能足以抵抗差分和线性密码分析。其在32位处理器、高端智能卡上的应用,跟在8位处理器上一样。
p:l→l
= (2)
·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
(l1(8),l1(8),l1(8),l1(8),l1(8),l1(8),l1(8),l1(8))→
(s1(l1(8)),s2(l2(8)),s3(l3(8)),s4(l4(8)),s2(l5(8)),s3(l6(8)),
s4(l7(8)),s1(l8(8)))
s1:y(8)=s1(x(8))=h(g(f(0xc5x(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
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算法所采用的变换函数 ·f变换
f变换(见式(1))是camellia算法中最主要的部件之一,而且f变换被加、解密过程和密钥扩展过程所共用(128比特密钥的加、解密各用18次,密钥扩展用4次)。camellia算法的f变换在设计时采用1轮的spn(substitution permutation network),包括一个p变换(线性)和一个s变换(非线性)。在feistel型密码使用一轮spn作轮函数时,对更高阶的差分和线性特性概率的理论评估变得更加复杂,在相同安全水平下的运行速度有所提高。
f:l×l→l (1)
(x(64),k(64))→y(64)=p(s(x(64)k(64))
·p变换
camellia算法的p变换(见式(2))是一个线性变换。为了通信中软、硬件实现的高效性,它适合采用异或运算,并且其安全性能足以抵抗差分和线性密码分析。其在32位处理器、高端智能卡上的应用,跟在8位处理器上一样。
p:l→l
= (2)
·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
(l1(8),l1(8),l1(8),l1(8),l1(8),l1(8),l1(8),l1(8))→
(s1(l1(8)),s2(l2(8)),s3(l3(8)),s4(l4(8)),s2(l5(8)),s3(l6(8)),
s4(l7(8)),s1(l8(8)))
s1:y(8)=s1(x(8))=h(g(f(0xc5x(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
上一篇:中国平板显示市场
上一篇:蓝牙--拆除电缆,进军新市场