分组密码操作模式

加密算法根据输入类型分为分组密码和流密码两类。 分组密码 是一种加密算法,它接受固定大小的输入 B 位并产生一个 B 又是一点点。如果输入大于 b 它可以进一步划分。对于不同的应用和用途,分组密码有几种操作模式。

null

电子代码簿(ECB)—— 电子密码本是最简单的分组密码模式。它更容易,因为每个输入明文块都直接加密,而输出是以加密密文块的形式进行的。通常,如果消息大于 B 在大小上,它可以被分解成一堆块,然后重复这个过程。

欧洲央行的程序如下所示:

图片[1]-分组密码操作模式-yiteyi-C++库

使用欧洲央行的优势——

  • 比特块的并行加密是可能的,因此它是一种更快的加密方式。
  • 分组密码的简单方法。

使用ECB的缺点——

  • 易于进行密码分析,因为明文和密文之间存在直接关系。

密码块链接– 密码分组链(Cipher block chaining,简称CBC)是ECB的一项进步,因为ECB会降低一些安全要求。在CBC中,前一个密码块在与原始明文块异或后作为下一个加密算法的输入。简而言之,密码块是通过对前一个密码块和当前明文块的异或输出进行加密而产生的。

流程如下所示:

图片[2]-分组密码操作模式-yiteyi-C++库

CBC的优势——

  • CBC在输入大于 B 位。
  • CBC是一种很好的身份验证机制。
  • 与ECB相比,ECB对密码分析的抵抗能力更强。

CBC的缺点——

  • 并行加密是不可能的,因为每个加密都需要一个以前的密码。

密码反馈模式(CFB)– 在这种模式下,密码作为反馈提供给具有一些新规范的下一个加密块:首先,初始向量IV用于第一次加密,输出位被划分为一组 s b-s 位。左手边 s 位与应用异或操作的明文位一起被选择。结果作为移位寄存器的输入给出,移位寄存器的b-s位为lhs,s位为rhs,该过程继续。加密和解密过程如下所示,它们都使用加密算法。

图片[3]-分组密码操作模式-yiteyi-C++库

循环流化床的优点——

  • 由于移位寄存器的使用会造成一些数据丢失,因此很难应用密码分析。

输出反馈模式- 输出反馈模式遵循与密码反馈模式几乎相同的过程,只是它将加密的输出作为反馈发送,而不是实际的密码(XOR输出)。在这种输出反馈模式下,发送块的所有位,而不是发送选定的位 s 位。分组密码的输出反馈模式对比特传输错误有很大的抵抗力。它还减少了密码对明文的依赖或关系。

图片[4]-分组密码操作模式-yiteyi-C++库

OFB的优势——

  • 在CFB的情况下,一个块中的一个位错误传播到所有后续块。这个问题由OFB解决,因为它在明文块中没有比特错误。

计数器模式- 计数器模式或CTR是一种简单的基于计数器的分组密码实现。每次计数器启动的值被加密并作为输入以明文形式提供给XOR,这将导致密文块。CTR模式独立于反馈使用,因此可以并行实现。

其简单实现如下所示:

图片[5]-分组密码操作模式-yiteyi-C++库

计数器的优点——

  • 由于每个块有不同的计数器值,因此避免了直接的明文和密文关系。这意味着相同的纯文本可以映射到不同的密文。
  • 并行执行加密是可能的,因为前几个阶段的输出不像CBC那样被链接。
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享