【0325】分组密码

2023-11-13

分组密码

体制概述

分组密码体制(Block cipher)是在密钥k控制下一次变换一个明文数据块(又称分组)的密码体制。

特点:速度快,易于标准化和便于软硬件实现等特点

设计原则和评估

针对安全性的两个基本原则:扩散和混淆(对抗统计分析)

扩散原则:将明文的统计规律和结构规律散射到相当长的一段统计中去。

混淆原则:将明文,密文,密钥三者统计关系尽可能复杂。

使用复杂的非线性代替变换效果较好,迭代和乘积效果较好。

针对实现的设计原则:【软件实现】使用子块和简单的运算。【硬件实现】加密和解密的相似性,尽量使用规则结构。

乘积密码体制

只讨论明文空间和密文空间相同

S=(M,C,K1xK2,E,D)

乘积密码,就是以某种方式连续执行两个或多个密码,以使得所得到的最后结果或乘积比其任意一个组成密码都更强。

迭代密码体制

S^n=SxSxSx…S,称为是n次迭代密码体制。

如果S**2=S,则称为密码体制是幂等的,否则称为非幂等密码体制。

对于幂等密码,有E1(E2(m))=E3(m),密钥k3属于原本的密钥空间,不会提高安全性。

评估

(1)安全性:抗密码分析的强度,可靠的数学基础,随机性

(2)性能:计算效率和存储需求

(3)算法和实现特性:灵活性、硬件和软件适应性、算法的简单性等

分析

(1)差分密码分析:通过两个明文差值和密文差值的影响来推断某些密钥比特

(2)线性密码分析:寻找近似算法

(3)差分-线性密码分析

基本结构:SPN和Feistel 费斯特

SPN分为两层:替换Substitution–S盒【非线性变换,起到混淆作用】,P置换—P盒【本质属线性变换,起扩散作用】。

S盒分为3部分:解码、P盒及编码

SPN结构也是一种特殊的迭代密码 ,SPN结构和 Feistel结构相比,可以得到更快速的扩散,但是SPN密码的加解密运算通常不完全相同。

Feistel:分成两部分,一次加密一半

主要参数与特征:分组大小,密钥长度,循环次数,子密钥产生算法复杂度,轮函数F复杂度

结构特性:

优点:

(1)设计容易:F函数不要求可逆,加、解密算法结构相同

(2)强度高:如果F函数是随机的,则连续若干轮复合形成的函数和随机置换是无法区分的。

缺点:

(1)每轮加密时输入有一半没有改变;

(2)左右块的加密处理不能并行实施

Feistel模型至少需要3轮才可以实现完全性。

F函数需要T轮迭代才能实现完全性,则Feistel模型经T+2轮迭代可实现完全性。

F函数的设计准则:

(1)严格雪崩效应准则:输入比特i变化了,输出比特j有1/2可能性变化

(2)比特独立准则:输出比特i,j应当相互独立地变化
在这里插入图片描述

数据加密DES

DES是分组加密算法,数据分组长度位64位,密文分组64位,密钥64位,有效密钥长度为56位(8位用于奇偶校验,密钥空间2的56次方),16轮迭代.解密算法和加密算法相同但子密钥的使用顺序相反

基本操作置换选择,替换【唯一非线性】,循环移位与异或

(1)初始置换IP

(2)E-扩展运算

(3)S盒运算

S1((h1h6), ( h2h3h4h5 ) ),6位输入,4位输出

(4)P置换

算法过程

在这里插入图片描述

在这里插入图片描述

子密钥生成:56分为两组28位的,分别向左循环移1或2位,再合起来进行置换。

安全性分析

(1)S盒的设计准则

(2)56位有效密钥太短

(3)弱密钥和半弱密钥

弱密钥:Ek(Ek(m))=m,则称k为弱密钥;DES中共有4个

半弱密钥:Eka(Ekb(m))=Ekb(Eka(m))=m,则称Ka,Kb为半弱密钥,DES中共有12个

(4)DES算法的互补特性:C=Ek(M),则有-C=-Ek(-M),取补集

在这里插入图片描述

暴力攻击法:2**55次尝试

差分密码分析法:2**47次尝试

线性密码分析法:2**43次尝试

二重DES很难抵挡住中间相遇攻击法【一起从双方的各自起点出发,一端加密,一端解密,然后中间相遇,就破解了】,

分组密码的操作方式

分组加密如何应用于大数据(如文件)加密?

1.电子密码本模式ECB:这种模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。相同的明文块总被加密成相同的密文块,没有误码扩散(一组出错影响其他组)。优点:算法简单,有利于并行计算,且误差不会被传送;缺点:电子编码薄模式用一个密钥加密消息的所有块,如果原消息中重复明文块,则加密消息中的相应密文块也会重复,容易对明文进行主动的攻击。所以,电子编码薄模式适于加密小消息

2.密码块链接模式CBC:CBC 模式的加密首先也是将明文分成固定长度的块,然后将前面一个加密块输出的密文与下一个要加密的明文块进行异或操作,将计算的结果再用密钥进行加密得到密文,有误码扩散。优点:不容易主动攻击,安全性好于ECB,**适合传输长度长的报文,**是SSL、IPSec的标准,小字节时会浪费信道空间。缺点:密文不利于并行计算,容易造成误差传递,且需要初始化向量IV。

在这里插入图片描述

3.CFB密文反馈模式:同样需要一个初始向量,使用移位寄存器,加密后的密文进入移位寄存器,形成一个新的R与k进行异或,**存在误码扩散(**仍有字同步特性,即可以恢复正确),加密效率比前两项低

在这里插入图片描述

4.OFB输出反馈模式:没有误码扩散,输出反馈模式与 CFB 相似,惟一差别是,CFB 中密文填入加密过程下一阶段,而在 OFB 中,初始化向量加密过程的输入(PS(E®异或k),这里的结果代替R)填入加密过程下一阶段。应用时要求一次一密优点:分组密码转化为流模式,隐藏了明文模式,可以及时加密传送小于分组的数据。缺点:密文不利于并行计算,如果一个明文单元损坏,则会影响多个密文单元,且对明文的主动攻击是可能的。

5.CTR计数器模式:CTR模式是一种通过将逐此累加的计数器进行加密来生成密钥流的流密码。CTR模式中,每个分组对应一个逐次累加的计数器,并通过对计数器进行加密来生成密钥流。也就是说,最终的密文分组是通过将计数器得到的比特序列,与明文分组进行XOR而得到的。
在这里插入图片描述
随机访问特性:可以随机的对任意一个密文分组进行解密,对该密文分组的处理与其它密文无关。
高效率:能并行处理,即能对多个分组的加解密同时进行处理,而不必等到前面分组处理完才开始;而且,可以提前进行预处理,这也可以极大的提高处理效率。
可以处理任意长度的数据,而且加解密过程仅涉及计数器的加密运算,不涉及解密运算,因此不用实现解密算法。

6.CSM密文窃取模式:扔掉倒数第二个密文分组的填充字节

IDEA国际加密算法

IDEA加密算法是一个分组长度为64比特的分组密码算法,密钥长度为128比特,由8轮迭代操作实现。每个迭代都由三种函数:mod(216+1)加法、mod(216+1)乘法和逐位异或算法组成。整个算法包括子密钥产生、数据加密过程、数据解密过程三部分。该加密算法规定明文和密文块均为64比特,密钥长度为128比特,加解密相同,只是密钥各异

任意两种运算均不满足分配律与结合律

每一轮都是:轮变换+乘加结构MA

IDEA与DES的比较:

共同点:同属分组密码体制(分组长度也为64比特)

不同点: (1)IDEA密钥长度128位;

(2) IDEA的加解密子密钥不完全相同(但可相互导出, 仍属对称密码体制);

(3) IDEA可用软硬件实现,但倾向于软件实现;

(4) DES为Feistel结构,而IDEA不是

其他加密算法

针对DES的弱点,给出以下解决办法:

(1)对DES进行复合

(2)开辟新的算法

三重DES

DES不是幂等算法,二重DES容易被中间相遇法破解。

三重DES的4种模式:

(1)双密钥DES-EDE2:加密,解密,加密,K1=K3

(2)双密钥DES-EEE2

(3)三密钥DES-EDE3

(4)三密钥DES-EEE3

RC5

对称加密算法,运算速度快,面向字的操作,适用于软件或者硬件实现;能适用于不同字长的处理器;加密的轮数可以变化,密钥长度可以变化。参数是w(字的位数),r(轮数),b(主密钥长度,字节长度),对存储空间要求不高

基本运算:模2**w加法运算,逐比特异或运算,字的循环左移运算

RC6

与大多数加密算法不同,RC6 算法在加密过程中不需要查找表,加之算法中的乘法运算也可以用平方代替,所以该算法对内存的要求很低。这使得 RC6 特别适合在单片机上实现。比
用于软件或者硬件实现;能适用于不同字长的处理器;加密的轮数可以变化,密钥长度可以变化。参数是w(字的位数),r(轮数),b(主密钥长度,字节长度),对存储空间要求不高

基本运算:模2**w加法运算,逐比特异或运算,字的循环左移运算

RC6

与大多数加密算法不同,RC6 算法在加密过程中不需要查找表,加之算法中的乘法运算也可以用平方代替,所以该算法对内存的要求很低。这使得 RC6 特别适合在单片机上实现。比
如 IC 卡,它内部集成的高速缓行,代价高昂,算法所需的内存少,能大大降低制作成本。

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

【0325】分组密码 的相关文章

  • Visual Commonsense R-CNN (CVPR2020)

    这篇文章比较早 但是对于因果介绍的比较详细 很值得学习 代码 https github com Wangt CN VC R CNN 代码花了挺长时间总算跑通了 在 3080 上调真是错误不断 后来换到 2080 又是一顿调才好 这里跑通的主
  • Vue环形进度条

    环形进度条可设置背景颜色 遮罩层 文字 百分值默认保存两位小数 sizeOut 底圈半径 Number 默认值 100 sizeIn里圈半径 Number 默认值 80 size进度条大小 Number 默认值 10 注意 需要满足size
  • 《R语言实战》学习笔记:第三章 图像初阶

    R语言实战 学习笔记 第一章 R语言介绍 R语言实战 学习笔记 第二章 创建数据集 R语言实战 学习笔记 第四章 基本数据管理 R语言实战 学习笔记 第五章 高级数据管理 图像初阶 同时打开多幅图像 方法一 在创建一幅新图形之前打开一个新的
  • 使用预训练好的 DALLE 模型进行 Text-to-Image 生成图像

    使用预训练好的 DALLE 模型进行 Text to Image 任务 Hugging Face 文档 https huggingface co kuprel min dalle 安装库 pip install min dalle 本文使用
  • 钉钉考勤与企业系统对接

    公司最近企业系统要与钉钉考勤打卡数据对接 所以需要拿到钉钉上月员工的考勤打卡数据 配置了spring定时任务 任务类步骤如下 引入钉钉相关JAR包 一 获得tooken 1 需要公司钉钉管理员给开发人员开放考勤权限 2 开发人员登录钉钉开放

随机推荐

  • 一文看懂Linux基础

    文章目录 什么是Linux操作系统 window和linux的对比 快照的拍摄 Linux的文件结构 kali Linux的简单介绍 基础命令 vim命令 文件权限 kali的常见工具 查看命令 1 查看操作 2 删除操作 3 复制操作 4
  • 学完Python,我决定熬夜整理这篇总结...

    前言 学习Python 我决定熬夜整理这篇总结 目录 了解Python Python基础语法 Python数据结构 数值 字符串 列表 元组 字典 集合 Python控制流 if 判断语句 for 循环语句 while 循环语句 break
  • 【无标题】C语言编写一个简单答题系统

    这是蒟蒻写的第一个博客 将就看看吧 首先 我写的是一个填空题答题系统 填空题数目为20 其次 需要随机出题 题目出现顺序要不一致 1 产生随机数 1 20 2 解决运气不好的问题1 18 极少出现19 20 然后 及时反馈正确情况 记录同学
  • TypeScript 自定义数组排序

    TypeScript 自定义数组排序 前言 代码 基本原理 基本类型排序 复杂类型排序 前言 对列表进行排序 根据自定义规则 代码 基本原理 sort使用属性相减 a b 获取一个基本类型 1 0 1 如果小于0则将元素放到前面 如果大于0
  • 《数据处理与知识发现》章节测验复习

    数据处理与知识发现 章节测验 第1章 绪论 章节测验 第2章 数据预处理 章节测验 第3章 数据仓库 章节测验 第4章 关联规则挖掘 章节测验 第5章 聚类分析方法 章节测验 第6章 分类规则挖掘 章节测验 首先我们要明白关联分析 聚类分析
  • Flutter的FittedBox控件

    简介 FittedBox是Flutter中的一个控件 它用于调整其子控件的大小以适应可用空间 它会根据子控件的大小和可用空间的大小 自动进行缩放或拉伸操作 以使子控件恰好填充可用空间 属性 FittedBox的常用属性包括 fit 指定子控
  • 前端例程20211122:盐酸与氢氧化钠溶液中和pH计算工具

    文章目录 前言 功能演示 代码实现 前言 偶然的一个同事的工作需要计算盐酸与氢氧化钠溶液中和滴定过程的pH值 这里稍微对这个计算功能的实现做下记录 功能演示 上图两个溶液体积滑动条变动后单位有误 下面代码中已修正 代码实现
  • 《程序员面试宝典》第6章sizeof和数据对齐

    一 看例子讲sizeof include
  • 半监督目标检测(二)

    目录 Humble Teacher 1 要点 2 Overview 1 监督分支 2 非监督分支 3 图像增广 4 预测阶段 3 Soft Labels and Unsupervised Loss 1 RPN阶段 2 ROI 阶段 4 Ex
  • HJ61 放苹果

    题目 HJ61 放苹果 题解 递归 f m n 表示将m个苹果放在n个盘子中所有的放法 当n gt m时 一定有盘子空着 等效于将m个苹果放到m个盘子中 即f m n f m m 当 n lt m时 没有空盘子 那么每个盘子至少有一个 那么
  • 共享单车数据如何可视化?这篇文章手把手教你

    大家好 本篇文章是我今年立的flag的第5篇打卡文章 如果还不清楚背景的童鞋可以回看我今年1月1日发的这篇文章2021年来了 是时候为新的一年再立几个新的flag了 今天选取的地图是前几天利用数字中国创新大赛提供的共享单车数据做的一个可视化
  • org.hibernate.NonUniqueObjectException:a different object with the same identifier 异常解决方法

    问题 org hibernate NonUniqueObjectException a different object with the same identifier value was already associated with
  • 数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 注意 本文是 数字图像直方图匹配或规定化Histogram Matching Specification 处理 增加了部分问题的进一步解释后的
  • 世界树服务器bug位置,四叶草剧场世界树bug怎么获得 世界树bug神器获取位置图文详解...

    核心提示 四叶草剧场世界树bug怎么获得 在四叶草剧场的游戏中 世界树的爬塔挑战是最近玩家们正在参与的 不少玩家不知道BUG神器在哪一层怎么获得 接下来小编就为大家详细的介绍一下四叶草剧场世界树bug神器的获取位置图文详解吧 四叶草剧场世界
  • Linux使用jdk报错 /lib/ld-linux.so.2: bad ELF interpreter: No such file or direct

    有人说sudo yum install glibc i686可以解决问题 但是我认为不是这个问题 具体原因应该是在64位的机器中要兼容32位的jdk才会有这个问题 最根本的问题应该是jdk安装的版本错误 使用uname a查看linux架构
  • 分支限界---->15-谜问题

    15 谜问题 一 问题描述 在一个分成16格的方形棋盘上放有15块编了号的牌 对于这些牌给定的一种初始排列 要求通过一系列的合法移动将初始排列转换成目标排列 合法移动 每次将一个邻接于空格的牌移动到空格位置 注 并不是所有的初始状态都能变换
  • 单片机三种烧录方式ICP、IAP和ISP详解

    单片机三种烧录方式ICP IAP和ISP详解 目录 单片机三种烧录方式ICP IAP和ISP详解 1 ICP In Circuit Programing 2 ISP In System Programing 3 IAP In applica
  • 如何用idea开发vue

    文章目录 一 建脚手架 二 使用步骤 1 把项目拉入idea 提示 以下是本篇文章正文内容 下面案例可供参考 一 建脚手架 下载node和vue脚手架 C gt node v v10 14 1 C gt npm install g vue
  • Solidworks绘制齿轮过程备注

    1 使用solidworks自带的toolbox绘制齿轮 如果toolbox打开失败 按照以下方法修复一下 https blog csdn net sinat 38295192 article details 105612369 2 too
  • 【0325】分组密码

    分组密码 体制概述 分组密码体制 Block cipher 是在密钥k控制下一次变换一个明文数据块 又称分组 的密码体制 特点 速度快 易于标准化和便于软硬件实现等特点 设计原则和评估 针对安全性的两个基本原则 扩散和混淆 对抗统计分析 扩