1、数据加密标准

  • 设计要求:算法的安全性取决于密钥,不依赖于算法(因为算法是公开的)
  • 现代大多数的对称分组密码也是基于Feistel密码结构

image.png

  • 1977年1月15日正式发布,属于对合运算
  • 第一个被公布出来的加密标准算法
  • 综合使用了置换(P)、代替(S)和代数(异或⊕)等多种密码技术
  • 安全使用10-15年,用于非机密的敏感数据加密,非军事场合
  • 典型的Feistel结构,一共进行16轮迭代

2、分组密码原理

  • 扩散:修改1位明文,密文要修改很多
  • 混乱:密文和明文之间关系复杂
  • 乘积密码:使用多个密码的强度大于单个强度

3、DES算法加密流程

image.png

  • 生成16个48位子密钥
  • 对64位明文初始化置换IP,打乱重排,分成左右各半
  • 对R进行扩展置换E,E(R),32位扩展到48位
  • 进行S盒代换,对K⊕E(R)进行非线性变换,8个S盒,产生32位的混淆数据
  • 置换P,扩散
  • 逆初始化置换IP

4、DES算法的数学表示形式

image.png
image.png


5、Feistel密码

  • 这是一条加密方案设计的通用原则,而并非特定的密码方案

6、子密钥产生过程

image.png

  • 密钥分组长度:64位

    📍置换选择PC1

  • 去掉8、16、24、32、40、48、56、64这8个奇偶校验位

    image.png

  • 打乱重排,形成左右各半28位(左C0,右D0)

  • 有效密钥长度:56位

    • 循环左移位(不同轮数,左移位的数不同,循环移位表)

      微信图片_20190916104309.png

  • 每轮子秘密钥长度:48位

    📍 置换选择PC2

  • 选出48位子密钥,一般都会给出一个选择表


7、初始化置换IP

  • 这个会直接给到一个表,直接对着将二进制的数据去做排列即可
  • 经过置换IP之后,直接分左右各半L、R

8、DES加密函数f

image.png

  • 是DES的核心
  • 加密数据
  • 数据处理宽度为32位

    📍选择运算E(扩展置换E)

    image.png

  • 32位扩展到48位

    • 扩展大概是追位规则(如下所示)

image.png

📍S盒代换(对E(R0)⊕K1进行)

image.png

📌属性

  • 是DES唯一的非线性变换
  • 是DES安全的关键
  • 8个S盒
  • 每个S盒有6个输入,4个输出,是一种非线性的压缩变换

    📌计算

  • 首末2位组成的二进制转换十进制为行号,中间的4位组成的二进制转换十进制为列号,行列相交点的数(二进制)为输出

  • 行号最大(11),也就是0~3,4行;列号最大(1111),也就是0~15,16行
  • 每一行的数都是0~15不重复

题目
image.png

📍置换运算P

image.png

  • 会给出一个表,直接在S1……S8进行排列,然后重新排序

    📌属性

  • 是f函数的最后一个操作

  • 把数据打乱重排

9、其他

  • DES最后一轮是不需要做左右交换
  • 逆初始置换IP-1可通过初始置换IP推算

    如果有简化的DES版本,其明文输入为8比特,初始置换表IP如下: IP:2 6 3 1 4 8 5 7 请给出其逆初始置换表。
    假设原文为:abcdefgh 经IP后M 1 ,变为:bfcadheg 逆初始置换与初始置换是互逆,即把M1重新变为M IP逆初始置换表:4 1 3 5 7 2 8 6


10、DES解密过程

image.png

  • 对合运算,所以解密和加密算法相同
  • 子密钥使用顺序倒序:K、K、……、K
  • (换做是左边做相关操作运算)

11、DES的弱密钥与半弱密钥

📍弱密码

初始密钥被分成两部分,每部分都单独做移位。如果每一部分的每一位都是0或都是1,则每一圈的子密钥都相同。这样的密钥被称为弱密钥。

📌属性

  • 存在4个弱密钥

image.png

📍半弱密钥

有些成对的密钥会将明文加密成相同的密文,即一对密钥中的一个能用来解密由另一个密钥加密的消息,这种密钥称作半弱密钥。

📌属性

  • 至少有12个半弱密钥

image.png