PromleeBlog

posting thumbnail
DES:数据加密标准

📅

Feistel密码结构(Feistel Cipher Structure) 🔗

输入:长度为2w2w比特的明文分组与密钥KK。
将输入明文分成两个ww比特的分组,即L0,R0L_0, R_0。
经过n轮后,将两部分合并,得到密文分组。
所有轮次具有相同结构。

Feistel密码单轮结构(Feistel Cipher Round Structure) 🔗

240425-125848

DES(Data Encryption Standard) 🔗

明文:64比特,即2w2w = 64bits。
密钥:56比特,即KK = 56bits。
轮数:16。
每轮生成48比特的子密钥。

DES:初始置换(Initial Permutation) 🔗

输入64比特明文,生成64比特分组。
按照表格重新排列64个比特,最后再使用逆序表进行置换。
例如,如果表中第一个数字是58,那么输出的第一位来自输入的第58位。
它对应DES算法的第一个和最后一个步骤。
为数据提供更多混淆。

DES:置换表(Permutation Tables: E, P) 🔗

E表,即扩展置换:将32比特输入转换为48比特输出。
扩展置换将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。
a1a2a3a4a5a6→a1a6:row,a2a3a4a5:cola_1a_2a_3a_4a_5a_6 \rightarrow a_1a_6 : row, a_2a_3a_4a_5 : col
S盒的行、列从0开始。将表中对应的结果转换为二进制,就得到4比特输出。

DES:密钥调度1(Key Schedule 1) 🔗

置换选择1(Permutation Choice 1,PC-1):将56比特密钥K转换为C0,D0C_0, D_0,两者各28比特。
它们是后续生成子密钥的基础。
DES密钥K实际包含64比特,但其中8位用作奇偶校验,因此有效密钥为56比特。
奇偶校验位用于检测错误。

DES:密钥调度2(Key Schedule 2) 🔗

利用Ci−1,Di−1C_{i-1}, D_{i-1}生成Ci,DiC_i, D_i。
按照每一轮规定的位移量,将Ci,DiC_i, D_i向左移位。
通过置换选择2(Permutation Choice 2,PC-2),重新排列移位后的Ci,DiC_i, D_i,生成48比特子密钥。
例如,子密钥第一位来自C和D中表格指定的第k位。

DES:安全分析(Security Analysis) 🔗

除了S盒之外,其余部分都是线性的。
加密密钥较短,只有56比特,因此容易受到暴力破解。
如今已不再使用,并由AES取代。

三重DES(Triple DES) 🔗

通过执行三次加密操作,增强DES的安全性。
Enc(K=(K1,K2,K3),M)=Enc(K=K3,Dec(K=K2,Enc(K=K1,M)))Enc(K=(K_1, K_2, K_3), M)=Enc(K = K_3, Dec(K = K_2, Enc(K = K_1, M)))
Dec(K=(K1,K2,K3),C)=Dec(K=K1,Enc(K=K2,Dec(K=K3,C)))Dec(K=(K_1, K_2, K_3), C)=Dec(K = K_1, Enc(K = K_2, Dec(K = K_3, C)))

三重DES的特点(Properties of Triple DES) 🔗

明文大小与密文大小均为64比特。
密钥大小为DES的三倍,即168比特。
优点:
    DES:数据加密标准 | PromleeBlog