01fr第3章 分组密码和数据加密标准DES(精简)104
- 格式:doc
- 大小:921.00 KB
- 文档页数:56
数据加密标准(DES)数据加密标准(DES)概述DES(Data Encryption Standard)是由1971年IBM公司设计出的⼀个加密算法,1977年经美国国家标准局(NBS)采⽤作为联邦标准之后,已成为⾦融界及其它各种民间⾏业最⼴泛应⽤的对称密码系统,是第⼀个被公布出来的标准算法。
四⼗年来,尽管计算机硬件及破解技术的发展⽇新⽉异,但对DES的攻击也仅仅做到了“质疑”的地步,其主要缺点之⼀是密钥太短,若能⽤DES改进算法加长密钥长度,仍不失为⼀个安全的密码系统。
DES结构明⽂m 置换IP m0=L0UR0 密钥源K1 L1UR1 密钥源K2 L2UR2 ……密钥源K16 L16UR16 得到R16UL16 逆置换IP^-1 得到密⽂CDES是⼀个对称密码体制,加解密使⽤同⼀密钥,密钥、明⽂、密⽂长度均为64bit。
解密过程为输⼊密⽂C并反序输⼊⼦密钥K16,K15,...,K1,最后输出的即明⽂m。
DES详细结构图置换IP和逆置换IP^-1置换IP和逆置换IP-1没有密码学意义,X与IP(X)(或Y与IP-1 (Y))的⼀⼀对应关系是已知的,置换的⽬的是打乱原来输⼊X的ASII码字的前后关系。
1. 置换IP置换IP表中的位序号特征为:64位按照8⾏8列排列,最右边⼀列按照1、3、5、7排列,往左边各列的位序号依次为其右边⼀列各位序号加8.2. 逆置换IP^-1逆置换IP^-1是置换IP的逆过程,表中位序号特征,64位按照8⾏8列排列,左边第⼆列按8、7、6、5、4、3、2、1次序排列,往右边隔⼀序号是当前列序号加8,认为最右边⼀列的隔⼀列为最左边⼀列。
F函数DES的⼀轮迭代过程见下图,其中的F函数由3部分组成:扩展置换(E盒)⾮线性代换(S盒)线性置换(P盒)substitute:代换permute:置换expand:扩展1. 扩展置换扩展置换⼜称E盒,将32别输⼊扩展为48bit输出。
数据加密标准DES1977年1月,美国政府将IBM研制的一种乘积密码宣布为国家的数据加密标准。
这个标准的确立刺激了很大一批厂商去实现加密算法的硬件化,以提高处理速度。
这种密码术的核心是乘积变换,在硬件产业中常常简称为DES(Data Encryption Standard)。
这样一来,由于可以得到便宜高速的硬件,所以反过来也鼓励了许多其他用户采纳DES。
1.DES算法描述现在我们来说明DES算法,它的过程如图9-2所示。
对明文按64位分组,每组明文经初始排列(第1步),通过子密钥K1--K16进行16次乘积变换(第2步),再通过最终排列(第3步)得到64位密文。
图9-2 DES算法过程图16次乘积变换的目的是使明文增大其混乱性和扩散性,使得输出不残存统计规律,使破译者不能从反向推算出密钥。
第1步:初始排列(IP)IP(Initial Permutation)取排数据的方法如表9-2所示,其中的数据表示明文的位标(1~64)。
例如,58指该组明文中的第58位,50指该组明文中的第50位,其他类推。
第l步初始排列的目的是将明文的顺序打乱。
表9-2 初始排列法(IP)[例12-1]明文X=0123456789ABCDEF(十六进制形式),写成二进制形式,共64位:X=0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111经过初始排列(IP)后,结果变成:1100 1100 0000 0000 1100 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010 1010即写成十六进制形式是:CC00CCFFFOAAFOAA。
第2步:乘积变换把通过第1步得出的64位一分为二,用L0表示前32位,R0表示后32位,那么在上例中有:L0=CC00CCFF R0=FOAAFOAA其16次乘积变换的过程可以用图9-3表示。
加密算法之DES算法DES算法(Data Encryption Standard,数据加密标准)是一种对称加密算法,由IBM公司于1970年代开发,1977年被美国国家标准局(NIST)采纳为联邦信息处理标准(FIPS),并作为加密通信的标准算法使用。
DES算法采用分组密码(Block Cipher)的形式,将明文数据分成64位的数据块进行加密和解密操作。
DES算法的核心是Feistel结构,该结构由两个相同的数据块进行操作,每一轮加密过程包括分组加密、轮密钥生成和异或运算三个步骤。
下面将详细介绍DES算法的加密过程。
1.密钥生成:DES算法使用56位的密钥进行加密,其中有8位用于奇偶校验,因此实际有效密钥长度为48位。
首先,将56位密钥进行置换和分割,得到两个28位的子密钥,分别为左子密钥和右子密钥。
接着,根据子密钥生成算法对左右子密钥进行16轮循环左移操作,每轮循环左移的位数由一个预定义的位移表决定,最终得到16个48位的轮密钥。
2.分组加密:将64位明文数据分成左右两个32位的数据块,分别为左数据块L0和右数据块R0。
接下来,采用16轮的迭代过程,每轮过程包括以下四个步骤:-迭代函数扩展:将32位的右数据块扩展为48位,通过一个预定义的扩展换位表进行操作,得到扩展后的数据块。
-轮密钥混合:将扩展后的数据块和对应的轮密钥进行异或运算,得到48位的中间结果。
-S盒代替:将中间结果进行分组,每个6位作为一个输入,通过一系列预定义的S盒进行替代操作,得到32位的输出。
-P盒置换:对S盒代替的输出进行置换操作,通过一个预定义的置换表得到32位的最终结果。
在每轮迭代过程中,将左右数据块交换位置,即Li=Ri-1,Ri=Li-1⊕F(Ri-1,Ki),其中F表示迭代函数,Ki表示对应的轮密钥。
3.逆置换:经过16轮迭代后,得到的最终结果为L16和R16,将其交换位置,即L16为右数据块,R16为左数据块。
第3章分密组密码算法DES教学内容要点:(2课时)1.分组加密 (4)2.Feistel(费斯妥)分组密码 (6)3.数据加密标准(DES)的历史 (15)4.DES算法的入口参数 (18)5.DES算法加密过程 (19)6.变换密钥 (25)7.处理64位的数据 .............................................. 31 8. 轮函数Round 说明111(,,)(,);015i i i i i Round L R k L R i +++=从到 (37)9. DES 算法的解密过程 (45)10. 雪崩效应 (46)11. DES 算法的强度(安全性)争议 (48)12. 对密钥长度的攻击 (48)13. DES 的未来 (52)14.差分分析方法和线性分析方法(提及) (53)15.作业 (54)16.课后资料 (56)说明:1.分组加密“分组加密(block cipher):一次处理固定比特长度的分组,每次处理都有复杂的数据处理过程。
现代常规分组加密算法有:1. DES2. IDEA3. RC54. RC65. AES在近代密码史上,典型的影响相当大的分组密码算法是DES算法,它们和所有早已退出的算法由于安全与强度的原因已近退出历史舞台,但它们曾做出了重要贡献,对它们的学习对后面算法的理解和密码算法的发展及其理由有积极意义。
本章将详解DES和略解其它分组算法。
现在来看看现代分组密码,其中一个最广泛使用的加密算法提供保密/认证服务(基于密码的消息验证码:确保消息未被改动),重点DES (数据加密标准);分组密码一直得以广泛使用的理由在于:它处理速度很快,且安全性高。
学习目的此外也在于以DES为例来说明让大家了解现代分组密码的设计原则。
分组密码以固定长度的分组来处理模块,每个然后加/解密;像在一个非常大的字符集合上进行替代运算。
64位或更长;2.Feistel(费斯妥)分组密码许多对称的分组加密算法,都是基于结构称为Feistel分组密码,如:IBM的LUCIFER卖给英国公司Lloyd公司的现金发放卡上;此外DES算法。
它由分组密码操作上n位明文块经过产生n位密文区块。
任意可逆的替代映射密码查找表:对较大的分组是不切合实际,但是,从实现和性能的观点。
一般而言,一个n位通用分组密码替代表的规模,关键是N*2n。
对于64位的块,这是一个理想的长度挫败统计分析攻击的统计,表的大小是64 ×264 = 270 = 1021位。
这实际是密钥的长度,这太长了,实现推广困难很大。
在考虑这些困难,Feistel指出,现在需要的对应较n是一个近似的理想分组密码系统,建立起来的组件,很容易实现。
Feistel是指一个n位通用替代是一个理想的分组密码,因为它允许的最大数量的加密映射(从明文到密文块)。
4位输入产生的一个16个可能的输出,这是对应的密码替换成一个独特的16个可能的输出,每个代表了4位密文。
该加密和解密映射可以定义一个表格所示,如图3.1 。
它描绘了一个微小的4位替代;它表明,每一个可能的输入可任意映射到任何输出-这就是为什么它的复杂性的增长如此迅速。
(Claude Shannon’s 1949 paper )申农的1949年论文的关键思想,引导了现代分组密码的发展。
重要的是,他建议交替使用S -盒分和P –盒(形式的S-P网络SPN),形成一个复杂的实用密码。
他还介绍了思想的混乱和扩散(confusion and diffusion),它们分别由S -盒和P-盒(与S -盒)提供。
扩散和混乱是香农引入的两个基本构件。
对于密码操作来讲是替代和排列;对于于消息的信息量(统计特征)来说是混乱和扩散每个分组密码涉及转变块明文到密文区块,其中的转变取决于关键。
例子:一滴红墨水滴入太平洋;(海水依然是蓝色的);要重新将红墨水分离是不可能的。
扩散力求使明文和密文的统计之间的关系尽可能复杂以挫败企图推断。
混乱力求使密文和加密金钥统计之间的关系一样复杂可能再次挫败企图。
例子:一幅扑克牌从6楼以天女撒花的方式扔下一楼;54位同学一个去检一张;按学号收集起来;这个顺序是乱的。
没有规律;实验可重复;实验现象重复的概率几乎为零;服从某种概率分布。
这是“乱”;无序可言因此,成功的扩散和混乱成为现代的分组密码的本质属性,他们已成为现代化的分组密码的设计。
体的实现取决于Feistel网络的选择下列参数和设计的基石:Horst Feistel 设计出基于可逆替代乘积密码feistel cipher;实出了香农的S-P网络思想。
这个结构称为费斯妥结构或费斯妥网络,它有以下几个主要参数:block size块大小-增加规模提高安全性,但放缓速度;钥长度key size -规模日益提高的安全,使详尽关键搜寻难度,但可能会减缓密码轮数number of rounds -越来越多改善安全,但放缓密码subkey generation algorithm子钥生成算法-更加复杂的分析可以作出努力,但放缓密码码fast software en/decryption快速软件加/解密-最近关心的实际使用ease of analysis便于分析-更容易验证与测试的力量3.数据加密标准(DES)的历史美国国家标准局NBS,1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准(DES),于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法称为DES算法的公告。
加密算法要达到的目的(通常称为DES 密码算法要求)主要为以下四点:1.DES能提供高质量的数据保护;2.DES具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;3.DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以密钥的保密为基础;4.实现经济,运行有效,并且适用于多种完全不同的应用。
使用最广泛的私钥分组密码,是数据加密标准(DES )。
这是在1977年通过了国家标准局作为联邦信息处理标准第46条第(文件号:FIPSPUB46 )。
加密数据加密64位分组使用56位密钥。
该加密得到广泛使用。
它也一直受到很大争议的安全。
1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES Data Encryption Standard)。
其前身是费斯妥(Festel)加密算法。
斯妥是IBM Lucifer魔王的作者,德国人,1943年移民美国,战后在空军的研究中心研究密码,1960年转到密特(Mitre)公司又遭阻,后来到IBM ,但遭美国国家安全局(NSA)阻挠,谣传NSA限制其钥匙长度不可超过56位,DES56位有效密钥。
4.DES算法的入口参数DES算法的入口参数有三个:Key、Data、Mode。
其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据,称其这一个DES字或DES分组;Mode为DES的工作方式,有两种:加密或解密。
5.DES算法加密过程学习密码算法的3个层面:第1层境界:知道如何执行(手工执行);第2层境界:还要知道如何描述(计算机算法操作符和自然语言);第3层境界:用某种语言平台来实现(用计算机来提高效率)两个过程:变换密钥得到16*48bits的子密钥.处理64bits数据得到64bits密文/或明文概述DES的一般描述2第1步:从64位输入密钥出发经过16轮变化生成16个48子密钥位过程:(1次选排之后,循环左移-选排16次);一个子密钥的生成流程.(简单来讲:一次选排,循左,二次选排(三部曲))。
第2步:从64位数据出发,利用16子子密钥经过16轮变化得到64位数据输出;如果加密:则16轮变化按增序序使用16个子钥,如果解密;则减序使用16个子钥;(初始排列;轮处理;逆初始排列)例子:11010111;实始排列号43126578;得到:10111011;从新编号;其逆排列为:34216578;图示总结:DES的一轮数据处理的流程图:L i=R i-1详细解说:6.变换密钥表1:密钥位编号右边的28位称为0R ,1 i 。
i i i R s R →<<<-1,进入下步。
i s <<<:循环左移is 位。
is 见表(循环移位表)。
循环移位表:I++;i<17则跳至1-3,否则结束。
2C:从56中选48位,照某常表2中选取。
2P:将数据照某常表2排列。
常表22-1、M M IP )(0。
(M 表示消息)取得64位的数据,如果数据长度不足64位,应该将其填充为64位(例如补零),IP :初始排列,照某常表1进行初始排列。
数据位编号: 常表:后的32位称为0R,1 i。
2-3轮函数(输出为两个;以向量坐标的形式); 111(,,)(,);015i i i i i Round L R k L R i +++=从到2-4、左右互换并合并:R 16L 16 2-8、→-)(16161L R IP此分组的输出。
1-IP :初始排列,照某常表6进行排列。
(末选排)注意:左右互换了。
解密过程:只有一处不同,即子密钥的使用顺序不同,加密从k0用到k15;而解密是从k15用到k0;(算法演示)8. 轮函数Round 说明111(,,)(,);015i i i i i Round L R k L R i +++=从到2-3、1+→i i L R 。
(向左赋值)2-4、i i R R C P →)(11。
1C :从32中照某常表2选取48位。
1P :照某常表3排列。
(开始进入F处理)2-5、ii i box R K R S →⊕)(,将得到32位输出:321d d 1-→i R 。
(F 处理结束)box S :照S 盒常表4进行置换:4)*1(44)*1(16)*1(56)*1(26)*1(66)*1(1),(-+-+-+-+-+-+→j j j j j j j d d D D D D S ,j 从1执行到8。
例题:试写0x4142434445464748的S 盒输出?2-6、i i R R P →)(2。
2P :照某表常表5进行排列。
(选排)2-7、1+→⊕i i i R L R ,?16<i YES ,9.DES算法的解密过程解密过程与加密是一样的,只是子钥使用的顺序列取反。
10.雪崩效应任何加密算法都必须有的品质:一个小小的明文或密钥改变都对应产生一个重大的密文改变。
特别是,改变一个位元的明文或一个位的密钥应该产生的变化在许多比特的密文。
如果变化很小,这可能提供了一种方法,使用得差分分析攻击有效;DES表现出强大的雪崩效应,因为可以看到表3.5 。