0


网安笔记03 DES概述

DES 概述

  • 分组加密算法 : 明文、密文64位分组长度
  • 对称算法 : 加密和解密密钥编排不同,但使用同一算法
  • 密钥长度:56位 —— 每个第8位为奇偶校验位
  • 密钥为任意的56位数,存在 弱密钥, 容易避开
  • 混乱与扩散的组合,每个组合先代替后替换,16轮
  • 只使用标准的算数和逻辑运算、易于时间

其他加密算法

Triple DES Triple DES
IDEA
RC5
RC6
AES
其他一些较实用的算法,如Blowfish,CAST,以及RC2等

加密过程

  1. 输入64bit明文数据

  2. 初始置换 I P IP IP

  3. 密钥控制下 16 轮迭代

  4. 交换左右32bit

  5. 初始逆置换 I P − 1 IP^{-1} IP−1

        L 
       
      
        0 
       
      
      
      
        R 
       
      
        0 
       
      
     
       ← 
      
     
       I 
      
     
       P 
      
     
       ( 
      
     
       64 
      
     
       b 
      
     
       i 
      
     
       t 
      
     
       输入法 
      
     
       ) 
      
     
    
      L_0R_0\leftarrow IP(64bit输入法) 
     
    

    L0​R0​←IP(64bit输入法)

        L 
       
      
        i 
       
      
     
       ← 
      
      
      
        R 
       
       
       
         i 
        
       
         − 
        
       
         1 
        
       
      
     
    
      L_i \leftarrow R_{i-1} 
     
    

    Li​←Ri−1​

        L 
       
      
        i 
       
      
     
       ← 
      
      
      
        L 
       
      
        i 
       
      
     
       ⊕ 
      
     
       f 
      
     
       ( 
      
      
      
        R 
       
       
       
         i 
        
       
         − 
        
       
         1 
        
       
      
     
       , 
      
      
      
        k 
       
      
        1 
       
      
     
       ) 
      
     
    
      L_i\leftarrow L_i \oplus f(R_{i-1}, k_1) 
     
    

    Li​←Li​⊕f(Ri−1​,k1​)

       64 
      
     
       b 
      
     
       i 
      
     
       t 
      
     
       密文 
      
     
       ← 
      
     
       I 
      
      
      
        P 
       
       
       
         − 
        
       
         1 
        
       
      
     
       ( 
      
      
      
        R 
       
      
        16 
       
      
      
      
        L 
       
      
        16 
       
      
     
       ) 
      
     
    
      64bit密文 \leftarrow IP^{-1}(R_{16}L_{16}) 
     
    

    64bit密文←IP−1(R16​L16​)

i为迭代次数,

     ⊕ 
    
   
  
    \oplus 
   
  
⊕为逐位mod2求和,f是加密函数

以此推出解密过程

      ( 
     
     
     
       R 
      
     
       16 
      
     
     
     
       L 
      
     
       16 
      
     
    
      ) 
     
    
      ← 
     
    
      I 
     
    
      P 
     
    
      ( 
     
    
      64 
     
    
      b 
     
    
      i 
     
    
      t 
     
    
      密文 
     
    
      ) 
     
    
   
     (R_{16}L_{16})\leftarrow IP(64bit密文) 
    
   
 (R16​L16​)←IP(64bit密文)

  
   
    
     
     
       R 
      
      
      
        i 
       
      
        − 
       
      
        1 
       
      
     
    
      ← 
     
     
     
       L 
      
     
       i 
      
     
    
   
     R_{i-1} \leftarrow L_i 
    
   
 Ri−1​←Li​

  
   
    
     
     
       L 
      
     
       i 
      
     
    
      ← 
     
     
     
       R 
      
      
      
        i 
       
      
        − 
       
      
        1 
       
      
     
    
      ⊕ 
     
    
      f 
     
    
      ( 
     
     
     
       L 
      
      
      
        i 
       
      
        − 
       
      
        1 
       
      
     
    
      , 
     
     
     
       k 
      
     
       1 
      
     
    
      ) 
     
    
   
     L_i\leftarrow R_{i-1} \oplus f(L_{i-1}, k_1) 
    
   
 Li​←Ri−1​⊕f(Li−1​,k1​)

  
   
    
    
      64 
     
    
      b 
     
    
      i 
     
    
      t 
     
    
      明文 
     
    
      ← 
     
    
      I 
     
     
     
       P 
      
      
      
        − 
       
      
        1 
       
      
     
    
      ( 
     
     
     
       L 
      
     
       0 
      
     
     
     
       R 
      
     
       0 
      
     
    
      ) 
     
    
   
     64bit明文 \leftarrow IP^{-1}(L_0R_0) 
    
   
 64bit明文←IP−1(L0​R0​)

置换、拓展、代替

初始置换

     I 
    
   
     P 
    
   
  
    IP 
   
  
IP和初始逆置换 
 
  
   
   
     I 
    
    
    
      P 
     
     
     
       − 
      
     
       1 
      
     
    
   
  
    IP^{-1} 
   
  
IP−1

在这里插入图片描述

初始置换IP表示,原来在第58位(8行2列)的数据放到第1行第1位

在这里插入图片描述

拓展置换E合 —— 32 扩展到48位

把32位分为4列

  1. 原来的第一列 --> 第2列和第6列
  2. 原来的第4列 --> 新第5列和第一列,注意他们相对于 行往前挪了一位

在这里插入图片描述

压缩替代S-盒-48位压缩到32位

找出一个4行16列的盒子

48位变为6位二进制

       a 
      
     
       1 
      
     
     
     
       a 
      
     
       2 
      
     
     
     
       a 
      
     
       3 
      
     
     
     
       a 
      
     
       4 
      
     
     
     
       a 
      
     
       5 
      
     
     
     
       a 
      
     
       6 
      
     
    
   
     a_1a_2a_3a_4a_5a_6 
    
   
 a1​a2​a3​a4​a5​a6​

拿出首位和最后一位组成

      a 
     
    
      1 
     
    
    
    
      a 
     
    
      6 
     
    
   
  
    a_1a_6 
   
  
a1​a6​作为**行**,剩余为 
 
  
   
    
    
      a 
     
    
      2 
     
    
    
    
      a 
     
    
      3 
     
    
    
    
      a 
     
    
      4 
     
    
    
    
      a 
     
    
      5 
     
    
   
  
    a_2a_3a_4a_5 
   
  
a2​a3​a4​a5​作为**列**选择,得到对应的32位

在这里插入图片描述

安全性分析

  1. DES其他算法线性,S-盒 非线性
  2. S- 盒不易于分析,提供更好安全性
  3. S-盒是关键

如何构造S盒

  1. 密码算法的 唯一非线性部件,决定算法安全强度
  2. 密码算法必须的混乱作用
  3. S-和密码强度,S-盒分组设计
  4. 非线性度、差分均匀、严格雪崩、可逆、无陷门

置换p-盒的构造

提供雪崩效应
明文、密钥变动引起密文变化

密钥

在这里插入图片描述

密钥置换算法准则

  1. 子密钥统计独立性、灵活性
  2. 简单
  3. 速度
  4. 但没有简单关系(给定两个有某种关系的种子密钥,可以预测他们轮子密钥的关系)
  5. 种子密钥对所有子密钥影响一致
  6. 子密钥获取其他子密钥比特比较困难
  7. 无弱密钥

工作模式

  1. 电子密码本 ECB (electronic codebook mode) ECB (electronic codebook mode)
  2. 密码分组链接 CBC (cipher block chaining)
  3. 密码反馈 CFB (cipher feedback)
  4. 输出反馈 OFB (output feedback)

ECB

每段明文单独加密

       C 
      
     
       i 
      
     
    
      = 
     
     
     
       E 
      
     
       K 
      
     
    
      ( 
     
     
     
       P 
      
     
       i 
      
     
    
      ) 
     
     
     
     
       P 
      
     
       i 
      
     
    
      = 
     
     
     
       D 
      
     
       K 
      
     
    
      ( 
     
     
     
       C 
      
     
       i 
      
     
    
      ) 
     
    
   
     C_i = E_K (P_i)\quad P_i = D_K (C_i) 
    
   
 Ci​=EK​(Pi​)Pi​=DK​(Ci​)
  1. 简单有效
  2. 可并行
  3. 不能隐藏明文的 模式信息
  4. 相同明文生成相同密文,同样信息多次出现造成泄漏
  5. 对明文可主动攻击 —— 替换、重拍、删除、重放
  6. 误差传递 : 密文坏-> 对应明文损坏
  7. 传输短信息

CBC

       C 
      
     
       i 
      
     
    
      = 
     
     
     
       E 
      
     
       K 
      
     
    
      ( 
     
     
     
       P 
      
     
       i 
      
     
    
      ⊕ 
     
     
     
       C 
      
      
      
        i 
       
      
        − 
       
      
        1 
       
      
     
    
      ) 
     
     
     
     
       P 
      
     
       i 
      
     
    
      = 
     
     
     
       D 
      
     
       K 
      
     
    
      ( 
     
     
     
       C 
      
     
       i 
      
     
    
      ) 
     
    
      ⊕ 
     
     
     
       C 
      
      
      
        i 
       
      
        − 
       
      
        1 
       
      
     
    
   
     C_i = E_K (P_i\oplus C_{i-1})\quad P_i = D_K (C_i)\oplus C_{i-1} 
    
   
 Ci​=EK​(Pi​⊕Ci−1​)Pi​=DK​(Ci​)⊕Ci−1​

在这里插入图片描述

  1. 没有已知的并行实现算法
  2. 可隐藏模式信息
  • 共同初始化向量 I V IV IV
  • 相同明文生成不同密文
  • 初始化向量IV可以用来改变第一块
  1. 难主动攻击明文
  • 信息块不容易被替换、重排、删除、重传
  • 误差传递: 密文坏 -> 两块文件坏
  1. 安全性好于ECB
  2. 适合于传输长度大于64位的报文,还可以进行用户鉴别 – SSL 或 IPSec

CFB

     分组密码 
    
   
     ⇒ 
    
   
     流密码 
    
   
  
    分组密码\Rightarrow 流密码 
   
  
分组密码⇒流密码

假定

  1.                                                S                               i                                            S_i                     Si​是移位寄存器,传输jbit
    
  2. 加密 C i = P i ⊕ E k ( S i ) 的高 j 位 C_i = P_i\oplus E_k(S_i)的高j位 Ci​=Pi​⊕Ek​(Si​)的高j位 S i + 1 = ( S i < < j ) ∣ C i S_{i+1}=(S_i << j) | C_i Si+1​=(Si​<<j)∣Ci​
  3. 解密 P i = C i ⊕ E k ( S i ) 的高 j 位 P_i = C_i\oplus E_k(S_i)的高j位 Pi​=Ci​⊕Ek​(Si​)的高j位 S i + 1 = ( S i < < j ) ∣ C i S_{i+1}=(S_i << j) | C_i Si+1​=(Si​<<j)∣Ci​

在这里插入图片描述
在这里插入图片描述

特点

  1.                                     分组密码                            ⇒                            流密码                                  分组密码\Rightarrow 流密码                     分组密码⇒流密码
    
  2. 无并行实现算法
  3. 隐藏明文
  4. 共同的移位寄存器初始值 I V IV IV —— 不同信息,IV唯一
  5. 误差传递: 一个单元损坏影响多个单元

OFB

     分组密码 
    
   
     ⇒ 
    
   
     流密码 
    
   
  
    分组密码\Rightarrow 流密码 
   
  
分组密码⇒流密码

假定与CFB一样
但是加密如下

      C 
     
    
      i 
     
    
   
     = 
    
    
    
      P 
     
    
      i 
     
    
   
     ⊕ 
    
    
    
      E 
     
    
      k 
     
    
   
     ( 
    
    
    
      S 
     
    
      i 
     
    
   
     ) 
    
   
     的高 
    
   
     j 
    
   
     位 
    
   
  
    C_i = P_i\oplus E_k(S_i)的高j位 
   
  
Ci​=Pi​⊕Ek​(Si​)的高j位

  
   
    
     
     
       S 
      
      
      
        i 
       
      
        + 
       
      
        1 
       
      
     
    
      = 
     
    
      ( 
     
     
     
       S 
      
     
       i 
      
     
    
      < 
     
    
      < 
     
    
      j 
     
    
      ) 
     
    
      ∣ 
     
    
      ( 
     
     
     
       E 
      
     
       k 
      
     
    
      ( 
     
     
     
       S 
      
     
       i 
      
     
    
      ) 
     
    
      的高 
     
    
      j 
     
    
      位 
     
    
      ) 
     
    
   
     S_{i+1}=(S_i << j) | (E_k(S_i)的高j位) 
    
   
 Si+1​=(Si​<<j)∣(Ek​(Si​)的高j位)

(S的变化有别于CFB)

解密

      P 
     
    
      i 
     
    
   
     = 
    
    
    
      C 
     
    
      i 
     
    
   
     ⊕ 
    
    
    
      E 
     
    
      k 
     
    
   
     ( 
    
    
    
      S 
     
    
      i 
     
    
   
     ) 
    
   
     的高 
    
   
     j 
    
   
     位 
    
   
  
    P_i = C_i\oplus E_k(S_i)的高j位 
   
  
Pi​=Ci​⊕Ek​(Si​)的高j位

  
   
    
     
     
       S 
      
      
      
        i 
       
      
        + 
       
      
        1 
       
      
     
    
      = 
     
    
      ( 
     
     
     
       S 
      
     
       i 
      
     
    
      < 
     
    
      < 
     
    
      j 
     
    
      ) 
     
    
      ∣ 
     
    
      ( 
     
     
     
       E 
      
     
       k 
      
     
    
      ( 
     
     
     
       S 
      
     
       i 
      
     
    
      ) 
     
    
      的高 
     
    
      j 
     
    
      位 
     
    
      ) 
     
    
   
     S_{i+1}=(S_i << j) | (E_k(S_i)的高j位) 
    
   
 Si+1​=(Si​<<j)∣(Ek​(Si​)的高j位)

在这里插入图片描述
在这里插入图片描述

特点
前四点和CFB一样

  1.                                     分组密码                            ⇒                            流密码                                  分组密码\Rightarrow 流密码                     分组密码⇒流密码
    
  2. 无并行实现算法
  3. 隐藏明文
  4. 共同的移位寄存器初始值 I V IV IV —— 不同信息,IV唯一

第五点开始

  1. 误差传递:一个单元损坏只影响对应单元
  2. 对明文的主动攻击是可能的 – 被替换、重排、删除、重放
  3. 安全性不如CFB

多重DES

安全性

  1. F函数(S-Box)设计原理未知
  2. 密钥长度的争论
  3. DES的破译
  4. 弱密钥与半弱密钥

长度问题

      2 
     
    
      56 
     
    
   
     ≈ 
    
   
     1 
    
    
    
      0 
     
    
      17 
     
    
   
  
    2^{56} \approx 10^{17} 
   
  
256≈1017

现在可以一天内破解密钥

弱密钥、半弱密钥

弱密钥:

      E 
     
    
      K 
     
    
   
     ⋅ 
    
    
    
      E 
     
    
      K 
     
    
   
     = 
    
   
     I 
    
   
  
    E_K \cdot E_K= I 
   
  
EK​⋅EK​=I

DES存在4个弱密钥

      p 
     
    
      = 
     
     
     
       E 
      
     
       k 
      
     
    
      ( 
     
     
     
       E 
      
     
       k 
      
     
    
      ( 
     
    
      P 
     
    
      ) 
     
    
      ) 
     
    
   
     p = E_k(E_k(P)) 
    
   
 p=Ek​(Ek​(P))

半弱密钥:

      E 
     
     
     
       K 
      
     
       1 
      
     
    
   
     = 
    
    
    
      E 
     
     
     
       K 
      
     
       2 
      
     
    
   
  
    E_{K1} = E_{K2} 
   
  
EK1​=EK2​

至少有12个半弱密钥

      C 
     
    
      = 
     
    
      E 
     
     
     
       k 
      
     
       1 
      
     
    
      ( 
     
    
      P 
     
    
      ) 
     
    
      = 
     
     
     
       E 
      
      
      
        k 
       
      
        2 
       
      
     
    
      ( 
     
    
      P 
     
    
      ) 
     
    
   
     C = Ek_1(P) = E_{k2}(P) 
    
   
 C=Ek1​(P)=Ek2​(P)

使用常规加密进行保密通信

针对 易受攻击的位置
有 链路加密和端到端加密

链路层加密

针对某一次通信链路

消息在被传输之前进行加密,在每一个节点对接收到的消息进行解密,然后先使用下 个链路的密钥对消 一个链路的密钥对消
进行加密,再进行传输

优点

  • 中间传输节点消息均被解密后重新进行加密
  • 链路上数据以密文形式出现
  • 掩盖消息源点终点
  • 填充技术的使用 -》 消息频率、长度被掩盖,防止通信业务的分析

缺点

  • 要对链路两端加密设备进行同步, 给网络性能、可管理性带来副作用
  • 网络节点中,链路加密只在通信链路上提供安全性,节点上是明文 —— 需要节点的物理安全
  • 对称加密系统,要建立专用网络措施,但网络节点分布宽阔,且密钥连续分配较难

节点加密

类似链路加密。 中间节点解密再加密

差异:不允许消息在节点以明文方式存在,解密后用另一个密钥加密 —— 在节点的另一个安全模块进行

安全性: 报头和路由信息以明文传输,对攻击者分析通信业务无能为力

端到端加密

从源点到终点的传输过程中始终以密文形式存在

又叫脱线加密 包加密,到底终点前不解密。节点损坏不会导致消息泄露

优点

  • 便宜,更可靠,容易设计、实现、维护
  • 避免同步问题 ——报文包是独立加密的,报文包传输错误不影响后续
  • 端到端加密更自然,不影响网络其他用户

缺点

  1. 不允许对目的地址加密
  2. 不掩盖消息源、目的地,对攻击者分析通信业务无能为力
标签: 笔记 安全 网络

本文转载自: https://blog.csdn.net/JamSlade/article/details/130601266
版权归原作者 JamSlade 所有, 如有侵权,请联系我们删除。

“网安笔记03 DES概述”的评论:

还没有评论