• 1. 第三章 数据加密技术1计算机网络安全概论
  • 2. 前言基础数论在密码学中的作用 基础数论作为一门古老的数学学科,在整个数学学科中占有非常重要的位置。数论中许多基本内容,如同余理论、中国剩余定理(CRT)、高次剩余理论等,在新型密码体制、密钥分配与管理、数字签名、身份认证等方面有直接的应用。 现代密码与近代数学形影不离 近代数学在现代密码研究中比比皆是 :群论,有限域上椭圆曲线理论,多项式理论与迹函数理论,陷门单向函数 等。2计算机网络安全概论
  • 3. 密码学的两个分支1.密码编码学 主要研究对信息进行变换,以保护信息在信道的传输过程中不被敌手窃取、解读和利用的方法 2.密码分析学 主要研究如何分析和破译密码 密码分析学与密码编码学相反,这两个分支,既相对立又相互促进 3计算机网络安全概论
  • 4. 术语与定义1.明文 需要加密的信息称为明文 2.密文 明文经过加密或伪装,形成密文 3.加密和解密 对明文而实施一系列的变换过程而形成密文,称为加密或加密变换。反之对密文施加一系列的逆变换而还原成明文,称为解密或解密更换 4 .密码方案 密码方案确切地描述了加密变换与解密变换的具体规则 5 .密钥空间 密钥的全体称为密钥空间 4计算机网络安全概论
  • 5. 从数学的角度来讲,一个密码系统是一族映射,它在密钥的控制下将明文空间中的每一个元素映射到密文空间上的某个元素。这族映射由密码方案确定,具体使用哪一个映射由密钥决定。   可以将密码方案与密钥共同看作控制密码变换的“密钥”,只不过密码方案是固定的“密钥”,而密钥是变换的“密钥”。将“密钥”中固定的部分(密码方案)与变化的部分(密钥)区分开来对于密码分析以及密钥管理等具有重大的意义 密码编码的数学分析5计算机网络安全概论
  • 6. 密码系统的模型信源编码器信道解码器接收者秘密信道密码分析者密钥源密钥源 6计算机网络安全概论
  • 7. 1.密码分析和密码攻击 如果非授权者借助窃听到的密文以及其他一些信息通过各种方法推断原来的明文甚至密钥,这一过程称为密码分析或密码攻击。 2.多种攻击行为 密码系统所假想的环境中除了接收者外,还有非授权者,它们通过各种方法来窃听、干扰信息 3.无条件的安全性 对于一个密码系统来说.若攻击者无论得到多少密文也求不出确定明文的足够信息,这种密码系统就是理论上不可破译的,即密码系统具有无条件安全性(或完善保密性) 密码系统的安全性7计算机网络安全概论
  • 8. 密码系统的安全性4. 实际安全性 若一个密码系统原则上虽可破译,但为了由密文得到明文或密钥却需付出十分巨大的计算,而不能在希望的时间内或实际可能的经济条件下求出准确的答案,这种密码系统就是实际不可破译的,或称称该密码系统具有计算安全性 5.影响安全性的几个因素 算法强度 算法的强度越高,攻击者越难破译 其它因素 其他的各种非技术手段(如管理的漏洞,或是某个环节无意暴露了敏感信息等)来攻破一个密码系统 8计算机网络安全概论
  • 9. 密码攻击 惟密文攻击 分析者知道一个或一些密文的情况下,企图得到明文或密钥等敏感信息 已知明文攻击 分析者知道一些明文及对应的密文的对应关系 选择明文攻击 分析者获得更大机会接近密码系统,可以选择一些对攻击有利的特定明文,并得到对应的密文,以及在此基础上进行密码的破译 选择密文攻击 与选择明文攻击相反,分析者可以选择性地知道一些攻击有利的特定密文,并得到对应的明文 9计算机网络安全概论
  • 10. 密码系统的安全需求密码系统的密钥空间必须足够地大 加密与解密过程必须是计算上可行的,必须能够被方便地实现与使用 整个密码系统的安全性系于密钥上,即使密码方案被公布,在密钥不泄露的情况下,密码系统的安全性也可以得到保证。 10计算机网络安全概论
  • 11. 密码学三种考虑角度 (1)从明文到密文的变换 替换(substitution) 置换(transposition) …… (2)钥匙的数目 对称、单钥加密法 双钥、公钥加密 (3)明文的处理方式 分组加密(块加密算法) 流方式加密11计算机网络安全概论
  • 12. 加密算法的有效性Unconditionally secure,绝对安全? 永不可破,是理想情况,理论上不可破,密钥空间无限,在已知密文条件下,方程无解。但是我们可以考虑: 破解的代价超过了加密信息本身的价值 破解的时间超过了加密信息本身的有效期 Computationally secure, 满足上述两个条件12计算机网络安全概论
  • 13. 直觉:什么是一个好的加密算法假设密码(password)k是固定的 明文和密文是一个映射关系:单射,即 Ek(x1) != Ek(x2) if x1 != x2 通常情况是:明文非常有序 好的密码条件下,我们期望得到什么样的密文 随机性?13计算机网络安全概论
  • 14. 考虑设计一个加密算法打破明文本身的规律性 随机性(可望不可及) 非线性(一定要) 统计意义上的规律 多次迭代 迭代是否会增加变换的复杂性 是否存在通用的框架,用于迭代 复杂性带来密码分析的困难和不可知性 实践的检验和考验14计算机网络安全概论
  • 15. 已有密码算法经典密码算法 替换技术(Substitution) 置换技术(Transposition) 现代密码算法 DES AES 其他密码算法15计算机网络安全概论
  • 16. 替换技术(substitution)Caesar加密制16计算机网络安全概论
  • 17. 17计算机网络安全概论
  • 18. 替换技术块替换加密法18计算机网络安全概论
  • 19. 置换技术(transposition)栅栏加密技术 用对角线方式写明文,然后按行重新排序 C m h m t m r o o e o e o o r w Cmhmtmrooeoeoorw 简单分栏 将明文消息一行一行地写入预定长度的矩形中 一列一列读,随机顺序 密文消息 多轮简单分栏19计算机网络安全概论
  • 20. 20计算机网络安全概论
  • 21. 经典密码算法特点要求的计算强度小 DES之前 以字母表为主要加密对象 替换和置换技术 数据安全基于算法的保密 密码分析方法基于明文的可读性以及字母和字母组合的频率特性21计算机网络安全概论
  • 22. 现代密码算法DES(Data Encryption Standard) AES IDEA RC5 Blowfish CAST-128 …… 22计算机网络安全概论
  • 23. 对称加密算法的基本模型加密: E: (X,K)  Y, y = E(x,k)XYKEYXKD解密: D: (Y,K)  X, x = D(y,k)23计算机网络安全概论
  • 24. 算法类型序列(流)密码与分组密码 序列密码(stream cipher)也叫流密码,是对单个明文位(Bit-by-bit)变换的操作 分组密码(block cipher)是对一个大的明文块(Block-by-block)进行固定变换的操作24计算机网络安全概论
  • 25. 序列(流)密码25计算机网络安全概论
  • 26. 分组密码26计算机网络安全概论
  • 27. 分组密码算法设计指导原则Confusion(混淆) 强调密钥的作用 增加密钥与密文之间关系的复杂性 流加密和块加密 Diffusion(发散) 小扰动的影响波及到全局 密文没有统计特征,明文一位影响密文的多位,增加密文与明文之间关系的复杂性 块加密27计算机网络安全概论
  • 28. 算法模式电子簿模式(electronic codebook mode)ECB 密码块链接(cipher block chaining)CBC 密码反馈方式(cipher feedback)CFB 输出反馈方式(output feedback)OFB28计算机网络安全概论
  • 29. 电子簿模式ECB相同明文相同密文 同样信息多次出现造成泄漏 信息块可被替换 信息块可被重排 密文块损坏仅对应明文块损坏 适合于传输短信息29计算机网络安全概论
  • 30. 密码块链接CBC需要共同的初始化向量IV 相同明文不同密文 初始化向量IV可以用来改变第一块 密文块损坏两明文块损坏 安全性好于ECB30计算机网络安全概论
  • 31.    但是,通过采用流密码的设计思想,在加密过程中采用合理的记忆组件,能够消除这些局限性。分组密码的优缺点分组密码主要有两个优点 易于标准化 易于实现同步 局限性 分组密码不便于隐藏明文的数据模式 对于重放、插入、删除等攻击方式的抵御能力31计算机网络安全概论
  • 32. 密码反馈方式CFBCFB:分组密码流密码 需要共同的移位寄存器初始值IV 对于不同的消息,IV必须唯一 一个单元损坏影响多个单元: (W+j-1)/j W为分组加密块大小,j为流单元位数 32计算机网络安全概论
  • 33. 输出反馈方式OFBOFB:分组密码流密码 需要共同的移位寄存器初始值IV 一个单元损坏只影响对应单元33计算机网络安全概论
  • 34. 密码系统的模型信源编码器信道解码器接收者秘密信道密码分析者密钥源密钥源 34计算机网络安全概论
  • 35. Feistel结构的分组加密算法结构之思想基本思想:用简单算法的乘积来近似表达大尺寸的替换变换 多个简单算法的结合得到的加密算法比任何一个部分算法都要强 交替使用替换置换和排列(permutation) 混淆(confusion)和发散(diffusion)概念的应用35计算机网络安全概论
  • 36. Feistel 结构图36计算机网络安全概论
  • 37. Feistel结构定义加密: Li = Ri-1; Ri = Li-1F(Ri-1,Ki) 解密: Ri-1 = Li Li-1 = RiF(Ri-1,Ki) = RiF(Li,Ki)37计算机网络安全概论
  • 38. Feistel分组加密算法特点分组大小:越大安全性越高,但速度下降,64比较合理 密钥位数:越大安全性越高,但速度下降,64广泛使用,但现在已经不够用—〉128 步数:典型16步 子钥产生算法:算法越复杂,就增加密码分析的难度 每一步的子函数:函数越复杂,就增加密码分析的难度 快速软件实现:包括加密和解密算法 易于分析:便于掌握算法的保密强度以及扩展办法。38计算机网络安全概论
  • 39. DES算法1977年由美国的标准化局(NBS,现为NIST)采纳 64位分组、56位密钥 历史: IBM在60年代启动了LUCIFER项目,当时的算法采用128位密钥 改进算法,降低为56位密钥,IBM提交给NBS(NIST),于是产生DES 16轮的Feistel结构密码 39计算机网络安全概论
  • 40. DES算法描述 明文(64位)初始置换(IP)LPTRPT16轮16轮逆初始置换(FP)密文(64位)DES是对称密钥加密的算法, DES算法大致可以分成四个部分: 初始置换 迭代过程 逆初始置换 子密钥生成 40计算机网络安全概论
  • 41. 初始变换IP输入(64位)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位)初始变换 IPL0(32位)R0(32位)41计算机网络安全概论
  • 42. 乘积迭代原理示意图42计算机网络安全概论
  • 43. DES的一轮(f)密钥变换扩展置换S盒替换P盒替换异或与交换43计算机网络安全概论
  • 44. 加密函数f(A,Ki) A(32位)扩展置换E48位结果48位Ki+选择函数组 (S1~S8)32位结果置换运算P加密时A=Ri-1压缩置换EK(56位)44计算机网络安全概论
  • 45. 16轮子密钥生成45计算机网络安全概论
  • 46. PC-1和PC-257 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 3663 55 47 39 31 33 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 414 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 32i1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16LS1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1PC-1PC-246计算机网络安全概论
  • 47. 扩展置换E A32位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选择运算E的结果48位47计算机网络安全概论
  • 48. 在密码函数中有8个S盒,称为8个不同的选择函数。每个S盒都是将6位作为输入,得到一个4位块作为输出 S 盒是DES 的最敏感部分,其原理至今未公开。人们担心S 盒隐藏陷门,使得只有他们才可以破译算法,但研究中并没有找到弱点 S盒运算 48计算机网络安全概论
  • 49. DES: S-boxS(1): 14 04 13 01 02 15 11 08 03 10 06 12 05 09 00 07 00 15 07 04 14 02 13 01 10 06 12 11 09 05 03 08 04 01 14 08 13 06 02 11 15 12 09 07 03 10 05 00 15 12 08 02 04 09 01 07 05 11 03 14 10 00 06 1349计算机网络安全概论
  • 50. P盒置换8个选择函数的输出(32位)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置换P加密函数的结果X(32位)50计算机网络安全概论
  • 51. DES算法的本质 关键在于8个S-BOX 针对DES的密码分析 差分分析法 线性分析法 DES的安全分析51计算机网络安全概论
  • 52. 差分分析法Biham和Shamir于1991年提出 属于选择明文攻击 基本思想:通过分析特定明文差对结果密文差的影响来获得可能性最大的密钥 差分在DES的16步加密过程中的传递,每一个S-BOX对于差分传递的概率特性 子密钥不影响每一步的输入差分,但是影响输出的差分 针对每一个DES步骤,用差分法可以推导出该步的密钥 差分分析法 247对选择明文,经过247量级的计算可攻破52计算机网络安全概论
  • 53. 线性分析法线性分析法 Matsui和Yamagishi于1992年 思想:用线性近似描述DES变换 根据247已知明文,可以找到DES的密钥 53计算机网络安全概论
  • 54. DES的安全分析S盒设计 弱密钥或半弱密钥 DES结构的互补对称性 不要使用互补密钥 穷举攻击 56位密钥的使用,理论上,97年$100000的机器可以在6小时内用穷举法攻破DES 实际攻破的例子,97年1月提出挑战,有人利用Internet的分布式计算能力,组织志愿军连接了70000多个系统在96天后攻破 以后又分别用41天、56个小时和22个小时破解了用56bit   DES算法加密的密文 54计算机网络安全概论
  • 55. DES的变形双重DES 三重DES 三个密钥 两个密钥55计算机网络安全概论
  • 56. 双重DES56计算机网络安全概论
  • 57. 双重DES的数学表达57计算机网络安全概论
  • 58. 中间相会攻击C=Ek2[Ek1[P]] => T=Ek1[P]=Dk2[C] 对于一对已知的(P、C) 对于所有的k1 ,计算Ek1[P] ,将256个结果排序 对于所有的k2 ,计算Dk2[C] ,将256个结果排序 进行匹配搜索,每找到一对,再用其他(P、C)对进行检验,直到找到正确的k1和k2 密钥的空间为2112,但是只需要257个DES操作 58计算机网络安全概论
  • 59. 三重DES 三个密钥 59计算机网络安全概论
  • 60. 三重DES 两个密钥 60计算机网络安全概论
  • 61. 其他分组密码 高级加密标准(AES) IDEA算法 RC5 61计算机网络安全概论
  • 62. AES介绍1997年NIST宣布征集AES算法 要求: 与三重DES比,要快且至少一样安全,分组128位,密钥128/192/256位 1998年确定第一轮15个候选者 1999年确定第二轮五个候选者: MARS, RC6, Rijndael, Serpent, Twofish 2000年底Rijndael胜出 比利时密码学家Daemen和Rijmen62计算机网络安全概论
  • 63. Rijndael简介不属于Feistel结构 加密、解密相似但不对称 支持128/192/256(/32=Nb)数据块大小 支持128/192/256(/32=Nk)密钥长度 有较好的数学理论作为基础 结构简单、速度快63计算机网络安全概论
  • 64. Rijndael简介(续)数据/密钥的矩阵表示a00a01a02a03a04a05a10a11a12a13a14a15a20a21a22a23a24a25a30a31a32a33a34a35k00k01k02k03k10k11k12k13k20k21k22k23k30k31k32k33NrNb=4Nb=6Nb=8Nk=4 10 12 14Nk=6 12 12 14Nk=8 14 14 14轮数:在Rijndael算法中,运算的回合数(Nr)是由Nb及Nk所决定的64计算机网络安全概论
  • 65. Rijndael算法中概念State:在运算过程中所产生的中间值,是一个4×Nb的矩阵,Nb可由数据长度除以32位求得,也就是把数据分割成Nb个区块。 Cipher Key:用来做加密运算的密钥,形式是一个4×Nk的矩阵,Nk可由密钥长度除以32位求得,也就是把密钥分割成Nk个32位的子密钥。 RoundKey:表示每一轮对应的子密钥65计算机网络安全概论
  • 66. Rijndael的数学知识 GF(28)的定义 假设一个字节b由b7b6b5b4b3b2b1b0组成,我们可以把这些bi想象成一个7次多项式的系数,而这些系数不是0就是1: b7 x7+ b6 x6+ b5 x5+ b4 x4+ b3 x3+ b2 x2+ b1 x + b0 例如,(57)16的二进制表示法为(0101,0111)2表示成多项式,则为: x6+ x4+ x2+ x + 1 66计算机网络安全概论
  • 67. Rijndael的数学知识-加法两个多项式的加法,则是定义为相同指数项的系数和再模余2,简单的说就是作EXOR运算(i.e., 1+1=0)。例如: (57)16+(83)16=(01010111)2+(10000011)2 = (11010100)2 = (D4)16 或是(x6+x4+x2+x+1) + (x7+x+1) = x7+x6+x4+x267计算机网络安全概论
  • 68. Rijndael的数学知识-乘法在乘法里面,多项式相乘之后的结果很容易造成溢位的问题,解决溢位的方式是把相乘的结果,再模余一个不可分解的多项式m(x)。在Rijndael中,定义一个这样子的多项式为 m(x)=x8+x4+x3+x+1或是(11B)16 例如: (57)16‧(83)16 = ( x6+ x4+ x2+ x + 1)‧ ( x7+ x + 1) = x13+ x11+ x9+ x8+ x7+x7+ x5+ x3+ x2+x+x6+ x4+ x2+ x + 1 = (x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+ 1+x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+ 1) modulo (x8+ x4+ x3+ x + 1) = x7+ x6+ 1=(C1)1668计算机网络安全概论
  • 69. Rijndael的数学知识-乘以x 若把b(x)乘上x,得到b7 x8+ b6 x7+ b5 x6+ b4 x5+ b3 x4+ b2 x3+ b1 x2 + b0x。若b7=0,不会发生溢位问题,答案即是正确的;若b7=1,发生溢位问题,必须减去m(x)。我们可以把这种运算表示为xtime(x),其运算方式为left shift(若溢位则和(1B)16做EXOR运算),例如:‘57’ · ‘13’ = ‘FE’ ‘57’ · ‘02’ = xtime(57) = ‘AE’ ‘57’ · ‘04’ = xtime(AE) = ‘47’ ‘57’ · ‘08’ = xtime(47) = ‘8E’ ‘57’ · ‘10’ = xtime(8E) = ‘07’ ‘57’ · ‘13’ = ‘57’ · (‘01’⊕‘02’⊕‘10’) = ‘57’ ⊕ ‘AE’ ⊕ ‘07’ = ‘FE’69计算机网络安全概论
  • 70. Rijndael算法结构算法如下: 第一轮之前执行AddRoundKey(State,RoundKey) Round(State,RoundKey) { //回合转换 ByteSub(State); //字节取代转换 ShiftRow(State); //移列转换 MixColumn(State); //混行转换 AddRoundKey(State,RoundKey); //数据和密钥加法转换 } FinalRound(State,RoundKey) { ByteSub(State); ShiftRow(State); AddRoundKey(State,RoundKey); }70计算机网络安全概论
  • 71. Rijndael: AddRoundKey操作按字节在GF(28)上相加(XOR)a00a01a02a03a04a05a10a11a12a13a14a15a20a21a22a23a24a25a30a31a32a33a34a35k00k01k02k03k04k05k10k11k12k13k14k15k20k21k22k23k24k25k30k31k32k33k34k35=b00b01b02b03b04b05b10b11b12b13b14b15b20b21b22b23b24b25b30b31b32b33b34b3571计算机网络安全概论
  • 72. Rijndael: ByteSub操作字节转换是一个以字节为单位的非线性取代运算,取代表(S-Box)是经过两个运算过程而建立,并且是可逆的。 首先找出每个字节在GF(28)中的乘法反元素 接着经过一个仿射(Affine)转换运算 字节取代(ByteSub)转换的反运算: 计算仿射对应之后的相反运算可得到S-1-Box,以此S-1-Box做字节取代(ByteSub)即可。72计算机网络安全概论
  • 73. Rijndael: ShiftRow操作在这个转换中,State的每一列以不同的偏移量做环状位移,第0列不动,第一列位移C1个字节,第二列位移C2个字节,第三列位移C3个字节。位移的偏移量C1,C2,C3跟区块的数目(Nb)有关,定义如下表: 移列转换(ShiftRow)的反运算: 对第二第三及第四列做Nb-C1,Nb-C2,Nb-C3个字节的环状位移即可 NbC1C2C341236123813473计算机网络安全概论
  • 74. Rijndael: MixColumn操作在这个转换中,把State当作一个存在GF(28)中的多项式。并且对一个固定的多项式c(x)作乘法,如果发生溢位,则再模余x4+1。表示如下: c(x) = ‘03’ x3 + ‘01’ x2 + ‘01’ x + ‘02’ . c(x)与x4+1互质,令b(x) = c(x) Ä a(x) 混行(MixColumn)转换的反运算,则是乘上一个特殊的多项式d(x) (‘03’x3 + ‘01’x2 + ‘01’x + ‘02’ ) Ä d(x) = ‘01’, d(x) = ‘0B’x3 + ‘0D’x2 + ‘09’x + ‘0E’ .74计算机网络安全概论
  • 75. Rijndael: Key schedule回合金钥(Round Key)是从加密密钥(Cipher Key)经过运算产生出来的。密钥排程(Key Schedule)是由密钥扩充(Key Expansion)及回合密钥的选择(Round Key Selection)组成的 所有回合金钥的总位数是把区块长度(block length)乘上回合数加1,(有Nr-1个回合,加上一个终止回合(final round)),例如,128个位的区块长度经过10个回合运算,所需要用到的所有回合金钥的总位数为1408个位。 加密密钥(Cipher Key)必须扩充为扩充密钥(Expanded Key)。 回合密钥是从扩充密钥中选出来的,选择的方式如下: 第一个回合金钥由前Nb个字组组成 第二个回合金钥由接下来的Nb个字组组成 余此类推。75计算机网络安全概论
  • 76. 扩充密钥扩充后的密钥是一个4-byte的线性数组,表示为W[Nb×(Nr+1)]。前Nk个字组包含了加密密钥(Cipher Key) 密钥扩充函式和Nk是息息相关的,分为两种情况运作,一是当Nk小于或等于6,另外则是当Nk大于6 当Nk≦6时, KeyExpansion(byte Key[4×Nk] word W[Nb×(Nr+1)]) { for(i = 0; i < Nk; i++) W[i] = (Key[4×i], Key[4×i+1], Key[4×i+2], Key[4×i+3] ); for(i = Nk; i < Nb×(Nr + 1); i++) { temp = W[i - 1]; if (i % Nk == 0) temp = SubByte(RotByte(temp)) ^ Rcon[i / Nk]; W[i] = W[i - Nk] ^ temp; } }76计算机网络安全概论
  • 77. 扩充密钥 当Nk>6时, KeyExpansion(byte Key[4×Nk] word W[Nb×(Nr+1)]) { for(i = 0; i < Nk; i++) W[i] =  (key[4×i],key[4×i+1], key[4×i+2], key[4×i+3] ); for(i = Nk; i < Nb×(Nr + 1); i++) { temp = W[i - 1]; if (i % Nk == 0) temp = SubByte(RotByte(temp)) ^ Rcon[i / Nk]; else if (i % Nk == 4) temp = SubByte(temp); W[i] = W[i - Nk] ^ temp; } } //上述回合常数定义如下: // Rcon[i] = (RC[i],‘00’,‘00’,‘00’),其中RC[0]=’01’,RC[i]=xtime(Rcon[i-1])。77计算机网络安全概论
  • 78. 选择回合密钥第i个回合密钥是指在存在回合密钥缓冲区的字组W[Nb*i]到W[Nb*(i+1)]78计算机网络安全概论
  • 79. Rijndael算法的抵抗攻击能力消除了DES中出现的弱密钥的可能 也消除了IDEA中发现的弱密钥 能有效抵抗目前已知的攻击算法 线性攻击:这是一种Known-plaintext攻击法,利用大量搜集到的明文/密文对的相关性,对加密法进行攻击。明文/密文对的相关性由线性轨迹(Linear trails)所组成,由于线性轨迹的相关系数与Round keys的值有密切关系,透过相关系数的正负号,线性攻击法就可以找出密钥值。要对抗这种攻击法,有一个必要条件就是使这种相关系数大于2n/2的线性轨迹不存在。在Rijndael中,已经证明出当执行四个回合时,不存在相关系数大于2-75的线性轨迹;在执行八个回合时,其相关系数大于2-150的相关系数亦不存在 差分攻击:此攻击法是一种Chosen-plaintext attack,利用大量已知的明文/密文对之间的差异,据以推测出金钥的位值。在大部分的回合运算中(回合数超过3),若存在超过21-n(n指的是区块长度)比例的可预测性的差异,这个攻击法就可以推测出金钥的位值。在Rijndael中,已经证明在经过Rijndael四个回合的运算后,存在不超过2-150比例的可预测性差异,在八个回合运算中不超过2-300。79计算机网络安全概论
  • 80. Rijndael算法的优缺点Rijndael优点 Rijndael在Pentium ( Pro ) 等计算机上实现,并已相当快的速度处理运算;而在表格大小与效率之间是可以做取舍的。 Rijndael可以实作在智能卡(Smart Card)上,使用少量的RAM,少量的程序代码;在ROM与效率之间也是可以做取舍的。 在设计上,回合的转换是可并行处理的。 加密法不采用算术运算,不会因为不同处理器架构而有所偏差。 设计简单化: 设计上不引用其它加密组件,如S-box。 安全度不建立在一些分析不够明确的算术运算之上。 加密法紧凑,不易藏入暗门等程序代码。 除此之外,Rijndael更允许可变动的区块长度及金钥长度,其长度可由128位到256位之间;所以回合数也是可变动的。 Rijndael缺点 在解密过程中有以下限制 实作在智慧卡时,解密不如加密来的有效率,解密需要更多的程序代码及cycles,但是跟其它算法比起来,仍然是快速的。 以软件而言,加密和解密使用不同的程序和表格。 以硬件而言,解密只能重用部分加密的电路。80计算机网络安全概论
  • 81. IDEA算法 IDEA算法可用于加密和解密。主要有三种运算:异或、模加、模乘,容易用软件和硬件来实现。 IDEA的速度:现在IDEA的软件实现同DES的速度一样块。 IDEA的密码安全分析:IDEA的密钥长度是128位,是DES的密钥长度的两倍。在穷举攻击的情况下,IDEA将需要经过2128次加密才能恢复出密钥。81计算机网络安全概论
  • 82. RC5 RC5是Ron.Rivest 于1994年设计的一种新的分组算法。它的前身RC2、RC4分别是可变密钥长度的分组和流加密算法。RC5是可变密文长度、可变轮数、可变密钥长度的分组加密算法 RC5加密算法的特点有: 基本运算是微处理器上常见的初等运算 字的位数作为RC5的参数 安全性依赖于旋转运算和不同运算的混合 存储要求低,适合在智能卡上实现 轮数和密钥长度可以变化 RC5算法由密钥扩展算法、加密算法、解密算法组成 82计算机网络安全概论