《对称密码体制ppt课件.ppt》由会员分享,可在线阅读,更多相关《对称密码体制ppt课件.ppt(92页珍藏版)》请在三一办公上搜索。
1、2022/12/17,Page: 1,对称密码体制,杨秋伟湖南大学 计算机与通信学院,2022/12/17,Page: 2,对称密码体制,对称密码体制的特征加密密钥和解密密钥相同对称密码体制的主要研究课题密钥的产生密钥的管理,2022/12/17,Page: 3,对称密码体制组成,流密码分组密码数据加密标准(DES)高级加密标准(AES),2022/12/17,Page: 4,流密码:流密码引论,流密码是将明文划分成字符(如单个字母),或其编码的基本单元(如按位),字符分别与密钥流作用进行加密,解密时以同步产生的同样的密钥流实现。流密码强度完全依赖于密钥序列的随机性(Randomness)和不
2、可预测性(Unpredictability)。核心问题是密钥流的产生密钥流生成器的设计保持收发两端密钥流的精确同步是实现可靠解密的关键技术,2022/12/17,Page: 5,流密码:流密码的基本概念,流密码的基本思想:假设存在着明文串x = x0 x1x2利用密钥k和密钥流发生器f产生一个密钥流z = z0z1z2。其中,zi = f(k,i),i是加密器中的记忆元件在时刻i的状态,f是以密钥k和i作为输入参数的函数;加密: y = y0y1y2 = Ez0(x0) Ez1(x1) Ez1(x1);,内部记忆元件,yi= Ezi(xi),xi,yi,k,2022/12/17,Page: 6
3、,流密码:同步流密码,同步流密码:加密器中记忆元件的存储状态i独立于明文字符。同步流密码加密器密钥流产生器加密变换器加密变换器一般采用二元逻辑运算XOR,即有限域GF(2)上讨论的二元加密流密码,变换表示为:yi = zixi一次一密乱码本是加法流密码的原型,2022/12/17,Page: 7,流密码:流密码的密钥流产生器,密钥流产生器的内涵输入:密钥k和加密器中的记忆元件在时刻i的状态i;输出:密钥流zi,状态i,密钥k,状态i+1,密钥流zi,2022/12/17,Page: 8,流密码:密钥流生成器的设计原则,足够长的周期高线性复杂度统计性能良好足够的“混乱”强调密钥的作用,增加密钥与
4、密文之间关系的复杂性足够的“扩散”小扰动的影响波及到全局密文没有统计特征,明文一位影响密文的多位,增加密文与明文之间关系的复杂性抵抗不同形式的攻击,2022/12/17,Page: 9,流密码:有限状态自动机(FA),具有离散输入和输出(输入集和输出集均有限)的一种数学模型有限状态集S=si|i=1,2,l有限输入字符集X=Xi|i=1,2,m有限输出字符集Y=Yk|k=1,2,n转移函数Yjf1(sj, Xj)Sj+1 f2(sj, Xj) 即在状态sj,输入字符Xj时,输出为Yj,状态转移为Sj+1。,2022/12/17,Page: 10,流密码:有限状态自动机举例,例一S=s1,s2,
5、s3,X=x1, x2,x3,Y=y1,y2,y3转移函数,2022/12/17,Page: 11,流密码:有限状态自动机举例,若输入为x1x2x1x3x3x1初始状态s1输出为 y1y1y2y1y3y1,2022/12/17,Page: 12,流密码:基于FA的密钥流产生器,同步流密码的密钥流产生器可看为一个参数为k的FA:输出集Z,状态集,状态转移函数和输出函数,初态0设计的关键是(phi fai)和(psi psai),2022/12/17,Page: 13,流密码:基于FA的密钥流产生器,一个良好的密钥流产生器极大的周期良好的统计特性抗线性分析抗统计分析具有非线性的的FA理论很不完善,
6、通常采用线性以及非线性的。可将此类产生器分为驱动部分和非线性组合部分。驱动部分控制状态转移非线性组合部分提供统计特性良好的序列,2022/12/17,Page: 14,流密码:两种常见的密钥流产生器,LFSR:线性反馈移位寄存器流密码产生密钥流的主要组成部分。,2022/12/17,Page: 15,流密码:反馈移位寄存器的概念,基本概念级数(Stages):存储单元数n状态(State):n个存储单元的存数(ki, , ki+n-1) 反馈函数:f(ki, ki+1, , ki+n-1)是状态(ki, ki+n-1)的函数线性反馈移位寄存器(LFSR):f 为线性函数非线性反馈移位寄存器:
7、f 为非线性函数,2022/12/17,Page: 16,流密码:反馈移位寄存器,寄存,移位,反馈,2022/12/17,Page: 17,流密码:线性反馈移位寄存器,f(x)为线性函数,输出序列满足下式,2022/12/17,Page: 18,流密码:LFSR的特征多项式,LFSR的特征多项式:以LFSR的反馈系数所决定的一元高次多项式 又称反馈多项式。由于ciGF(2)(i = 1,2,n),所以有2n组初始状态,即有2n个递推序列,其中非恒零的有2n-1个。,2022/12/17,Page: 19,流密码:LFSR的生成函数,给定序列 kii0,幂级数称为该序列的生成函数定理:令kii0
8、(f),f(x)是反馈多项式,令k(x)是kii0的生成函数,则 其中,2022/12/17,Page: 20,流密码:LFSR的生成函数,定理证明,2022/12/17,Page: 21,流密码:LFSR的周期,LFSR 周期的真正涵义?定义:设p(x)是GF(2)上的多项式,使p(x)|(xp-1)的最小p称为p(x)的周期或者阶。定理:设序列ki的特征多项式p(x)定义GF(2)上,p是p(x)的周期,则ki的周期r | p。定理:设序列ki的特征多项式p(x)定义GF(2)上,且p(x)是不可约多项式, p是p(x)的周期,则ki的周期为p。,2022/12/17,Page: 22,流
9、密码:LFSR的周期,m序列:序列ki0in的周期达到最大2n-1时,称该序列为m序列。定理:以f(x)为特征多项式的LFSR的输出序列是m序列的充要条件为f(x)是本原的。m序列的性质n级m序列的周期为2n1,周期随n增加而指数级递增;只要知道n次本原多项式,m序列极易生成;m序列极不安全,只要泄露2n位连续数字,就可完全确定出反馈多项式系数。,阶为2n-1的n次不可约多项式,2022/12/17,Page: 23,流密码:LFSR的周期,m序列的破译已知ki, ki+1, ki+2n,由递推关系式可得出下式式中有n个线性方程和n个未知量,故可惟一解出ci,0in-1。,2022/12/17
10、,Page: 24,流密码:非线性序列,LFSR虽然不能直接作为密钥流用,但可作为驱动源以其输出推动一个非线性组合函数所决定的电路来产生非线性序列。这就是所谓非线性前馈序列生成器。LFSR用来保证密钥流的周期长度、平衡性等;非线性组合函数用来保证密钥流的各种密码性质,以抗击各种可能的攻击。,2022/12/17,Page: 25,流密码:非线性前馈序列,前馈函数F(非线性组合函数)输出序列的周期性、随机性、线性复杂度以及相关免疫性之间的关系,2022/12/17,Page: 26,流密码:J-K触发器,J-K触发器是一个非线性器件,有两个输入端j和k,输出为qi。输出不仅依赖于输入,还依赖于前
11、一个输出位qi-1,即其结构及逻辑真值表如下所示,2022/12/17,Page: 27,流密码:J-K触发器的非线性序列生成器,ak和bk被称为非线性序列生成器的驱动序列。性质:设ak和bk分别为x级和y级m序列。当x和y互素,且a0 + b0 =1时,序列ck的周期为(2x-1)(2y-1)。,2022/12/17,Page: 28,流密码:多路选择序列,有n种输入序列b0(t), bn-1(t) ,在地址序列a1(t),am -1 (t)的控制下决定输出取自某个输入比特。 Pless生成器例如取m级LFSR生成m序列作地址控制,取n级LFSR生成的m序列作为输入序列。,2022/12/1
12、7,Page: 29,对称密码体制组成,流密码分组密码数据加密标准(DES)高级加密标准(AES),2022/12/17,Page: 30,对称密码体制:分组密码,分组密码的工作原理将明文分成n个块,m1, m2, , mn;对每个块执行相同的变换,从而生成n个密文块,c1, c2, , cn。分组密码的工作模式:明文分组固定,消息的数据量不同,数据格式各式各样。为了适应各种应用环境,有四种工作模式。电子编码薄模式(EBC)密码分组链接模式(CBC)密码反馈模式(CFB)输出反馈模式(OFB),2022/12/17,Page: 31,分组密码:分组密码的工作模式比较,2022/12/17,Pa
13、ge: 32,分组密码:分组密码的经典工作模式,电子编码薄模式,密码分组链接模式,输出反馈模式,2022/12/17,Page: 33,分组密码:分组密码的扩散与压缩,分组密码的基本过程将明文分成m个块,M1, M2, , Mm;对每个块执行相同的变换,从而生成m个密文块,C1, C2, , Cm。,2022/12/17,Page: 34,分组密码:分组密码的扩展与压缩,将明文x和密文y表示成分别小于2m和2n的整数,并用分量形式描述。每个分量分别用xi,yiGF(2) 表示,即:若nm,则为有数据扩展的分组密码;若nm,则为有数据压缩的分组密码。分组密码就是将|x|映射为|y|,(|x|0,
14、1,2m-1,|y|0,1,2n-1)即为到其自身的一个置换,即 y = (x),2022/12/17,Page: 35,分组密码:分组密码的置换,设明文分组长度为n比特,则明文分组的取值为2n。为了使加密运算可逆,每一个明文对应的密文唯一,这样的变换是可逆的,并称明文到密文的变换为置换。基本的置换左循环移位(Shift left circular)代换、右循环移位(Shift right circular)代换模2n加1(Addition with module)代换线性变换(Linear transformation)换位(Transposition)代换连线交叉或坐标置换仿射变换(Aff
15、ine transform),2022/12/17,Page: 36,分组密码:Feistel网络,Feistel网络将n bit明文分成为左右各半、长为n/2 bit的段,以L和R表示。然后进行多轮迭代,其第i轮迭代的输出为前轮输出的函数 Li =Ri-1 Ri =Li-1 f(Ri-1, ki) 式中,ki是第i轮用的子密钥,f是任意密码轮函数。Feistel网络的特征保证加密和解密可采用同一算法实施。在设计整个分组密码的代换网络时,要求输出的每比特密文都和输入的明文及密钥各比特有关,这对增加密码强度有好处。,2022/12/17,Page: 37,分组密码:迭代分组密码,迭代分组密码:若
16、以一个简单函数f,进行多次迭代,就称其为迭代密码。每次迭代称作一轮(Round),相应函数f称作轮函数。每一轮输出都是以前一轮输出作为输入参数的函数,即yi=fyi-1, ki,其中ki是第i轮迭代用的子密钥,由秘密密钥k通过密钥生成算法产生。,2022/12/17,Page: 38,分组密码:分组密码的填充问题,问题的由来分组加密法是作用于有固定大小的明文/密文块。如果明文的大小不是块大小的整数倍怎样处理?分组密码的填充:添加足够多的特殊字符,使得明文长度是块大小的整数倍。 填充必须可逆一种可行的填充方法用文件结束字符表示明文分组的最后一个字节;每一个分组都必须以0、1或者0、1交替的模式填
17、充,即使明文以分组的边界结束,也必须添加一个整分组。,2022/12/17,Page: 39,分组密码:分组密码的评估,分组密码如何才算是安全?密钥必须足够大,使强力攻击失效或者得不偿失恺撒密码;如果加密法通过了随机测试,在一定时间内能给人以安全性。雪崩条件(avalanche condition):任何输入位或密钥位与输出位之间不应有任何连续,即密文中不能有内容含有关于密钥或明文的提示。精确密文雪崩标准:无论密文块的任意一位有变,密文块每个位发生改变的概率为50%;精确密钥雪崩标准:对于一个长度固定的明文块,当密钥的任意一位发生改变时,密文款每个位发生改变的概率为50%。,2022/12/1
18、7,Page: 40,对称密码体制组成,流密码分组密码数据加密标准(DES)高级加密标准(AES),2022/12/17,Page: 41,对称密码体制:数据加密标准(DES)的历史,20世纪70年代中期,美国政府认为需要一个功能强大的标准加密系统,提出开发这种加密法的请求;1973年5月15日,国家标准局(National Bureau of Standards, NBS)开始公开征集标准加密算法,并公布了它的设计要求算法必须提供高度的安全性算法必须有详细的说明,并易于理解算法的安全性取决于密钥,不依赖于算法算法适用于所有用户算法适用于不同应用场合算法必须高效、经济算法必须能被证实有效算法必
19、须是可出口的,2022/12/17,Page: 42,对称密码体制:数据加密标准(DES)的历史,IBM提出的Lucifer加密系统在此次征集中获得了胜利;1977年,根据美国国家安全局的建议进行了一些修改后,Lucifer成为数据加密标准(data encryption standard, DES);1980年,DES成为美国标准化协会(ANSI)标准;1983年,国际化标准组织赞同DES作为国际标准,称之为DEA-1;1984年2月,ISO成立的数据加密技术委员会(SC20)在DES基础上制定数据加密的国际标准工作;DES最后被高级加密标准(advanced encryption stan
20、dard, AES)代替。,2022/12/17,Page: 43,DES:数据加密标准(DES)的特征,数据加密标准(DES)的特征分组加密算法:明文和密文为64位分组长度;对称算法:加密和解密除密钥编排不同外,使用同一算法;密钥长度:64位,但每个字节第8位为奇偶校验位,可忽略;密钥可为任意的56位数,但存在弱密钥,尽量避开;采用混乱和扩散的组合,每个组合先替代后置换,共16轮;只使用了标准的算术和逻辑运算,易于实现。,2022/12/17,Page: 44,DES:加/解密流程,2022/12/17,Page: 45,DES:算法处理流程,2022/12/17,Page: 46,DES:
21、初始置换IP和IP-1,IP和IP-1在密码意义上作用不大,因为输入组x与其输出组y=IP(x) (或IP-1(x)是已知的一一对应关系。它们的作用在于打乱原来输入x的ASCII码字划分的关系,并将原来明文的校验位x8, x16, x64变成为IP输出的一个字节。,2022/12/17,Page: 47,DES:乘积变换,乘积变换是DES算法的核心部分将经过IP置换后的数据分成32 bit的左右两组;每次迭代时只对右边的32 bit进行一系列的加密变换,在此轮迭代即将结束时,把左边的32 bit与右边得到的32 bit逐位模2相加,作为下一轮迭代时右边的段;将原来右边未经变换的段直接送到左边的
22、寄存器中作为下一轮迭代时左边的段;在每一轮迭代时,右边的段要经过选择扩展运算E、密钥加密运算、选择压缩运算S、置换运算P和左右混合运算。,2022/12/17,Page: 48,DES:乘积变换工作流程,2022/12/17,Page: 49,DES:选择扩展运算,选择扩展运算E:将输入的32 bit Ri-1扩展成48 bit的输出令s表示E原输入数据比特的原下标,则E的输出是将原下标s0或1(mod 4)的各比特重复一次得到的,即对原第32, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29各位都重复一次,实现数据扩展。,2022/
23、12/17,Page: 50,DES:加密运算和压缩运算,密钥加密运算:将子密钥产生器输出的48 bit子密钥ki与选择扩展运算E输出的48 bits数据按位模2相加。选择压缩运算S:将前面送来的48 bit数据自左至右分成8组,每组为6 bit;而后并行送入8个S一盒,每个S盒为一非线性代换网络,有4个输出。,2022/12/17,Page: 51,DES:压缩运算-s盒,s盒的工作原理基于s-表:以表S1为例子说明使用方法,2022/12/17,Page: 52,DES:置换和左右混合,置换运算P:对S1至S8盒输出的32 bit数据进行坐标置换。左右混合运算:置换P输出的32 bit数据
24、与左边32 bit,即Ri-1,逐位模2相加,所得到的32 bit作为下一轮迭代用的右边的数字段。并将Ri-1并行送到左边的寄存器,作为下一轮迭代用的左边的数字段。,2022/12/17,Page: 53,DES:子密钥产生器,子密钥产生器:在64 bit初始密钥中有8位为校验位,其位置号为8、16、32、48、56和64。其余56位为有效位,用于子密钥计算。置换选择PC1:将这56位送入置换选择PC1进行坐标置换;循环移位置换:将上述结果分成两组28 bit,分别送入C和D寄存器中。在各次迭代中,C和D寄存器分别将存数进行左循环移位置换;置换选择PC2:每次移位后,将C和D寄存器原存数送给置
25、换选择PC2。置换选择PC2将C中第9、18、22、25位和D中第7、9、15、26位删去,并将其余数字置换位置后送出48 bit数字作为第i次迭代时所用的子密钥ki。,2022/12/17,Page: 54,DES:子密钥产生器,2022/12/17,Page: 55,DES:加/解密数学描述,加密过程L0R0 IP(64 bit 明文)LiRi-1 RiLi-1f(Ri-1, ki) i=1,. , 16 (64 bit密文)IP-1 (R16L16)解密过程:DES的加密运算是可逆的,其解密过程可类似地进行。R16L16 IP(64 bit密文)Ri-1 Li Li-1Rif(Li-1,
26、 ki) i=16,., 1(64 bit明文)IP-1 (R0L0),2022/12/17,Page: 56,DES:公开性和脆弱性,DES的脆弱性DES的安全性完全依赖于所用的密钥,56位不太可能提供足够的安全性DES的半公开性S盒的设计原理至今未公布,可能隐含有陷井几种攻击的计算代价强力攻击:255次尝试差分密码分析法:247次尝试线性密码分析法:243次尝试,2022/12/17,Page: 57,DES:算法分析,互补性:若明文组x逐位取补,密钥k逐位取补,且y = DESk(x),则有 ,称这种特性为算法上的互补性。这种互补性会使DES在选择明文破译下所需的工作量减半。弱密钥:DE
27、S算法在每次迭代时都有一个子密钥供加密用。如果给定初始密钥k,各轮的子密钥都相同,即有k1= k2= =k16,就称给定密钥k为弱密钥(Weak key)。半弱密钥:两个不同密钥将同一明文加密成相同密文,一个用来加密,一个用来解密。,2022/12/17,Page: 58,DES:算法分析,RSA数据安全公司提供10000美元奖金。现已被DESCHALL小组经过近四个月的努力,通过Internet搜索了31016个密钥,找出了DES的密钥,恢复出明文。1998年5月美国Electronic Frontier Foundation)宣布,他们以一台价值20万美元的计算机改装成的专用解密机,用56
28、小时破译了56 bits密钥DES。1991年研究表明DES搜索机成本如下。,2022/12/17,Page: 59,对称密码体制:DES的差分密码分析,差分攻击是一种选择明文攻击,对DES中的非线形的s-box的分析 s-box输入为6 bit,输出为4 bit,设为s(x);选择二进制数a, b和c都为6 bit,d为4 bit;a异或bc,则s(a)异或s(b) = d的概率远远大于1/16(抗差分攻击的分组密码此概率恒等1/2n,n为s-box输出位数);由此性质可得部分密钥的信息,通过穷举就可以得出密钥。,2022/12/17,Page: 60,对称密码体制:分组密码的差分密码分析,
29、差分密码分析是一种攻击迭代分组密码的选择明文统计分析破译法,与一般统计分析法不同之处是,它不是直接分析密文或密钥的统计相关性,而是分析明文差分和密文差分之间的统计相关性。给定一个r轮迭代密码,对已知n长明文对X和X,定义其差分为X=X(X)-1,其中,表示n-bits组X的集合中定义的群运算,(X)-1为X在群中的逆元。在密钥k作用下,各轮迭代所产生的中间密文差分为 Yi=Yi(Yi)-1 0ir,2022/12/17,Page: 61,对称密码体制:分组密码的差分密码分析,i=0时,Y0=X,Y0=X,Y0=X。i=r时,Y=Yr,ki是第i轮加密的子密钥,Yi=f(Yi1, ki)。由于X
30、X,因此,Yie(单位元),即YiF2ne。每轮迭代所用子密钥ki与明文统计独立,且可认为服从均匀分布。,2022/12/17,Page: 62,对称密码体制:分组密码的差分密码分析,输入一对X和X,则差分X已知。同理,输出Y已知;由于扩展置换E和P-盒已知,则A和C已知;虽然无法知道B和B,但是B = A;对任意给定的A,C值不一定相同。将A和C联合起来,可以猜测的A异或ki及A异或ki的位值,应为A和A已知,故可推测ki的信息。,2022/12/17,Page: 63,对称密码体制:分组密码的差分密码分析,差分密码分析的r-轮特征明文对Y0和Y0的差分序列a0,ar(其中ai是第i轮输出Y
31、i和Yi的差分)r-轮特征a0,ar条件下,轮函数输出特定差分的概率pi = P(F(Y) = ai | Y = ai-1) 即为输入差分为ai-1的条件下,轮函数F的输出差分为ai的概率。r-轮特征的概率r-轮特征a0,ar条件下, r-轮特征的概率为p = p0 p1 pr,2022/12/17,Page: 64,对称密码体制:分组密码的差分密码分析,差分密码分析步骤找出一个(r-1)-轮特征,使它的概率达到最大;均匀选择Y0并计算Y0,使得Y0和Y0的差分为a0,找出在实际密钥加密下所得到的密文Yr和Yr。若最后一轮的子密钥kr有2m个可能krm,则设置2m个计数器;用每个子密钥解密Yr
32、和Yr,得到Yr-1和Yr-1,如果差分是ar-1,则对应计数器加一;重复第二步,直到一个或几个计数器的值明显高于其它计数器,输出它们所对应的子密钥(或部分比特)。,2022/12/17,Page: 65,对称密码体制:分组密码的差分密码分析,研究结果表明,迭代密码的简单轮函数f在如下意义下通常是密码上弱的:对于Yi=f(Yi1, ki)和Yi=f(Yi1, ki),若三元组(Yi,Yi,Yi)的一个或者多个值是已知的,则确定子密钥ki是容易的。从而,若密文对已知,并且最后一轮的输入对的差分能以某种方式得到,则一般来说,确定最后一轮的子密钥或其一部分是可行的。在差分密码分析中,通过选择具有特定
33、差分值Y0的明文对(Y0,Y0),使得最后一轮的输入差分以很高的概率取特定值来达到这一点。,2022/12/17,Page: 66,对称密码体制:分组密码的线形密码分析,线性密码分析的内涵使用线性近似值来描述分组密码线性密码分析的原理将明文的一些位、密文的一些位分别进行异或运算;将这个结果进行异或。,2022/12/17,Page: 67,对称密码体制:分组密码的线形密码分析,假设条件设明文分组长度和密文分组长度都为n比特,密钥分组长度为m比特;明文:P1,Pn;密文:P1,Pn;密钥:K1,Km。定义 Ai,j = PiPj线性分析的目标找出有效的线性方程:Pi1,iaCj1,jb = Kk
34、1,kc;上面的线性方程将得到一个位,这一位是将密钥的一些位进行异或运算的结果。,2022/12/17,Page: 68,对称密码体制:分组密码的线形密码分析,方程成立的概率p(如果p1/2,那么就可以使用该偏差,用得到的明文及对应的密文来猜测密钥的位值)如果p1/2,则称该方程是有效的线性逼近;如果|p - 1/2|是最大的,则称该方程是最有效的线性逼近。设N表示明文数,T是使方程左边为0的明文数T N / 2Kk1,kc = 0(p ) Kk1,kc = 1(p ) Kk1,kc = 0(p ),2022/12/17,Page: 69,对称密码体制:分组密码的线形密码分析,一个重要的数学结
35、论(线性密码分析的思想,抗线性密码分析的强度就是非线性度)如果明文和密文的关系是n维线性关系,且系数是密钥,则n个明文-密文对(而不是2n个)就可以破解密钥;如果明文与密文的关系是n维r次函数关系,且系数是密钥,则nr 个明文-密文对就可以破解密钥;如果虽然次数r较大,但明文与密文的关系“非常逼近”一个n维线性关系,则n个明文-密文对就可以“基本上”破解密钥。,2022/12/17,Page: 70,对称密码体制:两重DES,2022/12/17,Page: 71,对称密码体制:三重DES,2022/12/17,Page: 72,对称密码体制组成,流密码分组密码数据加密标准(DES)高级加密标
36、准(AES),2022/12/17,Page: 73,对称密码体制:高级加密标准(AES)的由来,1997年1月,美国NIST向全世界密码学界发出征集21世纪高级加密标准(Advanced Encryption Standard, AES)算法的公告,并成立了AES标准工作研究室,1997年4月15日的例会制定了对AES的评估标准。,2022/12/17,Page: 74,对称密码体制:高级加密标准的评估标准,高级加密标准(AES)的评估标准AES是公开的;AES为单钥体制分组密码;AES的密钥长度可变,可按需要增大;AES适于用软件和硬件实现;AES可以自由地使用/按符合美国国家标准(ANS
37、T)策略的条件使用;满足以上要求的AES算法,需按下述条件判断优劣:a. 安全性,b. 计算效率, c. 内存要求, d. 使用简便性,e. 灵活性。,2022/12/17,Page: 75,对称密码体制:高级加密标准(AES)的历史,1997年4月15日NIST发起征集AES的活动(要求算法分组长度128比特,密钥长度128192256比特);1998年8月20日第一次AES候选大会,公布了15个候选算法;1999年3月22日举行了第二次AES候选大会,选出5个候选算法;2000年4月25日举行了第三次AES候选大会;2000年10月2日公布Rijndael算法作为候选算法。比利时的Joan
38、 Daemen和Vincent Rijmen 设计的 Rijndael 算法:是一个迭代分组密码,块长为128/192/256 bits,密钥长度为128、192、256 bits,相应的轮数为10/12/14。,2022/12/17,Page: 76,AES:AES的特征,AES特征AES是分组密码,属于Square结构加密、解密相似但不对称密钥长度和分组长度均可变,密钥长度和分组长度可以独立地指定为128比特、192比特或256比特有较好的数学理论作为基础结构简单、速度快能在多种平台上以较快的速度实现,2022/12/17,Page: 77,AES:消息分组和密钥分组,消息分组和密钥分组分
39、别按字节进行划分(一个字节8比特),为简单起见,只讨论密钥长度128比特、消息长度192比特的情形。明文分组 = a00, , a30, , a05, , a35密钥分组 = k00, , k30, , k03, , k33,2022/12/17,Page: 78,AES:迭代轮数与密钥、消息分组的关系,Rijndael算法同DES一样,由多基本的变换单位“轮”多次迭代而成。迭代轮数与密钥、消息分组的关系表,其中以Nr表示迭代轮数Nb表示消息分组按字节划分的矩阵列数(行数等于4)Nk表示密钥分组按字节划分的矩阵列数(行数等于4),2022/12/17,Page: 79,AES:轮变换,轮变换R
40、ound(State, RoundKey)State:轮消息矩阵,既作为输入,又作为输出;RoundKey:轮密钥矩阵,它由输入密钥通过密钥表导出。轮变换由四个不同的变换组成(除最后一轮)最后一轮记为FinalRound(State, RoundKey)它等于不使用MixColumns函数的Round(State, RoundKey),Round(State, RoundKey) SubBytes(State); ShiftRows(State); MixColumns(State); AddRoundKey(State, RoundKey); ,2022/12/17,Page: 80,AES
41、:SubBytes(State),SubBytes为State的每一个字节提供一个非线形变换,任一非零字节xGF(28)被下面的变换所代换(仿射变换)y = Ax-1 + b,2022/12/17,Page: 81,AES: SubBytes(State),查表法定时分析攻击计算x-1 (x, x-1)计算y包含矩阵A和向量b,(x, y),aij,bij,2022/12/17,Page: 82,AES:ShiftRows(State),ShiftRows在State的每行运算,它只重排了元素的位置而不改变元素本身,实质为换位密码,以128比特的明文长度为例对在第i行的元素,换位变换就是“循环
42、向右移动” 4 i个位置。字节移位关系表,2022/12/17,Page: 83,AES:MixColumns(State),MixColumns在State的每列上作用,列作为GF(28)上的多项式,每次迭代的输出为一列s(x) = c(x) . s(x) mod(x4 + 1) 其中,c(x) = 03 . x3 + 01 . x3 + 01 . x3 + 02, 内的数表示字节,c(x)与x4 + 1互素,2022/12/17,Page: 84,AES:AddRoundKey操作,按比特在F2上相加(XOR),=,2022/12/17,Page: 85,AES:密钥编排,密钥编排密钥编排
43、是指从种子密钥得到轮密钥的过程,它由密钥扩展和轮密钥选取两部分组成轮密钥的比特数等于分组长度乘以轮数加1 = 32 Nb (Nr + 1);种子密钥被扩展成为扩展密钥;轮密钥从扩展密钥中取,其中第1轮轮密钥取扩展密钥的前Nb个字,第2轮轮密钥取接下来的Nb个字,如此下去。,2022/12/17,Page: 86,AES:KeyExpansion(key, w),KeyExpansion(key, w)key用于存储扩展前的密钥;w用于存储扩展后的密钥;以128比特的密钥为例输入的密钥key直接被复制到密钥数组的前四个字,w0, w1, w2, w3;w数组中下标不为4的倍数的元素按以下规则扩展
44、wi = wi -1 wi - 4,2022/12/17,Page: 87,AES:KeyExpansion(key, w),下标为4的倍数的元素按以下规则扩展将一个字的四个字节循环左移一个字节,即将b0, b1, b2, b3变为b1, b2, b3, b0;基于SubBytes对输入字中的每个字节进行代替;S盒将步骤1和步骤2的结果再与轮常量Rconi相异或。Rconi = (RCi, 00, 00, 00)RC1 = 01RCi = 2 . (RCi - 1),2022/12/17,Page: 88,AES:KeyExpansion() - Nk6,KeyExpansion(byte k
45、ey4 * Nk, word wNb * (Nr + 1) for(i = 0; i Nk; i+) wi = (key4 * i, key4 * i + 1, key4 * i + 2, key4 * i + 3); for(i = Nk; i Nb * (Nr + 1); i+) temp = wi - 1; if(i % Nk = 0) temp = SubBytes(temp 8)Rconi / Nk; wi = wi - Nktemp; ,2022/12/17,Page: 89,AES:KeyExpansion() - Nk6,KeyExpansion(byte key4 * Nk,
46、 word wNb * (Nr + 1) for(i = 0; i Nk; i+) wi = (key4 * i, key4 * i +1, key4 * i + 2, key4 * i +3); for(i = Nk; i Nb * (Nr + 1); i+) temp = wi - 1; if(i % Nk = 0) temp = SubBytes(temp 8)Rconi/ Nk; else if(i % Nk = 4) temp = SubBytes(temp 8); wi = wi - Nktemp; ; ;,2022/12/17,Page: 90,AES:加密,Rijndael(S
47、tate,CipherKey) KeyExpansion(CipherKey, ExpandedKey); AddRoundKey(State, ExpandedKey) for(i = 1; i Nr; +i) ByteSub(State); ShiftRow(State); MixColumn(State); AddRoundKey(State, ExpandedKey + Nb * i); ByteSub(State); ShiftRow(State); AddRoundKey(State, ExpandedKey + Nb * i); ,2022/12/17,Page: 91,AES:
48、解密,AddRoundKey()for(i = 1; i Nr; +i) SubBytes(); ShiftRow(); MixColumn(); AddRoundKey() ByteSub();ShiftRow();AddRoundKey(),I_AddRoundKey()I_ShiftRow();I_ByteSub();for(i = 1; i Nr; +i) I_AddRoundKey() I_MixColumn(); I_ShiftRow(); I_SubBytes();I_AddRoundKey(),I_AddRoundKey()for(i = 1; i Nr; +i) I_ShiftRow(); I_SubBytes(); I_AddRoundKey() I_MixColumn();I_ShiftRow();I_ByteSub();I_AddRoundKey(),2022/12/17,Page: 92,AES:安全性分析,对比其它算法的消除了DES中出现的弱密钥的可能消除了IDEA中发现的弱密钥能有效抵抗目前已知的攻击算法线性攻击差分攻击,