400 likes | 820 Views
普通高等教育“十一五”国家级规划教材 教育部 2011 年精品教材. 网络安全 — 技术与 实践 (第 2 版) 刘建伟 王育民 编著 清华大学出版社. 课件制作人声明. 本课件总共有 17 个文件,版权属于刘建伟所有,仅供选用此教材的教师和学生参考。 本课件严禁其他人员自行出版销售,或未经作者允许用作其他社会上的培训课程。 对于课件中出现的缺点和错误,欢迎读者提出宝贵意见,以便及时修订。 课件制作人:刘建伟 2013 年 10 月 9 日. 单钥加密体制(第 2 讲). Rijndeal 算法与 AES. 二. 三. 四. 一. 五. 一. IDEA.
E N D
普通高等教育“十一五”国家级规划教材 教育部2011年精品教材 网络安全—技术与实践(第2版) 刘建伟 王育民 编著 清华大学出版社
课件制作人声明 • 本课件总共有17个文件,版权属于刘建伟所有,仅供选用此教材的教师和学生参考。 • 本课件严禁其他人员自行出版销售,或未经作者允许用作其他社会上的培训课程。 • 对于课件中出现的缺点和错误,欢迎读者提出宝贵意见,以便及时修订。 • 课件制作人:刘建伟 • 2013年10月9日
单钥加密体制(第2讲) Rijndeal算法与AES 二 三 四 一 五 一 IDEA RC5 分组密码的工作模式 流密码
单钥加密体制(第2讲) Rijndeal算法与AES 二 三 四 一 五 一 IDEA RC5 分组密码的工作模式 流密码
AES评选过程:1998年8月20日,NIST公布了15个候选算法。第一轮选出5个,第二轮选定Rijndael。于2000年10月2日,由NIST正式对外公布。AES评选过程:1998年8月20日,NIST公布了15个候选算法。第一轮选出5个,第二轮选定Rijndael。于2000年10月2日,由NIST正式对外公布。 5个候选算法:Mars, RC6, Rijndael, Serpent, Twofish Rijndael算法的原型是Square算法,其设计策略是宽轨迹策略(Wide Trail Strategy),以针对差分分析和线性分析; Rijndael是迭代分组密码,其分组长度和密钥长度都是可变的;为了满足AES的要求,分组长度为128bit,密码长度为128/192/256bit,相应的轮数r为10/12/14。 设计人:比利时密码学家Daemen和Rijinmen。 • 一、AES Candidates和Rijndeal
一、AES Candidates和Rijndeal • 为了简化讨论,这里只讨论密钥长度128bits,分组长度128bits的情况,但不失一般性。 • 128bits的消息(明文、密文)分组被分成16个Bytes(1Bytes=8bits,所以16Bytes=16×8bits=128bits),记为: • InputBlock= • 密钥分组如下:InputKey = • 内部数据结构的表示是一个4×4矩阵: Rijndeal密码概述
一、AES Candidates和Rijndeal • 与DES一样,Rijndeal算法也是由基本的“轮变换”经过多次迭代而成。密钥长度为128bits时,轮数为10。当密钥长度和分组长度增大时,轮数要相应增加。 • Rijindael中的轮变换为: • 这里,State是轮消息矩阵,既被看作输入,也被看作输出; • RoundKey是轮密钥矩阵,它是由输入密钥通过密钥表导出的。 Rijndeal密码概述(续)
一、AES Candidates和Rijndeal 一轮的完成将导致State的元素改变值(也就是改变状态) 对于加密算法, 输入到第1轮的State就是明文矩阵InputBlock,而最后1轮中输出的State就是密文消息矩阵; 对于解密,输入到第1轮的State就是密文矩阵InputBlock,而最后1轮中输出的State就是明文消息矩阵; 每一轮(最后1轮除外)变换由4个不同的变换组成,这些变换就是将要介绍的内部函数: Rijndeal密码概述(续)
一、AES Candidates和Rijndeal 1、内部函数SubBytes(State) • SubBytes(State)函数为State的每个字节(也就是x)提供了一个非线性代换,任一非0的字节x∈F28被下面的变换所取代: • y = Ax-1+b mod28 • 注意:x-1体现了变换的非线性,A是可逆的,所以此变换是也可逆的:x-1=A-1(y-b)mod28 x • 其中:
这个函数在State的每一行上运算: 这个运算实际是一个换位密码,仅仅改变了元素的位置,而不改变元素本身。既然换位密码仅仅重排元素的位置,因此这个变换是可逆的。 • 一、AES Candidates和Rijndeal 2、内部函数ShiftRows(State)
这个函数对State的每一列作用,迭代4次;下面仅描述对一列的作用,一次迭代的输出仍是一列。这个函数对State的每一列作用,迭代4次;下面仅描述对一列的作用,一次迭代的输出仍是一列。 首先令State的一列为: 为了表述清楚,这里省略了列数。 把这一列表示为3次多项式: 因为s(x)的系数是字节,也就是说是F28 域中的元素,所以这个多项式是F28 上的。 • 一、AES Candidates和Rijndeal 3、内部函数MixColumns(State)
一、AES Candidates和Rijndeal MixColumns(State) 续 列s(x)上的运算定义为将这个多项式乘以一个固定的3次多项式c(x)【见注释】,然后模x4+1: d(x) = c(x) × s(x) (modx4+1) Rijndeal给出:c3=“03”, c2=“01”, c1=“01”, c0=“02” 在乘积d(x)中,x2的系数是:d2=c2s0+c1s1+c0s2+c3s3 很容易验证,上述乘法的系数可由以下矩阵乘法得出:
一、AES Candidates和Rijndeal MixColumns(State) 续 注意到 F2上,c(x)与x4+1是互素的,所以在F2(x)中,逆c(x)-1 (modx4+1)是存在的。这等于说,上述矩阵变换是可逆的。
一、AES Candidates和Rijndeal 4、AddRoundKey(State, RoundKey) 这个函数仅仅是逐字节、逐比特地将RoundKey中的元素与State中的元素相加。这里的加,是F2中的加,也就是异或运算,是平凡可逆的。 RoundKey比特已经被列表,不同轮的密钥比特是不同的。它们使用一个固定的“密钥表”导出密钥,该“密钥表”是非秘密的。具体细节可参阅有关NIST的标准文件。 到此为止,我们完成了对Rijndael算法的内部函数的描述,因此也完成了加密运算的描述。
一、AES Candidates和Rijndeal Rijndael的解密运算 注意:它与Feistel密码不同。Feistel密码的加密和解密可以使用同样的电路(硬件)和代码(软件),而Rijndael算法的加密和解密必须分别使用不同的电路和代码。
单钥加密体制(第2讲) Rijndeal算法与AES 二 三 四 一 五 一 IDEA RC5 分组密码的工作模式 流密码
Xuejia Lai和James Massey提出; IDEA是对称、分组密码算法,输入的明文为64位,密钥为128位,生成的密文为64位; IDEA是一种相对较新的算法,有坚强的理论基础,但仍应谨慎使用(尽管该算法已被证明可对抗差分分析和线性分析); IDEA是一种专利算法(在欧洲和美国),专利由Ascom-Tech AG拥有; PGP中已实现了IDEA。 • 二、欧洲数据加密标准IDEA
单钥加密体制(第2讲) Rijndeal算法与AES 二 三 四 一 五 一 IDEA RC5 分组密码的工作模式 流密码
RC系列是Ron Rivest为RSA公司设计的一系列密码: RC1从未被公开,以致于许多人们称其只出现在Rivest的记事本上; RC2是变长密钥加密密法;(RC3在设计过程中在RSA内被攻破); RC4是Rivest在1987年设计的变长密钥的序列密码; RC5是Rivest在1994年设计的分组长、密钥长的迭代轮数都可变的分组迭代密码算法; DES(56),RC5-32/12/5, RC5-32/12/6,RC-32/12/7已分别在1997年被破译。 • 三、RC5
单钥加密体制(第2讲) Rijndeal算法与AES 二 三 四 一 五 一 IDEA RC5 分组密码的工作模式 流密码
四、分组密码的工作模式 密码分组链接模式 ——CBC • 电码本模式——ECB 1 2 输出反馈模式——OFB 密码反馈模式——CFB 3 4 计数器模式——CTR 5
电码本模式(ECB-Electric Code Book) ECB加密: ECB解密: 注释:ECB模式是确定性的,也就是说,如果在相同的密钥下将 加密2次,那么输出的密文分组也是相同的。如果明文消息是可猜测的,那么攻击者就会用试凑法猜测出明文。通常人们不希望使用确定性密码。因此在大多数应用中,建议不要使用ECB模式。 • 四、分组密码的工作模式 1、 ECB模式
密码分组链接模式(CBC-Cipher Block Chaining) CBC加密 输入: 输出: CBC解密: 输入: 输出: • 四、分组密码的工作模式 2、CBC模式
四、分组密码的工作模式 n bit存储 n bit存储 D(IV) E(IV) CBC电路结构 Ci-1 Ci-1 Pi Ci Ci Pi
四、分组密码的工作模式 CBC的特性 • 第一个密文分组C1的计算需要一个特殊的输入分组C0,习惯上称其为初始化矢量。IV是一个随机的n比特分组,每次会话都要使用一个新的随机IV。由加密过程可知,由于IV的随机性,后续的密文分组都将被随机化,因此CBC的输出是随机化的密文分组。发送给接收者的密文消息应该包括IV。因此对于m个明文分组,CBC将输出m+1个密文分组。
密码反馈模式CFB——Cipher Feedback Mode CFB加密 输入: 输出: • 四、分组密码的工作模式 • CFB解密 输入: 输出: 3、CFB模式
四、分组密码的工作模式 CFB电路结构 E E 选择MSB_s(左边s)比特 选择MSB_s(左边s)比特
OFB加密 输入: 输出: • 四、分组密码的工作模式 • OFB解密 输入: 输出: 4、OFB模式
四、分组密码的工作模式 OFB电路结构 E
四、分组密码的工作模式 • CTR加密 输入: 输出: • CTR解密: 输入: 输出: 5、CTR模式
单钥加密体制(第2讲) Rijndeal算法与AES 二 三 四 一 五 一 IDEA RC5 分组密码的工作模式 流密码
五、流密码(序列密码) 一 二 三 四 五 六 • 明文m=m1,m2,…….mk • 移位寄存器是产生序列密码的有效方法 • 密文ci=miki ,i=1,2,…….k • 序列密码的安全性完全依赖于伪随机数的强度 • 解密过程与加密过程一致 • 伪随机序列k=k1,k2,…….kk
五、流密码(序列密码) 流密码原理框图 K1 K1 安全信道 密钥流生成器 KG 密钥流生成器 KG ki ki mi ci ci mi