密码学与信息安全 第6章 3DES、分组密码工作模式及流密码_第1页
密码学与信息安全 第6章 3DES、分组密码工作模式及流密码_第2页
密码学与信息安全 第6章 3DES、分组密码工作模式及流密码_第3页
密码学与信息安全 第6章 3DES、分组密码工作模式及流密码_第4页
密码学与信息安全 第6章 3DES、分组密码工作模式及流密码_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章3DES及对称密码其他内容第6章3DES及对称密码其他内容TripleDES(三重DES)BlockCipherModesofOperation

(分组密码的工作模式)

StreamciphersandRC4(流密码和RC4)6.13DES多重加密本质是将一个加密算法多次使用的技术。在第一次使用中,明文通过加密算法转为密文,然后将该密文作为输入重新执行加密算法。该过程可重复多次。3DES是在三个阶段使用DES算法,共用到两组或三组密钥。6.13DES2DES加密:C=EK2(EK1(P))解密:P=DK1(DK2(C))Thelengthofthekey=56×2=112bits6.13DES2DES但对于DES的替代算法并没有选择2DES?因为:会受到meet-in-the-middleattackC=E(K2,E(K1,P))X=E(K1,P)=D(K2,C)6.13DES如果已知一个明文密文对(P,C),攻击的实施可如下进行:

1、首先,用256个所有可能的K1对P加密,将加密结果存入一表并对表排序;

2、然后用256个所有可能的K2对C解密,在上述表中查找与C解密结果相匹配的项,如果找到,则记下相应的K1和K2;3、最后再用一新的明文密文对(P',C')检验上面找到的K1和K2

。用K1和K2对P'两次加密,若结果等于C',就可确定K1和K2是所要找的密钥。2DES6.13DES3DESC=EK3(DK2(EK1(P)))

P=DK1(EK2(DK3(C)))Thelengthofkey=168bits为什么是加/解密是EDE/DED模式6.13DES为什么是加/解密是EDE/DED模式?主要是为了功能更加强大,兼容单密钥加密按常识,如果是EEE/DDD模式的话,解密:DK1(DK1(DK1(C))),其中C=EK1(p)解密:DK1(EK1(DK1(C)))其中C=EK1(p)如果是EDE/DED模式的话,多重DES应用3DES(2K/3K)是高强度的加密算法实现方便,节省投资DES模块本身不需改变, 只改变上层应用程序应用情况PGP、S/MIME分组密码的工作模式电子密码本模式(electroniccodebookmode)ECB密码块链接(cipherblockchaining)CBC密码反馈方式(cipherfeedback)CFB输出反馈方式(outputfeedback)OFB计数器模式CTR选择工作模式本质上是一项增强密码算法或者使算法适应具体应用的技术6.2

电码本(ECB)模式ECB(electroniccodebook)模式是最简单的运行模式,它一次对一个64比特长的明文分组加密,而且每次的加密密钥都相同,当密钥取定时,对明文的每一个分组,都有一个惟一的密文与之对应。因此形象地说,可以认为有一个非常大的电码本,对任意一个可能的明文分组,电码本中都有一项对应于它的密文。6.2电码本(ECB)模式如果消息长于64比特,则将其分为长为64比特的分组,最后一个分组如果不够64比特,则需要填充。解密过程也是一次对一个分组解密,而且每次解密都使用同一密钥。ECB模式特别适合于数据较少的情况,比如加密密钥。ECB的最大特性是同一明文分组在消息中重复出现的话,产生的密文分组也相同,即同样信息多次出现造成消息泄露,故ECB用于长消息时可能不够安全。6.3密码分组链接(CBC)模式为了解决ECB的安全缺陷,可以让重复的明文分组产生不同的密文分组,CBC(Cipher

block

chaining)模式就可满足这一要求。它一次对一个明文分组加密,每次加密使用同一密钥,加密算法的输入是当前明文分组和前一次密文分组的异或,因此加密算法的输入不会显示出与这次的明文分组之间的固定关系,所以重复的明文分组不会在密文中暴露出这种重复关系。假如传输C1时发生了错误,会影响哪些明文位?P2位以后会受影响吗?如果传输没问题,但P1加密前本来就有一位发生了错误,错误会扩散到多少个密文分组?对接收者解密出的明文分组有什么影响?CBC模式有可能对多个明文分组进行并行加密吗,并行解密呢?IV不能被第三者知道,不能被预测,不能未经授权修改,例如我们可以先用ECB加密IV后再发送给对方。只要IV是不可预测的,那么可以随意选择,(计数器、时间戳……等时变量)6.4密文反馈(CFB)模式以DES为例,其是分组长为64比特的分组密码,但利用CFB(cipherfeedback)模式或OFB模式可将DES转换为流密码方式使用。流密码不需要对消息填充(分组加密模式,当长度不为分组的整数倍,就需要在明文末端填充一些随机数,“凑成”分组,这种情况下密文长度就比明文长度要长),而且运行是实时的(所谓实时,前面两种模式,在64位明文分组传送完之前,不能进行任何加解密操作,而CFB模式下,可一组处理1字节即8位数据,例如一个字符不需要等待全部数据传送完才开始执行加解密操作,在交互式计算机通信中是很有用的。例如传送字母流,可使用流密码对每个字母直接加密并传送。一般b取64,s取86.5输出反馈(OFB)模式OFB和CFB结构几乎一样,区别在于OFB模式是将加密算法的输出反馈到移位寄存器,而CFB模式中是将密文单元反馈到移位寄存器。OFB模式的优点是传输过程中比特错误不会被传播。但是因为密文没有参与链操作,所以使得OFB模式更容易受到攻击;6.6计数器模式计数器模式(也是一种流方式应用,但是可以非顺序存取)重复加密初始counter++,得密钥流明文与之XOR6.6计数器模式6.7流密码和RC4流密码这种体制是将明文M看成是连续的比特流或字符流(m1m2m3…),并用密钥序列K(k1k2k3…)中的第i个元素ki对明文中的mi进行逐位加密。加密的强度在于密钥序列的随机性和不确定性。

密钥流是伪随机流,伪随机流就是在不知道输入密钥的情况下不可预知的流,“伪”表示其产生的不是真正的随机数,只是尽量逼近。流密钥要做到安全的一个前提,就是尽可能不重复使用密钥,否则就失去了随机性的意义。流密码有些类似第二章讨论的一次一密,不同的是“一次一密”是真正的随机数流,而流密码是伪随机数流。随机数的质量要求均匀分布在任何尺度上看其统计规律是均匀的比如0、1的平均各半字节0~255的出现概率是1/256双字节0~65535的出现概率是1/65536等等独立性没有周期,也无法推导或预测类似洗牌、抛硬币、摇奖等*无理数(不是密码学上期望的随机数)e,π,√2,真随机数来源确实有,比如抛硬币,摇奖器具,搅拌器物理噪声发生器,白/背景噪声、热运动、齐纳击穿但都不实用尤其不适合软件产生数字计算机本身不能产生真正的不可预测的随机数有限状态自动机专用硬件(芯片/板卡)IntelRandomNumberGenerator/dev/random,/dev/urandom对真随机数的改进处理:用md5等消除偏差伪随机数列发生器(PRNG)线性同余发生器BBS发生器使用分组密码产生伪随机数(CTR和OFB模式)特意构造的算法(RC4…)………6.7.1流密码的结构伪随机字节发生器

一个典型的流密码每次加密一个字节的明文(如上图),核心在于密钥流生成器的设计,生成的密钥流要有很强的随机性;保持收发端密钥流的精确同步是实现可靠加解密的关键。6.7.1流密码的结构设计流密码需要考虑的主要因素:加密序列的周期要长。伪随机数发生器实质上使用的是产生确定的比特流的函数。该比特流最终将出现重复。重复的周期越长,密码分析的难度就越大。密钥流应该尽可能地接近于一个真正的随机数流的特征。例如,1和0的个数应近似相等。若密钥流为字节流,则所有256种可能的字节的值出现频率越近似相等,密钥流的随机特性越好。密钥流生成器的输出取决于输入密钥的值,为了防止穷举攻击,密钥长度要足够长(最好不要小于128位)。

6.7.1流密码的结构流密码的优缺点:是其相对于分组密码来说,往往速度更快而且需要编写的代码更少;分组密码的优点是可以重复使用密钥,然而如果用流密码对两个明文加密中使用相同的密钥,则密码分析就会相当容易。应用:对于需要对数据流进行加密解密的应用,比如通过一个数据通信信道或者网页浏览连接,流密码就是很好的解决方案,或者说,对于从不结束的通信传输流来说,流密码特别合适。而对于处理成块的数据,比如文件传输,电子邮件和数据库,分组密码则更为适用。并且对于既需要重复加密,又需要每次加密不改变密钥的情况,适合使用分组密码,例如对于加密数据库中一列的所有单元,这就意味着对于每一个单元不能使用不同的密钥,应该采用分组加密。6.7.2RC4算法RC4是RonRivest为RSA公司在1987年设计的一种流密码。它是一个可变密钥长度、面向字节操作的流密码。该算法以随机置换作为基础。分析显示该密码的周期大于10100。每输出一个字节的结果仅需要8条到16条机器操作指令。RC4算法非常简单:用1-256个字节的可变长度密钥K初始化一个256字节的状态向量S,S的元素记为S[0]…S[255],从始至终置换后的S包含从0到255的所有8位数。对于加密和解密,字节k是从S的255个元素按一种系统化的方式选出的一个元素生成的。每生成一个字节k的值,S中的元素个体就被重新置换一次。6.7.2RC4算法初始化:开始时,S向量中元素的值初始化被置为按升序从0~255,即S[0]=0,S[1]=1,…,S[255]=255。同时建立一个临时向量T。如果密钥K的长度为256字节,则将K赋给T。否则若密钥长度为keylen(小于256)字节,则将K的值赋给T的前keylen个元素,并循环重复用K的值赋给T剩下的元素,直到T的所有元素都被赋值。这些操作可被概括如下:/*Initialiation*/fori=0to255doS[i]=i;T[i]=K[imodkeylen];

6.7.2RC4算法然后用T产生S的初始置换,从S[0]到S[255],对每个S[i],根据由T[i]确定的方案,将S[i]置换为S中的另一字节:/*InitialPermutationofS*/j=0;fori=0to255doj=(j+S[i]+T[i])mod256;Swap(S[i],S[j]);

因为对S的操作仅是交换,所以惟一的改变就是置换。S仍然包含所有值为0~255的元素。密钥的主要功能是将S-box搅乱,i确保S-box的每个元素都得到处理,j保证S-box的搅乱是随机的。6.7.2RC4算法密钥流的生成:矢量S一旦完成初始化,输入密钥K就不再被使用。密钥流的生成是从S[0]到S[255],对每

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论