当前位置:首页 » 密码管理 » 分组密码加密

分组密码加密

发布时间: 2023-01-17 15:27:24

A. 04.现代常见分组加密算法

1.Triple DES

2.IDEA

3.RC6

4.RC6

5.ASE

其实就是有3个密钥k1,k2,k3,如果m表示明文,C表示密文,他们是这样操作的:

DES1(m)=>C1

DES2(C1)=>C2

DES3(C3)=>C3

DES密钥太短是其短板,3DES密钥长度为k1+k2+k3 = 56*3 = 168bit

既然都Triple自然就有double,为什么不用Double DES呢?

我们先来看下double des:

首先根据DESC密钥太短的特点,的确是有了double desc,可用中间相遇攻击破解(老师坑爹没讲什么是中间相遇攻击,日后补上),经过加密有2^64个可能的密文,密钥长度为112bit(56+56),所以选择密钥的可能性达到2^112,于是对给定一个明文P加密成密文有2^112/2^64 = 2^48种可能,对于给定两个明文密文对,虚警率降为2^(46-64)=2^-16,用中间相遇攻击大概可用2^57 可暴力破解

那么如何解决中间相遇攻击呢?于是设计出了Triple des,它一共有四种模式:

1.DES-EEE3:3个不同的密钥,顺序用三次加密算法

2.DES-EDE3:3个不同的密钥, 加密-解密-加密

3.DES-EEE2:两个不同的密钥,k1,k2,k1,依次k1加密,k2加密,k1加密

4.DES-EDE2:两个不同的密钥,k1,k2,k1,依次k1加密,k2解密,k1加密

这里我们着重介绍第四种,DES-EDE2

同DES相比有如下特点:

1.3DES安全性高,密钥长度大于DES

2.3DES可抵抗中间相遇攻击

3.可向下兼容,我们设k2=k1,则密钥均为k1,上图中A过程加密后在B过程解密,最后在C过程又加密,相当于仅用k1加密一次,兼容了DES,解密同理

4.相比于DES效率低些

要求:1.效率比3DES高

            2.至少和3DES一样安全,数据分组长度128bit

它有如下特点:

1.不属于Feistel结构,属于SP网络

2.加密,解密相似但不对称

3.支持128/32=Nb数据块大小

4.支持128/192/256(/32=Nk)密钥长度

5.结构简单速度快

什么是Feistel结构?

    Feistel 的优点在于:由于它是对称的密码结构,所以对信息的加密和解密的过程就极为相似,甚至完全一样。这就使得在实施的过程中,对编码量和线路传输的要求就减少了几乎一半

什么是SP网络结构?

    在这种密码的每一轮中,轮输入首先被一个由子密钥控制的可逆函数S作用,然后再对所得结果用置换(或可逆线性变换)P作用,S和P分别被称为混乱层和扩散层,主要起混乱和扩散作用

通过置换和替换迭代加密(最后一轮没有列混淆)

B. 分组密码DES

DES是分组密码,分组密码将消息进行等长分组,使用同一密钥对每个分组进行加密。

1.给定一个明文m,首先通过一个固定的初始置换ip得到m0,然后将m0分为左右两部分,即m0=L0+R0,分别为m0的左右两部分,均为32位。ip置换的作用是使打乱原来的顺序。

2.使用密钥对R0和L0进行16轮迭代运算,运算规则:

3.DES的核心是非线性函数f,函数的输入有两个变量,一个是32bit的Ri-1,另一个是48bit的ki-1,输出的结果为32bit。

5.将上步得到的8个6bit的串,分别作为S盒的输入,每个S盒都将6bit的消息映射成一个4bit的消息,X1X6转换成十进制,对应表中的行号,X2X3X4X5转换成十进制,对应于表中的列号,通过对比S盒返回一个数字,将数字转换为四个二进制表示的数。

6.运行完8个S盒后,返回32bit的串,再将这32bit使用P置换,即可得到f函数的输出。
7.最后一轮迭代,左右两个32bit并不叫唤,再对R16L16进行ip逆置换,即可得到密文c。

C. 分组密码加密模式选择有哪些

分组密码工作模式的应用背景:多次使用相同的密钥对多个分组加密,会引发许多安全问题。为了应对不同场合,因而需要开发出不同的工作模式来增强密码算法的安全性。ECB特别适合数据较少的情况,对于很长的信息或者具有特定结构的信息,其大量重复的信息或固定的字符开头将给密码分析者提供大量的已知明密文对。若明文不是完整的分组,ECB需要进行填充。CBC(Cipher Block Chaining)由于加密算法的每次输入和本明文组没有固定的关系,因此就算有重复的明文组,加密后也看不出来了。为了配合算法的需要,有一个初始向量(IV)。与ECB一样有填充机制以保证完整的分组。CFB(Cipher Feedback)和OFB,CTR模式一样,均可将分组密码当做流密码(实际是将分组大小任意缩减)使用。

D. 关于分组密码CBC模式与CTR模式的对比

在对称分组密码体制中 CBC模式(密文分组链接模式) CTR模式(计数器模式) 是安全性最高且最常用的两种模式,在这两种模式中前一分组会以不同的形式影响下一分组的加密过程,因此这两种模式的安全性相对较高。

在项目研发过程中,需求是要在嵌入式节点间实现实时安全通信,而CTR模式能够支持并行加解密过程计算,因而 在项目中选择CTR模式的SM4对称加密算法。

以下对于分组密码中CBC模式以及CTR模式的原理进行简单介绍:

CBC模式的全称是Cipher Block Chaining模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样相互连接在一起。首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。 注:对于第一个分组需要构造一个长度为分组长度的初始向量IV。

1)能够隐蔽明文的数据模式,相同的明文对应的密文一般是不同的;

2)无法单独对中间的明文分组进行加密。例如,如果要生成密文分组3,必须按序生成密文分组1和密文分组2。

CTR模式全称counter模式(计数器模式)。CTR模式通过对逐次累加的计数器加密来生成密钥分组与明文分组异或产生密文分组。

CTR模式的解密过程将明文分组与密文分组位置调换即可。

从原理图中可以看出:

1)能够隐蔽明文的数据模式,相同的明文对应的密文一般是不同的;

2)CTR模式中可以以任意顺序对分组进行加密和解密,能够以任意顺序处理分组,意味着能够实现并行计算。使用并行计算,CTR模式的加解密是非常快的。

E. 分组密码的算法要求

分组密码算法实际上就是密钥控制下,通过某个置换来实现对明文分组的加密变换。为了保证密码算法的安全强度,对密码算法的要求如下。 加密速度慢,错误扩散和传播。
分组密码将定长的明文块转换成等长的密文,这一过程在秘钥的控制之下。使用逆向变换和同一密钥来实现解密。对于当前的许多分组密码,分组大小是 64 位,但这很可能会增加。
明文消息通常要比特定的分组大小长得多,而且使用不同的技术或操作方式。这样的方式示例有:电子编码本(ECB)、密码分组链接(CBC)或密码反馈(CFB)。ECB 使用同一个密钥简单地将每个明文块一个接一个地进行加密;在 CBC 方式中,每个明文块在加密前先与前一密文块进行“异或”运算,从而增加了复杂程度,可以使某些攻击更难以实施。 “输出反馈”方式(OFB)类似 CBC 方式,但是进行“异或”的量是独立生成的。 CBC 受到广泛使用,例如在 DES(qv)实现中,而且在有关密码术的技术性方面的相应书籍中深入讨论了各种方式。请注意:您自己建立的 密码系统的普遍弱点就是以简单的形式来使用某些公开的算法,而不是以提供了额外保护的特定方式使用。
迭代的分组密码是那些其加密过程有多次循环的密码,因此提高了安全性。在每个循环中,可以通过使用特殊的函数从初始秘钥派生出的子密钥来应用适当的变换。该附加的计算需求必然会影响可以管理加密的速度,因此在安全性需要和执行速度之间存在着一种平衡。天下没有免费的午餐,密码术也是如此;与其它地方一样,应用适当方法的技巧中有一部分是源于对需要进行的权衡以及它们与需求平衡的关系如何的理解。
分组密码包括DES、IDEA、SAFER、Blowfish和 Skipjack — 最后一个是“美国国家安全局(US National Security Agency,NSA)”限制器芯片中使用的算法。

F. 分组密码的五种工作模式

常见的分组密码工作模式有ECB、CBC、CFB、OFB、CTR五种,下面通过流程图分别展示了5大模式的分组密码工作加解密的流程。

ECB(Electronic Codebook, 电子密码本)模式是最简单的加密模式,明文消息被分成固定大小的块(分组),并且每个块被单独加密。
每个块的加密和解密都是独立的,且使用相同的方法进行加密,所以可以进行并行计算,但是这种方法一旦有一个块被破解,使用相同的方法可以解密所有的明文数据,安全性比较差。
适用于数据较少的情形,加密前需要把明文数据填充到块大小的整倍数。

CBC(Cipher Block Chaining, 密码块链)模式中每一个分组要先和前一个分组加密后的数据进行XOR异或操作,然后再进行加密。
这样每个密文块依赖该块之前的所有明文块,为了保持每条消息都具有唯一性,第一个数据块进行加密之前需要用初始化向量IV进行异或操作。
CBC模式是一种最常用的加密模式,它主要缺点是加密是连续的,不能并行处理,并且与ECB一样消息块必须填充到块大小的整倍数。

CFB(Cipher Feedback, 密码反馈)模式和CBC模式比较相似,前一个分组的密文加密后和当前分组的明文XOR异或操作生成当前分组的密文。CFB模式的解密和CBC模式的加密在流程上其实是非常相似的。

OFB(Output Feedback, 输出反馈)模式将分组密码转换为同步流密码,也就是说可以根据明文长度先独立生成相应长度的流密码。通过流程图可以看出,OFB和CFB非常相似,CFB是前一个分组的密文加密后XOR当前分组明文,OFB是前一个分组与前一个明文块异或之前的流密码XOR当前分组明文。由于异或操作的对称性,OFB模式的解密和加密完全一样的流程。

CTR(Counter, 计数器)模式与OFB模式一样,计数器模式将分组密码转换为流密码。它通过加密“计数器”的连续值来产生下一个密钥流块,

转自 https://blog.csdn.net/shaosunrise/article/details/80035297

G. des加密算法

des加密算法如下:

一、DES加密算法简介

DES(Data Encryption Standard)是目前最为流行的加密算法之一。DES是对称的,也就是说它使用同一个密钥来加密和解密数据。

DES还是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。

从本质上来说,DES的安全性依赖于虚假表象,从密码学的术语来讲就是依赖于“混乱和扩散”的原则。混乱的目的是为隐藏任何明文同密文、或者密钥之间的关系,而扩散的目的是使明文中的有效位和密钥一起组成尽可能多的密文。两者结合到一起就使得安全性变得相对较高。

DES算法具体通过对明文进行一系列的排列和替换操作来将其加密。过程的关键就是从给定的初始密钥中得到16个子密钥的函数。要加密一组明文,每个子密钥按照顺序(1-16)以一系列的位操作施加于数据上,每个子密钥一次,一共重复16次。每一次迭代称之为一轮。要对密文进行解密可以采用同样的步骤,只是子密钥是按照逆向的顺序(16-1)对密文进行处理。

H. 密码技术(四、二)之分组模式(CBC模式)

 CBC模式是指将前一个密文分组与当前明文分组的内容混合起来进行加密,这样就可以避免ECB模式的弱点。
 CBC模式的全称Cipher Block Chaining 模式(密文分组组链接模式),之所以叫这个名字是因为密文分组是像链条一样相互连接在一起。
 在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。

ECB模式 和 CBC模式比较

 当加密第一个明文分组是,由于不存在“前一个密文分组”,因此需要事先准备一个长度为一个分组的比特序列来替代“前一个密文分组”,这个比特序列称为 初始化向量 ,通常缩写为IV。每次加密时都会随机产生一个不同的比特序列来作为初始化向量。

 明文分组在加密之前一定会与“前一个密文分组”进行XOR运算,因此即便明文分组1和2的值是相等的,密文分组1和2的值也不一定是相等的。这样一来,ECB模式的缺陷在CBC模式中就不存在了。
 在CBC模式找那个,我们无法单独对一个中间的明文分组进行加密。例如,如果要生成密文分组3,则至少需要凑齐明文分组1、2、3才行。
 假设CBC模式加密的密文分组中有一个分组损坏了。在这种情况下,只要密文分组的长度没有发生编号,则解密时,最多只会影响2个分组受到数据损坏的影响。
 假设CBC模式的密文分组中有一些比特缺失了,那么此时即便只缺失了1比特,也会导致密文分组的长度发生变化,此后的分组发生错位,这样一来,缺失比特的位置之后的密文分组也就全部无法解密了。

 假设主动攻击者Mallory的目的是通过修改密文来操纵解密后的明文。如果Mallory能够对初始化向量中的任意比特进行反转,则明文分组中相应的比特也会被反转。这是因为在CBC模式的解密过程中,第一个明文分组会和初始化向量进行XOR运算。

这样,Mallory 就可以对初始化向量进行攻击,但是想要对密文分组也进行同样的攻击就非常困难了。

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

 初始化向量必须使用不可预测的随机数。然后在SSL/TSL1.0的版本协议中,初始向量并没有使用不可预测的随机数,而是使用了上一次CBC模式加密时的最后一个分组。为了防御攻击者对此进行攻击,TSL1.1以上的版本中改为了必须显式得传送初始化向量。

 确保互联网安全的通信协议之一SSL/TSL,就是使用CBC模式来确保通信的机密性的,如使用CBC模式三重DES的3DES_EDE_CBC以及CBC模式256比特AES的AES_256_CBC等。

分组密码中海油一种模式叫作CTS模式(Cipher Text Stealing模式)。在分组密码中,当明文长度不能被分组长度整除时,最后一个分组就需要进行填充。CTS模式是使用最后一个分组的其哪一个密文分组数据来讲信息填充的,它通常和ECB模式以及CBC模式配合使用。根据最后一个分组的发送顺序不同,CTS模式有几种不同的变体(CBC-CS1、CBC-CS2、CBC-CS3)。

该系列的主要内容来自《图解密码技术第三版》
我只是知识的搬运工
文章中的插图来源于原着

I. 分组密码加密模式选择有哪些

分组密码工作模式的应用背景:多次使用相同的密钥对多个分组加密,会引发许多安全问题。为了应对不同场合,因而需要开发出不同的工作模式来增强密码算法的安全性。ECB特别适合数据较少的情况,对于很长的信息或者具有特定结构的信息,其大量重复的信息或固定的字符开头将给密码分析者提供大量的已知明密文对。若明文不是完整的分组,ECB需要进行填充。CBC(Cipher Block Chaining)由于加密算法的每次输入和本明文组没有固定的关系,因此就算有重复的明文组,加密后也看不出来了。为了配合算法的需要,有一个初始向量(IV)。与ECB一样有填充机制以保证完整的分组。CFB(Cipher Feedback)和OFB,CTR模式一样,均可将分组密码当做流密码(实际是将分组大小任意缩减)使用。

J. 请简述什么是序列密码与分组密码,它们的区别是什么

序列密码(Stream Cipher):
又称流密码,将明文消息按字符逐位进行加密。
分组密码(Block Cipher):
在分组密码中将明文消息分组(每组有多个字符),逐组进行加密。

热点内容
防服务器如何攻击 发布:2025-08-25 10:50:11 浏览:532
sql返回参数的存储过程 发布:2025-08-25 10:47:15 浏览:846
c语言手机版软件 发布:2025-08-25 10:45:00 浏览:538
新锐源码 发布:2025-08-25 10:23:26 浏览:509
电脑配置计算资源有哪些 发布:2025-08-25 09:57:59 浏览:469
samsung手机忘记密码如何开启 发布:2025-08-25 09:57:18 浏览:798
什么是计算法则 发布:2025-08-25 09:57:17 浏览:254
安卓怎么查看刷新率 发布:2025-08-25 09:47:24 浏览:628
apk安卓软件是什么意思 发布:2025-08-25 09:47:13 浏览:322
80多岁编程 发布:2025-08-25 09:47:10 浏览:742