当前位置: 首页 > news >正文

分组密码工作模式

分组密码工作模式加解密介绍

分组密码工作模式定义了如何使用一个块密码算法来安全地加密和解密数据。每种模式都有其特定的加解密流程和适用场景。以下是几种工作模式的详细介绍:

1. ECB电子密码本模式

加密方法

  • 明文被分割成固定大小的块。
  • 每个块独立使用密钥进行加密。
  • 相同的明文块总是被加密成相同的密文块。

解密方法

  • 密文块被独立解密。
  • 相同的密文块总是被解密成相同的明文块。

特点:简单,但安全性较低,因为相同的明文块产生相同的密文块,容易受到模式攻击。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例
假设我们有以下明文块:P1 = "Moon", P2 = "shot", P3 = "AI",密钥为Key = "secretkey123"

加密过程:

  • 加密第一个块:C1 = E(Key, P1)
  • 加密第二个块:C2 = E(Key, P2)
  • 加密第三个块:C3 = E(Key, P3)

解密过程

  • 解密第一个块:P1 = D(Key, C1)
  • 解密第二个块:P2 = D(Key, C2)
  • 解密第三个块:P3 = D(Key, C3)

2. CBC密码块链模式

加密方法

  • 明文被分割成固定大小的块。
  • 每个明文块与前一个密文块(第一个块是IV)进行XOR,然后加密。
  • 每个密文块依赖于前一个明文块。

解密方法

  • 密文块被解密。
  • 解密后的块与前一个密文块进行XOR,以得到原始的明文块。
  • 这个过程一直持续到所有块都被处理。

特点:提高了安全性,但不支持并行处理,因为每个块的加密依赖于前一个块。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例
假设我们有以下明文块:P1, P2, P3,IV为IV,密钥为Key

加密过程:

  • 初始化:K1 = E(Key, IV)
  • 加密第一个块:C1 = P1 XOR K1
  • 加密第二个块:K2 = E(Key, C1)
  • 加密第二个块:C2 = P2 XOR K2
  • 加密第三个块:K3 = E(Key, C2)
  • 加密第三个块:C3 = P3 XOR K3

解密过程

  • 解密第一个块:P1 = D(Key, C1) XOR IV
  • 解密第二个块:P2 = D(Key, C2) XOR C1
  • 解密第三个块:P3 = D(Key, C3) XOR C2

3. CFB密文反馈模式

加密方法

  • 明文被分割成固定大小的块。
  • IV被加密并用于与第一个明文块进行XOR,产生第一个密文块。
  • 每个后续的密钥流块基于前一个密钥流块和前一个明文块生成。

解密方法

  • 与加密过程相同,因为XOR操作是可逆的。

  • 密文块被用于生成密钥流块。

  • 密钥流块与前一个密钥流块进行XOR,然后与明文块进行XOR以得到解密的明文块。

特点:允许随机访问和并行处理,但安全性不如CBC。

**PS:**每个新的密钥流块仅依赖于前一个密钥流块和密钥,而与明文块无关。这是CFB模式支持并行处理的关键特性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例
假设我们有以下明文块:P1, P2, P3,IV为IV,密钥为Key

加密过程:

  • 初始化:K1 = E(Key, IV)
  • 加密第一个块:C1 = P1 XOR K1
  • 更新密钥流:K2 = E(Key, K1)
  • 加密第二个块:C2 = P2 XOR K2
  • 更新密钥流:K3 = E(Key, K2)
  • 加密第三个块:C3 = P3 XOR K3

解密过程

  • 解密第一个块:P1 = C1 XOR K1
  • 更新密钥流:K2 = E(Key, K1)
  • 解密第二个块:P2 = C2 XOR K2
  • 更新密钥流:K3 = E(Key, K2)
  • 解密第三个块:P3 = C3 XOR K3

4. OFB输出反馈模式

加密方法

  • IV被加密以生成第一个密钥流块。
  • 每个后续的密钥流块基于前一个密钥流块生成。
  • 明文块与密钥流块进行XOR以产生密文块。

解密方法

  • 密文块与相应的密钥流块进行XOR以恢复明文块。

特点:类似于CFB,但每个密钥流块的生成不依赖于明文,因此可以并行处理。

PS

  • CFB模式:当前密钥流块在每次加密后会更新,以包含前一个密钥流块的加密结果。这意味着每个明文块的加密依赖于前一个密钥流块的加密结果。

  • OFB模式:当前密钥流块在每次生成新的密钥流块后才更新。这意味着每个明文块的加密使用的是上一次生成的密钥流块,而不是当前正在生成的密钥流块。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例
假设我们有以下明文块:P1, P2, P3,IV为IV,密钥为Key

加密过程:

  • 初始化:K1 = E(Key, IV)
  • 加密第一个块:C1 = P1 XOR K1
  • 更新密钥流:K2 = E(Key, K1)
  • 加密第二个块:C2 = P2 XOR K2
  • 更新密钥流:K3 = E(Key, K2)
  • 加密第三个块:C3 = P3 XOR K3

解密过程

  • 解密第一个块:P1 = C1 XOR K1
  • 更新密钥流:K2 = E(Key, K1)
  • 解密第二个块:P2 = C2 XOR K2
  • 更新密钥流:K3 = E(Key, K2)
  • 解密第三个块:P3 = C3 XOR K3

5. CTR计数器模式

加密方法

  • 使用一个递增的计数器(可以与IV结合)和密钥一起加密,生成密钥流。
  • 明文块与密钥流进行XOR以产生密文块。

解密方法

  • 密文块与相同的密钥流进行XOR以恢复明文块。

特点:提供高安全性,支持并行处理,适合加密大量数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例
假设我们有以下明文块:P1, P2, P3,计数器从0开始,密钥为Key

加密过程:

  • 初始化计数器:Counter = 0
  • 加密第一个块:C1 = P1 XOR E(Key, Counter)
  • 计数器递增:Counter++
  • 加密第二个块:C2 = P2 XOR E(Key, Counter)
  • 计数器递增:Counter++
  • 加密第三个块:C3 = P3 XOR E(Key, Counter)

解密过程

  • 计数器递减:Counter--
  • 解密第三个块:P3 = C3 XOR E(Key, Counter)
  • 计数器递减:Counter--
  • 解密第二个块:P2 = C2 XOR E(Key, Counter)
  • 计数器递减:Counter--
  • 解密第一个块:P1 = C1 XOR E(Key, Counter)

6. XTS磁盘模式

加密方法

  • 数据被分割成两个部分,一部分使用一个密钥加密,另一部分使用另一个密钥加密。
  • 加密的数据块进行XOR操作,然后整个数据块再次使用第三个密钥加密。

解密方法

  • 密文块首先使用第三个密钥解密,然后进行XOR操作,最后使用前两个密钥解密。

特点:主要用于硬盘驱动器和其他形式的块存储的加密,提供高安全性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例
假设我们有以下明文块:P1, P2, P3,密钥1为Key1,密钥2为Key2

加密过程:

  • 加密第一个块:T1 = E(Key2, P1)
  • 加密第二个块:T2 = E(Key2, P2)
  • 加密第三个块:T3 = E(Key2, P3)
  • T = T1 || T2 || T3
  • C = E(Key1, T)
  • Final_Encrypted = C XOR T

解密过程

  • 与加密过程相反。

  • Received_Encrypted = Final_Encrypted

  • T = Received_Encrypted XOR C

  • C = D(Key1, T)

  • T1 = C[0]

  • T2 = C[1]

  • T3 = C[2]

  • 解密第一个块:P1 = D(Key2, T1)

  • 解密第二个块:P2 = D(Key2, T2)

  • 解密第三个块:P3 = D(Key2, T3)


7. GCM伽罗华计数模式

加密方法

  • 结合了CTR模式和Galois域上的运算,提供认证加密。
  • 明文块与密钥流进行XOR,同时使用Galois域上的运算来提供完整性校验。

解密方法

  • 密文块与密钥流进行XOR,同时验证完整性校验。

特点:提供认证加密,可以并行处理,适合高速网络通信。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例
假设我们有以下明文块:P1, P2, P3,IV为IV,密钥为Key

加密过程:

  • 初始化计数器和Galois域运算
  • 使用密钥和IV加密得到密钥流
  • 与明文进行XOR,并进行Galois域运算以提供认证

加密第一个块

  • K1 = E(Key, IV)
  • C1 = P1 XOR K1
  • 进行Galois域运算

加密第二个块

  • K2 = E(Key, K1)
  • C2 = P2 XOR K2
  • 进行Galois域运算

加密第三个块

  • K3 = E(Key, K2)
  • C3 = P3 XOR K3
  • 进行Galois域运算

解密过程

  • 与加密过程相反,验证认证标签。

  • 进行Galois域运算验证

  • P3 = C3 XOR K3

  • K3 = E(Key, K2)

  • 进行Galois域运算验证

  • P2 = C2 XOR K2

  • K2 = E(Key, K1)

  • 进行Galois域运算验证

  • P1 = C1 XOR K1

每种模式都有其特定的应用场景和优缺点,选择合适的模式需要根据数据的特性、安全性需求以及性能要求来决定。



http://www.mrgr.cn/news/57436.html

相关文章:

  • Netty 核心组件详解:深入理解及应用
  • Android OpenGL光照效果
  • 01 - matlab 点云工具箱(Point cloud tools for Matlab)配置
  • Redis持久化机制RDB持久化和AOF持久化
  • Kafka 解决消息丢失、乱序与重复消费
  • 数据结构:数字统计
  • 在示波器上观察到李萨如图形应如何调节
  • 亚马逊扛不住了!其低价商城或在11月上线,开卷Temu和Shein
  • [专有网络VPC]使用ClassicLink连通经典网络与VPC
  • Python酷库之旅-第三方库Pandas(164)
  • Python酷库之旅-第三方库Pandas(165)
  • SQL LIKE 操作符
  • 热门短剧搜索网站+内置1.2万条短视频数据+无授权开心版
  • Scala入门基础(13)内部类
  • 深入图像处理:使用Pillow库的实用指南
  • 锁门与开窗:搞懂Java的访问控制修饰符
  • UE5蓝图中整理节点的方法
  • kconfig语法(一)
  • 华为交换机S5700不同网段用户限速配置实例
  • gis中用栅格计算器或加权总和后图层不显示,值也明显不对
  • 视图库对接系列(GA-T 1400)二十六、视图库对接系列(级联)查询订阅
  • 免费送源码:Node.JS+Express+MySQL Express 流浪动物救助系统 计算机毕业设计原创定制
  • C++——从一个正方体类(Cube)和球体类(Sphere),派生出圆柱体类(Cylinder),设计成员函数,能够输出正方体、球体、圆柱体的面积和体积。
  • kconfig语法(二)
  • 数据结构 ——— C语言实现链式队列
  • 第五十四章 安全元素的详细信息 - DerivedKeyToken 详情