加密与安全_常见的分组密码 ECB、CBC、CFB、OFB模式介绍

news2024/12/26 10:04:51

文章目录

  • Pre
  • 概述
  • why
  • 分组密码和流密码的基本概念
  • 什么是模式
  • 分组密码的常见模式
    • 1. ECB 模式(电子密码本模式)
    • 2. CBC 模式(密文分组链接模式)
    • 3. CFB 模式(密文反馈模式)
    • 4. OFB 模式(输出反馈模式)
  • 模式选择建议

在这里插入图片描述


Pre

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


概述

在这里插入图片描述

  1. 介绍分组密码基本概念。
  2. 讲解ECB模式的工作原理、优缺点及应用场景。
  3. 详细介绍CBC模式的工作原理、优缺点及应用场景。
  4. 说明CFB模式的工作原理、优缺点及应用场景。
  5. 解释OFB模式的工作原理、优缺点及应用场景。
  6. 总结并给出模式选择的建议。

why

当需要加密任意长度明文时,就需要分组迭代进行加密。 分组密码有很多模式,如果模式选择不当,就无法充分保证明文的机密性



分组密码和流密码的基本概念

分组密码:将明文数据划分为固定长度的块(通常为128位或64位),然后逐块加密。每个块称为一个分组(block)。

流密码:对数据流进行连续处理的加密算法,逐位或逐字节加密,适用于数据流的加密。


什么是模式

模式是分组密码的迭代算法

比如我们常使用的 DES 算法中的 ECB 模式。 ECB 模式就是将明文分割成多个分组并逐个加密的方法。 ECB 算法计算量小,加解密速度快,但现在已经证实 ECB 是不可靠的模式了。 所以正式场合中不要使用 ECB 模式


分组密码的常见模式

1. ECB 模式(电子密码本模式)

ECB 将明文进行分组后直接加密产生密文分组

在这里插入图片描述

工作原理

  • 将明文分割成多个固定长度的分组。
  • 每个分组独立加密。

优点

  • 计算简单,速度快。
  • 支持并行处理。

缺点

  • 相同的明文分组会产生相同的密文分组,无法隐藏明文的模式和结构。
  • 容易受到统计分析攻击。

应用场景

  • 不适合用于敏感信息的加密,不推荐在正式场合使用。

ECB 模式中,明文和密文是一一对应的。相同的明文一定可以得到相同的密文。所以虽然不能直接根据密文推导出明文,但可以根据密文的特点进行定向攻击

例如: Bob 向 Alice 发送了一个转账的报文:

分组1 = Bob的银行账号 
分组2 = Alice的银行账号 
分组3 = 转账金额

虽然 Eve 不能直接修改账号和金额(因为没有解密数据),但 Eve 可以通过交换分组 1 和分组 2,造成攻击。

分组1 = Alice的银行账号 
分组2 = Bob的银行账号 
分组3 = 转账金额

这种攻击方式能成功就是因为 ECB 没有隐藏明文信息造成的


2. CBC 模式(密文分组链接模式)

密文分组链接模式

在这里插入图片描述

工作原理

  • 第一个明文分组与初始向量(IV)异或后进行加密,产生第一个密文分组。
  • 后续每个明文分组与前一个密文分组异或后进行加密,产生相应的密文分组。

优点

  • 能够隐藏明文的模式和结构,提高安全性。
  • 支持并行解密。

缺点

  • 加密时不支持并行处理,需串行进行。
  • 若某个密文分组损坏,会影响当前和下一个分组的解密。

CBC 最核心的一个环节,是将前一个密文分组作为一个变量带入了下一个明文加密中。 这样即便明文相同,但经过密文异或操作后,就会出现不同的结果。通过这样就实现了混淆明文信息的目的。

但不知道你有没有发现,第一个明文分组如何处理呢? 在处理第一个明文分组时,异或为 0.那么密文分组 A 就退化成了 ECB 模式。 为了避免出现这种情况,我们就需要人为补充一个初始密文分组,这个初始的密文分组就称为IV分量

在这里插入图片描述

应用场景

  • 在需要高安全性且可以容忍串行加密的场景中使用,如文件加密。

3. CFB 模式(密文反馈模式)

对 CBC 模式的一种改进

在这里插入图片描述
在 CFB 模式中,明文分组和密文分组之间只做异或操作就可以了。在此时此刻,密码算法的输出有一些一次性密码本的意思了.

工作原理

  • 第一个明文分组与初始向量(IV)异或后进行加密,产生第一个密文分组。
  • 后续每个明文分组与前一个密文分组异或后进行加密,产生相应的密文分组。

优点

  • 支持并行解密。
  • 可以解密任意的密文分组。

缺点

  • 不能抵御重放攻击。

应用场景

  • 实时通信加密,如网络数据传输。

4. OFB 模式(输出反馈模式)

输出反馈模式。 密码算法的输出会反馈到密码算法的输入中

OFB 并不是通过密码算法对明文进行加密的,而是通过将明文分组和密码算法的输出进行异或来产生密文的。所以 OFB 和 CFB 也有一些类似.

在这里插入图片描述

工作原理

  • 初始向量(IV)输入到加密算法中,产生一个伪随机输出。
  • 明文分组与该伪随机输出异或,产生密文分组。
  • 伪随机输出反馈给加密算法,继续生成下一个伪随机输出。

优点

  • 不需要填充(Padding)。
  • 若密文包含错误比特,仅对应的明文比特会出错。

缺点

  • 不支持并行解密。
  • 存在比特反转攻击风险。

应用场景

  • 对错误容忍性要求较高的场景,如视频流加密。

模式选择建议

  1. ECB 模式:简单快速,但不安全,不推荐使用。
  2. CBC 模式:适用于高安全性需求的场景,如文件加密,推荐使用。
  3. CFB 模式:适用于实时通信,支持并行解密,但需防范重放攻击。
  4. OFB 模式:适用于错误容忍性要求高的场景,但不支持并行解密。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1905821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL安装时initializing database失败

问题页面: 解决方法: 1.勾选红框中的选项: 2.将下图红框中全部改为英文: 然后一路next就可以了。

VRay渲染有什么技巧?渲染100邀请码1a12

渲染是视觉行业非常重要的一环,没有渲染就没有效果图,常用的渲染器有Vray,而Vray渲染有很多技巧,可以让渲染更快更省,下面我们总结下。 1、删除无用对象 检查场景,看是否有一些不需要渲染的物体和灯光&am…

读人工智能全传06逻辑编程

1. 现代逻辑 1.1. 到了20世纪初,现代逻辑的基本框架已经大致建立起来,当时确立的逻辑运算系统,直至如今仍然能够支撑数学家几乎所有的逻辑推理工作 1.1.1. 这个系统被称为一阶逻辑,一阶逻辑是数学和推理的通用语言 1.1.2. 这个…

BaseServlet的封装

创建BaseServlet的必要性 如果不创建BaseServlet,现在我们只要实现一个功能,我们就需要创建一个servlet! 例如:用户模块(登录,注册,退出录,激活,发送邮件等等功能) 也就是说,我们必须要创建一…

工程化-vue3+ts:代码检测工具 ESLint

一、理解ESLint ESLint是一个开源的JavaScript代码检查工具,用于帮助开发人员规范和统一编码风格。它可以检查代码中的潜在错误、不一致的编码习惯以及一些常见的代码问题。 ESLint使用基于规则的插件体系,可以根据项目的需求和个人的偏好配置不同的规…

数学系C++ 类与对象 STL(九)

目录 目录 面向对象:py,c艹,Java都是,但c是面向过程 特征: 对象 内敛成员函数【是啥】: 构造函数和析构函数 构造函数 复制构造函数/拷贝构造函数: 【……】 实参与形参的传递方式:值…

git杂记

git 安装: 在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 https://git-scm.com/download/win,下载会自动开始。 要注意这是一个名为 Git for Windows 的项目(也叫做 msysGit),和…

如何优化 PostgreSQL 中对于树形结构数据的查询?

文章目录 一、数据模型选择(一)邻接表模型(二)路径枚举模型(三)嵌套集模型 二、索引策略(一)对于邻接表模型(二)对于路径枚举模型(三)…

基于pi控制的数字锁相环simulink建模与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff09…

ARM架构以及程序运行解析

文章目录 1. ARM架构 2. ARM处理器程序运行的过程 3. 示例 3. 基于ARM架构的STM32单片机 1. 运行模式 2. 寄存器组 3. STM32的基本结构 4. STM32的运行模式 4. 寄存器组详解 1. 未备份寄存器 2. 备份寄存器 3. 程序计数器 4. 程序状态寄存器 5. CPSR和SPSR寄存器…

【TB作品】51单片机 Proteus仿真 00001仿真实物PID电机调速系统

实验报告:Proteus 仿真 PID 电机调速系统 一、实验背景 PID(比例-积分-微分)控制器广泛应用于工业控制系统中,用于调节各种物理变量。本实验的目的是通过 Proteus 仿真软件设计并实现一个 PID 电机调速系统,以控制直…

记一次酣畅淋漓的UDF提权(Linux)

外网打点就不放了,翻了一下具备suid权限的命令,没啥结果。 可疑的命令是/usr/lib/dbus-1.0/dbus-daemon-launch-helper但是没有找到用这个命令提权的资料。 弹shell后翻找一下源码,/app/api.py文件中链接了mysql,事出反常必有妖&…

水冷液冷负载系统的六种基本类型

您可以选择六种基本类型的冷却系统,以满足负载的冷却需求。每个人都有其优点和缺点。本文旨在识别不同类型的冷却系统并确定它们的优缺点,以便您可以根据自己的需求做出明智的选择。 液体冷却系统有六种基本类型: 1.液对液 2.闭环干燥系统…

【论文阅读】AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising

论文:2406.06911 (arxiv.org) 代码:czg1225/AsyncDiff: Official implementation of "AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising" (github.com) 简介 异步去噪并行化扩散模型。提出了一种新的扩散模型分布式加…

J024_打印电影的全部信息

一、需求描述 展示多部电影的信息。 电影信息包括:电影名称、电影得分、电影票价格。 二、代码实现 2.1 Movie类 package com.itheima.collection;public class Movie {//电影名称private String name;//电影得分private int score;//电影票价格private double…

前端面试题(CSS篇五)

一、设备像素、css 像素、设备独立像素、dpr、ppi 之间的区别? 设备像素指的是物理像素,一般手机的分辨率指的就是设备像素,一个设备的设备像素是不可变的。 css像素和设备独立像素是等价的,不管在何种分辨率的设备上,…

LLaMA2模型开源商用:实力比肩ChatGPT,探索AI新高度

【大模型】可商用且更强的 LLaMA2 来了 LLaMA2 简介 论文 GitHubhuggingface模型列表训练数据训练信息模型信息 许可证参考 LLaMA2 简介 2023年7月19日:Meta 发布开源可商用模型 Llama 2。 Llama 2是一个预训练和微调的生成文本模型的集合,其规模从…

java中反射(Reflection)的4个作用

java中反射(Reflection)的4个作用 作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断任意一个类所具有的成员变量和方法作用4、在运行时调用任意一个对象的方法总结 💖The Begin💖…

shared_ptr 线程安全

为什么 shared_ptr 可以安全地在多个线程中共享? 循环引用 因为shared_ptr std::shared_ptr 的引用计数是线程安全的。这意味着你可以在多个线程中安全地拷贝、赋值和销毁 std::shared_ptr。然而,访问或修改 shared_ptr 所指向的对象时,需要…

SpringBoot彩蛋之定制启动画面

写在前面 在日常开发中,我们经常会看到各种各样的启动画面。例如以下几种 ① spring项目启动画面 ② mybatisplus启动画面 ③若依项目启动画面 还有很多各式各样好看的启动画面,那么怎么定制这些启动画面呢? 一、小试牛刀 ① 新建一个Spr…