3.4 数据加密标准(DES)- lmn-【密码学】小世界-安全文库-NGC660安全实验室

3.4 数据加密标准(DES)- lmn

数据加密标准(DES)概念及工作原理

m_b9d5dd0e8359a5f59a2a62baeb70e900_r

0x01 数据加密标准DES介绍

数据加密标准(Data Encryption Standard)(DES)是一种用于加密数字数据的对称密钥算法。密钥长度为56位,安全性不强,但它在密码学的进步中具有很大的影响力。

0x02 数据加密标准历史

数据加密标准DES于1970年代初在IBM开发,是由美国的国家标准局(NBS,即现在的国家标准与技术会NIST)开启,在1972年时,当时美国国家标准局对美国政府计算机安全的研究发现需要一个政府范围的标准来加密未分类的敏感信息。

基于Horst Feistel的早期设计,应国家标准局(NBS)的邀请提交给保护敏感、非机密电子政府数据的候选者。
m_2b664b6b0e35b527182ca3efcb4aa6b5_r

1973年,NBS 征求了符合严格设计标准的密码方案,但还没有达到要求。1974年,IBM提交了 1973-1974 年间基于早期算法Horst Feistel的Lucifer密码开发的密码。

DES 在 1976 年 11 月被批准为联邦标准,在与国家安全局(NSA) 协商后,NBS选择了一个稍微修改过的版本(加强了针对差分密码分析,但削弱了针对暴力攻击),作为官方的联邦信息处理标准(FIPS)发布1977 年的美国。

0x03 数据加密标准DES工作原理

数据加密标准DES是块加密算法,它采用固定长度的明文位串,按64位块长度分块进行加密数据,算法通过把数据分为以64为单位的块,把64位明文作为DES的输入,产生64位密文输出。

DES为对称加密算法,也就是加密与解密使用相同的算法和密钥。

密钥表面上由 64 位组成,实际使用了其中的 56 位,8位仅用于检查奇偶性之后被丢弃。

与其他分组密码一样,DES 本身并不是一种安全的加密方式,而是必须在一种操作模式下使用。解密使用与加密相同的结构,但使用的密钥顺序相反。

m_5c42611ba4c1b8bec61e334476680588_r

 

通过上图可以看出,一共经历了 16 次相同的阶段,也称为称为轮次。在开始之前,先通过IP,就是将64位分为两个32位,并交替处理。Feistel 结构确保解密和加密是非常相似的过程——唯一的区别是子密钥在解密时以相反的顺序应用,算法的其余部分是相同的,简化了繁杂的实现过程。

图片中⊕符号表示异或(XOR)

F 函数将半个块与一些密钥一起打乱。然后将 F 函数的输出与块的另一半组合,并在下一轮之前交换两半。最后一轮结束后,交换两半;这是Feistel结构的一个特点,它使加密和解密过程相似。

Feistel (F) 函数

  • 扩展:使用扩展置换,通过复制一半位,将 32 位半块扩展为 48 位。输出由 8 个 6 位(8 × 6 = 48 位)片段组成,每个片段包含 4 个相应输入位的副本,以及从每个输入片段到任一侧的紧邻位的副本。

  • 键混合:使用⊕(XOR)操作将结果与子键组合。16 个 48 位子密钥(每轮一个)是使用密钥调度从主密钥派生的。

  • 替换:在子密钥中混合后,块在被S盒或替换盒处理之前被分成 8 个 6 位块。根据以查找表形式提供的非线性变换,8个S盒中的每一个都将其6个输入位替换为4个输出位。
    S-box 提供了 DES 安全性的核心——没有它们,密码将是线性的,并且很容易被破解。

  • 排列:最后,来自 S-box 的 32 个输出根据固定排列P-box重新排列。在排列之后,本轮中每个 S-box 输出的比特在下一轮中分布在四个不同的 S-box 中。

S-box(substitution box)也叫“密码置换盒”,用于提高安全系数

References:
https://en.wikipedia.org/
请登录后发表评论

    请登录后查看回复内容