数据加密标准 (DES)

DES 设计参数

 

DES 操作符号

 

加密

  1. 初始置换(IP)

  2. 每一轮的操作

    • 将输入分成两等份 M=(L0,R0)

    • 对右半部分应用费斯妥函数

    • 将结果与旧的左半部计算异或,成为新的左半部

    • 交换旧的右半部分和新的左半部分,除非我们处于最后一轮

       

      意即:

      对于每一轮

      i=1,2,...,16

      计算

      Li=Ri1Ri=Li1F(Ki,Ri1)

    最后得到 C=(R16,L16)

  3. 最终置换(FP 或 IP-1

 

解密

与加密一样,但子密钥顺序相反

  1. 最终置换( FP或IP-1 

  2. 每一轮的操作

    • 将输入分成两等份 C=(R16,L16)

    • 对于每一轮

    i=1615...1

    计算

    Ri1=LiLi1=RiF(Ki,L1)

    加密公式

    Li=Ri1Ri=Li1F(Ki,Ri1)

     

  3. 初始置换(IP)

 

密钥调度

每一轮都有不同的密钥,由所谓的密钥调度计算得出

DES-key-schedule

i=1,2,...,16

计算

Ci=Ci1<<<piDi=Di1<<<pi

其中

pi={1如果 i=1,2,9,162否则 

费斯妥函数

DES-f-function

  1. 扩张置换( E函数 )

    • 通过将 16 个位加倍并排列,将 32 位半块扩展为 48 位块

  2. 子密钥加

    • 计算子密钥与这个48位块的异或

  3. S盒

    • 将 48 位分割成 8 个 6 位块。将 6 位块分别输入 8 个置换盒,由 4 位块置换出 6 位块。

    • DES的非线性操作,DES的核心

      • 什么是线性?

        fa+b=f(a)+f(b)
    • S盒是一个查找表,输入为6位,输出为4位。

      • 工作原理

        • 取出第一位和最后一位并连接它们,这个两位数字是行索引

        • 四个内部位表示列号

        • 输出是表中相应的条目

    • 它有以下约束条件:

      • 任何一个输出位都不应过于接近输入位的线性组合

      • 如果 S 盒的两个输入位正好相差一个位,那么它们的输出位必须至少相差两个位

      • 如果 S盒 的两个输入位在中间两个位上不同,那么它们的输出位必须至少在两个位上不同

      • 如果 S 盒的两个输入在前两个位上不同,而在后两个位上相同,则 S 盒的输出必须至少有两个位不同。

  4. P盒

    • 将这 8 个 4 位数据块合并为 32 位数据块,再进行一次排列。

混淆和扩散

3DES

按照今天的标准,DES是不安全的。

"2DES"

DES是一个很好的设计,但是由于它只有56位密钥,只有大约256的安全性(有一些对DES的密码分析攻击,但不是很严重,所以我们说它的安全性大约是256)。

对于 2DES:EncK1(EncK2(M)),安全性不会超过257

3DES 很好,但慢

EncK1(DecK2(EncK3(M)))