PromleeBlog
网站地图
关于博客
菜单
学习
Security Theory
Symmetric Enc
DES:数据加密标准
DES:数据加密标准
📅
Feistel密码结构(Feistel Cipher Structure)
Feistel密码单轮结构(Feistel Cipher Round Structure)
DES(Data Encryption Standard)
DES:初始置换(Initial Permutation)
DES:置换表(Permutation Tables: E, P)
DES:S盒(S-Boxes)
DES:密钥调度1(Key Schedule 1)
DES:密钥调度2(Key Schedule 2)
DES:安全分析(Security Analysis)
三重DES(Triple DES)
三重DES的特点(Properties of Triple DES)
Feistel密码结构(Feistel Cipher Structure)
🔗
输入:长度为
2
w
2w
2
w
比特的明文分组与密钥
K
K
K
。
将输入明文分成两个
w
w
w
比特的分组,即
L
0
,
R
0
L_0, R_0
L
0
,
R
0
。
经过n轮后,将两部分合并,得到密文分组。
所有轮次具有相同结构。
Feistel密码单轮结构(Feistel Cipher Round Structure)
🔗
DES(Data Encryption Standard)
🔗
明文:64比特,即
2
w
2w
2
w
= 64bits。
密钥:56比特,即
K
K
K
= 56bits。
轮数:16。
每轮生成48比特的子密钥。
DES:初始置换(Initial Permutation)
🔗
输入64比特明文,生成64比特分组。
按照表格重新排列64个比特,最后再使用逆序表进行置换。
例如,如果表中第一个数字是58,那么输出的第一位来自输入的第58位。
它对应DES算法的第一个和最后一个步骤。
为数据提供更多混淆。
DES:置换表(Permutation Tables: E, P)
🔗
E表,即扩展置换:将32比特输入转换为48比特输出。
第一个输出比特来自输入的第k位。
P表:将32比特输入转换为32比特输出。
第一个输出比特来自输入的第k位。
扩展置换将32比特扩展为48比特,以便与子密钥执行XOR。
置换表重新排列S盒结果,形成更复杂的数据结构。
DES:S盒(S-Boxes)
🔗
扩展后的48比特数据经过XOR,再进入8个S盒。
每个S盒把6比特输入映射为4比特输出:
{
0
,
1
}
6
→
{
0
,
1
}
4
{\{0, 1\}}^6 \rightarrow {\{0, 1\}}^4
{
0
,
1
}
6
→
{
0
,
1
}
4
。
a
1
a
2
a
3
a
4
a
5
a
6
→
a
1
a
6
:
r
o
w
,
a
2
a
3
a
4
a
5
:
c
o
l
a_1a_2a_3a_4a_5a_6 \rightarrow a_1a_6 : row, a_2a_3a_4a_5 : col
a
1
a
2
a
3
a
4
a
5
a
6
→
a
1
a
6
:
ro
w
,
a
2
a
3
a
4
a
5
:
co
l
S盒的行、列从0开始。将表中对应的结果转换为二进制,就得到4比特输出。
DES:密钥调度1(Key Schedule 1)
🔗
置换选择1(Permutation Choice 1,PC-1):将56比特密钥K转换为
C
0
,
D
0
C_0, D_0
C
0
,
D
0
,两者各28比特。
它们是后续生成子密钥的基础。
DES密钥K实际包含64比特,但其中8位用作奇偶校验,因此有效密钥为56比特。
奇偶校验位用于检测错误。
DES:密钥调度2(Key Schedule 2)
🔗
利用
C
i
−
1
,
D
i
−
1
C_{i-1}, D_{i-1}
C
i
−
1
,
D
i
−
1
生成
C
i
,
D
i
C_i, D_i
C
i
,
D
i
。
按照每一轮规定的位移量,将
C
i
,
D
i
C_i, D_i
C
i
,
D
i
向左移位。
通过置换选择2(Permutation Choice 2,PC-2),重新排列移位后的
C
i
,
D
i
C_i, D_i
C
i
,
D
i
,生成48比特子密钥。
例如,子密钥第一位来自C和D中表格指定的第k位。
DES:安全分析(Security Analysis)
🔗
除了S盒之外,其余部分都是线性的。
加密密钥较短,只有56比特,因此容易受到暴力破解。
如今已不再使用,并由AES取代。
三重DES(Triple DES)
🔗
通过执行三次加密操作,增强DES的安全性。
E
n
c
(
K
=
(
K
1
,
K
2
,
K
3
)
,
M
)
=
E
n
c
(
K
=
K
3
,
D
e
c
(
K
=
K
2
,
E
n
c
(
K
=
K
1
,
M
)
)
)
Enc(K=(K_1, K_2, K_3), M)=Enc(K = K_3, Dec(K = K_2, Enc(K = K_1, M)))
E
n
c
(
K
=
(
K
1
,
K
2
,
K
3
)
,
M
)
=
E
n
c
(
K
=
K
3
,
Dec
(
K
=
K
2
,
E
n
c
(
K
=
K
1
,
M
)))
D
e
c
(
K
=
(
K
1
,
K
2
,
K
3
)
,
C
)
=
D
e
c
(
K
=
K
1
,
E
n
c
(
K
=
K
2
,
D
e
c
(
K
=
K
3
,
C
)
)
)
Dec(K=(K_1, K_2, K_3), C)=Dec(K = K_1, Enc(K = K_2, Dec(K = K_3, C)))
Dec
(
K
=
(
K
1
,
K
2
,
K
3
)
,
C
)
=
Dec
(
K
=
K
1
,
E
n
c
(
K
=
K
2
,
Dec
(
K
=
K
3
,
C
)))
三重DES的特点(Properties of Triple DES)
🔗
明文大小与密文大小均为64比特。
密钥大小为DES的三倍,即168比特。
优点:
能抵御针对DES的暴力破解。
底层加密算法仍然是DES。
缺点:
分组只有64比特,相对168比特密钥较小。
加密速度较慢。
DES:数据加密标准 | PromleeBlog