【现代密码学原理】——分组加密的工作模式(学习笔记)

现代密码学复习 现代密码学知识大汇总 阅读详情

📖 前言:本章继续讨论对称密码,首先讨论多重加密,然后介绍分组密码的工作模式。

在这里插入图片描述


🕒 0. 思维导图

在这里插入图片描述

🕒 1. 多重加密

🕘 1.1 双重DES

🕤 1.1.1 数据加密标准DES

在这里插入图片描述

🕤 1.1.2 为什么需要多重加密

表 穷尽密钥搜索所需的平均时间
 密钥大小/位   密 码   密钥个数   每微秒执行  1  次解密的时间   每微秒执行  1000  万次解密的时间  56  DES  2 56 ≈ 7.2 × 1 0 16 2 55   n s = 1.125  年  1  小时  128   AES  2 128 ≈ 3.4 × 1 0 38 2 127   n s = 5.3 × 1 0 21  年  5.3 × 1 0 17  年  168 3 D E S 2 168 ≈ 3.7 × 1 0 50 2 167   n s = 5.8 × 1 0 33  年  5.8 × 1 0 29  年  192 A E S 2 192 ≈ 6.3 × 1 0 57 2 191   n s = 9.8 × 1 0 40  年  9.8 × 1 0 36  年  256 A E S 2 256 ≈ 1.2 × 1 0 77 2 255   n s = 1.8 × 1 0 60  年  1.8 × 1 0 56  年  26  个字符的排列组合   单字母代替  2 ! = 4 × 1 0 26 2 × 1 0 26   n s = 6.3 × 1 0 9  年  6.3 × 1 0 6  年  \begin{array}{c|c|c|c|c} \hline \text { 密钥大小/位 } & \text { 密 码 } & \text { 密钥个数 } & \text { 每微秒执行 } 1 \text { 次解密的时间 } & \text { 每微秒执行 } 1000 \text { 万次解密的时间 } \\ \hline 56 & \text { DES } & 2^{56} \approx 7.2 \times 10^{16} & 2^{55} \mathrm{~ns}=1.125 \text { 年 } & 1 \text { 小时 } \\ \hline 128 & \text { \color{red}AES } & 2^{128} \approx 3.4 \times 10^{38} & 2^{127} \mathrm{~ns}=5.3 \times 10^{21} \text { 年 } & \color{red}5.3 \times 10^{17} \text { 年 } \\ \hline 168 & \color{red}3 \mathrm{DES} & 2^{168} \approx 3.7 \times 10^{50} & 2^{167} \mathrm{~ns}=5.8 \times 10^{33} \text { 年 } & \color{red}5.8 \times 10^{29} \text { 年 } \\ \hline 192 & \mathrm{AES} & 2^{192} \approx 6.3 \times 10^{57} & 2^{191} \mathrm{~ns}=9.8 \times 10^{40} \text { 年 } & 9.8 \times 10^{36} \text { 年 } \\ \hline 256 & \mathrm{AES} & 2^{256} \approx 1.2 \times 10^{77} & 2^{255} \mathrm{~ns}=1.8 \times 10^{60} \text { 年 } & 1.8 \times 10^{56} \text { 年 } \\ \hline 26 \text { 个字符的排列组合 } & \text { 单字母代替 } & 2 !=4 \times 10^{26} & 2 \times 10^{26} \mathrm{~ns}=6.3 \times 10^{9} \text { 年 } & 6.3 \times 10^{6} \text { 年 } \\ \hline \end{array}  密钥大小/位 5612816819225626 个字符的排列组合 ​ 密 码  DES  AES 3DESAESAES 单字母代替 ​ 密钥个数 256≈7.2×10162128≈3.4×10382168≈3.7×10502192≈6.3×10572256≈1.2×10772!=4×1026​ 每微秒执行 1 次解密的时间 255 ns=1.125 年 2127 ns=5.3×1021 年 2167 ns=5.8×1033 年 2191 ns=9.8×1040 年 2255 ns=1.8×1060 年 2×1026 ns=6.3×109 年 ​ 每微秒执行 1000 万次解密的时间 1 小时 5.3×1017 年 5.8×1029 年 9.8×1036 年 1.8×1056 年 6.3×106 年 ​​

DES在穷举攻击下比较脆弱,有两种代替方案:

  • 设计全新的算法,如AES
  • 用DES进行多次加密,使用多个密钥

🕤 1.1.3 过程

多次加密的最简单形式是进行两次加密,使用两个密钥,如下图所示
给定明文P,密钥K1、K2

在这里插入图片描述

【第一次加密】
加密算法E 读取明文P 与 本次加密的密钥K1 ,生成密文X:
𝑿 = 𝑬 ( 𝑲 𝟏 , 𝑷 ) 𝑿=𝑬(𝑲_𝟏,𝑷) X=E(K1​,P)

【第二次加密】
加密算法E 读取密文X 与 本次加密的密钥K2 ,生成密文C:
𝑪 = 𝑬 ( 𝑲 𝟐 , 𝑿 ) = 𝑬 ( 𝑲 𝟐 , 𝑬 ( 𝑲 𝟏 , 𝑷 ) ) 𝑪=𝑬(𝑲_𝟐,𝑿)=𝑬(𝑲_𝟐,𝑬(𝑲_𝟏,𝑷) ) C=E(K2​,X)=E(K2​,E(K1​,P))

【第一次解密】
解密算法D 读取密文C 与 第二次加密的密钥K2 ,还原明文X:
𝑿 = 𝑫 ( 𝑲 𝟐 , 𝑪 ) 𝑿=𝑫(𝑲_𝟐,𝑪) X=D(K2​,C)

【第二次解密】
解密算法D 读取密文X 与 第一次加密的密钥K1 ,还原明文X:
𝑷 = 𝑫 ( 𝑲 𝟏 , 𝑿 ) = 𝑫 ( 𝑲 𝟏 , 𝑫 ( 𝑲 𝟐 , 𝑪 ) ) 𝑷=𝑫(𝑲_𝟏,𝑿)=𝑫(𝑲_𝟏,𝑫(𝑲_𝟐,𝑪)) P=D(K1​,X)=D(K1​,D(K2​,C))

DES 不会出现下述情况:
𝑬 ( 𝑲 𝟐 , 𝑬 ( 𝑲 𝟏 , 𝑷 ) ) = 𝑬 ( 𝑲 𝟑 , 𝑷 ) 𝑬(𝑲_𝟐,𝑬(𝑲_𝟏,𝑷))=𝑬(𝑲_𝟑,𝑷) E(K2​,E(K1​,P))=E(K3​,P)
在这里插入图片描述

也就是说双重DES 对应的映射 无法用某个单DES来表示,不会被约化为单次加密。

在这里插入图片描述

  • 对于DES,这种双重加密的方法共涉及到两个密钥,密钥长度共56*2=112位
  • 密钥空间变大,对密钥发起穷举攻击的难度增加

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

🕤 1.1.4 中间相遇攻击

  • 可以对双重DES 发起 中间相遇攻击
  • 它不依赖于DES的任何特殊性质,对所有的分组密码都有效

在这里插入图片描述

假设 𝑪 = 𝑬 ( 𝑲 𝟐 , 𝑬 ( 𝑲 𝟏 , 𝑷 ) ) 𝑪=𝑬( 𝑲_𝟐,𝑬(𝑲_𝟏,𝑷) ) C=E(K2​,E(K1​,P)),则有
𝑿 = 𝑬 ( 𝑲 𝟏 , 𝑷 ) = 𝑫 ( 𝑲 𝟐 , 𝑪 ) 𝑿=𝑬(𝑲_𝟏,𝑷)=𝑫(𝑲_𝟐,𝑪) X=E(K1​,P)=D(K2​,C)

在这里插入图片描述

𝑿 = 𝑬 ( 𝑲 𝟏 , 𝑷 ) 𝑿=𝑬(𝑲_𝟏,𝑷) X=E(K1​,P)

  • 给定明密文对 ( 𝑷 , 𝑪 ) (𝑷,𝑪) (P,C),将𝑷按所有可能的密钥 𝑲 𝟏 𝑲_𝟏 K1​进行加密,得到了 𝟐 𝟓 𝟔 𝟐^{𝟓𝟔} 256个不同的𝑿,按值排序放在一个表内

在这里插入图片描述

𝑿 = 𝑫 ( 𝑲 𝟐 , 𝑪 ) 𝑿=𝑫(𝑲_𝟐,𝑪) X=D(K2​,C)

  • 将C用所有可能的密钥 𝑲 𝟐 𝑲_𝟐 K2​解密,每解密一次就将解密结果与𝑿表中的值比较,直到两值相等,保存当前的 ( 𝑲 𝟏 , 𝑲 𝟐 ) (𝑲_𝟏,𝑲_𝟐) (K1​,K2​)

在这里插入图片描述

  • 使用另外的明密文对 ( 𝑷 , 𝑪 ) (𝑷,𝑪) (P,C)来验证 ( 𝑲 𝟏 , 𝑲 𝟐 ) (𝑲_𝟏,𝑲_𝟐) (K1​,K2​)
    若加密𝑷恰好生成了𝑪,那么 ( 𝑲 𝟏 , 𝑲 𝟐 ) (𝑲_𝟏,𝑲_𝟐) (K1​,K2​)就是正确的密钥

多选题
关于中间相遇攻击,以下说法正确的有:
A. 中间相遇攻击可以针对任意分组密码
B. 原理为 𝑿 = 𝑬 ( 𝑲 𝟏 , 𝑷 ) = 𝑫 ( 𝑲 𝟐 , 𝑪 ) 𝑿=𝑬(𝑲_𝟏,𝑷)=𝑫(𝑲_𝟐,𝑪) X=E(K1​,P)=D(K2​,C)
C. 这种攻击依赖于已知的明密文对
D. 使用两组明密文对基本上就可以猜出双重DES的正确密钥
答案:全选

🕘 1.2 三重DES

在这里插入图片描述

  • 应对中间相遇攻击,可以使用三个不同的密钥进行三次加密,发起穷举攻击也需要尝试𝟐𝟏𝟔𝟖次
  • 168位的密钥长度并不现实,但仍有许多Internet应用采纳了该加密方案,如电子邮件中的PGP和S/MIME协议

【第一次加密】
加密算法E 读取明文P 与 本次加密的密钥K1,生成密文A:
𝑨 = 𝑬 ( 𝑲 𝟏 , 𝑷 ) 𝑨=𝑬(𝑲_𝟏,𝑷) A=E(K1​,P)

【第二次加密】
解密算法D 读取明文X 与 本次加密的密钥K2,生成密文B:
𝑩 = 𝑫 ( 𝑲 𝟐 , 𝑨 ) = 𝑫 ( 𝑲 𝟐 , 𝑬 ( 𝑲 𝟏 , 𝑷 ) ) 𝑩=𝑫(𝑲_𝟐,𝑨)=𝑫( 𝑲_𝟐,𝑬(𝑲_𝟏,𝑷) ) B=D(K2​,A)=D(K2​,E(K1​,P))

【第三次加密】
加密算法E 读取明文B 与 本次加密的密钥K1,生成最终的密文C:
𝑪 = 𝑬 ( 𝑲 𝟏 , 𝑩 ) = 𝑬 ( 𝑲 𝟏 , 𝑫 ( 𝑲 𝟐 , 𝑬 ( 𝑲 𝟏 , 𝑷 ) ) ) 𝑪=𝑬(𝑲_𝟏,𝑩)=𝑬(𝑲_𝟏,𝑫(𝑲_𝟐,𝑬(𝑲_𝟏,𝑷))) C=E(K1​,B)=E(K1​,D(K2​,E(K1​,P)))

【第一次解密】
解密算法D 读取密文C 与 第三次加密的密钥K1,还原明文B:
𝑩 = 𝑫 ( 𝑲 𝟏 , 𝑪 ) 𝑩=𝑫(𝑲_𝟏,𝑪) B=D(K1​,C)

【第二次解密】
加密算法E 读取密文B 与 第二次加密的密钥K2,还原明文A:
𝑨 = 𝑬 ( 𝑲 𝟐 , 𝑩 ) = 𝑬 ( 𝑲 𝟐 , 𝑫 ( 𝑲 𝟏 , 𝑪 ) ) 𝑨=𝑬(𝑲_𝟐,𝑩)=𝑬(𝑲_𝟐,𝑫(𝑲_𝟏,𝑪)) A=E(K2​,B)=E(K2​,D(K1​,C))

【第三次解密】
解密算法D 读取密文A 与 第一次加密的密钥K1,还原明文P:
𝑷 = 𝑫 ( 𝑲 𝟏 , 𝑨 ) = 𝑫 ( 𝑲 𝟏 , 𝑬 ( 𝑲 𝟐 , 𝑫 ( 𝑲 𝟏 , 𝑪 ) ) ) 𝑷=𝑫(𝑲_𝟏,𝑨)=𝑫(𝑲_𝟏,𝑬(𝑲_𝟐,𝑫(𝑲_𝟏,𝑪))) P=D(K1​,A)=D(K1​,E(K2​,D(K1​,C)))

🕤 1.2.1 2-Key-3-DES

在这里插入图片描述

  • 使用两个密钥的三重DES 已经广泛地替代了DES
  • 当前还没有对3DES的可行攻击方法,发起穷举攻击也要 5 × 𝟏 𝟎 𝟑 𝟑 5×𝟏𝟎^{𝟑𝟑} 5×1033数量级
  • 三次加密过程使用的不全是加密算法

单选题
关于DES说法不正确的是?
A. DES一次只能加密64位的明文分组
B. DES的基础结构是Feistal结构
C. DES易受穷举密钥攻击
D. 3DES是DES的一种安全方案,必须用到三把不同的密钥
答案:D(解析:可以有两把)

🕒 2. 分组加密工作模式

在这里插入图片描述

  • Bob 要给Alice 发送消息,打算使用分组密码中的DES来为消息加密

  • 现在消息长度刚好等于分组长度64bit,DES可以直接将其加密生成一个64bit的密文输出

  • 若Bob 认为将消息加密一次还不够安全,也可以使用2DES 或2K-3DES 来为这64bit的消息进行多次加密,发送给Alice

  • 分组密码DES 在进行加密操作时,输入的是固定长度64位的明文分组,输出的也是固定长度的密文分组

  • 当Bob要发送的消息大于分组长度64bit,仍要使用DES来进行加密,那么该如何操作呢?

在这里插入图片描述

  • 将要加密的Message 拆分为多个分组,每个分组长度为64bit,最后一组若不足64位则用0补齐

  • 若Message的各个分组,在进行加密的时候都使用同一种密钥K来进行,则生成的密文分组会存在一些统计规律特征,引发许多安全问题

  • 如何将分组密码(如DES、AES) 应用到各种实际情景(如加密、认证)呢?

  • NIST 定义了五种工作模式,使得分组密码更适应实际需要

🕘 2.1 电码本ECB

在这里插入图片描述

  • 电码本是最简单的分组密码工作模式,明文长度若大于分组长度,将其填充并划分为多个分组

  • 一次加密一个明文分组 𝑷 𝒊 𝑷_𝒊 Pi​,每次使用相同的密钥 𝑲 𝑲 K

  • 对于给定的密钥 𝑲 𝑲 K ,任何固定长度的明文分组 𝑷 𝒊 𝑷_𝒊 Pi​都只有唯一的一个密文分组 𝑪 𝒊 𝑪_𝒊 Ci​和它对应

  • 加密就像查阅一本密码本,根据明文就可以找出相应的密文

  • 若明文被填充划分成了N个明文分组,则ECB 的加密过程可以记作:
    𝑪 𝒊 = 𝑬 ( 𝑲 , 𝑷 𝒊 ) 𝑪_𝒊=𝑬(𝑲,𝑷_𝒊 ) Ci​=E(K,Pi​)      𝒊 = 𝟏 , 𝟐 … 𝑵 𝒊=𝟏,𝟐…𝑵 i=1,2…N

  • 一次解密一个密文分组 𝑪 𝒊 𝑪_𝒊 Ci​,每次使用相同的密钥 𝑲 𝑲 K

  • ECB 的解密过程记作:
    𝑷 𝒊 = 𝑫 ( 𝑲 , 𝑪 𝒊 ) 𝑷_𝒊=𝑫(𝑲,𝑪_𝒊 ) Pi​=D(K,Ci​)      𝒊 = 𝟏 , 𝟐 … 𝑵 𝒊=𝟏,𝟐…𝑵 i=1,2…N

  • 若一段明文消息中有两个分组 𝑷 𝟏 𝑷_𝟏 P1​和 𝑷 𝟐 𝑷_𝟐 P2​是相同的,那么在使用相同的密钥K加密后,密文消息中也会出现2个相同的分组 𝑪 𝟏 𝑪_𝟏 C1​和 𝑪 𝟐 𝑪_𝟐 C2​

  • 密码分析者可利用这些规律特征来破译

  • 电码本ECB 适用于数据较少的情况

  • Bob和Alice 进行通信,约定使用AES 来进行消息的加密,Bob需要将密钥K安全地传递给Alice。

  • 可以使用ECB模式,运用DES加密算法 为128bit的密钥K 进行加密

🕘 2.2 密文分组链接CBC

在这里插入图片描述

  • CBC可以将相同的明文分组加密成不同的密文分组

  • 明文消息被填充划分为多个明文分组 𝑷 𝟏 , 𝑷 𝟐 … 𝑷 𝑵 𝑷_𝟏,𝑷_𝟐…𝑷_𝑵 P1​,P2​…PN​

  • 先将第一个明文分组 𝑷 𝟏 𝑷_𝟏 P1​与 等长度的初始向量 𝑰 𝑽 𝑰𝑽 IV进行XOR运算,生成等长度的一个输出

  • 加密算法E 读取 XOR运算结果 与 密钥K ,生成第一个密文分组 𝑪 𝟏 𝑪_𝟏 C1​

  • 将第二个明文分组 𝑷 𝟐 𝑷_𝟐 P2​与上一步生成的密文分组 𝑪 𝟏 𝑪_𝟏 C1​进行异或运算,生成一个等长度的输出

  • 加密算法E 读取 XOR运算结果 与 密钥K ,生成第二个密文分组 𝑪 𝟐 𝑪_𝟐 C2​

  • 重复操作直至所有明文分组均处理完毕

  • CBC 的加密过程可以写作
    𝑪 𝟏 = 𝑬 ( 𝑲 , 𝑷 𝟏 ⊕ 𝑰 𝑽 ) 𝑪_𝟏=𝑬(𝑲,𝑷_𝟏⊕𝑰𝑽) C1​=E(K,P1​⊕IV)
    𝑪 𝒊 = 𝑬 ( 𝑲 , 𝑷 𝒊 ⊕ 𝑪 ( 𝒊 − 𝟏 ) ) 𝑪_𝒊=𝑬(𝑲,𝑷_𝒊⊕𝑪_(𝒊−𝟏) ) Ci​=E(K,Pi​⊕C(​i−1))      𝒊 = 𝟐 , 𝟑 … 𝑵 𝒊=𝟐,𝟑…𝑵 i=2,3…N

  • 就算存在相同的明文分组 𝑷 𝟏 𝑷_𝟏 P1​和 𝑷 𝟐 𝑷_𝟐 P2​

  • “密文分组” 𝑪 𝟏 𝑪_𝟏 C1​是将 𝑷 𝟏 𝑷_𝟏 P1​与 𝑰 𝑽 \color{red}𝑰𝑽 IV异或后 使用𝑲加密得来
    “密文分组” 𝑪 𝟐 𝑪_𝟐 C2​是将 𝑷 𝟐 𝑷_𝟐 P2​= 𝑷 𝟏 𝑷_𝟏 P1​ 与 𝑪 𝟏 \color{red}𝑪_𝟏 C1​异或后 加密得来

  • CBC 的解密过程可以写作
    𝑷 𝟏 = 𝑫 ( 𝑲 , 𝑪 𝟏 ) ⊕ 𝑰 𝑽 𝑷_𝟏=𝑫(𝑲,𝑪_𝟏)⊕𝑰𝑽 P1​=D(K,C1​)⊕IV
    𝑷 𝒊 = 𝑫 ( 𝑲 , 𝑪 𝒊 ) ⊕ 𝑪 ( 𝒊 − 𝟏 ) 𝑷_𝒊=𝑫(𝑲,𝑪_𝒊 )⊕𝑪_(𝒊−𝟏) Pi​=D(K,Ci​)⊕C(​i−1)      𝒊 = 𝟐 , 𝟑 … 𝑵 𝒊=𝟐,𝟑…𝑵 i=2,3…N

  • CBC 适用于加密那些长度大于分组长度b的消息

  • 由于CBC 的链接机制 以及 保密的初始向量 I V IV IV,也使得它不仅用于加密,还可用于认证

多选题
A给B 发送一段长度为1M的消息,使用AES作为加密算法,约定密钥为K,采用CBC模式:
A. 使用的密码体制为对称密码,因为加密与解密用的是相同密钥K
B. 使用的密码类型为分组密码,因为AES一次可以同时加密128bit的明文
C. 消息被分为多个分组,依次使用AES进行加密处理,处理的方式为CBC工作模式
D. 使用CBC工作模式需要对最后分组的消息进行填充
答案:全选

🕘 2.3 密文反馈CFB

在这里插入图片描述

  • 设定一个移位寄存器,大小为分组长度b位

  • 移位寄存器的初始值为通信双方约定好的初始向量 𝑰 𝑽 𝑰𝑽 IV,长度为 b b b位

  • 加密算法读取移位寄存器中的 𝑰 𝑽 𝑰𝑽 IV ,使用密钥 K K K为其加密,生成一个 b b b位的输出

  • 密文反馈模式CFB 对明文的处理类似于流密码

  • 发送方一次连续发送s位的消息分段给对方,CFB 每次就处理这s位的分段,将其加密成密文分段传递出去

  • 加密算法生成了 b b b位的输出

  • 选取最左边的s位,与第一个明文分段 𝑷 𝟏 𝑷_𝟏 P1​进行按位异或

  • 产生了s位的密文分段 𝑪 𝟏 𝑪_𝟏 C1​

  • 移位寄存器中存放着 𝑰 𝑽 𝑰𝑽 IV,将其左移s位,最右边空出来 s s s位

  • 将上一次生成的密文分段 𝑪 𝟏 𝑪_𝟏 C1​填入到移位寄存器的最右边 s s s位里

  • 加密算法E 读取目前移位寄存器中的 b b b位数据,并使用密钥K 对其加密,产生一个 b b b位的输出

  • 仍然从b位输出中选择最左边的s位 与明文分段 𝑷 𝟐 𝑷_𝟐 P2​进行按位异或,生成密文分段 𝑪 𝟐 𝑪_𝟐 C2​

  • 继续重复操作,直到明文全部处理完毕

🕘 2.4 输出反馈OFB

在这里插入图片描述

  • 选取一个 b b b位的初始化向量 𝑰 𝑽 𝑰𝑽 IV ,它随时间变化而变化,保证每次加密运算值都是唯一的

  • 加密算法 E E E读取这个初始向量,使用密钥 K K K对其进行加密,生成b位的输出 𝑶 𝟏 𝑶_𝟏 O1​

  • 第一个明文分组 𝑷 𝟏 𝑷_𝟏 P1​ 与加密算法的输出 𝑶 𝟏 𝑶_𝟏 O1​进行按位异或,生成第一个密文分组 𝑪 𝟏 𝑪_𝟏 C1​

  • 加密算法E 将上一次的加密输出 𝑶 𝟏 𝑶_𝟏 O1​再次使用密钥K进行加密,生成输出 𝑶 𝟐 𝑶_𝟐 O2​

  • 明文分组 𝑷 𝟐 𝑷_𝟐 P2​与这个经过两次加密的输出 𝑶 𝟐 𝑶_𝟐 O2​ 进行按位异或,生成第二个密文分组 𝑪 𝟐 𝑪_𝟐 C2​

  • 继续按照这种方法进行处理,明文分组 𝑷 𝒊 𝑷_𝒊 Pi​都是与一个加密了 i i i次的输出 𝑶 𝒊 𝑶_𝒊 Oi​进行按位异或,得到密文

  • 输出反馈模式OFB 也不需要填充明文消息,那么当最后一个明文分组 𝑷 𝑵 𝑷_𝑵 PN​的长度为 u < b u<b u<b,加密了 N N N次的输出 𝑶 𝑵 𝑶_𝑵 ON​只用它前面的u位参与异或运算

  • 对任意一个明文分组进行处理生成密文时,都是与一个 𝑶 𝒊 𝑶_𝒊 Oi​进行按位异或,而这个 𝑶 𝒊 𝑶_𝒊 Oi​是初始向量通过若干次加密得来,与明密文无关, 取决于 K 、 I V \color{red}取决于K、IV 取决于K、IV

  • 解密过程与CFB类似,也是将密文分组与一个特定的 𝑶 𝒊 𝑶_𝒊 Oi​再次进行异或,还原出明文分组

无论是密文反馈模式CFB,还是输出反馈模式OFB,它们每一个分组的加密都要等待上一个加密流程的输出,所以无法并行地处理一段明文消息

🕘 2.5 计数器模式CTR

在这里插入图片描述

当确定了明文消息划分出的分组个数N后,就确定了N个计数器的值,加密后就确定了N个参与异或运算的输出值,可以并行地为明文分组进行异或

🕘 2.6 小结

在这里插入图片描述

模式描述典型应用
Electronic Codebook (ECB)用相同的密钥分别对明文分组单独加密单个数据的安全传输(如一个加密密钥)
Cipher Block Chaining (CBC)加密算法的输入是上一个密文分组和下一个明文分组的异或面向分组的通用传输;认证
Cipher Feedback (CFB)一次处理输入的s位,上一个密文分组作为加密算法的输入,产生的伪随机数输出与明文异或后作为下一个单元的密文面向数据流的通用传输;认证
Output Feedback (OFB)与CFB类似,只是加密算法的输入是上一次加密的输出,并且使用整个分组噪声信道上的数据流的传输(如卫星通信)
Counter(CTR)每个明文分组都与一个经过加密的计数器异或。对每个后续的分组,计数器增1面向分组的通用传输;用于高速需求

单选题
分组密码的工作模式中,符合以下特性的工作模式是哪个?
1)如果消息中有几个相同明文组,那么密文也会出现相同的密文分组
2)适合数据较少的情况,如加密密钥
A.ECB
B.CBC
C.CFB
D.OFB
答案:A

🕒 3. 中英文对照表

在这里插入图片描述


OK,以上就是本期知识点“分组加密的工作模式”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

密码学基础(一)分组密码与序列密码 密码学密码学的发展历史密码学简介密码学的典型应用 密码学的发展历史 从公元前400年斯巴达人将莎草纸缠绕到木棍开始,至今密码学已经历过几千年的发展,大体可分为三个阶段: 古代密码学(1949年之前) 主要特点:数据的安全基于算法的保密 古典密码编码方法:置换和代换。置换:明文中的字母重新排列,字母本身不变,但其位置改变了。代换:将明文中的字符替代成其它字符。 近代密码学(1949~1975年) 主要特点:数据的安全基于密钥而不是算法的保密,密码学从此开始成为一门学科。 1949年 克劳德·艾尔 阅读详情

相关推荐

【现代密码学】(网安)期末复习笔记

现代密码学个人复习随想笔记

kevvviinn的博客 3642

5、分组密码工作模式

分组密码工作模式

安全学习笔记 4106

【密码学基础】07 分组加密工作模式

密码学基础系列课程第七弹:分组加密工作模式

Stu_Yang的博客 1676

密码加盐,多重加密

用户密码两次MD5加密: 原因:一次MD5加密,很容易被反编译破解出来,通过前台进行一次MD5加密和后台一次MD5加密,可以有效保证数据的安全性 用户注册逻辑: 前台获取用户输入的密码(inputPassword),通过固定的salt(盐)例如:String salt=1234abc,通过一定顺序进行组合例如:salt.charAt(1)+salt.charAt(3)+inputPassword...

qq_41714882的博客 1206

【密码学系列】|| 分组密码的工作模式详解

多点头发,少点代码。 本文已经收录至我的GitHub,欢迎大家踊跃star????。 GitHub hello,小伙伴们!又到了一周一更的时候,不得不说,你们还是挺棒的嘛,上期的DES系列反馈非常好,其实对于这些复杂的知识,我们都是初次去接触它,不要怕,抱紧我的小细腿,我们一起来! 上次给大家分享完DES的安全性以后,我一直在考虑出一篇探讨关于分组密码工作模式的文章,这不,说来就来,我们今天讲讲分组...

qq_33828738的博客 3833

ctf 密码学入门总结&古典密码&现代密码学&RSA入门原理

以上是对crypto入门的初步总结,后续会持续更新。

2301_80976241的博客 1625

现代密码学第二次实验:分组加密算法DES及其工作模式

现代密码学第二次实验:分组加密算法DES及其工作模式前言一、实验目的二、实验环境三、实验内容及步骤四、实验要求五、实验程序清单六、实验结果七、实验总结 前言 为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至优快云中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正! 一、实验目的 1、掌握DES算法的工作原理。 2、熟悉分组加密算法的4种工作模式(OFB模式可不做)。 3、了解DES的雪崩效应。 二、实验环境 Microsoft Visual Studio

sjx3161的博客 3819

现代密码学复习笔记(一)

文章目录课程内容密码学发展史对称密钥加密算法由三个算法组成密码系统模型对称密钥加密模型密码学攻击场景从古典密码算法看密码算法设计无条件安全现代密码学基本准则 课程内容 从古典密码学到现代密码学 对称密码学 非对称密码学 密钥分配与密码管理 哈希函数、数字签名 密码协议 密码学发展史 古典密码 近代密码 现代密码 凯撒密码 明文 需要采用采用某种方法对其进行变换来隐...

KaileLiang的博客 4041

【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议

在对称密钥加密系统中,通信双方共享一段密码信息,称为密钥(key当他们希望安全地通信时,会使用这个共享密钥。发送方使用密钥来加密(或者“混合”)消息。接收方收到消息后,使用相同的密钥来解密(或者“去混合”)以恢复原始消息。这里所说的消息本身称为明文plaintext),而从发送方传输到接收方的经过加密处理的消息称为密文ciphertext),如图 1.1 所示。在这种设置中,共享的密钥用来从所有潜在的窃听者中区分通信双方(这通常假设是通过一个公共信道进行传输的)。描述。

定期分享我的发现和想法,感谢你的陪伴和支持 5083

密码学-分组加密的工作模式

分组加密的工作模式 多重加密和三重DES 双重DES 加密 C=E(K2,E(K1,P)) C=E(K_2, E(K_1, P)) C=E(K2​,E(K1​,P)) 约化为单次加密 可能存在K3K_3K3​满足E(K3,P)=(K2,E(K1,P))E(K_3, P)=(K_2, E(K_1, P))E(K3​,P)=(K2​,E(K1​,P)) 中间相遇攻击 对与任何分组密码都有效,若C=E(K2,E(K1,P))C=E(K_2, E(K_1, P))C=E(K2​,E(K1​,P)),则存在 X=E(

weixin_45743469的博客 863

分组密码及五种工作模式、DES和AES

流密码(Stream Cipher) 流密码每次加密数据流的一位或一个字节。 古典流密码的例子有:密钥自动产生的Vigenère密码和Vernam密码。 理想情况下,可以使用一次一密版本的Vernam密码,其中密钥流和明文位流一样长。如果密钥流是随机的,除非是获得了密钥流,否则这个密码是不可破的。然而,密钥流必须提前以某种独立、安全的信道提供给双方。 实际上,位流必须以算法程序的方式实现,从而双方...

王较瘦的博客 8486

【现代密码学原理】——期末复习(冲刺篇)

📖 前言:快考试了,做篇期末总结,都是重点与必考点。

HinsCoder的博客 6128

现代密码学

密码学大纲目录引言Dan部分流密码分组密码体制公钥密码密码分配与密钥管理消息认证和哈希函数数字签名和认证协议密码协议可证明安全网络加密与认证 大纲 目录 引言 Dan部分 流密码 分组密码体制 公钥密码 密码分配与密钥管理 消息认证和哈希函数 数字签名和认证协议 密码协议 可证明安全 网络加密与认证 ...

weixin_44705017的博客 3081

新编密码学——分组密码

一、分组密码的设计思想 1.1、分组密码的定义 分组密码是指对固定长度的一组明文进行加密的一种加密算法,这一固定长度称为分组长度。 1.2、分组密码的作用 消息加密 伪造伪随机数生成器(用于产生性能良好的随机数) 消息认证/数据完整性保护(通过用于构造消息认证码(MAC)来实现 构造流密码 构成其他密码协议的基本模块(如秘钥管理协议,身份认证协议) 1.3、分组密码的五要素 明文、密文、加密算法、解密算法、秘钥 1.4、分组密码的要求 对于每一个k,Ek : {0,1}^n --> {0,1

weixin_45483328的博客 8572

【总结一】现代密码学

密码是指采用特定变换的方法对信息进行加密保护、安全认证的技术、产品和服务。--------《中华人民共和国密码法》密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保护通信秘密的成为密码编码学,应用于破译密码以获取通信情报的,称为密码分析学。​如上图,在Alice向Bob发送信息的过程中存在着许多安全问题,是否有其他人看到信息内容(机密性),信息内容是否被改动(完整性),是否是Alice发送的信息(消息源认证),是否是发给Bob的信息(通信实体认证。

FansMing的博客 2034

C# 原生数字孪生的尝试

本文介绍了使用C#实现数字孪生的基本思路。首先从爱普生官网下载机器人3D模型,然后通过Blender创建并导出带动画的FBX模型。在WPF项目中,使用HelixToolkit.SharpDX等插件加载模型,通过Viewport3DX进行3D渲染。关键点是通过动画控制器接收真实设备信号来驱动模型动画,实现物理实体与虚拟模型的同步。文中提供了完整的代码实现,包括模型导入、动画播放控制等核心功能。该方法为构建数字孪生系统提供了一种可行的技术方案。

qq_33529095的博客 1333

【现代密码学原理】——分组密码和数据加密标准DES(学习笔记)

20世纪70年代以前,密码学的大部分都是政府的安全范畴。直到70年代发生的两件事将密码学带入公众领域,并正式拉开了现代密码学的帷幕。这两件事就是公开的标准加密系统诞生与公钥加密算法的发明.

HinsCoder的博客 2653

基于Simulink的输入-输出线性化精确转矩控制

本文详细介绍了基于Simulink的永磁同步电机(PMSM)输入-输出线性化(IOL)精确转矩控制方法。针对传统解耦控制在非线性转矩特性下的局限性,通过建立PMSM非线性状态空间模型,设计IOL控制器将系统转化为线性输入-输出映射。文章包含系统原理推导、Simulink建模步骤、参数整定方法和仿真结果分析,验证了IOL在高动态、宽速域工况下的优越性能(转矩误差降低90%)。最后提出了工程实现要点和扩展应用方向,为开发高精度电机驱动系统提供了实用指导。

xiaoheshang_123的博客 304

【现代密码学】实验二 SM4分组密码算法(含C++代码实现)

本人一直想找时间系统整理一下之前做过的一些实验,便于后续用到的时候可以尽快的使用,po出来也便于大家交流学习,有问题欢迎交流指正,与诸君共勉!【现代密码学】实验二 SM4分组密码算法。

AGATHA_66的博客 6671

硬件基础(4):(6)高精度ADC设计中模拟地与数字地的划分与连接

在实际 PCB 设计中,**接地与布线**对于获得干净的参考电压和高精度 ADC 测量至关重要。下面详细阐述**如何在硬件层面减少数字噪声耦合到模拟电路、保障参考电压的稳定性**。

FCZlll的博客 2648

【HAL库-STM】智能温控按键小风扇【胎教级教学】

硬件设备:DHT11,0.96寸oled屏,二/三/四线风扇(不挑),面包板 、f10的精英板等等。当人在的风扇面前时可以自行控制风扇,不在面前时又想开风扇就让他温控自行开启,(在这里有一个想法就是加上蓝牙和wifi控制的功能能够远程遥控,这个如果做的再全一点就要自主研发是一个多功能app,这里没有做。针对这个dht11,我一开始是卡在了这个check函数里面,一直是我给完dht11低电平和高电平后,dht11不回复我低电平和高电平,这个不是我的问题,当时代码是没毛病的,这个点一直卡着我。吐血五天实现小成品

weixin_52451652的博客 1741
上一篇: 【现代密码学原理】——高级加密标准AES(学习笔记)
下一篇: 【现代密码学原理】——公钥密码学与RSA(学习笔记)
HinsCoder
博客等级 码龄5年 1万+粉丝 220原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值