![第三章分组密码课件_第1页](http://file4.renrendoc.com/view/593325e7cd31a38bd0e3fea2eefccb23/593325e7cd31a38bd0e3fea2eefccb231.gif)
![第三章分组密码课件_第2页](http://file4.renrendoc.com/view/593325e7cd31a38bd0e3fea2eefccb23/593325e7cd31a38bd0e3fea2eefccb232.gif)
![第三章分组密码课件_第3页](http://file4.renrendoc.com/view/593325e7cd31a38bd0e3fea2eefccb23/593325e7cd31a38bd0e3fea2eefccb233.gif)
![第三章分组密码课件_第4页](http://file4.renrendoc.com/view/593325e7cd31a38bd0e3fea2eefccb23/593325e7cd31a38bd0e3fea2eefccb234.gif)
![第三章分组密码课件_第5页](http://file4.renrendoc.com/view/593325e7cd31a38bd0e3fea2eefccb23/593325e7cd31a38bd0e3fea2eefccb235.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章分组密码分组密码(BlockCipher),一类对称密码算法:将明文消息分组,逐组加密;将明文消息编码表示后的数字序列x0,x1,…,xi,…划分成长为n的组x=(x0,x1,…,xn-1)(长为n的矢量)各组分别在密钥k=(k0,k1,…,kt-1)K控制下变换成输出序列y=(y0,y1,…,ym-1)Vm(长为m的矢量)其加密函数E:Vn×K→Vm,K为密钥空间分组密码实质上是字长为m的数字序列的代换密码1/算法的输入长度和输出长度1.通常取m=n(用于加密)2.若m≠n,则为有数据扩展(m>n)/压缩(m<n)/的分组密码(用于认证)
2/
第三章分组密码1.代换置换网络SPN
2.堆积引理与S盒的线性逼近
3.线性密码分析与差分密码分析
4.数据加密标准DES5.高级加密标准AES3.1代换-置换网络SPN问题:什么是SPN?
预备知识:1.1设l和m都是正整数,明文密文都是长为lm的二元向量(即lm是该密码的分组长度)一个SPN包括两个变换,分别记为
都是置换,置换叫做S盒,
1.2给定一个lm比特的二元串将其看作
1.3SPN由Nr轮组成,在每一轮(除了最后一轮稍有不同外),我们先用异或操作混入该轮的轮密钥,再用进行m次代换,然后用进行一次置换。密码体制3.1
代换置换网络
设和Nr都是正整数,和都是置换,设,是由初始密钥K用密钥编排算法生成的所有可能的密钥编排方案之集对于一个密钥编排方案,我们使用算法3.1来加密明文
算法3.1
for
to
在算法3.1中,是第r轮对S盒的输入,是第r轮对S盒的输出。由应用置换得到,然后由轮密钥异或得到(这叫做轮密钥混合),最后一轮没有用置换
因此,如果密钥编排方案作适当修改并用S盒的逆来取代S盒,那么该加密算法也能用来解密。
该SPN的第一个和最后一个操作都是异或轮密钥,这叫做白化。白化可使一个不知道密钥的攻击者,无法开始进行一个加密或解密操作。
图3.1给出了这个具体的SPN(为后面叙述的方便,在这个图中我们命名了16个S盒它们都是基于同样的置换)为了完成该SPN的描述,需要确定一个密钥编排算法。从一个32比特的密钥开始,对轮数,定义是由K中从开始的16个连续比特组成(选择这样的简单密钥编排方案只是为了说明SPN,并非是一种很安全的方式)。下面我们使用SPN来进行加密。所有数据都用二元形式表示。设密钥为K=00111010100101001101011000111111则轮密钥如下:
=00111010100101003.3线性密码分析1.堆积引理预备:考虑离散随机变量容易看出具有概率分布:
定义:的偏差为注意:对于
引理3.1(堆积引理)设是独立随机变量,表示随机变量的偏差,则
证明
对k应用归纳法进行证明。当k=1时,结论显然成立。我们现在来证明k=2时结论成立。使用前面的等式,我们有结论成立。
假设时结论成立,正整数则当时,我们需要确定的偏差,可将这个随机变量分为如下两个部分:
即有归纳假设,的偏差为,而的偏差为。因此,的偏差为
结论成立。注意引理3.1一般只在随机变量是统计独立的情况下才成立。反例:假设,由引理3.1有现在考虑随机变量,显然如果随机变量和相互独立,则有引理3.1可知,然而,由于和并不相互独立。推论3.2
设时独立随机变量,表示随机变量的偏差,若对某j,有则2.S盒的线性逼近
考虑如下一个S盒,m重输入均匀随机的从集合中选取,这就是说每一个坐标定义了一个随机变量,取之于并且其偏差。更进一步,这m个随机变量相互独
立。n重输出中,每一个坐标定义了一个随机变量,取值于。这n个随机变量一般说来并不相互独立,与也不相互独立。如果,则
后一公式成立是因为并且,如果,则
此时计算就相对直接多了例3.2我们任然用例3.1中的S盒,在表3.1的行中记下了八个随机变量所有可能的取值。现在考虑随机变量通过计算表3.1中的行数,可以得到该随机变量取值为零的概率因此可见,该随机变量的偏差为0再分析随机变量可看到该随机变量的偏差为-3/8.
表3.1一个S盒定义的随机变量
线性密码分析-已知明文攻击线性密码分析是对迭代密码的一种已知明文攻击,它利用的是密码算法中的“不平衡(有效)的线性逼近”。设明文分组长度和密文分组长度都为n比特,密钥分组长度m比特,记明文分组为P[1],P[2],…,P[n],比特形式密文分组为C[1],C[2],…,C[n],密钥分组为K[1],K[2],…,K[m]。定义:A[i,j,…,k]=A[i]A[j]…A[k]线性密码分析的目标就是找出以下形式的线性方程:P[i1,i2,…,ia]C[j1,j2,…,jb]=K[k1,k2,…,kc],其中1an,1bn,1cm即P中的某a个bit和C中的某b个比特与K中某c个比特满足线性方程如果对于猜测的密钥和已知的大量明密文对,方程成立的概率p≠1/2,则称该方程是有效的线性逼近。如果|p-1/2|是最大的,则称该方程是最有效的线性逼近。等于1/2时说明随机性很好,再多明密文对也不暴露任何信息21/
线性密码分析-已知明文攻击设N表示明文数,T是使方程左边为0的明文数。如果T>N/2,则令K[k1,k2,…,kc]=如果T<N/2,则令
K[k1,k2,…,kc]=从而可得关于密钥比特的一个线性方程。对不同的明文密文对重复以上过程,可得关于密钥的一组线性方程,从而确定出密钥比特。
P[i1,i2,…,ia]
C[j1,j2,…,jb]=K[k1,k2,…,kc]
A[i,j,…,k]=A[i]
A[j]
…
A[k]22/如果方程成立的概率大于1/2,则由于使得左边为0的明文数T大于总明文数的一半,在所有方程成立的情况中,左边得0的可能性更大,所以此时令右边取0。反之方程不成立的概率大于一半,则左边1多,右边取1
差分密码分析-选择明文攻击差分密码分析是迄今已知的攻击迭代密码最有效的方法之一其基本思想是:通过分析明文对的差值对密文对的差值的影响来恢复某些密钥比特。对分组长度为n的r轮迭代密码,两个n比特串Yi和Yi*的差分定义为ΔYi=Yi×(Yi*)-1。其中×表示n比特串集上的一个特定群运算,(Yi*)-1表示Yi*在此群中的逆元。在DES的差分分析中差分的计算选择YiYi*,因为运算的单位元是0元由加密对可得差分序列:ΔY0,ΔY1,…,ΔYr其中Y0和Y0*是明文对,Yi和Yi*(1≤i≤r)是第i轮的输出,它们同时也是第i+1轮的输入。第i轮的子密钥记为Ki,F是轮函数,且Yi=F(Yi-1,Ki)。23/
差分密码分析-选择明文攻击定义4-1:r-轮特征(r-roundcharacteristic)Ω是一个差分序列:α0,α1,…,αr其中α0是明文对Y0和Y0*的差分,αi(1≤i≤r)是第i轮输出Yi和Yi*的差分r-轮特征Ω=α0,α1,…,αr的概率是指在明文Y0和子密钥K1,…,Kr独立、均匀随机时,明文对Y0和Y0*的差分为α0的条件下,第i(1≤i≤r)轮输出Yi和Yi*的差分为αi的概率。共有r个概率值定义4-2:在r-轮特征Ω=α0,α1,…,αr中,定义
piΩ=P(ΔF(Y)=αi|ΔY=αi-1)即piΩ表示在输入差分为αi-1的条件下,轮函数F的输出差分为αi的概率。(转移概率)
r-轮特征Ω=α0,α1,…,αr的概率近似看作。24/差分密码分析-选择明文攻击对r-轮迭代密码的差分密码分析过程可综述为如下步骤:①找出一个(r-1)-轮特征Ω(r-1)=α0,α1,…,αr-1,使得它的概率达到最大或几乎最大。(通过统计分析或者数学推导的方法)②均匀随机地选择明文Y0并计算Y0*,使得Y0和Y0*的差分为α0,找出Y0和Y0*在实际密钥加密下所得的密文Yr和Yr*。若最后一轮的子密钥Kr(或Kr的部分比特)有2m个可能值Krj(1≤j≤2m),设置相应的2m个计数器Λj(1≤j≤2m)。用每个Krj解密密文Yr和Yr*,得到Yr-1和Yr-1*,如果Yr-1和Yr-1*的差分是αr-1,则给相应的计数器Λj加1。③重复步骤②,直到一个或几个计数器的值明显高于其他计数器的值,输出它们所对应的子密钥(或部分比特)。25/Feistel密码结构Feistel密码结构(一种特殊的SPN结构)早期,很多成功的分组密码的结构从本质上说都是基于一个称为Feistel网络的结构加解密相似是Feistel型密码的一个实现优点,但它对于密码的扩散似乎有些慢,例如需要两轮才能改变输入的每一个比特。不过在实用中似乎并不会形成较大的影响,只要轮数足够多。Feistel提出利用乘积密码可获得简单代换密码多轮迭代每一轮变换实际上是一种SPNFeistel还提出了实现代换和置换的方法
其思想实际上是Shannon提出的利用乘积密码实现混淆和扩散思想的具体应用26/Feistel密码结构27/1.Feistel加密结构HorstFeistel在70年代初设计了这样的结构,我们现在叫做Feistelcipher每组明文分成左右两半L0和R0其第i轮迭代的输入为前一轮输出的函数:Li=Ri-1Ri=Li-1F(Ri-1,Ki)Ki是第i轮用的子密钥,各轮不同,由密钥K产生最后一轮完成后再左右交换Feistel密码结构Feistel网络的实现与以下参数和特性有关:①分组大小分组越大则安全性越高,但加密速度就越慢。分组密码设计中最为普遍使用的分组大小是64比特。当前多使用128比特以上②密钥大小密钥越长则安全性越高,但加密速度就越慢。现在普遍认为64比特或更短的密钥长度是不安全的,通常使用128比特的密钥长度。③轮数单轮结构远不足以保证安全性,但多轮结构可提供足够的安全性。典型地,轮数取为16。④子密钥产生算法:该算法的复杂性越大,则密码分析的困难性就越大。⑤轮函数:轮函数的复杂性越大,密码分析的困难性也越大。28/Feistel密码结构在设计Feistel网络时,还有以下两个方面需要考虑①快速的软件实现在很多情况中,算法是被镶嵌在应用程序中,因而无法用硬件实现。此时算法的执行速度是考虑的关键②算法容易分析如果算法能被无疑义地解释清楚,就可容易地分析算法抵抗攻击的能力,有助于设计高强度的算法2.Feistel解密结构Feistel解密过程本质上和加密过程是一样的,使加解密可用同一算法,算法使用密文作为输入,但使用子密钥Ki的次序与加密过程相反,即第1轮使用Kn,第2轮使用Kn-1,…,最后一轮使用K1。29/Feistel密码结构加密过程由上而下解密过程由下而上图中右边标出了解密过程中每一轮的中间值与左边加密过程中间值的对应关系即加密过程第i轮的输出是LEi‖REi(‖表示链接)解密过程第17-i轮相应的输入是RDi‖LDi最后一轮输出密文是RE16‖LE1630/数据加密标准DESDES的产生美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的(通常称为DES密码算法要求)主要为以下四点:(1)提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;(2)计算安全性:具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;(3)基尔霍夫准则:DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础;(4)可行性:实现经济,运行有效,并且适用于多种完全不同的应用。31/数据加密标准DESDES在1975年3月17日首次被公布在联邦记录中经过大量的公开讨论后,1977年1月15日美国政府颁布:采纳美国IBM公司设计的方案作为非机密数据的正式数据加密标准(DES,DataEncryptionStandard),DES被正式批准并作为美国联邦信息处理标准,即FIPS-46,同年7月15日开始生效。它的分组长度为64比特,密钥长度为56比特,是早期的称作Lucifer密码的一种发展和修改。DES是迄今为止世界上最为广泛使用和流行的一种分组密码算法,1996年以后,主要是3DES32/DES算法描述加密:明文分组64bit初始置换IP16轮的Feistel结构初始逆置换IP-1是IP的逆密钥编排密钥56比特,每7bit加1个奇偶校验位,总计64比特置换函数PC-1左循环移位再置换函数PC-2输出本轮子密钥迭代16轮33/DES算法描述1.初始置换表3-2(a)和3-2(b)分别给出了初始置换和逆初始置换的定义,这两个置换是互逆的。64比特的明文M以8比特为一行,共8行,以行顺序编号由表3-2(a)得X=IP(M),由3-2(b)得Y=IP-1(X)=IP-1(IP(M))=M34/DES算法描述2.轮结构64比特的轮输入分为左右两半,右半部分是本轮子密钥产生过程35/和Feistel网络一样,每轮变换可由以下公式表示:Li=Ri-1
Ri=Li-1F(Ri-1,Ki)其中轮密钥Ki为48比特。DES算法描述函数F(R,K)的计算过程如上图所示,轮输入的右半部分R为32比特,R首先被扩展成48比特,扩展过程由表3.2(c)定义,其中将R的16个比特各重复一次。36/扩展后的48比特再与子密钥Ki异或,然后再通过8个S盒,产生32比特的输出。该输出再经过一个由表3.2(d)定义的置换P,产生的结果即为函数F(R,K)的输出。DES算法描述扩展置换E和置换P37/DES算法描述代换盒,简称S盒,substitutionboxSF中的代换由8个S盒组成,每个S盒的输入长为6比特、输出长为4比特,其变换关系由表3.3定义,每个S盒给出了4个代换(由一个表的4行给出)。DES的S盒定义38/DES算法描述对每个盒Si其6比特输入中,第1个和第6个比特形成一个2位二进制数,用来选择Si的4个代换中的一个中间4位用来选择列。行和列选定后,得到其交叉位置的十进制数,将这个数表示为4位二进制数即得这一S盒的输出。例如,S1
的输入为011001则行选为01(即第1行),列选为1100(即第12列)行列交叉位置的数为9,其4位二进制表示为1001,所以S1的输出为1001。S盒作为该密码体制的唯一非线性组件对安全性至关重要S-盒的设计准则还没有完全公开,一些密码学家怀疑美国NSA(theNationalSecurityAgency)设计S-盒时隐藏了陷门,即万能钥匙39/DES算法描述3.密钥的产生实际上,K是长度为64的位串,其中56位是密钥,8位是奇偶校验位(为了检错),在密钥编排的计算中,这些校验位可略去。DES密钥编排算法结构图LSi表示循环左移一个或两个位置其中i为1,2,9,16循环移1位,其余循环移两位40/DES算法描述综述加密过程:(1)给定64位的密钥K,放弃奇偶校验位(8,16,…,64)形成连续的56比特的密钥,对输入分组进行固定的“初始置换”IP,我们可以将这个初始置换写为,称为“左右半分组”32bits(2)再看DES加密算法框图,进行16轮迭代:,,输入算法的56比特密钥首先经过一个置换运算PC-1,该置换由表3.4(a)给出得到48比特的子串,称为布尔函数,它的特点是交换两半分组。在第i轮分别对进行左循环移位,所移位数由表3.4(c)给出。移位后的结果作为求下一轮子密钥的输入,同时也作为置换选择2PC-2的输入。通过置换选择2产生的48比特的Ki,即为本轮的子密钥,作为函数F(Ri-1,Ki)的输入。其中置换选择2由表3.4(b)定义(3)DES算法的输出,我们将最后一步写为:
注意的输入:在输入之前,16轮迭代输出的两个半分组又进行了一次交换。DES算法描述DES密钥编排中使用的表(表3-4)
(a)置换选择1(b)置换选择2(c)左循环移位位数
42/DES算法描述4.解密和Feistel密码一样,DES的解密和加密算法使用同一算法,但子密钥使用的顺序相反解密时子密钥的产生有两种方式:1)是先由K产生16个子密钥,再逆续使用2)反序产生。(在前面讲过的密钥扩展过程中若改LSi为
则也就可以依次产生这逆序的子密钥。43/
例
在加密密钥下,将明文消息加密为密文消息。让我们通过DES算法来确认解密函数的正确运算,也就是在下,的解密就输出。
解:解密算法首先输入密文作为“输入分组”,即但是因为c是实际上是加密算法中最后一步的“输出分组”,即:在第一轮中,我们有这两个式子的右边,
应该用
来代替,应该用其中,因此,上面两个式子实际上是下面的两个
所以,在第一轮解密以后,我们得到因此,在第二轮开始,两个半分组是.在随后的15轮中,使用同样的验证,我们将获得在16轮迭代得到的两个最后的半分组被交换为
然后输入到来消除IP在式中的影响。解密函数的输出确实是最初的明文分组m.DES的安全性问题完全依赖于所用的密钥,即算法是公开的DES的设计特色:在DES算法中函数是最基本的关键环节,其中(1)用S盒实现小块的非线性变换,达到混乱目的(2)用置换p实现大块的非线性变换,达到扩散目的(3)置换p的设计是每层s盒的4bit输出进入到下一层的4个不同S盒DES的安全性包括:取反特性,弱密钥和半弱密钥,密钥与密文和明文的关系,DES评估与穷搜索破译3.6高级加密标准AES
由于DES要花费比较大的软硬件代价,效率不尽如人意,况且DES密钥较短不能抵抗群搜索攻击,于是更好的标准AES走向了前台。
2000年10月2日NIST宣布Rijndael作为新的AES。至此,经过3年多的讨论,Rijndael终于脱颖而出。2006年,AES已然成为了对称密钥加密中重要的国际标准之一AES的应用产品:有移动硬盘,USB无线网卡,加密锁,指纹加密U盘,指纹加密防护盾等。
47/Rijndael的数学基础和设计思想1.有限域GF(28)有限域中的元素可以用多种不同的方式表示。对于任意素数的方幂,都有惟一的一个有限域,因此GF(28)的所有表示是同构的,但不同的表示方法会影响到GF(28)上运算的复杂度本算法采用传统的多项式表示法:将b7b6b5b4b3b2b1b0构成的字节b看成系数在GF(2)={0,1}中的多项式
b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0例如:十六进制数‘57’对应的二进制为01010111,看成一个字节,对应的多项式为x6+x4+x2+x+148/Rijndael的数学基础和设计思想AES的理论基础定义在GF(28),其基本的运算有三种,分别为加法,乘法和x乘。加法:在多项式表示中,GF(28)上两个元素的和仍然是一个次数不超过7的多项式,其系数等于两个元素对应系数的模2加(比特异或)。例如:‘57’+‘83’=‘D4’,用多项式表示为(x6+x4+x2+x+1)+(x7+x+1)=x7+x6+x4+x2(modm(x))用二进制表示为01010111+10000011=11010100由于每个元素的加法逆元等于自己,所以减法和加法相同。49/Rijndael的数学基础和设计思想乘法:要计算GF(28)上的乘法,必须先确定一个GF(2)上的8次不可约多项式,GF(28)上两个元素的乘积就是这两个多项式的模乘,在Rijndael密码中,这个8次不可约多项式确定为
m(x)=x8+x4+x3+x+1它的十六进制表示为‘11B’。二进制为100011011例如,‘57’·‘83’=‘C1’可表示为以下的多项式乘法:(x6+x4+x2+x+1)×(x7+x+1)=x7+x6+1(modm(x))乘法运算虽然不是标准的按字节的运算,但也是比较简单的计算部件。50/Rijndael的数学基础和设计思想以上定义的乘法满足交换律,且有单位元‘01’。逆元,对任何次数小于8的多项式b(x),可用推广的欧几里得算法得b(x)a(x)+m(x)c(x)=1即a(x)·b(x)=1modm(x),因此a(x)是b(x)的乘法逆元。再者,乘法还满足分配律:a(x)·(b(x)+c(x))=a(x)·b(x)+a(x)·c(x)所以,256个字节值构成的集合,在以上定义的加法和乘法运算下,有有限域GF(28)的结构非0元的乘法满足Abel群,加法满足Abel群,+,×满足分配率51/Rijndael的数学基础和设计思想X乘GF(28)上还定义了一个运算,称之为x乘法,其定义为x·b(x)=b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0x(modm(x))如果b7=0,求模结果不变,否则为乘积结果减去m(x),即求乘积结果与m(x)的异或。由此得出x(十六进制数‘02’)乘b(x)可以先对b(x)在字节内左移一位(最后一位补0),若b7=1,则再与‘1B’(其二进制为00011011)做逐比特异或来实现,该运算记为b=xtime(a)。在专用芯片中,xtime只需4个异或。x的幂乘运算可以重复应用xtime来实现。而任意常数乘法可以通过对中间结果相加实现。例如,‘57’·‘08’可按如下方式实现:‘57’·‘02’=xtime(57)=‘AE’;‘57’·‘04’=xtime(AE)=‘47’;‘57’·‘08’=xtime(47)=‘8E’;52/Rijndael的数学基础和设计思想2.系数在GF(28)上的多项式4个字节构成的向量可以表示为系数在GF(28)上的次数小于4的多项式,多项式的加法就是对应系数相加,即4字节向量的逐比特异或规定多项式的乘法运算必须要取模M(x)=x4+1,这样使得次数小于4的多项式的乘积仍然是一个次数小于4的多项式,将多项式的模乘运算记为×设a(x)=a3x3+a2x2+a1x+a0,b(x)=b3x3+b2x2+b1x+b0
c(x)=c3x3+c2x2+c1x+c0,c(x)=a(x)×b(x)mod(x4+1)而xjmod(x4+1)=xjmod4,所以c0=a0b0a3b1a2b2a1b3c1=a1b0a0b1a3b2a2b3c2=a2b0a1b1a0b2a3b3c3=a3b0a2b1a1b2a0b353/Rijndael的数学基础和设计思想可将上述计算表示为=注意到M(x)不是GF(28)上的不可约多项式(甚至也不是GF(2)上的不可约多项式),因此非零多项式的这种乘法不是群运算。不过在Rijndael密码中,对多项式b(x),这种乘法运算只限于乘一个固定的有逆元的多项式a(x)=a3x3+a2x2+a1x+a0。定理1系数在GF(28)上的多项式a3x3+a2x2+a1x+a0是模x4+1可逆的,当且仅当以下矩阵在GF(28)上可逆。54/55/证明:a3x3+a2x2+a1x+a0是模x4+1可逆的,当且仅当存在多项式h3x3+h2x2+h1x+h0,使得(a3x3+a2x2+a1x+a0)(h3x3+h2x2+h1x+h0)=1mod(x4+1)因此有(a3x3+a2x2+a1x+a0)(h2x3+h1x2+h0x+h3)=xmod(x4+1)(a3x3+a2x2+a1x+a0)(h1x3+h0x2+h3x+h2)=x2mod(x4+1)(a3x3+a2x2+a1x+a0)(h0x3+h3x2+h2x+h1)=x3mod(x4+1);将以上关系写成矩阵形式即得
=
c(x)=x×b(x)定义为x与b(x)的模x4+1乘法,即c(x)=x×b(x)=b2x3+b1x2+b0x+b3。其矩阵表示中,除a1=‘01’外,其他所有ai=‘00’,即=因此x(或x的幂)模乘多项式相当于对字节构成的向量进行字节循环移位Rijndael算法的特点
1.AES的加解密算法、密钥生成算法都是以State为输入
2.加密时,首先进行“轮密钥加”算法,然后重复9轮基本密码模块的迭代算法,每一轮有字节代换,行移位、列混淆和轮密钥加四个算法;最后进行第10轮运算,它与前面9轮比一样的地方,就是少了列混淆算法。
3.解密时,是执行加密的逆过程,但要注意在解密时,字节代换、行移位和列混淆三种运算是执行逆过程,算法设计完全不一样,只有轮密钥加算法和加密一样
2.轮函数Rijndael的轮函数由4个不同的计算部件组成,分别是:字节代换(ByteSub)、行移位(ShiftRow)列混合(MixColumn)、密钥加(AddRoundKey)(1)字节代换(ByteSub)字节代换是非线性变换,独立地对状态的每个字节进行。代换表(即S-盒)是可逆的,由以下两个变换的合成得到:①首先,将字节看作GF(28)上的元素,映射到自己的乘法逆元,‘00’映射到自己。②其次,对字节做如下的(GF(2)上的,可逆的)仿射变换:
上述S-盒对状态的所有字节所做的变换记为ByteSub(State)57/整个变换做成256字节的代换表,运算时查表即可
算法说明图3.19是字节代换示意图。ByteSub的逆变换由代换表的逆表做字节代换,可通过如下两步实现:首先进行仿射变换的逆变换再求每一字节在GF(28)上逆元58/S盒aijbij
算法说明(2)行移位(ShiftRow)行移位是将状态阵列的各行进行循环移位,不同状态行的位移量不同。第0行不移动第1行循环左移C1个字节第2行循环左移C2个字节第3行循环左移C3个字节位移量C1、C2、C3的取值与Nb有关,由表3.10给出。
表3.1059/
算法说明按指定的位移量对状态的行进行的行移位运算记为ShiftRo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度建筑木工环保建材研发与应用合同
- 2025年度城市更新工程款支付保证委托担保合同
- 邵阳2024年湖南邵阳市隆回县部分事业单位招聘20人笔试历年参考题库附带答案详解
- 绥化2024年黑龙江绥化市北林区事业单位招聘77人笔试历年参考题库附带答案详解
- 深圳2024年广东深圳市环境科学研究院招聘(第二批)笔试历年参考题库附带答案详解
- 枣庄2025年山东枣庄市商务发展促进中心高层次急需紧缺人才招聘2人笔试历年参考题库附带答案详解
- 2025年中国复合材料篮球板市场调查研究报告
- 2025年中国全自动锅炉软化水装置市场调查研究报告
- 2025年车门总成项目可行性研究报告
- 2025至2031年中国遥信电源浪涌保护器行业投资前景及策略咨询研究报告
- 客运驾驶人安全考核规程范本
- 2023静脉治疗护理技术操作标准解读
- 先天性肾上腺皮质增生症
- 2024年保密法培训课件
- 2024年湖南铁道职业技术学院单招职业技能测试题库及答案解析word版
- 新《安全生产法》全面解读“三管三必须”
- 印刷包装行业复工安全培训课件
- 蜜蜂的社会结构和功能
- 电气八大管理制度
- 财政投资评审项目造价咨询服务方案审计技术方案
- 中国电信应急管理整体解决方案
评论
0/150
提交评论