密码学专题 密钥生成|分组加密的模式 ECB|CBC|CFB|OFB

密钥生成 

  • 如何安全地生成密钥。即如何生成可信任的密钥,保证用户得到的密钥是安全的, 生成密钥的机器或程序是可信的。
  • 如何生成安全的密钥。安全的密钥没有统一准确的定义,但一般来说是指密钥抗 猜测和抗穷举等针对密钥攻击的能力。涉及密钥长度和密钥强弱的问题。

分组加密

  • 对称加密算法按其加密数据的方式一般来说可以分成两种类型:分组加密和序列加密。
  • 分组加密又称为块加密,是将要处理的数据分成固定的长度,然后在这固定长度的数据上使用密码算法进行计算。
  • 序列加密模式又称为流加密方式,是对要处理的数据按位 (或字节)逐个进行加密处理。

注意事项

  • 算法加密模式的安全性。虽然加密模式不会对密码算法本身的安全性产生影响,但是一个差的算法加密模式可能会增加攻击者攻击成功的机会,甚至提供机会。例如,如果相同的明文加密后总是产生相同的密文,就很容易被攻击者利用。
  • 算法加密模式的容错性。加密的数据通常要经过网络传输,网络传输中出现差错是很可能的,这时候就需要考虑算法的容错性。有些算法会导致错误扩散,其中一位出错 而导致多位甚至多个字节不能正常解密。
  • 算法加密模式的效率。算法加密模式的选择,对加密效率会有影响,一般来说, 要基本保证加密模式的效率不会比算法本身的效率低过多。
  • 算法加密模式的实时性。不同的算法加密模式实时性不同,有的算法可以一边加密一边实时传输和解密,有些则需要等到一个数据块全部接收到了才能进行解密。在不同的应用中,对实时性的要求是不一样的。

常用的分组加密模式有四种,分别是:电子密码本模式 (ECB)、加密分组链接模式 (CBC)、加密反馈模式 (CFB)和输出反馈模式 (OFB)。下面重点介绍这四种加密模式, 对其他的加密模式仅作简单的概括。

电子密码本模式(ECB)

  • 电子密码本模式 (ECB)是最简单的分组加密模式,也是最能体现 “分组”概念的加 密模式。它将加密的数据分成若干组,每组的大小跟加密密钥长度相同然后每组都用相 同的密钥进行加密。比如 DES算法,使用一个64位的密钥,如果采用该模式加密,就是 将要加密的数据分成每组64位的数据,如果最后一组不够64位,那么就补齐为64位, 然后每组数据都采用DES算法的64位密钥进行加密 。 如图所示是电子密码本模式的加密和解密的流程图,图中P0、P1是明文分组,C0、C1是相应的密文分组。

  • 比如对“My name is DragonKing”这句话,就可以8个字符(64位)为一分组,形成图所示的这样的分组,最后一个分组不足8个字符,可以采用其他数据填充补齐。

  • 电子密码本加密模式的每个分组的加密是相互独立的,相互之间没有关系,可以不必按顺序进行,各分组也可以并行进行加密和解密。这在某些应用方式下是非常有用的,比 如数据库加密。如果使用电子密码本模式对数据库中的每个记录进行加密,那么数据库的 存取就会非常方便,每个记录都可以独立进行加密和解密的存取、添加或者删除等操作, 而且可以进行并行的处理以提高速度
  • 电子密码本模式加密的数据,如果密文数据出错了,解密的时候会影响整个明文分组,可能导致整个明文分组不能正确地解密,但是不会影响其他明文分组。电子密码本模式对密文数据的增减是十分敏感的,如果密文数据中插入或丢失了一位数据,那么随后的整个密文序列都将不能正确地解密,这称为同步错误。所以,使用电子密码本模式的时候,必须确保密文分组的完整性。
  • 采用电子密码本模式加密,相同的明文采用相同的密钥加密总是得到相同的密文,对于加密大量数据的密钥来说,这非常容易受到攻击。大量信息的情况下会有很多数据重复,那么如果攻击者知道了一段明文对应的密文,无论那段密文在哪儿出现,他都能解密该密文。更加严重的是,如果电子密码本模式加密的是一种有固定结构的信息,那么攻击者甚至可以不通过破译密钥就能达到自己的目的。

电子密码本模式(ECB)的特点

  •  每次加密的数据长度固定。
  • 各个分组相互独立,可以并行加密和解密。
  • 相同的明文使用相同的密钥总是产生相同的密文。
  • 一个位的错误只对所在的明文块产生影响,但是增加或删除一个位会导致其后整个密文序列没有办法正确解密

加密分组链接模式(CBC)

  • 加密分组链接模式 (CBC)可以解决电子密码本模式(ECB)容易受到分组替换攻击的问题。
  • 加密分组链接模式首先也是将明文分成固定长度的分组,然后将前面一个加密分组输出的密文与下一个要加密的明文分组进行异或操作计算,将计算结果再用密钥进行加密得到密文第一明文分组加密的时候,因为前面没有加密的密文,所以需要一个初始化向量 (IV)。跟电子密码本模式不一样,通过链接关系,使得密文跟明文不再是一一 对应的关系,破解起来更困难,而且克服了只要简单调换密文分组就可能达到目的的攻击。加密分组链接模式的流程如图所示,其中P0、P1是明文分组,C0、C1是密文分组,IV 是初始向量。

  • 加密分组链接模式的过程用数学公式表示如下: 

  • 使用不同的初始向量,相同的明文使用相同的密钥会产生完全不同的密文,这使得攻击者对密文的分析更加困难;而使用相同的初始化向量,相同的明文使用相同 的密钥还是会产生相同的密文,这是我们不愿意看到的结果,所以一般应该避免重复 利用初始向量。 
  • 初始向量在加密分组链接模式中没有任何保密价值,因为除第一个分组外,加密分组链接中其他分组用来跟明文进行异或的数据都是前面输出的密文分组,而这个密文分组显 然是可以在网络上简单获取的,所以,即便你对初始向量进行保密,也仅仅对第一个分组 有一点点意义,而对其他大部分分组来说没有任何意义。
    加密分组链接模式的缺点之一是会造成错误扩散。对于明文错误来说,性质并不是很严重,因为经过加密和解密来说恢复的明文还只是发送错误的地方有错误,不会扩散到别的地方。而且,明文发生错误的可能性较小。 密文发生错误的可能性更大,因为密文要经过有许多不可确定因素的网络的传播
  • 在加密分组链接模式中,如果密文有一位发生了错误,那么其后的一个分组中相应的位会发生错误,该分组的明文不能恢复,但是错误分组的第二个分组之后的分组不会受这个错误 的影响,这称为加密分组链接模式的自恢复功能
  • 跟电子密码本模式一样,加密分组链接模式也不能恢复同步错误。也就是说,如果密文中增加或删除了一位,那么该位以后的所有密文的解密都将难以得到正确的明文结果。 所以使用加密分组链接和电子密码本模式都需要确保分组链接的完整性。
  • 加密分组链接模式虽然对抵抗分组重复攻击和分组替换攻击有效,但是很容易受到干扰性的攻击。比如攻击者可以在密文之后附加一些信息,而接收者没有办法发现这是附加 的信息,虽然可能是乱码,但有时候可能导致其他重大的安全问题。攻击者还可以利用加 密分组链接错误扩散的特点进行破坏性的攻击,比如通过改变一个分组的一位从而控制下 面一个分组相应位的变化,甚至通过删除或增加一位密文数据从而使得明文无法恢复,等 等。此外,如果使用相同的初始化变量和加密密钥加密的信息数据量太大,一样会给攻击 者提供大量的信息,这也是需要注意的。

加密分组链接(CBC)模式特点

  • 每次加密的数据长度固定。
  • 当相同的明文使用相同的密钥和初始向量的时候 CBC模式总是产生相同的密文。
  • 链接操作使得密文分组要依赖当前和以前处理过的明文分组,密文分组顺序不能进行重新排列,也不能进行并行操作。
  • 可以使用不同的初始化向量来避免相同的明文产生相同的密文,能一定程度上抵抗字典攻击等密文分析。
  • 一位发生错误后,会对当前及后一个分组的明文产生错误。增加或删除一个位会导致其后整个密文序列没有办法正确解密。
  • 不能实时解密,必须等到8个字节都接收到之后才能开始解密,否则得不到正确的结果。

加密反馈模式(CFB)

  • 在加密分组链接模式下,必须等整个分组的数据接收完之后才能进行解密,不能实时解密,这在很多网络应用中是不适合的。加密反馈模式 (CFB)正是了为了适应这种要求作的改进。
  • 加密反馈模式通过引入移位寄存器来克服加密分组链接模式不能实时解密的困难。如图所示是带64位移位寄存器的加密反馈模式的加密和解密流程图 。 图 中 C2 、 C3 及 P10等都是一个字节 (8位)的数据,所以能够实现字符的实时加密和解密,不用再等到8个 字节都接收到之后再进行解密。图中是在进行第10个字节数据的加密和解密过程,在该过程中,先从移位寄存器取8个字节的数据 (C2到C9)用密钥进行加密,然后取加密数 据最左边的一个字节跟输入的明文 P10进行异或操作,得到的值作为输出密文 C10,同时 将 C10送入到移位寄存器中。

  • 跟加密分组链接模式一样,加密反馈模式的密文也跟以前所有的明文有关系,具有相关联的关系。在刚开始的时候,移位寄存器也要使用初始向量填充。初始向量同样没有必 要保密,其原因跟加密分组链接模式是一样的。对不同的消息,初始向量应更换,以保证 在使用相同的密钥加密信息的时候不会产生重复的密文,比如可以使用不断增大的索引号 码作为初始向量。
  • 加密反馈模式同样存在错误扩散的问题。明文错误不会有太大的影响,如果明文其中 一位出错了,解密后它也只会影响明文错误的那一位。
  • 但是密文错误影响就会严重得多。在如图所示的加密反馈模式中,如果密文中有 一位发生了错误,那么当前字节的密文及随后8个字节的密文的解密都会受到影响,可能 会导致无法正确解密。因为在这9个字节的解密计算都使用到了该错误的密文。但是在这9个字节之后,密文就能自动恢复到正常解密的状态。 对于同步错误,加密反馈模式同样具有自恢复的功能,如果密文数据中增加或删除一位,在这一位进入到寄存器的时候,会影响其所在的8个字节,然后移出寄存器,密文就 恢复了正确解密。
  • 基于加密反馈模式的错误扩散性能,攻击者一样可以通过更改密文某些位使得密文解 密成另外一些消息。

加密反馈模式(CFB)特点

  • 每次加密的数据不超过64位。
  • 当使用相同的密钥和初始向量的时候,相同明文使用 CFB模式加密输出相同的密文。
  • 链接操作的方法使得密文数据依赖当前和以前所有的数据,所以数据都应该按顺序组织在一起,不能进行并行计算操作。
  • 可以使用不同的初始变量使相同的明文产生不同的密文,防止字典攻击等密文分析行为。
  • CFB模式的强度依赖于密钥的长度,强度最大的情况是每次加密的数据长度和密钥长度相同的情况。
  • 当每次加密的数据长度的取值比较小的时候,相同的明文一般需要更多的循环来完成加密,这可能会导致过大的开销。
  • 每次加密数据的位数应该为8的整数倍。
  • 一旦某位数据出错,会影响到目前和其后一些字节的加密数据的正确解密,但是对同步错误具有自恢复功能。
  • 数据可以实时传输,每接收到一位都可以随即进行解密。

 输出反馈模式(OFB)

  • 输出反馈模式也需要使用初始向量对寄存器进行初始化,初始化向量也不需要保密。
  • 输出反馈模式不存在错误扩散的问题,如果密文的一位发生了错误,那么只会影响其对应明文的一个位,而不会影响别的位。对于同步错误,输出反馈模式没有自恢 复功能,所以一旦增加或删除了密文的一位,该位后面的所有密文都将不能正确 解密。
  • 输出反馈模式的密文与前后数据的相关性小,所以安全性相对于加密分组链接模式和 加密反馈模式比较弱。输出反馈模式使用密文序列跟明文异或产生明文,而密文序列由密 钥本身产生,这肯定具有周期性,在使用相同密钥加密的数据到达一定数量时,会产生重 复,这就会大大降低算法的安全性。

特点

  • 每次加密的数据不超过64位。
  • 当使用相同的密钥和初始向量的时候,相同明文使用 OFB模式加密输出相同的密文。要注意的是,在 OFB模式下相同的密钥和初始向量产生相同的密钥流,所以,为了 安全原因,一个特定的初始向量对一个给定的密钥应该只使用一次。
  • 因为没有使用链接操作,数据相关性小,所以使得 OFB模式更容易受到攻击。
  • 可以使用不同的初始变量产生不同的密钥流,从而使得相同的明文使用不同密钥 产生不同的密文。
  • 当每次加密的数据长度取值比较小的时候,相同的明文一般需要更多的循环来完 成加密,这可能会导致过大的开销。
  • 每次加密数据的位数应该为8的整数倍。 OFB模式不会进行错误传播,某位密文发生错误,只会影响该位对应的明文,而不会影响别的位。 OFB模式不是自同步的,如果加密和解密两个操作失去同步,那么系统需要重新初始化。
  • 每次重新同步的时候,应该使用不同的初始向量。这样可以避免产生相同的密文,从而避免 “已知明文”攻击。

  • 在OFB模式中,XOR所需要的比特序列(密钥流)可以事先通过密码算法生成,和明文分组无关。只要提前准备好所需的密钥流,则在实际从明文生成密文的过程中,就完全不需要动用密码算法了。只要将明文与密钥流进行XOR就可以了。和AES等密码算法相比,XOR运算的速度是非常快的。这就意味着只要提前准备好密钥流就可以快速完成加密。换个角度来看,生成密钥流的操作和进行XOR运算的操作是可以并行的。 

三重分组加密模式

  • 上述三种方式的安全性限定于分组长度,比如 DES算法,密钥长度一般来说就是64位,容易受到穷举 攻击

  • OpenSSL常用的有三重电子密码本模式 (3ECB)和三重加密分组链接模式 (3CBC)。

  • 三重分组加密模式使用了不止一个密钥,对明文分组进行了基于基本分组加密模式的 加密、解密和加密操作。目前来说,有两种应用方式:一种是使用两个密钥,即第一个密 钥和第三个密钥相同;还有一种就是使用三个不同的密钥。图38所示是使用两个密钥的 三重分组加密模式的加密和解密流程图;图39所示是使用了三个不同密钥的三重分组加 密模式的加密和解密流程图。

三重加密分组模式特点

  • 加密过程为使用 K1加密,然后使用 K2解密,最后使用 K3加密完成加密过程。 加密过程使用了电子密码本模式、加密分组链接模式等其他基本分组加密模式,
  • 但是密钥增加到了168位,虽然目前理论上可以使得有效密钥长度降到112位,相对于 56位的密钥来说,安全性还是得到了很大的提高。
  • 如果前两个密钥是相同的,那么就相当于使用一个密钥加密了一次。
  • 如果第一个和第三个密钥是相同的,那么密钥长度事实上是112位,有些攻击方法可以使得有效密钥的长度降为比56位稍多的长度,但需要很大的内存空间。 如果三个密钥都是相同的,那么就跟普通的分组加密模式效果相同了。
  • 三重分组加密模式的基本特点跟其使用的基本分组加密模式特点基本一致。

其他分组加密模式

计数器模式:

  • 在输出反馈模式中,移位寄存器的输入是从加密输出分组中最左端的值取出的。计数 器模式跟这种模式不同的是移位寄存器的输出是一个计数器,每一个分组完成加密后,计数器要增加某一个常数。计数器模式跟输出反馈模式一样没有错误扩散的特点,但是也同 样没有同步错误恢复功能。

分组链接模式

  • 分组链接模式将分组密码算法的输入与前面所有密文分组的异或值相异或。分组链接模式也需要一个初始向量,具有密文错误扩散的性质。

其他

  • 还有很多其他的分组加密模式,比如扩散密码分组链接模式、带校验和的密码分组链 接,等等,其基本原理跟前面介绍的分组加密模式相似

参考链接:

  • 分组密码的加密模式(CFB,OFB)_lkw23333的博客-CSDN博客
  • 加密算法分组4-OFB 输出反馈模式 – OKWEEX

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

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

相关文章

excel高级筛选怎么用_Excel表格中高级筛选的优点以及常用方法介绍

在Excel表格中普通的数据筛选只能满足一些基本的筛选要求,这篇文章为朋友们总结一下高级筛选的优点以及常用方法。一.与普通筛选相比,高级筛选可以使用比较运算符。在下图中要筛选性别为男并且评分大于90的人员。如果使用普通筛选需要一个个的勾选成绩大…

STL源码剖析 第二次温习 细节审核

临时对象的产生 临时对象也叫做 无名对象,(使用pass by value的方式会引发copy的操作,于是产生一个临时的对象),造成效率的负担,但是可以可以制造一些临时对象在型别的后面 直接加上() 并可以指定初始数值,相当于调用…

java 彩票游戏

题目 Math.random()获取随机数 Math.random()返回的是一个[0.0,1.0)的doule类型的数 所以,获取0-9:(int)Math.random()*10–> [0,10) 获取0-10:(int)Math.random()*101–> [0,11) 获取10-99:(int)Math.random()9010–> […

python异常处理_Python入门 断言与异常处理

一、断言断言,可以理解为判断是否断开的预言。assert 表达式 , 描述表达式为我们的预期结果,当表达式的结果为False时,抛出 AssertionError 异常,如无异常捕获程序遇到异常时直接结束运行。反之,表达式结果为True 程序…

百度关键词排名查询源码_章丘百度霸屏总部,关键词排名腾沃云

上海保沃腾沃云为您详细解读URiIr章丘百度霸屏总部的相关知识与详情,做网站SEO优化文章内容优化效果已经十分明显。内容的量量关于网站的整体量量很重要。通过关键字阐发,陈某们晓得需要环绕关键字编写网页。使您的内容的重要根底是您对网页筹算描述的卖…

密码学专题 数据填充的方式|序列加密的方式

电子密码本模式和加密分组链接模式的分组算法都要求加密输入的分组是固定长度 的,但是大多数输入明文可能都不是分组长度的整数倍,也就是说,最后一个分组一般来 说是不足一个分组长度的。为了使分组加密算法能够正常工作,通常使用…

win10此电脑不见了_教程 | win10总提示“你要允许此应用对电脑的修改吗”,如何关闭?...

在使用电脑的时候,你是否曾遇到过这样的情况,点击打开软件的时候,系统总是提示我们“你要允许此应用对你的设备进行修改吗?”难道是软件中病毒了吗?,这其实上并没有什么用处,只是系统无法判断软…

密码学专题 加密模式的选择|传输数据加密

分组加密模式和序列加密模式。它们之间最大的区 别在于分组加密模式每次对一组数据进行加密运算处理,而序列加密模式则逐位对数据进 行加密运算处理。事实上,在实际设计应用的算法中,并没有那么严格的区别,它们有可能是相互结合的…

微信公众号数据2019_2019年9月原创公众号排行榜数据报告出炉

西瓜数据发布 2019 年 9 月原创公众号排行榜,分别从西瓜指数、原创文章占比、周期内公众号发文次数、发文篇数、总阅读数、头条平均阅读数等方面展示公众号数据。榜单说明1、涉及榜单本期月榜截取 ①财经、②教育、③娱乐、④科技、⑤体育、⑥游戏、⑦文化、⑧美食、…

密码学专题 OpenSSL专题

OpenSSL总体架构 软件包分为三个主要的功能部分:密码算法库 、 SSL协议库及应用程序 MacOS,MS,OS/2及 VMS这几个目录,包含了在不同的 平台编译时的环境变量配置文件,在安装编译完成之后,这几个目录就没有作…

java 华氏温度转换为摄氏温度

题目 小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。 它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。 公式:华氏温度(摄氏温度-32)/1.8 M…

hs控什么意思_凡尔赛文学 到底是什么?

点击蓝字关注我们XIE XIE NI DE XI HUAN|| 动漫 情头 耽美 闺蜜 男女头 句子控 壁纸 ||左句 凡尔赛文学野象:老是有人提知不知道凡尔赛文学,说实话我不太清楚网络时下流行的梗,也没有兴趣参与,我还是比较喜欢欧洲古典文学和后现…

密码学专题 openssl编译和安装

Configure 脚本文件 使得OpenSSL可以适应多种不同的系统平台和多达几十种不同的编译器。Configure指令还可以使OpenSSL在编译的时候具备组件的选择功能,比如可以选择支持或者不支持某种算法或者协议等,这使得OpenSSL具有很大的灵活性,比如在…

Python学习12 文件的读写

目标 文件的打开和关闭 mode缺省情况下表示只读r 文件的路径 前面加个r’,代表其中的转义字符不起作用 文件的打开方式 案例:实现文件拷贝的功能 将某一文件夹下的某一文件 保存在当前文件 所在目录。 import os #读取文件1 path./file.txt fileopen(path,…

密码学专题 openssl的基本概念

配置文件 配置文件是OpenSSL的一个基础结构组件,OpenSSL使用一组称为OpenSSLCONF的函数来读取OpenSSL配置文件的信息。OpenSSL提供的主配置文件是opensl.cnf,它集成了OpenSSL所要使用的配置文件选项的大部分内容。此外,OpenSSL还提供了其他一…

该工程中的宏被禁止_建筑劳务分包都能承担什么工程

来源:找法网建筑工程的承包单位,也就是总承包单位可以将部分建造工程分包给具有资质的施工单位,这是法律所允许的,但是禁止将建造工程进行转包。一、建筑劳务分包都能承担什么工程建筑劳务分包能承担什么工程要看分包单位的资质&a…

matlab用辛普森公式求积分_积分近似计算之辛普森公式

对于积分区间[a, b],若则成立辛普森公式辛普森公式可看作是改良的梯形公式。梯形公式是以直线逼近实际曲线,而辛普森公式则以二次曲线(即抛物线)逼近。以二次曲线逼近实际曲线根据辛普森公式可得各积分小区间内的积分值如下式所示:其中于是&a…

密码学专题 文件编码格式

OpenSSL中虽然使用PEM作为基本的文件编码格式,但是,由于不同的对象其封装的标准格式不太一样,所以经常会导致读者产生迷惑。此外,OpenSSL也支持DER编码和过时的Netscape编码格式(NET)OpenSSL的编码是基于ASN.1标准的,A…

echarts 折线图 设置y轴最小刻度_【硬货】vue全家桶+Echarts+百度地图,搭建数据可视化系统...

作者丨夙言来源丨前端大牛爱好者(Web-2017)https://segmentfault.com/a/1190000018993981本文章篇幅略长,内容有点多,大佬可根据目录选择性查阅,新人可一步步来阅读。1、 前言1.1 业务场景突然接到产品说要做一个数据监控的系统。有线图、柱状…

密码学专题 文本数据库

应用概述 文本数据库是跟OpenSSL的CA应用程序紧密结合在一起的,它以文本的方式记录CA已经签发的证书的状态和摘要信息。这些状态信息可以用于跟证书库相关的一些操作,比如使用ca指令生成CRL主要就是读取这个文本数据库的信息作为参考。文本数据库就是普…