《CS03-DES-AES》由会员分享,可在线阅读,更多相关《CS03-DES-AES(49页珍藏版)》请在金锄头文库上搜索。
1、第3章 分组密码-DES和AES,3.1 分组密码原理 3.2 分组密码:DES 3.3 分组密码DES的安全性等 3.3 分组密码设计原则,Symmetric Cipher Model,分组密码,分组密码,就是一个明文分组被当作一个整体来产生一个等长(通常)的密文分组的密码,通常使用的是128位分组大小。 分组密码的实质是,设计一种算法,能在密钥控制下,把n比特明文简单而又迅速地置换成唯一n比特密文,并且这种变换是可逆的(解密)。,分组密码的设计思想(C.E. Shannon),扩散(diffusion) 将明文及密钥的影响尽可能迅速地散布到 较多个输出的密文中(将明文冗余度分散 到密文中)
2、。产生扩散的最简单方法是通 过“置换(Permutation)”(比如:重新排 列字符)。,分组密码的设计思想(Cont.),混淆(confusion) 其目的在于使作用于明文的密钥和密文之 间的关系复杂化,是明文和密文之间、密 文和密钥之间的统计相关特性极小化,从 而使统计分析攻击不能奏效。通常的方法 是“代换(Substitution)”(回忆恺撒密 码)。,乘积密码,核心思想:迭代交替地使用代换(S)、置换(P) SPN代换置换网络 Feistel密码(下图),Feistel 密 码 结 构,分组密码设计的要求,分组长度足够大(64128比特) 密钥量要足够大(128) 迭代轮次(16)
3、 子密钥产生算法要足够复杂 轮函数 快速软、硬件实现 简化分析难度(破译是困难的,但算法却简洁清晰),3.2数据加密标准(DES),DES的历史1971年, IBM公司,由Horst Feistel 领导的密码研究项目组研究出LUCIFER算法。并应用于商业领域。 1973美国标准局征求标准,IBM提交结果,在1977年,被选为数据加密标准。 1999年退役,DES 算法的一般描述,一轮加密的简图,Li-1 Ri-1,F,+,Li Ri,Ki,A=R(32 bits),J=K(48 bits),E,E(A)为48 bits,+,B1 B2 B3 B4 B5 B6 B7 B8,S1,S2,S3,
4、S4,S5,S6,S7,S8,C1 C2 C3 C4 C5 C6 C7 C8,P,32 bits F(A,J),B,写成8个6比特串,DES 的F函数,图表(密钥生成Ki),K,PC-1,C0 D0,LS1,LS1,C1 D1,LS2,LS2,LS16,LS16,C16 D16,PC-2,PC-2,K1,K16,3.3 DES的安全性,密钥长度:56 S-Box的安全性,关于DES的争论,DES的核心是S盒 S盒的设计准则: S盒不是它输入变量的线性函数 改变S盒的一个输入位至少要引起两位的输出改变 对任何一个S盒,如果固定一个输入比特,其它输入变化时,输出数字中0和1的总数近于相等。,一些猜
5、测,公众仍然不知道S盒的构造中是否还使用了进一步的设计准则(有陷门?)。 密钥长度是否足够? 迭代的长度?(8、16、32?),3.3 分组密码设计原则,S-Box的设计准则 置换的设计准则 加密轮数 F函数 密钥调度算法,作业(old),1、现代密码的构造借鉴了古典密码的哪两种思想并加以扩充? 2、给出一轮DES加密的轮密钥和结果,如何可以得出该轮加密的明文?这说明什么? 3、现代密码系统做了哪些基本假设?,作业(Old2:1必做,后3选1),1、DES加密过程中第16轮结束后为什么还要进行左右32比特互换的操作? 2、如何扩充使得DES算法的分组长度为128比特、密钥长度为128比特? 3
6、、用中文注释给出的DES源代码的详细解释和分析。 4、实现用DES加密大数据文件的软件,命令行操作:DES e/d file1 file2 key. 记录加密所用时间,计算加密的平均速度。,AES-Advanced Encryption Standard,1997年9月,NIST征集AES方案,以替代DES。 1999年8月,以下5个方案成为最终候选方案:MARS, RC6, Rijndael, Serpent, Twofish。 2000年10月,由比利时的Joan Daemen和Vincent Rijmen提出的算法最终胜出。,AES的评估,安全性 密钥128比特 成本 算法和执行效率 软
7、硬件实现、简洁,AES的设计原则,能抵抗所有已知的攻击; 在各种平台上易于实现,速度快; 设计简单。,Rijndael是一个分组密码算法,其分组长度和密钥长度相互独立,都可以改变。,表 1. 分组长度和密钥长度的不同取值,Rijndael,Fig 4. 分组长度和密钥长度均为128 bits时的Rijndael加密算法框图,Data / Key Addition,Rnd 0,Rnd 1,Rnd 8,Final Rnd,Key Schedule,Cipher Text,Key,Plain Text,Fig 5. Rijndael Round的构成,ByteSubstitution,ByteRot
8、ation,MixColumn,+,Round Key,一般的轮变换,ByteSubstitution,ByteRotation,+,Round Key,最后一轮的轮变换,用伪代码表示的Rijndael轮变换,一般的轮变换 Round(State, RoundKey) ByteSubstitution;ByteRotation;MixColumn;AddRounKey;,结尾轮的变换 FinalRound(State, RoundKey) ByteSubstituion;ByteRotation;AddRoundKey;,字节代换( ByteSubstitution ),查表操作:44的字节矩
9、阵 S盒是1616的字节矩阵 S盒的构造方法 非常关键的设计 但是对用户来说,Byte Substitution,行移位,第0行循环左移0字节 第1行循环左移1字节 第2行循环左移2字节 第3行循环左移3字节,Shift Rows,列混淆,给定一个特殊的矩阵(可逆) 按列操作,每一列分别与矩阵相乘,得到一列新数据,替代原来的列,Mix Columns,轮密钥加,密钥调度算法,输入4个字(16字节),输出44个字的数组 输入密钥直接复制为前四个字 然后依次填充余下部分 第i个值依赖第i-1和第i-4个单元的值 下标为4的倍数的元素采用更复杂的计算 如下图,AES Key Expansion,G函
10、数的定义,字移位 字代换(依次进行字节代换) 轮常量加,实现上的若干考虑,8位处理器 32位处理器,AES-小结,AES是现在的国际加密标准。 AES具有强抗攻击能力(线性攻击、差分攻击等),尚无发现实质性弱点。 AES结构简单、效率很高,具有广泛的应用。,分组密码的工作模式,分组密码加密固定长度的数据分组,需要使用一些实际的方法来加密任意数量的明文 分组密码算法是基本构件,如何实际应用需要更多的考虑 五种工作模式,Electronic Codebook Book (ECB),电码本模式,ECB的优势与局限,相同的明文对于相同的密文 结构化明文 消息有重复部分 主要用于发送少数量的分组数据,C
11、ipher Block Chaining (CBC),密码分组链接模式,Cipher FeedBack (CFB),密码反馈模式,Output FeedBack (OFB),输出反馈模式,Counter (CTR),计数器模式,Advantages and Limitations of CTR,效率 可并行加密 预处理 吞吐量仅受可使用并行数量的限制 加密数据块的随机访问 可证明安全 简单性(只要求实现加密算法),使用对称密码实现保密,重点需要考虑如下问题: 在什么逻辑位置上实现密码技术? 如何分配密钥? 随机数的产生,作业,思考题: P.97 P.179 习题:1、P.99 : 3.9 2、利用159页的内容计算01在S-Box中所对应的值,提示01的逆元是01。给出计算过程。 程序题: 1、展示Python中密码学函数的调用过程。 2、使用pycrypto-2.6实现一个加密程序。 https:/