3.6 中国商用密码SMS4
2006年我国国家密码局公布了无线局域网
产品使用的SMS4密码算法。这是我国第一
次公布自己的商用密码算法,意义重大,
影响深远。
3.6.1 SMS4算法描述
SMS4密码概况
①分组密码:
数据分组长度=128位、密钥长度=128位
数据处理单位:字节( 8位)、字(32位)
②密码算法结构:
基本轮函数加迭代,加密算法和密钥扩展算法都
采用32轮迭代结构
对合运算:解密算法与加密算法相同
3.6.1 SMS4算法描述
密码算法结构
128位密钥
128位明文
密钥
扩展
基本轮函数
迭代控制
128位密文
3.6.1 SMS4算法描述
1.基本运算
① 模2加:⊕,32比特异或运算
② 循环移位:<<< i ,把32位字循环左移i 位
2.基本密码部件
(1) S盒
8位输入、8位输出,本质上是 8位的非线性置换。
设输入字节为a,输出字节为b,则S盒的运算表示
为:b=S_Box(a)
例:S_Box(EF)=84
3.6.1 SMS4算法描述
(2)非线性变换:32位字的非线性变换
输入字A
8位输入a0
8位输入a1
8位输入a2
8位输入a3
S盒
S盒
非线性
变换
(置换)
(置换)
(置换)
(置换)
S盒
S盒
8位输出b0
8位输出b1
8位输出b2
8位输出b3
输出字B
3.6.1 SMS4算法描述
(3)线性变换部件L
32位输入、32位输出,起到扩散的作用
设输入字为B,输出字为C,则
C=L(B)
=B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24)
(4)合成变换T
由非线性变换τ和线性变换L复合而成;
设输入字为X,则先对X进行τ变换,再进行L变
换。 记为:T(X)=L(τ(X))。
3.6.1 SMS4算法描述
3.轮函数
轮函数F的输入为(X0,X1,X2,X3),四个32位字,共128位。
轮密钥rk是一个32位字。
轮函数F的输出是一个32位字。
轮函数F :
F(X0,X1,X2,X3,rk)= X0⊕T(X1⊕X2⊕X3⊕rk)
= X0⊕L(τ(X1⊕X2⊕X3⊕rk))
3.6.1 SMS4算法描述
2 10 18 24
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
X0 X1 X2 X3
rk
输出