对称密钥密码体系PPT课件_第1页
对称密钥密码体系PPT课件_第2页
对称密钥密码体系PPT课件_第3页
对称密钥密码体系PPT课件_第4页
对称密钥密码体系PPT课件_第5页
已阅读5页,还剩142页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章对称密钥密码体系,密码体系的原理和基本概念 数据加密标准(DES) IDEA AES 序列密码,主要内容,2.1 密码学原理,2.1.1 密码学的基本原理 密码技术是一门古老的技术。公元前1世纪,著名的凯撒(Caesar)密码被用于高卢战争中,这是一种简单易行的单字母替代密码。 20世纪,第一次世界大战进行到关键时刻,英国破译密码的专门机构“40号房间”利用缴获的德国密码本破译了著名的“齐默尔曼”电报,促使美国放弃中立参战,改变了战争进程。 战争的刺激和科学技术的发展对密码学的发展起到了推动作用,凯撒密码,又叫循环移位密码。其加密方法就是将明文中的每个字母都用其右边固定步长的字母代替,构

2、成密文。 例如:步长为4,则明文A、B、C、Y、Z可分别由E、F、G、C、D代替。如果明文是“about”,则变为密文“efsyx”,其密钥k=+4。两个循环的字母表对应。 思考:若步长为3,密文是“LORYHBRX”,则明文是多少,齐默尔曼电报(英语: Zimmermann Telegram,德语: Zimmermann-Depesche)是一份由德意志帝国外交秘书阿瑟齐默尔曼于1917年1月16号向德国驻墨西哥大使冯伯恩托夫发出的加密电报。 电报内容建议与墨西哥结成对抗美国的军事联盟,但被英国40号办公室情报机关截获。英国通过外交部将电报全文交给美国总统并约定该电报是美国自己截获并破译的,

3、2.1 密码学原理,1. 密码学的发展简史,早在四千多年以前,古埃及人就开始使用密码技术来保密要传递的消息,一直到第一次世界大战前,密码技术的进展很少见诸于世,直到1918年,William F.Friedman的论文“The Index of Coincidence and Its Applications in Cryptography”(重合指数及其在密码学中的应用)发表时,情况才有所好转,2.1.1 密码学的基本原理,1949年,C.E. Shannon(香农)在贝尔系统技术杂志上发表了“The Communication Theory of Secrecy System(保密系统的通

4、信理论)”,为密码技术奠定了坚实理论基础。使密码学真正成为一门科学,1976年,W.E. Diffie和M.E. Hellman发表了“New Direction in Cryptography(密码学新方向)”一文,提出了一种全新的密码设计思想,导致了密码技术上的一场革命。他们首次证明了在发送端和接收端不需要传送密钥的保密通信是可能的,从而开创了公钥密码技术的新纪元,成为现代密码技术的一个里程碑,1977年美国国家标准局NBS(National Bureau of Standards,即现在的国家标准与技术研究所NIST)正式公布了数据加密标准DES(Data Encryption Stan

5、dard,1978年,R.L.Rivest,A.Shamir和L.Adleman实现了RSA公钥密码技术,此后成为了公钥密码技术中杰出代表,1984年,Bennett.Charles H.,Brassard. Gille首次提出了量子密码技术(现称为BB84协议,1985年,N.Koblitz和V.Miller把椭圆曲线理论运用到公钥密码技术中,成为公钥密码技术研究的新亮点,密码技术的另一个重要方向序列密码(也称为流密码,序列密码主要用于政府、军方等国家要害部门)理论也取得了重大的进展。1989年,R.Mathews,D.Wheeler,L.M.Pecora和Carroll等人首次把混沌理论使

6、用到序列密码及保密通信理论中,为序列密码的研究开辟了一条新的途径,2.1.1 密码学基本原理,意义 解决数据的机密性、完整性、不可否认性以及身份识别等问题均需要以密码为基础,密码技术是保障信息安全的核心基础。 研究内容 密码学以研究数据保密为目的,对存储和传输的信息进行秘密变换以防止第三者窃取信息的科学。包括密码编码学和密码分析学两部分。 密码编码学:研究如何编码,采用什么样的密码体制保证 信息被安全加密。 密码分析学:破译密文,在未知密钥的情况下推演出明文和密钥的技术,基本概念,未经过加密的原始消息称为明文m或p(Plain Text)。 伪装消息以隐藏它的内容的过程称为加密E(Encryp

7、t) 加密后的消息,即经过伪装后的明文称为密文c(Cipher Text) 把密文转变为明文的过程称为解密D(Decrypt,加密和解密的原理如图2-1所示,图2-1 加密和解密原理,加密函数E作用于M得到密文C,用数学公式表示为:E(M)=C,相反地,解密函数D作用于C产生M:D(C)=M,先加密消息后解密,原始的明文将恢复出来,下面的等式必须成立: D(E(M)=M,2.1.2 安全密码准则,如果密码的保密性是基于保持算法的秘密,这种密码算法就称为受限制的算法。 缺陷: 大型的或经常变换用户的组织不能使用它们。 受限制的密码算法不可能进行质量控制或标准化。 解决方法:现代密码学用密钥解决了

8、这个问题。 密钥:加密和解密算法的操作在称为密钥(K)的元素控制下进行。K可以是很多数值里的任意值。秘钥K的可能值的范围叫做密钥空间。 加/解密函数:Ek(M)=C Dk(C)=M,加密的过程:c=Eke(m) 解密的过程:m=Dkd(c,注意:Ke和Kd可以相同,也可以不同,加密/解密过程示意图,所有算法的安全性都基于密钥的安全性,而不是基于算法细节的安全性。 无数的事实已经证明,只有公开的算法才是安全的,2.1.3 对称密钥密码和非对称密钥密码,基于密钥的算法通常有两类:对称算法和非对称算法。 对称算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中容易地推算出来,反过来也成立。 在大多

9、数对称算法中,加/解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。 对称算法可分为两类。 一次只对明文中的单个比特(有时对字节)运算的算法称为序列密码或流密码算法。 另一类算法是对明文的一组比特进行运算,这些比特组称为分组,相应的算法称为分组算法,分组密码的工作原理如图2-4所示,图2-4 分组密码的工作原理,非对称算法是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的有限时间内)。 非对称算法也叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解

10、密密钥才能解密信息,2.1.4 密码分析(密码攻击,攻击者在不知道密钥的情况下,对密文进行分析,试图获得机密信息(明文或密钥)。 密码编码与密码分析是共生的、互逆的,两者解决问题的途径有很多差别。 密码编码设计是利用数学基础构造密码。 密码分析出了依靠数学、工程背景、语言学等知识外,还靠经验、测试、眼力、运气、直觉判断能力等。 根据密码分析者对明文、密文等数据资源所掌握的程度,将密码分析攻击划分为不同的形式,密码攻击分类,1)唯密文攻击 密码分析者已知的内容只有密文,即假设密码分析者已知算法并能截取到密文,他要尽力找出所使用的秘钥和对应的明文。 唯密文攻击最容易实施,因为密码分析者只需要知道密

11、文,密码算法必须要抵抗这类攻击,这是密码算法设计的最低要求,2)已知明文攻击 密码分析者已知的内容包括一个或多个明文-密文对以及截获的待解密密文。明文-密文对被事先搜集,3)选择明文攻击 与已知明文攻击类似,不同点在于选择明文攻击的密码分析者可以自己选定明文消息,并知道其对应的密文,4)选择密文攻击 与选择明文攻击类似,密码分析者可以自己选择密文并解密形成密文-明文对,5)选择文本攻击 选择文本攻击是选择明文攻击与选择密文攻击的结合。密码分析者已知的内容包括:加密算 法、由密码分析者选择的明文消息和它对应的密文,以及由密码分析者选择的猜测性密文和它对应的已破译的明文。 很明显,唯密文攻击是最困

12、难的,因为密码分析者有最少量的信息可供利用。上述攻击的强度是递增的,根据被破译的难易程度,不同的密码算法具有不同的安全等级 如果破译算法的代价大于加密数据的价值,那么可能是安全的。 如果破译算法所需的时间比加密数据保密的时间更长,那么可能是安全的。 如果用单密钥加密的数据量比破译算法需要的数据量少得多,那么可能是安全的,学者Lars Kundsen把破译算法分为不同的类别,安全性的递减顺序如下: (1)全盘破译:密码分析者找出了秘钥。 (2)全盘推导:密码分析者找到一个代替算法,在不知道密钥的情况下,可用它得到明文。 (3)实例(或局部)推导:密码分析者从截获的密文中找出明文。 (4)信息推导

13、:密码分析者获得一些有关密钥或明文的信息。这些信息可能是密钥的几bit、有关明文格式的信息等,几乎所有密码系统在唯密文攻击中都是可破的,只要简单地一个接一个地去试每种可能的密钥,并且检查所得明文是否有意义。这种方法叫做蛮力攻击。 密码学更关心在计算上不可破译的密码系统。如果一个算法用(现在或将来)可得到的资源在可接受的时间内都不能破译,这个算法则被认为在计算上是安全的,可以用不同方式衡量攻击方法的复杂性,1) 数据复杂性:用作攻击输入所需要的数据量。 (2) 时间复杂性:完成攻击所需要的时间。 (3) 存储复杂性:进行攻击所需要的存储量,2.2 数据加密标准DES,背景 基础:1967年美国H

14、orst Feistel提出的理论。 发明人:美国IBM公司W.Tuchman和C.Meyer 1971-1972年研制成功。 产生:美国国家标准局(NBS)1973年5月-1974年8月两次发布公告,公开征求用于电子计算机的加密算法,经评选采纳了IBM的LUCIFER方案。 标准化:DES算法1975年3月公开发表,1977年1月15日由NBS颁布为数据加密标准,于1977年7月15日生效。 应用:DES算法在POS、ATM、智能卡(IC卡),加油站、高速公路收费站被广泛应用,以此来实现关键数据的保密,1. S-DES加密算法(简化的DES,S-DES是由美国圣达卡拉大学的Edward Sc

15、haeffer教授提出的,主要用于教学,其设计思想和性质与DES一致,有关函数变换相对简化,具体参数要小得多。 相关知识 置换:“ABCDEFGH”做一下”82641753置换的结果就是”HBFDAGEC” 循环移位:“ABCDEFGH”循环左移2位结果就是”CDEFG HAB” S盒替代选择:输入的四位数”ABCD”在S盒中找第AD行BC列的数字作为输出。比如0101输入S0盒的话就是第1(01)行第2(10)列,输出为1即01,再比如1001输入S1的话就是第3(11)行第0(00)列,输出为2即10 按位异或:11001010=0110,S-DES的体制,输入为一个8位的二进制明文组和一

16、个10位的二进制密钥,输出为8位二进制密文组; 解密与加密基本一致。 加密:IP-1(fk2(SW(fk1(IP(明文) 解密: IP-1(fk1(SW(fk2(IP(密文) 算法安全性:依赖于双方共享的10位密钥,经过变换生成2个8位密钥,分别用于加、解密的不同阶段,S-DES的密钥产生,置换函数:P10=(3,5,2,7,4,10,1,9,8,6) 循环左移函数LS P8=(6,3,7,4,8,5,10,9,P10(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10)=(k3,k5,k2,k7,k4,k10,k1,k9,k8,k6,思考:若初始密钥k0为(1010000010),

17、产生的两个子密钥k1,k2分别为多少,k1:10100100 k2:01000011,S-DES的加密变换过程,IP=(2,6,3,1,4,8,5,7) IP-1=(4,1,3,5,7,2,8,6) E/P=(4,1,2,3,2,3,4,1) “”:按位异或运算; P4=(2,4,3,1) S盒函数 S0和S1为两个盒子函数,将输入作 为索引行列号查表,得到相应的系 数作为输出。 SW:将左4位和右4位交换,思考:如果明文:10010101,密钥k1=10100100,K2=01000011,则密文是多少,2DES算法,DES是一个分组密码算法,使用64位密钥(除去8位奇偶校验,实际密钥长为5

18、6位)对64比特的数据分组(二进制数据)加密,产生64位密文数据。DES是一个对称密码体制,加密和解密使用同一密钥,解密和加密使用同一算法。DES的所有保密性均依赖于密钥,2021/2/6,33,DES 加密算法图,DES的一次迭代过程,1)DES的加密过程(3个阶段) 第一阶段:初始置换IP(如下页表所示) DES对64位明文分组进行操作。首先,64位明文分组x经过一个初始置换函数IP,产生64位的输出x0,再将分组x0分成左半部分L0和右半部分R0,即: x0=IP(x)=L0R0 置换表如表2-1所示。此表顺序为从上到下,从左至右。如初始置换把明文的第58位换至第1位,把第50位换至第二

19、位,以此类推,表2-1 初始置换IP,58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7,特点:整个64位按8行、8列排列;最右边一列按照2,4,6,8和1,3, 5, 7的次序排列;往左边各列的位序号依次为紧邻其右边一列各位序号加8,DES算法的子密钥的生成过程,DES加密算法的密钥

20、长度为56位,但一般表示为64位,其中,每个第8位用于奇偶校验。在DES加密算法中,将用户提供的64位初始密钥经过一系列的处理得到K1,K2,K16,分别作为116轮运算的16个子密钥。子密钥的生成过程如右图所示,8的倍数位,即第8, 16, 24, 32,40,48,56和64位共8位未被使用,子密钥的生成过程如下: 首先,将64位密钥去掉8个校验位,用密钥置换PC1置换剩下的56位密钥;再将56位分成前28位C0和后28位D0两部分,即PC1(K56)=C0D0。密钥置换PC-1如表2-2所示,接下来,根据轮数,这两部分分别循环左移1位或2位。具体每轮移位的位数如表2-3所示,表2-3 每

21、轮移动的位数,移动后,将两部分合并成56位后通过压缩置换PC2后得到48位子密钥,即Ki=PC-2(CiDi)。压缩置换如表2-4所示,表2-4 压缩置换PC2,14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32,9,18,图2-6 子密钥产生,第二阶段:计算16次迭代变换,DES采用了典型的Feistel结构,其算法的核心是算法所规定的16次迭代变换。DES算法的16次迭代变

22、换具有相同的结构,每一次迭代变换都以前一次迭代变换的结果(第一次迭代以作x0=L0R0为输入)和用户密钥扩展得到的子密钥ki作为输入;每一次迭代变换只变换一半数据,它们将输入数据的右半部分经过函数f后,将其输出与输入数据的左半部分进行异或运算,并将得到的结果作为新的右半部分,原来的右半部分变成了新的左半部分,DES 加密算法图,注意:DES在最后一轮后,左半部分和右半部分不再交换,密码函数F: 1) 函数F的操作步骤 密码函数F的输入是32比特数据和48比特的子密钥,其操作步骤如下页图2-7所示。 (1) 扩展置换(E)。将数据的右半部分Ri从32位扩展为48位。位选择函数(也称E盒)如表2-

23、5所示,图2-7 F(Ri, Ki)计算,表2-5 扩展置换(E,32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1,特点:扩展置换(E) 将32位 输入扩展为48位输出,实际上32位输入中有16位被重用;将48位按8行、6列的次序排列;排列时,将输入位序号按32,1,2,。31,32的次序依次排列,但上一行的后两位依次在下一行的前两位得到重用,认为最后一行的下一行是第1行,2) 异或。扩

24、展后的48位输出E(Ri)与压缩后的48位密钥Ki作异或运算。 (3) S盒替代。将异或得到的48位结果分成八个6位的块,每一块通过对应的一个S盒产生一个4位的输出。八个S盒如表2-6所示,表 2-6 S 盒,S盒的具体置换过程为:某个Si盒的6位输入的第1位和第6位形成一个2位的二进制数(从03),对应表中的某一行;同时,输入的中间4位构成4位二进制数(从015)对应表中的某一列(注意:行和列均从0开始计数)。 例如,第8个S盒的输入为001011,前后2位形成的二进制数为01,对应第8个S盒的第1行;中间4位为0101,对应同一S盒的第5列。 从表2-6中可得S8盒的第1行第5列的数为3,

25、于是就用0011代替原输入001011,S盒具有下列一些属性: S盒的每一行都是015的一个排列; S盒是非线性的,输出不是输入的一个仿射变换(输入6位,输出4位); 改变S盒的1位输入,至少有2位输出会发生改变; 如果一个S盒的两个输入只有中间两位,即3,4位不同,它们的输出至少有两位不同; 如果一个S盒的两个输入只有起始两位,即第1,2位不同,而最后两位,即第5、6位相同,它们的输出一定是不同的; 在任何一个S盒中,当它的任一位输入保持不变,其它5位输入尽情变化时,所有诸4位输出中,0与1的总数接近相等,4) P盒置换。将八个S盒的输出连在一起生成一个32位的输出,输出结果再通过置换P产生

26、一个32位的输出即:F(Ri, Ki)。表2-7为P盒置换。至此,密码函数F的操作就完成了。 最后,将P盒置换的结果与最初的64位分组的左半部分异或,然后左、右半部分交换,接着开始下一轮计算,16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25,表2-7 P盒置换,第三阶段:末置换函数IP-1 末置换是初始置换的逆变换。对L0和R0进行16轮相同的运算后,将得到的两部分数据合在一起,经过一个末置换函数就可得到64位的密文c,即: c=IP-1(R16L16) ( 16指的是1

27、6轮) 表2-8列出了该变换,40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25,表2-8 末 置 换IP-1,DES的解密,函数F的设计 函数F是DES加密的核心,它依赖于S盒的设计。这也适用于其它的对称分组加密算法。下面我们简单讨论一下有关F函数的一些通用设计准则以及S盒设计问题。

28、 (1) F的设计准则。函数F的基本功能就是“扰乱(confusion)”输入,因此,对于F来说,其非线性越高越好,也就是说,要恢复F所做的“扰乱”操作越难越好,其它的设计准则还包括严格雪崩准则(SAC) 和 比特独立准则(BIC) 。 所谓SAC,就是要求算法具有良好的雪崩效应,输入当中的一个比特发生变化都应当使输出产生”尽可能多” 的比特变化,严格地说,就是当任何单个输入比特位i发生变换时,一个S盒的第j比特输出位发生变换的概率应为1/2,且对任意的i,j都应成立。 BIC的意思是当单个输入比特位i发生变化时,输出比特位j,k的变化应当互相独立,且对任意的i,j,k均应成立。 SAC和BI

29、C可以有效的增强F函数的“扰乱”功能,2) S盒设计。S盒的设计在对称分组密码研究领域中起着举足轻重的作用。本质上,S盒的作用就是对输入向量进行处理,使得输出看起来更具随机性,输入和输出之间应当是非线性的,很难用线性函数来逼近。 显然,S盒的尺寸是一个很重要的特性。一个nm的S盒其输入为n比特,输出为m比特。DES的S盒大小为64 。S盒越大,就越容易抵制差分和线性密码分析,Mister和Adams提出了很多的S盒设计原则,其中包括要求S盒满足SAC和BIC的原则,以及S盒的所有列的全部线性组合应当满足一类称为bent函数的高度非线性布尔函数的原则。 Bent函数具有很多有趣的特性,其中,高度

30、非线性和最高阶的严格雪崩准则对于S盒的设计尤为重要,DES的安全性,DES的安全性完全依赖于所用的密钥。自从其算法作为标准公开以来,人们对它的安全性就有激烈的争论。在对DES安全性的批评意见中,较一致的看法是DES的密钥太短!其长度56bit,致使密钥量仅为256=1017 ,不能抵抗穷举攻击,事实证明的确如此,DES举例,DES举例,DES举例,分组密码的工作模式,电子编码本模式(ECB):用相同的密钥分别对明文分组加密,ECB模式特点,模式简单有效,主要用于内容较短且随机的报文的加密传递 各组的加密独立于其它分组,可以实现并行处理 不能隐藏明文的模式信息(统计规律、结构规律) 相同的明文得

31、出相同的密文 同样信息多次出现造成统计分析攻击 对明文的主动攻击 信息块可以被替换、重排、删除、重放 误差传递较小:密文块损坏只会影响其对应的明文解密,明文:张三队长昨晚抓住3名窃贼 密文:c1=DES(张三队长) c2=DES(昨晚抓住) c3=DES(3名窃贼) 若将c1及c3的顺序对调,则解密后,密码分组链接模式(CBC,加密算法的输入是上一个密文组和下一个明文组的异或,加密:ci=Ek(mici-1) i=1,2,3,解密:mi=Ek-1(ci)ci-1 i=1,2,3,CBC的特点,优点: 相同明文块产生不同密文块,隐蔽明文的数据模式。 密文块之间联系紧密,某一密文块被破坏,解密不出

32、有意义的明文块,在一定程度上防止分组重放、插入、删除等攻击。 缺点: 加密易导致错误传播,任何一个明文或密文分组出错都会导致其后的密文分组出错。 解密时,如果某密文块ci出错,则该组明文mi及下一组明文mi+1会出错,其余组不受影响。 加密不能并行处理,解密可以(因做异或的加密区块结果已经存在,密码反馈模式(CFB,适用于待加密的消息需要按照字符、比特处理,需要共同的IV值,优点:隐藏明文模式 缺点: 加密明文发生错误时,错误会传播。 解密时,一个密文块损坏会影响两个明文块无法解密还原。 无并行实现的算法,输出反馈模式(OFB,与CFB类似,但反馈的内容是DES的输出而不是密文,优点: 没有错

33、误传播,如果传输中出现错误,不会影响其后各位。 隐藏明文模式 密文中的一位传输错误只影响明文中的相应位。 缺点: 不能并行实现 安全性较CFB差,2.2.2 DES的变形3DES,由于DES的密钥长度相对于穷举攻击过短,因此一般使用多 重DES进行加密,常见的是三重DES,将64位的明文组以3个56位的密钥分别在3个DES系统加密处理后,产生64位的密文分组,将密钥长度有原来的56位扩增到168位,大大增强其安全性,加密:c=EK3(DK2(EK1(m,解密: m=DK1(EK2(DK3(c,一些三重DES算法的模型(其中E代表加密,D代表解密) (1)DES-EEE2:第一和第三加密过程使用

34、相同的密钥。 (2)DES-EDE2:第一和第三加密过程使用相同的密钥。 (3)DES-EEE3:每次用一个不同的密钥。 (4)DES-EDE3:每次用一个不同的密钥,由来学嘉(X. J. Lai)和J. L. Massey提出的第1版IDEA(international data encryption algorithm,国际数据加密算法)于1990年公布,当时称为PES(proposed encryption standard,建议加密标准)。1991年,在Biham和Shamir提出差分密码分析之后,设计者推出了改进算法IPES,即改进型建议加密标准。1992年,设计者又将IPES改名为

35、IDEA。这是近年来提出的各种分组密码中一个很成功的方案,已在PGP中采用,2.3 IDEA,IDEA是一个分组长度为64位的分组密码算法,密钥长度为128位,同一个算法即可用于加密,也可用于解密。 首先定义五种算法: (一)三种加密运算,二)两种子密钥运算,3种运算结合起来使用可对算法的输入提供复杂的变换,从而使得对IDEA的密码分析比对仅使用异或运算的DES更为困难,算法中扩散是由称为乘加(multiplication/addition, MA)结构的基本单元实现的,该结构的输入是两个16比特的子段和两个16比特的子密钥,输出也为两个16比特的子段。 这一结构在算法中重复使用了8次,获得了

36、非常有效的扩散效果,图 IDEA的加密框图,IDEA的加密过程包括两部分: (1) 输入的64位明文组分成四个16位子分组:X1、X2、X3和X4。四个子分组作为算法第一轮的输入,总共进行八轮的迭代运算,产生64位的密文输出。 (2) 输入的128位会话密钥产生八轮迭代所需的52个子密钥(八轮运算中每轮需要六个,还有四个用于输出变换,IDEA第1轮的轮结构,1)X1和第1个子密钥块进行乘法运算。 2) X2和第2个子密钥块进行加法运算。 3) X3和第3个子密钥块进行加法运算。 4) X4和第4个子密钥块进行乘法运算。 5)1)和3)的结果进行异或运算。 6)2)和4)的结果进行异或运算。 7

37、)5)的结果与第5子密钥进行乘法运算。 8)6)和7)的结果进行加法运算。 9)8)的结果与第6个子密钥块进行乘法运算。 10)7)和9)的结果进行加法运算。 11)1)和9)的结果进行异或运算。 12)3)和9)的结果进行异或运算。 13)2)和10)的结果进行异或运算。 14)4)和10)的结果进行异或运算,结果的输出为11)、13)、12)、14),除最后一轮外,第2和第3块交换,1)W1和第1个子密钥块进行乘法运算。 2)W3和第2个子密钥块进行加法运算。 3)W2和第3个子密钥块进行加法运算。 4)W4和第4个子密钥块进行乘法运算,IDEA的输出变换,子密钥产生:加密过程中52个16

38、比特的子密钥是由128比特的加密密钥按如下方式产生的: 前8个子密钥Z1,Z2,Z8直接从加密密钥中取,即Z1取前16比特(最高有效位),Z2取下面的16比特,依次类推。然后加密密钥循环左移25位,再取下面8个子密钥Z9,Z10,Z16,取法与Z1,Z2,Z8的取法相同。这一过程重复下去,直到52子密钥都被产生为止,解密过程 解密过程和加密过程基本相同,但子密钥的选取不同。解密子密钥U1,U2,U52是由加密子密钥转换得到(将加密过程最后一步的输出变换当作第9轮,第i(i=1,9)轮解密的前4个子密钥由加密过程第(10-i)轮的前4个子密钥得出:其中第1和第4个解密子密钥取为相应的第1和第4个

39、加密子密钥的模216+1乘法逆元,第2和第3个子密钥的取法为: 当轮数i=2,8时,取为相应的第3个和第2个加密子密钥的模216加法逆元。i=1和9时,取为相应的第2个和第3个加密子密钥的模216加法逆元。 第i(i=1,8)轮解密的后两个子密钥等于加密过程第(9-i)轮的后两个子密钥,IDEA算法的设计原理,2.4 高级加密标准(AES,AES提出 1997年1月,美国国家标准与技术研究所NIST向全世界密码学界发出征集21世纪高级加密标准 AES(Advanced Encryption Standard)算法的公告,并成立了AES标准工作研究室,1997年4月15日的例会制定了对AES的评

40、估标准,AES的要求,1)AES是公开的; (2)AES为单钥体制分组密码 (3)AES的密钥长度可变,可按需要增大 (4)AES适于用软件和硬件实现; (5)AES可以自由地使用,或按符合美国国家标准(ANST)策略的条件使用,算法衡量条件,满足以上要求的AES算法,需按下述条件判断优劣: 安全性 计算效率 内存要求 使用简便性 灵活性,AES的评审,1998年4月15日全面征集AES算法的工作结束。1998年8月12日举行了首届AES候选会议(first AES candidate conference),在涉及14个国家的密码学家所提出的候选AES算法进行了评估和测试,初选并公布了15个

41、备选方案,任由全世界各机构和个人攻击和评论。 CAST256、 CRYPTON、 E2、 DEAL、 FROG、 SAFER+、 RC6、 MAGENTA、LOKI97、 SERPENT、 MARS、Rijndael、 DFC、 Twofish、 HPC。 这些算法设计思想新颖,技术水平先进,算法的强度都超过3-DES,实现速度快于3-DES,AES的评审,1999年8月9日NIST宣布第二轮筛选出的5个候选算法为: MARS(C.Burwick等,IBM), RC6(R.Rivest等,RSA Lab), Rijndael(J.Daemen,比), SERPENT(R.Anderson等,英

42、,以,挪威), Twofish(B.Schiener)。 2000年10月2日,NIST宣布Rijndael作为新的AES。至此,经过3年多的讨论,Rijndael终于脱颖而出,AES算法设计思想,抵抗所有已知攻击 在多个平台上速度快,编码紧凑 设计简单 Rijndael是一个分组密码算法,其分组长度和密钥长度相互独立,都可以改变,分组长度和密钥长度的不同取值,AES中共用到5个数据度量单位:位、字节、字、分组和态。 位:就是二进制的0或1; 字节:就是一组8位的二进制数; 字:是由4个字节组成的一个基本处理单位,可以是按行或列排成一个矩阵; AES中的分组:如128位,可以表示成16个字节组

43、成的一个行矩阵 态(State):密码运算的中间结果成为状态。 State的表示:状态用以字节为基本构成元素的矩阵阵列来表示,该阵列有4行,列数记为Nb。 Nb=分组长度(bits)32 Nb可以取的值为4,6,8,对应的分组长度为128,192,256bits,明文分组和密钥的组织排列方式,以明文分组为128bits为例组成的阵列,注意:矩阵中字节排列顺序是从上到下从左到右,以明文分组(或密钥)为128bits、192bits、256bits为例组成的阵列,102,AES的加密与解密过程,轮函数的3层 线性混合层:确保多轮之上的高度扩散 非线性层:进行字节代换,即S-盒替换,起到混淆的作用

44、密钥加层:单轮子密钥简单的异或到中间状态上,实现一次性掩盖,AES,各轮AES加密循环(除最后一轮外)均包含4个步骤: (1) 字节代换(SubBytes) 通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节 。 (2)行位移变换(ShiftRows) 将矩阵中的每个横列进行循环式移位。 (3)列混合变换(MixColumns) 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。 (4) 轮密钥加运算(AddRoundKey) 矩阵中的每一个字节都与该次轮密钥(Round key)做XOR运算;每个子密钥由密钥生成方案产生,105,AES,1) 字节

45、变换(SubBytes) Subbytes变换是一个基于S盒的非线性置换。将状态矩阵中的每一个字节通过查表操作映射成另一个字节 映射方法:输入字节的高4位作为S盒的行值,低4位为S盒的列值,106,e,107,按照字节代替的处理方法,可以将一个态中的16字节分别代替,108,AES,2)行位移变换(ShiftRows) 每一行都向左循环位移某个偏移量。在AES中(区块大小128位),第一行维持不变,第二行里的每个字节都向左循环移动一格。同理,第三行及第四行向左循环位移的偏移量就分别是2和3。 经过ShiftRows之后,矩阵中每一竖列,都是由输入矩阵中的每个不同列中的元素组成,109,偏移量C

46、1 、C2 、C3与分组长度Nb有关,110,按照行移位的处理方法,可以将一个态中的4行分别移位处理,111,3)列混合变换(MixColumns) 可用矩阵乘法表示: 即 MixColumns函数接受4个字节的输入,输出4个字节,每一个输入的字节都会对输出的四个字节造成影响。因此ShiftRows和MixColumns两步骤为这个密码系统提供了扩散性,AES,112,一个列混淆的例子,02 8 7 036e 01 46 01 a6=47,113,AES,4)轮密钥加运算(AddRoundKey) 在每次的加密循环中,都会由主密钥产生一把轮密钥,这把密钥大小会跟原矩阵一样,然后与原矩阵中每个对

47、应的字节作异或()加法,114,一个轮密钥加的例子,态,轮密钥,新态,密码密钥的表示:用一个4行的矩阵来表示,列数记为Nk。 Nk=密钥长度(bits)32 Nk可以取的值为4,6,8,对应的密钥长度为128,192,256bits,密钥扩展(Expanded Key)算法 密钥bit的总数=分组长度(轮数Round+1) 例如当分组长度为128bits和轮数Round为10时,轮密钥长度为128(10+1)=1408bits 种子密钥被扩展为扩展密钥 轮密钥从扩展密钥中按顺序选取:第一个轮密钥由扩展密钥的第一个Nb个4字节字,第二个轮密钥由接下来的Nb个4字节字组成,以此类推,例如:128位

48、的密钥以字节为单位的矩阵描述的,这个密钥采用扩展算法被扩展到一个以字为单位的密钥序列中,最终扩展成44字的序列,118,128位密钥扩展的具体步骤: (1)初始密钥直接被复制到数组Wi的前4个字中,得到W0,W1,W2,W3 如加密密钥=2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c, 则:w0=2b7e1516, w1=28aed2a6, w2=abf71588, w3=09cf4f3c (2) 对W数组中下标不为4的倍数的元素,只是简单地异或,即Wi=Wi-1 Wi-4(i不为4的倍数) W5=w4 w1 w6=w5 w2,119,3)对w数

49、组中下标为4的倍数的元素,在使用上式进行异或前,需对wi-1进行一系列处理,即依次进行: 1) RotWord(对输入4个字节循环左移一个字节),即将字 (b0,b1,b2,b3)变为(b1,b2,b3,b0)。 如以下求w4为例,需对w3进行处理 RotWord(w3)=RotWord( 09cf4f3c )=cf4f3c09 2)SubWord():基于S盒对输入字(步骤1的结果)中的每个字节进行S代替。 如: SubWord( cf4f3c09 )=8a84eb01,120,3)将步骤2的结果再与轮常量Rconi/4异或。 前10个轮常数Rconi,8a84eb01 Rcon4/4 =8

50、a84eb01 01000000=8b84eb01,121,4)将步骤3的结果再与wi-4异或。 8b84eb01 w4-4 = 8b84eb01 2b7e1516=a0fafe17 即w4= a0fafe17,122,例:明文信息:32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34 加密密钥: 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c 加密密钥为128位,轮数Nr=10 加密过程: (1) 10轮迭代前,先把原明文写成如下形式(表1),本轮密钥写成如表2形式,表1,表2,进行轮密钥加变换操作后产

51、生一个结果,作为10轮迭代的第一轮输入。轮密钥加变换操作如下: 每个字节相应异或,32:00110010 2b:00101011 异或结果:00011001即19,所以第一个字节为19,其他字节依次类推,因此第一轮的轮开始状态为(表3,表3,123,2)轮循环 进行第一轮的“字节代换”操作要查S盒,每个字节依次置换,结果如表4,表4,然后按照行移位变换原则进行操作,结果如表5,表5,列混合变换利用公式完成,结果为表6,表6,3)密钥扩展: W0=2b7e1516、w1=28aed2a6、w2=abf71588、w3=09cf4f3c 用初始密钥填充。 接着求w4,下标为4的倍数,则在异或之前对

52、wi-1也就是w3处理,w4的产生过程如下图所示,124,w4=a0fafe17 w5=w4 w1=88542cb1 w6=w5 w2=23a33939 w7=w6 w3=2a6c7605 w 4,w5,w6,w7即为新一轮的密钥 把新一轮的密钥和表6做轮密钥加变换,得到的结果如表7做为第2轮迭代的输入。 (4) 依次迭代下去,直到第10轮迭代结束。最后的结果即产生的密文为表8所示 即:39 25 84 1d 02 dc 09 fb dc 11 85 97 19 6a 0b 32,表8,表7,125,2.5 序列密码,126,127,128,序列密码强度完全依赖于密钥流产生器所产生的序列的随机性和不可预测性,其核心问题是密钥流生成器的设计。而保持收发两端密钥流的精确同步是实现可靠解密的关键技术。 迄今为止,只有一种理论上不可破的加密方案,叫做一次一密乱码本,这是一种序列密码,RC4概述,基本思想:对n位长的字,它总共有关N=2n个可能的内部置换状态S。这些状态是保密的,密钥流中的密钥K由S中N个元素按照一定的方式选出一个元素组成,每生成一个K值,S中的元素就被重新置换一次。 处理过程:密钥调度算法(KSA):用于设置数据表S的初始排列; 伪随机生成算法(PRGA):用于选取随机元素并修改S的原始排列顺序。 输入:种子密钥;输出:数组S,密钥调度算法KSA 密钥调度

温馨提示

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

评论

0/150

提交评论