DES 概述
- 分组加密算法 : 明文、密文64位分组长度
- 对称算法 : 加密和解密密钥编排不同,但使用同一算法
- 密钥长度:56位 —— 每个第8位为奇偶校验位
- 密钥为任意的56位数,存在 弱密钥, 容易避开
- 混乱与扩散的组合,每个组合先代替后替换,16轮
- 只使用标准的算数和逻辑运算、易于时间
其他加密算法
Triple DES Triple DES
IDEA
RC5
RC6
AES
其他一些较实用的算法,如Blowfish,CAST,以及RC2等
加密过程
- 输入64bit明文数据
- 初始置换 I P IP IP
- 密钥控制下 16 轮迭代
- 交换左右32bit
- 初始逆置换 I P − 1 IP^{-1} IP−1
L
0
R
0
←
I
P
(
64
b
i
t
输入法
)
L_0R_0\leftarrow IP(64bit输入法)
L0R0←IP(64bit输入法)
L
i
←
R
i
−
1
L_i \leftarrow R_{i-1}
Li←Ri−1
L
i
←
L
i
⊕
f
(
R
i
−
1
,
k
1
)
L_i\leftarrow L_i \oplus f(R_{i-1}, k_1)
Li←Li⊕f(Ri−1,k1)
64
b
i
t
密文
←
I
P
−
1
(
R
16
L
16
)
64bit密文 \leftarrow IP^{-1}(R_{16}L_{16})
64bit密文←IP−1(R16L16)
i为迭代次数, ⊕ \oplus ⊕为逐位mod2求和,f是加密函数
以此推出解密过程
(
R
16
L
16
)
←
I
P
(
64
b
i
t
密文
)
(R_{16}L_{16})\leftarrow IP(64bit密文)
(R16L16)←IP(64bit密文)
R
i
−
1
←
L
i
R_{i-1} \leftarrow L_i
Ri−1←Li
L
i
←
R
i
−
1
⊕
f
(
L
i
−
1
,
k
1
)
L_i\leftarrow R_{i-1} \oplus f(L_{i-1}, k_1)
Li←Ri−1⊕f(Li−1,k1)
64
b
i
t
明文
←
I
P
−
1
(
L
0
R
0
)
64bit明文 \leftarrow IP^{-1}(L_0R_0)
64bit明文←IP−1(L0R0)
置换、拓展、代替
初始置换
I
P
IP
IP和初始逆置换
I
P
−
1
IP^{-1}
IP−1
初始置换IP表示,原来在第58位(8行2列)的数据放到第1行第1位
拓展置换E合 —— 32 扩展到48位
把32位分为4列
- 原来的第一列 --> 第2列和第6列
- 原来的第4列 --> 新第5列和第一列,注意他们相对于 行往前挪了一位
压缩替代S-盒-48位压缩到32位
找出一个4行16列的盒子
48位变为6位二进制
a
1
a
2
a
3
a
4
a
5
a
6
a_1a_2a_3a_4a_5a_6
a1a2a3a4a5a6
拿出首位和最后一位组成
a
1
a
6
a_1a_6
a1a6作为行,剩余为
a
2
a
3
a
4
a
5
a_2a_3a_4a_5
a2a3a4a5作为列选择,得到对应的32位
安全性分析
- DES其他算法线性,S-盒 非线性
- S- 盒不易于分析,提供更好安全性
- S-盒是关键
如何构造S盒
- 密码算法的 唯一非线性部件,决定算法安全强度
- 密码算法必须的混乱作用
- S-和密码强度,S-盒分组设计
- 非线性度、差分均匀、严格雪崩、可逆、无陷门
置换p-盒的构造
提供雪崩效应
明文、密钥变动引起密文变化
密钥
密钥置换算法准则
- 子密钥统计独立性、灵活性
- 简单
- 速度
- 但没有简单关系(给定两个有某种关系的种子密钥,可以预测他们轮子密钥的关系)
- 种子密钥对所有子密钥影响一致
- 子密钥获取其他子密钥比特比较困难
- 无弱密钥
工作模式
- 电子密码本 ECB (electronic codebook mode) ECB (electronic codebook mode)
- 密码分组链接 CBC (cipher block chaining)
- 密码反馈 CFB (cipher feedback)
- 输出反馈 OFB (output feedback)
ECB
每段明文单独加密
C i = E K ( P i ) P i = D K ( C i ) C_i = E_K (P_i)\quad P_i = D_K (C_i) Ci=EK(Pi)Pi=DK(Ci)
- 简单有效
- 可并行
- 不能隐藏明文的 模式信息
- 相同明文生成相同密文,同样信息多次出现造成泄漏
- 对明文可主动攻击 —— 替换、重拍、删除、重放
- 误差传递 : 密文坏-> 对应明文损坏
- 传输短信息
CBC
C i = E K ( P i ⊕ C i − 1 ) P i = D K ( C i ) ⊕ C i − 1 C_i = E_K (P_i\oplus C_{i-1})\quad P_i = D_K (C_i)\oplus C_{i-1} Ci=EK(Pi⊕Ci−1)Pi=DK(Ci)⊕Ci−1
- 没有已知的并行实现算法
- 可隐藏模式信息
- 共同初始化向量 I V IV IV
- 相同明文生成不同密文
- 初始化向量IV可以用来改变第一块
- 难主动攻击明文
- 信息块不容易被替换、重排、删除、重传
- 误差传递: 密文坏 -> 两块文件坏
- 安全性好于ECB
- 适合于传输长度大于64位的报文,还可以进行用户鉴别 – SSL 或 IPSec
CFB
分组密码 ⇒ 流密码 分组密码\Rightarrow 流密码 分组密码⇒流密码
假定
- S i S_i Si是移位寄存器,传输jbit
- 加密
C
i
=
P
i
⊕
E
k
(
S
i
)
的高
j
位
C_i = P_i\oplus E_k(S_i)的高j位
Ci=Pi⊕Ek(Si)的高j位
S i + 1 = ( S i < < j ) ∣ C i S_{i+1}=(S_i << j) | C_i Si+1=(Si<<j)∣Ci - 解密
P
i
=
C
i
⊕
E
k
(
S
i
)
的高
j
位
P_i = C_i\oplus E_k(S_i)的高j位
Pi=Ci⊕Ek(Si)的高j位
S i + 1 = ( S i < < j ) ∣ C i S_{i+1}=(S_i << j) | C_i Si+1=(Si<<j)∣Ci
特点
- 分组密码 ⇒ 流密码 分组密码\Rightarrow 流密码 分组密码⇒流密码
- 无并行实现算法
- 隐藏明文
- 共同的移位寄存器初始值 I V IV IV —— 不同信息,IV唯一
- 误差传递: 一个单元损坏影响多个单元
OFB
分组密码 ⇒ 流密码 分组密码\Rightarrow 流密码 分组密码⇒流密码
假定与CFB一样
但是加密如下
C
i
=
P
i
⊕
E
k
(
S
i
)
的高
j
位
C_i = P_i\oplus E_k(S_i)的高j位
Ci=Pi⊕Ek(Si)的高j位
S
i
+
1
=
(
S
i
<
<
j
)
∣
(
E
k
(
S
i
)
的高
j
位
)
S_{i+1}=(S_i << j) | (E_k(S_i)的高j位)
Si+1=(Si<<j)∣(Ek(Si)的高j位)
(S的变化有别于CFB)
解密
P
i
=
C
i
⊕
E
k
(
S
i
)
的高
j
位
P_i = C_i\oplus E_k(S_i)的高j位
Pi=Ci⊕Ek(Si)的高j位
S
i
+
1
=
(
S
i
<
<
j
)
∣
(
E
k
(
S
i
)
的高
j
位
)
S_{i+1}=(S_i << j) | (E_k(S_i)的高j位)
Si+1=(Si<<j)∣(Ek(Si)的高j位)
特点
前四点和CFB一样
- 分组密码 ⇒ 流密码 分组密码\Rightarrow 流密码 分组密码⇒流密码
- 无并行实现算法
- 隐藏明文
- 共同的移位寄存器初始值 I V IV IV —— 不同信息,IV唯一
第五点开始
- 误差传递:一个单元损坏只影响对应单元
- 对明文的主动攻击是可能的 – 被替换、重排、删除、重放
- 安全性不如CFB
多重DES
安全性
- F函数(S-Box)设计原理未知
- 密钥长度的争论
- DES的破译
- 弱密钥与半弱密钥
长度问题
2
56
≈
1
0
17
2^{56} \approx 10^{17}
256≈1017
现在可以一天内破解密钥
弱密钥、半弱密钥
弱密钥:
E
K
⋅
E
K
=
I
E_K \cdot E_K= I
EK⋅EK=I
DES存在4个弱密钥
p
=
E
k
(
E
k
(
P
)
)
p = E_k(E_k(P))
p=Ek(Ek(P))
半弱密钥:
E
K
1
=
E
K
2
E_{K1} = E_{K2}
EK1=EK2
至少有12个半弱密钥
C
=
E
k
1
(
P
)
=
E
k
2
(
P
)
C = Ek_1(P) = E_{k2}(P)
C=Ek1(P)=Ek2(P)
使用常规加密进行保密通信
针对 易受攻击的位置
有 链路加密和端到端加密
链路层加密
针对某一次通信链路
消息在被传输之前进行加密,在每一个节点对接收到的消息进行解密,然后先使用下 个链路的密钥对消 一个链路的密钥对消
息进行加密,再进行传输
优点
- 中间传输节点消息均被解密后重新进行加密
- 链路上数据以密文形式出现
- 掩盖消息源点终点
- 填充技术的使用 -》 消息频率、长度被掩盖,防止通信业务的分析
缺点
- 要对链路两端加密设备进行同步, 给网络性能、可管理性带来副作用
- 网络节点中,链路加密只在通信链路上提供安全性,节点上是明文 —— 需要节点的物理安全
- 对称加密系统,要建立专用网络措施,但网络节点分布宽阔,且密钥连续分配较难
节点加密
类似链路加密。 中间节点解密再加密
差异:不允许消息在节点以明文方式存在,解密后用另一个密钥加密 —— 在节点的另一个安全模块进行
安全性: 报头和路由信息以明文传输,对攻击者分析通信业务无能为力
端到端加密
从源点到终点的传输过程中始终以密文形式存在
又叫脱线加密 包加密,到底终点前不解密。节点损坏不会导致消息泄露
优点
- 便宜,更可靠,容易设计、实现、维护
- 避免同步问题 ——报文包是独立加密的,报文包传输错误不影响后续
- 端到端加密更自然,不影响网络其他用户
缺点
- 不允许对目的地址加密
- 不掩盖消息源、目的地,对攻击者分析通信业务无能为力