版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我们立即下架或删除。
简介: 代换-置换网络SPN的工作
原理及示例
Feistel结构和DES算法
AES算法
迭代密码
迭代密码的核心是一个密钥编排方案和一
个轮函数
密钥编排方案对密钥k进行变换,生成Nr个
子密钥(也叫轮密钥),记为k1,k2,...,kNr
轮函数g是一个状态加密函数,以ki为密钥
对当前状态wr-1进行变换,输出新的状态值
wr,即g(wr-1,ki)=wr;轮函数是单射函数,
存在一个逆变换g-1,有g-1(wr,ki)=wr-1
迭代密码的加解密过程
将密钥k编排成Nr个轮密钥k1,k2,...,kNr
加密:
将明文x定义为初始状态w0,经过Nr轮变换得
到wNr为密文y,即
w0=x, w1=g(w0,k1), w2=g(w1,k2), ...
wNr-1=g(wNr-2,kNr-1), wNr=g(wNr-1,kNr)
y=wNr
迭代密码的加解密过程
解密:
将密文y定义为初始状态wNr,经过Nr轮逆变换
得到w0为明文x,即
y=wNr, wNr-1=g-1(wNr,kNr),wNr-2=g-1(wNr-1,kNr-1)
...
w1=g-1(w2,k2), w0=g-1(w1,k1),
x=w0
代换-置换网络
代换-置换网络(Substitution-Permutation
Network)是一种简单的迭代密码
处理的明文单元和状态值长度为l×m
轮函数g包括两个核心变换——代换和置换,分别
记为πs和πp,有
πs : {0,1}l → {0,1}l
πp : {1,2,...,lm} → {1,2,...,lm}
在进行轮函数变换前,先用轮密钥和状态值进行异
或(称为白化)
代换-置换网络
代换-置换网络的一轮变换过程
代换 代换 代换 代换
与轮密钥异或(白化)
输入状态wr-1(长度为l×m)
置换
输出状态wr(长度为m×l)
S盒
P盒
代替-置换网络
SPN密码体制定义
设l,m,Nr是正整数,P=C={0,1}lm
K⊆({0,1}lm)Nr+1是由初始密钥k用密钥编排算法
生成的所有可能的密钥编排方案集合,一个密
钥编排方案记为(k1,k2,...,kNr+1)
状态值w长度为l×m,记为w1,w2,...,wlm;
w可以看成m个长度为l的子串连接而成,记为
w=w<1>,w<2>,...,w,其中
w=w(i-1)l+1,w(i-1)l+2,...,w(i-1)l+l
加密过程使用算法3.1描述
SPN加密算法
算法3.1 SPN(x,πs,πp,(k1,k2,...,kNr+1))
w0=x
for r=1 to Nr-1 {
ur=wr-1⊕kr // 白化
for i=1 to m {
vr
=πs(ur
) // 代换
}
wr=(vr
πp(1),vr
πp(2),...,vr
πp(lm)) // 置换
}
uNr=wNr-1⊕kNr
for i=1 to m {
vNr
=πs(uNr
) // 代换
}
y=vNr⊕kNr+1 // 白化
return y
代换 代换 代换 代换
与轮密钥异或(白化)
输入状态wr-1
置换
输出状态wr
ur
vr
最后一轮不做置换
SPN解密算法-同样的结构
(
其中
1 1 1 2 1
1
1
11
1 1 2
1 1 1
0 1 1
11
1
1
11
SPN y, , ,( , , , ))
r=N downto 2
do ( )
()
()
()
( ) ( =N ,N , ,2)
rr
r
rr
NN
sp
N
r
r r r
rr
s
rr
p
s
NN
rr
p r r
L L L L
wy
for
v w L
uv
wu
v w L
uv
x w u L
output x
LK
L K r
LK
SPN示例
例3.1 设l=m=Nr=4,代换规则πs定义如下(采
用16进制表示{0,1}4中的每个元素)
在程序中保存这个代换规则的结构称为S盒
置换规则πp定义如下
在程序中保存这个置换规则的结构称为P盒
z 0 1 2 3 4 5 6 7 8 9 A B C D E F
πs(z) E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7
z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
πp(z) 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
SPN示例
... 更多>>