您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 信息安全原理与技术ch03-对称加密技术
信息安全原理与技术郭亚军宋建华李莉清华大学出版社2011-7-20Ch3(2)-对称加密技术2第3章对称加密技术(2)•主要知识点:--对称密码模型--密码攻击--古典加密技术--数据加密标准--高级加密标准--RC6--流密码--分组密码工作模式--随机数的产生--对称密码的密钥分配2011-7-20Ch3(2)-对称加密技术3RC6•RC6是RSA公司提交给NIST的一个候选高级加密标准算法•RC6在RC5基础上将分组长度扩展成128位,用四个32位区块代替RC5的两个32位区块•RC6是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数•RC6常常写为RC6-w/r/b,其中w是字的大小,以位为单位,r为加密轮数,允许值是0,…,255,b为密钥长度,单位是字节,0≤b≤255•例如RC6-32/16/10表示字长为32位,迭代的轮数是16,密钥长度为10字节•由于高级加密标准的要求是w=32,r=20,因此满足AES的RC6算法是RC6-32/20/16,也就是四个32位字(128位),迭代的轮数为20,密钥长度16个字节2011-7-20Ch3(2)-对称加密技术4•RC6定义了6种运算基本操作,以2为底的对数表示为lgw。:a+b:模2w整数加a-b:模2w整数减a⊕b:w位的字按位异或a×b:模2w整数乘ab:循环左移w位的字a,移动位数由b的低位lgw位决定ab:循环右移w位的字a,2011-7-20Ch3(2)-对称加密技术5RC6的加密和解密•RC6用这4个w位寄存器A、B、C、D来存放输入的明文和输出的密文•明文和密文第一个字节放在A的昀低字节(即第一个字节,明文和密文的昀后一个字节放在D的昀高字节(即昀后一个字节)•RC6的加密过程如图3.31所示,其中f(x)=x×(2x+1)•加密算法和解密算法分别如图3.32,图3.33所示2011-7-20Ch3(2)-对称加密技术62011-7-20Ch3(2)-对称加密技术72011-7-20Ch3(2)-对称加密技术82011-7-20Ch3(2)-对称加密技术9密钥扩展•密钥扩展算法是从密钥K中导出2r+4个字长的密钥,储存在数组S[0,…,2r+3]中•在这其中用到了两个常量Pw和Qw,Pw和Qw大小是一个字长,定义如下:Pw=Odd((e-2)2w)Qw=Odd((φ-2)2w)•其中,e=2.7182818284…(自然对数),φ=1.61803398874…(黄金分割),Odd(x)是离x昀近的奇数2011-7-20Ch3(2)-对称加密技术10•密钥扩展时,首先将密钥K[0,…,b-1]放入c个w位字的另一个数组L[0,…,c-1]中,其中c为b/u的整数部分,u=w/8,即L数组上的元素大小为uw位•将u个连续字节的密钥顺序放入L中,先放入L中的低字节,再放入其高字节•如果L未填满,用0填充。当b=0,c=0时,c=1,L[0]=0。•其次利用Pw和Qw将数组S初始化为一个固定的伪随机的数组,昀后将用户密钥扩展到数组S中2011-7-20Ch3(2)-对称加密技术11•RC6-w/r/b密钥扩展•输入:用户密钥字节预放入数组L[0,…,c-1]•轮数r•输出:w位的轮密钥S[0,…,2r+3]•过程:•S[0]=Pw•fori=1to2r+3do•S[i]=S[i+1]+Qw•A=B=i=j=0•v=3×max{c,2r+4}•fors=1tovdo•{•A=S[i]=(S[i]+A+B)3•B=L[j]=(L[j]+A+B)(A+B)•i=(i+1)mod(2r+4)•j=(j+1)modc2011-7-20Ch3(2)-对称加密技术12RC6的安全性和灵活性•RC6是对RC5的发展,加入了二次函数f(x)=x×(2x+1),这个函数提高了函数密码扩散速度•用二次函数变换的寄存器B和D的值来修改寄存器A和C的值,增加了密码的非线性.因此RC6有很好的抗差分攻击和线性攻击的能力•另外RC6的加密和解密的时间都与数据无关,可以有效地避免计时攻击。•RC6也没有存在类似DES中的弱密钥•RC6算法在加密过程中不需要查找表,加之算法中的乘法运算也可以用平方代替,所以该算法对内存的要求很低•RC6特别适合在单片机上实现。2011-7-20Ch3(2)-对称加密技术13流密码•一次一密密码是绝对安全的密码,如果能以某种方式仿效一次一密密码,则将可以得到安全性很高的密码•人们试图以流密码方式仿效一次一密密码•流密码也称为序列密码,它是对明文以一位或者一个字节为单位进行操作•为了使加密算法更安全,一般选取尽可能长的密钥•但是长密钥的存储和分配都很困难•流密码采用一个短的种子密钥来控制密钥流发生器产生出长的密钥序列,供加解密使用2011-7-20Ch3(2)-对称加密技术14流密码的加密过程•种子密钥k输入到密钥流发生器,产生一系列密码流,通过与同一时刻的一个字节或者一位明文流进行异或操作产生密文流图3.35流密码加密过程密钥流发生器种子密钥k密钥流ki明文流mi密文流ci⊕2011-7-20Ch3(2)-对称加密技术15•在流密码中,如果密钥流的产生完全独立于明文流或密文流,则称该流密码为同步流密码(SynchronousStreamCipher),如图3.36所示•如果密钥流的产生与明文或者密文相关,则称这类流密码为自同步流密码(Self-SynchronousStreamCipher),如图3.37所示2011-7-20Ch3(2)-对称加密技术162011-7-20Ch3(2)-对称加密技术172011-7-20Ch3(2)-对称加密技术18同步流密码•只要通信双方的密钥流产生器具有相同的种子密钥和相同的初始状态,就能产生相同的密钥流•在保密通信过程中,通信的双方必须保持精确的同步,收方才能正确解密•如果通信中丢失或增加了一个密文字符,则收方将一直错误,直到重新同步为止•但是同步流密码对失步的敏感性,使我们能够容易检测插入、删除、重播等主动攻击•由于同步流密码各操作位之间相互独立,因此应用这种方式进行加解密时无错误传播,当操作过程中产生一位错误时只影响一位,不影响后续位,这是同步流密码的一个优点2011-7-20Ch3(2)-对称加密技术19自同步流密码•每一个密钥位是由前面n个密文位参与运算推导出来的,其中n为定值•如果在传输过程中丢失或更改了一个位,则这一错误就要向前传播n个位•不过,在收到n个正确的密文位以后,密码自身会实现重新同步•在自同步流密码系统中,密文流参与了密钥流的生成,这使得对密钥流的分析非常复杂,从而导致对自同步流密码进行系统的理论分析非常困难2011-7-20Ch3(2)-对称加密技术20密钥流产生器•流密码的安全强度完全取决于它所产生的密钥流的特性•如果密钥流是无限长且为无周期的随机序列,那么流密码属于“一次一密”的密码体制•满足这样条件的随机序列在现实中很难生成•实际应用当中的密钥流都是由有限存储和有限复杂逻辑的电路产生的字符序列•由于密钥流生成器只具有有限状态,那么它产生的序列具有周期性,不是真正的随机序列2011-7-20Ch3(2)-对称加密技术21•现实设计中只能追求密钥流的周期尽可能的长,随机性尽可能的好,近似于真正的随机序列•一个好的密钥流需要考虑下面几个要素:(1)加密序列的周期要长。密钥流生成器产生的比特流昀终会出现重复。重复的周期越长,密码分析的难度越大。(2)密钥流应该尽可能地接近一个真正的随机数流的特征。如,1和0的个数应近似相等。如果密钥流为字节流,则所有的256种可能的字节的值出现频率应近似相等。(3)为了防止穷举攻击,种子密钥值也应该有足够的长度,至少要保证它的长度不小于128位。2011-7-20Ch3(2)-对称加密技术22•生成一个具有良好特性的密钥流序列的常见方法有:线性反馈移位寄存器(LinearFeedbackShiftRegister,LFSR)、非线性移位寄存器(NLFSR)、有限自动机、线性同余以及混沌密码序列等方法•这些方法都是通过一个种子(有限长)密码产生具有足够长周期的、随机性良好的序列。只要生成方法和种子都相同,就会产生完全相同的密钥流。2011-7-20Ch3(2)-对称加密技术23•目前密钥流生成器大都是基于移位寄存器•移位寄存器结构简单,易于实现且运行速度快•密钥流产生器一般由线性移位寄存器和一个非线性组合函数两部分构成。其中线性移位寄存器部分称为驱动部分,另一部分称为非线性组合部分•其工作原理是将驱动部分,即线性移位寄存器在j时刻的状态变量x作为一组值输入非线性组合部分的f,将f(x)作为当前时刻的密钥kj•驱动部分负责提供非线性组合部分使用的周期大、统计性能好的序列,而非线性组合部分以各时刻移位寄存器的状态组合出密钥序列2011-7-20Ch3(2)-对称加密技术24移位寄存器(LFSR)非线性组合函数f密钥流ki图3.38密钥流产生器…2011-7-20Ch3(2)-对称加密技术25•图3.39是一个域GF(2)上的反馈移位寄存器•图中标有a1,a2,…,an-1,an的小方框表示二值(0,1)存储单元a1a2an-1anf(a1,a2,…,an)输出序列图3.39反馈移位寄存器…2011-7-20Ch3(2)-对称加密技术26RC4算法•RC4是RonRivest在1987年为RSA数据安全公司设计的一种同步流密码•RC4不是基于移位寄存器的流密码,而是一种基于非线性数据表变换的流密码•它以一个足够大的数据表为基础,对表进行非线性变换,产生非线性密钥流序列•RC4是一个可变密钥长度,面向字节操作的流密码•该字节的大小n可以根据用户需要来定义,一般应用中n取8位2011-7-20Ch3(2)-对称加密技术27•流密钥的生成需要两个处理过程:一个是密钥调度算法(KSA);二是伪随机产生算法(PRGA)•密钥调度算法用来设置数据表S的初始排列•伪随机产生算法用来选取随机元素并修改S的原始排列顺序•密钥流产生过程是用1到256个字节的可变长度的密钥初始化一个256个字节的数据表S•加密和解密用的每一个密钥K(i)是由S中的元素按照一定的方式选出一个元素而生成•每生成一个K(i)值,S中的元素就被重新置换一次2011-7-20Ch3(2)-对称加密技术28KSA初始化S•初始化时,先对S进行填充,即令S(0)=0,S(1)=1,S(2)=2,…,S(255)=255•用种子密钥填充一个256个字节的密钥表K,K(0),K(1),K(2),…K(255)•如果种子密钥的长度小于K的长度,则依次重复填充,直到将K填满•然后通过S(i)和K(i)置换S中的元素2011-7-20Ch3(2)-对称加密技术29密钥流生成•数据表S一旦完成初始化,种子密钥将不再使用•当KSA完成S的初始化后,PRGA就将接手工作•它为密钥流选取一个个字节,即从S中选取随机元素,并修改S以便下一次选取•密钥流的生成是从S(0)到S(255),对每个S(i),根据当前的S值,将S(i)与S中的另一个字节置换•当S(255)完成置换后,操作继续重复从S(0)开始2011-7-20Ch3(2)-对称加密技术30分组密码工作模式•分组密码算法是提供数据安全的一个基本构件•分组密码是针对固定大小的分组进行加密的,例如,DES是对64比特的明文分组进行加密,AES是对128位分组操作•需要保密传输的消息不一定刚好是一个分组大小•为了在实际中应用分组密码,定义了五种工作模式。任何一种对称分组密码算法都可以以这些方式进行应用2011-7-20Ch3(2)-对称加密技术31电子密码本模式•电子密码本模式(ElectronicCodeBook,ECB)模式是分组密码的基本工作方式•它将明文分割成独立大小的分组b,昀后一组在必要时需要填充,一次处理b比特的明文,每次使用相同的密钥加密•每一个分组依次独立加密,产生独立的密文组•优点:并行处理来加速加/解密运算
本文标题:信息安全原理与技术ch03-对称加密技术
链接地址:https://www.777doc.com/doc-5101113 .html