【密码学】分组密码

news2025/2/2 6:00:42

文章目录

      • 分组密码的模式
        • 分组密码与流密码
        • 模式
        • 明文分组与密文分组
      • ECB模式
        • ECB定义
        • ECB特点
        • 对ECB模式的攻击
          • 改变分组顺序攻击
      • CBC模式
        • CBC定义
        • 初始化向量IV
        • CBC特点
        • 对CBC模式的攻击
          • 对初始向量进行反转攻击
          • 填充提示攻击
      • CFB模式
        • CFB定义
        • 对CFB模式的攻击
          • 重放攻击
      • OFB模式
        • OFB定义
        • CFB模式与OFB模式的对比
      • CTR模式
        • CTR定义
        • 计数器的生成方法
        • OFB模式与CTR模式的对比
        • CTR特点
        • 错误与机密性
      • 五种模式对比

分组密码的模式

分组密码与流密码
  • 分组密码:每次只能处理特定长度的一块数据的一类密码算法,“一块”就称为分组,一个分组的比特数就称为分组长度
  • 流密码:是对数据进行连续处理的一类密码算法
  • 分组密码处理完一个分组就结束了,因此不需要通过内部状态来记录加密的进度;但流密码是对一串数据流进行连续处理,因此需要保持内部状态
模式
  • 模式:分组密码只能加密固定长度的分组,但需要加密的明文长度可能会超过分组密码的分组长度,此时就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密。加密过程中迭代的方法就称为分组密码的模式
  1. ECB:电子密码本模式,Electronic CodeBook mode
  2. CBC:密码分组链接模式,Cipher Block Chaining mode
  3. CFB:密文反馈模式,Cipher FeedBack mode
  4. OFB:输出反馈模式,Output FeedBack mode
  5. CTR:计数器模式,CounTeR mode
明文分组与密文分组
  • 明文分组:分组密码算法中作为加密对象的明文,明文分组的长度与分组密码算法的分组长度是相等的
  • 密文分组:使用分组密码算法将铭文分组加密之后所生成的密文

ECB模式

ECB定义
  • 将明文分组加密之后的结果将直接成为密文分组

ECB

ECB特点
  • ECB模式是所有模式中最简单的一种,ECB模式中,明文分组与密文分组是一一对应的关系,因此,如果明文中存在多个相同的明文分组,则这些明文分组最终都将被转换为相同的密文分组
  • 只要观察一下密文,就可以知道明文中存在怎样的重复组合,并可以以此为线索来破译密码,因此ECB模式是存在一定风险的
对ECB模式的攻击
改变分组顺序攻击
  • ECB模式中,每个明文分组都各自独立地进行加密和解密,但这其实是一个很大的弱点
  • 若存在主动攻击者M,他能够改变密文分组的顺序,当接收者对密文进行解密时,由于密文分组的顺序被改变了,因此相应的明文分组的顺序也会被改变
  • 也就是说,攻击者M不需要破译密码,也不需要知道分组密码算法,只要知道哪个分组记录了什么样的数据就可以攻击成功

CBC模式

CBC定义
  • 将明文分组与前一个密文分组进行XOR运算,然后再进行加密

CBC

  • 若将一个分组的加密过程分离出来:ECB模式只进行了加密;CBC模式则在加密之前进行了一次XOR
    ECBCBC
初始化向量IV
  • 当加密第一个明文分组时,由于不存在“前一个密文分组”,因此需要事先准备一个长度为一个分组的比特序列来替代“前一个密文分组”,这个比特序列成为初始化向量(Initialization Vector),通常缩写为IV
  • 一般来说,每次加密时都会随机产生一个不同的比特序列来作为初始化向量
CBC特点
  • 明文分组在加密之前一定会与“前一个密文分组”进行XOR运算,因此即便明文分组1和明文分组2的值是相等的,密文分组1和密文分组2的值也不一定是相等的。这样一来,ECB模式的缺陷在CBC模式中就不存在了
  • 在CBC模式中,无法单独对一个中间的明文进行加密
  • 假设CBC模式加密的密文分组中有一个分组损坏了(如由于硬盘故障导致密文分组的值发生改变),这种情况下,只要密文分组的长度没有发生改变,则解密时最多只会有2个分组受到数据损坏的影响

CBC损坏

  • 假设CBC模式的密文分组中有一些比特缺失了(如由于通信错误导致没有收到某些比特),那么此时即使只缺失1比特,也会导致密文分组的长度发生变化,此后的分组发生错位,这样缺失比特的位置之后的密文分组全部无法解密

CBC缺失

对CBC模式的攻击
对初始向量进行反转攻击
  • 假设攻击者M能够对初始化向量中的任意比特进行反转,则解密后得到的明文分组中相应的比特也会被反转,因为在CBC模式解密过程中,第一个明文分组会和初始化向量进行XOR运算

CBC反转

填充提示攻击
  • 填充提示攻击是一种利用分组密码中的填充部分来进行攻击的方法
  • 在分组密码中,当明文长度不为分组长度的整数倍时,需要在最后一个分组中填充一些数据使其凑满一个分组长度
  • 在填充提示攻击中,攻击者会反复发送一段密文,每次发送时都对填充的数据进行少许改变,由于接收者在无法正确解密时会返回一个错误信息,攻击者通过这一错误信息就可以获得一部分与明文相关的信息
  • 这一攻击方式并不仅限于CBC模式,而是适用于所有需要进行分组填充的模式
  • 要防御这种攻击,需要对密文进行认证,确保这段密文的确是由合法的发送者在知道明文内容的前提下生成的

CFB模式

CFB定义
  • 前一个密文分组会被送回到密码算法的输入端,反馈指返回输入端
  • 在生成第一个密文分组时,由于不存在前一个输出的数据,因此需要使用初始化向量IV来代替,一般来说,需要在每次加密时生成一个不同的随机比特序列用作初始化向量
  • CFB模式中,明文分组和密文分组之间并没有经过“加密”,明文分组和密文分组之间只有一个XOR
  • CFB模式中,密码算法的输出相当于一次性密码本中的随机比特序列,由于密码算法的输出是通过计算得到的,并不是真正的随机数,因此CFB模式不能像一次性密码本那样具备理论上不可破译的性质
  • CFB模式中由密码算法所生成的比特序列称为密钥流,在CFB模式中,密码算法相当于用来生成密钥流的伪随机数生成器,儿初始化向量就相当于伪随机数生成器的“种子”
  • 在CFB模式中,明文数据可以被逐比特加密,因此可以将CFB模式看作是一种使用分组密码来实现流密码的方式

CFB
CBCCFB

对CFB模式的攻击
重放攻击
  • 假设一条信息由7个密文分组组成,主动攻击者M将该消息中的后3个密文分组保存下来,第二天通信方发送内容不同的7个密文分组(假设发送发两次使用相同的密钥),攻击者M用保存好的后3个密文分组进行替换
  • 此时接收方进行解密时,前4个分组可以解密成正确的明文分组,第5个分组会出错,第6、7分组变成呗M替换的内容,此时M没有破解密码,就成功将以前的电文混入新的电文中,而第5个分组到底是通信错误还是被攻击了,接收方是无法做出判断的

CFB攻击

OFB模式

OFB定义
  • 在OFB模式中,密码算法的输出会反馈到密码算法的输入中
  • OFB模式并不是通过密码算法对明文直接进行加密的,而是通过将“明文分组”和“密码算法的输出”进行XOR来产生“密文分组”的,这一点OFB与CFB很相似
  • OFB模式中也需要使用初始化向量IV,一般来说,需要在每次加密时生成一个不同的随机比特序列用作初始化向量

OFB

CFB模式与OFB模式的对比
  • 仅仅在于密码算法的输入
  • CFB模式中,密码算法的输入是前一个密文分组,也就是将密文分组反馈到密码算法中;OFB模式中,密码算法的输入则是密码算法的前一个输出,也就是将输出反馈给密码算法
  • 由于CFB模式中是对密文分组进行反馈的,因此必须从第一个明文分组开始按顺序进行加密,无法跳过明文1而先对明文2进行加密;相对地,在OFB模式中,XOR所需要的比特序列(密钥流)可以实现通过密码算法生成,和明文分组无关,只要提前准备好所需的密钥流,则在实际从明文生成密文的过程中,就完全不需要动用密码算法了,只要将明文与密钥流进行XOR即可

CFBOFB

CTR模式

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

CTR

计数器的生成方法
  • 每次加密时都会生成一个不同的值(nonce)来作为计数器的初始值
  • 当分组长度为16字节时,前8个字节为nonce,这个值在每次加密时必须都是不同的,后8个字节为分组序号,这个部分会逐次累加
  • 由于计数器的值每次都是不同的,因此每个分组中将计数器进行加密所得到的密钥流也是不同的,这种方法就是用分组密码来模拟生成随机的比特序列
OFB模式与CTR模式的对比
  • OFB模式是将加密的输出反馈到输入;CTR模式则是将计数器的值用作输入

OFBCTR

CTR特点
  • CTR模式的加密和解密使用了完全相同的结构,因此在程序实现上比较容易
  • CTR模式可以以任意顺序对分组进行加密和解密
  • 能够以任意顺序处理分组,能够实现并行计算
错误与机密性
  • 假设CTR模式的密文分组中有一个比特被反转了,则解密后明文分组中仅有与之对应的比特会被反转,这一错误不会放大
  • CTR模式中,主动攻击者M可以通过反转密文分组中的某些比特,引起解密后明文中的相应比特也发生反转

五种模式对比

模式名称优点缺点
ECBElectronic CodeBook mode简单快速;
支持并行计算;
明文中重复排列会反映在密文中;
通过删除、替换密文分组可以对明文进行操作;
对包含某些比特错误的密文进行解密时,对应的分组会出错;
不能抵御重放攻击;
CBCCipher Block Chaining mode明文中的重复排列不会反映在密文中;
解密支持并行计算;
能够解密任意密文分组;
对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错;
加密不支持并行计算;
CFBCipher FeedBack mode不需要填充padding;
解密支持并行计算;
能够解密任意密文分组;
加密不支持并行计算;
对包含某些错误比特的密文进行解密时,第一个分组的相应比特以及后一个分组的全部比特会出错;
不能抵御重放攻击;
OFBOutput FeedBack mode不需要填充padding;
可事先进行加密解密的准备;
加密解密使用相同结构;
对包含某些错误比特的密文进行解密时,只有明文中相对应的比特会出错;
不支持并行计算;
主动攻击者反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转;
CTRCounTeR mode不需要填充padding;
可事先进行加密解密的准备;
加密解密使用相同结构;
对包含某些错误比特的密文进行解密时,只有明文中相对应的比特会出错;
支持并行计算
主动攻击者反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转;

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

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

相关文章

模板初阶【C++】

模板的作用 模板的主要作用是实现泛型编程,泛型编程即编写与类型无关的通用代码,是代码复用的一种手段 模板就是泛型编程的基础。 例 我们经常使用的交换函数就可以使用泛型编程来进行编写,这样可以大大减少重复的代码 一般编写方式 可以…

MyBatis拦截器(Interceptor)的理解与实践

文章目录 1. 什么是MyBatis拦截器?2. 拦截器的基本原理3. 编写自定义拦截器3.1 示例:实现SQL执行时间统计拦截器3.2 配置拦截器 4. 实战应用场景5. 总结 🎉欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博…

可视化大屏开发系列——页面布局

页面布局是可视化大屏的基础,想要拥有一个基本美观的大屏,就得考虑页面整体模块的宽高自适应,我们自然就会想到具有强大灵活性flex布局,再借助百分比布局来辅助。至此,大屏页面布局问题即可得到解决。 可视化大屏开发系…

三大交易所全面恢复 IPO 申请

6月21日晚间,北交所受理了3家企业的IPO申请,这是北交所时隔3个月之后恢复IPO受理。6月20日晚间,沪深交易所各受理了1家IPO申请,这是沪深交易所时隔半年后再次受理IPO。这也意味着,三大交易所IPO受理全部恢复。 6月21日…

Ubuntu-基础工具配置

基础工具配置 点击左下角 在弹出界面中点击 以下命令都是在上面这个界面执行(请大家注意空格) 命令输入完后,回车键就是执行,系统会提示输入密码(就是你登录的密码) 1.安装net工具 :(ifconfi…

代码-功能-python-爬取博客网标题作者发布时间

环境: python 3.8 代码: # 爬取博客园内容 # https://www.cnblogs.com/import re from lxml import etree import requests import json import threading from queue import Queue import pymysql import timeclass HeiMa:def __init__(self):# 请…

2小时极速入门 TypeScript-慕课网 笔记

TS文档:https://www.tslang.cn/docs/handbook/modules.html 一,什么是TS 注:Typescript无法在浏览器中运行 ,所以需要编译器,将TS转变为JS 问:TS运行这么麻烦,为什么还要有TS? 答:TS强类型 1,规…

【大疆pocket3】到手后5个必改初始设置关键点(上)

【大疆pocket3】到手后5个必改初始设置关键点(上) 一,简介二,必改关键点2.1 视频拍摄格式2.2 竖拍选择2.3 开拍后息屏设置2.4 摇杆转速设置2.5 提示音设置为静音 一,简介 本文记录大疆pocket3上手后5个必改关键点&…

独立看门狗窗口开门狗

独立看门狗 接线图:按键用于阻塞喂狗。独立看门狗&窗口开门狗接线一样。 第一步,是开启时钟了,只有这个LSI时钟开启了独立看门狗才能运行,所以初始化独立看门狗之前,LSI必须得开启,但是这个开启LSI的…

System.Data.OracleClient.OracleException:“ORA-12571: TNS: 包写入程序失败

System.Data.OracleClient.OracleException:“ORA-12571: TNS: 包写入程序失败 解决方法: 首先%oracle_home%/network/admin下的sqlnet.ora文件,把SQLNET.AUTHENTICATION_SERVICES (NTS)加个 # 注释掉就好了

稳态与敏态业务阶段

稳态业务就是比如你登录学校的图书馆教务处这些业务系统 用户数量和数据基本上不会发生太大的变化 业务系统的更新也不是很频繁,比较方便资源的采购 敏态业务就是比如我开发一个应用上线了,我不知道有多少用户和数量,无法预估 这就没办法…

计算机专业:昔日万金油,明日科技潮头的弄潮儿

高考后的十字路口:计算机专业,依旧闪耀吗? 随着2024年高考的尘埃落定,数百万青春洋溢的脸庞再次凝视着未来的迷雾,试图在繁星点点的专业宇宙中找到那颗最亮的星——计算机科学与技术。长久以来,计算机专业…

自动驾驶辅助功能测试用例表格(续2)

自动驾驶辅助功能测试用例表格(续) 用例编号测试类型测试项目测试描述车辆准备车辆状态车辆场景车辆执行可变因素具体信号状态通过标准预期标准通过/失败TJA-001功能测试交通拥堵辅助 (TJA)测试TJA系统在交通拥堵情况下的自动跟车和保持车道功能TJA系统已…

高性能并行计算华为云实验四:快排算法实验

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建快排算法源码 3.2 makefile的创建与编译 3.3 主机文件配置与运行监测 四、实验结果与分析 4.1 结果一及分析 4.2 结果二及分析 五、实验思考与总结 5.1 实验思考 5.2 实验总结 END~ 一、实验目的…

吴恩达机器学习 第三课 week2 推荐算法(上)

目录 01 学习目标 02 推荐算法 2.1 定义 2.2 应用 2.3 算法 03 协同过滤推荐算法 04 电影推荐系统 4.1 问题描述 4.2 算法实现 05 总结 01 学习目标 (1)了解推荐算法 (2)掌握协同过滤推荐算法(Collabo…

正则表达式之三剑客grep

正则表达式匹配的是文本内容,linux的文本三剑客 都是针对文本内容 grep 过滤文本内容 sed 针对文本内容进行增删改查 awk 按行取列 文本三剑客都是按行进行匹配。 grep grep 的作用就是使用正则表达式来匹配文本内容 选项: -m …

vivado SLR

描述 超级逻辑区(SLR)是包含在堆叠硅中的单个FPGA芯片 互连(SSI)设备。堆叠式硅互连(SSI)技术使用无源硅 具有微凸块和硅通孔(TSV)的内插器,用于组合多个FPGA管芯 切片&a…

最长考拉兹序列

题目: 考虑如下定义在正整数集上的迭代规则: n n/2 (若n为偶数) n 3n1 (若n为奇数) 从13开始,可以迭代生成如下的序列: 13 40 20 10 5 16 8 4 2 1 可以看出这个序列(从13…

实时语音翻译软件哪个好?多语言实时沟通无负担

众所周知,英语是国际交流的共同语言。无论是跨国商务洽谈还是学术研讨,英语的流畅使用至关重要。 然而,语言的障碍依然存在,这时一款高效的英语语音翻译软件就显得尤为关键。它们能够即时转换语言,让我们的对话无国界…

跨境电商系列02:跨境电商的本质,是一场现代文明的“侵x入”吗

作者|夏虫(题图:中国龙) 公号,数据虫巢(ID: blogchong) “ 不知道有没有人想过一个问题,海出电商市场是增量的没问题,那为何是跨境电商的模式呢?所谓跨境电商,一定是存在商品流动&a…