分组密码算法
- 格式:doc
- 大小:152.00 KB
- 文档页数:5
密码学之分组密码算法密码学之分组密码算法简介分组密码算法(Block Cipher Algorithm)是将输⼊数据划分成固定长度的组进⾏加密和解密的⼀类对称密码算法。
其安全性主要以来于密钥,通信双⽅使⽤相同的密钥加密和解密。
其优势有速度快,易于标准化和便于软硬件实现等特点。
下标集:₀₁₂₃₄₅₆₇₈₉⁻ ¹ ₋DES加密算法DES简介于1977年公布的第⼀个被⼴泛应⽤的商⽤数据加密算法,在抵抗了⼆⼗余年的密码分析后,其安全性已⽆法得到保障。
所以在1998年12⽉以后就不再使⽤DES加密算法。
但是其衍⽣的三重DES加密算法⽬前还有其应⽤场景。
加密过程算法总览DES加密算法就如下图所⽰。
其输⼊为64位(bit)的明⽂,使⽤56位(bit)的密钥,但是附加了8位奇偶校验位(位于8,16,...,64位)组合成64位密钥。
在64位密钥的控制下,最终产⽣了64(bit)的密⽂。
在下图中X=X₁X₂X₃...X₆₄即为输⼊明⽂,在经过初始转换IP的换位处理后,得到⼀个乱序的明⽂组,并将其分为L₀和R₀两部分,每部分各32位。
⽽K₁K₂...K₁₆则是⽣成由初始密钥⽣成的轮密钥,长度有48位。
其次进⾏如下图所⽰与密钥有关的16轮迭代变换。
对R₀在进⾏⼦密钥K₁控制下的f变换,其得到的结果与L₀作逐位异或后,作为下⼀轮的R₁,⽽R₀则作为下⼀轮的L₁。
在经过16轮如上步骤,最后经过逆初始置换P⁻¹处理后得到密⽂Y=Y₁Y₂Y₃...Y₆₄初始置换IP与逆初始置换IP⁻¹IP操作是对原明⽂的位次顺序进⾏打乱,⽽逆初始置换IP⁻¹是IP操作的⼀个逆操作,其⽬的是为了撤销之前的初始置换操作。
其实这两种操作对密码⽅⾯的作⽤并不⼤。
其具体操作正如表格中所⽰,在如下表格中依次填⼊该顺序位次下的bit位,最终组成新的位次顺序。
如第⼀位的的内容即为原明⽂中第58位处的内容。
轮密钥的产⽣初始密钥K在经过选择置换PC_1后同样分为两个部分C₀和D₀,每部分各28位(bit),该选择置换实际是在除去了奇偶校验位的置换。
Rijndael密码算法⼀ 什么是RijndaelRijndael是由⽐利时密码学家设计的分组密码算法,于2000年被选为新⼀代的标准密码算法——AES。
今后会有越来越多的密码软件⽀持这种算法。
Rijndael的分组长度和密钥长度可以分别以32⽐特为单位在128⽐特和256⽐特的范围内进⾏选择。
不过在AES的规格中,分组长度固定为128⽐特,密钥长度只有128、192和256⽐特三种。
⼆ Rijndael的加密和解密Rijndael算法也是由多轮构成的,其中每⼀轮分为SubBytes、ShiftRows、MixColumns和AddRoundKey4个步骤。
它使⽤的是SPN结构。
1 SubBytesRijndael的输⼊分组为128⽐特,也就是16个字节。
⾸先,需要逐个字节对16字节的输⼊数据进⾏SubBytes处理。
所谓SubBytes处理,就是以每个字节的值(0-255的任意值)为索引,从⼀张拥有256个值的替换表中查找出对应值的处理。
也就是说,将⼀个字节的值替换成另外⼀个字节的值。
⽤图表⽰如下:2 ShiftRows以4个字节为单位的⾏(row)按照⼀定的规则向左平移,且每⼀⾏平移的字节数是不同的。
下图是对其中⼀⾏进⾏处理的情形。
3 MixColumns对⼀个4字节的值进⾏矩阵运算,将其变为另外⼀个4字节值,下图是对其中⼀列进⾏处理的情形:4 AddRoundKey对MixColumns的输出与轮密钥进⾏XOR,即进⾏AddRoundKey处理,下图展⽰了对1个字节进⾏处理的情形。
到此1轮迭代就结束了。
实际上,在Rijndael中需要重复10到14轮计算。
Rijndael的加密过程,每⼀轮进⾏的处理为:SubBytes->ShiftRows->MixColumns->AddRoundKeyRijndael的解密过程,顺序相关:AddRoundKey-> InvMixColumns-> InvShiftRows ->InvSubBytes其中AddRoundKey是与轮密钥进⾏XOR运算,这⼀步在加密和解密时完全相同的。
分组密码加密算法的常见算法结构随着计算机技术的不断发展,信息安全问题也越来越受到关注。
在信息传输过程中,数据的加密是保障信息安全的重要手段之一。
分组密码加密算法是一种常见的加密算法,它将明文数据分成若干个固定长度的分组,通过对每个分组进行加密来实现整个消息的加密。
本文将介绍分组密码加密算法的常见算法结构,以及它们的优缺点和应用场景。
1. 基本结构分组密码加密算法的基本结构由两个部分组成:明文分组和密文分组。
明文分组是指明文数据被分割成固定长度的块,每个块长度通常为64位或128位。
密文分组是指加密后的明文分组,长度与明文分组一致。
加密算法的核心是将明文分组转换为密文分组,这个过程称为加密。
解密的过程是将密文分组转换为明文分组。
分组密码加密算法的常见算法结构包括:ECB、CBC、CFB和OFB。
这些算法结构在加密和解密过程中采用不同的方式来处理明文和密文分组。
2. ECB模式ECB(Electronic Codebook)模式是最简单的分组密码加密算法结构,它将每个明文分组单独加密,得到对应的密文分组。
每个明文分组之间是独立的,因此ECB模式无法处理明文分组之间的关系。
这种模式的缺点是,它容易受到重放攻击,即攻击者可以拦截并重复发送相同的密文分组,从而获得明文数据。
ECB模式的优点是加密和解密过程简单,可以并行处理多个分组。
它适用于每个明文分组的安全性要求不高的情况,例如对称密钥的传输和存储。
3. CBC模式CBC(Cipher Block Chaining)模式是一种常见的分组密码加密算法结构,它采用前一个密文分组来加密当前的明文分组。
具体地,在加密过程中,首先将前一个密文分组和当前明文分组进行异或运算,得到一个新的数据块,然后对这个新数据块进行加密。
解密过程与加密过程相反,将密文分组解密后再与前一个密文分组进行异或运算,得到对应的明文分组。
CBC模式的优点是可以处理明文分组之间的关系,提高安全性。
SM4算法、AES算法、DES算法三种分组密码的基础分析 分组密码当中代表性的SM4算法、AES算法、DES算法在计算机和通信系统中起着重要的实际作用,每一种的算法都会有其独有的一份结构,讲解起来其实每一种都有很大的一个篇幅。
在这里主要是把这几种密码算法放在一起做一个简单的分析,也可以通过了解每一种算法来比较一下三者之间的差别。
那么,我们就通过了解SM4算法、AES算法、DES算法这几种有代表性的近代分组密码来讨论一下分组密码的基本理论及其在计算机和通信系统中的实际应用。
1、SM4算法 SM4密码算法是一个分组算法,其算法设计简沽,结构有特点,安全高效。
数据分组长度为128比特,密钥长度为128比特。
加密算法与密钥扩展算法均采取32轮迭代结构。
SM4密码算法以字节8位和字节32位作为单位进行数据处理。
SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
SM4密码算法结构 SM4算法的基本内容有以下几方面: 基本运算:SM4密码算法使用模2加和循环移位作为基本运算。
基本密码部件:SM4密码算法使用了S盒、非线性变换τ、线性变换部件L、合成变换T基本密码部件。
轮函数:SM4密码算法采用对基本轮函数进行迭代的结构。
利用上述基本密码部件,便可构成轮函数。
SM4密码算法的轮函数是一种以字为处理单位的密码函数。
加密算法:SM4密码算法是一个分组算法。
数据分组长度为128比特,密钥长度为128比特。
加密算法采用32轮迭代结构,每轮使用一个轮密钥。
解密算法:SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密铝的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
密钥扩展算法:SM4密码算法使用128位的加密密钥,并采用32轮法代加密结构,每一轮加密使用一个32位的轮密钥,共使用32个轮密钥。
因此需要使用密钥扩展算法,从加密密钥产生出32个轮密钥。
分组密码算法和流密码算法的安全性分析当今是一个网络时代,人们的生活方式与过去相比发生了很大的变化,足不出户就可以通过网络解决衣食住行中的绝大多数需求,例如,用淘宝网购买所需、用支付宝进行日常支付、用电子银行转账等等。
生活变得快捷而又方便。
然而,事物都有两面性,伴随着生活的便捷而来的是财产安全和个人隐私的保障问题。
这时,密码的使用就是在网络上对我们进行保护的一个关键技术点。
它是类似防火墙似的存在,是一切网络活动的基石。
在网络传输时一般使用的是对称加密算法来进行加密操作,如流密码算法和分组密码算法。
因此,对现有的被广泛重视和使用的分组密码算法和流密码算法的安全性进行研究和分析是非常有必要的。
在本文中,首先,我们针对分组密码算法建立统计积分区分器和多结构体统计积分区分器新模型,并将模型应用于实际算法中;其次,基于MILP方法首次将S盒的差分特征和线性特征考虑进不可能差分路线和零相关路线的自动化搜索中,首次给出ARX算法通用的不可能差分路线和零相关路线的自动化搜索方法,并将该方法应用于实际算法中;最后,在相关密钥场景下利用不可能差分方法给出流密码算法Lizard的安全性分析结果。
具体结果如下。
提出分组密码算法统计积分区分模型,并利用该模型理论破解Skipjack变种算法、给出CAST-256的最优攻击结果和IDEA的最优积分攻击结果:积分攻击是对称密码领域最强大的分析方法之一,被广泛的应用于分组密码算法的安全性分析中。
它是基于概率为1的平衡特性来构建区分器。
攻击者可以通过固定输入的一部分比特而遍历剩下的所有比特的可能取值,观察相应的输出值在某些比特上是否为均匀分布来区分真实算法和随机置换。
为了增加积分区分器的覆盖轮数,攻击者通常会在整个明文空间的限制条件下以特定的结构来遍历更多的明文比特以使得平衡特性依然成立。
然而这一要求限制了积分攻击在很多算法分析中的应用。
在本文中,为降低积分分析中使用的数据复杂度,我们基于超几何分布和多项分布为算法和随机置换构造不同的概率分布来进行区分,从而构建了统计积分这一新模型。
实验二分组密码算法DES
一、实验目的
通过用DES算法对实际的数据进行加密和解密来深刻了解DES的运行原理。
二、实验原理
分组密码是一种对称密码体制,其特点是在明文加密和密文解密的过程中,信息都是按照固定长度分组后进行处理的。
在分组密码的发展历史中,曾出现了许多优秀的算法,包括DES,IDEA,AES,Safer++等等。
下面以DES算法为例介绍分组密码算法的实现机制。
DES算法将明文分成64位大小的众多数据块,即分组长度为64位。
同时用56位密钥对64位明文信息加密,最终形成64位的密文。
如果明文长度不足64位,即将其扩展为64位(如补零等方法)。
具体加密过程首先是将输入的数据进行初始置换(IP),即将明文M中数据的排列顺序按一定的规则重新排列,生成新的数据序列,以打乱原来的次序。
然后将变换后的数据平分成左右两部分,左边记为L0,右边记为R0,然后对R0实行在子密钥(由加密密钥产生)控制下的变换f,结果记为f(R0,K1),再与L0做逐位异或运算,其结果记为R1,R0则作为下一轮的L1。
如此循环16轮,最后得到L16、R16,再对L16、R16实行逆初始置换IP-1,即可得到加密数据。
解密过程与此类似,不同之处仅在于子密钥的使用顺序正好相反。
DES全部16轮的加密过程如图1-1所示。
DES的加密算法包括3个基本函数:
1.初始置换IP
它的作用是把输入的64位数据块的排列顺序打乱,每位数据按照下面的置换规则重新排列,即将第58位换到第一位,第50位换打第2位,…,依次类推。
置换后的64位输出分为L0、R0(左、右)两部分,每部分分别为32位。
58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5 63 55 47 39 31 23 1
R 0和K 1经过f (R 0,K 1)变换后的输出结果,再和L 0进行异或运算,输出结果位R 1,R 0则赋给L 1。
L 1和R 1同样再做类似运算生成L 2和R 2,…,经过16次运算后生成L 16和R 16。
2.f 函数
f 函数是多个置换函数和替代函数的组合函数,它将32位比特的输入变换为32位的输出,如图1-2所示。
R i 经过扩展运算E 变换后扩展为48位的E (R i ),与1+i K 进行异或运算后输出的结果分成8组,每组6比特。
每一组再经过一个S 盒(共8个S 盒)运算转换为4位,8个4位合并为32位后再经过P 变换输出为32位的),(1+i i K R f 。
其中,扩展运算E 与置换P 主要作用是增加算法的扩散
图1-1 DES 加密/解密流程
效果。
3.逆初始置换IP-1
它将L
16和R
16
作为输入,进行逆初始置换得到密文输出。
逆初始置换是初始
置换的逆运算,置换规则如下所列:
40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31 38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29 36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27 34,2,42,10,50,18,58,26,33,1,41,9, 49,17,57,25 DES的加密算法中除了上面介绍的3个基本函数,还有一个非常重要的功能模块,即子密钥的生成模块,具体子密钥的产生流程图如图1-3所示。
输入的初始密钥值为64位,但DES算法规定,其中第8、16、…、64位为奇偶校验位,不参予DES的运算。
所以,实际可用位数只有56位,经过缩小选择位表1
图1-2 f函数原理图
(表1-2)即密钥置换PC-1的变换后,初始密钥的位数由64位变成了56位,将其平分位两部分C 0,D 0。
然后分别进行第一次循环左移,得到C 1和D 1,将C 1(28位)、D 1(28位)合并后得到56位的输出结果,再经过压缩置换PC-2(表1-3),从而得到了密钥K 1(48位)。
依次类推,便可得到K 2、…、K 16。
需要注意的是,16次循环左移对应的左移位数要依据表1-1的规则进行。
表1-1 左移位数规则
i
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 LS i 1 1
2
2
2
2
2
2
1
2
2
2
2
2
2
1
表1-2 压缩置换PC -1
57 49 41 33 25 17 9 1 58 50 42 34 26 18 10
2
59
51
43
35
27
图1-3 子密钥的生成流程
表1-3 压缩置换PC-2
三、实验环境
运行Windows操作系统的PC机,具有VC等语言编译环境
四、实验内容和步骤,
1.仔细阅读并分析DES算法,理解DES算法的原理,并清楚每一步的实现方法;
2.设计加解密函数的总体流程,子密钥产生的流程和相应的数据格式;
3、编码实现DES加解密算法。
4. 对编好的程序测试其正确性,并对自己选定的明文、密码用于加解密;
5.在前一步的基础上,固定密钥,分别改变明文中的某些比特,检验密文改变的位数;固定明文,分别改变密钥的某些比特,检验密文改变的位数;
五、实验报告和要求
(1)分别实现DES的加密和解密,提交程序代码和执行结果。
加密的。