Working mode of block password

2023-11-17

本文授权自 MagicBoy


1. 电子密码本ECB (electronic codebook mode)

在ECB模式中,将明文分组加密之后的结果将直接成为密文分组。

请添加图片描述

特点:

  1. 简单和有效
  2. 可以并行实现
  3. 不能隐藏明文的模式信息:相同明文加密生成相同密文;同样信息多次出现造成泄漏
  4. 对明文的主动攻击是可能的。信息块可被替换、重排、删除、重放
  5. 误差传递:密文块损坏仅对应明文块损坏 适合于传输短信息

一比特的明文密文错误只会影响该分组加解密,而不会影响到其他分组,但如果出现了密文中增加或丢失一些数据位,那么整个密文序列将不能正确解密。

  1. 密码分组链接CBC (cipher block chaining)
    CBC模式是将前一个密文分组与当前明文分组的内容混合起来进行加密的,这样就可以避免ECB模式的弱点。在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算(异或),然后再进行加密。

请添加图片描述

特点:

  1. 没有已知的并行实现算法
  2. 能隐藏明文的模式信息:需要共同的初始向量IV;相同明文加密得到不同密文;初始向量IV可以用来改变第一块;定期更换IV(如果需要传递IV,要保证IV的完整性)
  3. 对明文的主动攻击是不容易的:信息块不容易被替换、重排、删除、重放;误差传递:密文块损坏会导致明文块损坏
  4. 安全性好于ECB
    适合于传输长度大于64位的报文

明文中发生一比特错误,会影响对应的密文分组以及之后的所有密文分组,但由于解密会反转这种影响,所以没有明文错误扩散。

密文中发生一比特错误,会影响对应解密明文分组和其后的一个解密明文分组。随后的那个分组在解密后在同样的bit位上有错误,但再之后的分组将不会再受影响。

3. 密码反馈CFB (cipher feedback)

在CFB模式中,前一个密文分组会被送回到密码算法的输入端。所谓反馈(feedback),这里指的就是返回输入端的意思。

CFB 模式中由密码算法所生成的二进制序列称为密钥流(key stream)。在CFB模式中,密码算法就相当于用来生成密钥流的伪随机数生成器,而初始化向量就相当于伪随机数生成器的“种子”。在CFB模式中,明文数据可以被逐比特加密,因此我们可以将CFB模式看做是一种使用分组密码来实现流密码的方式。

3.1. CFB 模式加密

请添加图片描述

3.2. CFB 模式解密

请添加图片描述

特点:

  1. 分组密码自同步流密码
  2. 没有已知的并行实现算法
  3. 关于IV:为进行正常的加密和解密,发送与接收需要共同IV;IV应具有唯一性(即在密钥不变时,每次加密使用不同的IV)
  4. 优点:隐藏了明文模式
  5. 缺点:误差传递,一个单元损坏影响多个单元

明文错误同CBC

密文错误一位会引起解密后对应明文的一位错误,错误进入移位寄存器,将导致加密步骤输出错误,直到该错误从寄存器移除,有良好的自同步性质

4. 输出反馈OFB (output feedback)

在OFB模式中,密码算法的输入会反馈到密码算法的输入中。OFB模式并不是通过密码算法对明文直接进行加密的,而是通过将“明文分组”和“密码算法的输出”进行XOR来产生“密文分组”的,在这一点上OFB模式和CFB模式非常相似。

由于CFB模式中是对密文分组进行反馈的,因此必须从第一个明文分组开始按顺序进行加密,也就是说无法跳过明文分组1而先对明文分组2进行加密。相对地,在OFB模式中,XOR所需要的比特序列(密钥流)可以事先通过密码算法生成,和明文分组无关。只要提前准备好所需的密钥流,则在实际从明文生成密文的过程中,就完全不需要动用密码算法了,只要将明文与密钥流进行XOR就可以了。这就意味着只要提前准备好密钥流就可以快速完成加密。换个角度来看,生成密钥流的操作和进行XOR运算的操作是可以并行的。

4.1. OFB 模式加密

请添加图片描述

4.2. OFB 模式解密

请添加图片描述

特点:

  1. 没有已知的并行实现算法
  2. 优点:隐藏了明文模式;没有误差传递:一个单元损坏只影响对应单元
  3. 缺点:不具有自同步能力,要求系统要保持严格的同步;重新同步时需要新的IV,IV可以用明文形式传送
  4. 对明文的主动攻击是可能的,信息块可被替换、重排、删除、重放
  5. 安全性较CFB差

明文在某位上发生的错误不会影响加密后密文其他位。

密文在某位上发生的错误不会影响解密后明文其他位。

5. 计数器模式CTR (counter)

CTR 模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码。CTR 模式中,每个分组对应一个逐次累加的计数器,并通过对计数器进行加密来生成密钥流。也就是说,最终的密文分组是通过将计数器加密得到的比特序列,与明文分组进行XOR而得到的。

CTR模式和OFB模式一样,都属于流密码。OFB模式是将加密的输出反馈到输入,而CTR模式则是将计数器的值用作输入。

5.png

特点:

  1. 硬件效率:允许同时处理多块明/密文
  2. 软件效率:允许并行计算
  3. 预处理
  4. 随机访问
  5. 可证明安全性:能够证明CTR至少和其他模式一样安全
  6. 简单性:只需要实现加密算法
  7. 无填充:可以高效地作为密钥流使用

CTR模式也具备和OFB模式类似的性质。如果CTR模式的密文分组有一个比特反转了,则解密后的明文分组中仅有与之对应的比特会被反转,这一错误不会放大。明文加密与之类似。

6. 工作模式选用原则

  • ECB模式,简单、高速,但最弱,易受重发攻击,一般不推荐;
  • CBC,CFB,OFB,CTR的选择取决于实用特殊考虑;
  • CBC适用于文件加密,但较ECB慢,且需要另加移存器和组的异或运算,但安全性加强。软件加密最好选用此种方式;
  • OFB和CFB较CBC慢许多,每次迭代只有少数bit完成加密。若可以容忍少量错误扩展,可选CFB。否则,可选OFB或CTR;
  • 在字符为单元的流密码种多选CFB模式,如终端和主机间通信。而OFB或CTR用于高速同步系统,不容忍差错传播。

如有侵权,请联系作者删除

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Working mode of block password 的相关文章

  • AcWing 1875. 贝茜的报复 枚举+dfs

    AcWing 1875 贝茜的报复 打卡 这题的dfs太妙了 include
  • window.history.go(-1)和window.location.go(-1)的区别

    为什么80 的码农都做不了架构师 gt gt gt window history go 1 是返回上一页 window location go 1 是刷新上一页 弹出子页面
  • 安装redis 管理工具、redis扩展服务

    1 查看php 的版本 还有这种方式 在网站根目录下新建一个简单的phpinfo文件 输入phpinfo函数 在浏览器中打开 2 PHP 7 3 4 安装 Redis 4 0 Windows系统 直接在浏览器中搜索下载 Redis 4 0
  • svg怎么转换成png格式?

    svg怎么转换成png格式 在我们日常的工作和学习当中 会使用各种格式的图片 在使用的过程中 我们会发现每种格式的图片所具备的特点是完全不同的 像svg就是一种矢量图 一系列由线连接的点的实体 一般在用在图像 文字以及标志设计等场景 从它的
  • 按键精准控制步进电机起保停,正反转(Arduino+TB6600驱动器)

    精准控制步进电机起保停 正反转 Arduino TB6600驱动器 步进电机和驱动器相关的资料 https pan baidu com s 1udb4MyEOXk4CTO7TKRHj6w 提取码 fuea 步进电机 TB6600驱动器 接线
  • 数据准备(data preparation)

    数据预处理及数据准备 提到数据预处理 首先不得不考虑到pandas库 链接pandas 文章目录 数据预处理及数据准备 数据准备前置知识 数据处理步骤 数据预处理实战 二 使用步骤 1 读入数据 创建一个关于所有变量的分散矩阵 数据准备前置
  • 常用函数和代码

    1 加载数据函数 数据保存 import numpy as np import dill dill dump session GAT pkl dill load session t20 pkl save path data Enron gr
  • pytest测试报告Allure - 动态生成标题生成功能、添加用例失败截图

    一 动态生成标题 默认 allure 报告上的测试用例标题不设置就是用例名称 其可读性不高 当结合 pytest mark parametrize 参数化完成数据驱动时 如标题写死 其可读性也不高 那如果希望标题可以动态的生成 采取的方案是

随机推荐